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,425 @@
1
+ # Design System Inspiration of WhatsApp (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ WhatsApp's iOS app is a utility-first messenger dressed in a narrow, signature palette of green, teal, and white. The interface is aggressively native: tabbed bottom navigation, stock SF Pro typography, SF Symbols throughout, iOS-native swipe gestures, and native share sheets. WhatsApp has never tried to be a "platform" in the Instagram sense — it has tried to be the phone's SMS replacement, and the UI reflects that goal with near-monastic restraint. The app disappears, the message bubble is the hero.
6
+
7
+ The signature color moment is a two-stop green system: WhatsApp Green (`#25D366`) on the send button, floating action button, active read-receipt tick, and the voice-message record ring; and WhatsApp Teal (`#075E54`) as the legacy brand accent seen on link tints, the QR code screen, and the Meta-era "WhatsApp" brand chrome. Outgoing chat bubbles sit on a specific mint-leaf tint (`#D9FDD3` light mode, `#005C4B` dark mode), a color so load-bearing that it is immediately recognizable even as a single decontextualized pixel. Incoming bubbles are a neutral white/gray that fades into the wallpaper. The chat canvas itself carries a subtle doodle wallpaper by default — an optional cream pattern in light mode and a near-black dark-mode variant — that makes a busy chat feel warm rather than utilitarian.
8
+
9
+ Typography is pure SF Pro. WhatsApp ships no proprietary font; instead it leans on iOS Dynamic Type so aggressively that every label, timestamp, and bubble text scales up to accessibility sizes without breaking layout. Contact names in the chat list are 17pt semibold, message previews are 15pt regular in secondary gray, bubble text is 17pt regular, timestamps are 12pt regular. The typographic restraint is deliberate: this is a messenger built for a billion daily users across every literacy level and device generation, so the type system defers to whatever the OS wants to render.
10
+
11
+ **Key Characteristics:**
12
+ - WhatsApp Green (`#25D366`) reserved for send / voice-record / positive status — the verb color
13
+ - Teal (`#075E54`) as the legacy brand tint — QR code, link highlights, Meta-era chrome
14
+ - Mint-leaf outgoing chat bubble (`#D9FDD3` light / `#005C4B` dark) — iconic enough to pixel-identify
15
+ - Tabbed bottom navigation (2024+): Updates / Calls / Communities / Chats / Settings
16
+ - Voice message waveform as a signature interactive component with playback-synced bar fill
17
+ - Blue double-check read receipts — the universal "seen" signal
18
+ - End-to-end encryption lock symbol on every chat header — trust as UI
19
+ - Native SF Pro + SF Symbols everywhere — WhatsApp defers to iOS conventions
20
+ - Light / Dark / Auto themes; wallpaper customization per chat
21
+ - Status ring (green) around contact avatars with active Status updates
22
+
23
+ ## 2. Color Palette & Roles
24
+
25
+ ### Primary
26
+ - **WhatsApp Green** (`#25D366`): The send color — send button, FAB, active mic record ring, read-receipt "sent" green (before double-blue), phone-call answer button.
27
+ - **Green Pressed** (`#1EBE5D`): Pressed / active state for green CTAs.
28
+ - **Teal** (`#075E54`): Legacy brand accent — QR screen, business-account badge, link highlights in some older screens.
29
+ - **Mid Teal** (`#128C7E`): Secondary brand — used for outgoing bubble text accent, checkmark ticks pre-read.
30
+ - **Dark Teal** (`#054D44`): Deep brand chrome — rare, seen on splash and some dark-mode backgrounds.
31
+
32
+ ### Chat Bubbles
33
+ - **Outgoing Bubble (Light)** (`#D9FDD3`): The mint-leaf tint on your own messages.
34
+ - **Outgoing Bubble (Dark)** (`#005C4B`): Dark-mode outgoing — deep teal-green.
35
+ - **Incoming Bubble (Light)** (`#FFFFFF`): Pure white on the wallpaper canvas.
36
+ - **Incoming Bubble (Dark)** (`#1F2C34`): A muted blue-gray that reads as "paper" in dark mode.
37
+ - **Reply Strip** (`#06CF9C` or `#25D366` 30% tint): The vertical accent bar on a quoted-reply preview inside a bubble.
38
+
39
+ ### Canvas & Surfaces
40
+ - **Chat Wallpaper (Light)** (`#ECE5DD`): The iconic cream doodle-wallpaper background — modifiable per chat.
41
+ - **Chat Wallpaper (Dark)** (`#0B141A`): Default dark wallpaper — a deep blue-black.
42
+ - **App Canvas (Light)** (`#FFFFFF`): Chat list and settings screens.
43
+ - **App Canvas (Dark)** (`#111B21`): Primary dark canvas — a slight blue tint, not true black.
44
+ - **Surface 1 (Light)** (`#F7F8FA`): Section group background on Settings.
45
+ - **Surface 1 (Dark)** (`#202C33`): Elevated surface — input bar background, reply strip.
46
+ - **Surface 2 (Dark)** (`#2A3942`): Higher elevation — system messages, pinned bar, context menus.
47
+ - **Divider (Light)** (`#E9EDEF`): Hairline between chat list rows.
48
+ - **Divider (Dark)** (`#222D34`): Dark-mode hairline.
49
+
50
+ ### Text
51
+ - **Text Primary (Light)** (`#111B21`): Bubble text, contact names, screen titles.
52
+ - **Text Secondary (Light)** (`#667781`): Message preview, timestamps, section subtitles.
53
+ - **Text Tertiary (Light)** (`#8696A0`): Placeholder, disabled labels.
54
+ - **Text Primary (Dark)** (`#E9EDEF`): Bubble text and titles in dark mode.
55
+ - **Text Secondary (Dark)** (`#8696A0`): Message preview in dark mode.
56
+ - **Timestamp in-Bubble** (`#667781` light / `#8696A0` dark): The time stamp inside an outgoing or incoming bubble.
57
+
58
+ ### Semantic
59
+ - **Read Blue** (`#53BDEB`): The double blue ticks — read receipt. This is THE most semantically loaded color in the app.
60
+ - **Sent Gray** (`#8696A0`): Single gray tick — sent but not delivered.
61
+ - **Delivered Gray** (`#8696A0`): Double gray ticks — delivered but not read.
62
+ - **Error Red** (`#F15C6D`): Failed-to-send bubble tint, delete chat confirmation.
63
+ - **Record Red** (`#F15C6D`): Voice-record active ring (rare — WhatsApp uses green here, red is reserved for in-recording decibel meter overflow).
64
+ - **Status Ring Green** (`#25D366`): The ring around avatars with active, unread Status updates.
65
+ - **Status Ring Gray** (`#8696A0`): Status ring for viewed statuses.
66
+ - **Verified Green Check** (`#25D366`): Official business badge checkmark.
67
+
68
+ ### Dark Mode
69
+ WhatsApp's dark mode is a blue-black utility — it's not true black (that would bleach the mint-leaf bubble) and it's not quite gray (that would lose the WhatsApp feel). It's `#0B141A` on the chat wallpaper and `#111B21` on the app canvas.
70
+ - All accent colors retain their light-mode hex; brand greens stay bright.
71
+ - The outgoing bubble shifts from mint-leaf to deep teal-green (`#005C4B`) for contrast.
72
+ - Input bar background becomes `#202C33` to sit above the wallpaper.
73
+
74
+ ## 3. Typography Rules
75
+
76
+ ### Font Family
77
+ - **Primary**: `SF Pro Text` (body) and `SF Pro Display` (titles) — Apple's stock system fonts. WhatsApp ships no proprietary typeface.
78
+ - **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
79
+ - **Monospace (rare)**: `SF Mono` — used only in formatted code blocks inside bubbles (triple-backtick Markdown formatting).
80
+ - **Non-Latin**: Full Dynamic Type support across all iOS-supported scripts. WhatsApp relies entirely on OS font substitution.
81
+
82
+ ### Hierarchy
83
+
84
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
85
+ |------|------|------|--------|-------------|----------------|-------|
86
+ | Large Title (Chats) | SF Pro Display | 34pt | 700 | 1.12 | 0.37pt | "Chats" scroll-collapsing large title |
87
+ | Screen Title | SF Pro Display | 17pt | 600 | 1.18 | -0.4pt | Nav bar title when collapsed |
88
+ | Contact Name (Chat List) | SF Pro Text | 17pt | 600 | 1.23 | -0.4pt | Contact in chat list row |
89
+ | Message Preview | SF Pro Text | 15pt | 400 | 1.33 | -0.2pt | Last message preview below name |
90
+ | Bubble Body | SF Pro Text | 17pt | 400 | 1.29 | -0.4pt | The message text inside a chat bubble |
91
+ | Bubble Sender (Group) | SF Pro Text | 13pt | 600 | 1.23 | -0.1pt | Sender name in group chat, colored |
92
+ | Timestamp (List) | SF Pro Text | 12pt | 400 | 1.2 | 0pt | Relative time on chat-list rows |
93
+ | Timestamp (Bubble) | SF Pro Text | 11pt | 400 | 1.0 | 0pt | In-bubble time in secondary gray |
94
+ | Section Header | SF Pro Text | 13pt | 600 | 1.2 | -0.1pt | "PINNED", "ARCHIVED" — uppercase tracked |
95
+ | System Message | SF Pro Text | 12pt | 500 | 1.3 | 0pt | "Messages are end-to-end encrypted" center pill |
96
+ | Tab Label | SF Pro Text | 10pt | 500 | 1.0 | 0.1pt | Bottom tab labels |
97
+ | Button (Primary) | SF Pro Text | 17pt | 600 | 1.0 | -0.4pt | "Continue", "Next" — native iOS button type |
98
+ | Input Placeholder | SF Pro Text | 16pt | 400 | 1.3 | -0.3pt | "Message" placeholder in compose bar |
99
+ | Settings Row | SF Pro Text | 17pt | 400 | 1.23 | -0.4pt | Settings row title |
100
+ | Settings Detail | SF Pro Text | 15pt | 400 | 1.3 | -0.2pt | Value on right side of settings row |
101
+
102
+ ### Principles
103
+ - **Defer to iOS**: WhatsApp follows Apple Human Interface Guidelines type sizes almost exactly — large titles, native body, footnote.
104
+ - **Dynamic Type first**: Every body/preview/bubble text scales with user preference. Layout wraps gracefully up to Accessibility XL.
105
+ - **Weight used sparingly**: 400 for body, 600 for names/titles, 700 only on large titles. No 800, no 300.
106
+ - **Color contrast matters more than size**: Message preview (15pt gray) and contact name (17pt black) rely on color weight differentiation, not typographic scale.
107
+ - **Sender color in groups**: In group chats each sender's name is tinted in one of ~20 pre-assigned colors to aid scanning.
108
+ - **Timestamps shrink to fit**: When an outgoing bubble has short text, the timestamp floats inside the last line; for long messages it drops below.
109
+
110
+ ## 4. Component Stylings
111
+
112
+ ### Buttons
113
+
114
+ **Primary Green Send Button (The Circular FAB)**
115
+ The single iconic action in WhatsApp. A circular button on the compose bar that morphs: microphone icon when the input is empty, paper-plane when text is entered.
116
+ - Shape: Circle, 36pt diameter (in compose bar) or 52pt (FAB on Chats tab "new message")
117
+ - Background: `#25D366`
118
+ - Icon: SF Symbol `paperplane.fill` or `mic.fill`, 18-22pt, white
119
+ - Pressed: scale 0.92 + soft haptic, background shifts to `#1EBE5D`
120
+ - Voice-record mode: hold the button; ring expands out and fills with decibel-responsive color; drag up to lock recording
121
+
122
+ **Primary Pill CTA ("Allow", "Continue")**
123
+ - Background: `#25D366`
124
+ - Text: white, SF Pro Text 17pt weight 600
125
+ - Padding: 12pt vertical, 24pt horizontal
126
+ - Corner radius: 24pt (pill) for onboarding, 12pt for compact CTAs
127
+ - Pressed: `#1EBE5D`, scale 0.97
128
+
129
+ **Secondary Text Button ("Skip", "Not Now")**
130
+ - Background: transparent
131
+ - Text: `#25D366` (green) for affirmative alternates, `#F15C6D` for destructive
132
+ - Font: SF Pro Text 17pt weight 400
133
+ - No border, no fill — native iOS link style
134
+
135
+ **Icon Actions (Attach, Camera, Emoji, Mic)**
136
+ - Size: 22-24pt glyph, 44pt hit area
137
+ - Default: `#8696A0`
138
+ - Active: `#25D366` (green, when active)
139
+
140
+ **Call Answer / Decline Button (Voice/Video Call Screen)**
141
+ - Answer: 72pt circle `#25D366`, white `phone.fill` icon, subtle pulsing green outer ring
142
+ - Decline: 72pt circle `#F15C6D`, white `phone.down.fill` icon
143
+
144
+ ### Cards & Containers
145
+
146
+ **Chat List Row**
147
+ - Height: 72pt
148
+ - Structure: 48pt circular avatar (leading, 16pt from edge) → 12pt gap → stacked (name 17pt w600 + preview 15pt w400 `#667781`) → trailing (timestamp 12pt w400 right + unread badge below)
149
+ - Background: `#FFFFFF` (light) / `#111B21` (dark)
150
+ - Pressed: background `#F0F2F5` (light) / `#1F2C34` (dark)
151
+ - Swipe-left reveals: Archive (gray), Mute (amber), Delete (red) — native iOS swipe actions
152
+ - Swipe-right reveals: Read / Unread toggle (blue)
153
+ - Pinned row: subtle pin icon trailing, small `#25D366` stroke indicator
154
+
155
+ **Chat Bubble (Outgoing)**
156
+ - Max width: 80% of chat canvas
157
+ - Background: `#D9FDD3` light / `#005C4B` dark
158
+ - Text color: `#111B21` light / `#E9EDEF` dark
159
+ - Padding: 8pt vertical, 12pt horizontal
160
+ - Corner radius: 12pt all corners, **except** the bottom-trailing corner which is 0pt for the "tail" nub (or a pointed SVG tail hanging below-right)
161
+ - Trailing timestamp + tick row: 11pt `#667781`/`#8696A0` inline at bottom-right, check icon 12pt
162
+ - Tail: small triangle `#D9FDD3`/`#005C4B` at bottom-right of bubble (only on the last bubble from sender in a grouped sequence)
163
+
164
+ **Chat Bubble (Incoming)**
165
+ - Max width: 80%
166
+ - Background: `#FFFFFF` light / `#1F2C34` dark
167
+ - Text color: `#111B21` light / `#E9EDEF` dark
168
+ - Padding: 8pt vertical, 12pt horizontal
169
+ - Corner radius: 12pt all corners, **except** bottom-leading corner 0pt for tail
170
+ - Sender name (group only): top line, 13pt weight 600, tinted sender color
171
+
172
+ **Reply-Quote Bubble (Inside a Message)**
173
+ - Nested inside an outgoing or incoming bubble at the top
174
+ - 4pt leading vertical accent bar in sender's group color (or green for self)
175
+ - Background: 0.08 opacity over parent bubble
176
+ - Text: 13pt regular, truncated to 2 lines
177
+
178
+ **Settings Group (iOS Grouped List)**
179
+ - Background: `#F7F8FA` light / `#111B21` dark
180
+ - Row fill: `#FFFFFF` light / `#1F2C34` dark
181
+ - Corner radius: 10pt on first and last row of group, 0pt in middle
182
+ - Divider: 0.5pt `#E9EDEF` indented to text
183
+
184
+ ### Navigation
185
+
186
+ **Bottom Tab Bar (iOS 2024+)**
187
+ - Height: 49pt + safe area
188
+ - Background: `.regularMaterial` blur over `#FFFFFF` (light) / `#111B21` (dark) at 92% opacity
189
+ - Tabs: Updates, Calls, Communities, Chats, Settings
190
+ - Icon size: 24pt
191
+ - Active color: `#25D366` (green — unlike iOS Messages, WhatsApp uses brand green as active tint)
192
+ - Inactive: `#8696A0`
193
+ - Labels: SF Pro Text 10pt weight 500, always shown
194
+ - Badge: red circle `#F15C6D` with white count, top-right of icon
195
+
196
+ **Top Nav (Chat Screen)**
197
+ - Height: 44pt + safe area
198
+ - Leading: back chevron 17pt + avatar (32pt circular) + contact name + typing/last-seen status
199
+ - Trailing: video-call icon (22pt) + voice-call icon (22pt) + ellipsis menu
200
+ - Background: `#F0F2F5` light / `#202C33` dark (a subtle surface tint)
201
+ - Typing indicator: 13pt green "typing..." below name
202
+
203
+ **Top Nav (Chat List / Updates)**
204
+ - Large title "Chats" scroll-collapses to standard nav
205
+ - Leading: "Edit" button (blue text)
206
+ - Trailing: New Chat icon (green `#25D366`, square.and.pencil SF Symbol)
207
+ - Search bar below title: pill shape, `#F0F2F5` background, 15pt
208
+
209
+ ### Input Fields
210
+
211
+ **Compose Bar (Chat Input)**
212
+ - Height: ~52pt when single-line, grows up to ~120pt for multiline
213
+ - Structure: leading emoji/sticker icon (24pt `#8696A0`) → multiline text field → trailing (attach paperclip 24pt + camera 24pt + mic/send circle 36pt green)
214
+ - Background: `#FFFFFF` light / `#202C33` dark (elevated surface)
215
+ - Input field inset: 12pt padding, 20pt corner radius pill
216
+ - Placeholder: "Message", 16pt weight 400 `#8696A0`
217
+ - Focus: no border change, keyboard slides up, "Send" circle morphs from mic to paperplane
218
+
219
+ **Search Bar**
220
+ - Background: `#F0F2F5` light / `#202C33` dark
221
+ - Corner radius: 10pt
222
+ - Height: 36pt
223
+ - Leading magnifyingglass `#8696A0`
224
+ - Placeholder: "Search" `#8696A0`
225
+ - Focus: tiny cancel button slides in trailing
226
+
227
+ ### Distinctive Components
228
+
229
+ **Voice Message Waveform Bubble**
230
+ The signature WhatsApp interactive component. A voice message rendered as a horizontal waveform inside the bubble.
231
+ - Height: ~52pt bubble total
232
+ - Leading: play/pause circle (36pt, `#25D366` background, white `play.fill` / `pause.fill`)
233
+ - Center: waveform — ~40-60 vertical bars, each 2pt wide with 2pt spacing
234
+ - Bar color: played bars = `#25D366` (or `#128C7E` in teal-heavy legacy), unplayed bars = `#8696A0`
235
+ - Bar heights: variable per actual audio amplitude (2-20pt range)
236
+ - Trailing: duration "0:23" 11pt `#8696A0`, below that a speed pill "1x" / "1.5x" / "2x" when playing
237
+ - Avatar dot (tiny): for group voice messages, the sender's avatar sits just above the waveform
238
+ - Haptics: soft tick when playback reaches each "amplitude peak" bar (subtle)
239
+
240
+ **Status Ring (Around Avatar)**
241
+ - Diameter: avatar + 6pt outer ring
242
+ - Ring width: 2.5pt
243
+ - Ring color: `#25D366` if unviewed status updates exist; `#8696A0` if all viewed
244
+ - Segmentation: if multiple status updates, ring breaks into N arc segments with 4-degree gaps
245
+ - Animation on tap: ring fills progress as viewer scrubs through statuses
246
+
247
+ **Read Receipts (Tick Row)**
248
+ - Single gray tick (`#8696A0`) = sent to server
249
+ - Double gray tick = delivered to device
250
+ - Double blue tick (`#53BDEB`) = read
251
+ - Position: inline with timestamp at bottom-right of outgoing bubble
252
+ - Size: 14pt check marks, tightly kerned so they overlap slightly
253
+ - Animation: blue ticks animate in with a slight fade when the other party opens the message
254
+
255
+ **End-to-End Encryption Lock Banner**
256
+ - Center pill in chat canvas, 1pt shadow, `#FFF5C4` (light) / `#1F2C34` (dark) background
257
+ - SF Symbol `lock.fill` 12pt + "Messages are end-to-end encrypted. No one outside this chat..."
258
+ - 12pt text weight 500, `#54636D`
259
+ - Appears as first message in every new chat
260
+
261
+ **View-Once Media Indicator**
262
+ - Circular "1" badge in the corner of media preview in chat bubble
263
+ - After viewing: bubble collapses to "You opened" or "Opened" text with ghost-eye SF Symbol
264
+
265
+ **Emoji Reaction Palette**
266
+ - 6 default emojis: heart, thumbs-up, laugh, surprise, cry, pray — plus "+" for custom
267
+ - Palette: horizontal floating capsule above the message on long-press
268
+ - Background: `#FFFFFF` light / `#2A3942` dark with soft shadow
269
+ - Emoji size: 32pt, spacing 8pt
270
+ - On selection: emoji flies down onto bottom-right of bubble as a small 14pt chip
271
+ - Haptic: soft impact on selection
272
+
273
+ ## 5. Layout Principles
274
+
275
+ ### Spacing System
276
+ - Base unit: 4pt
277
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 44, 56, 72
278
+ - Standard screen margin: 16pt horizontal
279
+ - Chat bubble margin from screen edge: 8pt (tighter than app canvas)
280
+ - Between chat bubbles (same sender): 2pt; different sender: 8pt
281
+
282
+ ### Grid & Container
283
+ - Content width: full device width
284
+ - Chat canvas width: full bleed; bubbles constrained to 80% max width
285
+ - Settings list: full width with 16pt horizontal padding inside rows
286
+
287
+ ### Whitespace Philosophy
288
+ - **Density tuned for browsing**: Chat list rows at 72pt are comfortable; bubble padding at 8-12pt is tight enough for a rapid-fire conversation.
289
+ - **Wallpaper as negative space**: The cream/dark doodle wallpaper is visible between bubbles — it's not empty, it's atmospheric.
290
+ - **No decorative padding**: Every pixel does a job. Avatars are 40-48pt, buttons are sized to their content.
291
+
292
+ ### Border Radius Scale
293
+ - Square (0pt): Status segment arcs (rare), media thumbnails can be 0pt in grid
294
+ - Soft (4pt): Media previews inside bubble
295
+ - Standard (10pt): Search bar, section group cards, settings row corners
296
+ - Bubble (12pt): Chat bubbles — 12pt on all corners except the tail corner (0pt)
297
+ - Comfortable (16pt): Onboarding CTAs, bottom sheet grabber handles
298
+ - Pill (20-24pt): Compose input field, filter chips
299
+ - Full Circle (50%): Avatars, mic button, send button, status ring
300
+
301
+ ## 6. Depth & Elevation
302
+
303
+ | Level | Treatment | Use |
304
+ |-------|-----------|-----|
305
+ | Flat (0) | No shadow | Chat list rows, settings rows, bubbles on wallpaper |
306
+ | Bubble (1) | `rgba(0,0,0,0.08) 0 1px 2px` | Subtle shadow under chat bubbles, extremely soft |
307
+ | Card (2) | `rgba(0,0,0,0.12) 0 2px 8px` | Reaction palette floating menu |
308
+ | Sheet (3) | `rgba(0,0,0,0.2) 0 -12px 32px` | Bottom action sheet, attachment tray |
309
+ | Modal Overlay | `rgba(0,0,0,0.4)` backdrop | Long-press overlay, dimming behind reactions sheet |
310
+ | Nav Blur | `.regularMaterial` 92% opacity | Top nav bar and bottom tab bar |
311
+
312
+ **Shadow Philosophy**: Shadows are extremely restrained. The bubble itself has at most a 1-2pt shadow to separate it from the wallpaper, and only reaction/attachment popovers lift noticeably. The app feels flat, mirroring iOS's own aesthetic.
313
+
314
+ ### Motion
315
+ - **Send button press**: Scale 0.92 → 1.0 spring + soft haptic
316
+ - **Mic record hold**: Ring pulses outward 1.0 → 1.2 with decibel-responsive scale
317
+ - **Message send**: Bubble slides up from compose bar, ticks animate in after 300ms latency
318
+ - **Read receipt update**: Ticks cross-fade from gray to blue over 200ms
319
+ - **Swipe-to-reply**: Native iOS-style 60fps horizontal drag, haptic tick at threshold
320
+ - **Reaction tap**: Emoji scales 1.0 → 1.2 → 1.0 with soft haptic
321
+ - **Voice playback**: Waveform bars progressively fill green left-to-right synced to audio
322
+ - **Status ring fill**: Circular progress animates during status viewing (linear)
323
+
324
+ ## 7. Do's and Don'ts
325
+
326
+ ### Do
327
+ - Use `#25D366` (WhatsApp Green) for send, answer-call, record, and positive primary actions
328
+ - Use `#D9FDD3` (light) or `#005C4B` (dark) for outgoing bubbles — the mint-leaf is iconic
329
+ - Keep bubble tails asymmetric — rounded all corners except one pointed at sender
330
+ - Rely on Dynamic Type; never hardcode pt sizes that won't scale
331
+ - Use SF Pro + SF Symbols as your default — WhatsApp looks native because it IS native
332
+ - Use blue double ticks (`#53BDEB`) for read receipts — this is universally understood
333
+ - Use the lock icon for end-to-end encryption indicators — the semantic weight matters
334
+ - Show the encryption banner as the first message in every new chat
335
+ - Blur the top nav and bottom tab bar with `.regularMaterial`
336
+ - Use green status rings for unread, gray for viewed status updates
337
+
338
+ ### Don't
339
+ - Don't use pure black canvas — WhatsApp dark mode is `#111B21`, a blue-black
340
+ - Don't round bubble corners equally — the asymmetric tail is core to the form language
341
+ - Don't use red for send or positive actions — red is reserved for delete, fail, and call-decline
342
+ - Don't place the "new chat" FAB inside the tab bar — keep it as a nav-bar trailing icon
343
+ - Don't add custom fonts — WhatsApp's iOS typography is pure SF Pro
344
+ - Don't use gradients on UI chrome — WhatsApp is flat color
345
+ - Don't hide the timestamp inside bubbles at small sizes — users scan bubbles for recency
346
+ - Don't use green text — green is structural (send, answer, read, status ring), not decorative
347
+ - Don't break out of native iOS swipe-actions for row gestures
348
+ - Don't use heavy shadows — WhatsApp is aggressively flat
349
+
350
+ ## 8. Responsive Behavior
351
+
352
+ ### Device Sizes
353
+ | Device | Width | Key Changes |
354
+ |--------|-------|-------------|
355
+ | iPhone SE (3rd gen) | 375pt | Bubble max-width shrinks to 78%; waveform loses ~5 bars |
356
+ | iPhone 13/14/15 | 390pt | Standard bubble 80% max-width |
357
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in calls nav |
358
+ | iPhone 15/16 Pro Max | 430pt | Bubble 80%; avatar grows to 52pt in chat list |
359
+ | iPad | 768pt+ | Split view: chat list left, conversation right |
360
+
361
+ ### Dynamic Type
362
+ - Bubble body, chat-list name and preview: full scale up to Accessibility XL
363
+ - Timestamps (11-12pt): fixed size to preserve inline layout
364
+ - Tab labels: fixed 10pt
365
+ - Bubble auto-wraps at any scale; bubble max-width shrinks with XL sizes
366
+
367
+ ### Orientation
368
+ - Chat list / Updates / Settings: **portrait-locked** on iPhone
369
+ - Video calls: **rotate to landscape**
370
+ - Media viewer (photos / videos inside chat): **rotate to landscape**
371
+ - iPad: all orientations supported; split view adapts to landscape width
372
+
373
+ ### Touch Targets
374
+ - Send button: 36pt in compose bar (native iOS minimum-plus hit target)
375
+ - Mic button: same 36pt circle, 44pt effective hit area with hitSlop
376
+ - Chat list row: 72pt height, full-row tappable
377
+ - Swipe actions: native iOS swipe width, 80pt per action
378
+ - Reaction emojis in palette: 32pt glyph, 44pt effective
379
+
380
+ ### Safe Area Handling
381
+ - Top: safe area honored; call screen extends into Dynamic Island with pill treatment
382
+ - Bottom: compose bar floats above safe area; keyboard pushes content up natively
383
+ - Sides: 16pt on app canvas, 8pt on chat canvas for bubble alignment
384
+
385
+ ## 9. Agent Prompt Guide
386
+
387
+ ### Quick Color Reference
388
+ - WhatsApp Green: `#25D366`
389
+ - Green Pressed: `#1EBE5D`
390
+ - Teal (legacy): `#075E54`
391
+ - Mid Teal: `#128C7E`
392
+ - Outgoing bubble (light): `#D9FDD3`
393
+ - Outgoing bubble (dark): `#005C4B`
394
+ - Incoming bubble (light): `#FFFFFF`
395
+ - Incoming bubble (dark): `#1F2C34`
396
+ - Chat wallpaper (light): `#ECE5DD`
397
+ - Chat wallpaper (dark): `#0B141A`
398
+ - App canvas (light): `#FFFFFF`
399
+ - App canvas (dark): `#111B21`
400
+ - Text primary (light): `#111B21`
401
+ - Text secondary (light): `#667781`
402
+ - Text primary (dark): `#E9EDEF`
403
+ - Text secondary (dark): `#8696A0`
404
+ - Read-receipt blue: `#53BDEB`
405
+ - Error / decline red: `#F15C6D`
406
+
407
+ ### Example Component Prompts
408
+ - "Create a SwiftUI WhatsApp chat bubble (outgoing): max-width 80% of parent, 12pt padding, background #D9FDD3 in light / #005C4B in dark, 12pt corner radius on all corners except bottom-trailing (0pt for tail). Text in SF Pro 17pt weight 400 #111B21. Inline trailing time '10:24' in 11pt #667781 followed by double blue check ticks #53BDEB, 12pt SF Symbol 'checkmark'."
409
+ - "Build the WhatsApp send button: 36pt circular Pressable, background #25D366, SF Symbol 'paperplane.fill' 18pt white center. When text input is empty, morph to 'mic.fill'. Pressed state: scale 0.92 + soft haptic, background #1EBE5D. iOS 17+ .sensoryFeedback on trigger."
410
+ - "Design the chat list row: 72pt height, leading 48pt circular avatar with optional 2.5pt green ring (#25D366) for unread status, 12pt gap, stacked contact name in SF Pro 17pt weight 600 and message preview in 15pt weight 400 #667781, trailing 12pt timestamp top-right and optional #25D366 unread badge below. Swipe-left reveals Archive (#8696A0), Mute (#FF9500), Delete (#F15C6D)."
411
+ - "Build the voice-message waveform bubble: ~52pt tall bubble with mint-leaf (#D9FDD3) background, 12pt corner radius (asymmetric tail). Leading 36pt #25D366 play circle with white play.fill, horizontal waveform of 50 bars (2pt wide, 2pt gap) with variable 2-20pt heights. Played bars #25D366, unplayed #8696A0. Trailing duration '0:23' in 11pt #8696A0 and a '1x' speed pill."
412
+ - "Create the compose bar: pill-shaped multiline input with 20pt radius, background #FFFFFF on a #F0F2F5 light canvas (or #202C33 on dark), placeholder 'Message' 16pt #8696A0. Leading emoji SF Symbol 'face.smiling' 24pt #8696A0. Trailing camera SF Symbol 'camera.fill' 24pt and the 36pt #25D366 send/mic morph button."
413
+ - "Design the WhatsApp bottom tab bar: Updates, Calls, Communities, Chats, Settings — 24pt SF Symbol icons (bubble.left.and.bubble.right.fill for Communities, message.fill for Chats). Active tint #25D366, inactive #8696A0. Labels SF Pro 10pt weight 500. Blur background .regularMaterial over #FFFFFF / #111B21 at 92% opacity."
414
+
415
+ ### Iteration Guide
416
+ 1. Canvas is `#FFFFFF` (light) / `#111B21` (dark) — the dark is a blue-black, NOT pure black
417
+ 2. Chat wallpaper is SEPARATE from app canvas — `#ECE5DD` cream (light) / `#0B141A` deep (dark)
418
+ 3. Outgoing bubbles are `#D9FDD3` / `#005C4B` — this is THE signature pixel of WhatsApp
419
+ 4. Bubble corner radius is 12pt on all corners EXCEPT the tail (0pt on bottom-trailing for outgoing, bottom-leading for incoming)
420
+ 5. WhatsApp Green `#25D366` only for send / answer-call / voice-record / status-ring / read-tick green — never decorative
421
+ 6. Blue double check (`#53BDEB`) is a LOAD-BEARING color — do not repurpose
422
+ 7. Typography is pure SF Pro — NO custom fonts; weights 400, 500, 600, 700 only
423
+ 8. Dynamic Type is respected everywhere except inline timestamps (11-12pt fixed)
424
+ 9. Read receipts use tiny 12-14pt overlapping check marks, not separate dots
425
+ 10. End-to-end encryption banner is THE first message in every new chat — don't skip it