@leavepulse/ui 0.14.8 → 0.14.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{LpCard-1yvWT9fx.js → LpCard-BmrTvWOe.js} +21 -9
- package/dist/chunks/LpFileTree-0Ko_uj8q.js +371 -0
- package/dist/chunks/LpFileTreeNode-D3lNEP-1.js +216 -0
- package/dist/component-names.d.ts +1 -1
- package/dist/components/LpCard.vue.d.ts +5 -0
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpFileTree.vue.d.ts +106 -0
- package/dist/components/LpFileTree.vue.js +4 -0
- package/dist/components/LpFileTreeNode.vue.d.ts +45 -0
- package/dist/components/LpFileTreeNode.vue.js +4 -0
- package/dist/components/LpLogViewer.vue.d.ts +1 -1
- package/dist/components/fileTree.d.ts +54 -0
- package/dist/components/fileTree.js +155 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +86 -75
- package/package.json +2 -2
- package/src/component-names.ts +2 -0
- package/src/components/LpCard.vue +12 -5
- package/src/components/LpFileTree.vue +512 -0
- package/src/components/LpFileTreeNode.vue +264 -0
- package/src/components/fileTree.ts +214 -0
- package/src/index.ts +13 -0
- package/src/tokens/tokens.css +58 -2
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { 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
|
+
type __VLS_Props = {
|
|
15
|
+
nodes: FileNode[];
|
|
16
|
+
/** Selected node id (v-model:selected). */
|
|
17
|
+
selected?: string;
|
|
18
|
+
/** Expanded directory ids (v-model:expanded). Omit to let the tree own it. */
|
|
19
|
+
expanded?: string[];
|
|
20
|
+
/** Directory ids currently fetching children — shows a spinner on the row. */
|
|
21
|
+
loadingIds?: string[];
|
|
22
|
+
/**
|
|
23
|
+
* Multi-select mode: every row gets a tri-state checkbox and ticking a
|
|
24
|
+
* directory cascades to its loaded subtree. This is the mode for "pick what
|
|
25
|
+
* to back up" — `selected` stays independent (it's the highlighted row).
|
|
26
|
+
*/
|
|
27
|
+
checkable?: boolean;
|
|
28
|
+
/** Ticked node ids (v-model:checked). */
|
|
29
|
+
checked?: string[];
|
|
30
|
+
/** Right-aligned size column (directories roll up their subtree). */
|
|
31
|
+
showSize?: boolean;
|
|
32
|
+
/** Right-aligned last-modified column. */
|
|
33
|
+
showModified?: boolean;
|
|
34
|
+
/** Directories first, then by name. Turn off to keep the caller's order. */
|
|
35
|
+
sort?: boolean;
|
|
36
|
+
/** Row icon size in px. */
|
|
37
|
+
iconSize?: number;
|
|
38
|
+
/** Skeleton rows while the initial listing loads. */
|
|
39
|
+
loading?: boolean;
|
|
40
|
+
skeletonRows?: number;
|
|
41
|
+
/** Empty-state copy when `nodes` is empty. */
|
|
42
|
+
emptyLabel?: string;
|
|
43
|
+
emptyDescription?: string;
|
|
44
|
+
};
|
|
45
|
+
type __VLS_Slots = {
|
|
46
|
+
/** Replace the row's label (icons, chevron and indent stay). */
|
|
47
|
+
row(props: {
|
|
48
|
+
node: FileNode;
|
|
49
|
+
depth: number;
|
|
50
|
+
expanded: boolean;
|
|
51
|
+
selected: boolean;
|
|
52
|
+
}): unknown;
|
|
53
|
+
/** Footer under the tree, handed the live selection stats. */
|
|
54
|
+
summary(props: FileTreeSummary): unknown;
|
|
55
|
+
};
|
|
56
|
+
/** Tick every node in the tree (skipping disabled ones). */
|
|
57
|
+
declare function checkAll(): void;
|
|
58
|
+
declare function clearChecked(): void;
|
|
59
|
+
/** Expand every ancestor of `id`, focus it and make it the selection. */
|
|
60
|
+
declare function reveal(id: string): void;
|
|
61
|
+
declare function expandAll(): void;
|
|
62
|
+
declare function collapseAll(): void;
|
|
63
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
64
|
+
reveal: typeof reveal;
|
|
65
|
+
expandAll: typeof expandAll;
|
|
66
|
+
collapseAll: typeof collapseAll;
|
|
67
|
+
checkAll: typeof checkAll;
|
|
68
|
+
clearChecked: typeof clearChecked;
|
|
69
|
+
summary: import('vue').ComputedRef<FileTreeSummary>;
|
|
70
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
71
|
+
expand: (node: FileNode) => any;
|
|
72
|
+
select: (node: FileNode) => any;
|
|
73
|
+
summary: (summary: FileTreeSummary) => any;
|
|
74
|
+
open: (node: FileNode) => any;
|
|
75
|
+
"update:selected": (id: string) => any;
|
|
76
|
+
"update:expanded": (ids: string[]) => any;
|
|
77
|
+
collapse: (node: FileNode) => any;
|
|
78
|
+
"update:checked": (ids: string[]) => any;
|
|
79
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
80
|
+
onExpand?: ((node: FileNode) => any) | undefined;
|
|
81
|
+
onSelect?: ((node: FileNode) => any) | undefined;
|
|
82
|
+
onSummary?: ((summary: FileTreeSummary) => any) | undefined;
|
|
83
|
+
onOpen?: ((node: FileNode) => any) | undefined;
|
|
84
|
+
"onUpdate:selected"?: ((id: string) => any) | undefined;
|
|
85
|
+
"onUpdate:expanded"?: ((ids: string[]) => any) | undefined;
|
|
86
|
+
onCollapse?: ((node: FileNode) => any) | undefined;
|
|
87
|
+
"onUpdate:checked"?: ((ids: string[]) => any) | undefined;
|
|
88
|
+
}>, {
|
|
89
|
+
sort: boolean;
|
|
90
|
+
loading: boolean;
|
|
91
|
+
skeletonRows: number;
|
|
92
|
+
iconSize: number;
|
|
93
|
+
checkable: boolean;
|
|
94
|
+
showSize: boolean;
|
|
95
|
+
showModified: boolean;
|
|
96
|
+
emptyLabel: string;
|
|
97
|
+
emptyDescription: string;
|
|
98
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
99
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
100
|
+
declare const _default: typeof __VLS_export;
|
|
101
|
+
export default _default;
|
|
102
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
103
|
+
new (): {
|
|
104
|
+
$slots: S;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { FileNode } from './fileTree';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
node: FileNode;
|
|
4
|
+
/** Nesting depth, 0 at the root — drives the indent guide and aria-level. */
|
|
5
|
+
depth: number;
|
|
6
|
+
expanded: Set<string>;
|
|
7
|
+
loading: Set<string>;
|
|
8
|
+
selectedId?: string;
|
|
9
|
+
focusedId?: string;
|
|
10
|
+
sort: boolean;
|
|
11
|
+
/** Rendered size of the row's icon, in px. */
|
|
12
|
+
iconSize: number;
|
|
13
|
+
/** Render a tri-state checkbox per row (multi-select mode). */
|
|
14
|
+
checkable: boolean;
|
|
15
|
+
checked: Set<string>;
|
|
16
|
+
showSize: boolean;
|
|
17
|
+
showModified: boolean;
|
|
18
|
+
};
|
|
19
|
+
type __VLS_Slots = {
|
|
20
|
+
row(props: {
|
|
21
|
+
node: FileNode;
|
|
22
|
+
depth: number;
|
|
23
|
+
expanded: boolean;
|
|
24
|
+
selected: boolean;
|
|
25
|
+
}): unknown;
|
|
26
|
+
};
|
|
27
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
28
|
+
check: (node: FileNode, value: boolean) => any;
|
|
29
|
+
focus: (node: FileNode) => any;
|
|
30
|
+
select: (node: FileNode) => any;
|
|
31
|
+
toggle: (node: FileNode) => any;
|
|
32
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
33
|
+
onCheck?: ((node: FileNode, value: boolean) => any) | undefined;
|
|
34
|
+
onFocus?: ((node: FileNode) => any) | undefined;
|
|
35
|
+
onSelect?: ((node: FileNode) => any) | undefined;
|
|
36
|
+
onToggle?: ((node: FileNode) => any) | undefined;
|
|
37
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
38
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
39
|
+
declare const _default: typeof __VLS_export;
|
|
40
|
+
export default _default;
|
|
41
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
42
|
+
new (): {
|
|
43
|
+
$slots: S;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
@@ -81,10 +81,10 @@ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {
|
|
|
81
81
|
height: string;
|
|
82
82
|
wrap: boolean;
|
|
83
83
|
lineNumbers: boolean;
|
|
84
|
+
emptyLabel: string;
|
|
84
85
|
showTime: boolean;
|
|
85
86
|
showLevel: boolean;
|
|
86
87
|
tail: boolean;
|
|
87
|
-
emptyLabel: string;
|
|
88
88
|
rowMenu: boolean;
|
|
89
89
|
parse: boolean;
|
|
90
90
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ContextMenuItemDef } from './LpContextMenu.vue';
|
|
2
|
+
export interface FileNode {
|
|
3
|
+
/** Stable identity — use the full path when you have one. */
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
/** Directories can hold `children`; files are leaves. */
|
|
7
|
+
kind: "file" | "dir";
|
|
8
|
+
/** Size in bytes. Shown right-aligned when `showSize` is on. */
|
|
9
|
+
size?: number;
|
|
10
|
+
/** Last-modified time — Date, epoch ms, or a pre-formatted string. */
|
|
11
|
+
modified?: Date | number | string;
|
|
12
|
+
/** Extra right-aligned text (badge-ish), e.g. "read-only". */
|
|
13
|
+
meta?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Omit on a directory to mark its children as not-yet-loaded: the row shows a
|
|
16
|
+
* chevron and emits `expand` on first open so the caller can fetch them.
|
|
17
|
+
* An empty array means "loaded, and genuinely empty".
|
|
18
|
+
*/
|
|
19
|
+
children?: FileNode[];
|
|
20
|
+
/** Override the type-derived icon. */
|
|
21
|
+
icon?: string;
|
|
22
|
+
/** Dimmed row (e.g. a git-ignored or unreadable entry). Still expandable. */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** Right-click menu for this entry. */
|
|
25
|
+
menu?: ContextMenuItemDef[];
|
|
26
|
+
}
|
|
27
|
+
/** Icon for a node: explicit override → dir state → name → extension → generic. */
|
|
28
|
+
export declare function fileIcon(node: FileNode, expanded?: boolean): string;
|
|
29
|
+
/** Directories first, then case-insensitive by name — the file-manager order. */
|
|
30
|
+
export declare function sortNodes(nodes: FileNode[]): FileNode[];
|
|
31
|
+
/** Human-readable byte size — binary units, matching what file managers show. */
|
|
32
|
+
export declare function formatSize(bytes: number): string;
|
|
33
|
+
/** Short local date-time for the modified column; passes strings through. */
|
|
34
|
+
export declare function formatModified(value: Date | number | string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Total size of a subtree: a directory's own `size` when the caller computed one
|
|
37
|
+
* (the common case for a server-side listing), otherwise the sum of its loaded
|
|
38
|
+
* descendants. Returns undefined when nothing along the way carries a size.
|
|
39
|
+
*/
|
|
40
|
+
export declare function subtreeSize(node: FileNode): number | undefined;
|
|
41
|
+
/** Every id in a subtree including the root — the unit a checkbox toggles. */
|
|
42
|
+
export declare function subtreeIds(node: FileNode): string[];
|
|
43
|
+
export type CheckState = "checked" | "unchecked" | "indeterminate";
|
|
44
|
+
/**
|
|
45
|
+
* A node's checkbox state derived from the checked-id set.
|
|
46
|
+
*
|
|
47
|
+
* A directory reflects its loaded children: all checked → checked, some →
|
|
48
|
+
* indeterminate. A directory whose children aren't loaded yet (or which has
|
|
49
|
+
* none) falls back to its own membership, so an unexpanded folder can still be
|
|
50
|
+
* ticked as a whole — which is exactly what a backup picker needs.
|
|
51
|
+
*/
|
|
52
|
+
export declare function checkStateOf(node: FileNode, checked: ReadonlySet<string>): CheckState;
|
|
53
|
+
/** Ids of every ancestor directory of `id`, so callers can reveal a deep node. */
|
|
54
|
+
export declare function ancestorIds(nodes: FileNode[], id: string): string[];
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
const EXT_ICONS = {
|
|
2
|
+
json: "lucide:file-json",
|
|
3
|
+
jsonc: "lucide:file-json",
|
|
4
|
+
yaml: "lucide:file-cog",
|
|
5
|
+
yml: "lucide:file-cog",
|
|
6
|
+
toml: "lucide:file-cog",
|
|
7
|
+
ini: "lucide:file-cog",
|
|
8
|
+
conf: "lucide:file-cog",
|
|
9
|
+
env: "lucide:file-key",
|
|
10
|
+
ts: "lucide:file-code",
|
|
11
|
+
tsx: "lucide:file-code",
|
|
12
|
+
js: "lucide:file-code",
|
|
13
|
+
mjs: "lucide:file-code",
|
|
14
|
+
cjs: "lucide:file-code",
|
|
15
|
+
vue: "lucide:file-code",
|
|
16
|
+
py: "lucide:file-code",
|
|
17
|
+
rs: "lucide:file-code",
|
|
18
|
+
go: "lucide:file-code",
|
|
19
|
+
sh: "lucide:file-terminal",
|
|
20
|
+
zsh: "lucide:file-terminal",
|
|
21
|
+
bash: "lucide:file-terminal",
|
|
22
|
+
md: "lucide:file-text",
|
|
23
|
+
mdx: "lucide:file-text",
|
|
24
|
+
txt: "lucide:file-text",
|
|
25
|
+
log: "lucide:scroll-text",
|
|
26
|
+
csv: "lucide:file-spreadsheet",
|
|
27
|
+
sql: "lucide:database",
|
|
28
|
+
png: "lucide:file-image",
|
|
29
|
+
jpg: "lucide:file-image",
|
|
30
|
+
jpeg: "lucide:file-image",
|
|
31
|
+
gif: "lucide:file-image",
|
|
32
|
+
svg: "lucide:file-image",
|
|
33
|
+
webp: "lucide:file-image",
|
|
34
|
+
ico: "lucide:file-image",
|
|
35
|
+
zip: "lucide:file-archive",
|
|
36
|
+
gz: "lucide:file-archive",
|
|
37
|
+
tar: "lucide:file-archive",
|
|
38
|
+
tgz: "lucide:file-archive",
|
|
39
|
+
xz: "lucide:file-archive",
|
|
40
|
+
pdf: "lucide:file-type",
|
|
41
|
+
lock: "lucide:file-lock",
|
|
42
|
+
pem: "lucide:file-key",
|
|
43
|
+
key: "lucide:file-key",
|
|
44
|
+
crt: "lucide:file-key"
|
|
45
|
+
};
|
|
46
|
+
const NAME_ICONS = {
|
|
47
|
+
".env": "lucide:file-key",
|
|
48
|
+
".gitignore": "lucide:git-branch",
|
|
49
|
+
".dockerignore": "lucide:container",
|
|
50
|
+
dockerfile: "lucide:container",
|
|
51
|
+
"docker-compose.yml": "lucide:container",
|
|
52
|
+
"docker-compose.yaml": "lucide:container",
|
|
53
|
+
makefile: "lucide:file-cog",
|
|
54
|
+
"package.json": "lucide:package"
|
|
55
|
+
};
|
|
56
|
+
function fileIcon(node, expanded = false) {
|
|
57
|
+
if (node.icon) return node.icon;
|
|
58
|
+
if (node.kind === "dir") return expanded ? "lucide:folder-open" : "lucide:folder";
|
|
59
|
+
const lower = node.name.toLowerCase();
|
|
60
|
+
if (NAME_ICONS[lower]) return NAME_ICONS[lower];
|
|
61
|
+
const dot = lower.lastIndexOf(".");
|
|
62
|
+
const ext = dot > 0 ? lower.slice(dot + 1) : "";
|
|
63
|
+
return EXT_ICONS[ext] ?? "lucide:file";
|
|
64
|
+
}
|
|
65
|
+
function sortNodes(nodes) {
|
|
66
|
+
return [...nodes].sort((a, b) => {
|
|
67
|
+
if (a.kind !== b.kind) return a.kind === "dir" ? -1 : 1;
|
|
68
|
+
return a.name.localeCompare(b.name, void 0, { numeric: true, sensitivity: "base" });
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function formatSize(bytes) {
|
|
72
|
+
if (!Number.isFinite(bytes) || bytes < 0) return "—";
|
|
73
|
+
if (bytes < 1024) return `${bytes} B`;
|
|
74
|
+
const units = ["KB", "MB", "GB", "TB", "PB"];
|
|
75
|
+
let value = bytes / 1024;
|
|
76
|
+
let i = 0;
|
|
77
|
+
while (value >= 1024 && i < units.length - 1) {
|
|
78
|
+
value /= 1024;
|
|
79
|
+
i++;
|
|
80
|
+
}
|
|
81
|
+
return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`;
|
|
82
|
+
}
|
|
83
|
+
function formatModified(value) {
|
|
84
|
+
if (typeof value === "string") return value;
|
|
85
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
86
|
+
if (Number.isNaN(date.getTime())) return "—";
|
|
87
|
+
return date.toLocaleString(void 0, {
|
|
88
|
+
day: "2-digit",
|
|
89
|
+
month: "short",
|
|
90
|
+
hour: "2-digit",
|
|
91
|
+
minute: "2-digit"
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function subtreeSize(node) {
|
|
95
|
+
if (node.kind === "file") return node.size;
|
|
96
|
+
if (node.size !== void 0) return node.size;
|
|
97
|
+
if (!node.children?.length) return void 0;
|
|
98
|
+
let total = 0;
|
|
99
|
+
let seen = false;
|
|
100
|
+
for (const child of node.children) {
|
|
101
|
+
const size = subtreeSize(child);
|
|
102
|
+
if (size !== void 0) {
|
|
103
|
+
total += size;
|
|
104
|
+
seen = true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return seen ? total : void 0;
|
|
108
|
+
}
|
|
109
|
+
function subtreeIds(node) {
|
|
110
|
+
const out = [node.id];
|
|
111
|
+
for (const child of node.children ?? []) out.push(...subtreeIds(child));
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
function checkStateOf(node, checked) {
|
|
115
|
+
if (node.kind === "file" || !node.children?.length) {
|
|
116
|
+
return checked.has(node.id) ? "checked" : "unchecked";
|
|
117
|
+
}
|
|
118
|
+
let all = true;
|
|
119
|
+
let any = false;
|
|
120
|
+
for (const child of node.children) {
|
|
121
|
+
const state = checkStateOf(child, checked);
|
|
122
|
+
if (state === "checked") any = true;
|
|
123
|
+
else if (state === "indeterminate") {
|
|
124
|
+
any = true;
|
|
125
|
+
all = false;
|
|
126
|
+
} else all = false;
|
|
127
|
+
}
|
|
128
|
+
if (all) return "checked";
|
|
129
|
+
return any ? "indeterminate" : "unchecked";
|
|
130
|
+
}
|
|
131
|
+
function ancestorIds(nodes, id) {
|
|
132
|
+
const path = [];
|
|
133
|
+
function walk(list, trail) {
|
|
134
|
+
for (const node of list) {
|
|
135
|
+
if (node.id === id) {
|
|
136
|
+
path.push(...trail);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
if (node.children && walk(node.children, [...trail, node.id])) return true;
|
|
140
|
+
}
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
walk(nodes, []);
|
|
144
|
+
return path;
|
|
145
|
+
}
|
|
146
|
+
export {
|
|
147
|
+
ancestorIds,
|
|
148
|
+
checkStateOf,
|
|
149
|
+
fileIcon,
|
|
150
|
+
formatModified,
|
|
151
|
+
formatSize,
|
|
152
|
+
sortNodes,
|
|
153
|
+
subtreeIds,
|
|
154
|
+
subtreeSize
|
|
155
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -25,6 +25,10 @@ export { default as LpDrawer } from './components/LpDrawer.vue';
|
|
|
25
25
|
export { default as LpDropdownMenu } from './components/LpDropdownMenu.vue';
|
|
26
26
|
export type { MenuItem } from './components/LpDropdownMenu.vue';
|
|
27
27
|
export { default as LpEmptyState } from './components/LpEmptyState.vue';
|
|
28
|
+
export { default as LpFileTree } from './components/LpFileTree.vue';
|
|
29
|
+
export type { FileTreeSummary } from './components/LpFileTree.vue';
|
|
30
|
+
export type { CheckState, FileNode } from './components/fileTree';
|
|
31
|
+
export { ancestorIds, checkStateOf, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize, } from './components/fileTree';
|
|
28
32
|
export { default as LpFormField } from './components/LpFormField.vue';
|
|
29
33
|
export { default as LpIcon } from './components/LpIcon.vue';
|
|
30
34
|
export { default as LpInfraNode } from './components/LpInfraNode.vue';
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { _ as _6 } from "./chunks/LpBadge-CXzBPnwO.js";
|
|
|
7
7
|
import { _ as _7 } from "./chunks/LpBreadcrumbs-B7Aqatzw.js";
|
|
8
8
|
import { _ as _8 } from "./chunks/LpButton-5VXXCjwF.js";
|
|
9
9
|
import { _ as _9 } from "./chunks/LpCalendar-B7ZL0ty3.js";
|
|
10
|
-
import { _ as _10 } from "./chunks/LpCard-
|
|
10
|
+
import { _ as _10 } from "./chunks/LpCard-BmrTvWOe.js";
|
|
11
11
|
import { _ as _11 } from "./chunks/LpCheckbox-BO0zuuPh.js";
|
|
12
12
|
import { _ as _12 } from "./chunks/LpCodeBlock-CSiOSPs8.js";
|
|
13
13
|
import { default as default2 } from "./components/LpCommandPalette.vue.js";
|
|
@@ -19,45 +19,47 @@ import { _ as _17 } from "./chunks/LpDivider-CUX46KR0.js";
|
|
|
19
19
|
import { _ as _18 } from "./chunks/LpDrawer-6n5Hd-iF.js";
|
|
20
20
|
import { _ as _19 } from "./chunks/LpDropdownMenu-DJpoqRCb.js";
|
|
21
21
|
import { _ as _20 } from "./chunks/LpEmptyState-CrfyRJUG.js";
|
|
22
|
-
import { _ as _21 } from "./chunks/
|
|
23
|
-
import {
|
|
24
|
-
import { _ as
|
|
25
|
-
import { _ as
|
|
26
|
-
import { _ as
|
|
27
|
-
import { _ as
|
|
28
|
-
import { _ as
|
|
29
|
-
import { _ as
|
|
30
|
-
import { _ as
|
|
31
|
-
import { _ as
|
|
32
|
-
import { _ as
|
|
33
|
-
import { _ as
|
|
34
|
-
import { _ as
|
|
22
|
+
import { _ as _21 } from "./chunks/LpFileTree-0Ko_uj8q.js";
|
|
23
|
+
import { ancestorIds, checkStateOf, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
|
|
24
|
+
import { _ as _22 } from "./chunks/LpFormField-Bn-ZwC6z.js";
|
|
25
|
+
import { _ as _23 } from "./chunks/LpIcon-CCnX5_2j.js";
|
|
26
|
+
import { _ as _24 } from "./chunks/LpInfraNode-C_PHcthC.js";
|
|
27
|
+
import { _ as _25 } from "./chunks/LpInput-BauZRyzm.js";
|
|
28
|
+
import { _ as _26 } from "./chunks/LpLink-DHwOEp4e.js";
|
|
29
|
+
import { _ as _27 } from "./chunks/LpLogViewer-BBgaY38i.js";
|
|
30
|
+
import { _ as _28 } from "./chunks/LpModal-B9CVVC5U.js";
|
|
31
|
+
import { _ as _29 } from "./chunks/LpNotificationBell-B9VHks_D.js";
|
|
32
|
+
import { _ as _30 } from "./chunks/LpNumberField-C5ar-OwE.js";
|
|
33
|
+
import { _ as _31 } from "./chunks/LpOtpInput-DqaT0Z75.js";
|
|
34
|
+
import { _ as _32 } from "./chunks/LpPagination-CeGuNe_q.js";
|
|
35
|
+
import { _ as _33 } from "./chunks/LpPasswordInput-DIHFw4u0.js";
|
|
36
|
+
import { _ as _34 } from "./chunks/LpPhoneInput-LQvVFGMw.js";
|
|
35
37
|
import { flagEmoji, loadCountries, matchCountryByValue } from "./components/countries.js";
|
|
36
|
-
import { _ as
|
|
37
|
-
import { _ as
|
|
38
|
-
import { _ as
|
|
39
|
-
import { _ as
|
|
40
|
-
import { _ as
|
|
41
|
-
import { _ as
|
|
42
|
-
import { _ as
|
|
43
|
-
import { _ as
|
|
44
|
-
import { _ as
|
|
45
|
-
import { _ as
|
|
46
|
-
import { _ as
|
|
47
|
-
import { _ as
|
|
48
|
-
import { _ as
|
|
49
|
-
import { _ as
|
|
50
|
-
import { _ as
|
|
51
|
-
import { _ as
|
|
52
|
-
import { _ as
|
|
53
|
-
import { _ as
|
|
38
|
+
import { _ as _35 } from "./chunks/LpPopover-8268UmlC.js";
|
|
39
|
+
import { _ as _36 } from "./chunks/LpProgress-BhI0IbjC.js";
|
|
40
|
+
import { _ as _37 } from "./chunks/LpRadio-CL-pI0_O.js";
|
|
41
|
+
import { _ as _38 } from "./chunks/LpRadioGroup-B4yDTmi6.js";
|
|
42
|
+
import { _ as _39 } from "./chunks/LpScrollArea-BtnZCCBT.js";
|
|
43
|
+
import { _ as _40 } from "./chunks/LpSegmented-BmpanyAo.js";
|
|
44
|
+
import { _ as _41 } from "./chunks/LpSelect-DznhPEWX.js";
|
|
45
|
+
import { _ as _42 } from "./chunks/LpServiceNode-Dc-Ut5RS.js";
|
|
46
|
+
import { _ as _43 } from "./chunks/LpSidebar-tZ2z-PnM.js";
|
|
47
|
+
import { _ as _44 } from "./chunks/LpSkeleton-eSFIo4kD.js";
|
|
48
|
+
import { _ as _45 } from "./chunks/LpSlider-B1SF3pRV.js";
|
|
49
|
+
import { _ as _46 } from "./chunks/LpStat-CdbEFOvn.js";
|
|
50
|
+
import { _ as _47 } from "./chunks/LpStepper-5dFTrW21.js";
|
|
51
|
+
import { _ as _48 } from "./chunks/LpSwitch-v6fnccSM.js";
|
|
52
|
+
import { _ as _49 } from "./chunks/LpTable-CzHVcr3v.js";
|
|
53
|
+
import { _ as _50 } from "./chunks/LpTableOfContents-CjvxPMpU.js";
|
|
54
|
+
import { _ as _51 } from "./chunks/LpTabs-D7aTVPOb.js";
|
|
55
|
+
import { _ as _52 } from "./chunks/LpTextarea-CRAkhemZ.js";
|
|
54
56
|
import { p as presets, a as parseTheme, s as serializeTheme } from "./chunks/LpThemeSwitcher-BgWwfkxs.js";
|
|
55
|
-
import { D, _ as
|
|
56
|
-
import { _ as
|
|
57
|
-
import { _ as
|
|
58
|
-
import { _ as
|
|
59
|
-
import { _ as
|
|
60
|
-
import { _ as
|
|
57
|
+
import { D, _ as _53, b, c, d, e, f, l, g, h, n, r, t, i, u, v } from "./chunks/LpThemeSwitcher-BgWwfkxs.js";
|
|
58
|
+
import { _ as _54 } from "./chunks/LpTilt-DuyKbpkA.js";
|
|
59
|
+
import { _ as _55 } from "./chunks/LpToaster-gDB1EaU3.js";
|
|
60
|
+
import { _ as _56 } from "./chunks/LpTooltip-CIwoRCag.js";
|
|
61
|
+
import { _ as _57 } from "./chunks/LpTopologyCanvas-DVwyQfKa.js";
|
|
62
|
+
import { _ as _58 } from "./chunks/LpUptimeBar-CB366k0O.js";
|
|
61
63
|
import { deserializeLayout, serializeLayout } from "./layout/tree.js";
|
|
62
64
|
import { addLeaf, addTab, countBlocks, countLeaves, makeLayout, moveLeaf, removeBlock, removeLeaf, reorderTab, resizeAt, setActiveTab } from "./layout/tree.js";
|
|
63
65
|
import { blockTitle, defineBlocks } from "./layout/registry.js";
|
|
@@ -118,58 +120,64 @@ export {
|
|
|
118
120
|
_18 as LpDrawer,
|
|
119
121
|
_19 as LpDropdownMenu,
|
|
120
122
|
_20 as LpEmptyState,
|
|
121
|
-
_21 as
|
|
122
|
-
_22 as
|
|
123
|
-
_23 as
|
|
124
|
-
_24 as
|
|
125
|
-
_25 as
|
|
126
|
-
_26 as
|
|
127
|
-
_27 as
|
|
128
|
-
_28 as
|
|
129
|
-
_29 as
|
|
130
|
-
_30 as
|
|
131
|
-
_31 as
|
|
132
|
-
_32 as
|
|
133
|
-
_33 as
|
|
134
|
-
_34 as
|
|
135
|
-
_35 as
|
|
136
|
-
_36 as
|
|
137
|
-
_37 as
|
|
138
|
-
_38 as
|
|
139
|
-
_39 as
|
|
140
|
-
_40 as
|
|
141
|
-
_41 as
|
|
142
|
-
_42 as
|
|
143
|
-
_43 as
|
|
144
|
-
_44 as
|
|
145
|
-
_45 as
|
|
146
|
-
_46 as
|
|
147
|
-
_47 as
|
|
148
|
-
_48 as
|
|
149
|
-
_49 as
|
|
150
|
-
_50 as
|
|
151
|
-
_51 as
|
|
152
|
-
_52 as
|
|
153
|
-
_53 as
|
|
154
|
-
_54 as
|
|
155
|
-
_55 as
|
|
156
|
-
_56 as
|
|
157
|
-
_57 as
|
|
123
|
+
_21 as LpFileTree,
|
|
124
|
+
_22 as LpFormField,
|
|
125
|
+
_23 as LpIcon,
|
|
126
|
+
_24 as LpInfraNode,
|
|
127
|
+
_25 as LpInput,
|
|
128
|
+
_26 as LpLink,
|
|
129
|
+
_27 as LpLogViewer,
|
|
130
|
+
_28 as LpModal,
|
|
131
|
+
_29 as LpNotificationBell,
|
|
132
|
+
_30 as LpNumberField,
|
|
133
|
+
_31 as LpOtpInput,
|
|
134
|
+
_32 as LpPagination,
|
|
135
|
+
_33 as LpPasswordInput,
|
|
136
|
+
_34 as LpPhoneInput,
|
|
137
|
+
_35 as LpPopover,
|
|
138
|
+
_36 as LpProgress,
|
|
139
|
+
_37 as LpRadio,
|
|
140
|
+
_38 as LpRadioGroup,
|
|
141
|
+
_39 as LpScrollArea,
|
|
142
|
+
_40 as LpSegmented,
|
|
143
|
+
_41 as LpSelect,
|
|
144
|
+
_42 as LpServiceNode,
|
|
145
|
+
_43 as LpSidebar,
|
|
146
|
+
_44 as LpSkeleton,
|
|
147
|
+
_45 as LpSlider,
|
|
148
|
+
_46 as LpStat,
|
|
149
|
+
_47 as LpStepper,
|
|
150
|
+
_48 as LpSwitch,
|
|
151
|
+
_49 as LpTable,
|
|
152
|
+
_50 as LpTableOfContents,
|
|
153
|
+
_51 as LpTabs,
|
|
154
|
+
_52 as LpTextarea,
|
|
155
|
+
_53 as LpThemeSwitcher,
|
|
156
|
+
_54 as LpTilt,
|
|
157
|
+
_55 as LpToaster,
|
|
158
|
+
_56 as LpTooltip,
|
|
159
|
+
_57 as LpTopologyCanvas,
|
|
160
|
+
_58 as LpUptimeBar,
|
|
158
161
|
UI_CONFIG_VERSION,
|
|
159
162
|
addLeaf,
|
|
160
163
|
addTab,
|
|
161
164
|
b as amber,
|
|
165
|
+
ancestorIds,
|
|
162
166
|
c as applyTheme,
|
|
163
167
|
d as applyThemeWithTransition,
|
|
164
168
|
blockTitle,
|
|
165
169
|
e as bootstrapTheme,
|
|
170
|
+
checkStateOf,
|
|
166
171
|
countBlocks,
|
|
167
172
|
countLeaves,
|
|
168
173
|
f as dark,
|
|
169
174
|
defineBlocks,
|
|
170
175
|
defineTheme,
|
|
171
176
|
deserializeLayout,
|
|
177
|
+
fileIcon,
|
|
172
178
|
flagEmoji,
|
|
179
|
+
formatModified,
|
|
180
|
+
formatSize,
|
|
173
181
|
l as leavepulse,
|
|
174
182
|
g as light,
|
|
175
183
|
h as lime,
|
|
@@ -190,6 +198,9 @@ export {
|
|
|
190
198
|
serializeLayout,
|
|
191
199
|
serializeTheme,
|
|
192
200
|
setActiveTab,
|
|
201
|
+
sortNodes,
|
|
202
|
+
subtreeIds,
|
|
203
|
+
subtreeSize,
|
|
193
204
|
t as themeToCssRule,
|
|
194
205
|
i as themeToCssVars,
|
|
195
206
|
useInputFilter,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leavepulse/ui",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "LeavePulse token-driven Vue component kit.",
|
|
6
6
|
"repository": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"./dist/*": "./dist/*"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
|
34
|
-
"registry": "https://
|
|
34
|
+
"registry": "https://registry.npmjs.org"
|
|
35
35
|
},
|
|
36
36
|
"sideEffects": [
|
|
37
37
|
"**/*.css",
|