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.
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/__tests__/designStore.test.js +41 -0
- package/dist/__tests__/linter.test.js +23 -0
- package/dist/__tests__/sectionParser.test.js +60 -0
- package/dist/__tests__/server.test.js +129 -0
- package/dist/constants.js +12 -0
- package/dist/data/authoring-guide.md +113 -0
- package/dist/data/designs/airbnb.md +545 -0
- package/dist/data/designs/airtable.md +554 -0
- package/dist/data/designs/apple.md +562 -0
- package/dist/data/designs/binance.md +634 -0
- package/dist/data/designs/bmw-m.md +503 -0
- package/dist/data/designs/bmw.md +544 -0
- package/dist/data/designs/bugatti.md +454 -0
- package/dist/data/designs/cal.md +542 -0
- package/dist/data/designs/card-heavy.md +250 -0
- package/dist/data/designs/claude.md +589 -0
- package/dist/data/designs/clay.md +541 -0
- package/dist/data/designs/clickhouse.md +544 -0
- package/dist/data/designs/cohere.md +451 -0
- package/dist/data/designs/coinbase.md +570 -0
- package/dist/data/designs/composio.md +506 -0
- package/dist/data/designs/content-first.md +236 -0
- package/dist/data/designs/cursor.md +537 -0
- package/dist/data/designs/data-dashboard.md +300 -0
- package/dist/data/designs/dell-1996.md +632 -0
- package/dist/data/designs/elevenlabs.md +504 -0
- package/dist/data/designs/enterprise-neutral.md +252 -0
- package/dist/data/designs/expo.md +526 -0
- package/dist/data/designs/ferrari.md +531 -0
- package/dist/data/designs/figma.md +578 -0
- package/dist/data/designs/framer.md +544 -0
- package/dist/data/designs/hashicorp.md +575 -0
- package/dist/data/designs/hp.md +670 -0
- package/dist/data/designs/ibm.md +550 -0
- package/dist/data/designs/intercom.md +546 -0
- package/dist/data/designs/ios-acorns-android.md +430 -0
- package/dist/data/designs/ios-acorns-expo.md +381 -0
- package/dist/data/designs/ios-acorns-swiftui.md +378 -0
- package/dist/data/designs/ios-acorns.md +384 -0
- package/dist/data/designs/ios-airbnb-android.md +658 -0
- package/dist/data/designs/ios-airbnb-expo.md +457 -0
- package/dist/data/designs/ios-airbnb-swiftui.md +464 -0
- package/dist/data/designs/ios-airbnb.md +410 -0
- package/dist/data/designs/ios-alltrails-android.md +451 -0
- package/dist/data/designs/ios-alltrails-expo.md +400 -0
- package/dist/data/designs/ios-alltrails-swiftui.md +343 -0
- package/dist/data/designs/ios-alltrails.md +344 -0
- package/dist/data/designs/ios-amazon-android.md +686 -0
- package/dist/data/designs/ios-amazon-expo.md +433 -0
- package/dist/data/designs/ios-amazon-music-android.md +416 -0
- package/dist/data/designs/ios-amazon-music-expo.md +368 -0
- package/dist/data/designs/ios-amazon-music-swiftui.md +436 -0
- package/dist/data/designs/ios-amazon-music.md +389 -0
- package/dist/data/designs/ios-amazon-swiftui.md +460 -0
- package/dist/data/designs/ios-amazon.md +440 -0
- package/dist/data/designs/ios-apple-fitness-android.md +462 -0
- package/dist/data/designs/ios-apple-fitness-expo.md +373 -0
- package/dist/data/designs/ios-apple-fitness-swiftui.md +373 -0
- package/dist/data/designs/ios-apple-fitness.md +399 -0
- package/dist/data/designs/ios-apple-maps-android.md +646 -0
- package/dist/data/designs/ios-apple-maps-expo.md +557 -0
- package/dist/data/designs/ios-apple-maps-swiftui.md +588 -0
- package/dist/data/designs/ios-apple-maps.md +447 -0
- package/dist/data/designs/ios-apple-music-android.md +737 -0
- package/dist/data/designs/ios-apple-music-expo.md +596 -0
- package/dist/data/designs/ios-apple-music-swiftui.md +578 -0
- package/dist/data/designs/ios-apple-music.md +494 -0
- package/dist/data/designs/ios-apple-notes-android.md +675 -0
- package/dist/data/designs/ios-apple-notes-expo.md +468 -0
- package/dist/data/designs/ios-apple-notes-swiftui.md +489 -0
- package/dist/data/designs/ios-apple-notes.md +413 -0
- package/dist/data/designs/ios-apple-tv-android.md +405 -0
- package/dist/data/designs/ios-apple-tv-expo.md +341 -0
- package/dist/data/designs/ios-apple-tv-swiftui.md +348 -0
- package/dist/data/designs/ios-apple-tv.md +390 -0
- package/dist/data/designs/ios-apple-wallet-android.md +617 -0
- package/dist/data/designs/ios-apple-wallet-expo.md +487 -0
- package/dist/data/designs/ios-apple-wallet-swiftui.md +425 -0
- package/dist/data/designs/ios-apple-wallet.md +360 -0
- package/dist/data/designs/ios-asana-android.md +435 -0
- package/dist/data/designs/ios-asana-expo.md +411 -0
- package/dist/data/designs/ios-asana-swiftui.md +416 -0
- package/dist/data/designs/ios-asana.md +433 -0
- package/dist/data/designs/ios-audible-android.md +450 -0
- package/dist/data/designs/ios-audible-expo.md +328 -0
- package/dist/data/designs/ios-audible-swiftui.md +418 -0
- package/dist/data/designs/ios-audible.md +364 -0
- package/dist/data/designs/ios-bandcamp-android.md +471 -0
- package/dist/data/designs/ios-bandcamp-expo.md +378 -0
- package/dist/data/designs/ios-bandcamp-swiftui.md +374 -0
- package/dist/data/designs/ios-bandcamp.md +372 -0
- package/dist/data/designs/ios-bear-android.md +496 -0
- package/dist/data/designs/ios-bear-expo.md +449 -0
- package/dist/data/designs/ios-bear-swiftui.md +479 -0
- package/dist/data/designs/ios-bear.md +412 -0
- package/dist/data/designs/ios-bereal-android.md +392 -0
- package/dist/data/designs/ios-bereal-expo.md +299 -0
- package/dist/data/designs/ios-bereal-swiftui.md +319 -0
- package/dist/data/designs/ios-bereal.md +336 -0
- package/dist/data/designs/ios-binance-android.md +481 -0
- package/dist/data/designs/ios-binance-expo.md +404 -0
- package/dist/data/designs/ios-binance-swiftui.md +418 -0
- package/dist/data/designs/ios-binance.md +410 -0
- package/dist/data/designs/ios-bluesky-android.md +442 -0
- package/dist/data/designs/ios-bluesky-expo.md +362 -0
- package/dist/data/designs/ios-bluesky-swiftui.md +328 -0
- package/dist/data/designs/ios-bluesky.md +338 -0
- package/dist/data/designs/ios-booking-android.md +471 -0
- package/dist/data/designs/ios-booking-expo.md +364 -0
- package/dist/data/designs/ios-booking-swiftui.md +377 -0
- package/dist/data/designs/ios-booking.md +346 -0
- package/dist/data/designs/ios-bumble-android.md +756 -0
- package/dist/data/designs/ios-bumble-expo.md +629 -0
- package/dist/data/designs/ios-bumble-swiftui.md +546 -0
- package/dist/data/designs/ios-bumble.md +424 -0
- package/dist/data/designs/ios-cal-ai-android.md +664 -0
- package/dist/data/designs/ios-cal-ai-expo.md +415 -0
- package/dist/data/designs/ios-cal-ai-swiftui.md +486 -0
- package/dist/data/designs/ios-cal-ai.md +387 -0
- package/dist/data/designs/ios-calm-android.md +431 -0
- package/dist/data/designs/ios-calm-expo.md +384 -0
- package/dist/data/designs/ios-calm-swiftui.md +327 -0
- package/dist/data/designs/ios-calm.md +356 -0
- package/dist/data/designs/ios-canva-android.md +469 -0
- package/dist/data/designs/ios-canva-expo.md +374 -0
- package/dist/data/designs/ios-canva-swiftui.md +422 -0
- package/dist/data/designs/ios-canva.md +395 -0
- package/dist/data/designs/ios-cash-app-android.md +601 -0
- package/dist/data/designs/ios-cash-app-expo.md +453 -0
- package/dist/data/designs/ios-cash-app-swiftui.md +463 -0
- package/dist/data/designs/ios-cash-app.md +365 -0
- package/dist/data/designs/ios-character-ai-android.md +489 -0
- package/dist/data/designs/ios-character-ai-expo.md +420 -0
- package/dist/data/designs/ios-character-ai-swiftui.md +417 -0
- package/dist/data/designs/ios-character-ai.md +392 -0
- package/dist/data/designs/ios-charles-schwab-android.md +454 -0
- package/dist/data/designs/ios-charles-schwab-expo.md +388 -0
- package/dist/data/designs/ios-charles-schwab-swiftui.md +394 -0
- package/dist/data/designs/ios-charles-schwab.md +380 -0
- package/dist/data/designs/ios-chatgpt-android.md +753 -0
- package/dist/data/designs/ios-chatgpt-expo.md +644 -0
- package/dist/data/designs/ios-chatgpt-swiftui.md +653 -0
- package/dist/data/designs/ios-chatgpt.md +466 -0
- package/dist/data/designs/ios-chime-android.md +438 -0
- package/dist/data/designs/ios-chime-expo.md +419 -0
- package/dist/data/designs/ios-chime-swiftui.md +383 -0
- package/dist/data/designs/ios-chime.md +389 -0
- package/dist/data/designs/ios-chipotle-android.md +397 -0
- package/dist/data/designs/ios-chipotle-expo.md +301 -0
- package/dist/data/designs/ios-chipotle-swiftui.md +345 -0
- package/dist/data/designs/ios-chipotle.md +340 -0
- package/dist/data/designs/ios-citymapper-android.md +466 -0
- package/dist/data/designs/ios-citymapper-expo.md +420 -0
- package/dist/data/designs/ios-citymapper-swiftui.md +424 -0
- package/dist/data/designs/ios-citymapper.md +394 -0
- package/dist/data/designs/ios-claude-android.md +625 -0
- package/dist/data/designs/ios-claude-expo.md +671 -0
- package/dist/data/designs/ios-claude-swiftui.md +649 -0
- package/dist/data/designs/ios-claude.md +447 -0
- package/dist/data/designs/ios-clickup-android.md +484 -0
- package/dist/data/designs/ios-clickup-expo.md +423 -0
- package/dist/data/designs/ios-clickup-swiftui.md +416 -0
- package/dist/data/designs/ios-clickup.md +431 -0
- package/dist/data/designs/ios-clubhouse-android.md +524 -0
- package/dist/data/designs/ios-clubhouse-expo.md +425 -0
- package/dist/data/designs/ios-clubhouse-swiftui.md +447 -0
- package/dist/data/designs/ios-clubhouse.md +406 -0
- package/dist/data/designs/ios-coffee-meets-bagel-android.md +461 -0
- package/dist/data/designs/ios-coffee-meets-bagel-expo.md +372 -0
- package/dist/data/designs/ios-coffee-meets-bagel-swiftui.md +368 -0
- package/dist/data/designs/ios-coffee-meets-bagel.md +376 -0
- package/dist/data/designs/ios-coinbase-android.md +611 -0
- package/dist/data/designs/ios-coinbase-expo.md +500 -0
- package/dist/data/designs/ios-coinbase-swiftui.md +490 -0
- package/dist/data/designs/ios-coinbase.md +409 -0
- package/dist/data/designs/ios-copilot-android.md +625 -0
- package/dist/data/designs/ios-copilot-expo.md +423 -0
- package/dist/data/designs/ios-copilot-swiftui.md +471 -0
- package/dist/data/designs/ios-copilot.md +367 -0
- package/dist/data/designs/ios-craft-android.md +459 -0
- package/dist/data/designs/ios-craft-expo.md +417 -0
- package/dist/data/designs/ios-craft-swiftui.md +449 -0
- package/dist/data/designs/ios-craft.md +449 -0
- package/dist/data/designs/ios-crunchyroll-android.md +432 -0
- package/dist/data/designs/ios-crunchyroll-expo.md +388 -0
- package/dist/data/designs/ios-crunchyroll-swiftui.md +417 -0
- package/dist/data/designs/ios-crunchyroll.md +388 -0
- package/dist/data/designs/ios-crypto-com-android.md +461 -0
- package/dist/data/designs/ios-crypto-com-expo.md +404 -0
- package/dist/data/designs/ios-crypto-com-swiftui.md +419 -0
- package/dist/data/designs/ios-crypto-com.md +410 -0
- package/dist/data/designs/ios-deepseek-android.md +471 -0
- package/dist/data/designs/ios-deepseek-expo.md +391 -0
- package/dist/data/designs/ios-deepseek-swiftui.md +354 -0
- package/dist/data/designs/ios-deepseek.md +393 -0
- package/dist/data/designs/ios-deezer-android.md +475 -0
- package/dist/data/designs/ios-deezer-expo.md +400 -0
- package/dist/data/designs/ios-deezer-swiftui.md +430 -0
- package/dist/data/designs/ios-deezer.md +388 -0
- package/dist/data/designs/ios-deliveroo-android.md +493 -0
- package/dist/data/designs/ios-deliveroo-expo.md +424 -0
- package/dist/data/designs/ios-deliveroo-swiftui.md +398 -0
- package/dist/data/designs/ios-deliveroo.md +420 -0
- package/dist/data/designs/ios-delta-android.md +439 -0
- package/dist/data/designs/ios-delta-expo.md +381 -0
- package/dist/data/designs/ios-delta-swiftui.md +400 -0
- package/dist/data/designs/ios-delta.md +397 -0
- package/dist/data/designs/ios-discord-android.md +611 -0
- package/dist/data/designs/ios-discord-expo.md +618 -0
- package/dist/data/designs/ios-discord-swiftui.md +630 -0
- package/dist/data/designs/ios-discord.md +451 -0
- package/dist/data/designs/ios-disney-plus-android.md +464 -0
- package/dist/data/designs/ios-disney-plus-expo.md +358 -0
- package/dist/data/designs/ios-disney-plus-swiftui.md +412 -0
- package/dist/data/designs/ios-disney-plus.md +355 -0
- package/dist/data/designs/ios-dominos-android.md +417 -0
- package/dist/data/designs/ios-dominos-expo.md +316 -0
- package/dist/data/designs/ios-dominos-swiftui.md +340 -0
- package/dist/data/designs/ios-dominos.md +347 -0
- package/dist/data/designs/ios-doordash-android.md +527 -0
- package/dist/data/designs/ios-doordash-expo.md +323 -0
- package/dist/data/designs/ios-doordash-swiftui.md +301 -0
- package/dist/data/designs/ios-doordash.md +393 -0
- package/dist/data/designs/ios-dropbox-android.md +522 -0
- package/dist/data/designs/ios-dropbox-expo.md +393 -0
- package/dist/data/designs/ios-dropbox-swiftui.md +400 -0
- package/dist/data/designs/ios-dropbox.md +374 -0
- package/dist/data/designs/ios-duolingo-android.md +641 -0
- package/dist/data/designs/ios-duolingo-expo.md +597 -0
- package/dist/data/designs/ios-duolingo-swiftui.md +539 -0
- package/dist/data/designs/ios-duolingo.md +409 -0
- package/dist/data/designs/ios-ebay-android.md +436 -0
- package/dist/data/designs/ios-ebay-expo.md +344 -0
- package/dist/data/designs/ios-ebay-swiftui.md +308 -0
- package/dist/data/designs/ios-ebay.md +355 -0
- package/dist/data/designs/ios-espn-android.md +468 -0
- package/dist/data/designs/ios-espn-expo.md +387 -0
- package/dist/data/designs/ios-espn-swiftui.md +410 -0
- package/dist/data/designs/ios-espn.md +384 -0
- package/dist/data/designs/ios-etsy-android.md +439 -0
- package/dist/data/designs/ios-etsy-expo.md +351 -0
- package/dist/data/designs/ios-etsy-swiftui.md +296 -0
- package/dist/data/designs/ios-etsy.md +355 -0
- package/dist/data/designs/ios-evernote-android.md +419 -0
- package/dist/data/designs/ios-evernote-expo.md +379 -0
- package/dist/data/designs/ios-evernote-swiftui.md +380 -0
- package/dist/data/designs/ios-evernote.md +416 -0
- package/dist/data/designs/ios-expedia-android.md +451 -0
- package/dist/data/designs/ios-expedia-expo.md +433 -0
- package/dist/data/designs/ios-expedia-swiftui.md +399 -0
- package/dist/data/designs/ios-expedia.md +431 -0
- package/dist/data/designs/ios-facebook-android.md +628 -0
- package/dist/data/designs/ios-facebook-expo.md +471 -0
- package/dist/data/designs/ios-facebook-swiftui.md +459 -0
- package/dist/data/designs/ios-facebook.md +452 -0
- package/dist/data/designs/ios-feeld-android.md +431 -0
- package/dist/data/designs/ios-feeld-expo.md +379 -0
- package/dist/data/designs/ios-feeld-swiftui.md +401 -0
- package/dist/data/designs/ios-feeld.md +378 -0
- package/dist/data/designs/ios-fidelity-android.md +426 -0
- package/dist/data/designs/ios-fidelity-expo.md +396 -0
- package/dist/data/designs/ios-fidelity-swiftui.md +398 -0
- package/dist/data/designs/ios-fidelity.md +387 -0
- package/dist/data/designs/ios-figma-android.md +578 -0
- package/dist/data/designs/ios-figma-expo.md +504 -0
- package/dist/data/designs/ios-figma-swiftui.md +542 -0
- package/dist/data/designs/ios-figma.md +404 -0
- package/dist/data/designs/ios-fitbit-android.md +439 -0
- package/dist/data/designs/ios-fitbit-expo.md +389 -0
- package/dist/data/designs/ios-fitbit-swiftui.md +380 -0
- package/dist/data/designs/ios-fitbit.md +396 -0
- package/dist/data/designs/ios-flickr-android.md +506 -0
- package/dist/data/designs/ios-flickr-expo.md +434 -0
- package/dist/data/designs/ios-flickr-swiftui.md +421 -0
- package/dist/data/designs/ios-flickr.md +394 -0
- package/dist/data/designs/ios-flighty-android.md +418 -0
- package/dist/data/designs/ios-flighty-expo.md +353 -0
- package/dist/data/designs/ios-flighty-swiftui.md +337 -0
- package/dist/data/designs/ios-flighty.md +357 -0
- package/dist/data/designs/ios-flo-android.md +447 -0
- package/dist/data/designs/ios-flo-expo.md +363 -0
- package/dist/data/designs/ios-flo-swiftui.md +355 -0
- package/dist/data/designs/ios-flo.md +351 -0
- package/dist/data/designs/ios-garmin-connect-android.md +531 -0
- package/dist/data/designs/ios-garmin-connect-expo.md +429 -0
- package/dist/data/designs/ios-garmin-connect-swiftui.md +459 -0
- package/dist/data/designs/ios-garmin-connect.md +419 -0
- package/dist/data/designs/ios-gas-android.md +438 -0
- package/dist/data/designs/ios-gas-expo.md +350 -0
- package/dist/data/designs/ios-gas-swiftui.md +329 -0
- package/dist/data/designs/ios-gas.md +387 -0
- package/dist/data/designs/ios-gemini-android.md +568 -0
- package/dist/data/designs/ios-gemini-expo.md +416 -0
- package/dist/data/designs/ios-gemini-swiftui.md +424 -0
- package/dist/data/designs/ios-gemini.md +351 -0
- package/dist/data/designs/ios-github-android.md +507 -0
- package/dist/data/designs/ios-github-expo.md +486 -0
- package/dist/data/designs/ios-github-swiftui.md +459 -0
- package/dist/data/designs/ios-github.md +394 -0
- package/dist/data/designs/ios-gmail-android.md +548 -0
- package/dist/data/designs/ios-gmail-expo.md +457 -0
- package/dist/data/designs/ios-gmail-swiftui.md +470 -0
- package/dist/data/designs/ios-gmail.md +441 -0
- package/dist/data/designs/ios-goodreads-android.md +436 -0
- package/dist/data/designs/ios-goodreads-expo.md +407 -0
- package/dist/data/designs/ios-goodreads-swiftui.md +378 -0
- package/dist/data/designs/ios-goodreads.md +385 -0
- package/dist/data/designs/ios-google-calendar-android.md +565 -0
- package/dist/data/designs/ios-google-calendar-expo.md +616 -0
- package/dist/data/designs/ios-google-calendar-swiftui.md +585 -0
- package/dist/data/designs/ios-google-calendar.md +431 -0
- package/dist/data/designs/ios-google-maps-android.md +614 -0
- package/dist/data/designs/ios-google-maps-expo.md +515 -0
- package/dist/data/designs/ios-google-maps-swiftui.md +484 -0
- package/dist/data/designs/ios-google-maps.md +451 -0
- package/dist/data/designs/ios-grammarly-android.md +449 -0
- package/dist/data/designs/ios-grammarly-expo.md +383 -0
- package/dist/data/designs/ios-grammarly-swiftui.md +381 -0
- package/dist/data/designs/ios-grammarly.md +392 -0
- package/dist/data/designs/ios-grindr-android.md +494 -0
- package/dist/data/designs/ios-grindr-expo.md +358 -0
- package/dist/data/designs/ios-grindr-swiftui.md +357 -0
- package/dist/data/designs/ios-grindr.md +356 -0
- package/dist/data/designs/ios-grok-android.md +471 -0
- package/dist/data/designs/ios-grok-expo.md +388 -0
- package/dist/data/designs/ios-grok-swiftui.md +397 -0
- package/dist/data/designs/ios-grok.md +357 -0
- package/dist/data/designs/ios-groupme-android.md +551 -0
- package/dist/data/designs/ios-groupme-expo.md +442 -0
- package/dist/data/designs/ios-groupme-swiftui.md +439 -0
- package/dist/data/designs/ios-groupme.md +424 -0
- package/dist/data/designs/ios-grubhub-android.md +506 -0
- package/dist/data/designs/ios-grubhub-expo.md +428 -0
- package/dist/data/designs/ios-grubhub-swiftui.md +408 -0
- package/dist/data/designs/ios-grubhub.md +427 -0
- package/dist/data/designs/ios-happn-android.md +464 -0
- package/dist/data/designs/ios-happn-expo.md +411 -0
- package/dist/data/designs/ios-happn-swiftui.md +401 -0
- package/dist/data/designs/ios-happn.md +400 -0
- package/dist/data/designs/ios-headspace-android.md +688 -0
- package/dist/data/designs/ios-headspace-expo.md +574 -0
- package/dist/data/designs/ios-headspace-swiftui.md +498 -0
- package/dist/data/designs/ios-headspace.md +430 -0
- package/dist/data/designs/ios-hevy-android.md +473 -0
- package/dist/data/designs/ios-hevy-expo.md +405 -0
- package/dist/data/designs/ios-hevy-swiftui.md +367 -0
- package/dist/data/designs/ios-hevy.md +410 -0
- package/dist/data/designs/ios-hinge-android.md +743 -0
- package/dist/data/designs/ios-hinge-expo.md +580 -0
- package/dist/data/designs/ios-hinge-swiftui.md +512 -0
- package/dist/data/designs/ios-hinge.md +405 -0
- package/dist/data/designs/ios-hopper-android.md +440 -0
- package/dist/data/designs/ios-hopper-expo.md +353 -0
- package/dist/data/designs/ios-hopper-swiftui.md +340 -0
- package/dist/data/designs/ios-hopper.md +354 -0
- package/dist/data/designs/ios-hulu-android.md +435 -0
- package/dist/data/designs/ios-hulu-expo.md +331 -0
- package/dist/data/designs/ios-hulu-swiftui.md +374 -0
- package/dist/data/designs/ios-hulu.md +353 -0
- package/dist/data/designs/ios-iheartradio-android.md +481 -0
- package/dist/data/designs/ios-iheartradio-expo.md +417 -0
- package/dist/data/designs/ios-iheartradio-swiftui.md +423 -0
- package/dist/data/designs/ios-iheartradio.md +381 -0
- package/dist/data/designs/ios-imessage-android.md +426 -0
- package/dist/data/designs/ios-imessage-expo.md +384 -0
- package/dist/data/designs/ios-imessage-swiftui.md +378 -0
- package/dist/data/designs/ios-imessage.md +394 -0
- package/dist/data/designs/ios-instacart-android.md +471 -0
- package/dist/data/designs/ios-instacart-expo.md +349 -0
- package/dist/data/designs/ios-instacart-swiftui.md +378 -0
- package/dist/data/designs/ios-instacart.md +360 -0
- package/dist/data/designs/ios-instagram-android.md +646 -0
- package/dist/data/designs/ios-instagram-expo.md +310 -0
- package/dist/data/designs/ios-instagram-swiftui.md +333 -0
- package/dist/data/designs/ios-instagram.md +376 -0
- package/dist/data/designs/ios-jira-android.md +432 -0
- package/dist/data/designs/ios-jira-expo.md +375 -0
- package/dist/data/designs/ios-jira-swiftui.md +433 -0
- package/dist/data/designs/ios-jira.md +424 -0
- package/dist/data/designs/ios-kakaotalk-android.md +491 -0
- package/dist/data/designs/ios-kakaotalk-expo.md +418 -0
- package/dist/data/designs/ios-kakaotalk-swiftui.md +406 -0
- package/dist/data/designs/ios-kakaotalk.md +414 -0
- package/dist/data/designs/ios-kayak-android.md +466 -0
- package/dist/data/designs/ios-kayak-expo.md +407 -0
- package/dist/data/designs/ios-kayak-swiftui.md +426 -0
- package/dist/data/designs/ios-kayak.md +392 -0
- package/dist/data/designs/ios-kick-android.md +487 -0
- package/dist/data/designs/ios-kick-expo.md +434 -0
- package/dist/data/designs/ios-kick-swiftui.md +429 -0
- package/dist/data/designs/ios-kick.md +389 -0
- package/dist/data/designs/ios-kik-android.md +433 -0
- package/dist/data/designs/ios-kik-expo.md +363 -0
- package/dist/data/designs/ios-kik-swiftui.md +363 -0
- package/dist/data/designs/ios-kik.md +392 -0
- package/dist/data/designs/ios-kindle-android.md +439 -0
- package/dist/data/designs/ios-kindle-expo.md +356 -0
- package/dist/data/designs/ios-kindle-swiftui.md +372 -0
- package/dist/data/designs/ios-kindle.md +369 -0
- package/dist/data/designs/ios-klarna-android.md +420 -0
- package/dist/data/designs/ios-klarna-expo.md +349 -0
- package/dist/data/designs/ios-klarna-swiftui.md +360 -0
- package/dist/data/designs/ios-klarna.md +356 -0
- package/dist/data/designs/ios-lemon8-android.md +492 -0
- package/dist/data/designs/ios-lemon8-expo.md +413 -0
- package/dist/data/designs/ios-lemon8-swiftui.md +428 -0
- package/dist/data/designs/ios-lemon8.md +378 -0
- package/dist/data/designs/ios-life360-android.md +474 -0
- package/dist/data/designs/ios-life360-expo.md +375 -0
- package/dist/data/designs/ios-life360-swiftui.md +390 -0
- package/dist/data/designs/ios-life360.md +402 -0
- package/dist/data/designs/ios-line-android.md +517 -0
- package/dist/data/designs/ios-line-expo.md +402 -0
- package/dist/data/designs/ios-line-swiftui.md +361 -0
- package/dist/data/designs/ios-line.md +362 -0
- package/dist/data/designs/ios-linear-android.md +457 -0
- package/dist/data/designs/ios-linear-expo.md +367 -0
- package/dist/data/designs/ios-linear-swiftui.md +401 -0
- package/dist/data/designs/ios-linear.md +368 -0
- package/dist/data/designs/ios-linkedin-android.md +620 -0
- package/dist/data/designs/ios-linkedin-expo.md +469 -0
- package/dist/data/designs/ios-linkedin-swiftui.md +472 -0
- package/dist/data/designs/ios-linkedin.md +444 -0
- package/dist/data/designs/ios-locket-android.md +500 -0
- package/dist/data/designs/ios-locket-expo.md +375 -0
- package/dist/data/designs/ios-locket-swiftui.md +375 -0
- package/dist/data/designs/ios-locket.md +381 -0
- package/dist/data/designs/ios-lyft-android.md +406 -0
- package/dist/data/designs/ios-lyft-expo.md +333 -0
- package/dist/data/designs/ios-lyft-swiftui.md +315 -0
- package/dist/data/designs/ios-lyft.md +337 -0
- package/dist/data/designs/ios-marriott-bonvoy-android.md +488 -0
- package/dist/data/designs/ios-marriott-bonvoy-expo.md +412 -0
- package/dist/data/designs/ios-marriott-bonvoy-swiftui.md +461 -0
- package/dist/data/designs/ios-marriott-bonvoy.md +379 -0
- package/dist/data/designs/ios-mastodon-android.md +476 -0
- package/dist/data/designs/ios-mastodon-expo.md +379 -0
- package/dist/data/designs/ios-mastodon-swiftui.md +349 -0
- package/dist/data/designs/ios-mastodon.md +337 -0
- package/dist/data/designs/ios-match-android.md +496 -0
- package/dist/data/designs/ios-match-expo.md +393 -0
- package/dist/data/designs/ios-match-swiftui.md +450 -0
- package/dist/data/designs/ios-match.md +382 -0
- package/dist/data/designs/ios-max-android.md +454 -0
- package/dist/data/designs/ios-max-expo.md +342 -0
- package/dist/data/designs/ios-max-swiftui.md +332 -0
- package/dist/data/designs/ios-max.md +352 -0
- package/dist/data/designs/ios-mcdonalds-android.md +497 -0
- package/dist/data/designs/ios-mcdonalds-expo.md +382 -0
- package/dist/data/designs/ios-mcdonalds-swiftui.md +394 -0
- package/dist/data/designs/ios-mcdonalds.md +410 -0
- package/dist/data/designs/ios-messenger-android.md +523 -0
- package/dist/data/designs/ios-messenger-expo.md +379 -0
- package/dist/data/designs/ios-messenger-swiftui.md +369 -0
- package/dist/data/designs/ios-messenger.md +361 -0
- package/dist/data/designs/ios-microsoft-teams-android.md +446 -0
- package/dist/data/designs/ios-microsoft-teams-expo.md +362 -0
- package/dist/data/designs/ios-microsoft-teams-swiftui.md +384 -0
- package/dist/data/designs/ios-microsoft-teams.md +359 -0
- package/dist/data/designs/ios-midjourney-android.md +503 -0
- package/dist/data/designs/ios-midjourney-expo.md +406 -0
- package/dist/data/designs/ios-midjourney-swiftui.md +376 -0
- package/dist/data/designs/ios-midjourney.md +407 -0
- package/dist/data/designs/ios-miro-android.md +475 -0
- package/dist/data/designs/ios-miro-expo.md +421 -0
- package/dist/data/designs/ios-miro-swiftui.md +407 -0
- package/dist/data/designs/ios-miro.md +424 -0
- package/dist/data/designs/ios-monday-android.md +426 -0
- package/dist/data/designs/ios-monday-expo.md +382 -0
- package/dist/data/designs/ios-monday-swiftui.md +386 -0
- package/dist/data/designs/ios-monday.md +415 -0
- package/dist/data/designs/ios-monzo-android.md +423 -0
- package/dist/data/designs/ios-monzo-expo.md +391 -0
- package/dist/data/designs/ios-monzo-swiftui.md +371 -0
- package/dist/data/designs/ios-monzo.md +382 -0
- package/dist/data/designs/ios-myfitnesspal-android.md +631 -0
- package/dist/data/designs/ios-myfitnesspal-expo.md +489 -0
- package/dist/data/designs/ios-myfitnesspal-swiftui.md +500 -0
- package/dist/data/designs/ios-myfitnesspal.md +408 -0
- package/dist/data/designs/ios-netflix-android.md +570 -0
- package/dist/data/designs/ios-netflix-expo.md +528 -0
- package/dist/data/designs/ios-netflix-swiftui.md +543 -0
- package/dist/data/designs/ios-netflix.md +476 -0
- package/dist/data/designs/ios-nextdoor-android.md +399 -0
- package/dist/data/designs/ios-nextdoor-expo.md +317 -0
- package/dist/data/designs/ios-nextdoor-swiftui.md +343 -0
- package/dist/data/designs/ios-nextdoor.md +332 -0
- package/dist/data/designs/ios-nike-run-club-android.md +598 -0
- package/dist/data/designs/ios-nike-run-club-expo.md +459 -0
- package/dist/data/designs/ios-nike-run-club-swiftui.md +474 -0
- package/dist/data/designs/ios-nike-run-club.md +400 -0
- package/dist/data/designs/ios-noom-android.md +455 -0
- package/dist/data/designs/ios-noom-expo.md +362 -0
- package/dist/data/designs/ios-noom-swiftui.md +369 -0
- package/dist/data/designs/ios-noom.md +404 -0
- package/dist/data/designs/ios-notion-android.md +575 -0
- package/dist/data/designs/ios-notion-expo.md +543 -0
- package/dist/data/designs/ios-notion-swiftui.md +562 -0
- package/dist/data/designs/ios-notion.md +506 -0
- package/dist/data/designs/ios-nubank-android.md +447 -0
- package/dist/data/designs/ios-nubank-expo.md +391 -0
- package/dist/data/designs/ios-nubank-swiftui.md +391 -0
- package/dist/data/designs/ios-nubank.md +388 -0
- package/dist/data/designs/ios-obsidian-android.md +456 -0
- package/dist/data/designs/ios-obsidian-expo.md +401 -0
- package/dist/data/designs/ios-obsidian-swiftui.md +412 -0
- package/dist/data/designs/ios-obsidian.md +363 -0
- package/dist/data/designs/ios-okcupid-android.md +496 -0
- package/dist/data/designs/ios-okcupid-expo.md +378 -0
- package/dist/data/designs/ios-okcupid-swiftui.md +343 -0
- package/dist/data/designs/ios-okcupid.md +364 -0
- package/dist/data/designs/ios-opentable-android.md +426 -0
- package/dist/data/designs/ios-opentable-expo.md +350 -0
- package/dist/data/designs/ios-opentable-swiftui.md +328 -0
- package/dist/data/designs/ios-opentable.md +411 -0
- package/dist/data/designs/ios-oura-android.md +426 -0
- package/dist/data/designs/ios-oura-expo.md +353 -0
- package/dist/data/designs/ios-oura-swiftui.md +327 -0
- package/dist/data/designs/ios-oura.md +356 -0
- package/dist/data/designs/ios-overcast-android.md +508 -0
- package/dist/data/designs/ios-overcast-expo.md +420 -0
- package/dist/data/designs/ios-overcast-swiftui.md +427 -0
- package/dist/data/designs/ios-overcast.md +414 -0
- package/dist/data/designs/ios-pandora-android.md +477 -0
- package/dist/data/designs/ios-pandora-expo.md +406 -0
- package/dist/data/designs/ios-pandora-swiftui.md +413 -0
- package/dist/data/designs/ios-pandora.md +366 -0
- package/dist/data/designs/ios-panera-android.md +414 -0
- package/dist/data/designs/ios-panera-expo.md +352 -0
- package/dist/data/designs/ios-panera-swiftui.md +369 -0
- package/dist/data/designs/ios-panera.md +412 -0
- package/dist/data/designs/ios-paramount-plus-android.md +415 -0
- package/dist/data/designs/ios-paramount-plus-expo.md +363 -0
- package/dist/data/designs/ios-paramount-plus-swiftui.md +372 -0
- package/dist/data/designs/ios-paramount-plus.md +400 -0
- package/dist/data/designs/ios-paypal-android.md +535 -0
- package/dist/data/designs/ios-paypal-expo.md +429 -0
- package/dist/data/designs/ios-paypal-swiftui.md +466 -0
- package/dist/data/designs/ios-paypal.md +393 -0
- package/dist/data/designs/ios-peacock-android.md +453 -0
- package/dist/data/designs/ios-peacock-expo.md +393 -0
- package/dist/data/designs/ios-peacock-swiftui.md +420 -0
- package/dist/data/designs/ios-peacock.md +411 -0
- package/dist/data/designs/ios-peloton-android.md +470 -0
- package/dist/data/designs/ios-peloton-expo.md +401 -0
- package/dist/data/designs/ios-peloton-swiftui.md +409 -0
- package/dist/data/designs/ios-peloton.md +415 -0
- package/dist/data/designs/ios-perplexity-android.md +553 -0
- package/dist/data/designs/ios-perplexity-expo.md +703 -0
- package/dist/data/designs/ios-perplexity-swiftui.md +602 -0
- package/dist/data/designs/ios-perplexity.md +453 -0
- package/dist/data/designs/ios-pinterest-android.md +551 -0
- package/dist/data/designs/ios-pinterest-expo.md +466 -0
- package/dist/data/designs/ios-pinterest-swiftui.md +464 -0
- package/dist/data/designs/ios-pinterest.md +427 -0
- package/dist/data/designs/ios-plenty-of-fish-android.md +462 -0
- package/dist/data/designs/ios-plenty-of-fish-expo.md +380 -0
- package/dist/data/designs/ios-plenty-of-fish-swiftui.md +429 -0
- package/dist/data/designs/ios-plenty-of-fish.md +387 -0
- package/dist/data/designs/ios-plex-android.md +403 -0
- package/dist/data/designs/ios-plex-expo.md +333 -0
- package/dist/data/designs/ios-plex-swiftui.md +349 -0
- package/dist/data/designs/ios-plex.md +379 -0
- package/dist/data/designs/ios-pluto-tv-android.md +413 -0
- package/dist/data/designs/ios-pluto-tv-expo.md +379 -0
- package/dist/data/designs/ios-pluto-tv-swiftui.md +411 -0
- package/dist/data/designs/ios-pluto-tv.md +362 -0
- package/dist/data/designs/ios-pocket-casts-android.md +492 -0
- package/dist/data/designs/ios-pocket-casts-expo.md +430 -0
- package/dist/data/designs/ios-pocket-casts-swiftui.md +479 -0
- package/dist/data/designs/ios-pocket-casts.md +427 -0
- package/dist/data/designs/ios-postman-android.md +472 -0
- package/dist/data/designs/ios-postman-expo.md +372 -0
- package/dist/data/designs/ios-postman-swiftui.md +377 -0
- package/dist/data/designs/ios-postman.md +405 -0
- package/dist/data/designs/ios-prime-video-android.md +447 -0
- package/dist/data/designs/ios-prime-video-expo.md +365 -0
- package/dist/data/designs/ios-prime-video-swiftui.md +333 -0
- package/dist/data/designs/ios-prime-video.md +351 -0
- package/dist/data/designs/ios-quora-android.md +513 -0
- package/dist/data/designs/ios-quora-expo.md +362 -0
- package/dist/data/designs/ios-quora-swiftui.md +375 -0
- package/dist/data/designs/ios-quora.md +359 -0
- package/dist/data/designs/ios-raya-android.md +401 -0
- package/dist/data/designs/ios-raya-expo.md +366 -0
- package/dist/data/designs/ios-raya-swiftui.md +393 -0
- package/dist/data/designs/ios-raya.md +366 -0
- package/dist/data/designs/ios-reddit-android.md +605 -0
- package/dist/data/designs/ios-reddit-expo.md +553 -0
- package/dist/data/designs/ios-reddit-swiftui.md +514 -0
- package/dist/data/designs/ios-reddit.md +460 -0
- package/dist/data/designs/ios-resy-android.md +430 -0
- package/dist/data/designs/ios-resy-expo.md +344 -0
- package/dist/data/designs/ios-resy-swiftui.md +330 -0
- package/dist/data/designs/ios-resy.md +412 -0
- package/dist/data/designs/ios-revolut-android.md +433 -0
- package/dist/data/designs/ios-revolut-expo.md +379 -0
- package/dist/data/designs/ios-revolut-swiftui.md +372 -0
- package/dist/data/designs/ios-revolut.md +353 -0
- package/dist/data/designs/ios-robinhood-android.md +587 -0
- package/dist/data/designs/ios-robinhood-expo.md +416 -0
- package/dist/data/designs/ios-robinhood-swiftui.md +431 -0
- package/dist/data/designs/ios-robinhood.md +380 -0
- package/dist/data/designs/ios-runna-android.md +485 -0
- package/dist/data/designs/ios-runna-expo.md +388 -0
- package/dist/data/designs/ios-runna-swiftui.md +413 -0
- package/dist/data/designs/ios-runna.md +390 -0
- package/dist/data/designs/ios-shazam-android.md +436 -0
- package/dist/data/designs/ios-shazam-expo.md +348 -0
- package/dist/data/designs/ios-shazam-swiftui.md +394 -0
- package/dist/data/designs/ios-shazam.md +338 -0
- package/dist/data/designs/ios-signal-android.md +462 -0
- package/dist/data/designs/ios-signal-expo.md +361 -0
- package/dist/data/designs/ios-signal-swiftui.md +350 -0
- package/dist/data/designs/ios-signal.md +357 -0
- package/dist/data/designs/ios-skype-android.md +398 -0
- package/dist/data/designs/ios-skype-expo.md +368 -0
- package/dist/data/designs/ios-skype-swiftui.md +369 -0
- package/dist/data/designs/ios-skype.md +406 -0
- package/dist/data/designs/ios-skyscanner-android.md +451 -0
- package/dist/data/designs/ios-skyscanner-expo.md +423 -0
- package/dist/data/designs/ios-skyscanner-swiftui.md +419 -0
- package/dist/data/designs/ios-skyscanner.md +421 -0
- package/dist/data/designs/ios-slack-android.md +695 -0
- package/dist/data/designs/ios-slack-expo.md +601 -0
- package/dist/data/designs/ios-slack-swiftui.md +594 -0
- package/dist/data/designs/ios-slack.md +474 -0
- package/dist/data/designs/ios-sleep-cycle-android.md +436 -0
- package/dist/data/designs/ios-sleep-cycle-expo.md +380 -0
- package/dist/data/designs/ios-sleep-cycle-swiftui.md +409 -0
- package/dist/data/designs/ios-sleep-cycle.md +386 -0
- package/dist/data/designs/ios-snapchat-android.md +671 -0
- package/dist/data/designs/ios-snapchat-expo.md +528 -0
- package/dist/data/designs/ios-snapchat-swiftui.md +557 -0
- package/dist/data/designs/ios-snapchat.md +478 -0
- package/dist/data/designs/ios-sofi-android.md +446 -0
- package/dist/data/designs/ios-sofi-expo.md +387 -0
- package/dist/data/designs/ios-sofi-swiftui.md +379 -0
- package/dist/data/designs/ios-sofi.md +385 -0
- package/dist/data/designs/ios-soundcloud-android.md +488 -0
- package/dist/data/designs/ios-soundcloud-expo.md +364 -0
- package/dist/data/designs/ios-soundcloud-swiftui.md +399 -0
- package/dist/data/designs/ios-soundcloud.md +359 -0
- package/dist/data/designs/ios-southwest-android.md +446 -0
- package/dist/data/designs/ios-southwest-expo.md +389 -0
- package/dist/data/designs/ios-southwest-swiftui.md +405 -0
- package/dist/data/designs/ios-southwest.md +405 -0
- package/dist/data/designs/ios-spotify-android.md +427 -0
- package/dist/data/designs/ios-spotify-expo.md +321 -0
- package/dist/data/designs/ios-spotify-swiftui.md +312 -0
- package/dist/data/designs/ios-spotify.md +366 -0
- package/dist/data/designs/ios-starbucks-android.md +622 -0
- package/dist/data/designs/ios-starbucks-expo.md +497 -0
- package/dist/data/designs/ios-starbucks-swiftui.md +500 -0
- package/dist/data/designs/ios-starbucks.md +440 -0
- package/dist/data/designs/ios-strava-android.md +656 -0
- package/dist/data/designs/ios-strava-expo.md +501 -0
- package/dist/data/designs/ios-strava-swiftui.md +465 -0
- package/dist/data/designs/ios-strava.md +433 -0
- package/dist/data/designs/ios-strong-android.md +479 -0
- package/dist/data/designs/ios-strong-expo.md +396 -0
- package/dist/data/designs/ios-strong-swiftui.md +363 -0
- package/dist/data/designs/ios-strong.md +415 -0
- package/dist/data/designs/ios-substack-android.md +440 -0
- package/dist/data/designs/ios-substack-expo.md +395 -0
- package/dist/data/designs/ios-substack-swiftui.md +371 -0
- package/dist/data/designs/ios-substack.md +372 -0
- package/dist/data/designs/ios-swiggy-android.md +549 -0
- package/dist/data/designs/ios-swiggy-expo.md +443 -0
- package/dist/data/designs/ios-swiggy-swiftui.md +471 -0
- package/dist/data/designs/ios-swiggy.md +432 -0
- package/dist/data/designs/ios-taco-bell-android.md +529 -0
- package/dist/data/designs/ios-taco-bell-expo.md +407 -0
- package/dist/data/designs/ios-taco-bell-swiftui.md +419 -0
- package/dist/data/designs/ios-taco-bell.md +430 -0
- package/dist/data/designs/ios-telegram-android.md +676 -0
- package/dist/data/designs/ios-telegram-expo.md +594 -0
- package/dist/data/designs/ios-telegram-swiftui.md +518 -0
- package/dist/data/designs/ios-telegram.md +458 -0
- package/dist/data/designs/ios-the-league-android.md +454 -0
- package/dist/data/designs/ios-the-league-expo.md +391 -0
- package/dist/data/designs/ios-the-league-swiftui.md +409 -0
- package/dist/data/designs/ios-the-league.md +368 -0
- package/dist/data/designs/ios-things-3-android.md +421 -0
- package/dist/data/designs/ios-things-3-expo.md +351 -0
- package/dist/data/designs/ios-things-3-swiftui.md +359 -0
- package/dist/data/designs/ios-things-3.md +339 -0
- package/dist/data/designs/ios-threads-android.md +588 -0
- package/dist/data/designs/ios-threads-expo.md +468 -0
- package/dist/data/designs/ios-threads-swiftui.md +452 -0
- package/dist/data/designs/ios-threads.md +424 -0
- package/dist/data/designs/ios-threema-android.md +496 -0
- package/dist/data/designs/ios-threema-expo.md +415 -0
- package/dist/data/designs/ios-threema-swiftui.md +446 -0
- package/dist/data/designs/ios-threema.md +397 -0
- package/dist/data/designs/ios-tidal-android.md +398 -0
- package/dist/data/designs/ios-tidal-expo.md +323 -0
- package/dist/data/designs/ios-tidal-swiftui.md +340 -0
- package/dist/data/designs/ios-tidal.md +351 -0
- package/dist/data/designs/ios-tiktok-android.md +654 -0
- package/dist/data/designs/ios-tiktok-expo.md +578 -0
- package/dist/data/designs/ios-tiktok-swiftui.md +595 -0
- package/dist/data/designs/ios-tiktok.md +387 -0
- package/dist/data/designs/ios-tinder-android.md +681 -0
- package/dist/data/designs/ios-tinder-expo.md +512 -0
- package/dist/data/designs/ios-tinder-swiftui.md +497 -0
- package/dist/data/designs/ios-tinder.md +415 -0
- package/dist/data/designs/ios-todoist-android.md +711 -0
- package/dist/data/designs/ios-todoist-expo.md +607 -0
- package/dist/data/designs/ios-todoist-swiftui.md +573 -0
- package/dist/data/designs/ios-todoist.md +418 -0
- package/dist/data/designs/ios-trello-android.md +412 -0
- package/dist/data/designs/ios-trello-expo.md +332 -0
- package/dist/data/designs/ios-trello-swiftui.md +359 -0
- package/dist/data/designs/ios-trello.md +344 -0
- package/dist/data/designs/ios-tripadvisor-android.md +450 -0
- package/dist/data/designs/ios-tripadvisor-expo.md +322 -0
- package/dist/data/designs/ios-tripadvisor-swiftui.md +326 -0
- package/dist/data/designs/ios-tripadvisor.md +356 -0
- package/dist/data/designs/ios-tubi-android.md +453 -0
- package/dist/data/designs/ios-tubi-expo.md +419 -0
- package/dist/data/designs/ios-tubi-swiftui.md +463 -0
- package/dist/data/designs/ios-tubi.md +383 -0
- package/dist/data/designs/ios-tumblr-android.md +462 -0
- package/dist/data/designs/ios-tumblr-expo.md +374 -0
- package/dist/data/designs/ios-tumblr-swiftui.md +380 -0
- package/dist/data/designs/ios-tumblr.md +337 -0
- package/dist/data/designs/ios-turo-android.md +500 -0
- package/dist/data/designs/ios-turo-expo.md +454 -0
- package/dist/data/designs/ios-turo-swiftui.md +447 -0
- package/dist/data/designs/ios-turo.md +392 -0
- package/dist/data/designs/ios-twitch-android.md +412 -0
- package/dist/data/designs/ios-twitch-expo.md +342 -0
- package/dist/data/designs/ios-twitch-swiftui.md +328 -0
- package/dist/data/designs/ios-twitch.md +354 -0
- package/dist/data/designs/ios-uber-android.md +637 -0
- package/dist/data/designs/ios-uber-eats-android.md +502 -0
- package/dist/data/designs/ios-uber-eats-expo.md +407 -0
- package/dist/data/designs/ios-uber-eats-swiftui.md +393 -0
- package/dist/data/designs/ios-uber-eats.md +353 -0
- package/dist/data/designs/ios-uber-expo.md +512 -0
- package/dist/data/designs/ios-uber-swiftui.md +483 -0
- package/dist/data/designs/ios-uber.md +395 -0
- package/dist/data/designs/ios-united-airlines-android.md +494 -0
- package/dist/data/designs/ios-united-airlines-expo.md +408 -0
- package/dist/data/designs/ios-united-airlines-swiftui.md +453 -0
- package/dist/data/designs/ios-united-airlines.md +388 -0
- package/dist/data/designs/ios-venmo-android.md +654 -0
- package/dist/data/designs/ios-venmo-expo.md +458 -0
- package/dist/data/designs/ios-venmo-swiftui.md +469 -0
- package/dist/data/designs/ios-venmo.md +436 -0
- package/dist/data/designs/ios-vercel-android.md +454 -0
- package/dist/data/designs/ios-vercel-expo.md +387 -0
- package/dist/data/designs/ios-vercel-swiftui.md +374 -0
- package/dist/data/designs/ios-vercel.md +399 -0
- package/dist/data/designs/ios-vero-android.md +498 -0
- package/dist/data/designs/ios-vero-expo.md +376 -0
- package/dist/data/designs/ios-vero-swiftui.md +374 -0
- package/dist/data/designs/ios-vero.md +394 -0
- package/dist/data/designs/ios-viber-android.md +377 -0
- package/dist/data/designs/ios-viber-expo.md +375 -0
- package/dist/data/designs/ios-viber-swiftui.md +378 -0
- package/dist/data/designs/ios-viber.md +403 -0
- package/dist/data/designs/ios-vimeo-android.md +465 -0
- package/dist/data/designs/ios-vimeo-expo.md +347 -0
- package/dist/data/designs/ios-vimeo-swiftui.md +383 -0
- package/dist/data/designs/ios-vimeo.md +403 -0
- package/dist/data/designs/ios-vrbo-android.md +488 -0
- package/dist/data/designs/ios-vrbo-expo.md +395 -0
- package/dist/data/designs/ios-vrbo-swiftui.md +421 -0
- package/dist/data/designs/ios-vrbo.md +383 -0
- package/dist/data/designs/ios-vsco-android.md +490 -0
- package/dist/data/designs/ios-vsco-expo.md +413 -0
- package/dist/data/designs/ios-vsco-swiftui.md +449 -0
- package/dist/data/designs/ios-vsco.md +412 -0
- package/dist/data/designs/ios-walmart-android.md +479 -0
- package/dist/data/designs/ios-walmart-expo.md +370 -0
- package/dist/data/designs/ios-walmart-swiftui.md +387 -0
- package/dist/data/designs/ios-walmart.md +366 -0
- package/dist/data/designs/ios-waze-android.md +695 -0
- package/dist/data/designs/ios-waze-expo.md +587 -0
- package/dist/data/designs/ios-waze-swiftui.md +601 -0
- package/dist/data/designs/ios-waze.md +453 -0
- package/dist/data/designs/ios-webull-android.md +429 -0
- package/dist/data/designs/ios-webull-expo.md +384 -0
- package/dist/data/designs/ios-webull-swiftui.md +406 -0
- package/dist/data/designs/ios-webull.md +375 -0
- package/dist/data/designs/ios-wechat-android.md +545 -0
- package/dist/data/designs/ios-wechat-expo.md +398 -0
- package/dist/data/designs/ios-wechat-swiftui.md +394 -0
- package/dist/data/designs/ios-wechat.md +363 -0
- package/dist/data/designs/ios-whatsapp-android.md +568 -0
- package/dist/data/designs/ios-whatsapp-expo.md +502 -0
- package/dist/data/designs/ios-whatsapp-swiftui.md +483 -0
- package/dist/data/designs/ios-whatsapp.md +425 -0
- package/dist/data/designs/ios-whoop-android.md +635 -0
- package/dist/data/designs/ios-whoop-expo.md +562 -0
- package/dist/data/designs/ios-whoop-swiftui.md +553 -0
- package/dist/data/designs/ios-whoop.md +419 -0
- package/dist/data/designs/ios-wise-android.md +428 -0
- package/dist/data/designs/ios-wise-expo.md +357 -0
- package/dist/data/designs/ios-wise-swiftui.md +356 -0
- package/dist/data/designs/ios-wise.md +361 -0
- package/dist/data/designs/ios-x-twitter-android.md +618 -0
- package/dist/data/designs/ios-x-twitter-expo.md +442 -0
- package/dist/data/designs/ios-x-twitter-swiftui.md +429 -0
- package/dist/data/designs/ios-x-twitter.md +432 -0
- package/dist/data/designs/ios-yelp-android.md +455 -0
- package/dist/data/designs/ios-yelp-expo.md +397 -0
- package/dist/data/designs/ios-yelp-swiftui.md +369 -0
- package/dist/data/designs/ios-yelp.md +398 -0
- package/dist/data/designs/ios-youtube-android.md +668 -0
- package/dist/data/designs/ios-youtube-expo.md +435 -0
- package/dist/data/designs/ios-youtube-music-android.md +450 -0
- package/dist/data/designs/ios-youtube-music-expo.md +404 -0
- package/dist/data/designs/ios-youtube-music-swiftui.md +434 -0
- package/dist/data/designs/ios-youtube-music.md +381 -0
- package/dist/data/designs/ios-youtube-swiftui.md +496 -0
- package/dist/data/designs/ios-youtube.md +466 -0
- package/dist/data/designs/ios-zalo-android.md +510 -0
- package/dist/data/designs/ios-zalo-expo.md +389 -0
- package/dist/data/designs/ios-zalo-swiftui.md +431 -0
- package/dist/data/designs/ios-zalo.md +388 -0
- package/dist/data/designs/ios-zomato-android.md +527 -0
- package/dist/data/designs/ios-zomato-expo.md +437 -0
- package/dist/data/designs/ios-zomato-swiftui.md +433 -0
- package/dist/data/designs/ios-zomato.md +439 -0
- package/dist/data/designs/ios-zoom-android.md +423 -0
- package/dist/data/designs/ios-zoom-expo.md +355 -0
- package/dist/data/designs/ios-zoom-swiftui.md +379 -0
- package/dist/data/designs/ios-zoom.md +357 -0
- package/dist/data/designs/ios-zwift-android.md +402 -0
- package/dist/data/designs/ios-zwift-expo.md +402 -0
- package/dist/data/designs/ios-zwift-swiftui.md +378 -0
- package/dist/data/designs/ios-zwift.md +411 -0
- package/dist/data/designs/kraken.md +125 -0
- package/dist/data/designs/lamborghini.md +288 -0
- package/dist/data/designs/linear.app.md +548 -0
- package/dist/data/designs/lovable.md +298 -0
- package/dist/data/designs/mastercard.md +365 -0
- package/dist/data/designs/material-clean.md +289 -0
- package/dist/data/designs/meta.md +683 -0
- package/dist/data/designs/midnight-pro.md +256 -0
- package/dist/data/designs/minimal-brutalist.md +245 -0
- package/dist/data/designs/minimax.md +746 -0
- package/dist/data/designs/mintlify.md +852 -0
- package/dist/data/designs/miro.md +825 -0
- package/dist/data/designs/mistral.ai.md +773 -0
- package/dist/data/designs/mongodb.md +767 -0
- package/dist/data/designs/nike.md +575 -0
- package/dist/data/designs/nintendo-2001.md +649 -0
- package/dist/data/designs/notion.md +821 -0
- package/dist/data/designs/nova-mobile-design-md.md +235 -0
- package/dist/data/designs/nvidia.md +640 -0
- package/dist/data/designs/ollama.md +539 -0
- package/dist/data/designs/opencode.ai.md +521 -0
- package/dist/data/designs/pinterest.md +597 -0
- package/dist/data/designs/playful-color.md +253 -0
- package/dist/data/designs/playstation.md +661 -0
- package/dist/data/designs/posthog.md +690 -0
- package/dist/data/designs/raycast.md +669 -0
- package/dist/data/designs/renault.md +589 -0
- package/dist/data/designs/replicate.md +616 -0
- package/dist/data/designs/resend.md +585 -0
- package/dist/data/designs/revolut.md +636 -0
- package/dist/data/designs/runwayml.md +244 -0
- package/dist/data/designs/sanity.md +357 -0
- package/dist/data/designs/sentry.md +551 -0
- package/dist/data/designs/shopify.md +516 -0
- package/dist/data/designs/slack.md +482 -0
- package/dist/data/designs/soft-glass.md +258 -0
- package/dist/data/designs/spacex.md +363 -0
- package/dist/data/designs/spotify.md +246 -0
- package/dist/data/designs/starbucks.md +580 -0
- package/dist/data/designs/stripe.md +487 -0
- package/dist/data/designs/supabase.md +462 -0
- package/dist/data/designs/superhuman.md +448 -0
- package/dist/data/designs/tesla.md +286 -0
- package/dist/data/designs/theverge.md +339 -0
- package/dist/data/designs/together.ai.md +633 -0
- package/dist/data/designs/uber.md +636 -0
- package/dist/data/designs/vercel.md +736 -0
- package/dist/data/designs/vodafone.md +538 -0
- package/dist/data/designs/voltagent.md +521 -0
- package/dist/data/designs/warp.md +526 -0
- package/dist/data/designs/webflow.md +588 -0
- package/dist/data/designs/wired.md +497 -0
- package/dist/data/designs/wise.md +544 -0
- package/dist/data/designs/x.ai.md +465 -0
- package/dist/data/designs/zapier.md +537 -0
- package/dist/data/index.json +2600 -0
- package/dist/httpServer.js +83 -0
- package/dist/index.js +13 -0
- package/dist/server.js +32 -0
- package/dist/services/designStore.js +59 -0
- package/dist/services/linter.js +87 -0
- package/dist/services/sectionParser.js +154 -0
- package/dist/tools/authoring.js +131 -0
- package/dist/tools/browse.js +232 -0
- package/dist/tools/diff.js +88 -0
- package/dist/tools/getDesign.js +216 -0
- package/dist/tools/guardrails.js +87 -0
- package/dist/tools/lint.js +104 -0
- package/dist/types.js +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
# Design System Inspiration of Citymapper (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Citymapper's iOS app is a **transit nerd's instrument panel disguised as a friendly app**. Its whole reason to exist is to answer "how do I get from here to there, right now, the smartest way?" — and the visual language is built around a single insight: **every transport mode gets its own loud, consistent color, and a route is read as a colored strip**. Open the app, type a destination, and you get a stack of route cards; each card shows a **leg strip** — a horizontal row of color-coded mode chips (a green walk pill → a blue tube badge → a red bus badge → a green walk pill) with little arrows between them. You don't read the words; you read the *colors and the ETA*. This mode-color system (walk green, bus red, tube/metro blue, rail purple, bike cyan, cab amber) is the brand. It is consistent across every city Citymapper supports, and it never changes between light and dark mode — a bus is always red.
|
|
6
|
+
|
|
7
|
+
The canvas is clean and near-neutral so the mode colors and the live map carry all the energy: white (`#FFFFFF`) in light, a deep blue-black (`#0C0E14`) in dark. Citymapper's own brand accent is an **electric blue (`#2B5BFF`)** used for the destination pin, primary links, the metro mode, and selected states. But the single most iconic control in the entire product is the **GO button**: a fat, friendly, rounded **green (`#00C281`)** pill with a play triangle and the word "GO", which launches **GO trip mode** — a live, step-by-step navigation experience that counts down to your next action ("Get off in 2 stops", "Walk 4 min to the platform", "Your bus is 1 min away") with big type, a progress line, and disruption alerts. The GO pill is shape- and color-locked: it looks the same on every screen, in every city, in every theme.
|
|
8
|
+
|
|
9
|
+
The structure is: an **origin→destination card** at the top (two dots — a gray "from" dot and a blue "to" dot — connected by a short line, exactly like a transit map), a list of **route options** ranked by Citymapper's blend of speed/cost/effort (tagged "Fastest", "Cheapest", "Easiest", "Rain-safe"), and the **GO** button. Tapping a route opens **step-by-step**, and starting it enters **GO trip mode**. Other signature surfaces: the **departures board** (a live list of next departures at a stop, each row a colored line badge + destination + minutes, with imminent departures in amber), the **Nearby** screen (stops around you with live arrivals), and **disruption banners** (orange) that surface line closures inline in route results.
|
|
10
|
+
|
|
11
|
+
Typography is a friendly geometric grotesque — Citymapper uses a custom face, well-approximated by **Inter** with heavy weights. The personality is *confident and chunky*: ETAs and the GO label are extra-bold (800–900), place names are semibold, supporting text is regular gray. It's playful but never cute at the expense of legibility — you have to read this while half-running for a train.
|
|
12
|
+
|
|
13
|
+
**Key Characteristics:**
|
|
14
|
+
- Mode-color system — walk `#00B894`, bus `#E8453C`, tube/metro `#2B5BFF`, rail `#8E44D8`, bike `#00A8C5`, cab `#FFB400` — theme-invariant, the brand's soul
|
|
15
|
+
- **Leg strip** — a route shown as a horizontal row of color-coded mode chips with arrows between
|
|
16
|
+
- **GO button** — fat green (`#00C281`) rounded pill with a play triangle; shape/color-locked everywhere
|
|
17
|
+
- **GO trip mode** — live step-by-step navigation with big countdown type and a progress line
|
|
18
|
+
- Origin→destination card — gray "from" dot + blue "to" dot joined by a transit-map line
|
|
19
|
+
- Route options ranked & tagged — Fastest / Cheapest / Easiest / Rain-safe
|
|
20
|
+
- **Departures board** — live next-departure list; colored line badge + destination + minutes (amber when imminent)
|
|
21
|
+
- Disruption banners — orange inline alerts for closures and delays
|
|
22
|
+
- Clean near-neutral canvas (white / deep blue-black `#0C0E14`) so mode colors + map pop
|
|
23
|
+
- Electric blue (`#2B5BFF`) is Citymapper's own accent; green is reserved for GO
|
|
24
|
+
- Chunky confident type (Inter / custom grotesque), extra-bold ETAs
|
|
25
|
+
- Bottom tabs: Get me / Nearby / Saved / You
|
|
26
|
+
|
|
27
|
+
## 2. Color Palette & Roles
|
|
28
|
+
|
|
29
|
+
### Primary (Interactive)
|
|
30
|
+
- **Citymapper Blue** (`#2B5BFF`): The brand accent — destination pin, primary links, selected states, the "metro/tube" mode color, secondary CTAs.
|
|
31
|
+
- **Citymapper Blue Bright** (`#4D7BFF`): Dark-mode link & active-tab variant for contrast on the dark canvas.
|
|
32
|
+
- **Citymapper Blue Pressed** (`#1E45CC`): Pressed state of blue CTAs.
|
|
33
|
+
- **GO Green** (`#00C281`): Reserved exclusively for the GO button and GO trip mode — never used for generic UI.
|
|
34
|
+
|
|
35
|
+
### Transit Mode Colors (Theme-Invariant — the brand)
|
|
36
|
+
These define a route's readability and **do not change between light and dark**.
|
|
37
|
+
|
|
38
|
+
| Mode | Color | Tint (bg use) |
|
|
39
|
+
|------|-------|---------------|
|
|
40
|
+
| Walk | `#00B894` | `rgba(0,184,148,0.18)` |
|
|
41
|
+
| Bus | `#E8453C` | `rgba(232,69,60,0.18)` |
|
|
42
|
+
| Tube / Metro / Subway | `#2B5BFF` | `rgba(43,91,255,0.18)` |
|
|
43
|
+
| Rail / Train / Overground | `#8E44D8` | `rgba(142,68,216,0.18)` |
|
|
44
|
+
| Bike / Scooter | `#00A8C5` | `rgba(0,168,197,0.18)` |
|
|
45
|
+
| Cab / Rideshare | `#FFB400` | `rgba(255,180,0,0.18)` |
|
|
46
|
+
| Ferry | `#0094C6` | `rgba(0,148,198,0.18)` |
|
|
47
|
+
|
|
48
|
+
> Real transit lines (e.g., London Victoria line navy, NYC A/C/E blue) override these defaults with the operator's official line color when known. The mode colors are the *fallback and category* color.
|
|
49
|
+
|
|
50
|
+
### Canvas & Surfaces (Light Mode)
|
|
51
|
+
- **Canvas White** (`#FFFFFF`): Primary light canvas.
|
|
52
|
+
- **Surface Gray** (`#F4F5F8`): Route cards, grouped sections.
|
|
53
|
+
- **Surface Pressed** (`#E8EAF0`): Pressed rows.
|
|
54
|
+
- **Divider** (`#E3E5EC`): Hairlines between route legs and departure rows.
|
|
55
|
+
|
|
56
|
+
### Canvas & Surfaces (Dark Mode)
|
|
57
|
+
- **Dark Canvas** (`#0C0E14`): Primary dark canvas — a deep blue-black, NOT pure black.
|
|
58
|
+
- **Dark Surface 1** (`#15171F`): Route cards, elevated surfaces.
|
|
59
|
+
- **Dark Surface 2** (`#1E212B`): Departures board, hovered/selected cards.
|
|
60
|
+
- **Dark Divider** (`#282C38`): Hairline dividers on dark.
|
|
61
|
+
|
|
62
|
+
### Text
|
|
63
|
+
- **Text Primary Light** (`#10131A`): ETAs, place names, titles — near-black.
|
|
64
|
+
- **Text Secondary Light** (`#5A6473`): Metadata, "min" suffix, captions.
|
|
65
|
+
- **Text Tertiary Light** (`#8A93A3`): Disabled, placeholder, leg arrows.
|
|
66
|
+
- **Text Primary Dark** (`#ECEEF3`): Primary text on dark.
|
|
67
|
+
- **Text Secondary Dark** (`#98A0AE`): Secondary on dark.
|
|
68
|
+
- **Text Tertiary Dark** (`#646C7A`): Tertiary on dark.
|
|
69
|
+
|
|
70
|
+
### Surface / Tint Map
|
|
71
|
+
|
|
72
|
+
| Role | Light Mode | Dark Mode |
|
|
73
|
+
|------|-----------|-----------|
|
|
74
|
+
| Canvas | `#FFFFFF` | `#0C0E14` |
|
|
75
|
+
| Surface 1 | `#F4F5F8` | `#15171F` |
|
|
76
|
+
| Surface 2 | `#E8EAF0` | `#1E212B` |
|
|
77
|
+
| Divider | `#E3E5EC` | `#282C38` |
|
|
78
|
+
| Blue tint | `#2B5BFF14` | `#2B5BFF29` |
|
|
79
|
+
| GO Green tint | `#00C2811F` | `#00C2812E` |
|
|
80
|
+
|
|
81
|
+
### Semantic
|
|
82
|
+
- **Disruption Orange** (`#FF8A00`): Line closures, severe delays — inline banners and the "minutes soon" departure state.
|
|
83
|
+
- **Live Green** (`#00C281`): "Live" indicator dot, on-time confirmation (shares the GO green).
|
|
84
|
+
- **Delay Red** (`#E8453C`): Cancelled/severely-delayed services (shares the bus red intentionally — "red = stop/problem").
|
|
85
|
+
- **Info Blue** (`#2B5BFF`): Informational tips, "we updated this route".
|
|
86
|
+
|
|
87
|
+
## 3. Typography Rules
|
|
88
|
+
|
|
89
|
+
### Font Family
|
|
90
|
+
- **Primary**: Citymapper's custom geometric grotesque (a chunky, friendly sans tuned for glanceable transit data).
|
|
91
|
+
- **iOS Fallback**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', 'Helvetica Neue', sans-serif`
|
|
92
|
+
- **Web/Catalog Substitute**: `Inter` (weights 400–900) — closest free face matching the chunky grotesque feel.
|
|
93
|
+
- **Numerics**: Tabular figures for ETAs, minutes, and the departures board so countdowns don't jitter.
|
|
94
|
+
|
|
95
|
+
### Hierarchy
|
|
96
|
+
|
|
97
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
98
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
99
|
+
| Display | Grotesque | 32pt | 900 | 1.1 | -0.5pt | "Get me somewhere" / GO-mode primary instruction |
|
|
100
|
+
| ETA Hero | Grotesque | 26pt | 800 | 1.15 | -0.3pt | Route card "24 min", GO-mode countdown |
|
|
101
|
+
| Section | Grotesque | 22pt | 800 | 1.2 | -0.2pt | "Best routes", "Departures" |
|
|
102
|
+
| Row Title | Grotesque | 18pt | 700 | 1.3 | -0.1pt | Line name, step title |
|
|
103
|
+
| Body | Grotesque | 16pt | 400 | 1.45 | 0pt | Step descriptions, route notes |
|
|
104
|
+
| Place | Grotesque | 15pt | 600 | 1.3 | 0pt | Origin/destination, stop names |
|
|
105
|
+
| Meta | Grotesque | 14pt | 400 | 1.4 | 0pt | "Updated 12s ago · live" |
|
|
106
|
+
| Mode Badge | Grotesque | 12pt | 800 | 1.0 | 0.3pt | Line/route number on a colored chip — uppercase |
|
|
107
|
+
| ETA Suffix | Grotesque | 13pt | 600 | 1.0 | 0pt | The "min" after a number |
|
|
108
|
+
| GO Label | Grotesque | 18pt | 900 | 1.0 | 0.4pt | The word "GO" in the button — uppercase |
|
|
109
|
+
| Button | Grotesque | 15pt | 800 | 1.0 | 0pt | Secondary buttons |
|
|
110
|
+
| Tag | Grotesque | 10pt | 800 | 1.0 | 0.4pt | "Fastest"/"Cheapest" pills — uppercase |
|
|
111
|
+
| Departure Min | Grotesque | 16pt | 800 | 1.0 | 0pt | Minutes on the departures board, tabular |
|
|
112
|
+
| Tab Label | Grotesque | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
|
|
113
|
+
|
|
114
|
+
### Principles
|
|
115
|
+
- **ETAs and GO are the loudest type** (800–900): the number you act on dominates every screen.
|
|
116
|
+
- **Tabular figures for anything counting down**: route ETAs, departure minutes, GO-mode countdowns.
|
|
117
|
+
- **Mode badges are uppercase, chunky, tracked**: line numbers/names sit in colored chips at 12pt 800.
|
|
118
|
+
- **Confident, not cute**: heavy weights, tight tracking on big type — readable while moving.
|
|
119
|
+
- **Dynamic Type first-class**: display, ETA, body scale; mode badges, tab labels, the GO label stay fixed (chips are layout-sensitive).
|
|
120
|
+
|
|
121
|
+
## 4. Component Stylings
|
|
122
|
+
|
|
123
|
+
### Buttons
|
|
124
|
+
|
|
125
|
+
**GO Button (the icon of the app)**
|
|
126
|
+
- Shape: Full rounded pill, 28pt corner radius (≈ height/2), height 54pt
|
|
127
|
+
- Background: `#00C281` (GO Green) — never any other color
|
|
128
|
+
- Content: a play triangle (filled) + the word "GO" in 18pt weight 900, color `#003322` (dark green text for warmth) or white per contrast
|
|
129
|
+
- Shadow: `0 10px 22px -10px rgba(0,194,129,0.7)`
|
|
130
|
+
- Pressed: scale 0.98 + brightness 0.95
|
|
131
|
+
- **Locked**: identical shape, color, and label on every screen and in every theme — it is the brand control
|
|
132
|
+
|
|
133
|
+
**Primary Button (Get directions / secondary CTA)**
|
|
134
|
+
- Background: `#2B5BFF` (Citymapper Blue)
|
|
135
|
+
- Text: white, 15pt weight 800
|
|
136
|
+
- Corner radius: 12pt; padding 13pt/24pt
|
|
137
|
+
- Pressed: `#1E45CC`
|
|
138
|
+
|
|
139
|
+
**Outline Button (Save place)**
|
|
140
|
+
- Background: transparent
|
|
141
|
+
- Text & border: `#2B5BFF` light / `#4D7BFF` dark, 1.5pt border
|
|
142
|
+
- Corner radius: 12pt; padding 11pt/18pt
|
|
143
|
+
|
|
144
|
+
**Text Button (More routes)**
|
|
145
|
+
- Font: 14pt weight 700
|
|
146
|
+
- Color: `#2B5BFF` / `#4D7BFF` dark
|
|
147
|
+
- Pressed: 60% opacity
|
|
148
|
+
|
|
149
|
+
### Cards & Containers
|
|
150
|
+
|
|
151
|
+
**Origin→Destination Card**
|
|
152
|
+
- Background: `#F4F5F8` / `#15171F`, 1pt divider border, 14pt corner radius, 12pt/14pt padding
|
|
153
|
+
- Two rows: a 10pt gray dot ("from") and a 10pt blue dot ("to"), joined by a 2pt vertical divider segment between them — reads like a transit-map stop pair
|
|
154
|
+
- Place text: 14–15pt weight 600
|
|
155
|
+
|
|
156
|
+
**Route Option Card**
|
|
157
|
+
- Background: `#F4F5F8` / `#15171F`, 1pt divider border, 16pt corner radius, 14pt/16pt padding, 12pt vertical gap between cards
|
|
158
|
+
- "Best" route: border switches to GO Green `#00C281`
|
|
159
|
+
- Head: ETA "24" 22pt 800 + "min" 13pt 600 secondary, with a right-aligned tag pill ("Fastest"/"Cheapest")
|
|
160
|
+
- **Leg strip**: horizontal flex row of mode chips: each chip is a colored rounded-8pt pill with a 13pt white mode glyph + a short label/number (e.g., "4" for walk minutes, "Victoria" for a line); chips separated by a tertiary "›" arrow
|
|
161
|
+
|
|
162
|
+
**Departures Board**
|
|
163
|
+
- Container: `#1E212B` / surface, 14pt radius, `overflow: hidden`
|
|
164
|
+
- Row: 13pt/16pt padding, 1pt bottom divider (none last)
|
|
165
|
+
- Leading: a 34×24 line badge (mode-colored, 12pt 900 white text — e.g., "VIC", "63", "NR")
|
|
166
|
+
- Middle: destination 14pt weight 600
|
|
167
|
+
- Trailing: minutes 16pt weight 800 — GO Green normally, **Disruption Orange when ≤ 3 min** ("leave now")
|
|
168
|
+
|
|
169
|
+
**Mode Chip / Badge**
|
|
170
|
+
- Rounded 8–10pt pill, mode color background, white text 12pt 800 uppercase, optional 13pt glyph
|
|
171
|
+
- The atomic unit of every route view
|
|
172
|
+
|
|
173
|
+
### Navigation
|
|
174
|
+
|
|
175
|
+
**Top (Origin→Destination)**
|
|
176
|
+
- The O→D card *is* the top region on the route screen — no separate nav bar; back chevron floats top-left when drilled in
|
|
177
|
+
|
|
178
|
+
**Bottom Tab Bar**
|
|
179
|
+
- Height: 64pt + safe area
|
|
180
|
+
- Background: `#FFFFFF` / `rgba(12,14,20,0.94)` with `backdrop-filter: blur(20px)`, 0.5pt top divider
|
|
181
|
+
- Tabs (4): Get me / Nearby / Saved / You
|
|
182
|
+
- Icon: 22pt; active `#2B5BFF` light / `#4D7BFF` dark (filled), inactive tertiary gray
|
|
183
|
+
- Label: 10pt weight 600, always shown
|
|
184
|
+
- No pill indicator — color + icon-fill change only
|
|
185
|
+
|
|
186
|
+
**GO Trip Mode (full-screen takeover)**
|
|
187
|
+
- Replaces normal chrome: a big current-instruction header (ETA Hero / Display weight), a vertical progress line with mode-colored segments and stop dots, a "next action" card, and a persistent disruption strip if relevant
|
|
188
|
+
- A floating "End" / minimize control; the GO green theme dominates
|
|
189
|
+
|
|
190
|
+
### Input Fields
|
|
191
|
+
|
|
192
|
+
**Destination Search**
|
|
193
|
+
- Height: 48pt
|
|
194
|
+
- Background: `#F4F5F8` / `#1E212B`
|
|
195
|
+
- Corner radius: 12pt
|
|
196
|
+
- Leading 18pt search glyph (tertiary)
|
|
197
|
+
- Placeholder: "Where to?" 15pt 400 tertiary
|
|
198
|
+
- Focus: 2pt `#2B5BFF` border
|
|
199
|
+
|
|
200
|
+
**Origin Field (inline in O→D card)**
|
|
201
|
+
- Borderless row in the O→D card; tap to edit, opens the same search sheet
|
|
202
|
+
|
|
203
|
+
### Distinctive Components
|
|
204
|
+
|
|
205
|
+
**Leg Strip**
|
|
206
|
+
- The signature route visualization — a horizontal sequence of mode chips + arrows
|
|
207
|
+
- Reads in <1s: color = mode, number = line/duration
|
|
208
|
+
- Never render a route as plain text — always the colored strip
|
|
209
|
+
|
|
210
|
+
**GO Trip Mode Countdown**
|
|
211
|
+
- Big "Get off in 2 stops" / "Bus in 1 min" instruction (ETA Hero/Display weight)
|
|
212
|
+
- A live vertical progress line; the current leg's segment animates/pulses in its mode color
|
|
213
|
+
- Haptic + voice cues at each step transition
|
|
214
|
+
|
|
215
|
+
**Departures Board**
|
|
216
|
+
- Live, auto-refreshing; minutes tick down; imminent (≤3 min) turn orange
|
|
217
|
+
- "Live" green dot + "updated Ns ago" caption
|
|
218
|
+
|
|
219
|
+
**Route Tag Pill**
|
|
220
|
+
- Tiny uppercase pill on a route card: "Fastest" (GO-green tint), "Cheapest" (blue tint), "Easiest", "Rain-safe" (a cloud glyph), "Step-free"
|
|
221
|
+
- Communicates *why* you'd pick this route
|
|
222
|
+
|
|
223
|
+
**Disruption Banner**
|
|
224
|
+
- Inline orange (`#FF8A00`) strip in route results: "⚠ Victoria line: minor delays"
|
|
225
|
+
- Tap to expand details; severe closures use Delay Red `#E8453C`
|
|
226
|
+
|
|
227
|
+
**Nearby Stops List**
|
|
228
|
+
- Each entry: stop name + a row of mode badges with the soonest arrival per line
|
|
229
|
+
- The "I just want to see what's around me" surface
|
|
230
|
+
|
|
231
|
+
## 5. Layout Principles
|
|
232
|
+
|
|
233
|
+
### Spacing System
|
|
234
|
+
- Base unit: 4pt
|
|
235
|
+
- Scale: 4, 6, 8, 12, 16, 18, 24, 32, 40, 54
|
|
236
|
+
- Page horizontal inset: 16pt
|
|
237
|
+
- Card internal padding: 14–16pt
|
|
238
|
+
- Route-card vertical gap: 12pt
|
|
239
|
+
- Leg-strip chip gap: 6pt
|
|
240
|
+
|
|
241
|
+
### Grid & Container
|
|
242
|
+
- iPhone: single-column route list at 16pt insets; map fills above when in map mode
|
|
243
|
+
- iPad: two-pane — route list (max 420pt) on the left, live map on the right; GO mode is full-screen on both
|
|
244
|
+
- Departures board: single column, fixed row height
|
|
245
|
+
- Leg strip: horizontal wrap, never truncates the mode color (label may abbreviate)
|
|
246
|
+
|
|
247
|
+
### Whitespace Philosophy
|
|
248
|
+
- **Color does the work, not whitespace**: the canvas is calm so mode colors and the map carry energy
|
|
249
|
+
- **The GO button always has clear space** below the route list — it must never be crowded
|
|
250
|
+
- **Glance-optimized density**: route cards are compact enough that 3–4 fit without scrolling
|
|
251
|
+
- **One green action**: GO is the only green; nothing else competes for that meaning
|
|
252
|
+
|
|
253
|
+
### Border Radius Scale
|
|
254
|
+
- Square (0pt): map, full-bleed banners
|
|
255
|
+
- Subtle (4pt): tiny tags
|
|
256
|
+
- Standard (8pt): mode chips, route tag pills
|
|
257
|
+
- Comfortable (10–12pt): badges, inputs, primary button
|
|
258
|
+
- Card (14–16pt): route cards, O→D card, departures board
|
|
259
|
+
- GO Pill (28pt ≈ height/2): the GO button
|
|
260
|
+
- Pill (500pt): filter chips
|
|
261
|
+
- Circle (50%): O→D dots, avatar, live dot
|
|
262
|
+
|
|
263
|
+
## 6. Depth & Elevation
|
|
264
|
+
|
|
265
|
+
Citymapper is mostly flat; depth highlights the live map layer and the one action that matters.
|
|
266
|
+
|
|
267
|
+
| Level | Treatment | Use |
|
|
268
|
+
|-------|-----------|-----|
|
|
269
|
+
| Flat (Level 0) | No shadow; 1pt border/divider | Route cards, departures rows, sections |
|
|
270
|
+
| Map Sheet (Level 1) | `0 -8px 24px rgba(0,0,0,0.16)` | The route list / bottom sheet sitting over the map |
|
|
271
|
+
| GO Action (Level 2) | `0 10px 22px -10px rgba(0,194,129,0.7)` (green-tinted) | The GO button only |
|
|
272
|
+
| Floating (Level 2) | `0 6px 20px rgba(16,19,26,0.14)` | Disruption detail popover, mode-filter sheet |
|
|
273
|
+
| Modal Scrim | `rgba(8,10,16,0.5)` | Behind sheets/modals |
|
|
274
|
+
|
|
275
|
+
**Shadow Philosophy**: The bottom-sheet-over-map is the core spatial metaphor — the route list floats above a live map and you can drag it up/down. The only persistently shadowed control is the GO button, with a green-tinted glow that makes it the obvious thing to press. Everything else is flat with borders. On dark mode the GO glow stays (green reads on the deep blue-black); card separation uses the `#15171F` → `#1E212B` surface ramp.
|
|
276
|
+
|
|
277
|
+
### Motion
|
|
278
|
+
- **Route list ⇄ map drag**: the sheet tracks the finger 1:1; snap points at peek / half / full with `spring(response: 0.35, damping: 0.85)`
|
|
279
|
+
- **GO start**: GO pill scales 0.98 then the screen cross-dissolves into GO trip mode (350ms); the progress line draws in from the top over 500ms
|
|
280
|
+
- **GO-mode step transition**: the completed leg's line segment fills its mode color (250ms ease-out); the instruction text swaps with a 200ms vertical slide+fade; medium haptic + optional voice cue
|
|
281
|
+
- **Departure tick**: minutes decrement with a 150ms number cross-fade; crossing the ≤3-min threshold animates the color to orange (200ms)
|
|
282
|
+
- **Leg strip reveal**: on a fresh search, route cards stagger-in (each `opacity 0→1` + 8pt rise, 60ms apart); leg chips within a card pop in left-to-right (40ms apart, slight scale 0.9→1)
|
|
283
|
+
- **Disruption banner**: slides down from the top of the result list in 250ms ease-out; pulses its orange border once to draw the eye
|
|
284
|
+
- **Tab switch**: instant content swap; active icon does a subtle 0.9→1 scale (120ms)
|
|
285
|
+
- **Pull to refresh departures**: custom transit-y loader; on release, minutes restream with the cross-fade
|
|
286
|
+
- **Haptic feedback**: light tick on route select & tab change; medium impact on GO start and each GO-mode step; warning haptic when a disruption affects the active route
|
|
287
|
+
|
|
288
|
+
## 7. Do's and Don'ts
|
|
289
|
+
|
|
290
|
+
### Do
|
|
291
|
+
- Give every transport mode its loud, consistent color (walk green / bus red / tube blue / rail purple / bike cyan / cab amber) and keep it identical across themes
|
|
292
|
+
- Render routes as a **leg strip** of colored mode chips with arrows — color first, words second
|
|
293
|
+
- Keep the **GO button** a fat green (`#00C281`) pill, shape- and color-locked on every screen and theme
|
|
294
|
+
- Use Citymapper Blue (`#2B5BFF`) for the brand accent / destination / metro; reserve green for GO
|
|
295
|
+
- Show the O→D as a gray "from" dot + blue "to" dot joined by a transit-map line
|
|
296
|
+
- Tag routes with *why* ("Fastest", "Cheapest", "Easiest", "Rain-safe")
|
|
297
|
+
- Make the departures board live, with imminent (≤3 min) departures in orange
|
|
298
|
+
- Use tabular figures for every ETA, minute, and countdown
|
|
299
|
+
- Surface disruptions inline as orange banners in route results
|
|
300
|
+
- Keep the canvas calm (white / deep blue-black `#0C0E14`) so mode colors and the map pop
|
|
301
|
+
- Use chunky extra-bold type for ETAs and GO — readable while moving
|
|
302
|
+
|
|
303
|
+
### Don't
|
|
304
|
+
- Don't recolor modes per theme — a bus is always red, light or dark
|
|
305
|
+
- Don't render a route as a plain text list — it must be the colored leg strip
|
|
306
|
+
- Don't use green for anything except GO / live / on-time — green means "go"
|
|
307
|
+
- Don't change the GO button's shape or color contextually — it is the brand control
|
|
308
|
+
- Don't use pure black (`#000000`) for dark canvas — it's deep blue-black `#0C0E14`
|
|
309
|
+
- Don't bury the GO button or crowd it — it always has clear space
|
|
310
|
+
- Don't let real line colors get overridden by category color when the official line color is known (use the line's true color, fall back to mode color)
|
|
311
|
+
- Don't animate countdowns abruptly — cross-fade the minute number (150ms)
|
|
312
|
+
- Don't hide disruptions in a sub-screen — they belong inline, in orange, in the results
|
|
313
|
+
- Don't thin out ETA type — it's the loudest thing on screen (800–900)
|
|
314
|
+
- Don't add a second "primary" green action competing with GO
|
|
315
|
+
|
|
316
|
+
## 8. Responsive Behavior
|
|
317
|
+
|
|
318
|
+
### Device Sizes
|
|
319
|
+
| Device | Width | Key Changes |
|
|
320
|
+
|--------|-------|-------------|
|
|
321
|
+
| iPhone SE (3rd gen) | 375pt | Leg-strip labels abbreviate sooner; 3 route cards visible |
|
|
322
|
+
| iPhone 13/14/15 | 390pt | Standard layout |
|
|
323
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated above the map / O→D card |
|
|
324
|
+
| iPhone 15/16 Pro Max | 430pt | Larger map peek; leg strips show fuller line names |
|
|
325
|
+
| iPad (portrait) | 768pt | Two-pane: route list (≤420pt) + live map |
|
|
326
|
+
| iPad (landscape) | 1024pt+ | Same two-pane wider; GO trip mode full-screen with side step list |
|
|
327
|
+
|
|
328
|
+
### Dynamic Type
|
|
329
|
+
- Display, ETA hero, body, place: full scale
|
|
330
|
+
- Mode badges, route tag pills, the GO label, departure-min, tab labels: FIXED (chips are layout-sensitive)
|
|
331
|
+
- GO-mode instruction scales up generously (you read it from a pocket-glance distance)
|
|
332
|
+
|
|
333
|
+
### Orientation
|
|
334
|
+
- All screens rotate
|
|
335
|
+
- iPad landscape locks the two-pane split; GO mode rotates with a side-by-side step list + map
|
|
336
|
+
- The leg strip wraps rather than truncating mode color
|
|
337
|
+
|
|
338
|
+
### Touch Targets
|
|
339
|
+
- GO button: 54pt tall pill, full width of its inset
|
|
340
|
+
- Route card: full-card tap, ≥ 72pt tall
|
|
341
|
+
- Mode chip (when tappable): ≥ 44pt hit even if visually ~28pt
|
|
342
|
+
- Departures row: full-row tap, ≥ 50pt
|
|
343
|
+
- Tab bar icons: 22pt glyph, 44pt hit
|
|
344
|
+
|
|
345
|
+
### Safe Area Handling
|
|
346
|
+
- Top: O→D card / map respects safe area + Dynamic Island
|
|
347
|
+
- Bottom: tab bar + home indicator respected; the route sheet's peek height sits above the home indicator; the GO button floats above safe area
|
|
348
|
+
- Keyboard: destination search sheet rises above the keyboard
|
|
349
|
+
- Sides: 16pt content inset
|
|
350
|
+
|
|
351
|
+
## 9. Agent Prompt Guide
|
|
352
|
+
|
|
353
|
+
### Quick Color Reference
|
|
354
|
+
- Canvas (light): `#FFFFFF`
|
|
355
|
+
- Canvas (dark): `#0C0E14`
|
|
356
|
+
- Surface 1: `#F4F5F8` light / `#15171F` dark
|
|
357
|
+
- Surface 2: `#E8EAF0` light / `#1E212B` dark
|
|
358
|
+
- Divider: `#E3E5EC` light / `#282C38` dark
|
|
359
|
+
- Text primary: `#10131A` light / `#ECEEF3` dark
|
|
360
|
+
- Text secondary: `#5A6473` light / `#98A0AE` dark
|
|
361
|
+
- **Citymapper Blue (accent)**: `#2B5BFF` (bright `#4D7BFF`, pressed `#1E45CC`)
|
|
362
|
+
- **GO Green (GO button only)**: `#00C281`
|
|
363
|
+
- Mode — Walk: `#00B894`
|
|
364
|
+
- Mode — Bus: `#E8453C`
|
|
365
|
+
- Mode — Tube/Metro: `#2B5BFF`
|
|
366
|
+
- Mode — Rail: `#8E44D8`
|
|
367
|
+
- Mode — Bike: `#00A8C5`
|
|
368
|
+
- Mode — Cab: `#FFB400`
|
|
369
|
+
- Disruption Orange: `#FF8A00`
|
|
370
|
+
|
|
371
|
+
### Example Component Prompts
|
|
372
|
+
- "Build a Citymapper route option card in SwiftUI: a `#F4F5F8` (dark `#15171F`) container, 1pt divider border, 16pt corner radius, 14pt/16pt padding. Header row: a left ETA group — `24` in 22pt weight 800 `#10131A` next to `min` in 13pt weight 600 `#5A6473` — and a right-aligned tag pill `Fastest` (10pt 800 uppercase, GO-green tint `rgba(0,194,129,0.18)`, `#00C281` text, 999pt radius). Below: a horizontal leg strip — mode chips, each an 8pt-radius pill in its mode color with a 13pt white glyph and a label (walk `#00B894` '4', tube `#2B5BFF` 'Victoria', walk `#00B894` '6'), separated by a `›` arrow in `#8A93A3`. If this is the best route, switch the card border to `#00C281`."
|
|
373
|
+
|
|
374
|
+
- "Create the Citymapper GO button: a full-pill rounded rectangle 28pt corner radius, 54pt tall, full-width minus 16pt insets, background `#00C281`, containing a filled play triangle and the word 'GO' in 18pt weight 900 letter-spacing 0.4pt, with a green-tinted shadow `0 10px 22px -10px rgba(0,194,129,0.7)`. Pressed: scale 0.98 + brightness 0.95 + medium haptic. This control's shape and color are LOCKED — identical on every screen and in both light and dark themes."
|
|
375
|
+
|
|
376
|
+
- "Render the Citymapper origin→destination card: a `#F4F5F8` (dark `#15171F`) container, 14pt radius, 1pt divider border, 12pt/14pt padding. Two 34pt rows: row 1 has a 10pt `#5A6473` gray 'from' dot then place text in 15pt weight 600; row 2 has a 10pt `#2B5BFF` blue 'to' dot then place text. Between the dots, a 2pt-wide `#E3E5EC` vertical line segment connecting them — reads like a transit-map stop pair."
|
|
377
|
+
|
|
378
|
+
- "Build the Citymapper departures board: a `#1E212B` container, 14pt radius, `overflow: hidden`. Each row 13pt/16pt padding, 1pt `#282C38` bottom divider (none on last): leading a 34×24 line badge (mode-colored, e.g. tube `#2B5BFF`) with 12pt weight 900 white text ('VIC'), a flexible destination in 14pt weight 600 `#ECEEF3`, and trailing minutes in 16pt weight 800 — `#00C281` normally, but `#FF8A00` when ≤ 3 minutes. Tabular figures; minutes cross-fade as they decrement."
|
|
379
|
+
|
|
380
|
+
- "Create the Citymapper GO trip-mode header: a near-full-bleed panel with a big current instruction in 26–32pt weight 800–900 `#10131A` ('Get off in 2 stops'), a sub-line in 16pt 400 `#5A6473` ('Tate Modern · 8 min'), and a vertical progress line on the left with stop dots and mode-colored segments — the current leg's segment in its mode color, pulsing. A floating 'End' control top-right. The GO-green theme dominates."
|
|
381
|
+
|
|
382
|
+
- "Render a Citymapper disruption banner: a full-width inline strip in the route results, `#FF8A00` background at 18% (`rgba(255,138,0,0.18)`) with a 1pt `#FF8A00` border, 10pt radius, a ⚠ glyph in `#FF8A00`, and text 'Victoria line: minor delays' in 14pt weight 700. On appear, slide down 250ms ease-out and pulse the border once. Severe closures use Delay Red `#E8453C` instead of orange."
|
|
383
|
+
|
|
384
|
+
### Iteration Guide
|
|
385
|
+
1. Canvas is calm — white light / deep blue-black `#0C0E14` dark (NOT true black) — so mode colors and the map carry the energy
|
|
386
|
+
2. Every transport mode has a loud, consistent color (walk `#00B894` / bus `#E8453C` / tube `#2B5BFF` / rail `#8E44D8` / bike `#00A8C5` / cab `#FFB400`) — theme-invariant, the brand's soul
|
|
387
|
+
3. Routes are ALWAYS a leg strip of colored mode chips + `›` arrows — color first, words second
|
|
388
|
+
4. The GO button is a fat green `#00C281` pill, shape/color-locked on every screen and in both themes — it is THE brand control
|
|
389
|
+
5. Green means GO / live / on-time only — Citymapper Blue `#2B5BFF` is the brand accent (also the metro mode)
|
|
390
|
+
6. O→D = gray "from" dot + blue "to" dot joined by a transit-map line segment
|
|
391
|
+
7. Tag routes with *why* (Fastest / Cheapest / Easiest / Rain-safe)
|
|
392
|
+
8. The departures board is live; minutes use tabular figures and turn orange ≤ 3 min
|
|
393
|
+
9. Disruptions are inline orange (`#FF8A00`) banners in results — never hidden in a sub-screen
|
|
394
|
+
10. ETAs and GO are the loudest type (800–900); real line colors override category mode colors when known
|