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,418 @@
1
+ # Design System Inspiration of Todoist (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Todoist's iOS app is a quiet, productive workshop. Where most task apps reach for kanban boards, color-coded blobs, and gamified streak meters, Todoist reaches for the opposite — a near-blank canvas, a single column of checkable rows, and the visual restraint of a Moleskine notebook. The brand has been deliberate about this for over a decade: the app is a tool, not a destination. You open it, capture a thought, and close it. Every pixel exists to keep that loop fast.
6
+
7
+ The accent is Todoist Red (`#DC4C3E`) — the iconic carmine red of the logo, the floating "+" button, the P1 priority flag, and the rare emphatic moment like the karma flame. It is one of the most disciplined uses of a single brand color in productivity software: Red is reserved for verbs (add a task, mark as urgent, the brand mark itself), never used as ambient decoration. Around it sits a ladder of warm grays (`#FAFAFA` surface, `#202020` ink, `#808080` secondary) and four priority colors that punctuate the inbox rhythm: P1 Red `#DC4C3E`, P2 Orange `#EB8909`, P3 Blue `#246FE0`, P4 transparent.
8
+
9
+ Typography is the iOS system stack — SF Pro Display for nav titles and SF Pro Text for body and rows. Todoist deliberately uses the platform font rather than a custom face: the app is positioned as a respectful native citizen of iOS, and SF Pro's tight, neutral metrics let task content (which is mostly the user's own prose) carry the visual interest. The one exception is project icons — emoji and the Twemoji-style colored glyphs that users choose for "🍎 Groceries" or "📚 Reading List" — which become the most colorful objects on screen.
10
+
11
+ **Key Characteristics:**
12
+ - White canvas (`#FFFFFF`) and warm gray surface (`#FAFAFA`); zero ambient color
13
+ - Todoist Red (`#DC4C3E`) reserved for the brand mark, the FAB "+", and the P1 priority flag — verbs only
14
+ - Four-tier priority flag system: P1 Red `#DC4C3E`, P2 Orange `#EB8909`, P3 Blue `#246FE0`, P4 outline gray
15
+ - Single-column task list — checkbox left, content middle, priority/date/project metadata in a small row beneath
16
+ - Round checkbox with priority-color border (empty) → filled with check (complete) → row strikethrough animation
17
+ - Quick-add modal triggered by floating "+" — full natural language input ("buy milk tomorrow at 6pm p1 #groceries")
18
+ - Today / Upcoming / Inbox / Projects / Filters & Labels — the canonical sidebar hierarchy
19
+ - System font (SF Pro Display / Text) at standard iOS weights
20
+ - Karma score and streak — small numbers in the profile, never the home screen
21
+ - Subtle shadows (`rgba(0,0,0,0.06)`) — the app is whisper-quiet by design
22
+
23
+ ## 2. Color Palette & Roles
24
+
25
+ ### Primary
26
+ - **Todoist Red** (`#DC4C3E`): The brand carmine — logomark, the floating "+" FAB, P1 priority flag, primary CTA, link color in marketing.
27
+ - **Red Pressed** (`#B53C30`): Active state on the FAB and primary buttons.
28
+ - **Red Tint** (`#FBE5E2`): Background tint for the P1 row highlight on overdue tasks, or the selected-state behind a flag.
29
+
30
+ ### Priority Colors
31
+ - **P1 Red** (`#DC4C3E`): Highest priority — emergency, must-do-today.
32
+ - **P2 Orange** (`#EB8909`): High priority.
33
+ - **P3 Blue** (`#246FE0`): Medium priority.
34
+ - **P4 Gray** (transparent flag with `#808080` outline): No priority set — the default state.
35
+
36
+ ### Canvas, Surfaces & Dividers
37
+ - **Canvas White** (`#FFFFFF`): Primary canvas for the task list and all detail views.
38
+ - **Surface Gray** (`#FAFAFA`): Sidebar background, section header fill, project list zone.
39
+ - **Surface Gray 2** (`#F0F0F0`): Tap-state highlight on rows, completed-task background tint.
40
+ - **Divider** (`#EEEEEE`): Hairline between task rows, between sections, between sidebar items.
41
+ - **Shadow Black** (`rgba(0,0,0,0.06)`): Standard whisper shadow on the FAB and quick-add card.
42
+
43
+ ### Text
44
+ - **Ink** (`#202020`): Primary text — task content, project names, nav titles.
45
+ - **Secondary** (`#808080`): Date metadata, project tag, label text, comment counts.
46
+ - **Tertiary** (`#B0B0B0`): Placeholder text, disabled labels, "no due date".
47
+ - **Completed Strike** (`#B0B0B0`): The strikethrough color on a checked-off task.
48
+
49
+ ### Semantic
50
+ - **Success Green** (`#058527`): Karma "Goal completed!" toast, sync-success indicators.
51
+ - **Warning Amber** (`#EB8909`): Sync warnings, P2 flag — shares the priority color.
52
+ - **Error Red** (`#D1453B`): Form validation, "Failed to sync" banners.
53
+ - **Info Blue** (`#246FE0`): Hyperlinks inside task content, P3 flag.
54
+
55
+ ### Project Color Palette (User-Selectable)
56
+ Todoist gives users a fixed 12-swatch palette for projects and labels — these become the project-icon tints and the colored dots in the sidebar:
57
+ - **Berry Red** `#B8255F`, **Red** `#DB4035`, **Orange** `#FF9933`, **Yellow** `#FAD000`
58
+ - **Olive Green** `#AFB83B`, **Lime Green** `#7ECC49`, **Green** `#299438`, **Mint Green** `#6ACCBC`
59
+ - **Teal** `#158FAD`, **Sky Blue** `#14AAF5`, **Light Blue** `#96C3EB`, **Blue** `#4073FF`
60
+ - **Grape** `#884DFF`, **Violet** `#AF38EB`, **Lavender** `#EB96EB`, **Magenta** `#E05194`
61
+ - **Salmon** `#FF8581`, **Charcoal** `#808080`, **Grey** `#B8B8B8`, **Taupe** `#CCAC93`
62
+
63
+ ### Dark Mode
64
+ Todoist's dark mode is a true near-black with warm gray text — engineered for late-night planning sessions.
65
+ - **Dark Canvas** (`#1F1F1F`): Primary dark background.
66
+ - **Dark Surface 1** (`#282828`): Sidebar, sheets, quick-add card.
67
+ - **Dark Surface 2** (`#363636`): Pressed states, completed-task tint.
68
+ - **Dark Divider** (`#3D3D3D`): Hairlines.
69
+ - **Dark Text Primary** (`#E8E8E8`): Task content, nav titles.
70
+ - **Dark Text Secondary** (`#A0A0A0`): Date metadata, project tags.
71
+ - **Todoist Red (dark)** (`#E44332`): Slightly brighter for dark mode contrast.
72
+
73
+ ## 3. Typography Rules
74
+
75
+ ### Font Family
76
+ - **Primary**: `SF Pro Display` for sizes ≥20pt; `SF Pro Text` for body, rows, metadata
77
+ - **Weights available**: Regular (400), Medium (500), Semibold (600), Bold (700)
78
+ - **Fallback stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', Arial, sans-serif`
79
+ - **Web/marketing Google Fonts substitute**: `Inter` — closest open-source equivalent in metrics and rhythm; falls back gracefully on the marketing site
80
+ - **Monospace** (for the rare code/inline date display in quick-add hints): `SF Mono`
81
+
82
+ ### Hierarchy
83
+
84
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
85
+ |------|------|------|--------|-------------|----------------|-------|
86
+ | Large Nav Title | SF Pro Display | 34pt | 700 | 1.15 | -0.4pt | "Today", "Upcoming", "Inbox" |
87
+ | Inline Nav Title | SF Pro Display | 17pt | 600 | 1.2 | -0.2pt | Collapsed title after scroll |
88
+ | Section Header | SF Pro Text | 13pt | 600 | 1.2 | 0.6pt UPPERCASE | "Overdue", "Today", date dividers |
89
+ | Task Content | SF Pro Text | 16pt | 400 | 1.35 | -0.1pt | The main row text — the user's task |
90
+ | Task Content (Bold marked) | SF Pro Text | 16pt | 600 | 1.35 | -0.1pt | When task text contains **markdown bold** |
91
+ | Sub-task | SF Pro Text | 15pt | 400 | 1.3 | -0.1pt | Indented under a parent task |
92
+ | Date Metadata | SF Pro Text | 13pt | 400 | 1.2 | 0pt | "Tomorrow", "Mon 12 Jun", "Today 3:00 PM" |
93
+ | Date Overdue | SF Pro Text | 13pt | 500 | 1.2 | 0pt | Same size, weight bumps and color flips to Red |
94
+ | Project Tag | SF Pro Text | 13pt | 400 | 1.2 | 0pt | Inline "# Groceries" w/ colored dot |
95
+ | Comment Count | SF Pro Text | 13pt | 400 | 1.2 | 0pt | "💬 2" next to the task |
96
+ | Sidebar Item | SF Pro Text | 15pt | 500 | 1.25 | 0pt | "Today", "Upcoming", "Inbox" — left rail |
97
+ | Project Name (Sidebar) | SF Pro Text | 15pt | 400 | 1.25 | 0pt | User-named project rows |
98
+ | Quick-Add Input | SF Pro Display | 17pt | 400 | 1.3 | 0pt | The natural-language entry field |
99
+ | Button Label | SF Pro Text | 16pt | 600 | 1.0 | 0pt | "Add task", "Complete", "Schedule" |
100
+ | FAB Plus Glyph | SF Pro Display | 28pt | 400 | 1.0 | 0pt | The "+" inside the floating action button |
101
+ | Tab Label | SF Pro Text | 10pt | 500 | 1.0 | 0.1pt | Bottom tab bar (iPad/tablet only) |
102
+ | Caption | SF Pro Text | 12pt | 400 | 1.3 | 0pt | "No tasks today" empty-state copy |
103
+ | Karma Number | SF Pro Display | 28pt | 700 | 1.0 | -0.2pt | Profile screen karma points |
104
+
105
+ ### Principles
106
+ - **System font, no exceptions**: Todoist intentionally uses SF Pro to feel native — no custom face, no exotic weights.
107
+ - **Weight stack 400 / 500 / 600 / 700**: Regular for task content, Medium for sidebar, Semibold for nav, Bold for the largest title only.
108
+ - **Tight tracking at display sizes**: -0.4pt at 34pt, -0.1pt on task content, 0 at body.
109
+ - **Date metadata is the second-loudest element** after task content — it's color-coded (overdue red, today green, future gray) but weight stays at 400 unless overdue.
110
+ - **Section headers are always 13pt SEMIBOLD UPPERCASE with 0.6pt tracking** — this is the section-divider rhythm used across Today / Upcoming / Projects.
111
+ - **Markdown in task content is honored**: `**bold**` and `_italic_` render inline at the same 16pt size with weight 600 / italic style.
112
+ - **Strikethrough on completion**: text color shifts to `#B0B0B0`, weight stays the same, line-through stroke is 1pt at midline.
113
+ - **Dynamic Type respected on task content, sidebar, and large titles**; fixed on section headers, date metadata, tab labels, and the FAB glyph.
114
+
115
+ ## 4. Component Stylings
116
+
117
+ ### The Task Row (The Hero Component)
118
+
119
+ The single most important component in Todoist. Built for a list of 5, 50, or 500 tasks with consistent rhythm and zero visual noise.
120
+
121
+ - **Height**: 52pt minimum; expands to fit wrapped content
122
+ - **Layout**: 16pt leading padding → 22pt circular checkbox → 12pt gap → task content column → trailing chevron / count icons → 16pt trailing padding
123
+ - **Checkbox**:
124
+ - 22pt circle, 1.5pt stroke
125
+ - Empty + P4: `#B0B0B0` stroke, transparent fill
126
+ - Empty + P3: `#246FE0` stroke (Blue), `rgba(36,111,224,0.08)` fill
127
+ - Empty + P2: `#EB8909` stroke (Orange), `rgba(235,137,9,0.08)` fill
128
+ - Empty + P1: `#DC4C3E` stroke (Red), `rgba(220,76,62,0.10)` fill
129
+ - Complete (any priority): filled with the priority color, white check glyph `checkmark` 12pt
130
+ - Hit area: 44pt
131
+ - **Task content column**:
132
+ - Line 1: SF Pro Text 16pt Regular `#202020` — task content
133
+ - Line 2 (metadata row, only if any meta exists): horizontal row with — date pill (left), project tag with colored dot (right), comment icon + count, label chips
134
+ - **Date pill**: text only — no background. Color: green `#058527` for today, red `#DC4C3E` for overdue, gray `#808080` for future
135
+ - **Project tag**: small 8pt colored dot from the project's color + `# Project Name` in SF Pro Text 13pt
136
+ - **Trailing**: a `chevron.right` 14pt `#B0B0B0` if the task has subtasks/comments
137
+ - **Tap states**: row background fades to `#F0F0F0` for 80ms; on complete, the checkbox fills, then the entire row strikes through and animates out with a 250ms ease — the row collapses upward, the next row slides up
138
+ - **Long-press**: drag-to-reorder with the row lifted at `rgba(0,0,0,0.12) 0 4px 12px` shadow
139
+ - **Swipe right**: schedule date — reveals a green `#058527` zone with a calendar icon; lift to confirm "Tomorrow"
140
+ - **Swipe left**: reveals two zones — yellow `#EB8909` (postpone) and gray (more)
141
+ - **Dividers**: 0.5pt `#EEEEEE` between rows, full-width minus 64pt leading inset (aligned with task content, NOT the checkbox)
142
+
143
+ ### The Floating Add Button (FAB — The Icon)
144
+
145
+ - **Diameter**: 56pt
146
+ - **Position**: bottom-right, 24pt inset from right edge, 24pt above the tab bar (or 88pt above safe area on phones without a tab bar)
147
+ - **Background**: `#DC4C3E` solid Todoist Red
148
+ - **Glyph**: "+" SF Pro Display 28pt Regular, color `#FFFFFF`, dead-centered
149
+ - **Shadow**: `rgba(220,76,62,0.35) 0 6px 16px` — the shadow is a tinted red, NOT generic black; this is a signature detail
150
+ - **Pressed**: background `#B53C30`, scale 0.94, shadow tightens to 4px
151
+ - **Tap haptic**: `.impactOccurred(.medium)` on tap; on quick-add commit `.notificationOccurred(.success)`
152
+
153
+ ### Quick-Add Card (The Natural-Language Input)
154
+
155
+ - **Trigger**: tap on the FAB → modal sheet slides up from the bottom with spring damping
156
+ - **Container**: white card, 16pt corner radius (top corners only on partial sheet), 16pt padding, full content width
157
+ - **Title row**: "Add task" in SF Pro Display 17pt Semibold, project context in Secondary if applicable
158
+ - **Input**: multi-line text field, SF Pro Display 17pt Regular `#202020`, placeholder "Take out the trash today p1 #home" in `#B0B0B0`
159
+ - **Smart parsing chips** (appear inline as the user types matches): "tomorrow" → blue date chip; "p1" → red priority chip; "#groceries" → project chip with color dot
160
+ - **Bottom action bar** (left-aligned, horizontal scroll): Date · Priority · Project · Labels · Reminders — each a 32pt-tall pill button with icon + label
161
+ - **Right side**: "Add task" pill button — disabled `#F0F0F0` `#B0B0B0` text until input has content, enabled `#DC4C3E` `#FFFFFF` once it does
162
+ - **Cancel**: drag-down or tap outside; haptic `.selectionChanged()` on each smart-parsed chip
163
+
164
+ ### Sidebar (iPad and "Menu" Drawer on iPhone)
165
+
166
+ - **Width**: 280pt on iPad; full-screen drawer on iPhone
167
+ - **Background**: Surface Gray `#FAFAFA`
168
+ - **Header row**: 64pt — user avatar (40pt circle), name SF Pro Text 16pt Semibold, premium badge if applicable
169
+ - **System filters** (always at top): Inbox, Today, Upcoming, Filters & Labels — each a 44pt row, 24pt SF Symbol icon in `#202020`, label 15pt Medium, count badge `#808080` 13pt right-aligned
170
+ - **Today** count badge: when > 0 and includes overdue, badge is `#DC4C3E` background `#FFFFFF` text
171
+ - **Projects header**: "My Projects" SF Pro Text 13pt Semibold UPPERCASE `#808080` with 0.6pt tracking, "+" button to add project on right
172
+ - **Project row**: 44pt, 12pt colored dot (project color) + project name 15pt Regular + count badge
173
+ - **Sub-projects**: indented 16pt with a thin tree line connecting to parent
174
+ - **Selected state**: row background `rgba(220,76,62,0.08)` (red 8% tint), 3pt leading red bar
175
+ - **Drag to reorder**: 250ms scale-up on long-press
176
+
177
+ ### Empty States
178
+
179
+ - **Today (no tasks)**: cartoon illustration of a calm illustration (a person reading a book in a hammock), 200pt square, centered. Heading "Looks like the day is yours." SF Pro Display 22pt Semibold. Subhead "No tasks scheduled for today." SF Pro Text 15pt `#808080`. Below: a "Plan my day" link in `#DC4C3E`.
180
+ - **Inbox empty**: smaller illustration, "Your Inbox is empty" — celebrating the zero-inbox moment.
181
+
182
+ ### Cards & Containers
183
+
184
+ **Project Detail View**
185
+ - Top of screen: large project name title (34pt Bold), color dot inline
186
+ - Below: section toggles (List / Board) — Board is reserved for premium
187
+ - Sections within a project: collapsible — "Section name" 18pt Semibold `#202020`, chevron-down/up 14pt right, divider 0.5pt below
188
+
189
+ **Date Picker Sheet**
190
+ - 50% sheet from bottom
191
+ - Calendar grid — 7-col, day numbers in SF Pro Display 16pt Regular `#202020`
192
+ - Today: red ring 2pt outline, no fill
193
+ - Selected date: filled `#DC4C3E` circle, white number
194
+ - Quick-pick chips above the calendar: "Today · Tomorrow · This Weekend · Next Week" — each a 32pt-tall outlined pill
195
+
196
+ ### Buttons
197
+
198
+ **Primary CTA ("Add task", "Save", "Complete")**
199
+ - Background: `#DC4C3E`
200
+ - Text: `#FFFFFF`, SF Pro Text 16pt Semibold
201
+ - Padding: 12pt vertical, 24pt horizontal
202
+ - Corner radius: 8pt
203
+ - Height: 44pt minimum
204
+ - Pressed: background `#B53C30`, scale 0.97
205
+ - Haptic: `.impactOccurred(.medium)`
206
+
207
+ **Secondary Outline Button ("Cancel", "Reschedule")**
208
+ - Background: transparent
209
+ - Border: 1pt `#EEEEEE`
210
+ - Text: `#202020`, SF Pro Text 16pt Semibold
211
+ - Padding: 12pt vertical, 24pt horizontal
212
+ - Corner radius: 8pt
213
+
214
+ **Text-Only Action ("Skip", "Remove date")**
215
+ - No background or border
216
+ - Text: `#DC4C3E`, SF Pro Text 15pt Regular
217
+ - 44pt hit target
218
+
219
+ **Smart Chip (in quick-add)**
220
+ - Background: tint of the chip color at 12% (e.g., `rgba(36,111,224,0.12)` for blue date chip)
221
+ - Text: solid chip color, SF Pro Text 13pt Medium
222
+ - Corner radius: 6pt
223
+ - Padding: 4pt vertical, 8pt horizontal
224
+ - Dismissable via tap → "x" icon appears
225
+
226
+ ### Navigation
227
+
228
+ **Large-Title Nav Bar**
229
+ - Height: 96pt collapsed → 44pt scrolled
230
+ - Background: `#FFFFFF`, blurs to `.regularMaterial` when content scrolls beneath
231
+ - Title: SF Pro Display 34pt Bold `#202020`
232
+ - Leading: hamburger menu icon (iPhone) — 22pt SF Symbol `line.horizontal.3`
233
+ - Trailing: 22pt sort/filter icon `slider.horizontal.3`
234
+
235
+ **Section Header (within a day's tasks)**
236
+ - Height: 36pt
237
+ - Sticky on scroll
238
+ - Label: SF Pro Text 13pt Semibold UPPERCASE `#808080`, 0.6pt tracking
239
+ - For "Overdue" section: label is `#DC4C3E`, with a small chevron to collapse
240
+ - Background: `#FFFFFF` with 0.5pt divider below
241
+
242
+ **Tab Bar (iPad — Sidebar replaces this on phones)**
243
+ - Tabs: Today, Upcoming, Search, Browse — 4 tabs
244
+ - Active color: `#DC4C3E`, inactive `#808080`
245
+ - Tab labels visible always, SF Pro Text 10pt Medium
246
+
247
+ ### Distinctive Components
248
+
249
+ **Priority Flag Glyph**
250
+ - Used on every task to indicate priority — appears as a small flag icon (SF Symbol `flag.fill`) at 14pt
251
+ - P1: filled `#DC4C3E`
252
+ - P2: filled `#EB8909`
253
+ - P3: filled `#246FE0`
254
+ - P4: outlined `flag` (not filled), color `#B0B0B0`
255
+ - Appears in the swipe-action UI and as a tap option in the metadata bar of quick-add
256
+
257
+ **Karma Flame**
258
+ - Small flame icon in the profile, SF Pro display 14pt — animates with a subtle 800ms ember pulse when streak is active
259
+ - Color: a gradient from `#FFB400` (yellow) at the base to `#DC4C3E` (red) at the tip
260
+
261
+ **Streak Indicator**
262
+ - Number + flame in the profile header, 24pt SF Pro Display Bold `#202020` for the number
263
+ - Tap opens karma history
264
+
265
+ **Sub-task Tree Lines**
266
+ - 1pt vertical line in `#EEEEEE` connecting indented subtasks to their parent
267
+ - Drawn from the parent checkbox down, with a 12pt horizontal stub to the subtask's checkbox
268
+
269
+ ## 5. Layout Principles
270
+
271
+ ### Spacing System
272
+ - Base unit: 4pt
273
+ - Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 64
274
+ - Standard horizontal margin: 16pt on phones, 24pt on iPad
275
+ - Vertical spacing between tasks: 0 (they share dividers); 16pt between sections; 32pt between groups (e.g., Today / Tomorrow)
276
+
277
+ ### Grid & Container
278
+ - Content width: full device width minus 0pt horizontal margins (rows are edge-to-edge)
279
+ - Task rows: single column, full width
280
+ - Sidebar: 280pt on iPad, full-screen drawer on iPhone
281
+
282
+ ### Whitespace Philosophy
283
+ - **Density is the point**: Todoist is one of the densest task apps — a 52pt row with content at 16pt and metadata at 13pt fits 12+ tasks on an iPhone screen
284
+ - **Vertical rhythm via dividers, not gaps**: hairline 0.5pt `#EEEEEE` between rows; rows themselves are touching
285
+ - **Sections breathe with 16pt header padding** above the section title and 8pt below before the first task
286
+ - **The FAB is the only floating element** — everything else is inline
287
+
288
+ ### Border Radius Scale
289
+ - Square (0pt): task row backgrounds, dividers
290
+ - Small (4pt): smart-parsing chips in quick-add, badge backgrounds
291
+ - Standard (8pt): primary buttons, quick-add input, date picker date cells
292
+ - Medium (12pt): bottom sheets, popovers
293
+ - Comfortable (16pt): modal sheet top corners, quick-add card
294
+ - Full Pill (500pt): action chips in quick-add bottom bar, count badges
295
+ - Circle (50%): checkboxes, project color dots, FAB
296
+
297
+ ## 6. Depth & Elevation
298
+
299
+ | Level | Treatment | Use |
300
+ |-------|-----------|-----|
301
+ | Flat (Level 0) | No shadow | Task rows, section backgrounds, canvas |
302
+ | Card (Level 1) | `rgba(0,0,0,0.06) 0 1px 4px` | Quick-add card, date picker, popovers |
303
+ | Floating (Level 2) | `rgba(220,76,62,0.35) 0 6px 16px` | **The FAB only** — a tinted red shadow, not black |
304
+ | Overlay (Level 3) | `rgba(0,0,0,0.12) 0 8px 24px` | Sheets, modals on tap |
305
+ | Sheet (Level 4) | `rgba(0,0,0,0.16) 0 -8px 24px` | Bottom sheet (quick-add, date picker) |
306
+ | Blur Material | `.regularMaterial` over `#FFFFFF` at 92% | Nav bar when content scrolls beneath |
307
+
308
+ **Shadow Philosophy**: Todoist is content-first and almost flat. The only meaningfully elevated element is the FAB, which gets a TINTED RED shadow (not generic black) to reinforce its identity — this is one of the most-copied details in the app. Everything else uses whisper shadows (0.06 opacity) or none at all. Cards don't pop; they sit.
309
+
310
+ ### Motion
311
+ - **Checkbox tap**: 200ms ease-out — fill color animates from transparent to priority color, check glyph fades in from 0 to 1
312
+ - **Task complete**: 80ms hold → 250ms ease-out — entire row strikes through, fades to 60% opacity, then collapses upward; the next row slides up
313
+ - **Task uncomplete (undo)**: reverse animation, row slides back into place
314
+ - **Swipe schedule (right swipe)**: row drags right, green zone reveals, lift to confirm — `.notificationOccurred(.success)` haptic
315
+ - **FAB tap**: scale 1.0 → 0.94 → 1.0 over 150ms, `.impactOccurred(.medium)` haptic
316
+ - **Quick-add sheet appear**: spring damping 0.8, response 0.4s, slides from bottom
317
+ - **Smart-parsing chip appear**: 200ms ease-out, scale 0.8 → 1.0 with subtle fade
318
+ - **Karma flame pulse**: 800ms ease-in-out, opacity 0.7 → 1.0, infinite when streak active
319
+ - **Project drag-reorder**: long-press 400ms → scale 1.0 → 1.03, shadow lifts to Level 2
320
+
321
+ ## 7. Do's and Don'ts
322
+
323
+ ### Do
324
+ - Use Todoist Red `#DC4C3E` for the FAB, the brand mark, the P1 flag, and primary CTAs — verbs only
325
+ - Give the FAB a tinted red shadow `rgba(220,76,62,0.35) 0 6px 16px` — not generic black
326
+ - Use the four-tier priority system exactly as defined: P1 `#DC4C3E`, P2 `#EB8909`, P3 `#246FE0`, P4 gray outline
327
+ - Use SF Pro Display for display sizes and SF Pro Text for body — no custom face
328
+ - Keep the task list edge-to-edge with 0.5pt `#EEEEEE` dividers; the row is the layout
329
+ - Use the colored-dot pattern for projects — 8pt dot from the project color + "# Name" in 13pt
330
+ - Honor Markdown in task content — `**bold**` and `_italic_` render inline
331
+ - Use `#202020` for primary text — slightly warm, never pure black
332
+ - Use Surface Gray `#FAFAFA` for the sidebar and section header zones
333
+ - Use the strikethrough + fade-to-`#B0B0B0` pattern for completed tasks
334
+ - Animate task completion with a 250ms collapse-upward — the next row slides up
335
+
336
+ ### Don't
337
+ - Don't use pure black `#000000` for body text — `#202020` is the correct value
338
+ - Don't use Todoist Red for ambient decoration — it's reserved for the brand mark, FAB, P1, and primary CTAs
339
+ - Don't add color blocks behind task rows — task rows are always white, the color comes from the priority checkbox stroke and the project dot
340
+ - Don't replace the FAB shadow with a generic black drop-shadow — the tinted red shadow is signature
341
+ - Don't use a custom font — Todoist is intentionally a native iOS citizen with SF Pro
342
+ - Don't introduce kanban boards on phones — Todoist is a vertical list on iPhone; Board view is reserved for iPad and premium
343
+ - Don't gamify the home screen with karma — karma lives in the profile, never the task list
344
+ - Don't widen the project-color palette — stick to the 20-swatch system palette so user projects are recognizable
345
+ - Don't use heavy shadows — only the FAB gets meaningful elevation
346
+ - Don't compress the row below 52pt — touchability is non-negotiable
347
+ - Don't show priority flags larger than 14pt — they punctuate, they don't shout
348
+
349
+ ## 8. Responsive Behavior
350
+
351
+ ### Device Sizes
352
+ | Device | Width | Key Changes |
353
+ |--------|-------|-------------|
354
+ | iPhone SE (3rd gen) | 375pt | Sidebar is a full-screen drawer triggered by hamburger; FAB pinned bottom-right |
355
+ | iPhone 13/14/15 | 390pt | Standard layout — single-column task list, FAB bottom-right |
356
+ | iPhone 15/16 Pro | 393pt | Dynamic Island respected in nav bar |
357
+ | iPhone 15/16 Pro Max | 430pt | Slightly wider task rows; same hierarchy |
358
+ | iPad Mini | 744pt | Sidebar appears at 280pt, task list takes the remaining column |
359
+ | iPad Pro 11" | 834pt | 3-column layout: sidebar + task list + detail pane for selected task |
360
+ | iPad Pro 13" | 1024pt | 3-column persistent, detail pane shows full task notes/comments |
361
+
362
+ ### Dynamic Type
363
+ - Large nav titles, task content, sidebar items, subtask: full scale
364
+ - Section headers, date metadata, project tags, tab labels, FAB glyph: fixed (layout-sensitive)
365
+ - Quick-add input: scales but clamps at 22pt max
366
+
367
+ ### Orientation
368
+ - iPhone: portrait-locked
369
+ - iPad: rotates — sidebar persistent in landscape, collapses to overlay in portrait
370
+ - Quick-add modal works in both orientations
371
+
372
+ ### Touch Targets
373
+ - Task row: 52pt minimum height — the whole row is tappable, with the checkbox as a separate hit zone
374
+ - Checkbox: 44pt hit area on a 22pt glyph
375
+ - FAB: 56pt — full-button hit
376
+ - Sidebar row: 44pt
377
+ - Smart chip: 32pt height, 8pt internal padding, hit area expands to 44pt vertically
378
+
379
+ ### Safe Area Handling
380
+ - Top: safe area honored — large nav title starts at safe-area top + 16pt
381
+ - Bottom: FAB sits 24pt above tab bar or 88pt above home indicator if no tab bar
382
+ - Sides: 0pt horizontal margin on rows; 16pt on nav and FAB inset
383
+
384
+ ## 9. Quick Reference Cheat Sheet
385
+
386
+ ### Quick Color Reference
387
+ - Canvas: `#FFFFFF`
388
+ - Surface Gray: `#FAFAFA`
389
+ - Divider: `#EEEEEE`
390
+ - Ink (primary text): `#202020`
391
+ - Secondary text: `#808080`
392
+ - Tertiary / Completed: `#B0B0B0`
393
+ - **Todoist Red** (FAB / P1 / brand): `#DC4C3E`
394
+ - **Red Pressed**: `#B53C30`
395
+ - **P2 Orange**: `#EB8909`
396
+ - **P3 Blue**: `#246FE0`
397
+ - Success Green: `#058527`
398
+ - Error Red: `#D1453B`
399
+ - Project dot: any of the 20-swatch project palette
400
+
401
+ ### Example Component Prompts
402
+ - "Create a SwiftUI Todoist task row: 52pt tall, with a 22pt circular checkbox on the left (P1 red `#DC4C3E` stroke, transparent fill when empty; filled solid `#DC4C3E` with a white check when complete). To the right of the checkbox, task content in SF Pro Text 16pt Regular `#202020` ('Buy milk and eggs'). Below the content, a metadata row with a date pill 'Today' in `#058527` green and a project tag with a small 8pt blue dot and '# Groceries' in SF Pro Text 13pt Regular `#808080`. The whole row has a 0.5pt `#EEEEEE` bottom divider inset 64pt from the left."
403
+ - "Build the Todoist floating action button: 56pt circle, position bottom-right with 24pt insets, background solid `#DC4C3E`. The '+' glyph is SF Pro Display 28pt Regular white, dead-centered. Critically: the shadow is `rgba(220,76,62,0.35) 0 6px 16px` — a tinted red shadow, not black. On press, scale to 0.94 and shadow tightens. Haptic `.impactOccurred(.medium)`."
404
+ - "Design the quick-add card: 50%-height bottom sheet with 16pt top corner radius, white background. At the top, 'Add task' in SF Pro Display 17pt Semibold. Below, a multi-line text input in SF Pro Display 17pt Regular with placeholder 'Take out the trash today p1 #home' in `#B0B0B0`. As the user types matches, render inline smart-parsing chips: date matches get a blue `rgba(36,111,224,0.12)` background pill with `#246FE0` text; '#projectname' gets a tinted chip with the project color dot. Bottom action bar with 32pt outlined pills for Date · Priority · Project · Labels · Reminders. Right side: 'Add task' button in `#DC4C3E`."
405
+ - "Create the section header for 'Today' tasks: 36pt tall, sticky on scroll, white background with 0.5pt `#EEEEEE` bottom divider. Label is 'TODAY' in SF Pro Text 13pt Semibold UPPERCASE `#808080` with 0.6pt tracking. For an 'Overdue' header, the label color flips to `#DC4C3E` and gets a small chevron to collapse."
406
+ - "Build the priority flag swipe action: when the user swipes left on a task row, reveal a horizontal action zone. The left half is an orange `#EB8909` zone with a small `flag.fill` icon and 'Postpone'; the right half is gray with 'More'. Lift to confirm. On swipe right, reveal a green `#058527` zone with 'Today' for instant scheduling. Haptic `.notificationOccurred(.success)` on confirm."
407
+
408
+ ### Iteration Guide
409
+ 1. Canvas is `#FFFFFF`; sidebar and section backgrounds are Surface Gray `#FAFAFA`
410
+ 2. Todoist Red `#DC4C3E` is reserved for verbs — FAB, P1, primary CTAs, brand mark
411
+ 3. Priority is communicated via the checkbox stroke color, NEVER the row background
412
+ 4. The FAB shadow is tinted red `rgba(220,76,62,0.35) 0 6px 16px` — this is the signature
413
+ 5. Use SF Pro Display ≥20pt and SF Pro Text ≤17pt — no custom face
414
+ 6. Rows are 52pt tall, edge-to-edge, divided by 0.5pt `#EEEEEE` hairlines inset 64pt
415
+ 7. Completed task: strikethrough + color `#B0B0B0` + 250ms collapse-upward animation
416
+ 8. Quick-add is a bottom sheet — natural-language input with inline smart-parsing chips
417
+ 9. Dark mode is `#1F1F1F` canvas with `#E8E8E8` text; Todoist Red brightens slightly to `#E44332`
418
+ 10. Keep it whisper-quiet — Todoist is a tool, not a destination