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,408 @@
1
+ # Design System Inspiration of MyFitnessPal (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ MyFitnessPal's iOS app is a calorie ledger trying its hardest not to feel like one. Where Strava is theatrical and Whoop is clinical, MyFitnessPal is a *spreadsheet with a kind face* — a polished food diary that has logged a billion meals and learned to make data entry feel like progress. The canvas is pure white, the chrome is light blue, and the unmistakable hero of the home screen is the giant ring of calories remaining: a thick circular gauge that flips from light gray (untouched) to MFP Blue (filled) as the day's eating accumulates. Every screen is in service of that ring — log a food, scan a barcode, add an exercise, and the ring redraws.
6
+
7
+ The accent is **MFP Blue** (`#005DAA`) — a confident, slightly desaturated navy-blue that has been the brand color since the Under Armour acquisition in 2015, with a brighter modernized **Lake Blue** (`#0072CE`) introduced in the 2022 refresh that's now used on most CTAs and the calorie ring fill. The palette is otherwise clinical: white canvas, gentle `#F5F7FA` surface for cards and food-log rows, charcoal `#1F2937` text, and a small set of semantic accents — green for "under your goal", orange for "approaching limit", red for "over". The macro donut (Carbs / Fat / Protein) uses a fixed trio — `#FF9F1C` orange, `#A463F2` purple, `#19C37D` green — that's been stable for years and is instantly recognizable to any returning user.
8
+
9
+ Typography is **SF Pro** on iOS, with the brand sometimes substituting **Proxima Nova** for marketing — both are no-nonsense geometric sans faces that prioritize legibility of numerals. The numerals are the whole point: MyFitnessPal is a numbers app, and big tabular-figure totals (`1,847`, `−312`, `64g`) carry the screen. Type uses tight tabular numerals on the calorie ring, the macro percentages, the goal weight, and every gram count in the diary; everything else is the system default proportional.
10
+
11
+ **Key Characteristics:**
12
+ - White canvas (`#FFFFFF`) with Surface Gray (`#F5F7FA`) for diary rows, food-database results, and section fills
13
+ - MFP Blue (`#005DAA`) as the persistent brand anchor; Lake Blue (`#0072CE`) as the modernized action color for CTAs, ring fills, and active tabs
14
+ - The Calorie Remaining donut — 220pt diameter on home, a giant tabular-figure number in the middle, color flips green → blue → orange → red as you eat through the day
15
+ - Macro donut trio — orange `#FF9F1C` Carbs, purple `#A463F2` Fat, green `#19C37D` Protein — never reorder these
16
+ - Diary screen organized as meal sections (Breakfast / Lunch / Dinner / Snacks) with a leading "+" Add Food row in each
17
+ - Barcode scanner is a hero feature — a dedicated centered FAB on the Diary tab pops a full-screen camera with a horizontal scan line
18
+ - Tab bar (5 tabs): Dashboard, Diary, Plans, Community, More — bottom-anchored with iconic SF Symbols
19
+ - SF Pro at every size with **tabular numerals** on every number that summarizes nutrition
20
+ - Subtle elevation only — MyFitnessPal is a content-first app, drop shadows are 4% opacity and short
21
+
22
+ ## 2. Color Palette & Roles
23
+
24
+ ### Primary
25
+ - **MFP Blue** (`#005DAA`): Heritage primary — logomark "M" plate, Premium upsell banner, large nav title accents.
26
+ - **Lake Blue** (`#0072CE`): Current primary action color — Add Food CTA, ring fill at "on track", active tab tint, link color in food labels.
27
+ - **Lake Blue Pressed** (`#005FA8`): Pressed state on all Lake Blue CTAs.
28
+ - **Sky Blue** (`#E7F0FF`): Background tint for selected meal sections, info pills, "Quick Tools" cards.
29
+
30
+ ### Macro Trio (do not reorder, do not recolor)
31
+ - **Carbs Orange** (`#FF9F1C`): Always the first slice of the macro donut.
32
+ - **Fat Purple** (`#A463F2`): Always the second slice.
33
+ - **Protein Green** (`#19C37D`): Always the third slice.
34
+
35
+ ### Canvas, Surfaces & Dividers
36
+ - **Canvas White** (`#FFFFFF`): Primary canvas everywhere.
37
+ - **Surface Gray** (`#F5F7FA`): Diary section backgrounds, food-row backgrounds on tap-down, dashboard card fills.
38
+ - **Surface Gray 2** (`#E5E9F0`): Chip fills, input fields, progress-bar tracks.
39
+ - **Divider** (`#E5E7EB`): Hairline dividers between diary rows, between meals, under the nav bar.
40
+ - **Hairline** (`#EEF1F5`): Lighter divider used inside dashboard cards.
41
+
42
+ ### Text
43
+ - **Ink** (`#1F2937`): Primary text — food names, meal section titles, numeric totals.
44
+ - **Slate** (`#4B5563`): Secondary text — serving size text, gram counts in metadata position, body copy.
45
+ - **Mute** (`#9CA3AF`): Tertiary — placeholder, disabled, "0 of 1 servings" empty hints.
46
+ - **Hero Number** (`#111827`): The big calorie-remaining number — even darker than Ink for emphasis.
47
+
48
+ ### Semantic
49
+ - **Under Goal Green** (`#19C37D`): "−312 cal remaining" when under the goal, weight-loss confirmation.
50
+ - **Approaching Amber** (`#F59E0B`): When you're within 200 cal of your limit.
51
+ - **Over Limit Red** (`#EF4444`): When you've exceeded the daily goal, weight-gain bar.
52
+ - **Streak Orange** (`#FB923C`): The fire glyph for daily-streak badges.
53
+ - **Premium Gold** (`#D4A437`): Premium subscription badges, gated-feature locks.
54
+
55
+ ### Dark Mode
56
+ MyFitnessPal added dark mode in 2020. It's a deep, slightly-blue dark — not pure black.
57
+ - **Dark Canvas** (`#0F1419`): Primary dark background.
58
+ - **Dark Surface 1** (`#1A1F26`): Cards, diary rows, sheets.
59
+ - **Dark Surface 2** (`#252B33`): Pressed states, chip fills.
60
+ - **Dark Divider** (`#2A2F37`): Hairlines.
61
+ - **Dark Text Primary** (`#F3F4F6`): Inverted Ink.
62
+ - **Dark Text Secondary** (`#9CA3AF`): Inverted Slate.
63
+ - **Lake Blue (dark)** (`#3B8FDF`): Brighter blue for OLED legibility; CTAs lift slightly.
64
+
65
+ ## 3. Typography Rules
66
+
67
+ ### Font Family
68
+ - **Primary**: `SF Pro` (Display / Text — automatic switching at 20pt)
69
+ - **Marketing / Web**: `Proxima Nova` (proprietary licensed face used on marketing)
70
+ - **Numbers**: Always set with `font-variant-numeric: tabular-nums` so 1's and 7's align in the diary stack
71
+ - **Fallback stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', 'Helvetica Neue', Arial, sans-serif`
72
+
73
+ ### Hierarchy
74
+
75
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
76
+ |------|------|------|--------|-------------|----------------|-------|
77
+ | Calorie Hero | SF Pro Display | 56pt | 700 (Bold) | 1.0 | -1.0pt | The giant "1,247" inside the calorie ring |
78
+ | Calorie Hero Label | SF Pro Text | 13pt | 600 | 1.0 | 0.6pt | "REMAINING" in uppercase under the number |
79
+ | Large Nav Title | SF Pro Display | 28pt | 700 | 1.15 | -0.4pt | "Diary", "Dashboard", "Plans" |
80
+ | Section Header | SF Pro Display | 22pt | 700 | 1.2 | -0.3pt | "Today's Meals", "Recent Foods" |
81
+ | Meal Title | SF Pro Text | 18pt | 600 | 1.2 | -0.2pt | "Breakfast", "Lunch", "Dinner", "Snacks" |
82
+ | Food Name | SF Pro Text | 16pt | 500 (Medium) | 1.3 | -0.1pt | "Greek Yogurt, Plain, Nonfat" |
83
+ | Food Subtitle | SF Pro Text | 13pt | 400 | 1.3 | 0pt | "1 cup, 8 oz · Chobani" |
84
+ | Diary Calorie | SF Pro Text | 16pt | 600 tnum | 1.0 | 0pt | "120" right-aligned on each row |
85
+ | Body | SF Pro Text | 15pt | 400 | 1.4 | 0pt | Article copy, plans descriptions |
86
+ | Body Small | SF Pro Text | 13pt | 400 | 1.4 | 0pt | Help text, footers |
87
+ | Macro Number | SF Pro Display | 22pt | 700 tnum | 1.0 | -0.3pt | "187g" Carbs total |
88
+ | Macro Label | SF Pro Text | 11pt | 600 | 1.0 | 0.8pt uppercase | "CARBS / FAT / PROTEIN" |
89
+ | Button (Primary) | SF Pro Text | 16pt | 600 | 1.0 | 0pt | "Add Food", "Log Exercise" |
90
+ | Tab Label | SF Pro Text | 10pt | 600 | 1.0 | 0.2pt | Bottom tab labels |
91
+ | Streak Badge | SF Pro Text | 12pt | 700 tnum | 1.0 | 0pt | "42 day streak" |
92
+
93
+ ### Principles
94
+ - **Tabular numerals on every number** in a diary, ring, or chart context — 1's and 0's align vertically so totals "stack visually"
95
+ - **Weight ladder concentrated at 400 / 500 / 600 / 700**: SF Pro's regular for body, medium for food names, semibold for totals and meal titles, bold for nav and hero numbers
96
+ - **Tight tracking at display sizes** (-1.0pt on the 56pt calorie number), neutral at 16pt body
97
+ - **Uppercase labels with tracking** for short status words: "REMAINING", "CARBS / FAT / PROTEIN", "TODAY"
98
+ - **Ink over pure black**: body sits at `#1F2937`, not `#000000` — the app feels approachable, not surgical
99
+ - **Dynamic Type respected** on body and meal titles; fixed sizes on the calorie hero number, macro numbers, and tab labels
100
+
101
+ ## 4. Component Stylings
102
+
103
+ ### Buttons
104
+
105
+ **Primary CTA ("Add Food", "Log Exercise", "Complete Diary")**
106
+ - Background: `#0072CE` (Lake Blue)
107
+ - Text: `#FFFFFF`, SF Pro 16pt weight 600
108
+ - Padding: 14pt vertical, 28pt horizontal
109
+ - Corner radius: 12pt (rounded rectangle — never a full pill on the primary CTA)
110
+ - Height: 48pt minimum
111
+ - Pressed: background `#005FA8`, scale 0.98
112
+ - Haptic: `.impactOccurred(.light)` on tap; `.notificationOccurred(.success)` on "Complete Diary"
113
+
114
+ **Secondary Tinted Button ("Quick Add", "Copy Yesterday")**
115
+ - Background: `#E7F0FF` (Sky Blue tint)
116
+ - Text: `#0072CE`, SF Pro 16pt weight 600
117
+ - Corner radius: 12pt
118
+ - Same height/padding as primary
119
+
120
+ **Outline Button ("Cancel", filter applies)**
121
+ - Background: transparent
122
+ - Border: 1pt `#E5E7EB`
123
+ - Text: `#1F2937`, SF Pro 16pt weight 500
124
+ - Corner radius: 12pt
125
+
126
+ **FAB / Scan Barcode Button (Diary tab)**
127
+ - 56pt circle, centered in the Diary screen above the tab bar
128
+ - Background: `#0072CE` Lake Blue with a `rgba(0,93,170,0.35) 0 6px 16px` blue-tinted shadow
129
+ - Icon: `barcode.viewfinder` SF Symbol, 24pt, white
130
+ - Haptic: `.impactOccurred(.medium)` on tap → opens the full-screen scanner with a horizontal red laser line that pulses
131
+
132
+ **Plus Add-Food Row ("+ Add Food")**
133
+ - Inline row at the top of each meal section
134
+ - Text: Lake Blue `#0072CE`, SF Pro 15pt weight 600
135
+ - Leading 24pt SF Symbol `plus.circle.fill` in Lake Blue
136
+ - 56pt row height, full-width tap target, no background
137
+ - Pressed: background fades to `#F5F7FA` for 200ms
138
+
139
+ ### Cards & Containers
140
+
141
+ **Calorie Ring (the hero of Dashboard / Home)**
142
+ - Diameter: 220pt on iPhone Pro/Max; 180pt on iPhone SE
143
+ - Stroke width: 18pt
144
+ - Background ring: `#E5E9F0` (Surface Gray 2)
145
+ - Filled ring: gradient depending on remaining state
146
+ - Under goal: `#19C37D` (Under Goal Green)
147
+ - On track (consumed 60–95% of goal): `#0072CE` (Lake Blue) — the most common state
148
+ - Approaching (95–100%): `#F59E0B` (Approaching Amber)
149
+ - Over: `#EF4444` (Over Limit Red)
150
+ - Center stack (top to bottom): "REMAINING" label 13pt 600 uppercase tracking 0.6pt → 56pt 700 tabular number → "calories" 13pt 500 in Slate
151
+ - Goal/Food/Exercise mini-rows below the ring: each shows a number + uppercase label (e.g., `2,000` over `GOAL`, `753` over `FOOD`, `0` over `EXERCISE`)
152
+ - Update animation: ring fills via stroke-dasharray transition over 600ms ease-out; the center number ticks via a quick number-flip when you add a food
153
+
154
+ **Macro Donut (Carbs / Fat / Protein breakdown)**
155
+ - Diameter: 96pt
156
+ - Stroke width: 10pt
157
+ - Slices: orange `#FF9F1C` (Carbs) → purple `#A463F2` (Fat) → green `#19C37D` (Protein), in that order, clockwise from 12 o'clock
158
+ - Center number: total carbs+fat+protein percentage left of goal in 22pt 700 tabular
159
+ - Legend rows below the donut: 8pt color square + label (`CARBS`) + value (`187g · 65%`) — three rows
160
+ - Hit target: tapping a slice highlights its legend row with a 1pt outline
161
+
162
+ **Food Row (in a meal section, Diary tab)**
163
+ - Height: 64pt minimum
164
+ - Background: `#FFFFFF` default, `#F5F7FA` on press
165
+ - Layout (leading to trailing): 8pt indent → food name (16pt 500 `#1F2937`, 1-line truncate) → 2pt gap → subtitle "1 cup · 8 oz · Chobani" (13pt 400 `#4B5563`, 1-line truncate) → flex spacer → calorie value (16pt 600 tabular `#1F2937`) → 16pt trailing inset → 12pt chevron `#9CA3AF`
166
+ - Divider: 0.5pt `#E5E7EB` between rows, inset 16pt from leading
167
+ - Swipe-left: reveals Delete (red `#EF4444` fill) and More (Slate `#4B5563`)
168
+
169
+ **Meal Section Header (Breakfast / Lunch / Dinner / Snacks)**
170
+ - Height: 48pt
171
+ - Background: `#FFFFFF`
172
+ - Layout: meal name 18pt 600 `#1F2937` on the left + total calories tabular 16pt 600 `#1F2937` on the right (e.g., "Lunch ... 487")
173
+ - 0.5pt `#E5E7EB` divider below
174
+ - Tap: expands/collapses the meal section with a 250ms ease-out height transition
175
+
176
+ **Dashboard Card (Steps, Weight, Water, Plans modules)**
177
+ - Background: `#FFFFFF`
178
+ - Border: 1pt `#E5E7EB`
179
+ - Corner radius: 16pt
180
+ - Padding: 16pt all sides
181
+ - Shadow: none on outer card, `rgba(0,0,0,0.04) 0 1px 3px` on hover/press for subtle lift
182
+ - Title row: 11pt 600 uppercase Slate label + trailing icon (e.g., `figure.walk` for Steps) sized 14pt
183
+ - Big number: SF Pro Display 28pt 700 tabular `#111827`
184
+ - Subtitle: 13pt 400 Slate (e.g., "8,432 of 10,000 steps")
185
+ - Progress bar at the bottom: 6pt tall, `#E5E9F0` track, Lake Blue `#0072CE` fill, 3pt corner radius
186
+
187
+ **Search Bar (Food database search)**
188
+ - Background: `#F5F7FA`
189
+ - Height: 44pt
190
+ - Corner radius: 12pt
191
+ - Leading `magnifyingglass` 16pt `#4B5563`
192
+ - Placeholder: "Search foods or scan a barcode" SF Pro 15pt 400 `#9CA3AF`
193
+ - Trailing: `barcode.viewfinder` 18pt Lake Blue tap target
194
+
195
+ **Barcode Scanner Camera Overlay**
196
+ - Full-screen black background with the camera feed centered
197
+ - Horizontal scan-line guide: 1pt red `#EF4444` line spanning the full width, pulsing opacity 0.4 → 1.0 every 1200ms
198
+ - Corner brackets: 4 white 3pt-thick L-brackets framing a 280pt × 180pt scan window
199
+ - Top: "Scan a barcode" 17pt 600 white centered with a back chevron leading
200
+ - Bottom: "Can't scan? Search manually →" Lake Blue text-button white background
201
+ - Haptic on capture: `.notificationOccurred(.success)`
202
+
203
+ ### Navigation
204
+
205
+ **Large-Title Nav Bar**
206
+ - Height: variable — 96pt with large title, collapses to 44pt inline
207
+ - Background: `#FFFFFF`, becomes `.regularMaterial` blur when content scrolls under
208
+ - Title: SF Pro Display 28pt 700 `#1F2937`, left-aligned, 16pt leading inset
209
+ - Trailing: 24pt SF Symbol (often `bell` for notifications or `person.crop.circle`)
210
+ - Date row (Diary only): "Today, May 14" in 14pt 500 Slate with `chevron.down` for date picker
211
+
212
+ **Bottom Tab Bar**
213
+ - Height: 50pt + safe area
214
+ - Background: `#FFFFFF` with 0.5pt `#E5E7EB` top divider; `.regularMaterial` blur when content scrolls beneath
215
+ - Tabs (5): Dashboard, Diary, Plans, Community, More
216
+ - Icon size: 22pt, SF Symbols (`square.grid.2x2`, `book.closed`, `list.clipboard`, `person.3`, `ellipsis`)
217
+ - Active tint: `#0072CE` Lake Blue (icon + label)
218
+ - Inactive: `#9CA3AF` Mute
219
+ - Labels: SF Pro 10pt 600, always visible
220
+ - Tap haptic: `.selectionChanged()`
221
+
222
+ **Tab Bar FAB (the Diary Tab is special)**
223
+ - A 56pt circular Lake Blue button sits *centered above* the Diary tab icon
224
+ - Icon: `plus` in 22pt white
225
+ - Tap action: opens Add Food drawer (sheet from bottom with options Scan Barcode / Search Food / Quick Add / Recent / My Foods)
226
+
227
+ ### Input Fields
228
+
229
+ **Quick Add Number Pad**
230
+ - Modal sheet from the bottom, 320pt height
231
+ - Big number display: 40pt 700 tabular `#111827` centered at top
232
+ - Number pad: 3×4 grid of 64pt buttons; tap target 80pt; background `#F5F7FA`, pressed `#E5E9F0`
233
+ - Bottom: cancel (text-link Slate) + Add (Lake Blue pill)
234
+
235
+ **Serving Size Stepper**
236
+ - "Number of Servings" row with a `−` button (32pt circle, `#F5F7FA` background, `#1F2937` glyph), tabular number `2.0` in 18pt 600, and a `+` button matching
237
+ - Tap and hold accelerates the increment (multiplies after 1s)
238
+
239
+ ### Distinctive Components
240
+
241
+ **Weekly Weight Trend Card**
242
+ - 160pt tall card with a line chart of the last 7 weight entries
243
+ - X-axis: 7 mini dots, one per day; current day filled Lake Blue, others outlined
244
+ - Line: 2pt Lake Blue stroke with a subtle linear gradient fill underneath (Lake Blue → transparent, 12% opacity)
245
+ - Y-axis labels: top and bottom only, in 11pt 500 Mute, e.g., "162.4" and "159.8"
246
+ - Tap a dot: a tooltip pops up with date + weight in 13pt 600 over a 4pt-radius dark callout
247
+
248
+ **Streak Flame Badge**
249
+ - 32pt orange flame glyph (`flame.fill` SF Symbol filled `#FB923C`) + "42 day streak" 12pt 700 tabular
250
+ - Appears in the top-right of the Dashboard large nav; also at the top of Diary on a 7-day streak milestone
251
+ - On 7/30/100/365 day milestones, a small confetti burst plays once
252
+
253
+ **Plus Premium Upsell Banner**
254
+ - Full-width banner, 80pt tall, background gradient `#005DAA` → `#0072CE`
255
+ - Left: white "Premium" badge + "Ad-free diary, custom macros, deeper insights" in 14pt 500 white
256
+ - Right: "Try Free →" white pill, MFP Blue text
257
+ - Persists on Dashboard for non-Premium users; dismissable
258
+
259
+ **Logo Block (M square)**
260
+ - The MFP heritage mark is a rounded square `#005DAA` background with a white serif "M" in the center
261
+ - 32pt corner radius on the square at large sizes (96pt+); 8pt radius at app-icon scale (40pt)
262
+ - Used in About, splash, and the avatar fallback when no profile photo is set
263
+
264
+ ## 5. Layout Principles
265
+
266
+ ### Spacing System
267
+ - Base unit: 4pt
268
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80
269
+ - Standard horizontal margin: 16pt on Diary and Dashboard; 24pt on detail screens (Food Detail, Settings)
270
+ - Section vertical gap: 32pt between major sections on Dashboard; 24pt between meal sections on Diary
271
+
272
+ ### Grid & Container
273
+ - Content width: full device width minus 16pt horizontal margins on Diary
274
+ - Dashboard cards: 2-col grid for Steps/Water/Weight modules (8pt gap); full-width cards for Plans/Insights
275
+ - Calorie ring: centered in a full-width container, vertical padding 32pt top and 24pt bottom
276
+
277
+ ### Whitespace Philosophy
278
+ - **Numbers breathe**: the big calorie number gets 64pt of vertical space around it on Dashboard — the ring is the screen
279
+ - **Diary rows compress**: 64pt tall rows let you scan many foods quickly; this is intentional density
280
+ - **Sticky tab bar + FAB compress the viewport** — the bottom 110pt is always chrome on Diary; plan list heights accordingly
281
+
282
+ ### Border Radius Scale
283
+ - Square (0pt): horizontal-divider hairlines only
284
+ - Small (4pt): badge pills, tooltip callouts
285
+ - Medium (8pt): chip backgrounds, alert banners
286
+ - Standard (12pt): primary CTAs, secondary tinted buttons, search bar, input fields
287
+ - Comfortable (16pt): dashboard cards, sheet containers
288
+ - Soft (24pt): bottom-sheet top corners
289
+ - Full Pill (500pt): streak badge, Premium "Try Free" pill
290
+ - Circle (50%): FAB, avatars, stepper buttons, ring stroke caps
291
+
292
+ ## 6. Depth & Elevation
293
+
294
+ | Level | Treatment | Use |
295
+ |-------|-----------|-----|
296
+ | Flat (Level 0) | No shadow | List rows, diary rows, section backgrounds, canvas |
297
+ | Card (Level 1) | `rgba(0,0,0,0.04) 0 1px 3px` | Dashboard cards on press, food row press states |
298
+ | Subtle Lift (Level 2) | `rgba(0,0,0,0.06) 0 2px 8px` | Sticky bottom sheets, expanded macro donut |
299
+ | FAB (Level 3) | `rgba(0,93,170,0.35) 0 6px 16px` | Diary FAB (Lake Blue–tinted shadow, not neutral) |
300
+ | Sheet (Level 4) | `rgba(0,0,0,0.16) 0 -8px 24px` | Add-Food modal, Quick Add sheet, food detail |
301
+ | Blur Material | `.regularMaterial` over `#FFFFFF` at 92% | Nav bar on scroll, tab bar over content |
302
+
303
+ **Shadow Philosophy**: MyFitnessPal is a clinical, white app — shadows are almost imperceptible except on the Diary FAB, where the shadow is intentionally *tinted with the button's blue* to make the action feel like it's emanating light, not casting darkness. Everything else relies on hairline borders and divider strokes for separation.
304
+
305
+ ### Motion
306
+ - **Calorie ring fill**: when you add a food, the ring's stroke-dashoffset transitions over 600ms ease-out and the center number ticks via a 300ms number-flip
307
+ - **Food row press**: background fades `#FFFFFF` → `#F5F7FA` in 100ms, no scale
308
+ - **FAB tap**: scale 1.0 → 0.92 → 1.0 over 250ms spring, paired with `.impactOccurred(.medium)`
309
+ - **Add Food sheet**: slides up from the bottom with a 350ms cubic-bezier curve, backdrop fades to `rgba(0,0,0,0.4)`
310
+ - **Barcode laser**: 1pt red line pulses opacity 0.4 → 1.0 → 0.4 every 1200ms; on capture, a green tick replaces the laser for 800ms
311
+ - **Streak confetti**: triggered only at 7/30/100/365 day milestones — paper confetti burst at the top of Dashboard, 1.4s total
312
+ - **Tab switch**: `.selectionChanged()` haptic, no animation
313
+
314
+ ## 7. Do's and Don'ts
315
+
316
+ ### Do
317
+ - Use Lake Blue `#0072CE` for the primary CTA, active tab tint, calorie ring fill at "on track", and the diary FAB
318
+ - Use MFP Blue `#005DAA` for heritage moments — the logomark, Premium upsell gradient end, large nav title accents
319
+ - Keep the macro donut trio in the exact order Carbs Orange → Fat Purple → Protein Green; never reorder, never recolor
320
+ - Set tabular numerals on every number that summarizes nutrition — calories, grams, percentages, weight, water ounces
321
+ - Use the ring color-flip semantically: green when under, blue when on-track, amber when approaching, red when over
322
+ - Use the FAB pattern on the Diary tab — a 56pt blue circle floating above the tab icon with a `plus` glyph
323
+ - Use `#1F2937` Ink for body text — pure black is too clinical for a wellness app
324
+ - Use SF Pro on iOS; substitute Proxima Nova only on marketing/web
325
+ - Keep dashboard cards on a 16pt corner radius with a 1pt `#E5E7EB` border and no shadow
326
+ - Place the streak flame badge in the Dashboard nav-bar trailing position — it's a small but motivating moment
327
+
328
+ ### Don't
329
+ - Don't use the macro trio colors anywhere outside the macro context — orange should not appear on a button, purple should not appear on a tab
330
+ - Don't render the calorie ring without tabular numerals — non-aligned digits make the giant number look broken
331
+ - Don't use the Premium gold `#D4A437` as a primary CTA — it's a *gate*, not an action
332
+ - Don't add aggressive shadows — MFP is clinical and flat; soft 4% shadows only
333
+ - Don't break the meal section order (Breakfast, Lunch, Dinner, Snacks) — this is the cultural pattern users expect
334
+ - Don't use red `#EF4444` for primary actions; it's strictly "over your goal" semantic
335
+ - Don't skip the "+ Add Food" row inside each meal — it's the fastest entry path and a critical pattern
336
+ - Don't replace the M-square logomark color with Lake Blue — it stays heritage MFP Blue `#005DAA`
337
+ - Don't use a brighter blue than `#0072CE` on light mode — it loses contrast against white
338
+ - Don't compress the calorie ring smaller than 180pt — below that, the giant number stops being legible
339
+
340
+ ## 8. Responsive Behavior
341
+
342
+ ### Device Sizes
343
+ | Device | Width | Key Changes |
344
+ |--------|-------|-------------|
345
+ | iPhone SE (3rd gen) | 375pt | Calorie ring shrinks to 180pt diameter; dashboard cards 2-col with 8pt gap |
346
+ | iPhone 13/14/15 | 390pt | Standard 220pt ring; 16pt horizontal margins |
347
+ | iPhone 15/16 Pro | 393pt | Dynamic Island respected; ring nudges down 6pt |
348
+ | iPhone 15/16 Pro Max | 430pt | 240pt ring possible on Pro Max; dashboard cards remain 2-col |
349
+ | iPad | 768pt+ | Dashboard becomes a 3-col layout; Diary keeps single column with wider rows |
350
+
351
+ ### Dynamic Type
352
+ - Body, food names, meal titles: scale up to XXL
353
+ - **Fixed**: calorie hero number (56pt), macro donut numbers, tab labels, streak badge — layout would break if these scaled
354
+
355
+ ### Orientation
356
+ - Portrait-locked on iPhone for Dashboard, Diary, Food Detail
357
+ - Charts and weight trend support landscape on iPhone Pro Max
358
+ - iPad supports both orientations natively
359
+
360
+ ### Touch Targets
361
+ - FAB: 56pt circle, 44pt minimum tap target met easily
362
+ - Add-Food row: 56pt tall full-width hit area
363
+ - Food row chevron: 44pt hit slop around the 12pt glyph
364
+ - Tab bar items: 56pt row height, 44pt minimum width
365
+
366
+ ### Safe Area Handling
367
+ - Top: large nav title starts at safe-area top + 16pt; Dynamic Island avoided by adding 12pt extra padding
368
+ - Bottom: tab bar honors home indicator; FAB sits 88pt from the bottom safe area on Diary
369
+
370
+ ## 9. Quick Reference Cheat Sheet
371
+
372
+ ### Color Quick Reference
373
+ - Canvas: `#FFFFFF`
374
+ - Surface Gray: `#F5F7FA`
375
+ - Divider: `#E5E7EB`
376
+ - Ink (primary text): `#1F2937`
377
+ - Slate (secondary text): `#4B5563`
378
+ - MFP Blue (heritage): `#005DAA`
379
+ - Lake Blue (primary action): `#0072CE`
380
+ - Lake Blue Pressed: `#005FA8`
381
+ - Sky Blue (tinted bg): `#E7F0FF`
382
+ - Carbs Orange: `#FF9F1C`
383
+ - Fat Purple: `#A463F2`
384
+ - Protein Green: `#19C37D`
385
+ - Under Goal Green: `#19C37D`
386
+ - Approaching Amber: `#F59E0B`
387
+ - Over Limit Red: `#EF4444`
388
+ - Streak Orange: `#FB923C`
389
+ - Premium Gold: `#D4A437`
390
+
391
+ ### Example Component Prompts
392
+ - "Create a SwiftUI MyFitnessPal calorie ring: 220pt diameter, 18pt stroke, light gray `#E5E9F0` background ring, fill color Lake Blue `#0072CE`, stroke-dashoffset transitions over 600ms ease-out. Center stack: 'REMAINING' uppercase 13pt 600 with 0.6pt tracking, then '1,247' SF Pro Display 56pt 700 tabular `#111827`, then 'calories' 13pt 500 Slate. Below the ring, three columns showing Goal / Food / Exercise with a number above an uppercase label."
393
+ - "Build the macro donut for MyFitnessPal: 96pt diameter, 10pt stroke. Three slices in this exact clockwise order from 12 o'clock: Carbs `#FF9F1C` orange, Fat `#A463F2` purple, Protein `#19C37D` green. Center number is the percent of goal consumed in SF Pro Display 22pt 700 tabular. Below the donut, three legend rows: 8pt colored square + uppercase 11pt 600 label + value '187g · 65%' in 13pt 500."
394
+ - "Design the Diary food row: 64pt tall, white background, leading 16pt food name in SF Pro Text 16pt weight 500 `#1F2937` (1-line truncate), 13pt 400 `#4B5563` subtitle '1 cup · 8 oz · Chobani' below it. Trailing: tabular 16pt 600 calorie value `#1F2937` + 12pt chevron `#9CA3AF`. Press state: background `#F5F7FA`. Swipe-left reveals Delete `#EF4444` and More `#4B5563`."
395
+ - "Build the Diary FAB: 56pt circle, Lake Blue `#0072CE` fill, white `plus` SF Symbol at 22pt, blue-tinted shadow `rgba(0,93,170,0.35) 0 6px 16px`. Position: centered above the Diary tab icon, 88pt above the bottom safe area. Tap haptic: `.impactOccurred(.medium)`. On tap, slides up the Add Food sheet (350ms cubic-bezier) with options: Scan Barcode, Search Food, Quick Add, Recent, My Foods."
396
+ - "Create the barcode scanner overlay: full-screen black background with a centered camera feed. Four white 3pt L-brackets frame a 280pt × 180pt scan window. A 1pt red `#EF4444` horizontal scan line pulses opacity 0.4 → 1.0 → 0.4 every 1200ms. Top: white 'Scan a barcode' 17pt 600 + leading back chevron. Bottom: 'Can't scan? Search manually →' Lake Blue text-button. On capture: `.notificationOccurred(.success)` and a green tick replaces the laser for 800ms."
397
+
398
+ ### Iteration Guide
399
+ 1. Canvas is `#FFFFFF`; use Surface Gray `#F5F7FA` for diary rows on press, dashboard card fills, search bar background
400
+ 2. Primary action is Lake Blue `#0072CE`; heritage MFP Blue `#005DAA` lives on the logomark and Premium gradient end
401
+ 3. The calorie ring is the hero — 220pt diameter, 18pt stroke, color flips green → blue → amber → red semantically
402
+ 4. Macro trio is locked: Carbs orange `#FF9F1C`, Fat purple `#A463F2`, Protein green `#19C37D` — clockwise from 12 o'clock, in that order, always
403
+ 5. Tabular numerals on every number — calories, grams, percentages, weight
404
+ 6. SF Pro at 400/500/600/700; Display variant kicks in at 20pt+
405
+ 7. Dashboard cards use 1pt `#E5E7EB` border with no shadow; the FAB is the only meaningfully elevated element
406
+ 8. Tab bar is 5 tabs (Dashboard, Diary, Plans, Community, More); active tint is Lake Blue
407
+ 9. Dark mode is `#0F1419` canvas with `#F3F4F6` primary text; Lake Blue lifts to `#3B8FDF`
408
+ 10. Don't repurpose the macro trio colors elsewhere — they belong only to the macro context