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,458 @@
|
|
|
1
|
+
# Design System Inspiration of Telegram (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Telegram's iOS app is a messenger that lets the user's taste dominate the chrome. Out of the box it ships a confident Sky Blue (`#0088CC`) accent over a true-white or pure-black canvas, but the entire color system is a "themeable surface" — users can pick any hex code as an accent, apply custom chat backgrounds, even import community themes with rainbow gradients. That theming flexibility is the brand. A Telegram install in 2026 can look like anything from a corporate blue client to a neon-purple night-theme maximalist setup, and all of it is *still* unmistakably Telegram because the UI rhythm — bubble shape, nav structure, type scale, gesture language — holds steady no matter what color is poured in.
|
|
6
|
+
|
|
7
|
+
The default light experience is a clean white canvas with Sky Blue (`#0088CC` / `#40A7E3`) accents on the send button, the active tab, and the link color. The default dark experience is a crushed near-black (`#212121` or even `#000000` on OLED mode) that maximizes battery life and readability. Where WhatsApp chose a warm cream wallpaper, Telegram chose *emptiness*: chat canvas is a flat color by default. The mood is Russian-tech-maximalist — lots of white space, lots of speed, lots of customization hooks; think Durov-aesthetic where every screen feels engineered rather than designed.
|
|
8
|
+
|
|
9
|
+
Typography is SF Pro on iOS, rendered with Telegram's very particular attention to size hierarchy. Chat bubbles default to 17pt regular; contact names 17pt semibold; timestamps 11pt. But Telegram's real typographic signature is how it renders *expressive content*: animated emoji (Lottie-level vector animations on message-sent triggers), custom sticker packs that auto-scale, syntax-highlighted code blocks in monospace, and message formatting (bold, italic, spoiler, quote, code) applied inline. A Telegram chat is a typographic playground in a way WhatsApp's intentionally is not.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- Sky Blue (`#0088CC` / `#40A7E3`) default accent — but **every color is themeable**, including custom user-picked hex
|
|
13
|
+
- True white canvas (`#FFFFFF`) light / crushed black (`#212121` or `#000000` OLED) dark
|
|
14
|
+
- Outgoing bubble (`#2B86FD` blue, default theme) — bubble color is themeable; some themes use gradients
|
|
15
|
+
- Custom chat backgrounds per-chat (gradients, patterns, photos, solid colors)
|
|
16
|
+
- Swipe-from-edge to reply — full-screen iOS-native pan gesture, not a right-swipe on the row
|
|
17
|
+
- Floating mini-player for voice messages and music — pinned across chat navigation
|
|
18
|
+
- Animated emoji + sticker packs (Lottie-style vector animations) that play on send
|
|
19
|
+
- Silent message send (long-press the send button) — a signature Telegram gesture
|
|
20
|
+
- Secret chats with self-destruct timers — visually distinct with a lock icon on the chat header
|
|
21
|
+
- Channel vs Group distinction — broadcast-only channels have "Subscribers" (no reply affordance)
|
|
22
|
+
- Custom Telegram-style outlined icons — NOT SF Symbols everywhere, a proprietary icon vocabulary
|
|
23
|
+
- Up to 2GB file sharing, shown inline as a progress card
|
|
24
|
+
- OLED dark mode (`#000000`) as a toggle option separate from standard dark
|
|
25
|
+
|
|
26
|
+
## 2. Color Palette & Roles
|
|
27
|
+
|
|
28
|
+
### Primary (Default Blue Theme)
|
|
29
|
+
- **Telegram Blue** (`#0088CC`): Classic accent — nav bar tint, text links, active tab icon.
|
|
30
|
+
- **Sky Blue** (`#40A7E3`): Lighter accent — selection highlights, toggles ON.
|
|
31
|
+
- **Bubble Blue (Outgoing)** (`#2B86FD`): Outgoing chat bubble fill in the default blue theme.
|
|
32
|
+
- **Deep Blue (Pressed)** (`#0071B0`): Pressed state for primary blue buttons.
|
|
33
|
+
|
|
34
|
+
### Accent Variants (User-Selectable)
|
|
35
|
+
Telegram lets the user pick any accent color. The UI adapts — every blue surface re-paints to the chosen hex. Common accent palette Telegram offers:
|
|
36
|
+
- Green Mint (`#3FC1B0`), Rose (`#FF5C77`), Orange (`#FB8C4A`), Purple (`#6F7BF7`), Raspberry (`#C9426B`), Cyan (`#2AAFBA`), Yellow (`#FFAC45`).
|
|
37
|
+
|
|
38
|
+
### Canvas & Surfaces (Light Theme)
|
|
39
|
+
- **Canvas** (`#FFFFFF`): Chat list, settings, chat canvas when no wallpaper set.
|
|
40
|
+
- **Chat Background (Default Blue Wallpaper)** (`#DBE7F4`): Default soft-blue chat wallpaper (though user can set any).
|
|
41
|
+
- **Surface 1** (`#F7F7F7`): Section group background, settings list tint.
|
|
42
|
+
- **Surface 2** (`#EFEFF4`): iOS grouped list background.
|
|
43
|
+
- **Divider** (`#C7C7CC`): Hairline separator (iOS default tint).
|
|
44
|
+
|
|
45
|
+
### Canvas & Surfaces (Dark Theme — Default)
|
|
46
|
+
- **Canvas (Dark)** (`#212121`): Standard dark canvas — a crushed near-black.
|
|
47
|
+
- **Surface 1 (Dark)** (`#1C1C1C`): Card background, elevated surface.
|
|
48
|
+
- **Surface 2 (Dark)** (`#2C2C2E`): Bottom-sheet, modal, context-menu background.
|
|
49
|
+
- **Divider (Dark)** (`#383838`): Dark-mode hairline separator.
|
|
50
|
+
|
|
51
|
+
### Canvas & Surfaces (OLED Dark — Optional)
|
|
52
|
+
- **OLED Canvas** (`#000000`): Pure black for OLED battery savings.
|
|
53
|
+
- **OLED Surface** (`#0A0A0A`): Subtle elevation over pure black.
|
|
54
|
+
|
|
55
|
+
### Chat Bubbles
|
|
56
|
+
- **Outgoing Bubble (Light)** (`#2B86FD`): Default blue theme — bubble background.
|
|
57
|
+
- **Outgoing Bubble Gradient**: Some themes use `#2B86FD → #61B3FF` vertical gradient.
|
|
58
|
+
- **Outgoing Text** (`#FFFFFF`): White text on blue bubble.
|
|
59
|
+
- **Incoming Bubble (Light)** (`#FFFFFF`): White fill with 1pt `#E5E5E5` border.
|
|
60
|
+
- **Incoming Bubble (Dark)** (`#2A2A2A`): Dark-mode incoming fill.
|
|
61
|
+
- **Secret Chat Outgoing** (`#4EA53C` green tint): Secret chat messages are subtly different.
|
|
62
|
+
|
|
63
|
+
### Text
|
|
64
|
+
- **Text Primary (Light)** (`#000000`): Bubble text, contact names, titles.
|
|
65
|
+
- **Text Secondary (Light)** (`#707579`): Message preview, timestamps, metadata.
|
|
66
|
+
- **Text Tertiary (Light)** (`#A0A6AD`): Placeholder, disabled.
|
|
67
|
+
- **Text Primary (Dark)** (`#FFFFFF`): Dark-mode primary.
|
|
68
|
+
- **Text Secondary (Dark)** (`#8D8E93`): Dark-mode metadata.
|
|
69
|
+
|
|
70
|
+
### Semantic
|
|
71
|
+
- **Read Receipt Blue** (`#0088CC`): Double check = seen. Color matches accent.
|
|
72
|
+
- **Sent Gray** (`#B1B1B1`): Single check = sent.
|
|
73
|
+
- **Error Red** (`#E53935`): Destructive actions, failed send.
|
|
74
|
+
- **Destructive Red** (`#E35561`): Delete chat, block user, kick member.
|
|
75
|
+
- **Online Green** (`#4DD364`): "Online now" status under contact name.
|
|
76
|
+
- **Verified Blue** (`#0088CC` with check): Verified channels / users.
|
|
77
|
+
- **Premium Purple** (`#AE6FFD → #CE6BFF` gradient): Telegram Premium badge, stars, and special reactions.
|
|
78
|
+
|
|
79
|
+
### Sender Colors (Group Chats)
|
|
80
|
+
Telegram assigns each sender a color from a 7-color palette for their name in group chats — for scannability. Typical palette:
|
|
81
|
+
- `#FC5C51` (red), `#FA790F` (orange), `#895DD5` (purple), `#0FB297` (green), `#00C1A6` (teal), `#3CA5EC` (blue), `#FF5274` (pink).
|
|
82
|
+
|
|
83
|
+
### Message States
|
|
84
|
+
- **Unread Divider** (`#B1B1B1` text + `#E5E5E5` line or `#0088CC` accent): Horizontal "Unread messages" line dividing old and new messages in a chat.
|
|
85
|
+
|
|
86
|
+
## 3. Typography Rules
|
|
87
|
+
|
|
88
|
+
### Font Family
|
|
89
|
+
- **Primary**: `SF Pro Text` (body) and `SF Pro Display` (titles) — iOS native. Telegram ships no proprietary font in its mobile app.
|
|
90
|
+
- **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
91
|
+
- **Monospace**: `SF Mono` — used in code blocks (triple-backtick Markdown), pre-formatted text.
|
|
92
|
+
- **Emoji**: Apple Color Emoji — Telegram also supports custom emoji packs that render as animated Lottie files inline.
|
|
93
|
+
- **Non-Latin**: Full iOS font substitution; Telegram is heavily used in Cyrillic, Arabic, Persian, CJK.
|
|
94
|
+
|
|
95
|
+
### Hierarchy
|
|
96
|
+
|
|
97
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
98
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
99
|
+
| Large Title | SF Pro Display | 34pt | 700 | 1.12 | 0.37pt | "Chats", "Settings" large titles |
|
|
100
|
+
| Screen Title | SF Pro Display | 17pt | 600 | 1.18 | -0.4pt | Nav bar title collapsed state |
|
|
101
|
+
| Contact Name | SF Pro Text | 17pt | 600 | 1.23 | -0.4pt | Chat list, profile titles |
|
|
102
|
+
| Bubble Body | SF Pro Text | 17pt | 400 | 1.29 | -0.4pt | Chat bubble text |
|
|
103
|
+
| Bubble Sender (Group) | SF Pro Text | 14pt | 600 | 1.23 | -0.2pt | Sender name inside bubble (tinted color) |
|
|
104
|
+
| Message Preview | SF Pro Text | 15pt | 400 | 1.33 | -0.2pt | Chat list last message preview |
|
|
105
|
+
| Timestamp (List) | SF Pro Text | 13pt | 400 | 1.2 | 0pt | Chat list time |
|
|
106
|
+
| Timestamp (Bubble) | SF Pro Text | 11pt | 400 | 1.0 | 0pt | In-bubble timestamp |
|
|
107
|
+
| Section Header | SF Pro Text | 13pt | 400 | 1.2 | 0pt | iOS grouped list section labels |
|
|
108
|
+
| Body | SF Pro Text | 17pt | 400 | 1.4 | -0.4pt | Body text, Settings rows |
|
|
109
|
+
| Callout | SF Pro Text | 16pt | 400 | 1.3 | -0.3pt | Link previews, attachments |
|
|
110
|
+
| Footnote | SF Pro Text | 13pt | 400 | 1.3 | -0.1pt | Sub-copy, hints |
|
|
111
|
+
| Caption | SF Pro Text | 12pt | 400 | 1.3 | 0pt | Metadata, file sizes |
|
|
112
|
+
| Tab Label | SF Pro Text | 10pt | 500 | 1.0 | 0.1pt | Bottom tab labels |
|
|
113
|
+
| Button (Primary) | SF Pro Text | 17pt | 600 | 1.0 | -0.4pt | iOS native button type |
|
|
114
|
+
| Code (Monospace) | SF Mono | 15pt | 400 | 1.4 | 0pt | Inline code & code blocks |
|
|
115
|
+
| Blockquote | SF Pro Text | 17pt | 400 italic | 1.3 | -0.4pt | Quoted-reply block text |
|
|
116
|
+
|
|
117
|
+
### Principles
|
|
118
|
+
- **Defer to iOS**: Like WhatsApp, Telegram's iOS app adheres to Apple HIG type sizes closely.
|
|
119
|
+
- **Dynamic Type supported**: Bubble text, contact names, message previews all scale.
|
|
120
|
+
- **Inline formatting**: Telegram renders bold, italic, underline, strikethrough, spoiler, code, pre, link as inline styling inside bubbles using Markdown-ish syntax (bold via `**`, italic via `__`, spoiler via `||`).
|
|
121
|
+
- **Theme-coupled color**: Link color and sender-name tints inherit from the user's chosen accent color.
|
|
122
|
+
- **Animated emoji replace static**: When a recipient sends a single emoji, Telegram often plays a fullscreen Lottie animation — type escapes its frame.
|
|
123
|
+
|
|
124
|
+
## 4. Component Stylings
|
|
125
|
+
|
|
126
|
+
### Buttons
|
|
127
|
+
|
|
128
|
+
**Primary Send Button (In Compose Bar)**
|
|
129
|
+
- Shape: Tappable text/icon button, no container
|
|
130
|
+
- Icon: Custom Telegram paper-plane glyph (NOT SF Symbol) — 26pt
|
|
131
|
+
- Color: `#0088CC` (accent) when text present; same as inactive when empty (shows `mic` / `camera` icons instead)
|
|
132
|
+
- Long-press: Opens silent-send / schedule-send menu
|
|
133
|
+
- Haptic: soft impact on send
|
|
134
|
+
|
|
135
|
+
**Primary Button (Sheet / Onboarding CTA)**
|
|
136
|
+
- Shape: Full-width rectangle, 10pt corner radius
|
|
137
|
+
- Height: 50pt
|
|
138
|
+
- Background: `#0088CC` (accent)
|
|
139
|
+
- Text: white, SF Pro Text 17pt weight 600
|
|
140
|
+
- Pressed: `#0071B0` + scale 0.98
|
|
141
|
+
- Used for: "Continue", "Log In", "Create Account", "Join"
|
|
142
|
+
|
|
143
|
+
**Secondary Text Button**
|
|
144
|
+
- Background: transparent
|
|
145
|
+
- Text: `#0088CC` (accent) or `#E53935` (destructive)
|
|
146
|
+
- Font: SF Pro Text 17pt weight 400
|
|
147
|
+
- No fill, no border — pure iOS link style
|
|
148
|
+
|
|
149
|
+
**Floating Send in Compose (with morph)**
|
|
150
|
+
- When text is empty: show mic + attach + camera icons (24pt each, gray `#707579`)
|
|
151
|
+
- When text is present: send paper-plane icon (`#0088CC`) replaces the cluster
|
|
152
|
+
- Crossfade morph on keystroke change
|
|
153
|
+
|
|
154
|
+
**Floating Action Menu (Compose Attach)**
|
|
155
|
+
- Triggered by + attach icon
|
|
156
|
+
- Bottom sheet with labeled grid: Photo/Video, File, Location, Contact, Poll, Music
|
|
157
|
+
- Each tile: 64pt circular blue icon + 13pt label beneath
|
|
158
|
+
|
|
159
|
+
### Cards & Containers
|
|
160
|
+
|
|
161
|
+
**Chat List Row**
|
|
162
|
+
- Height: 76pt
|
|
163
|
+
- Structure: 54pt circular avatar (leading, 16pt inset) → 12pt gap → stacked (name + preview + verified check if applicable) → trailing (time + unread pill + muted icon + pinned icon)
|
|
164
|
+
- Background: `#FFFFFF` light / `#212121` dark
|
|
165
|
+
- Pressed: `#F2F2F7` light / `#2C2C2E` dark
|
|
166
|
+
- Swipe-left: Mute, Delete, More
|
|
167
|
+
- Swipe-right: Read/Unread, Pin, Archive
|
|
168
|
+
- Pinned row: slightly shaded background `#F7F7F7` and pin glyph trailing
|
|
169
|
+
|
|
170
|
+
**Chat Bubble (Outgoing — Default Blue Theme)**
|
|
171
|
+
- Max width: 80% of chat canvas
|
|
172
|
+
- Background: `#2B86FD` (or gradient `#2B86FD → #61B3FF` in gradient themes)
|
|
173
|
+
- Text color: white
|
|
174
|
+
- Padding: 8pt vertical, 12pt horizontal
|
|
175
|
+
- Corner radius: 17pt on all corners EXCEPT bottom-trailing which is 6pt (soft tail, not a full point)
|
|
176
|
+
- Trailing: 11pt white timestamp + double check read-tick (white)
|
|
177
|
+
- Tap-and-hold: reveals reactions + context menu (copy, reply, forward, edit, delete, pin)
|
|
178
|
+
|
|
179
|
+
**Chat Bubble (Incoming)**
|
|
180
|
+
- Max width: 80%
|
|
181
|
+
- Background: `#FFFFFF` light / `#2A2A2A` dark
|
|
182
|
+
- Text color: `#000000` light / `#FFFFFF` dark
|
|
183
|
+
- 1pt border: `#E5E5E5` light only (visible on plain-white wallpapers)
|
|
184
|
+
- Corner radius: 17pt all corners EXCEPT bottom-leading which is 6pt
|
|
185
|
+
- Trailing: 11pt `#707579` timestamp
|
|
186
|
+
|
|
187
|
+
**Quote Block (Inline Reply Preview)**
|
|
188
|
+
- Nested at TOP of bubble that's replying
|
|
189
|
+
- 3pt vertical accent bar on leading edge in sender's group color (or accent `#0088CC`)
|
|
190
|
+
- Background: 10% tint over bubble bg
|
|
191
|
+
- Sender name 13pt weight 600 in accent
|
|
192
|
+
- Quoted text 13pt regular, 2-line clamp
|
|
193
|
+
|
|
194
|
+
**File Attachment Card (inside bubble)**
|
|
195
|
+
- Horizontal card inside a bubble
|
|
196
|
+
- Leading 40pt circular icon (file type colored — PDF red, ZIP gray, music blue)
|
|
197
|
+
- File name 15pt weight 600 + size 13pt `#707579`
|
|
198
|
+
- Tap to download; shows circular progress ring overlay on icon
|
|
199
|
+
|
|
200
|
+
**Link Preview Card (inside bubble)**
|
|
201
|
+
- Image (if available) at top, full-width of bubble (16pt corner radius inherited, no rounding inside bubble)
|
|
202
|
+
- Source name 13pt weight 600 accent color
|
|
203
|
+
- Title 15pt weight 600
|
|
204
|
+
- Description 13pt `#707579`
|
|
205
|
+
- Appears above the message text, not below
|
|
206
|
+
|
|
207
|
+
### Navigation
|
|
208
|
+
|
|
209
|
+
**Bottom Tab Bar**
|
|
210
|
+
- Height: 49pt + safe area
|
|
211
|
+
- Background: `.regularMaterial` blur over `#FFFFFF` (light) / `#1C1C1C` (dark) at 92% opacity
|
|
212
|
+
- Tabs: Contacts, Calls, Chats, Settings (iOS default; may vary per user preference)
|
|
213
|
+
- Icon: 28pt (Telegram custom outlined icons, NOT SF Symbols)
|
|
214
|
+
- Active color: `#0088CC` (user accent)
|
|
215
|
+
- Inactive: `#8D8E93`
|
|
216
|
+
- Labels: SF Pro 10pt weight 500, always shown
|
|
217
|
+
- Badge: red circle with white count, top-right
|
|
218
|
+
|
|
219
|
+
**Top Nav (Chat Screen)**
|
|
220
|
+
- Height: 44pt + safe area
|
|
221
|
+
- Leading: back chevron + avatar (32pt) + contact name + typing/last-seen status (13pt gray)
|
|
222
|
+
- Trailing: video-call icon + phone-call icon + more-ellipsis (for secret chats: lock-icon replaces phone)
|
|
223
|
+
- Background: same blur treatment as tab bar
|
|
224
|
+
- Secret chat: small lock emoji next to the name — slight green-tint background
|
|
225
|
+
|
|
226
|
+
**Top Nav (Chat List)**
|
|
227
|
+
- Large-title "Chats" scroll-collapsing
|
|
228
|
+
- Leading: "Edit" text button
|
|
229
|
+
- Trailing: New chat icon (Telegram pencil-with-circle custom glyph)
|
|
230
|
+
- Search bar: pulls down on overscroll, 36pt pill
|
|
231
|
+
|
|
232
|
+
### Input Fields
|
|
233
|
+
|
|
234
|
+
**Compose Bar**
|
|
235
|
+
- Height: ~44pt single-line, grows to 120pt multiline
|
|
236
|
+
- Structure: leading attach + icon → multiline text field → trailing emoji face → sticker icon → voice-mic OR send
|
|
237
|
+
- Background: `#FFFFFF` light / `#1C1C1C` dark (elevated over chat canvas)
|
|
238
|
+
- Input field: inline, no pill container (different from WhatsApp) — just a text field
|
|
239
|
+
- Placeholder: "Message", 16pt `#A0A6AD`
|
|
240
|
+
- Bottom 1pt `#E5E5E5` divider from chat canvas
|
|
241
|
+
|
|
242
|
+
**Search Bar**
|
|
243
|
+
- Native iOS search bar (`.searchable` in SwiftUI)
|
|
244
|
+
- Background: `#F2F2F7` light / `#1C1C1C` dark
|
|
245
|
+
- Height: 36pt
|
|
246
|
+
- Cancel button text: accent color `#0088CC`
|
|
247
|
+
|
|
248
|
+
### Distinctive Components
|
|
249
|
+
|
|
250
|
+
**Animated Emoji / Sticker Playback**
|
|
251
|
+
Telegram's crown jewel. When a message contains exactly one emoji (or certain large emoji), it renders at a much bigger size and plays a Lottie animation on receipt/send.
|
|
252
|
+
- Size: Single emoji = 72pt rendered glyph
|
|
253
|
+
- Animation: Lottie/vector loop, ~2-3s duration, played once on arrival
|
|
254
|
+
- Some "interactive" emojis (heart, rocket) play a full-screen effect across both sender's and receiver's screens simultaneously
|
|
255
|
+
- Custom sticker packs: users and channels publish free or premium packs; render as 128pt animated vectors in bubbles
|
|
256
|
+
|
|
257
|
+
**Floating Voice/Music Mini Player**
|
|
258
|
+
Persistent pill that floats above the chat canvas when a voice message or music track is playing — similar to a Picture-in-Picture pill.
|
|
259
|
+
- Position: top of chat screen, just below nav bar
|
|
260
|
+
- Background: `#FFFFFF` light / `#1C1C1C` dark, with subtle shadow
|
|
261
|
+
- Height: 40pt
|
|
262
|
+
- Content: track title + horizontal waveform/progress + close X
|
|
263
|
+
- Tap: jump back to the playing message; swipe down: dismiss
|
|
264
|
+
- Persists across chat switches — this is unique to Telegram
|
|
265
|
+
|
|
266
|
+
**Swipe-from-Edge to Reply**
|
|
267
|
+
Not a swipe on the row — a gesture that lets you pan the entire bubble horizontally (usually to the left for outgoing, right for incoming) to trigger a reply.
|
|
268
|
+
- Threshold: ~60pt horizontal drag
|
|
269
|
+
- Visual: an arrow-with-hook icon appears at the drag edge as the bubble moves
|
|
270
|
+
- Haptic: soft tick at threshold
|
|
271
|
+
- Release past threshold: opens reply composer with that message quoted
|
|
272
|
+
|
|
273
|
+
**Silent Message Send (Long-Press Send)**
|
|
274
|
+
Long-pressing the send button opens a popover menu:
|
|
275
|
+
- Send Without Sound (no push notification sound on recipient)
|
|
276
|
+
- Schedule Message (pick a future time)
|
|
277
|
+
- Send When Online (auto-send when recipient comes online)
|
|
278
|
+
- This gesture is a core Telegram differentiator.
|
|
279
|
+
|
|
280
|
+
**Self-Destruct Timer (Secret Chats)**
|
|
281
|
+
Secret chats have a clock glyph next to the compose bar; tapping sets a timer (1s → 1 week). After recipient views, the message erases.
|
|
282
|
+
- Timer indicator: small countdown clock on read bubbles
|
|
283
|
+
- Secret chat header: lock emoji + "Secret Chat" + timer setting
|
|
284
|
+
- Screenshot notification: Telegram notifies the sender if the recipient screenshots a secret chat
|
|
285
|
+
|
|
286
|
+
**Reactions (Emoji Reaction Palette)**
|
|
287
|
+
- Long-press any message → reactions palette appears
|
|
288
|
+
- Free users: ~6 preset emojis (heart, thumbs-up, fire, laugh, surprise, cry)
|
|
289
|
+
- Premium users: any emoji + custom animated reactions
|
|
290
|
+
- Palette: horizontal floating capsule with reactions + a "+" for full picker
|
|
291
|
+
- Reaction chip appears below-trailing of bubble after pick; shows count if multiple users reacted
|
|
292
|
+
- Tap reaction chip to add yours; long-press to see who reacted
|
|
293
|
+
|
|
294
|
+
**Channel Broadcast vs Group**
|
|
295
|
+
- **Channel**: broadcast-only; users are "Subscribers" not "Members"; only admins post; no inline reply UI for most users; reactions + comments via linked-group
|
|
296
|
+
- **Group** / **Supergroup**: anyone can post; reply + mention + admin tools visible
|
|
297
|
+
- Channel avatar often has a custom accent color/background for identity
|
|
298
|
+
- Channels can have a custom gradient header (purple, rainbow) — the "channel color" feature
|
|
299
|
+
|
|
300
|
+
**Custom Chat Background**
|
|
301
|
+
Per-chat configurable: solid color, gradient, pattern tile, or photo. Accessible via chat settings.
|
|
302
|
+
|
|
303
|
+
## 5. Layout Principles
|
|
304
|
+
|
|
305
|
+
### Spacing System
|
|
306
|
+
- Base unit: 4pt
|
|
307
|
+
- Scale: 4, 8, 12, 16, 20, 24, 32, 44, 56, 76
|
|
308
|
+
- Standard screen margin: 16pt horizontal
|
|
309
|
+
- Chat bubble margin from edge: 8pt
|
|
310
|
+
- Between bubbles same sender: 2pt; different sender: 8pt
|
|
311
|
+
|
|
312
|
+
### Grid & Container
|
|
313
|
+
- Content width: full device width
|
|
314
|
+
- Chat canvas: full bleed; bubbles max 80%
|
|
315
|
+
- Settings list: iOS grouped list with 16pt insets
|
|
316
|
+
|
|
317
|
+
### Whitespace Philosophy
|
|
318
|
+
- **Defer to iOS density**: Telegram follows iOS list patterns — 44pt minimum row heights, standard padding.
|
|
319
|
+
- **Chat canvas breathes**: Bubbles have 8pt gaps between different senders; the wallpaper/canvas is meant to be visible.
|
|
320
|
+
- **Floating elements pop**: The voice mini-player floats with shadow — it's meant to feel separate from the content.
|
|
321
|
+
|
|
322
|
+
### Border Radius Scale
|
|
323
|
+
- Square (0pt): Status bar overlays, rare
|
|
324
|
+
- Soft (6pt): Bubble tail corner (not fully pointed, a soft notch)
|
|
325
|
+
- Standard (10pt): Primary sheet CTAs, file cards
|
|
326
|
+
- Bubble (17pt): Main chat bubble corner radius
|
|
327
|
+
- Comfortable (20pt): Context menu, reactions palette
|
|
328
|
+
- Pill (22-28pt): Floating voice player, filter chips
|
|
329
|
+
- Full Circle (50%): Avatars, profile photos, send button (when designed as circle)
|
|
330
|
+
|
|
331
|
+
## 6. Depth & Elevation
|
|
332
|
+
|
|
333
|
+
| Level | Treatment | Use |
|
|
334
|
+
|-------|-----------|-----|
|
|
335
|
+
| Flat (0) | No shadow | List rows, bubbles on canvas |
|
|
336
|
+
| Subtle (1) | `rgba(0,0,0,0.08) 0 1px 3px` | Incoming bubbles (very subtle) |
|
|
337
|
+
| Floating (2) | `rgba(0,0,0,0.16) 0 4px 16px` | Voice mini-player, reactions palette |
|
|
338
|
+
| Sheet (3) | `rgba(0,0,0,0.25) 0 -12px 32px` | Action sheets, modals |
|
|
339
|
+
| Modal Overlay | `rgba(0,0,0,0.45)` backdrop | Context menu overlay, attachment picker |
|
|
340
|
+
| Nav Blur | `.regularMaterial` 92% | Top nav and bottom tab |
|
|
341
|
+
|
|
342
|
+
**Shadow Philosophy**: Telegram is flatter than most messengers; shadows are reserved for floating, detached elements (the voice pill, the reactions palette, the context menu popover). Chat bubbles are intentionally shadow-less; they sit flat on the canvas. The context-menu popover on long-press is the one place where heavy blur + dark backdrop creates real depth.
|
|
343
|
+
|
|
344
|
+
### Motion
|
|
345
|
+
- **Bubble send**: Slides up and lands with a slight overshoot spring (damping 0.6)
|
|
346
|
+
- **Animated emoji**: Lottie timeline 1.5-3s, plays once on arrival
|
|
347
|
+
- **Interactive emoji (heart/rocket)**: Full-screen animation sync'd across sender + receiver
|
|
348
|
+
- **Swipe-to-reply**: 60fps pan, haptic tick at threshold
|
|
349
|
+
- **Silent send long-press**: Standard iOS long-press 0.5s threshold → popover
|
|
350
|
+
- **Voice mini-player entry**: Slides down from top over 200ms
|
|
351
|
+
- **Reactions palette appearance**: Scales from center of bubble with spring, 300ms
|
|
352
|
+
- **Custom background pan**: On scroll, background may subtly parallax (can be disabled)
|
|
353
|
+
- **Context menu open**: Bubble "lifts" up with scale 1.05, backdrop blurs, menu fans out below
|
|
354
|
+
|
|
355
|
+
## 7. Do's and Don'ts
|
|
356
|
+
|
|
357
|
+
### Do
|
|
358
|
+
- Use `#0088CC` (Telegram Blue) as the default accent — but build the system so accent is a single variable that users can change
|
|
359
|
+
- Use `#2B86FD` for outgoing bubbles in default blue theme; support accent-tinted outgoing bubbles
|
|
360
|
+
- Respect user-selected chat backgrounds (solid, gradient, tile, photo)
|
|
361
|
+
- Use SF Pro + Telegram's proprietary outlined icon vocabulary (NOT SF Symbols alone)
|
|
362
|
+
- Offer OLED dark mode (`#000000`) as a distinct option from default dark
|
|
363
|
+
- Support inline Markdown-ish formatting (bold, italic, spoiler, code, pre)
|
|
364
|
+
- Animate single-emoji messages with Lottie playback
|
|
365
|
+
- Include the silent-send and scheduled-send long-press gesture on the send button
|
|
366
|
+
- Use the floating voice mini-player when audio is playing — pin it across chats
|
|
367
|
+
- Use swipe-from-edge (not swipe-from-row) to trigger reply
|
|
368
|
+
|
|
369
|
+
### Don't
|
|
370
|
+
- Don't hardcode accent color — theme it; the accent variable should cascade
|
|
371
|
+
- Don't use WhatsApp's asymmetric tail — Telegram bubble tails are SUBTLY notched (6pt), not pointed
|
|
372
|
+
- Don't use warm cream chat backgrounds; Telegram defaults to cool white/soft-blue or pure dark
|
|
373
|
+
- Don't use SF Symbols for everything — Telegram's tab bar uses outlined custom glyphs
|
|
374
|
+
- Don't dim the whole screen on long-press — only the backdrop around the context menu blurs
|
|
375
|
+
- Don't use shadows on chat bubbles — they're flat
|
|
376
|
+
- Don't hide the read-receipt timestamp — Telegram shows time + ticks consistently
|
|
377
|
+
- Don't auto-delete messages without the secret-chat UI indicating it
|
|
378
|
+
- Don't use green for read receipts (that's WhatsApp) — use accent-colored check-check
|
|
379
|
+
- Don't skip the scheduled-send option — it's a core differentiator
|
|
380
|
+
|
|
381
|
+
## 8. Responsive Behavior
|
|
382
|
+
|
|
383
|
+
### Device Sizes
|
|
384
|
+
| Device | Width | Key Changes |
|
|
385
|
+
|--------|-------|-------------|
|
|
386
|
+
| iPhone SE (3rd gen) | 375pt | Bubble max 78%; avatar 50pt in chat list |
|
|
387
|
+
| iPhone 13/14/15 | 390pt | Standard 54pt avatar, 80% bubble |
|
|
388
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in voice mini-player |
|
|
389
|
+
| iPhone 15/16 Pro Max | 430pt | Avatar grows to 56pt |
|
|
390
|
+
| iPad | 768pt+ | Split view: chat list left, conversation right; bubbles constrained to 60% of right pane |
|
|
391
|
+
|
|
392
|
+
### Dynamic Type
|
|
393
|
+
- Bubble body, contact name, message preview: full scale
|
|
394
|
+
- Inline timestamp: fixed 11pt
|
|
395
|
+
- Tab labels: fixed 10pt
|
|
396
|
+
- Large title: scales to 40pt max
|
|
397
|
+
- Lottie emoji: scales with text size up to 96pt
|
|
398
|
+
|
|
399
|
+
### Orientation
|
|
400
|
+
- Chat list / Settings: portrait-locked on iPhone
|
|
401
|
+
- Calls: rotate to landscape
|
|
402
|
+
- Media viewer: rotate to landscape
|
|
403
|
+
- iPad: all orientations supported
|
|
404
|
+
|
|
405
|
+
### Touch Targets
|
|
406
|
+
- Send icon: 44pt effective hit
|
|
407
|
+
- Chat list row: 76pt
|
|
408
|
+
- Reactions palette emojis: 36pt glyph, 48pt hit
|
|
409
|
+
- Tab bar icons: 28pt glyph, 44pt hit
|
|
410
|
+
- Bubble swipe-to-reply threshold: 60pt drag
|
|
411
|
+
|
|
412
|
+
### Safe Area Handling
|
|
413
|
+
- Top: safe area honored
|
|
414
|
+
- Voice mini-player: sits just below nav bar, above chat content
|
|
415
|
+
- Bottom: compose bar hugs safe area
|
|
416
|
+
- Keyboard: native iOS push
|
|
417
|
+
|
|
418
|
+
## 9. Agent Prompt Guide
|
|
419
|
+
|
|
420
|
+
### Quick Color Reference
|
|
421
|
+
- Telegram Blue (accent): `#0088CC`
|
|
422
|
+
- Sky Blue (lighter): `#40A7E3`
|
|
423
|
+
- Bubble Blue (outgoing): `#2B86FD`
|
|
424
|
+
- Bubble Pressed: `#0071B0`
|
|
425
|
+
- Canvas (light): `#FFFFFF`
|
|
426
|
+
- Canvas (dark): `#212121`
|
|
427
|
+
- Canvas (OLED): `#000000`
|
|
428
|
+
- Surface 1 (light): `#F7F7F7`
|
|
429
|
+
- Surface 1 (dark): `#1C1C1C`
|
|
430
|
+
- Surface 2 (dark): `#2C2C2E`
|
|
431
|
+
- Chat background (default blue tile): `#DBE7F4`
|
|
432
|
+
- Text primary (light): `#000000`
|
|
433
|
+
- Text secondary (light): `#707579`
|
|
434
|
+
- Text primary (dark): `#FFFFFF`
|
|
435
|
+
- Text secondary (dark): `#8D8E93`
|
|
436
|
+
- Online green: `#4DD364`
|
|
437
|
+
- Error red: `#E53935`
|
|
438
|
+
- Premium purple gradient: `#AE6FFD → #CE6BFF`
|
|
439
|
+
|
|
440
|
+
### Example Component Prompts
|
|
441
|
+
- "Create a SwiftUI Telegram outgoing bubble: max-width 80%, background #2B86FD, text #FFFFFF at SF Pro 17pt weight 400. Corner radius 17pt on all corners EXCEPT bottom-trailing which is 6pt (subtle notch). Inline trailing timestamp '10:24' 11pt white at 80% opacity + white double-check ticks 12pt."
|
|
442
|
+
- "Build the Telegram compose bar: no pill container — just a flat text field with leading paperclip attach icon (24pt #707579) and trailing emoji face + sticker + mic icons. When text present, trailing morphs to a single #0088CC paper-plane. Long-press send reveals the silent-send / scheduled-send popover menu."
|
|
443
|
+
- "Design the floating voice mini-player: 40pt tall rounded-pill (22pt radius) pinned just below the nav bar, background #FFFFFF light / #1C1C1C dark with rgba(0,0,0,0.16) 0 4px 16px shadow. Content: 13pt weight 600 track title + horizontal waveform/progress + close X. Swipe-down to dismiss; persists across chat switches."
|
|
444
|
+
- "Create the chat list row: 76pt height, 54pt circular avatar leading, 12pt gap, stacked contact name 17pt weight 600 + preview 15pt weight 400 #707579. Trailing: 13pt timestamp #707579 top-right, unread pill (#0088CC background, white text 13pt, 10pt corner radius), muted/pinned icons as applicable. Pinned rows have #F7F7F7 background tint."
|
|
445
|
+
- "Build a Telegram context menu on bubble long-press: bubble scales 1.05, backdrop blurs with .regularMaterial, reactions palette appears ABOVE bubble (floating capsule, 48pt emoji size, #FFFFFF background, 24pt corner radius, 16pt shadow), and action menu appears BELOW bubble with Reply, Copy, Forward, Edit, Delete — native iOS context menu with 20pt corner radius and #2C2C2E dark tint."
|
|
446
|
+
- "Design a Telegram self-destruct timer secret-chat header: nav bar has a 14pt lock.shield emoji next to contact name, a tiny countdown '10s' badge, and a subtle #C8E6C9 tint on the nav background. Chat canvas gets a green-tinged watermark lock glyph in the bottom corner at 10% opacity."
|
|
447
|
+
|
|
448
|
+
### Iteration Guide
|
|
449
|
+
1. Canvas defaults to `#FFFFFF` light / `#212121` dark — offer an OLED toggle for `#000000`
|
|
450
|
+
2. Accent color is a SINGLE variable — every blue surface reads from it, because users theme the app
|
|
451
|
+
3. Outgoing bubble `#2B86FD` default; support gradient outgoing `#2B86FD → #61B3FF` for gradient themes
|
|
452
|
+
4. Bubble corner radius is 17pt everywhere EXCEPT the tail corner (6pt notch — not fully pointed)
|
|
453
|
+
5. Bubbles are FLAT — no shadows. Shadows are only on the voice pill and context menu popover.
|
|
454
|
+
6. Typography is pure SF Pro at iOS HIG sizes; inline formatting (bold, italic, spoiler, code) via Markdown syntax
|
|
455
|
+
7. Swipe-from-edge triggers reply (not swipe-on-row) — bubble pans with user finger
|
|
456
|
+
8. Long-press send button opens silent-send / scheduled-send popover — don't skip this
|
|
457
|
+
9. Animated Lottie emoji + sticker playback on single-emoji messages — scale to 72pt glyph
|
|
458
|
+
10. Floating voice mini-player pins below nav bar when audio plays — persistent across chats
|