29 lines
2.1 KiB
Markdown
29 lines
2.1 KiB
Markdown
# Search Interface Pattern Migration
|
|
|
|
This is the bounded interface-pattern evidence for GovOPlaN Search. Search owns
|
|
presentation and aggregation; source modules continue to own result data and
|
|
authorization, and optional external engines remain provider capabilities.
|
|
|
|
| Surface | Task and archetype | Consequence and state contract |
|
|
| --- | --- | --- |
|
|
| Title-bar search and anchored overlay | Global or context-sensitive focused lookup | F3 and Ctrl/Cmd+K open the same focus-contained Core dialog. Arrow keys move through the listbox, Enter opens the selected result, Escape closes it and restores focus. |
|
|
| Overlay filters | Progressive-disclosure filter popover | Module and resource filters only narrow authorized results. Active filters stay visible and removable by keyboard. |
|
|
| `/search` | Full-page search/results fallback | Query and filters are URL-stable. Loading, empty, provider-partial, failed, and paged states remain inside the result region. |
|
|
| Result entries | Permission-filtered list-detail destinations | A source module supplies the title, safe summary, breadcrumbs, and destination. Search does not infer or bypass source authorization. |
|
|
| Administration > Search index | Operator table and bounded recovery actions | Operators inspect source coverage and queue health, process pending changes, reconcile module activation, and advance one bounded rebuild page at a time. Quarantined work remains visible. |
|
|
|
|
All surfaces use Core buttons, icon buttons, dialog, alerts, loading, scrolling,
|
|
and documentation-help primitives. Provider diagnostics are partial-state
|
|
evidence: safe results remain usable and a failing provider is identified
|
|
without exposing source data. Search has no destructive action. The responsive
|
|
layout collapses filters and results at narrow widths, and result activation is
|
|
available without pointer interaction.
|
|
|
|
Verification:
|
|
|
|
- `npm run test:search-overlay`
|
|
- `npm run test:interface-pattern`
|
|
- the Core TypeScript graph, structural localization audit, theme check, module
|
|
permutations, and full-product bundle budget
|
|
- Search backend and manifest tests
|