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,478 @@
1
+ # Design System Inspiration of Snapchat (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Snapchat's iOS app is a camera that happens to have messaging, maps, and a video feed attached — not the other way around. The app opens directly into the live camera viewfinder, full-screen, with the lens capturing your face before you've even decided what to do. This is the single most defining characteristic of Snapchat's design philosophy: the camera IS the home screen. Every other app in this category (X, Threads, Facebook, Instagram) opens to a feed; Snapchat opens to a viewfinder. The result is an app whose design language is built around photography — edge-to-edge imagery, floating chromeless controls, and a yellow accent so saturated it functions as a signal flare.
6
+
7
+ Snap Yellow (`#FFFC00`) is the most aggressive accent color in any major social app. It's a pure primary hue — not a branded shade with hex poetry behind it, but a near-max-brightness yellow that pops off a black canvas like a hazard sign. It appears only on brand moments: the ghost logo, the snap-capture button (a 82pt yellow circle surrounded by a yellow ring), the Snapstreak 🔥 badges, and certain navigation pills. The rest of the UI is monochrome white-on-dark or white-on-photo, with specific color codes reserved for the Snap type system (red = photo snap, purple = video snap, blue = chat message, green = audio) so users can glance at their inbox and instantly parse conversation types.
8
+
9
+ The navigation model is unlike any other app: instead of a bottom tab bar, Snapchat uses a horizontal swipe-between-four-screens metaphor, where Map, Chat, Camera (center, default), Stories (Discover), and Spotlight each occupy their own full-screen canvas. The user moves between them by swiping left/right from the camera. A small tab bar at the bottom exists, but acts more as a progress indicator showing your current screen than a persistent navigation dock. Typography is Avenir Next — a humanist geometric sans with warm curves and a distinctive lowercase `a` — at Bold and Medium weights almost exclusively, creating a friendly, young-feeling type voice that contrasts against the app's dramatic photography. Bitmoji characters (user's personalized cartoon avatar) replace profile photos throughout — your bitmoji waves from the chat avatar, sleeps on the Snap Map, and features in every UI moment where other apps would use a profile photo.
10
+
11
+ **Key Characteristics:**
12
+ - Camera-first home screen — app opens directly to the live viewfinder full-screen
13
+ - Snap Yellow (`#FFFC00`) as the aggressive primary accent — ghost logo, capture button, streak flame
14
+ - Swipe-between-five-screens navigation — Map | Chat | Camera | Discover | Spotlight (no traditional tab bar)
15
+ - Color-coded snap types — Red photo, Purple video, Blue chat, Green audio (in the Chat inbox)
16
+ - 82pt yellow capture button with concentric yellow ring — the signature center-screen CTA
17
+ - Bitmoji integration — user's custom cartoon avatar replaces profile photos app-wide
18
+ - Stories ring — pulsing yellow ring around unread story avatars
19
+ - Friend emojis — 🔥 streak, 💛 best friends, 👑 super BFF, 😎 mutual best friends, 🎂 birthday
20
+ - Ghost logo — the flat cartoon ghost (Ghostface Chillah) as the brand mark, used on splash and loading
21
+ - Floating chromeless controls on the camera — no surrounding UI frame, just icons in empty corners
22
+ - Avenir Next font at Bold/Medium weights — warm humanist sans, no thin weights
23
+ - Chat auto-delete — the signature "ephemeral by default" feel where messages disappear on close
24
+
25
+ ## 2. Color Palette & Roles
26
+
27
+ ### Primary Brand
28
+ - **Snap Yellow** (`#FFFC00`): The only brand accent. Ghost logo background, capture button fill, streak flame, unread story ring pulse, Snap-added-me badges. Saturated and aggressive.
29
+ - **Yellow Pressed** (`#E6E300`): Pressed state on yellow interactive elements (very rare — most yellow is logo/capture).
30
+ - **Pure Black** (`#000000`): Primary canvas for Chat, Map UI chrome, Discover background, loading screens.
31
+ - **Pure White** (`#FFFFFF`): Primary text on dark surfaces, chromeless icons floating on camera viewfinder, capture-button inner ring fill (when not active).
32
+
33
+ ### Canvas & Surfaces (Dark / Default)
34
+ - **Canvas Black** (`#000000`): Primary canvas across Chat, Stories (Discover chrome), Spotlight.
35
+ - **Surface 1** (`#1A1A1A`): Chat bubbles (received), Discover card backgrounds, bottom-sheet modals.
36
+ - **Surface 2** (`#2C2C2C`): Elevated surfaces — selected chat row, settings cells.
37
+ - **Divider** (`#333333`): Hairlines between chat rows, settings sections.
38
+ - **Camera Viewfinder**: full-bleed live-camera feed (any colors from the real world)
39
+
40
+ ### Canvas & Surfaces (Light — limited use)
41
+ Snapchat is effectively dark/camera-default. A light canvas appears only inside certain settings screens and Memories grid.
42
+ - **Light Canvas** (`#FFFFFF`)
43
+ - **Light Surface 1** (`#F2F2F2`)
44
+ - **Light Text** (`#000000`)
45
+
46
+ ### Text
47
+ - **Text Primary Dark** (`#FFFFFF`): Primary text on dark and on camera overlays.
48
+ - **Text Primary Light** (`#000000`): Primary text on light surfaces (settings, memories).
49
+ - **Text Secondary** (`#8A8A8F`): Timestamps, status ("Tap to reply", "Opened 2m ago"), metadata.
50
+ - **Text Tertiary** (`#555555`): Disabled / very low-emphasis.
51
+
52
+ ### Snap Type Colors (Color-Coded Chat Inbox)
53
+ Each Snap type has a distinct icon color — this is Snapchat's signature inbox-at-a-glance signal.
54
+ - **Photo Snap Red** (`#FF2E3D`): Received photo snap icon in inbox (unread square with triangle point).
55
+ - **Video Snap Purple** (`#9B51FF`): Received video snap icon.
56
+ - **Chat Blue** (`#4DA7FF`): Text chat message icon.
57
+ - **Audio Green** (`#4CD964`): Audio note / voice message icon.
58
+ - **Opened State (empty outline)**: Once opened, the filled square becomes an outline of the same color — signaling "already viewed".
59
+
60
+ ### Semantic
61
+ - **Error Red** (`#FF3B30`): Destructive actions, failed sends, "Clear streak" warnings.
62
+ - **Success Green** (`#00D873`): Snap sent confirmation, "Streak saved" toast.
63
+ - **Live Red** (`#FF2E3D`): Live Story red dot, Snap Map live event marker.
64
+ - **Blue Link** (`#4DA7FF`): Inline links in chat (same blue as Chat type).
65
+
66
+ ### Story Ring Colors
67
+ - **Unread Story Ring** (`#FFFC00`): Snap Yellow with a subtle animated pulse around unread Stories on Discover page.
68
+ - **Read Story Ring** (`#555555`): Gray ring around viewed Stories.
69
+ - **Live Story Ring** (`#FF2E3D`): Red ring for Live Stories (Spotlight or partnered live events).
70
+
71
+ ### Map Accent
72
+ - **Snap Map Zones**: Heat-map coloring on Snap Map — warmer zones (dense snaps) render in orange `#FF9A1F` / red `#FF2E3D`; cool zones in yellow `#FFFC00`.
73
+
74
+ ## 3. Typography Rules
75
+
76
+ ### Font Family
77
+ - **Primary**: `Avenir Next` (by Adrian Frutiger, published by Linotype) — a humanist geometric sans with warm curves and a distinctive two-story lowercase `a`. Snapchat ships Avenir Next Bold and Avenir Next Medium as the primary UI faces.
78
+ - **Display / Branded Moments**: `Avenir Next Heavy` for the largest type (splash, streak counts).
79
+ - **Fallback Stack**: `'Avenir Next', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
80
+ - **CJK / Non-Latin**: Apple system fonts handle CJK; Avenir Next has Latin-plus-extended coverage.
81
+
82
+ ### Hierarchy
83
+
84
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
85
+ |------|------|------|--------|-------------|----------------|-------|
86
+ | Splash Title | Avenir Next Heavy | 48pt | 900 | 1.0 | -0.5pt | "Snapchat" wordmark on launch |
87
+ | Screen Title | Avenir Next Bold | 24pt | 700 | 1.15 | -0.2pt | "Chat", "Stories", "My Profile" |
88
+ | Section Header | Avenir Next Bold | 20pt | 700 | 1.2 | -0.1pt | "Best Friends", "My Story", "For You" |
89
+ | Chat Row Name | Avenir Next Bold | 16pt | 700 | 1.25 | 0pt | Friend name in inbox row |
90
+ | Chat Message | Avenir Next Medium | 16pt | 500 | 1.3 | 0pt | Chat bubble text |
91
+ | Chat Status | Avenir Next Medium | 13pt | 500 | 1.25 | 0pt | "Received · 2m ago", "Tap to reply" — color `#8A8A8F` |
92
+ | Story Name | Avenir Next Bold | 14pt | 700 | 1.2 | 0pt | Friend name under story thumbnail |
93
+ | Timestamp | Avenir Next Medium | 12pt | 500 | 1.2 | 0pt | "2m", "1h", "Yesterday" |
94
+ | Streak Count | Avenir Next Bold | 18pt | 700 | 1.0 | 0pt | Number beside 🔥 on friend row |
95
+ | Camera HUD Label | Avenir Next Bold | 13pt | 700 | 1.0 | 0.3pt | "NEW CHAT", "MEMORIES" — tracked uppercase |
96
+ | Primary Button | Avenir Next Bold | 16pt | 700 | 1.0 | 0.2pt | "Send To", "Add", "Save Story" |
97
+ | Lens Label | Avenir Next Bold | 13pt | 700 | 1.0 | 0.3pt | Under camera lens carousel — tracked small caps |
98
+ | Bitmoji Callout | Avenir Next Medium | 14pt | 500 | 1.3 | 0pt | Bitmoji caption bubbles on chat |
99
+ | Spotlight Caption | Avenir Next Medium | 14pt | 500 | 1.3 | 0pt | Creator username + caption overlay on video |
100
+ | Discover Tile Title | Avenir Next Bold | 16pt | 700 | 1.2 | -0.1pt | Story tile name "Snapchat News", "NBA" |
101
+
102
+ ### Principles
103
+ - **Two weights only**: Avenir Next Bold (700) and Medium (500) carry nearly everything. Heavy (900) only on splash / streak hero. No regular, no light, no thin.
104
+ - **Tracked caps for HUD moments**: Camera HUD labels ("MEMORIES", "NEW CHAT") use uppercase with +0.3pt tracking — evokes the "capture" feeling
105
+ - **Text as overlay on imagery**: Camera HUD type sits on live photo/video, so Snapchat uses a subtle drop shadow (`rgba(0,0,0,0.4) 0 1px 2px`) or a semi-transparent pill background on text labels to keep legibility across any scene
106
+ - **Dynamic Type respected on Chat**: chat bubbles, friend names, bios scale with user preference. Camera HUD, streak counts, and lens labels stay fixed
107
+ - **Bitmoji faces are the "characters"**: Where other apps use type+photo hierarchy, Snapchat often uses bitmoji-as-character with minimal type — a friend row is "Bitmoji + Name" with almost no other text
108
+
109
+ ## 4. Component Stylings
110
+
111
+ ### Buttons
112
+
113
+ **The Snap Capture Button (The Big Yellow Circle)**
114
+ The most recognizable component in the app — the center-bottom button on the camera screen that captures snaps.
115
+ - Outer ring: 82pt diameter, 6pt wide ring, `#FFFC00` Snap Yellow — this is the always-visible "chrome" around the inner button
116
+ - Inner circle: 64pt diameter, `#FFFFFF` (white) — the actual tap target
117
+ - Tap (photo snap): inner circle scales 0.92 → 1.0 spring + `.impact(.soft)` haptic + camera shutter sound; flash animation white overlay 100ms
118
+ - Long-press (video snap): inner circle fills with `#FFFC00` over the press duration (up to 60s max), the outer ring becomes a progress indicator (yellow fills clockwise over 60s), `.impact(.medium)` haptic on start, `.impact(.soft)` ticks every second
119
+ - Double-tap: flips front/rear camera — shutter icon spins 180° + haptic
120
+ - Positioned: bottom-center, 20pt from bottom safe area
121
+
122
+ **Primary "Send" Button (On Snap Preview)**
123
+ After capturing a snap, user sees a preview screen with the "Send To →" button.
124
+ - Shape: Pill, 500pt corner radius
125
+ - Background: `#FFFC00` Snap Yellow
126
+ - Text: "Send To" in Avenir Next Bold 16pt `#000000`
127
+ - Trailing icon: `arrow.right` 16pt black
128
+ - Padding: 12pt vertical, 20pt horizontal
129
+ - Positioned: bottom-right corner of preview screen
130
+ - Pressed: scale 0.97 + soft haptic
131
+
132
+ **Camera HUD Icon Buttons**
133
+ Floating chromeless controls scattered around the camera viewfinder.
134
+ - No background by default — icon only, 28pt glyph, white with subtle shadow `rgba(0,0,0,0.4) 0 1px 2px`
135
+ - Size: 44pt hit area
136
+ - Icons in corners: flash top-left, flip-camera top-right, music track top-center, memories bottom-left, chat bottom-right
137
+ - When activated (e.g., flash on), icon turns `#FFFC00` yellow
138
+
139
+ **Chat Send Button**
140
+ - Shape: circle, 40pt diameter
141
+ - Background: `#FFFC00` when text is present, `#2C2C2C` when empty
142
+ - Icon: `paperplane.fill` rotated 45° in black when yellow, white when gray
143
+ - Pressed: scale 0.95 + `.impact(.light)` haptic
144
+
145
+ **Add Friend / Add Button**
146
+ - Shape: Pill, 500pt corner radius
147
+ - Not-friends: `#FFFC00` fill, black text + add icon
148
+ - Friends/added: `#2C2C2C` fill, white text "Added" + checkmark
149
+ - Font: Avenir Next Bold 14pt
150
+ - Padding: 6pt vertical, 14pt horizontal
151
+
152
+ **Lens Carousel Button (Camera)**
153
+ The horizontal strip of lens thumbnails above the capture button.
154
+ - Each lens: 60pt circle, bitmoji or lens icon thumbnail fill
155
+ - Active lens: 72pt (pulsed larger), with a `#FFFC00` outer ring 3pt
156
+ - Inactive: 60pt, no ring
157
+ - Scroll: horizontal, 12pt gap
158
+ - Below active: small caps label in Avenir Next Bold 13pt white
159
+
160
+ ### Cards & Containers
161
+
162
+ **Chat Inbox Row**
163
+ - Full-width, `#000000` canvas, divided by 1pt `#333333` hairline
164
+ - Height: 72pt
165
+ - Leading: 48pt bitmoji avatar (circular frame)
166
+ - Next: friend name in Avenir Next Bold 16pt `#FFFFFF`
167
+ - Below name: **snap type icon** (colored square for photo/video/chat/audio) + status text in Avenir Next Medium 13pt `#8A8A8F`
168
+ - Trailing: timestamp "2m", streak flame + number "🔥 47" (if streak exists), "Tap to reply" subtle arrow indicator
169
+ - Tap row: opens chat
170
+ - Swipe left: reveals "Clear" action
171
+
172
+ **Snap Type Indicator (Square Icon on Chat Row)**
173
+ - 16pt filled square (unopened) or outlined square (opened)
174
+ - Colors: Red `#FF2E3D` (photo), Purple `#9B51FF` (video), Blue `#4DA7FF` (chat), Green `#4CD964` (audio)
175
+ - Direction marker: a small triangular arrow-pointing-in-direction (incoming = pointing into the square; outgoing = pointing out)
176
+ - Double-chat (you sent AND they sent unread): double-stacked icons
177
+
178
+ **Story Thumbnail (On Discover + Friends' Stories)**
179
+ - 120pt × 200pt vertical rectangle, 16pt corner radius
180
+ - Full-bleed story-preview image as background
181
+ - 3pt ring border: `#FFFC00` yellow (unread), `#555555` gray (read), `#FF2E3D` red (live)
182
+ - Top-left: 40pt circular bitmoji of creator
183
+ - Bottom-left: creator name in Avenir Next Bold 14pt white + shadow
184
+ - Horizontally scrolling row on Stories page with 12pt gaps
185
+
186
+ **Chat Bubble (Received)**
187
+ - Background: `#1A1A1A` (dark) with 20pt corner radius
188
+ - Max width: 75%
189
+ - Text: Avenir Next Medium 16pt `#FFFFFF`
190
+ - Padding: 10pt vertical, 14pt horizontal
191
+ - No tail — just rounded rect
192
+ - Aligned to leading side, 60pt indent from left (after bitmoji avatar area)
193
+
194
+ **Chat Bubble (Sent)**
195
+ - Background: `#2C2C2C` (slightly lighter dark) with 20pt corner radius
196
+ - Text: Avenir Next Medium 16pt `#FFFFFF`
197
+ - Aligned to trailing side
198
+ - Note: Snapchat chat bubbles are NOT color-coded like some messaging apps — both sent and received are dark gray variants
199
+
200
+ **Snap Map Zone Marker**
201
+ - Circular bitmoji of a friend pinned to their last-known location
202
+ - 48pt circular bitmoji with 2pt yellow ring around it
203
+ - "Sleeping" state: bitmoji closed-eyes + ZZZ emoji overlay
204
+ - "Driving" state: bitmoji in driver-seat pose
205
+ - Bottom label: friend name in 12pt white with subtle shadow
206
+
207
+ **Memories Grid Cell**
208
+ - Square 110pt × 110pt thumbnail with 8pt corner radius
209
+ - Stacked corner badges for multi-snap stories
210
+ - Tap opens full-screen player
211
+
212
+ **Spotlight Card (Full-Screen Vertical Video)**
213
+ - Edge-to-edge vertical video player (like TikTok)
214
+ - Trailing action column: favorite heart, comment, share, more — stacked at 28pt with count beneath
215
+ - Bottom: creator username + caption (2-line clamp) in Avenir Next Medium 14pt white
216
+ - Swipe up: next video; swipe down: previous
217
+
218
+ **Discover Tile (Publisher Story)**
219
+ - Card 120pt wide × 200pt tall, 16pt corner radius
220
+ - Top: publisher logo in top-left
221
+ - Background: cover image
222
+ - Bottom: tile title "Snapchat News" in Avenir Next Bold 16pt white + dark gradient overlay for legibility
223
+
224
+ ### Navigation
225
+
226
+ **Bottom Navigation Strip (NOT a traditional tab bar)**
227
+ Unlike most apps, Snapchat uses a horizontal swipe between 5 screens with a minimal indicator strip at the bottom.
228
+ - Height: 56pt + safe area
229
+ - Background: semi-transparent `rgba(0,0,0,0.5)` over camera OR solid `#000000` on non-camera screens
230
+ - 5 tabs left-to-right: Map (map pin), Chat (speech bubble), Camera (center — larger, often just the outline of capture button), Stories (play icon), Spotlight (diamond)
231
+ - Icon size: 28pt for side icons, 48pt visualized for camera (actually the capture button sits above this strip)
232
+ - Active: `#FFFFFF`
233
+ - Inactive: `#555555` (lower contrast)
234
+ - Horizontal swipe transition between screens with a 300ms spring + rubber-band edges
235
+ - No labels
236
+
237
+ **Camera Top Bar (Floating)**
238
+ - No background — just icons floating over the viewfinder
239
+ - Leading: user's bitmoji (32pt) — tap opens profile
240
+ - Trailing: search (`magnifyingglass` 28pt), three-dots overflow
241
+ - All white with subtle drop shadow for legibility on any background
242
+
243
+ **Chat Top Bar**
244
+ - Height: 56pt + safe area
245
+ - Background: `#000000`
246
+ - Leading: user bitmoji + name in Avenir Next Bold 24pt "Chat"
247
+ - Trailing: plus icon 28pt (new chat)
248
+ - Hairline divider below
249
+
250
+ ### Input Fields
251
+
252
+ **Chat Input Bar (Bottom of Chat Screen)**
253
+ - Height: 48pt, grows on multi-line
254
+ - Corner radius: 24pt (pill)
255
+ - Background: `#1A1A1A`
256
+ - Leading: camera icon 24pt white (opens in-chat camera)
257
+ - Center: "Send a chat" placeholder in Avenir Next Medium 15pt `#8A8A8F`
258
+ - Trailing when empty: emoji sticker icon 24pt + gallery icon 24pt
259
+ - Trailing when text entered: yellow send button 40pt circular
260
+
261
+ **Search Bar**
262
+ - Height: 44pt
263
+ - Corner radius: 22pt
264
+ - Background: `#1A1A1A`
265
+ - Leading: `magnifyingglass` 18pt `#8A8A8F`
266
+ - Placeholder: "Search" in Avenir Next Medium 16pt `#8A8A8F`
267
+
268
+ ### Distinctive Components
269
+
270
+ **The Snap Capture Flow**
271
+ The center-point of the app. User on camera screen taps/holds the yellow capture button, a snap (photo or video) is captured, preview screen with filters/stickers/text overlay appears, user taps "Send To →" and selects recipients from the contacts grid.
272
+ - Flash animation: white overlay 100ms on capture
273
+ - Preview transition: captured image fades into full-screen preview over 200ms
274
+ - Edit tools (top-right): text, sticker, drawing pen, timer, save — all floating chromeless icons
275
+
276
+ **Bitmoji Everything**
277
+ - User's personalized 3D cartoon avatar (via Bitmoji app, integrated by default)
278
+ - Used as: profile photo (replaces any "user" icon), Snap Map marker, chat avatar, sticker in chats, streak flame character
279
+ - Default appearance: head-shot with expressive pose
280
+ - On Snap Map: full-body pose showing current activity ("driving", "sleeping", "at the beach")
281
+
282
+ **Streak Flame 🔥**
283
+ The signature habit-loop mechanic.
284
+ - 🔥 emoji + number next to friend names with active streaks
285
+ - Triggered: daily Snap-back-and-forth between two users for 3+ consecutive days
286
+ - Hourglass ⌛ replaces flame when streak is at risk (fewer than 4 hours to expire)
287
+ - Streak save toast: "Streak saved! 🔥" in Avenir Next Bold 16pt white on `#00D873` background
288
+ - Streak lost animation: flame turns gray + shatter particles + sad haptic
289
+
290
+ **Friend Emoji System**
291
+ Snapchat awards emoji badges next to friend names based on interaction patterns.
292
+ - 🔥 (fire): Active streak, number indicates days
293
+ - 💛 (yellow heart): #1 Best Friends (mutual top-sent-to)
294
+ - ❤️ (red heart): Best Friends for 2+ weeks
295
+ - 💕 (pink hearts): Best Friends for 2+ months
296
+ - 👶 (baby): You just became friends
297
+ - 😎 (sunglasses): One of their best friends is also one of yours (mutual)
298
+ - 🎂 (cake): It's their birthday
299
+ - 🏆 (trophy): You achieved a milestone together
300
+
301
+ **Ghost Logo (Ghostface Chillah)**
302
+ - Yellow rounded-pentagon ghost shape with simple black eyes
303
+ - Used: splash screen (`#FFFC00` background + white ghost), loading states, friend-request empty states
304
+ - Never colored other than yellow or white
305
+
306
+ **Snap Map View**
307
+ - Full-screen map with styled tiles (muted colors)
308
+ - Friend bitmojis pinned to their last known locations
309
+ - Heat-map overlay showing public snap activity density (warm = dense, cool = sparse)
310
+ - Search bar top: "Search location" with snap-location results
311
+ - Tap bitmoji: shows "Last updated 4m ago" popup
312
+
313
+ **Lens Carousel (Camera)**
314
+ - Horizontal scrollable row of circle thumbnails 4-5 visible at a time above the capture button
315
+ - Active lens thumbnail: 72pt with yellow ring + small caps label
316
+ - Inactive: 60pt, no ring
317
+ - Swipe left/right on camera viewfinder switches lenses (the whole screen's AR overlay changes in real time)
318
+ - "Explore" button at the end of carousel opens lens browser
319
+
320
+ ## 5. Layout Principles
321
+
322
+ ### Spacing System
323
+ - Base unit: 4pt
324
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 72, 82
325
+ - Standard horizontal margin: 16pt on Chat/Stories screens
326
+ - Camera screen: edge-to-edge viewfinder, floating controls with 16pt inset from edges
327
+ - Capture button: 20pt from bottom safe area
328
+
329
+ ### Grid & Container
330
+ - Chat rows: full-width at 72pt height
331
+ - Story thumbnails: 120pt × 200pt, 12pt horizontal gap
332
+ - Discover tiles: 2-column grid on Stories page, 8pt gap
333
+ - Spotlight: full-screen single-video column
334
+ - Snap Map: edge-to-edge with floating search
335
+
336
+ ### Whitespace Philosophy
337
+ - **Chat breathes**: 72pt tall rows give the color-coded snap icons and bitmoji room to read
338
+ - **Camera is empty**: viewfinder is fully cleared of UI — controls float in the corners with purpose, never cluttering the center
339
+ - **Stories are dense**: the horizontal story strip packs 4-5 thumbnails per viewport to encourage browsing
340
+ - **Discover is a grid**: 2-column publisher tiles with compact 8pt gaps — magazine-like density
341
+
342
+ ### Border Radius Scale
343
+ - Small (4pt): Lens carousel labels, small badges
344
+ - Card (8pt): Memories grid thumbnails
345
+ - Thumbnail (16pt): Story thumbnails, discover tiles, snap preview video corners
346
+ - Chat Bubble (20pt): Chat message bubbles (rounder than posts — messaging feel)
347
+ - Search / Pill (22pt / 500pt): Search bar, chat input bar pill, add-friend button
348
+ - Circle (50%): Bitmoji avatars, capture button, lens carousel thumbnails, send button
349
+
350
+ ## 6. Depth & Elevation
351
+
352
+ Snapchat's depth is flat on UI surfaces but dramatic on imagery. The app privileges photography over chrome — the camera viewfinder is the most elevated surface because it's literally the primary content.
353
+
354
+ | Level | Treatment | Use |
355
+ |-------|-----------|-----|
356
+ | Flat (Level 0) | No shadow | Chat, Stories list, Spotlight (surfaces are just dark canvas) |
357
+ | Text-on-imagery (Level 0.5) | `rgba(0,0,0,0.4) 0 1px 2px` drop shadow on text | Camera HUD labels, story creator names, map pin names |
358
+ | Chat Bubbles (Level 1) | No shadow, pure background color contrast | Sent/received dark gray variants |
359
+ | Capture Button (Level 2) | No shadow, but the 6pt yellow ring acts as visual mass | Center-screen capture CTA |
360
+ | Snap Preview Tools (Level 2) | `rgba(0,0,0,0.4) 0 2px 8px` | Floating edit icons on snap preview screen |
361
+ | Sheet (Level 3) | `rgba(0,0,0,0.6) 0 -8px 24px` | Bottom sheet menus (send to friends list, emoji picker) |
362
+ | Modal Backdrop | `rgba(0,0,0,0.7)` | Behind story viewer, chat pop-in |
363
+
364
+ **Shadow Philosophy**: Shadows are used almost exclusively to keep text legible on live camera imagery — a soft drop shadow on HUD icons and labels so that on a bright sunny beach or a dark indoor shot, the UI stays readable. Chat and menu surfaces rely on solid color contrast, not elevation.
365
+
366
+ ### Motion
367
+ - **Screen swipe (5-screen nav)**: horizontal page transition 300ms spring with rubber-band at edges; haptic `.impact(.soft)` on boundary resistance
368
+ - **Capture tap (photo)**: inner circle scale 0.92 → 1.0 spring 250ms + white flash overlay 100ms + `.impact(.soft)` + shutter sound
369
+ - **Capture hold (video)**: yellow progress ring fills clockwise over max 60s, `.impact(.medium)` on start, pulsing `.impact(.soft)` tick every 1s, release to stop
370
+ - **Camera flip (double-tap)**: shutter icon spins 180° 400ms + `.impact(.light)` + camera feed swaps
371
+ - **Lens swipe**: camera overlay cross-fades between AR effects over 200ms; center lens scales up 60pt → 72pt with yellow ring fade-in
372
+ - **Snap send**: preview screen slides left off-screen 300ms spring, confetti particles emit, success chime, return to camera
373
+ - **Streak save**: flame emoji bounces scale 1.0 → 1.3 → 1.0 + "+1 🔥" floats up 20pt fade-out over 600ms + success haptic
374
+ - **Bitmoji sticker tap in chat**: sticker pops in scale 0 → 1.0 spring 300ms + selection haptic
375
+ - **Story ring pulse (unread)**: yellow ring subtle glow-pulse every 2s (opacity 1.0 ↔ 0.7)
376
+ - **Snap Map zoom**: pinch-to-zoom with momentum deceleration
377
+
378
+ ## 7. Do's and Don'ts
379
+
380
+ ### Do
381
+ - Open the app directly into the live camera viewfinder — that's the Snapchat-native home state
382
+ - Use Snap Yellow `#FFFC00` for the capture button ring, streak flame, unread story ring, add-friend CTA — it's the single brand accent
383
+ - Structure the capture button as a 82pt outer yellow ring + 64pt inner white circle — the precise double-circle is iconic
384
+ - Color-code snap types in the inbox: red (photo), purple (video), blue (chat), green (audio) — this is the at-a-glance inbox language
385
+ - Use bitmoji as the default profile photo everywhere — replace generic user icons with bitmoji throughout
386
+ - Use Avenir Next Bold and Medium as the primary UI type — no thin, no regular (400)
387
+ - Float camera controls chromelessly with subtle drop shadows — no UI frame around the viewfinder
388
+ - Include friend emojis (🔥, 💛, 👑, 😎, 🎂) next to friend names based on interaction context
389
+ - Use swipe-between-five-screens navigation (Map | Chat | Camera | Stories | Spotlight) — not a traditional tab bar
390
+ - Pulse the unread story ring yellow with subtle opacity animation — signals "new content"
391
+ - Pair the capture flow with haptic + sound — shutter haptic + click sound on photo snap
392
+
393
+ ### Don't
394
+ - Don't open to a feed — Snapchat always opens to the camera
395
+ - Don't use a bottom tab bar like Instagram/Facebook — Snapchat uses swipe navigation
396
+ - Don't reduce the yellow on the capture button — the 82pt ring is the brand signature
397
+ - Don't colorize chat bubbles like iMessage blue/gray — Snapchat bubbles are dark gray on dark canvas
398
+ - Don't replace bitmoji with photo avatars as the default — bitmoji IS the profile photo in Snapchat
399
+ - Don't add permanent UI chrome around the viewfinder — camera is always edge-to-edge
400
+ - Don't use light mode as the default — the app's gravity is dark/camera-focused
401
+ - Don't use thin font weights — Avenir Next weights in the app are 500 and 700 only
402
+ - Don't use uppercase everywhere — uppercase is reserved for HUD labels like "MEMORIES" with +0.3pt tracking
403
+ - Don't show read receipts as checkmarks — Snapchat shows them as the snap-type icon transitioning from filled to outline
404
+ - Don't skip the streak mechanics — the 🔥 and accompanying emoji system IS the social habit loop
405
+ - Don't make chat messages persist by default — the signature is ephemerality; messages delete on close unless saved
406
+
407
+ ## 8. Responsive Behavior
408
+
409
+ ### Device Sizes
410
+ | Device | Width | Key Changes |
411
+ |--------|-------|-------------|
412
+ | iPhone SE (3rd gen) | 375pt | Capture button 72pt (smaller); lens carousel 4 visible |
413
+ | iPhone 13/14/15 | 390pt | Standard 82pt capture button; lens carousel 5 visible |
414
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated — top camera icons shift around it |
415
+ | iPhone 15/16 Pro Max | 430pt | 82pt capture + larger lens thumbnails 72pt; more discover tiles per row |
416
+ | iPad | 768pt+ | Camera stays centered at max 768pt width; Chat opens to split-view with conversation list + thread |
417
+
418
+ ### Dynamic Type
419
+ - Chat messages, chat row names, bio, settings text: full scale
420
+ - Camera HUD labels, streak counts, lens labels, tab indicators: fixed (layout-sensitive)
421
+ - Timestamps: fixed 12pt
422
+ - Story thumbnail names: fixed 14pt
423
+
424
+ ### Orientation
425
+ - Camera: **portrait-locked** (the app's gravity)
426
+ - Chat / Stories / Spotlight / Map: **portrait-locked**
427
+ - Video playback in Spotlight / Stories: **rotates to landscape** for fullscreen
428
+ - Snap capture while video recording: can rotate if user physically rotates device, but interface stays portrait
429
+
430
+ ### Touch Targets
431
+ - Capture button: 82pt — the largest in any app
432
+ - Lens thumbnails: 60-72pt
433
+ - Chat row: 72pt tall, full-row tappable
434
+ - Camera HUD icons: 28pt glyph with 44pt hit area
435
+ - Bottom nav icons: 28pt glyph, 56pt effective hit
436
+ - Chat send button: 40pt
437
+
438
+ ### Safe Area Handling
439
+ - Top: camera icons respect safe area + Dynamic Island; bitmoji shifts slightly around island on Pro devices
440
+ - Bottom: capture button 20pt above home indicator; bottom nav strip respects safe area
441
+ - Sides: 16pt insets on Chat and Stories; camera is edge-to-edge
442
+
443
+ ## 9. Agent Prompt Guide
444
+
445
+ ### Quick Color Reference
446
+ - Canvas black: `#000000`
447
+ - Surface 1: `#1A1A1A`
448
+ - Surface 2: `#2C2C2C`
449
+ - Divider: `#333333`
450
+ - Text primary: `#FFFFFF`
451
+ - Text secondary: `#8A8A8F`
452
+ - Snap Yellow: `#FFFC00`
453
+ - Photo red: `#FF2E3D`
454
+ - Video purple: `#9B51FF`
455
+ - Chat blue: `#4DA7FF`
456
+ - Audio green: `#4CD964`
457
+ - Success green: `#00D873`
458
+ - Error red: `#FF3B30`
459
+
460
+ ### Example Component Prompts
461
+ - "Build Snapchat's capture button in SwiftUI: concentric double-circle. Outer: 82pt diameter, 6pt wide ring in `#FFFC00` Snap Yellow. Inner: 64pt white circle centered inside. On tap (photo): inner circle scales 0.92 → 1.0 spring 250ms, white screen flash overlay 100ms, `.impact(.soft)` haptic + camera shutter sound. On long-press (video): inner fills with `#FFFC00` while outer ring becomes a clockwise progress indicator filling over max 60s, `.impact(.medium)` on start, soft ticks every 1s. On double-tap: camera flips front/rear with shutter icon 180° spin + light haptic. Position: bottom-center of camera viewfinder, 20pt from bottom safe area."
462
+ - "Create a Snapchat chat inbox row: 72pt height on `#000000` canvas, 1pt `#333333` divider bottom. Leading 48pt circular bitmoji avatar (16pt from left). Right of avatar: friend name 'Sarah Jones' in Avenir Next Bold 16pt `#FFFFFF`, below it the snap type indicator — 16pt filled square in red `#FF2E3D` for photo, purple `#9B51FF` for video, blue `#4DA7FF` for chat, green `#4CD964` for audio, with a triangular arrow pointing into the square (received) or out of it (sent) — followed by status 'Received · 2m ago' in Avenir Next Medium 13pt `#8A8A8F`. Trailing: timestamp '2m' in 12pt `#8A8A8F`, streak emoji '🔥 47' in Avenir Next Bold 18pt if streak exists."
463
+ - "Design the Snapchat Stories section: horizontal scrollable row of story thumbnails, each 120pt × 200pt rounded 16pt, full-bleed story preview image background. 3pt ring border: `#FFFC00` yellow for unread with subtle 2s opacity-pulse animation (1.0 ↔ 0.7), `#555555` gray for read, `#FF2E3D` red for live. Top-left: 40pt circular bitmoji of creator. Bottom-left: creator name in Avenir Next Bold 14pt white with `rgba(0,0,0,0.4) 0 1px 2px` drop shadow. 12pt horizontal gap between thumbnails."
464
+ - "Build the Snapchat camera HUD in SwiftUI: full-screen live camera viewfinder as background, chromeless controls floating in corners with `rgba(0,0,0,0.4) 0 1px 2px` drop shadow on icons for legibility over any scene. Top-left: user bitmoji 32pt (profile). Top-right: `magnifyingglass` 28pt (search). Bottom-left: `photo.on.rectangle` 28pt (memories). Bottom-right: `bubble.left.fill` 28pt (chat). Above capture button: horizontal lens carousel of 60pt circular lens thumbnails, active lens scaled to 72pt with 3pt `#FFFC00` ring + 'Beach' label in Avenir Next Bold 13pt w700 tracked 0.3pt uppercase white. Center-bottom: capture button (see separate prompt)."
465
+ - "Create the Snapchat chat bubble pair: received bubble on leading side — `#1A1A1A` background, 20pt corner radius, 10pt×14pt padding, Avenir Next Medium 16pt `#FFFFFF` text, max 75% width, 60pt left indent to leave room for 32pt circular bitmoji on trailing edge of leading gutter. Sent bubble on trailing side — `#2C2C2C` background, same radius/padding/font, aligned to right edge of screen. No tails — just rounded rectangles. Between-bubbles gap: 4pt for same sender, 12pt for sender change."
466
+ - "Build the Snap Map view: full-screen styled map (muted pastel tiles), user's friends displayed as 48pt circular bitmoji pins at their last-known locations with a 2pt yellow `#FFFC00` ring around each. Each pin shows friend's bitmoji in context pose ('driving' pose with car, 'sleeping' pose with ZZZ, 'beach' pose with sunglasses). Bottom-right: friend name label in 12pt white with drop shadow. Heat-map overlay in corners: yellow `#FFFC00` in cool zones, warming through orange `#FF9A1F` to red `#FF2E3D` in dense public-snap zones. Search bar top: `magnifyingglass` + 'Search location' in a pill at 44pt with `#1A1A1A` fill."
467
+
468
+ ### Iteration Guide
469
+ 1. Camera IS the home screen — the app opens directly to the live viewfinder full-screen
470
+ 2. Snap Yellow `#FFFC00` is the aggressive brand accent — capture ring, streak flame, unread story ring, ghost logo
471
+ 3. Capture button is the 82pt outer yellow ring + 64pt inner white circle — the precise double-circle is iconic
472
+ 4. Navigation is swipe-between-five-screens (Map | Chat | Camera | Stories | Spotlight) — NOT a tab bar
473
+ 5. Color-code snap types in chat: red (photo), purple (video), blue (chat), green (audio)
474
+ 6. Bitmoji replaces profile photos app-wide — user's personalized cartoon avatar is the "face"
475
+ 7. Typography is Avenir Next at Medium (500) and Bold (700) only — warm humanist geometric sans
476
+ 8. Camera UI is chromeless — floating icons with drop shadow, no UI frame around the viewfinder
477
+ 9. Friend emojis are the habit-loop mechanic: 🔥 streaks, 💛 best friends, 😎 mutual BFFs, 🎂 birthdays
478
+ 10. Ephemerality is the UX signature — chats delete on close, stories expire in 24h; never persist content by default