designmd-forge 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/__tests__/designStore.test.js +41 -0
- package/dist/__tests__/linter.test.js +23 -0
- package/dist/__tests__/sectionParser.test.js +60 -0
- package/dist/__tests__/server.test.js +129 -0
- package/dist/constants.js +12 -0
- package/dist/data/authoring-guide.md +113 -0
- package/dist/data/designs/airbnb.md +545 -0
- package/dist/data/designs/airtable.md +554 -0
- package/dist/data/designs/apple.md +562 -0
- package/dist/data/designs/binance.md +634 -0
- package/dist/data/designs/bmw-m.md +503 -0
- package/dist/data/designs/bmw.md +544 -0
- package/dist/data/designs/bugatti.md +454 -0
- package/dist/data/designs/cal.md +542 -0
- package/dist/data/designs/card-heavy.md +250 -0
- package/dist/data/designs/claude.md +589 -0
- package/dist/data/designs/clay.md +541 -0
- package/dist/data/designs/clickhouse.md +544 -0
- package/dist/data/designs/cohere.md +451 -0
- package/dist/data/designs/coinbase.md +570 -0
- package/dist/data/designs/composio.md +506 -0
- package/dist/data/designs/content-first.md +236 -0
- package/dist/data/designs/cursor.md +537 -0
- package/dist/data/designs/data-dashboard.md +300 -0
- package/dist/data/designs/dell-1996.md +632 -0
- package/dist/data/designs/elevenlabs.md +504 -0
- package/dist/data/designs/enterprise-neutral.md +252 -0
- package/dist/data/designs/expo.md +526 -0
- package/dist/data/designs/ferrari.md +531 -0
- package/dist/data/designs/figma.md +578 -0
- package/dist/data/designs/framer.md +544 -0
- package/dist/data/designs/hashicorp.md +575 -0
- package/dist/data/designs/hp.md +670 -0
- package/dist/data/designs/ibm.md +550 -0
- package/dist/data/designs/intercom.md +546 -0
- package/dist/data/designs/ios-acorns-android.md +430 -0
- package/dist/data/designs/ios-acorns-expo.md +381 -0
- package/dist/data/designs/ios-acorns-swiftui.md +378 -0
- package/dist/data/designs/ios-acorns.md +384 -0
- package/dist/data/designs/ios-airbnb-android.md +658 -0
- package/dist/data/designs/ios-airbnb-expo.md +457 -0
- package/dist/data/designs/ios-airbnb-swiftui.md +464 -0
- package/dist/data/designs/ios-airbnb.md +410 -0
- package/dist/data/designs/ios-alltrails-android.md +451 -0
- package/dist/data/designs/ios-alltrails-expo.md +400 -0
- package/dist/data/designs/ios-alltrails-swiftui.md +343 -0
- package/dist/data/designs/ios-alltrails.md +344 -0
- package/dist/data/designs/ios-amazon-android.md +686 -0
- package/dist/data/designs/ios-amazon-expo.md +433 -0
- package/dist/data/designs/ios-amazon-music-android.md +416 -0
- package/dist/data/designs/ios-amazon-music-expo.md +368 -0
- package/dist/data/designs/ios-amazon-music-swiftui.md +436 -0
- package/dist/data/designs/ios-amazon-music.md +389 -0
- package/dist/data/designs/ios-amazon-swiftui.md +460 -0
- package/dist/data/designs/ios-amazon.md +440 -0
- package/dist/data/designs/ios-apple-fitness-android.md +462 -0
- package/dist/data/designs/ios-apple-fitness-expo.md +373 -0
- package/dist/data/designs/ios-apple-fitness-swiftui.md +373 -0
- package/dist/data/designs/ios-apple-fitness.md +399 -0
- package/dist/data/designs/ios-apple-maps-android.md +646 -0
- package/dist/data/designs/ios-apple-maps-expo.md +557 -0
- package/dist/data/designs/ios-apple-maps-swiftui.md +588 -0
- package/dist/data/designs/ios-apple-maps.md +447 -0
- package/dist/data/designs/ios-apple-music-android.md +737 -0
- package/dist/data/designs/ios-apple-music-expo.md +596 -0
- package/dist/data/designs/ios-apple-music-swiftui.md +578 -0
- package/dist/data/designs/ios-apple-music.md +494 -0
- package/dist/data/designs/ios-apple-notes-android.md +675 -0
- package/dist/data/designs/ios-apple-notes-expo.md +468 -0
- package/dist/data/designs/ios-apple-notes-swiftui.md +489 -0
- package/dist/data/designs/ios-apple-notes.md +413 -0
- package/dist/data/designs/ios-apple-tv-android.md +405 -0
- package/dist/data/designs/ios-apple-tv-expo.md +341 -0
- package/dist/data/designs/ios-apple-tv-swiftui.md +348 -0
- package/dist/data/designs/ios-apple-tv.md +390 -0
- package/dist/data/designs/ios-apple-wallet-android.md +617 -0
- package/dist/data/designs/ios-apple-wallet-expo.md +487 -0
- package/dist/data/designs/ios-apple-wallet-swiftui.md +425 -0
- package/dist/data/designs/ios-apple-wallet.md +360 -0
- package/dist/data/designs/ios-asana-android.md +435 -0
- package/dist/data/designs/ios-asana-expo.md +411 -0
- package/dist/data/designs/ios-asana-swiftui.md +416 -0
- package/dist/data/designs/ios-asana.md +433 -0
- package/dist/data/designs/ios-audible-android.md +450 -0
- package/dist/data/designs/ios-audible-expo.md +328 -0
- package/dist/data/designs/ios-audible-swiftui.md +418 -0
- package/dist/data/designs/ios-audible.md +364 -0
- package/dist/data/designs/ios-bandcamp-android.md +471 -0
- package/dist/data/designs/ios-bandcamp-expo.md +378 -0
- package/dist/data/designs/ios-bandcamp-swiftui.md +374 -0
- package/dist/data/designs/ios-bandcamp.md +372 -0
- package/dist/data/designs/ios-bear-android.md +496 -0
- package/dist/data/designs/ios-bear-expo.md +449 -0
- package/dist/data/designs/ios-bear-swiftui.md +479 -0
- package/dist/data/designs/ios-bear.md +412 -0
- package/dist/data/designs/ios-bereal-android.md +392 -0
- package/dist/data/designs/ios-bereal-expo.md +299 -0
- package/dist/data/designs/ios-bereal-swiftui.md +319 -0
- package/dist/data/designs/ios-bereal.md +336 -0
- package/dist/data/designs/ios-binance-android.md +481 -0
- package/dist/data/designs/ios-binance-expo.md +404 -0
- package/dist/data/designs/ios-binance-swiftui.md +418 -0
- package/dist/data/designs/ios-binance.md +410 -0
- package/dist/data/designs/ios-bluesky-android.md +442 -0
- package/dist/data/designs/ios-bluesky-expo.md +362 -0
- package/dist/data/designs/ios-bluesky-swiftui.md +328 -0
- package/dist/data/designs/ios-bluesky.md +338 -0
- package/dist/data/designs/ios-booking-android.md +471 -0
- package/dist/data/designs/ios-booking-expo.md +364 -0
- package/dist/data/designs/ios-booking-swiftui.md +377 -0
- package/dist/data/designs/ios-booking.md +346 -0
- package/dist/data/designs/ios-bumble-android.md +756 -0
- package/dist/data/designs/ios-bumble-expo.md +629 -0
- package/dist/data/designs/ios-bumble-swiftui.md +546 -0
- package/dist/data/designs/ios-bumble.md +424 -0
- package/dist/data/designs/ios-cal-ai-android.md +664 -0
- package/dist/data/designs/ios-cal-ai-expo.md +415 -0
- package/dist/data/designs/ios-cal-ai-swiftui.md +486 -0
- package/dist/data/designs/ios-cal-ai.md +387 -0
- package/dist/data/designs/ios-calm-android.md +431 -0
- package/dist/data/designs/ios-calm-expo.md +384 -0
- package/dist/data/designs/ios-calm-swiftui.md +327 -0
- package/dist/data/designs/ios-calm.md +356 -0
- package/dist/data/designs/ios-canva-android.md +469 -0
- package/dist/data/designs/ios-canva-expo.md +374 -0
- package/dist/data/designs/ios-canva-swiftui.md +422 -0
- package/dist/data/designs/ios-canva.md +395 -0
- package/dist/data/designs/ios-cash-app-android.md +601 -0
- package/dist/data/designs/ios-cash-app-expo.md +453 -0
- package/dist/data/designs/ios-cash-app-swiftui.md +463 -0
- package/dist/data/designs/ios-cash-app.md +365 -0
- package/dist/data/designs/ios-character-ai-android.md +489 -0
- package/dist/data/designs/ios-character-ai-expo.md +420 -0
- package/dist/data/designs/ios-character-ai-swiftui.md +417 -0
- package/dist/data/designs/ios-character-ai.md +392 -0
- package/dist/data/designs/ios-charles-schwab-android.md +454 -0
- package/dist/data/designs/ios-charles-schwab-expo.md +388 -0
- package/dist/data/designs/ios-charles-schwab-swiftui.md +394 -0
- package/dist/data/designs/ios-charles-schwab.md +380 -0
- package/dist/data/designs/ios-chatgpt-android.md +753 -0
- package/dist/data/designs/ios-chatgpt-expo.md +644 -0
- package/dist/data/designs/ios-chatgpt-swiftui.md +653 -0
- package/dist/data/designs/ios-chatgpt.md +466 -0
- package/dist/data/designs/ios-chime-android.md +438 -0
- package/dist/data/designs/ios-chime-expo.md +419 -0
- package/dist/data/designs/ios-chime-swiftui.md +383 -0
- package/dist/data/designs/ios-chime.md +389 -0
- package/dist/data/designs/ios-chipotle-android.md +397 -0
- package/dist/data/designs/ios-chipotle-expo.md +301 -0
- package/dist/data/designs/ios-chipotle-swiftui.md +345 -0
- package/dist/data/designs/ios-chipotle.md +340 -0
- package/dist/data/designs/ios-citymapper-android.md +466 -0
- package/dist/data/designs/ios-citymapper-expo.md +420 -0
- package/dist/data/designs/ios-citymapper-swiftui.md +424 -0
- package/dist/data/designs/ios-citymapper.md +394 -0
- package/dist/data/designs/ios-claude-android.md +625 -0
- package/dist/data/designs/ios-claude-expo.md +671 -0
- package/dist/data/designs/ios-claude-swiftui.md +649 -0
- package/dist/data/designs/ios-claude.md +447 -0
- package/dist/data/designs/ios-clickup-android.md +484 -0
- package/dist/data/designs/ios-clickup-expo.md +423 -0
- package/dist/data/designs/ios-clickup-swiftui.md +416 -0
- package/dist/data/designs/ios-clickup.md +431 -0
- package/dist/data/designs/ios-clubhouse-android.md +524 -0
- package/dist/data/designs/ios-clubhouse-expo.md +425 -0
- package/dist/data/designs/ios-clubhouse-swiftui.md +447 -0
- package/dist/data/designs/ios-clubhouse.md +406 -0
- package/dist/data/designs/ios-coffee-meets-bagel-android.md +461 -0
- package/dist/data/designs/ios-coffee-meets-bagel-expo.md +372 -0
- package/dist/data/designs/ios-coffee-meets-bagel-swiftui.md +368 -0
- package/dist/data/designs/ios-coffee-meets-bagel.md +376 -0
- package/dist/data/designs/ios-coinbase-android.md +611 -0
- package/dist/data/designs/ios-coinbase-expo.md +500 -0
- package/dist/data/designs/ios-coinbase-swiftui.md +490 -0
- package/dist/data/designs/ios-coinbase.md +409 -0
- package/dist/data/designs/ios-copilot-android.md +625 -0
- package/dist/data/designs/ios-copilot-expo.md +423 -0
- package/dist/data/designs/ios-copilot-swiftui.md +471 -0
- package/dist/data/designs/ios-copilot.md +367 -0
- package/dist/data/designs/ios-craft-android.md +459 -0
- package/dist/data/designs/ios-craft-expo.md +417 -0
- package/dist/data/designs/ios-craft-swiftui.md +449 -0
- package/dist/data/designs/ios-craft.md +449 -0
- package/dist/data/designs/ios-crunchyroll-android.md +432 -0
- package/dist/data/designs/ios-crunchyroll-expo.md +388 -0
- package/dist/data/designs/ios-crunchyroll-swiftui.md +417 -0
- package/dist/data/designs/ios-crunchyroll.md +388 -0
- package/dist/data/designs/ios-crypto-com-android.md +461 -0
- package/dist/data/designs/ios-crypto-com-expo.md +404 -0
- package/dist/data/designs/ios-crypto-com-swiftui.md +419 -0
- package/dist/data/designs/ios-crypto-com.md +410 -0
- package/dist/data/designs/ios-deepseek-android.md +471 -0
- package/dist/data/designs/ios-deepseek-expo.md +391 -0
- package/dist/data/designs/ios-deepseek-swiftui.md +354 -0
- package/dist/data/designs/ios-deepseek.md +393 -0
- package/dist/data/designs/ios-deezer-android.md +475 -0
- package/dist/data/designs/ios-deezer-expo.md +400 -0
- package/dist/data/designs/ios-deezer-swiftui.md +430 -0
- package/dist/data/designs/ios-deezer.md +388 -0
- package/dist/data/designs/ios-deliveroo-android.md +493 -0
- package/dist/data/designs/ios-deliveroo-expo.md +424 -0
- package/dist/data/designs/ios-deliveroo-swiftui.md +398 -0
- package/dist/data/designs/ios-deliveroo.md +420 -0
- package/dist/data/designs/ios-delta-android.md +439 -0
- package/dist/data/designs/ios-delta-expo.md +381 -0
- package/dist/data/designs/ios-delta-swiftui.md +400 -0
- package/dist/data/designs/ios-delta.md +397 -0
- package/dist/data/designs/ios-discord-android.md +611 -0
- package/dist/data/designs/ios-discord-expo.md +618 -0
- package/dist/data/designs/ios-discord-swiftui.md +630 -0
- package/dist/data/designs/ios-discord.md +451 -0
- package/dist/data/designs/ios-disney-plus-android.md +464 -0
- package/dist/data/designs/ios-disney-plus-expo.md +358 -0
- package/dist/data/designs/ios-disney-plus-swiftui.md +412 -0
- package/dist/data/designs/ios-disney-plus.md +355 -0
- package/dist/data/designs/ios-dominos-android.md +417 -0
- package/dist/data/designs/ios-dominos-expo.md +316 -0
- package/dist/data/designs/ios-dominos-swiftui.md +340 -0
- package/dist/data/designs/ios-dominos.md +347 -0
- package/dist/data/designs/ios-doordash-android.md +527 -0
- package/dist/data/designs/ios-doordash-expo.md +323 -0
- package/dist/data/designs/ios-doordash-swiftui.md +301 -0
- package/dist/data/designs/ios-doordash.md +393 -0
- package/dist/data/designs/ios-dropbox-android.md +522 -0
- package/dist/data/designs/ios-dropbox-expo.md +393 -0
- package/dist/data/designs/ios-dropbox-swiftui.md +400 -0
- package/dist/data/designs/ios-dropbox.md +374 -0
- package/dist/data/designs/ios-duolingo-android.md +641 -0
- package/dist/data/designs/ios-duolingo-expo.md +597 -0
- package/dist/data/designs/ios-duolingo-swiftui.md +539 -0
- package/dist/data/designs/ios-duolingo.md +409 -0
- package/dist/data/designs/ios-ebay-android.md +436 -0
- package/dist/data/designs/ios-ebay-expo.md +344 -0
- package/dist/data/designs/ios-ebay-swiftui.md +308 -0
- package/dist/data/designs/ios-ebay.md +355 -0
- package/dist/data/designs/ios-espn-android.md +468 -0
- package/dist/data/designs/ios-espn-expo.md +387 -0
- package/dist/data/designs/ios-espn-swiftui.md +410 -0
- package/dist/data/designs/ios-espn.md +384 -0
- package/dist/data/designs/ios-etsy-android.md +439 -0
- package/dist/data/designs/ios-etsy-expo.md +351 -0
- package/dist/data/designs/ios-etsy-swiftui.md +296 -0
- package/dist/data/designs/ios-etsy.md +355 -0
- package/dist/data/designs/ios-evernote-android.md +419 -0
- package/dist/data/designs/ios-evernote-expo.md +379 -0
- package/dist/data/designs/ios-evernote-swiftui.md +380 -0
- package/dist/data/designs/ios-evernote.md +416 -0
- package/dist/data/designs/ios-expedia-android.md +451 -0
- package/dist/data/designs/ios-expedia-expo.md +433 -0
- package/dist/data/designs/ios-expedia-swiftui.md +399 -0
- package/dist/data/designs/ios-expedia.md +431 -0
- package/dist/data/designs/ios-facebook-android.md +628 -0
- package/dist/data/designs/ios-facebook-expo.md +471 -0
- package/dist/data/designs/ios-facebook-swiftui.md +459 -0
- package/dist/data/designs/ios-facebook.md +452 -0
- package/dist/data/designs/ios-feeld-android.md +431 -0
- package/dist/data/designs/ios-feeld-expo.md +379 -0
- package/dist/data/designs/ios-feeld-swiftui.md +401 -0
- package/dist/data/designs/ios-feeld.md +378 -0
- package/dist/data/designs/ios-fidelity-android.md +426 -0
- package/dist/data/designs/ios-fidelity-expo.md +396 -0
- package/dist/data/designs/ios-fidelity-swiftui.md +398 -0
- package/dist/data/designs/ios-fidelity.md +387 -0
- package/dist/data/designs/ios-figma-android.md +578 -0
- package/dist/data/designs/ios-figma-expo.md +504 -0
- package/dist/data/designs/ios-figma-swiftui.md +542 -0
- package/dist/data/designs/ios-figma.md +404 -0
- package/dist/data/designs/ios-fitbit-android.md +439 -0
- package/dist/data/designs/ios-fitbit-expo.md +389 -0
- package/dist/data/designs/ios-fitbit-swiftui.md +380 -0
- package/dist/data/designs/ios-fitbit.md +396 -0
- package/dist/data/designs/ios-flickr-android.md +506 -0
- package/dist/data/designs/ios-flickr-expo.md +434 -0
- package/dist/data/designs/ios-flickr-swiftui.md +421 -0
- package/dist/data/designs/ios-flickr.md +394 -0
- package/dist/data/designs/ios-flighty-android.md +418 -0
- package/dist/data/designs/ios-flighty-expo.md +353 -0
- package/dist/data/designs/ios-flighty-swiftui.md +337 -0
- package/dist/data/designs/ios-flighty.md +357 -0
- package/dist/data/designs/ios-flo-android.md +447 -0
- package/dist/data/designs/ios-flo-expo.md +363 -0
- package/dist/data/designs/ios-flo-swiftui.md +355 -0
- package/dist/data/designs/ios-flo.md +351 -0
- package/dist/data/designs/ios-garmin-connect-android.md +531 -0
- package/dist/data/designs/ios-garmin-connect-expo.md +429 -0
- package/dist/data/designs/ios-garmin-connect-swiftui.md +459 -0
- package/dist/data/designs/ios-garmin-connect.md +419 -0
- package/dist/data/designs/ios-gas-android.md +438 -0
- package/dist/data/designs/ios-gas-expo.md +350 -0
- package/dist/data/designs/ios-gas-swiftui.md +329 -0
- package/dist/data/designs/ios-gas.md +387 -0
- package/dist/data/designs/ios-gemini-android.md +568 -0
- package/dist/data/designs/ios-gemini-expo.md +416 -0
- package/dist/data/designs/ios-gemini-swiftui.md +424 -0
- package/dist/data/designs/ios-gemini.md +351 -0
- package/dist/data/designs/ios-github-android.md +507 -0
- package/dist/data/designs/ios-github-expo.md +486 -0
- package/dist/data/designs/ios-github-swiftui.md +459 -0
- package/dist/data/designs/ios-github.md +394 -0
- package/dist/data/designs/ios-gmail-android.md +548 -0
- package/dist/data/designs/ios-gmail-expo.md +457 -0
- package/dist/data/designs/ios-gmail-swiftui.md +470 -0
- package/dist/data/designs/ios-gmail.md +441 -0
- package/dist/data/designs/ios-goodreads-android.md +436 -0
- package/dist/data/designs/ios-goodreads-expo.md +407 -0
- package/dist/data/designs/ios-goodreads-swiftui.md +378 -0
- package/dist/data/designs/ios-goodreads.md +385 -0
- package/dist/data/designs/ios-google-calendar-android.md +565 -0
- package/dist/data/designs/ios-google-calendar-expo.md +616 -0
- package/dist/data/designs/ios-google-calendar-swiftui.md +585 -0
- package/dist/data/designs/ios-google-calendar.md +431 -0
- package/dist/data/designs/ios-google-maps-android.md +614 -0
- package/dist/data/designs/ios-google-maps-expo.md +515 -0
- package/dist/data/designs/ios-google-maps-swiftui.md +484 -0
- package/dist/data/designs/ios-google-maps.md +451 -0
- package/dist/data/designs/ios-grammarly-android.md +449 -0
- package/dist/data/designs/ios-grammarly-expo.md +383 -0
- package/dist/data/designs/ios-grammarly-swiftui.md +381 -0
- package/dist/data/designs/ios-grammarly.md +392 -0
- package/dist/data/designs/ios-grindr-android.md +494 -0
- package/dist/data/designs/ios-grindr-expo.md +358 -0
- package/dist/data/designs/ios-grindr-swiftui.md +357 -0
- package/dist/data/designs/ios-grindr.md +356 -0
- package/dist/data/designs/ios-grok-android.md +471 -0
- package/dist/data/designs/ios-grok-expo.md +388 -0
- package/dist/data/designs/ios-grok-swiftui.md +397 -0
- package/dist/data/designs/ios-grok.md +357 -0
- package/dist/data/designs/ios-groupme-android.md +551 -0
- package/dist/data/designs/ios-groupme-expo.md +442 -0
- package/dist/data/designs/ios-groupme-swiftui.md +439 -0
- package/dist/data/designs/ios-groupme.md +424 -0
- package/dist/data/designs/ios-grubhub-android.md +506 -0
- package/dist/data/designs/ios-grubhub-expo.md +428 -0
- package/dist/data/designs/ios-grubhub-swiftui.md +408 -0
- package/dist/data/designs/ios-grubhub.md +427 -0
- package/dist/data/designs/ios-happn-android.md +464 -0
- package/dist/data/designs/ios-happn-expo.md +411 -0
- package/dist/data/designs/ios-happn-swiftui.md +401 -0
- package/dist/data/designs/ios-happn.md +400 -0
- package/dist/data/designs/ios-headspace-android.md +688 -0
- package/dist/data/designs/ios-headspace-expo.md +574 -0
- package/dist/data/designs/ios-headspace-swiftui.md +498 -0
- package/dist/data/designs/ios-headspace.md +430 -0
- package/dist/data/designs/ios-hevy-android.md +473 -0
- package/dist/data/designs/ios-hevy-expo.md +405 -0
- package/dist/data/designs/ios-hevy-swiftui.md +367 -0
- package/dist/data/designs/ios-hevy.md +410 -0
- package/dist/data/designs/ios-hinge-android.md +743 -0
- package/dist/data/designs/ios-hinge-expo.md +580 -0
- package/dist/data/designs/ios-hinge-swiftui.md +512 -0
- package/dist/data/designs/ios-hinge.md +405 -0
- package/dist/data/designs/ios-hopper-android.md +440 -0
- package/dist/data/designs/ios-hopper-expo.md +353 -0
- package/dist/data/designs/ios-hopper-swiftui.md +340 -0
- package/dist/data/designs/ios-hopper.md +354 -0
- package/dist/data/designs/ios-hulu-android.md +435 -0
- package/dist/data/designs/ios-hulu-expo.md +331 -0
- package/dist/data/designs/ios-hulu-swiftui.md +374 -0
- package/dist/data/designs/ios-hulu.md +353 -0
- package/dist/data/designs/ios-iheartradio-android.md +481 -0
- package/dist/data/designs/ios-iheartradio-expo.md +417 -0
- package/dist/data/designs/ios-iheartradio-swiftui.md +423 -0
- package/dist/data/designs/ios-iheartradio.md +381 -0
- package/dist/data/designs/ios-imessage-android.md +426 -0
- package/dist/data/designs/ios-imessage-expo.md +384 -0
- package/dist/data/designs/ios-imessage-swiftui.md +378 -0
- package/dist/data/designs/ios-imessage.md +394 -0
- package/dist/data/designs/ios-instacart-android.md +471 -0
- package/dist/data/designs/ios-instacart-expo.md +349 -0
- package/dist/data/designs/ios-instacart-swiftui.md +378 -0
- package/dist/data/designs/ios-instacart.md +360 -0
- package/dist/data/designs/ios-instagram-android.md +646 -0
- package/dist/data/designs/ios-instagram-expo.md +310 -0
- package/dist/data/designs/ios-instagram-swiftui.md +333 -0
- package/dist/data/designs/ios-instagram.md +376 -0
- package/dist/data/designs/ios-jira-android.md +432 -0
- package/dist/data/designs/ios-jira-expo.md +375 -0
- package/dist/data/designs/ios-jira-swiftui.md +433 -0
- package/dist/data/designs/ios-jira.md +424 -0
- package/dist/data/designs/ios-kakaotalk-android.md +491 -0
- package/dist/data/designs/ios-kakaotalk-expo.md +418 -0
- package/dist/data/designs/ios-kakaotalk-swiftui.md +406 -0
- package/dist/data/designs/ios-kakaotalk.md +414 -0
- package/dist/data/designs/ios-kayak-android.md +466 -0
- package/dist/data/designs/ios-kayak-expo.md +407 -0
- package/dist/data/designs/ios-kayak-swiftui.md +426 -0
- package/dist/data/designs/ios-kayak.md +392 -0
- package/dist/data/designs/ios-kick-android.md +487 -0
- package/dist/data/designs/ios-kick-expo.md +434 -0
- package/dist/data/designs/ios-kick-swiftui.md +429 -0
- package/dist/data/designs/ios-kick.md +389 -0
- package/dist/data/designs/ios-kik-android.md +433 -0
- package/dist/data/designs/ios-kik-expo.md +363 -0
- package/dist/data/designs/ios-kik-swiftui.md +363 -0
- package/dist/data/designs/ios-kik.md +392 -0
- package/dist/data/designs/ios-kindle-android.md +439 -0
- package/dist/data/designs/ios-kindle-expo.md +356 -0
- package/dist/data/designs/ios-kindle-swiftui.md +372 -0
- package/dist/data/designs/ios-kindle.md +369 -0
- package/dist/data/designs/ios-klarna-android.md +420 -0
- package/dist/data/designs/ios-klarna-expo.md +349 -0
- package/dist/data/designs/ios-klarna-swiftui.md +360 -0
- package/dist/data/designs/ios-klarna.md +356 -0
- package/dist/data/designs/ios-lemon8-android.md +492 -0
- package/dist/data/designs/ios-lemon8-expo.md +413 -0
- package/dist/data/designs/ios-lemon8-swiftui.md +428 -0
- package/dist/data/designs/ios-lemon8.md +378 -0
- package/dist/data/designs/ios-life360-android.md +474 -0
- package/dist/data/designs/ios-life360-expo.md +375 -0
- package/dist/data/designs/ios-life360-swiftui.md +390 -0
- package/dist/data/designs/ios-life360.md +402 -0
- package/dist/data/designs/ios-line-android.md +517 -0
- package/dist/data/designs/ios-line-expo.md +402 -0
- package/dist/data/designs/ios-line-swiftui.md +361 -0
- package/dist/data/designs/ios-line.md +362 -0
- package/dist/data/designs/ios-linear-android.md +457 -0
- package/dist/data/designs/ios-linear-expo.md +367 -0
- package/dist/data/designs/ios-linear-swiftui.md +401 -0
- package/dist/data/designs/ios-linear.md +368 -0
- package/dist/data/designs/ios-linkedin-android.md +620 -0
- package/dist/data/designs/ios-linkedin-expo.md +469 -0
- package/dist/data/designs/ios-linkedin-swiftui.md +472 -0
- package/dist/data/designs/ios-linkedin.md +444 -0
- package/dist/data/designs/ios-locket-android.md +500 -0
- package/dist/data/designs/ios-locket-expo.md +375 -0
- package/dist/data/designs/ios-locket-swiftui.md +375 -0
- package/dist/data/designs/ios-locket.md +381 -0
- package/dist/data/designs/ios-lyft-android.md +406 -0
- package/dist/data/designs/ios-lyft-expo.md +333 -0
- package/dist/data/designs/ios-lyft-swiftui.md +315 -0
- package/dist/data/designs/ios-lyft.md +337 -0
- package/dist/data/designs/ios-marriott-bonvoy-android.md +488 -0
- package/dist/data/designs/ios-marriott-bonvoy-expo.md +412 -0
- package/dist/data/designs/ios-marriott-bonvoy-swiftui.md +461 -0
- package/dist/data/designs/ios-marriott-bonvoy.md +379 -0
- package/dist/data/designs/ios-mastodon-android.md +476 -0
- package/dist/data/designs/ios-mastodon-expo.md +379 -0
- package/dist/data/designs/ios-mastodon-swiftui.md +349 -0
- package/dist/data/designs/ios-mastodon.md +337 -0
- package/dist/data/designs/ios-match-android.md +496 -0
- package/dist/data/designs/ios-match-expo.md +393 -0
- package/dist/data/designs/ios-match-swiftui.md +450 -0
- package/dist/data/designs/ios-match.md +382 -0
- package/dist/data/designs/ios-max-android.md +454 -0
- package/dist/data/designs/ios-max-expo.md +342 -0
- package/dist/data/designs/ios-max-swiftui.md +332 -0
- package/dist/data/designs/ios-max.md +352 -0
- package/dist/data/designs/ios-mcdonalds-android.md +497 -0
- package/dist/data/designs/ios-mcdonalds-expo.md +382 -0
- package/dist/data/designs/ios-mcdonalds-swiftui.md +394 -0
- package/dist/data/designs/ios-mcdonalds.md +410 -0
- package/dist/data/designs/ios-messenger-android.md +523 -0
- package/dist/data/designs/ios-messenger-expo.md +379 -0
- package/dist/data/designs/ios-messenger-swiftui.md +369 -0
- package/dist/data/designs/ios-messenger.md +361 -0
- package/dist/data/designs/ios-microsoft-teams-android.md +446 -0
- package/dist/data/designs/ios-microsoft-teams-expo.md +362 -0
- package/dist/data/designs/ios-microsoft-teams-swiftui.md +384 -0
- package/dist/data/designs/ios-microsoft-teams.md +359 -0
- package/dist/data/designs/ios-midjourney-android.md +503 -0
- package/dist/data/designs/ios-midjourney-expo.md +406 -0
- package/dist/data/designs/ios-midjourney-swiftui.md +376 -0
- package/dist/data/designs/ios-midjourney.md +407 -0
- package/dist/data/designs/ios-miro-android.md +475 -0
- package/dist/data/designs/ios-miro-expo.md +421 -0
- package/dist/data/designs/ios-miro-swiftui.md +407 -0
- package/dist/data/designs/ios-miro.md +424 -0
- package/dist/data/designs/ios-monday-android.md +426 -0
- package/dist/data/designs/ios-monday-expo.md +382 -0
- package/dist/data/designs/ios-monday-swiftui.md +386 -0
- package/dist/data/designs/ios-monday.md +415 -0
- package/dist/data/designs/ios-monzo-android.md +423 -0
- package/dist/data/designs/ios-monzo-expo.md +391 -0
- package/dist/data/designs/ios-monzo-swiftui.md +371 -0
- package/dist/data/designs/ios-monzo.md +382 -0
- package/dist/data/designs/ios-myfitnesspal-android.md +631 -0
- package/dist/data/designs/ios-myfitnesspal-expo.md +489 -0
- package/dist/data/designs/ios-myfitnesspal-swiftui.md +500 -0
- package/dist/data/designs/ios-myfitnesspal.md +408 -0
- package/dist/data/designs/ios-netflix-android.md +570 -0
- package/dist/data/designs/ios-netflix-expo.md +528 -0
- package/dist/data/designs/ios-netflix-swiftui.md +543 -0
- package/dist/data/designs/ios-netflix.md +476 -0
- package/dist/data/designs/ios-nextdoor-android.md +399 -0
- package/dist/data/designs/ios-nextdoor-expo.md +317 -0
- package/dist/data/designs/ios-nextdoor-swiftui.md +343 -0
- package/dist/data/designs/ios-nextdoor.md +332 -0
- package/dist/data/designs/ios-nike-run-club-android.md +598 -0
- package/dist/data/designs/ios-nike-run-club-expo.md +459 -0
- package/dist/data/designs/ios-nike-run-club-swiftui.md +474 -0
- package/dist/data/designs/ios-nike-run-club.md +400 -0
- package/dist/data/designs/ios-noom-android.md +455 -0
- package/dist/data/designs/ios-noom-expo.md +362 -0
- package/dist/data/designs/ios-noom-swiftui.md +369 -0
- package/dist/data/designs/ios-noom.md +404 -0
- package/dist/data/designs/ios-notion-android.md +575 -0
- package/dist/data/designs/ios-notion-expo.md +543 -0
- package/dist/data/designs/ios-notion-swiftui.md +562 -0
- package/dist/data/designs/ios-notion.md +506 -0
- package/dist/data/designs/ios-nubank-android.md +447 -0
- package/dist/data/designs/ios-nubank-expo.md +391 -0
- package/dist/data/designs/ios-nubank-swiftui.md +391 -0
- package/dist/data/designs/ios-nubank.md +388 -0
- package/dist/data/designs/ios-obsidian-android.md +456 -0
- package/dist/data/designs/ios-obsidian-expo.md +401 -0
- package/dist/data/designs/ios-obsidian-swiftui.md +412 -0
- package/dist/data/designs/ios-obsidian.md +363 -0
- package/dist/data/designs/ios-okcupid-android.md +496 -0
- package/dist/data/designs/ios-okcupid-expo.md +378 -0
- package/dist/data/designs/ios-okcupid-swiftui.md +343 -0
- package/dist/data/designs/ios-okcupid.md +364 -0
- package/dist/data/designs/ios-opentable-android.md +426 -0
- package/dist/data/designs/ios-opentable-expo.md +350 -0
- package/dist/data/designs/ios-opentable-swiftui.md +328 -0
- package/dist/data/designs/ios-opentable.md +411 -0
- package/dist/data/designs/ios-oura-android.md +426 -0
- package/dist/data/designs/ios-oura-expo.md +353 -0
- package/dist/data/designs/ios-oura-swiftui.md +327 -0
- package/dist/data/designs/ios-oura.md +356 -0
- package/dist/data/designs/ios-overcast-android.md +508 -0
- package/dist/data/designs/ios-overcast-expo.md +420 -0
- package/dist/data/designs/ios-overcast-swiftui.md +427 -0
- package/dist/data/designs/ios-overcast.md +414 -0
- package/dist/data/designs/ios-pandora-android.md +477 -0
- package/dist/data/designs/ios-pandora-expo.md +406 -0
- package/dist/data/designs/ios-pandora-swiftui.md +413 -0
- package/dist/data/designs/ios-pandora.md +366 -0
- package/dist/data/designs/ios-panera-android.md +414 -0
- package/dist/data/designs/ios-panera-expo.md +352 -0
- package/dist/data/designs/ios-panera-swiftui.md +369 -0
- package/dist/data/designs/ios-panera.md +412 -0
- package/dist/data/designs/ios-paramount-plus-android.md +415 -0
- package/dist/data/designs/ios-paramount-plus-expo.md +363 -0
- package/dist/data/designs/ios-paramount-plus-swiftui.md +372 -0
- package/dist/data/designs/ios-paramount-plus.md +400 -0
- package/dist/data/designs/ios-paypal-android.md +535 -0
- package/dist/data/designs/ios-paypal-expo.md +429 -0
- package/dist/data/designs/ios-paypal-swiftui.md +466 -0
- package/dist/data/designs/ios-paypal.md +393 -0
- package/dist/data/designs/ios-peacock-android.md +453 -0
- package/dist/data/designs/ios-peacock-expo.md +393 -0
- package/dist/data/designs/ios-peacock-swiftui.md +420 -0
- package/dist/data/designs/ios-peacock.md +411 -0
- package/dist/data/designs/ios-peloton-android.md +470 -0
- package/dist/data/designs/ios-peloton-expo.md +401 -0
- package/dist/data/designs/ios-peloton-swiftui.md +409 -0
- package/dist/data/designs/ios-peloton.md +415 -0
- package/dist/data/designs/ios-perplexity-android.md +553 -0
- package/dist/data/designs/ios-perplexity-expo.md +703 -0
- package/dist/data/designs/ios-perplexity-swiftui.md +602 -0
- package/dist/data/designs/ios-perplexity.md +453 -0
- package/dist/data/designs/ios-pinterest-android.md +551 -0
- package/dist/data/designs/ios-pinterest-expo.md +466 -0
- package/dist/data/designs/ios-pinterest-swiftui.md +464 -0
- package/dist/data/designs/ios-pinterest.md +427 -0
- package/dist/data/designs/ios-plenty-of-fish-android.md +462 -0
- package/dist/data/designs/ios-plenty-of-fish-expo.md +380 -0
- package/dist/data/designs/ios-plenty-of-fish-swiftui.md +429 -0
- package/dist/data/designs/ios-plenty-of-fish.md +387 -0
- package/dist/data/designs/ios-plex-android.md +403 -0
- package/dist/data/designs/ios-plex-expo.md +333 -0
- package/dist/data/designs/ios-plex-swiftui.md +349 -0
- package/dist/data/designs/ios-plex.md +379 -0
- package/dist/data/designs/ios-pluto-tv-android.md +413 -0
- package/dist/data/designs/ios-pluto-tv-expo.md +379 -0
- package/dist/data/designs/ios-pluto-tv-swiftui.md +411 -0
- package/dist/data/designs/ios-pluto-tv.md +362 -0
- package/dist/data/designs/ios-pocket-casts-android.md +492 -0
- package/dist/data/designs/ios-pocket-casts-expo.md +430 -0
- package/dist/data/designs/ios-pocket-casts-swiftui.md +479 -0
- package/dist/data/designs/ios-pocket-casts.md +427 -0
- package/dist/data/designs/ios-postman-android.md +472 -0
- package/dist/data/designs/ios-postman-expo.md +372 -0
- package/dist/data/designs/ios-postman-swiftui.md +377 -0
- package/dist/data/designs/ios-postman.md +405 -0
- package/dist/data/designs/ios-prime-video-android.md +447 -0
- package/dist/data/designs/ios-prime-video-expo.md +365 -0
- package/dist/data/designs/ios-prime-video-swiftui.md +333 -0
- package/dist/data/designs/ios-prime-video.md +351 -0
- package/dist/data/designs/ios-quora-android.md +513 -0
- package/dist/data/designs/ios-quora-expo.md +362 -0
- package/dist/data/designs/ios-quora-swiftui.md +375 -0
- package/dist/data/designs/ios-quora.md +359 -0
- package/dist/data/designs/ios-raya-android.md +401 -0
- package/dist/data/designs/ios-raya-expo.md +366 -0
- package/dist/data/designs/ios-raya-swiftui.md +393 -0
- package/dist/data/designs/ios-raya.md +366 -0
- package/dist/data/designs/ios-reddit-android.md +605 -0
- package/dist/data/designs/ios-reddit-expo.md +553 -0
- package/dist/data/designs/ios-reddit-swiftui.md +514 -0
- package/dist/data/designs/ios-reddit.md +460 -0
- package/dist/data/designs/ios-resy-android.md +430 -0
- package/dist/data/designs/ios-resy-expo.md +344 -0
- package/dist/data/designs/ios-resy-swiftui.md +330 -0
- package/dist/data/designs/ios-resy.md +412 -0
- package/dist/data/designs/ios-revolut-android.md +433 -0
- package/dist/data/designs/ios-revolut-expo.md +379 -0
- package/dist/data/designs/ios-revolut-swiftui.md +372 -0
- package/dist/data/designs/ios-revolut.md +353 -0
- package/dist/data/designs/ios-robinhood-android.md +587 -0
- package/dist/data/designs/ios-robinhood-expo.md +416 -0
- package/dist/data/designs/ios-robinhood-swiftui.md +431 -0
- package/dist/data/designs/ios-robinhood.md +380 -0
- package/dist/data/designs/ios-runna-android.md +485 -0
- package/dist/data/designs/ios-runna-expo.md +388 -0
- package/dist/data/designs/ios-runna-swiftui.md +413 -0
- package/dist/data/designs/ios-runna.md +390 -0
- package/dist/data/designs/ios-shazam-android.md +436 -0
- package/dist/data/designs/ios-shazam-expo.md +348 -0
- package/dist/data/designs/ios-shazam-swiftui.md +394 -0
- package/dist/data/designs/ios-shazam.md +338 -0
- package/dist/data/designs/ios-signal-android.md +462 -0
- package/dist/data/designs/ios-signal-expo.md +361 -0
- package/dist/data/designs/ios-signal-swiftui.md +350 -0
- package/dist/data/designs/ios-signal.md +357 -0
- package/dist/data/designs/ios-skype-android.md +398 -0
- package/dist/data/designs/ios-skype-expo.md +368 -0
- package/dist/data/designs/ios-skype-swiftui.md +369 -0
- package/dist/data/designs/ios-skype.md +406 -0
- package/dist/data/designs/ios-skyscanner-android.md +451 -0
- package/dist/data/designs/ios-skyscanner-expo.md +423 -0
- package/dist/data/designs/ios-skyscanner-swiftui.md +419 -0
- package/dist/data/designs/ios-skyscanner.md +421 -0
- package/dist/data/designs/ios-slack-android.md +695 -0
- package/dist/data/designs/ios-slack-expo.md +601 -0
- package/dist/data/designs/ios-slack-swiftui.md +594 -0
- package/dist/data/designs/ios-slack.md +474 -0
- package/dist/data/designs/ios-sleep-cycle-android.md +436 -0
- package/dist/data/designs/ios-sleep-cycle-expo.md +380 -0
- package/dist/data/designs/ios-sleep-cycle-swiftui.md +409 -0
- package/dist/data/designs/ios-sleep-cycle.md +386 -0
- package/dist/data/designs/ios-snapchat-android.md +671 -0
- package/dist/data/designs/ios-snapchat-expo.md +528 -0
- package/dist/data/designs/ios-snapchat-swiftui.md +557 -0
- package/dist/data/designs/ios-snapchat.md +478 -0
- package/dist/data/designs/ios-sofi-android.md +446 -0
- package/dist/data/designs/ios-sofi-expo.md +387 -0
- package/dist/data/designs/ios-sofi-swiftui.md +379 -0
- package/dist/data/designs/ios-sofi.md +385 -0
- package/dist/data/designs/ios-soundcloud-android.md +488 -0
- package/dist/data/designs/ios-soundcloud-expo.md +364 -0
- package/dist/data/designs/ios-soundcloud-swiftui.md +399 -0
- package/dist/data/designs/ios-soundcloud.md +359 -0
- package/dist/data/designs/ios-southwest-android.md +446 -0
- package/dist/data/designs/ios-southwest-expo.md +389 -0
- package/dist/data/designs/ios-southwest-swiftui.md +405 -0
- package/dist/data/designs/ios-southwest.md +405 -0
- package/dist/data/designs/ios-spotify-android.md +427 -0
- package/dist/data/designs/ios-spotify-expo.md +321 -0
- package/dist/data/designs/ios-spotify-swiftui.md +312 -0
- package/dist/data/designs/ios-spotify.md +366 -0
- package/dist/data/designs/ios-starbucks-android.md +622 -0
- package/dist/data/designs/ios-starbucks-expo.md +497 -0
- package/dist/data/designs/ios-starbucks-swiftui.md +500 -0
- package/dist/data/designs/ios-starbucks.md +440 -0
- package/dist/data/designs/ios-strava-android.md +656 -0
- package/dist/data/designs/ios-strava-expo.md +501 -0
- package/dist/data/designs/ios-strava-swiftui.md +465 -0
- package/dist/data/designs/ios-strava.md +433 -0
- package/dist/data/designs/ios-strong-android.md +479 -0
- package/dist/data/designs/ios-strong-expo.md +396 -0
- package/dist/data/designs/ios-strong-swiftui.md +363 -0
- package/dist/data/designs/ios-strong.md +415 -0
- package/dist/data/designs/ios-substack-android.md +440 -0
- package/dist/data/designs/ios-substack-expo.md +395 -0
- package/dist/data/designs/ios-substack-swiftui.md +371 -0
- package/dist/data/designs/ios-substack.md +372 -0
- package/dist/data/designs/ios-swiggy-android.md +549 -0
- package/dist/data/designs/ios-swiggy-expo.md +443 -0
- package/dist/data/designs/ios-swiggy-swiftui.md +471 -0
- package/dist/data/designs/ios-swiggy.md +432 -0
- package/dist/data/designs/ios-taco-bell-android.md +529 -0
- package/dist/data/designs/ios-taco-bell-expo.md +407 -0
- package/dist/data/designs/ios-taco-bell-swiftui.md +419 -0
- package/dist/data/designs/ios-taco-bell.md +430 -0
- package/dist/data/designs/ios-telegram-android.md +676 -0
- package/dist/data/designs/ios-telegram-expo.md +594 -0
- package/dist/data/designs/ios-telegram-swiftui.md +518 -0
- package/dist/data/designs/ios-telegram.md +458 -0
- package/dist/data/designs/ios-the-league-android.md +454 -0
- package/dist/data/designs/ios-the-league-expo.md +391 -0
- package/dist/data/designs/ios-the-league-swiftui.md +409 -0
- package/dist/data/designs/ios-the-league.md +368 -0
- package/dist/data/designs/ios-things-3-android.md +421 -0
- package/dist/data/designs/ios-things-3-expo.md +351 -0
- package/dist/data/designs/ios-things-3-swiftui.md +359 -0
- package/dist/data/designs/ios-things-3.md +339 -0
- package/dist/data/designs/ios-threads-android.md +588 -0
- package/dist/data/designs/ios-threads-expo.md +468 -0
- package/dist/data/designs/ios-threads-swiftui.md +452 -0
- package/dist/data/designs/ios-threads.md +424 -0
- package/dist/data/designs/ios-threema-android.md +496 -0
- package/dist/data/designs/ios-threema-expo.md +415 -0
- package/dist/data/designs/ios-threema-swiftui.md +446 -0
- package/dist/data/designs/ios-threema.md +397 -0
- package/dist/data/designs/ios-tidal-android.md +398 -0
- package/dist/data/designs/ios-tidal-expo.md +323 -0
- package/dist/data/designs/ios-tidal-swiftui.md +340 -0
- package/dist/data/designs/ios-tidal.md +351 -0
- package/dist/data/designs/ios-tiktok-android.md +654 -0
- package/dist/data/designs/ios-tiktok-expo.md +578 -0
- package/dist/data/designs/ios-tiktok-swiftui.md +595 -0
- package/dist/data/designs/ios-tiktok.md +387 -0
- package/dist/data/designs/ios-tinder-android.md +681 -0
- package/dist/data/designs/ios-tinder-expo.md +512 -0
- package/dist/data/designs/ios-tinder-swiftui.md +497 -0
- package/dist/data/designs/ios-tinder.md +415 -0
- package/dist/data/designs/ios-todoist-android.md +711 -0
- package/dist/data/designs/ios-todoist-expo.md +607 -0
- package/dist/data/designs/ios-todoist-swiftui.md +573 -0
- package/dist/data/designs/ios-todoist.md +418 -0
- package/dist/data/designs/ios-trello-android.md +412 -0
- package/dist/data/designs/ios-trello-expo.md +332 -0
- package/dist/data/designs/ios-trello-swiftui.md +359 -0
- package/dist/data/designs/ios-trello.md +344 -0
- package/dist/data/designs/ios-tripadvisor-android.md +450 -0
- package/dist/data/designs/ios-tripadvisor-expo.md +322 -0
- package/dist/data/designs/ios-tripadvisor-swiftui.md +326 -0
- package/dist/data/designs/ios-tripadvisor.md +356 -0
- package/dist/data/designs/ios-tubi-android.md +453 -0
- package/dist/data/designs/ios-tubi-expo.md +419 -0
- package/dist/data/designs/ios-tubi-swiftui.md +463 -0
- package/dist/data/designs/ios-tubi.md +383 -0
- package/dist/data/designs/ios-tumblr-android.md +462 -0
- package/dist/data/designs/ios-tumblr-expo.md +374 -0
- package/dist/data/designs/ios-tumblr-swiftui.md +380 -0
- package/dist/data/designs/ios-tumblr.md +337 -0
- package/dist/data/designs/ios-turo-android.md +500 -0
- package/dist/data/designs/ios-turo-expo.md +454 -0
- package/dist/data/designs/ios-turo-swiftui.md +447 -0
- package/dist/data/designs/ios-turo.md +392 -0
- package/dist/data/designs/ios-twitch-android.md +412 -0
- package/dist/data/designs/ios-twitch-expo.md +342 -0
- package/dist/data/designs/ios-twitch-swiftui.md +328 -0
- package/dist/data/designs/ios-twitch.md +354 -0
- package/dist/data/designs/ios-uber-android.md +637 -0
- package/dist/data/designs/ios-uber-eats-android.md +502 -0
- package/dist/data/designs/ios-uber-eats-expo.md +407 -0
- package/dist/data/designs/ios-uber-eats-swiftui.md +393 -0
- package/dist/data/designs/ios-uber-eats.md +353 -0
- package/dist/data/designs/ios-uber-expo.md +512 -0
- package/dist/data/designs/ios-uber-swiftui.md +483 -0
- package/dist/data/designs/ios-uber.md +395 -0
- package/dist/data/designs/ios-united-airlines-android.md +494 -0
- package/dist/data/designs/ios-united-airlines-expo.md +408 -0
- package/dist/data/designs/ios-united-airlines-swiftui.md +453 -0
- package/dist/data/designs/ios-united-airlines.md +388 -0
- package/dist/data/designs/ios-venmo-android.md +654 -0
- package/dist/data/designs/ios-venmo-expo.md +458 -0
- package/dist/data/designs/ios-venmo-swiftui.md +469 -0
- package/dist/data/designs/ios-venmo.md +436 -0
- package/dist/data/designs/ios-vercel-android.md +454 -0
- package/dist/data/designs/ios-vercel-expo.md +387 -0
- package/dist/data/designs/ios-vercel-swiftui.md +374 -0
- package/dist/data/designs/ios-vercel.md +399 -0
- package/dist/data/designs/ios-vero-android.md +498 -0
- package/dist/data/designs/ios-vero-expo.md +376 -0
- package/dist/data/designs/ios-vero-swiftui.md +374 -0
- package/dist/data/designs/ios-vero.md +394 -0
- package/dist/data/designs/ios-viber-android.md +377 -0
- package/dist/data/designs/ios-viber-expo.md +375 -0
- package/dist/data/designs/ios-viber-swiftui.md +378 -0
- package/dist/data/designs/ios-viber.md +403 -0
- package/dist/data/designs/ios-vimeo-android.md +465 -0
- package/dist/data/designs/ios-vimeo-expo.md +347 -0
- package/dist/data/designs/ios-vimeo-swiftui.md +383 -0
- package/dist/data/designs/ios-vimeo.md +403 -0
- package/dist/data/designs/ios-vrbo-android.md +488 -0
- package/dist/data/designs/ios-vrbo-expo.md +395 -0
- package/dist/data/designs/ios-vrbo-swiftui.md +421 -0
- package/dist/data/designs/ios-vrbo.md +383 -0
- package/dist/data/designs/ios-vsco-android.md +490 -0
- package/dist/data/designs/ios-vsco-expo.md +413 -0
- package/dist/data/designs/ios-vsco-swiftui.md +449 -0
- package/dist/data/designs/ios-vsco.md +412 -0
- package/dist/data/designs/ios-walmart-android.md +479 -0
- package/dist/data/designs/ios-walmart-expo.md +370 -0
- package/dist/data/designs/ios-walmart-swiftui.md +387 -0
- package/dist/data/designs/ios-walmart.md +366 -0
- package/dist/data/designs/ios-waze-android.md +695 -0
- package/dist/data/designs/ios-waze-expo.md +587 -0
- package/dist/data/designs/ios-waze-swiftui.md +601 -0
- package/dist/data/designs/ios-waze.md +453 -0
- package/dist/data/designs/ios-webull-android.md +429 -0
- package/dist/data/designs/ios-webull-expo.md +384 -0
- package/dist/data/designs/ios-webull-swiftui.md +406 -0
- package/dist/data/designs/ios-webull.md +375 -0
- package/dist/data/designs/ios-wechat-android.md +545 -0
- package/dist/data/designs/ios-wechat-expo.md +398 -0
- package/dist/data/designs/ios-wechat-swiftui.md +394 -0
- package/dist/data/designs/ios-wechat.md +363 -0
- package/dist/data/designs/ios-whatsapp-android.md +568 -0
- package/dist/data/designs/ios-whatsapp-expo.md +502 -0
- package/dist/data/designs/ios-whatsapp-swiftui.md +483 -0
- package/dist/data/designs/ios-whatsapp.md +425 -0
- package/dist/data/designs/ios-whoop-android.md +635 -0
- package/dist/data/designs/ios-whoop-expo.md +562 -0
- package/dist/data/designs/ios-whoop-swiftui.md +553 -0
- package/dist/data/designs/ios-whoop.md +419 -0
- package/dist/data/designs/ios-wise-android.md +428 -0
- package/dist/data/designs/ios-wise-expo.md +357 -0
- package/dist/data/designs/ios-wise-swiftui.md +356 -0
- package/dist/data/designs/ios-wise.md +361 -0
- package/dist/data/designs/ios-x-twitter-android.md +618 -0
- package/dist/data/designs/ios-x-twitter-expo.md +442 -0
- package/dist/data/designs/ios-x-twitter-swiftui.md +429 -0
- package/dist/data/designs/ios-x-twitter.md +432 -0
- package/dist/data/designs/ios-yelp-android.md +455 -0
- package/dist/data/designs/ios-yelp-expo.md +397 -0
- package/dist/data/designs/ios-yelp-swiftui.md +369 -0
- package/dist/data/designs/ios-yelp.md +398 -0
- package/dist/data/designs/ios-youtube-android.md +668 -0
- package/dist/data/designs/ios-youtube-expo.md +435 -0
- package/dist/data/designs/ios-youtube-music-android.md +450 -0
- package/dist/data/designs/ios-youtube-music-expo.md +404 -0
- package/dist/data/designs/ios-youtube-music-swiftui.md +434 -0
- package/dist/data/designs/ios-youtube-music.md +381 -0
- package/dist/data/designs/ios-youtube-swiftui.md +496 -0
- package/dist/data/designs/ios-youtube.md +466 -0
- package/dist/data/designs/ios-zalo-android.md +510 -0
- package/dist/data/designs/ios-zalo-expo.md +389 -0
- package/dist/data/designs/ios-zalo-swiftui.md +431 -0
- package/dist/data/designs/ios-zalo.md +388 -0
- package/dist/data/designs/ios-zomato-android.md +527 -0
- package/dist/data/designs/ios-zomato-expo.md +437 -0
- package/dist/data/designs/ios-zomato-swiftui.md +433 -0
- package/dist/data/designs/ios-zomato.md +439 -0
- package/dist/data/designs/ios-zoom-android.md +423 -0
- package/dist/data/designs/ios-zoom-expo.md +355 -0
- package/dist/data/designs/ios-zoom-swiftui.md +379 -0
- package/dist/data/designs/ios-zoom.md +357 -0
- package/dist/data/designs/ios-zwift-android.md +402 -0
- package/dist/data/designs/ios-zwift-expo.md +402 -0
- package/dist/data/designs/ios-zwift-swiftui.md +378 -0
- package/dist/data/designs/ios-zwift.md +411 -0
- package/dist/data/designs/kraken.md +125 -0
- package/dist/data/designs/lamborghini.md +288 -0
- package/dist/data/designs/linear.app.md +548 -0
- package/dist/data/designs/lovable.md +298 -0
- package/dist/data/designs/mastercard.md +365 -0
- package/dist/data/designs/material-clean.md +289 -0
- package/dist/data/designs/meta.md +683 -0
- package/dist/data/designs/midnight-pro.md +256 -0
- package/dist/data/designs/minimal-brutalist.md +245 -0
- package/dist/data/designs/minimax.md +746 -0
- package/dist/data/designs/mintlify.md +852 -0
- package/dist/data/designs/miro.md +825 -0
- package/dist/data/designs/mistral.ai.md +773 -0
- package/dist/data/designs/mongodb.md +767 -0
- package/dist/data/designs/nike.md +575 -0
- package/dist/data/designs/nintendo-2001.md +649 -0
- package/dist/data/designs/notion.md +821 -0
- package/dist/data/designs/nova-mobile-design-md.md +235 -0
- package/dist/data/designs/nvidia.md +640 -0
- package/dist/data/designs/ollama.md +539 -0
- package/dist/data/designs/opencode.ai.md +521 -0
- package/dist/data/designs/pinterest.md +597 -0
- package/dist/data/designs/playful-color.md +253 -0
- package/dist/data/designs/playstation.md +661 -0
- package/dist/data/designs/posthog.md +690 -0
- package/dist/data/designs/raycast.md +669 -0
- package/dist/data/designs/renault.md +589 -0
- package/dist/data/designs/replicate.md +616 -0
- package/dist/data/designs/resend.md +585 -0
- package/dist/data/designs/revolut.md +636 -0
- package/dist/data/designs/runwayml.md +244 -0
- package/dist/data/designs/sanity.md +357 -0
- package/dist/data/designs/sentry.md +551 -0
- package/dist/data/designs/shopify.md +516 -0
- package/dist/data/designs/slack.md +482 -0
- package/dist/data/designs/soft-glass.md +258 -0
- package/dist/data/designs/spacex.md +363 -0
- package/dist/data/designs/spotify.md +246 -0
- package/dist/data/designs/starbucks.md +580 -0
- package/dist/data/designs/stripe.md +487 -0
- package/dist/data/designs/supabase.md +462 -0
- package/dist/data/designs/superhuman.md +448 -0
- package/dist/data/designs/tesla.md +286 -0
- package/dist/data/designs/theverge.md +339 -0
- package/dist/data/designs/together.ai.md +633 -0
- package/dist/data/designs/uber.md +636 -0
- package/dist/data/designs/vercel.md +736 -0
- package/dist/data/designs/vodafone.md +538 -0
- package/dist/data/designs/voltagent.md +521 -0
- package/dist/data/designs/warp.md +526 -0
- package/dist/data/designs/webflow.md +588 -0
- package/dist/data/designs/wired.md +497 -0
- package/dist/data/designs/wise.md +544 -0
- package/dist/data/designs/x.ai.md +465 -0
- package/dist/data/designs/zapier.md +537 -0
- package/dist/data/index.json +2600 -0
- package/dist/httpServer.js +83 -0
- package/dist/index.js +13 -0
- package/dist/server.js +32 -0
- package/dist/services/designStore.js +59 -0
- package/dist/services/linter.js +87 -0
- package/dist/services/sectionParser.js +154 -0
- package/dist/tools/authoring.js +131 -0
- package/dist/tools/browse.js +232 -0
- package/dist/tools/diff.js +88 -0
- package/dist/tools/getDesign.js +216 -0
- package/dist/tools/guardrails.js +87 -0
- package/dist/tools/lint.js +104 -0
- package/dist/types.js +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
# Design System Inspiration of iMessage (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
iMessage is the canonical iOS conversation surface — and arguably the most-imitated chat UI on the planet. Its design philosophy is "the message is the moment": the interface is engineered to disappear so the bubble, the tapback, and the typing dots carry the entire emotional weight of a conversation. Open a thread and you see a clean white canvas (`#FFFFFF` light / true-black `#000000` dark), a hairline-thin navigation bar with a circular contact avatar centered above the contact's name, a vertically-scrolling stack of rounded "bubbles," and a blur-backed input bar pinned to the bottom with a `+` attachment button, a pill text field, and a circular send button. There are no cards, no list dividers inside the thread, no chrome competing with the words.
|
|
6
|
+
|
|
7
|
+
The single most recognizable element is the **bubble pair**: outgoing iMessages render in iMessage Blue (`#007AFF`) with white text and a tail on the bottom-right; incoming bubbles render in a neutral gray (`#E9E9EB` light / `#26262A` dark) with primary-color text and a tail on the bottom-left. When a message can't be sent over iMessage (recipient not on Apple, no data), the outgoing bubble falls back to SMS Green (`#34C759`) — this blue-vs-green distinction is so culturally loaded it has its own discourse. Bubbles use a ~19pt corner radius with the corner nearest the sender's edge "pinched" to ~6pt to form the tail. Consecutive messages from the same sender group with ~3pt gaps; a sender change inserts ~9pt.
|
|
8
|
+
|
|
9
|
+
The second signature moment is the **tapback**: long-press any bubble and a floating reaction strip appears with six glyphs — Heart, Thumbs Up, Thumbs Down, Ha-Ha, Double-Exclamation, Question Mark. The chosen reaction docks as a small chip overlapping the top edge of the bubble. Add **typing dots** (three pulsing gray circles in an incoming-shaped bubble), **delivery receipts** ("Delivered" / "Read 9:41 AM" in tiny gray right-aligned text under the last outgoing bubble), inline message effects (Slam, Loud, Gentle, Invisible Ink), and full-bleed emoji, and you have the complete iMessage emotional vocabulary.
|
|
10
|
+
|
|
11
|
+
Color is restrained and almost entirely systemic. Beyond the two brand bubble colors, iMessage leans on Apple's system palette: `systemBlue` for every interactive control and link, `systemGray` ramps for bubbles and secondary text, `systemRed` for FaceTime/decline and destructive actions, `systemGreen` for SMS. There is no decorative brand palette — the blue/green bubble dichotomy *is* the brand. Typography is pure San Francisco (SF Pro Text / SF Pro Display), Apple's system face, used at Dynamic Type sizes with the message body at 16-17pt regular and the contact headline at 17pt semibold.
|
|
12
|
+
|
|
13
|
+
**Key Characteristics:**
|
|
14
|
+
- White canvas (`#FFFFFF`) light / true-black (`#000000`) dark — minimum chrome, maximum message
|
|
15
|
+
- Blue/gray bubble pair: outgoing iMessage Blue (`#007AFF`), incoming gray (`#E9E9EB` / `#26262A`)
|
|
16
|
+
- SMS Green (`#34C759`) fallback bubble when iMessage is unavailable
|
|
17
|
+
- ~19pt rounded bubbles with a pinched ~6pt tail corner on the sender's edge
|
|
18
|
+
- Tapback reaction strip — Heart / Thumbs Up / Thumbs Down / Ha-Ha / ‼️ / ❓ — docks as an overlapping chip
|
|
19
|
+
- Typing indicator — three pulsing gray dots in an incoming-shaped bubble
|
|
20
|
+
- Delivery receipts — "Delivered" / "Read 9:41 AM" tiny gray right-aligned under last outgoing message
|
|
21
|
+
- Blur-backed input bar — `+` attach, pill text field, circular send (arrow-up) button
|
|
22
|
+
- SF Pro typography at Dynamic Type sizes; no custom brand font
|
|
23
|
+
- System-color UI — `systemBlue` controls, `systemGray` ramps, `systemRed` FaceTime/destructive
|
|
24
|
+
- Message effects (Slam / Loud / Gentle / Invisible Ink) and screen effects
|
|
25
|
+
- Centered nav with circular avatar above contact name + chevron-down disclosure
|
|
26
|
+
|
|
27
|
+
## 2. Color Palette & Roles
|
|
28
|
+
|
|
29
|
+
### Primary (Interactive)
|
|
30
|
+
- **iMessage Blue** (`#007AFF`): Outgoing iMessage bubble, every interactive control, links, send button — `systemBlue`.
|
|
31
|
+
- **iMessage Blue Pressed** (`#0062CC`): Pressed/highlighted state of blue controls.
|
|
32
|
+
- **SMS Green** (`#34C759`): Outgoing SMS/MMS fallback bubble, "Send as Text Message" — `systemGreen`.
|
|
33
|
+
- **SMS Green Pressed** (`#248A3D`): Pressed state of green bubble/control.
|
|
34
|
+
|
|
35
|
+
### Canvas & Surfaces (Light Mode)
|
|
36
|
+
- **Canvas White** (`#FFFFFF`): Thread background, primary light canvas.
|
|
37
|
+
- **Incoming Bubble** (`#E9E9EB`): Gray incoming message bubble — `systemGray5`-ish.
|
|
38
|
+
- **Surface Gray** (`#F2F2F7`): Grouped table background (conversation list), settings — `systemGroupedBackground`.
|
|
39
|
+
- **Input Field** (`#FFFFFF` with `#C6C6C8` 1pt border): Pill compose field.
|
|
40
|
+
- **Divider** (`#3C3C434A`): Hairline nav separator (`separator`, ~29% opacity).
|
|
41
|
+
|
|
42
|
+
### Canvas & Surfaces (Dark Mode)
|
|
43
|
+
- **Dark Canvas** (`#000000`): True black thread background (OLED).
|
|
44
|
+
- **Incoming Bubble (Dark)** (`#26262A`): Dark gray incoming bubble.
|
|
45
|
+
- **Dark Surface 1** (`#1C1C1E`): Elevated surfaces, conversation list rows — `systemGray6` dark.
|
|
46
|
+
- **Dark Surface 2** (`#2C2C2E`): `+` button background, tapback strip, attachment tray — `systemGray5` dark.
|
|
47
|
+
- **Dark Divider** (`#38383A`): Hairline nav/list separators (`separator` dark).
|
|
48
|
+
|
|
49
|
+
### Text
|
|
50
|
+
- **Text Primary Light** (`#000000`): Incoming bubble text, primary labels — `label`.
|
|
51
|
+
- **Text on Blue/Green** (`#FFFFFF`): Outgoing bubble text — always white on blue and green.
|
|
52
|
+
- **Text Secondary** (`#3C3C4399` light / `#EBEBF599` dark): Timestamps, contact subtitle — `secondaryLabel`.
|
|
53
|
+
- **Text Tertiary** (`#3C3C434D` light / `#EBEBF54D` dark): "Delivered", placeholder, typing dots — `tertiaryLabel`.
|
|
54
|
+
- **Text Primary Dark** (`#FFFFFF`): Incoming bubble text and labels on dark.
|
|
55
|
+
|
|
56
|
+
### Semantic
|
|
57
|
+
- **Error / FaceTime Red** (`#FF3B30` light / `#FF453A` dark): Decline call, delete message, unsend confirmation — `systemRed`.
|
|
58
|
+
- **Success Green** (`#34C759` / `#30D158`): SMS sent confirmation, accept call — `systemGreen`.
|
|
59
|
+
- **Link Blue** (`#007AFF` / `#2997FF`): Inline links inside bubbles, "Tap to Load" — `systemBlue`.
|
|
60
|
+
- **Selection Highlight** (`#007AFF` @ 20%): Text selection within a bubble.
|
|
61
|
+
|
|
62
|
+
### Bubble Color Matrix
|
|
63
|
+
|
|
64
|
+
| State | Light Mode | Dark Mode | Text |
|
|
65
|
+
|-------|-----------|-----------|------|
|
|
66
|
+
| Outgoing iMessage | `#007AFF` | `#007AFF` | `#FFFFFF` |
|
|
67
|
+
| Outgoing SMS/MMS | `#34C759` | `#34C759` | `#FFFFFF` |
|
|
68
|
+
| Incoming | `#E9E9EB` | `#26262A` | `#000000` / `#FFFFFF` |
|
|
69
|
+
| Failed (not delivered) | `#FF3B30` glyph + gray bubble | `#FF453A` glyph + `#26262A` | `#000000` / `#FFFFFF` |
|
|
70
|
+
| Tapback chip bg | `#FFFFFF` w/ shadow | `#2C2C2E` | n/a |
|
|
71
|
+
|
|
72
|
+
## 3. Typography Rules
|
|
73
|
+
|
|
74
|
+
### Font Family
|
|
75
|
+
- **System**: `SF Pro Text` (≤ 19pt) / `SF Pro Display` (≥ 20pt) — Apple's San Francisco. Selected automatically by the OS via the system font; never bundled or named in code (use `.system`).
|
|
76
|
+
- **Fallback Stack (web/cross-platform mirror)**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', 'Inter', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
77
|
+
- **Numerals**: SF proportional by default; tabular figures in timestamps.
|
|
78
|
+
- **No custom brand typeface** — iMessage is 100% system San Francisco at Dynamic Type sizes.
|
|
79
|
+
|
|
80
|
+
### Hierarchy
|
|
81
|
+
|
|
82
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
83
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
84
|
+
| Large Title | SF Pro Display | 34pt | 700 | 1.2 | 0.4pt | "Messages" list screen title |
|
|
85
|
+
| Title 1 | SF Pro Display | 28pt | 700 | 1.2 | 0.36pt | "New Message" sheet title |
|
|
86
|
+
| Title 3 | SF Pro Display | 20pt | 600 | 1.25 | 0.38pt | Group name, large contact name |
|
|
87
|
+
| Headline | SF Pro Text | 17pt | 600 | 1.3 | -0.4pt | Contact name in chat nav bar |
|
|
88
|
+
| Body / Bubble | SF Pro Text | 17pt | 400 | 1.3 | -0.4pt | Message text (Dynamic Type default) |
|
|
89
|
+
| Message (compact) | SF Pro Text | 15pt | 400 | 1.3 | -0.2pt | Dense / smaller Dynamic Type |
|
|
90
|
+
| Callout | SF Pro Text | 16pt | 400 | 1.3 | -0.3pt | Inline link text, "Tap to Load" |
|
|
91
|
+
| Subhead | SF Pro Text | 15pt | 400 | 1.35 | -0.2pt | Conversation list preview line |
|
|
92
|
+
| Footnote | SF Pro Text | 13pt | 600 | 1.35 | -0.08pt | "Delivered" / "Read 9:41 AM" |
|
|
93
|
+
| Caption 1 | SF Pro Text | 12pt | 400 | 1.35 | 0pt | Timestamp separators |
|
|
94
|
+
| Caption 2 | SF Pro Text | 11pt | 600 | 1.35 | 0.06pt | "iMessage" / "SMS" label above thread |
|
|
95
|
+
| Tab / Toolbar | SF Pro Text | 11pt | 500 | 1.0 | 0.07pt | Toolbar labels |
|
|
96
|
+
|
|
97
|
+
### Principles
|
|
98
|
+
- **Dynamic Type is mandatory**: Message body, headline, and list previews scale across the user's text-size setting; only timestamps and chrome stay fixed.
|
|
99
|
+
- **Weight concentrated at 400 / 500 / 600 / 700**: Regular body, medium toolbar, semibold headline/footnote, bold titles. No thin or black weights.
|
|
100
|
+
- **Tail does not change type**: bubble tail/grouping is a shape concern; text metrics never change with bubble position.
|
|
101
|
+
- **White text on blue and green is non-negotiable**: outgoing bubbles always use `#FFFFFF` text regardless of mode.
|
|
102
|
+
- **Tracking is negative for body** (SF optical), positive for tiny captions — follow Apple's Dynamic Type tracking table.
|
|
103
|
+
|
|
104
|
+
## 4. Component Stylings
|
|
105
|
+
|
|
106
|
+
### Buttons
|
|
107
|
+
|
|
108
|
+
**Send Button (circular)**
|
|
109
|
+
- Shape: 30pt circle (icon arrow-up `arrow.up`)
|
|
110
|
+
- Background: `#007AFF` (iMessage) / `#34C759` (SMS) / `#8E8E93` disabled when field empty
|
|
111
|
+
- Icon: `#FFFFFF`, 15pt, weight semibold
|
|
112
|
+
- Pressed: scale 0.92 + slight darken (`#0062CC`)
|
|
113
|
+
- Sits at the trailing edge of the input bar
|
|
114
|
+
|
|
115
|
+
**Primary Action Button (sheets / alerts)**
|
|
116
|
+
- Shape: Rounded rectangle, 14pt corner radius (or full-width 12pt in sheets)
|
|
117
|
+
- Background: `#007AFF`
|
|
118
|
+
- Text: `#FFFFFF`, SF Pro 17pt weight 600
|
|
119
|
+
- Padding: 13pt vertical, 26pt horizontal
|
|
120
|
+
- Pressed: `#0062CC` + opacity 0.85
|
|
121
|
+
|
|
122
|
+
**Tinted Button (secondary)**
|
|
123
|
+
- Background: `#007AFF` @ 16% opacity (`rgba(0,122,255,0.16)`)
|
|
124
|
+
- Text: `#007AFF`, SF Pro 15pt weight 600
|
|
125
|
+
- Corner radius: 14pt
|
|
126
|
+
- Used for "Tapback", in-thread quick actions
|
|
127
|
+
|
|
128
|
+
**Text Button (nav / toolbar)**
|
|
129
|
+
- Background: transparent
|
|
130
|
+
- Text: `#007AFF`, SF Pro 17pt weight 400 ("Edit", "Cancel", "Done")
|
|
131
|
+
- Pressed: opacity 0.3
|
|
132
|
+
|
|
133
|
+
**`+` Attachment Button**
|
|
134
|
+
- Size: 30pt circle, background `#E9E9EB` light / `#2C2C2E` dark
|
|
135
|
+
- Icon: `plus` 16pt, `#8E8E93` / `secondaryLabel`
|
|
136
|
+
- Tap expands the iMessage app/attachment tray
|
|
137
|
+
|
|
138
|
+
### Message Bubble (the core atom)
|
|
139
|
+
|
|
140
|
+
The bubble is iMessage's fundamental unit.
|
|
141
|
+
|
|
142
|
+
**Outgoing iMessage Bubble**
|
|
143
|
+
- Background: `#007AFF`
|
|
144
|
+
- Text: `#FFFFFF`, SF Pro 17pt w400
|
|
145
|
+
- Padding: 8pt vertical, 14pt horizontal
|
|
146
|
+
- Corner radius: 19pt, with bottom-right corner at 6pt (tail) when last in a group
|
|
147
|
+
- Alignment: trailing (right), max width ~78% of thread
|
|
148
|
+
- Shadow: none
|
|
149
|
+
|
|
150
|
+
**Outgoing SMS Bubble** — identical geometry, background `#34C759`.
|
|
151
|
+
|
|
152
|
+
**Incoming Bubble**
|
|
153
|
+
- Background: `#E9E9EB` light / `#26262A` dark
|
|
154
|
+
- Text: `#000000` light / `#FFFFFF` dark, SF Pro 17pt w400
|
|
155
|
+
- Corner radius: 19pt, bottom-left corner at 6pt (tail) when last in a group
|
|
156
|
+
- Alignment: leading (left)
|
|
157
|
+
|
|
158
|
+
**Grouping rules**
|
|
159
|
+
- Same sender consecutive: 3pt vertical gap, only the last bubble in the run shows the tail
|
|
160
|
+
- Sender change: 9pt vertical gap, new bubble shows the tail
|
|
161
|
+
- Day/time separator: centered 12pt caption with `secondaryLabel`, 10pt top / 6pt bottom margin
|
|
162
|
+
|
|
163
|
+
**Bubble States**
|
|
164
|
+
- Sending: bubble at 50% opacity until server ack
|
|
165
|
+
- Failed: red `exclamationmark.circle.fill` (`#FF3B30`) to the left of the bubble; tap to retry
|
|
166
|
+
- With tapback: reaction chip overlaps the top corner nearest the bubble's owner (-16pt y offset)
|
|
167
|
+
- Edited (iOS 16+): "Edited" in 11pt `tertiaryLabel` below the bubble
|
|
168
|
+
- With effect: bubble animates in (Slam = scale 1.3→1, Loud = scale + shake, Gentle = scale 0.5→1)
|
|
169
|
+
|
|
170
|
+
### Tapback Reaction Strip
|
|
171
|
+
|
|
172
|
+
- Floating capsule, background `#FFFFFF` w/ `rgba(0,0,0,0.12) 0 6px 20px` shadow (light) / `#2C2C2E` (dark)
|
|
173
|
+
- Corner radius: 24pt (capsule)
|
|
174
|
+
- Six 28pt glyphs: ❤️ Heart, 👍 Thumbs Up, 👎 Thumbs Down, 😂 Ha-Ha, ‼️ Emphasize, ❓ Question
|
|
175
|
+
- Appears on long-press (~500ms) anchored above the pressed bubble with a scale-up + spring
|
|
176
|
+
- Selected reaction docks as a 16pt chip overlapping the bubble's top-near corner; chip bg `#FFFFFF`/`#2C2C2E` with subtle border
|
|
177
|
+
|
|
178
|
+
### Typing Indicator
|
|
179
|
+
|
|
180
|
+
- Incoming-shaped bubble (gray, leading, tail) containing three 7pt circles
|
|
181
|
+
- Circle color: `tertiaryLabel` (`#3C3C434D` / `#EBEBF54D`)
|
|
182
|
+
- Animation: each dot scales 0.6 → 1.0 → 0.6 with a 0.2s stagger, ~1.4s loop, ease-in-out
|
|
183
|
+
- Appears at the bottom of the thread when the other party is composing
|
|
184
|
+
|
|
185
|
+
### Delivery Receipt
|
|
186
|
+
|
|
187
|
+
- Right-aligned, under the last outgoing bubble
|
|
188
|
+
- Text: "Delivered" or "Read 9:41 AM" — SF Pro 13pt w600 `secondaryLabel`
|
|
189
|
+
- 2pt top margin from bubble; collapses when superseded by a newer outgoing message
|
|
190
|
+
- "Read" appears only if the recipient has read receipts enabled
|
|
191
|
+
|
|
192
|
+
### Navigation
|
|
193
|
+
|
|
194
|
+
**Chat Nav Bar**
|
|
195
|
+
- Height: 44pt + safe area, hairline `separator` bottom border
|
|
196
|
+
- Leading: back chevron (`chevron.left` 17pt `#007AFF`) + unread count badge
|
|
197
|
+
- Center: circular contact avatar (34pt) stacked above contact name (SF Pro 13pt w600) + `chevron.down` 9pt disclosure (opens contact card)
|
|
198
|
+
- Trailing: FaceTime icon (`video` 22pt `#007AFF`)
|
|
199
|
+
- Material: `.ultraThinMaterial` blur when content scrolls under it
|
|
200
|
+
|
|
201
|
+
**Conversation List (Messages home)**
|
|
202
|
+
- Large title "Messages" (34pt w700), search bar below, "Edit" / compose (`square.and.pencil`) in nav
|
|
203
|
+
- Each row: 60pt tall — leading 50pt circular avatar, title (contact, 17pt w600), preview (15pt `secondaryLabel`, 2-line truncated), trailing timestamp (13pt `secondaryLabel`) + unread blue dot (10pt `#007AFF`)
|
|
204
|
+
- Swipe actions: Pin (orange), Mute (purple/indigo), Delete (red)
|
|
205
|
+
|
|
206
|
+
### Input Fields
|
|
207
|
+
|
|
208
|
+
**Compose Bar**
|
|
209
|
+
- Height: 36pt field + 8/16pt padding, blur-backed (`.ultraThinMaterial`)
|
|
210
|
+
- Leading: `+` 30pt circular attachment button
|
|
211
|
+
- Center: pill text field — 18pt corner radius, 1pt `#C6C6C8` / `#38383A` border, transparent fill, placeholder "iMessage" / "Text Message" in `tertiaryLabel`
|
|
212
|
+
- Trailing: 30pt circular send button (arrow-up), color = bubble color, disabled gray when empty
|
|
213
|
+
- Grows up to ~5 lines then scrolls internally
|
|
214
|
+
|
|
215
|
+
**Search Bar (list screen)**
|
|
216
|
+
- Height: 36pt, background `#E9E9EB` / `#1C1C1E`, 10pt corner radius
|
|
217
|
+
- Leading `magnifyingglass` 15pt `tertiaryLabel`, placeholder "Search"
|
|
218
|
+
|
|
219
|
+
### Distinctive Components
|
|
220
|
+
|
|
221
|
+
**Tapback Strip + Docked Chip** — see above; the single most copied iMessage interaction.
|
|
222
|
+
|
|
223
|
+
**Typing Dots** — three pulsing gray circles; signature "they're typing" affordance.
|
|
224
|
+
|
|
225
|
+
**Message Effect Picker** — long-press send → "Send with effect" sheet with Bubble effects (Slam, Loud, Gentle, Invisible Ink) and Screen effects (Balloons, Confetti, Lasers, Fireworks, etc.); preview animates in place.
|
|
226
|
+
|
|
227
|
+
**Inline Rich Link Preview** — pasted URL becomes a card inside the bubble flow: leading thumbnail, title (15pt w600), domain (13pt `secondaryLabel`), 13pt corner radius, background matches bubble or `systemBackground`.
|
|
228
|
+
|
|
229
|
+
**Photo / Sticker Tray** — `+` opens a horizontal app strip (Photos, Stickers, Cash, Music, etc.); recent photos in a grid above the keyboard.
|
|
230
|
+
|
|
231
|
+
**Read Receipt Line** — "Read 9:41 AM"; quietly authoritative, 13pt gray, right-aligned.
|
|
232
|
+
|
|
233
|
+
**Day Separator** — centered timestamp with the channel label ("iMessage" / "SMS") above the first bubble of a session.
|
|
234
|
+
|
|
235
|
+
## 5. Layout Principles
|
|
236
|
+
|
|
237
|
+
### Spacing System
|
|
238
|
+
- Base unit: 4pt
|
|
239
|
+
- Scale: 2, 4, 8, 12, 14, 16, 20, 24, 32, 44
|
|
240
|
+
- Same-sender bubble gap: 3pt
|
|
241
|
+
- Sender-change gap: 9pt
|
|
242
|
+
- Thread horizontal inset: 14pt (bubbles), bubble max width ~78% of thread width
|
|
243
|
+
- Bubble internal padding: 8pt vertical / 14pt horizontal
|
|
244
|
+
|
|
245
|
+
### Grid & Container
|
|
246
|
+
- iPhone: full-width thread, 14pt side gutters for bubbles
|
|
247
|
+
- Bubble max width: ~78% of available width (so the opposite side always shows whitespace and sender direction stays unambiguous)
|
|
248
|
+
- iPad: split view — conversation list (~320pt) + thread detail; thread content max ~680pt centered
|
|
249
|
+
- Input bar: full-width, pinned, safe-area aware
|
|
250
|
+
|
|
251
|
+
### Whitespace Philosophy
|
|
252
|
+
- **Conversation rhythm**: tight 3pt within a sender's run, looser 9pt on sender change — the eye reads "turns" in the dialogue
|
|
253
|
+
- **No dividers in-thread**: only day/time separators break the flow; bubbles never get hairlines or cards
|
|
254
|
+
- **One-sided emphasis**: the ~78% max width guarantees the empty opposite margin, which *is* the directional cue
|
|
255
|
+
- **Chrome recedes**: nav and input bars use system materials and dim; the colored bubbles are the only saturated surfaces
|
|
256
|
+
|
|
257
|
+
### Border Radius Scale
|
|
258
|
+
- Square (0pt): full-bleed image attachments edge-to-edge (rare)
|
|
259
|
+
- Tail (6pt): the pinched bubble corner on the sender's edge
|
|
260
|
+
- Subtle (10pt): search bar, rich-link card thumbnails
|
|
261
|
+
- Standard (14pt): primary buttons, alert/sheet action rows, rich-link cards
|
|
262
|
+
- Bubble (19pt): the message bubble body radius
|
|
263
|
+
- Comfortable (22pt): attachment tray cells, large pills
|
|
264
|
+
- Capsule (500pt): tapback strip, input pill, segmented controls
|
|
265
|
+
- Circle (50%): avatars, send button, `+` button, unread dots
|
|
266
|
+
|
|
267
|
+
## 6. Depth & Elevation
|
|
268
|
+
|
|
269
|
+
iMessage is nearly flat; depth is conveyed by system materials (blur), not drop shadows.
|
|
270
|
+
|
|
271
|
+
| Level | Treatment | Use |
|
|
272
|
+
|-------|-----------|-----|
|
|
273
|
+
| Flat (Level 0) | No shadow | Bubbles, thread content, list rows |
|
|
274
|
+
| Material (Level 1) | `.ultraThinMaterial` / `.regularMaterial` blur | Nav bar + input bar when content scrolls beneath |
|
|
275
|
+
| Floating (Level 2) | `rgba(0,0,0,0.12) 0 6px 20px` (light) / 1pt border on dark | Tapback strip, context menu, effect picker popover |
|
|
276
|
+
| Sheet (Level 3) | `rgba(0,0,0,0.16) 0 -4px 24px` | Attachment tray, share sheet, "send with effect" sheet |
|
|
277
|
+
| Modal Overlay | `rgba(0,0,0,0.4)` dim | Behind full-screen effect playback and modals |
|
|
278
|
+
|
|
279
|
+
**Shadow Philosophy**: iMessage gets its sense of layering from Apple's blur materials, not from elevation shadows on content. The only true shadow lives under the floating tapback/context-menu popover so it visibly hovers above the thread. On dark mode that shadow is nearly invisible, so the popover gains a faint 1pt `separator` border as the elevation cue. Bubbles themselves are always shadowless and flat.
|
|
280
|
+
|
|
281
|
+
### Motion
|
|
282
|
+
- **Bubble send**: outgoing bubble springs up from the input field — scale 0.6 → 1.0, slide up ~40pt, `spring(response: 0.35, damping: 0.75)` + light haptic
|
|
283
|
+
- **Tapback present**: long-press (~500ms) → strip scales 0.7 → 1.0 with spring; selecting docks the chip with a 0.2s pop + soft haptic
|
|
284
|
+
- **Typing dots**: continuous 1.4s loop, three dots staggered 0.2s, scale 0.6 ↔ 1.0 ease-in-out
|
|
285
|
+
- **Delivery receipt**: "Delivered" → "Read" crossfades in 0.2s
|
|
286
|
+
- **Message effects**: Slam = scale 1.3 → 1 + screen shake; Loud = scale 1.4 + jitter; Gentle = scale 0.5 → 1 fade; Invisible Ink = particle mask reveal on tap
|
|
287
|
+
- **Screen effects**: full-screen overlay (balloons rise, confetti falls, lasers sweep) ~2.5s, then fades
|
|
288
|
+
- **Scroll-to-bottom**: new message while scrolled up shows a chevron pill; tap = animated scroll, 0.3s ease-out
|
|
289
|
+
- **Nav material**: blur intensifies as content scrolls under the bar (0.2s)
|
|
290
|
+
- **Haptics**: light impact on send, soft impact on tapback dock, success haptic on effect trigger
|
|
291
|
+
|
|
292
|
+
## 7. Do's and Don'ts
|
|
293
|
+
|
|
294
|
+
### Do
|
|
295
|
+
- Use white (`#FFFFFF`) light canvas / true black (`#000000`) dark — black for OLED in dark mode
|
|
296
|
+
- Render outgoing iMessages in iMessage Blue `#007AFF`, SMS fallback in Green `#34C759`
|
|
297
|
+
- Use neutral gray for incoming bubbles — `#E9E9EB` light / `#26262A` dark — never tinted
|
|
298
|
+
- Pinch the sender-edge corner to ~6pt to form the tail; keep the other three at ~19pt
|
|
299
|
+
- Group same-sender messages at 3pt, separate sender turns at 9pt
|
|
300
|
+
- Always use white text on blue and green bubbles, primary label on gray
|
|
301
|
+
- Provide the six-glyph tapback strip on long-press and dock the reaction as an overlapping chip
|
|
302
|
+
- Show typing as three pulsing gray dots in an incoming-shaped bubble
|
|
303
|
+
- Show "Delivered" / "Read 9:41 AM" as tiny gray right-aligned text under the last outgoing bubble
|
|
304
|
+
- Use San Francisco at Dynamic Type sizes — never a custom brand font
|
|
305
|
+
- Use system materials (blur) for nav and input bar, not opaque bars
|
|
306
|
+
- Keep bubble max width ~78% so the empty opposite margin signals direction
|
|
307
|
+
|
|
308
|
+
### Don't
|
|
309
|
+
- Don't put dividers, cards, or shadows on message bubbles — they're flat and edge-grouped
|
|
310
|
+
- Don't tint incoming bubbles — they are neutral gray, the contrast against blue is the point
|
|
311
|
+
- Don't swap the blue/green semantics — blue = iMessage, green = SMS, this is culturally fixed
|
|
312
|
+
- Don't use a custom font — iMessage is pure system SF Pro at Dynamic Type
|
|
313
|
+
- Don't make bubbles full-width — the ~78% cap and one-sided whitespace are the directional cue
|
|
314
|
+
- Don't keep the tail on every bubble in a run — only the last bubble of a same-sender group
|
|
315
|
+
- Don't use pure black text on a blue bubble — outgoing text is always `#FFFFFF`
|
|
316
|
+
- Don't add a brand accent palette — `systemBlue`/`systemGreen`/`systemGray` is the entire system
|
|
317
|
+
- Don't animate aggressively outside effects — base motion is quiet spring, 0.2–0.35s
|
|
318
|
+
- Don't put a heavy drop shadow on bubbles for "depth" — depth is blur material, content is flat
|
|
319
|
+
- Don't show "Read" if the user hasn't enabled read receipts — respect the setting
|
|
320
|
+
|
|
321
|
+
## 8. Responsive Behavior
|
|
322
|
+
|
|
323
|
+
### Device Sizes
|
|
324
|
+
| Device | Width | Key Changes |
|
|
325
|
+
|--------|-------|-------------|
|
|
326
|
+
| iPhone SE (3rd gen) | 375pt | Bubble max ~290pt; compact nav (no Dynamic Island) |
|
|
327
|
+
| iPhone 13/14/15 | 390pt | Standard layout |
|
|
328
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated above nav bar |
|
|
329
|
+
| iPhone 15/16 Pro Max | 430pt | Wider bubbles (~335pt), larger avatars |
|
|
330
|
+
| iPad (portrait) | 768pt | Split view: list (~320pt) + thread; thread content max ~680pt centered |
|
|
331
|
+
| iPad (landscape) | 1024pt+ | Persistent list + thread; effects render in the thread pane |
|
|
332
|
+
|
|
333
|
+
### Dynamic Type
|
|
334
|
+
- Message body, contact headline, list preview: full scale (xSmall → AX5)
|
|
335
|
+
- Timestamps, "Delivered/Read", tab/toolbar labels, typing dots: FIXED
|
|
336
|
+
- Bubble grows to fit text at the chosen size; max-width % stays constant
|
|
337
|
+
|
|
338
|
+
### Orientation
|
|
339
|
+
- Thread supports rotation; bubbles reflow to the new width keeping the ~78% cap
|
|
340
|
+
- iPad keeps split view in both orientations; effects play in the thread column
|
|
341
|
+
|
|
342
|
+
### Touch Targets
|
|
343
|
+
- Send / `+` buttons: 30pt glyph, 44pt hit area
|
|
344
|
+
- Bubble: full bubble is the long-press target for tapback (min 44pt tall effective)
|
|
345
|
+
- Tapback glyphs: 28pt glyph, 44pt hit
|
|
346
|
+
- Nav back / FaceTime: 44pt hit
|
|
347
|
+
- List row: full-row tap, 60pt tall
|
|
348
|
+
|
|
349
|
+
### Safe Area Handling
|
|
350
|
+
- Top: nav bar respects safe area + Dynamic Island
|
|
351
|
+
- Bottom: input bar respects home indicator; thread scrolls above the keyboard
|
|
352
|
+
- Keyboard: thread content insets animate with the keyboard; input bar rides above it
|
|
353
|
+
- Sides: 14pt bubble gutters; full-bleed only for edge attachments
|
|
354
|
+
|
|
355
|
+
## 9. Agent Prompt Guide
|
|
356
|
+
|
|
357
|
+
### Quick Color Reference
|
|
358
|
+
- Canvas (light): `#FFFFFF`
|
|
359
|
+
- Canvas (dark): `#000000`
|
|
360
|
+
- Outgoing iMessage bubble: `#007AFF`
|
|
361
|
+
- Outgoing SMS bubble: `#34C759`
|
|
362
|
+
- Incoming bubble: `#E9E9EB` light / `#26262A` dark
|
|
363
|
+
- Bubble text (outgoing): `#FFFFFF`
|
|
364
|
+
- Bubble text (incoming): `#000000` light / `#FFFFFF` dark
|
|
365
|
+
- Text secondary: `#3C3C4399` light / `#EBEBF599` dark
|
|
366
|
+
- "Delivered/Read" (tertiary): `#3C3C434D` light / `#EBEBF54D` dark
|
|
367
|
+
- FaceTime / destructive: `#FF3B30` light / `#FF453A` dark
|
|
368
|
+
- Surface 2 (`+` / tapback strip dark): `#2C2C2E`
|
|
369
|
+
- Link: `#007AFF` / `#2997FF`
|
|
370
|
+
|
|
371
|
+
### Example Component Prompts
|
|
372
|
+
- "Build an iMessage outgoing bubble in SwiftUI: background `#007AFF`, text `#FFFFFF` SF Pro 17pt regular, padding 8pt vertical / 14pt horizontal, corner radius 19pt with `.bottomTrailing` corner at 6pt (tail) when it's the last bubble in a same-sender run. Right-aligned, max width 78% of the thread. No shadow. SMS variant: identical geometry, background `#34C759`."
|
|
373
|
+
|
|
374
|
+
- "Create an iMessage incoming bubble: background `#E9E9EB` (light) / `#26262A` (dark), text `label` color SF Pro 17pt regular, corner radius 19pt with `.bottomLeading` at 6pt for the tail, left-aligned, max width 78%. Group consecutive same-sender bubbles with 3pt gaps and only show the tail on the last; insert 9pt on sender change."
|
|
375
|
+
|
|
376
|
+
- "Render the iMessage tapback strip: a floating capsule (corner radius 24pt) anchored above a long-pressed bubble. Background `#FFFFFF` with shadow `rgba(0,0,0,0.12) 0 6px 20px` in light, `#2C2C2E` with a 1pt separator border in dark. Six 28pt glyphs in a row: ❤️ 👍 👎 😂 ‼️ ❓. Present with scale 0.7 → 1.0 spring on ~500ms long-press; on tap, dock the chosen reaction as a 16pt chip overlapping the bubble's owner-near top corner at -16pt y, with a soft haptic."
|
|
377
|
+
|
|
378
|
+
- "Build the iMessage typing indicator: an incoming-shaped gray bubble (`#E9E9EB`/`#26262A`, left-aligned, 19pt radius with 6pt tail) containing three 7pt circles in `tertiaryLabel`. Animate each circle scale 0.6 → 1.0 → 0.6 with a 0.2s stagger on a ~1.4s ease-in-out loop. Appears pinned to the bottom of the thread while the other party composes."
|
|
379
|
+
|
|
380
|
+
- "Create the iMessage compose bar: blur-backed (`.ultraThinMaterial`), 36pt tall field. Leading: 30pt circular `+` button, background `#E9E9EB`/`#2C2C2E`, `plus` glyph `secondaryLabel`. Center: pill text field, 18pt corner radius, 1pt `#C6C6C8`/`#38383A` border, transparent fill, placeholder 'iMessage' in `tertiaryLabel`. Trailing: 30pt circular send button with `arrow.up`, background `#007AFF` (or `#34C759` for SMS), `#FFFFFF` glyph, disabled gray when the field is empty; scale 0.92 on press."
|
|
381
|
+
|
|
382
|
+
- "Render the iMessage chat nav bar: 44pt + safe area, hairline `separator` bottom. Leading: `chevron.left` 17pt `#007AFF` back button with unread badge. Center: 34pt circular avatar stacked above the contact name (SF Pro 13pt w600) with a 9pt `chevron.down` disclosure. Trailing: `video` 22pt `#007AFF` FaceTime button. Use `.ultraThinMaterial` that intensifies as the thread scrolls under it."
|
|
383
|
+
|
|
384
|
+
### Iteration Guide
|
|
385
|
+
1. Canvas is white `#FFFFFF` in light, true black `#000000` in dark (OLED) — never off-white in dark
|
|
386
|
+
2. Outgoing iMessage is `#007AFF`, SMS fallback is `#34C759` — the blue/green split is the brand and is culturally fixed
|
|
387
|
+
3. Incoming bubbles are neutral gray `#E9E9EB` / `#26262A` — never tinted; the contrast against blue is intentional
|
|
388
|
+
4. Bubbles are flat (no shadow), ~19pt radius, with one pinched ~6pt tail corner on the sender's edge
|
|
389
|
+
5. Group same-sender messages at 3pt, separate sender turns at 9pt; only the last bubble of a run shows the tail
|
|
390
|
+
6. Bubble max width is ~78% so the empty opposite margin is the directional signal — never full-width
|
|
391
|
+
7. Typography is pure San Francisco at Dynamic Type sizes — no custom brand font ever
|
|
392
|
+
8. The tapback strip (6 glyphs, capsule, long-press, docked chip) is the most-copied iMessage interaction — get it exact
|
|
393
|
+
9. Typing = three pulsing gray dots in an incoming-shaped bubble; receipts = tiny gray "Delivered"/"Read 9:41 AM" right-aligned
|
|
394
|
+
10. Depth is Apple blur material on nav/input bars, not drop shadows on content; only the tapback/context popover floats with a shadow
|