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,427 @@
1
+ # Design System Inspiration of Pinterest (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Pinterest's iOS app is a content-first, photo-driven canvas where the interface all but disappears so user-generated imagery can do the talking. The signature feel is a staggered mosaic of images — the "masonry grid" — where every pin is a different height, every row breaks at a different vertical point, and scrolling feels more like flipping through a scrapbook than browsing a traditional feed. On light mode (the default), the canvas is pure white (`#FFFFFF`) so that pins — typically rich, saturated, oversaturated-on-purpose lifestyle photography — pop without any frame or chrome competing with them. The app removes every visual barrier between the user and the content: no borders on pins, no drop shadows by default, minimal text around the image, tiny icons.
6
+
7
+ The accent system is loud in one place and one place only: the Pinterest Red (`#E60023`). This is the color of the "P" in the logo, the "Save" button on every pin, and nothing else of consequence. It is the app's verb — Save. Pin. Commit. The rest of the UI is rendered in black (`#111111`), grays (`#767676`, `#E9E9E9`), and white. There are no secondary accent colors, no pastels, no gradients — because pins themselves contribute all the color the app needs. When you're in Dark mode, the canvas becomes `#121212` (a Google-Material-inspired warm dark rather than true black), the red stays identical, and text flips to white — but the philosophy is the same: the pin is the art, the chrome is the frame.
8
+
9
+ Typography is Pinterest Sans, a custom humanist geometric sans released in 2022 alongside the broader brand refresh. Before the custom typeface, Pinterest used Helvetica Neue and later a brand-adjacent Proxima / Source combination; Pinterest Sans now handles everything from micro-labels to splash-screen hero type. The hierarchy is compact and content-sensitive: sizes run 11–28pt, weights concentrate at 400 / 500 / 700, and no screen ever shows more than three type sizes at once. The largest expressive moment is the pin detail page title, where a 28pt weight 700 sits directly under the hero pin image — otherwise, the app keeps type modest because images are loud.
10
+
11
+ **Key Characteristics:**
12
+ - Bright white canvas (`#FFFFFF`) in light mode, warm dark canvas (`#121212`) in dark mode
13
+ - **Masonry grid** — staggered 2-column layout with variable-height pins, the app's single biggest signature move
14
+ - Pinterest Red (`#E60023`) reserved for the Save button, "P" logo, and nothing else
15
+ - Pins render edge-to-edge with minimal chrome — no borders, no drop shadows on the tile itself
16
+ - Pinterest Sans (2022 proprietary) — 400 / 500 / 700 weights, plus a legacy SF Pro fallback
17
+ - Floating search bar at the top of Home — a rounded-pill input that sits over the feed
18
+ - Pin detail expands full-screen with an "More like this" infinite-scroll feed below
19
+ - Board covers use a 2×2 collage of recent pins
20
+ - Idea Pins (story-style) ship with a dedicated vertical-video player experience
21
+ - Bottom tab bar: Home, Search, Create, Notifications, Profile — always 5 tabs, centered Create `+`
22
+ - Haptics on save, long-press context menu, board switch, follow
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary
27
+ - **Pinterest Red** (`#E60023`): Primary CTA, Save button on every pin, the "P" of the logomark, unread notification dot, active state indicators on specific toggles. This is the only brand accent — it appears in very few places by design, which is what gives it weight.
28
+ - **Pinterest Red Pressed** (`#AD081B`): Pressed / active-state variant for the Save button and other red CTAs.
29
+ - **Red Hover / Focus** (`#CC0020`): Slight deepening for mouse-over or keyboard-focus states when rendered on web; matched on iOS for pressed state alternative.
30
+
31
+ ### Canvas & Surfaces (Light Mode — default)
32
+ - **Canvas White** (`#FFFFFF`): Primary canvas. Also the compose sheet and default nav background.
33
+ - **Surface 1** (`#F8F8F8`): Very subtle section backing, board cover interior on lighter themes.
34
+ - **Divider / Hairline** (`#E9E9E9`): 1pt list separators, top-border of the tab bar, dividers on settings list.
35
+ - **Input Background** (`#EFEFEF`): Search bar fill, comment compose fill.
36
+ - **Skeleton / Shimmer** (`#F2F2F2` → `#E5E5E5`): Placeholder blocks while images load.
37
+
38
+ ### Canvas & Surfaces (Dark Mode)
39
+ - **Canvas Dark** (`#121212`): Primary dark canvas — same Material-influenced warm dark that Spotify uses.
40
+ - **Surface 1 Dark** (`#1E1E1E`): Sheet backgrounds, raised cards, board covers.
41
+ - **Surface 2 Dark** (`#2A2A2A`): Input fields, pressed row backgrounds.
42
+ - **Divider Dark** (`#2E2E2E`): Hairlines and dividers on dark surfaces.
43
+
44
+ ### Text (Light Mode)
45
+ - **Text Primary** (`#111111`): Pin titles, creator names, primary screen headlines — intentionally a hair off pure black for softness.
46
+ - **Text Secondary** (`#767676`): Metadata, reactions count, description secondary line.
47
+ - **Text Tertiary** (`#B5B5B5`): Timestamps, placeholder text, "1 of 4 ideas" counters.
48
+ - **Text Disabled** (`#D9D9D9`): Disabled button text, grayed-out labels.
49
+
50
+ ### Text (Dark Mode)
51
+ - **Text Primary Dark** (`#FFFFFF`): Main text on dark canvas.
52
+ - **Text Secondary Dark** (`#AAAAAA`): Metadata on dark.
53
+ - **Text Tertiary Dark** (`#6E6E6E`): Lowest-emphasis labels on dark.
54
+
55
+ ### Semantic
56
+ - **Success Green** (`#008A3C`): Save confirmation toast, "Pinned to board" success state. Rarely used — almost everything uses red.
57
+ - **Error Red** (`#E60023`): Same token as the brand red for error states.
58
+ - **Info Blue** (`#0074E8`): Used very sparingly for links and "Learn more" inline text.
59
+ - **Board Accent (dynamic)**: Each board can display a user-chosen accent color for its cover; the app derives a tint from the top pin on the board if one isn't set.
60
+
61
+ ### Content Accent: Per-Pin Dominant Color
62
+ - Pins sometimes render with a dynamically extracted dominant color as the background behind the pin image during load (skeleton state), transitioning to `#FFFFFF` once the image appears.
63
+ - This is not used as a persistent theme like Spotify's Now Playing gradient — it's a load-state courtesy.
64
+
65
+ ## 3. Typography Rules
66
+
67
+ ### Font Family
68
+ - **Primary (2022+)**: `Pinterest Sans` (proprietary, released alongside 2022 brand refresh — five weights)
69
+ - **Pre-2022 legacy**: Helvetica Neue and later Proxima-adjacent custom stacks — still visible on older marketing surfaces
70
+ - **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Helvetica Neue', Helvetica, Arial, sans-serif`
71
+ - **CJK / Non-Latin**: System fonts — PingFang SC (Chinese), Hiragino Sans (Japanese), Apple SD Gothic Neo (Korean), Noto Sans for extended Arabic, Hebrew, Devanagari, Thai, Cyrillic
72
+ - Pinterest Sans is optimized for image-adjacent type — slightly tighter tracking than SF Pro, softer terminals, warmer feel
73
+
74
+ ### Hierarchy
75
+
76
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
77
+ |------|------|------|--------|-------------|----------------|-------|
78
+ | Pin Detail Title | Pinterest Sans | 28pt | 700 | 1.2 | -0.3pt | Headline on pin detail screen |
79
+ | Screen Title (Large) | Pinterest Sans | 24pt | 700 | 1.2 | -0.2pt | Profile display name, board title hero |
80
+ | Section Header | Pinterest Sans | 20pt | 700 | 1.25 | -0.1pt | "Your boards", "Created by you" |
81
+ | Board Name | Pinterest Sans | 17pt | 700 | 1.25 | -0.1pt | Board tile caption |
82
+ | Pin Title | Pinterest Sans | 14pt | 500 | 1.3 | 0pt | Pin caption below masonry tile |
83
+ | Username | Pinterest Sans | 14pt | 600 | 1.3 | 0pt | Creator name on pins, boards, comments |
84
+ | Body | Pinterest Sans | 15pt | 400 | 1.45 | 0pt | Pin description, board description |
85
+ | Comment | Pinterest Sans | 14pt | 400 | 1.4 | 0pt | Comment text on pin detail |
86
+ | Meta / Timestamp | Pinterest Sans | 12pt | 400 | 1.3 | 0pt | "3 days ago", "22 pins" |
87
+ | Button (Primary) | Pinterest Sans | 16pt | 700 | 1.0 | 0pt | Red Save button, Follow pill |
88
+ | Button (Secondary) | Pinterest Sans | 14pt | 600 | 1.0 | 0pt | Outline / transparent buttons |
89
+ | Tab Label | Pinterest Sans | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels (when shown) |
90
+ | Micro Label | Pinterest Sans | 11pt | 700 | 1.2 | 0.4pt | "IDEA PIN" / "VIDEO" badges, all caps |
91
+
92
+ ### Principles
93
+ - **Weights concentrated at 400 / 500 / 600 / 700**: Regular, medium (for pin titles), semibold (for usernames), bold (for headlines and CTAs)
94
+ - **No thin, no light, no black**: The font ships with those weights but the product never uses them
95
+ - **Negative letter-spacing reserved for 20pt+**: Anything under 20pt sits at 0pt tracking; titles tighten to -0.1 through -0.3pt
96
+ - **Line heights lean readable**: Pinterest is heavy on descriptions and text below pins; body sits at 1.4–1.45 where most apps use 1.3
97
+ - **Dynamic Type supported on text-heavy views**: Descriptions, comments, and settings respect user preference; pin title captions are fixed size because masonry layout relies on predictable heights
98
+ - **No all-caps except micro-labels**: The 11pt `MICRO LABEL` treatment is the only place all-caps appears
99
+
100
+ ## 4. Component Stylings
101
+
102
+ ### Buttons
103
+
104
+ **Save Button (The Iconic Red Pill)**
105
+ - Shape: Pill, 40pt height, width fits content (typically 64–72pt wide for "Save")
106
+ - Background: `#E60023`
107
+ - Text: `#FFFFFF`, Pinterest Sans 16pt weight 700
108
+ - Padding: 10pt vertical, 20pt horizontal
109
+ - Corner radius: 500pt (full pill)
110
+ - Pressed: background `#AD081B`, scale 0.97, medium haptic
111
+ - State variant: "Saved" — background becomes `#111111` (black), text stays white, retains pill shape. This color flip is the moment the user knows the pin is committed.
112
+ - Position on every pin: upper-right corner of the image on hover / long-press, and as a persistent overlay button in the corner of the pin when in "Save mode"
113
+
114
+ **Primary Pill (Follow / Sign up)**
115
+ - Background: `#E60023`
116
+ - Text: `#FFFFFF`, Pinterest Sans 16pt weight 700
117
+ - Padding: 12pt vertical, 24pt horizontal
118
+ - Corner radius: 500pt
119
+ - Pressed: `#AD081B`, scale 0.97
120
+ - Used for: "Follow", "Continue", "Sign up"
121
+
122
+ **Secondary Pill (Share / Follow on)**
123
+ - Background: `#EFEFEF` (light mode) / `#2A2A2A` (dark)
124
+ - Text: `#111111` light / `#FFFFFF` dark, 16pt weight 600
125
+ - Padding: 12pt vertical, 24pt horizontal
126
+ - Corner radius: 500pt
127
+ - Pressed: background `#E0E0E0` / `#3A3A3A`
128
+
129
+ **Icon Button (Overflow / Share / Message)**
130
+ - Glyph size: 24pt
131
+ - Hit area: 44pt × 44pt
132
+ - Default: `#111111` (light) / `#FFFFFF` (dark)
133
+ - Pressed: background `rgba(0,0,0,0.05)` light / `rgba(255,255,255,0.1)` dark (slight wash, no full button look)
134
+
135
+ **Text Button ("See all", "More")**
136
+ - Font: Pinterest Sans 14pt weight 700
137
+ - Color: `#111111` (light) / `#FFFFFF` (dark)
138
+ - No underline, no background; 44pt hit area
139
+
140
+ ### Cards & Containers
141
+
142
+ **Pin Tile (Masonry Grid — THE signature component)**
143
+ - Width: (screen width − 16pt horizontal margin − 8pt inter-column gap) ÷ 2 — so ≈ 183pt on a 390pt iPhone
144
+ - Height: **variable** — matches the aspect ratio of the original pin image. A single column can have a 200pt-tall pin followed by a 380pt-tall pin, because each pin renders at its native aspect.
145
+ - Structure (top to bottom):
146
+ 1. Pin image — edge-to-edge within the tile, corner radius 16pt, no shadow, no border
147
+ 2. Optional badge top-left (11pt uppercase micro-label on a semi-transparent black chip for "VIDEO", "IDEA PIN")
148
+ 3. Save button top-right overlay (40pt pill, appears on long-press or always for pinboard browsing)
149
+ 4. Below image: 4pt gap, then pin title (14pt weight 500, 2-line clamp), 2pt gap, then creator row (20pt circle avatar + username 12pt weight 400 secondary)
150
+ - Tile gap: 8pt vertical between pins in the same column; 8pt horizontal between columns
151
+ - Tile background: transparent (canvas shows through)
152
+ - Corner radius on image: 16pt — larger than most apps; softens the grid
153
+ - Tap: full-bleed fade-through transition to pin detail (described below)
154
+
155
+ **Pin Detail Hero**
156
+ - Image renders at its native aspect, full-width with 16pt horizontal margin, corner radius 16pt
157
+ - Overlaid at the top-right is the Save button (pill, always visible)
158
+ - Below the image:
159
+ - Creator row: 44pt circle avatar + display name (17pt weight 700) + "Follow" pill trailing
160
+ - Pin title (28pt weight 700, multi-line OK)
161
+ - Pin description (15pt weight 400, 1.45 line height)
162
+ - Tag chips — horizontal scroll, pill chips at 30pt height
163
+ - "Comments" header + comments list
164
+ - Below: **"More like this"** infinite-scroll masonry of related pins — this is Pinterest's trademark infinite-loop experience
165
+
166
+ **Board Cover Tile**
167
+ - Square 1:1 tile (typical size 180pt)
168
+ - Structure: 2×2 collage of the 4 most-recent pins on the board — top-left is the largest (takes up the left half), top-right + bottom-right are smaller stacked, bottom-left fills remaining (sometimes 3-pin composition instead)
169
+ - Board name below: 17pt weight 700, 1-line with ellipsis
170
+ - Pin count: 12pt weight 400 secondary
171
+ - Corner radius: 16pt (matches pin tiles)
172
+ - Tap: scale 0.96 with soft haptic, opens board screen
173
+
174
+ **Idea Pin Card (Story-style)**
175
+ - Full-viewport 9:16 vertical player, similar to TikTok / Reels but Pinterest-branded
176
+ - Overlays:
177
+ - Top: progress bar segments (one thin bar per slide, `#FFFFFF` fills, `rgba(255,255,255,0.3)` track)
178
+ - Bottom-left: creator avatar + name + "Follow" pill
179
+ - Bottom-right: React (heart SF Symbol), comment, share, save (red pill) — stacked vertically
180
+ - Caption / tag row: sits above the bottom UI, 15pt weight 400 white with text shadow
181
+ - Transitions between slides: spring-tap (tap right to advance, tap left to go back, swipe up to see details)
182
+
183
+ **Comment Row**
184
+ - 36pt circular avatar leading
185
+ - Username (14pt weight 600) + comment body (14pt weight 400) stacked
186
+ - Reaction row (heart icon + count) at 24pt trailing, or below text on longer comments
187
+ - Vertical padding 12pt; divider hairline below
188
+
189
+ ### Navigation
190
+
191
+ **Bottom Tab Bar**
192
+ - Height: 56pt + safe area
193
+ - Background: `#FFFFFF` (light) / `#121212` (dark) with 1pt top hairline `#E9E9E9` / `#2E2E2E`
194
+ - 5 tabs in order: **Home** (house icon), **Search** (magnifying glass), **Create** (centered `+` button, slightly larger, red background `#E60023`), **Notifications** (bell icon), **Profile** (user circle or user avatar)
195
+ - Icon size: 26pt glyph, 44pt hit area
196
+ - Active: `#111111` light / `#FFFFFF` dark (filled SF Symbol variant)
197
+ - Inactive: `#767676` light / `#AAAAAA` dark (outlined variant)
198
+ - Labels: hidden by default — Pinterest uses icon-only tab bar on iOS for most of its recent history
199
+ - Create button (center): 48pt × 48pt rounded-rect with 14pt corner radius, background `#E60023`, white `+` glyph — stands out visually from the other four icons
200
+
201
+ **Top Floating Search Bar (Home)**
202
+ - Position: floats above the masonry feed, 12pt from top safe area, 16pt from sides
203
+ - Height: 48pt
204
+ - Background: `#FFFFFF` with soft shadow `rgba(0,0,0,0.08) 0 2px 8px` (light) / `#1E1E1E` with no shadow (dark)
205
+ - Corner radius: 500pt (full pill)
206
+ - Leading: 20pt `magnifyingglass` SF Symbol in `#111111` / `#FFFFFF`
207
+ - Placeholder: "Search for ideas" 16pt weight 400 `#767676`
208
+ - On scroll down: the bar slides up out of view; on scroll up: slides back in (typical Material-style scroll-hide behavior)
209
+
210
+ **Top Nav (Board / Pin Detail / Settings)**
211
+ - Height: 44pt + safe area
212
+ - Back chevron 24pt leading, title 17pt weight 700 center (multi-word boards allow truncation), overflow `ellipsis` 24pt trailing
213
+ - Background: matches canvas; no divider unless content scrolls under
214
+
215
+ **Tab Row (Profile Screen)**
216
+ - Sticky below profile header when scrolling
217
+ - Two or three tabs: "Created", "Saved", sometimes "More ideas"
218
+ - Active: `#111111` text 17pt weight 700, 2pt underline bar `#111111`
219
+ - Inactive: `#767676` 17pt weight 500
220
+
221
+ ### Input Fields
222
+
223
+ **Search Bar (Search Tab)**
224
+ - Background: `#EFEFEF` light / `#2A2A2A` dark
225
+ - Height: 44pt
226
+ - Corner radius: 500pt (full pill)
227
+ - Leading `magnifyingglass` 18pt `#767676`
228
+ - Placeholder: "Search for ideas" 16pt weight 400 `#767676`
229
+ - Focus: no border change; keyboard comes up, "Cancel" text button appears trailing 14pt weight 600 black
230
+
231
+ **Comment Compose**
232
+ - Background: `#FFFFFF` with 1pt top border `#E9E9E9`
233
+ - Height: 48pt when collapsed, expands with content
234
+ - Placeholder: "Add a comment" 14pt weight 400 `#767676`
235
+ - Trailing: "Post" text button, grayed until input is non-empty, turns `#111111` weight 700 when ready
236
+
237
+ **Board Picker Sheet**
238
+ - Bottom sheet, 12pt top-corner radius
239
+ - List of boards (row = 56pt tall, 40pt square board cover + board name + pin count)
240
+ - "Create board" pinned at top with `+` icon
241
+ - Search within boards at the top
242
+
243
+ ### Distinctive Components
244
+
245
+ **The Masonry Grid**
246
+ - 2-column variable-height layout is the single most-signature Pinterest UI feature
247
+ - Each column is independent: pins "fall" into the shorter column like Tetris, creating the staggered look
248
+ - Pins render at their native aspect ratio — no cropping, no forced uniform height
249
+ - 8pt gap between columns and between pins in a column
250
+ - **Critical implementation note**: heights must be computed from image aspect ratio before rendering — skeleton placeholders during load respect the eventual aspect so the grid doesn't jump
251
+
252
+ **Save Button Overlay**
253
+ - Always-accessible red pill in the top-right corner of every pin
254
+ - On tap: red pill morphs to black "Saved" pill (200ms spring), success haptic fires, brief toast "Saved to {board name}" fades in from the bottom
255
+ - On long-press: opens board picker sheet for choosing destination
256
+
257
+ **Pin Detail Pinch-to-Zoom**
258
+ - Pin image supports pinch-to-zoom gesture, image scales up in place with inertia
259
+ - Release snaps back to full-width with spring
260
+
261
+ **Shop the Look Tags**
262
+ - Certain pins have small white circular tags (20pt diameter) placed over product locations in the image
263
+ - Tap the tag: opens a product card with price, brand, "Buy" button
264
+ - Tags pulse subtly every 3 seconds to hint interactivity
265
+
266
+ **"More like this" Infinite Feed**
267
+ - Below the comments on every pin detail, a masonry feed of visually-similar pins streams in infinitely
268
+ - Scrolling deep never ends — Pinterest's visual-search-driven recommendation is fundamental to the app
269
+ - Each pin here is tappable and starts the experience over, creating a rabbit-hole navigation pattern
270
+
271
+ **Idea Pin Player**
272
+ - Vertical story-style player for multi-slide pins (similar to Instagram Stories but curated and Pinterest-themed)
273
+ - Progress bar segments at top, content (image/video/text slide) fills the rest
274
+ - Tap right = next slide, tap left = previous, swipe up = see details, swipe down = dismiss
275
+ - Overlay controls: creator, save, react — bottom of screen
276
+
277
+ ## 5. Layout Principles
278
+
279
+ ### Spacing System
280
+ - Base unit: 4pt
281
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 56, 72
282
+ - Masonry grid gap: 8pt both directions (tight, image-focused)
283
+ - Pin detail content margin: 16pt horizontal
284
+ - Section vertical rhythm: 32pt between major sections (pin detail → comments → more like this)
285
+
286
+ ### Grid & Container
287
+ - Masonry: 2 columns on all iPhone widths; 3 columns on iPad portrait, 4 on iPad landscape
288
+ - Pin detail: single-column, 16pt margin
289
+ - Board cover grid (profile): 2 columns with 8pt gap
290
+ - Settings / list content: full-width rows with 16pt horizontal inset
291
+
292
+ ### Whitespace Philosophy
293
+ - **Tight between pins**: 8pt gaps keep the mosaic feel — the feed is image-dense on purpose
294
+ - **Generous in reading views**: Pin detail, comments, and settings use 16pt+ insets and 1.45 line height for body copy
295
+ - **Large image corner radii**: 16pt is a lot — this is the app's softening move, applied only to images (not buttons, not chips)
296
+
297
+ ### Border Radius Scale
298
+ - Square (0pt): Nothing — Pinterest never uses a hard corner
299
+ - Soft (4pt): Rarely used
300
+ - Standard (8pt): Some inline tags and status badges
301
+ - Pronounced (12pt): Bottom sheets top corners
302
+ - Signature (16pt): Pin images, board covers — the app's most-recognized corner
303
+ - Full Pill (500pt): Save button, Follow, Search bar, filter chips
304
+ - Circle (50%): Avatars, create button icon, shop-the-look tags
305
+
306
+ ## 6. Depth & Elevation
307
+
308
+ | Level | Treatment | Use |
309
+ |-------|-----------|-----|
310
+ | Flat (Level 0) | No shadow | Pin tiles in the feed, body text, most screens |
311
+ | Floating Search (Level 1) | `rgba(0,0,0,0.08) 0 2px 8px` | Floating search pill over the feed in light mode |
312
+ | Board Cover Lift (Level 2) | `rgba(0,0,0,0.1) 0 4px 16px` | Board cover on hover-state equivalent, create flow previews |
313
+ | Sheet (Level 3) | `rgba(0,0,0,0.25) 0 -12px 40px` | Bottom sheets — board picker, share |
314
+ | Modal Dim | `rgba(0,0,0,0.6)` + backdrop-blur 20 | Context menu dimming |
315
+ | Toast (Level 4) | `rgba(0,0,0,0.2) 0 6px 24px` | "Saved to {board}" toast slides up |
316
+
317
+ **Shadow Philosophy**: Pinterest is mostly a flat app. Shadows exist in two places: (1) the floating search bar in light mode, which needs a subtle lift so it reads as a floating element over the feed, and (2) bottom sheets, where shadow communicates layering. Pin tiles themselves never carry shadow — the masonry grid looks cleanest when every pin sits flush on the canvas. In dark mode, shadows are even more restrained because the darker canvas already provides depth through surface-color steps (`#121212` → `#1E1E1E` → `#2A2A2A`).
318
+
319
+ ### Motion
320
+ - **Save button morph**: Red pill → black "Saved" pill in 200ms spring (damping 0.8), success haptic fires on state change
321
+ - **Pin tap → detail**: Shared-element transition — the tapped pin image scales up from its grid position to the pin detail hero, 0.35s spring, damping 0.85
322
+ - **Masonry entrance**: New pins fade-up 8pt with 50ms stagger per column as they load into the feed
323
+ - **Idea Pin advance**: Tap-right advances a slide with 0.25s ease-out
324
+ - **Pull-to-refresh**: 28pt red spinner (the "P" logomark) rotates while loading
325
+ - **Long-press pin**: Scale 0.96 + haptic, context menu springs in 0.3s
326
+ - **Follow button**: Red pill → gray "Following" with 0.25s spring cross-fade, success haptic
327
+
328
+ ## 7. Do's and Don'ts
329
+
330
+ ### Do
331
+ - Use `#FFFFFF` as light-mode canvas — stark white, not warm-tinted
332
+ - Use `#121212` as dark-mode canvas — warm dark, not pure black
333
+ - Reserve Pinterest Red (`#E60023`) for the Save button, primary CTAs, and the logomark — that's it
334
+ - Render pins at their native aspect ratio in the masonry grid — never force a uniform height
335
+ - Use 16pt corner radius on pin images and board covers — softer than most apps, and intentional
336
+ - Always show the Save button on a pin — it's the app's core verb
337
+ - Use Pinterest Sans at 400 / 500 / 700 weights only; 500 is the weight for pin titles
338
+ - Keep the masonry gap tight at 8pt both directions — pins should feel like a mosaic
339
+ - Use the floating search pill at the top of Home in light mode with a soft shadow
340
+ - Morph the Save button to black "Saved" when committed — this is the success signal
341
+ - Show "More like this" below every pin detail with infinite scroll
342
+ - Use icon-only tab bar (no labels) on iOS — Pinterest's house style
343
+
344
+ ### Don't
345
+ - Don't put shadows on pin tiles — the feed looks cleanest flat
346
+ - Don't force pins to uniform height — masonry is broken the moment you do
347
+ - Don't use red for anything other than the Save button / CTAs / brand — no red text, no red borders, no red accents on metadata
348
+ - Don't use tiny corner radii (4pt or less) on images — 16pt is the minimum
349
+ - Don't use pure black `#000000` for dark-mode canvas — `#121212` is warmer and reduces eye strain
350
+ - Don't use display-size type for pin captions — 14pt weight 500 is the limit
351
+ - Don't add gradients, glossy effects, or skeuomorphism — Pinterest is flat and photographic
352
+ - Don't animate aggressively — springs are subtle (0.2–0.35s range)
353
+ - Don't cover pin images with persistent UI chrome — the Save button is the only permanent overlay
354
+ - Don't break the 2-column masonry on iPhone — even on Pro Max, it stays 2 columns (wider tiles, not 3)
355
+
356
+ ## 8. Responsive Behavior
357
+
358
+ ### Device Sizes
359
+ | Device | Width | Key Changes |
360
+ |--------|-------|-------------|
361
+ | iPhone SE (3rd gen) | 375pt | Masonry tile ~176pt wide, pin title caption slightly tighter |
362
+ | iPhone 13/14/15 | 390pt | Standard masonry tile ~183pt wide |
363
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated at top of floating search |
364
+ | iPhone 15/16 Pro Max | 430pt | Masonry tile ~203pt wide, headlines bump +1pt |
365
+ | iPad | 768pt+ | 3-column masonry portrait, 4-column landscape; pin detail max 640pt wide centered |
366
+
367
+ ### Dynamic Type
368
+ - Pin detail title and body: full scale
369
+ - Pin caption title in masonry feed: **fixed size** (layout-sensitive — affects tile height)
370
+ - Comments and descriptions: full scale
371
+ - Tab labels: hidden, so N/A
372
+ - Save button text: fixed size (pill geometry)
373
+
374
+ ### Orientation
375
+ - Feed / Search / Profile / Create: **portrait-locked**
376
+ - Pin detail with a video or Idea Pin: rotates to landscape for video playback
377
+ - Idea Pin player: portrait-locked
378
+
379
+ ### Touch Targets
380
+ - Save button: 40pt pill — exceeds 44pt minimum via hit area expansion
381
+ - Pin tile: full tile tappable (variable height, 44pt minimum enforced by tile overall size)
382
+ - Icon buttons: 44pt hit area
383
+ - Tab bar icons: 26pt glyph with 44pt hit area
384
+ - Create button (center tab): 48pt × 48pt
385
+
386
+ ### Safe Area Handling
387
+ - Top: floating search respects top safe area (12pt inset below Dynamic Island)
388
+ - Bottom: tab bar respects home indicator
389
+ - Idea Pin player: ignores safe area for video content, respects it for overlays
390
+ - Sides: 16pt content insets on non-masonry screens; masonry uses full-width − 16pt outer margin − 8pt column gap
391
+
392
+ ## 9. Agent Prompt Guide
393
+
394
+ ### Quick Color Reference
395
+ - Light canvas: `#FFFFFF`
396
+ - Dark canvas: `#121212`
397
+ - Surface 1 (light): `#F8F8F8`
398
+ - Surface 1 (dark): `#1E1E1E`
399
+ - Input fill (light): `#EFEFEF`
400
+ - Input fill (dark): `#2A2A2A`
401
+ - Text primary (light): `#111111`
402
+ - Text primary (dark): `#FFFFFF`
403
+ - Text secondary (light): `#767676`
404
+ - Text secondary (dark): `#AAAAAA`
405
+ - Pinterest Red: `#E60023`
406
+ - Red pressed: `#AD081B`
407
+ - Divider: `#E9E9E9` (light) / `#2E2E2E` (dark)
408
+
409
+ ### Example Component Prompts
410
+ - "Create a SwiftUI Pinterest Save button: 40pt tall pill, background `#E60023`, text 'Save' in Pinterest Sans 16pt weight 700 `#FFFFFF`. 10pt vertical / 20pt horizontal padding, 500pt corner radius (full pill). Pressed: background `#AD081B`, scale 0.97 with medium haptic. On save success: morph to black `#111111` background with text 'Saved', 200ms spring transition, success haptic."
411
+ - "Build the Pinterest masonry grid: 2-column layout, each column independent (pins fall into shorter column like Tetris). Pin tile: full column width, height = image aspect ratio × width. Image renders with 16pt corner radius, no shadow, no border. Below image: 4pt gap, pin title Pinterest Sans 14pt weight 500 (2-line clamp), 2pt gap, creator row with 20pt avatar + username 12pt weight 400 `#767676`. 8pt gap between tiles vertically and between columns horizontally."
412
+ - "Design the Pinterest floating search bar: pill at top of Home feed, 48pt tall, 16pt from sides, 12pt below top safe area. Background `#FFFFFF` (light) with shadow `rgba(0,0,0,0.08) 0 2px 8px`, or `#1E1E1E` (dark) no shadow. 500pt corner radius. Leading magnifyingglass SF Symbol 20pt `#111111`, placeholder 'Search for ideas' 16pt weight 400 `#767676`. Slides up out of view on scroll down, back on scroll up."
413
+ - "Create a pin detail screen: image at top full-width with 16pt horizontal margin and 16pt corner radius, Save button pill overlay top-right. Below: 44pt circle avatar + creator display name 17pt weight 700 + Follow red pill trailing. Then pin title Pinterest Sans 28pt weight 700, then description 15pt weight 400 `#111111` line-height 1.45. Comments section below. At bottom: 'More like this' masonry grid infinite feed of related pins."
414
+ - "Build the Pinterest bottom tab bar: 56pt + safe area, 5 tabs (Home, Search, Create, Notifications, Profile). Create tab in the center is 48pt × 48pt rounded-rect with 14pt corner radius, background `#E60023`, white `+` glyph — stands out from the other four outlined icons. All other tabs: 26pt SF Symbol, active `#111111` filled variant, inactive `#767676` outlined. No labels shown. 1pt top hairline `#E9E9E9`."
415
+ - "Design an Idea Pin player: full-viewport 9:16 vertical slide stack. Top overlay: progress bar segments (one thin white bar per slide, `rgba(255,255,255,0.3)` track, `#FFFFFF` fill). Bottom-left: 32pt avatar + creator name 14pt weight 600 white + Follow red pill. Bottom-right: stacked react (heart), comment, share, Save (red pill) icons. Tap right advances slide, tap left goes back, swipe up for details."
416
+
417
+ ### Iteration Guide
418
+ 1. Canvas in light mode is pure white `#FFFFFF` — the app is photo-centric, so the canvas should disappear behind imagery
419
+ 2. Pinterest Red `#E60023` is reserved for the Save button, primary CTAs, and the logomark — never for text, borders, or generic accents
420
+ 3. Masonry grid is 2-column with variable height — this is the single most important layout signature; do not normalize heights
421
+ 4. Pin images use 16pt corner radius — larger than most apps; this is the softening touch
422
+ 5. Typography is Pinterest Sans at 400 / 500 / 700 (500 is the weight for pin title captions)
423
+ 6. Save button morphs to black "Saved" on success — this is the feedback moment
424
+ 7. No shadows on pin tiles — the feed stays flat; shadows only on floating search and sheets
425
+ 8. Dark mode canvas is `#121212`, not true black — Material-style warm dark
426
+ 9. Create button (center tab) uses the brand red background to stand out from the other tabs
427
+ 10. "More like this" infinite feed below every pin detail is load-bearing UX — always show it