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,476 @@
1
+ # Design System Inspiration of Netflix (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Netflix's iOS app is a cinematic dark canvas where poster art does all the heavy lifting. From the moment you pick a profile, you're dropped into a screen that feels less like a traditional app and more like a black-box theater: the canvas is `#141414` (a warm true-dark charcoal used across every Netflix surface since the brand's modern refresh), and every row of content is a horizontal strip of 2:3 vertical poster tiles separated only by titles and the faintest of whitespace. The top of every Home screen is a full-bleed hero — no app-logo header, no search bar at the top — where a trailer auto-plays muted over the selected title's key art, fading from the full landscape bleed at the top into the dark canvas via a vertical gradient that eats away at the bottom third of the image. You scroll, and rows of posters flow under your thumb like film strips.
6
+
7
+ The accent system is singular and sacred: Netflix Red (`#E50914`). It appears in exactly three places — the word "NETFLIX" at the top of the feed (the only header element, a wordmark), the large red Play button on the hero and every detail page, and the notification badges. Nothing else in the UI is red. Everything else — text, surface elevation, buttons that aren't Play — lives in a narrow monochrome palette: white (`#FFFFFF`), muted white (`#AAAAAA`), a near-black deep gray (`#1F1F1F`) for raised surfaces, and the canvas (`#141414`) itself. When Netflix wants to signal a different profile, it rotates a small palette of saturated accent colors (red, blue, yellow, green) on the circular avatars of the profile picker — but those never leak into the main app chrome.
8
+
9
+ Typography is Netflix Sans, a proprietary sans-serif designed in 2018 by Dalton Maag to replace Gotham across the product. It's a humanist geometric with tight tracking, designed to read as brand-owned and cinematic. The hierarchy is display-heavy because Netflix has a habit of putting 24–48pt titles on top of poster art, and compact at the UI level because content takes the focus. The most expressive moment is on the title detail page, where the show's logo artwork — rendered as an image, not type — sits at the top at 60%+ width, tightly followed by descriptive metadata in 14–15pt regular. Netflix Sans plays a supporting role; the art is the headline.
10
+
11
+ **Key Characteristics:**
12
+ - True-dark canvas (`#141414`) — a warm charcoal, not pure black; behind hero art it goes `#000000`
13
+ - **Dark mode only** — no light mode; Netflix has never shipped a light-mode iOS app
14
+ - Netflix Red (`#E50914`) reserved for the logo wordmark, Play button, and notification badges — nothing else
15
+ - Full-bleed hero at the top of Home with muted trailer auto-play and a gradient fade into canvas
16
+ - Horizontal rows of 2:3 portrait poster tiles — 60+ rows on a typical Home
17
+ - **"Top 10" numbered row** — giant side-profile numerals (1, 2, 3, …) rendered as a background layer with the poster sitting in front
18
+ - "Continue Watching" row shows a red progress bar at the bottom of each poster
19
+ - Netflix Sans (proprietary) paired with Graphik fallback, weights 400 / 500 / 700
20
+ - Profile selector on launch — circular avatars, colored rotation, "Who's watching?" prompt
21
+ - Mobile tab bar: Home, New & Hot, My Netflix, Downloads (if offline content exists)
22
+ - Scrubber with full-size preview thumbnails on video playback
23
+ - "Are you still watching?" inactivity modal during extended playback
24
+
25
+ ## 2. Color Palette & Roles
26
+
27
+ ### Primary
28
+ - **Netflix Red** (`#E50914`): The iconic saturated red — logo wordmark at top of Home, the main Play button, notification badges, "LIVE" event indicators, Continue Watching progress bar fill. Not used for secondary actions, borders, or generic accents.
29
+ - **Netflix Red Pressed** (`#B7070F`): Pressed / active-state variant for red CTAs.
30
+ - **Netflix Red Dimmed** (`#831010`): Very occasionally used for inactive or loading-state placeholders on red elements.
31
+
32
+ ### Canvas & Surfaces
33
+ - **Canvas** (`#141414`): Primary dark canvas — Netflix's signature "warm dark," used across Home, browse, profile, settings, everywhere.
34
+ - **Deep Black** (`#000000`): Full-bleed background behind title art, player background, loading-state fills.
35
+ - **Surface 1** (`#1F1F1F`): Card backgrounds when a card appears in front of the canvas, genre-picker grid tiles.
36
+ - **Surface 2** (`#2A2A2A`): Bottom sheets, modal backgrounds, pressed states on rows.
37
+ - **Surface 3** (`#3A3A3A`): Elevated sheets, context menus, sign-in fields.
38
+ - **Divider** (`#2B2B2B`): 1pt hairlines between rows inside settings / profile screens.
39
+ - **Input Field** (`#333333`): Sign-in / search input backgrounds.
40
+
41
+ ### Text
42
+ - **Text Primary** (`#FFFFFF`): Titles, headlines, primary UI text.
43
+ - **Text Secondary** (`#AAAAAA`): Metadata — rating, year, runtime, genres, "Season 1 · 10 episodes".
44
+ - **Text Tertiary** (`#777777`): Disabled text, lowest-emphasis labels.
45
+ - **Text on Red Button** (`#FFFFFF`): White text on the red Play button.
46
+ - **Text on Gray Button** (`#000000`): On the white/gray "My List" secondary button, text goes black (intentional contrast).
47
+
48
+ ### Profile Accent Rotation
49
+ Profiles cycle through a small set of saturated hues on their circular avatar backdrops:
50
+ - **Profile Red** (`#E50914`) — primary
51
+ - **Profile Blue** (`#3E3E91`) — warm navy
52
+ - **Profile Yellow** (`#F5D85C`) — mustard yellow
53
+ - **Profile Green** (`#4B8A3E`) — forest green
54
+ - **Kids Profile Orange** (`#F8981D`) — kids profile signature
55
+
56
+ These colors appear only on the profile-picker screen; they never bleed into the main app chrome.
57
+
58
+ ### Semantic
59
+ - **Info / Link** (`#54B9C5`): Rarely used; Netflix prefers underlined text for links.
60
+ - **Error** (`#E50914`): Same token as brand red for playback errors.
61
+ - **Success / Downloaded** (`#AAAAAA`): Downloaded indicator on My Netflix uses gray, not green — Netflix avoids green semantics entirely.
62
+
63
+ ### Dark-Only
64
+ Netflix iOS has no light mode. The app has been dark-only since its modern launch; even system light mode preference is ignored and the app remains `#141414`.
65
+
66
+ ## 3. Typography Rules
67
+
68
+ ### Font Family
69
+ - **Primary**: `Netflix Sans` (proprietary, designed in 2018 by Dalton Maag — replaced Gotham across Netflix's product, marketing, and UI)
70
+ - **Fallback Web / Secondary**: `Graphik` (Netflix's prior display workhorse, still referenced in some older marketing assets)
71
+ - **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Graphik', 'Helvetica Neue', Helvetica, Arial, sans-serif`
72
+ - **CJK / Non-Latin**: System — PingFang SC, Hiragino Sans, Apple SD Gothic Neo, Noto Sans Arabic / Hebrew / Devanagari / Thai
73
+ - Netflix Sans ships with Regular, Medium, Bold, and Black weights; the app uses Regular, Medium, and Bold
74
+
75
+ ### Hierarchy
76
+
77
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
78
+ |------|------|------|--------|-------------|----------------|-------|
79
+ | Title Detail Hero | Netflix Sans | 32pt | 700 | 1.1 | -0.4pt | Show / movie title below the hero art (when art logo not available) |
80
+ | Section Row Header | Netflix Sans | 17pt | 700 | 1.2 | -0.1pt | "Continue Watching", "Trending Now" row headers |
81
+ | Screen Title | Netflix Sans | 20pt | 700 | 1.2 | -0.2pt | "My Netflix", "Search", "Downloads" |
82
+ | Episode Title | Netflix Sans | 17pt | 500 | 1.2 | 0pt | "Episode 1: Chapter 1" on episode list |
83
+ | Body | Netflix Sans | 14pt | 400 | 1.45 | 0pt | Synopsis, description, about sections |
84
+ | Metadata | Netflix Sans | 13pt | 400 | 1.3 | 0pt | "2024 · 2h 15m · TV-MA" on title detail |
85
+ | Metadata Secondary | Netflix Sans | 12pt | 400 | 1.3 | 0pt | Genre tags, "Watched 5 days ago" |
86
+ | Button (Primary Play) | Netflix Sans | 17pt | 700 | 1.0 | 0pt | Red Play button label |
87
+ | Button (Secondary) | Netflix Sans | 15pt | 500 | 1.0 | 0pt | My List, Info, Download |
88
+ | Badge | Netflix Sans | 11pt | 700 | 1.0 | 0.4pt | "NEW SEASON", "TOP 10" chips, UPPERCASE |
89
+ | Tab Label | Netflix Sans | 10pt | 500 | 1.0 | 0.2pt | Bottom tab labels |
90
+ | Rating / Cert | Netflix Sans | 12pt | 700 | 1.0 | 0pt | "TV-MA", "HD", "Dolby Atmos" badges |
91
+ | Progress Time | Netflix Sans | 12pt | 400 | 1.0 | 0pt | Time remaining below Continue Watching |
92
+
93
+ ### Principles
94
+ - **Weights at 400 / 500 / 700**: Regular for body, Medium for episode titles and secondary buttons, Bold for headlines and Play button
95
+ - **Display moments use show artwork, not type**: Title detail hero prefers the show's branded logo-image; Netflix Sans type kicks in only when the image is unavailable
96
+ - **Negative tracking on titles**: Title detail hero is -0.4pt, other titles -0.1 through -0.2pt
97
+ - **Dynamic Type respected on reading surfaces**: Synopsis, settings, about, profile info; fixed on row headers, buttons, and badges
98
+ - **Badges and certificates stay all-caps**: "NEW", "TOP 10", "HD", "DOLBY ATMOS" — uppercase 11–12pt weight 700 with +0.4pt tracking
99
+ - **No italic, no underlines**: Netflix Sans does not have italic in the app's usage; links use red underline only on web, not iOS
100
+
101
+ ## 4. Component Stylings
102
+
103
+ ### Buttons
104
+
105
+ **Primary Play Button (The Iconic Red Pill)**
106
+ - Shape: Full-width pill, 48pt tall, corner radius 4pt (NOT full pill — Netflix uses soft 4pt corners, a signature)
107
+ - Background: `#E50914`
108
+ - Icon: SF Symbol `play.fill` in `#FFFFFF`, 20pt weight 700, leading the text
109
+ - Text: "Play" or "Resume" in Netflix Sans 17pt weight 700, `#FFFFFF`
110
+ - Padding: 14pt vertical, 24pt horizontal
111
+ - Pressed: background `#B7070F`, scale 0.98, medium haptic
112
+ - Width: typically full-width on title detail below the hero, or 160pt on an inline CTA
113
+ - This button is the app's visual anchor — it's almost always the single most saturated element on any screen
114
+
115
+ **Secondary Button ("My List", "Info", "Trailer")**
116
+ - Background: `rgba(255,255,255,0.15)` (semi-transparent white for glass-like effect on dark canvas) OR solid `#2A2A2A` depending on context
117
+ - Text: `#FFFFFF` Netflix Sans 15pt weight 500
118
+ - Leading SF Symbol glyph 16pt (`plus` for My List, `info.circle` for Info, `play.rectangle` for Trailer)
119
+ - Corner radius: 4pt (same as Play button)
120
+ - Padding: 12pt vertical, 20pt horizontal
121
+ - Pressed: `rgba(255,255,255,0.25)` / `#3A3A3A`
122
+
123
+ **Download Button**
124
+ - Shape: icon-only button (no background)
125
+ - Default: SF Symbol `arrow.down.to.line` 24pt `#FFFFFF`
126
+ - Downloading: animated progress arc around the icon, cyan `#54B9C5` accent
127
+ - Downloaded: SF Symbol `checkmark.circle.fill` 24pt `#AAAAAA` (intentionally gray — not green — Netflix's color choice)
128
+ - Tap while downloaded: opens actions menu (Delete, Watch)
129
+
130
+ **My List Plus Button (Add/Remove)**
131
+ - Default (not added): SF Symbol `plus` 24pt `#FFFFFF`
132
+ - Added: SF Symbol `checkmark` 24pt `#FFFFFF` (NOT green — plain white)
133
+ - Animation: plus rotates 90° + cross-fades to checkmark over 200ms
134
+ - Haptic: success on add
135
+
136
+ **Icon Only (Share / Rate / Rate Down / More)**
137
+ - Glyph: 24pt white SF Symbol
138
+ - Hit area: 44pt × 44pt
139
+ - Default: `#FFFFFF`
140
+ - Pressed: `#AAAAAA`
141
+ - Labels below icons: Netflix Sans 12pt weight 400 `#AAAAAA`
142
+
143
+ ### Cards & Containers
144
+
145
+ **Poster Tile (THE atomic unit)**
146
+ - Aspect: **2:3 portrait** (key art — the vertical poster format)
147
+ - Standard tile width: 130pt on iPhone, 120pt on SE, 160pt on Pro Max, 200pt on iPad
148
+ - Corner radius: **4pt** (Netflix's signature soft-but-not-rounded corner)
149
+ - Background: `#1F1F1F` (shows while art loads)
150
+ - Image: full-bleed within the tile, no border, no shadow
151
+ - Gap between tiles in a row: 8pt
152
+ - Tap: fade-to-detail transition with shared-element of the poster
153
+ - Preload: fetch a trailer thumbnail along with the poster art for instant-play on hover / detail open
154
+
155
+ **Hero Card (Top of Home)**
156
+ - Full-width, positioned directly below the "NETFLIX" wordmark at the top
157
+ - Height: ~70% of screen height on Home (varies by device)
158
+ - Image: full-bleed landscape key art OR auto-playing muted trailer video
159
+ - Overlay at bottom: a vertical gradient from `rgba(0,0,0,0)` (top) to `#141414` (bottom) across the lower 40% — makes the hero fade into the canvas
160
+ - Below-gradient content (inside the hero frame):
161
+ - Title logo image (if available) at 60% width, centered or left-aligned
162
+ - Genre chips row: inline pills "Gripping · Dramas · Thrillers" in 13pt weight 500 `#FFFFFF` separated by `•`
163
+ - Button row: [My List (secondary)] [▶ Play (red primary)] [Info (secondary)]
164
+ - Trailer auto-play: starts muted after 2s delay on scroll-stop, pauses when off-screen
165
+ - Audio toggle (small speaker icon 20pt) floats top-right of hero area
166
+
167
+ **Row (Horizontal Scroll of Posters)**
168
+ - Section header: Netflix Sans 17pt weight 700 `#FFFFFF`, 16pt leading, 8pt top / 12pt bottom margin
169
+ - Row content: horizontal scroll of 2:3 poster tiles, 8pt gap
170
+ - End of row peek: last tile is partially visible off-screen to signal scroll
171
+ - Row height: driven by tile size (e.g. 130pt × 1.5 = 195pt for tiles)
172
+ - Most rows show 20–40 titles; the row does not typically loop
173
+
174
+ **"Top 10" Row (Signature Component)**
175
+ - Structurally like any other row but with a **giant numeral** rendered to the left of each tile
176
+ - Numerals are displayed in a heavy outlined style (2pt stroke) at ~160pt tall, colored `#141414` with a slight opacity gradient, positioned behind the poster so the poster "covers" the inner edge of the numeral
177
+ - Numerals: 1, 2, 3, …, 10 — always the Top 10 in the user's country
178
+ - Typography: special condensed display face (sometimes referred to as "Top 10 Bebas" in Netflix's internal materials) — a compressed heavy sans with exaggerated stroke contrast
179
+ - This is visually the most distinctive row in the app
180
+
181
+ **Continue Watching Tile**
182
+ - Same 2:3 poster format but with:
183
+ - Red progress bar at the **bottom** of the tile: 2pt tall, track `rgba(255,255,255,0.3)`, fill `#E50914`, width = % watched
184
+ - Title text below the poster (14pt weight 500 white) — one of the few rows with text labels under tiles
185
+ - Optional "Episode X of Y" metadata in 12pt weight 400 secondary
186
+
187
+ **Title Detail Screen**
188
+ - Top: a 16:9 hero image of the show/movie (full-width, no corner radius)
189
+ - Below the hero: a semi-transparent `rgba(0,0,0,0.5)` vertical gradient that fades into the canvas
190
+ - Title logo (show branding, usually an image) at 65% width centered
191
+ - Metadata row: Year · Runtime · Rating certificate (e.g. "2024 · 1h 48m · TV-MA")
192
+ - Genre row: inline chips separated by `•`
193
+ - Play button (red, full width)
194
+ - Secondary buttons row: My List / Info / Share icons with labels
195
+ - Synopsis: 14pt weight 400 body, 3-line clamp with "more" trailing
196
+ - Cast row: horizontal strip of circular actor avatars with names below
197
+ - Episode list (for series): list of episode rows with episode image thumbnail + title + description
198
+ - "More Like This" row: 3×3 grid of 2:3 posters below episodes
199
+ - Details block: director, cast, year, genre, rating — collapsible
200
+
201
+ **Episode Row (On Series Detail)**
202
+ - Height: ~100pt
203
+ - Layout: 16:9 episode thumbnail (160pt wide) on left + stacked title/description on right
204
+ - Thumbnail has a small centered play triangle overlay on hover-equivalent state
205
+ - Download icon trailing right (24pt, state-aware)
206
+ - Progress bar: if partially watched, a red progress bar at the bottom edge of the thumbnail
207
+
208
+ **Profile Picker Card (Launch Screen)**
209
+ - Appears on app launch — full-screen "Who's watching?" title
210
+ - 2-column grid of profile tiles (some layouts use 1 row of 4)
211
+ - Each profile:
212
+ - Circular avatar 80pt diameter, corner radius 50%
213
+ - Colored background (red, blue, yellow, green, kids-orange rotation)
214
+ - 2pt white border on hover-equivalent state
215
+ - Name below: Netflix Sans 14pt weight 500 white
216
+ - "Add Profile" option: outline-dashed circle with `+` icon
217
+ - "Manage Profiles" link at bottom
218
+
219
+ ### Navigation
220
+
221
+ **Top App Bar (Home only — the Netflix wordmark)**
222
+ - Height: 44pt + safe area
223
+ - Background: transparent at top of feed, fades to `rgba(20,20,20,0.92)` with `.regularMaterial` blur on scroll
224
+ - Contents (left-aligned): the red "NETFLIX" wordmark (a PNG / vector image, NOT type) 22pt tall
225
+ - Trailing: category chip row ("TV Shows", "Movies", "My List") 32pt pills — see below
226
+ - On scroll-down: bar stays, chips hide
227
+ - The NETFLIX wordmark is the ONLY header on Home — no search bar, no profile icon here (search moves to the tab bar as "Search")
228
+
229
+ **Top Category Chip Row (below wordmark)**
230
+ - Pills for "TV Shows", "Movies", "My List"
231
+ - Pill: height 32pt, corner radius 500pt, border `rgba(255,255,255,0.4)` 1pt, text `#FFFFFF` 14pt weight 500
232
+ - Tapping a pill filters the entire feed to that category (swapping the visible rows and hero)
233
+ - No fill on selection — just a pulse animation
234
+
235
+ **Bottom Tab Bar**
236
+ - Height: 48pt + safe area
237
+ - Background: `rgba(20,20,20,0.92)` with `.regularMaterial` blur, 1pt top hairline `#2B2B2B`
238
+ - 4 tabs: **Home** (house icon), **New & Hot** (play-circle icon), **My Netflix** (person-circle icon — replaced "Downloads" in 2024+ for most accounts), **Downloads** (downloaded-arrow icon — only shown if downloaded content exists)
239
+ - Icon size: 24pt, 44pt hit area
240
+ - Active: `#FFFFFF` with filled SF Symbol variant
241
+ - Inactive: `#777777` with outlined variant
242
+ - Labels: Netflix Sans 10pt weight 500, shown always
243
+ - No center Create button — Netflix is view-only
244
+
245
+ ### Input Fields
246
+
247
+ **Search Input (Search Tab)**
248
+ - Background: `#2A2A2A`
249
+ - Height: 40pt
250
+ - Corner radius: 4pt
251
+ - Leading 18pt `magnifyingglass` SF Symbol `#AAAAAA`
252
+ - Placeholder: "Search for shows, movies, genres" Netflix Sans 16pt weight 400 `#AAAAAA`
253
+ - Focus: background `#333333`, cursor white, placeholder fades
254
+ - Trailing: `xmark.circle.fill` 18pt `#AAAAAA` when text is present
255
+
256
+ **Sign-in Field (Login)**
257
+ - Background: `#333333`
258
+ - Height: 56pt
259
+ - Corner radius: 4pt
260
+ - Floating label pattern — label starts as placeholder, animates to top-small on focus
261
+ - Text: `#FFFFFF` 16pt weight 400
262
+ - Validation: error state border `#E50914` with error message below
263
+
264
+ ### Distinctive Components
265
+
266
+ **The NETFLIX Wordmark Header**
267
+ - The ONLY element at the top of the Home screen when first opened
268
+ - Red (`#E50914`) vector wordmark, uppercase compressed sans, 22pt tall
269
+ - No accompanying text, no icons — Netflix's confidence play: "you know what this app is"
270
+
271
+ **Hero Trailer Auto-Play**
272
+ - Trailer video plays muted behind the hero after 2–3s delay
273
+ - Audio-toggle speaker icon in upper-right (tap to unmute)
274
+ - Smoothly fades between trailer and poster key art
275
+ - Pauses when app backgrounds or when user scrolls past
276
+ - Extremely distinctive Netflix UX moment
277
+
278
+ **"Top 10" Numerals**
279
+ - Giant outlined numerals (1, 2, 3, …) behind each poster in the Top 10 row
280
+ - Numeral is ~160pt tall, thin 2pt stroke, color `#141414` (canvas color) with subtle internal lightening
281
+ - Poster sits in front of the numeral with the numeral partially obscured by it
282
+ - Unique to Netflix — this row composition is instantly recognizable
283
+
284
+ **Continue Watching Progress Bar**
285
+ - Red horizontal bar at the bottom of a poster, 2pt tall
286
+ - Fills based on watch progress (0–100%)
287
+ - Only appears on Continue Watching tiles
288
+
289
+ **"Are you still watching?" Modal**
290
+ - Full-screen modal that appears after ~3 episodes of autoplay without user interaction
291
+ - Shows the most recent episode's thumbnail
292
+ - Text: "Are you still watching {show name}?"
293
+ - Two buttons: "Continue Watching" (red primary) / "Exit"
294
+ - Dimmer: `rgba(0,0,0,0.8)`
295
+
296
+ **Fast-Forward / Scrub with Preview Thumbnails**
297
+ - On the player, dragging the scrubber reveals a strip of preview thumbnails above the handle
298
+ - Thumbnails: 140pt × 80pt (16:9) snapshots every 10 seconds of runtime
299
+ - Shown in a horizontal strip above the scrubber, center thumbnail represents current scrub target
300
+ - Current timestamp shown as a "XX:XX / XX:XX" label in 12pt weight 400
301
+
302
+ **Rating Up / Rating Down (Thumbs)**
303
+ - Replaced star ratings in 2017
304
+ - Thumbs up / double-thumbs-up ("Love this!") / thumbs down
305
+ - Double-tap on thumbs-up triggers the "Love this!" overlay — a red heart-thumb combo animation
306
+ - Haptic: medium on thumb-up/down, heavy success on double-thumbs
307
+
308
+ **Mobile Game Shelf (New & Hot / My Netflix)**
309
+ - Netflix Games get their own horizontal row
310
+ - 1:1 square tiles with larger corner radius (12pt)
311
+ - "GAME" badge in the corner (uppercase 11pt weight 700 white on red chip)
312
+
313
+ ## 5. Layout Principles
314
+
315
+ ### Spacing System
316
+ - Base unit: 4pt
317
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 48, 56, 64
318
+ - Content margin: 16pt horizontal on text content, 0pt on row scrolls (tiles extend to edges)
319
+ - Between rows: 12pt top / 8pt bottom on section headers
320
+ - Between poster tiles in a row: 8pt
321
+
322
+ ### Grid & Container
323
+ - Feed: single-column vertical stack of horizontal rows; tiles flow horizontally
324
+ - Title detail: single-column 16pt horizontal margin on text, full-width on hero image
325
+ - Episode list: single-column rows
326
+ - Profile picker: 2×2 or 1×4 grid depending on number of profiles
327
+ - iPad landscape: larger tiles, same row structure
328
+
329
+ ### Whitespace Philosophy
330
+ - **Tight vertical density in feed**: Row headers are only 8pt below posters above; rows pack close so more content is visible
331
+ - **Generous on detail**: Title detail uses 16pt horizontal and 20pt between sections — reading surface
332
+ - **Zero margin on hero**: Hero image is full-bleed, gradient fade does the visual separation work
333
+
334
+ ### Border Radius Scale
335
+ - Square (0pt): Hero images, episode thumbnails
336
+ - Signature (4pt): Poster tiles, Play button, secondary buttons, inputs — THE Netflix soft corner
337
+ - Standard (8pt): Download progress arc on icon
338
+ - Comfortable (12pt): Game tiles (1:1), bottom sheets
339
+ - Full Pill (500pt): Category chips in top bar
340
+ - Circle (50%): Profile avatars, download arc, actor headshots
341
+
342
+ ## 6. Depth & Elevation
343
+
344
+ | Level | Treatment | Use |
345
+ |-------|-----------|-----|
346
+ | Flat (Level 0) | No shadow | Feed, rows, posters, most UI |
347
+ | Hero Gradient | Vertical gradient `rgba(0,0,0,0)` → `#141414` over 40% | Fades hero trailer into canvas |
348
+ | Card Lift (Level 1) | `rgba(0,0,0,0.5) 0 4px 16px` | Profile avatars when hovered / selected |
349
+ | Sheet (Level 2) | `rgba(0,0,0,0.6) 0 -12px 40px` | Bottom sheets (share, downloads, overflow) |
350
+ | Player Chrome | `rgba(0,0,0,0.6)` gradient overlay over video | Darkens edges of player for control visibility |
351
+ | Modal Dim (Level 3) | `rgba(0,0,0,0.8)` + optional backdrop-blur | "Are you still watching?" modal, sign-out dialogs |
352
+ | Tab Bar Material | `.regularMaterial` over `rgba(20,20,20,0.92)` | Bottom tab bar blur |
353
+
354
+ **Shadow Philosophy**: Netflix is almost entirely flat because the dark canvas does the job of separating elements through contrast alone. The signature "lift" moment is the hero gradient, which isn't a shadow but a color-to-canvas fade, giving the hero its cinematic quality without needing elevation. Actual shadows only appear in two places: behind raised elements like player chrome gradients and sheet surfaces, and (very subtly) on selected profile avatars. Posters and tiles never carry shadow — they sit flat on the canvas.
355
+
356
+ ### Motion
357
+ - **Play button tap**: Scale 0.98 with medium haptic; if playback starts, the player slides up from bottom in 0.3s spring
358
+ - **Poster tap → Detail**: Shared-element transition on the poster image from its row position to the detail screen hero, 0.35s spring damping 0.85
359
+ - **Hero trailer transition**: Fade from poster image to trailer video over 600ms after 2s idle
360
+ - **My List add/remove**: Plus-to-checkmark cross-fade + rotate 90° over 200ms, success haptic
361
+ - **Row horizontal scroll**: 60fps swipe with paging, momentum decay
362
+ - **Episode autoplay → Next**: 10s countdown ring appears in bottom-right after an episode ends; tap cancels, otherwise auto-transitions with fade
363
+ - **Profile select**: Selected avatar scales 1.0 → 1.1 → 1.0 with a spring, then full-screen fades to Home
364
+ - **Rating thumb tap**: Heavy haptic, 1.0 → 1.2 → 1.0 scale bounce, fill swap
365
+ - **Scrubber drag preview**: Thumbnails slide horizontally matching scrub position, 60fps
366
+
367
+ ## 7. Do's and Don'ts
368
+
369
+ ### Do
370
+ - Use `#141414` as the canvas — warm dark charcoal, not pure black (except behind hero art)
371
+ - Reserve Netflix Red (`#E50914`) for the NETFLIX wordmark, Play button, and Continue Watching progress bar — nothing else
372
+ - Use the red wordmark as the ONLY header on Home — no text title, no search bar in the top app bar
373
+ - Render posters at a 2:3 aspect ratio with a 4pt corner radius — Netflix's signature tile
374
+ - Use the vertical gradient from canvas to transparent to fade hero images into the background
375
+ - Use `#AAAAAA` for all metadata / secondary text — never gray-blue or warm gray
376
+ - Use Netflix Sans for all type, weights 400 / 500 / 700 only
377
+ - Auto-play muted hero trailers after a 2s idle delay
378
+ - Show the big outlined numerals behind Top 10 posters
379
+ - Show the red progress bar on Continue Watching tiles at the bottom edge
380
+ - Use the rounded 4pt corner on the Play button (soft corner, not pill)
381
+ - Use a 1:4 profile picker grid with colored circular avatars on app launch
382
+ - Use "Are you still watching?" modal after 3+ hours of continuous autoplay
383
+
384
+ ### Don't
385
+ - Don't use pure black `#000000` as the canvas — `#141414` is warmer and the Netflix standard
386
+ - Don't ship a light mode — Netflix has always been dark-only
387
+ - Don't use green for success (downloaded, checkmark states) — Netflix uses gray
388
+ - Don't use a full-pill corner on the Play button — 4pt is signature
389
+ - Don't use red anywhere other than the defined brand moments — no red borders, no red text, no red accent on metadata
390
+ - Don't put a title text header on the Home screen — the NETFLIX wordmark image replaces it
391
+ - Don't use shadows on poster tiles — they sit flat on the canvas
392
+ - Don't auto-play hero trailers with sound — they must start muted with user-controlled unmute
393
+ - Don't forget the outlined numerals on the Top 10 row — that visual is the row's defining feature
394
+ - Don't animate aggressively — Netflix motion is subtle, 250–400ms springs
395
+ - Don't show episode numbers before title — format is "Episode 1: Chapter 1" (episode then title)
396
+
397
+ ## 8. Responsive Behavior
398
+
399
+ ### Device Sizes
400
+ | Device | Width | Key Changes |
401
+ |--------|-------|-------------|
402
+ | iPhone SE (3rd gen) | 375pt | Poster tiles 120pt wide; hero image scales to 260pt tall |
403
+ | iPhone 13/14/15 | 390pt | Standard 130pt posters; 400pt hero height |
404
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated at top of wordmark |
405
+ | iPhone 15/16 Pro Max | 430pt | 160pt posters; 460pt hero; Top 10 numerals at 200pt tall |
406
+ | iPad portrait | 768pt | 3-tile visible rows; wordmark left, chips right |
407
+ | iPad landscape | 1024pt | 4–5 tile rows visible; hero at 720pt tall |
408
+
409
+ ### Dynamic Type
410
+ - Synopsis, settings, About: full scale
411
+ - Title detail hero title: scales to 40pt max
412
+ - Row headers, Play button label: fixed size
413
+ - Poster titles (Continue Watching only): fixed size (tile-sensitive)
414
+ - Tab labels: fixed
415
+ - Metadata: scales up to 20% max
416
+
417
+ ### Orientation
418
+ - Home / Browse / Profile / Search / My Netflix: **portrait-locked**
419
+ - Video player: **rotates to landscape for fullscreen**
420
+ - Title detail: portrait-locked
421
+ - Trailer preview: portrait on title detail (embedded), landscape in full player
422
+
423
+ ### Touch Targets
424
+ - Play button: 48pt tall — exceeds 44pt minimum
425
+ - Poster tile: full tile tappable (~130pt × 195pt)
426
+ - Overflow / more icons: 44pt hit
427
+ - Tab bar icons: 24pt glyph with 44pt hit
428
+ - Scrubber thumb: 24pt draggable
429
+
430
+ ### Safe Area Handling
431
+ - Top: Wordmark respects safe area / Dynamic Island — positioned 12pt below Island on Pro devices
432
+ - Bottom: Tab bar respects home indicator
433
+ - Player (landscape fullscreen): ignores safe area for video, respects for controls
434
+ - Hero image: extends under Dynamic Island (content behind glass); NETFLIX wordmark sits above
435
+
436
+ ## 9. Agent Prompt Guide
437
+
438
+ ### Quick Color Reference
439
+ - Canvas: `#141414`
440
+ - Deep black (hero bg): `#000000`
441
+ - Surface 1 (cards): `#1F1F1F`
442
+ - Surface 2 (sheets): `#2A2A2A`
443
+ - Surface 3 (elevated): `#3A3A3A`
444
+ - Divider: `#2B2B2B`
445
+ - Input field: `#333333`
446
+ - Text primary: `#FFFFFF`
447
+ - Text secondary: `#AAAAAA`
448
+ - Text tertiary: `#777777`
449
+ - Netflix Red: `#E50914`
450
+ - Red pressed: `#B7070F`
451
+ - Profile rotation: red `#E50914`, blue `#3E3E91`, yellow `#F5D85C`, green `#4B8A3E`, kids-orange `#F8981D`
452
+
453
+ ### Example Component Prompts
454
+ - "Create a SwiftUI Netflix Play button: full-width pill, 48pt tall, 4pt corner radius, background `#E50914`. Leading SF Symbol `play.fill` 20pt white, followed by 8pt gap, text 'Play' in Netflix Sans 17pt weight 700 `#FFFFFF`. 14pt vertical / 24pt horizontal padding. Pressed: background `#B7070F`, scale 0.98 with medium haptic."
455
+ - "Build a Netflix poster tile: 2:3 portrait aspect, width 130pt height 195pt. Corner radius 4pt. Image fills the tile, background `#1F1F1F` while loading. No border, no shadow. On tap: shared-element transition to title detail hero, 0.35s spring damping 0.85."
456
+ - "Design the Netflix hero card: full-width, 400pt tall at top of Home. 16:9 landscape key art image bleeds to screen edges. Vertical gradient overlay in the lower 40% from `rgba(0,0,0,0)` to `#141414` — fades hero into canvas. At the bottom of the gradient: centered title logo image (65% width), then genre pills row '• Gripping • Thriller • Drama' in 13pt weight 500 white, then button row [My List secondary] [▶ Play red primary] [Info secondary]. Trailer auto-play starts after 2s idle, muted. Audio toggle speaker icon top-right."
457
+ - "Create the Netflix 'Top 10' row: horizontal scroll of 2:3 posters identical to regular rows, but with a giant outlined numeral behind each poster. Numeral: 1 through 10, ~160pt tall, compressed heavy sans (Bebas-like), 2pt stroke, color `#141414` (canvas color) with slight internal lightening. Poster sits in front of numeral, partially covering its inner edge. 8pt gap between poster+numeral groups."
458
+ - "Build a Continue Watching tile: 2:3 poster at 130×195pt, 4pt corner radius. At the bottom of the poster, overlay a horizontal progress bar 2pt tall, track `rgba(255,255,255,0.3)`, fill `#E50914`, width = watch progress %. Below poster: title in Netflix Sans 14pt weight 500 white (1-line clamp), metadata 'Episode 3 of 10' in 12pt weight 400 `#AAAAAA`."
459
+ - "Design the Netflix profile picker screen: full-screen `#141414` canvas. Title 'Who's watching?' in Netflix Sans 32pt weight 700 white, centered. 2×2 grid of profile tiles (or 1×4 on fewer profiles). Each profile: 80pt circular avatar with colored background (rotate through red, blue, yellow, green, kids-orange), profile image or SF Symbol center. 16pt gap below: profile name Netflix Sans 14pt weight 500 white. 'Add Profile' tile: dashed outline circle + plus icon. Selected: avatar scales 1.0 → 1.1 → 1.0 spring, then full-screen fades to Home."
460
+ - "Create the Netflix bottom tab bar: 48pt + safe area, 4 tabs (Home, New & Hot, My Netflix, Downloads if offline content exists). Background `rgba(20,20,20,0.92)` with `.regularMaterial` blur, 1pt top hairline `#2B2B2B`. Icons 24pt SF Symbols, active `#FFFFFF` filled variant, inactive `#777777` outlined. Labels Netflix Sans 10pt weight 500 shown always. Red notification dot `#E50914` 8pt on icon top-right when applicable."
461
+
462
+ ### Iteration Guide
463
+ 1. Canvas is `#141414` — a warm dark charcoal, never `#000000` except behind hero art
464
+ 2. Netflix Red `#E50914` is for the logo wordmark, the Play button, and the Continue Watching progress bar — nothing else
465
+ 3. Posters are 2:3 portrait with 4pt corner radius — not rounded, not square
466
+ 4. Hero image fades into canvas with a bottom-up vertical gradient — the hallmark cinematic moment
467
+ 5. No light mode — ever. Netflix is dark-only.
468
+ 6. Typography: Netflix Sans only, weights 400 / 500 / 700
469
+ 7. No app title on Home — the red NETFLIX wordmark image IS the header
470
+ 8. Top 10 row uses giant outlined numerals behind each poster — that's the row's visual signature
471
+ 9. Continue Watching tiles show a red progress bar at the bottom — that's the row's visual signature
472
+ 10. Secondary buttons use `rgba(255,255,255,0.15)` semi-transparent white or `#2A2A2A` solid
473
+ 11. Tab bar has 4 tabs (not 5) — no Create / upload concept
474
+ 12. Trailer auto-play starts muted after 2s idle — unmute only on user tap
475
+ 13. Gray is used for "downloaded" / "success" checkmarks — never green
476
+ 14. Haptics: medium on Play, success on My List add, heavy on double-thumbs-up Love, selection on chip tap