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,337 @@
|
|
|
1
|
+
# Design System Inspiration of Mastodon (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Mastodon's iOS app is a calm, readable, content-first timeline that feels closer to a well-set magazine than to an algorithmic firehose. The default surface is pure white (`#FFFFFF`) with near-black text (`#000000`), and the dark variant inverts to a deep blue-gray (`#191B22`) rather than a true black — the subtle blue cast is part of Mastodon's identity, echoing its purple wordmark. The interface trusts the reader: generous line height, comfortable left-aligned text, and toot cards separated by hairline dividers rather than heavy boxes. There is no infinite-scroll dopamine engineering here; the chronological timeline and the federated-timeline switcher are front and center.
|
|
6
|
+
|
|
7
|
+
The accent system is anchored by Mastodon Purple (`#6364FF`) — a friendly indigo used for links, the active tab, the compose FAB, and primary buttons. Its pressed state deepens to `#563ACC`. The one other chromatic moment is the boost: when you reblog a toot, the boost icon turns a confident green (`#2DCE89`) and performs a satisfying 360° spin. Favourites are a warm star, replies and shares stay neutral. This restrained two-color logic (purple for navigation/identity, green for the boost) keeps the timeline legible while giving the most social action — amplification — a distinct, joyful signature.
|
|
8
|
+
|
|
9
|
+
Typography is the system font (San Francisco) used at comfortable reading sizes, mapped onto a fallback of Inter / Roboto for cross-platform parity. Toot bodies sit at 16pt with 1.45 line height for sustained reading; display names are 16pt semibold; the federated `@user@instance.social` handle is 14pt in muted gray, always visible because the instance *is* the identity in a federated network. The most distinctive type-adjacent component is the content-warning spoiler: a collapsed card with a one-line warning and a "SHOW MORE" button that expands the hidden body inline — a structural commitment to consent-first reading.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- White canvas (`#FFFFFF`) / blue-tinted dark (`#191B22`) — never true black
|
|
13
|
+
- Mastodon Purple (`#6364FF`) for links, active tab, compose FAB, primary actions
|
|
14
|
+
- Boost green (`#2DCE89`) with a 360° spin — the signature amplification gesture
|
|
15
|
+
- Federated `@user@instance` handle always shown — identity is the instance
|
|
16
|
+
- Content-warning spoiler cards — collapsed by default, "SHOW MORE" expands inline
|
|
17
|
+
- Federated timeline switcher: Home / Local / Federated segmented at the top
|
|
18
|
+
- Toot card action row: Reply · Boost · Favourite · Share, evenly spaced
|
|
19
|
+
- System font at reading sizes (16pt body, 1.45 line height), Inter/Roboto fallback
|
|
20
|
+
- Bottom tabs (Home / Search / Notifications / Profile) + a floating compose FAB
|
|
21
|
+
|
|
22
|
+
## 2. Color Palette & Roles
|
|
23
|
+
|
|
24
|
+
### Primary
|
|
25
|
+
- **Mastodon Purple** (`#6364FF`): Links, active tab tint, compose FAB, primary button fill, mention/hashtag text.
|
|
26
|
+
- **Purple Pressed** (`#563ACC`): Active/pressed state for purple CTAs and the FAB.
|
|
27
|
+
- **Boost Green** (`#2DCE89`): Boost icon active state, "boosted by" attribution, the spin gesture.
|
|
28
|
+
|
|
29
|
+
### Light Mode (Default)
|
|
30
|
+
- **Canvas** (`#FFFFFF`): Primary background, timeline surface.
|
|
31
|
+
- **Surface 1** (`#FFFFFF`): Toot cards (flat on canvas, separated by dividers).
|
|
32
|
+
- **Surface 2** (`#F2F3F8`): Grouped settings rows, search field, pressed list rows.
|
|
33
|
+
- **Divider** (`#C0CDD9`): Hairline separators between toots and list rows.
|
|
34
|
+
- **Text Primary** (`#000000`): Toot body, display names, headlines.
|
|
35
|
+
- **Text Secondary** (`#606984`): `@user@instance` handles, timestamps, metadata, counts.
|
|
36
|
+
- **Text Tertiary** (`#8B95A8`): Disabled labels, very low-emphasis hints.
|
|
37
|
+
|
|
38
|
+
### Dark Mode
|
|
39
|
+
- **Dark Canvas** (`#191B22`): Primary background — deep blue-gray, NOT pure black.
|
|
40
|
+
- **Dark Surface 1** (`#282C37`): Toot cards, elevated rows.
|
|
41
|
+
- **Dark Surface 2** (`#313543`): Search field, sheets, pressed rows.
|
|
42
|
+
- **Dark Divider** (`#393F4F`): Hairline separators in dark mode.
|
|
43
|
+
- **Dark Text Primary** (`#FFFFFF`): Toot body, names.
|
|
44
|
+
- **Dark Text Secondary** (`#9BAEC8`): Handles, timestamps, metadata.
|
|
45
|
+
|
|
46
|
+
### Semantic
|
|
47
|
+
- **Favourite Gold** (`#CA8F04`): Active favourite (star) state.
|
|
48
|
+
- **Error Red** (`#DF405A`): Failed posts, destructive confirms, validation.
|
|
49
|
+
- **Success Green** (`#2DCE89`): Same as boost green — posted/confirmed states.
|
|
50
|
+
- **Verified Purple** (`#6364FF`): Verified-link checkmark on profiles.
|
|
51
|
+
|
|
52
|
+
## 3. Typography Rules
|
|
53
|
+
|
|
54
|
+
### Font Family
|
|
55
|
+
- **Primary**: `SF Pro Text` / `SF Pro Display` (system) on iOS
|
|
56
|
+
- **Cross-platform parity**: `Inter` (web/Android reference), then `Roboto`
|
|
57
|
+
- **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'Inter', 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
58
|
+
- **Monospace (code toots)**: `ui-monospace, 'SF Mono', Menlo, monospace`
|
|
59
|
+
|
|
60
|
+
### Hierarchy
|
|
61
|
+
|
|
62
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
63
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
64
|
+
| Screen Title (Large) | SF Pro Display | 28pt | 700 | 1.2 | -0.4pt | "Notifications", "Explore" large nav title |
|
|
65
|
+
| Section Header | SF Pro Display | 22pt | 700 | 1.2 | -0.3pt | "Trending now", profile section heads |
|
|
66
|
+
| Display Name | SF Pro Text | 16pt | 600 | 1.25 | -0.2pt | Poster's display name on a toot card |
|
|
67
|
+
| Toot Body | SF Pro Text | 16pt | 400 | 1.45 | 0pt | The status text — tuned for sustained reading |
|
|
68
|
+
| Body (Settings) | SF Pro Text | 15pt | 400 | 1.4 | 0pt | Settings descriptions, about text |
|
|
69
|
+
| Handle / Meta | SF Pro Text | 14pt | 400 | 1.3 | 0pt | `@user@instance.social`, "2h", "via Web" |
|
|
70
|
+
| CW Warning | SF Pro Text | 15pt | 600 | 1.35 | 0pt | The content-warning line on a spoiler card |
|
|
71
|
+
| Action Count | SF Pro Text | 13pt | 500 | 1.2 | 0pt | Reply/boost/favourite numeric counts |
|
|
72
|
+
| Button (Primary) | SF Pro Text | 16pt | 600 | 1.0 | -0.2pt | "Publish", "Follow" |
|
|
73
|
+
| Button (Show More) | SF Pro Text | 14pt | 700 | 1.0 | 0.2pt | "SHOW MORE" on CW cards |
|
|
74
|
+
| Tab Label | SF Pro Text | 10pt | 600 | 1.0 | 0.1pt | Bottom tab bar labels |
|
|
75
|
+
| Timestamp Inline | SF Pro Text | 13pt | 400 | 1.2 | 0pt | Trailing time on a toot header |
|
|
76
|
+
|
|
77
|
+
### Principles
|
|
78
|
+
- **Reading-first body**: 16pt at 1.45 line height — Mastodon optimizes for paragraphs, not glances
|
|
79
|
+
- **Handle is always visible**: the `@user@instance` is a 14pt structural element, never truncated away
|
|
80
|
+
- **Weight at 400 / 500 / 600 / 700**: regular body, medium counts, semibold names, bold "SHOW MORE"
|
|
81
|
+
- **System font, Inter fallback**: keeps iOS native feel while matching the web client's Inter rendering
|
|
82
|
+
- **Purple text only for links/mentions/hashtags** — body text never uses the accent
|
|
83
|
+
|
|
84
|
+
## 4. Component Stylings
|
|
85
|
+
|
|
86
|
+
### Buttons
|
|
87
|
+
|
|
88
|
+
**Primary Button ("Publish" / "Follow")**
|
|
89
|
+
- Background: `#6364FF`
|
|
90
|
+
- Text: `#FFFFFF`
|
|
91
|
+
- Padding: 12pt vertical, 24pt horizontal
|
|
92
|
+
- Corner radius: 8pt (Mastodon uses soft rectangles, not full pills, for primary buttons)
|
|
93
|
+
- Font: SF Pro Text 16pt weight 600
|
|
94
|
+
- Pressed: `#563ACC`, scale 0.98
|
|
95
|
+
- Disabled: `#6364FF` at 40% opacity
|
|
96
|
+
|
|
97
|
+
**Secondary / Following Button**
|
|
98
|
+
- Background: transparent
|
|
99
|
+
- Text: `#6364FF` (light) / `#9BAEC8` (dark)
|
|
100
|
+
- Border: 1pt solid `#C0CDD9` (light) / `#393F4F` (dark)
|
|
101
|
+
- Padding: 10pt vertical, 20pt horizontal
|
|
102
|
+
- Corner radius: 8pt
|
|
103
|
+
- Pressed: background `#F2F3F8`
|
|
104
|
+
|
|
105
|
+
**Compose FAB**
|
|
106
|
+
- Shape: Circle, 56pt diameter, bottom-right, 16pt from edges (floats above tab bar)
|
|
107
|
+
- Background: `#6364FF`
|
|
108
|
+
- Icon: SF Symbol `square.and.pencil` 24pt in `#FFFFFF`
|
|
109
|
+
- Shadow: `rgba(99,100,255,0.35) 0 6px 20px`
|
|
110
|
+
- Pressed: scale 0.94, `#563ACC`, soft haptic
|
|
111
|
+
|
|
112
|
+
**Toot Action Icons (Reply / Boost / Favourite / Share)**
|
|
113
|
+
- Size: 18pt glyph, 44pt hit area
|
|
114
|
+
- Default: `#606984` (light) / `#9BAEC8` (dark)
|
|
115
|
+
- Boost active: `#2DCE89` (with 360° spin on activation)
|
|
116
|
+
- Favourite active: `#CA8F04` (gold, fill + scale bounce)
|
|
117
|
+
- Spacing: evenly distributed across the card's full content width
|
|
118
|
+
- Count: 13pt w500 trailing each icon when > 0
|
|
119
|
+
|
|
120
|
+
### Cards & Containers
|
|
121
|
+
|
|
122
|
+
**Toot Card (THE core unit)**
|
|
123
|
+
- Background: `#FFFFFF` (light) / `#282C37` (dark) — flat, no shadow
|
|
124
|
+
- Separator: 1pt `#C0CDD9` divider below each card (cards touch)
|
|
125
|
+
- Padding: 16pt all sides
|
|
126
|
+
- Header: 46pt rounded-square avatar (8pt radius) → display name (16pt w600) + `@user@instance` (14pt `#606984`) → trailing timestamp (13pt) + ⋯
|
|
127
|
+
- Body: 16pt w400, 1.45 line height, links/mentions/hashtags in `#6364FF`
|
|
128
|
+
- Media: rounded 12pt corner image grid (1–4 attachments)
|
|
129
|
+
- Action row: Reply · Boost · Favourite · Share evenly spaced, 12pt above bottom padding
|
|
130
|
+
- "Boosted by Name" attribution row above the header in 13pt `#606984` with a small green boost glyph when applicable
|
|
131
|
+
|
|
132
|
+
**Content-Warning Spoiler Card**
|
|
133
|
+
- Collapsed: warning text (15pt w600) + a "SHOW MORE" button (14pt w700 uppercase) on a `#F2F3F8` (light) / `#313543` (dark) inset block, 8pt radius
|
|
134
|
+
- Expanded: body reveals inline below the warning with a 0.25s height/opacity transition; button label flips to "SHOW LESS"
|
|
135
|
+
- The warning row keeps a small `eye.slash` glyph leading the text
|
|
136
|
+
|
|
137
|
+
**Profile Header**
|
|
138
|
+
- Banner image full-width, 150pt tall
|
|
139
|
+
- Avatar 86pt rounded-square (12pt radius), overlapping the banner by 40pt, 4pt canvas-colored ring
|
|
140
|
+
- Display name 22pt w700, `@user@instance` 15pt `#606984`
|
|
141
|
+
- Bio with clickable mentions/hashtags in purple
|
|
142
|
+
- Fields table (verified links show a green/purple check)
|
|
143
|
+
- "Follow" primary button + bell + ⋯
|
|
144
|
+
|
|
145
|
+
**Notification Row**
|
|
146
|
+
- 46pt avatar + bold actor name + action verb ("boosted your post", "followed you")
|
|
147
|
+
- A small tinted glyph indicates the type: green boost arrows, gold favourite star, purple follow person
|
|
148
|
+
- Tap opens the related toot or profile
|
|
149
|
+
|
|
150
|
+
### Navigation
|
|
151
|
+
|
|
152
|
+
**Bottom Tab Bar**
|
|
153
|
+
- Height: 52pt + safe area
|
|
154
|
+
- Background: `rgba(255,255,255,0.94)` (light) / `rgba(25,27,34,0.94)` (dark) with `.regularMaterial` blur
|
|
155
|
+
- Tabs: Home, Search, Notifications, Profile
|
|
156
|
+
- Icon size: 26pt
|
|
157
|
+
- Active: `#6364FF`; Inactive: `#606984` (light) / `#9BAEC8` (dark)
|
|
158
|
+
- Labels: SF Pro Text 10pt w600
|
|
159
|
+
- Notifications tab shows a purple unread dot badge
|
|
160
|
+
|
|
161
|
+
**Federated Timeline Switcher**
|
|
162
|
+
- A segmented control pinned under the nav on the Home tab: **Home · Local · Federated**
|
|
163
|
+
- Selected segment: `#6364FF` text with a 2pt purple underline indicator
|
|
164
|
+
- Unselected: `#606984`
|
|
165
|
+
- Switching slides the timeline with a 0.25s cross-fade + horizontal nudge
|
|
166
|
+
|
|
167
|
+
**Top Nav**
|
|
168
|
+
- Height: 44pt + safe area
|
|
169
|
+
- Large title (28pt w700) collapsing to inline on scroll
|
|
170
|
+
- Trailing settings/filter icon (22pt)
|
|
171
|
+
- Blur-on-scroll background
|
|
172
|
+
|
|
173
|
+
### Input Fields
|
|
174
|
+
|
|
175
|
+
**Search Field**
|
|
176
|
+
- Background: `#F2F3F8` (light) / `#313543` (dark)
|
|
177
|
+
- Height: 40pt, corner radius 10pt
|
|
178
|
+
- Leading `magnifyingglass` 16pt `#606984`
|
|
179
|
+
- Placeholder: "Search Mastodon", 15pt w400 `#606984`
|
|
180
|
+
- Focus: 1.5pt `#6364FF` ring
|
|
181
|
+
|
|
182
|
+
**Compose Editor**
|
|
183
|
+
- Full-screen sheet, plain text area at 18pt w400 for comfortable writing
|
|
184
|
+
- Character ring counter (500 default) top-right that turns `#DF405A` past the limit
|
|
185
|
+
- CW toggle (`eye.slash`), media, poll, visibility, language chips in a toolbar above the keyboard
|
|
186
|
+
- Visibility selector: Public / Unlisted / Followers / Mentioned (globe/lock glyphs)
|
|
187
|
+
|
|
188
|
+
### Distinctive Components
|
|
189
|
+
|
|
190
|
+
**Content-Warning Spoiler Reveal**
|
|
191
|
+
- The signature consent-first pattern: hidden body, one-line warning, "SHOW MORE"
|
|
192
|
+
- Expansion animates height + opacity over 0.25s ease-out; collapse is symmetric
|
|
193
|
+
- Persists per-toot in the session (re-collapses on relaunch)
|
|
194
|
+
|
|
195
|
+
**Boost-with-Spin**
|
|
196
|
+
- Tapping boost flips the arrows to `#2DCE89` and spins the icon 360° over 0.4s
|
|
197
|
+
- Un-boosting spins back -360° and returns to neutral
|
|
198
|
+
- Paired with a success haptic; the count increments with a tiny vertical roll
|
|
199
|
+
|
|
200
|
+
**Federated Timeline Switch**
|
|
201
|
+
- The Home/Local/Federated control reframes the entire feed — a core Mastodon mental model surfaced as a first-class switcher, not buried in settings
|
|
202
|
+
|
|
203
|
+
**Reply-Controls Chip**
|
|
204
|
+
- A small chip on the composer indicating who can reply (Everyone / Followers / Mentioned), echoing the visibility model — purple when restricted
|
|
205
|
+
|
|
206
|
+
## 5. Layout Principles
|
|
207
|
+
|
|
208
|
+
### Spacing System
|
|
209
|
+
- Base unit: 4pt
|
|
210
|
+
- Scale: 4, 8, 12, 16, 20, 24, 32, 40, 56
|
|
211
|
+
- Standard margin: 16pt horizontal on toot cards
|
|
212
|
+
- Toot vertical rhythm: cards touch; a 1pt divider provides separation
|
|
213
|
+
|
|
214
|
+
### Grid & Container
|
|
215
|
+
- Content width: full device width, 16pt internal card padding
|
|
216
|
+
- Media grid: 1 image full-width 12pt radius; 2–4 images in a 2-col 12pt-radius mosaic with 2pt gaps
|
|
217
|
+
- Profile fields: 2-column key/value table
|
|
218
|
+
|
|
219
|
+
### Whitespace Philosophy
|
|
220
|
+
- **Reading comfort over density**: 16pt body at 1.45 line height; cards breathe internally
|
|
221
|
+
- **Dividers, not boxes**: separation is a hairline, keeping the timeline visually quiet
|
|
222
|
+
- **Action row spaced wide**: the four actions span the full card width so each has a generous target
|
|
223
|
+
|
|
224
|
+
### Border Radius Scale
|
|
225
|
+
- Square (0pt): Rare — full-bleed banners only
|
|
226
|
+
- Soft (8pt): Buttons, avatars (rounded-square), CW inset blocks, search field-ish
|
|
227
|
+
- Comfortable (10–12pt): Search field, media attachments
|
|
228
|
+
- Large (16pt): Bottom sheets, modals
|
|
229
|
+
- Circle (50%): Compose FAB, notification-type glyph chips, boost/favourite hit circles
|
|
230
|
+
- Note: Mastodon avatars are **rounded-squares (8–12pt)**, not circles — a deliberate identity choice
|
|
231
|
+
|
|
232
|
+
## 6. Depth & Elevation
|
|
233
|
+
|
|
234
|
+
| Level | Treatment | Use |
|
|
235
|
+
|-------|-----------|-----|
|
|
236
|
+
| Flat (Level 0) | No shadow | Toot cards, timeline, list rows |
|
|
237
|
+
| Card Hairline (Level 1) | 1pt divider `#C0CDD9` / `#393F4F` | Toot-to-toot separation |
|
|
238
|
+
| FAB (Level 2) | `rgba(99,100,255,0.35) 0 6px 20px` | Floating compose button |
|
|
239
|
+
| Sheet (Level 3) | `rgba(0,0,0,0.15) 0 -12px 40px` (light) / `rgba(0,0,0,0.5)` (dark) | Compose sheet, context menus |
|
|
240
|
+
| Tab Bar Material | `.regularMaterial` over 94%-opaque canvas | Bottom tab bar over scrolling content |
|
|
241
|
+
| Blur Overlay | scrim `rgba(0,0,0,0.4)` + backdrop-blur 30 | Image lightbox, modal dim |
|
|
242
|
+
|
|
243
|
+
**Shadow Philosophy**: Mastodon is almost entirely flat — the timeline reads like a document. The only true elevation is the purple compose FAB (a colored, brand-tinted shadow) and modal sheets. Cards never lift; separation comes from hairline dividers. In dark mode shadows deepen to 0.5 opacity to register on the blue-gray canvas, while in light mode they stay barely-there at 0.15.
|
|
244
|
+
|
|
245
|
+
### Motion
|
|
246
|
+
- **Boost spin**: icon rotates 360° over 0.4s ease-out, color → `#2DCE89`, success haptic
|
|
247
|
+
- **Favourite bounce**: star fills + scales 1.0 → 1.2 → 1.0 over 300ms, gold `#CA8F04`
|
|
248
|
+
- **CW expand/collapse**: height + opacity over 0.25s ease-out, symmetric
|
|
249
|
+
- **Timeline switch**: 0.25s cross-fade + 8pt horizontal nudge between Home/Local/Federated
|
|
250
|
+
- **Compose FAB**: scale 0.94 on press, soft haptic; sheet presents with a 0.35s spring
|
|
251
|
+
- **Pull-to-refresh**: standard system spinner, no custom flourish
|
|
252
|
+
|
|
253
|
+
## 7. Do's and Don'ts
|
|
254
|
+
|
|
255
|
+
### Do
|
|
256
|
+
- Use white `#FFFFFF` light / blue-gray `#191B22` dark — never true black for the dark canvas
|
|
257
|
+
- Reserve Mastodon Purple (`#6364FF`) for links, mentions, hashtags, the active tab, FAB, and primary buttons
|
|
258
|
+
- Make the boost a 360° spin to `#2DCE89` — it's the signature amplification moment
|
|
259
|
+
- Always show the full `@user@instance` handle — identity is federated
|
|
260
|
+
- Default content-warning bodies to collapsed with a "SHOW MORE" reveal
|
|
261
|
+
- Render avatars as rounded-squares (8–12pt), not circles
|
|
262
|
+
- Surface the Home/Local/Federated switcher prominently on the timeline
|
|
263
|
+
- Keep cards flat and separate them with hairline dividers, not shadows
|
|
264
|
+
|
|
265
|
+
### Don't
|
|
266
|
+
- Don't use pure black for dark mode — the blue cast (`#191B22`) is Mastodon's identity
|
|
267
|
+
- Don't add accent colors beyond purple and boost-green — the timeline must stay legible
|
|
268
|
+
- Don't truncate or hide the instance part of a handle
|
|
269
|
+
- Don't auto-expand content warnings — consent-first means collapsed by default
|
|
270
|
+
- Don't make avatars circular — Mastodon uses rounded-squares deliberately
|
|
271
|
+
- Don't box every toot with borders/shadows — dividers keep it quiet and readable
|
|
272
|
+
- Don't shrink body text below 16pt — this is a reading app
|
|
273
|
+
- Don't animate aggressively — the only flourish is the boost spin and favourite bounce
|
|
274
|
+
|
|
275
|
+
## 8. Responsive Behavior
|
|
276
|
+
|
|
277
|
+
### Device Sizes
|
|
278
|
+
| Device | Width | Key Changes |
|
|
279
|
+
|--------|-------|-------------|
|
|
280
|
+
| iPhone SE (3rd gen) | 375pt | Avatar 42pt; media grid still 2-col |
|
|
281
|
+
| iPhone 13/14/15 | 390pt | Standard 46pt avatar, 16pt card padding |
|
|
282
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island clears the large title |
|
|
283
|
+
| iPhone 15/16 Pro Max | 430pt | Body line measure widens; FAB stays 56pt |
|
|
284
|
+
| iPad | 768pt+ | Multi-column: timeline + detail split view, max 680pt reading column |
|
|
285
|
+
|
|
286
|
+
### Dynamic Type
|
|
287
|
+
- Toot body, display names, bios: full scale (this is a reading app — honor it generously)
|
|
288
|
+
- Action counts, timestamps: scale modestly
|
|
289
|
+
- Tab labels: fixed 10pt
|
|
290
|
+
- "SHOW MORE" button: fixed 14pt
|
|
291
|
+
|
|
292
|
+
### Orientation
|
|
293
|
+
- Timeline / Profile: portrait and landscape (iPad supports split view)
|
|
294
|
+
- Image lightbox: rotates to landscape for wide media
|
|
295
|
+
- Compose: portrait-locked on iPhone
|
|
296
|
+
|
|
297
|
+
### Touch Targets
|
|
298
|
+
- Toot action icons: 18pt glyph, 44pt hit circle
|
|
299
|
+
- Compose FAB: 56pt
|
|
300
|
+
- Tab icons: 26pt glyph, 44pt effective hit
|
|
301
|
+
- "SHOW MORE": full warning-block width is tappable
|
|
302
|
+
|
|
303
|
+
### Safe Area Handling
|
|
304
|
+
- Top: large title and timeline switcher sit below safe area / Dynamic Island
|
|
305
|
+
- Bottom: FAB floats 16pt above the tab bar; both respect the home indicator
|
|
306
|
+
- Sides: 16pt content insets, banner goes edge-to-edge
|
|
307
|
+
|
|
308
|
+
## 9. Agent Prompt Guide
|
|
309
|
+
|
|
310
|
+
### Quick Color Reference
|
|
311
|
+
- Light canvas: `#FFFFFF` · Dark canvas: `#191B22`
|
|
312
|
+
- Light surface 2: `#F2F3F8` · Dark surface 1: `#282C37`
|
|
313
|
+
- Divider: `#C0CDD9` (light) / `#393F4F` (dark)
|
|
314
|
+
- Text primary: `#000000` (light) / `#FFFFFF` (dark)
|
|
315
|
+
- Text secondary: `#606984` (light) / `#9BAEC8` (dark)
|
|
316
|
+
- Mastodon Purple (action/link): `#6364FF`
|
|
317
|
+
- Purple pressed: `#563ACC`
|
|
318
|
+
- Boost green: `#2DCE89`
|
|
319
|
+
- Favourite gold: `#CA8F04`
|
|
320
|
+
- Error red: `#DF405A`
|
|
321
|
+
|
|
322
|
+
### Example Component Prompts
|
|
323
|
+
- "Create a SwiftUI Mastodon toot card: 46pt rounded-square avatar (8pt radius) leading, display name 'Eugen' in SF Pro 16pt weight 600 and handle '@Gargron@mastodon.social' in 14pt #606984 below it, trailing '2h' timestamp 13pt and a ⋯ menu. Body text 16pt weight 400 at 1.45 line height with links/mentions/hashtags in #6364FF. Below: a Reply · Boost · Favourite · Share row, icons 18pt, evenly spaced across the full card width, with 13pt weight-500 counts. Flat #FFFFFF card with a 1pt #C0CDD9 divider beneath."
|
|
324
|
+
- "Build the Mastodon boost action: an 18pt boost-arrows icon, default #606984; on tap it turns #2DCE89 and spins 360° over 0.4s ease-out with a success haptic, and the trailing count rolls up by one. Tapping again spins -360° back to neutral."
|
|
325
|
+
- "Design a Mastodon content-warning spoiler card: collapsed by default showing an eye.slash glyph + warning text 15pt weight 600 and a 'SHOW MORE' button 14pt weight 700 uppercase on a #F2F3F8 inset block with 8pt radius. On tap the hidden body expands inline with a 0.25s height+opacity ease-out and the label flips to 'SHOW LESS'."
|
|
326
|
+
- "Create the Mastodon federated timeline switcher: a segmented control 'Home · Local · Federated' pinned under the nav; selected segment uses #6364FF text with a 2pt purple underline, unselected is #606984. Switching cross-fades the feed over 0.25s with an 8pt horizontal nudge."
|
|
327
|
+
- "Build the Mastodon compose FAB: a 56pt circular button, #6364FF, bottom-right 16pt from the edges, SF Symbol 'square.and.pencil' 24pt #FFFFFF, shadow rgba(99,100,255,0.35) 0 6px 20px. Pressed: scale 0.94, color #563ACC, soft haptic; opens the compose sheet with a 0.35s spring."
|
|
328
|
+
|
|
329
|
+
### Iteration Guide
|
|
330
|
+
1. Light canvas `#FFFFFF`; dark canvas is blue-gray `#191B22` — never pure black
|
|
331
|
+
2. Purple `#6364FF` is links + navigation + primary actions; boost-green `#2DCE89` is the one other accent
|
|
332
|
+
3. The boost is a 360° spin to green — make it the most joyful gesture in the app
|
|
333
|
+
4. Always render the full `@user@instance` handle — federation is the identity model
|
|
334
|
+
5. Content warnings collapse by default with "SHOW MORE" — consent-first reading
|
|
335
|
+
6. Avatars are rounded-squares (8–12pt), not circles
|
|
336
|
+
7. Cards are flat; separate with 1pt dividers, not shadows — the timeline is a document
|
|
337
|
+
8. Body text is 16pt at 1.45 line height — never compromise readability for density
|