107 lines
4.9 KiB
JSON
107 lines
4.9 KiB
JSON
{
|
|
"schemaVersion": "1.0.0",
|
|
"purpose": "Known reusable UI inventory that is recorded but not yet promised as a stable package export.",
|
|
"candidates": [
|
|
{
|
|
"id": "calendar-popover",
|
|
"classification": "planned-primitive",
|
|
"priority": "P1",
|
|
"referenceSources": ["launcher", "task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["dropdown", "button", "field"],
|
|
"requiredBehavior": ["portal", "locale-aware labels", "single date", "date range", "keyboard navigation"],
|
|
"reasonNotBaseline": "Current Launcher and Task Manager implementations must be reconciled before one API is declared canonical."
|
|
},
|
|
{
|
|
"id": "profile-menu",
|
|
"classification": "planned-pattern",
|
|
"priority": "P1",
|
|
"referenceSources": ["launcher", "task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["dropdown", "button", "status-badge"],
|
|
"requiredBehavior": ["avatar trigger", "identity summary", "role/workspace switch", "logout action"],
|
|
"reasonNotBaseline": "Identity and role data contracts differ between Hub and Ops and must remain application-owned."
|
|
},
|
|
{
|
|
"id": "action-dropdown",
|
|
"classification": "planned-pattern",
|
|
"priority": "P1",
|
|
"referenceSources": ["task-manager", "launcher"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["dropdown"],
|
|
"requiredBehavior": ["commands", "disabled rows", "danger row", "optional groups", "keyboard navigation"],
|
|
"reasonNotBaseline": "Floating behavior is stable; command-row API still needs validation against Ops consumers."
|
|
},
|
|
{
|
|
"id": "data-table",
|
|
"classification": "planned-pattern",
|
|
"priority": "P1",
|
|
"referenceSources": ["launcher", "task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["button", "select", "status-badge", "field"],
|
|
"requiredBehavior": ["toolbar", "responsive overflow", "row actions", "editable cells", "loading", "empty state"],
|
|
"reasonNotBaseline": "The library should own presentation and interaction slots, not adopt Launcher entity schemas or Plane table models."
|
|
},
|
|
{
|
|
"id": "avatar-stack",
|
|
"classification": "planned-primitive",
|
|
"priority": "P1",
|
|
"referenceSources": ["engine", "task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["dropdown"],
|
|
"requiredBehavior": ["overflow count", "presence", "picker mode", "fallback initials"],
|
|
"reasonNotBaseline": "Engine picker behavior and Task Manager presence semantics must not be coupled accidentally."
|
|
},
|
|
{
|
|
"id": "service-rail-card",
|
|
"classification": "product-pattern",
|
|
"priority": "P2",
|
|
"referenceSources": ["launcher"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["glass-surface", "status-badge", "button"],
|
|
"requiredBehavior": ["ambient media", "access status", "selected state", "open/request action"],
|
|
"reasonNotBaseline": "Likely reusable for product catalogs, but current contract is tightly connected to Launcher service data."
|
|
},
|
|
{
|
|
"id": "work-item-card",
|
|
"classification": "product-pattern",
|
|
"priority": "P2",
|
|
"referenceSources": ["task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["glass-surface", "avatar-stack", "status-badge", "action-dropdown"],
|
|
"requiredBehavior": ["selected state", "drag state", "assignees", "dates", "quick actions"],
|
|
"reasonNotBaseline": "The visual pattern is mature, but task-domain fields must be separated from the reusable card shell."
|
|
},
|
|
{
|
|
"id": "toast",
|
|
"classification": "missing-primitive",
|
|
"priority": "P2",
|
|
"referenceSources": ["task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["status-badge", "button"],
|
|
"requiredBehavior": ["stack", "timeout", "persistent error", "action", "screen-reader announcement"],
|
|
"reasonNotBaseline": "No cross-application contract has been audited yet."
|
|
},
|
|
{
|
|
"id": "tooltip",
|
|
"classification": "missing-primitive",
|
|
"priority": "P2",
|
|
"referenceSources": ["launcher", "task-manager", "engine"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["dropdown"],
|
|
"requiredBehavior": ["hover", "focus", "delay", "viewport placement"],
|
|
"reasonNotBaseline": "Needs a small dedicated accessibility contract rather than reuse of an application tooltip."
|
|
},
|
|
{
|
|
"id": "empty-loading-error",
|
|
"classification": "planned-pattern",
|
|
"priority": "P2",
|
|
"referenceSources": ["launcher", "seo", "task-manager"],
|
|
"expectedPackage": "@nodedc/ui-react",
|
|
"dependsOn": ["button", "status-badge"],
|
|
"requiredBehavior": ["empty message", "retry", "loading progress", "fatal error"],
|
|
"reasonNotBaseline": "Copy and domain actions vary; the layout contract still needs examples from all product families."
|
|
}
|
|
]
|
|
}
|