@wazir-dev/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,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/)