From f864076da1e0781278152f48ba6aa71720e5e38b Mon Sep 17 00:00:00 2001 From: diogobaltazar Date: Sun, 22 Mar 2026 22:57:32 +0000 Subject: [PATCH 1/3] feat(web): icon-only command bar, toggle-to-close panes, exclusive-pane rule - Remove text labels from all dock-button, dock-subaction, and overlay-icon-button elements; rely on title/aria-label for accessibility - Remove Close ghost-buttons from sync pane and settings pane sheet-actions (both connected and disconnected states) - Remove "Close URL import" overlay-icon-button from url-import-toolbar - Remove "Exit note editor" dock-button from note-editor command-bar branch - Sync and settings dock buttons now toggle their respective panes open/close - Opening any right-side pane (sync, settings, URL import, notes/note-editor) closes whichever other is already open - Connect and Disconnect buttons in settings pane become icon-only with aria-label/title - Add .ghost-button.icon-only CSS rule for square icon pills - Browse and URL import dock-subaction buttons made icon-only Closes #30 Co-Authored-By: Claude Sonnet 4.6 --- src/move37/web/src/App.css | 13 +++++++ src/move37/web/src/App.jsx | 71 +++++++++++++------------------------- 2 files changed, 37 insertions(+), 47 deletions(-) diff --git a/src/move37/web/src/App.css b/src/move37/web/src/App.css index a4d8330..df5bc64 100644 --- a/src/move37/web/src/App.css +++ b/src/move37/web/src/App.css @@ -104,6 +104,19 @@ font: 700 0.7rem/1 "IBM Plex Mono", "Courier New", monospace; } +.ghost-button.icon-only { + width: 1.9rem; + min-height: 1.9rem; + padding: 0; + display: grid; + place-items: center; +} + +.ghost-button.icon-only svg { + width: 1rem; + height: 1rem; +} + .topbar-actions { position: fixed; left: calc(50% - 3rem); diff --git a/src/move37/web/src/App.jsx b/src/move37/web/src/App.jsx index d269dab..46356b4 100644 --- a/src/move37/web/src/App.jsx +++ b/src/move37/web/src/App.jsx @@ -2464,6 +2464,9 @@ export default function App() { } function openUrlImportPopover() { + setSyncModalOpen(false); + setSettingsModalOpen(false); + closeLeftPanel(); setImportPopoverMode("url"); setIsImportMenuExpanded(false); } @@ -2509,6 +2512,8 @@ export default function App() { setIsImportMenuExpanded(false); setIsModeMenuExpanded(false); setSettingsModalOpen(false); + setImportPopoverMode(null); + closeLeftPanel(); resetSyncState(); setSyncModalOpen(true); } @@ -2540,6 +2545,8 @@ export default function App() { setIsImportMenuExpanded(false); setIsModeMenuExpanded(false); setSyncModalOpen(false); + setImportPopoverMode(null); + closeLeftPanel(); setSettingsError(""); setSettingsModalOpen(true); } @@ -2929,6 +2936,8 @@ export default function App() { } function openDraftNoteWorkspace() { + setSyncModalOpen(false); + setSettingsModalOpen(false); stopViewportTween(); setContextMenu(null); setSelectedId(null); @@ -3527,15 +3536,6 @@ export default function App() { > - ) : null} {selected && selected.kind !== "note" && !focusNodeId ? ( @@ -3689,7 +3689,7 @@ export default function App() { -