@wazir-dev/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,618 @@
1
+ # Data Display Patterns
2
+
3
+ > **Module Type:** Pattern
4
+ > **Domain:** UI/UX Design
5
+ > **Last Updated:** 2026-03-07
6
+ > **Scope:** Tables, lists, cards, charts, key-value pairs, timelines, stat displays, KPIs
7
+
8
+ ---
9
+
10
+ ## Quick Reference Checklist
11
+
12
+ - [ ] Data type matches display pattern (table for comparison, cards for browsable content, list for scanning)
13
+ - [ ] Sorting available on relevant columns with visible sort indicators
14
+ - [ ] Filtering is contextual and preserves sort, scroll, and selection state
15
+ - [ ] Pagination or virtual scrolling implemented for datasets exceeding 50 items
16
+ - [ ] Empty states, loading states (skeleton shimmer), and error states are designed
17
+ - [ ] Mobile adaptation defined (card view for tables, column priority, horizontal scroll)
18
+ - [ ] Tables use semantic HTML (`<th>`, `scope`, `<caption>`) or ARIA grid roles
19
+ - [ ] Charts include alt text describing the trend/insight, not raw data points
20
+ - [ ] Keyboard navigation works for all interactive data elements
21
+ - [ ] Hover, selection, and focus states are visually distinct
22
+ - [ ] Truncated content has tooltips or expand affordances
23
+ - [ ] Sticky headers and frozen key columns used for wide/long tables
24
+ - [ ] Color is never the sole differentiator (pair with icons, patterns, or text)
25
+ - [ ] Data refresh timestamps visible on dashboards and real-time displays
26
+ - [ ] Export functionality accessible from the data view toolbar
27
+
28
+ ---
29
+
30
+ ## 1. Pattern Anatomy
31
+
32
+ ### 1.1 Data Tables
33
+
34
+ Data tables display structured information in rows and columns, optimized for scanning, comparison, and analysis. They are the workhorse of enterprise and SaaS interfaces.
35
+
36
+ **Structural elements:** Header row (column names + sort affordances, always sticky), data rows (alternating colors or dividers), footer (aggregations or pagination controls), toolbar (search, filter, bulk actions, density toggle, export), selection column (checkbox as first column).
37
+
38
+ **Variants:**
39
+
40
+ | Variant | Use Case | Key Trait |
41
+ |---------|----------|-----------|
42
+ | Standard data table | CRUD, record management | Sortable, filterable, paginated |
43
+ | Comparison table | Feature/product/plan comparison | Fixed first column, highlight differences |
44
+ | Editable table | Spreadsheet-like data entry | Inline cell editing, tab navigation |
45
+ | Tree table | Hierarchical data (file systems) | Expandable/collapsible nested rows |
46
+
47
+ **Column alignment conventions (Ant Design):** Text left-aligned, numbers right-aligned (decimal alignment), status center-aligned (badges/tags), actions right-aligned (last column).
48
+
49
+ **Row density options (Material Design):** Comfortable 52px (occasional use), standard 40-44px (default), compact 32-36px (power users). Provide a density toggle in the table toolbar so users can choose their preferred level.
50
+
51
+ **Table toolbar anatomy (Carbon Design System pattern):**
52
+ ```
53
+ +------------------------------------------------------------------+
54
+ | [Search] [Filter] [Column Config] [Density] [Export] [Refresh] |
55
+ +------------------------------------------------------------------+
56
+ | [ ] | Name | Status | Created | Amount | Actions |
57
+ |-----|------------|-----------|-------------|---------|-----------|
58
+ | [ ] | Alice Doe | Active | 2026-03-01 | $1,200 | ... menu |
59
+ | [ ] | Bob Smith | Pending | 2026-03-03 | $450 | ... menu |
60
+ +------------------------------------------------------------------+
61
+ | Showing 1-25 of 1,247 results | < 1 2 3 ... 50 > | Per page |
62
+ +------------------------------------------------------------------+
63
+ ```
64
+
65
+ **Frozen columns and sticky headers:** For wide tables with many columns, freeze the identifier column (name/ID) on the left so it remains visible during horizontal scroll. Header row should remain sticky during vertical scroll. Both behaviors should work simultaneously. Show a subtle shadow on the frozen column edge to indicate scroll depth.
66
+
67
+ Reference: Ant Design Table (https://ant.design/components/table/), Material Design Data Tables (https://m2.material.io/components/data-tables), Atlassian Dynamic Table (https://atlassian.design/components/dynamic-table/).
68
+
69
+ ### 1.2 Lists
70
+
71
+ **Simple lists:** Single line per item, optional leading element (icon, avatar, checkbox), optional trailing element (action icon, metadata). Best for navigation menus, settings, selections.
72
+
73
+ **Complex lists:** Two-three lines (primary, secondary, metadata), leading avatar/thumbnail, trailing timestamp/status, swipe actions on mobile. Best for email, messages, notifications.
74
+
75
+ **Grouped lists:** Section headers as visual dividers (sticky on scroll). Grouping types: alphabetical (contacts), temporal (today/yesterday/older), categorical (by status/type). Collapsible groups with item counts per section header.
76
+
77
+ **Guidelines:** Max 3 lines before truncation. Primary text 16px medium, secondary 14px regular muted. Touch targets min 48px height on mobile (WCAG 2.5.8).
78
+
79
+ **List item anatomy:**
80
+ ```
81
+ +----------------------------------------------------------+
82
+ | [Avatar] Primary text [Timestamp] |
83
+ | Secondary text (muted) [Status badge] |
84
+ | Tertiary metadata (smallest) |
85
+ +----------------------------------------------------------+
86
+ ```
87
+
88
+ **Virtualized lists:** For lists exceeding 500 items, use windowed rendering (same principle as virtual scrolling in tables). Only render visible items plus a buffer of 5-10 items above and below the viewport. Measure item heights dynamically for variable-height list items.
89
+
90
+ ### 1.3 Cards
91
+
92
+ **Content cards:** Header (title, subtitle), media area, body text (2-3 lines + "read more"), footer (metadata + actions). For blog posts, products, social feeds.
93
+
94
+ **Action cards:** Prominent CTA, minimal content (icon, title, description), hover elevation change. For onboarding steps, quick actions, feature discovery.
95
+
96
+ **Stat cards (KPI cards):** Primary metric (24-48px bold), metric label, trend indicator (arrow + percentage), sparkline, comparison context ("vs. last month"), color coding (green positive, red negative). Anatomy:
97
+ ```
98
+ +----------------------------------+
99
+ | Revenue [sparkline] |
100
+ | $142,580 |
101
+ | +12.3% vs last month [arrow] |
102
+ | Updated 2 min ago |
103
+ +----------------------------------+
104
+ ```
105
+
106
+ **Layout rules:** Min 2 columns mobile, 3-4 desktop. 16-24px gaps. Resting shadow 1-2dp, hover 4-8dp. Max 5 information sections per card.
107
+
108
+ ### 1.4 Charts and Graphs
109
+
110
+ **Chart type selection by purpose:**
111
+
112
+ | Purpose | Recommended | Avoid |
113
+ |---------|------------|-------|
114
+ | Trend over time | Line chart, area chart | Pie chart |
115
+ | Part-to-whole | Stacked bar, donut, treemap | Line chart |
116
+ | Comparison | Grouped bar, horizontal bar | Pie chart (>5 segments) |
117
+ | Distribution | Histogram, box plot | Line chart |
118
+ | Correlation | Scatter plot, bubble chart | Bar chart |
119
+ | Single KPI | Big number + sparkline | Full chart |
120
+ | Ranking | Horizontal bar (sorted) | Vertical bar (unsorted) |
121
+
122
+ **Design principles:**
123
+ - Always label axes with units (e.g., "Revenue (USD)", "Time (months)")
124
+ - Start Y-axis at zero for bar charts; truncated axes distort proportional comparisons
125
+ - Line charts may use non-zero baselines when showing change magnitude, but label clearly
126
+ - Limit pie/donut to 5-7 segments; group remainder as "Other"
127
+ - Prefer direct data labels over detached legends when space permits
128
+ - Provide hover tooltips with crosshair showing exact values and date/category
129
+ - Include "last updated" timestamp for live data charts
130
+ - Animate chart rendering on initial load: 300-500ms staggered entrance per series
131
+ - Use consistent color palette across all charts in a dashboard for the same data series
132
+ - Avoid 3D effects on all chart types; they distort perception of values
133
+
134
+ **Interactive chart features:**
135
+ - Hover tooltip with crosshair showing exact value at the cursor position
136
+ - Click to drill down into a data point or segment (e.g., click a bar to see breakdown)
137
+ - Brush selection (click-and-drag) for zooming into a time range
138
+ - Legend toggles to show/hide individual data series
139
+ - Export as PNG, SVG, or CSV (underlying data)
140
+ - Annotation support: allow users to add notes to specific data points or time ranges
141
+
142
+ Reference: From Data to Viz (https://www.data-to-viz.com/), NNGroup (https://www.nngroup.com/articles/choosing-chart-types/).
143
+
144
+ ### 1.5 Key-Value Pairs
145
+
146
+ **Vertical (top-bottom):** Key above value. Best for narrow containers and mobile. Aligns with natural top-to-bottom scanning.
147
+
148
+ **Horizontal (left-right):** Key on left, value on right. Best for wide containers with consistent-length values. Use fixed key-column width.
149
+
150
+ **Guidelines:** Key label 12-14px uppercase/muted, value 14-16px default color. 4-8px between key and value, 16-24px between pairs. Empty values: "---" or "Not provided". Editable values: hover edit icon, inline editing on click.
151
+
152
+ Reference: Cloudscape Key-Value Pairs (https://cloudscape.design/components/key-value-pairs/).
153
+
154
+ ### 1.6 Timelines
155
+
156
+ **Vertical:** Events top-to-bottom, supports mixed content. Left-aligned or center-aligned (alternating). Most common variant.
157
+
158
+ **Horizontal:** Events left-to-right, for defined stages (order tracking). Limited by viewport width.
159
+
160
+ **Activity feed:** Continuous timestamped stream. For audit logs, change history. Paired with infinite scroll.
161
+
162
+ **Structural elements:** Timeline axis (vertical/horizontal line connecting events), event nodes (circles or icons on the axis), event content (timestamp, title, description), connectors (lines between nodes showing sequence), day/week grouping markers.
163
+
164
+ **Guidelines:** Reverse chronological for activity feeds, chronological for progress/process. Collapse older events with "Show more" to manage length. Distinct node icons or colors for different event types (created, updated, commented, resolved). Relative timestamps ("2h ago") for recent events, absolute ("Mar 7, 2026") for older. On mobile, use left-aligned vertical timeline exclusively (alternating layout wastes horizontal space).
165
+
166
+ ### 1.7 Stat Displays / KPIs
167
+
168
+ **Anatomy:** (1) Metric label, (2) primary value (formatted: "$142.5K"), (3) trend indicator (arrow + percentage), (4) comparison basis ("vs. last month"), (5) sparkline (optional), (6) freshness indicator.
169
+
170
+ **Best practices:** Position highest-priority KPI top-left (F-pattern). Limit 5-10 per dashboard. Semantic color: green=on-track, amber=warning, red=alert. Four context layers: comparison, scope (units + date range), freshness, notes ("Refunds excluded"). Format large numbers with abbreviations (1.23M).
171
+
172
+ ---
173
+
174
+ ## 2. Best-in-Class Examples
175
+
176
+ ### 2.1 Airtable
177
+ Multi-view data display: grid, kanban, gallery, calendar, timeline views from the same dataset. Grid supports inline editing, formula columns, linked records. Gallery transforms rows into cards. Filter bar uses builder pattern (Field + Operator + Value with AND/OR). Interface Designer creates custom dashboards with stat cards and charts backed by the same database.
178
+ **Takeaway:** The same dataset benefits from multiple display modes. View switching is now standard in modern data apps.
179
+
180
+ ### 2.2 Linear
181
+ High-density, keyboard-driven UX. List view with swimlane grouping (status, assignee, priority, cycle). Board view toggleable with Cmd+B using identical display options as list (view parity). Contextual properties inline: priority icons, status dots, assignee avatars. Insights panel provides analytics scoped to the current filtered view. Command palette (Cmd+K) for rapid filtering.
182
+ **Takeaway:** Keyboard-first, command-palette-driven interfaces outperform dropdowns for power users. Consistent display options across views reduce cognitive load.
183
+
184
+ ### 2.3 Notion
185
+ Block-based data display: databases embedded inline within documents. Linked views of the same database with different filters/sorts. Rich property types: relations, rollups, formulas, color-coded select tags. Template buttons for pre-configured rows.
186
+ **Takeaway:** "Database as a block" embeddable in narrative context is transformative for knowledge management.
187
+
188
+ ### 2.4 Stripe Dashboard
189
+ Progressive disclosure from KPI summaries to transaction detail. Top-level stat cards with sparklines and comparison badges. Interactive time-series charts with configurable granularity. Transaction tables with status pills and instant search; clicking opens a detail slide-over. 15-minute data latency with visible timestamps.
190
+ **Takeaway:** Embodies Shneiderman's mantra: "Overview first, zoom and filter, details on demand."
191
+
192
+ ### 2.5 Bloomberg Terminal
193
+ Extreme density for expert users. Multi-panel docked/tabbed workspace across 2-6 monitors. Security groups link panels so changing a security in one updates all linked panels. Treemaps for market overview (color=performance, size=market cap). Candlestick charts with overlaid technical indicators.
194
+ **Takeaway:** Display density should scale with user expertise. Panel-linking patterns apply to any multi-data-stream application.
195
+
196
+ ### 2.6 Figma
197
+ Structured data in creative context. Layers panel: hierarchical tree with bidirectional selection sync. Properties panel: key-value display with inline editing. Dev Mode switches between "List" and "Code" views of the same properties for different audiences.
198
+ **Takeaway:** Data display should adapt to the user's current role (designer vs. developer).
199
+
200
+ ### 2.7 GitHub
201
+ Code and project data with complementary views. Repository file browser with per-file metadata. PR list with filterable status icons, label pills, assignee avatars. Diff view with side-by-side comparison and line-level commenting. Progressive disclosure via collapsed diffs and expandable sections.
202
+ **Takeaway:** Show exactly the right metadata alongside primary content without overwhelming the interface.
203
+
204
+ ---
205
+
206
+ ## 3. User Flow Mapping
207
+
208
+ ### 3.1 Browsing Large Datasets
209
+ **Information Seeking Mantra (Shneiderman):** Overview first, zoom and filter, details on demand.
210
+
211
+ Flow: Dashboard (KPIs + charts) -> Filtered table/list (scoped data) -> Individual record detail (slide-over or full page) -> Related records (linked data, history).
212
+
213
+ ### 3.2 Sorting
214
+ Default sort should match user mental model (newest first for activity, alphabetical for contacts, priority for tasks). Three-state toggle cycle: ascending -> descending -> unsorted (remove sort). Sort state must persist across pagination, filtering, and navigation.
215
+
216
+ **Sort indicator conventions:** Chevron up = ascending (A-Z, 1-9, oldest first). Chevron down = descending (Z-A, 9-1, newest first). No chevron = unsorted. Active sort column header should have slightly different background or text weight to indicate it is the sort key.
217
+
218
+ **Multi-column sort:** Support Shift+click to add secondary sort columns (power user feature). Show sort priority numbers on each sorted column header (1, 2, 3). Most applications only need single-column sort; implement multi-sort for data-heavy analytical tools.
219
+
220
+ **Performance boundary:** Client-side for <1,000 rows (instant, no loading indicator needed). Server-side for >1,000 rows (show linear progress bar at table top during sort). Debounce rapid sort clicks (ignore clicks within 300ms of the last sort action).
221
+
222
+ ### 3.3 Filtering
223
+
224
+ | Pattern | Best For |
225
+ |---------|----------|
226
+ | Search box | Text matching across all fields |
227
+ | Quick filters | Predefined states (status tabs: All/Active/Archived) |
228
+ | Column filters | Per-column dropdown in header |
229
+ | Filter bar | Multiple active filters as removable chips |
230
+ | Filter panel | Complex multi-faceted filtering (sidebar) |
231
+ | Builder pattern | Advanced AND/OR/NOT logic (Airtable-style) |
232
+
233
+ Show active filter count + individual chips. "Clear all" always visible when filters active. Persist in URL params for shareable views. Show "Showing 23 of 1,247 results." Design empty state when filters return zero.
234
+
235
+ ### 3.4 Pagination vs. Infinite Scroll vs. Virtual Scrolling
236
+
237
+ **Pagination:** Best for data tables, search results, catalogs. Users reference specific pages, back button works. Default 25 rows. Preserve sort/filter/column state across pages.
238
+
239
+ **Infinite scroll:** Best for feeds, timelines, discovery browsing. Risk: lost position on back navigation. Mitigate with `history.pushState` and cached items. Show loading indicator + "end of results" marker.
240
+
241
+ **Virtual scrolling:** Best for 1,000+ row datasets needing continuous scroll feel without page breaks. Renders only visible rows (plus 5-10 row buffer above/below), recycling DOM nodes for performance. Maintains accurate scrollbar by calculating total content height from row count times row height. Requires consistent row heights for best performance (variable heights need measured position caching). Implementations: react-window (lightweight), @tanstack/virtual (framework-agnostic), Angular CDK virtual scroll. Sticky headers must be implemented separately from the virtual scroll container.
242
+
243
+ **Decision flow:**
244
+ ```
245
+ Dataset size?
246
+ < 100 rows -> Simple table, no pagination needed
247
+ 100-500 rows -> Pagination (25-50 per page)
248
+ 500-5,000 rows -> Pagination OR virtual scrolling
249
+ > 5,000 rows -> Virtual scrolling (pagination optional as fallback)
250
+
251
+ Content type?
252
+ Structured records -> Pagination (easier to bookmark/share)
253
+ Feed / timeline -> Infinite scroll (with position memory)
254
+ Spreadsheet data -> Virtual scrolling (continuous scroll expected)
255
+ ```
256
+
257
+ ### 3.5 Drill-Down: Summary to Detail
258
+ - **Level 0:** Dashboard with 3-5 KPI cards, 1-2 overview charts
259
+ - **Level 1:** Filtered table/list. Click row triggers Level 2
260
+ - **Level 2:** Detail view (slide-over panel preserves list context, or full page with breadcrumb)
261
+ - **Level 3:** Related data via tabs (activity log, linked records, audit history)
262
+
263
+ URL must reflect drill-down level for back-button and deep-linking. Avoid stacking slide-over panels more than one level deep.
264
+
265
+ ### 3.6 Export Flows
266
+
267
+ **Quick export:** Single button in toolbar, exports current filtered/sorted view as CSV or Excel. No configuration dialog needed. Label should state format: "Export CSV" not just "Export."
268
+
269
+ **Configured export:** Modal dialog allowing:
270
+ - Column selection (checkboxes for include/exclude)
271
+ - Date range filter
272
+ - Format selection (CSV, Excel, PDF, JSON)
273
+ - Optional: scheduled/recurring exports for reporting workflows
274
+
275
+ **Background export:** For datasets exceeding 10K rows, trigger an async export job. Show toast notification: "Your export is being prepared." Follow up with a download notification when ready. Do not block the UI.
276
+
277
+ **Clipboard:** "Copy table" action for quick paste into spreadsheets or documents. Copy the selected rows if a selection exists, otherwise copy the entire visible page. Include column headers.
278
+
279
+ **Export UX requirements:** Show record count in confirmation ("Export 1,247 records as CSV?"). Respect current filters, sort order, and column visibility in the output. For PDF exports, respect display formatting (currency symbols, date formats, status labels). Include a "last exported" timestamp in the filename or file metadata.
280
+
281
+ ---
282
+
283
+ ## 4. Micro-Interactions
284
+
285
+ ### 4.1 Sort Animation
286
+ Arrow rotation: 200ms ease-in-out, 180-degree flip. Column header background flash: 100ms. Row reorder animation: 200-300ms slide (client-side only). Server-side sort: linear progress bar at table top.
287
+
288
+ ### 4.2 Filter Transitions
289
+ Chip entrance: 150ms slide-in from left. Chip removal: 150ms shrink + fade. Result set: 200ms cross-fade. Counter: animated count up/down. Empty state: 200ms fade-in.
290
+
291
+ ### 4.3 Row Hover States
292
+ Background: 4-8% opacity overlay, 100ms transition. Action reveal: show edit/delete/more icons only on hover, fixed right column. Cursor: `pointer` if entire row clickable, `default` if only cells are interactive.
293
+
294
+ ### 4.4 Expandable Rows
295
+ Chevron rotation: 90 degrees over 200ms (right->down). Content reveal: 200-300ms ease-out slide-down. Left-side accent border for hierarchy. Accordion (single) vs. multi-expand (for comparison). Keyboard: Enter/Space to toggle.
296
+
297
+ ### 4.5 Cell Editing
298
+ Activation: single-click (app) or double-click (spreadsheet). Cell gains 2px primary-color border, white background. Save: Enter, Tab (move to next cell), blur. Cancel: Escape. Inline validation on error. Optimistic updates with revert toast on failure.
299
+
300
+ ### 4.6 Selection Checkboxes
301
+ Checkbox scale: 0.95x->1x, 150ms. Header states: unchecked, checked, indeterminate (dash). Bulk action bar: slides in on 1+ selection, shows count + actions (200ms). Selection persists across pagination. Shift+click for range selection.
302
+
303
+ ### 4.7 Drag-to-Reorder
304
+ Grip handle (6-dot icon) in first column, 8px distance threshold. Picked-up row: 8dp shadow, 5% scale. Drop indicator: 2px blue line between rows. Drop settle: 100ms ease-out. Keyboard alternative: Alt+Arrow Up/Down with aria-live announcement.
305
+
306
+ **Timing rule:** All micro-interactions should be 150-300ms. Shorter feels abrupt, longer feels sluggish.
307
+
308
+ ---
309
+
310
+ ## 5. Anti-Patterns
311
+
312
+ ### 5.1 Tables on Mobile Without Adaptation
313
+ Rendering full desktop tables on 375px screens forces horizontal scrolling and unusable touch targets. **Fix:** Card transformation (3-4 key fields per card), column priority hiding, or frozen first column with horizontal scroll.
314
+
315
+ ### 5.2 Pagination Without Sort/Filter Preservation
316
+ Sort resets on page change or refresh; filters lost on navigation. **Fix:** Persist all state in URL query params: `/users?sort=created_at&order=desc&status=active&page=3`.
317
+
318
+ ### 5.3 Infinite Scroll Without Position Memory
319
+ Back button returns user to top, losing scroll position and loaded items. **Fix:** `history.pushState` to encode position, cache items in session storage, or use slide-over panels for details.
320
+
321
+ ### 5.4 Charts Without Axis Labels
322
+ Line chart shows trend but user cannot determine units, scale, or meaning of axes. **Fix:** Label both axes with descriptive text and units. Add chart title stating the insight ("Revenue grew 23% in Q4").
323
+
324
+ ### 5.5 Truncating Data Without Tooltip
325
+ Ellipsis truncation with no way to see full content. **Fix:** Tooltip on hover (300ms delay). For key identifiers, consider wrapping instead of truncating.
326
+
327
+ ### 5.6 No Loading State for Data
328
+ Blank table area or stale data during loading. **Fix:** Skeleton shimmer rows matching table structure. Linear progress bar for server operations. Avoid full-page spinners.
329
+
330
+ ### 5.7 No Empty State Design
331
+ Zero results shows blank area with no guidance. **Fix:** Illustration + message ("No customers match your filters") + action ("Clear filters" button). Differentiate "no data exists" from "no data matches filters."
332
+
333
+ ### 5.8 Overloaded Data Tables
334
+ 15+ columns requiring horizontal scroll and cognitive overload. **Fix:** Show 5-7 default columns. Column config control for show/hide/reorder. Save preferences per user.
335
+
336
+ ### 5.9 Inconsistent Number Formatting
337
+ Mixed formats: 1000 vs 1,000 vs 1K. Currency without symbols. Mixed date formats. **Fix:** Enforce formatting rules. Locale-aware formatting. Consistent abbreviation rules.
338
+
339
+ ### 5.10 Color as the Only Differentiator
340
+ Status uses only red/yellow/green (inaccessible to 8% of males). **Fix:** Pair color with icons (checkmark, warning, X), text labels, patterns, or shapes.
341
+
342
+ ### 5.11 Missing Comparison Context in KPIs
343
+ "Revenue: $142,580" with no context (good? bad?). **Fix:** Show % change vs. previous period, delta vs. target, trend sparkline, comparison basis.
344
+
345
+ ### 5.12 Auto-Refreshing Data Without Warning
346
+ Data jumps or disappears during reading/interaction. **Fix:** Show "New data available. Refresh now." banner. Subtle animations for real-time updates. Never refresh during active interaction.
347
+
348
+ ### 5.13 Pie Charts for More Than 7 Categories
349
+ 12 near-identical slices impossible to compare. **Fix:** Horizontal bar chart (sorted descending). If pie needed, group into "Other" and limit to 5-7 segments.
350
+
351
+ ---
352
+
353
+ ## 6. Accessibility
354
+
355
+ ### 6.1 Table Semantics
356
+ ```html
357
+ <table>
358
+ <caption>Quarterly Revenue by Region</caption>
359
+ <thead>
360
+ <tr>
361
+ <th scope="col">Region</th>
362
+ <th scope="col">Q1</th>
363
+ <th scope="col">Q4</th>
364
+ </tr>
365
+ </thead>
366
+ <tbody>
367
+ <tr>
368
+ <th scope="row">North America</th>
369
+ <td>$1.2M</td>
370
+ <td>$1.6M</td>
371
+ </tr>
372
+ </tbody>
373
+ </table>
374
+ ```
375
+ `<caption>` provides programmatic title. `<th scope="col|row">` enables screen readers to announce headers when navigating cells. For complex multi-level headers, use `headers` attribute referencing `<th id>` values.
376
+
377
+ Reference: W3C Tables Tutorial (https://www.w3.org/WAI/tutorials/tables/).
378
+
379
+ ### 6.2 ARIA Grid for Interactive Tables
380
+ When tables include cell-level interactivity (editing, selection, drag), use the ARIA grid pattern instead of basic table semantics:
381
+
382
+ ```html
383
+ <div role="grid" aria-label="Customer list" aria-rowcount="1247">
384
+ <div role="row" aria-rowindex="1">
385
+ <div role="columnheader" aria-sort="ascending">Name</div>
386
+ <div role="columnheader" aria-sort="none">Email</div>
387
+ <div role="columnheader">Actions</div>
388
+ </div>
389
+ <div role="row" aria-rowindex="2" aria-selected="false">
390
+ <div role="gridcell">John Doe</div>
391
+ <div role="gridcell">john@example.com</div>
392
+ <div role="gridcell">
393
+ <button aria-label="Edit John Doe">Edit</button>
394
+ </div>
395
+ </div>
396
+ </div>
397
+ ```
398
+
399
+ **Key attributes:**
400
+ - `aria-sort="ascending|descending|none"` on sortable column headers
401
+ - `aria-selected="true|false"` on selectable rows
402
+ - `aria-rowcount` / `aria-colcount` for virtualized grids (DOM row count != total data rows)
403
+ - `aria-rowindex` on each row for virtualized grids to indicate position in full dataset
404
+
405
+ **Roving tabindex (focus management):**
406
+ - Only one cell has `tabindex="0"` at a time; all others use `tabindex="-1"`
407
+ - Tab key enters and exits the grid (the grid is a single tab stop in the page)
408
+ - Arrow keys navigate between cells within the grid
409
+ - Enter activates the focused cell (opens link, starts edit, toggles checkbox)
410
+ - Escape exits cell editing mode and returns focus to the cell
411
+
412
+ Reference: W3C ARIA Grid Pattern (https://www.w3.org/WAI/ARIA/apg/patterns/grid/).
413
+
414
+ ### 6.3 Chart Accessibility
415
+ - Alt text formula: `[Chart type] of [data type] where [key insight]`
416
+ - Describe the trend, not every data point: "Line chart showing revenue increasing from $100K to $156K, with a dip in August"
417
+ - Provide "View as table" toggle for underlying data
418
+ - All chart text must meet 4.5:1 contrast (WCAG 1.4.3)
419
+ - Do not rely on color alone (WCAG 1.4.1)—add patterns, shapes, direct labels
420
+ - Hover tooltips must also work via keyboard focus (WCAG 1.4.13)
421
+ - Use `aria-live="polite"` for significant live-data changes
422
+
423
+ Reference: TPGi (https://www.tpgi.com/making-data-visualizations-accessible/).
424
+
425
+ ### 6.4 Keyboard Navigation
426
+
427
+ | Key | Table/Grid Action |
428
+ |-----|-------------------|
429
+ | Tab | Enter/exit table (single tab stop) |
430
+ | Arrow Up/Down | Move between rows |
431
+ | Arrow Left/Right | Move between columns |
432
+ | Home / End | First/last cell in row |
433
+ | Ctrl+Home / Ctrl+End | First/last cell in table |
434
+ | Space | Toggle row selection |
435
+ | Enter | Activate cell (link, edit) |
436
+ | Escape | Exit edit mode |
437
+
438
+ Pagination controls: focusable, Enter to activate, `aria-current="page"` on current page.
439
+
440
+ ### 6.5 Screen Reader Announcements
441
+ - On table entry: announce caption/label, row count, column count
442
+ - On cell navigation: announce column header + row header + cell content
443
+ - On sort: "Sorted by [column], [direction]"
444
+ - On filter: aria-live "Showing 23 of 1,247 results"
445
+ - On page change: aria-live "Page 3 of 50, table updated"
446
+
447
+ **Testing matrix:** NVDA+Firefox, JAWS+Chrome (Windows), VoiceOver+Safari (macOS/iOS), TalkBack+Chrome (Android).
448
+
449
+ ---
450
+
451
+ ## 7. Cross-Platform Adaptation
452
+
453
+ ### 7.1 Mobile (< 768px)
454
+
455
+ **Tables:** Three adaptation strategies (choose based on data characteristics):
456
+
457
+ 1. **Card transformation (recommended for most cases):** Convert each row to a card. Primary identifier becomes card title. Show 3-4 key fields as key-value pairs within card body. "View details" action for full record. No horizontal scrolling required.
458
+ ```
459
+ +-------------------------------+
460
+ | Alice Doe Active |
461
+ | Email: alice@example.com |
462
+ | Amount: $1,200 |
463
+ | Created: Mar 1, 2026 |
464
+ | [View Details] |
465
+ +-------------------------------+
466
+ ```
467
+
468
+ 2. **Column priority hiding:** Define priority levels (P1: always visible, P2: tablet+, P3: desktop only). Show only P1 columns in a compact table. Users tap a row to see all columns in a detail view.
469
+
470
+ 3. **Horizontal scroll with frozen column:** Freeze the identifier column on the left. Allow horizontal swipe for additional columns. Show a subtle shadow on frozen edge and a scroll indicator. Best for comparison tasks where side-by-side viewing matters.
471
+
472
+ **Lists:** Work naturally on mobile due to vertical orientation. Ensure 48x48px touch targets minimum. Add swipe actions (right=complete, left=delete/archive). Pull-to-refresh for data updates. Avoid nested lists deeper than 2 levels.
473
+
474
+ **Charts:** Reduce data points for readability. Increase font sizes for labels. Replace hover tooltips with tap-to-reveal (tap data point to show value callout). Provide fullscreen landscape mode for detailed chart analysis. Use small multiples (one chart per series) instead of multi-series overlays.
475
+
476
+ **KPIs:** Vertical stack (single column) or 2-column grid. Replace sparklines with simple trend arrows if space is constrained. Horizontal scroll with peek affordance (show partial next card) works well for a row of 4+ KPI cards.
477
+
478
+ ### 7.2 Tablet (768px - 1024px)
479
+ **Tables:** Compact density works (40px rows). Show priority P1+P2 columns, hide P3. Slide-over detail panels at 60-70% width.
480
+ **Lists:** Two-column card layouts or master-detail split (40% list / 60% detail).
481
+ **Charts:** Minor adjustments. Side-by-side layouts work in landscape.
482
+
483
+ ### 7.3 Desktop (> 1024px)
484
+
485
+ **Full data table capabilities:**
486
+ - Column resize handles (drag border between column headers)
487
+ - Column reordering via drag-and-drop on headers
488
+ - Keyboard shortcuts for power users (Cmd+F search, arrow keys navigation)
489
+ - Right-click context menu on rows for quick actions
490
+ - Multi-select: Shift+click for range, Cmd/Ctrl+click for individual toggle
491
+ - Configurable column visibility with per-user saved preferences
492
+ - Split-pane layout: table on left, detail panel on right (resizable divider)
493
+ - Column pinning: freeze columns to left or right edge
494
+ - Row pinning: keep specific rows visible at top (e.g., totals row)
495
+ - Cell-level copy-paste for spreadsheet-like interaction
496
+ - Bulk edit mode: select multiple rows, edit a field value, apply to all selected
497
+
498
+ **Dashboard layout capabilities:**
499
+ - 12-column CSS Grid system for flexible widget placement
500
+ - KPI row at top spanning full width
501
+ - Charts in 2-3 column layouts with configurable sizing
502
+ - Drag-to-resize and drag-to-reorder dashboard panels for user customization
503
+ - Saved view configurations (named dashboard layouts)
504
+ - Fullscreen mode for individual charts or data views
505
+ - Keyboard-driven command palette for rapid navigation (Linear pattern)
506
+
507
+ ### 7.4 Breakpoint Strategy
508
+ ```
509
+ Mobile: < 768px -> Cards, stacked layouts, minimal columns
510
+ Tablet: 768-1024px -> Compact tables, master-detail, 2-col grids
511
+ Desktop: 1024-1440px -> Full tables, multi-panel layouts
512
+ Wide: > 1440px -> Extended tables, side-by-side comparisons
513
+ ```
514
+ Prefer CSS Container Queries over media queries for component-level responsiveness.
515
+
516
+ ---
517
+
518
+ ## 8. Decision Trees
519
+
520
+ ### 8.1 Table vs. List vs. Cards
521
+ ```
522
+ COMPARE values across multiple attributes? -> TABLE
523
+ SCAN sequential items to act on one? -> LIST
524
+ BROWSE self-contained heterogeneous items? -> CARDS
525
+
526
+ Modifiers:
527
+ > 5 comparable fields? -> TABLE
528
+ 1-3 fields + image? -> CARDS
529
+ Need drag reordering? -> LIST
530
+ Select/act on multiple? -> TABLE (checkboxes)
531
+ Mobile-primary? -> CARDS or LIST
532
+ Hierarchical? -> Tree TABLE or grouped LIST
533
+ ```
534
+
535
+ ### 8.2 Pagination vs. Infinite Scroll
536
+ ```
537
+ GOAL-DIRECTED (searching for specific item)?
538
+ -> PAGINATION (position awareness, back button, shareable URLs)
539
+
540
+ EXPLORATORY (browsing, discovering)?
541
+ -> INFINITE SCROLL (with position memory via pushState)
542
+
543
+ ANALYTICAL (large dataset processing)?
544
+ -> VIRTUAL SCROLLING (>1,000 rows, render visible only)
545
+
546
+ Hybrid: "Load more" button (user-controlled infinite scroll)
547
+ ```
548
+
549
+ ### 8.3 Chart Type Selection
550
+ ```
551
+ How does a metric CHANGE OVER TIME? -> Line (continuous) or Bar (discrete)
552
+ How do categories COMPARE? -> Bar chart (few) or Horizontal bar (many, sorted)
553
+ What is the COMPOSITION? -> Donut (few parts) or Treemap (many)
554
+ What is the RELATIONSHIP? -> Scatter plot or Bubble chart
555
+ What is the DISTRIBUTION? -> Histogram or Box plot
556
+ What is a single KEY METRIC? -> KPI card (not a chart)
557
+ How does data FLOW through stages? -> Funnel or Sankey diagram
558
+
559
+ Default: When in doubt, use a bar chart (most universally understood).
560
+ ```
561
+
562
+ ---
563
+
564
+ ## Design System References
565
+
566
+ **Ant Design:** Table (pagination, filtering, sorting, selection, expandable rows, virtual scroll, drag-sort). ProTable extends with search form + CRUD. List, Card, Statistic components. Data display spec: 3-4 key fields at first glance, progressive disclosure for rest. (https://ant.design/docs/spec/data-display/)
567
+
568
+ **Atlassian:** Dynamic Table with built-in pagination, sorting, re-ordering, drag-and-drop state management. Table Tree for nested hierarchies. Loading and empty states as first-class props. (https://atlassian.design/components/dynamic-table/)
569
+
570
+ **Material Design:** M2 data tables: 56dp column padding, checkbox rows, embedded-in-card pattern. Header 56dp, data row 52dp, dense 36dp. M3 lists (1/2/3-line variants), cards (elevated/filled/outlined). Note: M3 has no official data table component as of 2026; M2 spec remains reference. (https://m2.material.io/components/data-tables)
571
+
572
+ **Carbon (IBM):** Batch actions toolbar, inline/expandable rows, sortable columns, table toolbar with search and filter. Clear documentation of toolbar and batch action flows. (https://carbondesignsystem.com/components/data-table/usage/)
573
+
574
+ ---
575
+
576
+ ## Implementation Notes
577
+
578
+ ### Performance Considerations
579
+ - **Virtual scrolling threshold:** Implement when dataset exceeds 500-1,000 rows. Libraries: react-window (lightweight, fixed-size items), @tanstack/virtual (framework-agnostic, variable sizes), Angular CDK virtual scroll.
580
+ - **Debounce search/filter inputs:** 200-300ms debounce prevents excessive API calls during typing. Apply to search boxes and filter text inputs, not to dropdown selections (which should trigger immediately).
581
+ - **Skeleton loading:** Render skeleton rows matching the table structure (same column widths, row heights). Use CSS animations for shimmer effect (no JS needed). Show 5-10 skeleton rows for initial load.
582
+ - **Memoize row components:** In React, use `React.memo` with a custom comparator for row components to prevent re-renders when unrelated state changes. In Angular, use `trackBy` on `*ngFor`.
583
+ - **Lazy load off-screen columns:** For tables with 20+ columns, render only visible columns and lazy-load others on horizontal scroll using intersection observers.
584
+
585
+ ### State Management for Data Views
586
+ - **URL-driven state:** Encode sort, filter, page, and view configuration in URL query parameters for shareability, deep-linking, and back-button support. Example: `?sort=name&order=asc&status=active&page=3&view=compact`.
587
+ - **Saved views:** Allow users to save named configurations (column set, sort, filters) and switch between them via a dropdown. Store per-user on the server.
588
+ - **Optimistic updates:** For inline editing and drag-to-reorder, update the UI immediately. On server error, revert the change and show a toast with "Undo" action.
589
+ - **Selection state:** Track selected item IDs (not row indices) to maintain selection across sort, filter, and pagination changes. Store in a Set for O(1) lookup.
590
+
591
+ ### Testing Data Display Components
592
+ - **Visual regression:** Snapshot all states: loading, empty, error, single row, full page, long text overflow, many columns, column resize.
593
+ - **Accessibility audit:** Automated with axe-core plus manual screen reader testing (NVDA + VoiceOver minimum).
594
+ - **Performance:** Measure render time at 100, 1,000, and 10,000 rows. Target: <16ms frame time (60fps) during scroll.
595
+ - **Responsive:** Test at 375px (iPhone SE), 768px (iPad), 1024px, 1440px, 1920px breakpoints.
596
+
597
+ ---
598
+
599
+ ## Sources
600
+
601
+ - Ant Design Table & Specs: https://ant.design/components/table/, https://ant.design/docs/spec/data-display/
602
+ - Material Design Data Tables: https://m2.material.io/components/data-tables
603
+ - Atlassian Dynamic Table: https://atlassian.design/components/dynamic-table/
604
+ - W3C Tables Tutorial: https://www.w3.org/WAI/tutorials/tables/
605
+ - W3C ARIA Grid Pattern: https://www.w3.org/WAI/ARIA/apg/patterns/grid/
606
+ - Carbon Design System: https://carbondesignsystem.com/components/data-table/usage/
607
+ - Cloudscape Key-Value Pairs: https://cloudscape.design/components/key-value-pairs/
608
+ - NNGroup: https://www.nngroup.com/articles/choosing-chart-types/, https://www.nngroup.com/articles/infinite-scrolling-tips/, https://www.nngroup.com/articles/mobile-tables/
609
+ - From Data to Viz: https://www.data-to-viz.com/
610
+ - Pencil & Paper Data Tables: https://www.pencilandpaper.io/articles/ux-pattern-analysis-enterprise-data-tables
611
+ - TPGi Accessible Visualizations: https://www.tpgi.com/making-data-visualizations-accessible/
612
+ - UK Gov Data Visualization Descriptions: https://accessibility.blog.gov.uk/2023/04/13/text-descriptions-for-data-visualisations/
613
+ - Bloomberg Terminal UX: https://www.bloomberg.com/company/stories/how-bloomberg-terminal-ux-designers-conceal-complexity/
614
+ - Stripe Analytics: https://stripe.com/blog/how-we-built-it-real-time-analytics-for-stripe-billing
615
+ - Linear UI/Docs: https://linear.app/docs/display-options, https://linear.app/now/how-we-redesigned-the-linear-ui
616
+ - Inline Editing: https://uxdworld.com/inline-editing-in-tables-design/
617
+ - Drag-and-Drop UX: https://smart-interface-design-patterns.com/articles/drag-and-drop-ux/
618
+ - KPI Card Anatomy: https://nastengraph.substack.com/p/anatomy-of-the-kpi-card