From da443d2fb263ecaf90320809b1bb2fc8a4f65b20 Mon Sep 17 00:00:00 2001 From: Guilhem Date: Fri, 23 Oct 2026 14:50:31 +0200 Subject: [PATCH] feat: manage and create folders from the home tree view (#11943) * feat: manage and create folders from the home tree view * fix: drop empty folders under a kind filter, gate manage on visibility * fix: show the tree in a folders-only workspace, record created folder * fix: address review nits on the home folder menu * fix: record created folder ownership, offer folder in empty-state menu --- .../components/home/CreateActionsMenu.svelte | 34 +++++++++++++-- .../src/lib/components/home/ItemsList.svelte | 41 ++++++++++++++++++- .../lib/components/home/TreeOwnerRow.svelte | 32 +++++++++++++-- .../src/lib/components/home/TreeView.svelte | 35 +++++++++++++++- .../lib/components/home/TreeViewRoot.svelte | 25 ++++++++--- .../home/WorkspaceEmptyState.svelte | 12 +++++- 6 files changed, 161 insertions(+), 18 deletions(-) diff --git a/frontend/src/lib/components/home/CreateActionsMenu.svelte b/frontend/src/lib/components/home/CreateActionsMenu.svelte index 72b75b82e1..9b8db55066 100644 --- a/frontend/src/lib/components/home/CreateActionsMenu.svelte +++ b/frontend/src/lib/components/home/CreateActionsMenu.svelte @@ -16,8 +16,10 @@ Workflow, Import, Store, - PanelLeftClose + PanelLeftClose, + Folder } from 'lucide-svelte' + import MenuItem from '$lib/components/meltComponents/MenuItem.svelte' import BarsStaggered from '$lib/components/icons/BarsStaggered.svelte' import DbtIcon from '$lib/components/icons/DbtIcon.svelte' import { PythonIcon, TypeScriptIcon } from '$lib/components/common/languageIcons' @@ -48,9 +50,17 @@ * serve both this menu and the empty state's own link. */ onImportHubProject?: () => void + /** Opens the host's folder drawer. The entry is offered only when this is set. */ + onCreateFolder?: () => void } - let { trigger, triggerElement, source = 'toolbar', onImportHubProject }: Props = $props() + let { + trigger, + triggerElement, + source = 'toolbar', + onImportHubProject, + onCreateFolder + }: Props = $props() type Variant = { label: string @@ -713,8 +723,26 @@ {/if} {/each} - +
+ {#if onCreateFolder} + + highlightOption(undefined)} + onClick={() => onCreateFolder()} + > +
+ +
+ + Folder + +
+ {/if}