@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.
- package/AGENTS.md +111 -0
- package/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +101 -0
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/assets/composition-engine.mmd +34 -0
- package/assets/demo-script.sh +17 -0
- package/assets/logo-dark.svg +14 -0
- package/assets/logo.svg +14 -0
- package/assets/pipeline.mmd +39 -0
- package/assets/record-demo.sh +51 -0
- package/docs/README.md +51 -0
- package/docs/adapters/context-mode.md +60 -0
- package/docs/concepts/architecture.md +87 -0
- package/docs/concepts/artifact-model.md +60 -0
- package/docs/concepts/composition-engine.md +36 -0
- package/docs/concepts/indexing-and-recall.md +160 -0
- package/docs/concepts/observability.md +41 -0
- package/docs/concepts/roles-and-workflows.md +59 -0
- package/docs/concepts/terminology-policy.md +27 -0
- package/docs/getting-started/01-installation.md +78 -0
- package/docs/getting-started/02-first-run.md +102 -0
- package/docs/getting-started/03-adding-to-project.md +15 -0
- package/docs/getting-started/04-host-setup.md +15 -0
- package/docs/guides/ci-integration.md +15 -0
- package/docs/guides/creating-skills.md +15 -0
- package/docs/guides/expertise-module-authoring.md +15 -0
- package/docs/guides/hook-development.md +15 -0
- package/docs/guides/memory-and-learnings.md +34 -0
- package/docs/guides/multi-host-export.md +15 -0
- package/docs/guides/troubleshooting.md +101 -0
- package/docs/guides/writing-custom-roles.md +15 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
- package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
- package/docs/readmes/INDEX.md +99 -0
- package/docs/readmes/features/expertise/README.md +171 -0
- package/docs/readmes/features/exports/README.md +222 -0
- package/docs/readmes/features/hooks/README.md +103 -0
- package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
- package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
- package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
- package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
- package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
- package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
- package/docs/readmes/features/hooks/session-start.md +119 -0
- package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
- package/docs/readmes/features/roles/README.md +157 -0
- package/docs/readmes/features/roles/clarifier.md +152 -0
- package/docs/readmes/features/roles/content-author.md +190 -0
- package/docs/readmes/features/roles/designer.md +193 -0
- package/docs/readmes/features/roles/executor.md +184 -0
- package/docs/readmes/features/roles/learner.md +210 -0
- package/docs/readmes/features/roles/planner.md +182 -0
- package/docs/readmes/features/roles/researcher.md +164 -0
- package/docs/readmes/features/roles/reviewer.md +184 -0
- package/docs/readmes/features/roles/specifier.md +162 -0
- package/docs/readmes/features/roles/verifier.md +215 -0
- package/docs/readmes/features/schemas/README.md +178 -0
- package/docs/readmes/features/skills/README.md +63 -0
- package/docs/readmes/features/skills/brainstorming.md +96 -0
- package/docs/readmes/features/skills/debugging.md +148 -0
- package/docs/readmes/features/skills/design.md +120 -0
- package/docs/readmes/features/skills/prepare-next.md +109 -0
- package/docs/readmes/features/skills/run-audit.md +159 -0
- package/docs/readmes/features/skills/scan-project.md +109 -0
- package/docs/readmes/features/skills/self-audit.md +176 -0
- package/docs/readmes/features/skills/tdd.md +137 -0
- package/docs/readmes/features/skills/using-skills.md +92 -0
- package/docs/readmes/features/skills/verification.md +120 -0
- package/docs/readmes/features/skills/writing-plans.md +104 -0
- package/docs/readmes/features/tooling/README.md +320 -0
- package/docs/readmes/features/workflows/README.md +186 -0
- package/docs/readmes/features/workflows/author.md +181 -0
- package/docs/readmes/features/workflows/clarify.md +154 -0
- package/docs/readmes/features/workflows/design-review.md +171 -0
- package/docs/readmes/features/workflows/design.md +169 -0
- package/docs/readmes/features/workflows/discover.md +162 -0
- package/docs/readmes/features/workflows/execute.md +173 -0
- package/docs/readmes/features/workflows/learn.md +167 -0
- package/docs/readmes/features/workflows/plan-review.md +165 -0
- package/docs/readmes/features/workflows/plan.md +170 -0
- package/docs/readmes/features/workflows/prepare-next.md +167 -0
- package/docs/readmes/features/workflows/review.md +169 -0
- package/docs/readmes/features/workflows/run-audit.md +191 -0
- package/docs/readmes/features/workflows/spec-challenge.md +159 -0
- package/docs/readmes/features/workflows/specify.md +160 -0
- package/docs/readmes/features/workflows/verify.md +177 -0
- package/docs/readmes/packages/README.md +50 -0
- package/docs/readmes/packages/ajv.md +117 -0
- package/docs/readmes/packages/context-mode.md +118 -0
- package/docs/readmes/packages/gray-matter.md +116 -0
- package/docs/readmes/packages/node-test.md +137 -0
- package/docs/readmes/packages/yaml.md +112 -0
- package/docs/reference/configuration-reference.md +159 -0
- package/docs/reference/expertise-index.md +52 -0
- package/docs/reference/git-flow.md +43 -0
- package/docs/reference/hooks.md +87 -0
- package/docs/reference/host-exports.md +50 -0
- package/docs/reference/launch-checklist.md +172 -0
- package/docs/reference/marketplace-listings.md +76 -0
- package/docs/reference/release-process.md +34 -0
- package/docs/reference/roles-reference.md +77 -0
- package/docs/reference/skills.md +33 -0
- package/docs/reference/templates.md +29 -0
- package/docs/reference/tooling-cli.md +94 -0
- package/docs/truth-claims.yaml +222 -0
- package/expertise/PROGRESS.md +63 -0
- package/expertise/README.md +18 -0
- package/expertise/antipatterns/PROGRESS.md +56 -0
- package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
- package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
- package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
- package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
- package/expertise/antipatterns/backend/index.md +24 -0
- package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
- package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
- package/expertise/antipatterns/code/async-antipatterns.md +622 -0
- package/expertise/antipatterns/code/code-smells.md +1186 -0
- package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
- package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
- package/expertise/antipatterns/code/index.md +27 -0
- package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
- package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
- package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
- package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
- package/expertise/antipatterns/design/dark-patterns.md +1121 -0
- package/expertise/antipatterns/design/index.md +22 -0
- package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
- package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
- package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
- package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
- package/expertise/antipatterns/frontend/index.md +23 -0
- package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
- package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
- package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
- package/expertise/antipatterns/index.md +31 -0
- package/expertise/antipatterns/performance/index.md +20 -0
- package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
- package/expertise/antipatterns/performance/premature-optimization.md +623 -0
- package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
- package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
- package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
- package/expertise/antipatterns/process/index.md +23 -0
- package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
- package/expertise/antipatterns/security/index.md +20 -0
- package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
- package/expertise/antipatterns/security/security-theater.md +843 -0
- package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
- package/expertise/architecture/PROGRESS.md +70 -0
- package/expertise/architecture/data/caching-architecture.md +671 -0
- package/expertise/architecture/data/data-consistency.md +574 -0
- package/expertise/architecture/data/data-modeling.md +536 -0
- package/expertise/architecture/data/event-streams-and-queues.md +634 -0
- package/expertise/architecture/data/index.md +25 -0
- package/expertise/architecture/data/search-architecture.md +663 -0
- package/expertise/architecture/data/sql-vs-nosql.md +708 -0
- package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
- package/expertise/architecture/decisions/build-vs-buy.md +616 -0
- package/expertise/architecture/decisions/index.md +23 -0
- package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
- package/expertise/architecture/decisions/technology-selection.md +616 -0
- package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
- package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
- package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
- package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
- package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
- package/expertise/architecture/distributed/index.md +25 -0
- package/expertise/architecture/distributed/saga-pattern.md +797 -0
- package/expertise/architecture/foundations/architectural-thinking.md +460 -0
- package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
- package/expertise/architecture/foundations/design-principles-solid.md +649 -0
- package/expertise/architecture/foundations/domain-driven-design.md +719 -0
- package/expertise/architecture/foundations/index.md +25 -0
- package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
- package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
- package/expertise/architecture/index.md +34 -0
- package/expertise/architecture/integration/api-design-graphql.md +638 -0
- package/expertise/architecture/integration/api-design-grpc.md +804 -0
- package/expertise/architecture/integration/api-design-rest.md +892 -0
- package/expertise/architecture/integration/index.md +25 -0
- package/expertise/architecture/integration/third-party-integration.md +795 -0
- package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
- package/expertise/architecture/integration/websockets-realtime.md +791 -0
- package/expertise/architecture/mobile-architecture/index.md +22 -0
- package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
- package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
- package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
- package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
- package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
- package/expertise/architecture/patterns/event-driven.md +797 -0
- package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
- package/expertise/architecture/patterns/index.md +27 -0
- package/expertise/architecture/patterns/layered-architecture.md +736 -0
- package/expertise/architecture/patterns/microservices.md +753 -0
- package/expertise/architecture/patterns/modular-monolith.md +692 -0
- package/expertise/architecture/patterns/monolith.md +626 -0
- package/expertise/architecture/patterns/plugin-architecture.md +735 -0
- package/expertise/architecture/patterns/serverless.md +780 -0
- package/expertise/architecture/scaling/database-scaling.md +615 -0
- package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
- package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
- package/expertise/architecture/scaling/index.md +24 -0
- package/expertise/architecture/scaling/multi-tenancy.md +800 -0
- package/expertise/architecture/scaling/stateless-design.md +787 -0
- package/expertise/backend/embedded-firmware.md +625 -0
- package/expertise/backend/go.md +853 -0
- package/expertise/backend/index.md +24 -0
- package/expertise/backend/java-spring.md +448 -0
- package/expertise/backend/node-typescript.md +625 -0
- package/expertise/backend/python-fastapi.md +724 -0
- package/expertise/backend/rust.md +458 -0
- package/expertise/backend/solidity.md +711 -0
- package/expertise/composition-map.yaml +443 -0
- package/expertise/content/foundations/content-modeling.md +395 -0
- package/expertise/content/foundations/editorial-standards.md +449 -0
- package/expertise/content/foundations/index.md +24 -0
- package/expertise/content/foundations/microcopy.md +455 -0
- package/expertise/content/foundations/terminology-governance.md +509 -0
- package/expertise/content/index.md +34 -0
- package/expertise/content/patterns/accessibility-copy.md +518 -0
- package/expertise/content/patterns/index.md +24 -0
- package/expertise/content/patterns/notification-content.md +433 -0
- package/expertise/content/patterns/sample-content.md +486 -0
- package/expertise/content/patterns/state-copy.md +439 -0
- package/expertise/design/PROGRESS.md +58 -0
- package/expertise/design/disciplines/dark-mode-theming.md +577 -0
- package/expertise/design/disciplines/design-systems.md +595 -0
- package/expertise/design/disciplines/index.md +25 -0
- package/expertise/design/disciplines/information-architecture.md +800 -0
- package/expertise/design/disciplines/interaction-design.md +788 -0
- package/expertise/design/disciplines/responsive-design.md +552 -0
- package/expertise/design/disciplines/usability-testing.md +516 -0
- package/expertise/design/disciplines/user-research.md +792 -0
- package/expertise/design/foundations/accessibility-design.md +796 -0
- package/expertise/design/foundations/color-theory.md +797 -0
- package/expertise/design/foundations/iconography.md +795 -0
- package/expertise/design/foundations/index.md +26 -0
- package/expertise/design/foundations/motion-and-animation.md +653 -0
- package/expertise/design/foundations/rtl-design.md +585 -0
- package/expertise/design/foundations/spacing-and-layout.md +607 -0
- package/expertise/design/foundations/typography.md +800 -0
- package/expertise/design/foundations/visual-hierarchy.md +761 -0
- package/expertise/design/index.md +32 -0
- package/expertise/design/patterns/authentication-flows.md +474 -0
- package/expertise/design/patterns/content-consumption.md +789 -0
- package/expertise/design/patterns/data-display.md +618 -0
- package/expertise/design/patterns/e-commerce.md +1494 -0
- package/expertise/design/patterns/feedback-and-states.md +642 -0
- package/expertise/design/patterns/forms-and-input.md +819 -0
- package/expertise/design/patterns/gamification.md +801 -0
- package/expertise/design/patterns/index.md +31 -0
- package/expertise/design/patterns/microinteractions.md +449 -0
- package/expertise/design/patterns/navigation.md +800 -0
- package/expertise/design/patterns/notifications.md +705 -0
- package/expertise/design/patterns/onboarding.md +700 -0
- package/expertise/design/patterns/search-and-filter.md +601 -0
- package/expertise/design/patterns/settings-and-preferences.md +768 -0
- package/expertise/design/patterns/social-and-community.md +748 -0
- package/expertise/design/platforms/desktop-native.md +612 -0
- package/expertise/design/platforms/index.md +25 -0
- package/expertise/design/platforms/mobile-android.md +825 -0
- package/expertise/design/platforms/mobile-cross-platform.md +983 -0
- package/expertise/design/platforms/mobile-ios.md +699 -0
- package/expertise/design/platforms/tablet.md +794 -0
- package/expertise/design/platforms/web-dashboard.md +790 -0
- package/expertise/design/platforms/web-responsive.md +550 -0
- package/expertise/design/psychology/behavioral-nudges.md +449 -0
- package/expertise/design/psychology/cognitive-load.md +1191 -0
- package/expertise/design/psychology/error-psychology.md +778 -0
- package/expertise/design/psychology/index.md +22 -0
- package/expertise/design/psychology/persuasive-design.md +736 -0
- package/expertise/design/psychology/user-mental-models.md +623 -0
- package/expertise/design/tooling/open-pencil.md +266 -0
- package/expertise/frontend/angular.md +1073 -0
- package/expertise/frontend/desktop-electron.md +546 -0
- package/expertise/frontend/flutter.md +782 -0
- package/expertise/frontend/index.md +27 -0
- package/expertise/frontend/native-android.md +409 -0
- package/expertise/frontend/native-ios.md +490 -0
- package/expertise/frontend/react-native.md +1160 -0
- package/expertise/frontend/react.md +808 -0
- package/expertise/frontend/vue.md +1089 -0
- package/expertise/humanize/domain-rules-code.md +79 -0
- package/expertise/humanize/domain-rules-content.md +67 -0
- package/expertise/humanize/domain-rules-technical-docs.md +56 -0
- package/expertise/humanize/index.md +35 -0
- package/expertise/humanize/self-audit-checklist.md +87 -0
- package/expertise/humanize/sentence-patterns.md +218 -0
- package/expertise/humanize/vocabulary-blacklist.md +105 -0
- package/expertise/i18n/PROGRESS.md +65 -0
- package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
- package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
- package/expertise/i18n/advanced/complex-scripts.md +30 -0
- package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
- package/expertise/i18n/advanced/testing-i18n.md +28 -0
- package/expertise/i18n/content/content-adaptation.md +23 -0
- package/expertise/i18n/content/locale-specific-formatting.md +23 -0
- package/expertise/i18n/content/machine-translation-integration.md +28 -0
- package/expertise/i18n/content/translation-management.md +29 -0
- package/expertise/i18n/foundations/date-time-calendars.md +67 -0
- package/expertise/i18n/foundations/i18n-architecture.md +272 -0
- package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
- package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
- package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
- package/expertise/i18n/foundations/string-externalization.md +236 -0
- package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
- package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
- package/expertise/i18n/index.md +38 -0
- package/expertise/i18n/platform/backend-i18n.md +31 -0
- package/expertise/i18n/platform/flutter-i18n.md +148 -0
- package/expertise/i18n/platform/native-android-i18n.md +36 -0
- package/expertise/i18n/platform/native-ios-i18n.md +36 -0
- package/expertise/i18n/platform/react-i18n.md +103 -0
- package/expertise/i18n/platform/web-css-i18n.md +81 -0
- package/expertise/i18n/rtl/arabic-specific.md +175 -0
- package/expertise/i18n/rtl/hebrew-specific.md +149 -0
- package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
- package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
- package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
- package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
- package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
- package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
- package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
- package/expertise/i18n/rtl/rtl-typography.md +160 -0
- package/expertise/index.md +113 -0
- package/expertise/index.yaml +216 -0
- package/expertise/infrastructure/cloud-aws.md +597 -0
- package/expertise/infrastructure/cloud-gcp.md +599 -0
- package/expertise/infrastructure/cybersecurity.md +816 -0
- package/expertise/infrastructure/database-mongodb.md +447 -0
- package/expertise/infrastructure/database-postgres.md +400 -0
- package/expertise/infrastructure/devops-cicd.md +787 -0
- package/expertise/infrastructure/index.md +27 -0
- package/expertise/performance/PROGRESS.md +50 -0
- package/expertise/performance/backend/api-latency.md +1204 -0
- package/expertise/performance/backend/background-jobs.md +506 -0
- package/expertise/performance/backend/connection-pooling.md +1209 -0
- package/expertise/performance/backend/database-query-optimization.md +515 -0
- package/expertise/performance/backend/index.md +23 -0
- package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
- package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
- package/expertise/performance/foundations/caching-strategies.md +489 -0
- package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
- package/expertise/performance/foundations/index.md +24 -0
- package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
- package/expertise/performance/foundations/memory-management.md +964 -0
- package/expertise/performance/foundations/performance-budgets.md +1314 -0
- package/expertise/performance/index.md +31 -0
- package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
- package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
- package/expertise/performance/infrastructure/index.md +22 -0
- package/expertise/performance/infrastructure/load-balancing.md +1081 -0
- package/expertise/performance/infrastructure/observability.md +1079 -0
- package/expertise/performance/mobile/index.md +23 -0
- package/expertise/performance/mobile/mobile-animations.md +544 -0
- package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
- package/expertise/performance/mobile/mobile-network.md +452 -0
- package/expertise/performance/mobile/mobile-rendering.md +599 -0
- package/expertise/performance/mobile/mobile-startup-time.md +505 -0
- package/expertise/performance/platform-specific/flutter-performance.md +647 -0
- package/expertise/performance/platform-specific/index.md +22 -0
- package/expertise/performance/platform-specific/node-performance.md +1307 -0
- package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
- package/expertise/performance/platform-specific/react-performance.md +1403 -0
- package/expertise/performance/web/bundle-optimization.md +1239 -0
- package/expertise/performance/web/image-and-media.md +636 -0
- package/expertise/performance/web/index.md +24 -0
- package/expertise/performance/web/network-optimization.md +1133 -0
- package/expertise/performance/web/rendering-performance.md +1098 -0
- package/expertise/performance/web/ssr-and-hydration.md +918 -0
- package/expertise/performance/web/web-vitals.md +1374 -0
- package/expertise/quality/accessibility.md +985 -0
- package/expertise/quality/evidence-based-verification.md +499 -0
- package/expertise/quality/index.md +24 -0
- package/expertise/quality/ml-model-audit.md +614 -0
- package/expertise/quality/performance.md +600 -0
- package/expertise/quality/testing-api.md +891 -0
- package/expertise/quality/testing-mobile.md +496 -0
- package/expertise/quality/testing-web.md +849 -0
- package/expertise/security/PROGRESS.md +54 -0
- package/expertise/security/agentic-identity.md +540 -0
- package/expertise/security/compliance-frameworks.md +601 -0
- package/expertise/security/data/data-encryption.md +364 -0
- package/expertise/security/data/data-privacy-gdpr.md +692 -0
- package/expertise/security/data/database-security.md +1171 -0
- package/expertise/security/data/index.md +22 -0
- package/expertise/security/data/pii-handling.md +531 -0
- package/expertise/security/foundations/authentication.md +1041 -0
- package/expertise/security/foundations/authorization.md +603 -0
- package/expertise/security/foundations/cryptography.md +1001 -0
- package/expertise/security/foundations/index.md +25 -0
- package/expertise/security/foundations/owasp-top-10.md +1354 -0
- package/expertise/security/foundations/secrets-management.md +1217 -0
- package/expertise/security/foundations/secure-sdlc.md +700 -0
- package/expertise/security/foundations/supply-chain-security.md +698 -0
- package/expertise/security/index.md +31 -0
- package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
- package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
- package/expertise/security/infrastructure/container-security.md +721 -0
- package/expertise/security/infrastructure/incident-response.md +1295 -0
- package/expertise/security/infrastructure/index.md +24 -0
- package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
- package/expertise/security/infrastructure/network-security.md +1337 -0
- package/expertise/security/mobile/index.md +23 -0
- package/expertise/security/mobile/mobile-android-security.md +1218 -0
- package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
- package/expertise/security/mobile/mobile-data-storage.md +1265 -0
- package/expertise/security/mobile/mobile-ios-security.md +1401 -0
- package/expertise/security/mobile/mobile-network-security.md +1520 -0
- package/expertise/security/smart-contract-security.md +594 -0
- package/expertise/security/testing/index.md +22 -0
- package/expertise/security/testing/penetration-testing.md +1258 -0
- package/expertise/security/testing/security-code-review.md +1765 -0
- package/expertise/security/testing/threat-modeling.md +1074 -0
- package/expertise/security/testing/vulnerability-scanning.md +1062 -0
- package/expertise/security/web/api-security.md +586 -0
- package/expertise/security/web/cors-and-headers.md +433 -0
- package/expertise/security/web/csrf.md +562 -0
- package/expertise/security/web/file-upload.md +1477 -0
- package/expertise/security/web/index.md +25 -0
- package/expertise/security/web/injection.md +1375 -0
- package/expertise/security/web/session-management.md +1101 -0
- package/expertise/security/web/xss.md +1158 -0
- package/exports/README.md +17 -0
- package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
- package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
- package/exports/hosts/claude/.claude/agents/designer.md +55 -0
- package/exports/hosts/claude/.claude/agents/executor.md +55 -0
- package/exports/hosts/claude/.claude/agents/learner.md +51 -0
- package/exports/hosts/claude/.claude/agents/planner.md +53 -0
- package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
- package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
- package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
- package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
- package/exports/hosts/claude/.claude/commands/author.md +42 -0
- package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
- package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
- package/exports/hosts/claude/.claude/commands/design.md +44 -0
- package/exports/hosts/claude/.claude/commands/discover.md +37 -0
- package/exports/hosts/claude/.claude/commands/execute.md +48 -0
- package/exports/hosts/claude/.claude/commands/learn.md +38 -0
- package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
- package/exports/hosts/claude/.claude/commands/plan.md +39 -0
- package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
- package/exports/hosts/claude/.claude/commands/review.md +40 -0
- package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
- package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
- package/exports/hosts/claude/.claude/commands/specify.md +38 -0
- package/exports/hosts/claude/.claude/commands/verify.md +37 -0
- package/exports/hosts/claude/.claude/settings.json +34 -0
- package/exports/hosts/claude/CLAUDE.md +19 -0
- package/exports/hosts/claude/export.manifest.json +38 -0
- package/exports/hosts/claude/host-package.json +67 -0
- package/exports/hosts/codex/AGENTS.md +19 -0
- package/exports/hosts/codex/export.manifest.json +38 -0
- package/exports/hosts/codex/host-package.json +41 -0
- package/exports/hosts/cursor/.cursor/hooks.json +16 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
- package/exports/hosts/cursor/export.manifest.json +38 -0
- package/exports/hosts/cursor/host-package.json +42 -0
- package/exports/hosts/gemini/GEMINI.md +19 -0
- package/exports/hosts/gemini/export.manifest.json +38 -0
- package/exports/hosts/gemini/host-package.json +41 -0
- package/hooks/README.md +18 -0
- package/hooks/definitions/loop_cap_guard.yaml +21 -0
- package/hooks/definitions/post_tool_capture.yaml +24 -0
- package/hooks/definitions/pre_compact_summary.yaml +19 -0
- package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
- package/hooks/definitions/protected_path_write_guard.yaml +19 -0
- package/hooks/definitions/session_start.yaml +19 -0
- package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
- package/hooks/loop-cap-guard +17 -0
- package/hooks/post-tool-lint +36 -0
- package/hooks/protected-path-write-guard +17 -0
- package/hooks/session-start +41 -0
- package/llms-full.txt +2355 -0
- package/llms.txt +43 -0
- package/package.json +79 -0
- package/roles/README.md +20 -0
- package/roles/clarifier.md +42 -0
- package/roles/content-author.md +63 -0
- package/roles/designer.md +55 -0
- package/roles/executor.md +55 -0
- package/roles/learner.md +51 -0
- package/roles/planner.md +53 -0
- package/roles/researcher.md +43 -0
- package/roles/reviewer.md +54 -0
- package/roles/specifier.md +47 -0
- package/roles/verifier.md +71 -0
- package/schemas/README.md +24 -0
- package/schemas/accepted-learning.schema.json +20 -0
- package/schemas/author-artifact.schema.json +156 -0
- package/schemas/clarification.schema.json +19 -0
- package/schemas/design-artifact.schema.json +80 -0
- package/schemas/docs-claim.schema.json +18 -0
- package/schemas/export-manifest.schema.json +20 -0
- package/schemas/hook.schema.json +67 -0
- package/schemas/host-export-package.schema.json +18 -0
- package/schemas/implementation-plan.schema.json +19 -0
- package/schemas/proposed-learning.schema.json +19 -0
- package/schemas/research.schema.json +18 -0
- package/schemas/review.schema.json +29 -0
- package/schemas/run-manifest.schema.json +18 -0
- package/schemas/spec-challenge.schema.json +18 -0
- package/schemas/spec.schema.json +20 -0
- package/schemas/usage.schema.json +102 -0
- package/schemas/verification-proof.schema.json +29 -0
- package/schemas/wazir-manifest.schema.json +173 -0
- package/skills/README.md +40 -0
- package/skills/brainstorming/SKILL.md +77 -0
- package/skills/debugging/SKILL.md +50 -0
- package/skills/design/SKILL.md +61 -0
- package/skills/dispatching-parallel-agents/SKILL.md +128 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +169 -0
- package/skills/humanize/SKILL.md +123 -0
- package/skills/init-pipeline/SKILL.md +124 -0
- package/skills/prepare-next/SKILL.md +20 -0
- package/skills/receiving-code-review/SKILL.md +123 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +108 -0
- package/skills/run-audit/SKILL.md +197 -0
- package/skills/scan-project/SKILL.md +41 -0
- package/skills/self-audit/SKILL.md +153 -0
- package/skills/subagent-driven-development/SKILL.md +154 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +102 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/tdd/SKILL.md +23 -0
- package/skills/using-git-worktrees/SKILL.md +163 -0
- package/skills/using-skills/SKILL.md +95 -0
- package/skills/verification/SKILL.md +22 -0
- package/skills/wazir/SKILL.md +463 -0
- package/skills/writing-plans/SKILL.md +30 -0
- package/skills/writing-skills/SKILL.md +157 -0
- package/skills/writing-skills/anthropic-best-practices.md +122 -0
- package/skills/writing-skills/persuasion-principles.md +50 -0
- package/templates/README.md +20 -0
- package/templates/artifacts/README.md +10 -0
- package/templates/artifacts/accepted-learning.md +19 -0
- package/templates/artifacts/accepted-learning.template.json +12 -0
- package/templates/artifacts/author.md +74 -0
- package/templates/artifacts/author.template.json +19 -0
- package/templates/artifacts/clarification.md +21 -0
- package/templates/artifacts/clarification.template.json +12 -0
- package/templates/artifacts/execute-notes.md +19 -0
- package/templates/artifacts/implementation-plan.md +21 -0
- package/templates/artifacts/implementation-plan.template.json +11 -0
- package/templates/artifacts/learning-proposal.md +19 -0
- package/templates/artifacts/next-run-handoff.md +21 -0
- package/templates/artifacts/plan-review.md +19 -0
- package/templates/artifacts/proposed-learning.template.json +12 -0
- package/templates/artifacts/research.md +21 -0
- package/templates/artifacts/research.template.json +12 -0
- package/templates/artifacts/review-findings.md +19 -0
- package/templates/artifacts/review.template.json +11 -0
- package/templates/artifacts/run-manifest.template.json +8 -0
- package/templates/artifacts/spec-challenge.md +19 -0
- package/templates/artifacts/spec-challenge.template.json +11 -0
- package/templates/artifacts/spec.md +21 -0
- package/templates/artifacts/spec.template.json +12 -0
- package/templates/artifacts/verification-proof.md +19 -0
- package/templates/artifacts/verification-proof.template.json +11 -0
- package/templates/examples/accepted-learning.example.json +14 -0
- package/templates/examples/author.example.json +152 -0
- package/templates/examples/clarification.example.json +15 -0
- package/templates/examples/docs-claim.example.json +8 -0
- package/templates/examples/export-manifest.example.json +7 -0
- package/templates/examples/host-export-package.example.json +11 -0
- package/templates/examples/implementation-plan.example.json +17 -0
- package/templates/examples/proposed-learning.example.json +13 -0
- package/templates/examples/research.example.json +15 -0
- package/templates/examples/research.example.md +6 -0
- package/templates/examples/review.example.json +17 -0
- package/templates/examples/run-manifest.example.json +9 -0
- package/templates/examples/spec-challenge.example.json +14 -0
- package/templates/examples/spec.example.json +21 -0
- package/templates/examples/verification-proof.example.json +21 -0
- package/templates/examples/wazir-manifest.example.yaml +65 -0
- package/templates/task-definition-schema.md +99 -0
- package/tooling/README.md +20 -0
- package/tooling/src/adapters/context-mode.js +50 -0
- package/tooling/src/capture/command.js +376 -0
- package/tooling/src/capture/store.js +99 -0
- package/tooling/src/capture/usage.js +270 -0
- package/tooling/src/checks/branches.js +50 -0
- package/tooling/src/checks/brand-truth.js +110 -0
- package/tooling/src/checks/changelog.js +231 -0
- package/tooling/src/checks/command-registry.js +36 -0
- package/tooling/src/checks/commits.js +102 -0
- package/tooling/src/checks/docs-drift.js +103 -0
- package/tooling/src/checks/docs-truth.js +201 -0
- package/tooling/src/checks/runtime-surface.js +156 -0
- package/tooling/src/cli.js +116 -0
- package/tooling/src/command-options.js +56 -0
- package/tooling/src/commands/validate.js +320 -0
- package/tooling/src/doctor/command.js +91 -0
- package/tooling/src/export/command.js +77 -0
- package/tooling/src/export/compiler.js +498 -0
- package/tooling/src/guards/loop-cap-guard.js +52 -0
- package/tooling/src/guards/protected-path-write-guard.js +67 -0
- package/tooling/src/index/command.js +152 -0
- package/tooling/src/index/storage.js +1061 -0
- package/tooling/src/index/summarizers.js +261 -0
- package/tooling/src/loaders.js +18 -0
- package/tooling/src/project-root.js +22 -0
- package/tooling/src/recall/command.js +225 -0
- package/tooling/src/schema-validator.js +30 -0
- package/tooling/src/state-root.js +40 -0
- package/tooling/src/status/command.js +71 -0
- package/wazir.manifest.yaml +135 -0
- package/workflows/README.md +19 -0
- package/workflows/author.md +42 -0
- package/workflows/clarify.md +38 -0
- package/workflows/design-review.md +46 -0
- package/workflows/design.md +44 -0
- package/workflows/discover.md +37 -0
- package/workflows/execute.md +48 -0
- package/workflows/learn.md +38 -0
- package/workflows/plan-review.md +42 -0
- package/workflows/plan.md +39 -0
- package/workflows/prepare-next.md +37 -0
- package/workflows/review.md +40 -0
- package/workflows/run-audit.md +41 -0
- package/workflows/spec-challenge.md +41 -0
- package/workflows/specify.md +38 -0
- 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
|