{ "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": "side-navigation", "classification": "planned-pattern", "priority": "P1", "referenceSources": ["launcher", "engine"], "expectedPackage": "@nodedc/ui-react", "dependsOn": ["glass-surface", "button", "status-badge"], "requiredBehavior": ["sections", "active item", "optional nested groups", "compact viewport"], "reasonNotBaseline": "Inspector accordion is implemented; application-level navigation requires a separate route-aware contract." }, { "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": "media-source-field", "classification": "planned-pattern", "priority": "P2", "referenceSources": ["launcher", "seo"], "expectedPackage": "@nodedc/ui-react", "dependsOn": ["field", "button", "glass-surface"], "requiredBehavior": ["preview", "source picker", "validation", "clear/replace"], "reasonNotBaseline": "File and storage integration remains application-specific and needs adapter slots." }, { "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." } ] }