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,494 @@
1
+ # Design System Inspiration of Apple Music (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Apple Music's iOS app is the flagship showcase of Apple's own design language — a first-party experience that leans heavily into SF Pro, SF Symbols, system materials (blurs and vibrancy), and haptics. It exists to do one thing: put album art front and center, wrap it in a light-and-air clean interface, and let you fall into an album. The canvas is pure white (`#FFFFFF`) in light mode and true black (`#000000`) in dark — unusually Apple uses the full-contrast black instead of the softer `#121212` most other media apps favor, because the Now Playing screen's album-art-derived gradient needs the deepest canvas to pop.
6
+
7
+ The accent system centers on Apple Music Red (`#FA2D48`) — sometimes rendered as a slightly warmer brand coral (`#FC3C44`) depending on the surface. It's the color of the Play button on Now Playing, the Apple Music logomark, and the "Now Playing" indicator on the mini-player. Apple Music is more generous with its accent than Spotify or Netflix are — the red is also used for the scrubber fill, the heart like state, the "Shuffle" toggle when active, and the "Join Apple Music" CTA. The result is a more classically-iOS feel: the red is a first-party accent rather than a single sacred verb, and it plays nicely with the iOS system blue for links and the palette of Album-art-derived colors on the Now Playing screen.
8
+
9
+ Typography is 100% SF Pro — Apple's native font — at the full spectrum of sizes and weights the system offers. There's no custom typeface; Apple Music leans into SF Pro's built-in optical variants (SF Pro Display at 20pt+, SF Pro Text below). The hierarchy is wide: from giant 34pt large titles on "Listen Now" cards to 11pt tertiary metadata, all rendered in SF Pro weights from 400 to 700. The most expressive type moments are the **hero cards** on Listen Now (24–34pt bold over album-art hero imagery) and the **time-synced lyrics** view, where each line of lyrics scales larger as it becomes the current line being sung.
10
+
11
+ **Key Characteristics:**
12
+ - SF Pro throughout — no custom font — Apple Music leans fully into iOS system language
13
+ - Light canvas `#FFFFFF` / dark canvas `#000000` — full-contrast black, not warm `#121212`
14
+ - **Apple Music Red** (`#FA2D48`) as primary accent — Play button, Now Playing indicator, Shuffle active, heart liked
15
+ - **Listen Now hero cards** — large editorial cards with full-bleed album art, 24–34pt titles
16
+ - **Larger album tiles** with 12pt corner radius — signature softer-than-Spotify corner
17
+ - **Dolby Atmos badge** — golden glow indicator on supported tracks/albums
18
+ - **Time-synced lyrics view** with word-by-word highlight — a defining Apple Music feature
19
+ - **Mini-player** sits above the tab bar with artwork, title, and play/pause
20
+ - Now Playing expands to full-screen with album art as hero, album-art-derived gradient background
21
+ - Bottom tab bar: Home (Listen Now), New, Radio, Library, Search — 5 tabs
22
+ - System materials everywhere: `.regularMaterial`, `.thinMaterial` blurs throughout
23
+ - SF Symbols for all icons; native iOS haptics on all actions
24
+
25
+ ## 2. Color Palette & Roles
26
+
27
+ ### Primary
28
+ - **Apple Music Red** (`#FA2D48`): Primary brand accent — Play button, Now Playing indicator, Shuffle active state, heart liked icon, scrubber fill, section badges like "NEW", links in certain contexts.
29
+ - **Apple Music Coral** (`#FC3C44`): Slightly warmer variant — used in alternative marketing surfaces and in some templated album art.
30
+ - **Red Pressed** (`#D4213B`): Pressed / active-state variant for red CTAs.
31
+ - **Red Dimmed** (`#FA2D48` at 60% opacity): Inactive heart outline on some surfaces.
32
+
33
+ ### Canvas & Surfaces (Light Mode)
34
+ - **Canvas White** (`#FFFFFF`): Primary light canvas — Home, Library, Search, Radio.
35
+ - **Surface 1** (`#F2F2F7`): iOS system secondary background — grouped list backgrounds, section cards.
36
+ - **Surface 2** (`#FFFFFF`): Card foreground on secondary background.
37
+ - **Surface 3** (`#E5E5EA`): Tertiary surface — pressed rows, divider-adjacent areas.
38
+ - **Divider** (`#C6C6C8`): iOS system separator at 1/3 alpha; 1pt hairline between list rows.
39
+ - **Input Fill** (`#E5E5EA`): Search bar fill, text field backgrounds.
40
+
41
+ ### Canvas & Surfaces (Dark Mode)
42
+ - **Canvas Black** (`#000000`): Primary dark canvas — full-contrast black, unusual for a media app.
43
+ - **Surface 1 Dark** (`#1C1C1E`): iOS system secondary dark background — card backgrounds, grouped list.
44
+ - **Surface 2 Dark** (`#2C2C2E`): Tertiary — raised cards, sheets.
45
+ - **Surface 3 Dark** (`#3A3A3C`): Elevated — context menus, selected row.
46
+ - **Divider Dark** (`#38383A`): Hairlines in dark mode.
47
+ - **Input Fill Dark** (`#1C1C1E`): Search bar dark fill.
48
+
49
+ ### Text (Light Mode)
50
+ - **Label Primary** (`#000000`): Track titles, headlines — full iOS `.label` token.
51
+ - **Label Secondary** (`#3C3C43` at 60% opacity): Subtitles, artist names — iOS `.secondaryLabel`.
52
+ - **Label Tertiary** (`#3C3C43` at 30% opacity): Timestamps, metadata — iOS `.tertiaryLabel`.
53
+ - **Label Quaternary** (`#3C3C43` at 18% opacity): Disabled, very low emphasis.
54
+
55
+ ### Text (Dark Mode)
56
+ - **Label Primary Dark** (`#FFFFFF`): Main text on dark.
57
+ - **Label Secondary Dark** (`#EBEBF5` at 60% opacity): Artist names on dark.
58
+ - **Label Tertiary Dark** (`#EBEBF5` at 30% opacity): Metadata on dark.
59
+
60
+ ### Dynamic Album-Art Gradient
61
+ - **Now Playing Extracted Gradient**: The Now Playing screen background transitions from the dominant color of the album cover through a subtle gradient to a slightly darker variant over ~70% of the viewport
62
+ - **Lyrics View Background**: Similar extraction, using the album art's secondary color for contrast with the highlighted lyric line
63
+ - **Mini-Player Hint**: On the mini-player, a very subtle gradient tint pulls from the current track's album art, applied at low opacity
64
+
65
+ ### Semantic
66
+ - **Dolby Atmos Gold** (`#D4A857`): The distinctive Atmos badge color — a rich metallic gold
67
+ - **Lossless Silver** (`#8E8E93`): The "Lossless" quality badge
68
+ - **iOS System Blue** (`#007AFF`): Links to artists, albums from inline text (e.g. in "About" section)
69
+ - **iOS System Green** (`#34C759`): Download complete indicator
70
+ - **Error Red** (`#FF3B30`): iOS system red for playback errors (not Apple Music red — these are separate)
71
+
72
+ ## 3. Typography Rules
73
+
74
+ ### Font Family
75
+ - **Primary**: `SF Pro` — Apple's native font stack (SF Pro Display at 20pt+, SF Pro Text below)
76
+ - **Rounded variant**: `SF Pro Rounded` — used sparingly in Listen Now hero cards and certain editorial contexts
77
+ - **Fallback Stack**: None needed — SF Pro is guaranteed on all iOS devices; system font stack applies automatically
78
+ - **CJK / Non-Latin**: Apple's system fonts — PingFang SC, Hiragino Sans, Apple SD Gothic Neo, Apple Color Emoji for emoji runs
79
+ - Apple Music uses Dynamic Type at almost every level — the app scales readably across Dynamic Type sizes from Extra Small to AX5
80
+
81
+ ### Hierarchy
82
+
83
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
84
+ |------|------|------|--------|-------------|----------------|-------|
85
+ | Large Title | SF Pro Display | 34pt | 700 | 1.1 | 0.37 | "Listen Now", "Library" large navigation titles |
86
+ | Title 1 | SF Pro Display | 28pt | 700 | 1.15 | 0.36 | Secondary large headings |
87
+ | Listen Now Hero | SF Pro Display | 24pt | 700 | 1.2 | -0.2pt | Title on hero editorial cards |
88
+ | Title 2 | SF Pro Display | 22pt | 700 | 1.2 | -0.26 | Playlist / album hero titles |
89
+ | Title 3 | SF Pro Display | 20pt | 600 | 1.2 | -0.15 | Section headers "Recently Played" |
90
+ | Now Playing Title | SF Pro Display | 18pt | 600 | 1.25 | -0.1 | Current track title on Now Playing |
91
+ | Headline | SF Pro Text | 17pt | 600 | 1.25 | -0.43 | Track title in playlist list |
92
+ | Body | SF Pro Text | 17pt | 400 | 1.45 | -0.43 | Description, about |
93
+ | Callout | SF Pro Text | 16pt | 400 | 1.25 | -0.32 | Emphasized body text |
94
+ | Subheadline | SF Pro Text | 15pt | 400 | 1.3 | -0.24 | Artist names, secondary info |
95
+ | Footnote | SF Pro Text | 13pt | 400 | 1.3 | -0.08 | Timestamps, play counts |
96
+ | Caption 1 | SF Pro Text | 12pt | 400 | 1.3 | 0 | Badges, minor metadata |
97
+ | Caption 2 | SF Pro Text | 11pt | 400 | 1.2 | 0.07 | "Dolby Atmos" badge, "Lossless" label |
98
+ | Button | SF Pro Text | 17pt | 600 | 1.0 | -0.43 | Primary pill button labels |
99
+ | Tab Label | SF Pro Text | 10pt | 500 | 1.0 | -0.24 | Bottom tab bar labels |
100
+ | Lyrics Current | SF Pro Display | 28pt | 700 | 1.2 | -0.3 | The currently-singing lyric line (scales up and fades in) |
101
+ | Lyrics Other | SF Pro Display | 22pt | 600 | 1.3 | -0.2 | Other visible lyric lines (non-current) |
102
+
103
+ ### Principles
104
+ - **Respect Dynamic Type everywhere**: Apple Music is one of the best-behaved apps for Dynamic Type — scale headlines, body, and metadata; keep Play button icon fixed, keep the mini-player fixed geometry
105
+ - **Use iOS text styles when available**: Headline, Body, Subheadline, Footnote, Caption 1/2 — these map 1:1 to iOS style tokens and respect accessibility automatically
106
+ - **SF Pro Display vs. Text switchover at 20pt**: Display for large, Text for small — the system handles this automatically if you use `.system` font, but custom sizes need explicit specification
107
+ - **Rounded is a hero moment only**: SF Pro Rounded appears on Listen Now editorial cards as a friendlier, more approachable vibe; the rest of the app stays on regular SF Pro
108
+ - **Letter spacing follows iOS defaults**: iOS ships pre-tuned tracking values for each style; don't override unless hero-sized (20pt+)
109
+ - **No italic**: Apple Music does not use italics anywhere — all emphasis comes from weight, color, or size
110
+ - **Lyrics type scales dynamically**: Current line is 28pt bold, adjacent lines are 22pt semibold, distant lines fade toward 18pt regular; this is driven by a scroll-sync that matches playback timing
111
+
112
+ ## 4. Component Stylings
113
+
114
+ ### Buttons
115
+
116
+ **Primary Play Button (The Red Circle)**
117
+ - Shape: Circle, diameter 64pt on Now Playing, 44pt on inline contexts (track row, album hero)
118
+ - Background: `#FA2D48`
119
+ - Icon: SF Symbol `play.fill` in `#FFFFFF`, 28pt on 64pt button, 20pt on 44pt button
120
+ - Pressed: scale 0.92, `.impact(.soft)` haptic
121
+ - Paused state: `pause.fill` icon
122
+ - Position on Now Playing: centered between prev/next, large 64pt size
123
+
124
+ **Primary Pill ("Play", "Shuffle Play", "Join Apple Music")**
125
+ - Background: `#FA2D48` (brand red) for most CTAs; occasionally iOS system blue `#007AFF` for "Join Apple Music"
126
+ - Text: `#FFFFFF` SF Pro Text 17pt weight 600
127
+ - Leading SF Symbol: often `play.fill` 15pt
128
+ - Padding: 10pt vertical, 24pt horizontal
129
+ - Corner radius: 8pt (rounded rectangle, not full pill — iOS Music's signature)
130
+ - Pressed: scale 0.97 with `.impact(.light)` haptic
131
+ - Width: often full-width in a section, or content-fit
132
+
133
+ **Secondary Button ("Shuffle", "Download", "Share")**
134
+ - Background: `#F2F2F7` light / `#2C2C2E` dark (system secondary)
135
+ - Text: label primary color SF Pro Text 15pt weight 500
136
+ - Leading SF Symbol 15pt
137
+ - Corner radius: 8pt
138
+ - Padding: 10pt vertical, 16pt horizontal
139
+ - Pressed: darker tint with `.impact(.light)`
140
+
141
+ **Icon Button (Heart / Shuffle / Repeat / More)**
142
+ - Size: 20-24pt SF Symbol glyph, 44pt hit area
143
+ - Default: label secondary color
144
+ - Active: `#FA2D48` (heart liked, shuffle on, repeat on)
145
+ - Pressed: scale 0.9 with `.impact(.soft)`
146
+
147
+ **Scrubber**
148
+ - Track: 4pt tall, `rgba(0,0,0,0.1)` light / `rgba(255,255,255,0.2)` dark
149
+ - Fill: `#FA2D48` (Apple Music Red) — left side of the scrubber from start to thumb
150
+ - Thumb: 16pt circle `#FFFFFF` with `rgba(0,0,0,0.2)` shadow, scale 1.2× during drag
151
+ - Time labels: 13pt weight 400 label secondary, "0:48" left, "-3:12" right
152
+
153
+ ### Cards & Containers
154
+
155
+ **Album / Playlist Tile (Standard)**
156
+ - Width: 160pt on most iPhones, 180pt on Pro Max
157
+ - Aspect: 1:1 square album art top, stacked text below
158
+ - Corner radius: **12pt** on the art — Apple Music's signature softer corner (vs. Spotify's 6pt)
159
+ - Gap between tiles: 16pt
160
+ - Structure:
161
+ - Art with 12pt radius, `rgba(0,0,0,0.08)` 0 4 16 shadow (light only — dark mode has no shadow)
162
+ - Title: SF Pro Text 15pt weight 600 primary label, 2-line clamp
163
+ - Subtitle (artist or description): SF Pro Text 13pt weight 400 secondary label, 1-line
164
+ - Tap: scale 0.96 with `.selection` haptic, opens album / playlist detail
165
+
166
+ **Hero Card (Listen Now)**
167
+ - Width: full width − 32pt horizontal margin (hero is 358pt wide on 390pt iPhone)
168
+ - Height: 380-420pt depending on content
169
+ - Structure:
170
+ - Full-bleed editorial image with 16pt corner radius and a subtle shadow
171
+ - Overlay gradient if text needs contrast: `rgba(0,0,0,0.3)` bottom 40%
172
+ - Micro-label on top-left (uppercase caption 2 "NEW RELEASE" in white)
173
+ - Centered or bottom-aligned hero text: SF Pro Rounded 24-34pt bold
174
+ - Optional CTA pill at bottom
175
+ - Tap: opens editorial feature or album
176
+
177
+ **Track Row**
178
+ - Height: 56pt
179
+ - Layout: 44×44pt square album thumbnail (8pt corner radius) → stacked title/artist → trailing ellipsis
180
+ - Pressed: background `rgba(0,0,0,0.05)` light / `rgba(255,255,255,0.1)` dark
181
+ - Title: SF Pro Text 17pt weight 400 primary
182
+ - Artist: SF Pro Text 15pt weight 400 secondary
183
+ - Currently-playing track: title stays primary, but a 3-bar red equalizer animation appears to the left of the thumbnail (same motif as Spotify but Apple Music red)
184
+ - Explicit tag: small `E` in a gray 18pt rounded rectangle before the title if explicit
185
+ - Dolby Atmos / Lossless badge: trailing right of the title on supported tracks
186
+
187
+ **Album / Playlist Detail Hero**
188
+ - Top: 240pt album artwork centered with `rgba(0,0,0,0.1)` 0 8 24 shadow
189
+ - Title below: SF Pro Display 22pt weight 700 primary
190
+ - Artist: SF Pro Text 17pt weight 400 `#FA2D48` (red — this is the one place artist names go red, and it's an interactive link)
191
+ - Metadata: "Album · 2024 · Apple Digital Master" 13pt weight 400 tertiary
192
+ - Action row:
193
+ - Large red Play button (44pt circle) with "Play" label SF Pro Text 17pt weight 600
194
+ - Shuffle Play secondary button (44pt, same treatment but gray background)
195
+ - Download / More icons trailing
196
+ - Below: track list scrolling down
197
+
198
+ **Now Playing (Full Screen)**
199
+ - Background: album-art-derived gradient (see Depth section)
200
+ - Large album art centered: 340pt × 340pt with `rgba(0,0,0,0.3)` 0 20 40 shadow
201
+ - When track changes: artwork cross-fades with a subtle scale animation
202
+ - Below artwork:
203
+ - Track title SF Pro Display 18pt weight 600
204
+ - Artist name SF Pro Text 15pt weight 400 at 70% opacity on primary label
205
+ - Scrubber with timestamps
206
+ - Control row: previous, 64pt red Play button, next — 32pt gap between controls
207
+ - Below: Volume slider, then AirPlay button, Lyrics button, share
208
+ - Bottom: up-next queue sheet indicator
209
+
210
+ **Mini-Player**
211
+ - Position: floats above tab bar, full width, 64pt tall
212
+ - Background: `.regularMaterial` blur with `rgba(255,255,255,0.8)` light / `rgba(28,28,30,0.8)` dark tint
213
+ - 44×44pt album art (8pt radius) leading, 12pt inset
214
+ - Center: track title 15pt weight 500 primary (1-line), artist 13pt weight 400 secondary (1-line)
215
+ - Trailing: play/pause 22pt SF Symbol (`play.fill` / `pause.fill`), then forward 22pt SF Symbol — 16pt gap between
216
+ - Tap anywhere: opens full Now Playing screen with matched-geometry artwork transition
217
+ - Swipe down while Now Playing is open: dismisses back to mini-player
218
+
219
+ **Lyrics View (The Signature Moment)**
220
+ - Activated from the Now Playing lyrics button
221
+ - Vertical scrolling stream of lyric lines
222
+ - Background: album-art-derived gradient, heavier than Now Playing
223
+ - Current line: SF Pro Display 28pt weight 700 bright primary (scales up from 22pt as it becomes active)
224
+ - Upcoming lines: 22pt weight 600 at 60% opacity, scrolled from below
225
+ - Past lines: 22pt weight 600 at 30% opacity, faded above
226
+ - Word-by-word highlight: within the current line, each word brightens as it's being sung (feature introduced for Apple's time-synced lyrics)
227
+ - Auto-scroll follows the song; tap on a line to jump to that timestamp
228
+ - Tap outside lyrics to return to Now Playing
229
+
230
+ **Station / Radio Card**
231
+ - Unique rectangular card (not square) with 16pt radius
232
+ - Height: 180pt
233
+ - Background: the station's branded artwork, full-bleed
234
+ - Overlay: gradient + station name + description in white
235
+ - Examples: Apple Music 1, Apple Music Country, personal stations
236
+
237
+ **Browse / Genre Grid**
238
+ - 2-column grid of genre tiles
239
+ - Each tile: rectangular (1.4:1 aspect), 16pt radius, genre-specific gradient background
240
+ - Centered type: SF Pro Rounded 22pt bold white
241
+
242
+ ### Navigation
243
+
244
+ **Top Nav (Standard)**
245
+ - Height: 44pt + safe area (uses iOS large-title transition — 96pt when expanded at top, collapses to 44pt on scroll)
246
+ - Background: transparent at top, `.regularMaterial` with tint on scroll
247
+ - Large title (when expanded): SF Pro Display 34pt weight 700 primary
248
+ - Compact title (when scrolled): SF Pro Text 17pt weight 600 center
249
+ - Leading: settings / profile gear icon 28pt circle avatar
250
+ - Trailing: search icon or contextual action
251
+
252
+ **Bottom Tab Bar**
253
+ - Height: 49pt + safe area (standard iOS tab bar)
254
+ - Background: `.regularMaterial` over `rgba(255,255,255,0.8)` light / `rgba(0,0,0,0.8)` dark
255
+ - 5 tabs: **Home** (Listen Now) → **New** (Browse) → **Radio** → **Library** → **Search**
256
+ - Icon size: 25pt SF Symbol, 49pt hit area
257
+ - Active: `#FA2D48` (Apple Music Red — interesting choice, since the tab indicator uses the brand red not system blue)
258
+ - Inactive: label secondary color
259
+ - Labels: SF Pro Text 10pt weight 500, shown always
260
+
261
+ **Search Bar (Search Tab)**
262
+ - Top of Search tab, large-title style
263
+ - Input: 36pt tall, corner radius 10pt, background `#E5E5EA` light / `#1C1C1E` dark
264
+ - Leading `magnifyingglass` SF Symbol 17pt label secondary
265
+ - Placeholder: "Artists, Songs, Lyrics, and More" SF Pro Text 17pt weight 400 label secondary
266
+
267
+ **Library Folder / Category Row**
268
+ - Icon-based list: each row has a leading 28pt SF Symbol (circle filled colored background)
269
+ - Examples: Playlists, Artists, Albums, Songs, Made for You, Downloaded
270
+ - 56pt row height, 8pt corner radius on the icon's colored square background
271
+ - Trailing: chevron `chevron.right` 15pt label secondary
272
+
273
+ ### Input Fields
274
+
275
+ **Search Bar**
276
+ - See Navigation above
277
+
278
+ **Comment / Message (in Apple Music social features)**
279
+ - Light fill, 10pt corner radius, SF Pro Text 17pt input type
280
+
281
+ ### Distinctive Components
282
+
283
+ **Dolby Atmos Badge**
284
+ - Small pill, background `#D4A857` (gold) with a subtle gradient shine
285
+ - Text "Dolby Atmos" SF Pro Text 11pt weight 600 white
286
+ - Appears on track rows, album detail, and Now Playing for Atmos-supported tracks
287
+ - Padding: 4pt vertical, 8pt horizontal, 500pt corner radius (full pill)
288
+ - Optional glow: `rgba(212,168,87,0.5)` 0 0 8 around the badge on Now Playing
289
+
290
+ **Lossless Badge**
291
+ - Similar to Atmos but silver: `#8E8E93` background, white text "Lossless" 11pt weight 600
292
+ - Shown alongside Atmos or solo
293
+
294
+ **Time-Synced Lyrics View**
295
+ - The signature Apple Music feature
296
+ - Covered in "Lyrics View" above
297
+ - Word-by-word highlight uses per-word timestamps from Apple's lyric provider; the implementation crossfades an overlay on the word being sung
298
+
299
+ **Equalizer Animation**
300
+ - Same 3-bar motif as Spotify but rendered in `#FA2D48`
301
+ - Appears on currently-playing track rows to the left of the album thumbnail
302
+ - Pauses when playback is paused
303
+
304
+ **Now Playing Expanding Transition**
305
+ - Mini-bar artwork shares geometry with Now Playing artwork using matched-geometry
306
+ - Now Playing scales up from bottom to fill screen over 0.35s spring
307
+ - Canvas fades from tab bar canvas to album-art gradient
308
+
309
+ **Album-Art Color Extraction**
310
+ - Apple uses a Core Image `CIAreaAverage` extraction plus a second-pass to identify a complementary color
311
+ - The Now Playing gradient uses both: primary color at top, complementary at bottom
312
+ - Extraction happens at track-change time and is cached per track
313
+
314
+ **"Up Next" Queue Sheet**
315
+ - From Now Playing, swipe up on the track title or tap the queue icon
316
+ - Opens a sheet showing the upcoming queue
317
+ - Each row: album art + title/artist + drag handle for reordering
318
+ - Swipe left on a row: "Delete" action
319
+ - "Add to Library" button below each track
320
+
321
+ ## 5. Layout Principles
322
+
323
+ ### Spacing System
324
+ - Base unit: 4pt (iOS standard)
325
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 44, 56, 72
326
+ - Standard margin: 16pt horizontal on content, 20pt on grouped list sections
327
+ - Row heights: 44pt (minimum touch), 56pt (track row), 64pt (mini-player), 80pt+ (editorial cards)
328
+ - Between horizontal tiles in a shelf: 16pt
329
+
330
+ ### Grid & Container
331
+ - Grid: full width with 16pt margins; content edges at 16pt inset
332
+ - Horizontal shelves: 16pt inset with last-tile peek
333
+ - Album/playlist tile grid: 2-column square grid, 16pt gap
334
+ - iPad: 3-column on portrait, 4-column on landscape
335
+
336
+ ### Whitespace Philosophy
337
+ - **Generous in Library and Listen Now**: The editorial experience — hero cards, section headers with room to breathe
338
+ - **Tight in track lists**: Playlist detail shows 56pt rows tightly packed
339
+ - **Extra-generous on Now Playing**: The centered artwork uses ~65% of viewport; breathing room everywhere else
340
+
341
+ ### Border Radius Scale
342
+ - Square (0pt): Not used — Apple Music always softens
343
+ - Signature (4pt): Rarely used; Apple Music prefers ≥ 8pt
344
+ - Standard (8pt): Small buttons, badges, small covers on track rows
345
+ - Pronounced (10pt): Search bar, cards
346
+ - Signature (12pt): Album / playlist tiles — THE Apple Music corner
347
+ - Hero (16pt): Listen Now editorial cards, Now Playing large art on expansion
348
+ - Full Pill (500pt): Dolby Atmos badge, filter chips
349
+ - Circle (50%): Play button, profile avatars, downloaded progress ring
350
+
351
+ ## 6. Depth & Elevation
352
+
353
+ | Level | Treatment | Use |
354
+ |-------|-----------|-----|
355
+ | Flat (Level 0) | No shadow | Track rows, list content |
356
+ | Subtle Card (Level 1) | `rgba(0,0,0,0.05) 0 2px 8px` (light only) | Album tiles, small cards |
357
+ | Standard Card (Level 2) | `rgba(0,0,0,0.08) 0 4px 16px` (light only) | Album detail hero, playlist art |
358
+ | Prominent Card (Level 3) | `rgba(0,0,0,0.1) 0 8px 24px` (light only) | Listen Now hero cards, Now Playing artwork |
359
+ | Now Playing Art | `rgba(0,0,0,0.3) 0 20px 40px` | Centered album art on Now Playing full screen |
360
+ | Sheet (Level 4) | `rgba(0,0,0,0.25) 0 -12px 32px` | Bottom sheets, Queue sheet |
361
+ | Mini-Player Material | `.regularMaterial` blur + `rgba(255,255,255,0.8)` tint | Mini-player floating above tab bar |
362
+ | Tab Bar Material | `.regularMaterial` + soft tint | Floating translucent tab bar |
363
+ | Modal Dim | `rgba(0,0,0,0.4)` + backdrop-blur | Modal dimming |
364
+
365
+ **Shadow Philosophy**: Apple Music uses shadows more generously than other media apps because the light mode canvas is pure `#FFFFFF` — tiles need shadow to read as raised cards. In dark mode, shadows disappear entirely; instead, surface-color steps (`#000000` → `#1C1C1E` → `#2C2C2E`) carry the elevation. The Now Playing artwork carries the most prominent shadow in the app — a 40pt blur at 30% opacity that makes the art feel like it's floating in space. Materials (blurs) are used extensively for nav, tab bar, and mini-player, giving the app that signature iOS translucency feel.
366
+
367
+ ### Motion
368
+ - **Play button tap**: Scale 0.92 spring + `.impact(.soft)` haptic
369
+ - **Track change on Now Playing**: Artwork cross-fades with subtle scale (0.98 → 1.0) over 400ms
370
+ - **Mini-player → Full Now Playing**: Shared-element artwork scales from 44pt → 340pt, 0.35s spring damping 0.8
371
+ - **Equalizer bars**: Continuous animation on currently-playing row (same as Spotify but red)
372
+ - **Lyrics scroll**: Each new line scales from 22pt to 28pt and brightens from 60% to 100% over 300ms, synchronized with audio
373
+ - **Like heart tap**: Heart fills red, 1.0 → 1.2 → 1.0 bounce over 300ms with `.success` haptic
374
+ - **Shuffle toggle**: Icon color transitions from secondary to red with 200ms ease; `.selection` haptic
375
+ - **Download progress**: Circular arc sweeps around the download icon, fills as download progresses
376
+ - **Large title to compact title**: Standard iOS large-title scroll behavior — 34pt shrinks to 17pt as user scrolls up
377
+ - **Long press on tile**: Scale 0.96 + haptic, context menu springs in with blur dim
378
+ - **Browse tab color swap**: Tapping a genre tile animates a full-screen color wash transitioning to the genre's theme
379
+
380
+ ## 7. Do's and Don'ts
381
+
382
+ ### Do
383
+ - Use SF Pro exclusively — Apple Music is Apple's flagship first-party app; resist adding custom fonts
384
+ - Use `#000000` as the dark canvas — full-contrast black, not `#121212`
385
+ - Use 12pt corner radius on album art tiles — larger than most media apps, Apple Music's signature
386
+ - Reserve Apple Music Red (`#FA2D48`) for the Play button, Now Playing indicator, heart, shuffle active, and scrubber fill
387
+ - Use iOS system materials (`.regularMaterial`) for nav, tab bar, and mini-player backgrounds
388
+ - Use SF Symbols for every icon — never ship a custom glyph that has an SF Symbol equivalent
389
+ - Respect Dynamic Type at all sizes — Apple Music is one of the best-behaved apps for AX5
390
+ - Extract album-art colors for Now Playing gradient using Core Image
391
+ - Implement time-synced lyrics with word-by-word highlight when lyric data is available
392
+ - Show Dolby Atmos and Lossless badges on supported tracks
393
+ - Use iOS haptics: `.soft` on Play, `.success` on heart like, `.selection` on shuffle / tab
394
+ - Use iOS large-title navigation with scroll-collapse behavior
395
+ - Use system blue `#007AFF` for inline links (artist names in descriptions), NOT Apple Music red
396
+
397
+ ### Don't
398
+ - Don't use a custom font — SF Pro covers every need in Apple Music
399
+ - Don't use `#121212` or warmer dark canvases — Apple Music goes full `#000000`
400
+ - Don't use 6pt corner radius on album art — 12pt is signature, softer
401
+ - Don't use Apple Music Red for secondary actions, borders, or generic accents — use system blue, gray, or label colors
402
+ - Don't roll your own Play button when SF Symbol `play.fill` exists
403
+ - Don't disable Dynamic Type — Apple Music is a poster-child app for accessibility
404
+ - Don't flatten materials to opaque backgrounds — the translucency is part of the app's identity
405
+ - Don't hide the mini-player during active playback — it's persistent UX
406
+ - Don't use italic text — Apple Music never uses italic; emphasis comes from weight / color / size
407
+ - Don't animate aggressively — iOS motion is subtle, 250–400ms ranges, damping 0.7–0.85
408
+ - Don't show the Dolby Atmos badge on non-Atmos tracks — it's a capability indicator, not a theme
409
+ - Don't use red for the link-to-artist text globally — artist name on album detail IS red, but inline links in description should be system blue
410
+
411
+ ## 8. Responsive Behavior
412
+
413
+ ### Device Sizes
414
+ | Device | Width | Key Changes |
415
+ |--------|-------|-------------|
416
+ | iPhone SE (3rd gen) | 375pt | Tile width 150pt; large title shrinks to 28pt faster on scroll |
417
+ | iPhone 13/14/15 | 390pt | Standard tile 160pt; hero cards 358pt wide |
418
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in top nav |
419
+ | iPhone 15/16 Pro Max | 430pt | Tile 180pt; Now Playing art scales to 360pt |
420
+ | iPad portrait | 768pt | 3-column grid, hero cards 2-up, Now Playing sheet covers ~70% height |
421
+ | iPad landscape | 1024pt+ | 4-column grid, Now Playing overlay instead of full-screen |
422
+
423
+ ### Dynamic Type
424
+ - **Full Dynamic Type support from XS to AX5**: every text style except the Play button icon, scrubber thumb, and mini-player geometry scales with user preference
425
+ - Listen Now hero titles: scale up to ~40pt at AX5
426
+ - Track titles / artist: scale with headline / subheadline text styles
427
+ - Mini-player: has a fallback layout that shows only artwork + play when at AX5 (text becomes too large to fit)
428
+ - Lyrics: current-line text scales up to 36pt at AX5
429
+
430
+ ### Orientation
431
+ - Home / Search / Library / Radio: **portrait-locked** on iPhone
432
+ - Now Playing: **rotates to landscape** — album art centers, controls shift to the right side
433
+ - Lyrics view: **portrait-locked** (lyric rendering is vertical)
434
+ - Video content (Apple Music TV / music video): rotates to landscape
435
+ - iPad: supports all orientations with adaptive layouts
436
+
437
+ ### Touch Targets
438
+ - Play button (Now Playing): 64pt — way over minimum
439
+ - Play button (inline): 44pt (iOS minimum)
440
+ - Track rows: 56pt tall, full-width tappable
441
+ - Tab bar icons: 25pt SF Symbol, 49pt hit area
442
+ - Ellipsis / overflow: 44pt hit
443
+
444
+ ### Safe Area Handling
445
+ - Top: standard iOS large-title nav respects safe area / Dynamic Island
446
+ - Bottom: mini-player floats above tab bar; both respect home indicator
447
+ - Now Playing: artwork respects safe area top, controls respect bottom
448
+ - Lyrics view: top safe area for header, bottom safe area respected
449
+
450
+ ## 9. Agent Prompt Guide
451
+
452
+ ### Quick Color Reference
453
+ - Light canvas: `#FFFFFF`
454
+ - Dark canvas: `#000000`
455
+ - Surface 1 (light): `#F2F2F7`
456
+ - Surface 1 (dark): `#1C1C1E`
457
+ - Surface 2 (dark): `#2C2C2E`
458
+ - Divider (light): `#C6C6C8`
459
+ - Divider (dark): `#38383A`
460
+ - Label primary (light): `#000000`
461
+ - Label primary (dark): `#FFFFFF`
462
+ - Label secondary (light): `#3C3C43` at 60% opacity
463
+ - Label secondary (dark): `#EBEBF5` at 60% opacity
464
+ - Apple Music Red: `#FA2D48`
465
+ - Apple Music Coral: `#FC3C44`
466
+ - Red pressed: `#D4213B`
467
+ - Dolby Atmos gold: `#D4A857`
468
+ - Lossless silver: `#8E8E93`
469
+ - iOS system blue: `#007AFF`
470
+
471
+ ### Example Component Prompts
472
+ - "Create a SwiftUI Apple Music Play button: 64pt circular button, background `#FA2D48`. SF Symbol `play.fill` in white 28pt weight bold. Pressed: scale 0.92 with `.impact(.soft)` haptic. Used as the primary playback control on the Now Playing screen, flanked by 32pt skip-backward and skip-forward SF Symbols with 32pt spacing."
473
+ - "Build an Apple Music album tile: 1:1 square image with 12pt corner radius (Apple Music's signature softer corner, not Spotify's 6pt). Light mode shadow `rgba(0,0,0,0.08) 0 4px 16px`, no shadow in dark mode. Below the art: title in SF Pro Text 15pt weight 600 primary label (2-line clamp), subtitle artist in 13pt weight 400 secondary label (1-line). 16pt gap between tiles. Tap: scale 0.96 with `.selection` haptic."
474
+ - "Design the Apple Music mini-player: 64pt tall, positioned above the tab bar, full width. Background: `.regularMaterial` blur with `rgba(255,255,255,0.8)` tint in light mode / `rgba(28,28,30,0.8)` in dark. 44×44pt album art (8pt radius) leading with 12pt inset. Center: track title SF Pro Text 15pt weight 500 primary (1-line) + artist 13pt weight 400 secondary (1-line). Trailing: 22pt `play.fill` / `pause.fill` SF Symbol, then 22pt `forward.fill` SF Symbol, 16pt gap. Tap: opens Now Playing with shared-element artwork transition."
475
+ - "Build the Apple Music Now Playing full-screen: background is a vertical linear gradient extracted from the album art's dominant color at top transitioning to a darker complementary at bottom. 340×340pt album art centered with `rgba(0,0,0,0.3) 0 20px 40px` shadow. Below: track title SF Pro Display 18pt weight 600 primary, artist 15pt weight 400 at 70% opacity. Scrubber with 4pt track `rgba(0,0,0,0.1)`, `#FA2D48` fill, 16pt white circular thumb. Controls row: `backward.fill` 32pt + 64pt red Play button + `forward.fill` 32pt with 32pt gaps. Below controls: volume slider and row of secondary icons (AirPlay, lyrics, share)."
476
+ - "Create the Apple Music time-synced lyrics view: vertical stream of lyric lines over album-art gradient background. Current line: SF Pro Display 28pt weight 700 bright primary label (scales up from 22pt as it becomes active). Upcoming lines: 22pt weight 600 at 60% opacity. Past lines: 22pt weight 600 at 30% opacity. Within the current line, each word highlights from secondary to primary as it's sung (word-by-word time-synced). Auto-scroll follows the song; tap a line to jump to that timestamp."
477
+ - "Design a Dolby Atmos badge: small pill, background `#D4A857` with a subtle internal gradient for shine, text 'Dolby Atmos' SF Pro Text 11pt weight 600 white. Padding 4pt vertical / 8pt horizontal, 500pt corner radius. On Now Playing, add a gentle `rgba(212,168,87,0.5) 0 0 8` glow. Only show on tracks that support Dolby Atmos — this is a capability indicator, not a theme."
478
+ - "Build the Apple Music bottom tab bar: 49pt + safe area, `.regularMaterial` blur over `rgba(255,255,255,0.8)` tint light / `rgba(0,0,0,0.8)` dark. 5 tabs: Home (house), New (music.note.list), Radio (dot.radiowaves.left.and.right), Library (square.stack), Search (magnifyingglass). Icon size 25pt SF Symbol. Active tint: `#FA2D48` (Apple Music Red — distinctive choice). Inactive: label secondary. Labels SF Pro Text 10pt weight 500 always shown."
479
+
480
+ ### Iteration Guide
481
+ 1. SF Pro throughout — never add a custom font; use iOS text styles (Headline, Body, Subheadline, Footnote, Caption) where possible
482
+ 2. Dark canvas is true black `#000000`, not `#121212` — unique among media apps
483
+ 3. Apple Music Red `#FA2D48` is the primary accent — Play button, heart, shuffle active, scrubber fill, tab indicator
484
+ 4. Album tiles use 12pt corner radius — signature softer-than-Spotify corner
485
+ 5. Hero cards on Listen Now use 16pt radius and SF Pro Rounded type for editorial feel
486
+ 6. Dolby Atmos badge is gold `#D4A857`, Lossless is silver `#8E8E93` — capability indicators, not themes
487
+ 7. Time-synced lyrics with word-by-word highlight is a defining feature — implement when lyric data is available
488
+ 8. iOS system materials (`.regularMaterial`) for nav, tab bar, mini-player — lean into iOS translucency
489
+ 9. Mini-player persists above tab bar during playback — matches iOS platform convention
490
+ 10. Now Playing uses album-art-extracted gradient background — Core Image `CIAreaAverage` + complementary-color derivation
491
+ 11. Haptics: `.soft` on Play, `.success` on heart like, `.selection` on shuffle / tab / chip, `.light` on button tap
492
+ 12. Respect Dynamic Type from XS to AX5 — Apple Music is a best-in-class accessibility app
493
+ 13. Large-title nav pattern is standard — 34pt shrinks to 17pt on scroll
494
+ 14. Shadows are generous in light mode on tiles and cards; dark mode uses surface-color steps instead