From d6cef95c4b9175e983b8db7773ff5dec9dd530da Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Mon, 23 Mar 2026 15:19:52 +0100 Subject: [PATCH] fix(sidebar): dynamic collapse label, favicon fallback, escape key, remove setTimeout hack --- components/dashboard/Sidebar.tsx | 49 ++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/components/dashboard/Sidebar.tsx b/components/dashboard/Sidebar.tsx index 41a35e5..8cbf35a 100644 --- a/components/dashboard/Sidebar.tsx +++ b/components/dashboard/Sidebar.tsx @@ -112,9 +112,10 @@ function Label({ children, collapsed }: { children: React.ReactNode; collapsed: // ─── Site Picker ──────────────────────────────────────────── -function SitePicker({ sites, siteId, collapsed, onExpand, onCollapse, wasCollapsed }: { +function SitePicker({ sites, siteId, collapsed, onExpand, onCollapse, wasCollapsed, pickerOpenCallback }: { sites: Site[]; siteId: string; collapsed: boolean onExpand: () => void; onCollapse: () => void; wasCollapsed: React.MutableRefObject + pickerOpenCallback: React.MutableRefObject<(() => void) | null> }) { const [open, setOpen] = useState(false) const [search, setSearch] = useState('') @@ -157,9 +158,8 @@ function SitePicker({ sites, siteId, collapsed, onExpand, onCollapse, wasCollaps onClick={() => { if (collapsed) { wasCollapsed.current = true + pickerOpenCallback.current = () => setOpen(true) onExpand() - // Open picker after sidebar expands - setTimeout(() => setOpen(true), 220) } else { setOpen(!open) } @@ -178,7 +178,11 @@ function SitePicker({ sites, siteId, collapsed, onExpand, onCollapse, wasCollaps onError={() => setFaviconFailed(true)} /> - ) : null} + ) : ( + + {currentSite?.name?.charAt(0).toUpperCase() || '?'} + + )}