diff --git a/docs/pr-assets/antigravity-accounts-en.png b/docs/pr-assets/antigravity-accounts-en.png new file mode 100644 index 0000000000..0077d5d7db Binary files /dev/null and b/docs/pr-assets/antigravity-accounts-en.png differ diff --git a/docs/pr-assets/antigravity-accounts-ko.png b/docs/pr-assets/antigravity-accounts-ko.png new file mode 100644 index 0000000000..a4b53d9d3e Binary files /dev/null and b/docs/pr-assets/antigravity-accounts-ko.png differ diff --git a/docs/pr-assets/antigravity-accounts-redesign.png b/docs/pr-assets/antigravity-accounts-redesign.png new file mode 100644 index 0000000000..0077d5d7db Binary files /dev/null and b/docs/pr-assets/antigravity-accounts-redesign.png differ diff --git a/docs/pr-assets/antigravity-accounts-ru.png b/docs/pr-assets/antigravity-accounts-ru.png new file mode 100644 index 0000000000..e85c520eff Binary files /dev/null and b/docs/pr-assets/antigravity-accounts-ru.png differ diff --git a/docs/pr-assets/antigravity-accounts-zh.png b/docs/pr-assets/antigravity-accounts-zh.png new file mode 100644 index 0000000000..b118d775d9 Binary files /dev/null and b/docs/pr-assets/antigravity-accounts-zh.png differ diff --git a/docs/pr-assets/antigravity-collapsed-rails.png b/docs/pr-assets/antigravity-collapsed-rails.png new file mode 100644 index 0000000000..d35476d8e1 Binary files /dev/null and b/docs/pr-assets/antigravity-collapsed-rails.png differ diff --git a/docs/pr-assets/antigravity-compact-view.png b/docs/pr-assets/antigravity-compact-view.png new file mode 100644 index 0000000000..0ec5489f19 Binary files /dev/null and b/docs/pr-assets/antigravity-compact-view.png differ diff --git a/docs/pr-assets/antigravity-filter-dropdown.png b/docs/pr-assets/antigravity-filter-dropdown.png new file mode 100644 index 0000000000..92470dfda9 Binary files /dev/null and b/docs/pr-assets/antigravity-filter-dropdown.png differ diff --git a/docs/pr-assets/cockpit-choice-modal.png b/docs/pr-assets/cockpit-choice-modal.png new file mode 100644 index 0000000000..913fa3733d Binary files /dev/null and b/docs/pr-assets/cockpit-choice-modal.png differ diff --git a/gui/public/provider-icons/cockpit-tools.png b/gui/public/provider-icons/cockpit-tools.png new file mode 100644 index 0000000000..729eaaae86 Binary files /dev/null and b/gui/public/provider-icons/cockpit-tools.png differ diff --git a/gui/src/App.tsx b/gui/src/App.tsx index 489cb4e7f6..cf8d02ce86 100644 --- a/gui/src/App.tsx +++ b/gui/src/App.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState } from "react"; +import { useCallback, useEffect, useRef, useState } from "react"; import { useKeyedClientResource } from "./client-resource"; import Dashboard from "./pages/Dashboard"; import Providers from "./pages/Providers"; @@ -157,6 +157,23 @@ export default function App() { // Narrow screens: the sidebar becomes an off-canvas drawer behind a hamburger toggle. const [navOpen, setNavOpen] = useState(false); + const [sidebarCollapsed, setSidebarCollapsed] = useState(() => { + try { + return localStorage.getItem("ocx_sidebar_collapsed") === "true"; + } catch { + return false; + } + }); + + const toggleSidebarCollapsed = useCallback(() => { + setSidebarCollapsed(prev => { + const next = !prev; + try { + localStorage.setItem("ocx_sidebar_collapsed", String(next)); + } catch { /* ignore */ } + return next; + }); + }, []); const menuBtnRef = useRef(null); const sidebarRef = useRef(null); const navWasOpen = useRef(false); @@ -284,7 +301,7 @@ export default function App() { ); return ( -
+
{/* inert while the drawer is open: keeps focus and assistive tech inside the drawer */}
{navOpen &&
setNavOpen(false)} aria-hidden="true" />} -