# Feature: Quick search / command directory Keyboard-friendly portal navigation from the top bar (Cmd/Ctrl+K). **Workspace:** `/Users/kirukib/Desktop/Yaltopia Project/Gishen-B2B` ## Surfaces | Location | Control | |----------|---------| | Portal topbar | Search trigger (desktop) / search icon (mobile) | | Global shortcut | `⌘K` / `Ctrl+K` opens the directory dialog | ## Implementation | Path | Role | |------|------| | `src/lib/nav/quick-directory.ts` | **Canonical directory** — ids, label keys, hrefs, keywords, roles, groups | | `src/components/layout/quick-search.tsx` | Dialog UI: filter, arrow keys, Enter navigate, Esc close | | `src/components/layout/app-topbar.tsx` | Wires `QuickSearch` into the top bar | | `src/messages/en.json` / `am.json` | `quickSearch.*` strings | Role visibility uses `roleAllows` from `src/lib/auth/session.ts` (same SUPER_USER bypass pattern as `src/lib/auth/nav.ts`). ## Standing rule **When you add a portal route or primary create action, add an entry to `QUICK_DIRECTORY` in `src/lib/nav/quick-directory.ts`.** Reuse `nav.*` label keys when the item mirrors sidebar nav; use `quickSearch.actions.*` for create/import actions. Update en + am message files for any new keys. Do not leave orphan routes out of the directory — this is the maintainable “command map” for the portal. ## Groups | Group | Typical entries | |-------|-----------------| | `navigation` | Dashboard, org, departments, members, packages, migration | | `create` | `/…/new`, import members | | `finance` | Finance, statements, approvals | | `member` | My benefits, orders, prescriptions | | `settings` | Verification | Dynamic detail URLs (`/members/[id]`, etc.) are intentionally omitted; users open the list then the record.