@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,433 @@
|
|
|
1
|
+
# Mobile Typography Reference
|
|
2
|
+
|
|
3
|
+
> Type scale, system fonts, Dynamic Type, accessibility, and dark mode typography.
|
|
4
|
+
> **Typography failures are the #1 cause of unreadable mobile apps.**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Mobile Typography Fundamentals
|
|
9
|
+
|
|
10
|
+
### Why Mobile Type is Different
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
DESKTOP: MOBILE:
|
|
14
|
+
├── 20-30" viewing distance ├── 12-15" viewing distance
|
|
15
|
+
├── Large viewport ├── Small viewport, narrow
|
|
16
|
+
├── Hover for details ├── Tap/scroll for details
|
|
17
|
+
├── Controlled lighting ├── Variable (outdoor, etc.)
|
|
18
|
+
├── Fixed font size ├── User-controlled sizing
|
|
19
|
+
└── Long reading sessions └── Quick scanning
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Mobile Type Rules
|
|
23
|
+
|
|
24
|
+
| Rule | Desktop | Mobile |
|
|
25
|
+
|------|---------|--------|
|
|
26
|
+
| **Minimum body size** | 14px | 16px (14pt/14sp) |
|
|
27
|
+
| **Maximum line length** | 75 characters | 40-60 characters |
|
|
28
|
+
| **Line height** | 1.4-1.5 | 1.4-1.6 (more generous) |
|
|
29
|
+
| **Font weight** | Varies | Regular dominant, bold sparingly |
|
|
30
|
+
| **Contrast** | AA (4.5:1) | AA minimum, AAA preferred |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. System Fonts
|
|
35
|
+
|
|
36
|
+
### iOS: SF Pro Family
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
San Francisco (SF) Family:
|
|
40
|
+
├── SF Pro Display: Large text (≥ 20pt)
|
|
41
|
+
├── SF Pro Text: Body text (< 20pt)
|
|
42
|
+
├── SF Pro Rounded: Friendly contexts
|
|
43
|
+
├── SF Mono: Monospace
|
|
44
|
+
└── SF Compact: Apple Watch, compact UI
|
|
45
|
+
|
|
46
|
+
Features:
|
|
47
|
+
├── Optical sizing (auto-adjusts)
|
|
48
|
+
├── Dynamic tracking (spacing)
|
|
49
|
+
├── Tabular/proportional figures
|
|
50
|
+
├── Excellent legibility
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Android: Roboto Family
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Roboto Family:
|
|
57
|
+
├── Roboto: Default sans-serif
|
|
58
|
+
├── Roboto Flex: Variable font
|
|
59
|
+
├── Roboto Serif: Serif option
|
|
60
|
+
├── Roboto Mono: Monospace
|
|
61
|
+
├── Roboto Condensed: Narrow spaces
|
|
62
|
+
|
|
63
|
+
Features:
|
|
64
|
+
├── Optimized for screens
|
|
65
|
+
├── Wide language support
|
|
66
|
+
├── Multiple weights
|
|
67
|
+
├── Good at small sizes
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### When to Use System Fonts
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
✅ USE system fonts when:
|
|
74
|
+
├── Brand doesn't mandate custom font
|
|
75
|
+
├── Reading efficiency is priority
|
|
76
|
+
├── App feels native/integrated important
|
|
77
|
+
├── Performance is critical
|
|
78
|
+
├── Wide language support needed
|
|
79
|
+
|
|
80
|
+
❌ AVOID system fonts when:
|
|
81
|
+
├── Brand identity requires custom
|
|
82
|
+
├── Design differentiation needed
|
|
83
|
+
├── Editorial/magazine style
|
|
84
|
+
└── (But still support accessibility)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Custom Font Considerations
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
If using custom fonts:
|
|
91
|
+
├── Include all weights needed
|
|
92
|
+
├── Subset for file size
|
|
93
|
+
├── Test at all Dynamic Type sizes
|
|
94
|
+
├── Provide fallback to system
|
|
95
|
+
├── Test rendering quality
|
|
96
|
+
└── Check language support
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 3. Type Scale
|
|
102
|
+
|
|
103
|
+
### iOS Type Scale (Built-in)
|
|
104
|
+
|
|
105
|
+
| Style | Size | Weight | Line Height |
|
|
106
|
+
|-------|------|--------|-------------|
|
|
107
|
+
| Large Title | 34pt | Bold | 41pt |
|
|
108
|
+
| Title 1 | 28pt | Bold | 34pt |
|
|
109
|
+
| Title 2 | 22pt | Bold | 28pt |
|
|
110
|
+
| Title 3 | 20pt | Semibold | 25pt |
|
|
111
|
+
| Headline | 17pt | Semibold | 22pt |
|
|
112
|
+
| Body | 17pt | Regular | 22pt |
|
|
113
|
+
| Callout | 16pt | Regular | 21pt |
|
|
114
|
+
| Subhead | 15pt | Regular | 20pt |
|
|
115
|
+
| Footnote | 13pt | Regular | 18pt |
|
|
116
|
+
| Caption 1 | 12pt | Regular | 16pt |
|
|
117
|
+
| Caption 2 | 11pt | Regular | 13pt |
|
|
118
|
+
|
|
119
|
+
### Android Type Scale (Material 3)
|
|
120
|
+
|
|
121
|
+
| Role | Size | Weight | Line Height |
|
|
122
|
+
|------|------|--------|-------------|
|
|
123
|
+
| Display Large | 57sp | 400 | 64sp |
|
|
124
|
+
| Display Medium | 45sp | 400 | 52sp |
|
|
125
|
+
| Display Small | 36sp | 400 | 44sp |
|
|
126
|
+
| Headline Large | 32sp | 400 | 40sp |
|
|
127
|
+
| Headline Medium | 28sp | 400 | 36sp |
|
|
128
|
+
| Headline Small | 24sp | 400 | 32sp |
|
|
129
|
+
| Title Large | 22sp | 400 | 28sp |
|
|
130
|
+
| Title Medium | 16sp | 500 | 24sp |
|
|
131
|
+
| Title Small | 14sp | 500 | 20sp |
|
|
132
|
+
| Body Large | 16sp | 400 | 24sp |
|
|
133
|
+
| Body Medium | 14sp | 400 | 20sp |
|
|
134
|
+
| Body Small | 12sp | 400 | 16sp |
|
|
135
|
+
| Label Large | 14sp | 500 | 20sp |
|
|
136
|
+
| Label Medium | 12sp | 500 | 16sp |
|
|
137
|
+
| Label Small | 11sp | 500 | 16sp |
|
|
138
|
+
|
|
139
|
+
### Creating Custom Scale
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
If creating custom scale, use modular ratio:
|
|
143
|
+
|
|
144
|
+
Recommended ratios:
|
|
145
|
+
├── 1.125 (Major second): Dense UI
|
|
146
|
+
├── 1.200 (Minor third): Compact
|
|
147
|
+
├── 1.250 (Major third): Balanced (common)
|
|
148
|
+
├── 1.333 (Perfect fourth): Spacious
|
|
149
|
+
└── 1.500 (Perfect fifth): Dramatic
|
|
150
|
+
|
|
151
|
+
Example with 1.25 ratio, 16px base:
|
|
152
|
+
├── xs: 10px (16 ÷ 1.25 ÷ 1.25)
|
|
153
|
+
├── sm: 13px (16 ÷ 1.25)
|
|
154
|
+
├── base: 16px
|
|
155
|
+
├── lg: 20px (16 × 1.25)
|
|
156
|
+
├── xl: 25px (16 × 1.25 × 1.25)
|
|
157
|
+
├── 2xl: 31px
|
|
158
|
+
├── 3xl: 39px
|
|
159
|
+
└── 4xl: 49px
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 4. Dynamic Type / Text Scaling
|
|
165
|
+
|
|
166
|
+
### iOS Dynamic Type (MANDATORY)
|
|
167
|
+
|
|
168
|
+
```swift
|
|
169
|
+
// ❌ WRONG: Fixed size (doesn't scale)
|
|
170
|
+
Text("Hello")
|
|
171
|
+
.font(.system(size: 17))
|
|
172
|
+
|
|
173
|
+
// ✅ CORRECT: Dynamic Type
|
|
174
|
+
Text("Hello")
|
|
175
|
+
.font(.body) // Scales with user setting
|
|
176
|
+
|
|
177
|
+
// Custom font with scaling
|
|
178
|
+
Text("Hello")
|
|
179
|
+
.font(.custom("MyFont", size: 17, relativeTo: .body))
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Android Text Scaling (MANDATORY)
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
ALWAYS use sp for text:
|
|
186
|
+
├── sp = Scale-independent pixels
|
|
187
|
+
├── Scales with user font preference
|
|
188
|
+
├── dp does NOT scale (don't use for text)
|
|
189
|
+
|
|
190
|
+
User can scale from 85% to 200%:
|
|
191
|
+
├── Default (100%): 14sp = 14dp
|
|
192
|
+
├── Largest (200%): 14sp = 28dp
|
|
193
|
+
|
|
194
|
+
Test at 200%!
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Scaling Challenges
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
Problems at large text sizes:
|
|
201
|
+
├── Text overflows containers
|
|
202
|
+
├── Buttons become too tall
|
|
203
|
+
├── Icons look small relative to text
|
|
204
|
+
├── Layouts break
|
|
205
|
+
|
|
206
|
+
Solutions:
|
|
207
|
+
├── Use flexible containers (not fixed height)
|
|
208
|
+
├── Allow text wrapping
|
|
209
|
+
├── Scale icons with text
|
|
210
|
+
├── Test at extremes during development
|
|
211
|
+
├── Use scrollable containers for long text
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 5. Typography Accessibility
|
|
217
|
+
|
|
218
|
+
### Minimum Sizes
|
|
219
|
+
|
|
220
|
+
| Element | Minimum | Recommended |
|
|
221
|
+
|---------|---------|-------------|
|
|
222
|
+
| Body text | 14px/pt/sp | 16px/pt/sp |
|
|
223
|
+
| Secondary text | 12px/pt/sp | 13-14px/pt/sp |
|
|
224
|
+
| Captions | 11px/pt/sp | 12px/pt/sp |
|
|
225
|
+
| Buttons | 14px/pt/sp | 14-16px/pt/sp |
|
|
226
|
+
| **Nothing smaller** | 11px | - |
|
|
227
|
+
|
|
228
|
+
### Contrast Requirements (WCAG)
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
Normal text (< 18pt or < 14pt bold):
|
|
232
|
+
├── AA: 4.5:1 ratio minimum
|
|
233
|
+
├── AAA: 7:1 ratio recommended
|
|
234
|
+
|
|
235
|
+
Large text (≥ 18pt or ≥ 14pt bold):
|
|
236
|
+
├── AA: 3:1 ratio minimum
|
|
237
|
+
├── AAA: 4.5:1 ratio recommended
|
|
238
|
+
|
|
239
|
+
Logos/decorative: No requirement
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Line Height for Accessibility
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
WCAG Success Criterion 1.4.12:
|
|
246
|
+
|
|
247
|
+
Line height (line spacing): ≥ 1.5×
|
|
248
|
+
Paragraph spacing: ≥ 2× font size
|
|
249
|
+
Letter spacing: ≥ 0.12× font size
|
|
250
|
+
Word spacing: ≥ 0.16× font size
|
|
251
|
+
|
|
252
|
+
Mobile recommendation:
|
|
253
|
+
├── Body: 1.4-1.6 line height
|
|
254
|
+
├── Headings: 1.2-1.3 line height
|
|
255
|
+
├── Never below 1.2
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 6. Dark Mode Typography
|
|
261
|
+
|
|
262
|
+
### Color Adjustments
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
Light Mode: Dark Mode:
|
|
266
|
+
├── Black text (#000) ├── White/light gray (#E0E0E0)
|
|
267
|
+
├── High contrast ├── Slightly reduced contrast
|
|
268
|
+
├── Full saturation ├── Desaturated colors
|
|
269
|
+
└── Dark = emphasis └── Light = emphasis
|
|
270
|
+
|
|
271
|
+
RULE: Don't use pure white (#FFF) on dark.
|
|
272
|
+
Use off-white (#E0E0E0 to #F0F0F0) to reduce eye strain.
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Dark Mode Hierarchy
|
|
276
|
+
|
|
277
|
+
| Level | Light Mode | Dark Mode |
|
|
278
|
+
|-------|------------|-----------|
|
|
279
|
+
| Primary text | #000000 | #E8E8E8 |
|
|
280
|
+
| Secondary text | #666666 | #A0A0A0 |
|
|
281
|
+
| Tertiary text | #999999 | #707070 |
|
|
282
|
+
| Disabled text | #CCCCCC | #505050 |
|
|
283
|
+
|
|
284
|
+
### Weight in Dark Mode
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
Dark mode text appears thinner due to halation
|
|
288
|
+
(light bleeding into dark background)
|
|
289
|
+
|
|
290
|
+
Consider:
|
|
291
|
+
├── Using medium weight for body (instead of regular)
|
|
292
|
+
├── Increasing letter-spacing slightly
|
|
293
|
+
├── Testing on actual OLED displays
|
|
294
|
+
└── Using slightly bolder weight than light mode
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## 7. Typography Anti-Patterns
|
|
300
|
+
|
|
301
|
+
### ❌ Common Mistakes
|
|
302
|
+
|
|
303
|
+
| Mistake | Problem | Fix |
|
|
304
|
+
|---------|---------|-----|
|
|
305
|
+
| **Fixed font sizes** | Ignores accessibility | Use dynamic sizing |
|
|
306
|
+
| **Too small text** | Unreadable | Min 14pt/sp |
|
|
307
|
+
| **Low contrast** | Invisible in sunlight | Min 4.5:1 |
|
|
308
|
+
| **Long lines** | Hard to track | Max 60 chars |
|
|
309
|
+
| **Tight line height** | Cramped, hard to read | Min 1.4× |
|
|
310
|
+
| **Too many sizes** | Visual chaos | Max 5-7 sizes |
|
|
311
|
+
| **All caps body** | Hard to read | Headlines only |
|
|
312
|
+
| **Light gray on white** | Impossible in bright light | Higher contrast |
|
|
313
|
+
|
|
314
|
+
### ❌ AI Typography Mistakes
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
AI tends to:
|
|
318
|
+
├── Use fixed px values instead of pt/sp
|
|
319
|
+
├── Skip Dynamic Type support
|
|
320
|
+
├── Use too small text (12-14px body)
|
|
321
|
+
├── Ignore line height settings
|
|
322
|
+
├── Use low contrast "aesthetic" grays
|
|
323
|
+
├── Apply same scale to mobile as desktop
|
|
324
|
+
└── Skip testing at large text sizes
|
|
325
|
+
|
|
326
|
+
RULE: Typography must SCALE.
|
|
327
|
+
Test at smallest and largest settings.
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 8. Font Loading & Performance
|
|
333
|
+
|
|
334
|
+
### Font File Optimization
|
|
335
|
+
|
|
336
|
+
```
|
|
337
|
+
Font file sizes matter on mobile:
|
|
338
|
+
├── Full font: 100-300KB per weight
|
|
339
|
+
├── Subset (Latin): 15-40KB per weight
|
|
340
|
+
├── Variable font: 100-200KB (all weights)
|
|
341
|
+
|
|
342
|
+
Recommendations:
|
|
343
|
+
├── Subset to needed characters
|
|
344
|
+
├── Use WOFF2 format
|
|
345
|
+
├── Max 2-3 font files
|
|
346
|
+
├── Consider variable fonts
|
|
347
|
+
├── Cache fonts appropriately
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Loading Strategy
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
1. SYSTEM FONT FALLBACK
|
|
354
|
+
Show system font → swap when custom loads
|
|
355
|
+
|
|
356
|
+
2. FONT DISPLAY SWAP
|
|
357
|
+
font-display: swap (CSS)
|
|
358
|
+
|
|
359
|
+
3. PRELOAD CRITICAL FONTS
|
|
360
|
+
Preload fonts needed above the fold
|
|
361
|
+
|
|
362
|
+
4. DON'T BLOCK RENDER
|
|
363
|
+
Don't wait for fonts to show content
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 9. Typography Checklist
|
|
369
|
+
|
|
370
|
+
### Before Any Text Design
|
|
371
|
+
|
|
372
|
+
- [ ] Body text ≥ 16px/pt/sp?
|
|
373
|
+
- [ ] Line height ≥ 1.4?
|
|
374
|
+
- [ ] Line length ≤ 60 chars?
|
|
375
|
+
- [ ] Type scale defined (max 5-7 sizes)?
|
|
376
|
+
- [ ] Using pt (iOS) or sp (Android)?
|
|
377
|
+
|
|
378
|
+
### Before Release
|
|
379
|
+
|
|
380
|
+
- [ ] Dynamic Type tested (iOS)?
|
|
381
|
+
- [ ] Font scaling tested at 200% (Android)?
|
|
382
|
+
- [ ] Dark mode contrast checked?
|
|
383
|
+
- [ ] Sunlight readability tested?
|
|
384
|
+
- [ ] All text has proper hierarchy?
|
|
385
|
+
- [ ] Custom fonts have fallbacks?
|
|
386
|
+
- [ ] Long text scrolls properly?
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## 10. Quick Reference
|
|
391
|
+
|
|
392
|
+
### Typography Tokens
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
// iOS
|
|
396
|
+
.largeTitle // 34pt, Bold
|
|
397
|
+
.title // 28pt, Bold
|
|
398
|
+
.title2 // 22pt, Bold
|
|
399
|
+
.title3 // 20pt, Semibold
|
|
400
|
+
.headline // 17pt, Semibold
|
|
401
|
+
.body // 17pt, Regular
|
|
402
|
+
.subheadline // 15pt, Regular
|
|
403
|
+
.footnote // 13pt, Regular
|
|
404
|
+
.caption // 12pt, Regular
|
|
405
|
+
|
|
406
|
+
// Android (Material 3)
|
|
407
|
+
displayLarge // 57sp
|
|
408
|
+
headlineLarge // 32sp
|
|
409
|
+
titleLarge // 22sp
|
|
410
|
+
bodyLarge // 16sp
|
|
411
|
+
labelLarge // 14sp
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### Minimum Sizes
|
|
415
|
+
|
|
416
|
+
```
|
|
417
|
+
Body: 14-16pt/sp (16 preferred)
|
|
418
|
+
Secondary: 12-13pt/sp
|
|
419
|
+
Caption: 11-12pt/sp
|
|
420
|
+
Nothing: < 11pt/sp
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### Line Height
|
|
424
|
+
|
|
425
|
+
```
|
|
426
|
+
Headings: 1.1-1.3
|
|
427
|
+
Body: 1.4-1.6
|
|
428
|
+
Long text: 1.5-1.75
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
> **Remember:** If users can't read your text, your app is broken. Typography isn't decoration—it's the primary interface. Test on real devices, in real conditions, with accessibility settings enabled.
|