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,394 @@
1
+ # Design System Inspiration of Citymapper (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Citymapper's iOS app is a **transit nerd's instrument panel disguised as a friendly app**. Its whole reason to exist is to answer "how do I get from here to there, right now, the smartest way?" — and the visual language is built around a single insight: **every transport mode gets its own loud, consistent color, and a route is read as a colored strip**. Open the app, type a destination, and you get a stack of route cards; each card shows a **leg strip** — a horizontal row of color-coded mode chips (a green walk pill → a blue tube badge → a red bus badge → a green walk pill) with little arrows between them. You don't read the words; you read the *colors and the ETA*. This mode-color system (walk green, bus red, tube/metro blue, rail purple, bike cyan, cab amber) is the brand. It is consistent across every city Citymapper supports, and it never changes between light and dark mode — a bus is always red.
6
+
7
+ The canvas is clean and near-neutral so the mode colors and the live map carry all the energy: white (`#FFFFFF`) in light, a deep blue-black (`#0C0E14`) in dark. Citymapper's own brand accent is an **electric blue (`#2B5BFF`)** used for the destination pin, primary links, the metro mode, and selected states. But the single most iconic control in the entire product is the **GO button**: a fat, friendly, rounded **green (`#00C281`)** pill with a play triangle and the word "GO", which launches **GO trip mode** — a live, step-by-step navigation experience that counts down to your next action ("Get off in 2 stops", "Walk 4 min to the platform", "Your bus is 1 min away") with big type, a progress line, and disruption alerts. The GO pill is shape- and color-locked: it looks the same on every screen, in every city, in every theme.
8
+
9
+ The structure is: an **origin→destination card** at the top (two dots — a gray "from" dot and a blue "to" dot — connected by a short line, exactly like a transit map), a list of **route options** ranked by Citymapper's blend of speed/cost/effort (tagged "Fastest", "Cheapest", "Easiest", "Rain-safe"), and the **GO** button. Tapping a route opens **step-by-step**, and starting it enters **GO trip mode**. Other signature surfaces: the **departures board** (a live list of next departures at a stop, each row a colored line badge + destination + minutes, with imminent departures in amber), the **Nearby** screen (stops around you with live arrivals), and **disruption banners** (orange) that surface line closures inline in route results.
10
+
11
+ Typography is a friendly geometric grotesque — Citymapper uses a custom face, well-approximated by **Inter** with heavy weights. The personality is *confident and chunky*: ETAs and the GO label are extra-bold (800–900), place names are semibold, supporting text is regular gray. It's playful but never cute at the expense of legibility — you have to read this while half-running for a train.
12
+
13
+ **Key Characteristics:**
14
+ - Mode-color system — walk `#00B894`, bus `#E8453C`, tube/metro `#2B5BFF`, rail `#8E44D8`, bike `#00A8C5`, cab `#FFB400` — theme-invariant, the brand's soul
15
+ - **Leg strip** — a route shown as a horizontal row of color-coded mode chips with arrows between
16
+ - **GO button** — fat green (`#00C281`) rounded pill with a play triangle; shape/color-locked everywhere
17
+ - **GO trip mode** — live step-by-step navigation with big countdown type and a progress line
18
+ - Origin→destination card — gray "from" dot + blue "to" dot joined by a transit-map line
19
+ - Route options ranked & tagged — Fastest / Cheapest / Easiest / Rain-safe
20
+ - **Departures board** — live next-departure list; colored line badge + destination + minutes (amber when imminent)
21
+ - Disruption banners — orange inline alerts for closures and delays
22
+ - Clean near-neutral canvas (white / deep blue-black `#0C0E14`) so mode colors + map pop
23
+ - Electric blue (`#2B5BFF`) is Citymapper's own accent; green is reserved for GO
24
+ - Chunky confident type (Inter / custom grotesque), extra-bold ETAs
25
+ - Bottom tabs: Get me / Nearby / Saved / You
26
+
27
+ ## 2. Color Palette & Roles
28
+
29
+ ### Primary (Interactive)
30
+ - **Citymapper Blue** (`#2B5BFF`): The brand accent — destination pin, primary links, selected states, the "metro/tube" mode color, secondary CTAs.
31
+ - **Citymapper Blue Bright** (`#4D7BFF`): Dark-mode link & active-tab variant for contrast on the dark canvas.
32
+ - **Citymapper Blue Pressed** (`#1E45CC`): Pressed state of blue CTAs.
33
+ - **GO Green** (`#00C281`): Reserved exclusively for the GO button and GO trip mode — never used for generic UI.
34
+
35
+ ### Transit Mode Colors (Theme-Invariant — the brand)
36
+ These define a route's readability and **do not change between light and dark**.
37
+
38
+ | Mode | Color | Tint (bg use) |
39
+ |------|-------|---------------|
40
+ | Walk | `#00B894` | `rgba(0,184,148,0.18)` |
41
+ | Bus | `#E8453C` | `rgba(232,69,60,0.18)` |
42
+ | Tube / Metro / Subway | `#2B5BFF` | `rgba(43,91,255,0.18)` |
43
+ | Rail / Train / Overground | `#8E44D8` | `rgba(142,68,216,0.18)` |
44
+ | Bike / Scooter | `#00A8C5` | `rgba(0,168,197,0.18)` |
45
+ | Cab / Rideshare | `#FFB400` | `rgba(255,180,0,0.18)` |
46
+ | Ferry | `#0094C6` | `rgba(0,148,198,0.18)` |
47
+
48
+ > Real transit lines (e.g., London Victoria line navy, NYC A/C/E blue) override these defaults with the operator's official line color when known. The mode colors are the *fallback and category* color.
49
+
50
+ ### Canvas & Surfaces (Light Mode)
51
+ - **Canvas White** (`#FFFFFF`): Primary light canvas.
52
+ - **Surface Gray** (`#F4F5F8`): Route cards, grouped sections.
53
+ - **Surface Pressed** (`#E8EAF0`): Pressed rows.
54
+ - **Divider** (`#E3E5EC`): Hairlines between route legs and departure rows.
55
+
56
+ ### Canvas & Surfaces (Dark Mode)
57
+ - **Dark Canvas** (`#0C0E14`): Primary dark canvas — a deep blue-black, NOT pure black.
58
+ - **Dark Surface 1** (`#15171F`): Route cards, elevated surfaces.
59
+ - **Dark Surface 2** (`#1E212B`): Departures board, hovered/selected cards.
60
+ - **Dark Divider** (`#282C38`): Hairline dividers on dark.
61
+
62
+ ### Text
63
+ - **Text Primary Light** (`#10131A`): ETAs, place names, titles — near-black.
64
+ - **Text Secondary Light** (`#5A6473`): Metadata, "min" suffix, captions.
65
+ - **Text Tertiary Light** (`#8A93A3`): Disabled, placeholder, leg arrows.
66
+ - **Text Primary Dark** (`#ECEEF3`): Primary text on dark.
67
+ - **Text Secondary Dark** (`#98A0AE`): Secondary on dark.
68
+ - **Text Tertiary Dark** (`#646C7A`): Tertiary on dark.
69
+
70
+ ### Surface / Tint Map
71
+
72
+ | Role | Light Mode | Dark Mode |
73
+ |------|-----------|-----------|
74
+ | Canvas | `#FFFFFF` | `#0C0E14` |
75
+ | Surface 1 | `#F4F5F8` | `#15171F` |
76
+ | Surface 2 | `#E8EAF0` | `#1E212B` |
77
+ | Divider | `#E3E5EC` | `#282C38` |
78
+ | Blue tint | `#2B5BFF14` | `#2B5BFF29` |
79
+ | GO Green tint | `#00C2811F` | `#00C2812E` |
80
+
81
+ ### Semantic
82
+ - **Disruption Orange** (`#FF8A00`): Line closures, severe delays — inline banners and the "minutes soon" departure state.
83
+ - **Live Green** (`#00C281`): "Live" indicator dot, on-time confirmation (shares the GO green).
84
+ - **Delay Red** (`#E8453C`): Cancelled/severely-delayed services (shares the bus red intentionally — "red = stop/problem").
85
+ - **Info Blue** (`#2B5BFF`): Informational tips, "we updated this route".
86
+
87
+ ## 3. Typography Rules
88
+
89
+ ### Font Family
90
+ - **Primary**: Citymapper's custom geometric grotesque (a chunky, friendly sans tuned for glanceable transit data).
91
+ - **iOS Fallback**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', 'Helvetica Neue', sans-serif`
92
+ - **Web/Catalog Substitute**: `Inter` (weights 400–900) — closest free face matching the chunky grotesque feel.
93
+ - **Numerics**: Tabular figures for ETAs, minutes, and the departures board so countdowns don't jitter.
94
+
95
+ ### Hierarchy
96
+
97
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
98
+ |------|------|------|--------|-------------|----------------|-------|
99
+ | Display | Grotesque | 32pt | 900 | 1.1 | -0.5pt | "Get me somewhere" / GO-mode primary instruction |
100
+ | ETA Hero | Grotesque | 26pt | 800 | 1.15 | -0.3pt | Route card "24 min", GO-mode countdown |
101
+ | Section | Grotesque | 22pt | 800 | 1.2 | -0.2pt | "Best routes", "Departures" |
102
+ | Row Title | Grotesque | 18pt | 700 | 1.3 | -0.1pt | Line name, step title |
103
+ | Body | Grotesque | 16pt | 400 | 1.45 | 0pt | Step descriptions, route notes |
104
+ | Place | Grotesque | 15pt | 600 | 1.3 | 0pt | Origin/destination, stop names |
105
+ | Meta | Grotesque | 14pt | 400 | 1.4 | 0pt | "Updated 12s ago · live" |
106
+ | Mode Badge | Grotesque | 12pt | 800 | 1.0 | 0.3pt | Line/route number on a colored chip — uppercase |
107
+ | ETA Suffix | Grotesque | 13pt | 600 | 1.0 | 0pt | The "min" after a number |
108
+ | GO Label | Grotesque | 18pt | 900 | 1.0 | 0.4pt | The word "GO" in the button — uppercase |
109
+ | Button | Grotesque | 15pt | 800 | 1.0 | 0pt | Secondary buttons |
110
+ | Tag | Grotesque | 10pt | 800 | 1.0 | 0.4pt | "Fastest"/"Cheapest" pills — uppercase |
111
+ | Departure Min | Grotesque | 16pt | 800 | 1.0 | 0pt | Minutes on the departures board, tabular |
112
+ | Tab Label | Grotesque | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
113
+
114
+ ### Principles
115
+ - **ETAs and GO are the loudest type** (800–900): the number you act on dominates every screen.
116
+ - **Tabular figures for anything counting down**: route ETAs, departure minutes, GO-mode countdowns.
117
+ - **Mode badges are uppercase, chunky, tracked**: line numbers/names sit in colored chips at 12pt 800.
118
+ - **Confident, not cute**: heavy weights, tight tracking on big type — readable while moving.
119
+ - **Dynamic Type first-class**: display, ETA, body scale; mode badges, tab labels, the GO label stay fixed (chips are layout-sensitive).
120
+
121
+ ## 4. Component Stylings
122
+
123
+ ### Buttons
124
+
125
+ **GO Button (the icon of the app)**
126
+ - Shape: Full rounded pill, 28pt corner radius (≈ height/2), height 54pt
127
+ - Background: `#00C281` (GO Green) — never any other color
128
+ - Content: a play triangle (filled) + the word "GO" in 18pt weight 900, color `#003322` (dark green text for warmth) or white per contrast
129
+ - Shadow: `0 10px 22px -10px rgba(0,194,129,0.7)`
130
+ - Pressed: scale 0.98 + brightness 0.95
131
+ - **Locked**: identical shape, color, and label on every screen and in every theme — it is the brand control
132
+
133
+ **Primary Button (Get directions / secondary CTA)**
134
+ - Background: `#2B5BFF` (Citymapper Blue)
135
+ - Text: white, 15pt weight 800
136
+ - Corner radius: 12pt; padding 13pt/24pt
137
+ - Pressed: `#1E45CC`
138
+
139
+ **Outline Button (Save place)**
140
+ - Background: transparent
141
+ - Text & border: `#2B5BFF` light / `#4D7BFF` dark, 1.5pt border
142
+ - Corner radius: 12pt; padding 11pt/18pt
143
+
144
+ **Text Button (More routes)**
145
+ - Font: 14pt weight 700
146
+ - Color: `#2B5BFF` / `#4D7BFF` dark
147
+ - Pressed: 60% opacity
148
+
149
+ ### Cards & Containers
150
+
151
+ **Origin→Destination Card**
152
+ - Background: `#F4F5F8` / `#15171F`, 1pt divider border, 14pt corner radius, 12pt/14pt padding
153
+ - Two rows: a 10pt gray dot ("from") and a 10pt blue dot ("to"), joined by a 2pt vertical divider segment between them — reads like a transit-map stop pair
154
+ - Place text: 14–15pt weight 600
155
+
156
+ **Route Option Card**
157
+ - Background: `#F4F5F8` / `#15171F`, 1pt divider border, 16pt corner radius, 14pt/16pt padding, 12pt vertical gap between cards
158
+ - "Best" route: border switches to GO Green `#00C281`
159
+ - Head: ETA "24" 22pt 800 + "min" 13pt 600 secondary, with a right-aligned tag pill ("Fastest"/"Cheapest")
160
+ - **Leg strip**: horizontal flex row of mode chips: each chip is a colored rounded-8pt pill with a 13pt white mode glyph + a short label/number (e.g., "4" for walk minutes, "Victoria" for a line); chips separated by a tertiary "›" arrow
161
+
162
+ **Departures Board**
163
+ - Container: `#1E212B` / surface, 14pt radius, `overflow: hidden`
164
+ - Row: 13pt/16pt padding, 1pt bottom divider (none last)
165
+ - Leading: a 34×24 line badge (mode-colored, 12pt 900 white text — e.g., "VIC", "63", "NR")
166
+ - Middle: destination 14pt weight 600
167
+ - Trailing: minutes 16pt weight 800 — GO Green normally, **Disruption Orange when ≤ 3 min** ("leave now")
168
+
169
+ **Mode Chip / Badge**
170
+ - Rounded 8–10pt pill, mode color background, white text 12pt 800 uppercase, optional 13pt glyph
171
+ - The atomic unit of every route view
172
+
173
+ ### Navigation
174
+
175
+ **Top (Origin→Destination)**
176
+ - The O→D card *is* the top region on the route screen — no separate nav bar; back chevron floats top-left when drilled in
177
+
178
+ **Bottom Tab Bar**
179
+ - Height: 64pt + safe area
180
+ - Background: `#FFFFFF` / `rgba(12,14,20,0.94)` with `backdrop-filter: blur(20px)`, 0.5pt top divider
181
+ - Tabs (4): Get me / Nearby / Saved / You
182
+ - Icon: 22pt; active `#2B5BFF` light / `#4D7BFF` dark (filled), inactive tertiary gray
183
+ - Label: 10pt weight 600, always shown
184
+ - No pill indicator — color + icon-fill change only
185
+
186
+ **GO Trip Mode (full-screen takeover)**
187
+ - Replaces normal chrome: a big current-instruction header (ETA Hero / Display weight), a vertical progress line with mode-colored segments and stop dots, a "next action" card, and a persistent disruption strip if relevant
188
+ - A floating "End" / minimize control; the GO green theme dominates
189
+
190
+ ### Input Fields
191
+
192
+ **Destination Search**
193
+ - Height: 48pt
194
+ - Background: `#F4F5F8` / `#1E212B`
195
+ - Corner radius: 12pt
196
+ - Leading 18pt search glyph (tertiary)
197
+ - Placeholder: "Where to?" 15pt 400 tertiary
198
+ - Focus: 2pt `#2B5BFF` border
199
+
200
+ **Origin Field (inline in O→D card)**
201
+ - Borderless row in the O→D card; tap to edit, opens the same search sheet
202
+
203
+ ### Distinctive Components
204
+
205
+ **Leg Strip**
206
+ - The signature route visualization — a horizontal sequence of mode chips + arrows
207
+ - Reads in <1s: color = mode, number = line/duration
208
+ - Never render a route as plain text — always the colored strip
209
+
210
+ **GO Trip Mode Countdown**
211
+ - Big "Get off in 2 stops" / "Bus in 1 min" instruction (ETA Hero/Display weight)
212
+ - A live vertical progress line; the current leg's segment animates/pulses in its mode color
213
+ - Haptic + voice cues at each step transition
214
+
215
+ **Departures Board**
216
+ - Live, auto-refreshing; minutes tick down; imminent (≤3 min) turn orange
217
+ - "Live" green dot + "updated Ns ago" caption
218
+
219
+ **Route Tag Pill**
220
+ - Tiny uppercase pill on a route card: "Fastest" (GO-green tint), "Cheapest" (blue tint), "Easiest", "Rain-safe" (a cloud glyph), "Step-free"
221
+ - Communicates *why* you'd pick this route
222
+
223
+ **Disruption Banner**
224
+ - Inline orange (`#FF8A00`) strip in route results: "⚠ Victoria line: minor delays"
225
+ - Tap to expand details; severe closures use Delay Red `#E8453C`
226
+
227
+ **Nearby Stops List**
228
+ - Each entry: stop name + a row of mode badges with the soonest arrival per line
229
+ - The "I just want to see what's around me" surface
230
+
231
+ ## 5. Layout Principles
232
+
233
+ ### Spacing System
234
+ - Base unit: 4pt
235
+ - Scale: 4, 6, 8, 12, 16, 18, 24, 32, 40, 54
236
+ - Page horizontal inset: 16pt
237
+ - Card internal padding: 14–16pt
238
+ - Route-card vertical gap: 12pt
239
+ - Leg-strip chip gap: 6pt
240
+
241
+ ### Grid & Container
242
+ - iPhone: single-column route list at 16pt insets; map fills above when in map mode
243
+ - iPad: two-pane — route list (max 420pt) on the left, live map on the right; GO mode is full-screen on both
244
+ - Departures board: single column, fixed row height
245
+ - Leg strip: horizontal wrap, never truncates the mode color (label may abbreviate)
246
+
247
+ ### Whitespace Philosophy
248
+ - **Color does the work, not whitespace**: the canvas is calm so mode colors and the map carry energy
249
+ - **The GO button always has clear space** below the route list — it must never be crowded
250
+ - **Glance-optimized density**: route cards are compact enough that 3–4 fit without scrolling
251
+ - **One green action**: GO is the only green; nothing else competes for that meaning
252
+
253
+ ### Border Radius Scale
254
+ - Square (0pt): map, full-bleed banners
255
+ - Subtle (4pt): tiny tags
256
+ - Standard (8pt): mode chips, route tag pills
257
+ - Comfortable (10–12pt): badges, inputs, primary button
258
+ - Card (14–16pt): route cards, O→D card, departures board
259
+ - GO Pill (28pt ≈ height/2): the GO button
260
+ - Pill (500pt): filter chips
261
+ - Circle (50%): O→D dots, avatar, live dot
262
+
263
+ ## 6. Depth & Elevation
264
+
265
+ Citymapper is mostly flat; depth highlights the live map layer and the one action that matters.
266
+
267
+ | Level | Treatment | Use |
268
+ |-------|-----------|-----|
269
+ | Flat (Level 0) | No shadow; 1pt border/divider | Route cards, departures rows, sections |
270
+ | Map Sheet (Level 1) | `0 -8px 24px rgba(0,0,0,0.16)` | The route list / bottom sheet sitting over the map |
271
+ | GO Action (Level 2) | `0 10px 22px -10px rgba(0,194,129,0.7)` (green-tinted) | The GO button only |
272
+ | Floating (Level 2) | `0 6px 20px rgba(16,19,26,0.14)` | Disruption detail popover, mode-filter sheet |
273
+ | Modal Scrim | `rgba(8,10,16,0.5)` | Behind sheets/modals |
274
+
275
+ **Shadow Philosophy**: The bottom-sheet-over-map is the core spatial metaphor — the route list floats above a live map and you can drag it up/down. The only persistently shadowed control is the GO button, with a green-tinted glow that makes it the obvious thing to press. Everything else is flat with borders. On dark mode the GO glow stays (green reads on the deep blue-black); card separation uses the `#15171F` → `#1E212B` surface ramp.
276
+
277
+ ### Motion
278
+ - **Route list ⇄ map drag**: the sheet tracks the finger 1:1; snap points at peek / half / full with `spring(response: 0.35, damping: 0.85)`
279
+ - **GO start**: GO pill scales 0.98 then the screen cross-dissolves into GO trip mode (350ms); the progress line draws in from the top over 500ms
280
+ - **GO-mode step transition**: the completed leg's line segment fills its mode color (250ms ease-out); the instruction text swaps with a 200ms vertical slide+fade; medium haptic + optional voice cue
281
+ - **Departure tick**: minutes decrement with a 150ms number cross-fade; crossing the ≤3-min threshold animates the color to orange (200ms)
282
+ - **Leg strip reveal**: on a fresh search, route cards stagger-in (each `opacity 0→1` + 8pt rise, 60ms apart); leg chips within a card pop in left-to-right (40ms apart, slight scale 0.9→1)
283
+ - **Disruption banner**: slides down from the top of the result list in 250ms ease-out; pulses its orange border once to draw the eye
284
+ - **Tab switch**: instant content swap; active icon does a subtle 0.9→1 scale (120ms)
285
+ - **Pull to refresh departures**: custom transit-y loader; on release, minutes restream with the cross-fade
286
+ - **Haptic feedback**: light tick on route select & tab change; medium impact on GO start and each GO-mode step; warning haptic when a disruption affects the active route
287
+
288
+ ## 7. Do's and Don'ts
289
+
290
+ ### Do
291
+ - Give every transport mode its loud, consistent color (walk green / bus red / tube blue / rail purple / bike cyan / cab amber) and keep it identical across themes
292
+ - Render routes as a **leg strip** of colored mode chips with arrows — color first, words second
293
+ - Keep the **GO button** a fat green (`#00C281`) pill, shape- and color-locked on every screen and theme
294
+ - Use Citymapper Blue (`#2B5BFF`) for the brand accent / destination / metro; reserve green for GO
295
+ - Show the O→D as a gray "from" dot + blue "to" dot joined by a transit-map line
296
+ - Tag routes with *why* ("Fastest", "Cheapest", "Easiest", "Rain-safe")
297
+ - Make the departures board live, with imminent (≤3 min) departures in orange
298
+ - Use tabular figures for every ETA, minute, and countdown
299
+ - Surface disruptions inline as orange banners in route results
300
+ - Keep the canvas calm (white / deep blue-black `#0C0E14`) so mode colors and the map pop
301
+ - Use chunky extra-bold type for ETAs and GO — readable while moving
302
+
303
+ ### Don't
304
+ - Don't recolor modes per theme — a bus is always red, light or dark
305
+ - Don't render a route as a plain text list — it must be the colored leg strip
306
+ - Don't use green for anything except GO / live / on-time — green means "go"
307
+ - Don't change the GO button's shape or color contextually — it is the brand control
308
+ - Don't use pure black (`#000000`) for dark canvas — it's deep blue-black `#0C0E14`
309
+ - Don't bury the GO button or crowd it — it always has clear space
310
+ - Don't let real line colors get overridden by category color when the official line color is known (use the line's true color, fall back to mode color)
311
+ - Don't animate countdowns abruptly — cross-fade the minute number (150ms)
312
+ - Don't hide disruptions in a sub-screen — they belong inline, in orange, in the results
313
+ - Don't thin out ETA type — it's the loudest thing on screen (800–900)
314
+ - Don't add a second "primary" green action competing with GO
315
+
316
+ ## 8. Responsive Behavior
317
+
318
+ ### Device Sizes
319
+ | Device | Width | Key Changes |
320
+ |--------|-------|-------------|
321
+ | iPhone SE (3rd gen) | 375pt | Leg-strip labels abbreviate sooner; 3 route cards visible |
322
+ | iPhone 13/14/15 | 390pt | Standard layout |
323
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated above the map / O→D card |
324
+ | iPhone 15/16 Pro Max | 430pt | Larger map peek; leg strips show fuller line names |
325
+ | iPad (portrait) | 768pt | Two-pane: route list (≤420pt) + live map |
326
+ | iPad (landscape) | 1024pt+ | Same two-pane wider; GO trip mode full-screen with side step list |
327
+
328
+ ### Dynamic Type
329
+ - Display, ETA hero, body, place: full scale
330
+ - Mode badges, route tag pills, the GO label, departure-min, tab labels: FIXED (chips are layout-sensitive)
331
+ - GO-mode instruction scales up generously (you read it from a pocket-glance distance)
332
+
333
+ ### Orientation
334
+ - All screens rotate
335
+ - iPad landscape locks the two-pane split; GO mode rotates with a side-by-side step list + map
336
+ - The leg strip wraps rather than truncating mode color
337
+
338
+ ### Touch Targets
339
+ - GO button: 54pt tall pill, full width of its inset
340
+ - Route card: full-card tap, ≥ 72pt tall
341
+ - Mode chip (when tappable): ≥ 44pt hit even if visually ~28pt
342
+ - Departures row: full-row tap, ≥ 50pt
343
+ - Tab bar icons: 22pt glyph, 44pt hit
344
+
345
+ ### Safe Area Handling
346
+ - Top: O→D card / map respects safe area + Dynamic Island
347
+ - Bottom: tab bar + home indicator respected; the route sheet's peek height sits above the home indicator; the GO button floats above safe area
348
+ - Keyboard: destination search sheet rises above the keyboard
349
+ - Sides: 16pt content inset
350
+
351
+ ## 9. Agent Prompt Guide
352
+
353
+ ### Quick Color Reference
354
+ - Canvas (light): `#FFFFFF`
355
+ - Canvas (dark): `#0C0E14`
356
+ - Surface 1: `#F4F5F8` light / `#15171F` dark
357
+ - Surface 2: `#E8EAF0` light / `#1E212B` dark
358
+ - Divider: `#E3E5EC` light / `#282C38` dark
359
+ - Text primary: `#10131A` light / `#ECEEF3` dark
360
+ - Text secondary: `#5A6473` light / `#98A0AE` dark
361
+ - **Citymapper Blue (accent)**: `#2B5BFF` (bright `#4D7BFF`, pressed `#1E45CC`)
362
+ - **GO Green (GO button only)**: `#00C281`
363
+ - Mode — Walk: `#00B894`
364
+ - Mode — Bus: `#E8453C`
365
+ - Mode — Tube/Metro: `#2B5BFF`
366
+ - Mode — Rail: `#8E44D8`
367
+ - Mode — Bike: `#00A8C5`
368
+ - Mode — Cab: `#FFB400`
369
+ - Disruption Orange: `#FF8A00`
370
+
371
+ ### Example Component Prompts
372
+ - "Build a Citymapper route option card in SwiftUI: a `#F4F5F8` (dark `#15171F`) container, 1pt divider border, 16pt corner radius, 14pt/16pt padding. Header row: a left ETA group — `24` in 22pt weight 800 `#10131A` next to `min` in 13pt weight 600 `#5A6473` — and a right-aligned tag pill `Fastest` (10pt 800 uppercase, GO-green tint `rgba(0,194,129,0.18)`, `#00C281` text, 999pt radius). Below: a horizontal leg strip — mode chips, each an 8pt-radius pill in its mode color with a 13pt white glyph and a label (walk `#00B894` '4', tube `#2B5BFF` 'Victoria', walk `#00B894` '6'), separated by a `›` arrow in `#8A93A3`. If this is the best route, switch the card border to `#00C281`."
373
+
374
+ - "Create the Citymapper GO button: a full-pill rounded rectangle 28pt corner radius, 54pt tall, full-width minus 16pt insets, background `#00C281`, containing a filled play triangle and the word 'GO' in 18pt weight 900 letter-spacing 0.4pt, with a green-tinted shadow `0 10px 22px -10px rgba(0,194,129,0.7)`. Pressed: scale 0.98 + brightness 0.95 + medium haptic. This control's shape and color are LOCKED — identical on every screen and in both light and dark themes."
375
+
376
+ - "Render the Citymapper origin→destination card: a `#F4F5F8` (dark `#15171F`) container, 14pt radius, 1pt divider border, 12pt/14pt padding. Two 34pt rows: row 1 has a 10pt `#5A6473` gray 'from' dot then place text in 15pt weight 600; row 2 has a 10pt `#2B5BFF` blue 'to' dot then place text. Between the dots, a 2pt-wide `#E3E5EC` vertical line segment connecting them — reads like a transit-map stop pair."
377
+
378
+ - "Build the Citymapper departures board: a `#1E212B` container, 14pt radius, `overflow: hidden`. Each row 13pt/16pt padding, 1pt `#282C38` bottom divider (none on last): leading a 34×24 line badge (mode-colored, e.g. tube `#2B5BFF`) with 12pt weight 900 white text ('VIC'), a flexible destination in 14pt weight 600 `#ECEEF3`, and trailing minutes in 16pt weight 800 — `#00C281` normally, but `#FF8A00` when ≤ 3 minutes. Tabular figures; minutes cross-fade as they decrement."
379
+
380
+ - "Create the Citymapper GO trip-mode header: a near-full-bleed panel with a big current instruction in 26–32pt weight 800–900 `#10131A` ('Get off in 2 stops'), a sub-line in 16pt 400 `#5A6473` ('Tate Modern · 8 min'), and a vertical progress line on the left with stop dots and mode-colored segments — the current leg's segment in its mode color, pulsing. A floating 'End' control top-right. The GO-green theme dominates."
381
+
382
+ - "Render a Citymapper disruption banner: a full-width inline strip in the route results, `#FF8A00` background at 18% (`rgba(255,138,0,0.18)`) with a 1pt `#FF8A00` border, 10pt radius, a ⚠ glyph in `#FF8A00`, and text 'Victoria line: minor delays' in 14pt weight 700. On appear, slide down 250ms ease-out and pulse the border once. Severe closures use Delay Red `#E8453C` instead of orange."
383
+
384
+ ### Iteration Guide
385
+ 1. Canvas is calm — white light / deep blue-black `#0C0E14` dark (NOT true black) — so mode colors and the map carry the energy
386
+ 2. Every transport mode has a loud, consistent color (walk `#00B894` / bus `#E8453C` / tube `#2B5BFF` / rail `#8E44D8` / bike `#00A8C5` / cab `#FFB400`) — theme-invariant, the brand's soul
387
+ 3. Routes are ALWAYS a leg strip of colored mode chips + `›` arrows — color first, words second
388
+ 4. The GO button is a fat green `#00C281` pill, shape/color-locked on every screen and in both themes — it is THE brand control
389
+ 5. Green means GO / live / on-time only — Citymapper Blue `#2B5BFF` is the brand accent (also the metro mode)
390
+ 6. O→D = gray "from" dot + blue "to" dot joined by a transit-map line segment
391
+ 7. Tag routes with *why* (Fastest / Cheapest / Easiest / Rain-safe)
392
+ 8. The departures board is live; minutes use tabular figures and turn orange ≤ 3 min
393
+ 9. Disruptions are inline orange (`#FF8A00`) banners in results — never hidden in a sub-screen
394
+ 10. ETAs and GO are the loudest type (800–900); real line colors override category mode colors when known