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,421 @@
|
|
|
1
|
+
# Design System Inspiration of Skyscanner (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Skyscanner's iOS app is a **calm, white, decision-making instrument**. It is not a lifestyle travel app full of wanderlust photography — it is a price-comparison engine, and the entire visual language is engineered to make a confident "is this a good deal?" judgment in under three seconds. The canvas is pure white (`#FFFFFF`) with a single, unmistakable brand color — **Skyscanner Sky Blue (`#0770E3`)** — carrying every primary action: the Search button, the active trip-type segment, selected calendar dates, and the focused input ring. There is no secondary accent competing for attention. The blue *is* the call to action, everywhere, every time.
|
|
6
|
+
|
|
7
|
+
The signature moment is the **price-as-color system**. Skyscanner's core insight is that a number alone ("£148") doesn't tell you if it's good — so the app paints prices with a **traffic-light scale**: green (`#00A698`) for cheap, amber (`#FFB81C`) for average, red (`#E5392E`) for expensive. This shows up in the **month price grid** (a calendar where every day is tinted by how its fare compares), the **price-trend bar chart**, the **"Cheapest"/"Best"/"Fastest"** result tabs, and the **Everywhere** map (where destinations are labeled with color-coded fares). Once you've seen the green-amber-red language, you read Skyscanner fares the way you read a thermometer.
|
|
8
|
+
|
|
9
|
+
The other signature is **"Everywhere"** as a destination. Most flight apps require you to know where you're going. Skyscanner's most-loved feature lets you set the destination to a literal place called **"Everywhere"** and the app returns a ranked list of the cheapest countries and cities to fly to. This reframes the whole product from "book the flight I want" to "find the trip I can afford" — and the UI treats Everywhere as a first-class search target with its own globe iconography and exploratory result layout.
|
|
10
|
+
|
|
11
|
+
The structure is a **stacked search card** (From / To / Dates, with a circular swap button straddling the From–To divider), a prominent blue **Search flights** button, and below it a **results list of flight rows** — each row a horizontal timeline: departure time + airport on the left, a thin line with a dot and a "Direct" / "1 stop" label in the middle, arrival time + airport, and a bold fare on the right. Carrier logos are small and monochrome-friendly; the app never lets airline branding overwhelm its own neutral chrome.
|
|
12
|
+
|
|
13
|
+
Typography is **Skyscanner Relative** (the brand's custom humanist sans by Dalton Maag), falling back to SF Pro / Inter on iOS where the custom face isn't bundled. It is friendly but information-dense: fares and times are heavy (700–800), supporting metadata is light (400) and gray. The type system never gets decorative — this is a tool, and the type works like instrument labeling.
|
|
14
|
+
|
|
15
|
+
**Key Characteristics:**
|
|
16
|
+
- Pure white canvas (`#FFFFFF`) light / cool navy-black (`#0B0F14`) dark — neutral, tool-like, never photo-driven
|
|
17
|
+
- Single brand accent: **Sky Blue `#0770E3`** carries 100% of primary actions
|
|
18
|
+
- **Traffic-light price system** — green `#00A698` cheap / amber `#FFB81C` average / red `#E5392E` expensive — the core mental model
|
|
19
|
+
- **Month price grid** — a calendar where every day is tinted by fare vs. typical price
|
|
20
|
+
- **"Everywhere"** as a first-class destination — find the cheapest place to fly, not just a known route
|
|
21
|
+
- **Stacked search card** — From / To / Dates with a circular swap button on the From–To divider
|
|
22
|
+
- **Best / Cheapest / Fastest** result tabs — Skyscanner's signature sort triad
|
|
23
|
+
- **Flight result row** — horizontal timeline (time → line+dot+stops → time → bold fare)
|
|
24
|
+
- **Price alerts** — track a route and get pinged when the fare drops
|
|
25
|
+
- Skyscanner Relative typeface — friendly humanist sans, instrument-grade hierarchy
|
|
26
|
+
- Bottom tab bar: Explore / Trips / Saved / Profile
|
|
27
|
+
|
|
28
|
+
## 2. Color Palette & Roles
|
|
29
|
+
|
|
30
|
+
### Primary (Interactive)
|
|
31
|
+
- **Sky Blue** (`#0770E3`): The brand color and the single primary-action color — Search button, active segment, selected dates, focused input, links, primary CTAs.
|
|
32
|
+
- **Sky Blue Pressed** (`#0A5BBA`): Pressed/active state of the primary button.
|
|
33
|
+
- **Sky Bright** (`#05A8FA`): Dark-mode link & "Everywhere" accent — a lighter blue that holds contrast on the dark canvas.
|
|
34
|
+
- **Deep Navy** (`#05203C`): Skyscanner's deep brand navy — used for high-contrast headers, splash, and selected-state backgrounds in some surfaces.
|
|
35
|
+
|
|
36
|
+
### Price Traffic-Light System (Theme-Invariant)
|
|
37
|
+
These three colors are the core of Skyscanner's identity and **do not shift hue between light and dark**.
|
|
38
|
+
|
|
39
|
+
| Role | Color | Meaning | Tint (bg use) |
|
|
40
|
+
|------|-------|---------|---------------|
|
|
41
|
+
| Price Low | `#00A698` | Cheap / good deal | `rgba(0,166,152,0.16)` |
|
|
42
|
+
| Price Average | `#FFB81C` | Typical fare | `rgba(255,184,28,0.16)` |
|
|
43
|
+
| Price High | `#E5392E` | Expensive / avoid | `rgba(229,57,46,0.16)` |
|
|
44
|
+
|
|
45
|
+
### Canvas & Surfaces (Light Mode)
|
|
46
|
+
- **Canvas White** (`#FFFFFF`): Primary light canvas.
|
|
47
|
+
- **Surface Gray** (`#F5F7FA`): Search card fill, grouped sections, inactive segments.
|
|
48
|
+
- **Surface Pressed** (`#E9EDF2`): Pressed rows, selected list items.
|
|
49
|
+
- **Divider** (`#E2E7EC`): Hairline dividers inside the search card and between result rows.
|
|
50
|
+
- **Focus Ring** (`#0770E333`): 20% Sky Blue ring on focused inputs.
|
|
51
|
+
|
|
52
|
+
### Canvas & Surfaces (Dark Mode)
|
|
53
|
+
- **Dark Canvas** (`#0B0F14`): Primary dark canvas — a cool navy-black, NOT pure black.
|
|
54
|
+
- **Dark Surface 1** (`#141A22`): Search card, elevated surfaces.
|
|
55
|
+
- **Dark Surface 2** (`#1C242E`): Result rows, hovered/selected cards.
|
|
56
|
+
- **Dark Divider** (`#25303C`): Hairline dividers on dark.
|
|
57
|
+
|
|
58
|
+
### Text
|
|
59
|
+
- **Text Primary Light** (`#0E1B2C`): Primary text — fares, times, titles — a near-navy black.
|
|
60
|
+
- **Text Secondary Light** (`#5C6B7A`): Metadata, airport codes, sort captions.
|
|
61
|
+
- **Text Tertiary Light** (`#8B97A3`): Disabled, placeholder, very low emphasis.
|
|
62
|
+
- **Text Primary Dark** (`#E8EDF2`): Primary text on dark.
|
|
63
|
+
- **Text Secondary Dark** (`#9AA7B4`): Secondary on dark.
|
|
64
|
+
- **Text Tertiary Dark** (`#66727E`): Tertiary on dark.
|
|
65
|
+
|
|
66
|
+
### Page / Surface Tints
|
|
67
|
+
|
|
68
|
+
| Role | Light Mode | Dark Mode |
|
|
69
|
+
|------|-----------|-----------|
|
|
70
|
+
| Canvas | `#FFFFFF` | `#0B0F14` |
|
|
71
|
+
| Surface 1 | `#F5F7FA` | `#141A22` |
|
|
72
|
+
| Surface 2 | `#E9EDF2` | `#1C242E` |
|
|
73
|
+
| Divider | `#E2E7EC` | `#25303C` |
|
|
74
|
+
| Sky Blue tint | `#0770E314` | `#0770E329` |
|
|
75
|
+
| Low (green) tint | `#00A6981F` | `#00A6982E` |
|
|
76
|
+
| Average (amber) tint | `#FFB81C1F` | `#FFB81C2E` |
|
|
77
|
+
| High (red) tint | `#E5392E1F` | `#E5392E2E` |
|
|
78
|
+
|
|
79
|
+
### Semantic
|
|
80
|
+
- **Error Red** (`#E5392E`): Form errors, no-results state — shares the "expensive" red intentionally.
|
|
81
|
+
- **Success Green** (`#00A698`): Price-drop confirmation, saved-alert toast — shares the "cheap" green.
|
|
82
|
+
- **Warning Amber** (`#FFB81C`): Fare-change warnings, "price went up since you last looked".
|
|
83
|
+
- **Info Blue** (`#0770E3`): Informational banners, "prices update every few minutes".
|
|
84
|
+
|
|
85
|
+
## 3. Typography Rules
|
|
86
|
+
|
|
87
|
+
### Font Family
|
|
88
|
+
- **Primary**: `Skyscanner Relative` (by Dalton Maag for Skyscanner) — a friendly, slightly humanist grotesque designed for dense travel data and global script coverage.
|
|
89
|
+
- **iOS Fallback**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', 'Helvetica Neue', sans-serif`
|
|
90
|
+
- **Web/Catalog Substitute**: `Inter` — closest free face matching Relative's x-height and humanist proportions.
|
|
91
|
+
- **Numerics**: Tabular figures enabled for all fares, times, and the price calendar so columns align.
|
|
92
|
+
|
|
93
|
+
### Hierarchy
|
|
94
|
+
|
|
95
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
96
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
97
|
+
| Display | Relative | 32pt | 800 | 1.15 | -0.5pt | "Explore everywhere" hero |
|
|
98
|
+
| Screen Title | Relative | 26pt | 700 | 1.2 | -0.3pt | "London → Barcelona" results header |
|
|
99
|
+
| Section | Relative | 22pt | 700 | 1.25 | -0.2pt | "Cheapest month", "Price trend" |
|
|
100
|
+
| Card Title | Relative | 18pt | 700 | 1.3 | -0.1pt | Flight duration "Direct · 2h 15m" |
|
|
101
|
+
| Fare (Large) | Relative | 19pt | 800 | 1.2 | -0.2pt | Result-row price, tabular |
|
|
102
|
+
| Body | Relative | 16pt | 400 | 1.45 | 0pt | Descriptions, fare-rule text |
|
|
103
|
+
| Price (Inline) | Relative | 15pt | 600 | 1.3 | 0pt | "from £42 return", tabular |
|
|
104
|
+
| Time (Result) | Relative | 17pt | 700 | 1.2 | 0pt | Departure/arrival times, tabular |
|
|
105
|
+
| Meta | Relative | 14pt | 400 | 1.4 | 0pt | "3 results · sorted by Best" |
|
|
106
|
+
| Airport Code | Relative | 12pt | 600 | 1.3 | 0.4pt | "LHR", "BCN" — uppercase |
|
|
107
|
+
| Field Label | Relative | 12pt | 600 | 1.3 | 0.2pt | "DEPART · RETURN" — uppercase, tertiary |
|
|
108
|
+
| Button | Relative | 16pt | 700 | 1.0 | 0pt | Primary/secondary buttons |
|
|
109
|
+
| Chip | Relative | 13pt | 700 | 1.0 | 0pt | Price hint chips, filter chips |
|
|
110
|
+
| Tab Label | Relative | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
|
|
111
|
+
| Calendar Day | Relative | 11pt | 700 | 1.0 | 0pt | Day number in price grid, tabular |
|
|
112
|
+
| Calendar Price | Relative | 8pt | 600 | 1.0 | 0pt | Tiny fare under day number |
|
|
113
|
+
|
|
114
|
+
### Principles
|
|
115
|
+
- **Numbers are the hero**: fares, times, and dates are the heaviest type on screen (700–800); everything supporting is 400 gray.
|
|
116
|
+
- **Tabular figures everywhere money or time appears**: the price calendar, result list, and trend chart all need vertical digit alignment.
|
|
117
|
+
- **Uppercase only for codes & labels**: airport codes and field labels are uppercase with positive tracking; nothing else is.
|
|
118
|
+
- **Instrument-grade restraint**: no italics, no decorative weights — type is labeling for a tool.
|
|
119
|
+
- **Dynamic Type first-class**: titles, body, fares scale; tab labels, airport codes, and calendar micro-prices stay fixed (layout-sensitive grid).
|
|
120
|
+
|
|
121
|
+
## 4. Component Stylings
|
|
122
|
+
|
|
123
|
+
### Buttons
|
|
124
|
+
|
|
125
|
+
**Primary Button (Search flights / Continue)**
|
|
126
|
+
- Shape: Rounded rectangle, 12pt corner radius
|
|
127
|
+
- Background: `#0770E3` (Sky Blue)
|
|
128
|
+
- Text: `#FFFFFF`, Relative 16pt weight 700
|
|
129
|
+
- Height: 50pt; full-width minus 18pt insets
|
|
130
|
+
- Padding: 14pt vertical, 28pt horizontal
|
|
131
|
+
- Shadow: `0 8px 18px -8px rgba(7,112,227,0.7)` light / none dark
|
|
132
|
+
- Pressed: background `#0A5BBA` + scale 0.98
|
|
133
|
+
|
|
134
|
+
**Secondary / Outline Button (Set price alert)**
|
|
135
|
+
- Background: transparent
|
|
136
|
+
- Text & border: `#0770E3`, 1.5pt border
|
|
137
|
+
- Corner radius: 12pt
|
|
138
|
+
- Padding: 12pt vertical, 20pt horizontal
|
|
139
|
+
- Font: Relative 14pt weight 700
|
|
140
|
+
- Pressed: background `#0770E314`
|
|
141
|
+
|
|
142
|
+
**Pill Button (Filters / Sort)**
|
|
143
|
+
- Background: `#F5F7FA` light / `#1C242E` dark
|
|
144
|
+
- Border: 1pt `#E2E7EC` / `#25303C`
|
|
145
|
+
- Text: `#0E1B2C` / `#E8EDF2`, Relative 13pt weight 600
|
|
146
|
+
- Corner radius: 500pt (full pill)
|
|
147
|
+
- Padding: 9pt vertical, 16pt horizontal
|
|
148
|
+
|
|
149
|
+
**Text Button (View 64 deals)**
|
|
150
|
+
- Font: Relative 14pt weight 600
|
|
151
|
+
- Color: `#0770E3` light / `#05A8FA` dark
|
|
152
|
+
- No underline
|
|
153
|
+
- Pressed: 60% opacity
|
|
154
|
+
|
|
155
|
+
### Cards & Containers
|
|
156
|
+
|
|
157
|
+
**Search Card (the stacked From/To/Dates input)**
|
|
158
|
+
- Background: `#FFFFFF` with 1pt `#E2E7EC` border light / `#141A22` with 1pt `#25303C` border dark
|
|
159
|
+
- Corner radius: 16pt, `overflow: hidden`
|
|
160
|
+
- Internal field: 14pt vertical / 16pt horizontal padding, 1pt bottom divider between fields (none on last)
|
|
161
|
+
- Leading icon: 18pt Sky Blue stroke icon
|
|
162
|
+
- Field label: 12pt 600 uppercase tertiary; value: 15pt 600 primary
|
|
163
|
+
- **Swap button**: 30pt circle, 1pt divider border, straddling the From–To divider line, vertically centered on it
|
|
164
|
+
|
|
165
|
+
**Flight Result Row**
|
|
166
|
+
- Background: `#F5F7FA` light / `#1C242E` dark
|
|
167
|
+
- Border: 1pt divider
|
|
168
|
+
- Corner radius: 14pt
|
|
169
|
+
- Padding: 16pt
|
|
170
|
+
- Layout (horizontal): [time 17pt700 + airport 12pt600] → [duration 11pt tertiary, 1pt line with trailing dot, "Direct"/"1 stop" 10pt green/amber] → [time + airport] → [fare 19pt800 + "return" 11pt]
|
|
171
|
+
- Carrier logo: 20pt, rendered grayscale-tolerant
|
|
172
|
+
|
|
173
|
+
**Price Calendar Day Cell**
|
|
174
|
+
- Square aspect, 7pt corner radius
|
|
175
|
+
- Background: `#F5F7FA` light / `#141A22` dark (1pt divider border)
|
|
176
|
+
- Content: day number 11pt 700 primary, micro-fare 8pt 600 colored by traffic-light
|
|
177
|
+
- Selected: background `#0770E3`, all text white
|
|
178
|
+
- Out-of-month: 35% opacity
|
|
179
|
+
- Cheapest day in view: green fare + subtle green ring
|
|
180
|
+
|
|
181
|
+
**Section Container**
|
|
182
|
+
- Background: `#FFFFFF` / `#0B0F14` (flush, no card) OR grouped `#F5F7FA` / `#141A22`
|
|
183
|
+
- 16pt horizontal page inset
|
|
184
|
+
- Section header: 22pt 700, 16pt top margin
|
|
185
|
+
|
|
186
|
+
### Navigation
|
|
187
|
+
|
|
188
|
+
**Top App Bar**
|
|
189
|
+
- Height: 44pt + safe area
|
|
190
|
+
- Leading: Skyscanner wordmark ("sky" primary + "scanner" Sky Blue) on home; back chevron on detail
|
|
191
|
+
- Trailing: circular avatar (gradient `#0770E3`→`#05A8FA`) or filter icon
|
|
192
|
+
- Background: canvas, no border on scroll-top; 0.5pt divider once scrolled
|
|
193
|
+
|
|
194
|
+
**Trip-Type Segmented Control**
|
|
195
|
+
- Three segments: Return / One way / Multi-city
|
|
196
|
+
- Inactive: `#F5F7FA` fill, `#5C6B7A` text, 1pt divider border, 8pt radius
|
|
197
|
+
- Active: `#0770E3` fill, white text
|
|
198
|
+
- 12pt font weight 600, 8pt vertical padding
|
|
199
|
+
|
|
200
|
+
**Bottom Tab Bar**
|
|
201
|
+
- Height: 64pt + safe area
|
|
202
|
+
- Background: `#FFFFFF` / `rgba(11,15,20,0.94)` with `backdrop-filter: blur(20px)` and 0.5pt top divider
|
|
203
|
+
- Tabs (4): Explore / Trips / Saved / Profile
|
|
204
|
+
- Icon: 22pt; active `#0770E3` (filled), inactive `#8B97A3` / `#66727E`
|
|
205
|
+
- Label: Relative 10pt weight 600, always shown
|
|
206
|
+
- No pill indicator — active is color + icon-fill change only
|
|
207
|
+
|
|
208
|
+
### Input Fields
|
|
209
|
+
|
|
210
|
+
**Search Field (inside search card)**
|
|
211
|
+
- See Search Card above — borderless rows separated by dividers, leading Sky Blue icon
|
|
212
|
+
|
|
213
|
+
**Standalone Text Input**
|
|
214
|
+
- Height: 50pt
|
|
215
|
+
- Background: `#F5F7FA` / `#1C242E`
|
|
216
|
+
- Border: 1pt `#E2E7EC` / `#25303C`
|
|
217
|
+
- Corner radius: 12pt
|
|
218
|
+
- Focus: 2pt `#0770E3` border + `#0770E333` glow ring
|
|
219
|
+
- Placeholder: 15pt 400 tertiary
|
|
220
|
+
|
|
221
|
+
**Everywhere Affordance**
|
|
222
|
+
- Inline pill/link below the To field: globe icon 14pt `#05A8FA` + "Explore Everywhere — find the cheapest destination" in 12pt 600 Sky Bright
|
|
223
|
+
- Tapping sets destination to the literal "Everywhere" target
|
|
224
|
+
|
|
225
|
+
### Distinctive Components
|
|
226
|
+
|
|
227
|
+
**Month Price Grid**
|
|
228
|
+
- A 7-column calendar; each day cell tinted by its fare vs. typical: green/amber/red micro-price
|
|
229
|
+
- Header: "Cheapest month — October"; sub: "Green is a good deal · prices per person"
|
|
230
|
+
- Selected date: full Sky Blue fill
|
|
231
|
+
- The single most recognizable Skyscanner surface — never render dates without price color
|
|
232
|
+
|
|
233
|
+
**Best / Cheapest / Fastest Tabs**
|
|
234
|
+
- A 3-segment toggle above the result list
|
|
235
|
+
- "Best" = Skyscanner's blended score (default), "Cheapest" = lowest fare, "Fastest" = shortest duration
|
|
236
|
+
- Active tab: 2pt `#0770E3` underline + `#0E1B2C` text; inactive: `#5C6B7A`
|
|
237
|
+
- Each tab can show its winning fare inline (e.g., "Cheapest £42")
|
|
238
|
+
|
|
239
|
+
**Everywhere Result List**
|
|
240
|
+
- When destination = Everywhere: a ranked list of countries/cities
|
|
241
|
+
- Row: destination name + small map thumbnail + "from £29" in green
|
|
242
|
+
- Tapping a country drills into its cheapest cities, then routes
|
|
243
|
+
|
|
244
|
+
**Price Alert Toggle**
|
|
245
|
+
- A bell + "Track prices" pill on a route
|
|
246
|
+
- On: Sky Blue fill, bell filled; sends push when fare drops
|
|
247
|
+
- Off: outline, gray bell
|
|
248
|
+
|
|
249
|
+
**Price Hint Chip**
|
|
250
|
+
- Small rounded chip showing a fare with traffic-light tint background
|
|
251
|
+
- `£38 · Cheap` (green tint), `£81 · Average` (amber tint), `£152 · Expensive` (red tint)
|
|
252
|
+
- 13pt 700, 8pt radius, 7pt/14pt padding
|
|
253
|
+
|
|
254
|
+
**Fare-Trend Bar Chart**
|
|
255
|
+
- Horizontal bars per day/week, each colored green/amber/red
|
|
256
|
+
- A dashed "typical price" line lets users see how today compares
|
|
257
|
+
- Tap a bar → that date's results
|
|
258
|
+
|
|
259
|
+
## 5. Layout Principles
|
|
260
|
+
|
|
261
|
+
### Spacing System
|
|
262
|
+
- Base unit: 4pt
|
|
263
|
+
- Scale: 4, 8, 12, 16, 18, 24, 32, 40, 48, 64
|
|
264
|
+
- Page horizontal inset: 18pt (slightly wider than 16 — Skyscanner gives the search card room)
|
|
265
|
+
- Card internal padding: 16pt
|
|
266
|
+
- Field row padding: 14pt vertical / 16pt horizontal
|
|
267
|
+
- Result-row vertical gap: 12pt
|
|
268
|
+
|
|
269
|
+
### Grid & Container
|
|
270
|
+
- iPhone: content at 18pt horizontal insets; search card full-width minus insets
|
|
271
|
+
- iPad: search card max-width 560pt centered; results list 2-column on landscape
|
|
272
|
+
- Price calendar: fixed 7-column grid, 5pt gap, square cells
|
|
273
|
+
- Result list: single column, 12pt gap
|
|
274
|
+
|
|
275
|
+
### Whitespace Philosophy
|
|
276
|
+
- **Tool clarity over generosity**: enough air to scan fast, not so much it scrolls forever — dense by intent
|
|
277
|
+
- **The search card is the anchor**: it gets the most padding and a clear border so it reads as "the thing you act on"
|
|
278
|
+
- **Color does the grouping**: traffic-light price color replaces heavy borders/dividers as the grouping signal in calendars and lists
|
|
279
|
+
- **One blue action per screen**: never two competing primary buttons
|
|
280
|
+
|
|
281
|
+
### Border Radius Scale
|
|
282
|
+
- Square (0pt): full-bleed banners, status separators
|
|
283
|
+
- Subtle (4pt): micro-tags
|
|
284
|
+
- Day cell (7pt): price-calendar cells
|
|
285
|
+
- Standard (8pt): segmented control, price chips, small surfaces
|
|
286
|
+
- Card (12pt): primary button, inputs, result-row outer
|
|
287
|
+
- Comfortable (16pt): search card, bottom sheets
|
|
288
|
+
- Pill (500pt): filter/sort pills, alert toggle
|
|
289
|
+
- Circle (50%): swap button, avatar, carrier logo container
|
|
290
|
+
|
|
291
|
+
## 6. Depth & Elevation
|
|
292
|
+
|
|
293
|
+
Skyscanner is mostly flat — depth is reserved for the one action that matters (Search) and for floating layers.
|
|
294
|
+
|
|
295
|
+
| Level | Treatment | Use |
|
|
296
|
+
|-------|-----------|-----|
|
|
297
|
+
| Flat (Level 0) | No shadow; 1pt divider/border for separation | Result rows, calendar cells, sections |
|
|
298
|
+
| Action (Level 1) | `0 8px 18px -8px rgba(7,112,227,0.7)` (blue-tinted) | Primary Search button only |
|
|
299
|
+
| Floating (Level 2) | `0 6px 20px rgba(14,27,44,0.12)` | Date picker sheet, filter sheet, autocomplete dropdown |
|
|
300
|
+
| Sheet (Level 3) | `0 -6px 28px rgba(0,0,0,0.18)` | Bottom sheets (sort, fare details, price-alert setup) |
|
|
301
|
+
| Modal Scrim | `rgba(8,12,18,0.45)` | Dim behind modals/sheets |
|
|
302
|
+
|
|
303
|
+
**Shadow Philosophy**: The only persistently-shadowed element is the Sky Blue Search button — its blue-tinted glow makes it feel pressable and pulls the eye to the single primary action. Everything else relies on borders and surface-tint steps. On dark mode, the button's glow is dropped (it would muddy the navy canvas); separation comes from the `#141A22` → `#1C242E` surface ramp instead.
|
|
304
|
+
|
|
305
|
+
### Motion
|
|
306
|
+
- **Search submit**: button scales to 0.98 (100ms), then a full-screen results push (300ms iOS native); a thin top progress bar fills while live fares stream in
|
|
307
|
+
- **Live price streaming**: result rows fade-in individually as carriers respond (each row `opacity 0→1` + 6pt rise, 200ms ease-out, staggered); fares "tick" with a 150ms color crossfade if they change
|
|
308
|
+
- **Calendar day select**: tapped cell fills Sky Blue with a 150ms ease-out background transition; previously-selected cell fades back
|
|
309
|
+
- **Best/Cheapest/Fastest switch**: underline slides between tabs in 200ms ease-out; list re-sorts with a 250ms cross-dissolve + position animation
|
|
310
|
+
- **Swap From/To**: swap button rotates 180° in 250ms; From and To values cross-fade and slide vertically past each other
|
|
311
|
+
- **Everywhere reveal**: tapping Everywhere expands the result list from the search card with a 300ms ease-out height/opacity
|
|
312
|
+
- **Price alert toggle**: bell does a small 1.0→1.15→1.0 bounce (200ms) and fills Sky Blue on enable; soft haptic
|
|
313
|
+
- **Pull to refresh fares**: custom plane/loader; on release, fares restream with the staggered fade
|
|
314
|
+
- **Haptic feedback**: light impact on calendar select & tab switch; success haptic on price-alert created & on a price-drop notification tap
|
|
315
|
+
|
|
316
|
+
## 7. Do's and Don'ts
|
|
317
|
+
|
|
318
|
+
### Do
|
|
319
|
+
- Use pure white (`#FFFFFF`) light / cool navy-black (`#0B0F14`) dark — neutral, tool-like
|
|
320
|
+
- Make Sky Blue (`#0770E3`) the single primary-action color — one blue action per screen
|
|
321
|
+
- Always color prices with the traffic-light scale (green `#00A698` / amber `#FFB81C` / red `#E5392E`)
|
|
322
|
+
- Render the month price grid with per-day fare color — never a plain calendar
|
|
323
|
+
- Treat "Everywhere" as a real, selectable destination with globe iconography
|
|
324
|
+
- Use the stacked search card with the circular swap button on the From–To divider
|
|
325
|
+
- Offer Best / Cheapest / Fastest as the result sort triad (Best = default)
|
|
326
|
+
- Use tabular figures for every fare, time, and calendar price
|
|
327
|
+
- Keep the traffic-light hues identical between light and dark — price meaning is theme-invariant
|
|
328
|
+
- Give the Search button the only persistent (blue-tinted) shadow
|
|
329
|
+
- Surface "Set price alert" prominently — tracking is a signature Skyscanner behavior
|
|
330
|
+
|
|
331
|
+
### Don't
|
|
332
|
+
- Don't use travel/destination photography as primary chrome — Skyscanner is a tool, not a magazine
|
|
333
|
+
- Don't introduce a second accent color — the blue does all primary work
|
|
334
|
+
- Don't show fares as plain black text without traffic-light color in calendars/charts
|
|
335
|
+
- Don't render a normal date picker where a price calendar belongs
|
|
336
|
+
- Don't shift the green/amber/red hues for dark mode — they must mean the same thing
|
|
337
|
+
- Don't put two primary (filled-blue) buttons on the same screen
|
|
338
|
+
- Don't use pure black (`#000000`) for dark canvas — it's cool navy-black `#0B0F14`
|
|
339
|
+
- Don't let airline branding/logos overpower Skyscanner's neutral chrome — keep them small and monochrome-tolerant
|
|
340
|
+
- Don't animate fares jumping abruptly — color-crossfade price changes (150ms)
|
|
341
|
+
- Don't bury the swap button — it lives on the From–To divider as a circular control
|
|
342
|
+
- Don't hide "Everywhere" — it is the product's most-loved differentiator
|
|
343
|
+
|
|
344
|
+
## 8. Responsive Behavior
|
|
345
|
+
|
|
346
|
+
### Device Sizes
|
|
347
|
+
| Device | Width | Key Changes |
|
|
348
|
+
|--------|-------|-------------|
|
|
349
|
+
| iPhone SE (3rd gen) | 375pt | Calendar cells slightly tighter; search-card padding 14pt |
|
|
350
|
+
| iPhone 13/14/15 | 390pt | Standard layout |
|
|
351
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in top app bar |
|
|
352
|
+
| iPhone 15/16 Pro Max | 430pt | Larger calendar cells; result rows show fuller route text |
|
|
353
|
+
| iPad (portrait) | 768pt | Search card centered max 560pt; results list single wide column |
|
|
354
|
+
| iPad (landscape) | 1024pt+ | Two-pane: search/filters left, results right; calendar shows 2 months |
|
|
355
|
+
|
|
356
|
+
### Dynamic Type
|
|
357
|
+
- Display, screen title, body, fares: full scale
|
|
358
|
+
- Tab labels, airport codes, field labels, calendar day numbers and micro-prices: FIXED (price grid is layout-sensitive)
|
|
359
|
+
- Result-row times scale up to XL but the row reflows to keep fare right-aligned
|
|
360
|
+
|
|
361
|
+
### Orientation
|
|
362
|
+
- All screens rotate
|
|
363
|
+
- iPad landscape adds the two-pane split (search ↔ results) and a dual-month calendar
|
|
364
|
+
- The price calendar reflows columns only on iPad; iPhone stays 7-wide
|
|
365
|
+
|
|
366
|
+
### Touch Targets
|
|
367
|
+
- Search button: 50pt tall
|
|
368
|
+
- Calendar day cell: ≥ 38pt hit (visually square, padded to target)
|
|
369
|
+
- Swap button: 30pt visual, 44pt hit
|
|
370
|
+
- Tab bar icons: 22pt glyph, 44pt hit
|
|
371
|
+
- Best/Cheapest/Fastest tab: full segment, ≥ 44pt tall
|
|
372
|
+
|
|
373
|
+
### Safe Area Handling
|
|
374
|
+
- Top: app bar respects safe area + Dynamic Island
|
|
375
|
+
- Bottom: tab bar + home indicator respected; sheets inset above home indicator
|
|
376
|
+
- Keyboard: autocomplete dropdown positions above keyboard; search card scrolls clear
|
|
377
|
+
- Sides: 18pt content inset
|
|
378
|
+
|
|
379
|
+
## 9. Agent Prompt Guide
|
|
380
|
+
|
|
381
|
+
### Quick Color Reference
|
|
382
|
+
- Canvas (light): `#FFFFFF`
|
|
383
|
+
- Canvas (dark): `#0B0F14`
|
|
384
|
+
- Surface 1: `#F5F7FA` light / `#141A22` dark
|
|
385
|
+
- Surface 2: `#E9EDF2` light / `#1C242E` dark
|
|
386
|
+
- Divider: `#E2E7EC` light / `#25303C` dark
|
|
387
|
+
- Text primary: `#0E1B2C` light / `#E8EDF2` dark
|
|
388
|
+
- Text secondary: `#5C6B7A` light / `#9AA7B4` dark
|
|
389
|
+
- **Sky Blue (primary action)**: `#0770E3`
|
|
390
|
+
- Sky Blue pressed: `#0A5BBA`
|
|
391
|
+
- Sky Bright (dark links / Everywhere): `#05A8FA`
|
|
392
|
+
- Deep Navy: `#05203C`
|
|
393
|
+
- **Price Low (cheap)**: `#00A698`
|
|
394
|
+
- **Price Average**: `#FFB81C`
|
|
395
|
+
- **Price High (expensive)**: `#E5392E`
|
|
396
|
+
- Error: `#E5392E` · Success: `#00A698` · Warning: `#FFB81C`
|
|
397
|
+
|
|
398
|
+
### Example Component Prompts
|
|
399
|
+
- "Build the Skyscanner search card in SwiftUI: a `#FFFFFF` rounded-16pt container with a 1pt `#E2E7EC` border, `overflow: hidden`. Three stacked rows (From / To / Dates) each with 14pt vertical / 16pt horizontal padding and a 1pt `#E2E7EC` bottom divider (no divider on the last). Each row: leading 18pt Sky Blue `#0770E3` location/calendar icon, a 12pt weight-600 uppercase tertiary `#8B97A3` label, and a 15pt weight-600 `#0E1B2C` value below it. Place a 30pt circular swap button (1pt `#E2E7EC` border, white fill, 14pt gray double-arrow icon) vertically centered on the From–To divider, offset to the trailing edge."
|
|
400
|
+
|
|
401
|
+
- "Create the Skyscanner month price grid: a 7-column grid with 5pt gaps and square cells (7pt corner radius). Each cell: `#F5F7FA` background with a 1pt `#E2E7EC` border, day number in Relative 11pt weight 700 `#0E1B2C` centered, and below it a micro-fare in 8pt weight 600 colored green `#00A698` if cheap, amber `#FFB81C` if average, red `#E5392E` if expensive. The selected date is a full `#0770E3` fill with white text. Out-of-month days are 35% opacity. Header above: 'Cheapest month — October' (22pt 700) and 'Green is a good deal · prices per person' (11pt `#5C6B7A`)."
|
|
402
|
+
|
|
403
|
+
- "Render a Skyscanner flight result row: a `#F5F7FA` (dark `#1C242E`) card, 1pt divider border, 14pt corner radius, 16pt padding. Horizontal layout: left = departure time `07:25` (Relative 17pt 700 tabular) over airport code `LHR` (12pt 600 `#5C6B7A`); center = duration `2h 15m` (11pt `#8B97A3`) over a 1pt `#E2E7EC` line with a 5pt Sky Blue dot at its end, with `Direct` below in 10pt 600 `#00A698`; then arrival time + code; right-aligned = fare `£42` (19pt 800 `#0E1B2C`, tabular) over `return` (11pt `#5C6B7A`)."
|
|
404
|
+
|
|
405
|
+
- "Build the Skyscanner Best/Cheapest/Fastest tab strip: three text tabs, the active one with `#0E1B2C` text and a 2pt `#0770E3` underline that slides 200ms ease-out between tabs; inactive tabs `#5C6B7A`. Each tab shows its winning fare inline below the label in 13pt 600 (e.g., 'Cheapest' / '£42'). Default selected = 'Best'. Switching tabs cross-dissolves and re-sorts the result list over 250ms."
|
|
406
|
+
|
|
407
|
+
- "Create the Skyscanner trip-type segmented control: three equal segments Return / One way / Multi-city, 8pt corner radius, 12pt weight-600 text, 8pt vertical padding. Inactive segments: `#F5F7FA` fill, `#5C6B7A` text, 1pt `#E2E7EC` border. Active segment: `#0770E3` fill, white text, no border."
|
|
408
|
+
|
|
409
|
+
- "Render the Skyscanner primary Search button: full-width minus 18pt insets, 50pt tall, 12pt corner radius, `#0770E3` background, white Relative 16pt weight-700 'Search flights' centered, with a blue-tinted shadow `0 8px 18px -8px rgba(7,112,227,0.7)` (drop the shadow in dark mode). Pressed: background `#0A5BBA` + scale 0.98 + light haptic."
|
|
410
|
+
|
|
411
|
+
### Iteration Guide
|
|
412
|
+
1. Canvas is pure white light / cool navy-black `#0B0F14` dark — neutral and tool-like, never photo-driven
|
|
413
|
+
2. Sky Blue `#0770E3` is the *only* primary-action color — one blue action per screen
|
|
414
|
+
3. Prices are ALWAYS colored by the traffic-light scale: green `#00A698` cheap, amber `#FFB81C` average, red `#E5392E` expensive — and these hues never change between themes
|
|
415
|
+
4. The month price grid (per-day fare color) is the signature surface — never a plain calendar
|
|
416
|
+
5. "Everywhere" is a real, selectable destination with globe iconography — surface it prominently
|
|
417
|
+
6. Use the stacked search card with the circular swap button straddling the From–To divider
|
|
418
|
+
7. Best / Cheapest / Fastest is the result sort triad; Best is the default blended score
|
|
419
|
+
8. Fares, times, and calendar prices use tabular figures so columns align
|
|
420
|
+
9. Only the Search button gets a persistent (blue-tinted) shadow; everything else uses borders + surface-tint steps
|
|
421
|
+
10. Keep airline logos small and monochrome-tolerant — Skyscanner's neutral chrome always wins
|