@xyne/workflow-ui 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/components/automations/AutomationListView.d.ts.map +1 -1
  2. package/dist/components/automations/AutomationListView.js +68 -31
  3. package/dist/components/automations/AutomationListView.js.map +1 -1
  4. package/dist/components/browser/EntryGrid.d.ts +17 -0
  5. package/dist/components/browser/EntryGrid.d.ts.map +1 -0
  6. package/dist/components/browser/EntryGrid.js +90 -0
  7. package/dist/components/browser/EntryGrid.js.map +1 -0
  8. package/dist/components/browser/EntryList.d.ts +19 -0
  9. package/dist/components/browser/EntryList.d.ts.map +1 -0
  10. package/dist/components/browser/EntryList.js +75 -0
  11. package/dist/components/browser/EntryList.js.map +1 -0
  12. package/dist/components/browser/FolderCard.d.ts +6 -0
  13. package/dist/components/browser/FolderCard.d.ts.map +1 -0
  14. package/dist/components/browser/FolderCard.js +8 -0
  15. package/dist/components/browser/FolderCard.js.map +1 -0
  16. package/dist/components/browser/MoveDialog.d.ts +16 -0
  17. package/dist/components/browser/MoveDialog.d.ts.map +1 -0
  18. package/dist/components/browser/MoveDialog.js +102 -0
  19. package/dist/components/browser/MoveDialog.js.map +1 -0
  20. package/dist/components/browser/NameDialog.d.ts +16 -0
  21. package/dist/components/browser/NameDialog.d.ts.map +1 -0
  22. package/dist/components/browser/NameDialog.js +76 -0
  23. package/dist/components/browser/NameDialog.js.map +1 -0
  24. package/dist/components/browser/SearchField.d.ts +11 -0
  25. package/dist/components/browser/SearchField.d.ts.map +1 -0
  26. package/dist/components/browser/SearchField.js +14 -0
  27. package/dist/components/browser/SearchField.js.map +1 -0
  28. package/dist/components/browser/ViewToggle.d.ts +8 -0
  29. package/dist/components/browser/ViewToggle.d.ts.map +1 -0
  30. package/dist/components/browser/ViewToggle.js +10 -0
  31. package/dist/components/browser/ViewToggle.js.map +1 -0
  32. package/dist/components/browser/constants.d.ts +4 -0
  33. package/dist/components/browser/constants.d.ts.map +1 -0
  34. package/dist/components/browser/constants.js +4 -0
  35. package/dist/components/browser/constants.js.map +1 -0
  36. package/dist/components/browser/types.d.ts +29 -0
  37. package/dist/components/browser/types.d.ts.map +1 -0
  38. package/dist/components/browser/types.js +2 -0
  39. package/dist/components/browser/types.js.map +1 -0
  40. package/dist/components/browser/utils.d.ts +8 -0
  41. package/dist/components/browser/utils.d.ts.map +1 -0
  42. package/dist/components/browser/utils.js +36 -0
  43. package/dist/components/browser/utils.js.map +1 -0
  44. package/dist/components/builder/v3/StepConfigPanel.js +3 -3
  45. package/dist/components/builder/v3/StepConfigPanel.js.map +1 -1
  46. package/dist/components/execution/ApprovalsView.d.ts +7 -0
  47. package/dist/components/execution/ApprovalsView.d.ts.map +1 -0
  48. package/dist/components/execution/ApprovalsView.js +133 -0
  49. package/dist/components/execution/ApprovalsView.js.map +1 -0
  50. package/dist/components/index.d.ts +4 -0
  51. package/dist/components/index.d.ts.map +1 -1
  52. package/dist/components/index.js +3 -0
  53. package/dist/components/index.js.map +1 -1
  54. package/dist/components/workflows/WorkflowBrowser.d.ts +14 -0
  55. package/dist/components/workflows/WorkflowBrowser.d.ts.map +1 -0
  56. package/dist/components/workflows/WorkflowBrowser.js +300 -0
  57. package/dist/components/workflows/WorkflowBrowser.js.map +1 -0
  58. package/dist/hooks/use-approval-count.d.ts +3 -0
  59. package/dist/hooks/use-approval-count.d.ts.map +1 -0
  60. package/dist/hooks/use-approval-count.js +29 -0
  61. package/dist/hooks/use-approval-count.js.map +1 -0
  62. package/dist/hooks/use-folder-list.d.ts +2 -1
  63. package/dist/hooks/use-folder-list.d.ts.map +1 -1
  64. package/dist/hooks/use-folder-list.js +7 -3
  65. package/dist/hooks/use-folder-list.js.map +1 -1
  66. package/dist/index.d.ts +5 -2
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +6 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/styles.css +1 -1
  71. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AutomationListView.d.ts","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAgB,kBAAkB,CAAC,EACjC,gBAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,uBAAuB,+BA0RzB"}
1
+ {"version":3,"file":"AutomationListView.d.ts","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8BD,wBAAgB,kBAAkB,CAAC,EACjC,gBAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,uBAAuB,+BAgSzB"}
@@ -11,6 +11,22 @@ import { AutomationCard } from './AutomationCard.js';
11
11
  import { CreateWorkflowDialog } from './CreateWorkflowDialog.js';
12
12
  /** Workflows per page in the list view. */
13
13
  const PAGE_SIZE = 25;
14
+ function buildTree(folders) {
15
+ const map = new Map();
16
+ for (const f of folders)
17
+ map.set(f.id, { folder: f, children: [] });
18
+ const roots = [];
19
+ for (const node of map.values()) {
20
+ const pid = node.folder.parentId;
21
+ if (pid && map.has(pid)) {
22
+ map.get(pid).children.push(node);
23
+ }
24
+ else {
25
+ roots.push(node);
26
+ }
27
+ }
28
+ return roots;
29
+ }
14
30
  // ─── Component ────────────────────────────────────────────────────────────────
15
31
  export function AutomationListView({ onSelectWorkflow, onRunWorkflow, className, }) {
16
32
  const client = useWorkflowClient();
@@ -19,38 +35,51 @@ export function AutomationListView({ onSelectWorkflow, onRunWorkflow, className,
19
35
  const counts = useWorkflowCounts();
20
36
  const folderList = useFolderList();
21
37
  const { folders } = folderList;
22
- // Total for the current view drives pagination (from the cheap counts query).
23
38
  const total = selectedFolderId === 'all'
24
39
  ? counts.total
25
40
  : (counts.byFolder[selectedFolderId]?.total ?? 0);
26
41
  const pageCount = Math.max(1, Math.ceil(total / PAGE_SIZE));
27
42
  const currentPage = Math.min(page, pageCount - 1);
28
- // Folder-scoped + paginated server query.
29
43
  const { workflows, isLoading, error, refetch } = useWorkflowList({
30
44
  ...(selectedFolderId === 'all' ? {} : { folderId: selectedFolderId }),
31
45
  limit: PAGE_SIZE,
32
46
  offset: currentPage * PAGE_SIZE,
33
47
  });
34
- // Reset to the first page whenever the folder changes.
35
48
  useEffect(() => { setPage(0); }, [selectedFolderId]);
36
49
  const [showCreateDialog, setShowCreateDialog] = useState(false);
37
- const [addingFolder, setAddingFolder] = useState(false);
38
- const [newFolderName, setNewFolderName] = useState('');
39
50
  const [editingFolderId, setEditingFolderId] = useState(null);
40
51
  const [editingName, setEditingName] = useState('');
41
52
  const [railError, setRailError] = useState(null);
42
- const handleNewFolder = async () => {
53
+ // Track which folder is having a new child added: null = top-level new folder
54
+ const [addingChildOf, setAddingChildOf] = useState(undefined);
55
+ const [newFolderName, setNewFolderName] = useState('');
56
+ // Collapsed state: set of folder IDs that are collapsed
57
+ const [collapsed, setCollapsed] = useState(new Set());
58
+ const toggleCollapsed = (id) => {
59
+ setCollapsed((prev) => {
60
+ const next = new Set(prev);
61
+ if (next.has(id))
62
+ next.delete(id);
63
+ else
64
+ next.add(id);
65
+ return next;
66
+ });
67
+ };
68
+ const handleNewFolder = async (parentId) => {
43
69
  const name = newFolderName.trim();
44
70
  if (!name) {
45
- setAddingFolder(false);
71
+ setAddingChildOf(undefined);
46
72
  return;
47
73
  }
48
74
  setRailError(null);
49
75
  try {
50
- const folder = await folderList.create(name);
76
+ const folder = await folderList.create(name, parentId);
51
77
  setNewFolderName('');
52
- setAddingFolder(false);
78
+ setAddingChildOf(undefined);
53
79
  setSelectedFolderId(folder.id);
80
+ // Expand parent so new folder is visible
81
+ if (parentId)
82
+ setCollapsed((prev) => { const next = new Set(prev); next.delete(parentId); return next; });
54
83
  }
55
84
  catch (err) {
56
85
  setRailError(err instanceof Error ? err.message : String(err));
@@ -81,23 +110,14 @@ export function AutomationListView({ onSelectWorkflow, onRunWorkflow, className,
81
110
  };
82
111
  const handleMove = async (workflowId, folderId) => {
83
112
  await client.workflows.update(workflowId, { folderId });
84
- refetch(); // current folder's grid
85
- counts.refetch(); // rail badges
113
+ refetch();
114
+ counts.refetch();
86
115
  };
87
116
  const selectedFolderName = selectedFolderId === 'all'
88
117
  ? null
89
118
  : folders.find((f) => f.id === selectedFolderId)?.name;
90
- return (_jsxs("section", { className: cn('flex h-full min-h-0 bg-[var(--wui-bg)]', className), children: [_jsxs("aside", { className: "flex h-full w-60 shrink-0 flex-col border-r border-[var(--wui-border)]", children: [_jsx("div", { className: "px-4 pt-4 pb-2 text-[11px] font-bold uppercase tracking-widest text-[var(--wui-fg-muted)]", children: "Folders" }), _jsxs("nav", { className: "flex-1 space-y-0.5 overflow-y-auto px-2 pb-2", children: [_jsx(FolderRailItem, { kind: "all", label: "All workflows", count: counts.total, active: selectedFolderId === 'all', onClick: () => setSelectedFolderId('all') }), folders.map((f) => {
91
- const count = counts.byFolder[f.id]?.total ?? 0;
92
- return (_jsx(FolderRailItem, { kind: "folder", label: f.name, count: count, active: selectedFolderId === f.id, editing: editingFolderId === f.id, editingValue: editingName, onEditingChange: setEditingName, onCommitEdit: () => void handleRename(f.id), onStartEdit: () => { setEditingFolderId(f.id); setEditingName(f.name); }, deletable: count === 0, onDelete: () => void handleDelete(f.id), onClick: () => setSelectedFolderId(f.id) }, f.id));
93
- })] }), _jsxs("div", { className: "border-t border-[var(--wui-border)] p-2", children: [addingFolder ? (_jsx("input", { autoFocus: true, type: "text", value: newFolderName, onChange: (e) => setNewFolderName(e.target.value), onBlur: () => void handleNewFolder(), placeholder: "Folder name\u2026", className: cn('w-full rounded-md border border-indigo-300 bg-[var(--wui-bg)] px-2.5 py-1.5 text-[13px]', 'outline-none focus:ring-2 focus:ring-indigo-100'), onKeyDown: (e) => {
94
- if (e.key === 'Enter')
95
- void handleNewFolder();
96
- else if (e.key === 'Escape') {
97
- setNewFolderName('');
98
- setAddingFolder(false);
99
- }
100
- } })) : (_jsxs("button", { type: "button", onClick: () => { setRailError(null); setAddingFolder(true); }, className: cn('flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-[13px] font-medium', 'text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)] transition-colors'), children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "New folder"] })), railError && (_jsx("p", { className: "mt-1.5 px-1 text-[11px] text-red-500", children: railError }))] })] }), _jsxs("div", { className: "flex h-full min-w-0 flex-1 flex-col", children: [_jsxs("header", { className: "flex items-center gap-3 border-b border-[var(--wui-border)] px-6 py-4", children: [_jsx("h2", { className: "text-base font-semibold text-[var(--wui-fg)]", children: selectedFolderName ?? 'All workflows' }), !isLoading && !error && (_jsx("span", { className: cn('inline-flex h-5 min-w-[1.25rem] items-center justify-center rounded-full px-1.5', 'bg-[var(--wui-bg-subtle)] text-xs font-medium text-[var(--wui-fg-muted)]', 'border border-[var(--wui-border)]'), children: total })), _jsx("div", { className: "ml-auto", children: _jsxs("button", { onClick: () => setShowCreateDialog(true), className: cn('inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5', 'bg-indigo-500 text-[13px] font-medium text-white', 'hover:bg-indigo-600 transition-colors'), children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "Create"] }) })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 py-6", children: isLoading ? (_jsx("div", { className: "flex h-40 items-center justify-center", children: _jsx(LoadingSpinner, { size: "lg" }) })) : error ? (_jsx("div", { className: "flex h-40 items-center justify-center text-sm text-[var(--wui-fg-muted)]", children: "Failed to load workflows" })) : total === 0 ? (_jsx(EmptyState, { title: selectedFolderName ? `No workflows in ${selectedFolderName}` : 'No workflows yet' })) : (_jsxs(_Fragment, { children: [_jsx("ul", { role: "list", className: "overflow-hidden rounded-lg border border-[var(--wui-border)]", children: workflows.map((workflow) => (_jsx("li", { children: _jsx(AutomationCard, { layout: "row", workflow: workflow, onClick: () => onSelectWorkflow(workflow.id), onRun: onRunWorkflow ? () => onRunWorkflow(workflow.id) : undefined, folders: folders, onMove: (folderId) => void handleMove(workflow.id, folderId) }) }, workflow.id))) }), _jsxs("div", { className: "mt-4 flex items-center justify-between text-xs text-[var(--wui-fg-muted)]", children: [_jsx("span", { children: total === 0
119
+ const folderTree = buildTree(folders);
120
+ return (_jsxs("section", { className: cn('flex h-full min-h-0 bg-[var(--wui-bg)]', className), children: [_jsxs("aside", { className: "flex h-full w-60 shrink-0 flex-col border-r border-[var(--wui-border)]", children: [_jsx("div", { className: "px-4 pt-4 pb-2 text-[11px] font-bold uppercase tracking-widest text-[var(--wui-fg-muted)]", children: "Folders" }), _jsxs("nav", { className: "flex-1 space-y-0.5 overflow-y-auto px-2 pb-2", children: [_jsx(FolderRailItem, { kind: "all", label: "All workflows", count: counts.total, active: selectedFolderId === 'all', onClick: () => setSelectedFolderId('all') }), folderTree.map((node) => (_jsx(FolderTreeNode, { node: node, depth: 0, selectedFolderId: selectedFolderId, collapsed: collapsed, counts: counts.byFolder, editingFolderId: editingFolderId, editingName: editingName, addingChildOf: addingChildOf, newFolderName: newFolderName, onSelect: setSelectedFolderId, onToggleCollapse: toggleCollapsed, onStartEdit: (id, name) => { setEditingFolderId(id); setEditingName(name); }, onCommitEdit: handleRename, onEditingChange: setEditingName, onDelete: handleDelete, onStartAddChild: (parentId) => { setNewFolderName(''); setAddingChildOf(parentId); }, onNewFolderNameChange: setNewFolderName, onCommitNewFolder: handleNewFolder, onCancelNewFolder: () => setAddingChildOf(undefined) }, node.folder.id))), addingChildOf === null && (_jsx(NewFolderInput, { depth: 0, value: newFolderName, onChange: setNewFolderName, onCommit: () => void handleNewFolder(null), onCancel: () => setAddingChildOf(undefined) }))] }), _jsxs("div", { className: "border-t border-[var(--wui-border)] p-2", children: [addingChildOf === undefined ? (_jsxs("button", { type: "button", onClick: () => { setRailError(null); setNewFolderName(''); setAddingChildOf(null); }, className: cn('flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-[13px] font-medium', 'text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)] transition-colors'), children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "New folder"] })) : null, railError && (_jsx("p", { className: "mt-1.5 px-1 text-[11px] text-red-500", children: railError }))] })] }), _jsxs("div", { className: "flex h-full min-w-0 flex-1 flex-col", children: [_jsxs("header", { className: "flex items-center gap-3 border-b border-[var(--wui-border)] px-6 py-4", children: [_jsx("h2", { className: "text-base font-semibold text-[var(--wui-fg)]", children: selectedFolderName ?? 'All workflows' }), !isLoading && !error && (_jsx("span", { className: cn('inline-flex h-5 min-w-[1.25rem] items-center justify-center rounded-full px-1.5', 'bg-[var(--wui-bg-subtle)] text-xs font-medium text-[var(--wui-fg-muted)]', 'border border-[var(--wui-border)]'), children: total })), _jsx("div", { className: "ml-auto", children: _jsxs("button", { onClick: () => setShowCreateDialog(true), className: cn('inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5', 'bg-indigo-500 text-[13px] font-medium text-white', 'hover:bg-indigo-600 transition-colors'), children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "Create"] }) })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 py-6", children: isLoading ? (_jsx("div", { className: "flex h-40 items-center justify-center", children: _jsx(LoadingSpinner, { size: "lg" }) })) : error ? (_jsx("div", { className: "flex h-40 items-center justify-center text-sm text-[var(--wui-fg-muted)]", children: "Failed to load workflows" })) : total === 0 ? (_jsx(EmptyState, { title: selectedFolderName ? `No workflows in ${selectedFolderName}` : 'No workflows yet' })) : (_jsxs(_Fragment, { children: [_jsx("ul", { role: "list", className: "overflow-hidden rounded-lg border border-[var(--wui-border)]", children: workflows.map((workflow) => (_jsx("li", { children: _jsx(AutomationCard, { layout: "row", workflow: workflow, onClick: () => onSelectWorkflow(workflow.id), onRun: onRunWorkflow ? () => onRunWorkflow(workflow.id) : undefined, folders: folders, onMove: (folderId) => void handleMove(workflow.id, folderId) }) }, workflow.id))) }), _jsxs("div", { className: "mt-4 flex items-center justify-between text-xs text-[var(--wui-fg-muted)]", children: [_jsx("span", { children: total === 0
101
121
  ? '0 workflows'
102
122
  : `Showing ${currentPage * PAGE_SIZE + 1}–${currentPage * PAGE_SIZE + workflows.length} of ${total}` }), pageCount > 1 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: () => setPage(Math.max(0, currentPage - 1)), disabled: currentPage <= 0, className: cn('rounded-md border border-[var(--wui-border)] px-2.5 py-1 font-medium', 'hover:bg-[var(--wui-bg-subtle)] transition-colors', currentPage <= 0 && 'opacity-40 cursor-not-allowed'), children: "Prev" }), _jsxs("span", { className: "tabular-nums", children: ["Page ", currentPage + 1, " of ", pageCount] }), _jsx("button", { type: "button", onClick: () => setPage(Math.min(pageCount - 1, currentPage + 1)), disabled: currentPage >= pageCount - 1, className: cn('rounded-md border border-[var(--wui-border)] px-2.5 py-1 font-medium', 'hover:bg-[var(--wui-bg-subtle)] transition-colors', currentPage >= pageCount - 1 && 'opacity-40 cursor-not-allowed'), children: "Next" })] }))] })] })) })] }), showCreateDialog && (_jsx(CreateWorkflowDialog, { folders: folders, defaultFolderId: selectedFolderId === 'all' ? undefined : selectedFolderId, onCreateFolder: folderList.create, onCreated: (workflow) => {
103
123
  setShowCreateDialog(false);
@@ -105,17 +125,34 @@ export function AutomationListView({ onSelectWorkflow, onRunWorkflow, className,
105
125
  onSelectWorkflow(workflow.id);
106
126
  }, onClose: () => setShowCreateDialog(false) }))] }));
107
127
  }
108
- function FolderRailItem({ kind, label, count, active, onClick, editing, editingValue, onEditingChange, onCommitEdit, onStartEdit, deletable, onDelete, }) {
128
+ function FolderTreeNode({ node, depth, selectedFolderId, collapsed, counts, editingFolderId, editingName, addingChildOf, newFolderName, onSelect, onToggleCollapse, onStartEdit, onCommitEdit, onEditingChange, onDelete, onStartAddChild, onNewFolderNameChange, onCommitNewFolder, onCancelNewFolder, }) {
129
+ const { folder, children } = node;
130
+ const count = counts[folder.id]?.total ?? 0;
131
+ const hasChildren = children.length > 0 || addingChildOf === folder.id;
132
+ const isCollapsed = collapsed.has(folder.id);
133
+ return (_jsxs("div", { children: [_jsx(FolderRailItem, { kind: "folder", label: folder.name, count: count, depth: depth, active: selectedFolderId === folder.id, hasChildren: hasChildren, isCollapsed: isCollapsed, editing: editingFolderId === folder.id, editingValue: editingName, onEditingChange: onEditingChange, onCommitEdit: () => onCommitEdit(folder.id), onStartEdit: () => onStartEdit(folder.id, folder.name), deletable: count === 0 && children.length === 0, onDelete: () => onDelete(folder.id), onAddChild: () => onStartAddChild(folder.id), onToggleCollapse: () => onToggleCollapse(folder.id), onClick: () => onSelect(folder.id) }), !isCollapsed && (_jsxs("div", { children: [children.map((child) => (_jsx(FolderTreeNode, { node: child, depth: depth + 1, selectedFolderId: selectedFolderId, collapsed: collapsed, counts: counts, editingFolderId: editingFolderId, editingName: editingName, addingChildOf: addingChildOf, newFolderName: newFolderName, onSelect: onSelect, onToggleCollapse: onToggleCollapse, onStartEdit: onStartEdit, onCommitEdit: onCommitEdit, onEditingChange: onEditingChange, onDelete: onDelete, onStartAddChild: onStartAddChild, onNewFolderNameChange: onNewFolderNameChange, onCommitNewFolder: onCommitNewFolder, onCancelNewFolder: onCancelNewFolder }, child.folder.id))), addingChildOf === folder.id && (_jsx(NewFolderInput, { depth: depth + 1, value: newFolderName, onChange: onNewFolderNameChange, onCommit: () => onCommitNewFolder(folder.id), onCancel: onCancelNewFolder }))] }))] }));
134
+ }
135
+ // ─── Inline new-folder input ──────────────────────────────────────────────────
136
+ function NewFolderInput({ depth, value, onChange, onCommit, onCancel, }) {
137
+ return (_jsx("div", { style: { paddingLeft: `${depth * 12 + 10}px` }, className: "pr-2 py-0.5", children: _jsx("input", { autoFocus: true, type: "text", value: value, onChange: (e) => onChange(e.target.value), onBlur: onCommit, placeholder: "Folder name\u2026", className: cn('w-full rounded-md border border-indigo-300 bg-[var(--wui-bg)] px-2.5 py-1.5 text-[13px]', 'outline-none focus:ring-2 focus:ring-indigo-100'), onKeyDown: (e) => {
138
+ if (e.key === 'Enter')
139
+ onCommit();
140
+ else if (e.key === 'Escape')
141
+ onCancel();
142
+ } }) }));
143
+ }
144
+ function FolderRailItem({ kind, label, count, depth = 0, active, hasChildren, isCollapsed, onClick, onToggleCollapse, onAddChild, editing, editingValue, onEditingChange, onCommitEdit, onStartEdit, deletable, onDelete, }) {
145
+ const indentPx = depth * 12;
109
146
  if (editing) {
110
- return (_jsx("input", { autoFocus: true, value: editingValue ?? '', onChange: (e) => onEditingChange?.(e.target.value), onBlur: () => onCommitEdit?.(), onKeyDown: (e) => {
111
- if (e.key === 'Enter' || e.key === 'Escape')
112
- onCommitEdit?.();
113
- }, className: "w-full rounded-md border border-indigo-300 bg-white px-2 py-1.5 text-[13px] outline-none" }));
147
+ return (_jsx("div", { style: { paddingLeft: `${indentPx}px` }, children: _jsx("input", { autoFocus: true, value: editingValue ?? '', onChange: (e) => onEditingChange?.(e.target.value), onBlur: () => onCommitEdit?.(), onKeyDown: (e) => {
148
+ if (e.key === 'Enter' || e.key === 'Escape')
149
+ onCommitEdit?.();
150
+ }, className: "w-full rounded-md border border-indigo-300 bg-white px-2 py-1.5 text-[13px] outline-none" }) }));
114
151
  }
115
- return (_jsxs("div", { className: cn('group flex items-center gap-2 rounded-md px-2.5 py-1.5 text-[13px] cursor-pointer transition-colors', active
152
+ return (_jsxs("div", { style: { paddingLeft: `${indentPx}px` }, className: cn('group flex items-center gap-1 rounded-md px-2.5 py-1.5 text-[13px] cursor-pointer transition-colors', active
116
153
  ? 'bg-indigo-50 font-semibold text-indigo-700'
117
- : 'text-[var(--wui-fg)] hover:bg-[var(--wui-bg-subtle)]'), onClick: onClick, onDoubleClick: onStartEdit, title: onStartEdit ? 'Double-click to rename' : undefined, children: [_jsx("span", { className: cn('shrink-0', active ? 'text-indigo-500' : 'text-[var(--wui-fg-muted)]'), children: kind === 'all' ? (_jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] })) : (_jsx("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) })) }), _jsx("span", { className: "flex-1 truncate", children: label }), deletable && onDelete && (_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); onDelete(); }, className: "hidden shrink-0 text-[var(--wui-fg-muted)] hover:text-red-500 group-hover:block", "aria-label": `Delete ${label}`, title: "Delete folder", children: _jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M18 6 6 18" }), _jsx("path", { d: "m6 6 12 12" })] }) })), _jsx("span", { className: cn('shrink-0 text-[11px] tabular-nums', active ? 'text-indigo-400' : 'text-[var(--wui-fg-muted)]',
118
- // Hide the count on hover for deletable folders so the × can take its slot.
119
- deletable && 'group-hover:hidden'), children: count })] }));
154
+ : 'text-[var(--wui-fg)] hover:bg-[var(--wui-bg-subtle)]'), onClick: onClick, onDoubleClick: onStartEdit, title: onStartEdit ? 'Double-click to rename' : undefined, children: [kind === 'folder' ? (_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); onToggleCollapse?.(); }, className: cn('shrink-0 rounded p-0.5 transition-colors', hasChildren
155
+ ? 'text-[var(--wui-fg-muted)] hover:text-[var(--wui-fg)] hover:bg-[var(--wui-border)]'
156
+ : 'opacity-0 pointer-events-none'), children: _jsx("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", className: cn('transition-transform', !isCollapsed && 'rotate-90'), children: _jsx("path", { d: "m9 18 6-6-6-6" }) }) })) : (_jsx("span", { className: "w-[15px] shrink-0" })), _jsx("span", { className: cn('shrink-0', active ? 'text-indigo-500' : 'text-[var(--wui-fg-muted)]'), children: kind === 'all' ? (_jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] })) : (_jsx("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) })) }), _jsx("span", { className: "flex-1 truncate", children: label }), _jsxs("span", { className: "hidden shrink-0 items-center gap-0.5 group-hover:flex", children: [onAddChild && (_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); onAddChild(); }, className: "rounded p-0.5 text-[var(--wui-fg-muted)] hover:bg-[var(--wui-border)] hover:text-[var(--wui-fg)]", title: "New subfolder", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }) })), deletable && onDelete && (_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); onDelete(); }, className: "rounded p-0.5 text-[var(--wui-fg-muted)] hover:text-red-500", "aria-label": `Delete ${label}`, title: "Delete folder", children: _jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M18 6 6 18" }), _jsx("path", { d: "m6 6 12 12" })] }) }))] }), _jsx("span", { className: cn('shrink-0 text-[11px] tabular-nums group-hover:hidden', active ? 'text-indigo-400' : 'text-[var(--wui-fg-muted)]'), children: count })] }));
120
157
  }
121
158
  //# sourceMappingURL=AutomationListView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutomationListView.js","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutomationListView.js","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { BrowserEntry, LeadingRenderer } from './types.js';
2
+ type Props = {
3
+ entries: ReadonlyArray<BrowserEntry>;
4
+ onOpen?: (entry: BrowserEntry) => void;
5
+ renderLeading?: LeadingRenderer;
6
+ disableFiles?: boolean;
7
+ disableFolders?: boolean;
8
+ onDelete?: (entry: BrowserEntry) => void;
9
+ onRename?: (entry: BrowserEntry, newName: string) => void;
10
+ onMove?: (entry: BrowserEntry) => void;
11
+ selectedIds?: ReadonlySet<string>;
12
+ onToggleSelect?: (entry: BrowserEntry, index: number, shiftKey: boolean) => void;
13
+ scrollParentRef: React.RefObject<HTMLElement | null>;
14
+ };
15
+ export declare function EntryGrid({ entries, onOpen, renderLeading, disableFiles, disableFolders, onDelete, onRename, onMove, selectedIds, onToggleSelect, scrollParentRef, }: Props): import("react").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=EntryGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryGrid.d.ts","sourceRoot":"","sources":["../../../src/components/browser/EntryGrid.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIhE,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjF,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACtD,CAAC;AAsBF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,MAAM,EACN,aAA8B,EAC9B,YAAoB,EACpB,cAAsB,EACtB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,cAAc,EACd,eAAe,GAChB,EAAE,KAAK,+BA0LP"}
@@ -0,0 +1,90 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FolderSymlink, Pencil, Trash2 } from 'lucide-react';
3
+ import { useEffect, useState } from 'react';
4
+ import { useVirtualizer } from '@tanstack/react-virtual';
5
+ import { cn } from '../shared/cn.js';
6
+ import { ROW_ESTIMATE_GRID_PX } from './constants.js';
7
+ import { defaultLeading, isEntryDisabled, useScrollMargin } from './utils.js';
8
+ function colsFor(width) {
9
+ if (width >= 1280)
10
+ return 5;
11
+ if (width >= 1024)
12
+ return 4;
13
+ if (width >= 640)
14
+ return 3;
15
+ return 2;
16
+ }
17
+ function useResponsiveCols() {
18
+ const [cols, setCols] = useState(() => typeof window === 'undefined' ? 2 : colsFor(window.innerWidth));
19
+ useEffect(() => {
20
+ const update = () => { setCols(colsFor(window.innerWidth)); };
21
+ update();
22
+ window.addEventListener('resize', update);
23
+ return () => { window.removeEventListener('resize', update); };
24
+ }, []);
25
+ return cols;
26
+ }
27
+ export function EntryGrid({ entries, onOpen, renderLeading = defaultLeading, disableFiles = false, disableFolders = false, onDelete, onRename, onMove, selectedIds, onToggleSelect, scrollParentRef, }) {
28
+ const isSelecting = (selectedIds?.size ?? 0) > 0;
29
+ const cols = useResponsiveCols();
30
+ const rowCount = Math.ceil(entries.length / cols);
31
+ const [editingId, setEditingId] = useState(null);
32
+ const [editingValue, setEditingValue] = useState('');
33
+ const startEdit = (e) => {
34
+ setEditingId(e.id);
35
+ setEditingValue(e.name);
36
+ };
37
+ const cancelEdit = () => {
38
+ setEditingId(null);
39
+ setEditingValue('');
40
+ };
41
+ const commitEdit = (e) => {
42
+ const next = editingValue.trim();
43
+ setEditingId(null);
44
+ setEditingValue('');
45
+ if (next && next !== e.name) {
46
+ onRename?.(e, next);
47
+ }
48
+ };
49
+ const { listRef: gridRef, scrollMargin } = useScrollMargin(scrollParentRef);
50
+ const virtualizer = useVirtualizer({
51
+ count: rowCount,
52
+ getScrollElement: () => scrollParentRef.current,
53
+ estimateSize: () => ROW_ESTIMATE_GRID_PX,
54
+ overscan: 3,
55
+ scrollMargin,
56
+ getItemKey: (i) => `row-${String(i)}-c${String(cols)}`,
57
+ });
58
+ return (_jsx("div", { ref: gridRef, role: "list", className: "animate-fade-up", style: { height: `${String(virtualizer.getTotalSize())}px`, position: 'relative' }, children: virtualizer.getVirtualItems().map((virtualRow) => {
59
+ const start = virtualRow.index * cols;
60
+ const rowEntries = entries.slice(start, start + cols);
61
+ return (_jsx("div", { "data-index": virtualRow.index, ref: virtualizer.measureElement, className: "absolute left-0 right-0 grid gap-3 pb-3", style: {
62
+ transform: `translateY(${String(virtualRow.start - virtualizer.options.scrollMargin)}px)`,
63
+ gridTemplateColumns: `repeat(${String(cols)}, minmax(0, 1fr))`,
64
+ }, children: rowEntries.map((e, rowIdx) => {
65
+ const entryIndex = start + rowIdx;
66
+ const intrinsicallyDisabled = isEntryDisabled(e, disableFiles, disableFolders);
67
+ const isEditing = editingId === e.id;
68
+ const disabled = intrinsicallyDisabled || isEditing;
69
+ return (_jsxs("div", { role: "listitem", className: "group relative", children: [_jsxs("button", { type: "button", disabled: disabled, onClick: () => { onOpen?.(e); }, className: cn('flex w-full flex-col items-start gap-3 rounded-2xl border bg-surface-elevated p-4 text-left transition', e.status === 'pending' || e.status === 'processing'
70
+ ? 'animate-pulse border-ring/60 ring-1 ring-ring/25'
71
+ : 'border-border', disabled
72
+ ? 'cursor-default'
73
+ : 'hover:border-ring/40 hover:bg-secondary/60 active:scale-[0.99]', isEditing && 'border-ring/60 ring-1 ring-ring/30'), title: e.name, children: [_jsx("div", { className: "pl-1 pt-1", children: renderLeading(e, 'md') }), _jsxs("span", { className: "flex w-full min-w-0 flex-col gap-0.5", children: [_jsx("span", { className: "flex min-w-0 items-center gap-1.5", children: isEditing ? (_jsx("input", { type: "text", autoFocus: true, value: editingValue, onChange: (ev) => { setEditingValue(ev.target.value); }, onFocus: (ev) => { ev.target.select(); }, onClick: (ev) => { ev.stopPropagation(); }, onMouseDown: (ev) => { ev.stopPropagation(); }, onKeyDown: (ev) => {
74
+ if (ev.key === 'Enter') {
75
+ ev.preventDefault();
76
+ ev.stopPropagation();
77
+ commitEdit(e);
78
+ }
79
+ else if (ev.key === 'Escape') {
80
+ ev.preventDefault();
81
+ ev.stopPropagation();
82
+ cancelEdit();
83
+ }
84
+ }, onBlur: () => { commitEdit(e); }, maxLength: 255, className: "min-w-0 flex-1 truncate rounded-sm border border-ring/50 bg-background px-1.5 py-0.5 text-[13.5px] font-medium text-foreground outline-none focus:border-ring" })) : (_jsx("span", { className: "truncate text-[13.5px] font-medium text-foreground", children: e.name })) }), e.caption ? (_jsx("span", { className: "truncate text-[11.5px] text-muted-foreground", children: e.caption })) : null] })] }), onToggleSelect && (_jsx("button", { type: "button", "aria-label": selectedIds?.has(e.id) ? `Deselect ${e.name}` : `Select ${e.name}`, onClick: (ev) => { ev.stopPropagation(); onToggleSelect(e, entryIndex, ev.shiftKey); }, className: cn('absolute left-2 top-2 flex h-5 w-5 items-center justify-center rounded-md border transition', selectedIds?.has(e.id)
85
+ ? 'border-foreground bg-foreground text-background opacity-100'
86
+ : 'border-border bg-background/80 backdrop-blur-sm', isSelecting ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'), children: selectedIds?.has(e.id) && (_jsx("svg", { viewBox: "0 0 24 24", className: "h-3 w-3", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) })) })), !isEditing && (onRename ?? onDelete ?? onMove) ? (_jsxs("div", { className: "absolute right-2 top-2 flex gap-1 opacity-0 transition group-hover:opacity-100 focus-within:opacity-100", children: [onMove ? (_jsx("button", { type: "button", "aria-label": `Move ${e.name}`, title: "Move", onClick: (ev) => { ev.stopPropagation(); onMove(e); }, className: "grid h-7 w-7 place-items-center rounded-md bg-background/80 text-muted-foreground shadow-sm ring-1 ring-border backdrop-blur-sm transition hover:bg-secondary hover:text-foreground", children: _jsx(FolderSymlink, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })) : null, onRename ? (_jsx("button", { type: "button", "aria-label": `Rename ${e.name}`, title: "Rename", onClick: (ev) => { ev.stopPropagation(); startEdit(e); }, className: "grid h-7 w-7 place-items-center rounded-md bg-background/80 text-muted-foreground shadow-sm ring-1 ring-border backdrop-blur-sm transition hover:bg-secondary hover:text-foreground", children: _jsx(Pencil, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })) : null, onDelete ? (_jsx("button", { type: "button", "aria-label": `Delete ${e.name}`, title: "Delete", onClick: (ev) => { ev.stopPropagation(); onDelete(e); }, className: "grid h-7 w-7 place-items-center rounded-md bg-background/80 text-muted-foreground shadow-sm ring-1 ring-border backdrop-blur-sm transition hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-950/40", children: _jsx(Trash2, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })) : null] })) : null] }, `${e.kind}-${e.id}`));
87
+ }) }, virtualRow.key));
88
+ }) }));
89
+ }
90
+ //# sourceMappingURL=EntryGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryGrid.js","sourceRoot":"","sources":["../../../src/components/browser/EntryGrid.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { BrowserEntry, ColumnDef, LeadingRenderer } from './types.js';
2
+ type Props = {
3
+ entries: ReadonlyArray<BrowserEntry>;
4
+ columns?: ReadonlyArray<ColumnDef>;
5
+ onOpen?: (entry: BrowserEntry) => void;
6
+ nameHeader?: string;
7
+ renderLeading?: LeadingRenderer;
8
+ disableFiles?: boolean;
9
+ disableFolders?: boolean;
10
+ onDelete?: (entry: BrowserEntry) => void;
11
+ onRename?: (entry: BrowserEntry, newName: string) => void;
12
+ onMove?: (entry: BrowserEntry) => void;
13
+ selectedIds?: ReadonlySet<string>;
14
+ onToggleSelect?: (entry: BrowserEntry, index: number, shiftKey: boolean) => void;
15
+ scrollParentRef: React.RefObject<HTMLElement | null>;
16
+ };
17
+ export declare function EntryList({ entries, columns, onOpen, nameHeader, renderLeading, disableFiles, disableFolders, onDelete, onRename, onMove, selectedIds, onToggleSelect, scrollParentRef, }: Props): import("react").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=EntryList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryList.d.ts","sourceRoot":"","sources":["../../../src/components/browser/EntryList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI3E,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACjF,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACtD,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAY,EACZ,MAAM,EACN,UAAmB,EACnB,aAA8B,EAC9B,YAAoB,EACpB,cAAsB,EACtB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,cAAc,EACd,eAAe,GAChB,EAAE,KAAK,+BA8NP"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FolderSymlink, Pencil, Trash2 } from 'lucide-react';
3
+ import { useState } from 'react';
4
+ import { useVirtualizer } from '@tanstack/react-virtual';
5
+ import { cn } from '../shared/cn.js';
6
+ import { DEFAULT_COL_WIDTH, ROW_ESTIMATE_LIST_PX } from './constants.js';
7
+ import { defaultLeading, isEntryDisabled, useScrollMargin } from './utils.js';
8
+ export function EntryList({ entries, columns = [], onOpen, nameHeader = 'Name', renderLeading = defaultLeading, disableFiles = false, disableFolders = false, onDelete, onRename, onMove, selectedIds, onToggleSelect, scrollParentRef, }) {
9
+ const isSelecting = (selectedIds?.size ?? 0) > 0;
10
+ const [editingId, setEditingId] = useState(null);
11
+ const [editingValue, setEditingValue] = useState('');
12
+ const startEdit = (e) => {
13
+ setEditingId(e.id);
14
+ setEditingValue(e.name);
15
+ };
16
+ const cancelEdit = () => {
17
+ setEditingId(null);
18
+ setEditingValue('');
19
+ };
20
+ const commitEdit = (e) => {
21
+ const next = editingValue.trim();
22
+ setEditingId(null);
23
+ setEditingValue('');
24
+ if (next && next !== e.name) {
25
+ onRename?.(e, next);
26
+ }
27
+ };
28
+ const trailingActions = (onMove ? 1 : 0) + (onRename ? 1 : 0) + (onDelete ? 1 : 0);
29
+ const template = [
30
+ '1fr',
31
+ ...columns.map((c) => c.width ?? DEFAULT_COL_WIDTH),
32
+ ...(trailingActions > 0 ? [`${String(trailingActions * 36)}px`] : []),
33
+ ].join(' ');
34
+ const { listRef, scrollMargin } = useScrollMargin(scrollParentRef);
35
+ const virtualizer = useVirtualizer({
36
+ count: entries.length,
37
+ getScrollElement: () => scrollParentRef.current,
38
+ estimateSize: () => ROW_ESTIMATE_LIST_PX,
39
+ overscan: 6,
40
+ scrollMargin,
41
+ getItemKey: (i) => {
42
+ const entry = entries[i];
43
+ return entry ? `${entry.kind}-${entry.id}` : `i-${String(i)}`;
44
+ },
45
+ });
46
+ const virtualRows = virtualizer.getVirtualItems();
47
+ return (_jsxs("div", { className: "animate-fade-up overflow-hidden rounded-2xl border border-border bg-surface-elevated", children: [_jsxs("div", { className: "grid items-center gap-3 border-b border-border bg-surface-muted/60 px-4 py-2 text-[11.5px] font-medium uppercase tracking-wide text-muted-foreground", style: { gridTemplateColumns: template }, children: [_jsx("span", { children: nameHeader }), columns.map((c) => (_jsx("span", { className: c.mdOnly === false ? undefined : 'hidden md:block', children: c.header }, `h-${c.key}`))), trailingActions > 0 ? _jsx("span", { "aria-hidden": true }) : null] }), _jsx("div", { ref: listRef, role: "list", style: { height: `${String(virtualizer.getTotalSize())}px`, position: 'relative' }, children: virtualRows.map((virtualRow) => {
48
+ const e = entries[virtualRow.index];
49
+ if (!e)
50
+ return null;
51
+ const intrinsicallyDisabled = isEntryDisabled(e, disableFiles, disableFolders);
52
+ const isEditing = editingId === e.id;
53
+ const disabled = intrinsicallyDisabled || isEditing;
54
+ return (_jsx("div", { role: "listitem", "data-index": virtualRow.index, ref: virtualizer.measureElement, className: cn('group absolute left-0 right-0', virtualRow.index > 0 && 'border-t border-border'), style: {
55
+ transform: `translateY(${String(virtualRow.start - virtualizer.options.scrollMargin)}px)`,
56
+ }, children: _jsxs("div", { className: cn('grid w-full items-center gap-3 px-4 py-2 transition', (e.status === 'pending' || e.status === 'processing') &&
57
+ 'animate-pulse ring-1 ring-inset ring-ring/30', disabled ? 'cursor-default' : 'hover:bg-secondary/60', isEditing && 'bg-secondary/50'), style: { gridTemplateColumns: template }, title: e.name, children: [_jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [onToggleSelect && (_jsx("button", { type: "button", "aria-label": selectedIds?.has(e.id) ? `Deselect ${e.name}` : `Select ${e.name}`, onClick: (ev) => { ev.stopPropagation(); onToggleSelect(e, virtualRow.index, ev.shiftKey); }, className: cn('flex h-5 w-5 shrink-0 items-center justify-center rounded-md border transition', selectedIds?.has(e.id)
58
+ ? 'border-foreground bg-foreground text-background opacity-100'
59
+ : 'border-border bg-background/80', isSelecting ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'), children: selectedIds?.has(e.id) && (_jsx("svg", { viewBox: "0 0 24 24", className: "h-3 w-3", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) })) })), _jsx("span", { className: "flex-shrink-0 pr-1", children: renderLeading(e, 'sm') }), isEditing ? (_jsx("input", { type: "text", autoFocus: true, value: editingValue, onChange: (ev) => { setEditingValue(ev.target.value); }, onFocus: (ev) => { ev.target.select(); }, onClick: (ev) => { ev.stopPropagation(); }, onMouseDown: (ev) => { ev.stopPropagation(); }, onKeyDown: (ev) => {
60
+ if (ev.key === 'Enter') {
61
+ ev.preventDefault();
62
+ ev.stopPropagation();
63
+ commitEdit(e);
64
+ }
65
+ else if (ev.key === 'Escape') {
66
+ ev.preventDefault();
67
+ ev.stopPropagation();
68
+ cancelEdit();
69
+ }
70
+ }, onBlur: () => { commitEdit(e); }, maxLength: 255, className: "min-w-0 flex-1 truncate rounded-sm border border-ring/50 bg-background px-1.5 py-0.5 text-[13.5px] font-medium text-foreground outline-none focus:border-ring" })) : (_jsx("button", { type: "button", disabled: disabled, onClick: () => { onOpen?.(e); }, className: "flex min-w-0 items-center gap-3 text-left disabled:cursor-default", children: _jsx("span", { className: "truncate text-[13.5px] font-medium text-foreground", children: e.name }) }))] }), columns.map((c) => (_jsx("button", { type: "button", disabled: disabled, onClick: () => { onOpen?.(e); }, className: cn(c.mdOnly === false ? undefined : 'hidden md:block', 'truncate text-left tabular-nums text-[12px] text-muted-foreground disabled:cursor-default'), children: c.render ? c.render(e) : (e.columns?.[c.key] ?? '—') }, `c-${c.key}`))), trailingActions > 0 ? (_jsxs("div", { className: cn('flex items-center justify-end gap-0.5 transition', isEditing
71
+ ? 'pointer-events-none opacity-0'
72
+ : 'opacity-0 group-hover:opacity-100 focus-within:opacity-100'), children: [onMove ? (_jsx("button", { type: "button", "aria-label": `Move ${e.name}`, title: "Move", onClick: (ev) => { ev.stopPropagation(); onMove(e); }, className: "grid h-7 w-7 place-items-center rounded-md text-muted-foreground transition hover:bg-secondary hover:text-foreground", children: _jsx(FolderSymlink, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })) : null, onRename ? (_jsx("button", { type: "button", "aria-label": `Rename ${e.name}`, title: "Rename", onClick: (ev) => { ev.stopPropagation(); startEdit(e); }, className: "grid h-7 w-7 place-items-center rounded-md text-muted-foreground transition hover:bg-secondary hover:text-foreground", children: _jsx(Pencil, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })) : null, onDelete ? (_jsx("button", { type: "button", "aria-label": `Delete ${e.name}`, title: "Delete", onClick: (ev) => { ev.stopPropagation(); onDelete(e); }, className: "grid h-7 w-7 place-items-center rounded-md text-muted-foreground transition hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-950/40", children: _jsx(Trash2, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) })) : null] })) : null] }) }, virtualRow.key));
73
+ }) })] }));
74
+ }
75
+ //# sourceMappingURL=EntryList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryList.js","sourceRoot":"","sources":["../../../src/components/browser/EntryList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkB9E,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,GAAG,EAAE,EACZ,MAAM,EACN,UAAU,GAAG,MAAM,EACnB,aAAa,GAAG,cAAc,EAC9B,YAAY,GAAG,KAAK,EACpB,cAAc,GAAG,KAAK,EACtB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,cAAc,EACd,eAAe,GACT;IACN,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,CAAC,CAAe,EAAQ,EAAE;QAC1C,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnB,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,eAAe,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,CAAe,EAAQ,EAAE;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,eAAe,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG;QACf,KAAK;QACL,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,iBAAiB,CAAC;QACnD,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,cAAc,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,gBAAgB,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO;QAC/C,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAoB;QACxC,QAAQ,EAAE,CAAC;QACX,YAAY;QACZ,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YAChB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IAElD,OAAO,CACL,eAAK,SAAS,EAAC,sFAAsF,aACnG,eACE,SAAS,EAAC,sJAAsJ,EAChK,KAAK,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAExC,yBAAO,UAAU,GAAQ,EACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,eAEE,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,YAE5D,CAAC,CAAC,MAAM,IAHJ,KAAK,CAAC,CAAC,GAAG,EAAE,CAIZ,CACR,CAAC,EACD,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAoB,CAAC,CAAC,CAAC,IAAI,IAC9C,EACN,cACE,GAAG,EAAE,OAAO,EACZ,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,YAEjF,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,CAAC,CAAC;wBAAE,OAAO,IAAI,CAAC;oBACpB,MAAM,qBAAqB,GAAG,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;oBAC/E,MAAM,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,qBAAqB,IAAI,SAAS,CAAC;oBACpD,OAAO,CACL,cAEE,IAAI,EAAC,UAAU,gBACH,UAAU,CAAC,KAAK,EAC5B,GAAG,EAAE,WAAW,CAAC,cAAc,EAC/B,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,wBAAwB,CACjD,EACD,KAAK,EAAE;4BACL,SAAS,EAAE,cAAc,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK;yBAC1F,YAED,eACE,SAAS,EAAE,EAAE,CACX,qDAAqD,EACrD,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC;gCACnD,8CAA8C,EAChD,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,EACrD,SAAS,IAAI,iBAAiB,CAC/B,EACD,KAAK,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EACxC,KAAK,EAAE,CAAC,CAAC,IAAI,aAEb,eAAK,SAAS,EAAC,iCAAiC,aAC7C,cAAc,IAAI,CACjB,iBACE,IAAI,EAAC,QAAQ,gBACD,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAC9E,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC5F,SAAS,EAAE,EAAE,CACX,gFAAgF,EAChF,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gDACpB,CAAC,CAAC,6DAA6D;gDAC/D,CAAC,CAAC,gCAAgC,EACpC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mCAAmC,CAClE,YAEA,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CACzB,cAAK,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,YAC3I,mBAAU,MAAM,EAAC,gBAAgB,GAAG,GAChC,CACP,GACM,CACV,EACD,eAAM,SAAS,EAAC,oBAAoB,YAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,GAAQ,EACnE,SAAS,CAAC,CAAC,CAAC,CACX,gBACE,IAAI,EAAC,MAAM,EACX,SAAS,QACT,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACvD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACxC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAC1C,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAC9C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE;gDAChB,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oDACvB,EAAE,CAAC,cAAc,EAAE,CAAC;oDACpB,EAAE,CAAC,eAAe,EAAE,CAAC;oDACrB,UAAU,CAAC,CAAC,CAAC,CAAC;gDAChB,CAAC;qDAAM,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oDAC/B,EAAE,CAAC,cAAc,EAAE,CAAC;oDACpB,EAAE,CAAC,eAAe,EAAE,CAAC;oDACrB,UAAU,EAAE,CAAC;gDACf,CAAC;4CACH,CAAC,EACD,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChC,SAAS,EAAE,GAAG,EACd,SAAS,EAAC,+JAA+J,GACzK,CACH,CAAC,CAAC,CAAC,CACF,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,SAAS,EAAC,mEAAmE,YAE7E,eAAM,SAAS,EAAC,oDAAoD,YACjE,CAAC,CAAC,IAAI,GACF,GACA,CACV,IACG,EACL,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,iBAEE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,SAAS,EAAE,EAAE,CACX,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAClD,2FAA2F,CAC5F,YAEA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAThD,KAAK,CAAC,CAAC,GAAG,EAAE,CAUV,CACV,CAAC,EACD,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,eACE,SAAS,EAAE,EAAE,CACX,kDAAkD,EAClD,SAAS;wCACP,CAAC,CAAC,+BAA+B;wCACjC,CAAC,CAAC,4DAA4D,CACjE,aAEA,MAAM,CAAC,CAAC,CAAC,CACR,iBACE,IAAI,EAAC,QAAQ,gBACD,QAAQ,CAAC,CAAC,IAAI,EAAE,EAC5B,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrD,SAAS,EAAC,sHAAsH,YAEhI,KAAC,aAAa,IAAC,SAAS,EAAC,aAAa,EAAC,WAAW,EAAE,IAAI,GAAI,GACrD,CACV,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,iBACE,IAAI,EAAC,QAAQ,gBACD,UAAU,CAAC,CAAC,IAAI,EAAE,EAC9B,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxD,SAAS,EAAC,sHAAsH,YAEhI,KAAC,MAAM,IAAC,SAAS,EAAC,aAAa,EAAC,WAAW,EAAE,IAAI,GAAI,GAC9C,CACV,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,iBACE,IAAI,EAAC,QAAQ,gBACD,UAAU,CAAC,CAAC,IAAI,EAAE,EAC9B,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvD,SAAS,EAAC,yIAAyI,YAEnJ,KAAC,MAAM,IAAC,SAAS,EAAC,aAAa,EAAC,WAAW,EAAE,IAAI,GAAI,GAC9C,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,IA5ID,UAAU,CAAC,GAAG,CA6If,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ type Props = {
2
+ size?: 'sm' | 'md';
3
+ };
4
+ export declare function FolderCard({ size }: Props): import("react").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=FolderCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FolderCard.d.ts","sourceRoot":"","sources":["../../../src/components/browser/FolderCard.tsx"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,IAAW,EAAE,EAAE,KAAK,+BAgBhD"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Folder } from 'lucide-react';
3
+ import { cn } from '../shared/cn.js';
4
+ export function FolderCard({ size = 'md' }) {
5
+ const isSm = size === 'sm';
6
+ return (_jsx("div", { "aria-hidden": true, className: cn('flex items-center justify-center', isSm ? 'h-9 w-9' : 'h-14 w-14'), children: _jsx(Folder, { strokeWidth: 1.5, className: cn('text-muted-foreground', isSm ? 'h-5 w-5' : 'h-10 w-10') }) }));
7
+ }
8
+ //# sourceMappingURL=FolderCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FolderCard.js","sourceRoot":"","sources":["../../../src/components/browser/FolderCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAMrC,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,EAAS;IAC/C,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3B,OAAO,CACL,mCAEE,SAAS,EAAE,EAAE,CACX,kCAAkC,EAClC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAC/B,YAED,KAAC,MAAM,IACL,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GACtE,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { BrowserEntry } from './types.js';
2
+ interface FolderRecord {
3
+ id: string;
4
+ name: string;
5
+ parentId?: string | null;
6
+ }
7
+ export interface MoveDialogProps {
8
+ entries: BrowserEntry[];
9
+ folders: FolderRecord[];
10
+ currentParentId: string | null;
11
+ onMove: (targetFolderId: string | null) => void;
12
+ onClose: () => void;
13
+ }
14
+ export declare function MoveDialog({ entries, folders, currentParentId, onMove, onClose }: MoveDialogProps): import("react").ReactPortal | null;
15
+ export {};
16
+ //# sourceMappingURL=MoveDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoveDialog.d.ts","sourceRoot":"","sources":["../../../src/components/browser/MoveDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAiBD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,eAAe,sCA+RjG"}