@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.
Files changed (124) hide show
  1. package/dist/component-names.d.ts +1 -0
  2. package/dist/components/LayoutCanvas.vue.d.ts +28 -0
  3. package/dist/components/LayoutNode.vue.d.ts +40 -0
  4. package/dist/components/LpActionBar.vue.d.ts +84 -0
  5. package/dist/components/LpAddressInput.vue.d.ts +70 -0
  6. package/dist/components/LpAlert.vue.d.ts +44 -0
  7. package/dist/components/LpAppShell.vue.d.ts +123 -0
  8. package/dist/components/LpAutocomplete.vue.d.ts +50 -0
  9. package/dist/components/LpAvatar.vue.d.ts +34 -0
  10. package/dist/components/LpBadge.vue.d.ts +20 -0
  11. package/dist/components/LpBreadcrumbs.vue.d.ts +32 -0
  12. package/dist/components/LpButton.vue.d.ts +113 -0
  13. package/dist/components/LpCalendar.vue.d.ts +29 -0
  14. package/dist/components/LpCard.vue.d.ts +60 -0
  15. package/dist/components/LpChart.vue.d.ts +130 -0
  16. package/dist/components/LpCheckbox.vue.d.ts +32 -0
  17. package/dist/components/LpCodeBlock.vue.d.ts +58 -0
  18. package/dist/components/LpColorPicker.vue.d.ts +124 -0
  19. package/dist/components/LpCommandPalette.vue.d.ts +206 -0
  20. package/dist/components/LpConfirmDialog.vue.d.ts +59 -0
  21. package/dist/components/LpContextMenu.vue.d.ts +44 -0
  22. package/dist/components/LpDatePicker.vue.d.ts +33 -0
  23. package/dist/components/LpDisclosure.vue.d.ts +47 -0
  24. package/dist/components/LpDivider.vue.d.ts +17 -0
  25. package/dist/components/LpDrawer.vue.d.ts +170 -0
  26. package/dist/components/LpDropdownMenu.vue.d.ts +23 -0
  27. package/dist/components/LpDropzone.vue.d.ts +90 -0
  28. package/dist/components/LpEmptyState.vue.d.ts +28 -0
  29. package/dist/components/LpFileTree.vue.d.ts +126 -0
  30. package/dist/components/LpFileTreeNode.vue.d.ts +62 -0
  31. package/dist/components/LpFormField.vue.d.ts +24 -0
  32. package/dist/components/LpIcon.vue.d.ts +9 -0
  33. package/dist/components/LpImageEditor.vue.d.ts +106 -0
  34. package/dist/components/LpInfraNode.vue.d.ts +65 -0
  35. package/dist/components/LpInput.vue.d.ts +80 -0
  36. package/dist/components/LpLaneNode.vue.d.ts +24 -0
  37. package/dist/components/LpLightbox.vue.d.ts +62 -0
  38. package/dist/components/LpLink.vue.d.ts +93 -0
  39. package/dist/components/LpLogViewer.vue.d.ts +153 -0
  40. package/dist/components/LpMapPicker.vue.d.ts +59 -0
  41. package/dist/components/LpMediaGallery.vue.d.ts +80 -0
  42. package/dist/components/LpModal.vue.d.ts +66 -0
  43. package/dist/components/LpModalNav.vue.d.ts +66 -0
  44. package/dist/components/LpNotificationBell.vue.d.ts +85 -0
  45. package/dist/components/LpNumberField.vue.d.ts +21 -0
  46. package/dist/components/LpNumberFlow.vue.d.ts +35 -0
  47. package/dist/components/LpOtpInput.vue.d.ts +39 -0
  48. package/dist/components/LpPagination.vue.d.ts +35 -0
  49. package/dist/components/LpPasswordInput.vue.d.ts +36 -0
  50. package/dist/components/LpPhoneInput.vue.d.ts +49 -0
  51. package/dist/components/LpPie.vue.d.ts +196 -0
  52. package/dist/components/LpPopover.vue.d.ts +34 -0
  53. package/dist/components/LpProgress.vue.d.ts +66 -0
  54. package/dist/components/LpRadio.vue.d.ts +18 -0
  55. package/dist/components/LpRadioGroup.vue.d.ts +26 -0
  56. package/dist/components/LpRollingText.vue.d.ts +33 -0
  57. package/dist/components/LpScrollArea.vue.d.ts +28 -0
  58. package/dist/components/LpSection.vue.d.ts +120 -0
  59. package/dist/components/LpSegmented.vue.d.ts +30 -0
  60. package/dist/components/LpSelect.vue.d.ts +47 -0
  61. package/dist/components/LpServiceNode.vue.d.ts +14 -0
  62. package/dist/components/LpShift.vue.d.ts +36 -0
  63. package/dist/components/LpShortcutsDialog.vue.d.ts +24 -0
  64. package/dist/components/LpSidebar.vue.d.ts +146 -0
  65. package/dist/components/LpSidebarNav.vue.d.ts +54 -0
  66. package/dist/components/LpSkeleton.vue.d.ts +16 -0
  67. package/dist/components/LpSlider.vue.d.ts +30 -0
  68. package/dist/components/LpSparkline.vue.d.ts +48 -0
  69. package/dist/components/LpStat.vue.d.ts +69 -0
  70. package/dist/components/LpStepper.vue.d.ts +36 -0
  71. package/dist/components/LpSwitch.vue.d.ts +42 -0
  72. package/dist/components/LpTable.vue.d.ts +124 -0
  73. package/dist/components/LpTableOfContents.vue.d.ts +19 -0
  74. package/dist/components/LpTabs.vue.d.ts +47 -0
  75. package/dist/components/LpTextarea.vue.d.ts +22 -0
  76. package/dist/components/LpThemeSwitcher.vue.d.ts +47 -0
  77. package/dist/components/LpTilt.vue.d.ts +31 -0
  78. package/dist/components/LpTimeField.vue.d.ts +24 -0
  79. package/dist/components/LpToaster.vue.d.ts +3 -0
  80. package/dist/components/LpTooltip.vue.d.ts +58 -0
  81. package/dist/components/LpTopologyCanvas.vue.d.ts +205 -0
  82. package/dist/components/LpUptimeBar.vue.d.ts +46 -0
  83. package/dist/components/LpWaypointEdge.vue.d.ts +33 -0
  84. package/dist/components/actionBar.d.ts +19 -0
  85. package/dist/components/address.d.ts +107 -0
  86. package/dist/components/chart.d.ts +180 -0
  87. package/dist/components/codeHighlight.d.ts +8 -0
  88. package/dist/components/color.d.ts +65 -0
  89. package/dist/components/commandSearch.d.ts +14 -0
  90. package/dist/components/countries-data.d.ts +2 -0
  91. package/dist/components/countries.d.ts +20 -0
  92. package/dist/components/dropdown.d.ts +29 -0
  93. package/dist/components/fileTree.d.ts +79 -0
  94. package/dist/components/lightbox.d.ts +24 -0
  95. package/dist/components/modalDepth.d.ts +11 -0
  96. package/dist/components/sidebar.d.ts +42 -0
  97. package/dist/composables/easing.d.ts +46 -0
  98. package/dist/composables/useAsyncTask.d.ts +18 -0
  99. package/dist/composables/useClipboard.d.ts +46 -0
  100. package/dist/composables/useFormDraft.d.ts +67 -0
  101. package/dist/composables/useGlass.d.ts +9 -0
  102. package/dist/composables/useHotkeys.d.ts +101 -0
  103. package/dist/composables/useInputFilter.d.ts +14 -0
  104. package/dist/composables/useMergedClass.d.ts +42 -0
  105. package/dist/composables/usePillTransition.d.ts +21 -0
  106. package/dist/composables/useReveal.d.ts +26 -0
  107. package/dist/composables/useRovingFocus.d.ts +49 -0
  108. package/dist/composables/useSettled.d.ts +26 -0
  109. package/dist/composables/useShift.d.ts +35 -0
  110. package/dist/composables/useTilt.d.ts +23 -0
  111. package/dist/composables/useToast.d.ts +41 -0
  112. package/dist/composables/useZoomPan.d.ts +58 -0
  113. package/dist/icons.d.ts +1 -0
  114. package/dist/index.d.ts +162 -0
  115. package/dist/layout/registry.d.ts +26 -0
  116. package/dist/layout/tree.d.ts +75 -0
  117. package/dist/layout/useLayout.d.ts +39 -0
  118. package/dist/theme/backdrop.d.ts +9 -0
  119. package/dist/theme/config.d.ts +16 -0
  120. package/dist/theme/define.d.ts +12 -0
  121. package/dist/theme/presets.d.ts +20 -0
  122. package/dist/theme/tokens.d.ts +75 -0
  123. package/dist/theme/useTheme.d.ts +46 -0
  124. package/package.json +2 -2
@@ -0,0 +1,153 @@
1
+ import { type ContextMenuItemDef } from "./LpContextMenu.vue";
2
+ export type LogLevel = "trace" | "debug" | "info" | "warn" | "error" | "fatal" | "success";
3
+ export interface LogLine {
4
+ /** Body of the line. */
5
+ message: string;
6
+ level?: LogLevel;
7
+ /** Epoch ms, ISO string, or pre-formatted label — shown in the time column. */
8
+ time?: number | string;
9
+ /** Short origin tag (service / module), rendered as a dim chip. */
10
+ source?: string;
11
+ }
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ declare const __VLS_export: import("vue").DefineComponent<{
15
+ lines: LogLine[];
16
+ /** Show the timestamp column. */
17
+ showTime?: boolean;
18
+ /**
19
+ * Show the per-line level chip (INFO/WARN/…). On by default. Turn off for
20
+ * raw streams (e.g. docker logs) where most lines have no real level and a
21
+ * blanket "INFO" chip is just noise — the tonal level RAIL still renders, so
22
+ * errors/warnings stay visually distinct.
23
+ */
24
+ showLevel?: boolean;
25
+ /** Show 1-based gutter line numbers. */
26
+ lineNumbers?: boolean;
27
+ /** Wrap long lines instead of scrolling horizontally. */
28
+ wrap?: boolean;
29
+ /** Case-insensitive substring to highlight in message bodies. */
30
+ highlight?: string;
31
+ /** When set with `highlight`, hide every line that doesn't match. */
32
+ filterMatches?: boolean;
33
+ /** Collapse consecutive identical lines into one, badged with a ×N count. */
34
+ compact?: boolean;
35
+ /** Pin to the bottom as new lines arrive (until the user scrolls up). */
36
+ tail?: boolean;
37
+ /** Fixed height. Anything CSS-valid; defaults to a comfortable terminal. */
38
+ height?: string;
39
+ emptyLabel?: string;
40
+ /** Shown while the stream is held. Defaulted in English; apps with i18n
41
+ * pass their own. */
42
+ frozenLabel?: string;
43
+ /**
44
+ * When true, a "loading older…" row is shown pinned at the top — set it while
45
+ * fetching a previous page in response to `reach-top`, clear it when done.
46
+ */
47
+ loadingOlder?: boolean;
48
+ /**
49
+ * When true, the viewer emits `reach-top` as the user scrolls near the top so
50
+ * the consumer can prepend older history (infinite scroll-back). The viewer
51
+ * preserves the scroll position across a prepend so the view doesn't jump.
52
+ */
53
+ loadOlder?: boolean;
54
+ /**
55
+ * Right-click row menu: built-in copy actions (+ "filter by" when the line
56
+ * has a source/level). Set false to disable; the row keeps the native menu.
57
+ */
58
+ rowMenu?: boolean;
59
+ /** Extra menu items per line, appended below the built-ins with a divider. */
60
+ extraRowItems?: (line: LogLine, index: number) => ContextMenuItemDef[];
61
+ /**
62
+ * Recognise common log formats inside each `message` and lift the level,
63
+ * timestamp and [source] out of the text into the dedicated columns. When a
64
+ * line already carries an explicit `level`/`time`/`source`, those win and
65
+ * the message is left untouched. Off by default (raw). Handles e.g.:
66
+ * "2025-01-02T03:04:05.123Z INFO [auth] user logged in"
67
+ * "[2025-01-02 03:04:05] WARN: disk almost full"
68
+ * "ERROR something broke"
69
+ * so a duplicate level word / timestamp doesn't repeat in the message body.
70
+ */
71
+ parse?: boolean;
72
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
73
+ filter: (by: {
74
+ source?: string;
75
+ level?: LogLevel;
76
+ }) => any;
77
+ "reach-top": () => any;
78
+ }, string, import("vue").PublicProps, Readonly<{
79
+ lines: LogLine[];
80
+ /** Show the timestamp column. */
81
+ showTime?: boolean;
82
+ /**
83
+ * Show the per-line level chip (INFO/WARN/…). On by default. Turn off for
84
+ * raw streams (e.g. docker logs) where most lines have no real level and a
85
+ * blanket "INFO" chip is just noise — the tonal level RAIL still renders, so
86
+ * errors/warnings stay visually distinct.
87
+ */
88
+ showLevel?: boolean;
89
+ /** Show 1-based gutter line numbers. */
90
+ lineNumbers?: boolean;
91
+ /** Wrap long lines instead of scrolling horizontally. */
92
+ wrap?: boolean;
93
+ /** Case-insensitive substring to highlight in message bodies. */
94
+ highlight?: string;
95
+ /** When set with `highlight`, hide every line that doesn't match. */
96
+ filterMatches?: boolean;
97
+ /** Collapse consecutive identical lines into one, badged with a ×N count. */
98
+ compact?: boolean;
99
+ /** Pin to the bottom as new lines arrive (until the user scrolls up). */
100
+ tail?: boolean;
101
+ /** Fixed height. Anything CSS-valid; defaults to a comfortable terminal. */
102
+ height?: string;
103
+ emptyLabel?: string;
104
+ /** Shown while the stream is held. Defaulted in English; apps with i18n
105
+ * pass their own. */
106
+ frozenLabel?: string;
107
+ /**
108
+ * When true, a "loading older…" row is shown pinned at the top — set it while
109
+ * fetching a previous page in response to `reach-top`, clear it when done.
110
+ */
111
+ loadingOlder?: boolean;
112
+ /**
113
+ * When true, the viewer emits `reach-top` as the user scrolls near the top so
114
+ * the consumer can prepend older history (infinite scroll-back). The viewer
115
+ * preserves the scroll position across a prepend so the view doesn't jump.
116
+ */
117
+ loadOlder?: boolean;
118
+ /**
119
+ * Right-click row menu: built-in copy actions (+ "filter by" when the line
120
+ * has a source/level). Set false to disable; the row keeps the native menu.
121
+ */
122
+ rowMenu?: boolean;
123
+ /** Extra menu items per line, appended below the built-ins with a divider. */
124
+ extraRowItems?: (line: LogLine, index: number) => ContextMenuItemDef[];
125
+ /**
126
+ * Recognise common log formats inside each `message` and lift the level,
127
+ * timestamp and [source] out of the text into the dedicated columns. When a
128
+ * line already carries an explicit `level`/`time`/`source`, those win and
129
+ * the message is left untouched. Off by default (raw). Handles e.g.:
130
+ * "2025-01-02T03:04:05.123Z INFO [auth] user logged in"
131
+ * "[2025-01-02 03:04:05] WARN: disk almost full"
132
+ * "ERROR something broke"
133
+ * so a duplicate level word / timestamp doesn't repeat in the message body.
134
+ */
135
+ parse?: boolean;
136
+ }> & Readonly<{
137
+ onFilter?: ((by: {
138
+ source?: string;
139
+ level?: LogLevel;
140
+ }) => any) | undefined;
141
+ "onReach-top"?: (() => any) | undefined;
142
+ }>, {
143
+ height: string;
144
+ wrap: boolean;
145
+ emptyLabel: string;
146
+ lineNumbers: boolean;
147
+ showTime: boolean;
148
+ showLevel: boolean;
149
+ tail: boolean;
150
+ frozenLabel: string;
151
+ rowMenu: boolean;
152
+ parse: boolean;
153
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,59 @@
1
+ import { type LatLon, type TileSource } from "./address";
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
4
+ declare const __VLS_export: import("vue").DefineComponent<{
5
+ /** Picked point. Bind with v-model; undefined leaves the map unpinned. */
6
+ modelValue?: LatLon;
7
+ /** Tile server. Defaults to OpenStreetMap; swap for your own. */
8
+ tiles?: TileSource;
9
+ /** Zoom used on first paint, and when a point arrives from outside. */
10
+ zoom?: number;
11
+ /** Where to look when there is no point yet. */
12
+ center?: LatLon;
13
+ disabled?: boolean;
14
+ /** Any CSS length. */
15
+ height?: string;
16
+ /** Offer the "use my location" control (needs a secure context). */
17
+ locatable?: boolean;
18
+ zoomInLabel?: string;
19
+ zoomOutLabel?: string;
20
+ locateLabel?: string;
21
+ recentreLabel?: string;
22
+ }, {
23
+ zoomIn: () => void;
24
+ zoomOut: () => void;
25
+ recentre: () => void;
26
+ locate: () => void;
27
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
28
+ "update:modelValue": (value: LatLon) => any;
29
+ }, string, import("vue").PublicProps, Readonly<{
30
+ /** Picked point. Bind with v-model; undefined leaves the map unpinned. */
31
+ modelValue?: LatLon;
32
+ /** Tile server. Defaults to OpenStreetMap; swap for your own. */
33
+ tiles?: TileSource;
34
+ /** Zoom used on first paint, and when a point arrives from outside. */
35
+ zoom?: number;
36
+ /** Where to look when there is no point yet. */
37
+ center?: LatLon;
38
+ disabled?: boolean;
39
+ /** Any CSS length. */
40
+ height?: string;
41
+ /** Offer the "use my location" control (needs a secure context). */
42
+ locatable?: boolean;
43
+ zoomInLabel?: string;
44
+ zoomOutLabel?: string;
45
+ locateLabel?: string;
46
+ recentreLabel?: string;
47
+ }> & Readonly<{
48
+ "onUpdate:modelValue"?: ((value: LatLon) => any) | undefined;
49
+ }>, {
50
+ center: LatLon;
51
+ height: string;
52
+ zoom: number;
53
+ tiles: TileSource;
54
+ locatable: boolean;
55
+ zoomInLabel: string;
56
+ zoomOutLabel: string;
57
+ locateLabel: string;
58
+ recentreLabel: string;
59
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,80 @@
1
+ import type { LightboxItem } from "./lightbox";
2
+ type __VLS_Props = {
3
+ /** Images in the set. The same shape LpLightbox takes. */
4
+ items: LightboxItem[];
5
+ /**
6
+ * Thumbnails per row. A number is that many at every width; an object is
7
+ * per breakpoint, e.g. `{ base: 2, md: 3, lg: 4 }`.
8
+ */
9
+ columns?: number | {
10
+ base?: number;
11
+ sm?: number;
12
+ md?: number;
13
+ lg?: number;
14
+ xl?: number;
15
+ };
16
+ /** Space between thumbnails, as a Tailwind gap step. */
17
+ gap?: 0 | 0.5 | 1 | 1.5 | 2 | 3 | 4;
18
+ /** Shape of each cell. `auto` lets the image decide its own height. */
19
+ aspect?: "square" | "video" | "auto";
20
+ /**
21
+ * Show at most this many, with the remainder as a "+N" badge over the last
22
+ * visible one — the usual treatment for a set too big for the space it has.
23
+ * Clicking the badge opens the lightbox at the first hidden image, because
24
+ * that is the one the count is about.
25
+ */
26
+ max?: number;
27
+ /** Open the lightbox on click. Off makes the grid a pure display. */
28
+ openable?: boolean;
29
+ /** Passed through to the lightbox. */
30
+ downloadable?: boolean;
31
+ /** Passed through to the lightbox. */
32
+ rotatable?: boolean;
33
+ /** Accessible name for the grid. */
34
+ ariaLabel?: string;
35
+ };
36
+ type __VLS_Slots = {
37
+ /** Replace a cell's contents. Gets the item and its index. */
38
+ item(props: {
39
+ item: LightboxItem;
40
+ index: number;
41
+ }): unknown;
42
+ /** Shown instead of the grid when `items` is empty. */
43
+ empty(): unknown;
44
+ };
45
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
46
+ /** Open the lightbox at an index — for a "view all" button outside the grid. */
47
+ openAt: (i: number) => void;
48
+ /** Uncover every spoiler in the set. */
49
+ revealAll: () => void;
50
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
51
+ select: (item: LightboxItem, index: number) => any;
52
+ "update:open": (value: boolean) => any;
53
+ reveal: (item: LightboxItem) => any;
54
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
55
+ onSelect?: ((item: LightboxItem, index: number) => any) | undefined;
56
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
57
+ onReveal?: ((item: LightboxItem) => any) | undefined;
58
+ }>, {
59
+ columns: number | {
60
+ base?: number;
61
+ sm?: number;
62
+ md?: number;
63
+ lg?: number;
64
+ xl?: number;
65
+ };
66
+ gap: 0 | 0.5 | 1 | 1.5 | 2 | 3 | 4;
67
+ ariaLabel: string;
68
+ aspect: "square" | "video" | "auto";
69
+ rotatable: boolean;
70
+ downloadable: boolean;
71
+ openable: boolean;
72
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
73
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
74
+ declare const _default: typeof __VLS_export;
75
+ export default _default;
76
+ type __VLS_WithSlots<T, S> = T & {
77
+ new (): {
78
+ $slots: S;
79
+ };
80
+ };
@@ -0,0 +1,66 @@
1
+ type __VLS_Props = {
2
+ open?: boolean;
3
+ title?: string;
4
+ description?: string;
5
+ /**
6
+ * Max content width preset. sm≈24rem … xl≈42rem, 2xl≈56rem, 3xl≈72rem,
7
+ * full≈96vw (near-fullscreen, for dense catalogues).
8
+ */
9
+ size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full";
10
+ /** Explicit width override (any CSS length), wins over `size`. */
11
+ width?: string;
12
+ /**
13
+ * Let the body fill the available height as a flex column instead of
14
+ * scrolling itself. Use for dense dashboards that own their inner scroll
15
+ * regions (e.g. multi-pane catalogues) — the panes scroll, not the modal.
16
+ */
17
+ fillBody?: boolean;
18
+ /**
19
+ * Where the keyboard lands when the dialog opens. Default `"auto"` picks
20
+ * the first meaningful control in the body — a field to type in, or failing
21
+ * that the primary action — instead of the close button, which is what
22
+ * happens if the DOM order is left to decide.
23
+ *
24
+ * `"none"` leaves reka's own behaviour alone; pass a CSS selector to name
25
+ * the element yourself.
26
+ */
27
+ autoFocus?: "auto" | "none" | string;
28
+ /**
29
+ * Frosted glass instead of a solid panel: the page shows through,
30
+ * blurred, under a lighter scrim (.lp-glass-overlay, .lp-scrim--light).
31
+ * A look, not a behaviour, so it is the app's call: unset follows
32
+ * `provideGlass`, and without one it is off.
33
+ */
34
+ glass?: boolean;
35
+ };
36
+ declare var __VLS_31: {}, __VLS_39: {}, __VLS_58: {}, __VLS_66: {}, __VLS_68: {}, __VLS_70: {};
37
+ type __VLS_Slots = {} & {
38
+ aside?: (props: typeof __VLS_31) => any;
39
+ } & {
40
+ title?: (props: typeof __VLS_39) => any;
41
+ } & {
42
+ default?: (props: typeof __VLS_58) => any;
43
+ } & {
44
+ default?: (props: typeof __VLS_66) => any;
45
+ } & {
46
+ footer?: (props: typeof __VLS_68) => any;
47
+ } & {
48
+ asideEnd?: (props: typeof __VLS_70) => any;
49
+ };
50
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
51
+ "update:open": (value: boolean) => any;
52
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
53
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
54
+ }>, {
55
+ size: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full";
56
+ autoFocus: "auto" | "none" | string;
57
+ glass: boolean;
58
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
59
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
60
+ declare const _default: typeof __VLS_export;
61
+ export default _default;
62
+ type __VLS_WithSlots<T, S> = T & {
63
+ new (): {
64
+ $slots: S;
65
+ };
66
+ };
@@ -0,0 +1,66 @@
1
+ import type { SidebarItem, SidebarSection } from "./sidebar";
2
+ export type { SidebarItem, SidebarSection } from "./sidebar";
3
+ type Breakpoint = "sm" | "md" | "lg" | "xl";
4
+ type __VLS_Props = {
5
+ open?: boolean;
6
+ /** Active section id (v-model). */
7
+ modelValue?: string;
8
+ /** Flat sections, or grouped ones — the shapes LpSidebar already takes. */
9
+ items?: SidebarItem[];
10
+ sections?: SidebarSection[];
11
+ title?: string;
12
+ description?: string;
13
+ size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full";
14
+ width?: string;
15
+ /** Width of the nav rail (any CSS length). */
16
+ navWidth?: string;
17
+ /** Put a filter above the nav — see LpSidebar's `searchable`. */
18
+ searchable?: boolean;
19
+ searchPlaceholder?: string;
20
+ /** Skeleton rows in place of the nav while the sections load. */
21
+ loading?: boolean;
22
+ /** Breakpoint below which the rail becomes a drawer. */
23
+ mobileBreakpoint?: Breakpoint;
24
+ /** Label for the button that opens that drawer. */
25
+ navLabel?: string;
26
+ /** Stand the rail to the right of the dialog instead of the left. */
27
+ navSide?: "start" | "end";
28
+ /**
29
+ * Let the body fill the height instead of scrolling itself. Off by default,
30
+ * as in a plain modal: it existed here to make the rail a full-height
31
+ * column inside the body, and the rail is no longer in the body.
32
+ */
33
+ fillBody?: boolean;
34
+ /** Frosted glass panel, passed to LpModal. Follows `provideGlass` when unset. */
35
+ glass?: boolean;
36
+ };
37
+ declare var __VLS_36: {}, __VLS_38: {}, __VLS_41: {};
38
+ type __VLS_Slots = {} & {
39
+ title?: (props: typeof __VLS_36) => any;
40
+ } & {
41
+ default?: (props: typeof __VLS_38) => any;
42
+ } & {
43
+ footer?: (props: typeof __VLS_41) => any;
44
+ };
45
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
46
+ "update:modelValue": (value: string) => any;
47
+ "update:open": (value: boolean) => any;
48
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
49
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
50
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
51
+ }>, {
52
+ size: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full";
53
+ glass: boolean;
54
+ mobileBreakpoint: Breakpoint;
55
+ navWidth: string;
56
+ navLabel: string;
57
+ navSide: "start" | "end";
58
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
59
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
60
+ declare const _default: typeof __VLS_export;
61
+ export default _default;
62
+ type __VLS_WithSlots<T, S> = T & {
63
+ new (): {
64
+ $slots: S;
65
+ };
66
+ };
@@ -0,0 +1,85 @@
1
+ import { type ContextMenuItemDef } from "./LpContextMenu.vue";
2
+ export interface NotificationItem {
3
+ id: string;
4
+ title: string;
5
+ body?: string;
6
+ /** Optional icon name (e.g. "lucide:check-circle"). */
7
+ icon?: string;
8
+ /**
9
+ * Colours the row's icon by what KIND of notification it is — a billing
10
+ * notice and a security one should not look alike at a glance.
11
+ *
12
+ * A named tone rather than a class, so the categories stay themeable:
13
+ * consumers were mapping their own types onto raw palette classes, which is
14
+ * the one place a theme cannot follow them.
15
+ */
16
+ tone?: "brand" | "action" | "danger" | "accent" | "muted";
17
+ /** Optional deep link; the row becomes clickable when set. */
18
+ link?: string;
19
+ /** ISO-8601 creation time; rendered as a relative label. */
20
+ createdAt?: string;
21
+ /** Whether the notification has been read. */
22
+ read?: boolean;
23
+ }
24
+ /**
25
+ * Every user-facing string the bell renders on its own. Apps with i18n pass
26
+ * their translations in; the English defaults keep the component usable bare.
27
+ * Without this the header/row menus would be hardcoded English in every locale.
28
+ */
29
+ export interface NotificationLabels {
30
+ title?: string;
31
+ markAllRead?: string;
32
+ clear?: string;
33
+ markAsRead?: string;
34
+ markAsUnread?: string;
35
+ open?: string;
36
+ dismiss?: string;
37
+ empty?: string;
38
+ ariaLabel?: string;
39
+ }
40
+ type __VLS_Props = {
41
+ items?: NotificationItem[];
42
+ /** Unread count for the badge; falls back to counting unread items. */
43
+ unreadCount?: number;
44
+ loading?: boolean;
45
+ emptyLabel?: string;
46
+ title?: string;
47
+ /** Cap the badge display (e.g. "9+"). */
48
+ maxBadge?: number;
49
+ /** Right-click menu items; overrides the built-in quick actions. */
50
+ menuItems?: ContextMenuItemDef[];
51
+ /** Translations for the strings the bell renders itself. */
52
+ labels?: NotificationLabels;
53
+ /**
54
+ * Formats `item.createdAt` for display. Defaults to a compact English
55
+ * relative time ("just now", "5m", "3h"); pass your own to localise it.
56
+ */
57
+ formatTime?: (iso: string) => string;
58
+ };
59
+ type __VLS_ModelProps = {
60
+ "open"?: boolean;
61
+ };
62
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
63
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
64
+ "update:open": (value: boolean) => any;
65
+ } & {
66
+ clear: () => any;
67
+ select: (item: NotificationItem) => any;
68
+ dismiss: (id: string) => any;
69
+ markRead: (id: string) => any;
70
+ markUnread: (id: string) => any;
71
+ markAllRead: () => any;
72
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
73
+ onClear?: (() => any) | undefined;
74
+ onSelect?: ((item: NotificationItem) => any) | undefined;
75
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
76
+ onDismiss?: ((id: string) => any) | undefined;
77
+ onMarkRead?: ((id: string) => any) | undefined;
78
+ onMarkUnread?: ((id: string) => any) | undefined;
79
+ onMarkAllRead?: (() => any) | undefined;
80
+ }>, {
81
+ items: NotificationItem[];
82
+ maxBadge: number;
83
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
84
+ declare const _default: typeof __VLS_export;
85
+ export default _default;
@@ -0,0 +1,21 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<{
4
+ modelValue?: number | null;
5
+ min?: number;
6
+ max?: number;
7
+ step?: number;
8
+ disabled?: boolean;
9
+ unit?: string;
10
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
11
+ "update:modelValue": (value: number | null) => any;
12
+ }, string, import("vue").PublicProps, Readonly<{
13
+ modelValue?: number | null;
14
+ min?: number;
15
+ max?: number;
16
+ step?: number;
17
+ disabled?: boolean;
18
+ unit?: string;
19
+ }> & Readonly<{
20
+ "onUpdate:modelValue"?: ((value: number | null) => any) | undefined;
21
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,35 @@
1
+ type __VLS_Props = {
2
+ value: number;
3
+ /** Travel time in ms. Distance changes the feel, not the duration. */
4
+ duration?: number;
5
+ /** Fixed decimal places. Ignored under `compact`. */
6
+ decimals?: number;
7
+ /**
8
+ * Abbreviate large numbers — 1.2k, 3.4M. Off by default: an exact figure
9
+ * should stay exact unless asked otherwise.
10
+ */
11
+ compact?: boolean;
12
+ /** Thousands separators. Ignored under `compact`. */
13
+ grouped?: boolean;
14
+ prefix?: string;
15
+ suffix?: string;
16
+ /** Custom formatter; overrides compact/decimals/grouped entirely. */
17
+ format?: (v: number) => string;
18
+ /** Start from 0 on first render rather than showing the value outright. */
19
+ animateOnMount?: boolean;
20
+ locale?: string;
21
+ /**
22
+ * Force the roll direction: "up" and "down" make every column travel the
23
+ * same way regardless of the digit, which reads as one mechanism turning.
24
+ * "auto" lets each column take the shorter route.
25
+ */
26
+ trend?: "auto" | "up" | "down";
27
+ };
28
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
29
+ duration: number;
30
+ decimals: number;
31
+ animateOnMount: boolean;
32
+ trend: "auto" | "up" | "down";
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
+ declare const _default: typeof __VLS_export;
35
+ export default _default;
@@ -0,0 +1,39 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<{
4
+ /** The code as one string, e.g. "123456". Bind with v-model. */
5
+ modelValue?: string;
6
+ /** Number of cells. */
7
+ length?: number;
8
+ disabled?: boolean;
9
+ /** Mask entered characters (•) — for sensitive codes. */
10
+ mask?: boolean;
11
+ /** Allow letters too (backup codes). Default: digits only (TOTP). */
12
+ alphanumeric?: boolean;
13
+ /** Error state — tints the cells red (e.g. wrong code). */
14
+ invalid?: boolean;
15
+ size?: "sm" | "md" | "lg";
16
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
17
+ "update:modelValue": (value: string) => any;
18
+ complete: (value: string) => any;
19
+ }, string, import("vue").PublicProps, Readonly<{
20
+ /** The code as one string, e.g. "123456". Bind with v-model. */
21
+ modelValue?: string;
22
+ /** Number of cells. */
23
+ length?: number;
24
+ disabled?: boolean;
25
+ /** Mask entered characters (•) — for sensitive codes. */
26
+ mask?: boolean;
27
+ /** Allow letters too (backup codes). Default: digits only (TOTP). */
28
+ alphanumeric?: boolean;
29
+ /** Error state — tints the cells red (e.g. wrong code). */
30
+ invalid?: boolean;
31
+ size?: "sm" | "md" | "lg";
32
+ }> & Readonly<{
33
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
34
+ onComplete?: ((value: string) => any) | undefined;
35
+ }>, {
36
+ size: "sm" | "md" | "lg";
37
+ length: number;
38
+ alphanumeric: boolean;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,35 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<{
4
+ /** Current page, 1-based (v-model:page). */
5
+ page?: number;
6
+ /** Total item count — used with pageSize to derive the page count. */
7
+ total?: number;
8
+ pageSize?: number;
9
+ /** Direct page count; wins over total/pageSize when given. */
10
+ pageCount?: number;
11
+ /** Pages shown on each side of the current one in the inner run. */
12
+ siblings?: number;
13
+ disabled?: boolean;
14
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
15
+ change: (value: number) => any;
16
+ "update:page": (value: number) => any;
17
+ }, string, import("vue").PublicProps, Readonly<{
18
+ /** Current page, 1-based (v-model:page). */
19
+ page?: number;
20
+ /** Total item count — used with pageSize to derive the page count. */
21
+ total?: number;
22
+ pageSize?: number;
23
+ /** Direct page count; wins over total/pageSize when given. */
24
+ pageCount?: number;
25
+ /** Pages shown on each side of the current one in the inner run. */
26
+ siblings?: number;
27
+ disabled?: boolean;
28
+ }> & Readonly<{
29
+ onChange?: ((value: number) => any) | undefined;
30
+ "onUpdate:page"?: ((value: number) => any) | undefined;
31
+ }>, {
32
+ page: number;
33
+ pageSize: number;
34
+ siblings: number;
35
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;