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,453 @@
1
+ # Design System Inspiration of Perplexity (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Perplexity's iOS app is the answer engine made tactile. Where ChatGPT and Claude are chat surfaces optimized for conversation, Perplexity is a search engine optimized for one shape of interaction: ask a question, get a cited answer. The interface reflects this — a near-black canvas (`#0A0A0A`), a single signature cyan-teal accent that Perplexity calls "Sky" or "True Turquoise" (`#20B8CD`-ish, varying slightly across surfaces), and a hierarchy that puts the question at the top, the answer in the middle, and the source list directly underneath. The app reads as a research notebook, not a chat.
6
+
7
+ The accent — a clean cyan-teal — is Perplexity's most distinctive design choice. It's not the warm orange of ChatGPT or the terracotta of Claude; it's a cool, slightly desaturated turquoise that connotes information, water, clarity, depth. It carries the send button, the active state of the search bar focus ring, the citation chip outlines, and the brand mark — a stylized triple-circle / asterisk that evokes a search field's autocomplete dropdown. Everything else is white type on dark canvas, with a tight ladder of grey for secondary text and chip surfaces. The restraint is intentional: Perplexity is an information tool, and information needs to read clean.
8
+
9
+ Typography is FK Grotesk Neue and Inter — Perplexity uses both, with FK Grotesk for the brand voice (headings, the model picker, "Sources" labels) and Inter for the bulk of the answer prose. Both are geometric humanist sans serifs; Perplexity deliberately avoids the editorial-essayist serif voice of Claude in favor of a more technical, encyclopedic register. The answer text is sized at 16pt with a moderately tight 1.5 line-height — Perplexity reads like a Wikipedia paragraph, not a Tiempos essay.
10
+
11
+ **Key Characteristics:**
12
+ - Near-black canvas (`#0A0A0A`) with elevated surface (`#171717`) for input fields and source cards
13
+ - Perplexity Teal (`#20B8CD`) — cool cyan-teal — as the single signature accent for sends, focus rings, citation outlines, and the brand mark
14
+ - Citation chips — small numbered pills (`[1]`, `[2]`, `[3]`) inline in the answer that link to the source list below
15
+ - Source card row — horizontal scroll of source cards (favicon + truncated title + domain) at the top of every answer
16
+ - The triple-circle / asterisk brand mark in Perplexity Teal — sits on the splash, the empty-state, and the avatar of every answer
17
+ - Pro Search toggle — a switch that turns the answer into a multi-step reasoning trace, visible as a "Steps" expandable list above the answer
18
+ - Discover / Library / Spaces tabs — a 4-tab bottom nav including the Discover feed of trending searches
19
+ - Inter for answer body, FK Grotesk for chrome — clean geometric sans typography
20
+ - Hard edges, low elevation, no glass — the app is a tool, not a chat
21
+
22
+ ## 2. Color Palette & Roles
23
+
24
+ ### Primary
25
+ - **Perplexity Teal** (`#20B8CD`): The signature accent — send button, focus rings, citation chip outlines, brand mark, "Pro" badge fill, active tab indicator.
26
+ - **Teal Bright** (`#3DD6EC`): Hover / pressed state on the send button; the streaming response cursor.
27
+ - **Teal Deep** (`#1591A3`): Dark-state variants — pressed Pro badge, secondary teal accents.
28
+ - **Teal Soft** (`#0F3A42`): Background of the active source-card hover state on dark; "Searching the web…" indicator soft fill.
29
+
30
+ ### Canvas (dark-first — Perplexity defaults to dark)
31
+ - **Canvas** (`#0A0A0A`): Primary near-black canvas — every screen by default.
32
+ - **Surface 1** (`#171717`): Input field background, source card fill, modal surfaces.
33
+ - **Surface 2** (`#1F1F1F`): Pressed states, hover, chip fills on dark.
34
+ - **Surface 3** (`#2A2A2A`): Higher elevation — sheets, sticky headers above content.
35
+ - **Divider** (`#2A2A2A`): 0.5pt hairlines on dark.
36
+
37
+ ### Text (on dark)
38
+ - **Text Primary** (`#FAFAFA`): Primary text — answer body, question titles, model name.
39
+ - **Text Secondary** (`#A1A1A1`): Secondary text — source domains, citation hints, metadata.
40
+ - **Text Tertiary** (`#6E6E6E`): Tertiary — placeholder, helper, disabled labels.
41
+ - **Text Muted** (`#4A4A4A`): Very-secondary metadata, separator dots.
42
+
43
+ ### Code & Syntax (inside code blocks)
44
+ - **Code BG** (`#0E0E0E`): Slightly darker than canvas — code blocks pop subtly
45
+ - **Code FG** (`#E5E5E5`): Default code text
46
+ - **Syntax Keyword** (`#20B8CD`): Keywords — Perplexity Teal
47
+ - **Syntax String** (`#A8E063`): Strings — lime green
48
+ - **Syntax Number** (`#F2A65A`): Numbers — soft orange
49
+ - **Syntax Comment** (`#6E6E6E`): Comments
50
+ - **Syntax Function** (`#B988F2`): Function names — soft purple
51
+
52
+ ### Semantic
53
+ - **Success Green** (`#22C55E`): "Copied", citation source verified
54
+ - **Warning Amber** (`#F59E0B`): "Limited results", paywall warnings
55
+ - **Error Red** (`#EF4444`): Failed queries, source unavailable
56
+ - **Pro Gold** (`#E0B341`): "Pro" subscription badges (used sparingly — gold is reserved for premium identity)
57
+
58
+ ### Light Mode
59
+ Perplexity supports light mode, but the brand defaults to dark. Light mode preserves all teal accents.
60
+ - **Light Canvas** (`#FFFFFF`): Primary light canvas.
61
+ - **Light Surface 1** (`#F7F7F7`): Input fields, source cards.
62
+ - **Light Surface 2** (`#EFEFEF`): Pressed states, chip fills on light.
63
+ - **Light Divider** (`#E5E5E5`): Hairlines on light.
64
+ - **Light Text Primary** (`#111111`): Primary text on light.
65
+ - **Light Text Secondary** (`#555555`): Secondary.
66
+ - **Light Text Tertiary** (`#999999`): Tertiary.
67
+ - **Perplexity Teal (light)** (`#1591A3`): Slightly darker teal for WCAG AA on light background.
68
+
69
+ ## 3. Typography Rules
70
+
71
+ ### Font Family
72
+ - **Primary (chrome, headings, brand voice)**: `FK Grotesk Neue` — a geometric humanist sans by Florian Karsten, used by Perplexity for the brand identity
73
+ - **Body (answer text)**: `Inter` — Rasmus Andersson's geometric humanist sans, used for the bulk of answer prose
74
+ - **Weights available**: FK Grotesk: Regular (400), Medium (500), Bold (700); Inter: Regular (400), Medium (500), Semibold (600), Bold (700)
75
+ - **Fallback stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', sans-serif`
76
+ - **Google Fonts substitute**: `Inter` for both — both faces have similar geometric humanist characteristics and Inter ships everywhere
77
+
78
+ ### Hierarchy
79
+
80
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
81
+ |------|------|------|--------|-------------|----------------|-------|
82
+ | Display (Discover hero) | FK Grotesk | 30pt | 700 | 1.15 | -0.5pt | "Discover", "Library", "Spaces" |
83
+ | Question Title | FK Grotesk | 22pt | 600 | 1.25 | -0.3pt | The user's question at the top of every answer |
84
+ | Section Header | FK Grotesk | 18pt | 600 | 1.3 | -0.1pt | "Sources", "Related", "Steps" |
85
+ | Subsection | FK Grotesk | 16pt | 600 | 1.3 | 0pt | "Web", "Reddit", subsection headings inside answers |
86
+ | Answer Body | Inter | 16pt | 400 | 1.5 | 0pt | The bulk of the answer prose |
87
+ | Answer Body Bold | Inter | 16pt | 600 | 1.5 | 0pt | Emphasis within answers |
88
+ | List Item | Inter | 16pt | 400 | 1.5 | 0pt | Bulleted / numbered lists inside answers |
89
+ | Source Card Title | Inter | 13pt | 500 | 1.3 | 0pt | Source title in the source row, 2-line truncate |
90
+ | Source Card Domain | Inter | 11pt | 400 | 1.3 | 0pt | "wikipedia.org", "arxiv.org" |
91
+ | Citation Chip | FK Grotesk Mono | 11pt | 500 | 1.0 | 0pt | The `1` / `2` numerals inside citation chips |
92
+ | Search Placeholder | Inter | 16pt | 400 | 1.4 | 0pt | "Ask anything…" |
93
+ | Button (Primary) | FK Grotesk | 15pt | 600 | 1.0 | 0pt | "Search", "Save to Library" |
94
+ | Button (Pro) | FK Grotesk | 13pt | 700 | 1.0 | 0.2pt | "Pro" badge label |
95
+ | Tab Label | FK Grotesk | 10pt | 500 | 1.0 | 0.2pt | Bottom tab labels |
96
+ | Metadata | Inter | 12pt | 400 | 1.3 | 0pt | Timestamps, "12 sources" |
97
+ | Code Block | JetBrains Mono | 14pt | 400 | 1.5 | 0pt | Code inside answers |
98
+ | Inline Code | JetBrains Mono | 14pt | 500 | 1.4 | 0pt | `inline` code |
99
+ | Caption | Inter | 11pt | 400 | 1.3 | 0pt | "Powered by Perplexity Pro" |
100
+
101
+ ### Principles
102
+ - **Two-face system**: FK Grotesk carries the chrome and brand voice; Inter carries the answer body. The split is intentional — the chrome speaks "Perplexity", the body speaks "encyclopedia".
103
+ - **Answer body at 16pt with 1.5 line-height**: This is the most-read text in the app, and it's intentionally tighter than Claude's 1.55. Perplexity reads denser, more reference-book.
104
+ - **Numeric citations are typeset matter**: `[1]`, `[2]`, `[3]` use FK Grotesk Mono — a monospace variant — at 11pt 500 to ensure they hold their pill shape and align in lists.
105
+ - **Off-white primary text, never pure white**: `#FAFAFA` reads softer on near-black canvas than pure `#FFFFFF`; reduces glare and feels more typographic.
106
+ - **Dynamic Type respected on answer body, headings, lists**: Citation chips, tab labels, source domain text, and code block language labels are fixed (layout-sensitive).
107
+ - **Tight tracking at display**: -0.5pt at 30pt falling to 0pt at body — geometric sans needs slight negative tracking at headlines to feel composed.
108
+
109
+ ## 4. Component Stylings
110
+
111
+ ### Buttons
112
+
113
+ **Send / Search Circle (the teal icon-only send)**
114
+ - Diameter: 36pt
115
+ - Background: `#20B8CD` (Perplexity Teal) when input has text; `#2A2A2A` (Surface 3) when empty
116
+ - Icon: 14pt arrow-up glyph, `#0A0A0A` when active (dark text on teal), `#6E6E6E` when disabled
117
+ - Pressed: scale 0.94, background `#3DD6EC`
118
+ - Haptic: `.impactOccurred(.medium)` on send
119
+ - Sits trailing the search input
120
+
121
+ **Primary Pill (Save to Library, Sign in, etc.)**
122
+ - Background: `#20B8CD` Perplexity Teal
123
+ - Text: `#0A0A0A` (dark on teal for WCAG)
124
+ - Padding: 12pt vertical, 24pt horizontal
125
+ - Corner radius: 10pt (medium — Perplexity avoids capsule corners outside of citation chips)
126
+ - Pressed: background `#1591A3`
127
+
128
+ **Secondary Pill (Copy, Share, Pro Search)**
129
+ - Background: `#1F1F1F` (Surface 2)
130
+ - Border: 1pt `#2A2A2A`
131
+ - Text: `#FAFAFA`, FK Grotesk 14pt Medium
132
+ - Padding: 8pt vertical, 16pt horizontal
133
+ - Corner radius: 8pt
134
+
135
+ **Pro Search Toggle (the multi-step reasoning toggle)**
136
+ - Pill-shaped switch sitting above the search input
137
+ - Off state: `#1F1F1F` fill, "Pro" label in `#A1A1A1` FK Grotesk 13pt Medium, no fill
138
+ - On state: `#20B8CD` Perplexity Teal fill, "Pro" label in `#0A0A0A` FK Grotesk 13pt Bold
139
+ - 28pt tall, 60pt wide, 14pt radius
140
+ - A small `sparkle` glyph leads the "Pro" text on hover
141
+ - Tap toggles with a `.selectionChanged()` haptic + a 200ms slide animation on the indicator
142
+
143
+ **Citation Chip (the most-rendered button in the app)**
144
+ - Inline within answer text — replaces what would otherwise be a footnote
145
+ - Width: auto, min 18pt; height: 18pt
146
+ - Background: `#1F1F1F` (Surface 2) — or `#0F3A42` (Teal Soft) when hovered/focused
147
+ - Border: 1pt `#2A2A2A` default; 1pt `#20B8CD` Perplexity Teal when focused
148
+ - Text: `[1]`, `[2]`, `[3]` — number only, FK Grotesk Mono 11pt Medium, color `#A1A1A1` default / `#20B8CD` on focus
149
+ - Padding: 0pt vertical (height controlled by font), 5pt horizontal
150
+ - Corner radius: 4pt
151
+ - Tap: scrolls to / opens the matching source card; brief `.impactOccurred(.soft)` haptic
152
+ - Hover (iPad): reveals a tooltip with the source title + favicon
153
+
154
+ ### Cards & Containers
155
+
156
+ **Search Input (the home of the app)**
157
+ - Width: full minus 24pt margins
158
+ - Background: `#171717` (Surface 1)
159
+ - Border: 1pt `#2A2A2A` default; 1.5pt `#20B8CD` focused
160
+ - Corner radius: 24pt (capsule-ish on single line; softer when grown)
161
+ - Min height: 56pt; auto-grow up to 200pt
162
+ - Padding: 14pt vertical, 18pt left, 60pt right (room for send circle)
163
+ - Placeholder: "Ask anything…" in Inter 16pt Regular `#6E6E6E`
164
+ - Text: Inter 16pt Regular `#FAFAFA`
165
+ - Trailing: paperclip-attach button + 36pt send circle stacked horizontally
166
+ - Below the input (when empty): a row of suggested-prompts chips ("Trending", "Compare", "Summarize this URL") — pills with `#1F1F1F` fill, `#A1A1A1` 13pt Medium text
167
+
168
+ **Source Card (horizontal scroll above answer)**
169
+ - Width: 200pt × 80pt
170
+ - Background: `#171717` (Surface 1)
171
+ - Border: 1pt `#2A2A2A`
172
+ - Corner radius: 12pt
173
+ - Padding: 12pt all around
174
+ - Top row: 16pt favicon + Inter 11pt Regular `#A1A1A1` domain ("wikipedia.org")
175
+ - Bottom: Source title in Inter 13pt Medium `#FAFAFA`, 2-line truncate with ellipsis
176
+ - A small numeric badge top-right (`1`, `2`, `3`) matching the inline citation — `#1F1F1F` fill with the number in `#A1A1A1` FK Grotesk Mono 10pt Bold
177
+ - Horizontal scroll row, 12pt gap between cards, 12pt leading inset
178
+ - After the last card, a "Show all 12 sources" chevron card with `#1F1F1F` fill
179
+
180
+ **Answer Block (the conversation hero)**
181
+ - Full-width flow of typography — no container background, no bubble
182
+ - Top: a 20pt Perplexity-mark icon at the leading edge + "Answer" label in FK Grotesk 13pt Medium `#A1A1A1`
183
+ - Below: the answer body in Inter 16pt Regular `#FAFAFA` with 1.5 line-height
184
+ - Citation chips inline within the prose, looking like superscript-but-pill — `[1]`, `[2]` etc.
185
+ - Markdown rendering: headings get FK Grotesk Semibold treatment (h2 18pt, h3 16pt, h4 14pt); lists get 8pt gap; bold/italic/inline-code distinct
186
+ - Action row at the bottom of the answer: Copy / Share / Pro Search retry / Save to Library — secondary pill buttons
187
+ - 32pt gap between the answer block and the related-questions section below
188
+
189
+ **Related Questions Card (under every answer)**
190
+ - "Related" label in FK Grotesk 13pt Medium `#A1A1A1` at the top
191
+ - A vertical stack of 3-5 question rows
192
+ - Each row: 56pt tall, full width, 1pt `#2A2A2A` bottom border, padding 12pt vertical / 16pt horizontal
193
+ - Row content: question text in Inter 15pt Regular `#FAFAFA` + a 14pt `arrow.right` chevron in `#A1A1A1` trailing
194
+ - Tap: starts a new search with that question
195
+ - Hover/press: `#1F1F1F` fill on the row
196
+
197
+ **Pro Steps List (when Pro Search is on)**
198
+ - A collapsible card above the answer
199
+ - Header: 14pt `sparkle` glyph in `#20B8CD` Perplexity Teal + "Steps" label in FK Grotesk 13pt Medium `#FAFAFA` + step count "(4)" in `#A1A1A1`
200
+ - Each step: a row showing the step name (e.g., "Searching for: 'Bayesian inference history'") + a small completed-check `#20B8CD` glyph
201
+ - Collapsed by default; tap header to expand with a 300ms ease accordion
202
+ - Background: `#0F3A42` Teal Soft, 12pt corner radius, 16pt internal padding
203
+
204
+ **Code Block**
205
+ - Background: `#0E0E0E` (Code BG — slightly darker than canvas to pop)
206
+ - Border: 1pt `#2A2A2A`
207
+ - Corner radius: 8pt
208
+ - Padding: 14pt all around
209
+ - Header: language name in JetBrains Mono 11pt `#6E6E6E` left-aligned + Copy button right-aligned, 1pt `#2A2A2A` bottom divider
210
+ - Body: JetBrains Mono 14pt Regular `#E5E5E5`
211
+ - Syntax: Perplexity Teal keywords, lime strings, soft orange numbers, soft purple functions, grey comments
212
+
213
+ ### Navigation
214
+
215
+ **Top Header / Search Bar (fixed on chat screens)**
216
+ - Height: 56pt
217
+ - Background: `#0A0A0A` (matches canvas); no blur on scroll
218
+ - Leading: hamburger sidebar toggle (3-line glyph, `#FAFAFA`)
219
+ - Center: the active conversation title (Inter 15pt Medium `#FAFAFA`, 1-line truncate) — or absent on the home screen
220
+ - Trailing: "..." overflow menu
221
+
222
+ **Bottom Tab Bar**
223
+ - Height: 56pt + safe area
224
+ - Background: `#0A0A0A` with 0.5pt `#2A2A2A` top divider
225
+ - Tabs (typically 4): Home (search mark), Discover (compass), Library (bookmark), Spaces (collection)
226
+ - Active color: `#FAFAFA` (off-white) with a 2pt `#20B8CD` Perplexity Teal indicator dot 4pt below the label
227
+ - Inactive: `#6E6E6E`
228
+ - Icon size: 22pt, outlined default / filled when active
229
+ - Labels: FK Grotesk 10pt Medium, visible always
230
+ - Tap haptic: `.selectionChanged()` on each switch
231
+
232
+ **Sidebar (Conversation History)**
233
+ - Slides in from the left on iPhone (full-screen modal); persistent on iPad (260pt width)
234
+ - Background: `#0A0A0A`
235
+ - Top: "+ New thread" button — full width, `#171717` fill, 1pt `#2A2A2A` border, 10pt corner radius, 12pt vertical padding
236
+ - Below: list of "threads" — Perplexity calls a conversation a thread — grouped by date
237
+ - Group headers: FK Grotesk 11pt Bold UPPERCASE `#6E6E6E`, 0.4pt letter spacing
238
+ - Each thread row: 56pt tall, title in Inter 14pt Medium `#FAFAFA` (1-line truncate), timestamp in Inter 11pt Regular `#A1A1A1` below
239
+
240
+ ### Input Fields
241
+
242
+ **Settings Text Field**
243
+ - Background: `#171717` (Surface 1)
244
+ - Border: 1pt `#2A2A2A` default, 1.5pt `#20B8CD` focused
245
+ - Corner radius: 8pt
246
+ - Height: 48pt
247
+ - Padding: 12pt vertical, 14pt horizontal
248
+ - Label: above the field in FK Grotesk 13pt Medium `#A1A1A1`
249
+
250
+ **File / URL Attach Sheet**
251
+ - Bottom sheet, 24pt top corners, `#171717` background
252
+ - Options: "Upload file", "Paste URL", "Take a photo", each as a 56pt row with a 24pt icon leading + Inter 16pt Medium `#FAFAFA` label
253
+
254
+ ### Distinctive Components
255
+
256
+ **The Perplexity Mark**
257
+ - A stylized triple-circle / asterisk glyph — three overlapping circles arranged in a triangular formation, evoking both an autocomplete dropdown and a Venn diagram intersection
258
+ - Rendered in `#20B8CD` Perplexity Teal on dark; `#1591A3` Teal Deep on light
259
+ - Sizes: 20pt as the "answer" avatar, 32pt in the search-bar focus state, 80pt on the splash screen
260
+ - Never rendered in any color other than the teal scale
261
+
262
+ **Streaming Response Cursor**
263
+ - A small teal caret at the trailing edge of the streaming answer
264
+ - Dimensions: 6pt × 16pt, `#3DD6EC` (Teal Bright)
265
+ - Animation: blinks at 500ms interval — slightly faster than Claude's 600ms because Perplexity's responses feel more "live"
266
+ - Disappears when the answer is complete
267
+
268
+ **Searching the Web Indicator**
269
+ - A loading state shown immediately after submission, before the source cards appear
270
+ - A horizontal row of three pulsing teal dots, FK Grotesk 13pt Medium `#A1A1A1` "Searching the web…" label trailing
271
+ - Each dot pulses scale 1.0 → 1.3 → 1.0 in sequence with a 200ms stagger, 1200ms cycle
272
+ - Replaced by the source card row when results return
273
+
274
+ **Pro Badge**
275
+ - A small teal pill that sits next to "Perplexity Pro" labels in upgrade prompts
276
+ - `#20B8CD` Perplexity Teal fill, "Pro" in FK Grotesk 11pt Bold `#0A0A0A`, padded 2pt vertical / 6pt horizontal
277
+ - Corner radius: 4pt
278
+ - The premium/billing flows use a gold-teal hybrid: `#E0B341` Pro Gold pill with teal accent border
279
+
280
+ **Trending Search Card (Discover feed)**
281
+ - A vertical card with a hero image (4:3 aspect, 12pt rounded top corners), title in FK Grotesk 18pt Semibold `#FAFAFA`, summary in Inter 14pt Regular `#A1A1A1` 2-line truncate
282
+ - Source/category footer: small text "Tech · 12 hours ago" in Inter 11pt Regular `#6E6E6E`
283
+ - The Discover tab is a 1-col vertical scroll of these cards, no grid
284
+
285
+ **Spaces Card (collections)**
286
+ - Spaces is Perplexity's "save threads to a topic" feature
287
+ - Card: `#171717` fill, 12pt corner radius, 16pt padding, 96pt tall
288
+ - Top row: Space name in FK Grotesk 16pt Semibold + a thread count "12 threads" in `#A1A1A1`
289
+ - Below: a 4-up grid of mini source-favicons representing the sources cited across the space
290
+ - Tap opens the Space view — a filtered library of threads
291
+
292
+ ## 5. Layout Principles
293
+
294
+ ### Spacing System
295
+ - Base unit: 4pt
296
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 64
297
+ - Standard horizontal margin: 16pt on lists, 24pt on the search input
298
+ - Vertical gap between answer block and related questions: 32pt
299
+ - Source card row: 12pt gap between cards
300
+
301
+ ### Grid & Container
302
+ - Content width: full minus 16pt margins on iPhone; max 720pt centered on iPad
303
+ - Sidebar: 260pt fixed width on iPad; full-screen modal on iPhone
304
+ - Answer body: full-width flow, no max-width constraint on iPhone
305
+ - Source cards: fixed 200pt width regardless of device
306
+
307
+ ### Whitespace Philosophy
308
+ - **Dense reference layout**: Perplexity is information-dense — the answer body uses 1.5 line-height (tighter than Claude's 1.55) and lists are tightly packed
309
+ - **Source cards earn their margins**: 12pt gap between source cards is generous because the favicon + title + domain stack needs to feel scannable
310
+ - **Tight chrome**: the top header (56pt) and tab bar (56pt + safe area) are minimal; the search input is the visual anchor
311
+
312
+ ### Border Radius Scale
313
+ - Square (0pt): rarely used
314
+ - Small (4pt): citation chips, Pro badge
315
+ - Medium (8pt): code blocks, secondary pills, settings inputs
316
+ - Standard (10pt): primary pills, sidebar buttons, "Save to Library" CTAs
317
+ - Cards (12pt): source cards, Pro Steps card, Spaces cards
318
+ - Round Input (24pt): search input field — the only place this radius appears
319
+ - Capsule (28pt): the Pro Search toggle
320
+ - Sheet (24pt top corners): bottom sheets
321
+ - Circle (50%): send button, brand mark container, indicator dots
322
+
323
+ ## 6. Depth & Elevation
324
+
325
+ | Level | Treatment | Use |
326
+ |-------|-----------|-----|
327
+ | Flat (Level 0) | No shadow | Canvas, answer body |
328
+ | Subtle (Level 1) | `rgba(0, 0, 0, 0.4) 0 1px 2px` | Source cards, code blocks |
329
+ | Card (Level 2) | `rgba(0, 0, 0, 0.5) 0 4px 8px` | Pro Steps card, Spaces cards |
330
+ | Floating (Level 3) | `rgba(0, 0, 0, 0.6) 0 4px 16px` | Search input on focus, sidebar |
331
+ | Overlay (Level 4) | `rgba(0, 0, 0, 0.7) 0 8px 24px` | Bottom sheets, modals |
332
+ | Teal Focus Glow | `rgba(32, 184, 205, 0.25) 0 0 0 4px` | Search input focus ring; the only "glow" in the app |
333
+
334
+ **Shadow Philosophy**: Perplexity on dark canvas needs a different shadow vocabulary than light-mode apps — black-on-black requires high opacity to be visible. Shadows use 0.4-0.7 opacity with short blurs (1-24pt). The teal focus glow on the search input is the single "elevated" visual moment — a soft 4pt cyan halo around the focused search field that signals "this is the action".
335
+
336
+ ### Motion
337
+ - **Send tap**: 36pt circle scales 1.0 → 0.94 → 1.0 over 200ms, `.impactOccurred(.medium)` haptic; then the question slides up and the "Searching the web…" indicator fades in over 250ms
338
+ - **Source card appear**: when results return, the source card row slides up from below with a 350ms ease-out and a 60ms stagger between cards (so they cascade in)
339
+ - **Citation chip tap**: scroll-to-source with a 400ms ease-out scroll animation; the target source card flashes a 200ms `#20B8CD` border glow on arrival
340
+ - **Streaming text appearance**: word-by-word fade-in at 60ms per word — slightly faster than Claude's 80ms because Perplexity's prose is denser
341
+ - **Streaming cursor blink**: 500ms interval
342
+ - **Pro Search toggle**: indicator slides 200ms ease-out between off/on states; the "Pro" label crossfades color
343
+ - **Pro Steps expand**: 300ms accordion ease; each step row reveals with a 30ms stagger
344
+ - **"Searching…" dot pulse**: 3 dots scale-pulse with 200ms stagger, 1200ms cycle
345
+ - **Tab switch**: 200ms ease, indicator dot fades; `.selectionChanged()` haptic
346
+ - **Sidebar slide (iPhone)**: 350ms ease with a 0 → 1 dim overlay
347
+
348
+ ## 7. Do's and Don'ts
349
+
350
+ ### Do
351
+ - Use the near-black canvas (`#0A0A0A`) as the default — Perplexity's brand is dark-first
352
+ - Reserve Perplexity Teal (`#20B8CD`) for the send button, focus rings, citation chip outlines, brand mark, and active states
353
+ - Render citation chips inline within the answer prose as `[1]`, `[2]`, `[3]` — never as a footer-only mechanism
354
+ - Use FK Grotesk for chrome and brand voice; Inter for answer body
355
+ - Use off-white (`#FAFAFA`) for primary text, not pure white — softer on dark canvas
356
+ - Render the source card row above every answer with horizontal scroll, 12pt gap, 200pt fixed-width cards
357
+ - Use the Perplexity triple-circle mark in teal — never any other color
358
+ - Show the "Searching the web…" indicator immediately on submit, before sources arrive
359
+ - Use the teal focus glow on the search input — `rgba(32, 184, 205, 0.25) 0 0 0 4px`
360
+ - Use dark text (`#0A0A0A`) on Perplexity Teal CTAs — teal needs dark contrast for WCAG AA
361
+ - Add a Pro badge in teal on subscription touchpoints, with optional Pro Gold accent on premium upsell
362
+
363
+ ### Don't
364
+ - Don't use a chat-bubble pattern with tails for the question or the answer — Perplexity is search, not chat
365
+ - Don't use serif typography for the answer body — Perplexity's voice is encyclopedic, not editorial
366
+ - Don't replace the triple-circle mark with a generic search glyph or a stylized "P"
367
+ - Don't put citation chips only at the end of the answer — they live inline within the prose
368
+ - Don't show the answer without the source card row above it — the citation pattern is the brand
369
+ - Don't use a warm accent like orange or red — Perplexity Teal is cool, informational; warm accents break the visual register
370
+ - Don't blur the canvas with heavy glass — Perplexity is information-first, not chrome-first
371
+ - Don't use pure white `#FFFFFF` for primary text — `#FAFAFA` off-white is the correct value on dark
372
+ - Don't show Pro Search toggle in the off-state without the "Pro" label — the affordance must be discoverable
373
+ - Don't use Perplexity Teal for body text — it's a verb, not a color
374
+ - Don't skip the streaming cursor — Perplexity's "live answer" feel depends on it
375
+
376
+ ## 8. Responsive Behavior
377
+
378
+ ### Device Sizes
379
+ | Device | Width | Key Changes |
380
+ |--------|-------|-------------|
381
+ | iPhone SE (3rd gen) | 375pt | Source card width drops 200pt → 180pt; the related questions card uses 1-line truncate |
382
+ | iPhone 13/14/15 | 390pt | Standard 200pt source cards, 24pt search input margins |
383
+ | iPhone 15/16 Pro | 393pt | Dynamic Island respected; the 56pt header sits below status bar |
384
+ | iPhone 15/16 Pro Max | 430pt | Source cards can grow to 220pt; answer body gains slight extra horizontal margin |
385
+ | iPad | 768pt+ | Persistent 260pt sidebar; answer max-width 720pt centered; source card row keeps 200pt cards but adds scroll arrows |
386
+ | iPad Pro 12.9 | 1024pt+ | Two-column layout: answer left (60%), sources expanded right (40%) — the source list moves from a horizontal row to a vertical sidebar |
387
+
388
+ ### Dynamic Type
389
+ - Answer body, all headings, list items, source titles, question titles: full scale
390
+ - Citation chips, source domain text, tab labels, code block language label: fixed
391
+ - Code block font scales but caps at 18pt to prevent overflow
392
+
393
+ ### Orientation
394
+ - All screens: portrait + landscape supported
395
+ - On landscape iPhone: sidebar opens as a 60%-width panel, not full-screen
396
+ - On iPad: sidebar persistent both orientations; the source list switches between horizontal (portrait) and vertical (landscape) when in two-column mode
397
+
398
+ ### Touch Targets
399
+ - Send circle: 36pt button on a 56pt hit area
400
+ - Citation chip: 18pt visual on a 32pt hit area (tap-target padding)
401
+ - Source card: 200pt × 80pt full-card tap
402
+ - Tab bar icons: 22pt icon, full 56pt row
403
+ - Related question row: full 56pt row
404
+
405
+ ### Safe Area Handling
406
+ - Top: safe area honored — the 56pt header sits below status bar / Dynamic Island
407
+ - Bottom: search input pins above home indicator with full safe area inset; tab bar sits above home indicator
408
+ - Sides: 16-24pt content insets depending on screen
409
+
410
+ ## 9. Quick Reference Cheat Sheet
411
+
412
+ ### Quick Color Reference
413
+ - Canvas: `#0A0A0A`
414
+ - Surface 1 (inputs, cards): `#171717`
415
+ - Surface 2 (chips): `#1F1F1F`
416
+ - Surface 3 (sheets): `#2A2A2A`
417
+ - Divider: `#2A2A2A`
418
+ - Text Primary: `#FAFAFA`
419
+ - Text Secondary: `#A1A1A1`
420
+ - Text Tertiary: `#6E6E6E`
421
+ - Perplexity Teal: `#20B8CD`
422
+ - Teal Bright (cursor, hover): `#3DD6EC`
423
+ - Teal Deep (pressed): `#1591A3`
424
+ - Teal Soft (Pro Steps fill): `#0F3A42`
425
+ - Code BG: `#0E0E0E`
426
+ - Syntax string: `#A8E063` (lime)
427
+ - Syntax number: `#F2A65A`
428
+ - Syntax function: `#B988F2`
429
+ - Pro Gold (premium): `#E0B341`
430
+ - Success: `#22C55E`
431
+ - Error: `#EF4444`
432
+ - Light canvas: `#FFFFFF`
433
+ - Light text primary: `#111111`
434
+ - Light teal: `#1591A3`
435
+
436
+ ### Example Component Prompts
437
+ - "Create a SwiftUI Perplexity search input: full-width minus 24pt margins, 56pt min height, auto-grows to 200pt. `#171717` Surface 1 background, 1pt `#2A2A2A` border default and 1.5pt `#20B8CD` Perplexity Teal border on focus. 24pt corner radius. Placeholder 'Ask anything…' in Inter 16pt Regular `#6E6E6E`. Trailing the input: a 28pt paperclip attach button + a 36pt send circle. Send circle: `#20B8CD` Perplexity Teal when input has text, `#2A2A2A` Surface 3 when empty; 14pt arrow-up glyph in `#0A0A0A` (dark on teal for WCAG). On focus, the input gains a 4pt teal halo `rgba(32, 184, 205, 0.25) 0 0 0 4px`. Send haptic: `.impactOccurred(.medium)`."
438
+ - "Build the Perplexity source card row: a horizontal scroll above every answer. Each card 200pt × 80pt, `#171717` Surface 1 background, 1pt `#2A2A2A` border, 12pt corner radius, 12pt padding. Top row: 16pt favicon image + Inter 11pt Regular `#A1A1A1` domain text ('wikipedia.org'). Bottom: Inter 13pt Medium `#FAFAFA` source title, 2-line truncate. A small badge in the top-right corner: `#1F1F1F` Surface 2 background, FK Grotesk Mono 10pt Bold `#A1A1A1` number ('1', '2', '3') matching the inline citation. 12pt gap between cards, 16pt leading inset. After the last source card, a 'Show all 12 sources' chevron-card with `#1F1F1F` fill."
439
+ - "Design the Perplexity citation chip: an inline pill that lives within answer prose. Auto-width with 5pt horizontal padding, 18pt tall, 4pt corner radius. Background `#1F1F1F` Surface 2 with a 1pt `#2A2A2A` border default; on focus the border becomes 1pt `#20B8CD` Perplexity Teal and the background shifts to `#0F3A42` Teal Soft. Inside: number text in FK Grotesk Mono 11pt Medium `#A1A1A1` default, `#20B8CD` on focus, with brackets `[1]`. The chip is wrapped in a 32pt tap target via hit-slop padding. Tap scrolls to the matching source card with a 400ms ease-out and a 200ms teal border flash on arrival."
440
+ - "Create the Perplexity 'Pro Steps' card: a collapsible card above the answer when Pro Search is on. `#0F3A42` Teal Soft background, 12pt corner radius, 16pt internal padding. Header row: 14pt `sparkles` glyph in `#20B8CD` Perplexity Teal + 'Steps' label in FK Grotesk 13pt Medium `#FAFAFA` + step count '(4)' in `#A1A1A1`. Collapsed by default — a 14pt down-chevron trails the header. Tap header to expand with a 300ms accordion ease. Each step row: 12pt vertical padding, step name in Inter 14pt Regular `#FAFAFA` (e.g., 'Searching for: Bayesian inference history'), with a 14pt `checkmark.circle.fill` glyph in `#20B8CD` trailing when the step is complete."
441
+ - "Build the Perplexity related questions card: appears 32pt below every answer. Top row: 'Related' label in FK Grotesk 13pt Medium `#A1A1A1`. Below, a vertical stack of 3-5 question rows. Each row: 56pt tall, full width, 1pt `#2A2A2A` bottom border (only between rows), 12pt vertical / 16pt horizontal padding. Question text in Inter 15pt Regular `#FAFAFA`, 1-line truncate. Trailing: 14pt `arrow.right` chevron in `#A1A1A1`. Hover/press: row background fills `#1F1F1F` Surface 2. Tap starts a new search thread with that question. Haptic: `.selectionChanged()` on tap."
442
+
443
+ ### Iteration Guide
444
+ 1. Canvas is `#0A0A0A` near-black — Perplexity is dark-first
445
+ 2. Perplexity Teal `#20B8CD` is the single accent — send button, focus rings, citation outlines, brand mark, active state
446
+ 3. Two-face typography: FK Grotesk for chrome and brand voice; Inter for answer body
447
+ 4. Off-white text `#FAFAFA`, never pure white — softer on dark canvas
448
+ 5. Citation chips `[1]` `[2]` live inline within answer prose with FK Grotesk Mono — the inline citation pattern is the brand
449
+ 6. Source card row above every answer — 200pt × 80pt cards, horizontal scroll, favicon + domain + title + number badge
450
+ 7. The triple-circle Perplexity mark stays teal — never any other color, never replaced
451
+ 8. Pro Search adds a "Steps" card showing the multi-step reasoning trace — Teal Soft fill, collapsible
452
+ 9. Search input gets a 4pt teal focus halo — the only "glow" in the app
453
+ 10. Light mode flips canvas to white and darkens teal to `#1591A3` for WCAG; everything else preserved