designmd-forge 1.2.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 (907) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/__tests__/designStore.test.js +41 -0
  4. package/dist/__tests__/linter.test.js +23 -0
  5. package/dist/__tests__/sectionParser.test.js +60 -0
  6. package/dist/__tests__/server.test.js +129 -0
  7. package/dist/constants.js +12 -0
  8. package/dist/data/authoring-guide.md +113 -0
  9. package/dist/data/designs/airbnb.md +545 -0
  10. package/dist/data/designs/airtable.md +554 -0
  11. package/dist/data/designs/apple.md +562 -0
  12. package/dist/data/designs/binance.md +634 -0
  13. package/dist/data/designs/bmw-m.md +503 -0
  14. package/dist/data/designs/bmw.md +544 -0
  15. package/dist/data/designs/bugatti.md +454 -0
  16. package/dist/data/designs/cal.md +542 -0
  17. package/dist/data/designs/card-heavy.md +250 -0
  18. package/dist/data/designs/claude.md +589 -0
  19. package/dist/data/designs/clay.md +541 -0
  20. package/dist/data/designs/clickhouse.md +544 -0
  21. package/dist/data/designs/cohere.md +451 -0
  22. package/dist/data/designs/coinbase.md +570 -0
  23. package/dist/data/designs/composio.md +506 -0
  24. package/dist/data/designs/content-first.md +236 -0
  25. package/dist/data/designs/cursor.md +537 -0
  26. package/dist/data/designs/data-dashboard.md +300 -0
  27. package/dist/data/designs/dell-1996.md +632 -0
  28. package/dist/data/designs/elevenlabs.md +504 -0
  29. package/dist/data/designs/enterprise-neutral.md +252 -0
  30. package/dist/data/designs/expo.md +526 -0
  31. package/dist/data/designs/ferrari.md +531 -0
  32. package/dist/data/designs/figma.md +578 -0
  33. package/dist/data/designs/framer.md +544 -0
  34. package/dist/data/designs/hashicorp.md +575 -0
  35. package/dist/data/designs/hp.md +670 -0
  36. package/dist/data/designs/ibm.md +550 -0
  37. package/dist/data/designs/intercom.md +546 -0
  38. package/dist/data/designs/ios-acorns-android.md +430 -0
  39. package/dist/data/designs/ios-acorns-expo.md +381 -0
  40. package/dist/data/designs/ios-acorns-swiftui.md +378 -0
  41. package/dist/data/designs/ios-acorns.md +384 -0
  42. package/dist/data/designs/ios-airbnb-android.md +658 -0
  43. package/dist/data/designs/ios-airbnb-expo.md +457 -0
  44. package/dist/data/designs/ios-airbnb-swiftui.md +464 -0
  45. package/dist/data/designs/ios-airbnb.md +410 -0
  46. package/dist/data/designs/ios-alltrails-android.md +451 -0
  47. package/dist/data/designs/ios-alltrails-expo.md +400 -0
  48. package/dist/data/designs/ios-alltrails-swiftui.md +343 -0
  49. package/dist/data/designs/ios-alltrails.md +344 -0
  50. package/dist/data/designs/ios-amazon-android.md +686 -0
  51. package/dist/data/designs/ios-amazon-expo.md +433 -0
  52. package/dist/data/designs/ios-amazon-music-android.md +416 -0
  53. package/dist/data/designs/ios-amazon-music-expo.md +368 -0
  54. package/dist/data/designs/ios-amazon-music-swiftui.md +436 -0
  55. package/dist/data/designs/ios-amazon-music.md +389 -0
  56. package/dist/data/designs/ios-amazon-swiftui.md +460 -0
  57. package/dist/data/designs/ios-amazon.md +440 -0
  58. package/dist/data/designs/ios-apple-fitness-android.md +462 -0
  59. package/dist/data/designs/ios-apple-fitness-expo.md +373 -0
  60. package/dist/data/designs/ios-apple-fitness-swiftui.md +373 -0
  61. package/dist/data/designs/ios-apple-fitness.md +399 -0
  62. package/dist/data/designs/ios-apple-maps-android.md +646 -0
  63. package/dist/data/designs/ios-apple-maps-expo.md +557 -0
  64. package/dist/data/designs/ios-apple-maps-swiftui.md +588 -0
  65. package/dist/data/designs/ios-apple-maps.md +447 -0
  66. package/dist/data/designs/ios-apple-music-android.md +737 -0
  67. package/dist/data/designs/ios-apple-music-expo.md +596 -0
  68. package/dist/data/designs/ios-apple-music-swiftui.md +578 -0
  69. package/dist/data/designs/ios-apple-music.md +494 -0
  70. package/dist/data/designs/ios-apple-notes-android.md +675 -0
  71. package/dist/data/designs/ios-apple-notes-expo.md +468 -0
  72. package/dist/data/designs/ios-apple-notes-swiftui.md +489 -0
  73. package/dist/data/designs/ios-apple-notes.md +413 -0
  74. package/dist/data/designs/ios-apple-tv-android.md +405 -0
  75. package/dist/data/designs/ios-apple-tv-expo.md +341 -0
  76. package/dist/data/designs/ios-apple-tv-swiftui.md +348 -0
  77. package/dist/data/designs/ios-apple-tv.md +390 -0
  78. package/dist/data/designs/ios-apple-wallet-android.md +617 -0
  79. package/dist/data/designs/ios-apple-wallet-expo.md +487 -0
  80. package/dist/data/designs/ios-apple-wallet-swiftui.md +425 -0
  81. package/dist/data/designs/ios-apple-wallet.md +360 -0
  82. package/dist/data/designs/ios-asana-android.md +435 -0
  83. package/dist/data/designs/ios-asana-expo.md +411 -0
  84. package/dist/data/designs/ios-asana-swiftui.md +416 -0
  85. package/dist/data/designs/ios-asana.md +433 -0
  86. package/dist/data/designs/ios-audible-android.md +450 -0
  87. package/dist/data/designs/ios-audible-expo.md +328 -0
  88. package/dist/data/designs/ios-audible-swiftui.md +418 -0
  89. package/dist/data/designs/ios-audible.md +364 -0
  90. package/dist/data/designs/ios-bandcamp-android.md +471 -0
  91. package/dist/data/designs/ios-bandcamp-expo.md +378 -0
  92. package/dist/data/designs/ios-bandcamp-swiftui.md +374 -0
  93. package/dist/data/designs/ios-bandcamp.md +372 -0
  94. package/dist/data/designs/ios-bear-android.md +496 -0
  95. package/dist/data/designs/ios-bear-expo.md +449 -0
  96. package/dist/data/designs/ios-bear-swiftui.md +479 -0
  97. package/dist/data/designs/ios-bear.md +412 -0
  98. package/dist/data/designs/ios-bereal-android.md +392 -0
  99. package/dist/data/designs/ios-bereal-expo.md +299 -0
  100. package/dist/data/designs/ios-bereal-swiftui.md +319 -0
  101. package/dist/data/designs/ios-bereal.md +336 -0
  102. package/dist/data/designs/ios-binance-android.md +481 -0
  103. package/dist/data/designs/ios-binance-expo.md +404 -0
  104. package/dist/data/designs/ios-binance-swiftui.md +418 -0
  105. package/dist/data/designs/ios-binance.md +410 -0
  106. package/dist/data/designs/ios-bluesky-android.md +442 -0
  107. package/dist/data/designs/ios-bluesky-expo.md +362 -0
  108. package/dist/data/designs/ios-bluesky-swiftui.md +328 -0
  109. package/dist/data/designs/ios-bluesky.md +338 -0
  110. package/dist/data/designs/ios-booking-android.md +471 -0
  111. package/dist/data/designs/ios-booking-expo.md +364 -0
  112. package/dist/data/designs/ios-booking-swiftui.md +377 -0
  113. package/dist/data/designs/ios-booking.md +346 -0
  114. package/dist/data/designs/ios-bumble-android.md +756 -0
  115. package/dist/data/designs/ios-bumble-expo.md +629 -0
  116. package/dist/data/designs/ios-bumble-swiftui.md +546 -0
  117. package/dist/data/designs/ios-bumble.md +424 -0
  118. package/dist/data/designs/ios-cal-ai-android.md +664 -0
  119. package/dist/data/designs/ios-cal-ai-expo.md +415 -0
  120. package/dist/data/designs/ios-cal-ai-swiftui.md +486 -0
  121. package/dist/data/designs/ios-cal-ai.md +387 -0
  122. package/dist/data/designs/ios-calm-android.md +431 -0
  123. package/dist/data/designs/ios-calm-expo.md +384 -0
  124. package/dist/data/designs/ios-calm-swiftui.md +327 -0
  125. package/dist/data/designs/ios-calm.md +356 -0
  126. package/dist/data/designs/ios-canva-android.md +469 -0
  127. package/dist/data/designs/ios-canva-expo.md +374 -0
  128. package/dist/data/designs/ios-canva-swiftui.md +422 -0
  129. package/dist/data/designs/ios-canva.md +395 -0
  130. package/dist/data/designs/ios-cash-app-android.md +601 -0
  131. package/dist/data/designs/ios-cash-app-expo.md +453 -0
  132. package/dist/data/designs/ios-cash-app-swiftui.md +463 -0
  133. package/dist/data/designs/ios-cash-app.md +365 -0
  134. package/dist/data/designs/ios-character-ai-android.md +489 -0
  135. package/dist/data/designs/ios-character-ai-expo.md +420 -0
  136. package/dist/data/designs/ios-character-ai-swiftui.md +417 -0
  137. package/dist/data/designs/ios-character-ai.md +392 -0
  138. package/dist/data/designs/ios-charles-schwab-android.md +454 -0
  139. package/dist/data/designs/ios-charles-schwab-expo.md +388 -0
  140. package/dist/data/designs/ios-charles-schwab-swiftui.md +394 -0
  141. package/dist/data/designs/ios-charles-schwab.md +380 -0
  142. package/dist/data/designs/ios-chatgpt-android.md +753 -0
  143. package/dist/data/designs/ios-chatgpt-expo.md +644 -0
  144. package/dist/data/designs/ios-chatgpt-swiftui.md +653 -0
  145. package/dist/data/designs/ios-chatgpt.md +466 -0
  146. package/dist/data/designs/ios-chime-android.md +438 -0
  147. package/dist/data/designs/ios-chime-expo.md +419 -0
  148. package/dist/data/designs/ios-chime-swiftui.md +383 -0
  149. package/dist/data/designs/ios-chime.md +389 -0
  150. package/dist/data/designs/ios-chipotle-android.md +397 -0
  151. package/dist/data/designs/ios-chipotle-expo.md +301 -0
  152. package/dist/data/designs/ios-chipotle-swiftui.md +345 -0
  153. package/dist/data/designs/ios-chipotle.md +340 -0
  154. package/dist/data/designs/ios-citymapper-android.md +466 -0
  155. package/dist/data/designs/ios-citymapper-expo.md +420 -0
  156. package/dist/data/designs/ios-citymapper-swiftui.md +424 -0
  157. package/dist/data/designs/ios-citymapper.md +394 -0
  158. package/dist/data/designs/ios-claude-android.md +625 -0
  159. package/dist/data/designs/ios-claude-expo.md +671 -0
  160. package/dist/data/designs/ios-claude-swiftui.md +649 -0
  161. package/dist/data/designs/ios-claude.md +447 -0
  162. package/dist/data/designs/ios-clickup-android.md +484 -0
  163. package/dist/data/designs/ios-clickup-expo.md +423 -0
  164. package/dist/data/designs/ios-clickup-swiftui.md +416 -0
  165. package/dist/data/designs/ios-clickup.md +431 -0
  166. package/dist/data/designs/ios-clubhouse-android.md +524 -0
  167. package/dist/data/designs/ios-clubhouse-expo.md +425 -0
  168. package/dist/data/designs/ios-clubhouse-swiftui.md +447 -0
  169. package/dist/data/designs/ios-clubhouse.md +406 -0
  170. package/dist/data/designs/ios-coffee-meets-bagel-android.md +461 -0
  171. package/dist/data/designs/ios-coffee-meets-bagel-expo.md +372 -0
  172. package/dist/data/designs/ios-coffee-meets-bagel-swiftui.md +368 -0
  173. package/dist/data/designs/ios-coffee-meets-bagel.md +376 -0
  174. package/dist/data/designs/ios-coinbase-android.md +611 -0
  175. package/dist/data/designs/ios-coinbase-expo.md +500 -0
  176. package/dist/data/designs/ios-coinbase-swiftui.md +490 -0
  177. package/dist/data/designs/ios-coinbase.md +409 -0
  178. package/dist/data/designs/ios-copilot-android.md +625 -0
  179. package/dist/data/designs/ios-copilot-expo.md +423 -0
  180. package/dist/data/designs/ios-copilot-swiftui.md +471 -0
  181. package/dist/data/designs/ios-copilot.md +367 -0
  182. package/dist/data/designs/ios-craft-android.md +459 -0
  183. package/dist/data/designs/ios-craft-expo.md +417 -0
  184. package/dist/data/designs/ios-craft-swiftui.md +449 -0
  185. package/dist/data/designs/ios-craft.md +449 -0
  186. package/dist/data/designs/ios-crunchyroll-android.md +432 -0
  187. package/dist/data/designs/ios-crunchyroll-expo.md +388 -0
  188. package/dist/data/designs/ios-crunchyroll-swiftui.md +417 -0
  189. package/dist/data/designs/ios-crunchyroll.md +388 -0
  190. package/dist/data/designs/ios-crypto-com-android.md +461 -0
  191. package/dist/data/designs/ios-crypto-com-expo.md +404 -0
  192. package/dist/data/designs/ios-crypto-com-swiftui.md +419 -0
  193. package/dist/data/designs/ios-crypto-com.md +410 -0
  194. package/dist/data/designs/ios-deepseek-android.md +471 -0
  195. package/dist/data/designs/ios-deepseek-expo.md +391 -0
  196. package/dist/data/designs/ios-deepseek-swiftui.md +354 -0
  197. package/dist/data/designs/ios-deepseek.md +393 -0
  198. package/dist/data/designs/ios-deezer-android.md +475 -0
  199. package/dist/data/designs/ios-deezer-expo.md +400 -0
  200. package/dist/data/designs/ios-deezer-swiftui.md +430 -0
  201. package/dist/data/designs/ios-deezer.md +388 -0
  202. package/dist/data/designs/ios-deliveroo-android.md +493 -0
  203. package/dist/data/designs/ios-deliveroo-expo.md +424 -0
  204. package/dist/data/designs/ios-deliveroo-swiftui.md +398 -0
  205. package/dist/data/designs/ios-deliveroo.md +420 -0
  206. package/dist/data/designs/ios-delta-android.md +439 -0
  207. package/dist/data/designs/ios-delta-expo.md +381 -0
  208. package/dist/data/designs/ios-delta-swiftui.md +400 -0
  209. package/dist/data/designs/ios-delta.md +397 -0
  210. package/dist/data/designs/ios-discord-android.md +611 -0
  211. package/dist/data/designs/ios-discord-expo.md +618 -0
  212. package/dist/data/designs/ios-discord-swiftui.md +630 -0
  213. package/dist/data/designs/ios-discord.md +451 -0
  214. package/dist/data/designs/ios-disney-plus-android.md +464 -0
  215. package/dist/data/designs/ios-disney-plus-expo.md +358 -0
  216. package/dist/data/designs/ios-disney-plus-swiftui.md +412 -0
  217. package/dist/data/designs/ios-disney-plus.md +355 -0
  218. package/dist/data/designs/ios-dominos-android.md +417 -0
  219. package/dist/data/designs/ios-dominos-expo.md +316 -0
  220. package/dist/data/designs/ios-dominos-swiftui.md +340 -0
  221. package/dist/data/designs/ios-dominos.md +347 -0
  222. package/dist/data/designs/ios-doordash-android.md +527 -0
  223. package/dist/data/designs/ios-doordash-expo.md +323 -0
  224. package/dist/data/designs/ios-doordash-swiftui.md +301 -0
  225. package/dist/data/designs/ios-doordash.md +393 -0
  226. package/dist/data/designs/ios-dropbox-android.md +522 -0
  227. package/dist/data/designs/ios-dropbox-expo.md +393 -0
  228. package/dist/data/designs/ios-dropbox-swiftui.md +400 -0
  229. package/dist/data/designs/ios-dropbox.md +374 -0
  230. package/dist/data/designs/ios-duolingo-android.md +641 -0
  231. package/dist/data/designs/ios-duolingo-expo.md +597 -0
  232. package/dist/data/designs/ios-duolingo-swiftui.md +539 -0
  233. package/dist/data/designs/ios-duolingo.md +409 -0
  234. package/dist/data/designs/ios-ebay-android.md +436 -0
  235. package/dist/data/designs/ios-ebay-expo.md +344 -0
  236. package/dist/data/designs/ios-ebay-swiftui.md +308 -0
  237. package/dist/data/designs/ios-ebay.md +355 -0
  238. package/dist/data/designs/ios-espn-android.md +468 -0
  239. package/dist/data/designs/ios-espn-expo.md +387 -0
  240. package/dist/data/designs/ios-espn-swiftui.md +410 -0
  241. package/dist/data/designs/ios-espn.md +384 -0
  242. package/dist/data/designs/ios-etsy-android.md +439 -0
  243. package/dist/data/designs/ios-etsy-expo.md +351 -0
  244. package/dist/data/designs/ios-etsy-swiftui.md +296 -0
  245. package/dist/data/designs/ios-etsy.md +355 -0
  246. package/dist/data/designs/ios-evernote-android.md +419 -0
  247. package/dist/data/designs/ios-evernote-expo.md +379 -0
  248. package/dist/data/designs/ios-evernote-swiftui.md +380 -0
  249. package/dist/data/designs/ios-evernote.md +416 -0
  250. package/dist/data/designs/ios-expedia-android.md +451 -0
  251. package/dist/data/designs/ios-expedia-expo.md +433 -0
  252. package/dist/data/designs/ios-expedia-swiftui.md +399 -0
  253. package/dist/data/designs/ios-expedia.md +431 -0
  254. package/dist/data/designs/ios-facebook-android.md +628 -0
  255. package/dist/data/designs/ios-facebook-expo.md +471 -0
  256. package/dist/data/designs/ios-facebook-swiftui.md +459 -0
  257. package/dist/data/designs/ios-facebook.md +452 -0
  258. package/dist/data/designs/ios-feeld-android.md +431 -0
  259. package/dist/data/designs/ios-feeld-expo.md +379 -0
  260. package/dist/data/designs/ios-feeld-swiftui.md +401 -0
  261. package/dist/data/designs/ios-feeld.md +378 -0
  262. package/dist/data/designs/ios-fidelity-android.md +426 -0
  263. package/dist/data/designs/ios-fidelity-expo.md +396 -0
  264. package/dist/data/designs/ios-fidelity-swiftui.md +398 -0
  265. package/dist/data/designs/ios-fidelity.md +387 -0
  266. package/dist/data/designs/ios-figma-android.md +578 -0
  267. package/dist/data/designs/ios-figma-expo.md +504 -0
  268. package/dist/data/designs/ios-figma-swiftui.md +542 -0
  269. package/dist/data/designs/ios-figma.md +404 -0
  270. package/dist/data/designs/ios-fitbit-android.md +439 -0
  271. package/dist/data/designs/ios-fitbit-expo.md +389 -0
  272. package/dist/data/designs/ios-fitbit-swiftui.md +380 -0
  273. package/dist/data/designs/ios-fitbit.md +396 -0
  274. package/dist/data/designs/ios-flickr-android.md +506 -0
  275. package/dist/data/designs/ios-flickr-expo.md +434 -0
  276. package/dist/data/designs/ios-flickr-swiftui.md +421 -0
  277. package/dist/data/designs/ios-flickr.md +394 -0
  278. package/dist/data/designs/ios-flighty-android.md +418 -0
  279. package/dist/data/designs/ios-flighty-expo.md +353 -0
  280. package/dist/data/designs/ios-flighty-swiftui.md +337 -0
  281. package/dist/data/designs/ios-flighty.md +357 -0
  282. package/dist/data/designs/ios-flo-android.md +447 -0
  283. package/dist/data/designs/ios-flo-expo.md +363 -0
  284. package/dist/data/designs/ios-flo-swiftui.md +355 -0
  285. package/dist/data/designs/ios-flo.md +351 -0
  286. package/dist/data/designs/ios-garmin-connect-android.md +531 -0
  287. package/dist/data/designs/ios-garmin-connect-expo.md +429 -0
  288. package/dist/data/designs/ios-garmin-connect-swiftui.md +459 -0
  289. package/dist/data/designs/ios-garmin-connect.md +419 -0
  290. package/dist/data/designs/ios-gas-android.md +438 -0
  291. package/dist/data/designs/ios-gas-expo.md +350 -0
  292. package/dist/data/designs/ios-gas-swiftui.md +329 -0
  293. package/dist/data/designs/ios-gas.md +387 -0
  294. package/dist/data/designs/ios-gemini-android.md +568 -0
  295. package/dist/data/designs/ios-gemini-expo.md +416 -0
  296. package/dist/data/designs/ios-gemini-swiftui.md +424 -0
  297. package/dist/data/designs/ios-gemini.md +351 -0
  298. package/dist/data/designs/ios-github-android.md +507 -0
  299. package/dist/data/designs/ios-github-expo.md +486 -0
  300. package/dist/data/designs/ios-github-swiftui.md +459 -0
  301. package/dist/data/designs/ios-github.md +394 -0
  302. package/dist/data/designs/ios-gmail-android.md +548 -0
  303. package/dist/data/designs/ios-gmail-expo.md +457 -0
  304. package/dist/data/designs/ios-gmail-swiftui.md +470 -0
  305. package/dist/data/designs/ios-gmail.md +441 -0
  306. package/dist/data/designs/ios-goodreads-android.md +436 -0
  307. package/dist/data/designs/ios-goodreads-expo.md +407 -0
  308. package/dist/data/designs/ios-goodreads-swiftui.md +378 -0
  309. package/dist/data/designs/ios-goodreads.md +385 -0
  310. package/dist/data/designs/ios-google-calendar-android.md +565 -0
  311. package/dist/data/designs/ios-google-calendar-expo.md +616 -0
  312. package/dist/data/designs/ios-google-calendar-swiftui.md +585 -0
  313. package/dist/data/designs/ios-google-calendar.md +431 -0
  314. package/dist/data/designs/ios-google-maps-android.md +614 -0
  315. package/dist/data/designs/ios-google-maps-expo.md +515 -0
  316. package/dist/data/designs/ios-google-maps-swiftui.md +484 -0
  317. package/dist/data/designs/ios-google-maps.md +451 -0
  318. package/dist/data/designs/ios-grammarly-android.md +449 -0
  319. package/dist/data/designs/ios-grammarly-expo.md +383 -0
  320. package/dist/data/designs/ios-grammarly-swiftui.md +381 -0
  321. package/dist/data/designs/ios-grammarly.md +392 -0
  322. package/dist/data/designs/ios-grindr-android.md +494 -0
  323. package/dist/data/designs/ios-grindr-expo.md +358 -0
  324. package/dist/data/designs/ios-grindr-swiftui.md +357 -0
  325. package/dist/data/designs/ios-grindr.md +356 -0
  326. package/dist/data/designs/ios-grok-android.md +471 -0
  327. package/dist/data/designs/ios-grok-expo.md +388 -0
  328. package/dist/data/designs/ios-grok-swiftui.md +397 -0
  329. package/dist/data/designs/ios-grok.md +357 -0
  330. package/dist/data/designs/ios-groupme-android.md +551 -0
  331. package/dist/data/designs/ios-groupme-expo.md +442 -0
  332. package/dist/data/designs/ios-groupme-swiftui.md +439 -0
  333. package/dist/data/designs/ios-groupme.md +424 -0
  334. package/dist/data/designs/ios-grubhub-android.md +506 -0
  335. package/dist/data/designs/ios-grubhub-expo.md +428 -0
  336. package/dist/data/designs/ios-grubhub-swiftui.md +408 -0
  337. package/dist/data/designs/ios-grubhub.md +427 -0
  338. package/dist/data/designs/ios-happn-android.md +464 -0
  339. package/dist/data/designs/ios-happn-expo.md +411 -0
  340. package/dist/data/designs/ios-happn-swiftui.md +401 -0
  341. package/dist/data/designs/ios-happn.md +400 -0
  342. package/dist/data/designs/ios-headspace-android.md +688 -0
  343. package/dist/data/designs/ios-headspace-expo.md +574 -0
  344. package/dist/data/designs/ios-headspace-swiftui.md +498 -0
  345. package/dist/data/designs/ios-headspace.md +430 -0
  346. package/dist/data/designs/ios-hevy-android.md +473 -0
  347. package/dist/data/designs/ios-hevy-expo.md +405 -0
  348. package/dist/data/designs/ios-hevy-swiftui.md +367 -0
  349. package/dist/data/designs/ios-hevy.md +410 -0
  350. package/dist/data/designs/ios-hinge-android.md +743 -0
  351. package/dist/data/designs/ios-hinge-expo.md +580 -0
  352. package/dist/data/designs/ios-hinge-swiftui.md +512 -0
  353. package/dist/data/designs/ios-hinge.md +405 -0
  354. package/dist/data/designs/ios-hopper-android.md +440 -0
  355. package/dist/data/designs/ios-hopper-expo.md +353 -0
  356. package/dist/data/designs/ios-hopper-swiftui.md +340 -0
  357. package/dist/data/designs/ios-hopper.md +354 -0
  358. package/dist/data/designs/ios-hulu-android.md +435 -0
  359. package/dist/data/designs/ios-hulu-expo.md +331 -0
  360. package/dist/data/designs/ios-hulu-swiftui.md +374 -0
  361. package/dist/data/designs/ios-hulu.md +353 -0
  362. package/dist/data/designs/ios-iheartradio-android.md +481 -0
  363. package/dist/data/designs/ios-iheartradio-expo.md +417 -0
  364. package/dist/data/designs/ios-iheartradio-swiftui.md +423 -0
  365. package/dist/data/designs/ios-iheartradio.md +381 -0
  366. package/dist/data/designs/ios-imessage-android.md +426 -0
  367. package/dist/data/designs/ios-imessage-expo.md +384 -0
  368. package/dist/data/designs/ios-imessage-swiftui.md +378 -0
  369. package/dist/data/designs/ios-imessage.md +394 -0
  370. package/dist/data/designs/ios-instacart-android.md +471 -0
  371. package/dist/data/designs/ios-instacart-expo.md +349 -0
  372. package/dist/data/designs/ios-instacart-swiftui.md +378 -0
  373. package/dist/data/designs/ios-instacart.md +360 -0
  374. package/dist/data/designs/ios-instagram-android.md +646 -0
  375. package/dist/data/designs/ios-instagram-expo.md +310 -0
  376. package/dist/data/designs/ios-instagram-swiftui.md +333 -0
  377. package/dist/data/designs/ios-instagram.md +376 -0
  378. package/dist/data/designs/ios-jira-android.md +432 -0
  379. package/dist/data/designs/ios-jira-expo.md +375 -0
  380. package/dist/data/designs/ios-jira-swiftui.md +433 -0
  381. package/dist/data/designs/ios-jira.md +424 -0
  382. package/dist/data/designs/ios-kakaotalk-android.md +491 -0
  383. package/dist/data/designs/ios-kakaotalk-expo.md +418 -0
  384. package/dist/data/designs/ios-kakaotalk-swiftui.md +406 -0
  385. package/dist/data/designs/ios-kakaotalk.md +414 -0
  386. package/dist/data/designs/ios-kayak-android.md +466 -0
  387. package/dist/data/designs/ios-kayak-expo.md +407 -0
  388. package/dist/data/designs/ios-kayak-swiftui.md +426 -0
  389. package/dist/data/designs/ios-kayak.md +392 -0
  390. package/dist/data/designs/ios-kick-android.md +487 -0
  391. package/dist/data/designs/ios-kick-expo.md +434 -0
  392. package/dist/data/designs/ios-kick-swiftui.md +429 -0
  393. package/dist/data/designs/ios-kick.md +389 -0
  394. package/dist/data/designs/ios-kik-android.md +433 -0
  395. package/dist/data/designs/ios-kik-expo.md +363 -0
  396. package/dist/data/designs/ios-kik-swiftui.md +363 -0
  397. package/dist/data/designs/ios-kik.md +392 -0
  398. package/dist/data/designs/ios-kindle-android.md +439 -0
  399. package/dist/data/designs/ios-kindle-expo.md +356 -0
  400. package/dist/data/designs/ios-kindle-swiftui.md +372 -0
  401. package/dist/data/designs/ios-kindle.md +369 -0
  402. package/dist/data/designs/ios-klarna-android.md +420 -0
  403. package/dist/data/designs/ios-klarna-expo.md +349 -0
  404. package/dist/data/designs/ios-klarna-swiftui.md +360 -0
  405. package/dist/data/designs/ios-klarna.md +356 -0
  406. package/dist/data/designs/ios-lemon8-android.md +492 -0
  407. package/dist/data/designs/ios-lemon8-expo.md +413 -0
  408. package/dist/data/designs/ios-lemon8-swiftui.md +428 -0
  409. package/dist/data/designs/ios-lemon8.md +378 -0
  410. package/dist/data/designs/ios-life360-android.md +474 -0
  411. package/dist/data/designs/ios-life360-expo.md +375 -0
  412. package/dist/data/designs/ios-life360-swiftui.md +390 -0
  413. package/dist/data/designs/ios-life360.md +402 -0
  414. package/dist/data/designs/ios-line-android.md +517 -0
  415. package/dist/data/designs/ios-line-expo.md +402 -0
  416. package/dist/data/designs/ios-line-swiftui.md +361 -0
  417. package/dist/data/designs/ios-line.md +362 -0
  418. package/dist/data/designs/ios-linear-android.md +457 -0
  419. package/dist/data/designs/ios-linear-expo.md +367 -0
  420. package/dist/data/designs/ios-linear-swiftui.md +401 -0
  421. package/dist/data/designs/ios-linear.md +368 -0
  422. package/dist/data/designs/ios-linkedin-android.md +620 -0
  423. package/dist/data/designs/ios-linkedin-expo.md +469 -0
  424. package/dist/data/designs/ios-linkedin-swiftui.md +472 -0
  425. package/dist/data/designs/ios-linkedin.md +444 -0
  426. package/dist/data/designs/ios-locket-android.md +500 -0
  427. package/dist/data/designs/ios-locket-expo.md +375 -0
  428. package/dist/data/designs/ios-locket-swiftui.md +375 -0
  429. package/dist/data/designs/ios-locket.md +381 -0
  430. package/dist/data/designs/ios-lyft-android.md +406 -0
  431. package/dist/data/designs/ios-lyft-expo.md +333 -0
  432. package/dist/data/designs/ios-lyft-swiftui.md +315 -0
  433. package/dist/data/designs/ios-lyft.md +337 -0
  434. package/dist/data/designs/ios-marriott-bonvoy-android.md +488 -0
  435. package/dist/data/designs/ios-marriott-bonvoy-expo.md +412 -0
  436. package/dist/data/designs/ios-marriott-bonvoy-swiftui.md +461 -0
  437. package/dist/data/designs/ios-marriott-bonvoy.md +379 -0
  438. package/dist/data/designs/ios-mastodon-android.md +476 -0
  439. package/dist/data/designs/ios-mastodon-expo.md +379 -0
  440. package/dist/data/designs/ios-mastodon-swiftui.md +349 -0
  441. package/dist/data/designs/ios-mastodon.md +337 -0
  442. package/dist/data/designs/ios-match-android.md +496 -0
  443. package/dist/data/designs/ios-match-expo.md +393 -0
  444. package/dist/data/designs/ios-match-swiftui.md +450 -0
  445. package/dist/data/designs/ios-match.md +382 -0
  446. package/dist/data/designs/ios-max-android.md +454 -0
  447. package/dist/data/designs/ios-max-expo.md +342 -0
  448. package/dist/data/designs/ios-max-swiftui.md +332 -0
  449. package/dist/data/designs/ios-max.md +352 -0
  450. package/dist/data/designs/ios-mcdonalds-android.md +497 -0
  451. package/dist/data/designs/ios-mcdonalds-expo.md +382 -0
  452. package/dist/data/designs/ios-mcdonalds-swiftui.md +394 -0
  453. package/dist/data/designs/ios-mcdonalds.md +410 -0
  454. package/dist/data/designs/ios-messenger-android.md +523 -0
  455. package/dist/data/designs/ios-messenger-expo.md +379 -0
  456. package/dist/data/designs/ios-messenger-swiftui.md +369 -0
  457. package/dist/data/designs/ios-messenger.md +361 -0
  458. package/dist/data/designs/ios-microsoft-teams-android.md +446 -0
  459. package/dist/data/designs/ios-microsoft-teams-expo.md +362 -0
  460. package/dist/data/designs/ios-microsoft-teams-swiftui.md +384 -0
  461. package/dist/data/designs/ios-microsoft-teams.md +359 -0
  462. package/dist/data/designs/ios-midjourney-android.md +503 -0
  463. package/dist/data/designs/ios-midjourney-expo.md +406 -0
  464. package/dist/data/designs/ios-midjourney-swiftui.md +376 -0
  465. package/dist/data/designs/ios-midjourney.md +407 -0
  466. package/dist/data/designs/ios-miro-android.md +475 -0
  467. package/dist/data/designs/ios-miro-expo.md +421 -0
  468. package/dist/data/designs/ios-miro-swiftui.md +407 -0
  469. package/dist/data/designs/ios-miro.md +424 -0
  470. package/dist/data/designs/ios-monday-android.md +426 -0
  471. package/dist/data/designs/ios-monday-expo.md +382 -0
  472. package/dist/data/designs/ios-monday-swiftui.md +386 -0
  473. package/dist/data/designs/ios-monday.md +415 -0
  474. package/dist/data/designs/ios-monzo-android.md +423 -0
  475. package/dist/data/designs/ios-monzo-expo.md +391 -0
  476. package/dist/data/designs/ios-monzo-swiftui.md +371 -0
  477. package/dist/data/designs/ios-monzo.md +382 -0
  478. package/dist/data/designs/ios-myfitnesspal-android.md +631 -0
  479. package/dist/data/designs/ios-myfitnesspal-expo.md +489 -0
  480. package/dist/data/designs/ios-myfitnesspal-swiftui.md +500 -0
  481. package/dist/data/designs/ios-myfitnesspal.md +408 -0
  482. package/dist/data/designs/ios-netflix-android.md +570 -0
  483. package/dist/data/designs/ios-netflix-expo.md +528 -0
  484. package/dist/data/designs/ios-netflix-swiftui.md +543 -0
  485. package/dist/data/designs/ios-netflix.md +476 -0
  486. package/dist/data/designs/ios-nextdoor-android.md +399 -0
  487. package/dist/data/designs/ios-nextdoor-expo.md +317 -0
  488. package/dist/data/designs/ios-nextdoor-swiftui.md +343 -0
  489. package/dist/data/designs/ios-nextdoor.md +332 -0
  490. package/dist/data/designs/ios-nike-run-club-android.md +598 -0
  491. package/dist/data/designs/ios-nike-run-club-expo.md +459 -0
  492. package/dist/data/designs/ios-nike-run-club-swiftui.md +474 -0
  493. package/dist/data/designs/ios-nike-run-club.md +400 -0
  494. package/dist/data/designs/ios-noom-android.md +455 -0
  495. package/dist/data/designs/ios-noom-expo.md +362 -0
  496. package/dist/data/designs/ios-noom-swiftui.md +369 -0
  497. package/dist/data/designs/ios-noom.md +404 -0
  498. package/dist/data/designs/ios-notion-android.md +575 -0
  499. package/dist/data/designs/ios-notion-expo.md +543 -0
  500. package/dist/data/designs/ios-notion-swiftui.md +562 -0
  501. package/dist/data/designs/ios-notion.md +506 -0
  502. package/dist/data/designs/ios-nubank-android.md +447 -0
  503. package/dist/data/designs/ios-nubank-expo.md +391 -0
  504. package/dist/data/designs/ios-nubank-swiftui.md +391 -0
  505. package/dist/data/designs/ios-nubank.md +388 -0
  506. package/dist/data/designs/ios-obsidian-android.md +456 -0
  507. package/dist/data/designs/ios-obsidian-expo.md +401 -0
  508. package/dist/data/designs/ios-obsidian-swiftui.md +412 -0
  509. package/dist/data/designs/ios-obsidian.md +363 -0
  510. package/dist/data/designs/ios-okcupid-android.md +496 -0
  511. package/dist/data/designs/ios-okcupid-expo.md +378 -0
  512. package/dist/data/designs/ios-okcupid-swiftui.md +343 -0
  513. package/dist/data/designs/ios-okcupid.md +364 -0
  514. package/dist/data/designs/ios-opentable-android.md +426 -0
  515. package/dist/data/designs/ios-opentable-expo.md +350 -0
  516. package/dist/data/designs/ios-opentable-swiftui.md +328 -0
  517. package/dist/data/designs/ios-opentable.md +411 -0
  518. package/dist/data/designs/ios-oura-android.md +426 -0
  519. package/dist/data/designs/ios-oura-expo.md +353 -0
  520. package/dist/data/designs/ios-oura-swiftui.md +327 -0
  521. package/dist/data/designs/ios-oura.md +356 -0
  522. package/dist/data/designs/ios-overcast-android.md +508 -0
  523. package/dist/data/designs/ios-overcast-expo.md +420 -0
  524. package/dist/data/designs/ios-overcast-swiftui.md +427 -0
  525. package/dist/data/designs/ios-overcast.md +414 -0
  526. package/dist/data/designs/ios-pandora-android.md +477 -0
  527. package/dist/data/designs/ios-pandora-expo.md +406 -0
  528. package/dist/data/designs/ios-pandora-swiftui.md +413 -0
  529. package/dist/data/designs/ios-pandora.md +366 -0
  530. package/dist/data/designs/ios-panera-android.md +414 -0
  531. package/dist/data/designs/ios-panera-expo.md +352 -0
  532. package/dist/data/designs/ios-panera-swiftui.md +369 -0
  533. package/dist/data/designs/ios-panera.md +412 -0
  534. package/dist/data/designs/ios-paramount-plus-android.md +415 -0
  535. package/dist/data/designs/ios-paramount-plus-expo.md +363 -0
  536. package/dist/data/designs/ios-paramount-plus-swiftui.md +372 -0
  537. package/dist/data/designs/ios-paramount-plus.md +400 -0
  538. package/dist/data/designs/ios-paypal-android.md +535 -0
  539. package/dist/data/designs/ios-paypal-expo.md +429 -0
  540. package/dist/data/designs/ios-paypal-swiftui.md +466 -0
  541. package/dist/data/designs/ios-paypal.md +393 -0
  542. package/dist/data/designs/ios-peacock-android.md +453 -0
  543. package/dist/data/designs/ios-peacock-expo.md +393 -0
  544. package/dist/data/designs/ios-peacock-swiftui.md +420 -0
  545. package/dist/data/designs/ios-peacock.md +411 -0
  546. package/dist/data/designs/ios-peloton-android.md +470 -0
  547. package/dist/data/designs/ios-peloton-expo.md +401 -0
  548. package/dist/data/designs/ios-peloton-swiftui.md +409 -0
  549. package/dist/data/designs/ios-peloton.md +415 -0
  550. package/dist/data/designs/ios-perplexity-android.md +553 -0
  551. package/dist/data/designs/ios-perplexity-expo.md +703 -0
  552. package/dist/data/designs/ios-perplexity-swiftui.md +602 -0
  553. package/dist/data/designs/ios-perplexity.md +453 -0
  554. package/dist/data/designs/ios-pinterest-android.md +551 -0
  555. package/dist/data/designs/ios-pinterest-expo.md +466 -0
  556. package/dist/data/designs/ios-pinterest-swiftui.md +464 -0
  557. package/dist/data/designs/ios-pinterest.md +427 -0
  558. package/dist/data/designs/ios-plenty-of-fish-android.md +462 -0
  559. package/dist/data/designs/ios-plenty-of-fish-expo.md +380 -0
  560. package/dist/data/designs/ios-plenty-of-fish-swiftui.md +429 -0
  561. package/dist/data/designs/ios-plenty-of-fish.md +387 -0
  562. package/dist/data/designs/ios-plex-android.md +403 -0
  563. package/dist/data/designs/ios-plex-expo.md +333 -0
  564. package/dist/data/designs/ios-plex-swiftui.md +349 -0
  565. package/dist/data/designs/ios-plex.md +379 -0
  566. package/dist/data/designs/ios-pluto-tv-android.md +413 -0
  567. package/dist/data/designs/ios-pluto-tv-expo.md +379 -0
  568. package/dist/data/designs/ios-pluto-tv-swiftui.md +411 -0
  569. package/dist/data/designs/ios-pluto-tv.md +362 -0
  570. package/dist/data/designs/ios-pocket-casts-android.md +492 -0
  571. package/dist/data/designs/ios-pocket-casts-expo.md +430 -0
  572. package/dist/data/designs/ios-pocket-casts-swiftui.md +479 -0
  573. package/dist/data/designs/ios-pocket-casts.md +427 -0
  574. package/dist/data/designs/ios-postman-android.md +472 -0
  575. package/dist/data/designs/ios-postman-expo.md +372 -0
  576. package/dist/data/designs/ios-postman-swiftui.md +377 -0
  577. package/dist/data/designs/ios-postman.md +405 -0
  578. package/dist/data/designs/ios-prime-video-android.md +447 -0
  579. package/dist/data/designs/ios-prime-video-expo.md +365 -0
  580. package/dist/data/designs/ios-prime-video-swiftui.md +333 -0
  581. package/dist/data/designs/ios-prime-video.md +351 -0
  582. package/dist/data/designs/ios-quora-android.md +513 -0
  583. package/dist/data/designs/ios-quora-expo.md +362 -0
  584. package/dist/data/designs/ios-quora-swiftui.md +375 -0
  585. package/dist/data/designs/ios-quora.md +359 -0
  586. package/dist/data/designs/ios-raya-android.md +401 -0
  587. package/dist/data/designs/ios-raya-expo.md +366 -0
  588. package/dist/data/designs/ios-raya-swiftui.md +393 -0
  589. package/dist/data/designs/ios-raya.md +366 -0
  590. package/dist/data/designs/ios-reddit-android.md +605 -0
  591. package/dist/data/designs/ios-reddit-expo.md +553 -0
  592. package/dist/data/designs/ios-reddit-swiftui.md +514 -0
  593. package/dist/data/designs/ios-reddit.md +460 -0
  594. package/dist/data/designs/ios-resy-android.md +430 -0
  595. package/dist/data/designs/ios-resy-expo.md +344 -0
  596. package/dist/data/designs/ios-resy-swiftui.md +330 -0
  597. package/dist/data/designs/ios-resy.md +412 -0
  598. package/dist/data/designs/ios-revolut-android.md +433 -0
  599. package/dist/data/designs/ios-revolut-expo.md +379 -0
  600. package/dist/data/designs/ios-revolut-swiftui.md +372 -0
  601. package/dist/data/designs/ios-revolut.md +353 -0
  602. package/dist/data/designs/ios-robinhood-android.md +587 -0
  603. package/dist/data/designs/ios-robinhood-expo.md +416 -0
  604. package/dist/data/designs/ios-robinhood-swiftui.md +431 -0
  605. package/dist/data/designs/ios-robinhood.md +380 -0
  606. package/dist/data/designs/ios-runna-android.md +485 -0
  607. package/dist/data/designs/ios-runna-expo.md +388 -0
  608. package/dist/data/designs/ios-runna-swiftui.md +413 -0
  609. package/dist/data/designs/ios-runna.md +390 -0
  610. package/dist/data/designs/ios-shazam-android.md +436 -0
  611. package/dist/data/designs/ios-shazam-expo.md +348 -0
  612. package/dist/data/designs/ios-shazam-swiftui.md +394 -0
  613. package/dist/data/designs/ios-shazam.md +338 -0
  614. package/dist/data/designs/ios-signal-android.md +462 -0
  615. package/dist/data/designs/ios-signal-expo.md +361 -0
  616. package/dist/data/designs/ios-signal-swiftui.md +350 -0
  617. package/dist/data/designs/ios-signal.md +357 -0
  618. package/dist/data/designs/ios-skype-android.md +398 -0
  619. package/dist/data/designs/ios-skype-expo.md +368 -0
  620. package/dist/data/designs/ios-skype-swiftui.md +369 -0
  621. package/dist/data/designs/ios-skype.md +406 -0
  622. package/dist/data/designs/ios-skyscanner-android.md +451 -0
  623. package/dist/data/designs/ios-skyscanner-expo.md +423 -0
  624. package/dist/data/designs/ios-skyscanner-swiftui.md +419 -0
  625. package/dist/data/designs/ios-skyscanner.md +421 -0
  626. package/dist/data/designs/ios-slack-android.md +695 -0
  627. package/dist/data/designs/ios-slack-expo.md +601 -0
  628. package/dist/data/designs/ios-slack-swiftui.md +594 -0
  629. package/dist/data/designs/ios-slack.md +474 -0
  630. package/dist/data/designs/ios-sleep-cycle-android.md +436 -0
  631. package/dist/data/designs/ios-sleep-cycle-expo.md +380 -0
  632. package/dist/data/designs/ios-sleep-cycle-swiftui.md +409 -0
  633. package/dist/data/designs/ios-sleep-cycle.md +386 -0
  634. package/dist/data/designs/ios-snapchat-android.md +671 -0
  635. package/dist/data/designs/ios-snapchat-expo.md +528 -0
  636. package/dist/data/designs/ios-snapchat-swiftui.md +557 -0
  637. package/dist/data/designs/ios-snapchat.md +478 -0
  638. package/dist/data/designs/ios-sofi-android.md +446 -0
  639. package/dist/data/designs/ios-sofi-expo.md +387 -0
  640. package/dist/data/designs/ios-sofi-swiftui.md +379 -0
  641. package/dist/data/designs/ios-sofi.md +385 -0
  642. package/dist/data/designs/ios-soundcloud-android.md +488 -0
  643. package/dist/data/designs/ios-soundcloud-expo.md +364 -0
  644. package/dist/data/designs/ios-soundcloud-swiftui.md +399 -0
  645. package/dist/data/designs/ios-soundcloud.md +359 -0
  646. package/dist/data/designs/ios-southwest-android.md +446 -0
  647. package/dist/data/designs/ios-southwest-expo.md +389 -0
  648. package/dist/data/designs/ios-southwest-swiftui.md +405 -0
  649. package/dist/data/designs/ios-southwest.md +405 -0
  650. package/dist/data/designs/ios-spotify-android.md +427 -0
  651. package/dist/data/designs/ios-spotify-expo.md +321 -0
  652. package/dist/data/designs/ios-spotify-swiftui.md +312 -0
  653. package/dist/data/designs/ios-spotify.md +366 -0
  654. package/dist/data/designs/ios-starbucks-android.md +622 -0
  655. package/dist/data/designs/ios-starbucks-expo.md +497 -0
  656. package/dist/data/designs/ios-starbucks-swiftui.md +500 -0
  657. package/dist/data/designs/ios-starbucks.md +440 -0
  658. package/dist/data/designs/ios-strava-android.md +656 -0
  659. package/dist/data/designs/ios-strava-expo.md +501 -0
  660. package/dist/data/designs/ios-strava-swiftui.md +465 -0
  661. package/dist/data/designs/ios-strava.md +433 -0
  662. package/dist/data/designs/ios-strong-android.md +479 -0
  663. package/dist/data/designs/ios-strong-expo.md +396 -0
  664. package/dist/data/designs/ios-strong-swiftui.md +363 -0
  665. package/dist/data/designs/ios-strong.md +415 -0
  666. package/dist/data/designs/ios-substack-android.md +440 -0
  667. package/dist/data/designs/ios-substack-expo.md +395 -0
  668. package/dist/data/designs/ios-substack-swiftui.md +371 -0
  669. package/dist/data/designs/ios-substack.md +372 -0
  670. package/dist/data/designs/ios-swiggy-android.md +549 -0
  671. package/dist/data/designs/ios-swiggy-expo.md +443 -0
  672. package/dist/data/designs/ios-swiggy-swiftui.md +471 -0
  673. package/dist/data/designs/ios-swiggy.md +432 -0
  674. package/dist/data/designs/ios-taco-bell-android.md +529 -0
  675. package/dist/data/designs/ios-taco-bell-expo.md +407 -0
  676. package/dist/data/designs/ios-taco-bell-swiftui.md +419 -0
  677. package/dist/data/designs/ios-taco-bell.md +430 -0
  678. package/dist/data/designs/ios-telegram-android.md +676 -0
  679. package/dist/data/designs/ios-telegram-expo.md +594 -0
  680. package/dist/data/designs/ios-telegram-swiftui.md +518 -0
  681. package/dist/data/designs/ios-telegram.md +458 -0
  682. package/dist/data/designs/ios-the-league-android.md +454 -0
  683. package/dist/data/designs/ios-the-league-expo.md +391 -0
  684. package/dist/data/designs/ios-the-league-swiftui.md +409 -0
  685. package/dist/data/designs/ios-the-league.md +368 -0
  686. package/dist/data/designs/ios-things-3-android.md +421 -0
  687. package/dist/data/designs/ios-things-3-expo.md +351 -0
  688. package/dist/data/designs/ios-things-3-swiftui.md +359 -0
  689. package/dist/data/designs/ios-things-3.md +339 -0
  690. package/dist/data/designs/ios-threads-android.md +588 -0
  691. package/dist/data/designs/ios-threads-expo.md +468 -0
  692. package/dist/data/designs/ios-threads-swiftui.md +452 -0
  693. package/dist/data/designs/ios-threads.md +424 -0
  694. package/dist/data/designs/ios-threema-android.md +496 -0
  695. package/dist/data/designs/ios-threema-expo.md +415 -0
  696. package/dist/data/designs/ios-threema-swiftui.md +446 -0
  697. package/dist/data/designs/ios-threema.md +397 -0
  698. package/dist/data/designs/ios-tidal-android.md +398 -0
  699. package/dist/data/designs/ios-tidal-expo.md +323 -0
  700. package/dist/data/designs/ios-tidal-swiftui.md +340 -0
  701. package/dist/data/designs/ios-tidal.md +351 -0
  702. package/dist/data/designs/ios-tiktok-android.md +654 -0
  703. package/dist/data/designs/ios-tiktok-expo.md +578 -0
  704. package/dist/data/designs/ios-tiktok-swiftui.md +595 -0
  705. package/dist/data/designs/ios-tiktok.md +387 -0
  706. package/dist/data/designs/ios-tinder-android.md +681 -0
  707. package/dist/data/designs/ios-tinder-expo.md +512 -0
  708. package/dist/data/designs/ios-tinder-swiftui.md +497 -0
  709. package/dist/data/designs/ios-tinder.md +415 -0
  710. package/dist/data/designs/ios-todoist-android.md +711 -0
  711. package/dist/data/designs/ios-todoist-expo.md +607 -0
  712. package/dist/data/designs/ios-todoist-swiftui.md +573 -0
  713. package/dist/data/designs/ios-todoist.md +418 -0
  714. package/dist/data/designs/ios-trello-android.md +412 -0
  715. package/dist/data/designs/ios-trello-expo.md +332 -0
  716. package/dist/data/designs/ios-trello-swiftui.md +359 -0
  717. package/dist/data/designs/ios-trello.md +344 -0
  718. package/dist/data/designs/ios-tripadvisor-android.md +450 -0
  719. package/dist/data/designs/ios-tripadvisor-expo.md +322 -0
  720. package/dist/data/designs/ios-tripadvisor-swiftui.md +326 -0
  721. package/dist/data/designs/ios-tripadvisor.md +356 -0
  722. package/dist/data/designs/ios-tubi-android.md +453 -0
  723. package/dist/data/designs/ios-tubi-expo.md +419 -0
  724. package/dist/data/designs/ios-tubi-swiftui.md +463 -0
  725. package/dist/data/designs/ios-tubi.md +383 -0
  726. package/dist/data/designs/ios-tumblr-android.md +462 -0
  727. package/dist/data/designs/ios-tumblr-expo.md +374 -0
  728. package/dist/data/designs/ios-tumblr-swiftui.md +380 -0
  729. package/dist/data/designs/ios-tumblr.md +337 -0
  730. package/dist/data/designs/ios-turo-android.md +500 -0
  731. package/dist/data/designs/ios-turo-expo.md +454 -0
  732. package/dist/data/designs/ios-turo-swiftui.md +447 -0
  733. package/dist/data/designs/ios-turo.md +392 -0
  734. package/dist/data/designs/ios-twitch-android.md +412 -0
  735. package/dist/data/designs/ios-twitch-expo.md +342 -0
  736. package/dist/data/designs/ios-twitch-swiftui.md +328 -0
  737. package/dist/data/designs/ios-twitch.md +354 -0
  738. package/dist/data/designs/ios-uber-android.md +637 -0
  739. package/dist/data/designs/ios-uber-eats-android.md +502 -0
  740. package/dist/data/designs/ios-uber-eats-expo.md +407 -0
  741. package/dist/data/designs/ios-uber-eats-swiftui.md +393 -0
  742. package/dist/data/designs/ios-uber-eats.md +353 -0
  743. package/dist/data/designs/ios-uber-expo.md +512 -0
  744. package/dist/data/designs/ios-uber-swiftui.md +483 -0
  745. package/dist/data/designs/ios-uber.md +395 -0
  746. package/dist/data/designs/ios-united-airlines-android.md +494 -0
  747. package/dist/data/designs/ios-united-airlines-expo.md +408 -0
  748. package/dist/data/designs/ios-united-airlines-swiftui.md +453 -0
  749. package/dist/data/designs/ios-united-airlines.md +388 -0
  750. package/dist/data/designs/ios-venmo-android.md +654 -0
  751. package/dist/data/designs/ios-venmo-expo.md +458 -0
  752. package/dist/data/designs/ios-venmo-swiftui.md +469 -0
  753. package/dist/data/designs/ios-venmo.md +436 -0
  754. package/dist/data/designs/ios-vercel-android.md +454 -0
  755. package/dist/data/designs/ios-vercel-expo.md +387 -0
  756. package/dist/data/designs/ios-vercel-swiftui.md +374 -0
  757. package/dist/data/designs/ios-vercel.md +399 -0
  758. package/dist/data/designs/ios-vero-android.md +498 -0
  759. package/dist/data/designs/ios-vero-expo.md +376 -0
  760. package/dist/data/designs/ios-vero-swiftui.md +374 -0
  761. package/dist/data/designs/ios-vero.md +394 -0
  762. package/dist/data/designs/ios-viber-android.md +377 -0
  763. package/dist/data/designs/ios-viber-expo.md +375 -0
  764. package/dist/data/designs/ios-viber-swiftui.md +378 -0
  765. package/dist/data/designs/ios-viber.md +403 -0
  766. package/dist/data/designs/ios-vimeo-android.md +465 -0
  767. package/dist/data/designs/ios-vimeo-expo.md +347 -0
  768. package/dist/data/designs/ios-vimeo-swiftui.md +383 -0
  769. package/dist/data/designs/ios-vimeo.md +403 -0
  770. package/dist/data/designs/ios-vrbo-android.md +488 -0
  771. package/dist/data/designs/ios-vrbo-expo.md +395 -0
  772. package/dist/data/designs/ios-vrbo-swiftui.md +421 -0
  773. package/dist/data/designs/ios-vrbo.md +383 -0
  774. package/dist/data/designs/ios-vsco-android.md +490 -0
  775. package/dist/data/designs/ios-vsco-expo.md +413 -0
  776. package/dist/data/designs/ios-vsco-swiftui.md +449 -0
  777. package/dist/data/designs/ios-vsco.md +412 -0
  778. package/dist/data/designs/ios-walmart-android.md +479 -0
  779. package/dist/data/designs/ios-walmart-expo.md +370 -0
  780. package/dist/data/designs/ios-walmart-swiftui.md +387 -0
  781. package/dist/data/designs/ios-walmart.md +366 -0
  782. package/dist/data/designs/ios-waze-android.md +695 -0
  783. package/dist/data/designs/ios-waze-expo.md +587 -0
  784. package/dist/data/designs/ios-waze-swiftui.md +601 -0
  785. package/dist/data/designs/ios-waze.md +453 -0
  786. package/dist/data/designs/ios-webull-android.md +429 -0
  787. package/dist/data/designs/ios-webull-expo.md +384 -0
  788. package/dist/data/designs/ios-webull-swiftui.md +406 -0
  789. package/dist/data/designs/ios-webull.md +375 -0
  790. package/dist/data/designs/ios-wechat-android.md +545 -0
  791. package/dist/data/designs/ios-wechat-expo.md +398 -0
  792. package/dist/data/designs/ios-wechat-swiftui.md +394 -0
  793. package/dist/data/designs/ios-wechat.md +363 -0
  794. package/dist/data/designs/ios-whatsapp-android.md +568 -0
  795. package/dist/data/designs/ios-whatsapp-expo.md +502 -0
  796. package/dist/data/designs/ios-whatsapp-swiftui.md +483 -0
  797. package/dist/data/designs/ios-whatsapp.md +425 -0
  798. package/dist/data/designs/ios-whoop-android.md +635 -0
  799. package/dist/data/designs/ios-whoop-expo.md +562 -0
  800. package/dist/data/designs/ios-whoop-swiftui.md +553 -0
  801. package/dist/data/designs/ios-whoop.md +419 -0
  802. package/dist/data/designs/ios-wise-android.md +428 -0
  803. package/dist/data/designs/ios-wise-expo.md +357 -0
  804. package/dist/data/designs/ios-wise-swiftui.md +356 -0
  805. package/dist/data/designs/ios-wise.md +361 -0
  806. package/dist/data/designs/ios-x-twitter-android.md +618 -0
  807. package/dist/data/designs/ios-x-twitter-expo.md +442 -0
  808. package/dist/data/designs/ios-x-twitter-swiftui.md +429 -0
  809. package/dist/data/designs/ios-x-twitter.md +432 -0
  810. package/dist/data/designs/ios-yelp-android.md +455 -0
  811. package/dist/data/designs/ios-yelp-expo.md +397 -0
  812. package/dist/data/designs/ios-yelp-swiftui.md +369 -0
  813. package/dist/data/designs/ios-yelp.md +398 -0
  814. package/dist/data/designs/ios-youtube-android.md +668 -0
  815. package/dist/data/designs/ios-youtube-expo.md +435 -0
  816. package/dist/data/designs/ios-youtube-music-android.md +450 -0
  817. package/dist/data/designs/ios-youtube-music-expo.md +404 -0
  818. package/dist/data/designs/ios-youtube-music-swiftui.md +434 -0
  819. package/dist/data/designs/ios-youtube-music.md +381 -0
  820. package/dist/data/designs/ios-youtube-swiftui.md +496 -0
  821. package/dist/data/designs/ios-youtube.md +466 -0
  822. package/dist/data/designs/ios-zalo-android.md +510 -0
  823. package/dist/data/designs/ios-zalo-expo.md +389 -0
  824. package/dist/data/designs/ios-zalo-swiftui.md +431 -0
  825. package/dist/data/designs/ios-zalo.md +388 -0
  826. package/dist/data/designs/ios-zomato-android.md +527 -0
  827. package/dist/data/designs/ios-zomato-expo.md +437 -0
  828. package/dist/data/designs/ios-zomato-swiftui.md +433 -0
  829. package/dist/data/designs/ios-zomato.md +439 -0
  830. package/dist/data/designs/ios-zoom-android.md +423 -0
  831. package/dist/data/designs/ios-zoom-expo.md +355 -0
  832. package/dist/data/designs/ios-zoom-swiftui.md +379 -0
  833. package/dist/data/designs/ios-zoom.md +357 -0
  834. package/dist/data/designs/ios-zwift-android.md +402 -0
  835. package/dist/data/designs/ios-zwift-expo.md +402 -0
  836. package/dist/data/designs/ios-zwift-swiftui.md +378 -0
  837. package/dist/data/designs/ios-zwift.md +411 -0
  838. package/dist/data/designs/kraken.md +125 -0
  839. package/dist/data/designs/lamborghini.md +288 -0
  840. package/dist/data/designs/linear.app.md +548 -0
  841. package/dist/data/designs/lovable.md +298 -0
  842. package/dist/data/designs/mastercard.md +365 -0
  843. package/dist/data/designs/material-clean.md +289 -0
  844. package/dist/data/designs/meta.md +683 -0
  845. package/dist/data/designs/midnight-pro.md +256 -0
  846. package/dist/data/designs/minimal-brutalist.md +245 -0
  847. package/dist/data/designs/minimax.md +746 -0
  848. package/dist/data/designs/mintlify.md +852 -0
  849. package/dist/data/designs/miro.md +825 -0
  850. package/dist/data/designs/mistral.ai.md +773 -0
  851. package/dist/data/designs/mongodb.md +767 -0
  852. package/dist/data/designs/nike.md +575 -0
  853. package/dist/data/designs/nintendo-2001.md +649 -0
  854. package/dist/data/designs/notion.md +821 -0
  855. package/dist/data/designs/nova-mobile-design-md.md +235 -0
  856. package/dist/data/designs/nvidia.md +640 -0
  857. package/dist/data/designs/ollama.md +539 -0
  858. package/dist/data/designs/opencode.ai.md +521 -0
  859. package/dist/data/designs/pinterest.md +597 -0
  860. package/dist/data/designs/playful-color.md +253 -0
  861. package/dist/data/designs/playstation.md +661 -0
  862. package/dist/data/designs/posthog.md +690 -0
  863. package/dist/data/designs/raycast.md +669 -0
  864. package/dist/data/designs/renault.md +589 -0
  865. package/dist/data/designs/replicate.md +616 -0
  866. package/dist/data/designs/resend.md +585 -0
  867. package/dist/data/designs/revolut.md +636 -0
  868. package/dist/data/designs/runwayml.md +244 -0
  869. package/dist/data/designs/sanity.md +357 -0
  870. package/dist/data/designs/sentry.md +551 -0
  871. package/dist/data/designs/shopify.md +516 -0
  872. package/dist/data/designs/slack.md +482 -0
  873. package/dist/data/designs/soft-glass.md +258 -0
  874. package/dist/data/designs/spacex.md +363 -0
  875. package/dist/data/designs/spotify.md +246 -0
  876. package/dist/data/designs/starbucks.md +580 -0
  877. package/dist/data/designs/stripe.md +487 -0
  878. package/dist/data/designs/supabase.md +462 -0
  879. package/dist/data/designs/superhuman.md +448 -0
  880. package/dist/data/designs/tesla.md +286 -0
  881. package/dist/data/designs/theverge.md +339 -0
  882. package/dist/data/designs/together.ai.md +633 -0
  883. package/dist/data/designs/uber.md +636 -0
  884. package/dist/data/designs/vercel.md +736 -0
  885. package/dist/data/designs/vodafone.md +538 -0
  886. package/dist/data/designs/voltagent.md +521 -0
  887. package/dist/data/designs/warp.md +526 -0
  888. package/dist/data/designs/webflow.md +588 -0
  889. package/dist/data/designs/wired.md +497 -0
  890. package/dist/data/designs/wise.md +544 -0
  891. package/dist/data/designs/x.ai.md +465 -0
  892. package/dist/data/designs/zapier.md +537 -0
  893. package/dist/data/index.json +2600 -0
  894. package/dist/httpServer.js +83 -0
  895. package/dist/index.js +13 -0
  896. package/dist/server.js +32 -0
  897. package/dist/services/designStore.js +59 -0
  898. package/dist/services/linter.js +87 -0
  899. package/dist/services/sectionParser.js +154 -0
  900. package/dist/tools/authoring.js +131 -0
  901. package/dist/tools/browse.js +232 -0
  902. package/dist/tools/diff.js +88 -0
  903. package/dist/tools/getDesign.js +216 -0
  904. package/dist/tools/guardrails.js +87 -0
  905. package/dist/tools/lint.js +104 -0
  906. package/dist/types.js +1 -0
  907. package/package.json +65 -0
@@ -0,0 +1,419 @@
1
+ # Design System Inspiration of Garmin Connect (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Garmin Connect's iOS app is a **data cockpit**. Where consumer fitness apps soften their numbers behind illustration and encouragement, Garmin treats the user as an athlete who came for the metrics — pace, VO₂ Max, Training Load, Body Battery, heart-rate zones — and arranges the entire interface as an instrument cluster around them. The app is dark-first: a **true-black canvas** (`#000000`) on which a single brand color, **Garmin Blue** (`#007CC3`), carries every interactive accent, route line, and progress arc. There is no second brand hue; color in Garmin Connect is overwhelmingly *functional* — the green→gold→orange→red heart-rate-zone ramp, the blue Body Battery gauge, the teal Intensity-Minutes bar — each color means a specific thing, and that meaning never changes across screens.
6
+
7
+ The signature surface is the **activity detail screen**: you tap a run, ride, or swim from the Activities list and land on a screen that opens with a glowing GPS route drawn on a dark slate map, followed by a tight grid of stat cells (Distance, Time, Avg Pace, Avg HR, Calories, Elevation Gain), then expandable cards for Splits, Heart Rate Zones, Training Effect, and weather. This is the moment the whole design system exists to serve: **maximum data density without clutter**, achieved through hairline dividers, condensed numerals, and ruthless label economy. The second pillar screen is **My Day** — a vertically scrolling dashboard of glanceable tiles (Steps, Body Battery, Sleep, Stress, Training Status, Intensity Minutes) that mirrors the watch's widget glances.
8
+
9
+ Typography does the heavy lifting that color refuses to. Garmin pairs **Roboto** (UI text, labels, body) with **Roboto Condensed** for every number that matters — the condensed face lets a value like `5:02 /km` or `1,248 m` sit on a single line inside a narrow stat cell without truncating or shrinking. Numerals are tabular so columns of splits align perfectly. Headings are heavy (700–900), labels are small uppercase eyebrows in muted gray, and the data values dominate the visual hierarchy: in a Garmin card the *number* is the hero and the label is a whisper above it.
10
+
11
+ Chrome is minimal and utilitarian. Navigation is a 4-tab bottom bar (My Day, Challenges, Calendar, More) with no tint pill — the active tab simply turns Garmin Blue. Cards are flat dark rectangles with 1px dividers, not floating shadowed objects; depth is communicated by surface lightness steps (`#000000` → `#121417` → `#1B1E22`), not by drop shadows. The aesthetic is closer to a Garmin watch face or a cockpit MFD than to a lifestyle app — precise, legible at a glance, and unapologetically dense.
12
+
13
+ **Key Characteristics:**
14
+ - True-black canvas (`#000000`) — dark-first, OLED-friendly, makes route lines and zone colors pop
15
+ - Single brand accent: Garmin Blue `#007CC3` (brightened to `#2A9FD6` on black for AA contrast)
16
+ - Functional color system — HR zones, Body Battery, Intensity Minutes each own a fixed hue with fixed meaning
17
+ - Roboto + Roboto Condensed pairing — condensed numerals keep dense metrics on one line
18
+ - Activity detail screen = glowing GPS route on dark map + tight stat grid + expandable analysis cards
19
+ - My Day dashboard = scrolling grid of glanceable watch-style tiles
20
+ - Hairline dividers (`#2A2E33`) and surface-lightness steps instead of drop shadows
21
+ - Tabular numerals so split tables and stat columns align
22
+ - Training Status / Body Battery / VO₂ Max as named, ring- or gauge-backed hero metrics
23
+ - 4-tab bottom bar, no tint pill — active tab is Garmin Blue glyph
24
+ - Uppercase micro-labels above big numbers — label whispers, value shouts
25
+
26
+ ## 2. Color Palette & Roles
27
+
28
+ ### Primary (Interactive)
29
+ - **Garmin Blue** (`#007CC3`): The single brand color — primary buttons, route lines, progress arcs, links, selected states. On true black, the literal `#007CC3` is used for fills (buttons, route stroke).
30
+ - **Garmin Blue (on dark)** (`#2A9FD6`): Brightened tint used for *text* and active tab glyphs on `#000000` — clears WCAG AA where `#007CC3` text would not.
31
+ - **Garmin Blue Pressed** (`#00689F`): Pressed state for the primary button.
32
+
33
+ ### Canvas & Surfaces (Dark — primary mode)
34
+ - **True Black Canvas** (`#000000`): App background. Garmin uses literal black, not charcoal.
35
+ - **Surface 1** (`#121417`): Cards, stat grids, list rows — the first lift off black.
36
+ - **Surface 2** (`#1B1E22`): Tiles, nested cards, pressed list rows.
37
+ - **Surface 3** (`#23272C`): Track backgrounds (progress bars, gauges), input fields.
38
+ - **Divider** (`#2A2E33`): 1px hairlines between stat cells, list rows, sections.
39
+
40
+ ### Canvas & Surfaces (Light — optional)
41
+ - **Light Canvas** (`#FFFFFF`): Optional light theme background.
42
+ - **Light Surface** (`#F4F5F7`): Cards, grids.
43
+ - **Light Divider** (`#E2E5E9`): Hairlines.
44
+ - **Light Text Primary** (`#1A1D21`): Body text on white.
45
+
46
+ ### Text
47
+ - **Text Primary** (`#FFFFFF`): Metric values, titles on dark.
48
+ - **Text Secondary** (`#A6ACB3`): Labels, metadata, secondary copy on dark.
49
+ - **Text Tertiary** (`#6B7178`): Units, captions, disabled, axis scale numbers.
50
+ - **Text Primary (light)** (`#1A1D21`): Primary text on white.
51
+ - **Text Secondary (light)** (`#5A6068`): Labels on white.
52
+
53
+ ### Functional / Data-Viz Colors (fixed meaning, theme-invariant)
54
+ These colors are semantic — they encode a metric and do **not** restyle for dark/light.
55
+
56
+ | Role | Color | Meaning |
57
+ |------|-------|---------|
58
+ | Body Battery | `#2EA8E0` | Energy reserve gauge & sparkline |
59
+ | Intensity Minutes | `#00A8A8` | Weekly moderate/vigorous minutes |
60
+ | Steps / Move | `#C8B560` | Steps ring, step bars |
61
+ | HR Zone 1 (Warm Up) | `#9AA0A6` | Very light effort |
62
+ | HR Zone 2 (Easy) | `#4CAF50` | Aerobic base |
63
+ | HR Zone 3 (Aerobic) | `#C8B560` | Tempo |
64
+ | HR Zone 4 (Threshold) | `#F0A030` | Hard |
65
+ | HR Zone 5 (Maximum) | `#E5402A` | Max effort |
66
+ | Stress (low) | `#4CAF50` | Calm |
67
+ | Stress (high) | `#F0A030` | Elevated |
68
+ | Route Line | `#007CC3` | GPS track on map (with glow) |
69
+
70
+ ### Semantic
71
+ - **Success / Goal Met** (`#4CAF50`): Goal-complete checkmarks, positive deltas.
72
+ - **Warning** (`#F0A030`): Elevated stress, low Body Battery alert.
73
+ - **Error / Max** (`#E5402A`): Errors, destructive actions, max HR zone.
74
+ - **Track / Empty** (`#23272C`): Unfilled portion of any bar, gauge, or ring on dark.
75
+
76
+ ## 3. Typography Rules
77
+
78
+ ### Font Family
79
+ - **UI / Body / Labels**: `Roboto` (by Christian Robertson, Apache 2.0) — neutral, screen-optimized grotesque; Garmin's app text face. On iOS, falls back to SF Pro Text when Roboto isn't bundled.
80
+ - **Numerals / Metrics**: `Roboto Condensed` (Apache 2.0) — the condensed face is used for *every* meaningful number (pace, distance, HR, elevation, durations) so long values fit a narrow stat cell on one line. Tabular figures enabled.
81
+ - **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif`
82
+ - **Numeral fallback**: `'Roboto Condensed', 'SF Pro Display', 'Helvetica Neue Condensed', sans-serif` with `font-variant-numeric: tabular-nums`
83
+
84
+ ### Hierarchy
85
+
86
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
87
+ |------|------|------|--------|-------------|----------------|-------|
88
+ | Screen Title | Roboto | 32pt | 900 | 1.15 | -0.6pt | "My Day", large nav title |
89
+ | Hero Metric | Roboto Condensed | 40pt | 700 | 1.0 | -0.5pt | Lead value (distance, total) |
90
+ | Activity Name | Roboto Condensed | 26pt | 700 | 1.1 | -0.2pt | "Morning Run" on detail screen |
91
+ | Section Heading | Roboto | 20pt | 700 | 1.2 | -0.1pt | "Heart Rate Zones", "Splits" |
92
+ | Stat Value | Roboto Condensed | 22pt | 700 | 1.1 | 0pt | Value inside a stat cell |
93
+ | Stat Value (large) | Roboto Condensed | 28pt | 700 | 1.0 | -0.2pt | Tile value on My Day |
94
+ | Body | Roboto | 16pt | 500 | 1.5 | 0pt | Descriptive copy, list titles |
95
+ | Body (regular) | Roboto | 16pt | 400 | 1.5 | 0pt | Secondary descriptive copy |
96
+ | Meta | Roboto | 14pt | 400 | 1.4 | 0pt | Timestamp, location, subtitles |
97
+ | Eyebrow / Label | Roboto | 12pt | 700 | 1.2 | 0.5pt (UPPERCASE) | Micro-label above a value |
98
+ | Stat Unit | Roboto | 11pt | 500 | 1.2 | 0pt | "km", "bpm", "/km" suffix |
99
+ | Caption | Roboto | 11pt | 500 | 1.3 | 0pt | "Last synced 4 min ago" |
100
+ | Button | Roboto | 15pt | 700 | 1.0 | 0.5pt (UPPERCASE) | Primary / outline buttons |
101
+ | Tab Label | Roboto | 10pt | 500 | 1.0 | 0.1pt | Bottom tab labels |
102
+ | Axis / Scale | Roboto | 10pt | 500 | 1.0 | 0pt | Chart axis, gauge endpoints |
103
+
104
+ ### Principles
105
+ - **The number is the hero**: In any data card, the value uses the largest, heaviest type (Roboto Condensed 700); the label is a small uppercase gray eyebrow above it.
106
+ - **Condense the digits, not the words**: Numerals are Roboto Condensed so pace/distance/duration never wrap or auto-shrink; prose stays in regular Roboto.
107
+ - **Tabular figures everywhere numeric**: Split tables, stat columns, and HR-zone durations must align — always enable tabular numerals.
108
+ - **Uppercase micro-labels**: Field labels and eyebrows are 12pt 700 uppercase with +0.5pt tracking — they read as instrument labels.
109
+ - **Weight, not color, for hierarchy**: Garmin separates levels with 400 / 500 / 700 / 900 weight steps; color stays functional.
110
+ - **Dynamic Type on prose, fixed on the cluster**: Titles, body, and meta scale; stat values, units, tab labels, and axis text are layout-pinned.
111
+
112
+ ## 4. Component Stylings
113
+
114
+ ### Buttons
115
+
116
+ **Primary Button (Start / Save / Sync)**
117
+ - Shape: Rounded rectangle, 6pt corner radius
118
+ - Background: `#007CC3` (Garmin Blue)
119
+ - Text: `#FFFFFF`, Roboto 15pt weight 700, **UPPERCASE**, +0.5pt tracking
120
+ - Padding: 14pt vertical, 28pt horizontal
121
+ - Pressed: background `#00689F` + scale 0.98
122
+ - Disabled: background `#23272C`, text `#6B7178`
123
+ - Full-width variant on forms: 100% width, 50pt tall
124
+
125
+ **Secondary / Outline Button**
126
+ - Background: transparent
127
+ - Border: 1.5pt `#2A9FD6`
128
+ - Text: `#2A9FD6`, Roboto 14pt weight 700, UPPERCASE, +0.5pt tracking
129
+ - Padding: 12pt vertical, 22pt horizontal
130
+ - Corner radius: 6pt
131
+ - Pressed: background `rgba(42,159,214,0.12)`
132
+
133
+ **Ghost / Tertiary Button**
134
+ - Background: `#1B1E22` (Surface 2)
135
+ - Border: 1pt `#2A2E33`
136
+ - Text: `#FFFFFF`, Roboto 14pt weight 500
137
+ - Corner radius: 6pt
138
+ - Pressed: background `#23272C`
139
+
140
+ **Text Button (inline action)**
141
+ - Background: none
142
+ - Text: `#2A9FD6`, Roboto 14pt weight 700, UPPERCASE, +0.5pt tracking
143
+ - Used for "View Splits", "See All", "Edit"
144
+
145
+ **Icon Button (nav action)**
146
+ - 24pt glyph in 44pt hit area
147
+ - Default `#FFFFFF`; pressed 60% opacity
148
+ - Stroke-style line icons, 2pt stroke
149
+
150
+ ### Core Atoms
151
+
152
+ **Stat Cell** (the fundamental data unit)
153
+ - Background: `#121417`, separated from neighbors by 1px `#2A2E33` dividers (grid mortar)
154
+ - Label: Roboto 10pt 700 uppercase `#A6ACB3`, +0.5pt tracking
155
+ - Value: Roboto Condensed 22pt 700 `#FFFFFF`, tabular
156
+ - Unit: Roboto 11pt 500 `#6B7178`, inline after value
157
+ - Padding: 14pt vertical, 12pt horizontal
158
+ - Typically arranged 3-up in a grid; rows separated by the same hairline
159
+
160
+ **Glanceable Tile (My Day)**
161
+ - Background: `#121417`, 12pt corner radius, 1px `#2A2E33` border
162
+ - Leading: 18pt functional-color icon or mini ring
163
+ - Label: 10pt 700 uppercase `#A6ACB3`
164
+ - Value: Roboto Condensed 28pt 700 `#FFFFFF`
165
+ - Sub: 11pt 500 `#6B7178` ("goal 10,000")
166
+ - Tap → drill into the metric's detail screen
167
+
168
+ **Progress Bar / Gauge**
169
+ - Track: `#23272C`, 8pt tall, 4pt radius
170
+ - Fill: functional color (Body Battery gradient `#1E6FA8 → #2EA8E0`; goal bars solid)
171
+ - Endpoint labels: Roboto 10pt 500 `#6B7178`
172
+
173
+ **Ring (Training Status / goal)**
174
+ - Track circle: `#23272C`, 6pt stroke
175
+ - Progress arc: Garmin Blue `#007CC3` (or functional color), 6pt stroke, round cap, starts at -90°
176
+ - Center: value in Roboto Condensed 700, or a status word
177
+
178
+ **Chip / Pill**
179
+ - Background: `#1B1E22`, 1px `#2A2E33`
180
+ - Text: Roboto 12pt 600 `#FFFFFF`
181
+ - Corner radius: 500pt (full pill)
182
+ - Selected: background `#007CC3`, text `#FFFFFF`
183
+
184
+ ### Navigation
185
+
186
+ **Bottom Tab Bar**
187
+ - Height: 56pt + safe area
188
+ - Background: `rgba(18,20,23,0.96)` with blur, 0.5pt top border `#2A2E33`
189
+ - Tabs (4): My Day, Challenges, Calendar, More
190
+ - Icon: 22pt; **no tint pill**
191
+ - Active: glyph filled `#2A9FD6`, label `#2A9FD6`
192
+ - Inactive: glyph stroked `#6B7178`, label `#6B7178`
193
+ - Labels: Roboto 10pt 500, always shown
194
+
195
+ **Top Nav (Activity Detail)**
196
+ - Height: 44pt + safe area
197
+ - Leading: back chevron + parent label ("Activities"), Roboto 15pt 500 `#FFFFFF`
198
+ - Trailing: settings gear + share node icon, 19pt stroke glyphs
199
+ - No large-title collapse; the activity name lives in the body, not the bar
200
+
201
+ **Section Header (in-page)**
202
+ - Roboto 20pt 700 `#FFFFFF`, 20pt top margin, 12pt bottom
203
+ - Optional trailing text button "See All" in `#2A9FD6`
204
+
205
+ ### Input Fields
206
+
207
+ **Text Field**
208
+ - Height: 48pt
209
+ - Background: `#1B1E22`
210
+ - Border: 1px `#2A2E33`; focus border 1.5px `#2A9FD6`
211
+ - Corner radius: 6pt
212
+ - Text: Roboto 16pt 500 `#FFFFFF`; placeholder `#6B7178`
213
+ - Leading icon (optional): 18pt `#A6ACB3`
214
+
215
+ **Segmented Control (e.g., Day / Week / 4 Weeks)**
216
+ - Track: `#1B1E22`, 6pt radius, 1px `#2A2E33`
217
+ - Selected segment: `#007CC3` fill, white text
218
+ - Unselected: `#A6ACB3` text
219
+ - Font: Roboto 13pt 700 uppercase
220
+
221
+ **Stepper / Goal Picker**
222
+ - Inline `−` / `+` round buttons (`#1B1E22`, 1px border), value in Roboto Condensed 20pt 700 between them
223
+
224
+ ### Distinctive Components
225
+
226
+ **GPS Route Map**
227
+ - Dark slate basemap (`#1A2329 → #0C1216` gradient with faint 28pt grid)
228
+ - Route polyline: `#007CC3`, 4pt stroke, round caps/joins, soft glow `drop-shadow(0 0 4px rgba(0,124,195,0.6))`
229
+ - Start pin: `#4CAF50` dot, 3pt white ring
230
+ - End pin: `#E5402A` dot, 3pt white ring
231
+ - Optional km-split markers as small white ticks along the line
232
+ - 12pt corner radius, full-bleed minus 16pt side insets
233
+
234
+ **Stat Grid (Activity Detail)**
235
+ - 3-column grid, cells `#121417`, 1px `#2A2E33` mortar, outer radius 12pt
236
+ - Each cell = one Stat Cell atom
237
+ - Order convention: Distance, Time, Avg Pace, Avg HR, Calories, Elev Gain
238
+
239
+ **Training Status Card**
240
+ - `#121417`, 12pt radius, 1px border
241
+ - Leading: 52pt progress ring (blue arc on `#23272C` track)
242
+ - Status word in `#2A9FD6` (Productive / Maintaining / Peaking / Detraining / Overreaching), Roboto 16pt 700
243
+ - Sub: "VO₂ Max 52 · Load 388" in `#A6ACB3` 12pt
244
+
245
+ **Body Battery Gauge**
246
+ - Card with name + big value (Roboto Condensed 22pt 700 `#2EA8E0`)
247
+ - Horizontal bar: track `#23272C`, fill gradient `#1E6FA8 → #2EA8E0`
248
+ - Scale row 0 — Charged — 100 in `#6B7178` 10pt
249
+ - Detail view shows a 24h area chart in the same blue
250
+
251
+ **Heart Rate Zones**
252
+ - Per-zone row: zone label (Z2…Z5) `#A6ACB3` 11pt, horizontal track `#23272C`, fill in the zone color (Z2 green → Z3 gold → Z4 orange → Z5 red), trailing duration in tabular `#A6ACB3` 11pt
253
+ - Zone color is fixed and semantic — never recolor for theme
254
+
255
+ **Splits Table**
256
+ - Header row: Roboto 10pt 700 uppercase `#A6ACB3`
257
+ - Each split row: index, distance, pace bar (relative-length blue bar), elevation delta, HR — all tabular Roboto Condensed
258
+ - Fastest split's pace bar highlighted Garmin Blue; rows divided by 1px `#2A2E33`
259
+
260
+ **Goal Ring Cluster (My Day)**
261
+ - Stacked or side-by-side mini rings (Steps gold, Intensity Minutes teal, Floors), each on `#23272C` track, with the value Roboto Condensed centered
262
+
263
+ ## 5. Layout Principles
264
+
265
+ ### Spacing System
266
+ - Base unit: 4pt
267
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48
268
+ - Card internal padding: 16pt
269
+ - Stat-cell padding: 14pt vertical / 12pt horizontal
270
+ - Card-to-card gap: 18pt (on My Day) / hairline divider (within a grid)
271
+ - Screen side inset: 16pt
272
+
273
+ ### Grid & Container
274
+ - iPhone: 16pt side insets; stat grids are 3-up edge-to-edge within the card
275
+ - Map: full content width, 168pt tall on detail screen, 12pt radius
276
+ - iPad: content max-width 760pt centered; My Day becomes a 2-column tile masonry
277
+ - Tiles: minimum 110pt wide; reflow 2-up (phone) / 3-4-up (iPad)
278
+
279
+ ### Whitespace Philosophy
280
+ - **Dense but ruled**: Garmin packs many numbers per screen, but every group is bounded by a hairline or a card edge — density never becomes noise
281
+ - **Labels are quiet, values are loud**: vertical rhythm puts a tight 4pt gap between the uppercase label and its big value, then larger gaps between groups
282
+ - **Map breathes, data compresses**: the route map gets generous height; the stat grid below it is deliberately compact
283
+ - **No decorative whitespace**: spacing is structural, not stylistic — there are no large empty hero zones
284
+
285
+ ### Border Radius Scale
286
+ - Square (0pt): full-bleed map edges (when edge-to-edge), dividers
287
+ - Subtle (4pt): progress-bar fills, track ends
288
+ - Standard (6pt): buttons, input fields, segmented control, chips-as-tags
289
+ - Card (12pt): cards, tiles, map container, stat-grid outer
290
+ - Comfortable (16pt): bottom sheets, modals
291
+ - Pill (500pt): filter chips, status pills
292
+ - Circle (50%): rings, gauges, profile avatar, map pins
293
+
294
+ ## 6. Depth & Elevation
295
+
296
+ Garmin Connect is **flat and structural**. Depth comes from surface-lightness steps, not drop shadows.
297
+
298
+ | Level | Treatment | Use |
299
+ |-------|-----------|-----|
300
+ | Base (Level 0) | `#000000`, no shadow | App canvas |
301
+ | Surface (Level 1) | `#121417`, no shadow, 1px `#2A2E33` border optional | Cards, stat grids, list rows |
302
+ | Raised (Level 2) | `#1B1E22`, no shadow | Tiles, nested cards, pressed rows |
303
+ | Floating (Level 3) | `#1B1E22` + `rgba(0,0,0,0.6) 0 8px 24px` | Bottom sheets, action menus, dialogs |
304
+ | Scrim | `rgba(0,0,0,0.6)` | Behind modals & sheets |
305
+
306
+ **Shadow Philosophy**: On true black, drop shadows are nearly invisible, so Garmin barely uses them — elevation is read as "this surface is lighter than the one behind it." Only genuinely floating layers (bottom sheets, popovers) get a soft `0 8px 24px` shadow plus the lighter surface tone. The GPS route line is the one element that uses a glow (`drop-shadow(0 0 4px rgba(0,124,195,0.6))`) — a deliberate signal that the track is "live" data.
307
+
308
+ ### Motion
309
+ - **Activity open**: push transition 300ms iOS-native; the route line *draws on* over 700ms ease-out (stroke-dashoffset animation) once the map is visible
310
+ - **Stat reveal**: stat cells fade + 6pt rise, staggered 30ms each, 200ms ease-out, on first appearance
311
+ - **Ring / gauge fill**: arcs and bars animate from 0 to value over 600ms ease-out with a slight overshoot (spring, damping 0.85)
312
+ - **Card expand (Splits / HR Zones)**: chevron rotates 90° in 150ms; content height 0 → auto over 220ms ease-out
313
+ - **Tab switch**: cross-fade 150ms; active glyph swaps stroke→fill instantly, color tween 120ms
314
+ - **Pull to sync**: spinner; on success a brief `#4CAF50` "Synced" toast slides up 250ms then auto-dismisses
315
+ - **Number tick (live activity)**: live values count up with a 1-frame digit roll; tabular spacing prevents layout shift
316
+ - **Haptic**: light impact on tab change & goal-met; success notification haptic on sync complete; selection tick on segmented-control change
317
+ - **Reduce Motion**: route line appears instantly; rings/bars set final value with a 120ms crossfade; no rise/stagger
318
+
319
+ ## 7. Do's and Don'ts
320
+
321
+ ### Do
322
+ - Use true black `#000000` as the canvas — it is Garmin's signature and powers OLED + data pop
323
+ - Keep Garmin Blue `#007CC3` as the *only* brand accent; brighten to `#2A9FD6` for text/active on black
324
+ - Treat HR-zone / Body Battery / Intensity colors as fixed semantics — same hue everywhere, theme-invariant
325
+ - Set every meaningful number in Roboto Condensed with tabular figures
326
+ - Make the value the visual hero and the label a small uppercase gray eyebrow above it
327
+ - Draw the GPS route in Garmin Blue with a soft glow and green start / red end pins
328
+ - Separate dense data with 1px `#2A2E33` hairlines and surface-lightness steps, not shadows
329
+ - Animate rings/bars filling from 0 and the route drawing on, on first appearance
330
+ - Keep the bottom tab bar pill-free — active is simply the blue glyph
331
+ - Right-align numeric columns and use tabular figures so splits stack perfectly
332
+
333
+ ### Don't
334
+ - Don't use charcoal (`#1A1A1A`) as the base — Garmin is *true* black `#000000`
335
+ - Don't introduce a second brand color — there is only Garmin Blue
336
+ - Don't recolor HR zones or Body Battery per theme — their color *is* the data
337
+ - Don't set metric numerals in a proportional font — values will wrap or shrink
338
+ - Don't add a Material/iOS tint pill behind the active tab — Garmin has none
339
+ - Don't drop-shadow content cards — depth is surface lightness on black
340
+ - Don't let the label outweigh the value — labels are 10–12pt uppercase whispers
341
+ - Don't use bright saturated decorative gradients on cards — gradients are reserved for data gauges
342
+ - Don't center-align long split tables — numeric data is right-aligned and tabular
343
+ - Don't animate aggressively — motion is purposeful (route draw, ring fill), 150–700ms ease-out
344
+
345
+ ## 8. Responsive Behavior
346
+
347
+ ### Device Sizes
348
+ | Device | Width | Key Changes |
349
+ |--------|-------|-------------|
350
+ | iPhone SE (3rd gen) | 375pt | Stat grid stays 3-up but value drops to 20pt; map 150pt tall |
351
+ | iPhone 13/14/15 | 390pt | Standard layout |
352
+ | iPhone 15/16 Pro | 393pt | Dynamic Island respected in top nav |
353
+ | iPhone 15/16 Pro Max | 430pt | Map 190pt tall; tiles can show inline sparkline |
354
+ | iPad (portrait) | 768pt | My Day → 3-column tile masonry; activity detail centered max 760pt |
355
+ | iPad (landscape) | 1024pt+ | Map + stats side-by-side (map left 60%, stat grid right 40%) |
356
+
357
+ ### Dynamic Type
358
+ - Scales: screen titles, section headings, body, meta
359
+ - Fixed (layout-pinned): stat values, stat units, tab labels, chart axis/scale text, eyebrow labels — these live in tight cells and must not reflow
360
+ - Condensed numerals already shrink visually; do not additionally scale them
361
+
362
+ ### Orientation
363
+ - All screens support rotation
364
+ - iPad landscape: activity detail splits into map pane + scrollable analysis pane
365
+ - Charts (HR, Body Battery 24h) expand to fill width on rotation
366
+
367
+ ### Touch Targets
368
+ - Tab bar icon: 22pt glyph, 44pt hit
369
+ - Stat cell / tile: full-cell tap, ≥ 64pt tall
370
+ - Card expand chevron: 20pt glyph, 44pt hit
371
+ - Buttons: ≥ 44pt tall (primary 50pt full-width)
372
+ - Map: pannable/zoomable with two-finger gestures; tap a split marker for that split
373
+
374
+ ### Safe Area Handling
375
+ - Top: nav respects safe area and Dynamic Island
376
+ - Bottom: tab bar + home indicator respected; full-width primary button sits above the indicator
377
+ - Map: extends under nothing — clipped within its rounded container with side insets
378
+ - Sides: 16pt content inset throughout
379
+
380
+ ## 9. Agent Prompt Guide
381
+
382
+ ### Quick Color Reference
383
+ - Canvas (dark): `#000000`
384
+ - Surface 1 / 2 / 3: `#121417` / `#1B1E22` / `#23272C`
385
+ - Divider: `#2A2E33`
386
+ - Garmin Blue (fill): `#007CC3`
387
+ - Garmin Blue (text/active on black): `#2A9FD6`
388
+ - Garmin Blue pressed: `#00689F`
389
+ - Text primary / secondary / tertiary: `#FFFFFF` / `#A6ACB3` / `#6B7178`
390
+ - Body Battery: `#2EA8E0`
391
+ - Intensity Minutes: `#00A8A8`
392
+ - Steps: `#C8B560`
393
+ - HR Zone 2 / 3 / 4 / 5: `#4CAF50` / `#C8B560` / `#F0A030` / `#E5402A`
394
+ - Success / Warning / Error: `#4CAF50` / `#F0A030` / `#E5402A`
395
+
396
+ ### Example Component Prompts
397
+ - "Build the Garmin Connect activity detail header in SwiftUI: top nav 44pt with a back chevron + 'Activities' label (Roboto 15pt 500 white) leading, and a settings gear + share-node icon trailing (19pt stroke glyphs). Below, an eyebrow 'RUNNING' (Roboto 12pt 700 uppercase `#2A9FD6` +0.5 tracking), then 'Morning Run' in Roboto Condensed 26pt 700 white, then 'Today at 6:42 AM · Cedar Loop Trail' in Roboto 14pt 400 `#A6ACB3`. Canvas is true black `#000000`."
398
+
399
+ - "Create the Garmin GPS route map: a 168pt-tall rounded (12pt) container, basemap a dark gradient `#1A2329 → #0C1216` with a faint 28pt grid overlay at 4% white. Draw the route as a `#007CC3` polyline, 4pt stroke, round caps, with a soft glow `drop-shadow(0 0 4px rgba(0,124,195,0.6))`. Place a green `#4CAF50` start pin and a red `#E5402A` end pin, each a dot with a 3pt white ring. Animate the route drawing on over 700ms ease-out via stroke-dashoffset."
400
+
401
+ - "Build the Garmin stat grid: a 3-column grid, each cell `#121417` separated by 1px `#2A2E33` mortar, outer radius 12pt. Cell = uppercase label (Roboto 10pt 700 `#A6ACB3` +0.5 tracking) above a value in Roboto Condensed 22pt 700 white with tabular figures, and an inline unit in Roboto 11pt 500 `#6B7178`. Populate: Distance 8.42 km, Time 42:18, Avg Pace 5:02 /km, Avg HR 156 bpm, Calories 612 C, Elev Gain 124 m. Stagger-fade the cells in with a 6pt rise on first appearance."
402
+
403
+ - "Build the Garmin Training Status card: `#121417`, 12pt radius, 1px `#2A2E33` border. Leading a 52pt ring — `#23272C` track at 6pt stroke, a `#007CC3` progress arc at 6pt stroke, round cap, starting -90°, ~75% filled, animating from 0 over 600ms ease-out. Right of it: 'TRAINING STATUS' eyebrow `#A6ACB3` 10pt 700 uppercase, 'Productive' in `#2A9FD6` Roboto 16pt 700, and 'VO₂ Max 52 · Load 388' in `#A6ACB3` 12pt."
404
+
405
+ - "Build the Garmin Body Battery card: name 'Body Battery' (Roboto 13pt 600 white) on the left, value '72' (Roboto Condensed 22pt 700 `#2EA8E0`) on the right baseline-aligned. Below, an 8pt-tall track `#23272C` (4pt radius) with a 72%-width fill using gradient `#1E6FA8 → #2EA8E0`. Under it a 3-point scale row '0 — Charged — 100' in Roboto 10pt 500 `#6B7178`. Bar fills from 0 over 600ms ease-out."
406
+
407
+ - "Render the Garmin heart-rate-zones card: for each zone a row with a fixed-width zone label (Z2…Z5, Roboto 11pt `#A6ACB3`), a flexible 10pt track `#23272C` (3pt radius) with a fill in the zone's fixed color (Z2 `#4CAF50`, Z3 `#C8B560`, Z4 `#F0A030`, Z5 `#E5402A`) sized by time-in-zone, and a trailing duration in tabular Roboto 11pt `#A6ACB3`. Zone colors are semantic — never recolor them for theme."
408
+
409
+ ### Iteration Guide
410
+ 1. Canvas is **true black `#000000`** — not charcoal; this is the Garmin signature and powers OLED + data legibility
411
+ 2. Garmin Blue `#007CC3` is the **only** brand accent — fills use `#007CC3`, text/active on black uses brightened `#2A9FD6`
412
+ 3. Every meaningful number is **Roboto Condensed, tabular** — values never wrap or shrink; prose stays in Roboto
413
+ 4. The **value is the hero**; the label is a 10–12pt uppercase gray eyebrow above it
414
+ 5. Data-viz colors (HR zones, Body Battery `#2EA8E0`, Intensity `#00A8A8`, Steps `#C8B560`) are **fixed semantics** — identical across themes
415
+ 6. The **GPS route** is Garmin Blue with a soft glow; green `#4CAF50` start pin, red `#E5402A` end pin
416
+ 7. Depth is **surface-lightness steps** (`#000000 → #121417 → #1B1E22`) + 1px `#2A2E33` hairlines — almost no shadows
417
+ 8. The bottom tab bar has **no tint pill** — active is just the blue glyph + blue label
418
+ 9. Density is **ruled**: every data group bounded by a card edge or hairline; right-align + tabular for split tables
419
+ 10. Motion is purposeful — **route draws on (700ms)**, rings/bars **fill from 0 (600ms)**, stat cells stagger-rise; quiet otherwise