@leavepulse/ui 0.43.2 → 0.43.4

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 (131) hide show
  1. package/dist/assets/{LpCommandPalette-DH7sPcKP.css → LpCommandPalette-B-0Est4Z.css} +21 -21
  2. package/dist/component-names.d.ts +1 -0
  3. package/dist/components/LayoutCanvas.vue.d.ts +28 -0
  4. package/dist/components/LayoutNode.vue.d.ts +40 -0
  5. package/dist/components/LpActionBar.vue.d.ts +84 -0
  6. package/dist/components/LpAddressInput.vue.d.ts +70 -0
  7. package/dist/components/LpAlert.vue.d.ts +44 -0
  8. package/dist/components/LpAppShell.vue.d.ts +123 -0
  9. package/dist/components/LpAutocomplete.vue.d.ts +50 -0
  10. package/dist/components/LpAvatar.vue.d.ts +34 -0
  11. package/dist/components/LpBadge.vue.d.ts +20 -0
  12. package/dist/components/LpBreadcrumbs.vue.d.ts +32 -0
  13. package/dist/components/LpButton.vue.d.ts +113 -0
  14. package/dist/components/LpCalendar.vue.d.ts +29 -0
  15. package/dist/components/LpCard.vue.d.ts +60 -0
  16. package/dist/components/LpChart.vue.d.ts +130 -0
  17. package/dist/components/LpCheckbox.vue.d.ts +32 -0
  18. package/dist/components/LpCodeBlock.vue.d.ts +58 -0
  19. package/dist/components/LpColorPicker.vue.d.ts +124 -0
  20. package/dist/components/LpCommandPalette.vue.d.ts +199 -0
  21. package/dist/components/LpCommandPalette.vue.js +4 -8
  22. package/dist/components/LpConfirmDialog.vue.d.ts +59 -0
  23. package/dist/components/LpContextMenu.vue.d.ts +44 -0
  24. package/dist/components/LpDatePicker.vue.d.ts +33 -0
  25. package/dist/components/LpDisclosure.vue.d.ts +47 -0
  26. package/dist/components/LpDivider.vue.d.ts +17 -0
  27. package/dist/components/LpDrawer.vue.d.ts +170 -0
  28. package/dist/components/LpDropdownMenu.vue.d.ts +23 -0
  29. package/dist/components/LpDropzone.vue.d.ts +90 -0
  30. package/dist/components/LpEmptyState.vue.d.ts +28 -0
  31. package/dist/components/LpFileTree.vue.d.ts +126 -0
  32. package/dist/components/LpFileTreeNode.vue.d.ts +62 -0
  33. package/dist/components/LpFormField.vue.d.ts +24 -0
  34. package/dist/components/LpIcon.vue.d.ts +9 -0
  35. package/dist/components/LpImageEditor.vue.d.ts +106 -0
  36. package/dist/components/LpInfraNode.vue.d.ts +65 -0
  37. package/dist/components/LpInput.vue.d.ts +80 -0
  38. package/dist/components/LpLaneNode.vue.d.ts +24 -0
  39. package/dist/components/LpLightbox.vue.d.ts +62 -0
  40. package/dist/components/LpLink.vue.d.ts +93 -0
  41. package/dist/components/LpLogViewer.vue.d.ts +153 -0
  42. package/dist/components/LpMapPicker.vue.d.ts +59 -0
  43. package/dist/components/LpMediaGallery.vue.d.ts +80 -0
  44. package/dist/components/LpModal.vue.d.ts +66 -0
  45. package/dist/components/LpModalNav.vue.d.ts +66 -0
  46. package/dist/components/LpNotificationBell.vue.d.ts +85 -0
  47. package/dist/components/LpNumberField.vue.d.ts +21 -0
  48. package/dist/components/LpNumberFlow.vue.d.ts +35 -0
  49. package/dist/components/LpOtpInput.vue.d.ts +39 -0
  50. package/dist/components/LpPagination.vue.d.ts +35 -0
  51. package/dist/components/LpPasswordInput.vue.d.ts +36 -0
  52. package/dist/components/LpPhoneInput.vue.d.ts +49 -0
  53. package/dist/components/LpPie.vue.d.ts +196 -0
  54. package/dist/components/LpPopover.vue.d.ts +34 -0
  55. package/dist/components/LpProgress.vue.d.ts +66 -0
  56. package/dist/components/LpRadio.vue.d.ts +18 -0
  57. package/dist/components/LpRadioGroup.vue.d.ts +26 -0
  58. package/dist/components/LpRollingText.vue.d.ts +33 -0
  59. package/dist/components/LpScrollArea.vue.d.ts +28 -0
  60. package/dist/components/LpSection.vue.d.ts +120 -0
  61. package/dist/components/LpSegmented.vue.d.ts +30 -0
  62. package/dist/components/LpSelect.vue.d.ts +47 -0
  63. package/dist/components/LpServiceNode.vue.d.ts +14 -0
  64. package/dist/components/LpShift.vue.d.ts +36 -0
  65. package/dist/components/LpShortcutsDialog.vue.d.ts +24 -0
  66. package/dist/components/LpSidebar.vue.d.ts +146 -0
  67. package/dist/components/LpSidebarNav.vue.d.ts +54 -0
  68. package/dist/components/LpSkeleton.vue.d.ts +16 -0
  69. package/dist/components/LpSlider.vue.d.ts +30 -0
  70. package/dist/components/LpSparkline.vue.d.ts +48 -0
  71. package/dist/components/LpStat.vue.d.ts +69 -0
  72. package/dist/components/LpStepper.vue.d.ts +36 -0
  73. package/dist/components/LpSwitch.vue.d.ts +42 -0
  74. package/dist/components/LpTable.vue.d.ts +124 -0
  75. package/dist/components/LpTableOfContents.vue.d.ts +19 -0
  76. package/dist/components/LpTabs.vue.d.ts +47 -0
  77. package/dist/components/LpTextarea.vue.d.ts +22 -0
  78. package/dist/components/LpThemeSwitcher.vue.d.ts +47 -0
  79. package/dist/components/LpTilt.vue.d.ts +31 -0
  80. package/dist/components/LpTimeField.vue.d.ts +24 -0
  81. package/dist/components/LpToaster.vue.d.ts +3 -0
  82. package/dist/components/LpTooltip.vue.d.ts +58 -0
  83. package/dist/components/LpTopologyCanvas.vue.d.ts +205 -0
  84. package/dist/components/LpUptimeBar.vue.d.ts +46 -0
  85. package/dist/components/LpWaypointEdge.vue.d.ts +33 -0
  86. package/dist/components/actionBar.d.ts +19 -0
  87. package/dist/components/address.d.ts +107 -0
  88. package/dist/components/chart.d.ts +180 -0
  89. package/dist/components/codeHighlight.d.ts +8 -0
  90. package/dist/components/color.d.ts +65 -0
  91. package/dist/components/commandSearch.d.ts +13 -0
  92. package/dist/components/commandSearch.js +1 -17
  93. package/dist/components/countries-data.d.ts +2 -0
  94. package/dist/components/countries.d.ts +20 -0
  95. package/dist/components/dropdown.d.ts +29 -0
  96. package/dist/components/fileTree.d.ts +79 -0
  97. package/dist/components/lightbox.d.ts +24 -0
  98. package/dist/components/modalDepth.d.ts +11 -0
  99. package/dist/components/sidebar.d.ts +42 -0
  100. package/dist/composables/easing.d.ts +46 -0
  101. package/dist/composables/useAsyncTask.d.ts +18 -0
  102. package/dist/composables/useClipboard.d.ts +46 -0
  103. package/dist/composables/useFormDraft.d.ts +67 -0
  104. package/dist/composables/useGlass.d.ts +9 -0
  105. package/dist/composables/useHotkeys.d.ts +101 -0
  106. package/dist/composables/useInputFilter.d.ts +14 -0
  107. package/dist/composables/useMergedClass.d.ts +42 -0
  108. package/dist/composables/usePillTransition.d.ts +21 -0
  109. package/dist/composables/useReveal.d.ts +26 -0
  110. package/dist/composables/useRovingFocus.d.ts +49 -0
  111. package/dist/composables/useSettled.d.ts +26 -0
  112. package/dist/composables/useShift.d.ts +35 -0
  113. package/dist/composables/useTilt.d.ts +23 -0
  114. package/dist/composables/useToast.d.ts +41 -0
  115. package/dist/composables/useZoomPan.d.ts +58 -0
  116. package/dist/icons.d.ts +1 -0
  117. package/dist/index.d.ts +162 -0
  118. package/dist/index.js +1 -2
  119. package/dist/layout/registry.d.ts +26 -0
  120. package/dist/layout/tree.d.ts +75 -0
  121. package/dist/layout/useLayout.d.ts +39 -0
  122. package/dist/theme/backdrop.d.ts +9 -0
  123. package/dist/theme/config.d.ts +16 -0
  124. package/dist/theme/define.d.ts +12 -0
  125. package/dist/theme/presets.d.ts +20 -0
  126. package/dist/theme/tokens.d.ts +75 -0
  127. package/dist/theme/useTheme.d.ts +46 -0
  128. package/package.json +2 -2
  129. package/src/components/LpCommandPalette.vue +2 -12
  130. package/src/components/commandSearch.ts +0 -17
  131. package/src/index.ts +1 -1
@@ -0,0 +1,36 @@
1
+ export interface Step {
2
+ label: string;
3
+ /** Stable id, for flows whose steps are addressed by name rather than order. */
4
+ key?: string;
5
+ /** Replaces the step number while the step is pending or current. */
6
+ icon?: string;
7
+ }
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ declare const __VLS_export: import("vue").DefineComponent<{
11
+ steps: Step[];
12
+ /**
13
+ * The active step: an index, or a step `key` for keyed flows.
14
+ */
15
+ current: number | string;
16
+ /**
17
+ * Which steps count as done. Omit it and everything before `current` is
18
+ * complete, which is the linear case. Pass keys (or indices) when a flow can
19
+ * finish steps out of order — a verification that succeeds before its
20
+ * prerequisite is filled in, say.
21
+ */
22
+ completed?: Array<string | number>;
23
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
24
+ steps: Step[];
25
+ /**
26
+ * The active step: an index, or a step `key` for keyed flows.
27
+ */
28
+ current: number | string;
29
+ /**
30
+ * Which steps count as done. Omit it and everything before `current` is
31
+ * complete, which is the linear case. Pass keys (or indices) when a flow can
32
+ * finish steps out of order — a verification that succeeds before its
33
+ * prerequisite is filled in, say.
34
+ */
35
+ completed?: Array<string | number>;
36
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,42 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
4
+ modelValue?: boolean;
5
+ disabled?: boolean;
6
+ label?: string;
7
+ /** Secondary line under the label. */
8
+ description?: string;
9
+ /**
10
+ * Where the text sits. `end` (default) reads like LpCheckbox: switch, then
11
+ * text. `start` is the settings-row shape: text on the left, the switch
12
+ * pushed to the right edge of the row.
13
+ */
14
+ labelPosition?: "start" | "end";
15
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
16
+ "update:modelValue": (value: boolean) => any;
17
+ }, string, import("vue").PublicProps, Readonly<{
18
+ modelValue?: boolean;
19
+ disabled?: boolean;
20
+ label?: string;
21
+ /** Secondary line under the label. */
22
+ description?: string;
23
+ /**
24
+ * Where the text sits. `end` (default) reads like LpCheckbox: switch, then
25
+ * text. `start` is the settings-row shape: text on the left, the switch
26
+ * pushed to the right edge of the row.
27
+ */
28
+ labelPosition?: "start" | "end";
29
+ }> & Readonly<{
30
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
31
+ }>, {
32
+ labelPosition: "start" | "end";
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
34
+ default?: (props: {}) => any;
35
+ } & {
36
+ default?: (props: {}) => any;
37
+ }>;
38
+ type __VLS_WithSlots<T, S> = T & {
39
+ new (): {
40
+ $slots: S;
41
+ };
42
+ };
@@ -0,0 +1,124 @@
1
+ import { type ContextMenuItemDef } from "./LpContextMenu.vue";
2
+ export interface TableColumn<Row> {
3
+ key: string;
4
+ label: string;
5
+ align?: "left" | "right" | "center";
6
+ width?: string;
7
+ /** Allow clicking the header to sort by this column. */
8
+ sortable?: boolean;
9
+ /**
10
+ * Offer "show only these values" in the header's menu, built from the values
11
+ * actually present in the rows. For a column that holds a small vocabulary —
12
+ * a type, a state, a site — where the question is "just the mains leads,
13
+ * please". Pointless on a column of unique values, so it is opt-in.
14
+ */
15
+ filterable?: boolean;
16
+ /**
17
+ * How a raw cell value reads in that filter list. `power_ac` is the stored
18
+ * vocabulary; the menu should say what the column itself says.
19
+ */
20
+ valueLabel?: (value: unknown) => string;
21
+ /** Keep this column out of the show/hide list — an actions column has no
22
+ * name to offer and nothing to gain from being hidden. */
23
+ alwaysVisible?: boolean;
24
+ }
25
+ export interface SortState {
26
+ key: string;
27
+ dir: "asc" | "desc";
28
+ }
29
+ /**
30
+ * What a server-backed table asks for. `hidden` mirrors the header filter: the
31
+ * values unticked per column, so a value the server has never sent before shows
32
+ * up instead of being silently excluded.
33
+ */
34
+ export interface TableQuery {
35
+ page: number;
36
+ pageSize: number;
37
+ sort: SortState | null;
38
+ hidden: Record<string, unknown[]>;
39
+ }
40
+ /**
41
+ * One page of a server-backed table. `facets` are the distinct values of the
42
+ * filterable columns across the whole result — one page cannot know them, and a
43
+ * filter built from twenty-five rows would offer whatever happened to be on it.
44
+ */
45
+ export interface TablePage<Row> {
46
+ rows: Row[];
47
+ total: number;
48
+ facets?: Record<string, unknown[]>;
49
+ }
50
+ declare const _default: typeof __VLS_export;
51
+ export default _default;
52
+ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
53
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
54
+ columns: TableColumn<T>[];
55
+ /** The rows, for a table that holds its data. Ignored when `load` is set. */
56
+ rows?: T[];
57
+ /**
58
+ * Fetch the rows instead of being handed them: paging, sorting and the
59
+ * header filters then happen on the server. Debounced and abortable, the
60
+ * same way as the command palette's `search` — a stale page never lands
61
+ * over a fresher one.
62
+ */
63
+ load?: (query: TableQuery, signal: AbortSignal) => TablePage<T> | Promise<TablePage<T>>;
64
+ /** Rows per page with `load`. */
65
+ pageSize?: number;
66
+ /** Wait after a sort or filter change before `load` runs. */
67
+ debounce?: number;
68
+ loadingLabel?: string;
69
+ errorLabel?: string;
70
+ /** Stable id per row — required for selection; falls back to index otherwise. */
71
+ rowKey?: keyof T | ((row: T) => string | number);
72
+ emptyLabel?: string;
73
+ emptyIcon?: string;
74
+ /** Render a leading checkbox column; selection binds via v-model:selected. */
75
+ selectable?: boolean;
76
+ /** Selected row keys (v-model:selected). */
77
+ selected?: (string | number)[];
78
+ /** Active sort (v-model:sort). When set, the parent owns ordering (server
79
+ * side); otherwise the table sorts its own rows client-side. */
80
+ sort?: SortState | null;
81
+ /** Pin the header while the body scrolls. Pair with a height on the wrapper. */
82
+ stickyHeader?: boolean;
83
+ /** Per-row right-click menu. Return [] (or omit the prop) to disable it for
84
+ * a row; the row then keeps the browser's native context menu. */
85
+ rowMenu?: (row: T) => ContextMenuItemDef[];
86
+ /** Wording for the header's right-click menu. Passed in because the kit
87
+ * carries no translations: an app that leaves these alone gets English. */
88
+ sortAscLabel?: string;
89
+ sortDescLabel?: string;
90
+ sortClearLabel?: string;
91
+ /** Wording for the value filter and the column chooser. */
92
+ filterLabel?: string;
93
+ showAllLabel?: string;
94
+ columnsLabel?: string;
95
+ } & {
96
+ "onUpdate:selected"?: ((value: (string | number)[]) => any) | undefined;
97
+ "onUpdate:sort"?: ((value: SortState | null) => any) | undefined;
98
+ onRowClick?: ((row: T) => any) | undefined;
99
+ }> & (typeof globalThis extends {
100
+ __VLS_PROPS_FALLBACK: infer P;
101
+ } ? P : {});
102
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
103
+ reload: () => void;
104
+ }>) => void;
105
+ attrs: any;
106
+ slots: {
107
+ [x: `cell-${string}`]: ((props: {
108
+ row: T;
109
+ value: unknown;
110
+ }) => any) | undefined;
111
+ };
112
+ emit: {
113
+ (e: "update:selected", value: (string | number)[]): void;
114
+ (e: "update:sort", value: SortState | null): void;
115
+ (e: "rowClick", row: T): void;
116
+ };
117
+ }>) => import("vue").VNode & {
118
+ __ctx?: Awaited<typeof __VLS_setup>;
119
+ };
120
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
121
+ [K in keyof T]: T[K];
122
+ } : {
123
+ [K in keyof T as K]: T[K];
124
+ }) & {};
@@ -0,0 +1,19 @@
1
+ export interface TocLink {
2
+ id: string;
3
+ text: string;
4
+ depth?: number;
5
+ children?: TocLink[];
6
+ }
7
+ type __VLS_Props = {
8
+ links: TocLink[];
9
+ /** Heading shown above the list. */
10
+ title?: string;
11
+ /** px offset from the top used as the scroll-spy trigger line. */
12
+ offset?: number;
13
+ };
14
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
+ title: string;
16
+ offset: number;
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,47 @@
1
+ export interface TabItem {
2
+ value: string;
3
+ label: string;
4
+ /** Optional iconify name (e.g. "lucide:palette"), shown left of the label. */
5
+ icon?: string;
6
+ }
7
+ type __VLS_Props = {
8
+ modelValue?: string;
9
+ items: TabItem[];
10
+ /**
11
+ * "contained" (default) wraps the triggers in a bordered, filled bar.
12
+ * "plain" drops the container chrome — a flat row of tabs with only the
13
+ * sliding pill marking the active one (for nav bars over a custom surface).
14
+ * "underline" is a flat row over a hairline baseline, marking the active
15
+ * tab with a sliding bottom bar instead of a pill (page-section nav style).
16
+ */
17
+ variant?: "contained" | "plain" | "underline";
18
+ /** Tint the active pill + label with the brand colour (nav-bar style). */
19
+ accent?: boolean;
20
+ /** Stretch the bar to full width with equal-share triggers. */
21
+ block?: boolean;
22
+ };
23
+ declare var __VLS_49: {
24
+ value: string;
25
+ }, __VLS_51: {};
26
+ type __VLS_Slots = {} & {
27
+ panel?: (props: typeof __VLS_49) => any;
28
+ } & {
29
+ default?: (props: typeof __VLS_51) => any;
30
+ };
31
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
32
+ "update:modelValue": (value: string) => any;
33
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
34
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
35
+ }>, {
36
+ block: boolean;
37
+ variant: "contained" | "plain" | "underline";
38
+ accent: boolean;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
41
+ declare const _default: typeof __VLS_export;
42
+ export default _default;
43
+ type __VLS_WithSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,22 @@
1
+ type __VLS_Props = {
2
+ modelValue?: string;
3
+ placeholder?: string;
4
+ rows?: number;
5
+ invalid?: boolean;
6
+ disabled?: boolean;
7
+ label?: string;
8
+ hint?: string;
9
+ error?: string;
10
+ /**
11
+ * Marks the label with the required indicator; the attribute still reaches
12
+ * the <textarea> for native validation.
13
+ */
14
+ required?: boolean;
15
+ };
16
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
17
+ "update:modelValue": (value: string) => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
20
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
@@ -0,0 +1,47 @@
1
+ import type { TokenSet } from "../theme/tokens";
2
+ type __VLS_Props = {
3
+ /** Active theme NAME (v-model). Falls back to the first theme. */
4
+ modelValue?: string;
5
+ /** Themes to offer. Defaults to all built-in presets. */
6
+ themes?: TokenSet[];
7
+ /**
8
+ * Themes the LEFT-click cycles through — names from `themes`, or TokenSets.
9
+ * Defaults to the full list (cycle everything). Pass two, e.g.
10
+ * `:cycle-themes="['Dark', 'Light']"`, for a quick dark/light toggle while
11
+ * the right-click menu still offers every theme.
12
+ */
13
+ cycleThemes?: (string | TokenSet)[];
14
+ /**
15
+ * Trigger style:
16
+ * - "swatch" (default): a square showing the active theme's brand colour.
17
+ * - "icon": a sun/moon icon following the active theme's mode.
18
+ * - "pill": swatch + the theme name in a pill (always shows the label).
19
+ */
20
+ variant?: "swatch" | "icon" | "pill";
21
+ /** Show the active theme's name next to the trigger (forced on for "pill"). */
22
+ showLabel?: boolean;
23
+ /**
24
+ * Default theme applied on mount when nothing is cached yet — the theme NAME
25
+ * (must be in `themes`) or a TokenSet. Lets a consuming app pick its default
26
+ * declaratively (<LpThemeSwitcher :default="'Violet'">) with no separate
27
+ * bootstrap plugin; a previously saved choice still wins over it.
28
+ */
29
+ default?: string | TokenSet;
30
+ /** Animate theme changes with the circular reveal. On by default. */
31
+ transition?: boolean;
32
+ size?: "sm" | "md" | "lg";
33
+ "aria-label"?: string;
34
+ };
35
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
36
+ change: (theme: TokenSet) => any;
37
+ "update:modelValue": (name: string) => any;
38
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
39
+ onChange?: ((theme: TokenSet) => any) | undefined;
40
+ "onUpdate:modelValue"?: ((name: string) => any) | undefined;
41
+ }>, {
42
+ size: "sm" | "md" | "lg";
43
+ transition: boolean;
44
+ variant: "swatch" | "icon" | "pill";
45
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
46
+ declare const _default: typeof __VLS_export;
47
+ export default _default;
@@ -0,0 +1,31 @@
1
+ type __VLS_Props = {
2
+ /** Max rotation toward the pointer, in degrees. */
3
+ max?: number;
4
+ /** Upward lift on hover, in px. */
5
+ lift?: number;
6
+ /** Scale on hover. */
7
+ scale?: number;
8
+ /** Render a pointer-tracking glare highlight over the content. */
9
+ glare?: boolean;
10
+ /** Perspective depth for the 3D stage, in px. Lower = stronger. */
11
+ perspective?: number;
12
+ };
13
+ declare var __VLS_1: {};
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_1) => any;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
+ scale: number;
19
+ max: number;
20
+ perspective: number;
21
+ lift: number;
22
+ glare: boolean;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
25
+ declare const _default: typeof __VLS_export;
26
+ export default _default;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1,24 @@
1
+ type __VLS_Props = {
2
+ /** Selected time "HH:mm" (v-model). */
3
+ modelValue?: string;
4
+ disabled?: boolean;
5
+ invalid?: boolean;
6
+ size?: "sm" | "md" | "lg";
7
+ /** 24 or 12-hour clock, independent of the browser locale. */
8
+ hourCycle?: 12 | 24;
9
+ /** Locale for segment order and the AM/PM marker in 12-hour mode. */
10
+ locale?: string;
11
+ /** Show the clock icon at the start of the field. */
12
+ icon?: boolean;
13
+ };
14
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
15
+ "update:modelValue": (value: string | undefined) => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
18
+ }>, {
19
+ size: "sm" | "md" | "lg";
20
+ icon: boolean;
21
+ hourCycle: 12 | 24;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const _default: typeof __VLS_export;
24
+ export default _default;
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,58 @@
1
+ type __VLS_Props = {
2
+ content?: string;
3
+ sideOffset?: number;
4
+ /** Which edge to prefer; flips automatically when there is no room. */
5
+ side?: "top" | "right" | "bottom" | "left";
6
+ /**
7
+ * The tip names the control rather than describing it — for a trigger with
8
+ * no visible text of its own. Sets the accessible name instead of only
9
+ * adding a description.
10
+ */
11
+ label?: boolean;
12
+ /** Milliseconds before the tip appears on hover. */
13
+ delay?: number;
14
+ /**
15
+ * Show on any focus, not just keyboard focus. Off by default: a tip that
16
+ * pops up after every mouse click on the trigger is noise.
17
+ */
18
+ showOnPointerFocus?: boolean;
19
+ /**
20
+ * Track the pointer instead of anchoring to the trigger's edge.
21
+ *
22
+ * For a trigger that is large or oddly shaped — a chart slice, a canvas, a
23
+ * map region — where the element's bounding box says little about what the
24
+ * pointer is actually over: anchored to the box, the tip can appear far from
25
+ * the thing it describes. Following the cursor keeps it next to the reading.
26
+ */
27
+ followCursor?: boolean;
28
+ /**
29
+ * Suppress the tip. For a trigger whose tip only applies to part of it — a
30
+ * chart wrapper where the pointer may be over a mark or over empty canvas —
31
+ * so an empty panel never opens over the gaps.
32
+ *
33
+ * This also FORCES CLOSED a tip that is already showing. reka's own
34
+ * `disabled` does not: it stops managing the tooltip where it stands, so one
35
+ * that was open when the flag flipped stayed on screen for good — outliving
36
+ * the pointer, letting a second chart open its own beside it, and surviving
37
+ * a scroll that should have dismissed it.
38
+ */
39
+ disabled?: boolean;
40
+ };
41
+ declare var __VLS_24: {}, __VLS_38: {};
42
+ type __VLS_Slots = {} & {
43
+ default?: (props: typeof __VLS_24) => any;
44
+ } & {
45
+ content?: (props: typeof __VLS_38) => any;
46
+ };
47
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
48
+ delay: number;
49
+ side: "top" | "right" | "bottom" | "left";
50
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
51
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
52
+ declare const _default: typeof __VLS_export;
53
+ export default _default;
54
+ type __VLS_WithSlots<T, S> = T & {
55
+ new (): {
56
+ $slots: S;
57
+ };
58
+ };
@@ -0,0 +1,205 @@
1
+ import { type Connection } from "@vue-flow/core";
2
+ import { type InfraNodeData } from "./LpInfraNode.vue";
3
+ import { type ServiceNodeData } from "./LpServiceNode.vue";
4
+ export type EdgeObserved = "applied" | "pending" | "drift";
5
+ export interface TopologyNode {
6
+ id: string;
7
+ position: {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ /** Host/group nodes use InfraNodeData; service nodes use ServiceNodeData. */
12
+ data: InfraNodeData | ServiceNodeData;
13
+ /**
14
+ * Node kind: "infra" (a host card, default), "service" (a small service node
15
+ * placed inside a host frame), or "group" (a host frame that contains
16
+ * services). Services set `parent` to their group's id.
17
+ */
18
+ type?: "infra" | "service" | "group";
19
+ /** For service nodes: the id of the host-frame group node they live in. */
20
+ parent?: string;
21
+ /** For group nodes: pixel size of the frame, and an optional label. */
22
+ width?: number;
23
+ height?: number;
24
+ label?: string;
25
+ }
26
+ /**
27
+ * Edge semantics, encoded with both colour AND line style so the two kinds read
28
+ * apart at a glance (and for colour-blind users): "network" = a transport wire
29
+ * between hosts (solid, brand-cyan); "structural" = a depends_on relation
30
+ * between services (dotted, violet, thinner). Inferred from `kind` when omitted
31
+ * (`depends_on` → structural, everything else → network).
32
+ */
33
+ export type EdgeCategory = "network" | "structural";
34
+ export interface TopologyEdge {
35
+ id: string;
36
+ source: string;
37
+ target: string;
38
+ /** transport label shown on the edge (e.g. "wg", "cloudflared"). */
39
+ kind?: string;
40
+ /** Semantic class driving colour + dash. Inferred from `kind` if omitted. */
41
+ category?: EdgeCategory;
42
+ observed?: EdgeObserved;
43
+ /**
44
+ * Push the edge into the background, matching the node data's `dimmed`. A
45
+ * focus highlight has to fade the edges too — dimming only the nodes leaves
46
+ * every unrelated line at full strength.
47
+ */
48
+ dimmed?: boolean;
49
+ /**
50
+ * Points the edge should curve through, when the host's layout knows where
51
+ * the gaps are. Requires `edgeType: "waypoints"`; ignored otherwise.
52
+ */
53
+ waypoints?: {
54
+ x: number;
55
+ y: number;
56
+ }[];
57
+ }
58
+ /**
59
+ * A background swimlane: a sized zone (one per project / overlay network) drawn
60
+ * beneath the nodes. The consumer computes the geometry; the canvas renders it
61
+ * as a non-interactive Vue Flow node so it pans/zooms in lockstep with the
62
+ * graph. Lanes are layered below real nodes and never intercept pointer events.
63
+ */
64
+ export interface TopologyLane {
65
+ id: string;
66
+ label: string;
67
+ x: number;
68
+ y: number;
69
+ width: number;
70
+ height: number;
71
+ /** Optional accent colour token for the lane border + label. */
72
+ accent?: string;
73
+ }
74
+ /** Canvas viewport transform — for restoring a saved pan/zoom. */
75
+ export interface CanvasViewport {
76
+ x: number;
77
+ y: number;
78
+ zoom: number;
79
+ }
80
+ type __VLS_Props = {
81
+ nodes: TopologyNode[];
82
+ edges: TopologyEdge[];
83
+ /** Allow drag-to-connect (emits `connect`). Default false (read-only). */
84
+ connectable?: boolean;
85
+ /**
86
+ * Desktop-style marquee selection: drag on empty canvas to rubber-band a
87
+ * box and select every node inside; the selected set then drags together.
88
+ * Hold Shift to add to the selection. Panning moves to a right-drag / the
89
+ * space bar so left-drag is free for selecting. Default false (left-drag
90
+ * pans, the classic read-only behaviour). Emits `selection-change`.
91
+ */
92
+ selectable?: boolean;
93
+ /** Show the edge-type legend (Network / Depends-on / Pending / Drift). */
94
+ legend?: boolean;
95
+ /**
96
+ * Where the legend sits. Defaults to bottom-left: hosts commonly float a
97
+ * toolbar across the top, which would cover a top-anchored legend, and the
98
+ * minimap owns the bottom-right.
99
+ */
100
+ legendPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
101
+ /**
102
+ * Edge shape. The default bezier bulges away from the straight line between
103
+ * its ends, which suits a free-form graph and cuts through everything in a
104
+ * LAYERED one — a long edge crosses the cards standing between its columns.
105
+ * `smoothstep` routes orthogonally through the gaps instead.
106
+ */
107
+ edgeType?: "default" | "smoothstep" | "step" | "straight" | "waypoints";
108
+ /** Rename legend rows to match what this graph's edges actually mean. */
109
+ legendLabels?: Partial<Record<"network" | "structural" | "pending" | "drift", string>>;
110
+ /**
111
+ * Background swimlanes drawn beneath the nodes (one per project / overlay).
112
+ * Non-interactive; pan/zoom with the graph. Empty = no lanes.
113
+ */
114
+ lanes?: TopologyLane[];
115
+ /**
116
+ * Minimap and zoom controls. On by default — a full-page map needs both —
117
+ * but a graph embedded at a few hundred pixels has nothing to navigate, and
118
+ * the overlays then cover a real share of the picture.
119
+ */
120
+ minimap?: boolean;
121
+ controls?: boolean;
122
+ };
123
+ declare function applyViewport(v: CanvasViewport): Promise<void>;
124
+ declare var __VLS_29: {};
125
+ type __VLS_Slots = {} & {
126
+ 'legend-extra'?: (props: typeof __VLS_29) => any;
127
+ };
128
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
129
+ fitView: import("@vue-flow/core").FitView;
130
+ setViewport: typeof applyViewport;
131
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
132
+ connect: (value: Connection) => any;
133
+ "node-select": (id: string) => any;
134
+ "node-activate": (id: string) => any;
135
+ "node-contextmenu": (value: {
136
+ id: string;
137
+ x: number;
138
+ y: number;
139
+ }) => any;
140
+ "edge-contextmenu": (value: {
141
+ id: string;
142
+ x: number;
143
+ y: number;
144
+ }) => any;
145
+ "pane-click": () => any;
146
+ "selection-change": (ids: string[]) => any;
147
+ "update:nodes": (value: TopologyNode[]) => any;
148
+ "node-drag-stop": (value: {
149
+ id: string;
150
+ position: {
151
+ x: number;
152
+ y: number;
153
+ };
154
+ }) => any;
155
+ "viewport-change": (value: {
156
+ zoom: number;
157
+ x: number;
158
+ y: number;
159
+ }) => any;
160
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
161
+ onConnect?: ((value: Connection) => any) | undefined;
162
+ "onNode-select"?: ((id: string) => any) | undefined;
163
+ "onNode-activate"?: ((id: string) => any) | undefined;
164
+ "onNode-contextmenu"?: ((value: {
165
+ id: string;
166
+ x: number;
167
+ y: number;
168
+ }) => any) | undefined;
169
+ "onEdge-contextmenu"?: ((value: {
170
+ id: string;
171
+ x: number;
172
+ y: number;
173
+ }) => any) | undefined;
174
+ "onPane-click"?: (() => any) | undefined;
175
+ "onSelection-change"?: ((ids: string[]) => any) | undefined;
176
+ "onUpdate:nodes"?: ((value: TopologyNode[]) => any) | undefined;
177
+ "onNode-drag-stop"?: ((value: {
178
+ id: string;
179
+ position: {
180
+ x: number;
181
+ y: number;
182
+ };
183
+ }) => any) | undefined;
184
+ "onViewport-change"?: ((value: {
185
+ zoom: number;
186
+ x: number;
187
+ y: number;
188
+ }) => any) | undefined;
189
+ }>, {
190
+ legend: boolean;
191
+ controls: boolean;
192
+ connectable: boolean;
193
+ selectable: boolean;
194
+ legendPosition: "top-left" | "top-right" | "bottom-left" | "bottom-right";
195
+ lanes: TopologyLane[];
196
+ minimap: boolean;
197
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
198
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
199
+ declare const _default: typeof __VLS_export;
200
+ export default _default;
201
+ type __VLS_WithSlots<T, S> = T & {
202
+ new (): {
203
+ $slots: S;
204
+ };
205
+ };