@musashishao/agent-kit 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.
Potentially problematic release.
This version of @musashishao/agent-kit might be problematic. Click here for more details.
- package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +76 -0
- package/.agent/ARCHITECTURE.md +225 -0
- package/.agent/CONTEXT.md +229 -0
- package/.agent/FEATURE_ROADMAP.md +435 -0
- package/.agent/PROMPT_TEMPLATES.md +261 -0
- package/.agent/agents/backend-specialist.md +263 -0
- package/.agent/agents/database-architect.md +226 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +556 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +377 -0
- package/.agent/agents/orchestrator.md +416 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/project-planner.md +403 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/rules/GEMINI.md +251 -0
- package/.agent/skills/api-patterns/SKILL.md +81 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/.agent/skills/architecture/SKILL.md +55 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +199 -0
- package/.agent/skills/behavioral-modes/SKILL.md +242 -0
- package/.agent/skills/brainstorming/SKILL.md +163 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
- package/.agent/skills/clean-code/SKILL.md +201 -0
- package/.agent/skills/code-review-checklist/SKILL.md +109 -0
- package/.agent/skills/database-design/SKILL.md +52 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +48 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/docker-expert/SKILL.md +409 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +396 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +311 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +541 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/lint-and-validate/SKILL.md +45 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +433 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nestjs-expert/SKILL.md +552 -0
- package/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +175 -0
- package/.agent/skills/performance-profiling/SKILL.md +143 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +167 -0
- package/.agent/skills/prisma-expert/SKILL.md +355 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/react-patterns/SKILL.md +198 -0
- package/.agent/skills/red-team-tactics/SKILL.md +199 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +109 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/typescript-expert/SKILL.md +429 -0
- package/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
- package/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
- package/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
- package/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
- package/.agent/skills/ui-ux-pro-max/SKILL.md +351 -0
- package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
- package/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
- package/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +237 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +80 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +231 -0
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/bin/cli.js +235 -0
- package/index.js +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
# Mobile Navigation Reference
|
|
2
|
+
|
|
3
|
+
> Navigation patterns, deep linking, back handling, and tab/stack/drawer decisions.
|
|
4
|
+
> **Navigation is the skeleton of your app—get it wrong and everything feels broken.**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Navigation Selection Decision Tree
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
WHAT TYPE OF APP?
|
|
12
|
+
│
|
|
13
|
+
├── 3-5 top-level sections (equal importance)
|
|
14
|
+
│ └── ✅ Tab Bar / Bottom Navigation
|
|
15
|
+
│ Examples: Social, E-commerce, Utility
|
|
16
|
+
│
|
|
17
|
+
├── Deep hierarchical content (drill down)
|
|
18
|
+
│ └── ✅ Stack Navigation
|
|
19
|
+
│ Examples: Settings, Email folders
|
|
20
|
+
│
|
|
21
|
+
├── Many destinations (>5 top-level)
|
|
22
|
+
│ └── ✅ Drawer Navigation
|
|
23
|
+
│ Examples: Gmail, complex enterprise
|
|
24
|
+
│
|
|
25
|
+
├── Single linear flow
|
|
26
|
+
│ └── ✅ Stack only (wizard/onboarding)
|
|
27
|
+
│ Examples: Checkout, Setup flow
|
|
28
|
+
│
|
|
29
|
+
└── Tablet/Foldable
|
|
30
|
+
└── ✅ Navigation Rail + List-Detail
|
|
31
|
+
Examples: Mail, Notes on iPad
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. Tab Bar Navigation
|
|
37
|
+
|
|
38
|
+
### When to Use
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
✅ USE Tab Bar when:
|
|
42
|
+
├── 3-5 top-level destinations
|
|
43
|
+
├── Destinations are of equal importance
|
|
44
|
+
├── User frequently switches between them
|
|
45
|
+
├── Each tab has independent navigation stack
|
|
46
|
+
└── App is used in short sessions
|
|
47
|
+
|
|
48
|
+
❌ AVOID Tab Bar when:
|
|
49
|
+
├── More than 5 destinations
|
|
50
|
+
├── Destinations have clear hierarchy
|
|
51
|
+
├── Tabs would be used very unequally
|
|
52
|
+
└── Content flows in a sequence
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Tab Bar Best Practices
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
iOS Tab Bar:
|
|
59
|
+
├── Height: 49pt (83pt with home indicator)
|
|
60
|
+
├── Max items: 5
|
|
61
|
+
├── Icons: SF Symbols, 25×25pt
|
|
62
|
+
├── Labels: Always show (accessibility)
|
|
63
|
+
├── Active indicator: Tint color
|
|
64
|
+
|
|
65
|
+
Android Bottom Navigation:
|
|
66
|
+
├── Height: 80dp
|
|
67
|
+
├── Max items: 5 (3-5 ideal)
|
|
68
|
+
├── Icons: Material Symbols, 24dp
|
|
69
|
+
├── Labels: Always show
|
|
70
|
+
├── Active indicator: Pill shape + filled icon
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Tab State Preservation
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
RULE: Each tab maintains its own navigation stack.
|
|
77
|
+
|
|
78
|
+
User journey:
|
|
79
|
+
1. Home tab → Drill into item → Add to cart
|
|
80
|
+
2. Switch to Profile tab
|
|
81
|
+
3. Switch back to Home tab
|
|
82
|
+
→ Should return to "Add to cart" screen, NOT home root
|
|
83
|
+
|
|
84
|
+
Implementation:
|
|
85
|
+
├── React Navigation: Each tab has own navigator
|
|
86
|
+
├── Flutter: IndexedStack for state preservation
|
|
87
|
+
└── Never reset tab stack on switch
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 3. Stack Navigation
|
|
93
|
+
|
|
94
|
+
### Core Concepts
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
Stack metaphor: Cards stacked on top of each other
|
|
98
|
+
|
|
99
|
+
Push: Add screen on top
|
|
100
|
+
Pop: Remove top screen (back)
|
|
101
|
+
Replace: Swap current screen
|
|
102
|
+
Reset: Clear stack, set new root
|
|
103
|
+
|
|
104
|
+
Visual: New screen slides in from right (LTR)
|
|
105
|
+
Back: Screen slides out to right
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Stack Navigation Patterns
|
|
109
|
+
|
|
110
|
+
| Pattern | Use Case | Implementation |
|
|
111
|
+
|---------|----------|----------------|
|
|
112
|
+
| **Simple Stack** | Linear flow | Push each step |
|
|
113
|
+
| **Nested Stack** | Sections with sub-navigation | Stack inside tab |
|
|
114
|
+
| **Modal Stack** | Focused tasks | Present modally |
|
|
115
|
+
| **Auth Stack** | Login vs Main | Conditional root |
|
|
116
|
+
|
|
117
|
+
### Back Button Handling
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
iOS:
|
|
121
|
+
├── Edge swipe from left (system)
|
|
122
|
+
├── Back button in nav bar (optional)
|
|
123
|
+
├── Interactive pop gesture
|
|
124
|
+
└── Never override swipe back without good reason
|
|
125
|
+
|
|
126
|
+
Android:
|
|
127
|
+
├── System back button/gesture
|
|
128
|
+
├── Up button in toolbar (optional, for drill-down)
|
|
129
|
+
├── Predictive back animation (Android 14+)
|
|
130
|
+
└── Must handle back correctly (Activity/Fragment)
|
|
131
|
+
|
|
132
|
+
Cross-Platform Rule:
|
|
133
|
+
├── Back ALWAYS navigates up the stack
|
|
134
|
+
├── Never hijack back for other purposes
|
|
135
|
+
├── Confirm before discarding unsaved data
|
|
136
|
+
└── Deep links should allow full back traversal
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 4. Drawer Navigation
|
|
142
|
+
|
|
143
|
+
### When to Use
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
✅ USE Drawer when:
|
|
147
|
+
├── More than 5 top-level destinations
|
|
148
|
+
├── Less frequently accessed destinations
|
|
149
|
+
├── Complex app with many features
|
|
150
|
+
├── Need for branding/user info in nav
|
|
151
|
+
└── Tablet/large screen with persistent drawer
|
|
152
|
+
|
|
153
|
+
❌ AVOID Drawer when:
|
|
154
|
+
├── 5 or fewer destinations (use tabs)
|
|
155
|
+
├── All destinations equally important
|
|
156
|
+
├── Mobile-first simple app
|
|
157
|
+
└── Discoverability is critical (drawer is hidden)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Drawer Patterns
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
Modal Drawer:
|
|
164
|
+
├── Opens over content (scrim behind)
|
|
165
|
+
├── Swipe to open from edge
|
|
166
|
+
├── Hamburger icon ( ☰ ) triggers
|
|
167
|
+
└── Most common on mobile
|
|
168
|
+
|
|
169
|
+
Permanent Drawer:
|
|
170
|
+
├── Always visible (large screens)
|
|
171
|
+
├── Content shifts over
|
|
172
|
+
├── Good for productivity apps
|
|
173
|
+
└── Tablets, desktops
|
|
174
|
+
|
|
175
|
+
Navigation Rail (Android):
|
|
176
|
+
├── Narrow vertical strip
|
|
177
|
+
├── Icons + optional labels
|
|
178
|
+
├── For tablets in portrait
|
|
179
|
+
└── 80dp width
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 5. Modal Navigation
|
|
185
|
+
|
|
186
|
+
### Modal vs Push
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
PUSH (Stack): MODAL:
|
|
190
|
+
├── Horizontal slide ├── Vertical slide up (sheet)
|
|
191
|
+
├── Part of hierarchy ├── Separate task
|
|
192
|
+
├── Back returns ├── Dismiss (X) returns
|
|
193
|
+
├── Same navigation context ├── Own navigation context
|
|
194
|
+
└── "Drill in" └── "Focus on task"
|
|
195
|
+
|
|
196
|
+
USE MODAL for:
|
|
197
|
+
├── Creating new content
|
|
198
|
+
├── Settings/preferences
|
|
199
|
+
├── Completing a transaction
|
|
200
|
+
├── Self-contained workflows
|
|
201
|
+
├── Quick actions
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Modal Types
|
|
205
|
+
|
|
206
|
+
| Type | iOS | Android | Use Case |
|
|
207
|
+
|------|-----|---------|----------|
|
|
208
|
+
| **Sheet** | `.sheet` | Bottom Sheet | Quick tasks |
|
|
209
|
+
| **Full Screen** | `.fullScreenCover` | Full Activity | Complex forms |
|
|
210
|
+
| **Alert** | Alert | Dialog | Confirmations |
|
|
211
|
+
| **Action Sheet** | Action Sheet | Menu/Bottom Sheet | Choose from options |
|
|
212
|
+
|
|
213
|
+
### Modal Dismissal
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
Users expect to dismiss modals by:
|
|
217
|
+
├── Tapping X / Close button
|
|
218
|
+
├── Swiping down (sheet)
|
|
219
|
+
├── Tapping scrim (non-critical)
|
|
220
|
+
├── System back (Android)
|
|
221
|
+
├── Hardware back (old Android)
|
|
222
|
+
|
|
223
|
+
RULE: Only block dismissal for unsaved data.
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 6. Deep Linking
|
|
229
|
+
|
|
230
|
+
### Why Deep Links from Day One
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
Deep links enable:
|
|
234
|
+
├── Push notification navigation
|
|
235
|
+
├── Sharing content
|
|
236
|
+
├── Marketing campaigns
|
|
237
|
+
├── Spotlight/Search integration
|
|
238
|
+
├── Widget navigation
|
|
239
|
+
├── External app integration
|
|
240
|
+
|
|
241
|
+
Building later is HARD:
|
|
242
|
+
├── Requires navigation refactor
|
|
243
|
+
├── Screen dependencies unclear
|
|
244
|
+
├── Parameter passing complex
|
|
245
|
+
└── Always plan deep links at start
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### URL Structure
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
Scheme://host/path?params
|
|
252
|
+
|
|
253
|
+
Examples:
|
|
254
|
+
├── myapp://product/123
|
|
255
|
+
├── https://myapp.com/product/123 (Universal/App Link)
|
|
256
|
+
├── myapp://checkout?promo=SAVE20
|
|
257
|
+
├── myapp://tab/profile/settings
|
|
258
|
+
|
|
259
|
+
Hierarchy should match navigation:
|
|
260
|
+
├── myapp://home
|
|
261
|
+
├── myapp://home/product/123
|
|
262
|
+
├── myapp://home/product/123/reviews
|
|
263
|
+
└── URL path = navigation path
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Deep Link Navigation Rules
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
1. FULL STACK CONSTRUCTION
|
|
270
|
+
Deep link to myapp://product/123 should:
|
|
271
|
+
├── Put Home at root of stack
|
|
272
|
+
├── Push Product screen on top
|
|
273
|
+
└── Back button returns to Home
|
|
274
|
+
|
|
275
|
+
2. AUTHENTICATION AWARENESS
|
|
276
|
+
If deep link requires auth:
|
|
277
|
+
├── Save intended destination
|
|
278
|
+
├── Redirect to login
|
|
279
|
+
├── After login, navigate to destination
|
|
280
|
+
|
|
281
|
+
3. INVALID LINKS
|
|
282
|
+
If deep link target doesn't exist:
|
|
283
|
+
├── Navigate to fallback (home)
|
|
284
|
+
├── Show error message
|
|
285
|
+
└── Never crash or blank screen
|
|
286
|
+
|
|
287
|
+
4. STATEFUL NAVIGATION
|
|
288
|
+
Deep link during active session:
|
|
289
|
+
├── Don't blow away current stack
|
|
290
|
+
├── Push on top OR
|
|
291
|
+
├── Ask user if should navigate away
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## 7. Navigation State Persistence
|
|
297
|
+
|
|
298
|
+
### What to Persist
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
SHOULD persist:
|
|
302
|
+
├── Current tab selection
|
|
303
|
+
├── Scroll position in lists
|
|
304
|
+
├── Form draft data
|
|
305
|
+
├── Recent navigation stack
|
|
306
|
+
└── User preferences
|
|
307
|
+
|
|
308
|
+
SHOULD NOT persist:
|
|
309
|
+
├── Modal states (dialogs)
|
|
310
|
+
├── Temporary UI states
|
|
311
|
+
├── Stale data (refresh on return)
|
|
312
|
+
├── Authentication state (use secure storage)
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Implementation
|
|
316
|
+
|
|
317
|
+
```javascript
|
|
318
|
+
// React Navigation - State Persistence
|
|
319
|
+
const [isReady, setIsReady] = useState(false);
|
|
320
|
+
const [initialState, setInitialState] = useState();
|
|
321
|
+
|
|
322
|
+
useEffect(() => {
|
|
323
|
+
const loadState = async () => {
|
|
324
|
+
const savedState = await AsyncStorage.getItem('NAV_STATE');
|
|
325
|
+
if (savedState) setInitialState(JSON.parse(savedState));
|
|
326
|
+
setIsReady(true);
|
|
327
|
+
};
|
|
328
|
+
loadState();
|
|
329
|
+
}, []);
|
|
330
|
+
|
|
331
|
+
const handleStateChange = (state) => {
|
|
332
|
+
AsyncStorage.setItem('NAV_STATE', JSON.stringify(state));
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
<NavigationContainer
|
|
336
|
+
initialState={initialState}
|
|
337
|
+
onStateChange={handleStateChange}
|
|
338
|
+
>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## 8. Transition Animations
|
|
344
|
+
|
|
345
|
+
### Platform Defaults
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
iOS Transitions:
|
|
349
|
+
├── Push: Slide from right
|
|
350
|
+
├── Modal: Slide from bottom (sheet) or fade
|
|
351
|
+
├── Tab switch: Cross-fade
|
|
352
|
+
├── Interactive: Swipe to go back
|
|
353
|
+
|
|
354
|
+
Android Transitions:
|
|
355
|
+
├── Push: Fade + slide from right
|
|
356
|
+
├── Modal: Slide from bottom
|
|
357
|
+
├── Tab switch: Cross-fade or none
|
|
358
|
+
├── Shared element: Hero animations
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Custom Transitions
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
When to custom:
|
|
365
|
+
├── Brand identity requires it
|
|
366
|
+
├── Shared element connections
|
|
367
|
+
├── Special reveal effects
|
|
368
|
+
└── Keep it subtle, <300ms
|
|
369
|
+
|
|
370
|
+
When to use default:
|
|
371
|
+
├── Most of the time
|
|
372
|
+
├── Standard drill-down
|
|
373
|
+
├── Platform consistency
|
|
374
|
+
└── Performance critical paths
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Shared Element Transitions
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
Connect elements between screens:
|
|
381
|
+
|
|
382
|
+
Screen A: Product card with image
|
|
383
|
+
↓ (tap)
|
|
384
|
+
Screen B: Product detail with same image (expanded)
|
|
385
|
+
|
|
386
|
+
Image animates from card position to detail position.
|
|
387
|
+
|
|
388
|
+
Implementation:
|
|
389
|
+
├── React Navigation: shared element library
|
|
390
|
+
├── Flutter: Hero widget
|
|
391
|
+
├── SwiftUI: matchedGeometryEffect
|
|
392
|
+
└── Compose: Shared element transitions
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## 9. Navigation Anti-Patterns
|
|
398
|
+
|
|
399
|
+
### ❌ Navigation Sins
|
|
400
|
+
|
|
401
|
+
| Anti-Pattern | Problem | Solution |
|
|
402
|
+
|--------------|---------|----------|
|
|
403
|
+
| **Inconsistent back** | User confused, can't predict | Always pop stack |
|
|
404
|
+
| **Hidden navigation** | Features undiscoverable | Visible tabs/drawer trigger |
|
|
405
|
+
| **Deep nesting** | User gets lost | Max 3-4 levels, breadcrumbs |
|
|
406
|
+
| **Breaking swipe back** | iOS users frustrated | Never override gesture |
|
|
407
|
+
| **No deep links** | Can't share, bad notifications | Plan from start |
|
|
408
|
+
| **Tab stack reset** | Work lost on switch | Preserve tab states |
|
|
409
|
+
| **Modal for primary flow** | Can't back track | Use stack navigation |
|
|
410
|
+
|
|
411
|
+
### ❌ AI Navigation Mistakes
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
AI tends to:
|
|
415
|
+
├── Use modals for everything (wrong)
|
|
416
|
+
├── Forget tab state preservation (wrong)
|
|
417
|
+
├── Skip deep linking (wrong)
|
|
418
|
+
├── Override platform back behavior (wrong)
|
|
419
|
+
├── Reset stack on tab switch (wrong)
|
|
420
|
+
└── Ignore predictive back (Android 14+)
|
|
421
|
+
|
|
422
|
+
RULE: Use platform navigation patterns.
|
|
423
|
+
Don't reinvent navigation.
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## 10. Navigation Checklist
|
|
429
|
+
|
|
430
|
+
### Before Navigation Architecture
|
|
431
|
+
|
|
432
|
+
- [ ] App type determined (tabs/drawer/stack)
|
|
433
|
+
- [ ] Number of top-level destinations counted
|
|
434
|
+
- [ ] Deep link URL scheme planned
|
|
435
|
+
- [ ] Auth flow integrated with navigation
|
|
436
|
+
- [ ] Tablet/large screen considered
|
|
437
|
+
|
|
438
|
+
### Before Every Screen
|
|
439
|
+
|
|
440
|
+
- [ ] Can user navigate back? (not dead end)
|
|
441
|
+
- [ ] Deep link to this screen planned
|
|
442
|
+
- [ ] State preserved on navigate away/back
|
|
443
|
+
- [ ] Transition appropriate for relationship
|
|
444
|
+
- [ ] Auth required? Handled?
|
|
445
|
+
|
|
446
|
+
### Before Release
|
|
447
|
+
|
|
448
|
+
- [ ] All deep links tested
|
|
449
|
+
- [ ] Back button works everywhere
|
|
450
|
+
- [ ] Tab states preserved correctly
|
|
451
|
+
- [ ] Edge swipe back works (iOS)
|
|
452
|
+
- [ ] Predictive back works (Android 14+)
|
|
453
|
+
- [ ] Universal/App links configured
|
|
454
|
+
- [ ] Push notification deep links work
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
> **Remember:** Navigation is invisible when done right. Users shouldn't think about HOW to get somewhere—they just get there. If they notice navigation, something is wrong.
|