@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,90 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
4
+ /** Same syntax as the input's: "image/*", ".yaml,.yml". */
5
+ accept?: string;
6
+ /** Take more than one at a time. */
7
+ multiple?: boolean;
8
+ disabled?: boolean;
9
+ /**
10
+ * Also accept a paste anywhere on the page, not only while focused.
11
+ * Off by default: two zones both listening would each take the same
12
+ * screenshot, and a page with one obvious target is the case for it.
13
+ */
14
+ pasteTarget?: boolean;
15
+ /** Largest file accepted, in bytes. Bigger ones are rejected, not silently
16
+ * dropped — a picture that vanishes reads as a broken uploader. */
17
+ maxBytes?: number;
18
+ icon?: string;
19
+ title?: string;
20
+ hint?: string;
21
+ /**
22
+ * How the well sits against what holds it. A drop target reads as a hole
23
+ * in the surface, not a tile on top of it, so the default is darker than
24
+ * the card — which is what a dashed border is already suggesting.
25
+ * `flush` for a zone that fills a panel of its own, `soft` when it sits
26
+ * directly on the page background and needs to lift off it instead.
27
+ */
28
+ tone?: "sunken" | "flush" | "soft";
29
+ /** Draw the entrance when the zone first comes into view. */
30
+ animate?: boolean;
31
+ }, {
32
+ browse: () => void | undefined;
33
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
34
+ files: (files: File[]) => any;
35
+ rejected: (reason: {
36
+ file: File;
37
+ cause: "type" | "size";
38
+ }[]) => any;
39
+ }, string, import("vue").PublicProps, Readonly<{
40
+ /** Same syntax as the input's: "image/*", ".yaml,.yml". */
41
+ accept?: string;
42
+ /** Take more than one at a time. */
43
+ multiple?: boolean;
44
+ disabled?: boolean;
45
+ /**
46
+ * Also accept a paste anywhere on the page, not only while focused.
47
+ * Off by default: two zones both listening would each take the same
48
+ * screenshot, and a page with one obvious target is the case for it.
49
+ */
50
+ pasteTarget?: boolean;
51
+ /** Largest file accepted, in bytes. Bigger ones are rejected, not silently
52
+ * dropped — a picture that vanishes reads as a broken uploader. */
53
+ maxBytes?: number;
54
+ icon?: string;
55
+ title?: string;
56
+ hint?: string;
57
+ /**
58
+ * How the well sits against what holds it. A drop target reads as a hole
59
+ * in the surface, not a tile on top of it, so the default is darker than
60
+ * the card — which is what a dashed border is already suggesting.
61
+ * `flush` for a zone that fills a panel of its own, `soft` when it sits
62
+ * directly on the page background and needs to lift off it instead.
63
+ */
64
+ tone?: "sunken" | "flush" | "soft";
65
+ /** Draw the entrance when the zone first comes into view. */
66
+ animate?: boolean;
67
+ }> & Readonly<{
68
+ onFiles?: ((files: File[]) => any) | undefined;
69
+ onRejected?: ((reason: {
70
+ file: File;
71
+ cause: "type" | "size";
72
+ }[]) => any) | undefined;
73
+ }>, {
74
+ title: string;
75
+ animate: boolean;
76
+ icon: string;
77
+ accept: string;
78
+ multiple: boolean;
79
+ hint: string;
80
+ tone: "sunken" | "flush" | "soft";
81
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
82
+ default?: (props: {
83
+ over: boolean;
84
+ }) => any;
85
+ }>;
86
+ type __VLS_WithSlots<T, S> = T & {
87
+ new (): {
88
+ $slots: S;
89
+ };
90
+ };
@@ -0,0 +1,28 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
4
+ icon?: string;
5
+ title: string;
6
+ description?: string;
7
+ /**
8
+ * Tightens the block for empty states nested inside a card or a panel,
9
+ * where the full-page padding would dwarf its container.
10
+ */
11
+ compact?: boolean;
12
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
13
+ icon?: string;
14
+ title: string;
15
+ description?: string;
16
+ /**
17
+ * Tightens the block for empty states nested inside a card or a panel,
18
+ * where the full-page padding would dwarf its container.
19
+ */
20
+ compact?: boolean;
21
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
22
+ default?: (props: {}) => any;
23
+ }>;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -0,0 +1,126 @@
1
+ import { type FileNode } from "./fileTree";
2
+ export type { FileNode } from "./fileTree";
3
+ /** Rolled-up stats for the ticked entries — what a backup picker summarises. */
4
+ export interface FileTreeSummary {
5
+ /** Ticked files (directories excluded — they're containers, not payload). */
6
+ files: number;
7
+ /** Ticked directories. */
8
+ dirs: number;
9
+ /** Total bytes across ticked files, or undefined when no size is known. */
10
+ bytes?: number;
11
+ /** `bytes` pre-formatted ("2.4 GB"), or "—". */
12
+ sizeLabel: string;
13
+ }
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
16
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
17
+ nodes: FileNode[];
18
+ /** Selected node id (v-model:selected). */
19
+ selected?: string;
20
+ /** Expanded directory ids (v-model:expanded). Omit to let the tree own it. */
21
+ expanded?: string[];
22
+ /** Directory ids currently fetching children — shows a spinner on the row. */
23
+ loadingIds?: string[];
24
+ /**
25
+ * Multi-select mode: every row gets a tri-state checkbox and ticking a
26
+ * directory cascades to its loaded subtree. This is the mode for "pick what
27
+ * to back up" — `selected` stays independent (it's the highlighted row).
28
+ */
29
+ checkable?: boolean;
30
+ /** Ticked node ids (v-model:checked). */
31
+ checked?: string[];
32
+ /** Right-aligned size column (directories roll up their subtree). */
33
+ showSize?: boolean;
34
+ /** Right-aligned last-modified column. */
35
+ showModified?: boolean;
36
+ /** Directories first, then by name. Turn off to keep the caller's order. */
37
+ sort?: boolean;
38
+ /** Row icon size in px. */
39
+ iconSize?: number;
40
+ /** Skeleton rows while the initial listing loads. */
41
+ loading?: boolean;
42
+ skeletonRows?: number;
43
+ /** Empty-state copy when `nodes` is empty. */
44
+ emptyLabel?: string;
45
+ emptyDescription?: string;
46
+ }, {
47
+ reveal: (id: string) => void;
48
+ expandAll: () => void;
49
+ collapseAll: () => void;
50
+ checkAll: () => void;
51
+ clearChecked: () => void;
52
+ summary: import("vue").ComputedRef<FileTreeSummary>;
53
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
54
+ expand: (node: FileNode) => any;
55
+ select: (node: FileNode) => any;
56
+ summary: (summary: FileTreeSummary) => any;
57
+ open: (node: FileNode) => any;
58
+ collapse: (node: FileNode) => any;
59
+ "update:selected": (id: string) => any;
60
+ "update:expanded": (ids: string[]) => any;
61
+ "update:checked": (ids: string[]) => any;
62
+ }, string, import("vue").PublicProps, Readonly<{
63
+ nodes: FileNode[];
64
+ /** Selected node id (v-model:selected). */
65
+ selected?: string;
66
+ /** Expanded directory ids (v-model:expanded). Omit to let the tree own it. */
67
+ expanded?: string[];
68
+ /** Directory ids currently fetching children — shows a spinner on the row. */
69
+ loadingIds?: string[];
70
+ /**
71
+ * Multi-select mode: every row gets a tri-state checkbox and ticking a
72
+ * directory cascades to its loaded subtree. This is the mode for "pick what
73
+ * to back up" — `selected` stays independent (it's the highlighted row).
74
+ */
75
+ checkable?: boolean;
76
+ /** Ticked node ids (v-model:checked). */
77
+ checked?: string[];
78
+ /** Right-aligned size column (directories roll up their subtree). */
79
+ showSize?: boolean;
80
+ /** Right-aligned last-modified column. */
81
+ showModified?: boolean;
82
+ /** Directories first, then by name. Turn off to keep the caller's order. */
83
+ sort?: boolean;
84
+ /** Row icon size in px. */
85
+ iconSize?: number;
86
+ /** Skeleton rows while the initial listing loads. */
87
+ loading?: boolean;
88
+ skeletonRows?: number;
89
+ /** Empty-state copy when `nodes` is empty. */
90
+ emptyLabel?: string;
91
+ emptyDescription?: string;
92
+ }> & Readonly<{
93
+ onExpand?: ((node: FileNode) => any) | undefined;
94
+ onSelect?: ((node: FileNode) => any) | undefined;
95
+ onSummary?: ((summary: FileTreeSummary) => any) | undefined;
96
+ onOpen?: ((node: FileNode) => any) | undefined;
97
+ onCollapse?: ((node: FileNode) => any) | undefined;
98
+ "onUpdate:selected"?: ((id: string) => any) | undefined;
99
+ "onUpdate:expanded"?: ((ids: string[]) => any) | undefined;
100
+ "onUpdate:checked"?: ((ids: string[]) => any) | undefined;
101
+ }>, {
102
+ sort: boolean;
103
+ loading: boolean;
104
+ skeletonRows: number;
105
+ emptyLabel: string;
106
+ iconSize: number;
107
+ checkable: boolean;
108
+ showSize: boolean;
109
+ showModified: boolean;
110
+ emptyDescription: string;
111
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
112
+ /** Replace the row's label (icons, chevron and indent stay). */
113
+ row(props: {
114
+ node: FileNode;
115
+ depth: number;
116
+ expanded: boolean;
117
+ selected: boolean;
118
+ }): unknown;
119
+ /** Footer under the tree, handed the live selection stats. */
120
+ summary(props: FileTreeSummary): unknown;
121
+ }>;
122
+ type __VLS_WithSlots<T, S> = T & {
123
+ new (): {
124
+ $slots: S;
125
+ };
126
+ };
@@ -0,0 +1,62 @@
1
+ import { type FileNode, type NodeStats } from "./fileTree";
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
4
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
5
+ node: FileNode;
6
+ /** Nesting depth, 0 at the root — drives the indent guide and aria-level. */
7
+ depth: number;
8
+ expanded: Set<string>;
9
+ loading: Set<string>;
10
+ selectedId?: string;
11
+ focusedId?: string;
12
+ sort: boolean;
13
+ /** Rendered size of the row's icon, in px. */
14
+ iconSize: number;
15
+ /** Render a tri-state checkbox per row (multi-select mode). */
16
+ checkable: boolean;
17
+ checked: Set<string>;
18
+ /** Per-node state, derived once by the root for the whole tree. */
19
+ stats: Map<string, NodeStats>;
20
+ showSize: boolean;
21
+ showModified: boolean;
22
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
23
+ check: (node: FileNode, value: boolean) => any;
24
+ focus: (node: FileNode) => any;
25
+ select: (node: FileNode) => any;
26
+ toggle: (node: FileNode) => any;
27
+ }, string, import("vue").PublicProps, Readonly<{
28
+ node: FileNode;
29
+ /** Nesting depth, 0 at the root — drives the indent guide and aria-level. */
30
+ depth: number;
31
+ expanded: Set<string>;
32
+ loading: Set<string>;
33
+ selectedId?: string;
34
+ focusedId?: string;
35
+ sort: boolean;
36
+ /** Rendered size of the row's icon, in px. */
37
+ iconSize: number;
38
+ /** Render a tri-state checkbox per row (multi-select mode). */
39
+ checkable: boolean;
40
+ checked: Set<string>;
41
+ /** Per-node state, derived once by the root for the whole tree. */
42
+ stats: Map<string, NodeStats>;
43
+ showSize: boolean;
44
+ showModified: boolean;
45
+ }> & Readonly<{
46
+ onCheck?: ((node: FileNode, value: boolean) => any) | undefined;
47
+ onFocus?: ((node: FileNode) => any) | undefined;
48
+ onSelect?: ((node: FileNode) => any) | undefined;
49
+ onToggle?: ((node: FileNode) => any) | undefined;
50
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
51
+ row(props: {
52
+ node: FileNode;
53
+ depth: number;
54
+ expanded: boolean;
55
+ selected: boolean;
56
+ }): unknown;
57
+ }>;
58
+ type __VLS_WithSlots<T, S> = T & {
59
+ new (): {
60
+ $slots: S;
61
+ };
62
+ };
@@ -0,0 +1,24 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
4
+ label?: string;
5
+ hint?: string;
6
+ error?: string;
7
+ required?: boolean;
8
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
9
+ label?: string;
10
+ hint?: string;
11
+ error?: string;
12
+ required?: boolean;
13
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
14
+ default?: (props: {
15
+ id: string;
16
+ }) => any;
17
+ } & {
18
+ hint?: (props: {}) => any;
19
+ }>;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,9 @@
1
+ import "../icons";
2
+ type __VLS_Props = {
3
+ /** iconify name, e.g. "lucide:check". Bare names assume the lucide set. */
4
+ name: string;
5
+ size?: number | string;
6
+ };
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,106 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import("vue").DefineComponent<{
4
+ /** The picture to work on. */
5
+ file: File | Blob;
6
+ /**
7
+ * Shape of the crop box.
8
+ *
9
+ * The named ones are shorthand for the common cases; a NUMBER is the real
10
+ * interface — `:aspect="2.35"` for anamorphic, `:aspect="0.8"` for a
11
+ * shelf label — so a consumer whose shape is not on the list is not stuck
12
+ * choosing the nearest wrong one. "free" keeps the source's own
13
+ * proportions and crops only what panning and zoom leave outside.
14
+ */
15
+ aspect?: "free" | "square" | "4:3" | "3:4" | "16:9" | number;
16
+ /** Longest edge of the exported image. Larger sources are scaled down. */
17
+ maxEdge?: number;
18
+ /**
19
+ * Encoding of the export; read the result's `blob.type` for the one used.
20
+ *
21
+ * JPEG, the default, is the smallest for photographs, the case this was
22
+ * built for. It has no alpha channel, though: a transparent PNG comes back
23
+ * with its background filled black, and a logo or an icon is ruined by the
24
+ * crop. "source" keeps the picture's own format where a canvas can write it
25
+ * (PNG, JPEG, WebP) and falls back to PNG for the ones it cannot (GIF, BMP,
26
+ * SVG), so transparency survives either way. An animated GIF still comes
27
+ * back as its first frame: a canvas holds one picture.
28
+ */
29
+ type?: "image/jpeg" | "image/png" | "image/webp" | "source";
30
+ /** Quality of a lossy export (JPEG, WebP); PNG ignores it. */
31
+ quality?: number;
32
+ /**
33
+ * Labels for the toolbar. Defaulted in English rather than left blank: an
34
+ * icon button with no accessible name is announced as "button", and the
35
+ * kit cannot reach the consumer's translations. Apps with i18n pass their
36
+ * own strings.
37
+ */
38
+ labels?: Partial<Record<"rotateLeft" | "rotateRight" | "zoomIn" | "zoomOut" | "reset" | "canvas", string>>;
39
+ /** Fade the picture in when the editor first comes into view. */
40
+ animate?: boolean;
41
+ }, {
42
+ export: () => Promise<Blob | null>;
43
+ reset: () => void;
44
+ edited: import("vue").ComputedRef<boolean>;
45
+ shortcuts: readonly [{
46
+ readonly keys: readonly ["←", "→", "↑", "↓"];
47
+ readonly label: "Pan (Shift for a bigger step)";
48
+ }, {
49
+ readonly keys: readonly ["+", "−"];
50
+ readonly label: "Zoom";
51
+ }, {
52
+ readonly keys: readonly ["R"];
53
+ readonly label: "Rotate a quarter turn (Shift reverses)";
54
+ }, {
55
+ readonly keys: readonly ["Alt", "wheel"];
56
+ readonly label: "Turn freely (Shift snaps to 15°)";
57
+ }, {
58
+ readonly keys: readonly ["0"];
59
+ readonly label: "Reset";
60
+ }];
61
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
62
+ /** The picture to work on. */
63
+ file: File | Blob;
64
+ /**
65
+ * Shape of the crop box.
66
+ *
67
+ * The named ones are shorthand for the common cases; a NUMBER is the real
68
+ * interface — `:aspect="2.35"` for anamorphic, `:aspect="0.8"` for a
69
+ * shelf label — so a consumer whose shape is not on the list is not stuck
70
+ * choosing the nearest wrong one. "free" keeps the source's own
71
+ * proportions and crops only what panning and zoom leave outside.
72
+ */
73
+ aspect?: "free" | "square" | "4:3" | "3:4" | "16:9" | number;
74
+ /** Longest edge of the exported image. Larger sources are scaled down. */
75
+ maxEdge?: number;
76
+ /**
77
+ * Encoding of the export; read the result's `blob.type` for the one used.
78
+ *
79
+ * JPEG, the default, is the smallest for photographs, the case this was
80
+ * built for. It has no alpha channel, though: a transparent PNG comes back
81
+ * with its background filled black, and a logo or an icon is ruined by the
82
+ * crop. "source" keeps the picture's own format where a canvas can write it
83
+ * (PNG, JPEG, WebP) and falls back to PNG for the ones it cannot (GIF, BMP,
84
+ * SVG), so transparency survives either way. An animated GIF still comes
85
+ * back as its first frame: a canvas holds one picture.
86
+ */
87
+ type?: "image/jpeg" | "image/png" | "image/webp" | "source";
88
+ /** Quality of a lossy export (JPEG, WebP); PNG ignores it. */
89
+ quality?: number;
90
+ /**
91
+ * Labels for the toolbar. Defaulted in English rather than left blank: an
92
+ * icon button with no accessible name is announced as "button", and the
93
+ * kit cannot reach the consumer's translations. Apps with i18n pass their
94
+ * own strings.
95
+ */
96
+ labels?: Partial<Record<"rotateLeft" | "rotateRight" | "zoomIn" | "zoomOut" | "reset" | "canvas", string>>;
97
+ /** Fade the picture in when the editor first comes into view. */
98
+ animate?: boolean;
99
+ }> & Readonly<{}>, {
100
+ type: "image/jpeg" | "image/png" | "image/webp" | "source";
101
+ animate: boolean;
102
+ labels: Partial<Record<"rotateLeft" | "rotateRight" | "zoomIn" | "zoomOut" | "reset" | "canvas", string>>;
103
+ aspect: "free" | "square" | "4:3" | "3:4" | "16:9" | number;
104
+ maxEdge: number;
105
+ quality: number;
106
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,65 @@
1
+ export interface InfraNodeData {
2
+ name: string;
3
+ /** Role key: selects the colour/glyph, and shown as-is unless `roleLabel`. */
4
+ role: string;
5
+ /**
6
+ * What to print for the role. The key itself ("host", "proxy") is an API
7
+ * value, not a word for an operator to read in their own language.
8
+ */
9
+ roleLabel?: string;
10
+ overlay?: string;
11
+ online?: boolean;
12
+ kind?: string;
13
+ project?: string;
14
+ /** Control-plane firewall rule count on this host (badge when > 0). */
15
+ firewallCount?: number;
16
+ /** Service count on this host (badge when defined — services toggle on). */
17
+ serviceCount?: number;
18
+ /**
19
+ * How old this node's readings are, human-readable ("28d"). An unreachable
20
+ * machine keeps serving its last snapshot, which reads as current unless the
21
+ * card says otherwise — so when set, the counts below are struck through and
22
+ * the age is shown in their place.
23
+ */
24
+ staleFor?: string;
25
+ /** Fade the node back (search miss / not part of the focused node's graph). */
26
+ dimmed?: boolean;
27
+ /**
28
+ * Wording for this node's badges. Carried in `data` because that is what
29
+ * LpTopologyCanvas forwards to the node renderer; a component prop would
30
+ * never reach it.
31
+ */
32
+ labels?: InfraNodeLabels;
33
+ }
34
+ /**
35
+ * Wording for the badges, so the node speaks the app's language.
36
+ *
37
+ * The kit ships English defaults; a localised app passes its own. `{n}` is the
38
+ * count, `{age}` the value of `staleFor`.
39
+ */
40
+ export interface InfraNodeLabels {
41
+ /** Tooltip on the firewall badge. Default: "{n} firewall rule(s)". */
42
+ firewallRules?: string;
43
+ /** Tooltip on the service badge. Default: "{n} service(s)". */
44
+ services?: string;
45
+ /** Tooltip on the service badge when readings are stale. */
46
+ servicesStale?: string;
47
+ /** Tooltip on the staleness badge. */
48
+ noContact?: string;
49
+ /** Suffix after the age, e.g. "old" in "4m old". */
50
+ old?: string;
51
+ }
52
+ type __VLS_Props = {
53
+ data: InfraNodeData;
54
+ selected?: boolean;
55
+ /** Extra/overriding role styles, merged over the defaults below. */
56
+ roles?: Record<string, InfraRoleStyle>;
57
+ };
58
+ export interface InfraRoleStyle {
59
+ /** CSS colour — normally a var() reference, e.g. var(--color-node-edge). */
60
+ color: string;
61
+ icon: string;
62
+ }
63
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
64
+ declare const _default: typeof __VLS_export;
65
+ export default _default;
@@ -0,0 +1,80 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
4
+ modelValue?: string;
5
+ size?: "sm" | "md" | "lg" | undefined;
6
+ invalid?: boolean;
7
+ placeholder?: string;
8
+ type?: string;
9
+ disabled?: boolean;
10
+ label?: string;
11
+ hint?: string;
12
+ error?: string;
13
+ icon?: string;
14
+ /**
15
+ * Marks the label with the required indicator. The attribute still reaches
16
+ * the underlying <input> for native validation; this only makes the field
17
+ * read as required.
18
+ */
19
+ required?: boolean;
20
+ /**
21
+ * RegExp/string the whole value must match to be valid. Validation only —
22
+ * never blocks typing; a non-matching non-empty value shows the invalid
23
+ * style + aria-invalid. A bare string is anchored, like HTML `pattern`.
24
+ */
25
+ pattern?: RegExp | string;
26
+ /**
27
+ * One-char RegExp of allowed characters (e.g. /[0-9]/). Hard-blocks
28
+ * disallowed input/paste at the source — cursor- and IME-safe.
29
+ */
30
+ restrict?: RegExp;
31
+ }, {
32
+ focus: (options?: FocusOptions) => void | undefined;
33
+ blur: () => void | undefined;
34
+ select: () => void | undefined;
35
+ input: import("vue").Ref<HTMLInputElement | null, HTMLInputElement | null>;
36
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
37
+ "update:modelValue": (value: string) => any;
38
+ }, string, import("vue").PublicProps, Readonly<{
39
+ modelValue?: string;
40
+ size?: "sm" | "md" | "lg" | undefined;
41
+ invalid?: boolean;
42
+ placeholder?: string;
43
+ type?: string;
44
+ disabled?: boolean;
45
+ label?: string;
46
+ hint?: string;
47
+ error?: string;
48
+ icon?: string;
49
+ /**
50
+ * Marks the label with the required indicator. The attribute still reaches
51
+ * the underlying <input> for native validation; this only makes the field
52
+ * read as required.
53
+ */
54
+ required?: boolean;
55
+ /**
56
+ * RegExp/string the whole value must match to be valid. Validation only —
57
+ * never blocks typing; a non-matching non-empty value shows the invalid
58
+ * style + aria-invalid. A bare string is anchored, like HTML `pattern`.
59
+ */
60
+ pattern?: RegExp | string;
61
+ /**
62
+ * One-char RegExp of allowed characters (e.g. /[0-9]/). Hard-blocks
63
+ * disallowed input/paste at the source — cursor- and IME-safe.
64
+ */
65
+ restrict?: RegExp;
66
+ }> & Readonly<{
67
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
68
+ }>, {
69
+ type: string;
70
+ size: "sm" | "md" | "lg";
71
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
72
+ leading?: (props: {}) => any;
73
+ } & {
74
+ trailing?: (props: {}) => any;
75
+ }>;
76
+ type __VLS_WithSlots<T, S> = T & {
77
+ new (): {
78
+ $slots: S;
79
+ };
80
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Custom Vue Flow node for a project SWIMLANE on LpTopologyCanvas: a sized
3
+ * background zone that groups the nodes of one project (overlay network). It is
4
+ * a NODE (not an overlay) so Vue Flow transforms it with pan/zoom for free.
5
+ *
6
+ * Purely decorative: the lane never intercepts pointer events (pan/drag pass
7
+ * through to the canvas), is non-selectable / non-draggable (set on the node
8
+ * object by the canvas), and sits below real nodes via a low z-index. The label
9
+ * tab stays clickable-looking but is inert. Tailwind utilities only so styles
10
+ * reach consumer apps via @source.
11
+ */
12
+ export interface LaneNodeData {
13
+ label: string;
14
+ /** Optional accent colour token for the lane border + label. */
15
+ accent?: string;
16
+ width: number;
17
+ height: number;
18
+ }
19
+ type __VLS_Props = {
20
+ data: LaneNodeData;
21
+ };
22
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const _default: typeof __VLS_export;
24
+ export default _default;