@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,800 @@
1
+ # Navigation Patterns
2
+
3
+ > **Module Type:** Pattern
4
+ > **Domain:** UI/UX Design
5
+ > **Last Updated:** 2026-03-07
6
+ > **Authoritative Sources:** Apple HIG, Material Design 3, Nielsen Norman Group, W3C WAI-ARIA, WCAG 2.2
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ Navigation is the skeletal system of any digital product. It determines how users move
13
+ through content, find features, and build a mental model of the application. Poor
14
+ navigation is the single most common reason users abandon an app or website. This module
15
+ covers the anatomy of navigation patterns, when to use each variant, cross-platform
16
+ adaptation strategies, accessibility requirements, and common anti-patterns to avoid.
17
+
18
+ **Core principle:** Navigation should be invisible when it works and immediately obvious
19
+ when a user needs it. The best navigation systems let users answer three questions at
20
+ any point: Where am I? Where can I go? How do I get back?
21
+
22
+ ---
23
+
24
+ ## 1. Pattern Anatomy
25
+
26
+ ### 1.1 Navigation Categories
27
+
28
+ Navigation systems fall into three functional categories:
29
+
30
+ | Category | Purpose | Examples |
31
+ |---|---|---|
32
+ | **Global (Persistent)** | Always visible; provides access to top-level destinations | Tab bar, sidebar, top nav bar |
33
+ | **Local (Contextual)** | Appears within a section; navigates sub-content | Breadcrumbs, segmented controls, section tabs |
34
+ | **Supplemental (Shortcuts)** | Accelerates access to frequent or related content | Search, deep links, quick actions, shortcuts |
35
+
36
+ **Global navigation** remains consistent across the entire application. It anchors the
37
+ user's mental model and should never change structure based on context. Limit global
38
+ navigation to 3-7 top-level destinations.
39
+
40
+ **Local navigation** is scoped to the current section and adapts to context. Breadcrumbs,
41
+ in-page tabs, and section headers all serve local navigation. Local navigation should
42
+ visually nest under global navigation so hierarchy is clear.
43
+
44
+ **Supplemental navigation** includes search bars, command palettes (Cmd+K), recently
45
+ visited lists, and contextual quick actions. These do not replace global or local
46
+ navigation but provide shortcuts for power users and return visitors.
47
+
48
+ ### 1.2 Navigation Variants
49
+
50
+ #### Tab Bar (Bottom Navigation)
51
+
52
+ - **When to use:** Mobile apps with 3-5 equally important top-level destinations.
53
+ - **Platform:** iOS (standard), Android (Material Design navigation bar).
54
+ - **Behavior:** Tapping a tab switches the view; long-press may reveal sub-options.
55
+ Each tab maintains its own navigation stack. Re-tapping the active tab scrolls
56
+ to top or pops to root.
57
+ - **Apple HIG:** Use 3-5 tabs on iPhone. Use SF Symbols that automatically adapt
58
+ between regular and compact contexts. Tab titles should be concrete nouns or verbs.
59
+ Avoid overflow ("More") tabs whenever possible.
60
+ - **Material Design 3:** Navigation bar supports 3-5 destinations. Each destination
61
+ has an icon and an optional text label. Active destination uses a filled icon with
62
+ a pill-shaped indicator behind it.
63
+
64
+ #### Sidebar Navigation
65
+
66
+ - **When to use:** Desktop and tablet apps with 5+ destinations, or apps with
67
+ hierarchical content (file managers, project tools, messaging).
68
+ - **Platform:** macOS (primary pattern), iPadOS (replaces tab bar), web (common).
69
+ - **Behavior:** Persistent left-aligned panel. Can be collapsible (icon-only mode)
70
+ or expandable. Supports nested items via accordions or tree views.
71
+ - **Best for:** Productivity tools (Notion, Linear, Slack), admin dashboards,
72
+ content management systems.
73
+
74
+ #### Navigation Drawer (Hamburger Menu)
75
+
76
+ - **When to use:** Secondary navigation on mobile when bottom tabs handle primary
77
+ destinations; or as the sole navigation only when the app has many destinations
78
+ that cannot fit in a tab bar.
79
+ - **Platform:** Android (being deprecated in M3 Expressive in favor of expanded
80
+ navigation rail), web (responsive fallback).
81
+ - **Critical caveat:** NNGroup research with 179 participants found that hidden
82
+ navigation reduces content discoverability by over 20% compared to visible
83
+ navigation. On desktop, users engaged with hidden navigation only 27% of the
84
+ time vs. nearly double for visible navigation. Use visible navigation whenever
85
+ screen space permits.
86
+
87
+ #### Top Navigation Bar
88
+
89
+ - **When to use:** Websites with 4-8 top-level sections. Marketing sites,
90
+ documentation, e-commerce.
91
+ - **Platform:** Web (standard), desktop apps (secondary to sidebar).
92
+ - **Behavior:** Horizontal bar at the top of the viewport. May include dropdowns
93
+ (mega menus) for sub-navigation. Sticky positioning keeps it accessible during
94
+ scroll.
95
+ - **Guidelines:** Front-load keywords in labels. Use clear category names, not
96
+ clever branding terms. Keep dropdowns to one level deep when possible.
97
+
98
+ #### Bottom Navigation (Android Specific)
99
+
100
+ - **When to use:** Android apps with 3-5 primary destinations.
101
+ - **M3 Expressive update (2025):** Short bottom bars have returned. Navigation
102
+ drawers on phones are being deprecated in favor of the bottom navigation bar
103
+ plus an expanded/collapsed navigation rail system.
104
+
105
+ #### Navigation Rail
106
+
107
+ - **When to use:** Tablet and foldable devices; medium-width screens (600-840dp).
108
+ - **Platform:** Android/Material Design.
109
+ - **Behavior:** Vertical strip on the leading edge with 3-7 icon+label destinations.
110
+ Can include a FAB. M3 Expressive introduces collapsed (icon-only) and expanded
111
+ (icon+label, replacing drawer) states.
112
+
113
+ #### Breadcrumbs
114
+
115
+ - **When to use:** Hierarchical content with 3+ levels. E-commerce categories,
116
+ documentation, file systems.
117
+ - **Platform:** Web (primary), desktop apps.
118
+ - **Behavior:** Horizontal trail showing the path from root to current page.
119
+ Each segment is a link except the current page. Placed below global navigation,
120
+ above page heading.
121
+ - **NNGroup guideline:** Breadcrumbs should always show the current page (even if
122
+ the title is repeated). They supplement -- never replace -- primary navigation.
123
+ - **Mobile:** Generally not recommended. Use a stepper for multi-step flows instead.
124
+
125
+ #### Stepper / Wizard
126
+
127
+ - **When to use:** Linear multi-step processes: checkout, onboarding, form wizards.
128
+ - **Behavior:** Shows numbered steps with current position highlighted. Completed
129
+ steps may be clickable for editing. Forward progress requires validation.
130
+ - **Guidelines:** Limit to 3-7 steps. Show a progress indicator. Allow backward
131
+ navigation to completed steps. On mobile, a stepper is preferred over breadcrumbs
132
+ for multi-step flows.
133
+
134
+ ---
135
+
136
+ ## 2. Best-in-Class Examples
137
+
138
+ ### 2.1 Spotify -- Bottom Tab Bar (3 tabs: Home, Search, Library)
139
+ - Minimal tab count keeps decisions simple and thumb-friendly.
140
+ - Gradient-blended tab bar creates seamless visual transition with content.
141
+ - Hides on scroll-down, reappears on scroll-up; each tab preserves its own stack.
142
+ - "Now Playing" bar above tab bar serves as persistent supplemental navigation.
143
+
144
+ ### 2.2 Airbnb -- Bottom Tab Bar (5 tabs, icon + label)
145
+ - Unified cross-platform experience: moved Android from drawer to bottom tabs
146
+ matching iOS for consistency.
147
+ - Category filter chips (horizontal scroll) act as local navigation within Explore,
148
+ avoiding a separate filter screen.
149
+ - Deep linking preserves a synthetic back stack to the parent category.
150
+
151
+ ### 2.3 Linear -- Collapsible Sidebar + Tabs + Cmd+K
152
+ - Three-section sidebar (Product, Customers, Company) collapsible to icon-only.
153
+ - In-app tabs (List, Board, Timeline) for contextual view switching.
154
+ - Cmd+K command palette for power-user supplemental navigation.
155
+ - Works identically in Electron and browser with adaptive nav buttons.
156
+
157
+ ### 2.4 Notion -- Accordion Sidebar + Breadcrumbs + Search
158
+ - Accordion tree structure supports infinite nesting while keeping top level scannable.
159
+ - Four persistent top items (Search, AI, Home, Inbox) always accessible.
160
+ - Breadcrumbs at page top enable quick jumps to any ancestor.
161
+ - Drag-and-drop reordering; user-resizable sidebar that remembers state.
162
+
163
+ ### 2.5 Instagram -- Bottom Tab Bar (5 tabs, icon-only)
164
+ - Filled (solid) vs. outlined (stroke) icons for active/inactive -- industry standard.
165
+ - Swipe gestures for Stories and Feed as natural supplemental navigation.
166
+ - Camera and messaging via edge swipes keeps tab bar clean.
167
+
168
+ ### 2.6 GitHub -- Top Nav + Contextual Tabs + Breadcrumbs
169
+ - Repository-scoped tab bar (Code, Issues, PRs, Actions) within a consistent shell.
170
+ - Breadcrumb-style file path navigation in the code browser.
171
+ - Keyboard shortcuts (`?` for help) as supplemental navigation for developers.
172
+
173
+ ### 2.7 Slack -- Dual-Panel Sidebar + Cmd+K
174
+ - Hierarchical channel sidebar with collapsible sections and unread badges.
175
+ - Cmd+K quick switcher for instant navigation to any channel, person, or file.
176
+ - Thread side sheet maintains main channel context; mobile adapts to single-panel.
177
+
178
+ ### 2.8 Figma -- Three-Panel Layout (Layers | Canvas | Properties)
179
+ - Panel layout matches the mental model: structure left, canvas center, properties right.
180
+ - Page tabs in the left panel; all panels independently collapsible.
181
+ - Breadcrumb-style component path for nested component navigation.
182
+
183
+ ---
184
+
185
+ ## 3. User Flow Mapping
186
+
187
+ ### 3.1 Navigation Hierarchy Design
188
+
189
+ **Mobile:** Limit to 2-3 levels of hierarchy maximum.
190
+ - Level 1: Tab bar / bottom navigation (3-5 destinations)
191
+ - Level 2: Lists, cards, or section headers within a tab
192
+ - Level 3: Detail views pushed onto the navigation stack
193
+
194
+ **Desktop/Web:** Can support 3-4 levels with care.
195
+ - Level 1: Sidebar or top nav (global)
196
+ - Level 2: Sub-sections within sidebar or breadcrumb path
197
+ - Level 3: Page-level content tabs or segmented controls
198
+ - Level 4: Detail panels, modals, or side sheets
199
+
200
+ **Rule of thumb:** If a user cannot describe where they are in under 5 seconds, the
201
+ hierarchy is too deep.
202
+
203
+ ### 3.2 Deep Linking Considerations
204
+
205
+ Deep links must produce a coherent navigation state even when the user enters the
206
+ app at an arbitrary point.
207
+
208
+ **Synthetic back stack:** When a user opens a deep link (e.g., a shared message or
209
+ product URL), the system must construct a back stack that simulates the path they
210
+ would have taken from the root. Android Navigation component handles this
211
+ automatically if the navigation graph is well-defined. iOS requires manual
212
+ configuration of the NavigationStack path.
213
+
214
+ **Authentication gates:** If a deep link targets authenticated content, queue the
215
+ destination and redirect through login, then resume navigation post-auth. Never
216
+ drop the intended destination.
217
+
218
+ **URL structure:** Web deep links should mirror the information architecture.
219
+ `/projects/acme/issues/42` is self-documenting. Avoid opaque IDs without context:
220
+ `/p/x7f3k` tells the user nothing.
221
+
222
+ **State serialization:** Deep links should encode enough state to restore the view:
223
+ active filters, sort order, scroll position (where practical). Consider URL query
224
+ parameters or fragment identifiers for web.
225
+
226
+ ### 3.3 State Preservation During Navigation
227
+
228
+ - **Tab state:** Each tab in a bottom navigation should maintain its own navigation
229
+ stack. Switching from Tab A to Tab B and back should return to Tab A's previous
230
+ state (scroll position, sub-page).
231
+ - **Form state:** Navigating away from an in-progress form should either auto-save
232
+ or prompt the user. Never silently discard input.
233
+ - **Scroll position:** Returning to a list should restore the previous scroll position.
234
+ Infinite-scroll lists require careful state management to avoid content jumps.
235
+ - **Selection state:** Selected items in a list should persist when navigating to
236
+ detail and back. Multi-select mode should survive orientation changes.
237
+
238
+ ### 3.4 Back Navigation Behavior
239
+
240
+ | Platform | Back Mechanism | Expected Behavior |
241
+ |---|---|---|
242
+ | **iOS** | Swipe from left edge / back button | Pops the current view from the navigation stack. If at root, no action. |
243
+ | **Android** | System back button / gesture | Pops the current view. At root of a tab, switches to the start tab. At the start tab's root, exits the app. |
244
+ | **Web** | Browser back button | Navigates to the previous URL in browser history. SPAs must manage history.pushState correctly. |
245
+ | **Desktop** | Cmd/Ctrl+[ or back button | Varies by app. Should mirror the platform's web or native convention. |
246
+
247
+ **Android "exit through home" pattern:** When the user presses back on a non-start
248
+ tab, navigate to the start tab first, then exit the app on the next back press.
249
+ This creates predictable behavior regardless of which tab the user is on.
250
+
251
+ ### 3.5 Edge Cases
252
+
253
+ **Deep nesting:** Users lose context after 3+ levels on mobile. Mitigation: use
254
+ breadcrumbs (web/desktop), show a persistent header with the parent context
255
+ (mobile), or flatten the hierarchy.
256
+
257
+ **Circular navigation:** Occurs when navigation paths form loops (A -> B -> C -> A).
258
+ This disorients users who rely on the back button. Prevention: ensure the back
259
+ button always pops the stack rather than pushing a new destination. Never link a
260
+ detail page back to itself or to a page that links back to it outside of the
261
+ normal stack.
262
+
263
+ **Dead ends:** Pages with no onward navigation and no clear way to return. Common
264
+ in confirmation pages ("Your order is placed" with no link to order details or
265
+ home). Fix: always provide at least two exits -- a primary action ("View Order")
266
+ and a secondary link ("Return to Home").
267
+
268
+ **Modal dead ends:** Full-screen modals on mobile that lack a close button or
269
+ have a close button only in a non-obvious location. Always include a visible
270
+ close affordance in a platform-standard position (top-left on iOS, top-right
271
+ on Android/web).
272
+
273
+ **Navigation during async operations:** If a user navigates away during a
274
+ background upload or save, the operation should continue. Use a persistent
275
+ indicator (toast, badge, or notification) to report completion.
276
+
277
+ ---
278
+
279
+ ## 4. Micro-Interactions
280
+
281
+ ### 4.1 Tab Switching Animations
282
+
283
+ | Technique | Description | Best For |
284
+ |---|---|---|
285
+ | **Cross-fade** | Old content fades out, new content fades in simultaneously | Content-heavy tabs (feeds, lists) |
286
+ | **Slide** | Content slides horizontally in the direction of the selected tab | Adjacent tabs with spatial relationship |
287
+ | **No animation** | Instant swap | High-frequency switching (e.g., dev tools) |
288
+ | **Shared element transition** | A specific element morphs between views | Detail-to-detail navigation |
289
+
290
+ **Timing:** Tab content transitions should complete in 200-300ms. Use ease-out
291
+ (deceleration) curves for entering content and ease-in (acceleration) for exiting
292
+ content. Material Design recommends 300ms for standard transitions. Apple HIG
293
+ defaults to ~350ms for push/pop but tab switches are typically faster at ~250ms.
294
+
295
+ ### 4.2 Active State Indication
296
+
297
+ | Indicator Type | Visual Treatment | Platform Precedent |
298
+ |---|---|---|
299
+ | **Filled icon** | Active = filled/solid; Inactive = outlined/stroke | Instagram, iOS tab bars |
300
+ | **Pill indicator** | Colored pill shape behind the active icon | Material Design 3 |
301
+ | **Underline** | Colored bar below the active tab label | Web top nav, Material tabs |
302
+ | **Background highlight** | Subtle background color on active item | Sidebar navigation (Linear, Notion) |
303
+ | **Color change** | Active icon/label uses brand or accent color | Cross-platform standard |
304
+ | **Weight change** | Active label uses bold/semibold; inactive uses regular | Supplemental to other indicators |
305
+
306
+ **Best practice:** Combine at least two indicators (e.g., filled icon + color change)
307
+ to ensure the active state is perceivable by users with color vision deficiency.
308
+
309
+ ### 4.3 Transition Timing Reference
310
+
311
+ | Interaction | Duration | Easing | Notes |
312
+ |---|---|---|---|
313
+ | Tab switch (content swap) | 200-300ms | ease-out | Avoid slide for non-adjacent tabs |
314
+ | Page push (drill down) | 300-350ms | ease-in-out | Match platform default |
315
+ | Page pop (back) | 250-300ms | ease-in-out | Slightly faster than push feels snappier |
316
+ | Sidebar expand/collapse | 200-250ms | ease-out | Use transform, not width animation |
317
+ | Drawer open | 250-300ms | ease-out (deceleration) | Scrim fades in simultaneously |
318
+ | Drawer close | 200-250ms | ease-in (acceleration) | Faster close feels responsive |
319
+ | Dropdown menu open | 150-200ms | ease-out | Stagger items by 30-50ms for polish |
320
+ | Breadcrumb hover underline | 150ms | ease-in-out | Subtle, not distracting |
321
+
322
+ **Performance rule:** Only animate `transform` and `opacity` properties. These are
323
+ GPU-composited and avoid layout recalculation. Animating `width`, `height`, `top`,
324
+ or `left` causes layout thrashing and jank, especially on lower-end devices.
325
+
326
+ ### 4.4 Haptic Feedback
327
+
328
+ - **iOS:** Use light impact feedback (UIImpactFeedbackGenerator) on tab selection.
329
+ Use selection feedback for scrolling through picker-style navigation.
330
+ - **Android:** Use HapticFeedbackConstants.CLOCK_TICK for tab selection.
331
+ - **When to skip:** Rapid repeated navigation (e.g., swiping through pages). Haptics
332
+ on every scroll event is overwhelming.
333
+
334
+ ---
335
+
336
+ ## 5. Anti-Patterns
337
+
338
+ ### 5.1 Hamburger Menu as Primary Navigation
339
+
340
+ **Problem:** Hiding primary navigation behind a hamburger icon reduces discoverability
341
+ by over 20% (NNGroup research, 179 participants). Users on desktop engaged with
342
+ hidden navigation only 27% of the time.
343
+
344
+ **Fix:** Use a bottom tab bar on mobile. Use a visible sidebar or top nav on desktop.
345
+ Reserve the hamburger for secondary navigation or settings.
346
+
347
+ ### 5.2 Too Many Navigation Levels
348
+
349
+ **Problem:** More than 3 levels on mobile (or 4 on desktop) creates cognitive overload.
350
+ Users lose their sense of position and cannot predict what the back button will do.
351
+
352
+ **Fix:** Flatten the hierarchy. Use search, filters, and tags to surface deep content
353
+ without requiring deep drilling. If depth is unavoidable, use breadcrumbs (desktop)
354
+ or persistent context headers (mobile).
355
+
356
+ ### 5.3 Inconsistent Back Behavior
357
+
358
+ **Problem:** The back button sometimes pops the stack, sometimes navigates to a
359
+ different section, sometimes closes a modal. Users cannot build a reliable mental
360
+ model.
361
+
362
+ **Fix:** Back always reverses the most recent navigation action. Modals use a
363
+ separate close/dismiss action (X button), not the back button on Android. On web,
364
+ ensure `history.pushState` is called correctly so the browser back button works
365
+ predictably.
366
+
367
+ ### 5.4 Hidden Navigation on Desktop
368
+
369
+ **Problem:** Collapsing navigation into a hamburger on desktop when there is ample
370
+ screen real estate. This adds unnecessary interaction cost.
371
+
372
+ **Fix:** Always show navigation on screens wider than 1024px. Use a collapsible
373
+ sidebar that defaults to expanded on desktop.
374
+
375
+ ### 5.5 Icon-Only Navigation Without Labels
376
+
377
+ **Problem:** Users cannot reliably identify navigation destinations from icons alone,
378
+ except for universally understood icons (home, search, profile). Custom or abstract
379
+ icons require labels.
380
+
381
+ **Fix:** Always pair icons with text labels in primary navigation. Icon-only is
382
+ acceptable only for well-established patterns (e.g., a sidebar collapse toggle)
383
+ or when a tooltip is always available on hover (desktop only).
384
+
385
+ ### 5.6 More Than 5 Bottom Tabs
386
+
387
+ **Problem:** Cramming 6+ tabs into a mobile bottom bar makes tap targets too small
388
+ (below the 44x44pt iOS / 48x48dp Android minimum) and overwhelms users with choices.
389
+
390
+ **Fix:** Limit to 5 tabs maximum. Move lower-priority destinations to a "More" tab,
391
+ a profile/settings screen, or a navigation drawer.
392
+
393
+ ### 5.7 Navigation That Changes Based on Context
394
+
395
+ **Problem:** Global navigation items that appear, disappear, or reorder based on the
396
+ current screen. Users rely on spatial memory to find navigation items.
397
+
398
+ **Fix:** Global navigation must be structurally identical on every screen. Only
399
+ the active state should change. Contextual navigation belongs in local navigation
400
+ (sub-tabs, toolbars), not in the global shell.
401
+
402
+ ### 5.8 Jailbreak Navigation (Breaking the Stack)
403
+
404
+ **Problem:** Pushing a view that logically belongs to a different tab onto the current
405
+ tab's stack. Example: tapping a user profile in a messaging tab pushes a profile
406
+ view that "feels" like it should be in the profile tab.
407
+
408
+ **Fix:** If cross-tab navigation is necessary, switch to the destination tab and
409
+ push onto that tab's stack. Or open the content in a modal/sheet that overlays
410
+ the current tab without disrupting its stack.
411
+
412
+ ### 5.9 Dead-End Pages
413
+
414
+ **Problem:** Confirmation pages, error pages, or empty states that offer no onward
415
+ navigation. Users are stranded.
416
+
417
+ **Fix:** Every page must have at least one clear exit. Confirmation pages should
418
+ offer "View Details" and "Return Home." Error pages should offer retry and a path
419
+ to a known good state. Empty states should offer an action to create content.
420
+
421
+ ### 5.10 Swipe Conflicts
422
+
423
+ **Problem:** Swipe-to-go-back conflicts with in-page carousels or swipe-to-delete.
424
+ **Fix:** Use edge-initiated swipe (first 20px from screen edge) for back navigation.
425
+ Disable back-swipe on screens with critical horizontal gestures.
426
+
427
+ ### 5.11 Auto-Hiding Navigation Without Recovery
428
+
429
+ **Problem:** Nav bar hides on scroll and only reappears at scroll-to-top.
430
+ **Fix:** Reveal navigation on any upward scroll, not just scroll-to-top.
431
+
432
+ ### 5.12 Inconsistent Navigation Across Platforms
433
+
434
+ **Problem:** Different primary nav patterns on iOS vs. Android creates friction.
435
+ **Fix:** Converge on a unified pattern. Airbnb moved Android from a left drawer
436
+ to bottom tabs matching iOS for cross-platform consistency.
437
+
438
+ ### 5.13 Pagination Instead of Continuity
439
+
440
+ **Problem:** Numbered pages for content feeds force repeated "Next" clicks.
441
+ **Fix:** Use infinite scroll or "Load More" for feeds. Reserve pagination for
442
+ structured data tables.
443
+
444
+ ---
445
+
446
+ ## 6. Accessibility Requirements
447
+
448
+ ### 6.1 Keyboard Navigation
449
+
450
+ Navigation must be fully operable without a mouse or touch input.
451
+
452
+ | Key | Action |
453
+ |---|---|
454
+ | **Tab** | Move focus to the next interactive element in the navigation |
455
+ | **Shift+Tab** | Move focus to the previous interactive element |
456
+ | **Enter / Space** | Activate the focused navigation item |
457
+ | **Arrow Left/Right** | Move between sibling tabs or menu items (within a tab list) |
458
+ | **Arrow Up/Down** | Move between items in vertical menus or dropdowns |
459
+ | **Escape** | Close an open dropdown, submenu, or drawer |
460
+ | **Home / End** | Jump to the first / last item in a menu |
461
+
462
+ **Tab list pattern (WAI-ARIA):** Only the active tab should be in the tab order
463
+ (`tabindex="0"`). Other tabs should have `tabindex="-1"`. Arrow keys move focus
464
+ between tabs. This is the "roving tabindex" pattern.
465
+
466
+ ### 6.2 Skip Navigation Links
467
+
468
+ WCAG 2.4.1 (Bypass Blocks) requires a mechanism to skip repetitive navigation.
469
+
470
+ - Place a "Skip to main content" link as the first focusable element on every page.
471
+ - The link can be visually hidden by default but must become visible on focus.
472
+ - The link target should be the `<main>` element or a container with
473
+ `id="main-content"`.
474
+ - In SPAs, skip links must remain functional after client-side route changes.
475
+
476
+ ```html
477
+ <a href="#main-content" class="skip-link">Skip to main content</a>
478
+ <!-- ... navigation ... -->
479
+ <main id="main-content" tabindex="-1">
480
+ <!-- Page content -->
481
+ </main>
482
+ ```
483
+
484
+ The `tabindex="-1"` on `<main>` allows it to receive programmatic focus without
485
+ being in the natural tab order.
486
+
487
+ ### 6.3 ARIA Landmarks
488
+
489
+ Use semantic HTML elements with implicit ARIA roles. Explicit ARIA roles are
490
+ only needed when semantic elements cannot be used.
491
+
492
+ | HTML Element | Implicit ARIA Role | Purpose |
493
+ |---|---|---|
494
+ | `<nav>` | `navigation` | Wraps navigation links |
495
+ | `<main>` | `main` | Primary content area |
496
+ | `<header>` | `banner` | Site-wide header (when child of `<body>`) |
497
+ | `<footer>` | `contentinfo` | Site-wide footer (when child of `<body>`) |
498
+ | `<aside>` | `complementary` | Sidebar or supplemental content |
499
+ | `<form>` | `form` | When given an accessible name |
500
+ | `<section>` | `region` | When given an accessible name |
501
+
502
+ **Multiple `<nav>` elements:** If a page has more than one navigation region
503
+ (e.g., primary nav and footer nav), label each with `aria-label`:
504
+
505
+ ```html
506
+ <nav aria-label="Primary">...</nav>
507
+ <nav aria-label="Footer">...</nav>
508
+ ```
509
+
510
+ Screen reader users can press a single key to cycle through landmarks, making
511
+ it critical that landmarks are correctly labeled and not overused.
512
+
513
+ ### 6.4 Screen Reader Announcements on Navigation
514
+
515
+ When the page or view changes in an SPA, screen readers must be informed:
516
+
517
+ - **Route change announcement:** Use an `aria-live="polite"` region to announce
518
+ the new page title. Alternatively, update `document.title` and move focus to
519
+ the `<h1>` of the new page.
520
+ - **Focus management:** After a route change, move focus to the main content area
521
+ or the `<h1>` heading. This prevents screen reader users from being stranded at
522
+ the top of the DOM after a navigation event.
523
+ - **Loading states:** If navigation triggers a loading state, announce "Loading"
524
+ via aria-live. When content is ready, announce the page title and move focus.
525
+
526
+ ```javascript
527
+ // Example: SPA route change focus management
528
+ function onRouteChange(newTitle) {
529
+ document.title = newTitle;
530
+ const heading = document.querySelector('main h1');
531
+ if (heading) {
532
+ heading.setAttribute('tabindex', '-1');
533
+ heading.focus();
534
+ }
535
+ }
536
+ ```
537
+
538
+ ### 6.5 Current Page Indication
539
+
540
+ The active navigation item must be programmatically indicated, not just visually:
541
+
542
+ - Use `aria-current="page"` on the link to the current page.
543
+ - For tab-based navigation, use `role="tablist"` on the container, `role="tab"`
544
+ on each tab, and `aria-selected="true"` on the active tab.
545
+
546
+ ```html
547
+ <nav aria-label="Primary">
548
+ <a href="/home" aria-current="page">Home</a>
549
+ <a href="/about">About</a>
550
+ <a href="/contact">Contact</a>
551
+ </nav>
552
+ ```
553
+
554
+ ### 6.6 Touch Target Sizes
555
+
556
+ - **WCAG 2.5.8 (AAA):** Minimum target size of 24x24 CSS pixels.
557
+ - **WCAG 2.5.5 (AAA) / best practice:** 44x44 CSS pixels.
558
+ - **Apple HIG:** Minimum 44x44 points.
559
+ - **Material Design:** Minimum 48x48 dp.
560
+ - Ensure adequate spacing between navigation items to prevent accidental activation.
561
+
562
+ ### 6.7 Motion and Reduced Motion
563
+
564
+ Respect the user's `prefers-reduced-motion` media query:
565
+
566
+ ```css
567
+ @media (prefers-reduced-motion: reduce) {
568
+ * {
569
+ animation-duration: 0.01ms !important;
570
+ transition-duration: 0.01ms !important;
571
+ }
572
+ }
573
+ ```
574
+
575
+ Navigation transitions should gracefully degrade to instant swaps when reduced
576
+ motion is preferred. Never gate functionality behind an animation.
577
+
578
+ ---
579
+
580
+ ## 7. Cross-Platform Adaptation
581
+
582
+ ### 7.1 iOS
583
+
584
+ | Component | Usage |
585
+ |---|---|
586
+ | **Tab Bar** (bottom) | 3-5 top-level destinations. Standard for iPhone. |
587
+ | **Navigation Bar** (top) | Title, back button, and action items for the current screen. |
588
+ | **Sidebar** | iPad primary navigation (replaces tab bar on wide screens). |
589
+ | **Search Bar** | Integrated into navigation bar or as a tab destination. |
590
+
591
+ **Key conventions:**
592
+ - Back button appears in the top-left with the previous screen's title as the label.
593
+ - Swipe from left edge to go back (interruptible gesture).
594
+ - Tab bar uses filled/outlined icon pairs for active/inactive states.
595
+ - Large titles collapse on scroll for a dynamic, spacious feel.
596
+
597
+ ### 7.2 Android
598
+
599
+ | Component | Usage |
600
+ |---|---|
601
+ | **Bottom Navigation Bar** | 3-5 primary destinations. Standard for phones. |
602
+ | **Navigation Rail** | 3-7 destinations on tablets and foldables (collapsed or expanded). |
603
+ | **Top App Bar** | Title, navigation icon, and action items. |
604
+ | **Navigation Drawer** | Being deprecated in M3 Expressive; use expanded rail instead. |
605
+
606
+ **Key conventions:**
607
+ - System back gesture (swipe from either edge) or back button.
608
+ - Predictive back animation (Android 14+) shows a preview of the previous screen.
609
+ - Top app bar scrolls off screen (standard) or stays pinned (prominent).
610
+ - FAB can be integrated into the navigation rail.
611
+
612
+ ### 7.3 Web
613
+
614
+ | Component | Usage |
615
+ |---|---|
616
+ | **Top Navigation Bar** | Horizontal bar with dropdowns. Standard for marketing sites. |
617
+ | **Sidebar** | Persistent or collapsible. Standard for web apps and dashboards. |
618
+ | **Breadcrumbs** | Hierarchical wayfinding for content-heavy sites. |
619
+ | **Mega Menu** | Large dropdown panels for sites with many categories (e-commerce). |
620
+
621
+ **Key conventions:**
622
+ - Logo in top-left links to homepage.
623
+ - Active page indicated by underline, color change, or bold text.
624
+ - Sticky navigation on scroll (top bar or sidebar).
625
+ - Responsive breakpoints: top nav collapses to hamburger below ~768px.
626
+ Consider bottom tab bar for mobile web apps (progressive web apps).
627
+
628
+ ### 7.4 Desktop (Native Applications)
629
+
630
+ | Component | Usage |
631
+ |---|---|
632
+ | **Sidebar + Top Bar** | Standard for productivity apps (VS Code, Slack, Figma). |
633
+ | **Menu Bar** | macOS/Windows native menu bar for less-frequent actions. |
634
+ | **Command Palette** | Cmd+K / Ctrl+K for keyboard-driven navigation. |
635
+ | **Tab Strip** | Browser-style tabs for multi-document interfaces. |
636
+
637
+ **Key conventions:**
638
+ - Sidebar is the primary navigation, always visible by default.
639
+ - Top bar contains search, notifications, and user profile.
640
+ - Keyboard shortcuts for all primary navigation destinations.
641
+ - Window management (split views, detachable panels) as supplemental navigation.
642
+
643
+ ### 7.5 Responsive Adaptation Strategy
644
+
645
+ ```
646
+ Screen Width Navigation Pattern
647
+ ----------------- ----------------------------------
648
+ < 600px (phone) Bottom tab bar (3-5 tabs)
649
+ 600-840px (tablet) Navigation rail (collapsed)
650
+ 840-1200px (tablet) Navigation rail (expanded) or sidebar
651
+ > 1200px (desktop) Full sidebar + top bar
652
+ ```
653
+
654
+ **The adaptation principle:** Do not simply hide desktop navigation behind a hamburger
655
+ on mobile. Restructure navigation to match each form factor's interaction model.
656
+ Bottom tab bars for thumb-driven phones; sidebars for pointer-driven desktops; rails
657
+ for the in-between.
658
+
659
+ ---
660
+
661
+ ## 8. Decision Tree
662
+
663
+ Use this decision tree to select the appropriate navigation pattern:
664
+
665
+ ```
666
+ START: How many primary destinations?
667
+ |
668
+ +-- 1-2 destinations
669
+ | |
670
+ | +-- Is it a linear flow? --> STEPPER / WIZARD
671
+ | +-- Is it a toggle? -------> SEGMENTED CONTROL / TOGGLE
672
+ |
673
+ +-- 3-5 destinations
674
+ | |
675
+ | +-- What platform?
676
+ | | |
677
+ | | +-- Mobile (iOS/Android) --> BOTTOM TAB BAR
678
+ | | +-- Tablet ----------------> NAVIGATION RAIL
679
+ | | +-- Desktop/Web -----------> TOP NAV BAR or SIDEBAR
680
+ | |
681
+ | +-- Are destinations equally important?
682
+ | |
683
+ | +-- Yes --> BOTTOM TAB BAR (mobile) / TOP NAV (web)
684
+ | +-- No ---> Promote top 3-4 to tabs; demote others to profile/settings
685
+ |
686
+ +-- 6-10 destinations
687
+ | |
688
+ | +-- What platform?
689
+ | | |
690
+ | | +-- Mobile --> BOTTOM TAB BAR (top 5) + "More" tab or profile menu
691
+ | | +-- Tablet --> NAVIGATION RAIL (expanded)
692
+ | | +-- Desktop -> SIDEBAR (collapsible)
693
+ | | +-- Web -----> SIDEBAR or TOP NAV with DROPDOWNS
694
+ | |
695
+ | +-- Is content hierarchical?
696
+ | |
697
+ | +-- Yes --> SIDEBAR with accordion/tree + BREADCRUMBS
698
+ | +-- No ---> SIDEBAR with flat list + SEARCH
699
+ |
700
+ +-- 10+ destinations
701
+ |
702
+ +-- SIDEBAR (with sections, search, and collapsible groups)
703
+ +-- Add COMMAND PALETTE (Cmd+K) as supplemental navigation
704
+ +-- Consider SEARCH as a primary navigation method
705
+
706
+ SUPPLEMENTAL QUESTIONS:
707
+ |
708
+ +-- Is the content deeply hierarchical (3+ levels)?
709
+ | +-- Add BREADCRUMBS (web/desktop)
710
+ | +-- Use persistent CONTEXT HEADERS (mobile)
711
+ |
712
+ +-- Do users perform multi-step tasks?
713
+ | +-- Add STEPPER within the content area
714
+ |
715
+ +-- Are power users a primary audience?
716
+ | +-- Add COMMAND PALETTE and KEYBOARD SHORTCUTS
717
+ |
718
+ +-- Does the app have user-generated content structure?
719
+ +-- Use ACCORDION SIDEBAR (like Notion) for user-defined hierarchy
720
+ ```
721
+
722
+ ---
723
+
724
+ ## 9. Quick Reference Checklist
725
+
726
+ Use this checklist when designing or reviewing navigation:
727
+
728
+ ### Structure
729
+ - [ ] Primary destinations limited to 3-5 for mobile, 5-8 for desktop
730
+ - [ ] Navigation hierarchy does not exceed 3 levels on mobile
731
+ - [ ] Every page has at least one clear exit (no dead ends)
732
+ - [ ] Global navigation is consistent across all screens (no contextual changes)
733
+ - [ ] Back button behavior is predictable and stack-based
734
+ - [ ] Deep links construct a synthetic back stack to the root
735
+
736
+ ### Visual Design
737
+ - [ ] Active state uses at least two visual indicators (icon + color, underline + weight)
738
+ - [ ] Navigation labels are concise, concrete nouns or verbs
739
+ - [ ] Icons are paired with text labels in primary navigation
740
+ - [ ] Touch targets meet minimum size (44x44pt iOS, 48x48dp Android, 24x24px WCAG)
741
+ - [ ] Sufficient contrast between active and inactive states (4.5:1 for text)
742
+
743
+ ### Interaction
744
+ - [ ] Tab switching animations complete in 200-300ms
745
+ - [ ] Only `transform` and `opacity` are animated (GPU-composited)
746
+ - [ ] Each tab preserves its own navigation stack and scroll position
747
+ - [ ] Form state is preserved or saved when navigating away
748
+ - [ ] Navigation hides on scroll-down and reappears on any scroll-up
749
+ - [ ] Haptic feedback on tab selection (mobile, where appropriate)
750
+
751
+ ### Accessibility
752
+ - [ ] Skip navigation link is the first focusable element
753
+ - [ ] All navigation regions use `<nav>` with descriptive `aria-label`
754
+ - [ ] Active page marked with `aria-current="page"`
755
+ - [ ] Tab list uses `role="tablist"` / `role="tab"` / `aria-selected`
756
+ - [ ] Keyboard navigation works: Tab, Arrow keys, Enter, Escape
757
+ - [ ] Focus moves to main content on route change (SPA)
758
+ - [ ] Page title updates on route change
759
+ - [ ] `prefers-reduced-motion` is respected
760
+
761
+ ### Cross-Platform
762
+ - [ ] Mobile uses bottom tab bar (not hamburger for primary nav)
763
+ - [ ] Tablet uses navigation rail or sidebar
764
+ - [ ] Desktop uses sidebar or top nav (always visible)
765
+ - [ ] Responsive breakpoints adapt the navigation pattern, not just hide it
766
+ - [ ] Platform-specific back behavior is respected (swipe on iOS, system back on Android)
767
+
768
+ ### Content
769
+ - [ ] Breadcrumbs show the current page (non-linked)
770
+ - [ ] Search is available as supplemental navigation
771
+ - [ ] Empty states include navigation guidance (not blank pages)
772
+ - [ ] Error pages provide navigation to a known good state
773
+
774
+ ---
775
+
776
+ ## References
777
+
778
+ ### Platform Guidelines
779
+ - Apple HIG: Navigation and Search -- developer.apple.com/design/human-interface-guidelines/navigation-and-search
780
+ - Apple HIG: Tab Bars -- developer.apple.com/design/human-interface-guidelines/tab-bars
781
+ - Material Design 3: Navigation Bar -- m3.material.io/components/navigation-bar/guidelines
782
+ - Material Design 3: Navigation Rail -- m3.material.io/components/navigation-rail/guidelines
783
+ - Android Developers: Principles of Navigation -- developer.android.com/guide/navigation/principles
784
+
785
+ ### Research
786
+ - NNGroup: Hamburger Menus and Hidden Navigation Hurt UX Metrics -- nngroup.com/articles/hamburger-menus/
787
+ - NNGroup: Beyond the Hamburger -- nngroup.com/articles/find-navigation-mobile-even-hamburger/
788
+ - NNGroup: Basic Patterns for Mobile Navigation -- nngroup.com/articles/mobile-navigation-patterns/
789
+ - NNGroup: Menu Design Checklist (17 UX Guidelines) -- nngroup.com/articles/menu-design/
790
+ - NNGroup: Breadcrumbs (11 Design Guidelines) -- nngroup.com/articles/breadcrumbs/
791
+
792
+ ### Accessibility Standards
793
+ - W3C WAI-ARIA: Navigation Role -- developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/navigation_role
794
+ - WebAIM: Skip Navigation Links -- webaim.org/techniques/skipnav/
795
+ - WCAG 2.2: SC 2.4.1 Bypass Blocks, SC 2.5.8 Target Size (Minimum)
796
+
797
+ ### Industry Analysis
798
+ - Smashing Magazine: The Golden Rules of Bottom Navigation Design -- smashingmagazine.com/2016/11/the-golden-rules-of-mobile-navigation-design/
799
+ - Smashing Magazine: Decision Trees for UI Components -- smashingmagazine.com/2024/05/decision-trees-ui-components/
800
+ - Linear Blog: How We Redesigned the Linear UI -- linear.app/now/how-we-redesigned-the-linear-ui