Adopt the shared interface pattern language
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# Portal Interface Pattern Migration
|
||||
|
||||
Portal is a public-service-style directory for authenticated institutional
|
||||
users. Services owns definitions, Policy/provider capabilities own availability,
|
||||
and Cases, Forms Runtime, or Workflow Engine owns the launch effect. Portal
|
||||
does not import those modules or infer their state.
|
||||
|
||||
| Surface | Task and archetype | Consequence and state contract |
|
||||
| --- | --- | --- |
|
||||
| `/portal` toolbar | Find and filter services | Search and the unavailable-service toggle affect only the directory result. Counts are announced as the result changes. |
|
||||
| Service directory | Public service/entry catalogue | Loading, empty, failed, available, unavailable, and capability-unknown states remain distinct. Only discoverable service metadata is rendered. |
|
||||
| Availability blocker | Explained disabled action | Open remains in its stable action position. The blocker states why launch is unavailable, what must happen, the responsible actor, and the destination. |
|
||||
| Open service | Consequential handoff | Portal re-evaluates the exact service revision with a replay-safe request, then hands off to the provider-owned route. It never reports success without a destination. |
|
||||
|
||||
The directory uses Core buttons, toggle, status, loading, alerts, scrolling,
|
||||
blocker explanation, guarded navigation, and documentation help. Availability
|
||||
is expressed in text as well as color. The responsive toolbar stacks before the
|
||||
service list and every action remains keyboard-operable. Optional owner modules
|
||||
remain capability-based and an unavailable provider does not become a broken
|
||||
link.
|
||||
|
||||
Verification:
|
||||
|
||||
- `npm run test:interface-pattern`
|
||||
- Portal service-directory and manifest tests
|
||||
- the Core TypeScript graph, structural localization audit, theme check, module
|
||||
permutations, and full-product bundle budget
|
||||
Reference in New Issue
Block a user