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 Waze (iOS)
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Waze's iOS app is a community-driven driving game disguised as a navigation app. Where Apple Maps wants you to forget the UI exists and Google Maps wants you to find a place, Waze wants you to drive with friends — and every visual decision flows from that emotional brief. The map is loud, the icons are cartoony, the hazard reports are technicolor speech bubbles, and the brand voice is closer to a children's puzzle book than a serious mapping product. This is by design: Waze's superpower is its drivers, and the playful aesthetic makes contributing (reporting a police trap, a pothole, a crash) feel like a game, not a chore.
6
+
7
+ The accent is **Waze Purple** (`#7E55BE`) — the iconic violet of the Waze chat-bubble logomark, the navigation polyline, and the floating action button. Surrounding it is **Waze Cyan** (`#33CCFF`) — used on the location puck and informational glyphs, and on the second layer of the Waze logo. Together they create the signature electric cool-tone duo that no other map app uses. Pinned over the map: red `#EF6A65` police reports, orange `#F69833` traffic, yellow `#F9C42E` road closures, green `#75C73E` cleared hazards, each rendered as a chunky cartoon speech bubble with a small Wazer emoji avatar. The map cartography is more saturated than Apple's — bright cyan water, mint-green parks, warm white land.
8
+
9
+ Typography is **Boing**, Waze's proprietary rounded sans designed for both wayfinding legibility and brand warmth — the rounded terminals echo the cartoon speech bubbles. Boing has Regular, Bold, and Black weights, plus a Boing Mono for in-app distance/time display. Where Boing isn't available, the fallback is `SF Pro Rounded` — the rounded variant of SF Pro on iOS — chosen specifically because Waze leans into roundness as a brand attribute. The hierarchy is bold and big: 28pt-32pt street names in Boing Black, 18pt step instructions, tabular figures on every "0.4 mi" or "12 min" with a slight letter spacing for breathing room at glance-while-driving.
10
+
11
+ **Key Characteristics:**
12
+ - **Waze Purple** (`#7E55BE`) as the primary brand — logo, polyline, FAB, primary CTAs
13
+ - **Waze Cyan** (`#33CCFF`) as the secondary brand — current-location puck, info glyphs, second logo color
14
+ - **Cartoon speech-bubble hazard reports** — Red police, Orange traffic, Yellow closures, Green cleared, with rounded corners and a triangular tail pointing to the location
15
+ - **Bright saturated cartography** — cyan water, mint parks, warm white roads — louder than Apple Maps or Google Maps
16
+ - **Boing typeface** — rounded proprietary sans by Waze; SF Pro Rounded as iOS fallback
17
+ - **Floating Wazer avatar** — the user's emoji-style mood character on the map, "happy", "stuck in traffic", "lucky"
18
+ - **Bottom-up reporting flow** — tap the floating "+" report button, choose hazard type from a wheel of cartoon icons
19
+ - **Big purple "Go" button** when starting navigation — full-width bottom CTA at 56pt height
20
+ - **Speed-limit tile and current-speed indicator** — circular badges in the bottom-left during navigation, US-style speed-limit signage
21
+ - **ETA shared with friends** — banner asking to share with Beacon, social moments built into the trip flow
22
+ - **Carpool integration** — Waze Carpool branding lives inside the same chrome (less prominent post-2024)
23
+
24
+ ## 2. Color Palette & Roles
25
+
26
+ ### Primary Brand
27
+ - **Waze Purple** (`#7E55BE`): The brand violet — logomark gradient stop, navigation polyline, FAB background, primary CTAs ("Go", "Start"), selected-state on category chips.
28
+ - **Waze Purple Deep** (`#5B3C9A`): Pressed state on FAB and primary buttons.
29
+ - **Waze Purple Tint** (`#E8DEF5`): Selected row backgrounds, info banner fills.
30
+ - **Waze Cyan** (`#33CCFF`): The cool counterpart — current-location puck, info icon fills, the lighter half of the gradient logo.
31
+ - **Cyan Deep** (`#0099E5`): Pressed state on cyan buttons, cyan glyphs.
32
+
33
+ ### Hazard Report Colors (The Cartoon System)
34
+ - **Police Red** (`#EF6A65`): Police reports (speed traps, checkpoints) — chunky speech bubble.
35
+ - **Traffic Orange** (`#F69833`): Traffic jams, congestion alerts.
36
+ - **Closure Yellow** (`#F9C42E`): Road closures, construction.
37
+ - **Cleared Green** (`#75C73E`): Recently cleared hazards (with timer), gas-station deals.
38
+ - **Hazard Brown** (`#8B6F47`): Potholes, debris, hazard-on-shoulder.
39
+ - **Camera Gray** (`#6B6B6B`): Speed cameras, red-light cameras.
40
+
41
+ ### Map Cartography
42
+ - **Map Cream** (`#FFFCF2`): Warm white land surface (slightly cooler than Apple Maps).
43
+ - **Map Water** (`#9BDEEF`): Bright cyan water — louder and cooler than Apple's water blue.
44
+ - **Map Park** (`#C5E89B`): Mint green parks.
45
+ - **Map Road Major** (`#FFFFFF`): Major roads, white with a soft outline.
46
+ - **Map Road Minor** (`#F5F0E5`): Minor roads.
47
+ - **Map Highway** (`#FFD970`): Highway fill, slightly more saturated than Apple's.
48
+ - **Map Building** (`#E8E2D1`): Building footprints.
49
+ - **Map Label** (`#3D3D3D`): Map label text — slate gray.
50
+
51
+ ### Canvas, Surfaces & Dividers
52
+ - **Card Canvas** (`#FFFFFF`): Place card, sheets, bottom panels.
53
+ - **Surface Gray** (`#F5F5F7`): Search field, section backgrounds.
54
+ - **Surface Gray 2** (`#EAEAEC`): Pressed states.
55
+ - **Divider** (`#D6D6D9`): Hairlines.
56
+
57
+ ### Text
58
+ - **Ink** (`#1A1A1A`): Primary text — Waze's slightly warm near-black.
59
+ - **Secondary** (`#6B6B6B`): Subtitles, addresses, ETA secondary info.
60
+ - **Tertiary** (`#A0A0A0`): Placeholder, disabled.
61
+ - **Inverse White** (`#FFFFFF`): Text on Waze Purple and other saturated backgrounds.
62
+
63
+ ### Semantic
64
+ - **Success Green** (`#34C759`): "On your way" confirmations.
65
+ - **Warning Amber** (`#F9C42E`): Speed warning, slow traffic ahead.
66
+ - **Error Red** (`#EF6A65`): "Route blocked", form errors.
67
+ - **Info Cyan** (`#33CCFF`): Tips, info banners.
68
+
69
+ ### Dark Mode (Night Driving Mode)
70
+ Waze's dark mode is engineered for night driving — a true near-black map with the same loud accent colors maintained for at-a-glance legibility.
71
+ - **Dark Map Land** (`#1E2026`): Cool charcoal over land.
72
+ - **Dark Map Water** (`#0F3D5E`): Deep teal-navy water.
73
+ - **Dark Map Park** (`#1F3A1F`): Dark forest.
74
+ - **Dark Card Surface** (`#262932`): Sheets, panels.
75
+ - **Dark Surface 2** (`#3A3D47`): Pressed states.
76
+ - **Dark Divider** (`#4A4D58`): Hairlines.
77
+ - **Dark Text Primary** (`#FFFFFF`).
78
+ - **Dark Text Secondary** (`#B8BAC5`).
79
+ - **Waze Purple (Dark)** (`#9F76DA`): Brightened for dark legibility.
80
+ - **Waze Cyan (Dark)** (`#5DD9FF`).
81
+
82
+ ## 3. Typography Rules
83
+
84
+ ### Font Family
85
+ - **Primary**: `Boing` — proprietary rounded sans by Waze, with Regular, Bold, and Black weights, plus a `Boing Mono` for tabular numerics
86
+ - **Fallback stack**: `'Boing', -apple-system-rounded, 'SF Pro Rounded', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Quicksand', sans-serif`
87
+ - **Web/marketing Google Fonts substitute**: `Quicksand` (open-source rounded sans, closest to Boing's warmth) or `Nunito` for a more neutral fallback
88
+ - **iOS native fallback**: `SF Pro Rounded` — explicitly the rounded variant, available via `.systemRounded` design parameter on iOS 13+
89
+ - **Tabular figures**: Mandatory on distances ("0.4 mi"), times ("12 min"), ETAs ("6:14 PM"), speeds ("65 mph")
90
+
91
+ ### Hierarchy
92
+
93
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
94
+ |------|------|------|--------|-------------|----------------|-------|
95
+ | Hero Street Name | Boing | 32pt | 900 (Black) | 1.1 | -0.4pt | "Market Street" on next-turn card |
96
+ | Next Turn Distance | Boing Mono | 28pt | 700 (Bold) | 1.1 | 0pt tnum | "0.4 mi" |
97
+ | Step Title | Boing | 22pt | 700 | 1.2 | -0.2pt | "Turn right onto Market St" |
98
+ | Step Subtitle | Boing | 17pt | 400 | 1.3 | 0pt | "in 0.4 mi" |
99
+ | ETA Bottom Time | Boing Mono | 24pt | 700 | 1.1 | 0pt tnum | "12 min" |
100
+ | ETA Distance | Boing Mono | 17pt | 500 | 1.2 | 0pt tnum | "5.2 mi · 6:14 PM" |
101
+ | Place Card Title | Boing | 26pt | 700 | 1.15 | -0.3pt | "Tartine Bakery" |
102
+ | Place Card Subtitle | Boing | 15pt | 400 | 1.3 | 0pt | "Bakery · French · $$" |
103
+ | Search Placeholder | Boing | 17pt | 400 | 1.3 | 0pt | "Where to?" |
104
+ | Section Header | Boing | 13pt | 700 | 1.2 | 0.6pt UPPERCASE | "RECENT", "FAVORITES" |
105
+ | List Row Title | Boing | 17pt | 500 | 1.3 | 0pt | Recent destination |
106
+ | List Row Subtitle | Boing | 13pt | 400 | 1.2 | 0pt | Address |
107
+ | Speed Limit Number | Boing Mono | 22pt | 900 (Black) | 1.0 | 0pt tnum | "35" in the speed-limit circle |
108
+ | Current Speed | Boing Mono | 32pt | 700 | 1.0 | 0pt tnum | "42" big number, mph small |
109
+ | Hazard Speech Title | Boing | 14pt | 700 | 1.1 | 0pt | "Police" / "Traffic" |
110
+ | Hazard Speech Time | Boing | 11pt | 400 | 1.1 | 0pt | "5 min ago" |
111
+ | Button Primary | Boing | 17pt | 700 | 1.0 | 0pt | "Go", "Start", "Report" |
112
+ | Caption | Boing | 12pt | 400 | 1.3 | 0pt | Photo credits, fine print |
113
+ | Tab Label | Boing | 10pt | 500 | 1.0 | 0.1pt | Bottom tab labels |
114
+
115
+ ### Principles
116
+ - **Roundness is the brand**: Boing has rounded terminals on every glyph — the typography mirrors the cartoon speech bubbles and the rounded buttons. SF Pro Rounded is the only correct fallback.
117
+ - **Boing Mono for ALL numerics** — distances, times, speeds, ETAs. Variable widths break the navigation glance pattern.
118
+ - **Black (900) reserved for hero moments** — street names on next-turn cards, the speed-limit number. Almost everything else is Bold (700) or Regular (400).
119
+ - **Tight tracking at display sizes** (-0.4pt at 32pt), 0 at body.
120
+ - **Big and bold for driving glance**: street names are 32pt Black because the user reads them at 60 mph; subtle, light type is not appropriate
121
+ - **UPPERCASE section headers with 0.6pt tracking** — the same iOS rhythm as other apps, but in Boing Bold (700)
122
+ - **Dynamic Type honored on the place card and search results**; FIXED on the next-turn card, ETA bar, speed-limit number, hazard speech bubbles (all layout- and glance-critical)
123
+
124
+ ## 4. Component Stylings
125
+
126
+ ### The Cartoon Hazard Speech Bubble (The Signature)
127
+
128
+ The single most recognizable component in Waze. A chunky rounded rectangle that points to the hazard location like a speech bubble.
129
+
130
+ - **Container shape**: rounded rectangle with a triangular tail
131
+ - **Corner radius**: 14pt
132
+ - **Width**: variable — minimum 88pt, expands for content
133
+ - **Height**: 56pt (single-line) or 68pt (with timestamp)
134
+ - **Padding**: 8pt vertical, 12pt horizontal
135
+ - **Background**: solid hazard color at full saturation (e.g., Police Red `#EF6A65`)
136
+ - **Tail**: 12pt × 8pt isoceles triangle pointing down from the bottom-center, same color as the container
137
+ - **Icon**: 24pt cartoon-style glyph in white, leading position (e.g., police hat, exclamation, cone, snowflake)
138
+ - **Title**: Boing 14pt Bold white, e.g., "Police"
139
+ - **Timestamp (if shown)**: Boing 11pt Regular white at 80% opacity, e.g., "5 min ago"
140
+ - **Shadow**: `rgba(0,0,0,0.20) 0 4px 12px`
141
+ - **Hover/Tap state**: scale 1.0 → 1.08 over 200ms, with a subtle white inner glow
142
+
143
+ **Police Speech Bubble**: Background `#EF6A65`, icon = police hat with a small badge glyph (custom or `shield.fill`)
144
+ **Traffic Speech Bubble**: Background `#F69833`, icon = traffic cone or stopped-car
145
+ **Closure Speech Bubble**: Background `#F9C42E`, icon = no-entry circle or barrier
146
+ **Cleared Speech Bubble**: Background `#75C73E`, icon = checkmark + small timer
147
+ **Pothole Speech Bubble**: Background `#8B6F47`, icon = ground crack
148
+ **Camera Speech Bubble**: Background `#6B6B6B`, icon = camera
149
+
150
+ ### Floating Action Button (Report)
151
+
152
+ - **Diameter**: 56pt
153
+ - **Position**: bottom-right, 16pt inset, 16pt above the bottom ETA bar
154
+ - **Background**: `#7E55BE` Waze Purple
155
+ - **Glyph**: a stylized white exclamation point or speech-bubble icon at 24pt
156
+ - **Shadow**: `rgba(126,85,190,0.40) 0 6px 16px` — tinted purple shadow
157
+ - **Pressed**: background `#5B3C9A`, scale 0.94
158
+ - **Tap**: opens the report wheel — a circular arrangement of 6-8 hazard icons that the user picks
159
+ - **Haptic**: `.impactOccurred(.medium)`
160
+
161
+ ### Report Wheel (Hazard Picker)
162
+
163
+ The cartoon dial that appears when the user taps the FAB.
164
+
165
+ - **Position**: full-screen modal sheet from bottom
166
+ - **Background**: `#FFFFFF` at the wheel area, semi-transparent purple `rgba(126,85,190,0.85)` scrim over the rest of the screen
167
+ - **Wheel**: 280pt diameter circle, centered horizontally, 80pt from bottom
168
+ - **Slices**: 8 wedges, each containing a cartoon hazard icon (police, traffic, closure, pothole, camera, hazard, gas, cleared)
169
+ - **Slice icons**: 44pt × 44pt centered in each wedge
170
+ - **Slice colors**: each wedge is the hazard color at 20% saturation; tap saturates to full
171
+ - **Center**: 56pt circle with a white "X" close button
172
+ - **Animation**: wheel spins in from a small circle, 350ms spring
173
+ - **Tap on slice**: slice expands, then a confirmation card appears
174
+
175
+ ### Current-Location Puck (Waze Style)
176
+
177
+ Waze's puck is distinct from Apple's — it's the iconic blue arrow shape.
178
+
179
+ - **Shape**: a chunky arrow/cone pointing in the heading direction, NOT a circular dot
180
+ - **Color**: `#33CCFF` Waze Cyan filled body with a 3pt white outline
181
+ - **Size**: 32pt wide × 36pt tall
182
+ - **Rotation**: rotates with heading
183
+ - **Shadow**: `rgba(0,0,0,0.30) 0 3px 8px` for visibility over saturated cartography
184
+ - **Pulse**: a subtle 60pt cyan outer ring at 0.15 opacity, expanding to 1.5x over 2 seconds infinite
185
+
186
+ ### Wazer Avatar (Floating User Emoji)
187
+
188
+ A unique-to-Waze element: the user's chosen mood character appears on the map as a small emoji-style cartoon avatar.
189
+
190
+ - **Position**: floats alongside the location puck, 8pt up-and-right inset
191
+ - **Size**: 24pt × 24pt
192
+ - **Shape**: a circle with the Wazer mood emoji inside (Happy, Stuck, Lucky, Tired, etc.)
193
+ - **Border**: 2pt white ring
194
+ - **Pop animation**: when chosen, scales 0 → 1.2 → 1.0 with a 400ms spring
195
+
196
+ ### The Next-Turn Card (Top of Screen During Navigation)
197
+
198
+ The hero component while driving.
199
+
200
+ - **Position**: top of screen below safe area, full-width
201
+ - **Height**: 100pt
202
+ - **Background**: solid `#7E55BE` Waze Purple
203
+ - **Layout**: leading 64pt × 64pt direction-arrow icon (white, custom Waze direction glyph) + main content + trailing exit-route button
204
+ - **Direction arrow**: rotated to match the turn (right, left, slight, sharp)
205
+ - **Distance row**: Boing Mono 28pt Bold white tabular, e.g., "0.4 mi"
206
+ - **Street name**: Boing 22pt Bold white, e.g., "Market Street", 2-line truncate
207
+ - **Sub-instruction**: Boing 14pt Regular white at 80% opacity, e.g., "then turn left in 0.6 mi"
208
+ - **Corner radius**: 0pt on top (extends into safe area), 16pt on bottom corners
209
+ - **Tap**: opens the full directions list
210
+
211
+ ### ETA Bottom Bar
212
+
213
+ - **Position**: sticky bottom, full-width
214
+ - **Height**: 80pt + safe area
215
+ - **Background**: `#FFFFFF`
216
+ - **Layout**: left side ETA info + center route alternative pill + right side "Stop" button
217
+ - **ETA time**: Boing Mono 24pt Bold `#1A1A1A` tabular, e.g., "12 min"
218
+ - **Distance + arrival**: Boing Mono 17pt Medium `#6B6B6B` tabular, "5.2 mi · 6:14 PM"
219
+ - **Alternative route pill** (when offered): a centered green `#75C73E` pill with "Save 3 min" — tap to switch routes
220
+ - **Stop button**: outlined red `#EF6A65` pill at right with white background, "End"
221
+
222
+ ### Speed Limit & Current Speed Tile (Bottom-Left)
223
+
224
+ The classic US-style speed-limit signage rendered as a tile.
225
+
226
+ - **Container**: 80pt × 80pt
227
+ - **Background**: `#FFFFFF` with `rgba(0,0,0,0.10) 0 4px 8px` shadow
228
+ - **Corner radius**: 12pt
229
+ - **Speed limit**: top section — a 40pt × 40pt white circle with 2pt `#1A1A1A` border, "35" in Boing Mono 22pt Black centered
230
+ - **Above the circle**: "SPEED LIMIT" in Boing 9pt Bold UPPERCASE `#1A1A1A`
231
+ - **Current speed**: bottom section — large number "42" in Boing Mono 32pt Bold `#1A1A1A`, "mph" in Boing 11pt Regular `#6B6B6B`
232
+ - **Speeding indicator**: when current speed > limit, current speed number flips to `#EF6A65` red and a small `exclamationmark` icon appears
233
+
234
+ ### Search Card (Bottom Sheet)
235
+
236
+ - **Detents**: small (88pt — just search bar), medium (~50%), large (full-screen)
237
+ - **Background**: `#FFFFFF` (NOT translucent — Waze uses a solid white card unlike Apple)
238
+ - **Top corner radius**: 16pt
239
+ - **Drag indicator**: 36pt × 5pt rounded rect in `#D6D6D9`, 8pt below top
240
+ - **Search field**:
241
+ - Height: 48pt
242
+ - Background: `#F5F5F7`
243
+ - Corner radius: 16pt (more pill-like than Apple's)
244
+ - Leading: `magnifyingglass` SF Symbol 17pt `#6B6B6B`
245
+ - Placeholder: "Where to?" Boing 17pt Regular `#A0A0A0`
246
+ - **Quick destination row** (below search): horizontal scroll of Home, Work, recents — each a 44pt-tall pill with icon + label
247
+ - **Favorites grid**: 2-col grid of 80pt-tall tiles with destination icon and name
248
+
249
+ ### Buttons
250
+
251
+ **Primary CTA — The Big Purple "Go" Button**
252
+ - Used at the bottom of search results to start navigation
253
+ - Background: `#7E55BE` Waze Purple
254
+ - Text: `#FFFFFF`, Boing 17pt Bold
255
+ - Padding: 16pt vertical, 32pt horizontal
256
+ - Corner radius: 28pt (full pill at 56pt height)
257
+ - Height: 56pt
258
+ - Pressed: background `#5B3C9A`, scale 0.97
259
+ - Tinted purple shadow: `rgba(126,85,190,0.30) 0 4px 12px`
260
+
261
+ **Secondary Pill (Save / Share)**
262
+ - Background: `#FFFFFF`
263
+ - Border: 1.5pt `#7E55BE`
264
+ - Text: `#7E55BE`, Boing 17pt Bold
265
+ - Padding: 14pt vertical, 24pt horizontal
266
+ - Corner radius: 24pt (full pill)
267
+ - Height: 48pt
268
+
269
+ **Text-Only Action**
270
+ - Text: `#7E55BE`, Boing 17pt Bold
271
+ - 44pt hit target
272
+
273
+ **Cancel Pill**
274
+ - Background: `#FFFFFF`
275
+ - Border: 1.5pt `#EF6A65`
276
+ - Text: `#EF6A65`, Boing 17pt Bold
277
+ - Same metrics as Secondary Pill
278
+
279
+ ### Distinctive Components
280
+
281
+ **Beacon Share Banner**
282
+ - Appears mid-trip: a horizontal `#7E55BE` purple banner offering "Share with friends via Beacon"
283
+ - Height: 56pt
284
+ - White text + white user avatar circles overlapping
285
+ - Sliding dismiss
286
+
287
+ **Route Polyline**
288
+ - Stroke: `#7E55BE` Waze Purple, 6pt width (thicker than Apple's 5pt)
289
+ - Cap: rounded
290
+ - Animated chevron pattern moving along the route at 1 chevron per 2 seconds — the "ant trail" effect
291
+ - Alternative routes shown in `#9F9F9F` gray, 4pt width
292
+
293
+ **Mood Selector (Wazer Picker)**
294
+ - Modal sheet with 6-8 cartoon mood icons in a grid
295
+ - Each is a 64pt circle with the cartoon emoji centered
296
+ - Tap selects, scales 1.0 → 1.15 → 1.0 with a "pop" sound effect
297
+
298
+ **Gas Price Pin (Map Overlay)**
299
+ - A small green `#75C73E` pill with the gas price displayed in Boing Mono Bold
300
+ - Icon prefix: gas pump glyph
301
+ - Used on gas stations along the route
302
+
303
+ ## 5. Layout Principles
304
+
305
+ ### Spacing System
306
+ - Base unit: 4pt
307
+ - Scale: 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80
308
+ - Standard horizontal margin: 16pt on cards
309
+ - Section vertical gap: 24pt between sections in the search card; 16pt between rows
310
+
311
+ ### Grid & Container
312
+ - Map: full-screen, edge-to-edge
313
+ - Next-turn card: full-width, top-edge to 16pt below safe area
314
+ - ETA bar: full-width sticky bottom
315
+ - Search card: bottom sheet with three detents
316
+
317
+ ### Whitespace Philosophy
318
+ - **Loud, not cramped**: hazard speech bubbles are chunky with 8pt internal padding — they're meant to be readable at 60 mph from 18 inches away
319
+ - **Big buttons, big targets**: the "Go" button is 56pt tall, the FAB is 56pt diameter — Waze is a one-handed driving app
320
+ - **The map breathes**: even with hazard pins, the cartography colors remain visible — pins overlay, never replace
321
+
322
+ ### Border Radius Scale
323
+ - Square (0pt): rare
324
+ - Small (8pt): place card sections
325
+ - Standard (12pt): speed-limit tile, photo cards
326
+ - Card (14pt): hazard speech bubbles, primary card containers
327
+ - Sheet (16pt): bottom sheet top, search field
328
+ - Pill (24pt-28pt): secondary buttons (24pt), "Go" button (28pt)
329
+ - Circle (50%): FAB, mood avatars, speed-limit inner circle
330
+
331
+ ## 6. Depth & Elevation
332
+
333
+ | Level | Treatment | Use |
334
+ |-------|-----------|-----|
335
+ | Flat (Level 0) | No shadow | Map, ETA bar background |
336
+ | Card (Level 1) | `rgba(0,0,0,0.08) 0 2px 8px` | Place card, search card |
337
+ | Floating (Level 2) | `rgba(0,0,0,0.10) 0 4px 8px` | Speed-limit tile |
338
+ | Hazard (Level 3) | `rgba(0,0,0,0.20) 0 4px 12px` | Hazard speech bubbles, gas pins |
339
+ | FAB (Level 4) | `rgba(126,85,190,0.40) 0 6px 16px` | The Report FAB — TINTED PURPLE shadow |
340
+ | "Go" Button (Level 4) | `rgba(126,85,190,0.30) 0 4px 12px` | Primary purple button |
341
+ | Overlay (Level 5) | `rgba(0,0,0,0.40) 0 0 0 9999px` | Report wheel scrim |
342
+
343
+ **Shadow Philosophy**: Waze uses heavier and more saturated shadows than other map apps because the cartography is loud — soft 0.08 shadows would disappear against the bright cyan water and mint parks. Hazard speech bubbles get a 0.20-opacity drop shadow to lift them off the map. The FAB and "Go" button use tinted purple shadows (matching the brand) to reinforce identity at the most prominent action points.
344
+
345
+ ### Motion
346
+ - **FAB tap**: scale 1.0 → 0.94 → 1.0 over 200ms; shadow tightens then releases
347
+ - **Report wheel open**: 350ms spring (damping 0.7) — wheel spins in from a small circle to full size
348
+ - **Hazard speech bubble appearance**: scale 0 → 1.15 → 1.0 with a 400ms spring "pop"
349
+ - **Hazard speech bubble dismiss (timer expiring)**: 1000ms fade with a slight rotation; for cleared hazards, a green checkmark animates over the top before dismiss
350
+ - **Current-location puck**: subtle 2000ms pulse infinite, scale 1.0 → 1.5 → 1.0, opacity 0.15 → 0 → 0.15
351
+ - **Polyline ant trail**: chevron pattern animates along the route at 1 chevron per 2 seconds — the "moving" indicator
352
+ - **Next-turn card update**: when the next turn changes, the card cross-fades with a 250ms ease + the direction arrow rotates to match
353
+ - **Reach destination**: a confetti/sparkle animation over the destination pin with `.notificationOccurred(.success)` haptic
354
+ - **"Go" button tap**: scale 0.97, then `.impactOccurred(.heavy)` haptic; immediately transitions to navigation mode with a 400ms cross-fade
355
+
356
+ ## 7. Do's and Don'ts
357
+
358
+ ### Do
359
+ - Use Waze Purple `#7E55BE` as the brand primary — logo, polyline, FAB, "Go" button
360
+ - Use Waze Cyan `#33CCFF` as the secondary — current-location puck, info glyphs
361
+ - Render hazard reports as chunky cartoon speech bubbles with rounded 14pt corners, full-saturation colors, white icons inside, and a triangular tail pointing to the hazard location
362
+ - Use Boing typography (or SF Pro Rounded as fallback) — roundness is the brand
363
+ - Use Boing Mono on every numeric — distance, time, speed, ETA
364
+ - Make the map LOUD — cyan water, mint parks, warm white roads
365
+ - Render the current-location puck as a cyan arrow (NOT a dot) with a chunky 3pt white outline
366
+ - Show the speed-limit + current-speed tile in the bottom-left during navigation, US-style sign format
367
+ - Use the tinted purple shadow on the FAB `rgba(126,85,190,0.40) 0 6px 16px` — reinforces brand
368
+ - Animate hazard speech bubbles with a "pop" — scale 0 → 1.15 → 1.0 spring
369
+ - Use the chevron ant-trail animation on the route polyline
370
+ - Keep the report wheel a literal cartoon dial with 8 wedges — it's playful by design
371
+
372
+ ### Don't
373
+ - Don't use a plain blue location dot — Waze's puck is a CYAN ARROW, not a circular dot
374
+ - Don't render hazard reports as small SF Symbol pins — they're chunky cartoon speech bubbles with tails
375
+ - Don't tone down the cartography — bright cyan water and mint parks are the signature; making them subtle defeats the brand
376
+ - Don't replace Boing with a sharp grotesque (Helvetica, Inter without rounding) — the warmth comes from roundness
377
+ - Don't make the "Go" button anything other than full-pill 56pt-tall Waze Purple
378
+ - Don't omit Boing Mono on numerics — variable widths break the at-a-glance read
379
+ - Don't use a generic black drop shadow on the FAB — the tinted purple shadow is signature
380
+ - Don't use Waze Purple at less than 100% saturation for primary actions — the deep violet is the brand
381
+ - Don't show police hazard reports without the rounded cartoon shape — the cartoon-ness is what makes contributing fun
382
+ - Don't position the FAB on the left — it lives bottom-right
383
+ - Don't use the dot pulse from Apple Maps — Waze's pulse is a 60pt cyan outer ring at 0.15 opacity, expanding to 1.5x
384
+
385
+ ## 8. Responsive Behavior
386
+
387
+ ### Device Sizes
388
+ | Device | Width | Key Changes |
389
+ |--------|-------|-------------|
390
+ | iPhone SE (3rd gen) | 375pt | Next-turn card compresses; report wheel sized down to 240pt |
391
+ | iPhone 13/14/15 | 390pt | Standard layout — full-size report wheel, 100pt next-turn card |
392
+ | iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in next-turn card with custom inset |
393
+ | iPhone 15/16 Pro Max | 430pt | Slightly larger speed-limit tile and FAB |
394
+ | iPad Mini | 744pt | Search card becomes a 360pt left sidebar; map fills the rest |
395
+ | iPad Pro 11"+ | 834pt+ | Persistent sidebar + map + right-side details pane |
396
+
397
+ ### Dynamic Type
398
+ - Place card title, body, list rows: full scale
399
+ - Next-turn card, ETA numbers, speed-limit, hazard speech bubble text: FIXED (glance- and layout-critical)
400
+ - Map labels: zoom-controlled, fixed at user's preferred Dynamic Type within limits
401
+
402
+ ### Orientation
403
+ - Portrait: default
404
+ - Landscape: next-turn card stays at top but compresses to 64pt height; speed tile moves to top-right
405
+ - iPad: persistent sidebar across orientations
406
+
407
+ ### Touch Targets
408
+ - FAB: 56pt
409
+ - "Go" button: 56pt height, 200pt+ width
410
+ - Hazard speech bubble: full bubble is tappable for confirmation/dismissal
411
+ - Speed tile: tap opens speed settings
412
+ - Map controls: 44pt each
413
+ - Wazer avatar: tap opens mood picker, 32pt hit area on 24pt glyph
414
+
415
+ ### Safe Area Handling
416
+ - Top: next-turn card extends into safe area with 16pt content padding from the safe area top
417
+ - Bottom: ETA bar respects safe area; FAB sits 16pt above ETA bar's safe-area inset
418
+
419
+ ## 9. Quick Reference Cheat Sheet
420
+
421
+ ### Quick Color Reference
422
+ - **Waze Purple**: `#7E55BE`
423
+ - **Waze Purple Deep**: `#5B3C9A`
424
+ - **Waze Cyan**: `#33CCFF`
425
+ - **Cyan Deep**: `#0099E5`
426
+ - **Police Red**: `#EF6A65`
427
+ - **Traffic Orange**: `#F69833`
428
+ - **Closure Yellow**: `#F9C42E`
429
+ - **Cleared Green**: `#75C73E`
430
+ - Map cream: `#FFFCF2`
431
+ - Map water (bright cyan): `#9BDEEF`
432
+ - Map park (mint): `#C5E89B`
433
+ - Ink: `#1A1A1A`
434
+ - Secondary: `#6B6B6B`
435
+
436
+ ### Example Component Prompts
437
+ - "Create a SwiftUI Waze hazard speech bubble for a Police report: a 14pt-corner rounded rectangle in `#EF6A65` Police Red with a 12pt × 8pt triangular tail pointing down from the bottom-center. Inside: a 24pt cartoon police-hat icon in white on the left, then 'Police' in Boing 14pt Bold white, then '5 min ago' in Boing 11pt Regular white at 80% opacity. Shadow `rgba(0,0,0,0.20) 0 4px 12px`. Appear animation: scale 0 → 1.15 → 1.0 over 400ms spring."
438
+ - "Build the Waze current-location puck: a chunky 32pt × 36pt cyan `#33CCFF` arrow shape pointing in the heading direction (rotates with user heading), with a 3pt white outer outline. Shadow `rgba(0,0,0,0.30) 0 3px 8px`. Add a 60pt outer cyan ring at 0.15 opacity that pulses scale 1.0 → 1.5 → 1.0 over 2000ms infinite."
439
+ - "Design the Waze next-turn card: top of screen, full-width, 100pt tall, solid `#7E55BE` Waze Purple background with 16pt bottom corner radius. Leading 64pt white direction-arrow icon rotated to match the turn. Then '0.4 mi' in Boing Mono 28pt Bold white tabular, 'Market Street' in Boing 22pt Bold white, and 'then turn left in 0.6 mi' in Boing 14pt Regular white at 80% opacity."
440
+ - "Build the Waze 'Go' button: full-pill at 56pt height, `#7E55BE` Waze Purple background, 'Go' in Boing 17pt Bold white centered. Tinted purple shadow `rgba(126,85,190,0.30) 0 4px 12px`. On press: background flips to `#5B3C9A` Deep Purple, scale 0.97, haptic `.impactOccurred(.heavy)`. Transitions to navigation mode with a 400ms cross-fade."
441
+ - "Create the Waze speed-limit + current-speed tile (bottom-left during navigation): 80pt × 80pt white card with 12pt corner radius and `rgba(0,0,0,0.10) 0 4px 8px` shadow. Top section: 'SPEED LIMIT' in Boing 9pt Bold UPPERCASE `#1A1A1A`, then a 40pt white circle with a 2pt `#1A1A1A` border and '35' in Boing Mono 22pt Black centered. Bottom section: '42' in Boing Mono 32pt Bold `#1A1A1A`, 'mph' in Boing 11pt Regular `#6B6B6B`. If current > limit, the current speed number flips to `#EF6A65` red."
442
+
443
+ ### Iteration Guide
444
+ 1. Brand is Waze Purple `#7E55BE` + Waze Cyan `#33CCFF` — both saturated, no muted variants for primary chrome
445
+ 2. Hazard reports are chunky CARTOON SPEECH BUBBLES — rounded rectangles with triangular tails, full-saturation colors, white icons
446
+ 3. Current-location puck is a CYAN ARROW (`#33CCFF`), not a dot — chunky 32×36pt with a 3pt white outline
447
+ 4. Cartography is loud: cyan water `#9BDEEF`, mint parks `#C5E89B`, warm white roads
448
+ 5. Boing typography or SF Pro Rounded fallback — roundness is non-negotiable; Boing Mono on every numeric
449
+ 6. Tinted purple shadow on the FAB and "Go" button — `rgba(126,85,190,0.40)` and `rgba(126,85,190,0.30)`
450
+ 7. Speech-bubble pop animation: scale 0 → 1.15 → 1.0 in 400ms spring — this is the signature appearance
451
+ 8. Route polyline is 6pt thick `#7E55BE`, animated chevron ant-trail moving at 1 chevron per 2 seconds
452
+ 9. The report wheel is a literal cartoon dial — embrace it, don't tone it down
453
+ 10. Dark mode keeps both Waze Purple and Cyan at brand saturation — only the cartography darkens