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,384 @@
1
+ # Design System Inspiration of ESPN (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ ESPN's iOS app is a live scoreboard that happens to also be a newsroom. Everything in the design serves one goal: **get the score in front of the user in under a second**. The canvas is a near-black `#0E0F11` (deliberately not pure black, so the scores ticker and game cards lift cleanly off it). The first thing on screen is a **horizontally scrolling scores ticker** — a strip of compact cards, one per game, each showing league, two team abbreviations with logos, scores in tabular numerals, and a status pill (LIVE Q3 / FINAL / 7:05 ET). Below it flows the **SportsCenter feed**: a mix of live game cards, breaking-news stories, highlights, and analysis. The app is dense, fast, and information-first — it is engineered for a fan glancing at it 30 times a day.
6
+
7
+ The single brand accent is **ESPN Red** (`#D50A0A` — with a brighter `#CC0000` for emphatic CTAs and links). It is used with discipline: the ESPN logo block, the primary "Watch Live" / "Watch on ESPN+" call-to-action, the active bottom-tab indicator dot, story category tags ("BREAKING", "ANALYSIS"), and section accents. Red is never decoration — it means "ESPN brand", "watch this", or "this is hot". Live games get a hotter, brighter red (`#FF1A1A`) with a pulsing dot so a glance instantly separates in-progress from finished. Final scores dim the loser to gray; the **winning team's score turns green** (`#1FAA59`) so a result is legible without reading a single word.
8
+
9
+ The signature surfaces are the **scores feed** (ticker + game cards + SportsCenter stories) and the **game detail screen** (a big score header, team records, a live clock, drive/play info, and tabbed sections — Gamecast / Box Score / Plays / News). The defining components are the **game card** (league header, two team rows with logo + name + record + big tabular score, a footer with the clock and an ESPN+ watch link) and the **live status badge** (a pulsing-dot LIVE pill). No other sports app packs this much live state into a glanceable card.
10
+
11
+ Typography is a **bold condensed-leaning sans** — ESPN's brand face is a custom "ESPN" type; the closest free analog is **Archivo** (with its expanded weight range and slightly condensed feel). Hierarchy is built for scanning: enormous heavy headlines and scores, tight team names, small dense metadata. Weights concentrate at 400 (body/meta), 700 (team names, story titles), 800 (section headers), and 900 (headlines, screen titles, scores, status badges). **Scores always use tabular (monospaced) numerals** so digits stay column-aligned across every card — a non-negotiable for a scoreboard. On iOS, Archivo falls back to SF Pro (use SF Pro's `.heavy`/`.black` and a tabular numeral feature for scores).
12
+
13
+ **Key Characteristics:**
14
+ - Near-black canvas (`#0E0F11`) — not pure black, so the ticker and cards lift cleanly
15
+ - Horizontal scores ticker pinned near the top — the fastest path to "what's the score"
16
+ - SportsCenter feed — interleaved live game cards, breaking news, highlights, analysis
17
+ - Single accent — ESPN Red (`#D50A0A` / bright `#CC0000`) for logo, CTA, active-tab dot, tags
18
+ - Live state is a hotter red (`#FF1A1A`) with a pulsing dot; finals dim to gray
19
+ - Winning team's score turns green (`#1FAA59`) — a result readable at a glance
20
+ - Game card — league header, two team rows (logo + name + record + score), clock + ESPN+ footer
21
+ - Tabular numerals on every score — digits stay column-aligned across cards
22
+ - Archivo (ESPN-style bold condensed sans) — built for scanning, not reading
23
+ - Five-tab bottom bar: Home / Scores / Watch / ESPN BET / More, active tab marked by a red dot
24
+ - Dense, information-first layout — engineered for the 30-glances-a-day fan
25
+
26
+ ## 2. Color Palette & Roles
27
+
28
+ ### Primary (Interactive)
29
+ - **ESPN Red** (`#D50A0A`): The core brand accent — logo block, active-tab indicator dot, section accents, primary surfaces of brand identity.
30
+ - **Red Bright** (`#CC0000`): Emphatic CTAs and links — "Watch on ESPN+", story category tags, inline links.
31
+ - **Red Pressed** (`#A50808`): Pressed state of the red CTA.
32
+
33
+ ### Canvas & Surfaces (Dark — the primary mode)
34
+ - **Near-Black Canvas** (`#0E0F11`): Primary canvas — not pure black, so cards and the ticker lift.
35
+ - **Surface 1** (`#18191B`): Game-card body, story containers.
36
+ - **Surface 2** (`#212327`): Ticker chips, card headers, score rows, search field.
37
+ - **Surface 3** (`#2B2D31`): Pressed rows, "FINAL" badge fill, chips.
38
+ - **Divider** (`#2A2C30`): Hairline dividers between team rows, stories, and sections.
39
+
40
+ > ESPN's app is **dark-first**. A light theme exists in some surfaces but the scoreboard identity (near-black ground, red accent, green-winner) is defined in dark; this spec documents the dark system.
41
+
42
+ ### Text
43
+ - **Text Primary** (`#FFFFFF`): Headlines, team names, scores, screen titles — pure white.
44
+ - **Text Secondary** (`#9AA0A6`): Metadata (league · time · read-length), team records, losing-team scores, inactive tab labels.
45
+ - **Text Tertiary** (`#6B7075`): Disabled actions, "FINAL" label text, very low-emphasis captions.
46
+
47
+ ### Brand & Status Accents
48
+ | Role | Color | Usage |
49
+ |------|-------|-------|
50
+ | ESPN Red | `#D50A0A` | Logo block, active-tab dot, section accents |
51
+ | Red Bright | `#CC0000` | "Watch on ESPN+" link, category tags, inline links |
52
+ | Live Red | `#FF1A1A` | LIVE badge fill + pulsing dot — in-progress games |
53
+ | Win Green | `#1FAA59` | The winning team's score on a finished game |
54
+ | Rank Gold | `#F2C200` | Top-25 / ranking numerals, "#1 seed" emphasis |
55
+
56
+ ### Semantic
57
+ - **Error Red** (`#E5484D`): Network/feed-failure banner, destructive confirm (distinct from brand red).
58
+ - **Success / Win** (`#1FAA59`): Winning score, "Following" confirmation toast.
59
+ - **Live / Alert** (`#FF1A1A`): Live games, breaking-alert banner pulse.
60
+ - **Pulse Dot**: a small filled circle that animates opacity 1 → 0.4 → 1 over ~1.2s beside the LIVE label.
61
+
62
+ ## 3. Typography Rules
63
+
64
+ ### Font Family
65
+ - **Primary**: ESPN's brand face is a proprietary condensed sans. The closest free analog is **Archivo** (by Omnibus-Type, SIL OFL) — a grotesque with a slightly condensed feel and a wide weight range (400–900), well-suited to dense sports UI.
66
+ - **Heavy Display**: `Archivo` weight **900 (Black)**, occasionally italic — used for headlines, scores, and status badges; the energetic sports voice.
67
+ - **Numerals**: Scores and clocks **must** use tabular (monospaced) figures — `font-variant-numeric: tabular-nums` / SF Pro's `.monospacedDigit` — so digits stay column-aligned.
68
+ - **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Archivo', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
69
+ - **iOS Note**: Without Archivo bundled, fall back to SF Pro `.heavy`/`.black` and apply `.monospacedDigit()` on all scores/clocks.
70
+
71
+ ### Hierarchy
72
+
73
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
74
+ |------|------|------|--------|-------------|----------------|-------|
75
+ | Screen Title | Archivo | 32pt | 900 | 1.1 | -0.5pt | "Scores", "Watch" large nav titles |
76
+ | Headline | Archivo | 26pt | 900 | 1.15 | -0.3pt | Lead-story headline |
77
+ | Section Header | Archivo | 22pt | 800 | 1.2 | -0.2pt | "Top Headlines", "Today's Games" |
78
+ | Team Name | Archivo | 18pt | 700 | 1.2 | 0pt | "Los Angeles Lakers" on the game card |
79
+ | Body | Archivo | 16pt | 400 | 1.5 | 0pt | Article body, game summary |
80
+ | Story Title | Archivo | 15pt | 700 | 1.3 | 0pt | Feed story headline (compact) |
81
+ | Score (large) | Archivo | 26pt | 900 | 1.0 | 0pt | Game-card team score — **tabular** |
82
+ | Score (ticker) | Archivo | 13pt | 700 | 1.0 | 0pt | Ticker team score — **tabular** |
83
+ | Meta Line | Archivo | 14pt | 400 | 1.4 | 0pt | "NBA · 14m ago · 3 min read" |
84
+ | Team Record | Archivo | 12pt | 400 | 1.3 | 0pt | "48–34 · Home" |
85
+ | Button Label | Archivo | 16pt | 800 | 1.0 | 0.3pt | "Watch Live", "Follow Team" |
86
+ | Status Badge | Archivo | 11pt | 900 | 1.0 | 0.5pt | LIVE / FINAL / 7:05 ET (uppercase) |
87
+ | Category Tag | Archivo | 10pt | 900 | 1.0 | 0.5pt | "BREAKING", "ANALYSIS" (uppercase, red) |
88
+ | Tab Label | Archivo | 10pt | 700 | 1.0 | 0.1pt | Bottom-tab labels |
89
+
90
+ ### Principles
91
+ - **Tabular numerals everywhere there's a number**: scores, clocks, records, rankings — non-negotiable for a scoreboard; digits never shift.
92
+ - **Scanning rhythm, not reading rhythm**: enormous 900-weight headlines and scores, tight team names, dense meta — built for a 1-second glance.
93
+ - **Uppercase only for badges, category tags, and league labels** — never for headlines or body.
94
+ - **Body and meta stay 400** — only headlines, team names, scores, and CTAs get weight.
95
+ - **Metadata is secondary gray** (`#9AA0A6`) — league/time/read-length never compete with the headline or score.
96
+ - **Dynamic Type**: headlines, body, meta scale; ticker scores, status badges, tab labels, the pulse dot stay FIXED (the ticker is a fixed-height strip).
97
+
98
+ ## 4. Component Stylings
99
+
100
+ ### Buttons
101
+
102
+ **Primary Button ("Watch Live")**
103
+ - Shape: Rounded rectangle, 6pt corner radius (ESPN runs tighter radii than most — sharp, sporty)
104
+ - Background: `#D50A0A` (ESPN Red)
105
+ - Text + leading play glyph: `#FFFFFF`, Archivo 16pt weight 800, 0.3pt tracking
106
+ - Padding: 14pt vertical, 28pt horizontal (or full-width on detail screens)
107
+ - Pressed: background `#A50808` + scale 0.98
108
+ - Disabled: background `#212327`, text `#6B7075`
109
+
110
+ **Secondary / Outline Button ("Follow Team")**
111
+ - Background: transparent
112
+ - Border: 1.5pt `rgba(255,255,255,0.35)`
113
+ - Text: `#FFFFFF`, Archivo 14pt weight 700
114
+ - Padding: 12pt vertical, 20pt horizontal
115
+ - Corner radius: 6pt
116
+ - Pressed: background `rgba(255,255,255,0.06)`; once following, fills `#D50A0A`
117
+
118
+ **Ghost Button ("Gamecast")**
119
+ - Background: `#212327`
120
+ - Text: `#FFFFFF`, Archivo 14pt weight 700
121
+ - Corner radius: 6pt
122
+ - Padding: 12pt vertical, 20pt horizontal
123
+
124
+ **Text Button ("Full box score")**
125
+ - Background: none
126
+ - Text: `#CC0000` (Red Bright), Archivo 14pt weight 800
127
+ - No underline
128
+ - Pressed: opacity 0.6
129
+
130
+ ### Game Card (the core atom)
131
+
132
+ The single most important ESPN component — a glanceable summary of one game.
133
+
134
+ - Container: `#18191B`, 12pt corner radius, 1pt `#2A2C30` border
135
+ - **Header**: `#212327` strip, league/series label (Archivo 11pt weight 800 `#9AA0A6`, uppercase, 0.5pt tracking) on the left; status on the right — LIVE pill (`#FF1A1A` + pulsing dot) / "FINAL" (gray) / start time
136
+ - **Team row** (×2): team logo (30pt circle) + name (Archivo 18pt weight 700 `#FFFFFF`) + record (Archivo 12pt weight 400 `#9AA0A6`) on the left; big score (Archivo 26pt weight 900, **tabular**) on the right
137
+ - Live/leading or winning team: score `#FFFFFF` (or `#1FAA59` if the game is final and they won)
138
+ - Trailing/losing team: score `#9AA0A6` (dimmed)
139
+ - 1pt `#2A2C30` divider between the two team rows
140
+ - **Footer**: `#0E0F11`-toned strip, top 1pt divider — live clock (Archivo 13pt weight 700 `#FFFFFF`, e.g. "Q3 · 4:12") on the left; "Watch on ESPN+" link (Archivo 12pt weight 800 `#CC0000` + play glyph) on the right
141
+ - Pressed: scale 0.98, 150ms ease-out → pushes the game detail screen
142
+
143
+ ### Scores Ticker (signature component)
144
+
145
+ - A horizontally scrolling strip pinned near the top, ~fixed height, 1pt `#2A2C30` bottom border
146
+ - Each chip: `#212327`, 8pt corner radius, ~116pt wide, 8–10pt padding
147
+ - Chip header: league (Archivo 10pt weight 800 `#9AA0A6`) + status (LIVE `#FF1A1A` pill / "FINAL" gray / start time)
148
+ - Two team lines: abbreviation + 16pt logo dot on the left, score (Archivo 13pt weight 700, **tabular**) on the right
149
+ - Winning/leading team line `#FFFFFF`; other line `#9AA0A6`
150
+ - Tapping a chip opens the game detail screen
151
+ - Horizontal scroll only; never wraps — the ticker is a one-line glance
152
+
153
+ ### SportsCenter Story Row
154
+
155
+ - Container: full width, 14pt vertical padding, 1pt `#2A2C30` bottom divider
156
+ - Thumbnail: 96×72pt, 8pt corner radius (image or sport-tinted placeholder)
157
+ - Category tag: Archivo 10pt weight 900 uppercase `#CC0000`, 0.5pt tracking — "BREAKING" / "ANALYSIS" / "HIGHLIGHT"
158
+ - Title: Archivo 15pt weight 700 `#FFFFFF`, 4pt below tag, 2-line clamp
159
+ - Meta: Archivo 12pt weight 400 `#9AA0A6`, 6pt below title — "NBA · 14m ago · 3 min read"
160
+ - 12pt gap between thumbnail and text column
161
+
162
+ ### Navigation
163
+
164
+ **Bottom Tab Bar**
165
+ - Height: 50pt + safe area (≈64pt total)
166
+ - Background: `rgba(14,15,17,0.96)` with `backdrop-filter: blur(20px) saturate(180%)`, 0.5pt top border `#2A2C30`
167
+ - Tabs (5): Home, Scores, Watch, ESPN BET, More
168
+ - Icon size: 22pt
169
+ - Active: glyph + label `#FFFFFF`, plus a small `#D50A0A` indicator dot below the label
170
+ - Inactive: glyph + label `#6B7075`
171
+ - Labels: Archivo 10pt weight 700, always shown
172
+ - The red dot (not a tint pill) is the active marker — ESPN keeps the icon white and uses red only as the indicator
173
+
174
+ **Top Bar (Home / feed)**
175
+ - Height: 44pt + safe area
176
+ - Background: `#0E0F11`
177
+ - Leading: ESPN red logo block
178
+ - Trailing: search glyph + alerts bell, 22pt, `#FFFFFF`
179
+ - The scores ticker sits directly beneath the top bar (pinned above the scrolling feed)
180
+
181
+ **Top Bar (game detail)**
182
+ - Compact: back chevron + matchup label + share + alert-toggle
183
+ - Below: the big score header (team logos, names, big tabular scores, live clock) then a tabbed control (Gamecast / Box Score / Plays / News)
184
+
185
+ ### Input Fields
186
+
187
+ **Search Field**
188
+ - Height: 44pt
189
+ - Background: `#212327`
190
+ - Corner radius: 6pt
191
+ - Leading icon: magnifier 16pt `#9AA0A6`
192
+ - Placeholder: "Search teams, players, news" Archivo 15pt weight 400 `#6B7075`
193
+ - Text: `#FFFFFF`
194
+ - Focus: 1.5pt `#D50A0A` border
195
+
196
+ **Tabbed Control (game detail: Gamecast / Box Score / Plays / News)**
197
+ - A row of items, Archivo 14pt weight 800 — `#9AA0A6` inactive, `#FFFFFF` active
198
+ - Active indicator: 3pt `#D50A0A` underline beneath the active item, slides 200ms ease-out
199
+ - Sits above a 1pt `#2A2C30` divider
200
+
201
+ ### Distinctive Components
202
+
203
+ **Live Status Badge**
204
+ - Pill, `#FF1A1A` fill, Archivo 11pt weight 900 uppercase `#FFFFFF`, 0.5pt tracking, 4×9pt padding, 3pt radius
205
+ - Leading 6pt white pulsing dot (opacity 1 → 0.4 → 1 over ~1.2s)
206
+ - Variants: **LIVE** (+ period, e.g. "LIVE Q3"), **FINAL** (`#2B2D31` fill, `#9AA0A6` text, no dot), **start time** (transparent + 1pt `rgba(255,255,255,0.4)` outline, white text)
207
+
208
+ **Winning-Score Treatment**
209
+ - On a finished game, the winning team's score is `#1FAA59` (Win Green); the losing team's score is `#9AA0A6`
210
+ - The single most ESPN-specific data treatment — a result is legible without reading any text
211
+
212
+ **Scores Ticker Chip**
213
+ - See Scores Ticker above — the compact, fixed-height, horizontally scrolling game summary
214
+
215
+ **Category Tag**
216
+ - Inline, no background, Archivo 10pt weight 900 uppercase `#CC0000`, 0.5pt tracking — "BREAKING" / "ANALYSIS" / "HIGHLIGHT" / "INSIDER"
217
+
218
+ **Pulsing Live Dot**
219
+ - A 6–7pt filled circle (`#FF1A1A` standalone, `#FFFFFF` inside a LIVE pill) animating opacity 1 → 0.4 → 1 over ~1.2s ease-in-out, infinitely — the universal "this is happening now" cue
220
+
221
+ **Rank Numeral**
222
+ - Top-25 / seeding numbers in `#F2C200` (Rank Gold), tabular, e.g. "#3" before a team name in college contexts
223
+
224
+ ## 5. Layout Principles
225
+
226
+ ### Spacing System
227
+ - Base unit: 4pt
228
+ - Scale: 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 64
229
+ - Screen horizontal inset: 16pt (tighter than most — ESPN is dense)
230
+ - Ticker chip gap: 8pt
231
+ - Card / story vertical gap: 16pt
232
+
233
+ ### Grid & Container
234
+ - iPhone: 16pt horizontal insets; the scores ticker is full-bleed horizontal scroll
235
+ - Feed: single-column list of game cards + story rows at 16pt insets
236
+ - Ticker: fixed-height horizontal scroll, chips ~116pt wide, 8pt gap, first chip flush to 12pt
237
+ - iPad: 2-column feed (cards + stories) at wider insets; game detail uses a 2-pane (score header + tabs)
238
+
239
+ ### Whitespace Philosophy
240
+ - **Information density is the feature**: ESPN intentionally packs more per screen than a typical app — fans want maximum signal per glance
241
+ - **Near-black as separator**: the `#0E0F11` ground separates `#212327` chips and `#18191B` cards without heavy borders
242
+ - **Tabular alignment is sacred**: scores and clocks line up in columns across every card and ticker chip
243
+ - **Single-accent restraint**: red appears in ≤4 roles per screen (logo, CTA, active-tab dot, tags) — discipline keeps it meaningful; live red and win green are *status*, not accents
244
+
245
+ ### Border Radius Scale
246
+ - Square (0pt): Dividers, full-bleed strips
247
+ - Tight (3pt): Status badges, category chips
248
+ - Standard (6pt): Buttons, search field, tabbed underline geometry
249
+ - Card (8pt): Ticker chips, story thumbnails
250
+ - Comfortable (12pt): Game cards, bottom sheets
251
+ - Large (16pt): Modals
252
+ - Pill (500pt): Live/status pills, filter chips
253
+ - Circle (50%): Team logos, avatars, the pulse dot
254
+
255
+ ## 6. Depth & Elevation
256
+
257
+ ESPN is mostly flat — depth comes from surface-color steps and the live pulse, not heavy shadows.
258
+
259
+ | Level | Treatment | Use |
260
+ |-------|-----------|-----|
261
+ | Flat (Level 0) | No shadow | Feed background, story rows on the near-black canvas |
262
+ | Surface Step (Level 1) | Background lift `#0E0F11` → `#18191B` → `#212327` (no shadow) | Game cards, ticker chips, card headers |
263
+ | Pinned Ticker (Level 1.5) | 1pt `#2A2C30` bottom border, no shadow | The scores ticker pinned above the feed |
264
+ | Floating (Level 2) | `0 4px 16px rgba(0,0,0,0.5)` | Alert banners, popovers, the now-playing mini bar |
265
+ | Sheet (Level 3) | `0 -6px 28px rgba(0,0,0,0.6)` | Action sheets, share sheet, league filter |
266
+ | Modal Overlay | `rgba(0,0,0,0.6)` | Dim behind sheets and modals |
267
+
268
+ **Shadow Philosophy**: ESPN uses surface-color steps for structure (a game card is one step up from the canvas, its header another step) and reserves shadows for genuinely floating UI (alert banners, sheets, the persistent watch mini-bar). The *live pulse* is ESPN's signature "depth" — motion, not elevation, draws the eye to what's happening now.
269
+
270
+ ### Motion
271
+ - **Live pulse**: the LIVE dot animates opacity 1 → 0.4 → 1 over ~1.2s ease-in-out, infinitely, on every in-progress game
272
+ - **Score update**: when a score changes, the new number cross-fades + does a subtle 1.06 scale pop over 200ms (the scoreboard "tick")
273
+ - **Ticker auto-advance (optional)**: on the feed, a subtle nudge can scroll the ticker to surface the next live game; manual horizontal scroll always overrides
274
+ - **Tabbed underline**: the red underline slides to the tapped tab over 200ms ease-out
275
+ - **Card press**: scale 0.98 in 150ms ease-out → pushes the game detail
276
+ - **Tab switch**: instant content swap; the red active-dot cross-fades in over 120ms
277
+ - **Pull to refresh**: a red spinner; refetches the ticker + feed
278
+ - **Status transition**: when a game ends, the LIVE pill cross-fades to "FINAL" (~250ms) and the winner's score animates color → green over 300ms
279
+ - **Breaking alert**: a top banner slides down 250ms with a brief red pulse, auto-dismisses or is swiped away
280
+ - **Haptic feedback**: light impact on Follow toggle, tab change, and pull-to-refresh; medium impact on a tracked team's score change (the "your team scored" buzz)
281
+
282
+ ## 7. Do's and Don'ts
283
+
284
+ ### Do
285
+ - Use near-black (`#0E0F11`) as the canvas — NOT pure black; cards and the ticker must lift off it
286
+ - Pin a horizontal scores ticker near the top — it's the fastest path to "what's the score"
287
+ - Use ESPN Red (`#D50A0A` / bright `#CC0000`) as the only brand accent — logo, CTA, active-tab dot, tags
288
+ - Use a hotter red (`#FF1A1A`) + a pulsing dot for LIVE games; dim finals to gray
289
+ - Turn the winning team's score green (`#1FAA59`) on finished games — a result readable at a glance
290
+ - Use tabular numerals on every score, clock, record, and ranking — columns must align
291
+ - Build the game card with league header + two team rows (logo/name/record/score) + clock & ESPN+ footer
292
+ - Use Archivo (or SF Pro `.black`) at heavy weights for headlines, scores, and badges
293
+ - Mark the active tab with a small red dot — keep the icon white
294
+ - Keep the layout dense and information-first — fans want maximum signal per glance
295
+
296
+ ### Don't
297
+ - Don't use pure black (`#000000`) — ESPN's ground is near-black so cards have contrast
298
+ - Don't introduce a second brand accent — red is it; live red and win green are *status*, not accents
299
+ - Don't use proportional numerals for scores — digits will shift and the scoreboard breaks
300
+ - Don't hide or bury the scores ticker — it is the product's spine
301
+ - Don't use a tint pill for the active tab — ESPN uses a red dot under a white icon
302
+ - Don't let metadata (league/time/read-length) use white — it's secondary gray `#9AA0A6`
303
+ - Don't drop the live pulse — motion is how ESPN says "this is happening now"
304
+ - Don't use heavy drop-shadows for structure — use surface-color steps; reserve shadow for floating UI
305
+ - Don't dim the winning score — winners are white or green, never gray
306
+ - Don't over-space the layout — ESPN's density is intentional; airy layouts feel un-ESPN
307
+ - Don't animate aggressively elsewhere — only the pulse and the score-pop are lively; the rest is calm
308
+
309
+ ## 8. Responsive Behavior
310
+
311
+ ### Device Sizes
312
+ | Device | Width | Key Changes |
313
+ |--------|-------|-------------|
314
+ | iPhone SE (3rd gen) | 375pt | Ticker chips ≈ 110pt; single-column feed; tab labels stay |
315
+ | iPhone 13/14/15 | 390pt | Standard layout; ticker chips ≈ 116pt |
316
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated by the top bar; ticker sits below it |
317
+ | iPhone 15/16 Pro Max | 430pt | Ticker chips ≈ 124pt; larger game cards |
318
+ | iPad (portrait) | 768pt | 2-column feed; game detail = score header + tabbed pane |
319
+ | iPad (landscape) | 1024pt+ | 2–3 column feed; persistent ticker; multi-pane game detail |
320
+
321
+ ### Dynamic Type
322
+ - Scales: headlines, section headers, body, story titles, meta
323
+ - Fixed: ticker scores + chips, status badges, tab labels, the pulse dot, the game-card score size (the card is a fixed-rhythm scoreboard)
324
+ - Long headlines wrap to 2 lines; story titles clamp to 2 lines
325
+
326
+ ### Orientation
327
+ - Portrait-primary for the feed; the video player (Watch / ESPN+) is landscape full-screen
328
+ - iPad supports landscape with a wider multi-column feed and a persistent ticker
329
+
330
+ ### Touch Targets
331
+ - Primary CTA: 48pt+ tall
332
+ - Tab icons: 22pt glyph, 49pt+ hit area
333
+ - Ticker chip: full-chip tap, ≥56pt tall
334
+ - Game card: full-card tap, ≥120pt tall
335
+ - Story row: full-row tap, ≥72pt tall
336
+
337
+ ### Safe Area Handling
338
+ - Top: top bar + pinned ticker respect the safe area and the Dynamic Island
339
+ - Bottom: bottom tab bar + home indicator respected; the persistent watch mini-bar (if playing) sits above the tab bar
340
+ - The ticker is pinned (not under the status bar) — it stays glanceable while the feed scrolls beneath it
341
+ - Sides: 16pt content inset; the ticker is full-bleed horizontal scroll
342
+
343
+ ## 9. Agent Prompt Guide
344
+
345
+ ### Quick Color Reference
346
+ - Canvas: `#0E0F11` (near-black — NOT pure black)
347
+ - Surface 1 (card body): `#18191B`
348
+ - Surface 2 (ticker chip / header): `#212327`
349
+ - Surface 3 (pressed / FINAL): `#2B2D31`
350
+ - Divider: `#2A2C30`
351
+ - Text primary: `#FFFFFF`
352
+ - Text secondary: `#9AA0A6`
353
+ - Text tertiary: `#6B7075`
354
+ - ESPN Red (brand accent): `#D50A0A`
355
+ - Red Bright (CTA / links / tags): `#CC0000`
356
+ - Live Red (LIVE pill + pulse): `#FF1A1A`
357
+ - Win Green (winning score): `#1FAA59`
358
+ - Rank Gold: `#F2C200`
359
+ - Error: `#E5484D`
360
+
361
+ ### Example Component Prompts
362
+ - "Build the ESPN game card in SwiftUI: a `#18191B` container, 12pt corner radius, 1pt `#2A2C30` border. Header: a `#212327` strip with 'NBA · WESTERN FINALS · GAME 5' in Archivo 11pt weight 800 `#9AA0A6` uppercase on the left, and a LIVE pill on the right (`#FF1A1A` fill, white 6pt pulsing dot, 'LIVE' in Archivo 11pt weight 900 white, 3pt radius). Two team rows: 30pt logo + name (Archivo 18pt weight 700 `#FFFFFF`) + record (Archivo 12pt weight 400 `#9AA0A6`) on the left, big score (Archivo 26pt weight 900, monospacedDigit) on the right — leading team white, trailing team `#9AA0A6`. 1pt `#2A2C30` divider between rows. Footer: top 1pt divider, 'Q3 · 4:12' in Archivo 13pt weight 700 `#FFFFFF` left, 'Watch on ESPN+' in Archivo 12pt weight 800 `#CC0000` + play glyph right."
363
+
364
+ - "Create the ESPN scores ticker: a horizontally scrolling `ScrollView`, fixed height, 1pt `#2A2C30` bottom border. Each chip: `#212327`, 8pt radius, ~116pt wide, 8pt padding. Chip header: league in Archivo 10pt weight 800 `#9AA0A6` + a status pill (LIVE `#FF1A1A` / 'FINAL' gray / start time). Two lines: 'LAL' + 16pt logo dot + score (Archivo 13pt weight 700, monospacedDigit) — winning line `#FFFFFF`, other `#9AA0A6`. Tapping a chip pushes the game detail."
365
+
366
+ - "Render the ESPN winning-score treatment: on a finished game, the winning team's score is `#1FAA59` (Win Green) and the losing team's score is `#9AA0A6`. Both use Archivo 26pt weight 900 with `.monospacedDigit()` so the columns align."
367
+
368
+ - "Build the ESPN primary CTA: a 6pt-corner-radius button, background `#D50A0A`, a 16pt white play triangle + 'Watch Live' in Archivo 16pt weight 800 `#FFFFFF` with 0.3pt tracking, 8pt gap. 14pt vertical / 28pt horizontal padding. Pressed: background `#A50808` + scale 0.98."
369
+
370
+ - "Create the ESPN live status badge: a 3pt-radius pill, `#FF1A1A` fill, a 6pt white dot that pulses opacity 1 → 0.4 → 1 over 1.2s infinitely, then 'LIVE Q3' in Archivo 11pt weight 900 uppercase `#FFFFFF`, 0.5pt tracking, 4×9pt padding. The FINAL variant: `#2B2D31` fill, `#9AA0A6` text, no dot. The upcoming variant: transparent + 1pt `rgba(255,255,255,0.4)` border, white text."
371
+
372
+ - "Create the ESPN bottom tab bar: 50pt + safe area, background `rgba(14,15,17,0.96)` with blur(20px) saturate(180%), 0.5pt top border `#2A2C30`. Five tabs — Home, Scores, Watch, ESPN BET, More — 22pt glyphs with Archivo 10pt weight 700 labels always shown. Active: white glyph + white label + a 4pt `#D50A0A` dot below the label. Inactive: `#6B7075` glyph + label. No tint pill — the red dot is the marker."
373
+
374
+ ### Iteration Guide
375
+ 1. Canvas is near-black `#0E0F11` — NOT pure black; the ticker and cards must lift off it
376
+ 2. ESPN Red `#D50A0A` (bright `#CC0000`) is the only brand accent — logo, CTA, active-tab dot, tags
377
+ 3. LIVE games use a hotter red `#FF1A1A` + a pulsing dot; finals dim to gray — status, not accent
378
+ 4. The winning team's score turns green `#1FAA59` on finished games — a result readable at a glance
379
+ 5. Every score / clock / record / ranking uses tabular numerals — columns must align
380
+ 6. The horizontal scores ticker is pinned near the top — it's the product's spine, never buried
381
+ 7. The game card is the core atom: league header + two team rows (logo/name/record/score) + clock & ESPN+ footer
382
+ 8. Archivo (or SF Pro `.black`) at heavy weights for headlines, scores, and badges — built for scanning
383
+ 9. The active tab is marked by a small red dot under a white icon — never a tint pill
384
+ 10. Density is the feature — ESPN packs maximum signal per glance; airy layouts feel un-ESPN