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,466 @@
1
+ # Design System Inspiration of ChatGPT (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ ChatGPT's iOS app is a master class in deliberate minimalism. The canvas is pure white (`#FFFFFF`) in light mode or near-black (`#212121`) in dark — there is almost no chrome, no color, no decoration. The design choice maps directly onto the product: ChatGPT is a conversation with a model, and the UI recedes so the *text itself* is the interface. Open a new chat and the screen is almost empty — a centered compose field at the bottom, a subtle "ChatGPT" model-selector chip at the top-left, and a "New chat" icon top-right. Type a message and everything scrolls upward as the conversation builds, with your messages on the right in soft-gray bubbles and the model's responses inline without a bubble — just plain text flowing down the page like a document.
6
+
7
+ The 2024 redesign (led in part by the Sam Altman-era direction) pushed even further toward true-black/true-white extremes, stripping out the legacy ChatGPT Green (`#10A37F`) that was once the accent. Today's palette is almost monochromatic: a deep black `#0D0D0D` for primary text in light mode, `#ECECEC` in dark, with a soft gray `#F7F7F8` for the user's message bubble background (light) / `#2F2F2F` (dark). The only color accent is a subtle blue (`#2A7FFF`) reserved for inline links and the occasional interactive chip. The assistant's response is just flowing prose — markdown-rendered with proper heading sizes, code blocks in a slightly tinted surface, and tables rendered cleanly, but no bubble framing around the text.
8
+
9
+ The identity-defining moment is the **send button** — a black circle with a white up-arrow (or white circle with black arrow in dark mode), 32pt diameter, sitting at the right end of the compose field. When the compose field is empty, it's replaced by a row of icons (paperclip for attachments, globe for web search, microphone for voice). When you type, those icons collapse and the send button appears. Press-and-hold the microphone to record voice; release to send as audio or transcription. There's also the unmistakable **voice mode** — tap the voice icon and the whole screen fades to a full-screen pulsing blue gradient sphere that listens and responds in natural voice.
10
+
11
+ Typography is **Söhne** — a proprietary, commercially-licensed face by Klim Type Foundry (the one used on openai.com). On iOS, ChatGPT falls back to Inter for some surfaces and to SF Pro (system) when neither is bundled. Söhne is a neo-grotesque that reads like Helvetica's more sophisticated cousin — crisper, more contemporary, with a touch of humanism. Hierarchy is minimal: chat messages at 16pt weight 400, inline code at 14pt Menlo, and markdown headings rendered at progressively larger sizes (H1 24pt, H2 20pt, H3 17pt). There are no UI headlines because the whole app is a document view.
12
+
13
+ **Key Characteristics:**
14
+ - Pure white canvas (`#FFFFFF`) light / near-black (`#212121`) dark — minimum UI, maximum content
15
+ - No color accent — the post-2024 design is monochromatic, with blue (`#2A7FFF`) only on inline links
16
+ - User messages: soft-gray bubble (`#F7F7F8` light / `#2F2F2F` dark), right-aligned, rounded corners
17
+ - Assistant messages: NO bubble — plain text flowing inline with markdown rendering (code, tables, LaTeX, lists)
18
+ - Circular send button — black-on-white light / white-on-black dark — with up-arrow icon, 32pt
19
+ - Voice mode: full-screen pulsing blue gradient sphere — a meditative voice UI moment
20
+ - Model selector chip (`GPT-4o`, `GPT-4`, `GPT-5`) top-left — pill-shaped with leading model icon
21
+ - Sidebar: conversation history auto-titled, grouped by "Today / Yesterday / Previous 7 Days / Previous 30 Days"
22
+ - Compose field icon row: paperclip (attach), globe (web search), microphone (voice), send
23
+ - Thumbs up/down feedback icons below each assistant response
24
+ - Typing indicator: 3-dot pulse animation
25
+ - Söhne (or Inter / SF Pro fallback) — neo-grotesque, 400 / 500 / 600 weights, compact
26
+ - Code blocks with syntax highlighting + copy button, language-labeled
27
+
28
+ ## 2. Color Palette & Roles
29
+
30
+ ### Primary (Monochromatic)
31
+ - **Black** (`#0D0D0D`): Primary text on light mode, pure black feeling but softer than `#000`.
32
+ - **White** (`#FFFFFF`): Canvas light / pressed inverse.
33
+ - **Dark Canvas** (`#212121`): Primary canvas in dark mode — charcoal-black, NOT true black.
34
+ - **Dark Text Primary** (`#ECECEC`): Body text on dark.
35
+
36
+ ### Send Button
37
+ - **Send Light** (`#0D0D0D`): Black circle in light mode.
38
+ - **Send Dark** (`#FFFFFF`): White circle in dark mode.
39
+ - **Send Icon Contrast**: Always the inverse of the circle color.
40
+ - **Send Disabled** (`#CCCCCC` light / `#4D4D4D` dark): When compose is empty.
41
+
42
+ ### User Message Bubble
43
+ - **User Bubble Light** (`#F7F7F8`): Soft gray, barely distinguishable from canvas.
44
+ - **User Bubble Dark** (`#2F2F2F`): Mid-dark gray on dark mode.
45
+ - **User Bubble Text** (`#0D0D0D` / `#ECECEC`): Same as body text.
46
+
47
+ ### Assistant
48
+ - **Assistant Text** (`#0D0D0D` / `#ECECEC`): Same as body text — no bubble, no box.
49
+ - **Assistant Inline Code Bg** (`#F0F0F0` / `#424242`): Inline `code` chip background.
50
+ - **Code Block Bg** (`#F7F7F8` / `#1E1E1E`): Full code block background.
51
+ - **Code Block Border** (`#E5E5E5` / `#363636`): 1pt border.
52
+
53
+ ### Canvas & Surfaces (Light)
54
+ - **Canvas** (`#FFFFFF`)
55
+ - **Sidebar Bg** (`#F9F9F9`): Sidebar background — slightly darker than canvas.
56
+ - **Sidebar Active** (`#ECECEC`): Selected conversation row.
57
+ - **Sidebar Hover** (`#F0F0F0`)
58
+ - **Divider** (`#E5E5E5`)
59
+
60
+ ### Canvas & Surfaces (Dark)
61
+ - **Canvas** (`#212121`)
62
+ - **Sidebar Bg** (`#181818`): Darker than canvas — signature treatment.
63
+ - **Sidebar Active** (`#2F2F2F`)
64
+ - **Sidebar Hover** (`#252525`)
65
+ - **Divider** (`#424242`)
66
+
67
+ ### Text Hierarchy
68
+ - **Text Primary Light** (`#0D0D0D`)
69
+ - **Text Secondary Light** (`#676767`): Placeholder, timestamps, meta
70
+ - **Text Tertiary Light** (`#8E8E8E`): Disabled, very low-emphasis
71
+ - **Text Primary Dark** (`#ECECEC`)
72
+ - **Text Secondary Dark** (`#B4B4B4`)
73
+ - **Text Tertiary Dark** (`#707070`)
74
+
75
+ ### Semantic
76
+ - **Link Blue** (`#2A7FFF`): Inline hyperlinks — subtle blue, very minimal usage
77
+ - **Error Red** (`#E53E3E`): Error toast, "message failed" state
78
+ - **Warning Orange** (`#D97706`): Content flag warnings, usage limit warnings
79
+ - **Success Green** (`#10A37F`): Historically ChatGPT's accent — now mostly retired, appears in older UI and the "ChatGPT" wordmark logotype
80
+ - **Voice Mode Sphere** (`#3B82F6` → `#60A5FA` → `#93C5FD`): The voice-mode full-screen pulsing sphere uses a blue gradient that animates organically
81
+
82
+ ### Feedback & Interactions
83
+ - **Regenerate Bg** (`#F0F0F0` / `#363636`): Button background behind regenerate / thumbs-up / thumbs-down icons
84
+ - **Copy Button Bg** (`#F0F0F0`): "Copy" button on code blocks
85
+ - **Stop Button** (`#676767` → `#0D0D0D` on press): The "stop generating" button during streaming
86
+
87
+ ## 3. Typography Rules
88
+
89
+ ### Font Family
90
+ - **Primary (openai.com + app)**: `Söhne` (proprietary by Klim Type Foundry, licensed) — neo-grotesque, crisp, contemporary. Used on openai.com and in-app where licensed.
91
+ - **Fallback (web / some surfaces)**: `Inter` (SIL OFL, by Rasmus Andersson) — close visual substitute
92
+ - **System Fallback (iOS)**: `-apple-system, SF Pro Text, SF Pro Display` — iOS system default
93
+ - **Monospace (code)**: `Menlo` / `SF Mono` / `IBM Plex Mono` — all acceptable
94
+ - **Fallback Stack**: `"Söhne", -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Helvetica, Arial, sans-serif`
95
+
96
+ ### Hierarchy
97
+
98
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
99
+ |------|------|------|--------|-------------|----------------|-------|
100
+ | Chat Body (User/Assistant) | Söhne | 16pt | 400 | 1.5 | 0pt | Main message text |
101
+ | Chat Body (Compact) | Söhne | 15pt | 400 | 1.45 | 0pt | User setting: "Compact" density |
102
+ | Markdown H1 | Söhne | 24pt | 600 | 1.25 | -0.2pt | `# heading` rendered in assistant message |
103
+ | Markdown H2 | Söhne | 20pt | 600 | 1.3 | -0.15pt | `## heading` |
104
+ | Markdown H3 | Söhne | 17pt | 600 | 1.35 | -0.1pt | `### heading` |
105
+ | Markdown H4+ | Söhne | 16pt | 600 | 1.4 | 0pt | `#### heading` |
106
+ | Inline Code | Menlo | 14pt | 400 | 1.3 | 0pt | `\`code\`` — in colored chip |
107
+ | Code Block | Menlo | 13pt | 400 | 1.5 | 0pt | Fenced ```` code block |
108
+ | Model Selector Chip | Söhne | 14pt | 500 | 1.0 | 0pt | "GPT-4o" at top of chat |
109
+ | New Chat Title (auto-generated) | Söhne | 15pt | 500 | 1.3 | 0pt | Sidebar conversation titles |
110
+ | Sidebar Section | Söhne | 12pt | 500 | 1.0 | 0.2pt | "Today", "Yesterday", "Previous 7 Days" |
111
+ | Button | Söhne | 14pt | 500 | 1.0 | 0pt | Regenerate / Share / Copy |
112
+ | Meta (small) | Söhne | 13pt | 400 | 1.2 | 0pt | Timestamps, "Used 2.3k tokens" |
113
+ | Compose Placeholder | Söhne | 16pt | 400 | 1.4 | 0pt | "Message ChatGPT..." |
114
+ | Tab Label (rarely used) | Söhne | 11pt | 500 | 1.0 | 0.1pt | — |
115
+ | Link Text | Söhne | 16pt | 400 | 1.5 | 0pt | Blue `#2A7FFF`, underlined on hover |
116
+
117
+ ### Principles
118
+ - **Document rhythm, not UI rhythm**: typography follows editorial conventions — body paragraphs at 1.5 line-height, markdown headings at progressively larger sizes
119
+ - **Weight concentrated at 400 / 500 / 600**: regular body, medium for chips/buttons, semibold for headings — no bold, no black, no thin
120
+ - **Söhne / Inter / SF Pro are all acceptable** — each renders a slightly different feel; the system should gracefully fall back in order
121
+ - **Markdown is first-class**: the assistant's response is rendered markdown (headings, lists, bold, italic, inline code, code blocks, tables, LaTeX math, links, images) — this is ChatGPT's response content
122
+ - **Dynamic Type first-class**: chat body, markdown headings scale; model chip, sidebar labels, timestamps stay fixed
123
+ - **Code fonts stay monospace**: inline code and code blocks always in Menlo/SF Mono/IBM Plex — never substitute
124
+
125
+ ## 4. Component Stylings
126
+
127
+ ### Buttons
128
+
129
+ **Send Button**
130
+ The single most recognizable ChatGPT component.
131
+ - Shape: Circle, 32pt diameter
132
+ - Background: `#0D0D0D` light / `#FFFFFF` dark (when enabled with typed text)
133
+ - Icon: SF Symbol `arrow.up` or `arrow.up.circle.fill`, 16pt, color inverse (`#FFFFFF` on black light / `#0D0D0D` on white dark)
134
+ - Position: right end of compose field
135
+ - Enabled when user has typed text; disabled gray `#CCCCCC` light / `#4D4D4D` dark when empty
136
+ - Pressed: scale 0.94 + haptic medium
137
+ - During generation: replaced by a square "stop" icon in same circle
138
+
139
+ **Voice Button (Microphone)**
140
+ - Shape: Circle, 32pt diameter (matches send button visual)
141
+ - Background: transparent with 1pt `#E5E5E5` border / 1pt `#424242` dark border
142
+ - Icon: SF Symbol `mic.fill` or `waveform`, 18pt, `#0D0D0D` light / `#ECECEC` dark
143
+ - Tap: enters full-screen voice mode
144
+ - Long-press: start recording; release to send audio message
145
+
146
+ **Action Icon Row (Compose bar, when empty)**
147
+ - Horizontal row of icons inside the compose field, appearing when compose is empty (replaces send button until user types)
148
+ - Icons (left to right): paperclip (attach), globe (web search toggle), microphone (voice)
149
+ - 20pt glyph, 40pt hit area, `#676767` / `#B4B4B4` dark
150
+ - Pressed: background shift to `#F0F0F0` / `#2F2F2F` dark (rounded 8pt)
151
+
152
+ **Regenerate / Copy / Thumbs Row (below assistant response)**
153
+ - Horizontal row of 4 icons: regenerate (arrow.triangle.2.circlepath), copy (doc.on.doc), thumbs-up (hand.thumbsup), thumbs-down (hand.thumbsdown)
154
+ - Each 20pt glyph in 32pt circular hit area
155
+ - Default: `#676767`
156
+ - Hover / active: background `#F0F0F0` circle appears, icon `#0D0D0D`
157
+ - Only visible on hover (desktop) or on tap of the message (mobile)
158
+
159
+ **Model Selector Chip (top-left of chat)**
160
+ - Shape: Pill, 500pt corner radius
161
+ - Background: transparent with 1pt `#E5E5E5` / `#424242` dark border (on hover/tap, becomes `#F0F0F0` fill)
162
+ - Leading: small model icon (abstract sparkle or geometric shape, 16pt)
163
+ - Text: "GPT-4o" / "GPT-4" / "GPT-5" / "o3" — Söhne 14pt w500
164
+ - Trailing chevron.down 12pt
165
+ - Padding: 6pt vertical, 10pt horizontal
166
+ - Tap: opens bottom sheet with model picker (list of available models + descriptions)
167
+
168
+ **Text Link Button ("Upgrade to Plus" etc.)**
169
+ - Color: `#2A7FFF` (link blue)
170
+ - Font: Söhne 14pt weight 500
171
+ - Optional underline on hover
172
+
173
+ ### Conversation Atoms
174
+
175
+ **User Message Bubble**
176
+ - Shape: Rounded corners (18pt on top-right, 18pt top-left, 18pt bottom-left, 4pt bottom-right — "chat bubble" with flat pointing-corner on speaker side)
177
+ - Background: `#F7F7F8` light / `#2F2F2F` dark
178
+ - Text: Söhne 16pt w400 `#0D0D0D` / `#ECECEC`
179
+ - Padding: 10pt vertical, 14pt horizontal
180
+ - Align: right (trailing), max-width 80% of container width
181
+ - Attachment preview (if any): above the text, 72pt square tile with file icon + filename
182
+
183
+ **Assistant Message (no bubble)**
184
+ - Structure: plain markdown-rendered content flowing inline
185
+ - Leading small avatar icon (optional, 24pt — the ChatGPT sparkle logo)
186
+ - Text: Söhne 16pt w400 `#0D0D0D` / `#ECECEC`
187
+ - Line height: 1.5
188
+ - Align: left (leading), max-width: full container
189
+ - Below content: interaction row (regenerate / copy / thumbs)
190
+
191
+ **Inline Code Chip**
192
+ - Background: `#F0F0F0` / `#424242`
193
+ - Font: Menlo 14pt
194
+ - Padding: 2pt vertical, 4pt horizontal
195
+ - Corner radius: 4pt
196
+
197
+ **Code Block**
198
+ - Background: `#F7F7F8` / `#1E1E1E`
199
+ - Border: 1pt `#E5E5E5` / `#363636`
200
+ - Corner radius: 8pt
201
+ - Top strip (40pt tall): language label (e.g., "swift", "python") in Söhne 12pt w500 `#676767` + trailing "Copy" button
202
+ - Body: syntax-highlighted code in Menlo 13pt, scrollable horizontally
203
+ - Padding: 12pt
204
+
205
+ **Table Rendering**
206
+ - Full-width within message
207
+ - Cells: 1pt `#E5E5E5` borders all around
208
+ - Header row: bold Söhne 14pt w600, bg `#F7F7F8`
209
+ - Body rows: Söhne 14pt w400
210
+ - Padding: 8pt per cell
211
+
212
+ **LaTeX / Math Rendering**
213
+ - Inline: `$x^2 + y^2$` renders via MathJax/KaTeX, inline with text
214
+ - Block: `$$...$$` centered on own line, 120% font size
215
+
216
+ ### Sidebar
217
+
218
+ **Conversation List Item**
219
+ - Height: 40pt
220
+ - Padding: 8pt vertical, 12pt horizontal
221
+ - Background: transparent; hover `#F0F0F0` / `#252525`; active `#ECECEC` / `#2F2F2F`
222
+ - Text: auto-generated conversation title (e.g., "React Hooks Explained") in Söhne 15pt w500 `#0D0D0D` / `#ECECEC`, 1-line clamp with ellipsis
223
+ - Trailing (on hover): ellipsis menu `⋯` — opens Rename / Share / Delete / Archive
224
+ - Long-press on mobile: opens same menu
225
+
226
+ **Sidebar Section Header**
227
+ - Text: "Today", "Yesterday", "Previous 7 Days", "Previous 30 Days", "June 2024" (month-grouped for older)
228
+ - Font: Söhne 12pt w500 `#676767` / `#B4B4B4`
229
+ - Padding: 16pt top, 4pt bottom, 12pt horizontal
230
+
231
+ **Sidebar Top Area**
232
+ - "New Chat" button at top — 44pt tall, full-width minus 12pt insets, rounded 8pt
233
+ - Leading icon `square.and.pencil` + label "New chat" Söhne 14pt w500
234
+ - Active: background `#0D0D0D` text `#FFFFFF` (or dark mode `#FFFFFF` text `#0D0D0D`)
235
+
236
+ **Sidebar Search**
237
+ - Below "New Chat" button: 36pt tall search field, 8pt rounded
238
+ - Placeholder "Search chats"
239
+
240
+ **Sidebar User Section (bottom)**
241
+ - User avatar (32pt circle) + name + Plus/Team badge + cog icon
242
+ - Tap: opens settings
243
+
244
+ ### Top Nav (Chat View)
245
+
246
+ - Height: 52pt + safe area
247
+ - Background: transparent (or slightly tinted on scroll)
248
+ - Leading: hamburger / sidebar toggle (24pt) OR workspace avatar
249
+ - Center-leading: model selector chip (see above)
250
+ - Trailing: "New chat" icon (`square.and.pencil`), 24pt
251
+
252
+ ### Input Fields
253
+
254
+ **Message Composer (docked bottom)**
255
+ - Background: `#FFFFFF` / `#212121` dark (same as canvas)
256
+ - Border: 1pt `#E5E5E5` / `#424242` top — just on top edge, or an entire rounded-rectangle container
257
+ - Padding: 8pt horizontal, 8pt vertical
258
+ - Shape: full-width rounded rectangle, 24pt corner radius (pill-like on iPhone), or full-bleed with just top border
259
+ - Auto-growing text area: min 48pt height, max 144pt (~6 lines) then scrolls
260
+ - Leading: `+` or paperclip icon for attachments (opens sheet: Photos, Camera, Files, Google Drive)
261
+ - Trailing: when empty — globe icon + microphone icon; when has text — send button
262
+
263
+ ### Voice Mode (Full-screen)
264
+
265
+ - Full-screen overlay, transparent dimming on entry
266
+ - Center: pulsing blue gradient sphere (3B82F6 → 60A5FA → 93C5FD) about 280pt diameter
267
+ - Sphere animates organically (Perlin-noise-driven deformation + scale pulse)
268
+ - Waveform visualization overlay on sphere during user speech
269
+ - Background: the gradient canvas takes over the screen
270
+ - Controls: "Mute" toggle bottom-left, "End" (X) button bottom-right, "Swap" to change voice
271
+ - Assistant speech: subtle text overlay at bottom while speaking ("ChatGPT is speaking..." small white)
272
+ - End: taps X, returns to chat with a new entry "[voice conversation]" added to the history
273
+
274
+ ### Distinctive Components
275
+
276
+ **Send Button (Black/White Circle)**
277
+ The signature — 32pt circle, black-on-white or white-on-black inverse, single up-arrow glyph. Universally recognizable.
278
+
279
+ **Voice Mode Sphere**
280
+ A mesmerizing full-screen blue gradient sphere that pulses and morphs as you speak. It's the product's most-recognized animated moment.
281
+
282
+ **Model Selector Chip**
283
+ "GPT-4o", "GPT-5" chip top-left — tap opens a sheet with all models.
284
+
285
+ **Regenerate + Feedback Icons**
286
+ After every assistant response: regenerate / copy / 👍 / 👎 — a 4-icon row that signals "this is an AI response, you can refine or rate it".
287
+
288
+ **Typing Indicator**
289
+ 3 dots pulsing in sequence while the model is generating. Below the last message while streaming, then fades when text appears.
290
+
291
+ **Code Block with Copy**
292
+ Every fenced code block has a top strip with the language label + a "Copy" button on the right. Copy gives a brief "Copied!" toast.
293
+
294
+ **Attachment Preview in User Bubble**
295
+ When attaching a file/image, the attachment shows as a small tile above the text in the user bubble (72pt square with file icon or image thumbnail + truncated filename).
296
+
297
+ **Auto-titled Conversations**
298
+ Every new chat gets an auto-generated 3-5 word title after the first exchange ("React Hooks Explained", "Django ORM Help"), shown in the sidebar.
299
+
300
+ ## 5. Layout Principles
301
+
302
+ ### Spacing System
303
+ - Base unit: 4pt
304
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 56, 72
305
+ - Message vertical gap: 16pt between turns
306
+ - User bubble max-width: 80% of container
307
+ - Assistant response: full-width
308
+ - Sidebar conversation item: 40pt tall, 12pt horizontal padding
309
+
310
+ ### Grid & Container
311
+ - iPhone: full-bleed chat with 16pt horizontal insets; composer docks at bottom with safe-area padding
312
+ - iPad: split-view — sidebar (260pt) + chat (centered, max-width 780pt); very generous centering for readability
313
+ - Message bubbles never span full width — the 80% max keeps conversation visually anchored to side
314
+
315
+ ### Whitespace Philosophy
316
+ - **Generous chat rhythm**: 16pt between turns, 1.5 line-height on body — a reading-first app
317
+ - **Minimal chrome**: only the model chip at top, the send button at bottom-right, and the sidebar when open
318
+ - **Centered at rest**: on an empty new chat, the compose field sits slightly below center with a small model-name + greeting ("Ready when you are" or "How can I help you today?")
319
+ - **Sidebar is secondary**: slides in but not always visible; the chat is primary
320
+
321
+ ### Border Radius Scale
322
+ - Square (0pt): Plain text (body, assistant response)
323
+ - Subtle (4pt): Inline code chips, inline attachment tiles
324
+ - Standard (8pt): Code blocks, tables, sidebar "New chat" button
325
+ - Comfortable (12pt): Sheets, model picker
326
+ - Bubble Corner (18pt on 3 corners + 4pt on pointer corner): User message bubble — asymmetric "chat bubble" rounding
327
+ - Large (24pt): Compose field wrapper on iPhone (nearly pill)
328
+ - Circle (50%): Send button, voice button, user avatar
329
+
330
+ ## 6. Depth & Elevation
331
+
332
+ ChatGPT is radically flat. The only shadows are on ephemeral UI.
333
+
334
+ | Level | Treatment | Use |
335
+ |-------|-----------|-----|
336
+ | Flat (Level 0) | No shadow | Messages, sidebar rows, code blocks, canvas |
337
+ | Floating (Level 1) | `rgba(0,0,0,0.08) 0 4px 12px` | Model picker sheet, share sheet, attachment sheet |
338
+ | Sheet (Level 2) | `rgba(0,0,0,0.16) 0 -4px 24px` | Bottom sheets (settings, model picker) |
339
+ | Modal Overlay | `rgba(0,0,0,0.5)` | Full-screen modals, voice mode backdrop |
340
+ | Voice Mode Sphere | Radial gradient + glow `rgba(59,130,246,0.4) blur 40` | The pulsing sphere glow |
341
+
342
+ **Shadow Philosophy**: ChatGPT treats shadows as functional, not decorative — they appear only where the "this is floating above, tap outside to dismiss" signal is needed. The chat itself is absolutely flat. Code blocks and tables are bordered (1pt), not shadowed. The voice-mode sphere is the dramatic exception — it glows with a radial blue gradient that extends beyond its edge.
343
+
344
+ ### Motion
345
+ - **Message send**: user bubble slides up from bottom with 250ms ease-out; send button pulses briefly (scale 0.9 → 1.0)
346
+ - **Typing indicator**: 3 dots pulse in sequence — each dot opacity 0.3 ↔ 1.0 over 600ms, staggered 200ms
347
+ - **Assistant streaming**: each token appears inline as it arrives (no animation — just character-by-character append)
348
+ - **Regenerate tap**: assistant response fades out 200ms, new response streams in
349
+ - **Voice mode entry**: scale from 0 → 1.0 with spring, opacity 0 → 1, 400ms; sphere starts pulsing immediately
350
+ - **Voice mode sphere**: continuous organic pulse — scale 0.95 ↔ 1.05 over 2s ease-in-out, with Perlin-noise deformation on SVG path
351
+ - **Sidebar slide**: edge-swipe 1:1 tracking; spring 250ms damping 0.8 on release
352
+ - **New chat transition**: existing chat fades out 150ms, empty state fades in 150ms
353
+ - **Copy button**: tap shows brief "Copied!" pill that fades in/out over 1s
354
+ - **Thumbs feedback**: tap fills icon + brief scale 1.0 → 1.15 → 1.0 spring + soft haptic
355
+ - **Haptics**: soft on send / copy / thumbs; medium on voice mode entry; success on long action completion
356
+
357
+ ## 7. Do's and Don'ts
358
+
359
+ ### Do
360
+ - Use pure white (`#FFFFFF`) as canvas light / charcoal-black (`#212121`) dark — NOT true black
361
+ - Make the send button a circle — black-on-white light, white-on-black dark, 32pt with up-arrow
362
+ - Keep the UI monochromatic — no brand accent beyond subtle blue (`#2A7FFF`) on links
363
+ - Give user messages a soft-gray bubble (`#F7F7F8`) — assistant messages get NO bubble
364
+ - Render markdown in assistant responses — code blocks, tables, LaTeX, headings all rendered cleanly
365
+ - Use Söhne / Inter / SF Pro in that fallback order
366
+ - Use Menlo / SF Mono for inline code chips and code blocks
367
+ - Place model selector chip top-left — pill with model name + leading icon + chevron
368
+ - Show thumbs up/down + regenerate + copy below every assistant response
369
+ - Use asymmetric bubble corners on user messages (18pt / 18pt / 18pt / 4pt — flat pointer corner on right)
370
+ - Make voice mode a full-screen pulsing blue gradient sphere — the most distinctive moment
371
+ - Auto-generate 3-5 word titles for conversations in the sidebar
372
+ - Group sidebar chats by time: "Today / Yesterday / Previous 7 Days / Previous 30 Days / Month Year"
373
+
374
+ ### Don't
375
+ - Don't use bubbles around assistant responses — plain inline text flow is the rule
376
+ - Don't use ChatGPT Green (`#10A37F`) — it's been mostly retired; keep the UI monochromatic
377
+ - Don't make the send button square or rectangular — it's a circle
378
+ - Don't use heavy shadows on content — ChatGPT is flat; shadows only on floating ephemeral UI
379
+ - Don't render markdown naively — code blocks need syntax highlighting + copy button
380
+ - Don't hardcode only SF Pro — fall back gracefully to Söhne > Inter > SF Pro
381
+ - Don't make the canvas pure black (`#000`) — use `#212121` on dark
382
+ - Don't show all sidebar chats as a flat list — group by time
383
+ - Don't animate text appearing — stream it character-by-character without motion
384
+ - Don't use a generic chat-app avatar placeholder — ChatGPT uses a small sparkle logo or none at all
385
+ - Don't omit the 4-icon feedback row (regenerate / copy / 👍 / 👎) — it's the AI-response signature
386
+ - Don't add a brand color to the compose field — pure monochrome
387
+
388
+ ## 8. Responsive Behavior
389
+
390
+ ### Device Sizes
391
+ | Device | Width | Key Changes |
392
+ |--------|-------|-------------|
393
+ | iPhone SE (3rd gen) | 375pt | Sidebar at 80% width when open; compose max-width 90% |
394
+ | iPhone 13/14/15 | 390pt | Standard layout |
395
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in top nav |
396
+ | iPhone 15/16 Pro Max | 430pt | User bubble max at 70% (more margin visible) |
397
+ | iPad (portrait) | 768pt | 2-column: sidebar (260pt) + chat (centered max 680pt) |
398
+ | iPad (landscape) | 1024pt+ | Same 2-column; chat max 780pt |
399
+
400
+ ### Dynamic Type
401
+ - Chat body, markdown H1/H2/H3, inline text: full scale
402
+ - Model chip, sidebar titles, section headers, timestamps: FIXED
403
+ - Code blocks: scale to XL (but stay monospace)
404
+
405
+ ### Orientation
406
+ - iPhone: rotates freely — chat works well in landscape too
407
+ - Voice mode: portrait-locked (the full-screen sphere is designed for portrait)
408
+
409
+ ### Touch Targets
410
+ - Send button: 32pt, 44pt hit area
411
+ - Voice button: 32pt, 44pt hit area
412
+ - Icons in compose row: 40pt hit
413
+ - Regenerate / thumbs: 32pt hit (tight — consider 44pt minimum for accessibility)
414
+ - Model chip: 36pt tall, 44pt effective
415
+ - Sidebar row: 40pt, full-row tap
416
+
417
+ ### Safe Area Handling
418
+ - Top: top nav respects safe area and Dynamic Island
419
+ - Bottom: compose bar respects home indicator with extra padding
420
+ - Keyboard: chat scrolls above keyboard; compose bar rises with keyboard
421
+ - Voice mode: ignores safe area (full-bleed sphere)
422
+
423
+ ## 9. Agent Prompt Guide
424
+
425
+ ### Quick Color Reference
426
+ - Canvas (light): `#FFFFFF`
427
+ - Canvas (dark): `#212121`
428
+ - Text primary: `#0D0D0D` / `#ECECEC` dark
429
+ - Text secondary: `#676767` / `#B4B4B4` dark
430
+ - User bubble (light): `#F7F7F8`
431
+ - User bubble (dark): `#2F2F2F`
432
+ - Send button: `#0D0D0D` light / `#FFFFFF` dark
433
+ - Send icon: inverse of circle
434
+ - Inline code bg: `#F0F0F0` / `#424242`
435
+ - Code block bg: `#F7F7F8` / `#1E1E1E`
436
+ - Link blue: `#2A7FFF`
437
+ - Sidebar bg (light): `#F9F9F9`
438
+ - Sidebar bg (dark): `#181818`
439
+ - Divider: `#E5E5E5` / `#424242`
440
+ - Legacy ChatGPT green (retired mostly): `#10A37F`
441
+ - Voice mode sphere gradient: `#3B82F6` → `#60A5FA` → `#93C5FD`
442
+
443
+ ### Example Component Prompts
444
+ - "Build the ChatGPT send button in SwiftUI: 32pt circle, `#0D0D0D` background (or `#FFFFFF` on dark mode), SF Symbol `arrow.up` 16pt weight bold in contrasting inverse color (`#FFFFFF` light, `#0D0D0D` dark). Position: right end of compose field. Enabled only when text has been typed — disabled state is `#CCCCCC` light / `#4D4D4D` dark with same icon. Pressed: scale 0.94 + medium haptic. Replace with a square `stop.fill` icon during streaming."
445
+
446
+ - "Create a ChatGPT user message bubble: right-aligned, max-width 80% of container. Background `#F7F7F8` light / `#2F2F2F` dark. Asymmetric corner radii: top-left 18pt, top-right 18pt, bottom-left 18pt, bottom-right 4pt (the 'pointer' corner). Padding 10pt vertical 14pt horizontal. Text Söhne 16pt w400 `#0D0D0D` / `#ECECEC`. If attachment: 72pt square thumbnail above text with file icon + truncated filename in 12pt `#676767`."
447
+
448
+ - "Design the ChatGPT assistant response: leading optional 24pt sparkle-logo icon, then full-width markdown-rendered content in Söhne 16pt w400 line-height 1.5 `#0D0D0D` / `#ECECEC`. NO bubble — just plain text flowing. Markdown headings at H1 24pt / H2 20pt / H3 17pt, all w600. Inline code `\`code\`` in Menlo 14pt with `#F0F0F0` bg and 4pt radius. Code blocks: `#F7F7F8` bg, 1pt `#E5E5E5` border, 8pt radius, top strip with language label in Söhne 12pt w500 `#676767` + right-aligned 'Copy' button. Below the response: 4-icon row — regenerate (`arrow.triangle.2.circlepath`), copy (`doc.on.doc`), thumbsup, thumbsdown — each 20pt in 32pt hit area, `#676767` default."
449
+
450
+ - "Render the ChatGPT model selector chip: top-left of chat, pill shape 500pt radius, 1pt `#E5E5E5` border, transparent fill (or `#F0F0F0` on press). Leading 16pt model icon (abstract sparkle shape), 'GPT-4o' label in Söhne 14pt w500 `#0D0D0D`, trailing chevron.down 12pt. Padding 6pt vertical 10pt horizontal. Tap: presents bottom sheet with model picker listing GPT-4o / GPT-4 / GPT-3.5 / etc with descriptions."
451
+
452
+ - "Build the ChatGPT compose field: docked at bottom, `#FFFFFF` / `#212121` dark background, rounded rectangle container with 24pt corner radius. Auto-growing text area: min 48pt, max ~144pt then scroll. Placeholder 'Message ChatGPT…' in Söhne 16pt w400 `#676767`. Leading `+` icon button for attachments. Trailing: when empty, show two icons globe (web) + microphone, both 20pt `#676767` in 40pt hit areas; when text entered, replace with the black 32pt send button circle with up-arrow. Text input in Söhne 16pt w400 `#0D0D0D`."
453
+
454
+ - "Create ChatGPT voice mode: full-screen takeover, background fades to black. Center: ~280pt diameter animated sphere with radial gradient `#3B82F6` → `#60A5FA` → `#93C5FD`, pulsing continuously (scale 0.95 ↔ 1.05 over 2s ease-in-out) + Perlin-noise deformation on the SVG circle path. Sphere has a glow: `rgba(59,130,246,0.4) 0 0 80pt`. Bottom-center: waveform visualization while user speaks. Bottom-left: 'Mute' button. Bottom-right: 'End' (X) button — 44pt circular, white on semi-transparent black. While assistant speaks: small white text 'ChatGPT is speaking…' above controls. Entrance: scale 0 → 1 + opacity 0 → 1 over 400ms spring; haptic medium on entry."
455
+
456
+ ### Iteration Guide
457
+ 1. Canvas is pure white (`#FFFFFF`) in light, charcoal (`#212121`) dark — NOT true black
458
+ 2. Send button is a 32pt circle, black-on-white light / white-on-black dark — single up-arrow glyph
459
+ 3. User messages get a soft-gray bubble with asymmetric corners (18/18/18/4); assistant messages get NO bubble
460
+ 4. Typography is Söhne / Inter / SF Pro fallback order; code always in Menlo / SF Mono
461
+ 5. UI is monochromatic — the only accent is subtle blue `#2A7FFF` on links; no brand green, no colorful chrome
462
+ 6. Markdown in assistant responses is fully rendered — headings, code blocks with syntax + copy button, tables, LaTeX
463
+ 7. Below every assistant response: 4 icons — regenerate / copy / thumbs-up / thumbs-down
464
+ 8. Model selector chip top-left (pill with "GPT-4o" + chevron) is a canonical UI element
465
+ 9. Voice mode is a full-screen blue gradient sphere that pulses organically — the dramatic flagship moment
466
+ 10. Sidebar groups conversations by time: Today / Yesterday / Previous 7 Days / Previous 30 Days / Month Year