export type AuditItem = { id: string; label: string; source: string; states: readonly string[]; judgement?: string; }; export type AuditGroup = { id: "foundations" | "controls" | "surfaces" | "authored-content"; label: string; items: readonly AuditItem[]; }; const STATIC = ["default"] as const; const INTERACTIVE = ["default", "hover", "active", "focus", "disabled"] as const; const ASYNC = ["loading", "empty", "error", "ready"] as const; export const AUDIT_INVENTORY: readonly AuditGroup[] = [ { id: "foundations", label: "Foundations", items: [ { id: "shared-adoption", label: "One foundation, gradual adoption", source: "apps/web/src/design-audit/adoption.tsx", states: ["shared-foundation", "audit-field-select"], }, { id: "colours", label: "Colour roles", source: "packages/visuals/theme.css", states: STATIC, }, { id: "typography", label: "Typography", source: "packages/visuals/theme.css", states: STATIC, }, { id: "spacing", label: "Spacing", source: "packages/visuals/theme.css", states: STATIC }, { id: "radii", label: "Radii", source: "packages/visuals/theme.css", states: STATIC }, { id: "shadows", label: "Elevation", source: "packages/visuals/theme.css", states: STATIC }, { id: "icons", label: "Icons", source: "apps/web/src/assets/icons", states: ["default", "active", "disabled"], judgement: "Confirm the compact, default, and emphasis size roles.", }, { id: "icon-label", label: "Icon labels", source: "packages/visuals/src/ui/icon-label.tsx", states: ["neutral", "success", "warning", "danger"], }, { id: "badge", label: "Badges", source: "packages/visuals/src/ui/badge.tsx", states: ["neutral", "success", "warning", "danger"], }, { id: "sparkline", label: "Sparklines", source: "packages/visuals/src/ui/sparkline.tsx", states: ["neutral", "success", "warning", "danger"], }, { id: "mini-bars", label: "Mini bars", source: "packages/visuals/src/ui/mini-bars.tsx", states: ["neutral", "success", "warning", "danger"], }, { id: "progress-bar", label: "Progress bars", source: "packages/visuals/src/ui/progress-bar.tsx", states: ["zero", "in-progress", "complete"], }, { id: "presentation-table", label: "Presentation tables", source: "packages/visuals/src/ui/table.tsx", states: ["plain", "contained", "narrow-overflow"], }, ], }, { id: "controls", label: "Controls", items: [ { id: "buttons", label: "Buttons", source: "apps/web/src/theme.css", states: INTERACTIVE }, { id: "icon-buttons", label: "Icon buttons", source: "apps/web/src/theme.css", states: INTERACTIVE, }, { id: "links", label: "Links", source: "apps/web/src/theme.css", states: INTERACTIVE }, { id: "fields", label: "Fields", source: "apps/web/src/theme.css", states: INTERACTIVE }, { id: "selections", label: "Choices and selections", source: "apps/web/src/theme.css", states: ["default", "selected", "focus", "disabled"], }, { id: "tabs", label: "Tabs", source: "packages/editor/src/widgets/tabs.tsx", states: ["default", "selected", "focus", "overflow"], }, { id: "menus", label: "Menus", source: "apps/web/src/document-actions-menu.tsx", states: ["closed", "open", "focus", "disabled"], }, { id: "dropdowns", label: "Dropdowns", source: "apps/web/src/document-picker.tsx", states: ["closed", "open", "selected", "loading", "error"], }, ], }, { id: "surfaces", label: "Application surfaces", items: [ { id: "interactive-document-actions", label: "Interactive document actions", source: "apps/web/src/design-audit/interactive.tsx", states: ["closed", "menu-open", "dialog-open", "error", "archived"], }, { id: "dialogs", label: "Dialogs", source: "apps/web/src/navigation-dialog.tsx", states: ["open", "busy", "destructive", "error"], }, { id: "lists", label: "Lists", source: "apps/web/src/document-picker.tsx", states: ["default", "hover", "selected", "empty"], }, { id: "navigation", label: "Navigation", source: "apps/web/src/project-sidebar.tsx", states: ["default", "current", "ancestor", "archived", "loading"], }, { id: "chat", label: "Conversation", source: "apps/web/src/chat/chat.tsx", states: ["member", "planner", "tool", "busy", "error"], }, { id: "workflow-runs", label: "Workflow runs", source: "apps/web/src/chat/run-card.tsx", states: ["running", "concurrent", "ended"], }, { id: "identity", label: "Identity and collaboration", source: "packages/editor/src/face.tsx", states: ["avatar-loading", "editing-question"], }, { id: "decisions", label: "Decisions", source: "packages/editor/src/decisions.tsx", states: ["unanswered", "answered", "resolved", "orphaned", "empty"], }, { id: "resolved-comments", label: "Resolved comments", source: "packages/editor/src/comments.tsx", states: ["resolved", "deliberately-empty", "orphaned"], }, { id: "loading", label: "Loading", source: "apps/web/src/hosted.tsx", states: ASYNC }, { id: "empty", label: "Empty states", source: "apps/web/src/repository-picker.tsx", states: ["first-use", "no-results", "unavailable"], }, { id: "errors", label: "Errors", source: "apps/web/src/terminal-alert.tsx", states: ["inline", "terminal", "recoverable"], }, ], }, { id: "authored-content", label: "Authored content", items: [ { id: "callouts", label: "Callouts", source: "packages/editor/src/widgets/callout.tsx", states: ["note", "tip", "important", "warning", "danger", "focus"], }, { id: "research", label: "Research", source: "packages/editor/src/widgets/research.tsx", states: ["question", "queued", "running", "failed", "cancelled", "ready"], }, { id: "code", label: "Code blocks", source: "packages/editor/src/widgets/code-view.tsx", states: ["plain", "named", "collapsed", "editing"], }, { id: "diff", label: "Diff blocks", source: "packages/editor/src/widgets/code-view.tsx", states: ["valid", "invalid", "collapsed"], }, { id: "diagram", label: "Diagrams", source: "packages/editor/src/widgets/code-view.tsx", states: ["rendered", "source", "invalid"], }, { id: "formula", label: "Formulae", source: "packages/editor/src/widgets/render-blocks.tsx", states: ["inline", "block", "source"], }, { id: "image", label: "Images", source: "packages/editor/src/widgets/image.tsx", states: ["loaded", "unavailable", "missing-alt"], }, { id: "table", label: "Tables", source: "packages/editor/src/table/chrome.tsx", states: ["default", "selected-cell", "toolbar", "overflow"], }, ], }, ];