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,415 @@
1
+ # Design System Inspiration of Strong (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Strong's iOS app is one of the most disciplined, content-first interfaces in fitness software. Open it and there is no onboarding fanfare, no hero imagery, no motivational gradient — just a flat, near-black canvas (`#1A1A1A`) and the **set-log table**. Strong's whole thesis is that a weightlifting app should feel like the world's best paper logbook: open to today's workout, see the exercises stacked vertically, each with a tight grid of sets (Set / Previous / kg / Reps / ✓), and log a set with two taps. The signature screen of Strong is **logging a workout**: a workout title and a row of stat pills (Time / Volume / Sets) at top, a slim rest-timer progress bar that auto-runs between sets, exercise cards with editable number cells, and rows that fill green the instant you check them off.
6
+
7
+ The design philosophy is "minimal chrome, maximal log." Strong predates and outlasts trend cycles by refusing decoration: there is no photography, no illustration, no skeuomorphic plate-loading animation. The only "interface" a lifter touches mid-set is the exercise name (in Strong Blue, the tap target to swap/replace), the `Previous` column (so you always know what you did last time), two number cells, and a checkmark. Everything around it — history calendar, body-measurement charts, the exercise library with muscle diagrams, plate calculator — is rendered in the same restrained dark palette so nothing competes with the numbers.
8
+
9
+ The color system is monochrome plus a single blue. Canvas and three surface tiers are flat neutral greys (`#1A1A1A` → `#242424` → `#2E2E2E` → `#383838`) — true grey, not blue-tinted, which gives Strong its characteristic neutral, "instrument panel" feel. **Strong Blue (`#2F80ED`)** is the lone accent: Finish button, active tab, exercise titles, links, the rest-timer fill, segmented selection. There is no secondary brand hue. Two semantic colors punctuate the log — a **set-done green (`#27AE60`)** that fills a completed row at ~18% opacity, and a **PR amber (`#F2C94C`)** flag for personal records. Destructive actions use a clear red (`#EB5757`). The restraint is functional: a set log is glanced at for two seconds between heavy sets, so the palette must keep the *numbers* the loudest thing on the screen.
10
+
11
+ Typography is **Inter** throughout — chosen for its excellent legibility at small sizes and, critically, its tabular-figures feature. Strong applies tabular figures to every weight, rep, set number, volume total, 1RM estimate, and timer so the set table's columns never shift width as a `9` becomes a `10` mid-workout. Hierarchy is utilitarian: screen titles at 32pt/800, the workout title at 26pt/800, section headers at 22pt/700, exercise names at 18pt/700, metric read-outs at 17pt/700 tabular, body at 16pt/400, set-table cells at 15pt/700 tabular, the `Previous` caption at 13pt, and column labels at 11pt uppercase. The type system never expresses brand personality — it expresses *the data*, legibly, at arm's length, under load.
12
+
13
+ **Key Characteristics:**
14
+ - Flat near-black canvas (`#1A1A1A`) dark-first — true neutral grey, "instrument panel" feel
15
+ - The **set-log table** is the interface: stacked exercise cards, each a dense Set/Previous/kg/Reps/✓ grid
16
+ - All numerics in **tabular figures** so the table never reflows as digits change
17
+ - **Strong Blue (`#2F80ED`)** is the single accent: Finish, active tab, exercise titles, rest-timer fill, links
18
+ - **`Previous` column** on every set — last session's weight×reps inline; the core value proposition
19
+ - **Slim rest-timer bar** — a thin progress bar that auto-runs between sets with ±15s controls
20
+ - **PR flag** — an amber (`#F2C94C`) "▲ PR" chip when a logged set sets an estimated-1RM/rep record
21
+ - **Set-done state** — completed rows fill green (`#27AE60` @ 18%) with a filled checkmark
22
+ - **Warm-up / drop / failure set tags** — `W` / `D` / `F` set-index markers (warm-up in amber)
23
+ - **Stat pills** — Time / Volume / Sets summary row at the top of the active workout
24
+ - Inter everywhere with aggressive tabular-figures usage; minimal chrome, no decoration
25
+ - 5-tab bottom bar (Profile / History / Workout / Exercises / Settings); Workout is the heart
26
+
27
+ ## 2. Color Palette & Roles
28
+
29
+ ### Primary (Interactive)
30
+ - **Strong Blue** (`#2F80ED`): The single accent — Finish button, active tab, exercise titles, links, rest-timer fill, segmented selection, PR-link.
31
+ - **Strong Blue Pressed** (`#2566C0`): Pressed state on primary buttons.
32
+ - **Strong Blue Soft** (`#16263D`): ~14–22% blue tint — rest-timer bar background/track, tonal button fill, selected-row glow.
33
+
34
+ ### Canvas & Surfaces (Dark — default)
35
+ - **Pure Canvas** (`#1A1A1A`): Primary app background — flat near-black neutral grey, the launch surface.
36
+ - **Card Surface** (`#242424`): Exercise cards, list rows, sheets.
37
+ - **Input Surface** (`#2E2E2E`): Editable set cells (kg / reps), stat pills, search field, segmented track.
38
+ - **Surface 3** (`#383838`): Exercise thumbnails, raised chips, hovered/pressed rows.
39
+ - **Divider** (`#333333`): Hairline dividers between sections and table headers.
40
+
41
+ ### Canvas & Surfaces (Light — optional, opt-in)
42
+ - **Light Canvas** (`#F2F2F2`): Light-mode background.
43
+ - **Light Card** (`#FFFFFF`): Cards on light.
44
+ - **Light Input** (`#EBEBEB`): Editable cells on light.
45
+ - **Light Divider** (`#DDDDDD`): Hairlines on light.
46
+
47
+ ### Text
48
+ - **Text Primary** (`#F5F5F5`): Headings, weights, reps — the numbers that matter — near-white.
49
+ - **Text Secondary** (`#9A9A9A`): Labels, captions, column headers, stat-pill labels.
50
+ - **Text Tertiary** (`#636363`): Disabled, the `Previous` hint, the `⋯` glyph.
51
+ - **Text Primary (Light)** (`#1A1A1A`): Primary text on light mode.
52
+ - **Text Secondary (Light)** (`#6B6B6B`): Secondary on light mode.
53
+
54
+ ### Semantic
55
+ - **Set Done Green** (`#27AE60`): Completed-set checkmark fill + row fill at 18% (`#27AE602E`).
56
+ - **PR Amber** (`#F2C94C`): "▲ PR" flag background-tint + text; also the warm-up set marker accent.
57
+ - **Error / Destructive Red** (`#EB5757`): Cancel workout, delete set, validation errors.
58
+ - **Warning Orange** (`#F2994A`): "Unsaved", deload prompts.
59
+ - **Warm-up Marker** (`#F2994A`): `W` set-index tag color (drop = neutral `D`, failure = `F`).
60
+
61
+ ### Color Roles Table
62
+
63
+ | Role | Dark Mode | Light Mode |
64
+ |------|-----------|-----------|
65
+ | Canvas | `#1A1A1A` | `#F2F2F2` |
66
+ | Card surface | `#242424` | `#FFFFFF` |
67
+ | Input surface | `#2E2E2E` | `#EBEBEB` |
68
+ | Surface 3 / chips | `#383838` | `#E2E2E2` |
69
+ | Divider | `#333333` | `#DDDDDD` |
70
+ | Accent (Strong Blue) | `#2F80ED` | `#2F80ED` |
71
+ | Accent pressed | `#2566C0` | `#2566C0` |
72
+ | Blue soft fill | `#16263D` | `#E3EEFD` |
73
+ | Text primary | `#F5F5F5` | `#1A1A1A` |
74
+ | Text secondary | `#9A9A9A` | `#6B6B6B` |
75
+ | Set done | `#27AE60` | `#1E8E4E` |
76
+ | PR amber | `#F2C94C` | `#C99A12` |
77
+ | Error | `#EB5757` | `#D63D3D` |
78
+
79
+ ## 3. Typography Rules
80
+
81
+ ### Font Family
82
+ - **Primary**: `Inter` (by Rasmus Andersson, SIL OFL) — humanist sans with superb small-size legibility and a first-class `tnum` (tabular figures) OpenType feature, which Strong applies to every number on screen.
83
+ - **System Fallback**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
84
+ - **Numeric rule**: every weight, rep count, set index, volume total, 1RM estimate, percentage, and timer renders with **tabular figures** (`font-variant-numeric: tabular-nums`) so the set table and timers never reflow.
85
+ - **No alternate families**: Strong ships one face — brand consistency over user choice.
86
+
87
+ ### Hierarchy
88
+
89
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
90
+ |------|------|------|--------|-------------|----------------|-------|
91
+ | Screen Title | Inter | 32pt | 800 | 1.15 | -0.6pt | "History", "Exercises" — large nav title |
92
+ | Workout Title | Inter | 26pt | 800 | 1.2 | -0.4pt | "Workout" / routine name at top of log |
93
+ | Section Header | Inter | 22pt | 700 | 1.25 | -0.3pt | "Personal Records", chart sections |
94
+ | Exercise Name | Inter | 18pt | 700 | 1.3 | -0.2pt | Exercise title — always in Strong Blue |
95
+ | Metric / Timer | Inter | 17pt | 700 | 1.2 | 0pt | Time / volume / 1RM — **tabular-nums** |
96
+ | Body | Inter | 16pt | 400 | 1.5 | 0pt | Descriptions, settings, exercise notes |
97
+ | Set Cell | Inter | 15pt | 700 | 1.3 | 0pt | kg / reps values — **tabular-nums** |
98
+ | Card / Row Title | Inter | 15pt | 600 | 1.3 | -0.1pt | History row title, list row title |
99
+ | Caption | Inter | 13pt | 500 | 1.4 | 0pt | `Previous` hint, timestamps, exercise note |
100
+ | Column Label | Inter | 11pt | 700 | 1.1 | 0.4pt | SET / PREVIOUS / KG / REPS — uppercase |
101
+ | Tab Label | Inter | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
102
+ | Button | Inter | 16pt | 700 | 1.0 | 0pt | Primary button label |
103
+ | Flag | Inter | 10pt | 800 | 1.0 | 0.3pt | PR flag chip — uppercase |
104
+
105
+ ### Principles
106
+ - **Numbers are the loudest element**: weights, reps, timers use 700 weight + tabular figures; everything supporting them is lighter and greyer.
107
+ - **Tabular figures everywhere numeric**: the set table must not reflow when a digit changes — `tnum` is mandatory on every figure.
108
+ - **Weight concentrated at 400 / 500 / 600 / 700 / 800**: regular body, medium captions, semibold row titles, bold exercise names + cells + metrics, extrabold screen/workout titles.
109
+ - **Strong Blue carries hierarchy**: an exercise name is bold *and* blue because it's both the heading and the tap-to-replace affordance.
110
+ - **Dynamic Type with floors**: titles, body, and cells scale; column labels, tab labels, and flags stay fixed (table layout is digit-width-sensitive).
111
+ - **Uppercase only for micro-labels**: column headers and the PR flag; never body or titles.
112
+
113
+ ## 4. Component Stylings
114
+
115
+ ### Buttons
116
+
117
+ **Primary Button (Finish / Save Routine)**
118
+ - Shape: rounded rectangle, 8pt corner radius
119
+ - Background: `#2F80ED` (Strong Blue) / text `#FFFFFF`
120
+ - Padding: 14pt vertical, 28pt horizontal; full-width variant spans content inset
121
+ - Font: Inter 16pt weight 700
122
+ - Pressed: background `#2566C0` + scale 0.98
123
+ - Disabled: `#2E2E2E` background, `#636363` text
124
+
125
+ **Secondary / Outline Button (Add Exercise)**
126
+ - Background: transparent
127
+ - Border: 1.5pt `#2F80ED`
128
+ - Text: `#2F80ED`, Inter 15pt weight 600
129
+ - Corner radius: 8pt; padding 11pt / 22pt
130
+ - Pressed: background `#16263D`
131
+
132
+ **Tonal Button (+ Add Set / inline actions)**
133
+ - Background: `#16263D` (Blue Soft) — or `#2E2E2E` for neutral inline actions
134
+ - Text: `#2F80ED`, Inter 14pt weight 700
135
+ - Corner radius: 8pt; padding 11pt / 20pt
136
+ - Used as the full-width "+ Add Set" row inside an exercise card
137
+
138
+ **Destructive Text Button (Cancel Workout / Remove Exercise)**
139
+ - Background: transparent
140
+ - Text: `#EB5757`, Inter 14pt weight 600
141
+ - No border; confirmation alert required before destructive commit
142
+
143
+ **Icon Button (exercise `⋯`, swipe actions)**
144
+ - 24pt glyph in 44pt hit area
145
+ - Default `#636363`; active `#F5F5F5`
146
+ - Swipe-left on a set row reveals delete (`#EB5757`); swipe-right marks complete
147
+
148
+ ### Core Atoms
149
+
150
+ **Set Row** (the core atom)
151
+ - A table row inside an exercise card: `[set-index] [previous] [kg cell] [reps cell] [✓]`
152
+ - Set-index: plain `#9A9A9A` 14pt/700 numeral; warm-up shows `W` in `#F2994A`, drop `D`, failure `F`
153
+ - `Previous` cell: `#636363` 12pt, format `95 × 5` (last session's matching set; em-dash if none)
154
+ - Editable cells (kg / reps): `#2E2E2E` bg, 7pt radius, `#F5F5F5` 15pt/700, tabular figures; focused → 1.5pt `#2F80ED` inset border
155
+ - Checkmark: 24pt rounded-square; empty = 1.5pt `#333333` border; checked = filled `#27AE60` + white tick, and the row's cells fill `#27AE602E`
156
+ - Row height: ~38pt; 6pt vertical cell padding
157
+
158
+ **Exercise Card**
159
+ - Background `#242424`, no border (flat), 14pt corner radius, 14pt padding, 12pt gap between cards
160
+ - Header: 34pt exercise thumbnail (`#383838`, blue glyph), exercise name (`#2F80ED` 18pt/700), trailing `⋯`
161
+ - Optional exercise note line: `#9A9A9A` 12pt
162
+ - Body: the set table
163
+ - Footer: full-width "+ Add Set" tonal row (34pt, 8pt radius, `#2E2E2E`, `#2F80ED` 13pt/700)
164
+
165
+ **Rest-Timer Bar**
166
+ - 40pt tall, full-width minus 18pt inset, 8pt radius
167
+ - Background `#16263D`; an inner fill (`rgba(47,128,237,0.22)`) animates from full → empty over the rest duration (a thin progress bar, not a ring)
168
+ - Leading: 16pt clock glyph `#2F80ED`
169
+ - Center: `Rest Timer · 1:18` in `#2F80ED` 13pt/700 tabular
170
+ - Trailing: `−15 +15` adjusters in `#9A9A9A` 12pt/700
171
+ - Auto-runs on set completion; soft haptic + chime at 0; tap to expand/edit default
172
+
173
+ **Stat Pill (Time / Volume / Sets)**
174
+ - Background `#2E2E2E`, 7pt radius, 5×10pt padding
175
+ - Label `#9A9A9A` 12pt/600 + value in `#2F80ED` 12pt/700 tabular
176
+ - Row of three under the workout title; live Time value updates each second
177
+
178
+ **PR Flag**
179
+ - Inline chip: background `#F2C94C` at 18% (`#F2C94C2E`), text `#F2C94C`, Inter 10pt/800 uppercase
180
+ - Content: `▲ PR · Est. 1RM 117 kg` (also fires for best-reps and best-weight records)
181
+ - Appears under the set table the moment a logged set beats a stored record; brief amber pulse + soft haptic
182
+
183
+ **Metric (workout title row)**
184
+ - The three stat pills double as the workout's live metric read-out
185
+ - Post-workout summary repeats them larger with the PR list
186
+
187
+ **History Row**
188
+ - `#242424` card, 14pt radius; workout name (`#F5F5F5` 15pt/600), date + duration (`#9A9A9A` 13pt)
189
+ - Mini stat strip: total volume, set count, PR count; tap → full workout detail
190
+
191
+ ### Navigation
192
+
193
+ **Bottom Tab Bar**
194
+ - Height: 66pt incl. home indicator; background `rgba(26,26,26,0.94)` + blur, 0.5pt `#333333` top border
195
+ - 5 tabs: Profile, History, **Workout** (center), Exercises, Settings
196
+ - Icon 22pt; active color `#2F80ED` with a soft `rgba(47,128,237,0.18)` icon fill; inactive `#636363`
197
+ - Labels: Inter 10pt/600, always shown
198
+ - No tint pill — active state is icon color + soft fill only
199
+
200
+ **Top Bar (in-workout)**
201
+ - Workout title (26pt/800) leading; trailing `Finish` button (Strong Blue, 8pt radius, 13pt/700)
202
+ - Below: the three stat pills, then the rest-timer bar
203
+ - On scroll, a compact title + Finish stay pinned; a hairline divider separates header from log
204
+
205
+ **Large-Title Screens (History / Exercises / Profile)**
206
+ - iOS large-title pattern: 32pt/800 title that collapses to a 17pt centered nav title on scroll
207
+ - Trailing: contextual icon (calendar, add, search/filter)
208
+
209
+ ### Input Fields
210
+
211
+ **Set Cell Input (kg / reps)**
212
+ - ~34pt tall, `#2E2E2E` bg, 7pt radius, centered `#F5F5F5` 15pt/700 tabular
213
+ - Numeric keypad; focus → 1.5pt `#2F80ED` inset border, value selected for fast overwrite
214
+ - Empty placeholder shows the `Previous` value greyed at `#636363`
215
+
216
+ **Search Field (Exercises / Add Exercise)**
217
+ - 38pt tall, `#2E2E2E` bg, 8pt radius, leading 16pt magnifier `#9A9A9A`
218
+ - Placeholder "Search exercises" `#636363` 15pt
219
+ - Focus: 1.5pt `#2F80ED` border
220
+
221
+ **Segmented Control (chart range: W / M / 6M / Y)**
222
+ - Track `#2E2E2E`, 8pt radius; selected segment `#383838` with `#F5F5F5` text; unselected `#9A9A9A`
223
+ - 32pt tall, equal segments
224
+
225
+ ### Distinctive Components
226
+
227
+ **The Set-Log Table**
228
+ - The signature Strong component: a per-exercise grid with columns SET / PREVIOUS / KG / REPS / ✓
229
+ - Tabular figures lock column widths; the `Previous` column is the killer feature
230
+ - Checking a set fills its cells green and auto-runs the rest timer
231
+
232
+ **Slim Rest-Timer Bar**
233
+ - A thin horizontal progress bar (not a ring) that depletes over the rest duration; ±15s; chime + soft haptic at 0
234
+ - Persists as a Live Activity / Dynamic Island countdown when backgrounded
235
+
236
+ **Amber PR Flag**
237
+ - Fires for estimated-1RM, best weight, or best reps; amber pulse + haptic; aggregated on the profile's "Records"
238
+
239
+ **Post-Workout Summary**
240
+ - Full-screen card: duration, total volume, set count, PR list, muscle-split, share-image button
241
+ - The single celebratory moment — restrained, just numbers and the PR amber
242
+
243
+ **Plate Calculator**
244
+ - A utility sheet: given a target weight + bar weight, renders the per-side plate stack as labeled discs
245
+ - Pure utility styling — neutral discs, blue accents, tabular weight labels
246
+
247
+ **Exercise Library with Muscle Map**
248
+ - Searchable list; each exercise detail shows a primary/secondary muscle diagram (calm desaturated fills, never the brand blue)
249
+
250
+ **1RM / Volume Trend Chart**
251
+ - Line chart on `#1A1A1A`; line in `#2F80ED`, gridlines `#333333`, axis labels `#636363`; PR points marked in `#F2C94C`
252
+
253
+ ## 5. Layout Principles
254
+
255
+ ### Spacing System
256
+ - Base unit: 4pt
257
+ - Scale: 4, 6, 8, 10, 12, 14, 18, 24, 32, 40, 56
258
+ - Content inset: 14–18pt horizontal
259
+ - Card padding: 14pt; card-to-card gap: 12pt
260
+ - Set-row vertical padding: 6pt; row height ~38pt
261
+ - Section gap: 24pt
262
+
263
+ ### Grid & Container
264
+ - iPhone: single column, 14–18pt insets, cards full-width
265
+ - Set table: 5 columns — index (36pt) / previous (flex) / kg (flex) / reps (flex) / check (24pt)
266
+ - iPad: content max-width ~700pt centered; optional 2-column for history + summary
267
+ - Charts: full-bleed minus inset, fixed aspect 16:9
268
+
269
+ ### Whitespace Philosophy
270
+ - **Density where it counts**: the set table is intentionally tight so a full exercise fits on screen mid-set
271
+ - **Quiet separation**: 12pt gaps + flat `#242424` cards (no borders) separate exercises without visual noise
272
+ - **Numbers get air**: stat pills and the timer bar get clear vertical room so they read at a glance
273
+ - **Zero decorative whitespace**: every pixel serves logging or reading; Strong is an instrument, not a magazine
274
+
275
+ ### Border Radius Scale
276
+ - Square (0pt): chart plot area, full-bleed media
277
+ - Subtle (4pt): rarely used micro-elements
278
+ - Small (7pt): set cells, stat pills
279
+ - Standard (8pt): buttons, segmented control, rest bar, search field, Finish
280
+ - Card (14pt): exercise cards, history rows, sheets
281
+ - Large (20pt): bottom sheets, modals, plate calculator
282
+ - Pill (500pt): filter chips
283
+ - Circle (50%): avatars, plate discs
284
+
285
+ ## 6. Depth & Elevation
286
+
287
+ Strong is intentionally flat — depth comes from the surface-tier ladder (`#1A1A1A` → `#242424` → `#2E2E2E` → `#383838`), not drop shadows. Exercise cards have *no* border (unlike many dark UIs); the subtle lift from canvas to `#242424` is enough. Shadows appear only on truly floating UI.
288
+
289
+ | Level | Treatment | Use |
290
+ |-------|-----------|-----|
291
+ | Base (Level 0) | Canvas `#1A1A1A`, no shadow | App background |
292
+ | Card (Level 1) | `#242424`, no border, no shadow | Exercise cards, history rows |
293
+ | Raised (Level 2) | `#2E2E2E` / `#383838`, no shadow | Set cells, stat pills, segmented control |
294
+ | Floating (Level 3) | `rgba(0,0,0,0.55) 0 8px 24px` | Sheets, dropdowns, the add-exercise picker |
295
+ | Sheet (Level 4) | `rgba(0,0,0,0.6) 0 -10px 32px` + 20pt top radius | Bottom sheets (plate calc, set-type) |
296
+ | Overlay | `rgba(0,0,0,0.6)` scrim | Behind modals and the post-workout summary |
297
+
298
+ **Shadow Philosophy**: on a flat near-black canvas, drop shadows are nearly invisible and visually noisy, so Strong uses *only* the surface ladder to convey depth on content. Real shadows are reserved for genuinely floating layers; those panels also get a faint border so they read as detached even when the shadow is imperceptible.
299
+
300
+ ### Motion
301
+ - **Set check**: tapping ✓ fills the box (120ms ease-out), fills the row's cells green (140ms), soft success haptic, auto-runs the rest timer
302
+ - **Rest-timer bar**: inner fill depletes linearly over the rest duration; ±15s nudges with a 180ms ease; soft + chime at 0
303
+ - **PR flag**: fades + scales 0.92→1.0 over 200ms with a brief amber opacity pulse + a soft-impact haptic
304
+ - **Add set**: new row slides down (height 0→auto, 200ms ease-out) and the kg cell focuses
305
+ - **Finish workout**: primary button → post-workout summary pushes up as a full-screen sheet (300ms ease-out)
306
+ - **Tab switch**: instant; no cross-fade (the app should feel immediate)
307
+ - **Pull-to-refresh (history)**: standard iOS spinner; rows fade-in on load
308
+ - **Live Activity**: rest countdown mirrors to Dynamic Island / Lock Screen as a slim progress bar + remaining time
309
+ - **Haptics**: soft impact on set check, light tick on rest ± and timer end, soft impact on PR
310
+
311
+ ## 7. Do's and Don'ts
312
+
313
+ ### Do
314
+ - Default to dark — launch into the flat near-black canvas (`#1A1A1A`); it's the brand
315
+ - Use Strong Blue (`#2F80ED`) as the *only* accent — Finish, tabs, exercise titles, rest-timer fill
316
+ - Render every number with tabular figures so the set table and timers never reflow
317
+ - Show the `Previous` column on every set — knowing last session's numbers is the core value
318
+ - Fill completed set rows green (`#27AE602E`) with a filled `#27AE60` checkmark
319
+ - Auto-run the slim rest-timer bar on set completion with ±15s adjusters
320
+ - Show an amber (`#F2C94C`) PR flag when a set sets a record — a pulse + haptic, restrained
321
+ - Keep exercise cards borderless and flat — the `#242424` lift from canvas is enough
322
+ - Make the exercise name both bold *and* blue (heading + tap-to-replace affordance)
323
+ - Keep the set table dense — a full exercise should fit on screen mid-set
324
+ - Use true neutral greys (`#1A1A1A`/`#242424`/`#2E2E2E`) — not blue-tinted darks
325
+
326
+ ### Don't
327
+ - Don't add a second brand accent — Strong Blue is the entire accent vocabulary
328
+ - Don't use proportional figures anywhere numeric — the table will jitter as digits change
329
+ - Don't hide the `Previous` column to "simplify" — it's the feature
330
+ - Don't decorate with photography, gradients, plate-loading skeuomorphism, or illustration
331
+ - Don't tint the canvas blue — Strong's neutral grey is deliberate and characteristic
332
+ - Don't make PRs loud with confetti — an amber flag + pulse + haptic is the whole celebration
333
+ - Don't add tab-bar tint pills — active is icon color + soft fill only
334
+ - Don't put borders on exercise cards — flat surface lift only (this is a signature)
335
+ - Don't animate aggressively — the app must feel instant; motion is 120–300ms, functional
336
+ - Don't tint charts/muscle-maps with the brand blue's hue for non-data chrome — keep them neutral
337
+ - Don't block logging behind dialogs — only destructive actions confirm
338
+
339
+ ## 8. Responsive Behavior
340
+
341
+ ### Device Sizes
342
+ | Device | Width | Key Changes |
343
+ |--------|-------|-------------|
344
+ | iPhone SE (3rd gen) | 375pt | Set table tightens to 5pt cell padding; stat pills wrap 2+1 |
345
+ | iPhone 13 / 14 / 15 | 390pt | Standard layout |
346
+ | iPhone 15 / 16 Pro | 393pt | Dynamic Island hosts the rest-timer Live Activity |
347
+ | iPhone 15 / 16 Pro Max | 430pt | Larger set cells; metric values at 18pt |
348
+ | iPad (portrait) | 768pt | Content max-width 700pt centered; history + summary 2-column |
349
+ | iPad (landscape) | 1024pt+ | Optional split: exercise list rail + active set table |
350
+
351
+ ### Dynamic Type
352
+ - Scales: screen titles, workout title, section headers, exercise names, body, set-cell values
353
+ - Fixed: column labels, tab labels, PR flag, set-index marker (table layout is digit-width-sensitive)
354
+ - Numeric metrics scale but always retain tabular figures
355
+
356
+ ### Orientation
357
+ - iPhone: portrait-locked for the workout log (one-handed mid-set use)
358
+ - iPad: supports landscape with the split set-table layout
359
+ - Charts rotate and re-fit
360
+
361
+ ### Touch Targets
362
+ - Set-cell input: ~34pt tall, full-cell tap
363
+ - Checkmark: 24pt glyph, 44pt hit
364
+ - Tab icons: 22pt glyph, 49pt hit
365
+ - `+ Add Set` row: 34pt tall, full-width tap
366
+ - Rest ±15s adjusters: 32pt hit minimum
367
+
368
+ ### Safe Area Handling
369
+ - Top: large title / workout header respects safe area + Dynamic Island
370
+ - Bottom: tab bar + home indicator respected; the rest bar floats above the keyboard when a cell is focused
371
+ - Keyboard: numeric keypad pushes the active exercise card into view; rest bar stays pinned above it
372
+ - Sides: 14–18pt content inset
373
+
374
+ ## 9. Agent Prompt Guide
375
+
376
+ ### Quick Color Reference
377
+ - Canvas (dark): `#1A1A1A`
378
+ - Card surface: `#242424`
379
+ - Input surface: `#2E2E2E`
380
+ - Surface 3 / chips: `#383838`
381
+ - Divider: `#333333`
382
+ - Strong Blue (accent): `#2F80ED`
383
+ - Blue pressed: `#2566C0`
384
+ - Blue soft fill: `#16263D`
385
+ - Text primary: `#F5F5F5`
386
+ - Text secondary: `#9A9A9A`
387
+ - Text tertiary: `#636363`
388
+ - Set done green: `#27AE60` (row fill `#27AE602E`)
389
+ - PR amber: `#F2C94C` (flag bg `#F2C94C2E`)
390
+ - Error red: `#EB5757`
391
+
392
+ ### Example Component Prompts
393
+ - "Build the Strong active-workout header in SwiftUI: leading workout title in Inter 26pt weight 800 `#F5F5F5`; trailing `Finish` button — `#2F80ED` bg, white Inter 13pt/700, 8pt radius, 8×16pt padding. Below: a horizontal row of three stat pills (Time / Volume / Sets), each `#2E2E2E` bg, 7pt radius, 5×10pt padding, a `#9A9A9A` 12pt/600 label + `#2F80ED` 12pt/700 monospaced value. Background `#1A1A1A`, hairline `#333333` divider below."
394
+
395
+ - "Create a Strong set row: an HStack — set-index numeral `#9A9A9A` 14pt/700 (warm-up shows `W` in `#F2994A`), a `Previous` label `#636363` 12pt formatted `95 × 5`, two ~34pt editable cells (`#2E2E2E` bg, 7pt radius, `#F5F5F5` 15pt/700, monospaced digits, 1.5pt `#2F80ED` inset border on focus), and a 24pt checkmark (empty: 1.5pt `#333333` border; checked: filled `#27AE60` + white tick). On check, fill the row's cells `#27AE60` at 18% alpha and auto-run the rest timer."
396
+
397
+ - "Render the Strong rest-timer bar: 40pt tall, full-width minus 18pt, 8pt radius, `#16263D` bg. An inner fill (`rgba(47,128,237,0.22)`) animates from full width to zero linearly over the rest duration. Leading 16pt clock glyph `#2F80ED`. Center `Rest Timer · 1:18` in `#2F80ED` 13pt/700 monospaced. Trailing `−15 +15` adjusters in `#9A9A9A` 12pt/700. Soft haptic + chime at 0; mirror to a Live Activity."
398
+
399
+ - "Build the Strong PR flag: an inline chip with `#F2C94C` at 18% alpha background, `#F2C94C` text, Inter 10pt weight 800 uppercase, content `▲ PR · Est. 1RM 117 kg`. On appear, fade + spring-scale 0.92→1.0 over 200ms with a brief amber opacity pulse and a soft-impact haptic."
400
+
401
+ - "Create a Strong exercise card: `#242424` bg, NO border (flat), 14pt radius, 14pt padding. Header: 34pt thumbnail (`#383838`, blue glyph), exercise name in `#2F80ED` Inter 18pt/700, trailing `⋯` `#636363`. Optional note line `#9A9A9A` 12pt. Body: the set table (columns SET / PREVIOUS / KG / REPS / ✓, 11pt uppercase `#9A9A9A` headers). Footer: a full-width `+ Add Set` tonal row, 34pt, 8pt radius, `#2E2E2E` bg, `#2F80ED` 13pt/700."
402
+
403
+ - "Render the Strong bottom tab bar: 66pt incl. home indicator, `rgba(26,26,26,0.94)` + blur, 0.5pt `#333333` top border. Tabs: Profile, History, Workout (center), Exercises, Settings. 22pt icons; active `#2F80ED` with a soft `rgba(47,128,237,0.18)` fill; inactive `#636363`; labels Inter 10pt/600 always shown. No tint pill."
404
+
405
+ ### Iteration Guide
406
+ 1. Canvas is flat near-black NEUTRAL grey `#1A1A1A` — NOT blue-tinted, NOT pure black
407
+ 2. Strong Blue `#2F80ED` is the ONLY accent — Finish, tabs, exercise titles, rest-timer fill, links
408
+ 3. Every number uses tabular figures — the set table must never reflow as digits change
409
+ 4. The `Previous` column is mandatory on every set — it is the product's core value
410
+ 5. Logged set rows fill green `#27AE60` @ 18% with a filled checkmark; rest timer auto-runs
411
+ 6. PR flag is amber `#F2C94C` and fires on record-break — a pulse + haptic, never confetti
412
+ 7. Exercise cards are FLAT and BORDERLESS — the `#242424` lift from canvas is the only depth
413
+ 8. The set table is intentionally dense so a full exercise fits on screen mid-set
414
+ 9. Exercise names are bold AND blue (heading + tap-to-replace affordance)
415
+ 10. Motion is functional and fast (120–300ms) — the app must feel instant