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,447 @@
1
+ # Design System Inspiration of Claude (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Claude's iOS app feels like an AI assistant rendered on a piece of warm paper. Anthropic deliberately rejected the cold blue-grey aesthetic that defined ChatGPT's first wave of imitators and instead chose a sun-warmed cream canvas (`#F8F4ED`), inky near-black type, and a single signature accent — Claude Orange (`#D97757`) — that appears on the send button, the active state of the model picker, and the asterisk-star logomark. The result is a chat surface that reads as humanist before it reads as technological: the AI doesn't shout at you in neon; it sits next to you on the same paper, in the same handwriting.
6
+
7
+ The orange itself is famously specific — it's a desaturated, slightly clay-toned terracotta, not a vivid tech orange. It carries the brand without dominating the screen because almost everything else is type and surface. Anthropic's design language is restraint: there are no gradients, no glass blurs over the chat content, no glow halos on buttons. The signature visual is text quality — long, beautifully typeset messages flowing across the cream canvas with serif headings inside the assistant's responses, paired with the artifact tray that slides out from the right when Claude renders code, a document, or a visualization.
8
+
9
+ Typography is the central design system. Anthropic uses Tiempos (a serif by Klim Type Foundry) for assistant message body text — the choice of a serif inside an AI app is itself a statement, because every other chat app uses sans for the assistant's responses. Headings within assistant messages are in Tiempos Headline; body is Tiempos Text; user messages and UI chrome are in Styrene (Klim's geometric humanist sans) or Inter as substitute. The voice the type carries is editorial-essayist: Claude reads like an essayist, not a chatbot, and the typography is the manifest of that intent.
10
+
11
+ **Key Characteristics:**
12
+ - Cream paper canvas (`#F8F4ED`) — the Claude "paper" — and a slightly whiter `#FBF9F4` for input fields and elevated surfaces
13
+ - Claude Orange (`#D97757`) — desaturated terracotta — for the send button, active model chip, and the asterisk-star logomark
14
+ - Tiempos serif for assistant message body (the central typographic choice); Styrene/Inter sans for user messages and UI chrome
15
+ - Asterisk-star logomark — a 6-point asterisk-meets-star glyph in Claude Orange — appearing on the avatar of every Claude message
16
+ - Artifact tray that slides out from the right (on iPad) or expands as a full-screen card (on iPhone) when Claude generates code or a document
17
+ - Model picker chip at the top: "Claude Opus 4", "Claude Sonnet 4.5", etc., with a small orange dot when the active model is Opus
18
+ - File and image attachments via a paperclip-plus button beside the input
19
+ - Streaming response cursor — a small blinking orange caret that animates while Claude is generating
20
+ - Subtle, paper-warm shadows (`rgba(40, 30, 20, 0.06)`) — never blue-grey
21
+ - Bottom safe-area pinned input bar with auto-grow textarea, model chip, paperclip, and the orange send circle
22
+
23
+ ## 2. Color Palette & Roles
24
+
25
+ ### Primary
26
+ - **Claude Orange** (`#D97757`): The signature accent — Send button fill, asterisk-star logomark, active state of model picker, streaming cursor, link color in assistant messages.
27
+ - **Orange Pressed** (`#BE6242`): Pressed state on the Send button.
28
+ - **Orange Soft** (`#F2DDD0`): Background of the active model chip, the "thinking…" indicator soft fill.
29
+
30
+ ### Canvas (the Claude Paper)
31
+ - **Cream Paper** (`#F8F4ED`): The primary canvas — every chat screen background by default. The most recognizable Claude surface treatment.
32
+ - **Paper White** (`#FBF9F4`): Slightly elevated surfaces — input field background, code block background.
33
+ - **Surface Warm 1** (`#F0EAE0`): Section dividers, settings backgrounds, soft callouts.
34
+ - **Surface Warm 2** (`#E8E0D2`): Pressed states, hover/touch chip fills.
35
+ - **Divider Sand** (`#DDD2BD`): 0.5pt hairline row dividers on settings.
36
+
37
+ ### Text
38
+ - **Ink** (`#2D2520`): Primary text — assistant message body, user message body, screen titles. Warm near-black, not pure.
39
+ - **Graphite Warm** (`#5A4F44`): Secondary text — timestamps, "Claude" / "You" sender labels, metadata.
40
+ - **Stone Warm** (`#8A7E72`): Tertiary text — placeholder, helper, "Press enter to send" hint.
41
+ - **Bone Warm** (`#B5AB9E`): Disabled labels, very-secondary metadata.
42
+
43
+ ### Code & Syntax (inside code blocks and artifacts)
44
+ - **Code Background** (`#1F1B16`): Dark warm canvas inside fenced code blocks — slightly orange-tinted, never blue-tinted
45
+ - **Code Text** (`#E8E0D2`): Default code text
46
+ - **Syntax Keyword** (`#D97757`): Keywords like `function`, `const`, `return` — Claude Orange
47
+ - **Syntax String** (`#7FB069`): Strings in code — sage green
48
+ - **Syntax Number** (`#E8B96F`): Numbers — warm gold
49
+ - **Syntax Comment** (`#8A7E72`): Comments — warm grey
50
+ - **Syntax Function** (`#9DA4F2`): Function names — soft periwinkle
51
+
52
+ ### Semantic
53
+ - **Success Green** (`#6B9D5E`): "Copied" toast, "Saved" confirmations — sage, not lime
54
+ - **Warning Amber** (`#D49952`): "Approaching context limit" — warm amber
55
+ - **Error Red** (`#C16654`): Form errors, "Failed to send" — terracotta-toned red, not pure
56
+ - **Info Slate** (`#5A6273`): Rarely used — "Beta" badges, "What's new" callouts
57
+
58
+ ### Dark Mode
59
+ Claude's dark mode launched alongside the iOS app. It is warm-dark, preserving the paper feel.
60
+ - **Dark Canvas** (`#1F1B16`): Primary dark background — warm near-black, slightly orange-undertoned.
61
+ - **Dark Surface 1** (`#2A2520`): Cards, sheets, input field fill.
62
+ - **Dark Surface 2** (`#3A332C`): Pressed states, chip fills, hover.
63
+ - **Dark Divider** (`#3A332C`): Hairlines.
64
+ - **Dark Text Primary** (`#E8E0D2`): Inverted Ink — warm cream type.
65
+ - **Dark Text Secondary** (`#B5AB9E`): Inverted Graphite Warm.
66
+ - **Claude Orange (dark)** (`#D97757`): Unchanged — the orange reads well on warm dark canvas.
67
+ - **Orange Soft (dark)** (`#4A352A`): Dark mode active-chip background.
68
+
69
+ ## 3. Typography Rules
70
+
71
+ ### Font Family
72
+ - **Primary (assistant body)**: `Tiempos Text` — proprietary serif by Klim Type Foundry, the central typographic choice of the Claude brand
73
+ - **Display (headings inside assistant messages)**: `Tiempos Headline` — the same family at heavier display weights
74
+ - **Secondary (UI chrome, user messages)**: `Styrene A` or `Styrene B` (Klim) — geometric humanist sans
75
+ - **Weights available**: Tiempos Regular (400), Medium (500), Semibold (600), Bold (700); Styrene Regular (400), Medium (500), Bold (700)
76
+ - **Fallback stack for serif**: `'Source Serif Pro', 'Georgia', 'Times New Roman', serif` — Source Serif is the closest Google Fonts substitute
77
+ - **Fallback stack for sans**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', sans-serif`
78
+ - **Web/marketing Google Fonts substitute**: `Source Serif 4` for the serif and `Inter` for the sans — both ship on most platforms
79
+
80
+ ### Hierarchy
81
+
82
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
83
+ |------|------|------|--------|-------------|----------------|-------|
84
+ | Display (Settings, About) | Tiempos Headline | 32pt | 600 | 1.2 | -0.4pt | "Settings", "About Claude" |
85
+ | Conversation Title | Styrene A | 18pt | 600 | 1.25 | -0.1pt | Auto-generated chat title at the top of conversation |
86
+ | H1 (Assistant) | Tiempos Headline | 24pt | 600 | 1.3 | -0.2pt | Top-level headings inside Claude's response |
87
+ | H2 (Assistant) | Tiempos Headline | 20pt | 600 | 1.3 | -0.1pt | Section headings inside response |
88
+ | H3 (Assistant) | Tiempos Headline | 17pt | 600 | 1.35 | 0pt | Subsection in response |
89
+ | Assistant Body | Tiempos Text | 16pt | 400 | 1.55 | 0pt | The most-rendered text in the app — Claude's prose |
90
+ | Assistant Body Italic | Tiempos Text Italic | 16pt | 400 | 1.55 | 0pt | Emphasis in Claude's responses |
91
+ | Assistant Body Bold | Tiempos Text | 16pt | 600 | 1.55 | 0pt | Emphasis in Claude's responses |
92
+ | User Message | Styrene A | 16pt | 400 | 1.5 | 0pt | What the user typed |
93
+ | User Message Background | n/a | n/a | n/a | n/a | n/a | The user message sits in a Surface Warm 1 pill, not a chat bubble |
94
+ | Inline Code | JetBrains Mono | 14pt | 500 | 1.4 | 0pt | `inline code` inside prose |
95
+ | Code Block | JetBrains Mono | 14pt | 400 | 1.5 | 0pt | Fenced code blocks |
96
+ | List Item | Tiempos Text | 16pt | 400 | 1.5 | 0pt | Bullet / numbered list items in Claude's response |
97
+ | Blockquote | Tiempos Text Italic | 16pt | 400 | 1.5 | 0pt | Block-quoted text in Claude's response |
98
+ | Input Placeholder | Styrene A | 16pt | 400 | 1.4 | 0pt | "Reply to Claude…" |
99
+ | Button (Send) | n/a (icon) | n/a | n/a | n/a | n/a | The Send button is icon-only |
100
+ | Button (Action) | Styrene A | 15pt | 600 | 1.0 | 0pt | "Continue", "Reset chat" |
101
+ | Model Chip | Styrene A | 13pt | 500 | 1.0 | 0pt | "Claude Opus 4" in the picker |
102
+ | Metadata | Styrene A | 12pt | 400 | 1.3 | 0pt | Timestamps, "Claude Opus 4 · 2:14 PM" |
103
+ | Caption | Styrene A | 11pt | 400 | 1.3 | 0pt | "Press ⏎ to send" |
104
+
105
+ ### Principles
106
+ - **Serif body for Claude, sans for the user**: This single decision is the brand. When Claude replies in Tiempos and you reply in Styrene, the conversation has a typographic role-asymmetry that no other AI app reproduces.
107
+ - **Loose line-height on assistant body**: 1.55x at 16pt — Claude's responses are essays, not Slack messages. Generous leading is non-negotiable.
108
+ - **Warm ink, never pure black**: Body text sits at `#2D2520`, not `#000000` — alongside the cream canvas, this is what makes the chat feel like print.
109
+ - **Markdown rendering is the design**: Headings, lists, quotes, code blocks, tables, and bold/italic all render their distinct typographic identity inside Claude's responses. The chat surface is a long-form document, not a string of bubbles.
110
+ - **Dynamic Type respected on all reading text**: Assistant body, headings, user messages all scale; the model chip, timestamps, and the send icon are fixed (layout-sensitive).
111
+ - **Slight optical sizing**: Tiempos Headline is used at 17pt+ for headings; Tiempos Text at 16pt for body. Don't mix them at the same size.
112
+
113
+ ## 4. Component Stylings
114
+
115
+ ### Buttons
116
+
117
+ **Send Circle (the orange icon-only send)**
118
+ - Diameter: 40pt
119
+ - Background: `#D97757` (Claude Orange) when input has text; `#E8E0D2` (Surface Warm 2) when input is empty
120
+ - Icon: 16pt arrow-up glyph, color `#FBF9F4` (Paper White) when active, `#8A7E72` (Stone) when disabled
121
+ - Pressed: scale 0.94, background `#BE6242`
122
+ - Haptic: `.impactOccurred(.medium)` on send
123
+ - Sits trailing the input field, vertically centered
124
+
125
+ **Action Button (Continue / Reset / Regenerate)**
126
+ - Background: `#FBF9F4` (Paper White)
127
+ - Border: 1pt `#DDD2BD` (Divider Sand)
128
+ - Text: `#2D2520` (Ink), Styrene A 15pt weight 600
129
+ - Padding: 10pt vertical, 18pt horizontal
130
+ - Corner radius: 10pt
131
+ - Pressed: background `#F0EAE0`
132
+ - These appear at the end of an assistant message as suggested next actions
133
+
134
+ **Primary Pill (Continue conversation, sign-up CTAs)**
135
+ - Background: `#2D2520` (Ink — warm black)
136
+ - Text: `#FBF9F4` (Paper White)
137
+ - Padding: 14pt vertical, 28pt horizontal
138
+ - Corner radius: 24pt (capsule)
139
+ - Pressed: scale 0.97
140
+
141
+ **Copy Button (on code blocks and messages)**
142
+ - Floats top-right inside code blocks and on the right edge of long assistant messages on hover/tap
143
+ - 32pt × 32pt button, `rgba(255, 255, 255, 0.05)` background inside dark code blocks; `#F0EAE0` on cream
144
+ - Icon: `doc.on.doc` 14pt
145
+ - On press: icon morphs to `checkmark` for 1200ms with a small "Copied" toast slide-up
146
+
147
+ ### Cards & Containers
148
+
149
+ **User Message Pill (the user-said-it container)**
150
+ - The user's message sits in a soft pill, NOT a chat bubble with a tail
151
+ - Background: `#F0EAE0` (Surface Warm 1)
152
+ - Padding: 12pt vertical, 16pt horizontal
153
+ - Corner radius: 18pt
154
+ - Max width: 80% of screen width
155
+ - Aligned right (or right-of-center on iPad)
156
+ - Text: Styrene A 16pt Regular `#2D2520`
157
+ - No metadata strip — the timestamp shows on tap
158
+
159
+ **Assistant Message Block (the conversation hero)**
160
+ - The assistant's message is a full-width flow of typography — NO pill, NO bubble, NO container background
161
+ - 16pt avatar (asterisk-star in Claude Orange) at the leading edge, 12pt before the text
162
+ - "Claude" sender label in Styrene A 13pt Medium `#5A4F44`, with the model name in 13pt Regular `#8A7E72` next to it
163
+ - The body content renders as a long-form document: Tiempos Text 16pt with full markdown — headings (Tiempos Headline 17-24pt), lists, code, quotes, all distinct typographic identities
164
+ - The full assistant message can run as tall as needed; the conversation scrolls naturally
165
+ - A faint 1pt `#F0EAE0` divider sits between turns, 32pt above and below
166
+
167
+ **Code Block (inside assistant messages)**
168
+ - Background: `#1F1B16` (Code Background — warm dark, never blue)
169
+ - Border: 0.5pt `#3A332C` in dark theme; 1pt `#DDD2BD` on cream
170
+ - Corner radius: 12pt
171
+ - Padding: 16pt all around
172
+ - Header strip (top of block): language name in JetBrains Mono 11pt `#8A7E72` left-aligned + Copy button right-aligned, 1pt `#3A332C` bottom divider
173
+ - Code text: JetBrains Mono 14pt Regular `#E8E0D2` on warm dark
174
+ - Syntax highlighting uses the warm palette (orange keywords, sage strings, gold numbers, periwinkle functions)
175
+ - Horizontal scroll for long lines, no wrap
176
+
177
+ **Inline Code**
178
+ - Background: `#F0EAE0` on cream; `#3A332C` on dark
179
+ - Padding: 1pt vertical, 4pt horizontal
180
+ - Corner radius: 4pt
181
+ - Font: JetBrains Mono 14pt Medium `#2D2520`
182
+
183
+ **Artifact Card (when Claude generates a document, code file, chart)**
184
+ - On iPhone: appears as a card inset in the message flow — 12pt corner radius, `#FBF9F4` Paper White background, 1pt `#DDD2BD` border, padding 16pt
185
+ - Tap to open: presents as a full-screen modal with the artifact rendered + a "Continue editing" button
186
+ - Top of card: artifact title in Tiempos Headline 17pt Medium + a small icon indicating type (document / code / chart)
187
+ - Body of card: a preview — first ~6 lines of code, or a thumbnail of the rendered document
188
+ - Footer: "Open" button on the right
189
+ - On iPad: opens as a side-pane that takes 40% of the screen width, leaving the chat at 60%; the divider between is draggable
190
+
191
+ **Conversation Card (in the sidebar / history list)**
192
+ - Each row: 64pt tall, full width
193
+ - 14pt vertical / 16pt horizontal padding
194
+ - First line: title in Styrene A 15pt Medium `#2D2520`, 1-line truncate
195
+ - Second line: timestamp in Styrene A 12pt Regular `#8A7E72`
196
+ - Selected state: `#F0EAE0` background, 1pt `#DDD2BD` left border (3pt wide indicator at the leading edge)
197
+ - Hover/press: subtle `#F0EAE0` fill
198
+
199
+ ### Navigation
200
+
201
+ **Top Header Bar**
202
+ - Height: 52pt (slim header)
203
+ - Background: `#F8F4ED` (canvas), no blur — content scrolls naturally underneath
204
+ - Leading: sidebar toggle button (3-line hamburger glyph, `#2D2520`)
205
+ - Title: the conversation title in Styrene A 17pt Semibold `#2D2520`, centered or left-of-center
206
+ - Trailing: "..." overflow menu (model picker, settings, share)
207
+
208
+ **Model Picker Chip (at the top of every conversation)**
209
+ - Sits beneath the header, 8pt below
210
+ - A small pill: `#F0EAE0` (Surface Warm 1) background, 6pt vertical / 12pt horizontal padding, 16pt corner radius
211
+ - Content: 14pt asterisk-star glyph in `#D97757` Claude Orange + "Claude Opus 4" in Styrene A 13pt Medium `#2D2520` + downward chevron 10pt `#8A7E72`
212
+ - Tap opens a sheet with model options; the active model has a `#D97757` orange dot to its left
213
+
214
+ **Sidebar (Conversation History)**
215
+ - Slides in from the left on iPhone (full-screen modal); persistent on iPad (260pt width)
216
+ - Background: `#F0EAE0` (Surface Warm 1)
217
+ - Top: "+ New chat" button — full width, `#FBF9F4` Paper White background, 1pt `#DDD2BD` border, 12pt corner radius, 12pt vertical padding, leading 16pt plus icon + Styrene A 15pt Medium label
218
+ - Below: list of conversation rows grouped by date — "Today", "Yesterday", "Last 7 days", etc.
219
+ - Group headers: Styrene A 11pt Bold UPPERCASE `#8A7E72`, 0.4pt letter spacing
220
+ - Each row: see Conversation Card above
221
+
222
+ **No Bottom Tab Bar**
223
+ - Claude does not use a bottom tab bar — the app is a single-purpose chat. Navigation is via sidebar.
224
+
225
+ ### Input Fields
226
+
227
+ **Chat Input (the most-used input — auto-growing textarea)**
228
+ - Width: full minus 32pt margins
229
+ - Background: `#FBF9F4` (Paper White)
230
+ - Border: 1pt `#DDD2BD` default; 1.5pt `#D97757` focused (orange ring)
231
+ - Corner radius: 20pt (capsule when single-line, softer when grown to multi-line)
232
+ - Min height: 52pt; auto-grow up to 200pt before becoming scrollable
233
+ - Padding: 14pt vertical, 18pt left, 56pt right (to make room for the send button)
234
+ - Placeholder: "Reply to Claude…" in Styrene A 16pt Regular `#8A7E72`
235
+ - Text: Styrene A 16pt Regular `#2D2520`
236
+ - Trailing: paperclip-plus button (28pt circle, transparent, `#5A4F44` icon) leading the send button
237
+ - Send circle: 40pt circle, Claude Orange when active, see Send Circle spec
238
+ - Below the input: a thin row of action chips ("Code interpreter", "Web search", "Use my docs") in Styrene A 11pt Medium pills, only visible when input is empty
239
+
240
+ **Settings Text Field**
241
+ - Background: `#FBF9F4`
242
+ - Border: 1pt `#DDD2BD` default, 1.5pt `#2D2520` focused
243
+ - Corner radius: 10pt
244
+ - Height: 48pt
245
+ - Padding: 12pt vertical, 14pt horizontal
246
+ - Label: above the field in Styrene A 13pt Medium `#5A4F44`
247
+
248
+ ### Distinctive Components
249
+
250
+ **Asterisk-Star Logomark (Claude's avatar)**
251
+ - A 6-point asterisk-meets-star symbol — Anthropic's Claude logomark
252
+ - Rendered as a single shape: 6 narrow petals radiating from the center, slightly rounded tips, evoking a star/sparkle/asterisk hybrid
253
+ - Render: `#D97757` Claude Orange on cream; `#D97757` on dark (it pops on warm dark too)
254
+ - Sizes: 14pt in the model chip, 18pt on assistant message avatars, 28pt+ in onboarding hero, 56pt on splash
255
+
256
+ **Streaming Response Cursor**
257
+ - A small orange caret that appears at the trailing edge of Claude's response while the model is generating
258
+ - 8pt wide, 18pt tall, `#D97757`
259
+ - Animation: blinks at 600ms interval (300ms on / 300ms off); pauses while a new token arrives, then resumes
260
+ - Disappears when the response is complete; replaced by the action buttons (Continue, Regenerate, Copy)
261
+
262
+ **"Thinking…" Indicator (extended thinking models)**
263
+ - Appears when Opus or Sonnet with extended thinking is generating before the visible response
264
+ - A small pill: `#F2DDD0` (Orange Soft) background, 6pt vertical / 12pt horizontal padding, 12pt corner radius
265
+ - Content: 14pt asterisk-star pulsing + "Thinking…" in Styrene A 13pt Medium `#5A4F44`
266
+ - The asterisk pulses scale 1.0 → 1.15 → 1.0 every 1200ms while visible
267
+ - Optional: a subtle progress indicator on long thinking — "Thought for 14s"
268
+
269
+ **Model Picker Sheet**
270
+ - A bottom sheet, 24pt top corners, `#FBF9F4` Paper White background
271
+ - List of models — each row is 64pt tall with:
272
+ - 24pt asterisk-star icon at the leading edge (Claude Orange for active, `#B5AB9E` muted for unavailable)
273
+ - Model name in Styrene A 16pt Medium `#2D2520`
274
+ - Sub-line: "Most intelligent" / "Fast and capable" / "Quickest" in Styrene A 13pt Regular `#5A4F44`
275
+ - A `#D97757` orange dot at the trailing edge when this is the currently selected model
276
+ - 1pt `#F0EAE0` divider between rows
277
+ - Tap selects + dismisses the sheet with a `.selectionChanged()` haptic
278
+
279
+ **Onboarding Hero**
280
+ - Full-screen `#F8F4ED` cream canvas
281
+ - 80pt asterisk-star logomark centered, `#D97757`
282
+ - "Hi, I'm Claude" in Tiempos Headline 32pt Semibold `#2D2520` centered, 24pt below the logomark
283
+ - Subline: "An AI assistant by Anthropic." in Tiempos Text 16pt `#5A4F44` centered
284
+ - Primary CTA: "Start a conversation" — Ink Pill at the bottom
285
+
286
+ ## 5. Layout Principles
287
+
288
+ ### Spacing System
289
+ - Base unit: 4pt
290
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 80
291
+ - Standard horizontal margin: 20pt on iPhone, 32pt on iPad
292
+ - Vertical gap between conversation turns: 32pt (with the faint divider centered)
293
+ - Generous internal padding: 16pt inside code blocks and artifact cards
294
+
295
+ ### Grid & Container
296
+ - Content width: full minus 20pt margins on iPhone
297
+ - On iPad: max content width 720pt centered with side margins, so the prose stays readable
298
+ - Sidebar: 260pt fixed width on iPad; full-screen modal on iPhone
299
+ - Artifact pane on iPad: 40% screen width by default, draggable to 30-60%
300
+
301
+ ### Whitespace Philosophy
302
+ - **The chat is a long-form essay**: Claude's responses can be hundreds of lines — the spacing has to accommodate reading, not scanning
303
+ - **Generous between turns**: 32pt gap with a faint divider; user pills and assistant flows are visually distinct
304
+ - **Tight inside the assistant message**: standard 1.55x line-height inside Tiempos body; headings get +12pt above and +4pt below; lists get 8pt between items
305
+ - **Margin-driven, not divider-driven**: Claude rarely uses heavy dividers; whitespace and type-weight differentiate sections
306
+
307
+ ### Border Radius Scale
308
+ - Square (0pt): rarely used — only on hairline rules
309
+ - Small (4pt): inline code, tags
310
+ - Medium (10pt): settings rows, action buttons, code-block badges
311
+ - Standard (12pt): code blocks, artifact cards, "+ New chat" button
312
+ - Soft (16pt): model chip
313
+ - Large (18pt): user message pills
314
+ - XL (20pt): chat input field
315
+ - Capsule (24pt): primary pills, CTAs
316
+ - Sheet (24pt top corners): bottom sheets, modals
317
+ - Circle (50%): send button, asterisk-star avatar
318
+
319
+ ## 6. Depth & Elevation
320
+
321
+ | Level | Treatment | Use |
322
+ |-------|-----------|-----|
323
+ | Flat (Level 0) | No shadow | Canvas, assistant message blocks, dividers |
324
+ | Subtle (Level 1) | `rgba(40, 30, 20, 0.04) 0 1px 2px` | User message pills, action buttons on hover |
325
+ | Card (Level 2) | `rgba(40, 30, 20, 0.06) 0 2px 8px` | Artifact cards, code blocks (light theme) |
326
+ | Floating (Level 3) | `rgba(40, 30, 20, 0.10) 0 4px 16px` | Model picker chip on press, sidebar shadow |
327
+ | Overlay (Level 4) | `rgba(40, 30, 20, 0.14) 0 8px 24px` | Bottom sheets, model picker sheet |
328
+ | Sheet (Level 5) | `rgba(40, 30, 20, 0.18) 0 -12px 32px` | Full-screen modals (settings, artifact viewer) |
329
+
330
+ **Shadow Philosophy**: Claude's shadows use a warm base color (`rgba(40, 30, 20, x)`) so they harmonize with the cream canvas. The app is largely flat — the conversation surface is intentionally without elevation because the typography is the visual interest. Only the artifact cards, code blocks, and sheets get any shadow at all; everything else is differentiated by surface tone (`#F8F4ED` vs `#FBF9F4` vs `#F0EAE0`).
331
+
332
+ ### Motion
333
+ - **Send tap**: 40pt circle scales 1.0 → 0.94 → 1.0 over 200ms, `.impactOccurred(.medium)` haptic, then the user message pill slides up from the input area in 300ms ease-out
334
+ - **Streaming text appearance**: tokens animate in with a 80ms fade-in per word — no typewriter character-by-character; word-by-word for readability
335
+ - **Streaming cursor blink**: 600ms interval (300ms on / 300ms off); pauses during token arrival
336
+ - **Artifact card expand**: shared-element 400ms spring — the inline card morphs into the full-screen modal (or side-pane on iPad)
337
+ - **Model picker open**: bottom sheet rises 300ms ease-out; the active model row is highlighted on entry
338
+ - **"Thinking…" pulse**: asterisk-star scales 1.0 → 1.15 → 1.0 every 1200ms; cubic-bezier ease
339
+ - **New chat reveal**: when "+ New chat" is tapped, the conversation list collapses left and the empty-state onboarding fades in over 250ms
340
+ - **Copy confirmation**: button icon morphs `doc.on.doc` → `checkmark` over 150ms; "Copied" toast slides up from the bottom over 200ms and dismisses after 1200ms
341
+ - **Sidebar slide (iPhone)**: 350ms ease with a 0 → 1 dim overlay on the chat content; swipe-to-dismiss responsive
342
+
343
+ ## 7. Do's and Don'ts
344
+
345
+ ### Do
346
+ - Use the cream paper canvas (`#F8F4ED`) on every chat screen — it's the most recognizable Claude surface
347
+ - Render Claude's responses in Tiempos serif and the user's messages in Styrene/Inter sans — the typographic role-asymmetry is the brand
348
+ - Reserve Claude Orange (`#D97757`) for the Send button, active model chip, asterisk-star logomark, streaming cursor, and links inside responses
349
+ - Render the asterisk-star logomark in Claude Orange — never in any other color
350
+ - Make assistant messages flat — no bubble container; just type flowing across the canvas with a 16pt logomark avatar leading
351
+ - Use the user message pill (Surface Warm 1) — a soft pill, NOT a bubble with a tail
352
+ - Render code blocks on warm dark `#1F1B16` — never on blue-tinted dark
353
+ - Use the warm syntax palette — orange keywords, sage strings, gold numbers, periwinkle functions
354
+ - Use 1.55x line-height on assistant body text — Claude is essayist, generous leading is non-negotiable
355
+ - Stream responses word-by-word, not character-by-character — readability over typewriter drama
356
+ - Show the orange streaming cursor at the trailing edge of Claude's text while generating
357
+ - Use Ink `#2D2520` for primary text — never `#000000`; the warmth is the brand
358
+
359
+ ### Don't
360
+ - Don't use a chat bubble with a tail for either the user or the assistant — Claude's chat is flatter and more documentary
361
+ - Don't render Claude's responses in a sans-serif font — Tiempos is the brand's most important typographic decision
362
+ - Don't use Claude Orange for body text, headings, or section dividers — it's a verb, not a color
363
+ - Don't replace the asterisk-star logomark with a generic AI sparkle or a stylized "C" — the 6-point asterisk is the brand mark
364
+ - Don't put a heavy glass blur over the chat content — Anthropic's design is restrained, no glassmorphism on content
365
+ - Don't use pure black `#000000` for body text on cream — `#2D2520` warm ink is the correct value
366
+ - Don't render code blocks on blue-tinted dark surfaces — Claude's code surface is warm dark
367
+ - Don't animate streaming text character-by-character — word-by-word is the correct pace
368
+ - Don't add bottom tab bars — Claude is a single-purpose chat with sidebar navigation
369
+ - Don't blue-tint the dark mode — Claude's dark canvas (`#1F1B16`) is warm, slightly orange-undertoned
370
+ - Don't shrink the assistant body below 16pt — Claude is prose, not Slack
371
+ - Don't use cool greys anywhere — Claude's neutrals are all warm-tinted (cream, paper, sand, stone, ink)
372
+
373
+ ## 8. Responsive Behavior
374
+
375
+ ### Device Sizes
376
+ | Device | Width | Key Changes |
377
+ |--------|-------|-------------|
378
+ | iPhone SE (3rd gen) | 375pt | User pill max-width drops to 85%; code blocks shift to 14pt → 13pt body text for density |
379
+ | iPhone 13/14/15 | 390pt | Standard layout — 20pt margins, full-width chat |
380
+ | iPhone 15/16 Pro | 393pt | Dynamic Island respected; the 52pt header sits below status bar |
381
+ | iPhone 15/16 Pro Max | 430pt | Slightly larger code block padding (20pt vs 16pt); model chip gets extra breathing room |
382
+ | iPad | 768pt+ | Persistent 260pt sidebar; chat content max-width 720pt centered; artifact pane opens at 40% width on the right |
383
+ | iPad Pro 12.9 | 1024pt+ | Same 720pt max-width on chat — readability does not benefit from wider columns; artifact pane can grow to 50% |
384
+
385
+ ### Dynamic Type
386
+ - Assistant body, all headings, user message text, list items, blockquotes: full scale
387
+ - Model chip, timestamps, "Press ⏎ to send" hint: fixed (layout-sensitive)
388
+ - Code block font: scales with reduced upper bound (max 18pt) to prevent overflow
389
+
390
+ ### Orientation
391
+ - All chat surfaces: portrait + landscape supported
392
+ - On landscape iPhone: sidebar opens as a panel covering 60% of the width, not full-screen
393
+ - On iPad: persistent sidebar in both orientations; artifact pane re-flows
394
+
395
+ ### Touch Targets
396
+ - Send circle: 40pt button on a 56pt hit area
397
+ - Model chip: 32pt tall, 44pt hit area
398
+ - Sidebar conversation rows: full-row 64pt tap target
399
+ - Copy button on code blocks: 32pt with a 44pt hit area
400
+
401
+ ### Safe Area Handling
402
+ - Top: safe area honored — the 52pt header sits below status bar / Dynamic Island
403
+ - Bottom: input bar pins above home indicator with full safe area inset
404
+ - Sides: 20pt margins on iPhone; 32pt on iPad
405
+
406
+ ## 9. Quick Reference Cheat Sheet
407
+
408
+ ### Quick Color Reference
409
+ - Canvas (Cream Paper): `#F8F4ED`
410
+ - Paper White (input fill): `#FBF9F4`
411
+ - Surface Warm 1 (user pill): `#F0EAE0`
412
+ - Surface Warm 2 (chip fills): `#E8E0D2`
413
+ - Divider Sand: `#DDD2BD`
414
+ - Ink (primary text): `#2D2520`
415
+ - Graphite Warm (secondary text): `#5A4F44`
416
+ - Stone Warm (tertiary): `#8A7E72`
417
+ - Bone Warm (disabled): `#B5AB9E`
418
+ - Claude Orange (signature): `#D97757`
419
+ - Orange Pressed: `#BE6242`
420
+ - Orange Soft (active chip): `#F2DDD0`
421
+ - Code Background: `#1F1B16`
422
+ - Code keyword: `#D97757` (Claude Orange)
423
+ - Code string: `#7FB069` (sage)
424
+ - Code number: `#E8B96F` (gold)
425
+ - Code function: `#9DA4F2` (periwinkle)
426
+ - Dark canvas: `#1F1B16`
427
+ - Error: `#C16654`
428
+ - Success: `#6B9D5E`
429
+
430
+ ### Example Component Prompts
431
+ - "Create a SwiftUI Claude assistant message block: a full-width flow with a 16pt asterisk-star logomark in `#D97757` Claude Orange at the leading edge, followed by a 'Claude · Claude Opus 4' sender label in Styrene 13pt Medium `#5A4F44`. Below the header strip, the body content renders as Tiempos Text 16pt Regular `#2D2520` with 1.55 line-height. Inside the body, full markdown rendering: H1 Tiempos Headline 24pt Semibold, H2 20pt, H3 17pt, all in `#2D2520`. Lists get 8pt gap between items. Inline code `code` uses JetBrains Mono 14pt Medium on `#F0EAE0` (Surface Warm 1) background with 4pt corner radius. A streaming orange cursor (8pt × 18pt `#D97757`) appears at the trailing edge while the model is generating, blinking 600ms on/off. No container background, no chat bubble — just type flowing across the cream canvas."
432
+ - "Build the Claude chat input bar: pinned above the keyboard, full-width minus 20pt margins. `#FBF9F4` Paper White background, 1pt `#DDD2BD` border default and 1.5pt `#D97757` border on focus. 20pt corner radius — capsule when single-line, softens slightly when grown. Min height 52pt, auto-grows to 200pt then becomes scrollable. Placeholder 'Reply to Claude…' in Styrene A 16pt Regular `#8A7E72`. Trailing the input: a 28pt paperclip-plus button leading a 40pt send circle. Send circle background `#D97757` Claude Orange when input has text, `#E8E0D2` Surface Warm 2 when empty; the 16pt arrow-up glyph inside is `#FBF9F4` when active, `#8A7E72` when disabled. Press the send circle: scale 0.94 → 1.0, `.impactOccurred(.medium)` haptic, then the user message pill slides up from the input area."
433
+ - "Design the Claude code block: 12pt corner radius, `#1F1B16` warm dark canvas background. A header strip at the top with 1pt `#3A332C` bottom divider — language name 'swift' in JetBrains Mono 11pt `#8A7E72` left-aligned, and a 32pt copy button right-aligned with `doc.on.doc` 14pt glyph in `#E8E0D2`. Body content: JetBrains Mono 14pt Regular `#E8E0D2` default text, with syntax highlighting in the Claude warm palette — keywords (`func`, `let`, `var`, `return`) in `#D97757` Claude Orange, strings in `#7FB069` sage, numbers in `#E8B96F` warm gold, function names in `#9DA4F2` soft periwinkle, comments in `#8A7E72`. 16pt padding all around. Horizontal scroll for long lines, no wrap. On copy: the icon morphs to `checkmark` over 150ms and a 'Copied' toast slides up from the bottom, dismissing after 1200ms."
434
+ - "Create the Claude model picker sheet: bottom sheet with 24pt top corner radius, `#FBF9F4` Paper White background. List of model rows — each 64pt tall, full width, with 20pt horizontal padding. Each row leads with a 24pt asterisk-star glyph in `#D97757` (Claude Orange) for active/available, or `#B5AB9E` (Bone Warm) for unavailable. Center column: model name in Styrene A 16pt Medium `#2D2520` ('Claude Opus 4.5'), sub-line in Styrene A 13pt Regular `#5A4F44` ('Most intelligent'). Trailing: a 12pt `#D97757` Claude Orange filled circle if this row is the currently selected model. 1pt `#F0EAE0` divider between rows. Tap selects and dismisses the sheet with a `.selectionChanged()` haptic. Background dim 0.4 opacity on the chat content beneath."
435
+ - "Build the Claude streaming response cursor: a small caret that appears at the trailing edge of Claude's response while the model is generating. Dimensions 8pt × 18pt, `#D97757` Claude Orange fill, 1pt corner radius. Animation: blinks at 600ms interval — 300ms visible, 300ms hidden. When a new token arrives the cursor pauses (stays visible) and only resumes blinking after a 200ms idle. Disappears when the response is complete and gets replaced by the action button row ('Continue', 'Regenerate', 'Copy'). The cursor sits inline with the text — descenders of Tiempos Text align with the bottom of the cursor."
436
+
437
+ ### Iteration Guide
438
+ 1. Canvas is `#F8F4ED` Cream Paper — the most recognizable Claude surface
439
+ 2. Claude Orange `#D97757` is sacred — Send button, active model chip, asterisk-star avatar, streaming cursor, links only
440
+ 3. Assistant body in Tiempos serif at 16pt with 1.55 line-height; user messages in Styrene/Inter sans — the typographic asymmetry is the brand
441
+ 4. Ink `#2D2520` is warm near-black for primary text, never `#000000`
442
+ 5. Code blocks live on warm dark `#1F1B16`, never blue — syntax uses orange/sage/gold/periwinkle
443
+ 6. Asterisk-star logomark in `#D97757` — never any other color, never replaced with a sparkle or a "C"
444
+ 7. No chat bubbles with tails — user pill (soft) + assistant flat flow
445
+ 8. Streaming is word-by-word; cursor blinks 600ms; "Thinking…" pulses on extended-thinking models
446
+ 9. Sidebar for conversation history (260pt iPad / full-screen iPhone); no bottom tab bar
447
+ 10. Dark mode is warm `#1F1B16` canvas with `#E8E0D2` cream text; Claude Orange unchanged