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>
42 lines
1.7 KiB
Markdown
42 lines
1.7 KiB
Markdown
# 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.
|