From e156a9a7c85466c8a53a21c8aa12282ee371ecee Mon Sep 17 00:00:00 2001 From: Jahvon Dockery Date: Thu, 2 Oct 2025 12:02:23 -0400 Subject: [PATCH] wip: desktop sidebar refactor --- desktop/public/icon.png | Bin 0 -> 42756 bytes desktop/src/components/PageWrapper.tsx | 2 +- .../src/layout/AppShell/AppShell.module.css | 3 + desktop/src/layout/AppShell/AppShell.tsx | 9 +- desktop/src/layout/Sidebar/Sidebar.module.css | 55 ++++-- desktop/src/layout/Sidebar/Sidebar.tsx | 183 +++++++++++++----- 6 files changed, 190 insertions(+), 62 deletions(-) create mode 100644 desktop/public/icon.png diff --git a/desktop/public/icon.png b/desktop/public/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f54af5bd2bd53d851bb2347257dbb8b8b4a5c9b0 GIT binary patch literal 42756 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 o(~D+K$wWNo<>TUmc~h;XrRc6@`}c1p { if (hasError) { @@ -33,7 +34,7 @@ export function AppShell({ children }: AppShellProps) { return ( - + setCollapsed((c) => !c)} /> @@ -62,7 +63,7 @@ export function AppShell({ children }: AppShellProps) { {hasError.message} ) : ( -
+
{children} {isLoading && (
void; +} -export function Sidebar() { +export function Sidebar({ collapsed, onToggle }: SidebarProps) { const [location, setLocation] = useLocation(); + const { config, selectedWorkspace } = useAppContext(); + const currentWorkspaceName = selectedWorkspace || config?.currentWorkspace || "—"; + const currentNamespace = config?.currentNamespace || "—"; const navigateToWorkspaces = useCallback(() => { setLocation(`/workspaces`); @@ -39,12 +74,30 @@ export function Sidebar() { }, [setLocation]); return ( -
- - flow - - - + + + + + {collapsed ? : } + + + flow + + + + + } + active={location.startsWith("/favorites")} + variant="filled" + onClick={navigateToWorkspaces} + /> } @@ -60,45 +113,83 @@ export function Sidebar() { variant="filled" onClick={navigateToExecutables} /> + + + + {collapsed ? ( + + + + + + + + + + + + + ) : ( - } - active={location.startsWith("/logs")} - variant="filled" - onClick={navigateToLogs} - /> + - } - variant="filled" - childrenOffset={28} - > - - - - - } - active={location.startsWith("/settings")} - variant="filled" - onClick={navigateToSettings} - /> - + + + Context + + + + Workspace + {currentWorkspaceName} + + + Namespace + {currentNamespace} + + + + + + + + - -
+ + }> + Vault + + }> + Cache Store + + }> + Templates + + } + > + Logs + + + + + + + )} + + ); }