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,397 @@
1
+ # Design System Inspiration of Threema (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Threema's iOS app is a privacy-first messenger, and its entire visual language is engineered around one promise: you can communicate without revealing who you are. There is no phone number, no email, no Google or Apple sign-in — your identity is an anonymous, randomly-generated 8-character **Threema ID** (e.g. `ECHOX9P2`). Because the product's value is trust and confidentiality rather than reach or feed-scrolling, the UI is deliberately calm, utilitarian, and Swiss-engineered. It looks like a serious tool, not a social toy: a clean white canvas (`#FFFFFF`), a single confident green (`#088A29`) for every action, generous spacing, and almost no decoration. The aesthetic says "encrypted, audited, made in Switzerland" — closer to a banking or password-manager app than to a consumer chat app.
6
+
7
+ The one piece of UI that carries Threema's whole identity is the **trust-level indicator** — three small dots that sit next to every contact and conversation. Red (Level 1) means an unknown contact whose ID has not been verified. Orange (Level 2) means the contact was matched from your address book via a server-side hash (the ID is linked to a known phone/email, but you have not personally checked it). Green (Level 3) means you scanned the person's QR code face-to-face and the cryptographic key fingerprint matched — the only fully-trusted state. These three dots appear in the conversation list, the chat navigation bar, the contact detail screen, and the verify screen. Learning to "get someone to green" is the core ritual of the product, and the dots are the single most recognizable Threema visual.
8
+
9
+ The other signature surface is the **QR / verify screen**: a large QR code encoding your Threema ID + public key fingerprint, your ID in a monospaced string, and a scanner that, on a successful in-person match, animates the contact up to three green dots. Identity and verification — not feeds, not stories, not reactions — are the product's emotional center, and the design spends its richest moments here.
10
+
11
+ Color is restrained to the extreme. Threema Green is the only brand color; it is the send button, the outgoing message bubble, the primary CTA, links, switches, and the active tab tint. There is no secondary accent. Status is communicated through the trust palette (red / orange / green) and through standard system semantics (a destructive red for delete/block). Outgoing bubbles are a soft green tint; incoming bubbles are a neutral gray. Everything else is white, near-black text, and hairline dividers. The result is a screen where the eye is never pulled anywhere except the content and the trust state.
12
+
13
+ Typography is Apple's **SF Pro** — Threema does not ship a custom typeface; it leans entirely on the iOS system font and Dynamic Type. The hierarchy is conventional iOS: large titles for top-level screens, semibold for names and section headers, regular for message body, and a **monospaced** treatment specifically for the Threema ID and key fingerprint (so the random character string is unambiguous and easy to read aloud during verification). The type system is invisible by design — the brand is the green and the trust dots, not the letterforms.
14
+
15
+ **Key Characteristics:**
16
+ - Pure white canvas (`#FFFFFF`) light / dark charcoal (`#121212`) dark — calm, utilitarian, Swiss
17
+ - Single brand color: Threema Green (`#088A29`) — send, CTA, links, active tab, switches
18
+ - **Trust-level dots** (red `#E5453A` / orange `#EF8B2C` / green `#15A33A`) — the signature element, on every contact
19
+ - **Threema ID** — anonymous 8-char identity, shown in **monospace**; no phone number or email
20
+ - **QR verify flow** — scan in person to reach Level 3 (three green dots)
21
+ - Outgoing bubble = soft green tint; incoming bubble = neutral gray; tails on the speaker side
22
+ - SF Pro system font + Dynamic Type — no custom typeface
23
+ - Minimal chrome: a 4-5 tab bottom bar (Chats / Contacts / Calls / My ID / Settings), system nav bar
24
+ - End-to-end encryption messaging surfaced everywhere: lock glyphs, "verified" labels, key-fingerprint strings
25
+ - Destructive actions in system red; success/verified states in trust green
26
+
27
+ ## 2. Color Palette & Roles
28
+
29
+ ### Primary (Interactive)
30
+ - **Threema Green** (`#088A29`): The single brand color — send button, primary CTA fill, links, switches, active tab tint, selection.
31
+ - **Threema Green Pressed** (`#066B20`): Pressed/active state for primary buttons.
32
+ - **Threema Green Bright** (`#1FA53C`): Dark-mode variant of the brand green — used for tint, links, and active tab on the dark canvas where `#088A29` is too dim.
33
+
34
+ ### Canvas & Surfaces (Light Mode)
35
+ - **Canvas White** (`#FFFFFF`): Primary light canvas — conversation list, chat background, settings.
36
+ - **Surface Gray** (`#F4F4F6`): Grouped table section background, search field, settings cells.
37
+ - **Surface Pressed** (`#E8E8EB`): Pressed/selected list rows.
38
+ - **Divider** (`#E2E2E5`): Hairline separators between list rows and sections.
39
+ - **Incoming Bubble** (`#EBEBED`): Received message bubble fill.
40
+ - **Outgoing Bubble** (`#D6F0DC`): Sent message bubble fill — a soft green tint of the brand.
41
+
42
+ ### Canvas & Surfaces (Dark Mode)
43
+ - **Dark Canvas** (`#121212`): Primary dark canvas.
44
+ - **Dark Surface 1** (`#1C1C1E`): Grouped section background, nav bar, settings cells.
45
+ - **Dark Surface 2** (`#262628`): Incoming bubble, search field, pressed rows.
46
+ - **Dark Divider** (`#2C2C2E`): Hairline separators on dark.
47
+ - **Outgoing Bubble (Dark)** (`#0C5E22`): Sent bubble on dark — a deep green.
48
+
49
+ ### Text
50
+ - **Text Primary Light** (`#111113`): Names, message body, titles — near-black, not pure black.
51
+ - **Text Secondary Light** (`#6B6B70`): Timestamps, subtitles, metadata, placeholder.
52
+ - **Text Tertiary Light** (`#A6A6AB`): Disabled, very low-emphasis labels.
53
+ - **Text Primary Dark** (`#ECECEC`): Primary text on dark canvas.
54
+ - **Text Secondary Dark** (`#9A9A9F`): Secondary text on dark canvas.
55
+
56
+ ### Trust Level Palette (the signature roles)
57
+ | Role | Color | Meaning |
58
+ |------|-------|---------|
59
+ | Trust Level 1 (Red) | `#E5453A` | Unknown contact — ID not verified, no shared key |
60
+ | Trust Level 2 (Orange) | `#EF8B2C` | Matched from address book — server-linked, not personally checked |
61
+ | Trust Level 3 (Green) | `#15A33A` | Fully verified — QR code scanned in person, fingerprint matched |
62
+ | Trust Track (empty) | `#D2D2D7` light / `#3A3A3E` dark | Inactive dot slot in some compact indicators |
63
+
64
+ ### Semantic
65
+ - **Error / Destructive Red** (`#E5453A`): Delete chat, block contact, failed send, revoke. (Shares hue with Trust Level 1 — destructive and untrusted both read as red.)
66
+ - **Success / Verified Green** (`#15A33A`): Verification success, "Verified" badge, delivered+read confirmation accents.
67
+ - **Warning Orange** (`#EF8B2C`): "Not verified" caution banners, downgrade warnings.
68
+ - **Link** (`#088A29` light / `#1FA53C` dark): Inline links, "Add via ID", profile links.
69
+ - **Read Receipt Check** (`#3A3A3E` light / `#6FD68C` dark accent): Double-check delivery/read glyph in the bubble meta row.
70
+
71
+ ## 3. Typography Rules
72
+
73
+ ### Font Family
74
+ - **Primary**: `SF Pro` (Apple system font) — Threema ships no custom typeface; it uses the iOS system font with Dynamic Type throughout. SF Pro Text for body sizes, SF Pro Display for large titles.
75
+ - **Monospace**: `SF Mono` — used specifically for the Threema ID, public-key fingerprint, and any cryptographic string, so random characters are unambiguous and easy to read aloud during in-person verification.
76
+ - **Fallback Stack (non-Apple / web mirror)**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
77
+ - **Not user-switchable**: The face is always the system font; only Dynamic Type size scales.
78
+
79
+ ### Hierarchy
80
+
81
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
82
+ |------|------|------|--------|-------------|----------------|-------|
83
+ | Large Title | SF Pro Display | 32pt | 800 | 1.15 | -0.4pt | Top-level screen header ("Chats", "Contacts") |
84
+ | Screen Title | SF Pro Display | 26pt | 700 | 1.2 | -0.3pt | "Verify Contact", "My ID" detail screens |
85
+ | Section Header | SF Pro Text | 22pt | 700 | 1.25 | -0.2pt | "Your Threema ID", grouped header |
86
+ | Nav Title / Name | SF Pro Text | 18pt | 600 | 1.3 | -0.1pt | Contact name in chat nav bar, list title |
87
+ | Message Body | SF Pro Text | 16pt | 400 | 1.35 | 0pt | Chat bubble text — the most-read style |
88
+ | List Title | SF Pro Text | 15pt | 500 | 1.3 | 0pt | Conversation list primary line |
89
+ | Secondary / Subtitle | SF Pro Text | 14pt | 400 | 1.35 | 0pt | Last-message preview, trust caption, metadata |
90
+ | Threema ID / Fingerprint | SF Mono | 14pt | 600 | 1.4 | 1pt | Anonymous ID + key fingerprint — monospaced |
91
+ | Caption / Timestamp | SF Pro Text | 12pt | 500 | 1.2 | 0pt | Bubble timestamp, day separators |
92
+ | Button | SF Pro Text | 16pt | 600 | 1.0 | 0pt | Primary / secondary buttons |
93
+ | Tab Label | SF Pro Text | 10pt | 500 | 1.0 | 0.1pt | Bottom tab labels |
94
+ | Badge / Unread Count | SF Pro Text | 12pt | 700 | 1.0 | 0pt | Unread count pill |
95
+
96
+ ### Principles
97
+ - **System font, always**: Threema never overrides SF Pro — respect Dynamic Type and the user's preferred text size globally.
98
+ - **Monospace is for identity strings only**: The Threema ID and key fingerprint use SF Mono so characters never get confused (0/O, 1/l) when read aloud during verification; nothing else is monospaced.
99
+ - **Weight concentrated at 400 / 500 / 600 / 700 / 800**: Regular body, medium for list rows, semibold for names and buttons, bold for titles and trust labels.
100
+ - **Hierarchy via weight + position, not color**: Color is reserved for the green and the trust dots. Text hierarchy comes from size and weight only.
101
+ - **Dynamic Type first-class**: Titles, names, message body, captions all scale. Tab labels, trust-dot indicators, and the monospaced ID string stay fixed (layout-sensitive).
102
+
103
+ ## 4. Component Stylings
104
+
105
+ ### Buttons
106
+
107
+ **Primary Button (Scan QR / Save / Send Verification)**
108
+ - Shape: Rounded rectangle, 10pt corner radius
109
+ - Background: `#088A29` (Threema Green) / `#1FA53C` (dark mode)
110
+ - Text: `#FFFFFF`
111
+ - Padding: 14pt vertical, 28pt horizontal
112
+ - Font: SF Pro Text 16pt weight 600
113
+ - Pressed: background `#066B20` + scale 0.98 + light haptic
114
+ - Disabled: background `#088A29` at 35% opacity, text at 60%
115
+
116
+ **Secondary / Outline Button (Share My ID / Cancel)**
117
+ - Background: transparent
118
+ - Text: `#088A29` light / `#1FA53C` dark
119
+ - Border: 1.5pt `#088A29` / `#1FA53C`
120
+ - Padding: 12pt vertical, 22pt horizontal
121
+ - Corner radius: 10pt
122
+ - Font: SF Pro Text 15pt weight 600
123
+ - Pressed: background `#088A29` at 8% opacity
124
+
125
+ **Pill Button (New Chat / Filter)**
126
+ - Background: `#F4F4F6` light / `#262628` dark
127
+ - Text: `#111113` light / `#ECECEC` dark
128
+ - Border: 1pt `#E2E2E5` / `#2C2C2E`
129
+ - Padding: 10pt vertical, 18pt horizontal
130
+ - Corner radius: 999pt (full pill)
131
+ - Font: SF Pro Text 14pt weight 500
132
+
133
+ **Text Button (Add via Threema ID / Forgot)**
134
+ - Font: SF Pro Text 15pt weight 600
135
+ - Color: `#088A29` light / `#1FA53C` dark
136
+ - No underline, no background
137
+ - Pressed: color `#066B20` + 0.6 opacity
138
+
139
+ **Send Button (composer)**
140
+ - Circular, 36pt diameter
141
+ - Background: `#088A29` / `#1FA53C`
142
+ - Glyph: paper-plane (SF Symbol `paperplane.fill`) 17pt white
143
+ - Disabled (empty field): background `#D2D2D7` / `#3A3A3E`
144
+
145
+ ### Trust-Level Indicator (the core atom)
146
+
147
+ The signature Threema component. A horizontal row of three dots that encodes contact verification.
148
+
149
+ - **Dot size**: 7pt in compact contexts (list row, nav subtitle), 10pt in detail/verify screens, 14pt on the contact-detail hero
150
+ - **Spacing**: 3-4pt between dots
151
+ - **Colors**: all three dots share the level color — Level 1 = three `#E5453A` red, Level 2 = three `#EF8B2C` orange, Level 3 = three `#15A33A` green
152
+ - **Placement**: leading the contact name in lists, in the chat nav subtitle ("Verified · ECHOX9P2"), and as a large badge on the contact-detail screen
153
+ - **Accompanying label**: a 14pt secondary-color caption ("Unknown" / "Server-matched" / "Verified") sits beside or below the dots
154
+ - **State change**: when verification succeeds, the dots crossfade from red/orange to green over 200ms with a soft success haptic
155
+ - **Accessibility**: never communicated by color alone — always paired with the text label and a VoiceOver string ("Trust level: verified")
156
+
157
+ ### Threema ID Chip / Field
158
+
159
+ - Monospaced string (SF Mono 14pt w600), letter-spacing 1pt
160
+ - Background: `#F4F4F6` light / `#262628` dark, 8pt corner radius, 8pt × 12pt padding (when shown as a chip)
161
+ - Often paired with a copy icon (SF Symbol `doc.on.doc`) and a share action
162
+ - The ID is always 8 characters, uppercase alphanumeric, randomly assigned
163
+
164
+ ### QR Verify Card
165
+
166
+ - Large QR code: white quiet-zone card, 12pt corner radius, QR modules rendered in `#088A29` on white (or pure black on white for max scanner compatibility — Threema uses brand green in-app, black for export)
167
+ - Below: the Threema ID in SF Mono, plus the public-key fingerprint
168
+ - Scanner view: full-bleed camera with a centered rounded-square reticle (`#FFFFFF` 2.5pt stroke) and a green corner-pulse animation
169
+ - Success: reticle flashes `#15A33A`, contact animates to three green dots, success haptic
170
+
171
+ ### Message Bubbles
172
+
173
+ **Incoming Bubble**
174
+ - Background: `#EBEBED` light / `#262628` dark
175
+ - Text: `#111113` / `#ECECEC`, SF Pro Text 16pt w400
176
+ - Corner radius: 16pt with a 4pt tail corner on the bottom-leading side
177
+ - Max width: ~78% of screen
178
+ - Meta row: timestamp 12pt `#6B6B70` / `#9A9A9F`, trailing-aligned
179
+
180
+ **Outgoing Bubble**
181
+ - Background: `#D6F0DC` (soft green tint) light / `#0C5E22` (deep green) dark
182
+ - Text: `#0B3D17` / `#EAFBEF`, SF Pro Text 16pt w400
183
+ - Corner radius: 16pt with a 4pt tail corner on the bottom-trailing side
184
+ - Meta row: timestamp + delivery state — single check (sent), double check (delivered), double check tinted (`#15A33A` / `#6FD68C`) when read
185
+
186
+ ### Navigation
187
+
188
+ **Chat Navigation Bar**
189
+ - Height: 54pt + safe area
190
+ - Leading: back chevron in brand green (`#1FA53C` on dark) + circular 34pt contact avatar
191
+ - Center-leading: contact name (18pt w600) with a subtitle row = trust dots + Threema ID ("Verified · ECHOX9P2")
192
+ - Trailing: call glyph (SF Symbol `phone`) in brand green; tap opens encrypted call
193
+ - Background: blurred canvas (`rgba(18,18,18,0.96)` dark), 0.5pt bottom divider
194
+
195
+ **Bottom Tab Bar**
196
+ - Height: 68pt incl. home indicator
197
+ - Tabs: Chats, Contacts, Calls, My ID, Settings (some builds: 4 tabs without Calls)
198
+ - Icon size: 22pt
199
+ - Active color: `#088A29` / `#1FA53C` (filled glyph); inactive: `#818185`
200
+ - Labels: SF Pro Text 10pt w500, always shown
201
+ - Background: blurred (`saturate(180%) blur(20px)`), 0.5pt top divider
202
+ - Unread badge: red `#E5453A` pill with white 12pt w700 count on the Chats tab
203
+
204
+ ### Input Fields
205
+
206
+ **Composer**
207
+ - Height: 56pt
208
+ - Leading: `+` attach glyph (24pt, brand green)
209
+ - Center: rounded text field — `#F4F4F6` / `#262628`, 19pt corner radius (pill), 16pt horizontal padding, placeholder "Message" in secondary color
210
+ - Trailing: circular green send button (see Buttons)
211
+
212
+ **Search Field**
213
+ - Height: 38pt
214
+ - Background: `#F4F4F6` / `#262628`
215
+ - Corner radius: 10pt
216
+ - Leading magnifier glyph 16pt secondary color, placeholder "Search" 14pt secondary
217
+ - Focus: 1.5pt `#088A29` / `#1FA53C` border
218
+
219
+ **Threema ID Entry (Add Contact)**
220
+ - Monospaced input, SF Mono 16pt, auto-uppercasing, 8-char limit
221
+ - Inline validation: green check when the ID resolves, red "ID not found" otherwise
222
+
223
+ ### Distinctive Components
224
+
225
+ **Trust-Level Dots** — see core atom above. The single most recognizable Threema element.
226
+
227
+ **QR Verify Flow** — large QR + scanner + the green-dot upgrade animation. The product's emotional center.
228
+
229
+ **Verified Banner** — a full-width inset bar above the composer when a contact is unverified: orange `#EF8B2C` left rule, "This contact is not verified. Scan their QR code to verify." with a "Verify" text button.
230
+
231
+ **Encrypted-Call Pill** — in-call screen shows a lock glyph + "End-to-end encrypted" caption and a short verification phrase (emoji/word sequence) both parties can read aloud.
232
+
233
+ **My ID Card** — the user's own identity surface: avatar, nickname, the Threema ID in SF Mono, QR code, public-key fingerprint, and "Revoke ID" (destructive red).
234
+
235
+ ## 5. Layout Principles
236
+
237
+ ### Spacing System
238
+ - Base unit: 4pt
239
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 56
240
+ - List row height: 64pt (avatar + two text lines + trust dots)
241
+ - Section gap (grouped lists): 32pt
242
+ - Screen content inset: 16pt horizontal
243
+ - Bubble vertical gap: 8pt; grouped same-sender bubbles tighten to 3pt
244
+
245
+ ### Grid & Container
246
+ - iPhone: content at 16pt horizontal insets; bubbles cap at 78% width
247
+ - iPad: chat list and conversation in a split view (list ~340pt, conversation flexible)
248
+ - Grouped settings/contacts use inset-grouped table style, 16pt outer inset, 10pt cell corner radius
249
+
250
+ ### Whitespace Philosophy
251
+ - **Utilitarian calm**: generous vertical rhythm; nothing decorative competes with content
252
+ - **Trust state always visible**: the dots are never hidden behind a tap — they sit inline on every contact row
253
+ - **Identity gets the hero**: the My ID and Verify screens are the most spacious, with the QR code as the focal element
254
+ - **Color is scarce**: white/charcoal dominates; green and the trust palette are the only saturated pixels
255
+
256
+ ### Border Radius Scale
257
+ - Square (0pt): full-bleed scanner camera, dividers
258
+ - Subtle (4pt): bubble tail corner, small chips
259
+ - Small (8pt): Threema ID chip, search field, code blocks
260
+ - Standard (10pt): primary/secondary buttons, grouped table cells, QR card
261
+ - Comfortable (16pt): message bubbles, bottom sheets
262
+ - Pill (999pt): pill buttons, composer field, unread badge
263
+ - Circle (50%): avatars, send button, trust dots
264
+
265
+ ## 6. Depth & Elevation
266
+
267
+ Threema is nearly flat — it is a security tool, not a glossy consumer app. Elevation is used sparingly and functionally.
268
+
269
+ | Level | Treatment | Use |
270
+ |-------|-----------|-----|
271
+ | Flat (Level 0) | No shadow | List rows, bubbles, settings cells, page content |
272
+ | Bar (Level 1) | Backdrop blur + 0.5pt hairline divider | Nav bar, bottom tab bar (translucent over content) |
273
+ | Floating (Level 2) | `rgba(0,0,0,0.12) 0 4px 16px` | Context menus, the attach sheet, action popovers |
274
+ | Sheet (Level 3) | `rgba(0,0,0,0.18) 0 -4px 24px` | Bottom sheets (share ID, verify options, QR export) |
275
+ | Modal Overlay | `rgba(0,0,0,0.4)` scrim | Dim behind sheets and full-screen scanner |
276
+
277
+ **Shadow Philosophy**: Shadow exists only to say "this floats, tap outside to dismiss" — never as decoration. Bars use translucency + a hairline divider instead of a drop shadow. On dark mode shadows nearly vanish, so floating panels add a 0.5pt `#2C2C2E` border as the elevation cue.
278
+
279
+ ### Motion
280
+ - **Trust upgrade (verify success)**: dots crossfade red/orange → green over 200ms ease-out + soft success haptic; a brief green ring pulse around the avatar
281
+ - **QR scan acquire**: reticle corners pulse green (`#15A33A`) on a 1.2s loop while scanning; on match, single 250ms flash + haptic
282
+ - **Send message**: bubble scales 0.96 → 1.0 over 180ms ease-out, slides up from the composer; delivery checks fade in as state updates
283
+ - **Bubble appear (incoming)**: fade + 6pt slide-up over 200ms ease-out
284
+ - **Tab switch**: instant; active glyph crossfades fill in 120ms
285
+ - **Sheet present**: slides up 300ms ease-out, scrim fades 250ms
286
+ - **Push navigation**: native iOS push, 300ms horizontal slide
287
+ - **Pull-to-refresh / sync**: subtle green spinner; no skeletue noise — Threema syncs quietly
288
+ - **Haptics**: soft impact on send, success notification haptic on verification, light tick on tab change
289
+
290
+ ## 7. Do's and Don'ts
291
+
292
+ ### Do
293
+ - Use pure white (`#FFFFFF`) as the light canvas and dark charcoal (`#121212`) for dark — calm and utilitarian
294
+ - Use Threema Green (`#088A29`) as the *only* brand color; brighten to `#1FA53C` on dark
295
+ - Render the trust-level indicator as three dots, colored by level (red / orange / green), on every contact
296
+ - Always pair the trust dots with a text label and VoiceOver string — never color alone
297
+ - Show the Threema ID and key fingerprint in **monospace** (SF Mono) so characters are unambiguous
298
+ - Make the QR verify flow the emotional center — large QR, in-person scanner, green-dot upgrade animation
299
+ - Tint outgoing bubbles a soft green; keep incoming bubbles neutral gray
300
+ - Use SF Pro + Dynamic Type — respect the user's text-size setting globally
301
+ - Reserve red for both destructive actions and Trust Level 1 (untrusted) — same hue, consistent meaning
302
+ - Keep chrome minimal: translucent bars, hairline dividers, no decorative shadows
303
+ - Surface "end-to-end encrypted" affordances (lock glyphs, verified labels) where trust matters
304
+
305
+ ### Don't
306
+ - Don't introduce a secondary brand color — Threema has exactly one accent (the green)
307
+ - Don't communicate trust state by color alone — always add the label (accessibility + clarity)
308
+ - Don't render the Threema ID in a proportional font — it must be monospaced for verification
309
+ - Don't ask for a phone number or email as identity — the Threema ID *is* the identity
310
+ - Don't ship a custom typeface — Threema uses the system font; respect Dynamic Type
311
+ - Don't use heavy drop shadows or glossy gradients — this is a security tool, keep it flat
312
+ - Don't bury the trust dots behind a tap — they belong inline on every contact and conversation
313
+ - Don't use green for anything that isn't a Threema action or the Trust Level 3 state
314
+ - Don't animate aggressively — motion is quiet, 120-300ms ease-out
315
+ - Don't auto-upgrade a contact to green — Level 3 requires an explicit in-person QR scan
316
+ - Don't use pure black (`#000000`) for body text — `#111113` near-black is correct
317
+
318
+ ## 8. Responsive Behavior
319
+
320
+ ### Device Sizes
321
+ | Device | Width | Key Changes |
322
+ |--------|-------|-------------|
323
+ | iPhone SE (3rd gen) | 375pt | Trust dots 7pt; bubbles cap 80%; compact nav |
324
+ | iPhone 13/14/15 | 390pt | Standard layout |
325
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in nav bar |
326
+ | iPhone 15/16 Pro Max | 430pt | Bubbles cap 76%; larger QR card; bigger avatars |
327
+ | iPad (portrait) | 768pt | Split view: conversation list (~340pt) + chat detail |
328
+ | iPad (landscape) | 1024pt+ | Persistent 3-column option (list + chat + contact info) |
329
+
330
+ ### Dynamic Type
331
+ - Large titles, names, message body, captions: full scale
332
+ - Tab labels, trust-dot indicators, the monospaced Threema ID string: FIXED (layout-sensitive)
333
+ - Bubbles grow vertically with text size; max width stays a screen-width percentage
334
+
335
+ ### Orientation
336
+ - All screens support rotation
337
+ - iPad uses split-view: primary list + secondary conversation; QR scanner remains full-screen modal
338
+ - Scanner locks to portrait on iPhone for reliable QR acquisition
339
+
340
+ ### Touch Targets
341
+ - Trust-dot row: full row tappable (opens contact detail), 44pt min hit
342
+ - Tab bar icons: 22pt glyph, 49pt hit
343
+ - List row: 64pt tall, full-row tap
344
+ - Send button: 36pt visual, 44pt hit
345
+ - Composer attach `+`: 24pt glyph, 44pt hit
346
+ - QR scanner reticle: full camera area is the scan target
347
+
348
+ ### Safe Area Handling
349
+ - Top: nav bar respects safe area and Dynamic Island
350
+ - Bottom: tab bar and composer respect the home indicator
351
+ - Keyboard: chat scrolls above keyboard; composer pins to keyboard top
352
+ - Sides: 16pt content inset
353
+ - Scanner: full-bleed including safe areas, with controls inset to safe area
354
+
355
+ ## 9. Agent Prompt Guide
356
+
357
+ ### Quick Color Reference
358
+ - Canvas (light): `#FFFFFF`
359
+ - Canvas (dark): `#121212`
360
+ - Surface gray: `#F4F4F6` light / `#262628` dark
361
+ - Divider: `#E2E2E5` light / `#2C2C2E` dark
362
+ - Text primary: `#111113` light / `#ECECEC` dark
363
+ - Text secondary: `#6B6B70` light / `#9A9A9F` dark
364
+ - Threema Green: `#088A29` light / `#1FA53C` dark
365
+ - Green pressed: `#066B20`
366
+ - Incoming bubble: `#EBEBED` light / `#262628` dark
367
+ - Outgoing bubble: `#D6F0DC` light / `#0C5E22` dark
368
+ - Trust Level 1 (red): `#E5453A`
369
+ - Trust Level 2 (orange): `#EF8B2C`
370
+ - Trust Level 3 (green): `#15A33A`
371
+ - Error / destructive: `#E5453A`
372
+ - Link: `#088A29` light / `#1FA53C` dark
373
+
374
+ ### Example Component Prompts
375
+ - "Build the Threema trust-level indicator in SwiftUI: a horizontal `HStack` of three 8pt circles with 3pt spacing. Level 1 → all `#E5453A`, Level 2 → all `#EF8B2C`, Level 3 → all `#15A33A`. Beside the dots, a SF Pro Text 14pt w400 secondary-color label ('Unknown' / 'Server-matched' / 'Verified'). Expose a combined VoiceOver string 'Trust level: verified'. On a verification success, crossfade dots to green over 200ms with a `.success` sensory feedback."
376
+
377
+ - "Create the Threema chat navigation bar: 54pt + safe area, leading back chevron in `#1FA53C` (dark) + a 34pt circular avatar. Center-leading: contact name SF Pro Text 18pt w600 `#ECECEC`, subtitle row = three 7pt green trust dots + ' Verified · ECHOX9P2' in 11pt `#9A9A9F`. Trailing: `phone` SF Symbol 21pt in brand green. Background `rgba(18,18,18,0.96)` with 0.5pt `#2C2C2E` bottom divider."
378
+
379
+ - "Render a Threema outgoing message bubble: background `#0C5E22` (dark), text `#EAFBEF` SF Pro Text 16pt w400, max width 78%, corner radius 16pt with a 4pt tail on the bottom-trailing corner, trailing-aligned. Meta row below text: timestamp '09:41' 10pt `rgba(255,255,255,0.55)` + a double-check delivery glyph tinted `#6FD68C` when read. Append on send with a 0.96 → 1.0 scale over 180ms ease-out."
380
+
381
+ - "Build the Threema QR verify card: a white card 12pt corner radius containing a QR code with modules in `#088A29`, below it the Threema ID 'ECHOX9P2' in SF Mono 16pt w700 letter-spacing 1pt, and a caption 'Scan in person to reach three green dots' in 12pt `#9A9A9F`. Add a scanner mode: full-bleed camera, centered rounded-square reticle with a 2.5pt white stroke and green corner-pulse on a 1.2s loop; on match flash `#15A33A` for 250ms + success haptic."
382
+
383
+ - "Create the Threema composer: 56pt tall, leading `+` glyph 24pt `#1FA53C`, a pill text field (`#262628`, 19pt radius, 16pt padding, placeholder 'Message' in `#9A9A9F`), trailing a 36pt circular send button filled `#088A29` with a white `paperplane.fill` 17pt — disabled fill `#3A3A3E` when the field is empty."
384
+
385
+ - "Render the Threema bottom tab bar: 68pt incl. home indicator, tabs Chats / Contacts / Calls / My ID / Settings, 22pt glyphs, active tint `#1FA53C` (filled glyph) inactive `#818185`, labels SF Pro Text 10pt w500 always shown, translucent `saturate(180%) blur(20px)` background with a 0.5pt `#2C2C2E` top divider, and a red `#E5453A` unread-count pill (white 12pt w700) on the Chats tab."
386
+
387
+ ### Iteration Guide
388
+ 1. Canvas is pure white (`#FFFFFF`) light, charcoal `#121212` dark — calm, utilitarian, NOT off-white
389
+ 2. Threema Green `#088A29` is the only brand color; brighten to `#1FA53C` on dark — never add a second accent
390
+ 3. The trust-level dots (red `#E5453A` / orange `#EF8B2C` / green `#15A33A`) are the signature — on every contact, always with a label
391
+ 4. Threema ID and key fingerprint are monospaced (SF Mono) — random characters must be unambiguous
392
+ 5. Identity has no phone number or email — the 8-char Threema ID *is* the account
393
+ 6. The QR verify flow is the emotional center — large QR + in-person scanner + green-dot upgrade animation
394
+ 7. Outgoing bubbles are a soft green tint; incoming are neutral gray; tails on the speaker side
395
+ 8. Typography is SF Pro + Dynamic Type — no custom typeface, respect the user's text size
396
+ 9. Red means both destructive *and* untrusted (Trust Level 1) — consistent hue, consistent meaning
397
+ 10. Keep it flat — translucent bars, hairline dividers, no decorative shadows; motion is quiet 120-300ms