@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,794 @@
|
|
|
1
|
+
# Tablet Design — Platform Module
|
|
2
|
+
|
|
3
|
+
> **Module type:** Platform
|
|
4
|
+
> **Scope:** Design guidelines for tablet form factors including iPad, Android tablets, foldables, and ChromeOS devices
|
|
5
|
+
> **References:** Apple iPadOS Human Interface Guidelines, Material Design 3 Large Screens, Android Adaptive App Quality Guidelines
|
|
6
|
+
> **Last updated:** 2026-03-07
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Table of Contents
|
|
11
|
+
|
|
12
|
+
1. [Platform Design Language](#1-platform-design-language)
|
|
13
|
+
2. [Layout & Navigation Patterns](#2-layout--navigation-patterns)
|
|
14
|
+
3. [Component Conventions](#3-component-conventions)
|
|
15
|
+
4. [Typography & Spacing System](#4-typography--spacing-system)
|
|
16
|
+
5. [Common Mistakes](#5-common-mistakes)
|
|
17
|
+
6. [Checklist](#6-checklist)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. Platform Design Language
|
|
22
|
+
|
|
23
|
+
### 1.1 Tablet as a Unique Form Factor
|
|
24
|
+
|
|
25
|
+
A tablet is not a big phone and not a small desktop. It occupies a distinct position in
|
|
26
|
+
the device spectrum that demands its own design thinking. Tablets are typically held
|
|
27
|
+
with two hands or propped on a surface, used for longer sessions than phones, and
|
|
28
|
+
support richer input modalities (touch, stylus, keyboard, trackpad). Users expect
|
|
29
|
+
tablet apps to take advantage of the larger canvas for productivity, media
|
|
30
|
+
consumption, and creative work.
|
|
31
|
+
|
|
32
|
+
**Key distinctions from phones:**
|
|
33
|
+
- Screen real estate enables multi-column layouts and simultaneous content display
|
|
34
|
+
- Users hold tablets farther from their eyes than phones (approximately arm's length)
|
|
35
|
+
- Sessions tend to be longer and more focused (couch, desk, or travel scenarios)
|
|
36
|
+
- External input devices (keyboard, trackpad, mouse, stylus) are common
|
|
37
|
+
- Landscape orientation is used as frequently as portrait, unlike phones
|
|
38
|
+
|
|
39
|
+
**Key distinctions from desktops:**
|
|
40
|
+
- Touch remains the primary input modality even when keyboard is attached
|
|
41
|
+
- Screen sizes are smaller (typically 8-13 inches vs 13+ inches for laptops)
|
|
42
|
+
- Apps run in managed window environments, not free-form desktop windows (though iPadOS Stage Manager is narrowing this gap)
|
|
43
|
+
- Portability means context-switching between held, propped, and docked usage
|
|
44
|
+
|
|
45
|
+
### 1.2 iPadOS Design Philosophy
|
|
46
|
+
|
|
47
|
+
Apple positions the iPad as a versatile device for productivity, creativity, and media
|
|
48
|
+
consumption. The iPadOS design language emphasizes:
|
|
49
|
+
|
|
50
|
+
**Multitasking as a core capability:**
|
|
51
|
+
- Split View allows two apps side by side (50/50 or 66/33 split)
|
|
52
|
+
- Slide Over provides a narrow floating app panel over the primary app
|
|
53
|
+
- iPadOS 26 introduced windowed apps with Stage Manager, enabling desktop-style window management with resize handles, a menu bar, and familiar close/minimize/full-screen controls
|
|
54
|
+
- Every app that supports multitasking shows a resize handle in the bottom-right corner
|
|
55
|
+
- Apps must gracefully adapt to all these presentation modes
|
|
56
|
+
|
|
57
|
+
**Apple Pencil integration:**
|
|
58
|
+
- Apple Pencil hover activates when the nib is within 12mm of the display (iPad Pro M2+)
|
|
59
|
+
- Hover uses existing UIPointerInteraction and UIHoverGestureRecognizer APIs, so apps that support trackpad pointer interaction get Pencil hover for free
|
|
60
|
+
- Developers can customize hover behavior: tool previews, menu highlighting, line previews, pressure-sensitive previews
|
|
61
|
+
- Pencil supports tilt, pressure, and azimuth for drawing and annotation apps
|
|
62
|
+
- Double-tap gesture on Apple Pencil 2 for tool switching
|
|
63
|
+
|
|
64
|
+
**Liquid Glass design system (iPadOS 26+):**
|
|
65
|
+
- Sidebars are inset and built with Liquid Glass, allowing content to flow behind them
|
|
66
|
+
- Tab bars and sidebars float above app content using translucent materials
|
|
67
|
+
- The design creates a more immersive, layered visual experience
|
|
68
|
+
- Navigation elements feel lighter and less obstructive
|
|
69
|
+
|
|
70
|
+
**Content-first philosophy:**
|
|
71
|
+
- The larger screen should reveal more content, not just bigger controls
|
|
72
|
+
- Toolbars and navigation should minimize their footprint
|
|
73
|
+
- Full-screen immersive experiences are encouraged for media and creative apps
|
|
74
|
+
- The readable content guide constrains text to approximately 672 points wide, inset 176 points from view edges
|
|
75
|
+
|
|
76
|
+
*Reference: [Designing for iPadOS — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/designing-for-ipados)*
|
|
77
|
+
|
|
78
|
+
### 1.3 Android Tablet and Foldable Design
|
|
79
|
+
|
|
80
|
+
Google's approach to tablet design centers on Material Design 3 canonical layouts
|
|
81
|
+
and the adaptive design framework introduced with Android 12L and refined through
|
|
82
|
+
subsequent releases.
|
|
83
|
+
|
|
84
|
+
**Material 3 canonical layouts:**
|
|
85
|
+
Three standard layout patterns serve as the foundation for tablet UI:
|
|
86
|
+
|
|
87
|
+
1. **List-Detail** — A list pane alongside a detail pane. Ideal for email, messaging,
|
|
88
|
+
file browsers, and any content that involves browsing and selecting items.
|
|
89
|
+
2. **Supporting Pane** — A primary content area with a secondary pane that provides
|
|
90
|
+
contextual information or tools. Useful for document editors, maps with info
|
|
91
|
+
panels, and media players with metadata.
|
|
92
|
+
3. **Feed** — A grid or column-based composition for browsing content such as news,
|
|
93
|
+
photos, and social media. Uses a responsive grid that adapts column count to
|
|
94
|
+
available width.
|
|
95
|
+
|
|
96
|
+
These layouts adapt across all window size classes (compact, medium, expanded,
|
|
97
|
+
large, extra-large) and work on phones, tablets, foldables, and ChromeOS devices.
|
|
98
|
+
|
|
99
|
+
**Window size classes (width breakpoints):**
|
|
100
|
+
| Class | Width Range | Typical Devices |
|
|
101
|
+
|--------------|------------------|-------------------------------------------|
|
|
102
|
+
| Compact | < 600dp | Phone portrait |
|
|
103
|
+
| Medium | 600dp - 839dp | Tablet portrait, foldable portrait |
|
|
104
|
+
| Expanded | 840dp - 1199dp | Tablet landscape, foldable landscape |
|
|
105
|
+
| Large | 1200dp - 1599dp | Desktop, large tablet landscape |
|
|
106
|
+
| Extra-Large | >= 1600dp | Ultra-wide, connected displays |
|
|
107
|
+
|
|
108
|
+
**Android 16+ requirements (effective 2025-2026):**
|
|
109
|
+
- Apps targeting API level 36 must support all orientations and aspect ratios on large screen devices (smallest width >= 600dp)
|
|
110
|
+
- App resizability is the baseline expectation
|
|
111
|
+
- Google Play will require API 36 targeting as of August 2026
|
|
112
|
+
|
|
113
|
+
**Visual grouping and containment:**
|
|
114
|
+
- Larger screens can create visual noise from increased visible content
|
|
115
|
+
- Use visual grouping principles (cards, containers, dividers) to organize related elements
|
|
116
|
+
- Maintain maximum line length of approximately 60 characters for readability
|
|
117
|
+
|
|
118
|
+
*Reference: [Material Design 3 — Canonical Layouts](https://m3.material.io/foundations/layout/canonical-layouts/overview), [Android Large Screen Quality](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality)*
|
|
119
|
+
|
|
120
|
+
### 1.4 Content-First Design for Larger Screens
|
|
121
|
+
|
|
122
|
+
The additional screen real estate on tablets should serve the content, not the chrome.
|
|
123
|
+
|
|
124
|
+
**Principles:**
|
|
125
|
+
- Show more content rather than scaling up phone layouts with empty space
|
|
126
|
+
- Use multi-pane layouts to reduce navigation depth (show list and detail simultaneously)
|
|
127
|
+
- Present richer previews, larger images, and more context inline
|
|
128
|
+
- Allow direct manipulation and editing without navigating to separate screens
|
|
129
|
+
- Use the extra space for productivity features: toolbars, inspectors, side panels
|
|
130
|
+
- Avoid centering small content blocks in large expanses of whitespace
|
|
131
|
+
|
|
132
|
+
**Content density considerations:**
|
|
133
|
+
- Tablets support higher information density than phones but lower than desktops
|
|
134
|
+
- Group related information visually using cards, sections, or columns
|
|
135
|
+
- Maintain comfortable reading line lengths (50-75 characters, 60 optimal)
|
|
136
|
+
- Use progressive disclosure — show summaries in the list pane, full content in detail
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 2. Layout & Navigation Patterns
|
|
141
|
+
|
|
142
|
+
### 2.1 iPad: Sidebar + Content
|
|
143
|
+
|
|
144
|
+
The primary navigation pattern on iPad is the sidebar combined with a content area,
|
|
145
|
+
implemented via UISplitViewController (UIKit) or NavigationSplitView (SwiftUI).
|
|
146
|
+
|
|
147
|
+
**Sidebar behavior:**
|
|
148
|
+
- A sidebar appears on the leading side and lets users navigate between app sections
|
|
149
|
+
- Sidebars are ideal for apps with complex content hierarchies (Mail, Files, Music)
|
|
150
|
+
- In iPadOS 26+, sidebars use Liquid Glass and float above content
|
|
151
|
+
- Sidebars can be toggled visible/hidden, and the content area adjusts accordingly
|
|
152
|
+
- In compact width (portrait or Slide Over), the sidebar collapses into a tab bar
|
|
153
|
+
|
|
154
|
+
**Tab bar adaptation:**
|
|
155
|
+
- By adopting UITab and UITabGroup, apps get automatic adaptivity: tab bar in compact width, sidebar in regular width
|
|
156
|
+
- On iPad, the tab bar floats above content using Liquid Glass material
|
|
157
|
+
- Users can switch between tab bar and sidebar presentation
|
|
158
|
+
- The tab bar on iPad uses a horizontal layout with larger labels (13pt vs 10pt on iPhone)
|
|
159
|
+
- Tab bars support up to 5-7 primary destinations
|
|
160
|
+
|
|
161
|
+
**Split view configurations:**
|
|
162
|
+
- Two-column: sidebar + detail (most common)
|
|
163
|
+
- Three-column: sidebar + supplementary + detail (for complex apps like Mail)
|
|
164
|
+
- Column widths adapt based on available space and orientation
|
|
165
|
+
- In portrait, the sidebar may overlay the content or be hidden behind a toggle
|
|
166
|
+
|
|
167
|
+
*Reference: [Sidebars — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/sidebars), [Tab Bars — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/tab-bars)*
|
|
168
|
+
|
|
169
|
+
### 2.2 Android: Navigation Rail and Canonical Layouts
|
|
170
|
+
|
|
171
|
+
**Navigation Rail:**
|
|
172
|
+
- A vertical strip of navigation destinations placed along the leading edge of the screen
|
|
173
|
+
- Default width: 80dp (Material Design 2) or 96dp (Material Design 3)
|
|
174
|
+
- Supports 3-7 destinations plus an optional floating action button (FAB) at the top
|
|
175
|
+
- Replaces the bottom navigation bar when the window width is medium (>= 600dp) or larger
|
|
176
|
+
- On compact screens, the navigation rail converts to a bottom navigation bar
|
|
177
|
+
- Navigation rails let users switch between top-level views while keeping the navigation accessible and compact
|
|
178
|
+
|
|
179
|
+
**Canonical layout implementation:**
|
|
180
|
+
|
|
181
|
+
**List-Detail:**
|
|
182
|
+
- On medium/expanded screens: side-by-side panes with the list occupying roughly 1/3 width
|
|
183
|
+
- On compact screens: single-pane with back navigation between list and detail
|
|
184
|
+
- The list pane width should be sufficient to display meaningful list items (typically 300-400dp)
|
|
185
|
+
- The detail pane fills the remaining space
|
|
186
|
+
|
|
187
|
+
**Supporting Pane:**
|
|
188
|
+
- Primary pane occupies the majority of the window (roughly 2/3)
|
|
189
|
+
- Supporting pane provides contextual tools, metadata, or related content
|
|
190
|
+
- On compact screens, the supporting pane may move below the primary content or become a bottom sheet
|
|
191
|
+
|
|
192
|
+
**Feed:**
|
|
193
|
+
- Uses a responsive grid that adjusts column count based on available width
|
|
194
|
+
- Cards or tiles maintain consistent aspect ratios while reflowing
|
|
195
|
+
- On compact screens: single column; on medium: 2 columns; on expanded: 3+ columns
|
|
196
|
+
|
|
197
|
+
**Navigation Drawer:**
|
|
198
|
+
- For apps with more than 7 destinations, a persistent or modal navigation drawer replaces the rail
|
|
199
|
+
- On large screens, a persistent drawer (256dp wide) can coexist with content
|
|
200
|
+
- On medium screens, a modal drawer overlays the content when opened
|
|
201
|
+
|
|
202
|
+
*Reference: [Navigation Rail — Material Design 3](https://m3.material.io/components/navigation-rail/guidelines), [Canonical Layouts — Android Developers](https://developer.android.com/guide/topics/large-screens/large-screen-canonical-layouts)*
|
|
203
|
+
|
|
204
|
+
### 2.3 Split-Screen and Multitasking Layout Considerations
|
|
205
|
+
|
|
206
|
+
When an app runs alongside another app in split-screen mode, it may receive
|
|
207
|
+
significantly less width than full-screen. Designs must handle this gracefully.
|
|
208
|
+
|
|
209
|
+
**iPad multitasking modes:**
|
|
210
|
+
- **Split View 50/50:** Each app gets roughly half the screen. A 12.9" iPad Pro in landscape gives each app about 682pt width (similar to a phone in landscape)
|
|
211
|
+
- **Split View 66/33:** The primary app gets about 2/3 of the screen. The secondary app gets a phone-like compact width
|
|
212
|
+
- **Slide Over:** The floating panel is approximately 320pt wide — essentially phone-sized
|
|
213
|
+
- **Stage Manager windows:** Apps can be freely resized, requiring truly responsive layouts that work at any dimension
|
|
214
|
+
- **Picture in Picture:** Video content can float in a small overlay while the user works in another app
|
|
215
|
+
|
|
216
|
+
**Android multi-window:**
|
|
217
|
+
- Split-screen mode gives each app half the display (or custom split ratios)
|
|
218
|
+
- Apps must handle any width between their minimum and maximum supported sizes
|
|
219
|
+
- Free-form window mode (on ChromeOS and some tablets) allows arbitrary sizing
|
|
220
|
+
- Starting with Android 16, resizability is mandatory for large-screen devices
|
|
221
|
+
|
|
222
|
+
**Design implications:**
|
|
223
|
+
- Never assume your app will have the full screen width
|
|
224
|
+
- Test layouts at multiple widths, including very narrow (320dp) and very wide (1200dp+)
|
|
225
|
+
- Use responsive breakpoints to switch between single-column and multi-column layouts
|
|
226
|
+
- Ensure critical controls and content remain accessible at all sizes
|
|
227
|
+
- Avoid fixed-width layouts that break at unexpected dimensions
|
|
228
|
+
|
|
229
|
+
### 2.4 Landscape vs Portrait Design
|
|
230
|
+
|
|
231
|
+
Both orientations must work well on tablets. Unlike phones where portrait dominates,
|
|
232
|
+
tablets are frequently used in landscape — especially with keyboard accessories.
|
|
233
|
+
|
|
234
|
+
**Landscape priorities:**
|
|
235
|
+
- This is the primary productivity orientation, often used with keyboard and trackpad
|
|
236
|
+
- Favor horizontal layouts: sidebar + content, list-detail split views
|
|
237
|
+
- Navigation rails and sidebars work naturally in landscape
|
|
238
|
+
- Wider content areas enable multi-column text and side-by-side comparisons
|
|
239
|
+
- Toolbars can be more expansive, showing labels alongside icons
|
|
240
|
+
|
|
241
|
+
**Portrait priorities:**
|
|
242
|
+
- Common for reading, casual browsing, and hand-held use
|
|
243
|
+
- Sidebars typically collapse or become overlays
|
|
244
|
+
- Tab bars move to the bottom for ergonomic thumb reach
|
|
245
|
+
- Single-column layouts are often appropriate, but 2-column layouts can still work on larger tablets (12.9" iPad Pro is 1024pt wide in portrait)
|
|
246
|
+
- Vertical scrolling becomes the primary navigation model
|
|
247
|
+
|
|
248
|
+
**Transition handling:**
|
|
249
|
+
- Layout changes between orientations must be smooth and preserve user state
|
|
250
|
+
- Scroll position, selection state, and form input must survive rotation
|
|
251
|
+
- Avoid jarring content reflows — use animation to guide the user's eye
|
|
252
|
+
- On iPad, the readable content guide automatically adjusts width based on orientation
|
|
253
|
+
|
|
254
|
+
### 2.5 Foldable Considerations
|
|
255
|
+
|
|
256
|
+
Foldable devices introduce unique form factors that require fold-aware design.
|
|
257
|
+
|
|
258
|
+
**Postures:**
|
|
259
|
+
|
|
260
|
+
| Posture | Hinge Position | Description | Use Cases |
|
|
261
|
+
|------------|----------------|-------------------------------------------------|----------------------------------------|
|
|
262
|
+
| Flat | Fully open | Device is fully unfolded, functions like a tablet| Standard tablet usage |
|
|
263
|
+
| Tabletop | Horizontal | Device rests on surface, half-opened | Video calls, media playback, camera |
|
|
264
|
+
| Book | Vertical | Device half-opened like a book | Reading, two-page layouts, dual-pane |
|
|
265
|
+
| Folded | Closed | Cover screen only | Notifications, quick interactions |
|
|
266
|
+
|
|
267
|
+
**Fold-aware layout guidelines:**
|
|
268
|
+
- Use the Jetpack WindowManager library to detect fold state and hinge position
|
|
269
|
+
- The FoldingFeature API provides the bounding rectangle of the fold/hinge within the window
|
|
270
|
+
- Never place critical interactive elements across or too close to the fold/hinge area
|
|
271
|
+
- Use the fold as a natural content separator — split content into two logical areas
|
|
272
|
+
|
|
273
|
+
**Tabletop mode design:**
|
|
274
|
+
- Split the UI into an upper viewing area and a lower control area
|
|
275
|
+
- Upper half: video, camera viewfinder, or content display
|
|
276
|
+
- Lower half: controls, comments, chat, or navigation
|
|
277
|
+
- This mirrors how a laptop separates screen from keyboard
|
|
278
|
+
|
|
279
|
+
**Book mode design:**
|
|
280
|
+
- Split content into left and right panes along the vertical fold
|
|
281
|
+
- Ideal for e-readers (two-page spread), comparison views, and reference layouts
|
|
282
|
+
- Each pane should be independently scrollable when appropriate
|
|
283
|
+
- Respect the physical gap/hinge — do not render content across the fold line
|
|
284
|
+
|
|
285
|
+
**Continuity principles:**
|
|
286
|
+
- Preserve user state when the device posture changes (fold/unfold)
|
|
287
|
+
- Content visible on the cover screen should remain accessible when unfolded
|
|
288
|
+
- Avoid restarting activities or losing scroll position during posture transitions
|
|
289
|
+
- Provide seamless app continuity between inner and outer displays
|
|
290
|
+
|
|
291
|
+
*Reference: [Learn About Foldables — Android Developers](https://developer.android.com/guide/topics/large-screens/learn-about-foldables), [Make Your App Fold Aware — Android Developers](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/make-your-app-fold-aware)*
|
|
292
|
+
|
|
293
|
+
### 2.6 Multi-Column Layouts
|
|
294
|
+
|
|
295
|
+
Multi-column layouts are the most significant differentiator between tablet and phone
|
|
296
|
+
design. Using the extra width effectively is what separates a good tablet app from a
|
|
297
|
+
stretched phone app.
|
|
298
|
+
|
|
299
|
+
**Column strategies by device width:**
|
|
300
|
+
|
|
301
|
+
| Width Class | Columns | Grid System | Typical Use |
|
|
302
|
+
|----------------|---------|-----------------------------------|------------------------------------|
|
|
303
|
+
| Compact (<600) | 1 | 4-column grid, 16dp margins | Phone, Slide Over |
|
|
304
|
+
| Medium (600+) | 1-2 | 8-column grid, 24dp margins | Tablet portrait, foldable |
|
|
305
|
+
| Expanded (840+)| 2-3 | 12-column grid, 24-32dp margins | Tablet landscape, desktop |
|
|
306
|
+
| Large (1200+) | 2-3 | 12-column grid, 32dp+ margins | Large tablet landscape, desktop |
|
|
307
|
+
|
|
308
|
+
**Implementation patterns:**
|
|
309
|
+
- Use percentage-based column widths rather than fixed pixel values
|
|
310
|
+
- Set maximum content width to prevent text lines from becoming too long (typically 800-1200px or 672pt for Apple's readable content guide)
|
|
311
|
+
- Allow columns to reflow between 1, 2, and 3 columns based on available width
|
|
312
|
+
- In a 2-column layout, the primary column typically occupies 60-67% width
|
|
313
|
+
- In a 3-column layout: navigation (20-25%) + content (40-50%) + detail (25-35%)
|
|
314
|
+
|
|
315
|
+
**Content reflow rules:**
|
|
316
|
+
- Cards and grid items should maintain consistent aspect ratios while reflowing
|
|
317
|
+
- Avoid orphaned single items in the last row of a grid
|
|
318
|
+
- Use staggered grids for variable-height content (photos, social media)
|
|
319
|
+
- Column gutters should be 16-24dp (compact) or 24-32dp (expanded)
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## 3. Component Conventions
|
|
324
|
+
|
|
325
|
+
### 3.1 Popovers vs Full-Screen Sheets
|
|
326
|
+
|
|
327
|
+
The same action that triggers a full-screen sheet on iPhone should typically use a
|
|
328
|
+
popover or form sheet on iPad.
|
|
329
|
+
|
|
330
|
+
**iPad (regular width):**
|
|
331
|
+
- Popovers: Small, arrow-anchored views that float over content. Used for quick
|
|
332
|
+
selections, color pickers, formatting options, and date pickers. Dismissed by tapping
|
|
333
|
+
outside. Anchor the popover arrow to the control that triggered it.
|
|
334
|
+
- Form sheets: Centered modal views that dim the background. Used for multi-step
|
|
335
|
+
tasks, complex forms, settings. Narrower than full screen, allowing the parent
|
|
336
|
+
content to remain partially visible for context.
|
|
337
|
+
- Page sheets: Similar to form sheets but taller, covering more of the screen.
|
|
338
|
+
Appropriate for content that benefits from more vertical space.
|
|
339
|
+
|
|
340
|
+
**iPhone (compact width):**
|
|
341
|
+
- The same view controller presented as a popover or form sheet on iPad automatically
|
|
342
|
+
adapts to a full-screen or card-style sheet on iPhone
|
|
343
|
+
- This adaptive behavior is built into UIKit via UIAdaptivePresentationControllerDelegate
|
|
344
|
+
- Bottom sheets (half-sheet detents) are common on iPhone for quick selections
|
|
345
|
+
|
|
346
|
+
**Design rules:**
|
|
347
|
+
- Use sheets for non-immersive tasks that don't require the full screen
|
|
348
|
+
- Use full-screen modals only for immersive content (video, camera, photos) or complex multi-step flows
|
|
349
|
+
- On iPad, avoid full-screen modals for simple tasks — they feel excessive on larger screens
|
|
350
|
+
- Popovers should not exceed approximately 400pt width or 600pt height
|
|
351
|
+
- Always provide a clear dismiss action (done button, cancel button, or tap-outside)
|
|
352
|
+
|
|
353
|
+
*Reference: [Sheets — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/sheets)*
|
|
354
|
+
|
|
355
|
+
### 3.2 Context Menus and Hover States
|
|
356
|
+
|
|
357
|
+
Tablets increasingly support precision input via trackpad, mouse, and stylus, making
|
|
358
|
+
context menus and hover states important design considerations.
|
|
359
|
+
|
|
360
|
+
**Context menus (long-press / right-click):**
|
|
361
|
+
- On iPadOS, context menus appear on long-press (touch) or secondary click (trackpad/mouse)
|
|
362
|
+
- Context menus can include actions, previews, and nested submenus
|
|
363
|
+
- Always make context menu items available elsewhere in the main interface (toolbar, action sheet) — context menus are a shortcut, not the only path
|
|
364
|
+
- Consider using context menus to let users create new objects or perform bulk actions
|
|
365
|
+
- iPadOS displays a flat list of items per category in the keyboard shortcut overlay, so provide descriptive titles with sufficient context
|
|
366
|
+
|
|
367
|
+
**Hover states (trackpad, mouse, Apple Pencil):**
|
|
368
|
+
- When a trackpad or mouse is connected, interactive elements should provide visual hover feedback
|
|
369
|
+
- UIPointerInteraction provides the system hover effect (highlight, lift, morph) on iPadOS
|
|
370
|
+
- Apple Pencil hover (12mm above display) uses the same UIPointerInteraction APIs
|
|
371
|
+
- Hover states help communicate interactivity and provide spatial orientation
|
|
372
|
+
- Do not rely on hover for essential functionality — touch users will not see hover states
|
|
373
|
+
- Use hover to reveal secondary information, preview content, or highlight drop targets
|
|
374
|
+
|
|
375
|
+
**Android considerations:**
|
|
376
|
+
- Material Design supports hover states for mouse and stylus input
|
|
377
|
+
- Ripple effects serve as the primary interaction feedback on touch
|
|
378
|
+
- ChromeOS devices with mice benefit from hover state implementation
|
|
379
|
+
- Right-click context menus should be supported when a mouse is connected
|
|
380
|
+
|
|
381
|
+
### 3.3 Drag and Drop
|
|
382
|
+
|
|
383
|
+
Drag and drop is a first-class interaction pattern on iPad and should be supported for
|
|
384
|
+
any app that handles content like text, images, files, or structured data.
|
|
385
|
+
|
|
386
|
+
**iPad drag and drop:**
|
|
387
|
+
- Users can drag content within an app or between apps (cross-app drag and drop)
|
|
388
|
+
- Long-press lifts an item, then the user can drag it to a target location
|
|
389
|
+
- Multiple items can be collected by tapping additional items while dragging
|
|
390
|
+
- Visual feedback must clearly indicate draggable items and valid drop targets
|
|
391
|
+
- During drag, the source content should remain visible (not disappear)
|
|
392
|
+
- Spring-loading: hovering over a navigation element during drag should activate it (open a folder, switch tabs)
|
|
393
|
+
|
|
394
|
+
**Content types for drag and drop:**
|
|
395
|
+
- Text selections (plain text and rich text)
|
|
396
|
+
- Images and photos
|
|
397
|
+
- Files and documents
|
|
398
|
+
- URLs and links
|
|
399
|
+
- Custom data types via NSItemProvider
|
|
400
|
+
|
|
401
|
+
**Design guidelines:**
|
|
402
|
+
- Make all selectable and editable content draggable
|
|
403
|
+
- Provide clear visual lift animation when drag begins
|
|
404
|
+
- Highlight valid drop zones with color change or border indication
|
|
405
|
+
- Show a preview of the content being dragged (badge with count for multiple items)
|
|
406
|
+
- Support both move and copy semantics (copy is default for cross-app)
|
|
407
|
+
- On Android, implement View.OnDragListener for drag-and-drop support
|
|
408
|
+
|
|
409
|
+
*Reference: [Drag and Drop — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/drag-and-drop)*
|
|
410
|
+
|
|
411
|
+
### 3.4 Keyboard Shortcuts with External Keyboard
|
|
412
|
+
|
|
413
|
+
Many tablet users attach external keyboards, and apps should provide keyboard
|
|
414
|
+
shortcuts for common actions.
|
|
415
|
+
|
|
416
|
+
**iPadOS keyboard shortcut guidelines:**
|
|
417
|
+
- Define shortcuts only for the most common and frequent actions
|
|
418
|
+
- Use standard system shortcuts (Cmd+C, Cmd+V, Cmd+Z, Cmd+F) consistently
|
|
419
|
+
- Hold the Command key to reveal the keyboard shortcut overlay
|
|
420
|
+
- The overlay displays shortcuts organized by category in a flat list
|
|
421
|
+
- Provide descriptive shortcut titles — submenu context is not shown in the overlay
|
|
422
|
+
- Avoid defining too many custom shortcuts, which can make the app seem complex
|
|
423
|
+
|
|
424
|
+
**Essential shortcuts to implement:**
|
|
425
|
+
- Cmd+N: New item/document
|
|
426
|
+
- Cmd+S: Save
|
|
427
|
+
- Cmd+F: Find/Search
|
|
428
|
+
- Cmd+Z / Cmd+Shift+Z: Undo/Redo
|
|
429
|
+
- Cmd+C / Cmd+X / Cmd+V: Copy/Cut/Paste
|
|
430
|
+
- Cmd+A: Select all
|
|
431
|
+
- Cmd+W: Close current view/tab
|
|
432
|
+
- Arrow keys: Navigation within lists and grids
|
|
433
|
+
- Tab / Shift+Tab: Move between form fields
|
|
434
|
+
- Return/Enter: Confirm selection or submit
|
|
435
|
+
- Escape: Cancel or dismiss
|
|
436
|
+
|
|
437
|
+
**Android keyboard support:**
|
|
438
|
+
- Handle KeyEvent for physical keyboard input
|
|
439
|
+
- Support standard keyboard shortcuts (Ctrl+C, Ctrl+V, etc.)
|
|
440
|
+
- Implement arrow key navigation for lists and grids
|
|
441
|
+
- Tab key should move focus between interactive elements
|
|
442
|
+
- Starting with Android 16, basic keyboard support is required for large-screen apps
|
|
443
|
+
|
|
444
|
+
**Discoverability:**
|
|
445
|
+
- iPadOS provides the built-in shortcut overlay (hold Command key)
|
|
446
|
+
- Android apps should provide a help screen or tooltip listing available shortcuts
|
|
447
|
+
- Consider showing shortcut hints next to menu items (as desktop apps do)
|
|
448
|
+
|
|
449
|
+
### 3.5 Apple Pencil and Stylus Interactions
|
|
450
|
+
|
|
451
|
+
Stylus input is a differentiating tablet capability that enables precision work not
|
|
452
|
+
possible with finger touch alone.
|
|
453
|
+
|
|
454
|
+
**Apple Pencil capabilities:**
|
|
455
|
+
- Pressure sensitivity: Variable line width and opacity based on pressure
|
|
456
|
+
- Tilt detection: Shading effects based on pencil angle (azimuth)
|
|
457
|
+
- Hover detection: Preview tool effects before touching the display (M2+ iPads)
|
|
458
|
+
- Double-tap gesture: Quick tool switching (eraser toggle, color picker)
|
|
459
|
+
- Squeeze gesture: Tool palette access (Apple Pencil Pro)
|
|
460
|
+
- Barrel roll: Rotation detection for shaped brushes (Apple Pencil Pro)
|
|
461
|
+
- Low latency: Apple optimizes for minimal drawing latency with Pencil
|
|
462
|
+
|
|
463
|
+
**Design patterns for stylus:**
|
|
464
|
+
- Drawing and annotation: Provide a canvas with tool palette (pencil, pen, marker, eraser)
|
|
465
|
+
- Precision selection: Allow pixel-level selection and placement with stylus
|
|
466
|
+
- Handwriting recognition: Scribble enables handwriting in any text field
|
|
467
|
+
- Markup and review: Enable annotation overlays on documents and images
|
|
468
|
+
- Note-taking: Support freeform ink alongside typed text
|
|
469
|
+
|
|
470
|
+
**Stylus-specific considerations:**
|
|
471
|
+
- Distinguish between finger and stylus input — some apps use finger for panning and stylus for drawing
|
|
472
|
+
- Provide palm rejection when stylus is in use
|
|
473
|
+
- Support both left-handed and right-handed users (tool palette positioning)
|
|
474
|
+
- On Android, stylus support varies by device — use MotionEvent.TOOL_TYPE_STYLUS to detect
|
|
475
|
+
- Samsung S Pen has unique features (air actions, remote control) that are device-specific
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## 4. Typography & Spacing System
|
|
480
|
+
|
|
481
|
+
### 4.1 Tablet Typography
|
|
482
|
+
|
|
483
|
+
Font sizes on tablets are generally close to phone sizes because tablets are held
|
|
484
|
+
slightly farther from the eyes, which compensates for the larger physical display.
|
|
485
|
+
|
|
486
|
+
**iPadOS typography:**
|
|
487
|
+
- Body text: 17pt (same as iPhone — the viewing distance compensation means the same size works)
|
|
488
|
+
- Headlines: 22-34pt depending on hierarchy level
|
|
489
|
+
- Captions: 12-15pt
|
|
490
|
+
- Tab bar labels: 13pt on iPad (vs 10pt on iPhone) with horizontal layout
|
|
491
|
+
- Navigation titles: Large title style (34pt) in scrolling contexts
|
|
492
|
+
- Dynamic Type must be supported — users can scale text from ~80% to ~310% of default
|
|
493
|
+
|
|
494
|
+
**Material Design 3 typography for tablets:**
|
|
495
|
+
- Display: 36-57sp for prominent headlines
|
|
496
|
+
- Headline: 24-32sp for section headers
|
|
497
|
+
- Title: 14-22sp for component headers
|
|
498
|
+
- Body: 14-16sp for main content
|
|
499
|
+
- Label: 11-14sp for supporting text
|
|
500
|
+
- Line height ratios of 1.4-1.6 for body text readability
|
|
501
|
+
- Maximum line length: approximately 60 characters for optimal readability
|
|
502
|
+
|
|
503
|
+
**Cross-platform recommendations:**
|
|
504
|
+
- Maintain a clear type hierarchy with at least 3-4 distinct levels
|
|
505
|
+
- Use heavier weights or color contrast rather than size alone for hierarchy on larger screens
|
|
506
|
+
- Ensure minimum body text size of 14-16pt/sp for comfortable reading
|
|
507
|
+
- Test readability at arm's length, which is the typical tablet viewing distance
|
|
508
|
+
- Support system font scaling / Dynamic Type on both platforms
|
|
509
|
+
|
|
510
|
+
### 4.2 Margins and Spacing
|
|
511
|
+
|
|
512
|
+
Tablet layouts require larger margins than phone layouts to prevent content from
|
|
513
|
+
feeling pressed against the screen edges.
|
|
514
|
+
|
|
515
|
+
**iPadOS margins and spacing:**
|
|
516
|
+
- Standard layout margins: 20pt on smaller iPads, increased on larger iPads
|
|
517
|
+
- The system readable content guide constrains text to approximately 672pt wide
|
|
518
|
+
- Readable content inset: approximately 176pt from each edge on a full-width 12.9" iPad
|
|
519
|
+
- Section spacing: 20-35pt between major content sections
|
|
520
|
+
- Card padding: 16-20pt internal padding
|
|
521
|
+
- The layout margins guide provides automatic insets that respect safe areas
|
|
522
|
+
|
|
523
|
+
**Material Design 3 margins and spacing:**
|
|
524
|
+
| Window Size Class | Margins | Gutters | Columns |
|
|
525
|
+
|-------------------|----------|----------|---------|
|
|
526
|
+
| Compact (<600dp) | 16dp | 8dp | 4 |
|
|
527
|
+
| Medium (600-839dp)| 24dp | 16-24dp | 8 |
|
|
528
|
+
| Expanded (840dp+) | 24-32dp | 24dp | 12 |
|
|
529
|
+
| Large (1200dp+) | 32dp+ | 24-32dp | 12 |
|
|
530
|
+
|
|
531
|
+
**Spacing scale (8dp/8pt base unit):**
|
|
532
|
+
- 4dp/pt: Minimal spacing (related inline elements)
|
|
533
|
+
- 8dp/pt: Tight spacing (within component groups)
|
|
534
|
+
- 12dp/pt: Compact spacing
|
|
535
|
+
- 16dp/pt: Standard spacing (between components on phone)
|
|
536
|
+
- 24dp/pt: Comfortable spacing (standard on tablet)
|
|
537
|
+
- 32dp/pt: Generous spacing (between major sections on tablet)
|
|
538
|
+
- 48dp/pt: Separator spacing (between distinct content groups)
|
|
539
|
+
- 64dp/pt: Section breaks on large screens
|
|
540
|
+
|
|
541
|
+
### 4.3 Content Width Constraints
|
|
542
|
+
|
|
543
|
+
Even though the tablet provides more horizontal space, text content must be
|
|
544
|
+
constrained to maintain readability.
|
|
545
|
+
|
|
546
|
+
**Maximum content width guidelines:**
|
|
547
|
+
- Body text blocks: 672pt (Apple readable content guide) or 600-800dp (Material)
|
|
548
|
+
- Full-width cards: Constrain to approximately 840dp maximum, or use multi-column card grid
|
|
549
|
+
- Forms: Single-column forms should not exceed 600dp width; use multi-column layout for wider screens
|
|
550
|
+
- Tables and data grids: Can use full width but should include column resizing
|
|
551
|
+
- Images: Can go full-width in single-pane layouts but should respect margins
|
|
552
|
+
- Media players: Full-width with controls, but metadata and comments should be width-constrained
|
|
553
|
+
|
|
554
|
+
**Readable line length:**
|
|
555
|
+
- Optimal: 50-75 characters per line (approximately 60 characters as the sweet spot)
|
|
556
|
+
- Minimum: 30 characters per line (very narrow columns)
|
|
557
|
+
- Maximum: 100 characters per line (beyond this, reading comprehension drops)
|
|
558
|
+
- Use the platform's readable content guide rather than hardcoding widths
|
|
559
|
+
|
|
560
|
+
### 4.4 Interactive Element Spacing
|
|
561
|
+
|
|
562
|
+
Touch targets on tablets follow similar minimum sizes as phones, but the additional
|
|
563
|
+
screen space allows more generous spacing.
|
|
564
|
+
|
|
565
|
+
**Minimum touch target sizes:**
|
|
566
|
+
- Apple HIG: 44pt x 44pt minimum tappable area for all controls
|
|
567
|
+
- Material Design: 48dp x 48dp recommended touch target
|
|
568
|
+
- WCAG 2.5.5 (AAA): 44 x 44 CSS pixels minimum target size
|
|
569
|
+
- These minimums apply regardless of screen size — larger screens do not justify smaller targets
|
|
570
|
+
|
|
571
|
+
**Spacing between interactive elements:**
|
|
572
|
+
- Minimum 8dp/pt between adjacent tappable targets to prevent mis-taps
|
|
573
|
+
- On tablet layouts, increase to 12-16dp between buttons and controls
|
|
574
|
+
- List items: 48-72dp row height on tablets (vs 48-56dp on phones)
|
|
575
|
+
- Grid items: 8-16dp gap between cards or tiles
|
|
576
|
+
- Toolbar items: 24-32dp spacing between icon buttons
|
|
577
|
+
|
|
578
|
+
**Ergonomic zones on tablets:**
|
|
579
|
+
- Bottom and side edges are easiest to reach when holding the tablet
|
|
580
|
+
- Center of the screen is difficult to reach when holding with two hands (avoid placing frequent tap targets there)
|
|
581
|
+
- When propped on a stand, the entire screen is equally accessible
|
|
582
|
+
- Controls placed along the edges are more comfortable for two-handed grip
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
## 5. Common Mistakes
|
|
587
|
+
|
|
588
|
+
### 5.1 Just Scaling Up the Phone Layout
|
|
589
|
+
|
|
590
|
+
**The problem:** Taking a phone layout and simply stretching it to fill the tablet
|
|
591
|
+
screen. This results in oversized buttons, uncomfortably wide text lines, and wasted
|
|
592
|
+
whitespace.
|
|
593
|
+
|
|
594
|
+
**What happens:**
|
|
595
|
+
- Text lines stretch to 120+ characters, destroying readability
|
|
596
|
+
- Buttons and controls become comically large with no added benefit
|
|
597
|
+
- Single-column layouts leave vast empty margins on either side
|
|
598
|
+
- The app feels like a magnified phone rather than a purposeful tablet experience
|
|
599
|
+
|
|
600
|
+
**The fix:**
|
|
601
|
+
- Redesign layouts for tablet breakpoints using multi-column patterns
|
|
602
|
+
- Implement list-detail, supporting pane, or feed canonical layouts
|
|
603
|
+
- Constrain text width with readable content guides
|
|
604
|
+
- Add meaningful content to the extra space (sidebars, supplementary panes, richer previews)
|
|
605
|
+
|
|
606
|
+
### 5.2 Ignoring Landscape Orientation
|
|
607
|
+
|
|
608
|
+
**The problem:** Designing only for portrait and leaving landscape as an afterthought
|
|
609
|
+
or — worse — locking orientation to portrait only.
|
|
610
|
+
|
|
611
|
+
**What happens:**
|
|
612
|
+
- Users with keyboard accessories are forced to detach them to use the app
|
|
613
|
+
- Landscape shows a stretched portrait layout with awkward proportions
|
|
614
|
+
- Critical UI elements may shift to unreachable positions
|
|
615
|
+
- The app cannot participate in Split View multitasking effectively
|
|
616
|
+
|
|
617
|
+
**The fix:**
|
|
618
|
+
- Design for both orientations from the start
|
|
619
|
+
- Use landscape as the primary layout for productivity apps
|
|
620
|
+
- Test layout transitions between portrait and landscape
|
|
621
|
+
- Ensure content and scroll positions are preserved on rotation
|
|
622
|
+
- Starting with Android 16, orientation locking is disallowed on large-screen devices
|
|
623
|
+
|
|
624
|
+
### 5.3 Not Using the Extra Space for Productivity
|
|
625
|
+
|
|
626
|
+
**The problem:** Showing the same amount of information on a 12.9" iPad as on a
|
|
627
|
+
5.8" iPhone, with the extra space going to waste.
|
|
628
|
+
|
|
629
|
+
**What happens:**
|
|
630
|
+
- Users must navigate the same number of screens despite having 4-5 times the display area
|
|
631
|
+
- Common actions require the same number of taps as on phone
|
|
632
|
+
- No productivity advantage to using the tablet app over the phone app
|
|
633
|
+
- Users switch to the web browser or a competitor's app that uses space better
|
|
634
|
+
|
|
635
|
+
**The fix:**
|
|
636
|
+
- Show list and detail simultaneously instead of requiring navigation between them
|
|
637
|
+
- Provide inline editing instead of navigating to edit screens
|
|
638
|
+
- Add persistent toolbars, inspectors, or property panels
|
|
639
|
+
- Enable multi-selection and batch operations
|
|
640
|
+
- Show previews, thumbnails, and metadata alongside primary content
|
|
641
|
+
|
|
642
|
+
### 5.4 Not Supporting External Keyboard
|
|
643
|
+
|
|
644
|
+
**The problem:** Ignoring the significant number of tablet users who attach keyboards,
|
|
645
|
+
trackpads, and mice.
|
|
646
|
+
|
|
647
|
+
**What happens:**
|
|
648
|
+
- No keyboard shortcuts for common actions, forcing touch-only workflows
|
|
649
|
+
- Tab key does not move focus between form fields
|
|
650
|
+
- Arrow keys do not navigate lists or grids
|
|
651
|
+
- No visible focus indicator for keyboard navigation
|
|
652
|
+
- Right-click / secondary click does nothing
|
|
653
|
+
|
|
654
|
+
**The fix:**
|
|
655
|
+
- Implement standard keyboard shortcuts (Cmd+C, Cmd+V, Cmd+Z on iPad; Ctrl equivalents on Android)
|
|
656
|
+
- Support tab-key navigation between interactive elements
|
|
657
|
+
- Provide arrow-key navigation within lists, grids, and menus
|
|
658
|
+
- Show visible focus indicators for keyboard-driven navigation
|
|
659
|
+
- Support pointer/cursor interactions with hover states
|
|
660
|
+
|
|
661
|
+
### 5.5 Ignoring Foldable Screen States
|
|
662
|
+
|
|
663
|
+
**The problem:** Building a single layout that ignores the fold/hinge, causing content
|
|
664
|
+
to be obscured or interactive elements to be unreachable.
|
|
665
|
+
|
|
666
|
+
**What happens:**
|
|
667
|
+
- Buttons or text render directly on the fold/hinge area, making them hard to see or tap
|
|
668
|
+
- Video content splits across the fold with a visible gap through the image
|
|
669
|
+
- The app does not adapt when the device transitions between flat, tabletop, and book postures
|
|
670
|
+
- App state is lost when folding/unfolding the device
|
|
671
|
+
|
|
672
|
+
**The fix:**
|
|
673
|
+
- Use the WindowManager API to detect fold state and position
|
|
674
|
+
- Avoid rendering interactive elements within the hinge zone
|
|
675
|
+
- Use the fold as a natural separator to create dual-pane layouts
|
|
676
|
+
- Adapt layout for tabletop mode (content above, controls below)
|
|
677
|
+
- Preserve all state during posture transitions
|
|
678
|
+
- Test on multiple foldable devices or emulators with different fold configurations
|
|
679
|
+
|
|
680
|
+
### 5.6 Inconsistent Popover and Modal Behavior
|
|
681
|
+
|
|
682
|
+
**The problem:** Using full-screen modals for simple actions on tablet, or failing to
|
|
683
|
+
adapt presentation style between phone and tablet.
|
|
684
|
+
|
|
685
|
+
**What happens:**
|
|
686
|
+
- A simple date picker or color selector takes over the entire 12.9" display
|
|
687
|
+
- Users lose context of what they were doing because the parent content is completely hidden
|
|
688
|
+
- The app feels like it was designed for phones and ported without adaptation
|
|
689
|
+
|
|
690
|
+
**The fix:**
|
|
691
|
+
- Use popovers anchored to trigger controls for quick selections on iPad
|
|
692
|
+
- Use form sheets (centered, dimmed background) for multi-step tasks
|
|
693
|
+
- Reserve full-screen modals for immersive content only (camera, video, full-screen editors)
|
|
694
|
+
- Leverage UIAdaptivePresentationController to automatically adapt between device sizes
|
|
695
|
+
- On Android, use DialogFragment with appropriate sizing or BottomSheetDialog
|
|
696
|
+
|
|
697
|
+
### 5.7 Neglecting Accessibility at Tablet Scale
|
|
698
|
+
|
|
699
|
+
**The problem:** Assuming larger screens automatically improve accessibility, when in
|
|
700
|
+
fact new challenges emerge.
|
|
701
|
+
|
|
702
|
+
**What happens:**
|
|
703
|
+
- VoiceOver/TalkBack reading order is unclear in multi-column layouts
|
|
704
|
+
- Dynamic Type at the largest sizes breaks multi-column layouts
|
|
705
|
+
- Focus order for keyboard navigation does not follow a logical sequence across panes
|
|
706
|
+
- Drag-and-drop has no keyboard-accessible alternative
|
|
707
|
+
|
|
708
|
+
**The fix:**
|
|
709
|
+
- Define explicit accessibility reading order for multi-pane layouts
|
|
710
|
+
- Test Dynamic Type / font scaling at the largest sizes — layouts may need to collapse to single column
|
|
711
|
+
- Ensure keyboard focus follows a logical sequence: sidebar first, then content, then detail
|
|
712
|
+
- Provide accessible alternatives for all gesture-based interactions (drag-and-drop, swipe actions)
|
|
713
|
+
- Test with VoiceOver (iPad) and TalkBack (Android) in both orientations
|
|
714
|
+
|
|
715
|
+
---
|
|
716
|
+
|
|
717
|
+
## 6. Checklist
|
|
718
|
+
|
|
719
|
+
Use this checklist to verify tablet design quality before shipping.
|
|
720
|
+
|
|
721
|
+
### Layout and Responsiveness
|
|
722
|
+
- [ ] App uses multi-column or multi-pane layouts on tablet-sized screens (not a stretched phone layout)
|
|
723
|
+
- [ ] Layout adapts correctly between compact, medium, and expanded width classes
|
|
724
|
+
- [ ] Both landscape and portrait orientations are fully supported and tested
|
|
725
|
+
- [ ] Content width is constrained to maintain readable line lengths (50-75 characters for body text)
|
|
726
|
+
- [ ] Layout works correctly in Split View, Slide Over, and Stage Manager windows (iPad)
|
|
727
|
+
- [ ] Layout works correctly in split-screen and free-form window modes (Android)
|
|
728
|
+
- [ ] Multi-column layouts collapse gracefully to single-column at narrow widths
|
|
729
|
+
|
|
730
|
+
### Navigation
|
|
731
|
+
- [ ] Navigation pattern adapts to screen size (sidebar on tablet, tab bar or bottom nav on phone)
|
|
732
|
+
- [ ] Navigation Rail (Android) or Sidebar (iPad) is used instead of bottom navigation on tablet widths
|
|
733
|
+
- [ ] Back navigation and deep linking work correctly in multi-pane layouts
|
|
734
|
+
|
|
735
|
+
### Input and Interaction
|
|
736
|
+
- [ ] External keyboard shortcuts are implemented for all common actions
|
|
737
|
+
- [ ] Tab key navigates between form fields and interactive elements
|
|
738
|
+
- [ ] Arrow keys navigate within lists and grids
|
|
739
|
+
- [ ] Hover states are provided for pointer/trackpad/mouse interaction
|
|
740
|
+
- [ ] Drag and drop is supported for applicable content types
|
|
741
|
+
- [ ] Context menus (long-press / right-click) are available and duplicate toolbar actions
|
|
742
|
+
- [ ] Apple Pencil / stylus input is handled appropriately (if applicable to the app's domain)
|
|
743
|
+
|
|
744
|
+
### Components and Modals
|
|
745
|
+
- [ ] Popovers or form sheets are used for simple tasks on tablet (not full-screen modals)
|
|
746
|
+
- [ ] Modal presentation adapts between tablet (popover/sheet) and phone (full-screen) automatically
|
|
747
|
+
- [ ] Touch targets meet minimum size requirements (44pt Apple / 48dp Material)
|
|
748
|
+
- [ ] Interactive elements have sufficient spacing (minimum 8dp/pt between tap targets)
|
|
749
|
+
|
|
750
|
+
### Foldable Devices (Android)
|
|
751
|
+
- [ ] App detects and responds to fold/hinge position
|
|
752
|
+
- [ ] No interactive elements or critical content are placed across the fold/hinge
|
|
753
|
+
- [ ] Layout adapts to tabletop and book postures when applicable
|
|
754
|
+
- [ ] App state is preserved during posture transitions (fold/unfold)
|
|
755
|
+
|
|
756
|
+
### Accessibility
|
|
757
|
+
- [ ] VoiceOver (iPad) and TalkBack (Android) reading order is logical in multi-pane layouts
|
|
758
|
+
- [ ] Dynamic Type / font scaling works correctly at all sizes, including the largest settings
|
|
759
|
+
- [ ] Keyboard focus order follows a logical sequence across all panes
|
|
760
|
+
- [ ] All gesture-based interactions have accessible alternatives
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
|
|
764
|
+
## References
|
|
765
|
+
|
|
766
|
+
### Apple
|
|
767
|
+
- [Designing for iPadOS — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/designing-for-ipados)
|
|
768
|
+
- [Layout — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/layout)
|
|
769
|
+
- [Sidebars — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/sidebars)
|
|
770
|
+
- [Tab Bars — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/tab-bars)
|
|
771
|
+
- [Sheets — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/sheets)
|
|
772
|
+
- [Drag and Drop — Apple HIG](https://developer.apple.com/design/human-interface-guidelines/drag-and-drop)
|
|
773
|
+
- [Elevating Your iPad App with a Tab Bar and Sidebar](https://developer.apple.com/documentation/uikit/elevating-your-ipad-app-with-a-tab-bar-and-sidebar)
|
|
774
|
+
- [Adopting Hover Support for Apple Pencil](https://developer.apple.com/documentation/UIKit/adopting-hover-support-for-apple-pencil)
|
|
775
|
+
- [Elevate the Design of Your iPad App — WWDC25](https://developer.apple.com/videos/play/wwdc2025/208/)
|
|
776
|
+
|
|
777
|
+
### Android / Material Design
|
|
778
|
+
- [Canonical Layouts — Material Design 3](https://m3.material.io/foundations/layout/canonical-layouts/overview)
|
|
779
|
+
- [List-Detail Canonical Layout — Material Design 3](https://m3.material.io/foundations/layout/canonical-layouts/list-detail)
|
|
780
|
+
- [Navigation Rail — Material Design 3](https://m3.material.io/components/navigation-rail/guidelines)
|
|
781
|
+
- [Applying Layout — Material Design 3](https://m3.material.io/foundations/layout/applying-layout/window-size-classes)
|
|
782
|
+
- [Understanding Layout — Material Design 3](https://m3.material.io/foundations/layout/understanding-layout/overview)
|
|
783
|
+
- [Material Design for Large Screens](https://m3.material.io/foundations/adaptive-design/large-screens)
|
|
784
|
+
- [Large Screen Canonical Layouts — Android Developers](https://developer.android.com/guide/topics/large-screens/large-screen-canonical-layouts)
|
|
785
|
+
- [Adaptive App Quality Guidelines — Android Developers](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality)
|
|
786
|
+
- [Learn About Foldables — Android Developers](https://developer.android.com/guide/topics/large-screens/learn-about-foldables)
|
|
787
|
+
- [Make Your App Fold Aware — Android Developers](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/make-your-app-fold-aware)
|
|
788
|
+
- [Window Size Classes — Android Developers](https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes)
|
|
789
|
+
- [Android 12L Features](https://developer.android.com/about/versions/12/12L/summary)
|
|
790
|
+
|
|
791
|
+
### General
|
|
792
|
+
- [Tablet Website and Application UX — Nielsen Norman Group](https://www.nngroup.com/reports/tablets/)
|
|
793
|
+
- [Readable Content Guides — Use Your Loaf](https://useyourloaf.com/blog/readable-content-guides/)
|
|
794
|
+
- [Optimal Line Length for Readability — UXPin](https://www.uxpin.com/studio/blog/optimal-line-length-for-readability/)
|