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,466 @@
|
|
|
1
|
+
# Design System Inspiration of YouTube (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
YouTube's iOS app is a content-forward canvas whose entire job is to surface a 16:9 thumbnail and let you tap it. The feed is a vertical stream of video cards — each one a wide still frame with a red-circled duration tag, a channel avatar, a two-line title, and metadata — arranged edge-to-edge with generous gaps between them. On light mode (the default in recent versions), the app canvas is clinical white (`#FFFFFF`); on dark mode, a near-black `#0F0F0F` that's been the flagship surface since 2017. Whichever mode you're in, the red is the same: YouTube Red (`#FF0000`), an unshifted, saturated, traffic-light red reserved for the Subscribe button, the live indicator, and the play-button logomark. Everything else — backgrounds, text, chrome — is achromatic.
|
|
6
|
+
|
|
7
|
+
The accent system has one job: mark the verb "Subscribe." When you tap Subscribe, the red pill morphs to a gray "Subscribed" state, the bell icon appears, and a light haptic fires — and that's the only time red ever appears on an action in the UI. Red is otherwise reserved for three static marks: the "LIVE" pill on live-stream thumbnails, the small "•" unread indicator on the subscriptions tab, and the play arrow inside YouTube's logomark. This restraint is what makes YouTube Red instantly iconic — when you see red in this app, you're looking at a brand element, not interactive UI.
|
|
8
|
+
|
|
9
|
+
Typography is YouTube Sans (proprietary, released in 2017) for display moments — the wordmark, large headers, the video player UI — paired with Roboto for body text (because the app was built by Google and its Material roots still show). On iOS, a fallback stack of SF Pro covers both when the custom fonts are unavailable. The hierarchy is compact: sizes run 11–20pt, weights at 400 / 500 / 700. Video titles sit at 16pt weight 500 with 2-line clamp — the single most common type moment in the app. There are no display-sized hero titles in the feed itself; the thumbnail is the headline, the title is the caption.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- White canvas (`#FFFFFF`) in light mode, near-black `#0F0F0F` in dark — both with the same YouTube Red accent
|
|
13
|
+
- **YouTube Red** (`#FF0000`) reserved for the Subscribe button and brand marks (logo, LIVE badge, unread dots) — nothing else
|
|
14
|
+
- **16:9 video thumbnail** is the atomic unit of the app, with a black duration tag in the bottom-right corner
|
|
15
|
+
- 28pt circular channel avatar below the thumbnail, left-aligned, paired with channel name + metadata
|
|
16
|
+
- **Shorts tab** ships a TikTok-style vertical video player with right-rail actions
|
|
17
|
+
- **Mini-player** — a draggable floating video that persists when navigating away
|
|
18
|
+
- Bottom tab bar (5 tabs): Home, Shorts, Create (+), Subscriptions, You
|
|
19
|
+
- YouTube Sans (proprietary display) paired with Roboto body; SF Pro fallback
|
|
20
|
+
- Haptics on Subscribe, like/dislike, share, and video scrub
|
|
21
|
+
|
|
22
|
+
## 2. Color Palette & Roles
|
|
23
|
+
|
|
24
|
+
### Primary
|
|
25
|
+
- **YouTube Red** (`#FF0000`): The iconic brand red — Subscribe button (unsubscribed state), LIVE indicator pill, brand logomark (play arrow in the square), the red dot in notification badges, and the progress-fill color on the video scrubber.
|
|
26
|
+
- **YouTube Red Pressed** (`#CC0000`): Pressed / active-state variant for red CTAs.
|
|
27
|
+
- **Red Hover** (`#E60000`): Slight deepening for web-style hover; matched on iOS as a pressed alt.
|
|
28
|
+
|
|
29
|
+
### Canvas & Surfaces (Light Mode)
|
|
30
|
+
- **Canvas White** (`#FFFFFF`): Primary light canvas — all main feed surfaces.
|
|
31
|
+
- **Surface 1** (`#F9F9F9`): Elevated card backgrounds on some sheets, section backing.
|
|
32
|
+
- **Surface 2** (`#F2F2F2`): Pressed-state background on list rows and chips.
|
|
33
|
+
- **Divider** (`#E5E5E5`): 1pt hairline dividers between list items and sections.
|
|
34
|
+
- **Input Background** (`#F2F2F2`): Search bar fill in light mode.
|
|
35
|
+
|
|
36
|
+
### Canvas & Surfaces (Dark Mode)
|
|
37
|
+
- **Canvas Dark** (`#0F0F0F`): Primary dark canvas — YouTube's signature "not-quite-black."
|
|
38
|
+
- **Surface 1 Dark** (`#1F1F1F`): Sheet backgrounds, context menu, comment compose.
|
|
39
|
+
- **Surface 2 Dark** (`#272727`): Pressed-state on dark rows, hover overlays.
|
|
40
|
+
- **Surface 3 Dark** (`#3F3F3F`): Higher elevation — player chrome, sticky headers.
|
|
41
|
+
- **Divider Dark** (`#303030`): Hairline dividers in dark mode.
|
|
42
|
+
|
|
43
|
+
### Text (Light Mode)
|
|
44
|
+
- **Text Primary** (`#0F0F0F`): Video titles, channel names, primary headings.
|
|
45
|
+
- **Text Secondary** (`#606060`): Metadata — view counts, upload date, channel subscriber count.
|
|
46
|
+
- **Text Tertiary** (`#909090`): Timestamps, placeholders, lowest-emphasis labels.
|
|
47
|
+
- **Text Disabled** (`#C0C0C0`): Disabled button text.
|
|
48
|
+
|
|
49
|
+
### Text (Dark Mode)
|
|
50
|
+
- **Text Primary Dark** (`#FFFFFF`): Video titles, channel names, headings on dark.
|
|
51
|
+
- **Text Secondary Dark** (`#AAAAAA`): Metadata on dark.
|
|
52
|
+
- **Text Tertiary Dark** (`#717171`): Lowest-emphasis labels on dark.
|
|
53
|
+
|
|
54
|
+
### Semantic
|
|
55
|
+
- **Live Red** (`#FF0000`): LIVE indicator pill — same token as brand red.
|
|
56
|
+
- **Error Red** (`#FF0000`): Playback / network errors, same token.
|
|
57
|
+
- **Success Green** (`#3EA6FF` is info, not success — YouTube uses blue): Minimal success states.
|
|
58
|
+
- **Info Blue** (`#3EA6FF`): Links inline within descriptions, "Show more," clickable hashtags in comments.
|
|
59
|
+
- **Warning Yellow** (`#FFC400`): Rarely used — age-restriction warnings, content advisories.
|
|
60
|
+
|
|
61
|
+
### Content Accent: Channel & Playlist
|
|
62
|
+
- Channel pages accept a custom banner image and an accent color — but this accent never bleeds into the app's chrome. It only appears as a subtle header overlay.
|
|
63
|
+
|
|
64
|
+
## 3. Typography Rules
|
|
65
|
+
|
|
66
|
+
### Font Family
|
|
67
|
+
- **Primary Display**: `YouTube Sans` (proprietary, released 2017 — rounded geometric sans, close to Nunito / Rubik in feel)
|
|
68
|
+
- **Primary Body**: `Roboto` (Google's signature sans — used for video titles, metadata, body copy)
|
|
69
|
+
- **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Roboto', 'Segoe UI', Helvetica, Arial, sans-serif`
|
|
70
|
+
- **CJK / Non-Latin**: Platform-native — PingFang SC, Hiragino Sans, Apple SD Gothic Neo, Noto Sans extended
|
|
71
|
+
- YouTube Sans is used for the wordmark, the large "Shorts" / "Live" labels, and display moments; Roboto handles everything else
|
|
72
|
+
|
|
73
|
+
### Hierarchy
|
|
74
|
+
|
|
75
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
76
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
77
|
+
| Screen Title | YouTube Sans | 20pt | 700 | 1.2 | -0.1pt | "Home", "Subscriptions" top nav |
|
|
78
|
+
| Video Detail Title | Roboto | 18pt | 600 | 1.3 | -0.1pt | Below the full-player on the video detail page |
|
|
79
|
+
| Video Title (Feed) | Roboto | 16pt | 500 | 1.3 | 0pt | Video card title — 2-line clamp — the most common type moment |
|
|
80
|
+
| Channel Name | Roboto | 14pt | 500 | 1.3 | 0pt | Below video title, next to channel avatar |
|
|
81
|
+
| Metadata | Roboto | 13pt | 400 | 1.3 | 0pt | "1.2M views · 3 days ago" |
|
|
82
|
+
| Comment Text | Roboto | 14pt | 400 | 1.4 | 0pt | Comment body on video detail |
|
|
83
|
+
| Comment Author | Roboto | 13pt | 500 | 1.3 | 0pt | Username + "• 2 hours ago" |
|
|
84
|
+
| Body | Roboto | 14pt | 400 | 1.45 | 0pt | Description, About sections |
|
|
85
|
+
| Button (Primary — Subscribe) | Roboto | 14pt | 500 | 1.0 | 0pt | Red Subscribe / gray Subscribed pill |
|
|
86
|
+
| Button (Secondary) | Roboto | 14pt | 500 | 1.0 | 0pt | Share, Download, Join, etc. |
|
|
87
|
+
| Chip | Roboto | 14pt | 400 | 1.0 | 0pt | Filter chips on Home ("All", "Music", "Gaming") |
|
|
88
|
+
| Tab Label | Roboto | 10pt | 500 | 1.0 | 0.1pt | Bottom tab labels |
|
|
89
|
+
| Duration Tag | Roboto | 11pt | 500 | 1.0 | 0pt | "12:34" in bottom-right of thumbnail |
|
|
90
|
+
| Timestamp | Roboto | 12pt | 400 | 1.0 | 0pt | "•1:23 / 4:56" on player scrubber |
|
|
91
|
+
| Like Count | Roboto | 13pt | 500 | 1.0 | 0pt | "1.2K" under the like icon |
|
|
92
|
+
| Shorts Overlay Caption | YouTube Sans | 15pt | 500 | 1.35 | 0pt | Caption on Shorts, shadow-backed |
|
|
93
|
+
|
|
94
|
+
### Principles
|
|
95
|
+
- **Weight concentration at 400 / 500 / 700**: Regular for body, medium for titles and buttons, bold for display
|
|
96
|
+
- **No thin, light, or black weights**: The fonts ship with them but the product does not use them
|
|
97
|
+
- **Two font families**: YouTube Sans for display, Roboto for body — keep them in their lanes
|
|
98
|
+
- **Video titles at 16pt medium**: This is the most common type moment; its weight 500 gives visual weight without being bold
|
|
99
|
+
- **View-count metadata compresses**: "1.2M views", "234K views", "1,234 views" — abbreviate above 10K
|
|
100
|
+
- **Dynamic Type supported**: Titles, descriptions, and comments scale with user preference; tab labels and duration tags stay fixed
|
|
101
|
+
- **Shorts captions need shadow**: Any text over Shorts video gets a subtle `rgba(0,0,0,0.5)` drop shadow for legibility
|
|
102
|
+
|
|
103
|
+
## 4. Component Stylings
|
|
104
|
+
|
|
105
|
+
### Buttons
|
|
106
|
+
|
|
107
|
+
**Subscribe Button (The Iconic Red → Gray Morph)**
|
|
108
|
+
- Unsubscribed state:
|
|
109
|
+
- Shape: Rounded rectangle with 18pt corner radius (NOT full pill — YouTube's signature is the rounded rect)
|
|
110
|
+
- Background: `#FF0000`
|
|
111
|
+
- Text: `#FFFFFF`, Roboto 14pt weight 500 ("Subscribe")
|
|
112
|
+
- Padding: 8pt vertical, 16pt horizontal
|
|
113
|
+
- Height: 36pt
|
|
114
|
+
- Subscribed state:
|
|
115
|
+
- Background: `#F2F2F2` light / `#272727` dark
|
|
116
|
+
- Text: `#0F0F0F` light / `#FFFFFF` dark ("Subscribed")
|
|
117
|
+
- Often paired with a trailing bell icon (notification toggle) — 16pt SF Symbol bell
|
|
118
|
+
- Pressed: opacity 0.85, scale 0.98, light haptic on state change
|
|
119
|
+
- Transition: 200ms spring morph between red and gray
|
|
120
|
+
|
|
121
|
+
**Primary Pill (Sign in / Continue)**
|
|
122
|
+
- Used on sign-in flows, creator tools
|
|
123
|
+
- Background: `#0F0F0F` (dark text button in light mode) or `#3EA6FF` (blue info button)
|
|
124
|
+
- Padding: 10pt vertical, 24pt horizontal
|
|
125
|
+
- Corner radius: 18pt (matches Subscribe)
|
|
126
|
+
- Text: `#FFFFFF` 14pt weight 500
|
|
127
|
+
|
|
128
|
+
**Action Button Row (Like / Dislike / Share / Download / Save / Remix)**
|
|
129
|
+
- A horizontal pill-group below the video title on the video detail page
|
|
130
|
+
- Each button: 36pt tall capsule with light gray background (`#F2F2F2` light / `#272727` dark)
|
|
131
|
+
- Leading 20pt SF Symbol glyph + trailing count label (13pt weight 500)
|
|
132
|
+
- Corner radius: 18pt, padding 8pt vertical / 12pt horizontal
|
|
133
|
+
- Gap between pills: 8pt
|
|
134
|
+
- Like: thumbs-up SF Symbol with count ("1.2K"); tap toggles fill and turns `#0F0F0F` solid; no color change (YouTube removed the blue-highlight treatment)
|
|
135
|
+
- Dislike: thumbs-down SF Symbol; count is hidden (per 2021 product decision); only the user sees their own dislikes
|
|
136
|
+
- Pressed: scale 0.97, light haptic
|
|
137
|
+
|
|
138
|
+
**Icon Button (Player Controls — Play / Pause / Skip)**
|
|
139
|
+
- Glyph size: 32pt (main play/pause), 20pt (skip forward/back, captions, fullscreen)
|
|
140
|
+
- Color: `#FFFFFF` over video — always white since the player is on a dark canvas
|
|
141
|
+
- Hit area: 44pt
|
|
142
|
+
- Pressed: scale 0.9, soft haptic
|
|
143
|
+
|
|
144
|
+
**Text Button ("Show more", "Sort by")**
|
|
145
|
+
- Font: Roboto 14pt weight 500
|
|
146
|
+
- Color: `#0F0F0F` light / `#FFFFFF` dark
|
|
147
|
+
- No underline, no background
|
|
148
|
+
|
|
149
|
+
### Cards & Containers
|
|
150
|
+
|
|
151
|
+
**Video Card (Feed) — The Atomic Unit**
|
|
152
|
+
- Width: full screen width
|
|
153
|
+
- Structure (top to bottom):
|
|
154
|
+
1. **16:9 thumbnail** — full-width, image fills with no letterbox, no corner rounding (0pt, hard edges) on the feed card itself (some experiments use 12pt; the signature is hard edge)
|
|
155
|
+
2. **Duration tag** — positioned absolute bottom-right of thumbnail, 6pt from corners; background `rgba(0,0,0,0.75)`, text `#FFFFFF` 11pt weight 500, 4pt corner radius, 4pt vertical / 6pt horizontal padding
|
|
156
|
+
3. **LIVE tag** (if live) — top-left of thumbnail; background `#FF0000`, text "LIVE" white 11pt weight 700, same 4pt radius
|
|
157
|
+
4. Metadata row below thumbnail: 12pt top padding, 16pt horizontal padding
|
|
158
|
+
- Left: 28pt circular channel avatar
|
|
159
|
+
- Right stack:
|
|
160
|
+
- Video title: Roboto 16pt weight 500, 2-line clamp with ellipsis, `#0F0F0F` light / `#FFFFFF` dark
|
|
161
|
+
- Channel name + metadata on one line: Roboto 13pt weight 400 `#606060` light / `#AAAAAA` dark — format "Channel Name · 1.2M views · 3 days ago"
|
|
162
|
+
- Trailing: 24pt `ellipsis` overflow icon, 44pt hit
|
|
163
|
+
5. Bottom padding: 16pt (gap before next card)
|
|
164
|
+
- Background: transparent (canvas shows through)
|
|
165
|
+
- No corner radius on the card itself — cards are flush to screen edges; the thumbnail's hard edges are the defining aesthetic
|
|
166
|
+
|
|
167
|
+
**Shorts Card (Vertical Video)**
|
|
168
|
+
- Full-viewport 9:16 video (width × height of screen)
|
|
169
|
+
- Overlays (over the video):
|
|
170
|
+
- Right-rail action stack, 12pt from right, centered vertically 50–90%
|
|
171
|
+
- Creator avatar (44pt circle, 2pt white border) with `+` Subscribe badge
|
|
172
|
+
- Like (thumbs-up) 32pt white + count below (13pt weight 500 white with shadow)
|
|
173
|
+
- Dislike (thumbs-down) 32pt white + count hidden
|
|
174
|
+
- Comment bubble 32pt white + count
|
|
175
|
+
- Share arrow 32pt white
|
|
176
|
+
- Remix icon (music note + play) 32pt
|
|
177
|
+
- Audio disc — 44pt rotating circle showing the audio source cover
|
|
178
|
+
- Bottom-left info: 16pt from left, bottom-align above tab bar
|
|
179
|
+
- `@channel` 15pt weight 500 white
|
|
180
|
+
- Caption YouTube Sans 15pt weight 500 white, 2-line clamp, shadow `rgba(0,0,0,0.5)` 0 1px 3px
|
|
181
|
+
- Audio marquee — music note + "Original audio" or song title, 13pt weight 400 white
|
|
182
|
+
- Progress scrubber at bottom — 2pt tall, track `rgba(255,255,255,0.3)`, fill `#FFFFFF` (not red on Shorts — kept white for minimalism)
|
|
183
|
+
|
|
184
|
+
**Video Detail (Full Player + Info)**
|
|
185
|
+
- Top: 16:9 player, full width — black letterbox if video is not 16:9
|
|
186
|
+
- Below player:
|
|
187
|
+
- Title: Roboto 18pt weight 600, can be 2–3 lines, 16pt horizontal / 12pt top padding
|
|
188
|
+
- View count + upload date row: 13pt weight 400 secondary
|
|
189
|
+
- Channel row: 40pt circle avatar + channel name (14pt weight 500) + subscriber count (13pt weight 400 secondary) + **Subscribe pill** trailing right
|
|
190
|
+
- Action button row: horizontal scroll of pills (Like, Dislike, Share, Remix, Download, Save, Report)
|
|
191
|
+
- Description card: 16pt padding, collapsible with "Show more" — contains description, hashtags, chapters, playlist links
|
|
192
|
+
- Comments preview: tap opens comment sheet
|
|
193
|
+
- Up-next recommendations — vertical list of related video cards
|
|
194
|
+
|
|
195
|
+
**Mini-Player**
|
|
196
|
+
- Sits at the bottom of the screen, above the tab bar, when the user swipes down from a full player
|
|
197
|
+
- Height: 72pt
|
|
198
|
+
- Full width, background `#FFFFFF` light / `#1F1F1F` dark
|
|
199
|
+
- Left: 72pt-tall 16:9 thumbnail (128pt wide approx)
|
|
200
|
+
- Center: video title 14pt weight 500 (1 line), channel name 12pt weight 400 (1 line)
|
|
201
|
+
- Right: Play/pause 20pt SF Symbol + close X 20pt
|
|
202
|
+
- Drag up: expands back to full player with shared-element animation
|
|
203
|
+
- Drag down past 40pt from bottom: dismisses
|
|
204
|
+
|
|
205
|
+
**Comment Row**
|
|
206
|
+
- 32pt circular avatar leading
|
|
207
|
+
- Author + "• 2 hours ago" header row (13pt weight 500 + secondary)
|
|
208
|
+
- Comment body (14pt weight 400) with inline link styling
|
|
209
|
+
- Action row: thumbs-up + count, thumbs-down, reply button, heart-from-creator badge if applicable (20pt)
|
|
210
|
+
- If the creator hearted the comment: a small red heart with their avatar appears below the comment
|
|
211
|
+
- Nested replies: indented 40pt, hidden behind a "View replies" button
|
|
212
|
+
|
|
213
|
+
**Filter Chip Row (Home)**
|
|
214
|
+
- Horizontal scroll of chips at the top of Home
|
|
215
|
+
- Each chip: 34pt tall pill
|
|
216
|
+
- Default: background `#F2F2F2` light / `#272727` dark, text `#0F0F0F` / `#FFFFFF`
|
|
217
|
+
- Active: background `#0F0F0F` light / `#FFFFFF` dark, text white / black (full color inversion for the selected chip — YouTube's signature)
|
|
218
|
+
- Padding: 8pt vertical, 12pt horizontal
|
|
219
|
+
- Corner radius: 500pt (full pill)
|
|
220
|
+
|
|
221
|
+
### Navigation
|
|
222
|
+
|
|
223
|
+
**Bottom Tab Bar**
|
|
224
|
+
- Height: 56pt + safe area
|
|
225
|
+
- Background: `#FFFFFF` light / `#0F0F0F` dark with 1pt top hairline `#E5E5E5` / `#303030`
|
|
226
|
+
- 5 tabs: **Home** (house), **Shorts** (short play icon — unique custom glyph), **Create** (centered `+`), **Subscriptions** (subscription-box icon), **You** (user circle or avatar)
|
|
227
|
+
- Icon size: 24pt glyph, 44pt hit area
|
|
228
|
+
- Active: `#0F0F0F` light / `#FFFFFF` dark (filled variant)
|
|
229
|
+
- Inactive: `#606060` light / `#AAAAAA` dark (outlined variant)
|
|
230
|
+
- Labels: Roboto 10pt weight 500, shown always
|
|
231
|
+
- Create tab: center button is slightly different — on some variants it's a `+` inside a circle outline; when tapped, it opens a modal sheet ("Create a Short", "Upload video", "Go live")
|
|
232
|
+
- Unread badge: 8pt `#FF0000` dot at the top-right of the tab icon (shows on Subscriptions and You)
|
|
233
|
+
|
|
234
|
+
**Top App Bar (Home)**
|
|
235
|
+
- Height: 48pt + safe area
|
|
236
|
+
- Background: matches canvas
|
|
237
|
+
- Leading: YouTube logomark (red play-button in a rounded square + "YouTube" wordmark in YouTube Sans) 24pt tall
|
|
238
|
+
- Trailing icons (from right): Cast (TV + wave), Notifications (bell), Search (magnifying glass), Profile avatar (28pt circle) — all 24pt, 16pt gap
|
|
239
|
+
- On scroll down: bar compresses / hides with subtle fade
|
|
240
|
+
- Filter chip row sits below the app bar — sticky to top when scrolling
|
|
241
|
+
|
|
242
|
+
**Top Nav (Video Detail / Settings)**
|
|
243
|
+
- Height: 44pt + safe area
|
|
244
|
+
- Back chevron 24pt leading, title 17pt weight 500 center, trailing overflow 24pt
|
|
245
|
+
- Background matches canvas
|
|
246
|
+
|
|
247
|
+
### Input Fields
|
|
248
|
+
|
|
249
|
+
**Search Bar (tapped from Home)**
|
|
250
|
+
- After tapping the search icon on Home, a full-screen search view takes over
|
|
251
|
+
- The top becomes an input field: 44pt tall, 500pt corner radius on the pill side on newer versions (rounded rect 4pt on classic)
|
|
252
|
+
- Leading back chevron 24pt; input field takes the full remaining width
|
|
253
|
+
- Placeholder: "Search YouTube" 16pt weight 400 `#606060` light / `#AAAAAA` dark
|
|
254
|
+
- Trailing: microphone (voice search) + camera (visual search) 24pt icons
|
|
255
|
+
- Background: `#F2F2F2` light / `#272727` dark
|
|
256
|
+
|
|
257
|
+
**Comment Compose**
|
|
258
|
+
- Pinned above the keyboard when comments sheet is open
|
|
259
|
+
- Background: `#FFFFFF` light / `#0F0F0F` dark with 1pt top border
|
|
260
|
+
- Height: 44pt collapsed, expands with content
|
|
261
|
+
- Leading: user avatar 32pt circle
|
|
262
|
+
- Center: input "Add a comment..." 14pt weight 400 tertiary
|
|
263
|
+
- Trailing: send arrow (grayed until non-empty, then `#3EA6FF`)
|
|
264
|
+
|
|
265
|
+
### Distinctive Components
|
|
266
|
+
|
|
267
|
+
**The Duration Tag**
|
|
268
|
+
- Positioned absolute bottom-right on every thumbnail
|
|
269
|
+
- Background `rgba(0,0,0,0.75)` (an opaque dark chip that reads as "official" YouTube style)
|
|
270
|
+
- Text `#FFFFFF` 11pt weight 500, 4pt radius, 4pt vertical / 6pt horizontal padding
|
|
271
|
+
- Format: "M:SS" for under an hour, "H:MM:SS" for longer
|
|
272
|
+
- If a Short: the tag is replaced with a small Shorts glyph or is hidden (Shorts thumbnails are 9:16 and handled differently)
|
|
273
|
+
|
|
274
|
+
**The Live Indicator**
|
|
275
|
+
- Top-left on thumbnails: red pill "LIVE" + small white dot pulsing
|
|
276
|
+
- On the video detail page, a rotating live viewer count sits below the channel name
|
|
277
|
+
- Red `#FF0000` chip, white text, 11pt weight 700
|
|
278
|
+
|
|
279
|
+
**The LIVE Pulse**
|
|
280
|
+
- Subtle 2-second opacity pulse on the LIVE dot (opacity 1 → 0.6 → 1)
|
|
281
|
+
- Indicates active real-time stream
|
|
282
|
+
|
|
283
|
+
**Subscribe Button Morph**
|
|
284
|
+
- Red "Subscribe" pill → gray "Subscribed" pill in 200ms
|
|
285
|
+
- Bell icon fades in trailing after subscription
|
|
286
|
+
- Success haptic fires on the red-to-gray transition
|
|
287
|
+
|
|
288
|
+
**Mini-Player Drag-Down**
|
|
289
|
+
- Full player + info can be swiped down with a two-finger drag to collapse into the mini-player
|
|
290
|
+
- The mini-player persists while the user browses other content — this is YouTube's most distinctive navigation pattern
|
|
291
|
+
- Drag mini-player down past threshold: dismisses (video stops)
|
|
292
|
+
|
|
293
|
+
**Chapters**
|
|
294
|
+
- Longer videos show chapter markers on the scrubber — hairline vertical notches on the 1pt track
|
|
295
|
+
- Tap chapter: jumps to that timestamp; current chapter title sits above the scrubber
|
|
296
|
+
|
|
297
|
+
**Heart-from-Creator**
|
|
298
|
+
- When a video creator hearts a comment, a small red heart icon overlays the comment, showing the creator's avatar inside
|
|
299
|
+
- 20pt heart, creator's 16pt circular avatar offset bottom-right
|
|
300
|
+
|
|
301
|
+
**Playback Speed Menu**
|
|
302
|
+
- A modal sheet from the player's overflow menu
|
|
303
|
+
- Options: 0.25x, 0.5x, 0.75x, Normal (1x), 1.25x, 1.5x, 1.75x, 2x
|
|
304
|
+
- Selected option has a checkmark and is `#3EA6FF` or bold
|
|
305
|
+
|
|
306
|
+
## 5. Layout Principles
|
|
307
|
+
|
|
308
|
+
### Spacing System
|
|
309
|
+
- Base unit: 4pt
|
|
310
|
+
- Scale: 4, 8, 12, 16, 20, 24, 32, 48, 56
|
|
311
|
+
- Video card vertical rhythm: 0pt between thumbnail and metadata, 16pt bottom padding between cards
|
|
312
|
+
- Content margin: 0pt on thumbnails (full-width), 16pt on metadata text
|
|
313
|
+
- Comment row: 12pt vertical padding, 16pt leading
|
|
314
|
+
|
|
315
|
+
### Grid & Container
|
|
316
|
+
- Feed: single-column full-width on iPhone (cards stack vertically)
|
|
317
|
+
- iPad portrait: 2-column grid with 16pt gap
|
|
318
|
+
- iPad landscape: 3-column grid
|
|
319
|
+
- Shorts: always single-column, 9:16 full-viewport
|
|
320
|
+
- Filter chip row: horizontal scroll, no wrap
|
|
321
|
+
|
|
322
|
+
### Whitespace Philosophy
|
|
323
|
+
- **No outer padding on thumbnails**: Thumbnails bleed edge-to-edge for maximum visual weight
|
|
324
|
+
- **Generous between-card gaps**: 16pt vertical rhythm gives feed a breathable flow
|
|
325
|
+
- **Tight metadata density**: Channel row + title + metadata pack 3 pieces of info in ~56pt vertical space below the thumbnail
|
|
326
|
+
- **Shorts are immersive**: Zero chrome; the video IS the UI
|
|
327
|
+
|
|
328
|
+
### Border Radius Scale
|
|
329
|
+
- Square (0pt): Feed thumbnails — YouTube's signature hard edge
|
|
330
|
+
- Soft (4pt): Duration tag, LIVE pill, some legacy cards
|
|
331
|
+
- Standard (8pt): Some modal content, image previews
|
|
332
|
+
- Pronounced (12pt): Bottom sheet top corners
|
|
333
|
+
- Rounded Button (18pt): Subscribe, pill buttons in the action row, filter chips
|
|
334
|
+
- Full Pill (500pt): Search bar (modern), notification pills
|
|
335
|
+
- Circle (50%): Channel avatars, audio discs, close buttons
|
|
336
|
+
|
|
337
|
+
## 6. Depth & Elevation
|
|
338
|
+
|
|
339
|
+
| Level | Treatment | Use |
|
|
340
|
+
|-------|-----------|-----|
|
|
341
|
+
| Flat (Level 0) | No shadow | Feed cards, most UI |
|
|
342
|
+
| Card Lift | `rgba(0,0,0,0.08) 0 2px 8px` | Mini-player, elevated sheets |
|
|
343
|
+
| Player Chrome | `rgba(0,0,0,0.3) 0 0 40px` inset-ish gradient | Over video, darkens edges for control visibility |
|
|
344
|
+
| Sheet | `rgba(0,0,0,0.2) 0 -8px 24px` | Bottom sheets (share, comments, chapters) |
|
|
345
|
+
| Modal Dim | `rgba(0,0,0,0.6)` + no blur | Modal dimming behind sheets |
|
|
346
|
+
| Tab Bar Border | 1pt hairline top border `#E5E5E5` / `#303030` | Instead of shadow, YouTube uses a hairline |
|
|
347
|
+
|
|
348
|
+
**Shadow Philosophy**: YouTube is a mostly flat app. The only components that carry noticeable shadow are the mini-player (which needs to read as floating above content) and bottom sheets. Feed cards have no shadow — they're laid out flat on the canvas, separated only by whitespace. On Shorts, text overlays carry text shadow for legibility but UI buttons do not.
|
|
349
|
+
|
|
350
|
+
### Motion
|
|
351
|
+
- **Subscribe morph**: 200ms spring (damping 0.8) between red and gray states; success haptic on transition
|
|
352
|
+
- **Mini-player expand**: Shared-element transition on the 16:9 thumbnail, 0.35s spring, damping 0.8
|
|
353
|
+
- **Video card tap**: Light haptic; dim the card 0.95 opacity while loading
|
|
354
|
+
- **Like tap**: Thumbs-up fills, 1.0 → 1.15 → 1.0 bounce over 300ms, light haptic
|
|
355
|
+
- **Scrubber drag**: Haptic tick every 10% of progress; thumb scales 1.0 → 1.3 during drag
|
|
356
|
+
- **Shorts swipe**: 60fps vertical paging, 300ms spring (damping 0.85)
|
|
357
|
+
- **Double-tap seek**: Left side -10s, right side +10s, with a semi-transparent arc ripple overlay and "−10" / "+10" label
|
|
358
|
+
- **Comment heart-from-creator**: Appear with spring bounce + heart scale 0 → 1.2 → 1.0
|
|
359
|
+
|
|
360
|
+
## 7. Do's and Don'ts
|
|
361
|
+
|
|
362
|
+
### Do
|
|
363
|
+
- Use `#FFFFFF` as light canvas and `#0F0F0F` as dark — YouTube's signature "near-black," never pure black
|
|
364
|
+
- Reserve YouTube Red (`#FF0000`) for the Subscribe button, LIVE indicator, and logomark — nothing else
|
|
365
|
+
- Render video thumbnails at full screen width with NO corner radius — hard edges are the signature
|
|
366
|
+
- Place the duration tag in the bottom-right of every thumbnail, dark chip, white text
|
|
367
|
+
- Pair YouTube Sans (display) with Roboto (body) — keep the two in their lanes
|
|
368
|
+
- Use the gray "Subscribed" state after a user subscribes — never leave the red pill active
|
|
369
|
+
- Hide the dislike count (reflects 2021+ product decision)
|
|
370
|
+
- Use 18pt corner radius on Subscribe and action pills — YouTube's rounded-rect button shape
|
|
371
|
+
- Support full color inversion on selected filter chips (black bg / white text when active)
|
|
372
|
+
- Animate the mini-player with a shared-element transition from the full player
|
|
373
|
+
- Use heart-from-creator overlay for creator-highlighted comments — 20pt red heart with creator avatar
|
|
374
|
+
- Use haptics: light on Subscribe, light on like, success on share confirm
|
|
375
|
+
|
|
376
|
+
### Don't
|
|
377
|
+
- Don't use pure black `#000000` for dark canvas — `#0F0F0F` is the brand token (slightly warmer)
|
|
378
|
+
- Don't round thumbnail corners on the feed — hard edges are load-bearing aesthetic
|
|
379
|
+
- Don't use red on non-Subscribe actions — red is a brand element, not an action accent
|
|
380
|
+
- Don't display dislike counts publicly (post-2021 product decision)
|
|
381
|
+
- Don't use a full-pill corner on Subscribe — it's 18pt, not 500pt
|
|
382
|
+
- Don't use thin or light font weights — 400 / 500 / 700 only
|
|
383
|
+
- Don't forget the shadow on Shorts captions — text over video needs `rgba(0,0,0,0.5)` drop shadow
|
|
384
|
+
- Don't omit the duration tag — every thumbnail must show runtime
|
|
385
|
+
- Don't hide the mini-player when the user navigates away during playback — it's load-bearing UX
|
|
386
|
+
- Don't animate the Subscribe morph with a slide — it's an in-place color cross-fade
|
|
387
|
+
|
|
388
|
+
## 8. Responsive Behavior
|
|
389
|
+
|
|
390
|
+
### Device Sizes
|
|
391
|
+
| Device | Width | Key Changes |
|
|
392
|
+
|--------|-------|-------------|
|
|
393
|
+
| iPhone SE (3rd gen) | 375pt | Title clamp tighter, chip row shows 4 instead of 5 |
|
|
394
|
+
| iPhone 13/14/15 | 390pt | Standard card layout — 16:9 thumbnail ~219pt tall |
|
|
395
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in top nav |
|
|
396
|
+
| iPhone 15/16 Pro Max | 430pt | Thumbnail ~242pt tall, more metadata fits inline |
|
|
397
|
+
| iPad | 768pt+ | 2–3 column grid, mini-player pins to bottom-right corner |
|
|
398
|
+
|
|
399
|
+
### Dynamic Type
|
|
400
|
+
- Video titles, descriptions, comments: full scale
|
|
401
|
+
- Duration tag: **fixed** at 11pt (never scales — layout-sensitive)
|
|
402
|
+
- Subscribe button text: fixed at 14pt
|
|
403
|
+
- Tab labels: fixed at 10pt
|
|
404
|
+
- Shorts caption: fixed size (tight layout)
|
|
405
|
+
- Metadata row: scales to ~20% larger maximum to avoid wrapping
|
|
406
|
+
|
|
407
|
+
### Orientation
|
|
408
|
+
- Feed / Subscriptions / You: **portrait-locked**
|
|
409
|
+
- Video Detail: **rotates to landscape** — video goes fullscreen, controls overlay
|
|
410
|
+
- Shorts: **portrait-locked**
|
|
411
|
+
- Comments sheet: portrait-locked (would be weird in landscape)
|
|
412
|
+
|
|
413
|
+
### Touch Targets
|
|
414
|
+
- Subscribe: 36pt pill (hit area expanded to 44pt vertically)
|
|
415
|
+
- Video card: full card tappable (thumbnail + metadata as one touch target)
|
|
416
|
+
- Overflow icon: 44pt hit
|
|
417
|
+
- Player controls: 44pt each
|
|
418
|
+
- Shorts action icons: 32pt glyph with 48pt hit area
|
|
419
|
+
- Tab bar: 44pt hit
|
|
420
|
+
|
|
421
|
+
### Safe Area Handling
|
|
422
|
+
- Top: status bar / Dynamic Island respected by top app bar
|
|
423
|
+
- Bottom: tab bar respects home indicator; mini-player sits above both
|
|
424
|
+
- Video player (fullscreen landscape): ignores safe area for video content, respects for controls
|
|
425
|
+
- Shorts: respects safe area only for overlays; video extends edge-to-edge
|
|
426
|
+
|
|
427
|
+
## 9. Agent Prompt Guide
|
|
428
|
+
|
|
429
|
+
### Quick Color Reference
|
|
430
|
+
- Light canvas: `#FFFFFF`
|
|
431
|
+
- Dark canvas: `#0F0F0F`
|
|
432
|
+
- Surface 1 (light): `#F9F9F9`
|
|
433
|
+
- Surface 1 (dark): `#1F1F1F`
|
|
434
|
+
- Surface 2 (light): `#F2F2F2`
|
|
435
|
+
- Surface 2 (dark): `#272727`
|
|
436
|
+
- Divider (light): `#E5E5E5`
|
|
437
|
+
- Divider (dark): `#303030`
|
|
438
|
+
- Text primary (light): `#0F0F0F`
|
|
439
|
+
- Text primary (dark): `#FFFFFF`
|
|
440
|
+
- Text secondary (light): `#606060`
|
|
441
|
+
- Text secondary (dark): `#AAAAAA`
|
|
442
|
+
- YouTube Red: `#FF0000`
|
|
443
|
+
- Red pressed: `#CC0000`
|
|
444
|
+
- Info blue: `#3EA6FF`
|
|
445
|
+
|
|
446
|
+
### Example Component Prompts
|
|
447
|
+
- "Create a SwiftUI YouTube Subscribe button: 36pt tall rounded rectangle with 18pt corner radius, background `#FF0000`, text 'Subscribe' in Roboto 14pt weight 500 white. 8pt vertical / 16pt horizontal padding. On subscribe: morph background to `#F2F2F2` (light) or `#272727` (dark), text becomes 'Subscribed' in text-primary color, 200ms spring, fire light haptic. Add a trailing bell SF Symbol 16pt when subscribed."
|
|
448
|
+
- "Build a YouTube video card: full-width 16:9 thumbnail with NO corner radius and hard edges. Bottom-right of thumbnail: 'M:SS' duration tag on `rgba(0,0,0,0.75)` background, 4pt radius, white text Roboto 11pt weight 500. Below thumbnail: 12pt top padding, 16pt horizontal. 28pt channel avatar leading, then stack of title (Roboto 16pt weight 500, 2-line clamp) and metadata line ('Channel · 1.2M views · 3 days ago' in 13pt weight 400 `#606060`). Trailing: 24pt ellipsis icon."
|
|
449
|
+
- "Design the YouTube Shorts player: full-viewport 9:16 vertical video, overlays on top. Right rail (12pt from right): stacked creator avatar with `+` subscribe badge, thumbs-up 32pt white + count, thumbs-down 32pt (count hidden), comment 32pt + count, share 32pt, remix 32pt, and a 44pt rotating audio disc. Bottom-left (16pt from left): `@channel` 15pt weight 500 white, caption YouTube Sans 15pt weight 500 white with `rgba(0,0,0,0.5)` drop shadow, music marquee 13pt weight 400. Bottom progress bar: 2pt tall, track `rgba(255,255,255,0.3)`, fill white."
|
|
450
|
+
- "Build the YouTube mini-player: 72pt tall horizontal bar above the tab bar. 128×72pt 16:9 thumbnail leading, center column with video title 14pt weight 500 (1 line) and channel name 12pt weight 400 (1 line), trailing play/pause 20pt SF Symbol and close X 20pt. Background `#FFFFFF` light / `#1F1F1F` dark. Drag up: animate shared-element expansion into full player. Drag down 40pt+: dismiss."
|
|
451
|
+
- "Create the YouTube action pill row: horizontal scroll below video title on detail page. Each pill: 36pt tall capsule, background `#F2F2F2` light / `#272727` dark, 18pt radius, leading 20pt icon + trailing count label 13pt weight 500. Pills in order: Like (thumbs-up + '1.2K'), Dislike (thumbs-down, no count), Share, Remix, Download, Save. 8pt gap between pills."
|
|
452
|
+
- "Build the YouTube filter chip row on Home: horizontal scroll of 34pt-tall pills. Default chip: background `#F2F2F2` light / `#272727` dark, text `#0F0F0F` / `#FFFFFF` 14pt weight 400, 8pt vertical / 12pt horizontal padding, 500pt corner radius (full pill). Active chip: full color inversion — background becomes `#0F0F0F` / `#FFFFFF`, text becomes white / black. Tap: crossfade 200ms with selection haptic."
|
|
453
|
+
|
|
454
|
+
### Iteration Guide
|
|
455
|
+
1. Canvas is `#FFFFFF` in light and `#0F0F0F` in dark — never pure black
|
|
456
|
+
2. YouTube Red `#FF0000` is for the Subscribe button and brand marks (LIVE, logo, unread dots) — not a generic accent
|
|
457
|
+
3. Thumbnails bleed edge-to-edge with NO corner radius — hard edges are the signature
|
|
458
|
+
4. Duration tag is non-negotiable — every thumbnail shows its runtime in the bottom-right
|
|
459
|
+
5. Subscribe button uses 18pt corner radius (rounded rectangle, not full pill)
|
|
460
|
+
6. Typography: YouTube Sans (display) + Roboto (body), weights 400 / 500 / 700
|
|
461
|
+
7. After subscribing, the red morphs to gray — 200ms spring with haptic
|
|
462
|
+
8. Filter chips invert fully when selected (black bg / white text)
|
|
463
|
+
9. Dislike count is hidden (post-2021 decision)
|
|
464
|
+
10. Mini-player persists above the tab bar when user navigates during playback — load-bearing UX
|
|
465
|
+
11. Shorts is portrait-only 9:16 with floating overlays; Subscribe button appears as `+` on the avatar
|
|
466
|
+
12. Haptics: light on Subscribe / Like, success on share confirm, selection on filter chip
|