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,362 @@
|
|
|
1
|
+
# Design System Inspiration of Pluto TV (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Pluto TV's iOS app is, more than almost any other streaming app, **one screen**: the **Live TV channel guide (EPG)**. Where Netflix and Tubi lead with poster art, Pluto leads with a grid that looks like cable television rebuilt for a phone — because that's exactly what Pluto is: free, ad-supported *linear* TV with hundreds of always-on channels. The canvas is a deep cool navy (`#0B0F1F`), not pure black, evoking the soft glow of a TV in a dark room. Sitting on that navy is **Pluto Blue (`#0048FF`)** — a saturated, electric, almost-cobalt blue used for the wordmark block, primary CTAs, and the active category pill — paired with the brand's signature **yellow (`#FFE100`)**, which is reserved almost exclusively for the *single most important idea in the app*: what is **on now**.
|
|
6
|
+
|
|
7
|
+
The signature screen is the **EPG grid**. It has three fixed parts: (1) a **mini-player** pinned at the top that streams whatever channel is currently selected, with a `LIVE` badge and the current program's title; (2) a **sticky time-bar** marking 30-minute increments that stays put as you scroll; and (3) the **grid body** — a vertically-scrolling list of channel rows, each with a **fixed left column** (channel number + channel logo tile) and a **horizontally-scrolling timeline of program cells** to its right. The cell airing right now — the **"On Now" cell** — is the visual anchor of the entire UI: it lifts to a slightly brighter surface (`#1C2440`) and gets a **3pt yellow (`#FFE100`) left border**. That yellow bar is Pluto's most recognizable design signature; your eye is trained to scan down the left edge of the grid for it. Tapping any cell either tunes the mini-player to that channel (On Now) or opens a schedule/detail sheet (future programs).
|
|
8
|
+
|
|
9
|
+
The atmosphere is **utilitarian, channel-surfing, and proudly retro-broadcast**. Pluto isn't trying to feel like a premium SVOD app; it's trying to feel like *free TV you can flip through*. The category pills across the top (All, Featured, Movies, News, Sports, Comedy…) work like genre "tiers" on a cable box. The secondary surfaces — On Demand rows, channel detail, the player — are more conventional streaming layouts, but they all defer to the guide. Typography is a clean humanist grotesque (Manrope is the closest free analog): heavy 700–800 weights for titles and channel names, compact 12–13pt for program cells, and ALL-CAPS tracked micro-labels for `LIVE`/`ON NOW`. The result reads like a modern, well-organized TV guide channel — dense, scannable, and instantly familiar to anyone who's ever held a remote.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- Deep cool-navy canvas (`#0B0F1F`) — late-night TV glow, not pure black; dark-only, no light mode
|
|
13
|
+
- The product *is* the EPG channel guide — a grid, not a poster wall
|
|
14
|
+
- Pluto Blue (`#0048FF`) for the wordmark, primary CTAs, active category pill
|
|
15
|
+
- Signature yellow (`#FFE100`) reserved for "on now / live" emphasis and the active tab
|
|
16
|
+
- Pinned mini-player on top of the guide — streams the selected channel with a LIVE badge
|
|
17
|
+
- Sticky 30-minute time-bar that stays fixed while the grid scrolls
|
|
18
|
+
- Fixed left channel column (channel number + logo tile) + horizontally-scrolling program timeline
|
|
19
|
+
- **"On Now" cell** = brighter surface (`#1C2440`) + 3pt yellow left border — the app's #1 design signature
|
|
20
|
+
- Red `#FF3B5C` dot + "LIVE" label as the universal live indicator
|
|
21
|
+
- Category-tier pills across the top (All / Featured / Movies / News / Sports / Comedy)
|
|
22
|
+
- Bottom tabs: Live TV / On Demand / Search / My Pluto / Account — active icon in yellow
|
|
23
|
+
|
|
24
|
+
## 2. Color Palette & Roles
|
|
25
|
+
|
|
26
|
+
### Primary (Brand & Interactive)
|
|
27
|
+
- **Pluto Blue** (`#0048FF`): Primary brand color — wordmark block, primary CTA ("Watch Live"), active category pill, selected channel highlight.
|
|
28
|
+
- **Pluto Blue Pressed** (`#0039CC`): Pressed state of blue CTAs.
|
|
29
|
+
- **Pluto Blue Bright** (`#2C6BFF`): Hover/focus lift of blue, secondary blue accents, links on dark surfaces.
|
|
30
|
+
- **Pluto Yellow** (`#FFE100`): The "on now / live emphasis" color — On Now cell left border, active tab icon, "Start Watching" highlight CTA. Text on yellow is `#0B0F1F`.
|
|
31
|
+
- **Pluto Cyan** (`#00C2FF`): Tappable text links, channel-name accents, "Full Schedule".
|
|
32
|
+
|
|
33
|
+
### Canvas & Surfaces (Dark — the only mode)
|
|
34
|
+
- **Canvas Navy** (`#0B0F1F`): Primary app background; also the gap-line color between program cells.
|
|
35
|
+
- **Surface 1** (`#141A2E`): Channel-column tiles, idle program cells, list rows, sheets.
|
|
36
|
+
- **Surface 2** (`#1C2440`): The **On Now** cell, elevated cards, pressed rows, the now-playing bar.
|
|
37
|
+
- **Surface 3** (`#25304F`): Highest elevation — popovers, modals, dropdowns.
|
|
38
|
+
- **Divider** (`#2A3556`): Hairline grid lines (row separators, channel-column border, time-bar underline).
|
|
39
|
+
|
|
40
|
+
### Text
|
|
41
|
+
- **Text Primary** (`#FFFFFF`): Titles, channel names, On Now program titles, body.
|
|
42
|
+
- **Text Secondary** (`#9DA8C7`): Metadata, idle category pills, schedule times — a cool slate.
|
|
43
|
+
- **Text Tertiary** (`#6B7595`): Channel numbers, time-bar labels, future-program times, disabled.
|
|
44
|
+
- **Text On-Yellow** (`#0B0F1F`): Text on the yellow highlight CTA / chips.
|
|
45
|
+
- **Text On-Blue** (`#FFFFFF`): Text on blue CTAs.
|
|
46
|
+
|
|
47
|
+
### Semantic & Accent
|
|
48
|
+
- **Live Red** (`#FF3B5C`): The universal LIVE indicator dot + "LIVE" label (player, mini-player, now-playing bar).
|
|
49
|
+
- **Success Green** (`#21D07A`): "Added to Watchlist", reminder set.
|
|
50
|
+
- **Error Red** (`#FF4A6E`): Playback errors, failed actions, destructive confirms.
|
|
51
|
+
- **Channel Logo Tints**: Channel logo tiles use per-channel brand gradients (e.g., Action `#0048FF→#00C2FF`, Movies `#FF6B2C→#FF2C6B`, Sports `#21D07A→#00A6A6`) — these are content, not system tokens.
|
|
52
|
+
|
|
53
|
+
### Note on Theme
|
|
54
|
+
Pluto TV ships **dark-only**. There is no light mode; the navy canvas is the brand environment (it makes the blue and yellow read like backlit broadcast graphics). Do not invent a light palette — defer to the OS for any system surface.
|
|
55
|
+
|
|
56
|
+
## 3. Typography Rules
|
|
57
|
+
|
|
58
|
+
### Font Family
|
|
59
|
+
- **Primary**: `Manrope` (by Mikhail Sharanda / Mirko Velimirović, SIL OFL) — a clean, semi-rounded humanist grotesque that closely matches Pluto's brand sans (geometric, friendly, strong at heavy weights).
|
|
60
|
+
- **Alternative**: `Inter` (SIL OFL) — acceptable substitute if Manrope is unavailable; slightly more neutral.
|
|
61
|
+
- **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
62
|
+
- **Numerals**: Tabular figures for channel numbers and schedule times so the grid columns align perfectly.
|
|
63
|
+
|
|
64
|
+
### Hierarchy
|
|
65
|
+
|
|
66
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
67
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
68
|
+
| Display | Manrope | 32pt | 800 | 1.1 | -0.5pt | Onboarding / empty-state headlines |
|
|
69
|
+
| Screen Title | Manrope | 24pt | 800 | 1.15 | -0.3pt | "Live TV Guide", channel detail title |
|
|
70
|
+
| Section | Manrope | 20pt | 700 | 1.2 | -0.2pt | "Featured Channels", On Demand rails |
|
|
71
|
+
| Now Playing | Manrope | 17pt | 700 | 1.2 | -0.2pt | Mini-player current program title |
|
|
72
|
+
| Body | Manrope | 15pt | 400 | 1.5 | 0pt | Descriptions, synopsis, body copy |
|
|
73
|
+
| Channel Name | Manrope | 13pt | 700 | 1.2 | 0pt | Channel name under logo / in lists |
|
|
74
|
+
| Program Title | Manrope | 13pt | 600 | 1.2 | 0pt | EPG cell program titles |
|
|
75
|
+
| Meta / Schedule | Manrope | 12pt | 500 | 1.3 | 0pt | "9:00 – 10:00 PM · Action" |
|
|
76
|
+
| Channel Number | Manrope | 10pt | 800 | 1.0 | 0.2pt | "612" in the channel column (tabular) |
|
|
77
|
+
| Time-bar Label | Manrope | 10pt | 700 | 1.0 | 0pt | "9:30 PM" sticky time markers (tabular) |
|
|
78
|
+
| Live / On-Now Badge | Manrope | 10pt | 800 | 1.0 | 0.5pt | "LIVE", "ON NOW" — ALL CAPS |
|
|
79
|
+
| Tab Label | Manrope | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
|
|
80
|
+
|
|
81
|
+
### Principles
|
|
82
|
+
- **Heavy and scannable**: channel names and titles are 700–800. The guide must be readable in a glance while channel-surfing.
|
|
83
|
+
- **Compact in the grid**: program cells use 12–13pt — the grid prioritizes information density (many channels/programs visible) over generous type.
|
|
84
|
+
- **Tabular numerals everywhere numeric**: channel numbers and times use tabular figures so the fixed channel column and time-bar stay perfectly aligned as the grid scrolls.
|
|
85
|
+
- **ALL CAPS for status only**: `LIVE`, `ON NOW`, `NEW` are uppercase with positive tracking (`+0.5pt`); program titles and body are sentence case.
|
|
86
|
+
- **Cool slate secondary**: metadata is `#9DA8C7` (a cool blue-grey), harmonizing with the navy — never warm grey.
|
|
87
|
+
- **Dynamic Type**: titles, body, synopsis scale; EPG cell text, time-bar labels, channel numbers, and badges stay FIXED (the grid is layout-locked).
|
|
88
|
+
|
|
89
|
+
## 4. Component Stylings
|
|
90
|
+
|
|
91
|
+
### Buttons
|
|
92
|
+
|
|
93
|
+
**Primary Button (Watch Live / Watch Now)**
|
|
94
|
+
- Shape: Rounded rectangle, 8pt corner radius
|
|
95
|
+
- Background: `#0048FF` (Pluto Blue)
|
|
96
|
+
- Text + leading play glyph: `#FFFFFF`, Manrope 15pt weight 800
|
|
97
|
+
- Height: 48pt; padding 13pt vertical, 28pt horizontal
|
|
98
|
+
- Pressed: background `#0039CC` + scale 0.98
|
|
99
|
+
|
|
100
|
+
**Highlight Button (Start Watching / Resume — high-emphasis moments)**
|
|
101
|
+
- Background: `#FFE100` (Pluto Yellow)
|
|
102
|
+
- Text: `#0B0F1F`, Manrope 15pt weight 800
|
|
103
|
+
- Corner radius: 8pt; height 48pt
|
|
104
|
+
- Pressed: `filter: brightness(0.94)` + scale 0.98
|
|
105
|
+
- Use sparingly — yellow signals "the thing that's live/important", not every button
|
|
106
|
+
|
|
107
|
+
**Secondary Button (+ Watchlist / Share / Set Reminder)**
|
|
108
|
+
- Background: transparent
|
|
109
|
+
- Border: 1pt `rgba(255,255,255,0.30)`
|
|
110
|
+
- Text + icon: `#FFFFFF`, Manrope 14pt weight 700
|
|
111
|
+
- Corner radius: 8pt; height 44pt
|
|
112
|
+
- Pressed: background `rgba(255,255,255,0.08)`
|
|
113
|
+
|
|
114
|
+
**Text Button (Full Schedule / See All / More Info)**
|
|
115
|
+
- Font: Manrope 14pt weight 700
|
|
116
|
+
- Color: `#00C2FF` (Pluto Cyan)
|
|
117
|
+
- No background, no underline
|
|
118
|
+
- Pressed: opacity 0.7
|
|
119
|
+
|
|
120
|
+
**Category Pill (All / Movies / News / Sports …)**
|
|
121
|
+
- Idle: `#1C2440` bg, `#9DA8C7` text, Manrope 11pt weight 700, 6×12pt padding, 999pt radius
|
|
122
|
+
- Active: `#0048FF` bg, `#FFFFFF` text
|
|
123
|
+
- Horizontally scrollable strip directly under the guide header
|
|
124
|
+
|
|
125
|
+
### Core Atoms
|
|
126
|
+
|
|
127
|
+
**EPG Program Cell (the core unit)**
|
|
128
|
+
- Min height: row height (64pt); width = proportional to program duration along the timeline
|
|
129
|
+
- Idle: `#141A2E` fill, 1pt `#0B0F1F` right gap-line; title Manrope 13pt weight 600 `#FFFFFF` (truncates with ellipsis), time Manrope 12pt weight 500 `#6B7595`
|
|
130
|
+
- **On Now**: `#1C2440` fill + **3pt `#FFE100` left border** + title in full white — the app's signature state
|
|
131
|
+
- Future cell: same as idle but time-only label `#6B7595`
|
|
132
|
+
- Pressed: brief `#25304F` flash; On Now tap → tune mini-player; future tap → schedule/reminder sheet
|
|
133
|
+
|
|
134
|
+
**Channel Column Tile (fixed left column)**
|
|
135
|
+
- Width: 86pt; row height 64pt; `#141A2E` fill, 0.5pt `#2A3556` right border
|
|
136
|
+
- Stacked center: channel number Manrope 10pt weight 800 `#6B7595` (tabular) + channel logo tile (≈40×28pt, 5pt radius, per-channel brand gradient, channel abbreviation in 9pt weight 800 white)
|
|
137
|
+
- Sticky horizontally (stays while program timeline scrolls)
|
|
138
|
+
|
|
139
|
+
**Time-Bar (sticky header)**
|
|
140
|
+
- Sits above the grid body, offset by the 86pt channel-column width
|
|
141
|
+
- 30-minute increments; each label Manrope 10pt weight 700 `#6B7595` (tabular), min-width matched to the timeline scale
|
|
142
|
+
- `#0B0F1F` background, 0.5pt `#2A3556` bottom border, `z-index` above rows, scrolls horizontally in sync with the program timeline
|
|
143
|
+
|
|
144
|
+
**Mini-Player (pinned top)**
|
|
145
|
+
- Height ≈150pt; full-bleed video/gradient
|
|
146
|
+
- Top-left `LIVE` chip: `rgba(0,0,0,0.4)` bg, `#FF3B5C` dot + white "LIVE" 10pt weight 800
|
|
147
|
+
- Bottom-left: channel line ("CH 612 · PLUTO TV ACTION") in `#00C2FF` 11pt weight 700, program title 18pt weight 800, a thin `#FFE100` progress bar (program elapsed) on a `rgba(255,255,255,0.2)` track
|
|
148
|
+
- Tap → expand to full-screen player
|
|
149
|
+
|
|
150
|
+
**Now-Playing Bar (compact, e.g. when browsing On Demand)**
|
|
151
|
+
- `#1C2440` fill, 12pt radius, 12×14pt padding
|
|
152
|
+
- 56×38pt thumbnail (6pt radius) + title 13pt weight 700 + "CH 612 · Pluto TV Action" 11pt `#9DA8C7` + trailing `#FF3B5C` dot + "LIVE" 10pt weight 800
|
|
153
|
+
|
|
154
|
+
### Navigation
|
|
155
|
+
|
|
156
|
+
**Bottom Tab Bar**
|
|
157
|
+
- Height: 54pt + safe-area home indicator
|
|
158
|
+
- Background: `rgba(11,15,31,0.96)` with `backdrop-filter: blur(20px) saturate(180%)`, 0.5pt top border `#2A3556`
|
|
159
|
+
- Tabs (5): Live TV, On Demand, Search, My Pluto, Account
|
|
160
|
+
- Icon size: 22pt; label Manrope 10pt weight 600
|
|
161
|
+
- Active: icon + label in `#FFE100` (yellow), icon filled
|
|
162
|
+
- Inactive: `#6B7595`
|
|
163
|
+
- No pill indicator — color + fill change only
|
|
164
|
+
|
|
165
|
+
**Guide Header**
|
|
166
|
+
- Title "Live TV Guide" Manrope 15pt weight 800 + a "Now · 9:41 PM" clock in `#9DA8C7` 11pt weight 700
|
|
167
|
+
- Category pill strip directly beneath
|
|
168
|
+
|
|
169
|
+
**Channel Detail / On Demand Nav**
|
|
170
|
+
- Standard top bar: back chevron (`#FFFFFF`, 24pt) + screen title (24pt/800) + optional trailing search/cast
|
|
171
|
+
|
|
172
|
+
### Input Fields
|
|
173
|
+
|
|
174
|
+
**Search Bar**
|
|
175
|
+
- Height: 44pt; background `#1C2440`; corner radius 8pt
|
|
176
|
+
- Leading magnifyingglass 16pt `#6B7595`
|
|
177
|
+
- Placeholder "Search channels, shows, movies" 14pt `#6B7595`
|
|
178
|
+
- Text `#FFFFFF` 15pt; focus → 1.5pt `#0048FF` border
|
|
179
|
+
|
|
180
|
+
**Search Results**
|
|
181
|
+
- Sectioned: "Channels" (logo + name + channel number rows) and "On Demand" (poster grid, 3-col)
|
|
182
|
+
|
|
183
|
+
### Distinctive Components
|
|
184
|
+
|
|
185
|
+
**EPG Guide (the signature surface)**
|
|
186
|
+
- Full assembly: pinned mini-player → guide header → category pills → sticky time-bar → scrolling channel rows (fixed channel column + horizontal program timeline). See atoms above. The yellow-left-border "On Now" cell is the defining detail.
|
|
187
|
+
|
|
188
|
+
**On Now Indicator System**
|
|
189
|
+
- Three coordinated signals for "this is airing now": (1) yellow 3pt left border on the EPG cell, (2) `#FF3B5C` dot + "LIVE" in the mini-player/now-playing bar, (3) a thin `#FFE100` elapsed-progress bar in the player. Together they make "what's live" unmistakable.
|
|
190
|
+
|
|
191
|
+
**Channel Logo Tile**
|
|
192
|
+
- A small rounded rectangle with a per-channel brand gradient and an abbreviated channel name — used in the guide's channel column, search results, and channel detail headers.
|
|
193
|
+
|
|
194
|
+
**Category-Tier Pills**
|
|
195
|
+
- The cable-box-style genre tiers (All, Featured, Movies, News, Sports, Comedy, Reality, Kids…) — selecting one filters the visible channel rows; active pill is solid Pluto Blue.
|
|
196
|
+
|
|
197
|
+
**Schedule / Reminder Sheet**
|
|
198
|
+
- Tapping a future program opens a bottom sheet: program art, title, "Airs 10:00 PM · Pluto TV Action", synopsis, and a yellow "Set Reminder" CTA (→ ✓ + `#21D07A` confirm)
|
|
199
|
+
|
|
200
|
+
**Ad Marker (player)**
|
|
201
|
+
- Free linear playback shows ad breaks; the scrubber has `#FFE100` segment ticks at break points; an "Ad · 0:15" chip top-left in `rgba(0,0,0,0.6)`
|
|
202
|
+
|
|
203
|
+
## 5. Layout Principles
|
|
204
|
+
|
|
205
|
+
### Spacing System
|
|
206
|
+
- Base unit: 4pt
|
|
207
|
+
- Scale: 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48
|
|
208
|
+
- Screen horizontal inset: 16pt (for non-grid surfaces)
|
|
209
|
+
- Channel-column width: 86pt (fixed)
|
|
210
|
+
- EPG row height: 64pt (fixed)
|
|
211
|
+
- Program cell internal padding: 8pt vertical, 10pt horizontal
|
|
212
|
+
- Time-bar increment: 30 minutes; pixel-width of 30 min defines the timeline scale
|
|
213
|
+
|
|
214
|
+
### Grid & Container
|
|
215
|
+
- The EPG is a **two-axis fixed-grid**: fixed Y (channel rows, vertical scroll) × scrollable X (program timeline) with a frozen left column and frozen top time-bar
|
|
216
|
+
- iPhone: channel column 86pt; ~3.5 thirty-minute slots visible at 390pt width
|
|
217
|
+
- Non-grid surfaces (On Demand, detail): 16pt insets, conventional rail/poster layout
|
|
218
|
+
- iPad: wider channel column (110pt), more time slots visible, mini-player can dock to a side region in landscape
|
|
219
|
+
- Search/On Demand grid: 3 columns, 10pt gutter
|
|
220
|
+
|
|
221
|
+
### Whitespace Philosophy
|
|
222
|
+
- **Grid density is the point**: the EPG deliberately packs many channels and programs on screen — it's a TV guide, breadth and scannability beat whitespace.
|
|
223
|
+
- **Frozen frame, scrolling content**: the channel column and time-bar never move; only the program timeline and the row list scroll. This stability is what makes the guide feel like a real TV guide.
|
|
224
|
+
- **The yellow bar gets clearance**: nothing crowds the On Now cell's left edge — the 3pt yellow border must always be visible at a glance.
|
|
225
|
+
- **Non-grid screens breathe more**: On Demand and detail pages use conventional, more generous streaming spacing.
|
|
226
|
+
|
|
227
|
+
### Border Radius Scale
|
|
228
|
+
- Square (0pt): EPG cells, channel-column tiles, time-bar (the grid is rectilinear like a real TV guide)
|
|
229
|
+
- Tiny (4pt): progress bars, ad ticks
|
|
230
|
+
- Small (5–6pt): channel logo tiles, now-playing thumbnail
|
|
231
|
+
- Standard (8pt): buttons, search bar, cards
|
|
232
|
+
- Card (10–12pt): On Demand posters, now-playing bar, sheets
|
|
233
|
+
- Pill (999pt): category-tier pills, LIVE chips
|
|
234
|
+
- Circle (50%): avatars, the live dot
|
|
235
|
+
|
|
236
|
+
## 6. Depth & Elevation
|
|
237
|
+
|
|
238
|
+
Pluto conveys elevation through **surface lightening on a flat navy field**, with shadow used sparingly (the EPG itself is intentionally flat and rectilinear, like a broadcast graphic).
|
|
239
|
+
|
|
240
|
+
| Level | Treatment | Use |
|
|
241
|
+
|-------|-----------|-----|
|
|
242
|
+
| Flat (Level 0) | No shadow, on `#0B0F1F` | EPG grid background, time-bar, body text |
|
|
243
|
+
| Grid Surface | `#141A2E`, no shadow | Idle program cells, channel-column tiles, list rows |
|
|
244
|
+
| On Now / Raised | `#1C2440` + 3pt `#FFE100` left border | The On Now cell, now-playing bar, elevated cards |
|
|
245
|
+
| Floating (Level 2) | `#25304F`, `0 10px 28px rgba(0,0,0,0.5)` | Dropdowns, context menus, schedule popovers |
|
|
246
|
+
| Sheet (Level 3) | `#141A2E`, `0 -10px 36px rgba(0,0,0,0.55)` | Bottom sheets (reminder, channel actions) |
|
|
247
|
+
| Modal Overlay | Scrim `rgba(4,6,15,0.7)` | Dim behind modals and sheets |
|
|
248
|
+
|
|
249
|
+
**Shadow Philosophy**: The guide is a flat, gridded broadcast surface — it uses *brightness and the yellow border*, not drop shadows, to express state and hierarchy (a real TV guide has no shadows). Shadows appear only on truly floating UI (sheets, popovers, expanded player chrome). The mini-player is the one place a soft inner vignette is used for text legibility.
|
|
250
|
+
|
|
251
|
+
### Motion
|
|
252
|
+
- **Channel surf (cell → mini-player)**: tapping an On Now cell cross-fades the mini-player video to the new channel over ~300ms; the tapped cell briefly flashes `#25304F`
|
|
253
|
+
- **Time-bar / timeline scroll**: horizontal scroll of the program timeline is 1:1 with the sticky time-bar (they move together, instantly); vertical channel-row scroll is native momentum
|
|
254
|
+
- **On Now border pulse (optional)**: the yellow left border can do a very subtle 2s breathing opacity (0.85↔1.0) to draw the eye — keep it minimal
|
|
255
|
+
- **Mini-player progress**: the `#FFE100` elapsed bar advances in real time; on channel change it resets and animates to current elapsed over 300ms
|
|
256
|
+
- **Category filter**: switching a pill cross-fades the visible rows over 200ms; selected pill fills with Pluto Blue (150ms)
|
|
257
|
+
- **Sheet present**: bottom sheet slides up 300ms ease-out; scrim fades to `rgba(4,6,15,0.7)`; dismiss drag 1:1, threshold 40%
|
|
258
|
+
- **Set Reminder**: CTA morphs to ✓ with a 250ms spring + brief `#21D07A` flash + soft haptic
|
|
259
|
+
- **Player chrome**: tap toggles controls with a 200ms fade; auto-hide after 3s idle
|
|
260
|
+
- **Tab switch**: instant content swap; active icon animates color to yellow + fill over 200ms
|
|
261
|
+
- **Haptics**: selection tick on channel-cell focus while surfing; soft impact on tune-in and reminder confirm
|
|
262
|
+
|
|
263
|
+
## 7. Do's and Don'ts
|
|
264
|
+
|
|
265
|
+
### Do
|
|
266
|
+
- Use the deep cool-navy canvas (`#0B0F1F`) — late-night TV glow, NOT pure black
|
|
267
|
+
- Make the EPG channel guide the centerpiece — it *is* the app
|
|
268
|
+
- Freeze the channel column and time-bar; scroll only the program timeline and row list
|
|
269
|
+
- Mark the "On Now" cell with a brighter surface (`#1C2440`) + **3pt `#FFE100` yellow left border** — the #1 signature
|
|
270
|
+
- Reserve yellow (`#FFE100`) for live/now emphasis and the active tab — never as a generic accent
|
|
271
|
+
- Use Pluto Blue (`#0048FF`) for the wordmark, primary CTA, and active category pill
|
|
272
|
+
- Pin a mini-player on top of the guide that streams the selected channel with a LIVE badge
|
|
273
|
+
- Use a `#FF3B5C` dot + "LIVE" as the universal live indicator everywhere
|
|
274
|
+
- Use tabular numerals for channel numbers and times so the grid stays aligned
|
|
275
|
+
- Keep EPG cells rectilinear (square corners) — it's a broadcast grid, not a card stack
|
|
276
|
+
- Use cool slate (`#9DA8C7`) for metadata, harmonizing with the navy
|
|
277
|
+
|
|
278
|
+
### Don't
|
|
279
|
+
- Don't add a light mode — Pluto is dark-only; defer to OS for system sheets
|
|
280
|
+
- Don't lead with a poster wall — the guide grid is the identity, not Netflix-style rails
|
|
281
|
+
- Don't let the channel column or time-bar scroll away — the frozen frame is what makes it a TV guide
|
|
282
|
+
- Don't use yellow for ordinary buttons or accents — it must mean "this is on now / live"
|
|
283
|
+
- Don't round the EPG cells into cards — keep the rectilinear broadcast-grid look
|
|
284
|
+
- Don't drop-shadow the grid — use surface brightness + the yellow border for hierarchy
|
|
285
|
+
- Don't use warm grey for metadata — cool slate `#9DA8C7` matches the navy
|
|
286
|
+
- Don't use proportional figures for channel numbers/times — columns will misalign
|
|
287
|
+
- Don't bury the live indicator — `#FF3B5C` + "LIVE" must always be obvious
|
|
288
|
+
- Don't animate the grid aggressively — channel surfing is fast and quiet (200–300ms)
|
|
289
|
+
- Don't make the navy pure black — the slight blue lift is what makes the blue/yellow glow
|
|
290
|
+
|
|
291
|
+
## 8. Responsive Behavior
|
|
292
|
+
|
|
293
|
+
### Device Sizes
|
|
294
|
+
| Device | Width | Key Changes |
|
|
295
|
+
|--------|-------|-------------|
|
|
296
|
+
| iPhone SE (3rd gen) | 375pt | Channel column 80pt; ~3 thirty-min slots visible; mini-player ~135pt |
|
|
297
|
+
| iPhone 13/14/15 | 390pt | Standard: channel column 86pt; ~3.5 slots visible; mini-player ~150pt |
|
|
298
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated above the mini-player |
|
|
299
|
+
| iPhone 15/16 Pro Max | 430pt | ~4 slots visible; mini-player ~165pt; larger program titles |
|
|
300
|
+
| iPad (portrait) | 768pt | Channel column 110pt; ~6 slots visible; conventional On Demand grid 4-col |
|
|
301
|
+
| iPad (landscape) | 1024pt+ | Mini-player docks to a right rail; guide fills the rest; ~9 slots visible |
|
|
302
|
+
|
|
303
|
+
### Dynamic Type
|
|
304
|
+
- Screen titles, body, synopsis, now-playing title: full scale
|
|
305
|
+
- EPG cell text, channel numbers, time-bar labels, LIVE/ON-NOW badges, tab labels: FIXED (the grid is layout-locked; scaling them would break column alignment)
|
|
306
|
+
- Schedule-sheet text: scales to L, then truncates
|
|
307
|
+
|
|
308
|
+
### Orientation
|
|
309
|
+
- Phone: guide is portrait-primary; player rotates to landscape fullscreen
|
|
310
|
+
- iPad: landscape gets the docked mini-player + wide guide layout
|
|
311
|
+
- The frozen channel column / time-bar behavior is preserved in all orientations
|
|
312
|
+
|
|
313
|
+
### Touch Targets
|
|
314
|
+
- EPG program cell: full cell tappable, min 64pt tall
|
|
315
|
+
- Channel-column tile: full tile tappable (jumps to that channel)
|
|
316
|
+
- Category pill: min 32pt tall, full pill tap
|
|
317
|
+
- Tab bar icons: 22pt glyph, 54pt row, full-segment tap
|
|
318
|
+
- Mini-player: full surface tap → fullscreen
|
|
319
|
+
|
|
320
|
+
### Safe Area Handling
|
|
321
|
+
- Top: mini-player respects safe area & Dynamic Island; video bleeds under the status bar
|
|
322
|
+
- Bottom: tab bar respects home indicator; player controls inset above it
|
|
323
|
+
- Sides: non-grid screens use 16pt insets; the EPG timeline bleeds to the right edge
|
|
324
|
+
- The sticky time-bar sits below the safe-area / mini-player, never under the notch
|
|
325
|
+
|
|
326
|
+
## 9. Agent Prompt Guide
|
|
327
|
+
|
|
328
|
+
### Quick Color Reference
|
|
329
|
+
- Canvas (navy): `#0B0F1F`
|
|
330
|
+
- Surface 1 / 2 / 3: `#141A2E` / `#1C2440` / `#25304F`
|
|
331
|
+
- Divider (grid lines): `#2A3556`
|
|
332
|
+
- Pluto Blue: `#0048FF` (pressed `#0039CC`, bright `#2C6BFF`)
|
|
333
|
+
- Pluto Yellow (on-now/live): `#FFE100` / text on it `#0B0F1F`
|
|
334
|
+
- Pluto Cyan (links): `#00C2FF`
|
|
335
|
+
- Live Red: `#FF3B5C`
|
|
336
|
+
- Text primary / secondary / tertiary: `#FFFFFF` / `#9DA8C7` / `#6B7595`
|
|
337
|
+
- Success / Error: `#21D07A` / `#FF4A6E`
|
|
338
|
+
|
|
339
|
+
### Example Component Prompts
|
|
340
|
+
- "Build the Pluto TV EPG row in SwiftUI: a 64pt-tall row. Leading: a fixed 86pt channel-column tile — `#141A2E` background, 0.5pt `#2A3556` right border, centered VStack of channel number (Manrope 10pt weight 800 `#6B7595`, tabular) over a 40×28pt logo tile (5pt radius, channel brand gradient, abbreviation in 9pt weight 800 white). Trailing: a horizontally-scrolling row of program cells. Idle cell: `#141A2E`, 1pt `#0B0F1F` right gap-line, program title Manrope 13pt weight 600 white (1 line, ellipsis), time Manrope 12pt weight 500 `#6B7595`, width proportional to duration. The On Now cell: `#1C2440` fill + a 3pt `#FFE100` left border + full-white title."
|
|
341
|
+
|
|
342
|
+
- "Create the Pluto TV sticky time-bar: a horizontal strip offset 86pt from the left (to clear the channel column), `#0B0F1F` background, 0.5pt `#2A3556` bottom border, `zIndex` above the rows. 30-minute labels in Manrope 10pt weight 700 `#6B7595` (tabular figures), each label min-width matched to the timeline's 30-min pixel scale. It scrolls horizontally in lockstep with the program timeline and stays pinned to the top while channel rows scroll vertically."
|
|
343
|
+
|
|
344
|
+
- "Build the Pluto TV pinned mini-player: ~150pt tall, full-bleed video with a subtle bottom vignette. Top-left a LIVE chip — `rgba(0,0,0,0.4)` bg, a `#FF3B5C` 7pt dot + 'LIVE' in Manrope 10pt weight 800 white. Bottom-left: channel line 'CH 612 · PLUTO TV ACTION' in `#00C2FF` 11pt weight 700, program title in Manrope 18pt weight 800 white, then a 3pt elapsed-progress bar — `#FFE100` fill on a `rgba(255,255,255,0.2)` track. Tapping the player goes fullscreen."
|
|
345
|
+
|
|
346
|
+
- "Render the Pluto TV category-tier pill strip: a horizontal scroll of pills directly under the guide header. Idle pill: `#1C2440` background, `#9DA8C7` text, Manrope 11pt weight 700, 6×12pt padding, fully-rounded (999pt). Active pill: `#0048FF` background, white text. Selecting a pill filters the visible channel rows; the fill animates over 150ms."
|
|
347
|
+
|
|
348
|
+
- "Build the Pluto TV bottom tab bar: 54pt + safe area, `rgba(11,15,31,0.96)` with `backdrop-filter: blur(20px) saturate(180%)`, 0.5pt top border `#2A3556`. Five tabs — Live TV, On Demand, Search, My Pluto, Account — 22pt icons, Manrope 10pt weight 600 labels. Active tab icon + label `#FFE100` (yellow) with the icon filled; inactive `#6B7595`. No Material/pill indicator."
|
|
349
|
+
|
|
350
|
+
- "Create the Pluto TV now-playing bar: `#1C2440` fill, 12pt corner radius, 12×14pt padding, row of: a 56×38pt thumbnail (6pt radius, channel gradient) + a VStack with program title Manrope 13pt weight 700 white and 'CH 612 · Pluto TV Action' Manrope 11pt weight 500 `#9DA8C7` + a trailing group of a `#FF3B5C` 7pt dot and 'LIVE' in Manrope 10pt weight 800 `#FF3B5C`."
|
|
351
|
+
|
|
352
|
+
### Iteration Guide
|
|
353
|
+
1. Canvas is deep cool-navy `#0B0F1F` (slight blue lift) — NOT pure black; dark-only
|
|
354
|
+
2. The app *is* the EPG channel guide — a frozen-frame grid, not a poster wall
|
|
355
|
+
3. Channel column (86pt) and 30-min time-bar are FROZEN; only the program timeline + row list scroll
|
|
356
|
+
4. The "On Now" cell = `#1C2440` surface + **3pt `#FFE100` yellow left border** — the single defining signature
|
|
357
|
+
5. Yellow `#FFE100` means "on now / live / important" only — never a generic accent; blue `#0048FF` is the brand CTA
|
|
358
|
+
6. A pinned mini-player on top streams the selected channel with a `#FF3B5C` "LIVE" badge
|
|
359
|
+
7. EPG cells are rectilinear (square corners) like a broadcast graphic — no card rounding, no shadows on the grid
|
|
360
|
+
8. Tabular numerals for channel numbers and times so columns stay aligned while scrolling
|
|
361
|
+
9. Metadata is cool slate `#9DA8C7`; titles/channel names are heavy Manrope 700–800
|
|
362
|
+
10. Bottom tabs Live TV / On Demand / Search / My Pluto / Account — active icon yellow `#FFE100`, no pill
|