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,433 @@
|
|
|
1
|
+
# Design System Inspiration of Asana (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Asana's iOS app is a calm, structured productivity surface whose entire personality comes from one warm color and a disciplined list. The default canvas is white (`#FFFFFF`) in light mode and a near-neutral charcoal (`#1E1F21`) in dark mode — Asana's signature dark, NOT pure black. The app opens to **My Tasks**: a vertically scrolling list of task rows, each with a leading circular checkbox, a task name, and a row of small metadata pills (project, due date, assignee avatar). This list IS the product. Everything else — the project board, the timeline, the inbox — is a different rendering of the same task objects.
|
|
6
|
+
|
|
7
|
+
The one piece of chrome that defines Asana visually is the **completion circle**. Every task row begins with a 20pt hollow circle that, when tapped, fills with the success green (`#62D26F`) and draws a white checkmark with a soft "celebration" animation (occasionally a flying unicorn or narwhal "celebration creature" on full-section completion). This circle is the emotional core of Asana — the moment of marking something done is deliberately satisfying. The other signature moment is the **coral floating action button (FAB)** — a 56pt circular `#F06A6A` button bottom-right that creates a new task from anywhere.
|
|
8
|
+
|
|
9
|
+
The color system is built around **Asana Coral** (`#F06A6A`) — a soft, warm red-pink that is the single brand accent. It is identical in light and dark mode. Around it sits a **multicolor object palette**: every project, tag, and custom field can be assigned one of a fixed set of hues — Plum Blue (`#4573D2`), Aqua (`#4ECBC4`), Green (`#62D26F`), Yellow (`#F8DF72`), Orange (`#F1BD6C`), Magenta (`#F26FD3`), Indigo (`#5A3FFF`), and more. In the UI these appear as low-opacity tint chips: a green pill with green text on a 16% green background, an aqua "project" tag, etc. Project **status updates** use a four-state semantic system: On track (aqua/green), At risk (yellow), Off track (red), Complete (green). Asana avoids heavy fills — color is a soft glow, never a slab.
|
|
10
|
+
|
|
11
|
+
Typography is **Inter** — the modern geometric-humanist workhorse Asana adopted for its product UI and marketing site (its older custom face being phased toward Inter on web/mobile). On iOS it falls back to SF Pro when Inter isn't bundled. Hierarchy is product-UI: a large 32pt screen title ("My Tasks"), 26pt nav titles, 22pt section heads, 15pt task-row names, 14pt metadata, 12pt pills. Headings are weight 700-800; task names sit at a confident 500; body at 400. The type system is quiet and legible — it gets out of the way so the list reads fast.
|
|
12
|
+
|
|
13
|
+
**Key Characteristics:**
|
|
14
|
+
- White canvas (`#FFFFFF`) light / charcoal (`#1E1F21`) dark — calm, near-neutral, NOT pure black
|
|
15
|
+
- The task list IS the product — a scroll of rows, each = checkbox + name + metadata pills
|
|
16
|
+
- Completion circle — 20pt hollow circle fills green (`#62D26F`) with a celebratory checkmark on tap
|
|
17
|
+
- Coral FAB — 56pt circular `#F06A6A` "create task" button bottom-right, identical in both themes
|
|
18
|
+
- Multicolor object palette — projects/tags/fields each get a fixed hue (plum/aqua/green/yellow/orange/magenta/indigo)
|
|
19
|
+
- Color as soft tint — pills are 16-18% opacity backgrounds with saturated text, never solid slabs
|
|
20
|
+
- Four-state status updates — On track / At risk / Off track / Complete with a colored badge
|
|
21
|
+
- View switcher tabs — List / Board / Calendar / Timeline / Files — same tasks, different renderings
|
|
22
|
+
- Section headers with collapse caret — "Today", "Upcoming", "Later" group the task list
|
|
23
|
+
- Assignee avatars — 22pt circular initials/photo on the trailing edge of each task row
|
|
24
|
+
- Minimal navigation chrome — bottom tab bar (Home / My Tasks / Inbox / Search) + per-screen view tabs
|
|
25
|
+
|
|
26
|
+
## 2. Color Palette & Roles
|
|
27
|
+
|
|
28
|
+
### Primary (Interactive)
|
|
29
|
+
- **Asana Coral** (`#F06A6A`): The single brand accent — FAB, primary CTAs, active tab, selection underline, links-as-buttons. Identical in light & dark.
|
|
30
|
+
- **Coral Pressed** (`#D85B5B`): Pressed/active state of coral surfaces.
|
|
31
|
+
- **Coral Tint** (`#F06A6A1F`): 12% coral wash behind selected rows / coral chips.
|
|
32
|
+
- **Link / Action Blue** (`#4573D2`): Inline text links, "Mark complete" text actions, mention chips.
|
|
33
|
+
|
|
34
|
+
### Canvas & Surfaces (Light Mode)
|
|
35
|
+
- **Canvas White** (`#FFFFFF`): Primary light canvas, task list background.
|
|
36
|
+
- **Surface Gray** (`#F9F8F8`): Sidebar, grouped surfaces, hovered rows.
|
|
37
|
+
- **Surface Pressed** (`#F0EFEF`): Pressed/selected rows.
|
|
38
|
+
- **Divider** (`#EDEBE9`): Hairline between task rows and sections.
|
|
39
|
+
- **Card Border** (`#E8E6E4`): 1pt border on board cards.
|
|
40
|
+
|
|
41
|
+
### Canvas & Surfaces (Dark Mode)
|
|
42
|
+
- **Dark Canvas** (`#1E1F21`): Primary dark canvas — Asana's signature charcoal, NOT pure black.
|
|
43
|
+
- **Dark Surface 1** (`#252628`): Cards, grouped surfaces.
|
|
44
|
+
- **Dark Surface 2** (`#2E2F31`): Board columns, elevated chips, hovered rows.
|
|
45
|
+
- **Dark Divider** (`#35363A`): Hairline dividers.
|
|
46
|
+
- **Dark Card Border** (`#3A3B3F`): 1pt border on board cards in dark.
|
|
47
|
+
|
|
48
|
+
### Text
|
|
49
|
+
- **Text Primary Light** (`#1E1F21`): Primary body text in light mode.
|
|
50
|
+
- **Text Secondary Light** (`#6D6E6F`): Metadata, section counts, placeholders.
|
|
51
|
+
- **Text Tertiary Light** (`#9CA3A6`): Disabled, completed-task strikethrough.
|
|
52
|
+
- **Text Primary Dark** (`#F5F4F2`): Primary body on dark — warm off-white.
|
|
53
|
+
- **Text Secondary Dark** (`#A9A9AA`): Metadata on dark.
|
|
54
|
+
- **Text Tertiary Dark** (`#6F7073`): Disabled / completed on dark.
|
|
55
|
+
|
|
56
|
+
### Object Palette (Project / Tag / Custom-field Hues)
|
|
57
|
+
These are the fixed colors a user assigns to projects, tags, sections, and custom fields. In UI they appear as a saturated text on a ~16% opacity fill of the same hue.
|
|
58
|
+
|
|
59
|
+
| Role | Solid Hue | Tint Fill (Light) | Tint Fill (Dark) |
|
|
60
|
+
|------|-----------|-------------------|------------------|
|
|
61
|
+
| Plum Blue | `#4573D2` | `#4573D214` | `#4573D229` |
|
|
62
|
+
| Aqua | `#4ECBC4` | `#4ECBC414` | `#4ECBC429` |
|
|
63
|
+
| Green | `#62D26F` | `#62D26F14` | `#62D26F29` |
|
|
64
|
+
| Yellow | `#F8DF72` | `#F8DF7224` | `#F8DF7229` |
|
|
65
|
+
| Orange | `#F1BD6C` | `#F1BD6C1F` | `#F1BD6C29` |
|
|
66
|
+
| Magenta | `#F26FD3` | `#F26FD314` | `#F26FD329` |
|
|
67
|
+
| Indigo | `#5A3FFF` | `#5A3FFF14` | `#5A3FFF29` |
|
|
68
|
+
| Cool Gray | `#8DA3B0` | `#8DA3B014` | `#8DA3B029` |
|
|
69
|
+
|
|
70
|
+
### Project Status (Semantic — Status Updates)
|
|
71
|
+
| Role | Color | Use |
|
|
72
|
+
|------|-------|-----|
|
|
73
|
+
| On Track | `#4ECBC4` | Green/aqua status badge — project healthy |
|
|
74
|
+
| At Risk | `#F8DF72` | Yellow status badge — needs attention |
|
|
75
|
+
| Off Track | `#E8384F` | Red status badge — blocked / slipping |
|
|
76
|
+
| Complete | `#62D26F` | Green status badge — project done |
|
|
77
|
+
|
|
78
|
+
### Semantic
|
|
79
|
+
- **Success Green** (`#62D26F`): Completed checkbox fill, success toast.
|
|
80
|
+
- **Error Red** (`#E8384F`): Overdue due-date pill, delete confirmation, off-track.
|
|
81
|
+
- **Warning Yellow** (`#F8DF72`): At-risk badge, warning callout.
|
|
82
|
+
- **Overdue Tint** (`#E8384F2E`): 18% red behind an overdue date pill.
|
|
83
|
+
- **Mention Background** (`#4573D21A`): 10% blue behind @-mention chips.
|
|
84
|
+
|
|
85
|
+
## 3. Typography Rules
|
|
86
|
+
|
|
87
|
+
### Font Family
|
|
88
|
+
- **Primary**: `Inter` (by Rasmus Andersson, 2020, SIL OFL) — geometric humanist sans optimized for UI; the face Asana uses across its product and marketing surfaces.
|
|
89
|
+
- **Numeric**: Inter tabular figures for due-dates, counts, and task numbers (`font-feature-settings: "tnum"`).
|
|
90
|
+
- **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
91
|
+
- **iOS Note**: On iOS the system falls back to SF Pro Text/Display when the bundled Inter face is absent — the metrics are close enough to preserve rhythm.
|
|
92
|
+
|
|
93
|
+
### Hierarchy
|
|
94
|
+
|
|
95
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
96
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
97
|
+
| Screen Title | Inter | 32pt | 800 | 1.15 | -0.5pt | "My Tasks", "Inbox" — large nav title |
|
|
98
|
+
| Nav Title | Inter | 26pt | 700 | 1.2 | -0.3pt | Project / section detail title |
|
|
99
|
+
| Section Header | Inter | 22pt | 700 | 1.25 | -0.2pt | "Project status update" headings |
|
|
100
|
+
| Subsection | Inter | 18pt | 600 | 1.3 | -0.1pt | "Assigned to you", group labels |
|
|
101
|
+
| Body | Inter | 16pt | 400 | 1.5 | 0pt | Task descriptions, comments |
|
|
102
|
+
| Task Row | Inter | 15pt | 500 | 1.35 | 0pt | The task name in a list row |
|
|
103
|
+
| List Section Label | Inter | 13pt | 700 | 1.2 | 0.2pt | "Today" / "Upcoming" group caret rows |
|
|
104
|
+
| Meta | Inter | 14pt | 400 | 1.35 | 0pt | Due date, project name, counts |
|
|
105
|
+
| Pill | Inter | 12pt | 600 | 1.0 | 0.1pt | Project tag, status pill, due chip |
|
|
106
|
+
| Button | Inter | 15pt | 600 | 1.0 | 0pt | Primary / secondary buttons |
|
|
107
|
+
| Text Action | Inter | 14pt | 600 | 1.0 | 0pt | "Mark complete", "Add subtask" |
|
|
108
|
+
| Avatar Initials | Inter | 10pt | 700 | 1.0 | 0.2pt | Initials inside assignee circle |
|
|
109
|
+
| Tab Label | Inter | 10pt | 600 | 1.0 | 0.1pt | Bottom tab bar labels |
|
|
110
|
+
| Comment Author | Inter | 14pt | 700 | 1.3 | 0pt | Comment / story author name |
|
|
111
|
+
|
|
112
|
+
### Principles
|
|
113
|
+
- **List legibility first**: the 15pt/500 task row is the most-read text in the app — it must stay crisp at scanning speed.
|
|
114
|
+
- **Weight concentrated at 400 / 500 / 600 / 700 / 800**: regular body, medium task rows, semibold buttons & pills, bold headings, extrabold screen titles. No thin.
|
|
115
|
+
- **Tabular numerals everywhere there are dates/counts**: due dates, section counts, "3 of 8 complete" must not jitter.
|
|
116
|
+
- **Quiet by design**: type carries no brand expression — Inter is neutral; the personality is the coral accent and the completion circle.
|
|
117
|
+
- **Dynamic Type first-class**: titles, headings, body, task rows, comments all scale; pills, tab labels, avatar initials stay fixed.
|
|
118
|
+
|
|
119
|
+
## 4. Component Stylings
|
|
120
|
+
|
|
121
|
+
### Buttons
|
|
122
|
+
|
|
123
|
+
**Primary Button (Add task / Save / Send update)**
|
|
124
|
+
- Shape: Rounded rectangle, 8pt corner radius
|
|
125
|
+
- Background: `#F06A6A` (Asana Coral) — identical light & dark
|
|
126
|
+
- Text: `#FFFFFF`, Inter 15pt weight 600
|
|
127
|
+
- Padding: 13pt vertical, 26pt horizontal
|
|
128
|
+
- Pressed: background `#D85B5B` + scale 0.98
|
|
129
|
+
- Disabled: `#F06A6A` at 40% opacity, text at 60%
|
|
130
|
+
|
|
131
|
+
**Secondary / Outline Button (Assign / Set due date)**
|
|
132
|
+
- Background: transparent
|
|
133
|
+
- Text: `#1E1F21` light / `#F5F4F2` dark, Inter 14pt weight 600
|
|
134
|
+
- Border: 1pt `#EDEBE9` light / `#35363A` dark
|
|
135
|
+
- Corner radius: 8pt
|
|
136
|
+
- Padding: 12pt vertical, 20pt horizontal
|
|
137
|
+
- Pressed: background `#F0EFEF` light / `#2E2F31` dark
|
|
138
|
+
|
|
139
|
+
**Pill Button (Filter / Sort / Group by)**
|
|
140
|
+
- Background: `#F9F8F8` light / `#2E2F31` dark
|
|
141
|
+
- Border: 1pt `#EDEBE9` / `#35363A`
|
|
142
|
+
- Corner radius: 999pt (full pill)
|
|
143
|
+
- Text: `#1E1F21` / `#F5F4F2`, Inter 14pt weight 600
|
|
144
|
+
- Padding: 10pt vertical, 18pt horizontal
|
|
145
|
+
|
|
146
|
+
**Text Button (Mark complete / Add subtask)**
|
|
147
|
+
- Font: Inter 14pt weight 600
|
|
148
|
+
- Color: `#4573D2` (action blue) — or `#62D26F` for "Mark complete"
|
|
149
|
+
- No background, no underline
|
|
150
|
+
- Pressed: 60% opacity
|
|
151
|
+
|
|
152
|
+
**Floating Action Button (Create Task)**
|
|
153
|
+
- Size: 56pt circle
|
|
154
|
+
- Background: `#F06A6A`
|
|
155
|
+
- Icon: white `plus` 24pt, stroke 2.5
|
|
156
|
+
- Shadow: `rgba(240,106,106,0.45) 0 8px 20px`
|
|
157
|
+
- Position: 18pt from trailing edge, 16pt above the tab bar
|
|
158
|
+
- Pressed: scale 0.94 + `#D85B5B`
|
|
159
|
+
|
|
160
|
+
### Task Row (the core atom)
|
|
161
|
+
|
|
162
|
+
Every task in any list view is a row:
|
|
163
|
+
- Height: auto, ~58pt with one metadata line
|
|
164
|
+
- Leading: 20pt completion circle, 12pt gap to content
|
|
165
|
+
- Content: task name (Inter 15pt w500), below it a metadata row (8pt gap)
|
|
166
|
+
- Metadata pills: project tag (tinted hue), due-date pill (orange normal / red overdue), inline subtask count
|
|
167
|
+
- Trailing: 22pt assignee avatar (circular initials or photo)
|
|
168
|
+
- Divider: 1pt `#EDEBE9` / `#35363A` between rows
|
|
169
|
+
- Swipe-left: reveals "Complete" (green) + "More" (gray) actions
|
|
170
|
+
|
|
171
|
+
**Completion Circle**
|
|
172
|
+
- Default: 20pt circle, 1.5pt border `#9CA3A6` / `#6F7073`, transparent fill
|
|
173
|
+
- Tapped: fills `#62D26F`, white checkmark stroke 3pt, 200ms scale-bounce + soft haptic
|
|
174
|
+
- Completed task: name turns `#9CA3A6` / `#6F7073` with strikethrough
|
|
175
|
+
- Section-complete: optional "celebration creature" flies across (unicorn/narwhal) — 1.2s
|
|
176
|
+
|
|
177
|
+
### Section Header (List grouping)
|
|
178
|
+
- Leading caret: 5pt triangle `#6D6E6F` (points right collapsed, down expanded)
|
|
179
|
+
- Label: Inter 13pt w700 `#1E1F21` / `#F5F4F2`
|
|
180
|
+
- Trailing count: Inter 12pt `#9CA3A6`
|
|
181
|
+
- Padding: 14pt top, 8pt bottom, 18pt horizontal
|
|
182
|
+
- Tap caret: collapse/expand children with 200ms ease-out
|
|
183
|
+
|
|
184
|
+
### Pills & Tags
|
|
185
|
+
|
|
186
|
+
**Project / Tag Pill**
|
|
187
|
+
- Background: object hue at ~16% opacity (e.g., `#4ECBC414`)
|
|
188
|
+
- Text: the solid hue (e.g., `#4ECBC4`), Inter 12pt w600
|
|
189
|
+
- Padding: 3pt vertical, 9pt horizontal
|
|
190
|
+
- Corner radius: 999pt
|
|
191
|
+
|
|
192
|
+
**Due-Date Pill**
|
|
193
|
+
- On-time: text `#F1BD6C` on `#F1BD6C1F`
|
|
194
|
+
- Overdue: text `#E8384F` on `#E8384F2E`
|
|
195
|
+
- Same shape as project pill
|
|
196
|
+
|
|
197
|
+
**Status Badge (Status Update)**
|
|
198
|
+
- On track: `#4ECBC4` text on `#4ECBC42E`
|
|
199
|
+
- At risk: `#F8DF72` text on `#F8DF7229` (dark text on dark — yellow uses a deeper tint)
|
|
200
|
+
- Off track: `#E8384F` text on `#E8384F2E`
|
|
201
|
+
- Complete: `#62D26F` text on `#62D26F2E`
|
|
202
|
+
- Inter 12pt w700, 6pt vertical / 14pt horizontal, 999pt radius
|
|
203
|
+
|
|
204
|
+
### Navigation
|
|
205
|
+
|
|
206
|
+
**Bottom Tab Bar**
|
|
207
|
+
- Height: 52pt + safe area
|
|
208
|
+
- Background: `#FFFFFF` / `#1E1F21` with 1pt top border `#EDEBE9` / `#35363A`
|
|
209
|
+
- Tabs (4): Home, My Tasks, Inbox, Search
|
|
210
|
+
- Icon size: 22pt; active filled, inactive stroked
|
|
211
|
+
- Active color: `#F06A6A`; inactive `#9CA3A6` / `#6F7073`
|
|
212
|
+
- Labels: Inter 10pt w600, always shown
|
|
213
|
+
|
|
214
|
+
**View Switcher Tabs (per screen)**
|
|
215
|
+
- Below the screen title: a horizontal strip — List, Board, Calendar, Timeline, Files
|
|
216
|
+
- Active tab: `#1E1F21` / `#F5F4F2` text with a 2pt coral `#F06A6A` underline
|
|
217
|
+
- Inactive: `#6D6E6F` / `#A9A9AA`
|
|
218
|
+
- Inter 14pt w600, 22pt gap, 1pt bottom divider
|
|
219
|
+
|
|
220
|
+
**Top Nav (detail screens)**
|
|
221
|
+
- Height: 44pt + safe area
|
|
222
|
+
- Leading: back chevron / close X
|
|
223
|
+
- Center: compact title (shown when scrolled past large title)
|
|
224
|
+
- Trailing: 30pt user avatar or ⋯ actions menu
|
|
225
|
+
|
|
226
|
+
### Input Fields
|
|
227
|
+
|
|
228
|
+
**Search Bar**
|
|
229
|
+
- Height: 40pt
|
|
230
|
+
- Background: `#F9F8F8` / `#2E2F31`
|
|
231
|
+
- Border: none
|
|
232
|
+
- Corner radius: 10pt
|
|
233
|
+
- Leading icon `magnifyingglass` 16pt `#9CA3A6`
|
|
234
|
+
- Placeholder: "Search tasks, projects, people" 14pt `#9CA3A6`
|
|
235
|
+
- Focus: 1.5pt `#F06A6A` border
|
|
236
|
+
|
|
237
|
+
**Task Name / Comment Field**
|
|
238
|
+
- No box in inline-edit (text sits directly on canvas)
|
|
239
|
+
- Comment composer: `#F9F8F8` / `#2E2F31` fill, 12pt radius, 12pt padding
|
|
240
|
+
- Placeholder: "Add a comment" `#9CA3A6`
|
|
241
|
+
- Send button: coral text "Comment" appears when non-empty
|
|
242
|
+
|
|
243
|
+
### Distinctive Components
|
|
244
|
+
|
|
245
|
+
**Completion Circle + Celebration**
|
|
246
|
+
- The emotional core — see Task Row. The tap-to-complete moment is deliberately delightful: green fill, checkmark draw, haptic, occasional celebration creature.
|
|
247
|
+
|
|
248
|
+
**My Tasks List**
|
|
249
|
+
- The default screen: sectioned (Today / Upcoming / Later or custom sections), each task a row, FAB anchored bottom-right.
|
|
250
|
+
|
|
251
|
+
**Project Board (Kanban)**
|
|
252
|
+
- Horizontally scrolling columns (`#F9F8F8` / `#2E2F31`, 12pt radius)
|
|
253
|
+
- Column header: section name uppercased, Inter 12pt w700 `#6D6E6F`
|
|
254
|
+
- Cards: white `#FFFFFF` / `#252628`, 1pt border, 10pt radius, 12pt padding; title + tinted tag chips + assignee avatar
|
|
255
|
+
- Drag card between columns: lift shadow + 200ms settle
|
|
256
|
+
|
|
257
|
+
**Status Update Card**
|
|
258
|
+
- A composed update post: status badge (On track / At risk / etc.), title, rich-text body, "Highlights" section
|
|
259
|
+
- Posted to the project's "Status" tab; appears in followers' Inbox
|
|
260
|
+
|
|
261
|
+
**Inbox Notification Row**
|
|
262
|
+
- Leading: actor avatar (28pt)
|
|
263
|
+
- Title: bold actor + action ("assigned you a task")
|
|
264
|
+
- Subtitle: task name + project tag
|
|
265
|
+
- Trailing: timestamp `#9CA3A6`; unread = coral 6pt dot on leading edge
|
|
266
|
+
|
|
267
|
+
**Subtask / Checklist Nesting**
|
|
268
|
+
- A task can contain subtasks — indented 24pt, each its own completion circle
|
|
269
|
+
- Progress: "3/8" tabular count next to parent
|
|
270
|
+
|
|
271
|
+
**Custom Field Chip**
|
|
272
|
+
- Inline on a task row or detail: a labeled value pill in the field's assigned hue (e.g., Priority = High in red tint, Stage = Review in plum tint)
|
|
273
|
+
|
|
274
|
+
## 5. Layout Principles
|
|
275
|
+
|
|
276
|
+
### Spacing System
|
|
277
|
+
- Base unit: 4pt
|
|
278
|
+
- Scale: 4, 8, 12, 14, 16, 18, 22, 24, 32, 40, 56
|
|
279
|
+
- Task row vertical padding: 11pt (dense but tappable)
|
|
280
|
+
- Section header: 14pt top / 8pt bottom
|
|
281
|
+
- Screen horizontal inset: 18pt
|
|
282
|
+
|
|
283
|
+
### Grid & Container
|
|
284
|
+
- iPhone: content at 18pt horizontal insets, full-width list
|
|
285
|
+
- iPad: master-detail — left task/project list (360pt) + right detail pane
|
|
286
|
+
- Board columns: ~280pt wide, horizontal scroll, 12pt gap
|
|
287
|
+
- Detail pane: max-width 760pt centered on large screens
|
|
288
|
+
|
|
289
|
+
### Whitespace Philosophy
|
|
290
|
+
- **Scannable list rhythm**: 11pt row padding + 1pt divider — dense enough to see many tasks, airy enough to tap accurately
|
|
291
|
+
- **Pills breathe, slabs don't exist**: metadata pills are small tinted lozenges with generous internal padding; Asana never uses full-bleed colored slabs
|
|
292
|
+
- **The FAB owns the bottom-right**: a persistent 56pt coral anchor; content list scrolls behind it
|
|
293
|
+
- **Status updates get room**: the status card uses 16-20pt internal padding so it reads as a composed post, not a list row
|
|
294
|
+
|
|
295
|
+
### Border Radius Scale
|
|
296
|
+
- Square (0pt): dividers, full-bleed media
|
|
297
|
+
- Subtle (4pt): inline avatars-as-squares (rare), color dots
|
|
298
|
+
- Standard (8pt): buttons, cards-in-detail
|
|
299
|
+
- Card (10pt): board cards, search bar
|
|
300
|
+
- Comfortable (12-16pt): bottom sheets, modals, comment composer
|
|
301
|
+
- Pill (999pt): all pills, tags, status badges, the FAB
|
|
302
|
+
- Circle (50%): completion circle, assignee avatars
|
|
303
|
+
|
|
304
|
+
## 6. Depth & Elevation
|
|
305
|
+
|
|
306
|
+
Asana is mostly flat with restrained, soft shadows reserved for floating and dragged elements.
|
|
307
|
+
|
|
308
|
+
| Level | Treatment | Use |
|
|
309
|
+
|-------|-----------|-----|
|
|
310
|
+
| Flat (Level 0) | No shadow | Task rows, list, section headers, board columns |
|
|
311
|
+
| Card (Level 1) | `rgba(0,0,0,0.06) 0 1px 3px` | Board cards at rest (light); 1pt border in dark |
|
|
312
|
+
| Floating (Level 2) | `rgba(0,0,0,0.12) 0 4px 12px` | Dropdown menus, date picker, the FAB |
|
|
313
|
+
| FAB | `rgba(240,106,106,0.45) 0 8px 20px` | Coral FAB — a tinted colored shadow, not gray |
|
|
314
|
+
| Dragged (Level 3) | `rgba(0,0,0,0.20) 0 8px 24px` | A board card / task being dragged |
|
|
315
|
+
| Sheet (Level 4) | `rgba(0,0,0,0.18) 0 -4px 24px` | Bottom sheets (task detail, filters) |
|
|
316
|
+
| Modal Scrim | `rgba(0,0,0,0.40)` | Dim behind modals/sheets |
|
|
317
|
+
|
|
318
|
+
**Shadow Philosophy**: Shadows say "this is liftable / floating", nothing decorative. The FAB is the one place Asana uses a *colored* shadow — a soft coral glow that ties the button to the brand. On dark mode, gray shadows nearly vanish, so cards rely on a 1pt `#3A3B3F` border for separation while the FAB keeps its coral glow.
|
|
319
|
+
|
|
320
|
+
### Motion
|
|
321
|
+
- **Task complete**: circle scales 0.8 → 1.1 → 1.0 over 200ms ease-out, checkmark stroke draws in 150ms, soft success haptic; name fades to tertiary + strikethrough over 150ms
|
|
322
|
+
- **Celebration creature**: on completing all tasks in a section, a creature (unicorn/narwhal/yeti/phoenix) flies across the screen left→right over ~1.2s, then fades
|
|
323
|
+
- **FAB → new task**: FAB scales up and morphs into the new-task sheet rising from bottom over 280ms ease-out
|
|
324
|
+
- **Section collapse/expand**: caret rotates 90° in 150ms; children height 0 → auto over 200ms ease-out
|
|
325
|
+
- **Board card drag**: 1:1 finger tracking at 60fps; other cards shift over 200ms to make room; drop snaps with 150ms ease-out + soft haptic
|
|
326
|
+
- **View tab switch**: 2pt coral underline slides to the tapped tab over 200ms; content cross-fades 150ms
|
|
327
|
+
- **Inbox read**: tapping a notification fades its coral unread dot out over 120ms
|
|
328
|
+
- **Push navigation**: iOS-native push, 300ms horizontal slide
|
|
329
|
+
- **Haptic feedback**: soft success on task complete, soft impact on card drag start & section toggle, light tick on tab switch
|
|
330
|
+
|
|
331
|
+
## 7. Do's and Don'ts
|
|
332
|
+
|
|
333
|
+
### Do
|
|
334
|
+
- Use Asana Coral (`#F06A6A`) as the single brand accent — FAB, active tab, primary CTA — identical in light & dark
|
|
335
|
+
- Use the charcoal `#1E1F21` for dark canvas — NOT pure black
|
|
336
|
+
- Make the completion circle a delight: green fill (`#62D26F`) + checkmark draw + haptic on tap
|
|
337
|
+
- Render projects/tags/fields with their assigned hue as a ~16% tint fill + saturated text — never solid slabs
|
|
338
|
+
- Use the four-state status system (On track / At risk / Off track / Complete) for project updates
|
|
339
|
+
- Group the task list with collapsible section headers (caret + label + count)
|
|
340
|
+
- Keep the FAB persistently bottom-right with its soft coral shadow
|
|
341
|
+
- Give each task row an assignee avatar on the trailing edge
|
|
342
|
+
- Use tabular numerals for due dates, counts, and progress
|
|
343
|
+
- Offer the view-switcher tabs (List / Board / Calendar / Timeline / Files) over the same task data
|
|
344
|
+
|
|
345
|
+
### Don't
|
|
346
|
+
- Don't introduce a second brand accent — coral is the only one; other hues are object colors, not UI accents
|
|
347
|
+
- Don't fill pills with solid saturated color — Asana uses ~16% tint + colored text
|
|
348
|
+
- Don't use pure black (`#000000`) for the dark canvas or body text
|
|
349
|
+
- Don't skip the completion-circle delight — a flat checkbox loses Asana's emotional core
|
|
350
|
+
- Don't make status updates look like list rows — they're composed posts with internal padding
|
|
351
|
+
- Don't hide the FAB behind content on scroll — it stays anchored and tappable
|
|
352
|
+
- Don't use heavy drop shadows on rows — only floating / dragged elements get shadow
|
|
353
|
+
- Don't use gray shadow as the FAB shadow — it must be a soft coral glow
|
|
354
|
+
- Don't bold task-row names heavily — 500 weight is correct; headings are 700-800
|
|
355
|
+
- Don't tint the whole row background per project — the tint lives in the small pill only
|
|
356
|
+
|
|
357
|
+
## 8. Responsive Behavior
|
|
358
|
+
|
|
359
|
+
### Device Sizes
|
|
360
|
+
| Device | Width | Key Changes |
|
|
361
|
+
|--------|-------|-------------|
|
|
362
|
+
| iPhone SE (3rd gen) | 375pt | Single column; metadata pills may wrap to a second line |
|
|
363
|
+
| iPhone 13/14/15 | 390pt | Standard layout |
|
|
364
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island accommodated in top nav |
|
|
365
|
+
| iPhone 15/16 Pro Max | 430pt | Larger task rows; two metadata lines comfortable |
|
|
366
|
+
| iPad (portrait) | 768pt | Master-detail: project/task list (360pt) + detail pane |
|
|
367
|
+
| iPad (landscape) | 1024pt+ | Three-pane optional: sidebar + list + task detail |
|
|
368
|
+
|
|
369
|
+
### Dynamic Type
|
|
370
|
+
- Screen title, nav title, section headers, body, task-row names, comments: full scale
|
|
371
|
+
- Pills, tab labels, avatar initials, list section labels: FIXED (layout-sensitive)
|
|
372
|
+
- Due dates / counts: scale but stay tabular
|
|
373
|
+
|
|
374
|
+
### Orientation
|
|
375
|
+
- All screens support rotation
|
|
376
|
+
- iPad landscape unlocks the three-pane split (sidebar / list / detail)
|
|
377
|
+
- Board view scrolls horizontally in both orientations
|
|
378
|
+
|
|
379
|
+
### Touch Targets
|
|
380
|
+
- Completion circle: 20pt glyph, 44pt hit area
|
|
381
|
+
- Tab bar icons: 22pt glyph, 44pt hit
|
|
382
|
+
- Task row: full-row tap opens detail; circle tap completes (separate 44pt zones)
|
|
383
|
+
- FAB: 56pt (exceeds minimum)
|
|
384
|
+
- Section caret: 16pt glyph, 44pt hit
|
|
385
|
+
|
|
386
|
+
### Safe Area Handling
|
|
387
|
+
- Top: large title & top nav respect safe area + Dynamic Island
|
|
388
|
+
- Bottom: tab bar + home indicator respected; FAB sits 16pt above the tab bar
|
|
389
|
+
- Keyboard: comment composer & task-name field rise above keyboard
|
|
390
|
+
- Sides: 18pt content inset
|
|
391
|
+
|
|
392
|
+
## 9. Agent Prompt Guide
|
|
393
|
+
|
|
394
|
+
### Quick Color Reference
|
|
395
|
+
- Canvas (light): `#FFFFFF`
|
|
396
|
+
- Canvas (dark): `#1E1F21`
|
|
397
|
+
- Surface (dark): `#252628` / `#2E2F31`
|
|
398
|
+
- Divider: `#EDEBE9` light / `#35363A` dark
|
|
399
|
+
- Text primary: `#1E1F21` light / `#F5F4F2` dark
|
|
400
|
+
- Text secondary: `#6D6E6F` light / `#A9A9AA` dark
|
|
401
|
+
- Brand coral: `#F06A6A` (pressed `#D85B5B`)
|
|
402
|
+
- Action blue: `#4573D2`
|
|
403
|
+
- Object aqua: `#4ECBC4`
|
|
404
|
+
- Object green / success: `#62D26F`
|
|
405
|
+
- Object yellow / at-risk: `#F8DF72`
|
|
406
|
+
- Object orange / due: `#F1BD6C`
|
|
407
|
+
- Object magenta: `#F26FD3`
|
|
408
|
+
- Error / off-track: `#E8384F`
|
|
409
|
+
|
|
410
|
+
### Example Component Prompts
|
|
411
|
+
- "Build an Asana task row in SwiftUI: leading 20pt completion circle (1.5pt border `#9CA3A6`, transparent fill). 12pt gap to a VStack: task name in Inter 15pt w500 `#1E1F21`; below, an HStack of pills — a project tag (Inter 12pt w600 `#4ECBC4` on `#4ECBC414`, 999pt radius, 3/9pt padding) and a due-date pill (`#F1BD6C` on `#F1BD6C1F`, or `#E8384F` on `#E8384F2E` if overdue). Trailing: 22pt circular avatar with white initials. 11pt vertical padding, 1pt `#EDEBE9` bottom divider. On circle tap: fill `#62D26F`, draw white checkmark, scale 0.8→1.1→1.0 over 200ms + soft haptic, name → `#9CA3A6` strikethrough."
|
|
412
|
+
|
|
413
|
+
- "Create the Asana My Tasks screen: 32pt w800 title 'My Tasks' + 30pt user avatar trailing. Below, a view-switcher strip (List / Board / Calendar / Files), active = `#1E1F21` text + 2pt coral `#F06A6A` underline, Inter 14pt w600. Then a sectioned list: section header = 5pt caret + Inter 13pt w700 label + 12pt `#9CA3A6` count. A 56pt coral `#F06A6A` FAB bottom-right (18pt trailing, 16pt above tab bar) with white plus icon and shadow `rgba(240,106,106,0.45) 0 8px 20px`."
|
|
414
|
+
|
|
415
|
+
- "Render an Asana status update card: top row = status badge ('On track' Inter 12pt w700 `#4ECBC4` on `#4ECBC42E`, 999pt, 6/14pt padding) + posted date. Title in Inter 22pt w700. Body in Inter 16pt w400 `#1E1F21` / `#F5F4F2`. 18pt internal padding, `#FFFFFF` / `#252628` background, 12pt radius, 1pt `#EDEBE9` / `#3A3B3F` border."
|
|
416
|
+
|
|
417
|
+
- "Build an Asana project board column: `#F9F8F8` light / `#2E2F31` dark, 12pt radius, ~280pt wide. Header: section name uppercased Inter 12pt w700 `#6D6E6F`. Cards: `#FFFFFF` / `#252628`, 1pt `#E8E6E4` / `#3A3B3F` border, 10pt radius, 12pt padding — title Inter 13pt w500, a tinted tag chip, a 22pt assignee avatar. Drag between columns: lift `rgba(0,0,0,0.20) 0 8px 24px`, neighbors shift 200ms ease-out, soft haptic on drop."
|
|
418
|
+
|
|
419
|
+
- "Create the Asana bottom tab bar: 52pt + safe area, `#FFFFFF` / `#1E1F21`, 1pt top border `#EDEBE9` / `#35363A`. Four tabs — Home, My Tasks, Inbox, Search — 22pt icons (filled active, stroked inactive), active `#F06A6A`, inactive `#9CA3A6` / `#6F7073`, labels Inter 10pt w600 always shown. No tint pill."
|
|
420
|
+
|
|
421
|
+
- "Render an Asana Inbox notification row: 28pt actor avatar leading; title = bold actor name + action ('assigned you a task') Inter 14pt; subtitle = task name + tinted project tag; trailing timestamp `#9CA3A6` 12pt. Unread state: 6pt coral `#F06A6A` dot on the leading edge; tapping fades the dot out over 120ms."
|
|
422
|
+
|
|
423
|
+
### Iteration Guide
|
|
424
|
+
1. Canvas is white in light, charcoal `#1E1F21` in dark — NOT pure black
|
|
425
|
+
2. Coral `#F06A6A` is the ONLY brand accent — identical in both themes; everything else is object color
|
|
426
|
+
3. The completion circle must be a delight — green `#62D26F` fill + checkmark draw + haptic on tap
|
|
427
|
+
4. Pills are ~16% tint fills with saturated text — never solid slabs; project hues come from the fixed object palette
|
|
428
|
+
5. Status updates use four states — On track / At risk / Off track / Complete with a colored badge
|
|
429
|
+
6. The task list is sectioned with collapsible caret headers (Today / Upcoming / custom)
|
|
430
|
+
7. The FAB is a persistent 56pt coral circle bottom-right with a soft coral-tinted shadow
|
|
431
|
+
8. Typography is Inter, quiet and legible — task rows at 15pt/500, headings 700-800, tabular numerals for dates
|
|
432
|
+
9. View tabs (List / Board / Calendar / Timeline / Files) render the same tasks differently — active tab gets a 2pt coral underline
|
|
433
|
+
10. Dark mode keeps coral identical, inverts text to warm off-white `#F5F4F2`, and uses 1pt borders where gray shadows vanish
|