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,419 @@
1
+ # Design System Inspiration of WHOOP (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ WHOOP's iOS app is a *performance instrument panel for the human body*. Where MyFitnessPal is a friendly ledger and Apple Fitness is a celebratory ring chase, WHOOP is the cockpit of a fighter jet — pitch-black canvas, neon-green strain, neon-red recovery, hard-edged tabular numerals, and the conviction that the data is the design. The app does not console you. It tells you that your recovery is 38% and your sleep was 6h 12m and that today's strain target is 13.2. The aesthetic is *clinical sports-tech*: think performance lab, not wellness retreat.
6
+
7
+ The canvas is **WHOOP Black** (`#0A0A0A`) — not pure black, but near enough that on an OLED screen the panel disappears into the device bezel. Every screen is built on this single foundation. The accents are deliberately neon — colors that vibrate against deep black: **Strain Green** (`#00FF7B`), the signature acid-electric green that has been WHOOP's brand color since 2012; **Recovery Green** (`#16EC06`) when recovery is high; **Recovery Yellow** (`#FFDE00`) when moderate; **Recovery Red** (`#FF0026`) when low; **Sleep Blue** (`#0093E7`) for the Sleep tab. These five accents do the heavy lifting; everything else is a six-step ramp of cool grays from `#1C1C1E` (surface 1) down to `#F5F5F7` (inverse text).
8
+
9
+ Typography is uniformly **DIN-style** — WHOOP licenses **DIN 2014** as the primary face, a flat, mechanically-engineered sans serif designed for instrumentation panels and modern wayfinding. The display weights are heavy: 30pt-50pt Bold for the strain number, 64pt+ for recovery percentage on the daily overview. **All-caps** is the dominant header treatment — "STRAIN", "RECOVERY", "SLEEP" — with wide letter-spacing (0.8pt+) and tight numerals. The numerals are *always* tabular and *always* monospaced — these are physiological metrics, not decoration.
10
+
11
+ **Key Characteristics:**
12
+ - Pitch-black canvas (`#0A0A0A`) on every screen — no light mode exists in the WHOOP app
13
+ - Strain Green (`#00FF7B`) as the signature accent — strain bar, primary CTA, active tab
14
+ - Recovery rings color-shift: red → yellow → green based on physiological score, in 1% increments
15
+ - Sleep blue (`#0093E7`) reserved for the Sleep tab and sleep-stage charts
16
+ - All-caps headers with wide tracking — STRAIN, RECOVERY, SLEEP, COACHING
17
+ - DIN 2014 typography — flat, mechanical, instrument-panel feel
18
+ - Tabular numerals everywhere — every metric, every number, monospaced
19
+ - The Recovery donut and Strain bar are signature components — 8pt-thick rings/bars with neon gradient fills
20
+ - Bottom tab bar with 4 tabs: Overview, Coaching, Community, Stats — minimal labels
21
+ - Subtle borders (1pt `#2A2A2A`) over shadows — WHOOP is flat and edge-defined, not elevated
22
+ - Negative space is sacred — large vertical gaps between cards let the neon accents breathe
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary
27
+ - **Strain Green** (`#00FF7B`): The signature accent — strain bar fill, primary CTA, active tab tint, link color.
28
+ - **Strain Green Bright** (`#67E26B`): Lighter strain green used on gradient stops in the strain bar.
29
+ - **Strain Green Dim** (`#005F2F`): Darker green for empty-state pulses and disabled states.
30
+
31
+ ### Recovery Spectrum (color-shifts based on score)
32
+ - **Recovery Red** (`#FF0026`): Recovery score 0–33% (low recovery, body is fatigued).
33
+ - **Recovery Yellow** (`#FFDE00`): Recovery score 34–66% (moderate).
34
+ - **Recovery Green** (`#16EC06`): Recovery score 67–100% (high recovery).
35
+ - The ring interpolates between these three in 1% increments — the exact RGB lerps from red to yellow at 33%, and yellow to green at 67%.
36
+
37
+ ### Sleep
38
+ - **Sleep Blue** (`#0093E7`): The Sleep tab accent — sleep-stage chart, sleep-need ring fill, time-in-bed metric.
39
+ - **Sleep Blue Bright** (`#4FB8FF`): Lighter sleep blue for gradient highlights and active hover.
40
+ - **REM Purple** (`#9C4DFF`): REM-stage segment in the sleep-stage stack chart.
41
+ - **Deep Sleep Indigo** (`#3D3DFF`): Deep-sleep segment.
42
+ - **Light Sleep Cyan** (`#3DD9FF`): Light-sleep segment.
43
+
44
+ ### Canvas, Surfaces & Dividers
45
+ - **WHOOP Black** (`#0A0A0A`): Primary canvas — every screen.
46
+ - **Surface 1** (`#1C1C1E`): Cards, sheets, tab bar background.
47
+ - **Surface 2** (`#2A2A2A`): Chip backgrounds, input fills, hover/press states.
48
+ - **Surface 3** (`#3A3A3A`): Highest elevation — slider tracks, popovers.
49
+ - **Divider** (`#252525`): Hairline dividers between rows.
50
+ - **Hairline** (`#1A1A1A`): Subtle border between cards on dark canvas.
51
+
52
+ ### Text
53
+ - **Bright White** (`#FFFFFF`): The big numeric heroes — strain number, recovery %, sleep duration.
54
+ - **Soft White** (`#F5F5F7`): Body text, list items.
55
+ - **Gray 400** (`#A1A1AA`): Secondary text, captions, meta info.
56
+ - **Gray 600** (`#5F5F65`): Tertiary, disabled, placeholder.
57
+ - **Gray 700** (`#3F3F45`): Icon-only states on inactive elements.
58
+
59
+ ### Semantic
60
+ - **Alert Red** (`#FF453A`): Critical alerts (low battery, missed measurement), distinct from Recovery Red.
61
+ - **Warning Amber** (`#FFAA00`): Caution states, "Strain trending high".
62
+ - **Info Blue** (`#0A84FF`): Informational toasts, learn-more links.
63
+ - **Success Green** (`#30D158`): Sync complete, goal hit (distinct from Strain Green).
64
+ - **Premium Gold** (`#D4AF37`): WHOOP Whole Body / Pro tier badges.
65
+
66
+ ### No Light Mode
67
+ WHOOP has no light mode. The app is dark-canvas-only by design — physiological metrics read best on black, and the brand identity is inseparable from the pitch-black panel.
68
+
69
+ ## 3. Typography Rules
70
+
71
+ ### Font Family
72
+ - **Primary**: `DIN 2014` (licensed face by ParaType)
73
+ - **Weights available**: Light (300), Regular (400), Demi (500), Bold (700), Extra Bold (800)
74
+ - **Fallback stack**: `'DIN 2014', 'D-DIN', 'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Helvetica Neue', sans-serif`
75
+ - **Web/marketing Google Fonts substitute**: `Inter` or `Barlow` — both share DIN 2014's geometric, slightly condensed proportions
76
+ - **Numbers**: Tabular numerals are non-negotiable. DIN 2014 ships with tabular figures by default at all weights.
77
+
78
+ ### Hierarchy
79
+
80
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
81
+ |------|------|------|--------|-------------|----------------|-------|
82
+ | Recovery Hero | DIN 2014 | 76pt | 800 | 1.0 | -1.6pt | "73%" — the giant Recovery % on Overview |
83
+ | Strain Hero | DIN 2014 | 56pt | 800 | 1.0 | -1.0pt | "13.2" — the strain score |
84
+ | Sleep Hero | DIN 2014 | 48pt | 800 | 1.0 | -0.8pt | "6h 12m" — sleep duration |
85
+ | Section Header (caps) | DIN 2014 | 14pt | 700 | 1.0 | 1.6pt uppercase | "RECOVERY", "STRAIN", "SLEEP" |
86
+ | Large Nav Title | DIN 2014 | 24pt | 700 | 1.15 | -0.2pt | "Overview", "Coaching", "Stats" |
87
+ | Section Subhead | DIN 2014 | 18pt | 700 | 1.2 | 0pt | "Today's Activity" |
88
+ | Card Title | DIN 2014 | 15pt | 500 | 1.25 | -0.05pt | "Heart Rate Variability" |
89
+ | Body | DIN 2014 | 14pt | 400 | 1.4 | 0pt | Article copy, explanations |
90
+ | Meta (caps) | DIN 2014 | 11pt | 700 | 1.0 | 1.2pt uppercase | "TODAY", "PAST 7 DAYS" |
91
+ | Metric Value | DIN 2014 | 18pt | 700 tnum | 1.0 | 0pt | "57 ms" HRV, "62 bpm" RHR |
92
+ | Metric Label | DIN 2014 | 11pt | 500 | 1.0 | 0.6pt uppercase | "HRV", "RHR", "RESPIRATORY RATE" |
93
+ | Button (Primary) | DIN 2014 | 14pt | 700 | 1.0 | 1.0pt uppercase | "VIEW DETAILS", "LOG ACTIVITY" |
94
+ | Tab Label | DIN 2014 | 10pt | 700 | 1.0 | 0.8pt uppercase | "OVERVIEW", "COACHING" |
95
+ | Chart Axis | DIN 2014 | 10pt | 500 | 1.0 | 0.2pt tnum | Time labels, percentile ranges |
96
+
97
+ ### Principles
98
+ - **All-caps with wide tracking on headers** — this is the defining typographic move of WHOOP. Section labels, tab labels, button labels, and meta tags are uppercase with 0.6–1.6pt letter-spacing.
99
+ - **Tabular numerals on every metric** — HRV, RHR, calories, time durations, heart-rate values — DIN 2014's tabular figures are part of why the app reads as instrumentation.
100
+ - **Weights cluster at 400 / 500 / 700 / 800** — Regular for body, Demi for card titles, Bold for headers, Extra Bold for the giant hero metrics.
101
+ - **Tight tracking at hero sizes** (-1.6pt on the 76pt Recovery number, -1.0pt at 56pt strain), neutral at body.
102
+ - **Mixed-unit numbers stay tabular** — "6h 12m" sleep duration, "57 ms" HRV; the unit letters share the same monospaced cadence.
103
+ - **Bright white is reserved for hero metrics**; body text sits at `#F5F5F7` and meta at `#A1A1AA`.
104
+ - **Dynamic Type respected on body and explanations**, fixed on hero metrics, tab labels, chart axes.
105
+
106
+ ## 4. Component Stylings
107
+
108
+ ### Buttons
109
+
110
+ **Primary CTA ("LOG ACTIVITY", "VIEW DETAILS", "GET STARTED")**
111
+ - Background: `#00FF7B` (Strain Green)
112
+ - Text: `#0A0A0A`, DIN 2014 14pt Bold, **uppercase**, letter-spacing 1.0pt
113
+ - Padding: 14pt vertical, 28pt horizontal
114
+ - Corner radius: 4pt — almost square, in keeping with the instrument-panel aesthetic (WHOOP buttons are *not* pills)
115
+ - Height: 48pt minimum
116
+ - Pressed: background `#67E26B`, scale 0.98
117
+ - Haptic: `.impactOccurred(.medium)` on tap
118
+
119
+ **Secondary Outline Button ("CANCEL", "LEARN MORE")**
120
+ - Background: transparent
121
+ - Border: 1.5pt `#00FF7B` (Strain Green)
122
+ - Text: `#00FF7B`, DIN 2014 14pt Bold, uppercase, letter-spacing 1.0pt
123
+ - Corner radius: 4pt
124
+ - Same height/padding as primary
125
+
126
+ **Tertiary Text Button**
127
+ - Text: `#00FF7B`, DIN 2014 14pt Demi, uppercase, letter-spacing 1.0pt
128
+ - No background, 44pt tap target
129
+ - Used in lists ("VIEW ALL", "EDIT", "SAVE")
130
+
131
+ **Critical/Destructive Button ("DELETE", "END WORKOUT")**
132
+ - Background: transparent
133
+ - Border: 1.5pt `#FF453A`
134
+ - Text: `#FF453A`, DIN 2014 14pt Bold, uppercase, letter-spacing 1.0pt
135
+
136
+ ### Cards & Containers
137
+
138
+ **Recovery Ring (the hero of Overview)**
139
+ - Diameter: 240pt on Overview, 80pt as the dashboard summary
140
+ - Stroke width: 10pt (on the 240pt hero), 6pt (on summary)
141
+ - Background ring: `#2A2A2A`
142
+ - Filled ring: gradient that interpolates by recovery score
143
+ - 0–33%: solid `#FF0026` (Recovery Red)
144
+ - 34–66%: gradient red → yellow `#FFDE00`
145
+ - 67–100%: gradient yellow → green `#16EC06`
146
+ - The score is a **2pt-wide gap** between the start and end of the stroke — the ring is "open" at the top
147
+ - Center stack: "RECOVERY" 14pt 700 uppercase 1.6pt tracking `#A1A1AA` → 76pt 800 tabular `#FFFFFF` "73" → small "%" 24pt 700 inline
148
+ - Below the ring: HRV / RHR / SpO₂ / Skin Temp metric strip — 4 columns, each with the value + caps label
149
+
150
+ **Strain Bar (Overview center)**
151
+ - Width: full content width minus 40pt margins
152
+ - Height: 12pt
153
+ - Background: `#2A2A2A`
154
+ - Filled fill: gradient `#005F2F` → `#00FF7B` → `#67E26B`, left to right
155
+ - Endpoints: tiny 4pt vertical tick marks at 8 (low), 10 (moderate), 14 (high), 18 (all-out) strain levels with caps labels above
156
+ - Current strain marker: a 16pt × 16pt white circle slides along the bar position; its center value matches the strain number
157
+ - Animation: marker slides smoothly via spring (response 0.5, damping 0.7)
158
+
159
+ **Sleep Stage Chart (Sleep tab)**
160
+ - Horizontal stacked bar, 32pt tall, full width
161
+ - Segments: REM `#9C4DFF`, Deep `#3D3DFF`, Light `#3DD9FF`, Awake `#5F5F65`
162
+ - Time-of-night axis below: 11pm – 7am with hourly tick marks in 10pt 500 `#A1A1AA`
163
+ - Tap a segment: pops a callout showing the segment's start/end time + duration in tabular numerals
164
+ - The chart is the centerpiece of the Sleep tab and gets a 32pt margin above and below
165
+
166
+ **Metric Card (Recovery / Sleep / Strain summary on Overview)**
167
+ - Background: `#1C1C1E` (Surface 1)
168
+ - Border: 1pt `#252525`
169
+ - Corner radius: 12pt
170
+ - Padding: 20pt all sides
171
+ - Layout:
172
+ - Top row: small 6pt-stroke ring on the left (80pt diameter) → metric label + value on the right (caps label above, hero number below)
173
+ - Bottom row: 3–4 supplementary metrics in a horizontal flexbox with caps labels
174
+ - No shadow — defined entirely by edge contrast with the canvas
175
+
176
+ **Activity Row (Activity / Workout list)**
177
+ - Height: 72pt
178
+ - Background: `#0A0A0A` with a 0.5pt `#252525` bottom divider
179
+ - Layout (leading to trailing):
180
+ - 40pt circular activity-type icon (e.g., `figure.run` outlined Strain Green)
181
+ - 12pt gap → activity name 15pt 500 white + strain value 18pt 700 tabular Strain Green underneath
182
+ - flex spacer → duration "1h 32m" 14pt 500 white + start time 12pt 400 `#A1A1AA` underneath
183
+ - 12pt trailing chevron `#5F5F65`
184
+ - Tap haptic: `.selectionChanged()`, opens the workout detail
185
+
186
+ **Coaching Card (Coaching tab)**
187
+ - Background: gradient `#1C1C1E` → `#0A0A0A` top-to-bottom
188
+ - Border: 1pt `#252525`
189
+ - Corner radius: 16pt
190
+ - Padding: 24pt
191
+ - Top: caps category label (e.g., "SLEEP COACHING") 11pt 700 `#A1A1AA` 1.2pt tracking
192
+ - Headline: "You're getting plenty of REM but light sleep is fragmented." DIN 2014 18pt 700 white
193
+ - Body: 14pt 400 `#F5F5F7` explanation
194
+ - Action button: tertiary text link in Strain Green at the bottom
195
+
196
+ **Heart-Rate Live Card**
197
+ - A wide card showing a real-time heart-rate trace
198
+ - Background: `#1C1C1E`
199
+ - Trace: 2pt Strain Green polyline that scrolls right-to-left at 60fps when live
200
+ - Big BPM number: 36pt 800 tabular `#FFFFFF` with a 16pt heart glyph in Strain Green pulsing on each beat (scale 1.0 → 1.15 → 1.0 over 600ms)
201
+ - Min/Max/Avg pills below the trace, each in `#2A2A2A` fill with caps labels
202
+
203
+ ### Navigation
204
+
205
+ **Large-Title Nav Bar**
206
+ - Height: variable — 88pt with large title, collapses to 44pt inline
207
+ - Background: `#0A0A0A`, becomes `.systemThinMaterialDark` blur when content scrolls under
208
+ - Title: DIN 2014 24pt 700 `#FFFFFF`, left-aligned, 20pt leading inset
209
+ - Trailing: 24pt SF Symbol or DIN-icon (often `bell` or `gearshape`)
210
+ - Below title row (Overview only): tiny strain/recovery/sleep summary chip strip
211
+
212
+ **Bottom Tab Bar**
213
+ - Height: 56pt + safe area
214
+ - Background: `#1C1C1E` with 0.5pt `#252525` top divider; `.systemThinMaterialDark` blur when content scrolls beneath
215
+ - Tabs (4): Overview, Coaching, Community, Stats (all uppercase labels)
216
+ - Icon size: 22pt, custom WHOOP DIN-icons (not SF Symbols — WHOOP ships a proprietary icon set)
217
+ - Active tint: `#00FF7B` Strain Green (icon + label glow with a soft 4pt blur)
218
+ - Inactive: `#5F5F65` Gray 600
219
+ - Labels: DIN 2014 10pt 700 uppercase, 0.8pt tracking
220
+ - Tap haptic: `.selectionChanged()`
221
+
222
+ **Top Day Switcher (Overview)**
223
+ - A pinned strip below the large nav title: 7 day-of-week chips for the past week + today
224
+ - Selected day: filled circle `#00FF7B` Strain Green background with `#0A0A0A` day label inside
225
+ - Other days: 36pt × 36pt outline circle with `#A1A1AA` label
226
+ - Tap a day: spring scale + content fades
227
+
228
+ ### Input Fields
229
+
230
+ **Search Field**
231
+ - Background: `#1C1C1E`
232
+ - Height: 44pt
233
+ - Corner radius: 8pt
234
+ - Leading 16pt `magnifyingglass` `#A1A1AA`
235
+ - Placeholder: "Search activities" DIN 2014 14pt 400 `#5F5F65`
236
+ - Focused border: 1pt `#00FF7B`
237
+
238
+ **Numeric Stepper (Stress / Recovery markers in Journal)**
239
+ - Plus/minus 32pt circles in `#1C1C1E`
240
+ - Value: 18pt 700 tabular `#FFFFFF`
241
+ - Tick marks at integer values; the slider rail is `#2A2A2A` with a Strain Green fill up to the current value
242
+
243
+ ### Distinctive Components
244
+
245
+ **Strain Coach Wheel**
246
+ - A radial gauge with the recommended strain target (e.g., "13.2") highlighted as a green arc on a `#2A2A2A` track
247
+ - The current strain is a `#00FF7B` filled arc within the target zone
248
+ - Numerals at 0 (low), 7 (moderate), 14 (high), 21 (all-out) around the wheel
249
+ - Tap haptic: `.selectionChanged()` when scrubbing the target
250
+
251
+ **Live Workout Banner**
252
+ - A persistent thin bar at the top of the screen during a recorded activity
253
+ - Background: `#00FF7B` Strain Green
254
+ - Text: "LIVE — 32:14 · STRAIN 11.8" in DIN 2014 12pt 700 `#0A0A0A` uppercase 0.6pt tracking
255
+ - A pulsing white dot leads the text — opacity 0.4 → 1.0 every 1200ms
256
+
257
+ **Battery / Sync Status Pill**
258
+ - A small pill in the nav bar trailing position showing strap battery + last sync
259
+ - 28pt height, `#2A2A2A` background, 14pt corner radius
260
+ - Battery icon + percent + sync clock — all DIN 2014 11pt 700 uppercase
261
+
262
+ **Journal Quick-Log Tile**
263
+ - A 64pt × 64pt rounded square (12pt radius) with an emoji or icon centered and a caps label below
264
+ - Selected state: 1.5pt Strain Green border, scaled 1.04
265
+ - Unselected: `#1C1C1E` background
266
+ - Used for: alcohol, caffeine, stress, soreness, illness — daily journal toggles
267
+
268
+ ## 5. Layout Principles
269
+
270
+ ### Spacing System
271
+ - Base unit: 4pt
272
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80, 120
273
+ - Standard horizontal margin: 20pt on Overview, 16pt on lists
274
+ - Section vertical gap: 48pt between major sections — large negative space is part of the look
275
+ - Negative space around the Recovery ring: at least 24pt on all sides
276
+
277
+ ### Grid & Container
278
+ - Content width: full device width minus 16–20pt margins
279
+ - Recovery ring: centered in a full-width hero container, 24pt top and 32pt bottom padding
280
+ - Activity list: full-width rows, no internal margins
281
+ - Coaching cards: stacked vertically with 16pt gaps
282
+
283
+ ### Whitespace Philosophy
284
+ - **Black breathes** — the canvas is a presence, not an absence. Large vertical gaps between cards (32pt+) let the neon accents "vibrate" against the pitch-black panel.
285
+ - **Numbers anchor the screen** — the 76pt Recovery % is the gravity well; everything else flows around it.
286
+ - **Hard edges over soft elevations** — WHOOP uses 1pt hairline borders to separate cards on the canvas; shadows are nearly invisible because the canvas is already as dark as a shadow.
287
+
288
+ ### Border Radius Scale
289
+ - Square (0pt): primary CTAs frequently — WHOOP's instrument-panel buttons are 4pt at most
290
+ - Small (4pt): primary buttons, badges, ribbon tags
291
+ - Medium (8pt): search bar, input fields
292
+ - Standard (12pt): metric cards, coaching cards
293
+ - Comfortable (16pt): hero containers, top-of-sheet rounded corners
294
+ - Soft (24pt): bottom-sheet top corners
295
+ - Full Pill (500pt): rare — only used on chip pills (battery status, alert toasts)
296
+ - Circle (50%): day-switcher dots, activity-type icons, stepper buttons, recovery ring
297
+
298
+ ## 6. Depth & Elevation
299
+
300
+ | Level | Treatment | Use |
301
+ |-------|-----------|-----|
302
+ | Flat (Level 0) | No shadow, single 1pt `#252525` border | Most cards — WHOOP is edge-defined, not elevated |
303
+ | Hairline (Level 1) | 1pt `#252525` border, no shadow | All metric/activity/coaching cards |
304
+ | Soft Glow (Level 2) | `rgba(0,255,123,0.18) 0 0 12px` | Active tab icon, focused button border, live indicator |
305
+ | Heavy Glow (Level 3) | `rgba(0,255,123,0.32) 0 0 24px` | Live workout banner, strain marker on bar |
306
+ | Sheet (Level 4) | `rgba(0,0,0,0.6) 0 -12px 32px` | Bottom sheets, modals, photo lightbox |
307
+ | Blur Material | `.systemThinMaterialDark` over `#0A0A0A` at 92% | Sticky nav bar on scroll, tab bar |
308
+
309
+ **Shadow Philosophy**: WHOOP rarely uses neutral shadows — the canvas is too dark for them to register. Instead, *neon glows* serve as elevation cues. The active tab icon emits a soft 12pt green halo. The live workout banner pulses with a heavier 24pt green halo. This is sci-fi UI elevation — the brightness is the elevation. Hairline 1pt `#252525` borders separate cards on the canvas.
310
+
311
+ ### Motion
312
+ - **Recovery ring fill**: when the score updates (after a sleep recording), the ring's stroke-dashoffset animates over 1200ms ease-out with a slight overshoot
313
+ - **Strain marker slide**: as you log activity, the white circle on the strain bar springs to the new position (response 0.5, damping 0.7)
314
+ - **Heart-rate pulse**: the heart glyph next to the live BPM scales 1.0 → 1.15 → 1.0 over 600ms, syncing with the beat
315
+ - **Live banner pulse**: leading dot opacity 0.4 → 1.0 → 0.4 every 1200ms
316
+ - **Day switcher tap**: selected day scales 1.0 → 1.08 → 1.0 over 200ms spring with `.selectionChanged()` haptic
317
+ - **Primary CTA tap**: scale 0.98 over 100ms, then `.impactOccurred(.medium)` haptic
318
+ - **Sleep stage segment tap**: callout slides up 200ms ease-out, opacity 0 → 1; tap haptic `.impactOccurred(.light)`
319
+ - **Sync complete**: green checkmark icon pulses scale 1.0 → 1.3 → 1.0 once with `.notificationOccurred(.success)` haptic
320
+
321
+ ## 7. Do's and Don'ts
322
+
323
+ ### Do
324
+ - Use `#0A0A0A` as the canvas everywhere — WHOOP is dark-mode-only
325
+ - Use Strain Green `#00FF7B` as the primary action color — CTAs, active tabs, links
326
+ - Let the Recovery ring interpolate red → yellow → green by score; never override the color
327
+ - Use DIN 2014 — license it, or substitute Inter / Barlow when DIN 2014 isn't available
328
+ - Set tabular numerals on every metric — HRV, RHR, strain, sleep duration, percentages
329
+ - Use ALL CAPS with wide letter-spacing for headers, button labels, tab labels, meta tags
330
+ - Use 1pt `#252525` hairline borders instead of shadows for card definition
331
+ - Use neon glows (12-24pt blur, ~20% opacity) as elevation cues for live/active elements
332
+ - Reserve Sleep Blue `#0093E7` for the Sleep tab and sleep-stage visualizations
333
+ - Keep the strain bar gradient `#005F2F` → `#00FF7B` → `#67E26B` left to right
334
+ - Render activity-type icons as 40pt outlined Strain Green glyphs
335
+
336
+ ### Don't
337
+ - Don't add a light mode — WHOOP is dark-canvas-only by design
338
+ - Don't use Strain Green for non-strain metrics — green means strain or "go", recovery has its own ramp
339
+ - Don't use neutral drop shadows — the canvas is already too dark; use glows instead
340
+ - Don't break the all-caps treatment on headers and buttons — it's the most recognizable typographic move
341
+ - Don't compress the Recovery ring smaller than 80pt — below that, the giant number stops being legible
342
+ - Don't use full pill corner radii on primary buttons — 4pt is the instrument-panel radius
343
+ - Don't replace DIN 2014 with a humanist sans (Inter is the only acceptable fallback because it shares the mechanical proportions)
344
+ - Don't use the Recovery red `#FF0026` for general alerts — that's `#FF453A` Alert Red; the two are intentionally different
345
+ - Don't add a 5th tab to the bottom nav — Overview, Coaching, Community, Stats are the canonical four
346
+ - Don't break tabular numerals on any metric value — the cockpit aesthetic depends on aligned digits
347
+
348
+ ## 8. Responsive Behavior
349
+
350
+ ### Device Sizes
351
+ | Device | Width | Key Changes |
352
+ |--------|-------|-------------|
353
+ | iPhone SE (3rd gen) | 375pt | Recovery ring shrinks to 200pt; activity rows compress slightly |
354
+ | iPhone 13/14/15 | 390pt | Standard 240pt ring; 20pt horizontal margins |
355
+ | iPhone 15/16 Pro | 393pt | Dynamic Island respected; large nav title nudges down 8pt |
356
+ | iPhone 15/16 Pro Max | 430pt | Recovery ring up to 260pt; day switcher fits 10 chips |
357
+ | iPad | 768pt+ | 2-column dashboard (Recovery / Strain side by side); coaching becomes a 3-col grid |
358
+
359
+ ### Dynamic Type
360
+ - Body, coaching headlines, activity names, large nav title: scale up to XXL
361
+ - **Fixed**: Recovery hero number, Strain hero, Sleep hero, tab labels, chart axes, metric labels
362
+
363
+ ### Orientation
364
+ - Portrait-locked on iPhone for all primary screens
365
+ - Strain trends and HRV history support landscape on Pro Max (full-width chart)
366
+ - iPad supports both orientations natively
367
+
368
+ ### Touch Targets
369
+ - Day switcher chips: 36pt visual, 44pt hit slop
370
+ - Primary CTA: 48pt height, full width minus 40pt margins
371
+ - Tab bar icons: 22pt icon, 56pt row height
372
+ - Sleep stage segment: full segment height (32pt), minimum 24pt hit-width
373
+
374
+ ### Safe Area Handling
375
+ - Top: large nav title starts at safe-area top + 16pt
376
+ - Bottom: tab bar honors home indicator
377
+ - Live workout banner sits *above* the safe-area top, replacing the status bar background
378
+
379
+ ## 9. Quick Reference Cheat Sheet
380
+
381
+ ### Color Quick Reference
382
+ - Canvas: `#0A0A0A`
383
+ - Surface 1: `#1C1C1E`
384
+ - Surface 2: `#2A2A2A`
385
+ - Divider: `#252525`
386
+ - Strain Green: `#00FF7B`
387
+ - Strain Green Bright: `#67E26B`
388
+ - Recovery Red: `#FF0026`
389
+ - Recovery Yellow: `#FFDE00`
390
+ - Recovery Green: `#16EC06`
391
+ - Sleep Blue: `#0093E7`
392
+ - REM Purple: `#9C4DFF`
393
+ - Deep Sleep Indigo: `#3D3DFF`
394
+ - Light Sleep Cyan: `#3DD9FF`
395
+ - Bright White: `#FFFFFF`
396
+ - Soft White: `#F5F5F7`
397
+ - Gray 400: `#A1A1AA`
398
+ - Gray 600: `#5F5F65`
399
+ - Alert Red: `#FF453A`
400
+ - Premium Gold: `#D4AF37`
401
+
402
+ ### Example Component Prompts
403
+ - "Create a SwiftUI WHOOP Recovery ring: 240pt diameter, 10pt stroke, background ring `#2A2A2A`. The fill color interpolates by score: red `#FF0026` for 0–33%, gradient to yellow `#FFDE00` at 33–66%, gradient to green `#16EC06` at 67–100%. The ring is *open* at the top — a 2pt gap. Center stack: 'RECOVERY' caps label 14pt 700 1.6pt tracking `#A1A1AA`, then '73' DIN 2014 76pt 800 tabular white with a small '%' 24pt inline. Animate the fill via stroke-dashoffset over 1200ms ease-out."
404
+ - "Build the WHOOP strain bar: full-width minus 40pt margins, 12pt tall, background `#2A2A2A`. Filled with a left-to-right gradient `#005F2F` → `#00FF7B` → `#67E26B`. A 16pt white circle slides along the bar to mark the current strain. Above the bar: four tick marks at strain values 8 (low), 10 (moderate), 14 (high), 18 (all-out) with caps labels in DIN 2014 10pt 700 `#A1A1AA` 0.8pt tracking. Spring the marker to position on update (response 0.5, damping 0.7)."
405
+ - "Design the WHOOP primary CTA: 4pt corner radius (almost square), Strain Green `#00FF7B` fill, dark `#0A0A0A` text in DIN 2014 14pt Bold uppercase with 1.0pt letter-spacing — 'LOG ACTIVITY'. Padding 14pt vertical and 28pt horizontal, 48pt min height. Pressed state: bg shifts to `#67E26B`, scale 0.98. Haptic `.impactOccurred(.medium)` on tap."
406
+ - "Build the WHOOP sleep stage chart: a 32pt-tall horizontal stacked bar full-width. Segments in this order, left to right by time: Awake `#5F5F65`, Light `#3DD9FF`, Deep `#3D3DFF`, REM `#9C4DFF`. Time-of-night axis below with hourly labels from 11pm to 7am in DIN 2014 10pt 500 tabular `#A1A1AA`. Tap a segment: pop a callout in 14pt 700 white showing the segment's start/end + duration. Haptic `.impactOccurred(.light)`."
407
+ - "Create the WHOOP activity row: 72pt tall, `#0A0A0A` background with a 0.5pt `#252525` bottom divider. Leading: 40pt outlined Strain Green activity icon (e.g., `figure.run`). Next: activity name 'Running' DIN 2014 15pt 500 white, with strain value '11.8' 18pt 700 tabular Strain Green underneath. Trailing: duration '1h 32m' 14pt 500 white, start time '6:42 AM' 12pt 400 `#A1A1AA` underneath, 12pt chevron `#5F5F65` far right."
408
+
409
+ ### Iteration Guide
410
+ 1. Canvas is `#0A0A0A` — pitch black on every screen; no light mode exists
411
+ 2. Primary action is Strain Green `#00FF7B`; the Recovery ring uses its own ramp (red → yellow → green)
412
+ 3. Use DIN 2014 — Inter or Barlow are the only acceptable fallbacks
413
+ 4. ALL CAPS with 0.8–1.6pt letter-spacing on headers, button labels, tab labels, meta tags
414
+ 5. Tabular numerals on every metric — HRV, RHR, strain, sleep duration, percentages
415
+ 6. 4pt corner radius on primary buttons — instrument-panel, not pill
416
+ 7. 1pt `#252525` hairline borders instead of shadows for card definition
417
+ 8. Neon glows (12–24pt blur, ~20% opacity) as elevation cues for live elements
418
+ 9. Recovery ring is open at the top — a 2pt gap between the start and end of the stroke
419
+ 10. Tab bar is 4 tabs (Overview, Coaching, Community, Stats); active tint is Strain Green with a soft glow