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,383 @@
1
+ # Design System Inspiration of Tubi (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Tubi's iOS app is built around a single, unmistakable idea: **free movies and TV, paid for by ads, presented like a premium streamer**. The canvas is a deep indigo-black (`#0A0A2A`) — not the neutral near-black of Netflix or the warm charcoal of Apple TV, but a cool, slightly violet darkness that exists specifically so Tubi's signature **purple→magenta gradient (`#7408FF` → `#FF00FF`)** can glow against it. That gradient is the entire brand. It runs through the lowercase `tubi` wordmark, the focus and selection states, the active bottom-tab icon, continue-watching progress bars, and the secondary CTAs. Where most streaming apps pick one accent color, Tubi picks a *spectrum*, and the whole UI is engineered to make that spectrum sing.
6
+
7
+ The signature screen is the **Home feed**: a near-full-width featured hero at the top (a single big title with a gradient/photo backdrop, a "Tubi Original" or genre badge, title, metadata line, and a white **Play Free** button), followed by a vertical stack of **horizontally-scrolling poster rows** — "Continue Watching", "Trending Now", "Free Movies You'll Love", "Leaving Soon", genre rails, and so on. Posters are tall 2:3 cards, densely packed (3.4 visible per row on a 390pt screen), each carrying a small yellow **"FREE"** tag in the corner. This density is deliberate: Tubi's entire pitch is *catalog breadth at zero cost*, so the UI shows as many titles as possible per screen. The other signature surface is the **Title Detail** page — a full-bleed backdrop, a giant title, a prominent white Play button, "+ My List", a synopsis, cast, and "More Like This" rails — and the **Live TV guide**, an EPG-style channel grid for Tubi's free linear channels.
8
+
9
+ The atmosphere is **energetic, youthful, and unapologetically commercial**. Tubi leans into the fact that it's ad-supported rather than hiding it: the yellow "FREE" badge is a *feature*, not an apology. Motion is punchy — posters scale slightly on focus, the hero cross-dissolves between featured titles, and the gradient shimmers subtly behind the wordmark on launch. Typography is a tight geometric grotesque (Inter is the closest free analog to Tubi's custom face): heavy weights (800–900) for titles, clean 400 body, all-caps tracked labels for badges. The result reads like a neon-lit movie marquee rebuilt for a phone — bold, saturated, and proudly free.
10
+
11
+ **Key Characteristics:**
12
+ - Deep indigo-black canvas (`#0A0A2A`) — cool and slightly violet so the gradient glows; dark-only, no light mode
13
+ - Signature purple→magenta gradient (`#7408FF` → `#FF00FF`) — the brand, used on wordmark, focus, active tab, progress, secondary CTAs
14
+ - Oversized featured hero at top of Home — single title, badge, white "Play Free" button
15
+ - Dense horizontal poster rows — tall 2:3 cards, 3+ visible per row, packed for catalog-breadth feel
16
+ - Yellow `#FFD400` "FREE" tag on every poster — Tubi's promise stated as a UI feature
17
+ - White (`#FFFFFF`) primary Play button — maximum contrast against the cool dark field
18
+ - "Tubi Original" badges in gradient — signals exclusive content
19
+ - Continue-watching progress bars in gradient under each in-progress poster
20
+ - Live TV EPG guide — channel grid for Tubi's free linear channels
21
+ - Bottom tab bar: Home / Search / Live TV / My List / Account — active icon in magenta
22
+ - All-caps tracked micro-labels (badges, tags) in heavy weight; titles 800–900
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary (Brand Gradient & Interactive)
27
+ - **Tubi Purple** (`#7408FF`): Gradient start — wordmark, focus rings, active states, progress fill start.
28
+ - **Tubi Magenta** (`#FF00FF`): Gradient end — wordmark, active tab icon, progress fill end.
29
+ - **Tubi Violet** (`#A12BFF`): Mid-gradient stop / solid violet for single-color uses (chips, links on light press).
30
+ - **Tubi Pink** (`#FF4FD8`): Tappable text links, "More Like This", inline actions.
31
+ - **Play White** (`#FFFFFF`): Primary Play / Play Free button background — the highest-priority CTA.
32
+ - **Play White Pressed** (`#E6E6F2`): Pressed state of the white play button.
33
+
34
+ ### Canvas & Surfaces (Dark — the only mode)
35
+ - **Canvas Indigo-Black** (`#0A0A2A`): Primary app background.
36
+ - **Surface 1** (`#15153D`): Cards, sheets, the title-detail panel, settings rows.
37
+ - **Surface 2** (`#1E1E52`): Elevated surfaces, pressed rows, search field, chips.
38
+ - **Surface 3** (`#262666`): Highest elevation — modals, popovers, focused poster lift.
39
+ - **Divider** (`#2A2A5C`): Hairline separators between sections and list rows.
40
+ - **Overlay Scrim** (`rgba(10,10,42,0.95)`): Bottom gradient over the hero backdrop for text legibility.
41
+
42
+ ### Text
43
+ - **Text Primary** (`#FFFFFF`): Titles, body, primary content.
44
+ - **Text Secondary** (`#B9B9D6`): Metadata lines, synopsis, secondary labels — a cool lavender-grey.
45
+ - **Text Tertiary** (`#7A7AA0`): Disabled, timestamps, very low-emphasis captions.
46
+ - **Text On-White** (`#0A0A2A`): Text on the white Play button (the indigo-black canvas color).
47
+
48
+ ### Semantic & Accent
49
+ - **Free Tag Yellow** (`#FFD400`): The "FREE" badge on posters and the hero — Tubi's signature warm accent. Text on it is `#1A0A2A`.
50
+ - **Success Green** (`#1FD17B`): "Added to My List" confirmation, download-complete.
51
+ - **Error Red** (`#FF4A6E`): Playback errors, failed sign-in, destructive confirms.
52
+ - **Live Red** (`#FF3B5C`): "LIVE" indicator dot on Live TV channels.
53
+ - **Rating Amber** (`#FFB020`): Star ratings / IMDb-style score chips.
54
+
55
+ ### Gradient Tokens
56
+ | Token | Definition | Use |
57
+ |-------|-----------|-----|
58
+ | `gradient/brand` | `linear-gradient(135deg, #7408FF 0%, #FF00FF 100%)` | Wordmark, secondary CTA, active tab, "Tubi Original" badge |
59
+ | `gradient/progress` | `linear-gradient(90deg, #7408FF 0%, #FF00FF 100%)` | Continue-watching progress fill |
60
+ | `gradient/focus` | `linear-gradient(135deg, #7408FF, #FF00FF)` as 2pt ring | Focused / selected poster outline |
61
+ | `gradient/hero-scrim` | `linear-gradient(180deg, transparent 40%, rgba(10,10,42,0.95) 100%)` | Bottom fade on hero & detail backdrops |
62
+
63
+ ### Note on Theme
64
+ Tubi ships **dark-only**. There is no light mode toggle; the indigo-black canvas is the brand environment. Do not invent a light palette — if a light surface is ever needed (e.g., a system share sheet), defer to the OS, not a Tubi-themed light scheme.
65
+
66
+ ## 3. Typography Rules
67
+
68
+ ### Font Family
69
+ - **Primary**: `Inter` (by Rasmus Andersson, SIL OFL) — the closest free analog to Tubi's custom geometric grotesque. Tubi's brand face is a tight, slightly condensed sans with heavy display weights; Inter at weights 800–900 reproduces the marquee feel.
70
+ - **Display Alternative**: `Archivo` or `Archivo Black` (Google Fonts, SIL OFL) — for extra-punchy hero titles if a more condensed display face is wanted.
71
+ - **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
72
+ - **Numerals**: Tabular figures for runtime/metadata (`1h 52m`), proportional elsewhere.
73
+
74
+ ### Hierarchy
75
+
76
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
77
+ |------|------|------|--------|-------------|----------------|-------|
78
+ | Hero Title | Inter | 32pt | 900 | 1.0 | -0.6pt | Featured title on Home hero — heaviest weight |
79
+ | Detail Title | Inter | 28pt | 800 | 1.05 | -0.5pt | Title on the Title Detail page |
80
+ | Row Header | Inter | 22pt | 800 | 1.1 | -0.3pt | "Trending Now", "Continue Watching" rail headers |
81
+ | Section Title | Inter | 18pt | 700 | 1.2 | -0.2pt | Sub-section headers, settings group titles |
82
+ | Body | Inter | 16pt | 400 | 1.5 | 0pt | Synopsis, descriptions, body copy |
83
+ | Card Title | Inter | 15pt | 600 | 1.15 | 0pt | Poster captions, list-row titles |
84
+ | Button Label | Inter | 15pt | 800 | 1.0 | 0pt | Play / Register / CTA text |
85
+ | Meta | Inter | 13pt | 500 | 1.3 | 0pt | "2024 · Thriller · 1h 52m · TV-MA" |
86
+ | Caption | Inter | 12pt | 500 | 1.3 | 0pt | Timestamps, fine print, episode counts |
87
+ | Badge / Tag | Inter | 11pt | 700 | 1.0 | 0.4pt | "TUBI ORIGINAL", "FREE", "NEW" — ALL CAPS |
88
+ | Tab Label | Inter | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
89
+
90
+ ### Principles
91
+ - **Weight is the brand**: Tubi titles are *heavy* (800–900). The contrast between a 900 hero title and 400 body is the primary hierarchy signal — never set titles below 700.
92
+ - **ALL CAPS for badges only**: Genre/Original/FREE badges and tags are uppercase with positive tracking (`+0.4pt`). Body and titles are sentence case, never tracked positive.
93
+ - **Tight display tracking**: Hero and detail titles use negative letter-spacing (-0.5 to -0.6pt) for a dense, condensed marquee look.
94
+ - **Cool lavender secondary**: Metadata uses `#B9B9D6` (a cool lavender-grey), not neutral grey — it harmonizes with the indigo canvas.
95
+ - **Tabular numerals for time**: Runtimes, "min left", and clock times use tabular figures so rows don't jitter.
96
+ - **Dynamic Type**: Titles, body, synopsis scale; badge text, tab labels, and progress labels stay fixed (layout-sensitive).
97
+
98
+ ## 4. Component Stylings
99
+
100
+ ### Buttons
101
+
102
+ **Primary Button (Play / Play Free)**
103
+ - Shape: Rounded rectangle, 8pt corner radius
104
+ - Background: `#FFFFFF` (Play White) — the single highest-contrast CTA
105
+ - Text + leading play glyph: `#0A0A2A` (canvas indigo-black), Inter 15pt weight 800
106
+ - Height: 48pt; padding 14pt vertical, 30pt horizontal; leading SF play.fill 13pt
107
+ - Pressed: background `#E6E6F2` + scale 0.98
108
+ - Full-width variant on Title Detail; inline width on hero
109
+
110
+ **Secondary Button (Register / Sign Up / Upgrade)**
111
+ - Background: `gradient/brand` (`linear-gradient(135deg, #7408FF, #FF00FF)`)
112
+ - Text: `#FFFFFF`, Inter 15pt weight 800
113
+ - Corner radius: 8pt; height 48pt
114
+ - Pressed: `filter: brightness(0.92)` + scale 0.98
115
+
116
+ **Tertiary Button (+ My List / Share / Download)**
117
+ - Background: `rgba(255,255,255,0.10)`
118
+ - Border: 1pt `rgba(255,255,255,0.25)`
119
+ - Text + icon: `#FFFFFF`, Inter 14pt weight 700
120
+ - Corner radius: 8pt; height 44pt; on-detail often icon-over-label stacked (icon 22pt, label 11pt)
121
+ - Pressed: background `rgba(255,255,255,0.18)`
122
+
123
+ **Text Button (More Like This / See All / Cast & Crew)**
124
+ - Font: Inter 14pt weight 700
125
+ - Color: `#FF4FD8` (Tubi Pink)
126
+ - No background, no underline
127
+ - Pressed: opacity 0.7
128
+
129
+ **Icon Button (top bar: download, search, profile)**
130
+ - 24pt glyph in 44pt hit area
131
+ - Default `#FFFFFF`; no background
132
+ - Active/selected tints to magenta `#FF00FF`
133
+
134
+ ### Core Atoms
135
+
136
+ **Poster Card (the core content unit)**
137
+ - Aspect ratio: 2:3 (e.g., 100×150pt on a 390pt screen, ~3.4 visible per row)
138
+ - Corner radius: 10pt
139
+ - Shadow: `0 6px 16px rgba(0,0,0,0.45)`
140
+ - Leading-top **FREE tag**: `#FFD400` bg, `#1A0A2A` text, 8pt, weight 900, 2×5pt padding, 3pt radius
141
+ - Optional bottom caption overlay: title 11pt weight 700 `#FFFFFF` with `text-shadow: 0 1px 4px rgba(0,0,0,0.8)`
142
+ - In-progress variant: 4pt `gradient/progress` bar pinned to the card's bottom edge
143
+ - Focused/selected: 2pt `gradient/focus` ring + scale 1.04 (150ms)
144
+
145
+ **Featured Hero**
146
+ - Height: ~230–300pt (≈ 60% of viewport width tall)
147
+ - Full-bleed backdrop image/gradient, corner radius 18pt (inset 14pt from screen edges) or full-bleed on Detail
148
+ - `gradient/hero-scrim` bottom fade for text legibility
149
+ - Top-left badge: "TUBI ORIGINAL" / genre — `gradient/brand` pill, 9pt weight 800 caps
150
+ - Stacked: title (32pt/900) → meta line (11pt/500 `#B9B9D6`) → button row (white Play Free + circular + add)
151
+ - Auto cross-dissolves between 4–6 featured titles every ~6s (400ms fade)
152
+
153
+ **Row Header**
154
+ - Title 22pt weight 800; optional trailing "See All ›" in `#FF4FD8` 13pt weight 700
155
+ - 16pt horizontal inset, 10pt bottom gap before the poster strip
156
+
157
+ **Free Tag / Badge Chip**
158
+ - "FREE": `#FFD400` fill, `#1A0A2A` text — the signature
159
+ - "TUBI ORIGINAL": `gradient/brand` fill, white text
160
+ - "NEW" / "LEAVING SOON": `#1E1E52` fill, `#FF4FD8` text
161
+ - All: 11pt weight 700 caps, +0.4pt tracking, 3pt radius, 2×6pt padding
162
+
163
+ ### Navigation
164
+
165
+ **Bottom Tab Bar**
166
+ - Height: 56pt + safe-area home indicator
167
+ - Background: `rgba(10,10,42,0.96)` with `backdrop-filter: blur(20px) saturate(180%)`, 0.5pt top border `#2A2A5C`
168
+ - Tabs (5): Home, Search, Live TV, My List, Account
169
+ - Icon size: 22pt; label Inter 10pt weight 600
170
+ - Active: icon + label in `#FF00FF` (magenta), icon filled
171
+ - Inactive: `#7A7AA0`
172
+ - No pill indicator — color + fill change only
173
+
174
+ **Top Bar (Home)**
175
+ - Height: 44pt + safe area
176
+ - Leading: `tubi` gradient wordmark (≈22pt cap height)
177
+ - Trailing: download, search, profile icons (24pt, `#FFFFFF`, 16pt gap)
178
+ - Transparent over hero; gains `#0A0A2A` background after scroll-past-hero
179
+
180
+ **Title Detail Nav**
181
+ - Transparent over backdrop; back chevron top-left (`#FFFFFF`, 24pt, in a 32pt circular `rgba(0,0,0,0.4)` scrim)
182
+ - Trailing: cast / share icons
183
+
184
+ ### Input Fields
185
+
186
+ **Search Bar**
187
+ - Height: 44pt
188
+ - Background: `#1E1E52`
189
+ - Corner radius: 10pt
190
+ - Leading magnifyingglass 16pt `#7A7AA0`
191
+ - Placeholder "Search movies, shows, channels" 14pt `#7A7AA0`
192
+ - Text: `#FFFFFF` 15pt
193
+ - Focus: 1.5pt `#7408FF` border
194
+
195
+ **Search Results Grid**
196
+ - 3-column poster grid, 10pt gutter, 16pt screen inset, FREE tag on each
197
+
198
+ ### Distinctive Components
199
+
200
+ **Live TV EPG Guide**
201
+ - Vertical list of channel rows; each row: leading 56pt channel logo tile (`#15153D` bg, 10pt radius) + channel name (15pt/600) + a horizontally-scrolling timeline of program blocks
202
+ - Program block: `#1E1E52` fill, 10pt radius, 8pt padding, program title 13pt/600 + time range 11pt/500 `#B9B9D6`
203
+ - "On Now" block: `gradient/brand` left border (3pt) + faint gradient wash; leading `#FF3B5C` "LIVE" dot
204
+ - Sticky time-header strip across the top (every 30 min), `#7A7AA0` 11pt
205
+ - Tapping "On Now" → full-screen player; tapping future block → reminder/detail sheet
206
+
207
+ **Continue-Watching Card**
208
+ - Poster with a 4pt `gradient/progress` bar at the bottom edge (width = % watched)
209
+ - Below caption: "41 min left" or "S2:E4" in 12pt `#B9B9D6`
210
+ - Long-press → "Remove from Continue Watching" context sheet
211
+
212
+ **Tubi Original Badge**
213
+ - Pill: `gradient/brand` fill, white "TUBI ORIGINAL" text 9pt weight 800 caps, top-left of hero/poster
214
+
215
+ **Ad Marker (player)**
216
+ - During free playback, a thin `#FFD400` segment-marked scrubber shows ad-break positions
217
+ - "Ad · 0:15" chip top-left during an ad in `rgba(0,0,0,0.6)` with `#FFD400` accent
218
+
219
+ **Genre Rail Pills (browse)**
220
+ - Horizontal scroller of pills: `#1E1E52` bg, `#FFFFFF` 14pt/600, 10pt radius; selected → `gradient/brand` fill
221
+
222
+ ## 5. Layout Principles
223
+
224
+ ### Spacing System
225
+ - Base unit: 4pt
226
+ - Scale: 4, 8, 12, 14, 16, 20, 24, 32, 40, 48, 64
227
+ - Screen horizontal inset: 16pt
228
+ - Poster gutter: 10pt
229
+ - Row vertical rhythm: 16pt between a row's last poster and the next row header
230
+ - Hero inset from screen edges: 14pt (rounded 18pt) on Home; full-bleed on Detail
231
+
232
+ ### Grid & Container
233
+ - iPhone: 16pt insets; poster rows scroll edge-to-edge (first poster aligned to 16pt inset, content bleeds past right edge)
234
+ - Poster row: ~3.4 cards visible at 390pt width
235
+ - Search / browse grid: 3 columns, 10pt gutter
236
+ - iPad: 5–6 column poster grids; hero spans full width with larger 36–40pt title
237
+ - Live TV guide: fixed-width channel-label column (96pt) + horizontally-scrolling program timeline
238
+
239
+ ### Whitespace Philosophy
240
+ - **Density over air**: Tubi intentionally packs the screen — many posters per row, tight 10pt gutters — to communicate catalog breadth ("thousands of free titles"). This is the opposite of a minimalist content app.
241
+ - **Hero breathes, rows pack**: the featured hero gets generous height and a clear scrim; the rows beneath are deliberately dense.
242
+ - **Edge-bleeding rows**: poster strips run off the right edge to signal "there's more, keep scrolling".
243
+ - **Badges never crowd the title**: the FREE tag sits in the poster's top-left corner away from the bottom caption.
244
+
245
+ ### Border Radius Scale
246
+ - Square (0pt): full-bleed hero/backdrop on Detail, dividers
247
+ - Subtle (4pt): progress bars, ad markers, tiny tags
248
+ - Standard (8pt): buttons, search bar
249
+ - Card (10pt): posters, channel tiles, program blocks, genre pills
250
+ - Hero (18pt): inset featured hero on Home
251
+ - Sheet (20pt): bottom sheets, modals (top corners)
252
+ - Pill (500pt): badge chips, filter pills
253
+ - Circle (50%): profile avatars, circular hero add/secondary buttons
254
+
255
+ ## 6. Depth & Elevation
256
+
257
+ Tubi uses **glow and gradient** more than shadow. On the dark indigo canvas, elevation is conveyed by surface lightening (`#15153D` → `#1E1E52` → `#262666`) plus a soft black drop shadow on floating content (posters, sheets). The brand gradient itself acts as a "spotlight" cue on focus.
258
+
259
+ | Level | Treatment | Use |
260
+ |-------|-----------|-----|
261
+ | Flat (Level 0) | No shadow, on `#0A0A2A` | Page background, row headers, body text |
262
+ | Raised (Level 1) | Surface `#15153D`, `0 6px 16px rgba(0,0,0,0.45)` | Poster cards, channel tiles, list rows |
263
+ | Floating (Level 2) | Surface `#1E1E52`, `0 12px 28px rgba(0,0,0,0.55)` | Context menus, dropdowns, focused poster lift |
264
+ | Sheet (Level 3) | Surface `#15153D`, `0 -10px 40px rgba(0,0,0,0.6)` | Bottom sheets (My List actions, episode picker) |
265
+ | Modal Overlay | Scrim `rgba(5,5,16,0.7)` | Dim behind modals and sheets |
266
+ | Focus Glow | 2pt `gradient/focus` ring + scale 1.04 | Selected poster / focused interactive element |
267
+
268
+ **Shadow Philosophy**: Shadows are deep (0.45–0.6 opacity) so they register against the dark canvas, but they're never the brand statement — the *gradient glow* is. A focused poster doesn't just shadow; it gains a purple→magenta ring and scales up, as if lit by the brand.
269
+
270
+ ### Motion
271
+ - **Hero cross-dissolve**: featured titles auto-rotate every ~6s with a 400ms opacity cross-fade; backdrop ken-burns drift (very slow scale 1.0→1.05 over the dwell)
272
+ - **Poster focus/press**: scale 1.0 → 1.04 over 150ms ease-out + gradient ring fades in; release reverses in 120ms
273
+ - **Row scroll**: native momentum horizontal scroll; deceleration standard iOS
274
+ - **Wordmark shimmer**: on app launch / Home appear, a subtle highlight sweeps across the `tubi` gradient wordmark over 800ms (once)
275
+ - **Play transition**: tapping Play scales the poster/hero up and cross-fades into the player over 350ms; player chrome fades out after 3s idle
276
+ - **Tab switch**: instant content swap; active icon morphs color to magenta + a 200ms fill animation
277
+ - **Bottom sheet**: slides up 300ms ease-out, dims background to `rgba(5,5,16,0.7)`; dismiss drag 1:1, threshold 40%
278
+ - **Add to My List**: + icon morphs to ✓ with a 250ms spring + brief `#1FD17B` flash + soft haptic
279
+ - **Progress bar**: continue-watching fill animates from 0 → current % over 500ms on first appear
280
+ - **Haptics**: soft impact on Play, add-to-list confirm, and tab switch; selection tick on focus change in Live TV guide
281
+
282
+ ## 7. Do's and Don'ts
283
+
284
+ ### Do
285
+ - Use the deep indigo-black canvas (`#0A0A2A`) — cool and slightly violet, NOT neutral black
286
+ - Make the purple→magenta gradient (`#7408FF` → `#FF00FF`) the brand signature — wordmark, focus, active tab, progress, secondary CTA
287
+ - Keep the primary Play button pure white (`#FFFFFF`) with indigo-black text — it must out-contrast everything
288
+ - Put the yellow `#FFD400` "FREE" tag on posters — it's a feature, lean into "free"
289
+ - Pack poster rows densely (3+ visible, 10pt gutters) — catalog breadth is the pitch
290
+ - Use heavy title weights (800–900) with tight negative tracking — marquee feel
291
+ - Bleed poster rows off the right edge — signals "keep scrolling, there's more"
292
+ - Use ALL-CAPS tracked labels for badges/tags only (FREE, TUBI ORIGINAL, NEW)
293
+ - Render the Live TV EPG with sticky time header + gradient-marked "On Now" blocks
294
+ - Give focused posters a gradient ring + 1.04 scale (lit-by-brand)
295
+ - Use cool lavender-grey (`#B9B9D6`) for metadata, not neutral grey
296
+
297
+ ### Don't
298
+ - Don't add a light mode — Tubi is dark-only; defer to OS for system sheets
299
+ - Don't use a neutral or warm dark canvas — the indigo-violet base is what makes the gradient glow
300
+ - Don't replace the gradient with a single flat purple for brand moments — the spectrum *is* the identity
301
+ - Don't hide or shrink the "FREE" tag — it's core messaging, never an apology
302
+ - Don't make poster rows sparse/airy — density communicates the value prop
303
+ - Don't set titles below 700 weight — heavy display weight is the brand
304
+ - Don't tint the primary Play button — it stays white for max contrast
305
+ - Don't use the gradient as body text or large fills behind reading copy — it's for marks, accents, focus
306
+ - Don't add positive tracking to titles/body — only badges are tracked/uppercased
307
+ - Don't use light shadows — they vanish on the dark canvas; go deep (0.45–0.6) or use the gradient glow
308
+ - Don't animate aggressively in content rows — motion is punchy but brief (120–400ms)
309
+
310
+ ## 8. Responsive Behavior
311
+
312
+ ### Device Sizes
313
+ | Device | Width | Key Changes |
314
+ |--------|-------|-------------|
315
+ | iPhone SE (3rd gen) | 375pt | Hero ~210pt tall; ~3.2 posters/row; tab labels stay 10pt |
316
+ | iPhone 13/14/15 | 390pt | Standard layout; hero ~230pt; ~3.4 posters/row |
317
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated; top bar respects it |
318
+ | iPhone 15/16 Pro Max | 430pt | Hero ~260pt; ~3.8 posters/row; larger hero title (34pt) |
319
+ | iPad (portrait) | 768pt | Full-width hero (title 36pt); 5-column poster grids; 2-up rows |
320
+ | iPad (landscape) | 1024pt+ | Cinematic full-width hero (title 40pt); 6-column grids; Live TV guide shows more channels |
321
+
322
+ ### Dynamic Type
323
+ - Hero/detail titles, row headers, body, synopsis: full scale
324
+ - Badge text, tab labels, progress labels, ad-marker chip, EPG time header: FIXED (layout-sensitive)
325
+ - Poster captions: scale to L only, then truncate with ellipsis
326
+
327
+ ### Orientation
328
+ - Phone: portrait-locked for browse; player rotates to landscape (and supports fullscreen landscape)
329
+ - iPad: all orientations; landscape gets the cinematic wide hero
330
+ - Live TV player: landscape fullscreen with overlaid guide drawer
331
+
332
+ ### Touch Targets
333
+ - Poster card: full card tappable (min 100×150pt)
334
+ - Tab bar icons: 22pt glyph, 56pt row height, full-segment tap
335
+ - Play button: 48pt tall
336
+ - Top-bar icons: 24pt glyph, 44pt hit
337
+ - EPG program block: min 44pt tall, full block tappable
338
+
339
+ ### Safe Area Handling
340
+ - Top: top bar + hero respect safe area and Dynamic Island; backdrop bleeds *under* the status bar
341
+ - Bottom: tab bar respects home indicator; player chrome insets controls above it
342
+ - Sides: 16pt content inset; hero backdrop bleeds to screen edges (Detail) or 14pt inset (Home)
343
+ - Player: controls avoid notch in landscape
344
+
345
+ ## 9. Agent Prompt Guide
346
+
347
+ ### Quick Color Reference
348
+ - Canvas (indigo-black): `#0A0A2A`
349
+ - Surface 1 / 2 / 3: `#15153D` / `#1E1E52` / `#262666`
350
+ - Divider: `#2A2A5C`
351
+ - Gradient start (Tubi Purple): `#7408FF`
352
+ - Gradient end (Tubi Magenta): `#FF00FF`
353
+ - Brand gradient: `linear-gradient(135deg, #7408FF, #FF00FF)`
354
+ - Tubi Pink (links): `#FF4FD8`
355
+ - Play button: `#FFFFFF` / text `#0A0A2A`
356
+ - FREE tag: `#FFD400` / text `#1A0A2A`
357
+ - Text primary / secondary / tertiary: `#FFFFFF` / `#B9B9D6` / `#7A7AA0`
358
+ - Success / Error / Live: `#1FD17B` / `#FF4A6E` / `#FF3B5C`
359
+
360
+ ### Example Component Prompts
361
+ - "Build the Tubi Home featured hero in SwiftUI: a 230pt-tall card inset 14pt from screen edges, 18pt corner radius, full-bleed backdrop with a `linear-gradient(180deg, transparent 40%, rgba(10,10,42,0.95) 100%)` scrim. Top-left a 'TUBI ORIGINAL' pill with `linear-gradient(135deg,#7408FF,#FF00FF)` fill, white Inter 9pt weight 800 ALL CAPS +0.4pt tracking. Bottom-left stacked: title Inter 32pt weight 900 white -0.6pt tracking, meta line Inter 11pt weight 500 `#B9B9D6`, then a button row: white 'Play Free' button (48pt tall, 8pt radius, `#0A0A2A` text + leading play.fill) and a 44×38pt circular `rgba(255,255,255,0.16)` '+' button."
362
+
363
+ - "Create a Tubi poster card: 100×150pt (2:3), 10pt corner radius, `0 6px 16px rgba(0,0,0,0.45)` shadow. Top-left a 'FREE' tag — `#FFD400` background, `#1A0A2A` text, Inter 8pt weight 900, 2×5pt padding, 3pt radius. Optional bottom caption: title Inter 11pt weight 700 white with `text-shadow: 0 1px 4px rgba(0,0,0,0.8)`. On focus: 2pt `linear-gradient(135deg,#7408FF,#FF00FF)` ring + scale 1.04 over 150ms."
364
+
365
+ - "Render a Tubi content row: header 'Trending Now' in Inter 22pt weight 800 white -0.3pt tracking at 16pt leading inset, optional trailing 'See All ›' in `#FF4FD8` 13pt weight 700. Below: a horizontal scroll of 2:3 poster cards, 10pt gutter, first card at 16pt inset, content bleeding past the right screen edge. 16pt vertical gap to the next row."
366
+
367
+ - "Build a Tubi continue-watching card: standard poster with a 4pt-tall progress bar pinned to the bottom edge — `linear-gradient(90deg,#7408FF,#FF00FF)` fill at 62% width on a `rgba(255,255,255,0.16)` track. Below the card: '41 min left' in Inter 12pt weight 500 `#B9B9D6`. Animate the fill 0 → 62% over 500ms on first appear."
368
+
369
+ - "Render the Tubi Live TV EPG guide: a vertical list of channel rows. Each row: a 56pt square channel logo tile (`#15153D`, 10pt radius) + channel name Inter 15pt weight 600 white, then a horizontally-scrolling timeline of program blocks. Each block: `#1E1E52` fill, 10pt radius, 8pt padding, title Inter 13pt weight 600 + time range Inter 11pt weight 500 `#B9B9D6`. The 'On Now' block gets a 3pt `linear-gradient(135deg,#7408FF,#FF00FF)` left border, a faint gradient wash, and a leading `#FF3B5C` 'LIVE' dot. Sticky 30-min time header strip on top in `#7A7AA0` 11pt."
370
+
371
+ - "Build the Tubi bottom tab bar: 56pt tall + safe area, `rgba(10,10,42,0.96)` background with `backdrop-filter: blur(20px) saturate(180%)`, 0.5pt top border `#2A2A5C`. Five tabs — Home, Search, Live TV, My List, Account — 22pt icons, Inter 10pt weight 600 labels. Active tab icon + label `#FF00FF` (magenta) with the icon filled; inactive `#7A7AA0`. No pill indicator."
372
+
373
+ ### Iteration Guide
374
+ 1. Canvas is deep indigo-black `#0A0A2A` (cool, slightly violet) — NOT neutral black, NOT charcoal; dark-only
375
+ 2. The purple→magenta gradient (`#7408FF` → `#FF00FF`) is THE brand — wordmark, focus, active tab, progress, secondary CTA
376
+ 3. Primary Play button is pure white `#FFFFFF` with `#0A0A2A` text — highest contrast, never tinted
377
+ 4. Every poster carries a yellow `#FFD400` "FREE" tag — it's a feature, never hidden
378
+ 5. Poster rows are dense (3+ visible, 10pt gutters) and bleed off the right edge — catalog breadth is the pitch
379
+ 6. Titles are heavy (800–900) with tight negative tracking; only badges are ALL-CAPS + positive-tracked
380
+ 7. Metadata uses cool lavender-grey `#B9B9D6`, not neutral grey
381
+ 8. Elevation = surface lightening + deep shadow (0.45–0.6); focus = gradient ring + 1.04 scale (lit-by-brand)
382
+ 9. Live TV is an EPG channel grid with a sticky time header and gradient-marked "On Now" blocks
383
+ 10. Bottom tabs: Home / Search / Live TV / My List / Account — active icon magenta `#FF00FF`, no pill