Deliver role-aware shell (sidebar, breadcrumbs, quick search, tables, detail/create layouts), locale-ready pages, shared backend/feature docs, and Vercel project config so HR, finance, and members can demo against typed mocks. Co-authored-by: Cursor <cursoragent@cursor.com>
1.7 KiB
1.7 KiB
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.