From e761ae40a40a0cbb84be298ac9a27a7a12fca92f Mon Sep 17 00:00:00 2001 From: shankar0123 Date: Thu, 14 May 2026 15:27:23 +0000 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20Phase=203=20Information=20Arc?= =?UTF-8?q?hitecture=20+=20Search=20=E2=80=94=20close=20UX-H1=20+=20FE-H2?= =?UTF-8?q?=20+=20UX-M5=20+=20UX-H6=20+=20FE-L4;=20FE-M6=20deferred?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 3 of the frontend-design audit: information architecture + search. Layout.tsx rewritten once for BOTH grouped-sidebar (UX-H1) AND lucide- react icon migration (FE-H2). Breadcrumbs primitive added + wired into PageHeader. cmd+k command palette mounted globally via cmdk. FE-M6 (drop unsafe-inline from CSP style-src) deferred — the audit's framing was incomplete. New / changed ============= web/src/components/Layout.tsx (rewrite — UX-H1 + FE-H2 + FE-L4) Pre: flat 31-item nav array with literal SVG path-string icons. Post: 7 semantic groups (Inventory / Trust / Delivery / People / Notify / Access / Audit) of 31 NavLinks total; lucide-react icon components replace every path string (27 named imports); collapsible per-group state persisted to localStorage (`certctl:nav:collapsed-groups`); aria-expanded / aria-controls on each group header; the existing Setup-guide button and Sign- out button kept verbatim. Logout icon swapped from inline SVG to lucide `LogOut`. web/src/components/Breadcrumbs.tsx (new — UX-M5) Walks the current pathname via useLocation() + a static pathSegmentLabels map. Renders