From 02a9783d4f42885f1e8a8981b7bfb28f3c7a920f Mon Sep 17 00:00:00 2001 From: Yusuf Suleman Date: Wed, 1 Apr 2026 21:25:29 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20brain=20sidebar=20manage=20mode=20?= =?UTF-8?q?=E2=80=94=20add/delete=20folders=20and=20tags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "Manage folders & tags" button at bottom of sidebar - Click to enter manage mode: - + button appears next to Folders/Tags headers - Inline input to type and add new folder/tag - × delete button appears on each item - Delete confirms before removing - "Done" button exits manage mode - Tags/folders created/deleted via taxonomy API - Sidebar refreshes after changes Co-Authored-By: Claude Opus 4.6 (1M context) --- .../lib/pages/brain/AtelierBrainPage.svelte | 93 ++++++++++++++++++- 1 file changed, 88 insertions(+), 5 deletions(-) diff --git a/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte b/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte index 593c6bf..f16d36b 100644 --- a/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte +++ b/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte @@ -341,26 +341,63 @@ - + + {#if showManage && sidebarView === 'folders'} + + {/if} - + + {#if showManage && sidebarView === 'tags'} + + {/if} + + + @@ -761,10 +798,56 @@ .nav-item.active .nav-count { color: #7f5f3d; opacity: 0.8; } .sidebar-separator { height: 1px; background: rgba(35,26,17,0.08); margin: 12px 18px; } + + .sidebar-section-head { + display: flex; align-items: center; justify-content: space-between; + padding: 4px 18px 6px; + } .sidebar-section-label { font-size: 0.68rem; font-weight: 700; text-transform: uppercase; - letter-spacing: 0.14em; color: #8c7b69; padding: 4px 18px 6px; + letter-spacing: 0.14em; color: #8c7b69; } + .sidebar-section-add { + width: 20px; height: 20px; border-radius: 6px; + border: none; background: rgba(35,26,17,0.06); + color: #7f5f3d; font-size: 0.85rem; font-weight: 700; + display: flex; align-items: center; justify-content: center; + cursor: pointer; transition: all 140ms; + } + .sidebar-section-add:hover { background: rgba(35,26,17,0.12); } + + .sidebar-add-row { + display: flex; gap: 4px; padding: 0 12px; margin-bottom: 6px; + } + .sidebar-add-input { + flex: 1; padding: 6px 10px; border-radius: 10px; + border: 1px solid rgba(35,26,17,0.12); background: rgba(255,255,255,0.7); + font-size: 0.8rem; font-family: var(--font); color: #1e1812; outline: none; + } + .sidebar-add-input:focus { border-color: rgba(179,92,50,0.4); } + .sidebar-add-input::placeholder { color: #8c7b69; } + .sidebar-add-go { + padding: 6px 10px; border-radius: 10px; border: none; + background: #1e1812; color: white; font-size: 0.75rem; font-weight: 600; + font-family: var(--font); cursor: pointer; + } + + .nav-delete { + width: 22px; height: 22px; border-radius: 6px; + border: none; background: none; color: #8c7b69; + font-size: 0.9rem; display: flex; align-items: center; justify-content: center; + cursor: pointer; transition: all 140ms; flex-shrink: 0; + } + .nav-delete:hover { background: rgba(220,38,38,0.1); color: #DC2626; } + + .sidebar-manage-row { padding: 0 12px; } + .sidebar-manage-btn { + width: 100%; padding: 8px; border-radius: 10px; + border: 1px solid rgba(35,26,17,0.08); background: none; + font-size: 0.78rem; color: #8c7b69; font-family: var(--font); + cursor: pointer; transition: all 140ms; + } + .sidebar-manage-btn:hover { background: rgba(255,248,241,0.72); color: #1f1811; } .brain-content { flex: 1;