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,410 @@
|
|
|
1
|
+
# Design System Inspiration of Hevy (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Hevy's iOS app is a dark-first, gym-floor instrument. Open it and you are not greeted by marketing chrome — you are dropped into a near-black training canvas (`#0E1116`) engineered to never glare under fluorescent gym lights or wash out in direct sun. The product's entire reason to exist is the **live workout log**: a vertical stack of exercise cards, each containing a dense **set table** (Set / Previous / kg / Reps / ✓) with numbers in tabular figures so the layout never jitters while you type weights between sets with sweaty thumbs. Everything else — the home feed, the profile, the analytics — orbits this one screen. The signature moment of Hevy is **a workout in progress**: a running duration timer in Hevy Blue at the top, a glanceable rest-timer pill counting down, set rows that flip green as you tick them off, and a gold PR badge that fires the instant you beat a personal record.
|
|
6
|
+
|
|
7
|
+
The interface philosophy is "a clipboard that does math." There is no decorative photography, no gradients-for-mood, no illustration. Chrome is reduced to what a lifter needs mid-set: the exercise name (always in Hevy Blue, the tap target to swap or superset), a `Previous` column so you know what to beat, two editable number cells, and a checkmark. The rest of the app's surface area is reporting — volume charts, muscle-group splits, 1RM trend lines, a strava-like home feed of friends' workouts — but all of it is rendered in the same disciplined dark palette with the single blue accent.
|
|
8
|
+
|
|
9
|
+
The color system is monochrome-plus-one. The canvas and three surface tiers are all desaturated blue-greys (`#0E1116` → `#161B22` → `#1F2630` → `#283040`). **Hevy Blue (`#1E6FFF`)** is the *only* action color in the entire product — it is the Finish button, the active tab, every exercise title, every primary CTA, and the rest-timer ring. There is no secondary brand hue. Two semantic colors punctuate the log: a **set-done green (`#2FBF71`)** that washes a completed row at ~16% opacity, and **PR gold (`#F5B83D`)** for the personal-record badge — the app's small dopamine hit. Destructive actions use a muted red (`#F1545B`). This restraint is deliberate: a workout log is read in 2-second glances between sets, so the palette must let the *numbers* be the loudest thing on screen.
|
|
10
|
+
|
|
11
|
+
Typography is **Inter** throughout — a humanist sans with excellent small-size legibility and, critically, a tabular-figures feature that Hevy leans on hard for every weight, rep, set count, volume total, and timer. Hierarchy is functional: screen titles at 32pt/800, routine names at 26pt/700, exercise names at 18pt/700, metric read-outs at 17pt/700 with `tabular-nums`, body at 16pt/400, the set-table cells at 15pt/600, captions (the `Previous` hint) at 13pt, and column labels at 11pt uppercase. The type system never tries to be expressive — it tries to be unmissable at arm's length while you're under a barbell.
|
|
12
|
+
|
|
13
|
+
**Key Characteristics:**
|
|
14
|
+
- Near-black training canvas (`#0E1116`) dark-first — no light mode default; engineered for gym lighting
|
|
15
|
+
- The live **workout log** is the interface: stacked exercise cards, each a dense set table
|
|
16
|
+
- **Set table** — Set / Previous / kg / Reps / ✓ — all numerics in tabular figures so rows never shift
|
|
17
|
+
- **Hevy Blue (`#1E6FFF`)** is the single action color: Finish, active tab, exercise titles, all CTAs
|
|
18
|
+
- **Rest-timer pill** — a soft-blue countdown bar with an animated ring and a Skip affordance
|
|
19
|
+
- **PR badge** — gold (`#F5B83D`) "★ NEW PR" chip that fires when a set beats a record
|
|
20
|
+
- **Set-done state** — completed rows wash green (`#2FBF71` @ 16%) with a filled checkmark
|
|
21
|
+
- **Previous column** — last session's weight×reps shown inline so you always know the target
|
|
22
|
+
- Running **duration timer** in Hevy Blue at the top of every active workout
|
|
23
|
+
- Inter everywhere with aggressive use of the tabular-figures feature for all numbers
|
|
24
|
+
- Strava-style **home feed** of friends' completed workouts (cards, kudos, comments)
|
|
25
|
+
- Minimal chrome: 5-tab bottom bar (Home / Profile / Workout / History / Exercises)
|
|
26
|
+
|
|
27
|
+
## 2. Color Palette & Roles
|
|
28
|
+
|
|
29
|
+
### Primary (Interactive)
|
|
30
|
+
- **Hevy Blue** (`#1E6FFF`): The single action color — Finish button, active tab, exercise titles, primary CTAs, rest-timer ring, links.
|
|
31
|
+
- **Hevy Blue Pressed** (`#1857CC`): Pressed state on primary buttons.
|
|
32
|
+
- **Hevy Blue Soft** (`#14233F`): 12–16% blue tint — rest-timer pill background, tonal button fill, selected-row glow.
|
|
33
|
+
|
|
34
|
+
### Canvas & Surfaces (Dark — default)
|
|
35
|
+
- **Training Canvas** (`#0E1116`): Primary app background — near-black, blue-cool, the launch surface.
|
|
36
|
+
- **Card Surface** (`#161B22`): Exercise cards, feed cards, list rows, sheets.
|
|
37
|
+
- **Input Surface** (`#1F2630`): Editable set cells (kg / reps), search field, segmented control track.
|
|
38
|
+
- **Surface 3** (`#283040`): Exercise thumbnails, raised chips, hovered/pressed rows.
|
|
39
|
+
- **Divider** (`#262C36`): Hairline dividers between cards and table rows.
|
|
40
|
+
|
|
41
|
+
### Canvas & Surfaces (Light — optional, opt-in)
|
|
42
|
+
- **Light Canvas** (`#F4F6FA`): Light-mode background (a minority setting).
|
|
43
|
+
- **Light Card** (`#FFFFFF`): Cards on light.
|
|
44
|
+
- **Light Input** (`#EEF1F6`): Editable cells on light.
|
|
45
|
+
- **Light Divider** (`#E2E6EE`): Hairlines on light.
|
|
46
|
+
|
|
47
|
+
### Text
|
|
48
|
+
- **Text Primary** (`#F2F4F8`): Headings, weights, reps, the numbers that matter — near-white.
|
|
49
|
+
- **Text Secondary** (`#9BA3B0`): Labels, captions, column headers, the `Previous` hint.
|
|
50
|
+
- **Text Tertiary** (`#5E6675`): Disabled, placeholder, the `⋯` glyph.
|
|
51
|
+
- **Text Primary (Light)** (`#11151C`): Primary text on light mode.
|
|
52
|
+
- **Text Secondary (Light)** (`#5E6675`): Secondary on light mode.
|
|
53
|
+
|
|
54
|
+
### Semantic
|
|
55
|
+
- **Set Done Green** (`#2FBF71`): Completed-set checkmark fill + row wash at 16% (`#2FBF7129`).
|
|
56
|
+
- **PR Gold** (`#F5B83D`): "★ NEW PR" badge background-tint + text; the record-broken signal.
|
|
57
|
+
- **Error / Destructive Red** (`#F1545B`): Discard workout, delete set, validation errors.
|
|
58
|
+
- **Warning Amber** (`#F5A623`): "Unsaved changes", deload suggestions.
|
|
59
|
+
- **Kudos Blue** (`#1E6FFF`): Feed like/kudos active state (same as primary).
|
|
60
|
+
|
|
61
|
+
### Color Roles Table
|
|
62
|
+
|
|
63
|
+
| Role | Dark Mode | Light Mode |
|
|
64
|
+
|------|-----------|-----------|
|
|
65
|
+
| Canvas | `#0E1116` | `#F4F6FA` |
|
|
66
|
+
| Card surface | `#161B22` | `#FFFFFF` |
|
|
67
|
+
| Input surface | `#1F2630` | `#EEF1F6` |
|
|
68
|
+
| Surface 3 / chips | `#283040` | `#E6EAF1` |
|
|
69
|
+
| Divider | `#262C36` | `#E2E6EE` |
|
|
70
|
+
| Action (Hevy Blue) | `#1E6FFF` | `#1E6FFF` |
|
|
71
|
+
| Action pressed | `#1857CC` | `#1857CC` |
|
|
72
|
+
| Blue soft fill | `#14233F` | `#E5EEFF` |
|
|
73
|
+
| Text primary | `#F2F4F8` | `#11151C` |
|
|
74
|
+
| Text secondary | `#9BA3B0` | `#5E6675` |
|
|
75
|
+
| Set done | `#2FBF71` | `#1E9E59` |
|
|
76
|
+
| PR gold | `#F5B83D` | `#C8881A` |
|
|
77
|
+
| Error | `#F1545B` | `#E0353C` |
|
|
78
|
+
|
|
79
|
+
## 3. Typography Rules
|
|
80
|
+
|
|
81
|
+
### Font Family
|
|
82
|
+
- **Primary**: `Inter` (by Rasmus Andersson, SIL OFL) — humanist sans with superb small-size legibility and a first-class `tnum` (tabular figures) OpenType feature, which Hevy uses for every number on screen.
|
|
83
|
+
- **System Fallback**: `-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
84
|
+
- **Numeric rule**: every weight, rep count, set index, volume total, RPE, 1RM, percentage, and timer renders with **tabular figures** (`font-variant-numeric: tabular-nums`) so the set table and timers never reflow as digits change.
|
|
85
|
+
- **No alternate families**: unlike note apps, Hevy ships one face. Brand consistency over user choice.
|
|
86
|
+
|
|
87
|
+
### Hierarchy
|
|
88
|
+
|
|
89
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
90
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
91
|
+
| Screen Title | Inter | 32pt | 800 | 1.15 | -0.6pt | "Workout", "History" — large nav title |
|
|
92
|
+
| Routine Title | Inter | 26pt | 700 | 1.2 | -0.4pt | Routine / workout name at top of log |
|
|
93
|
+
| Section Header | Inter | 22pt | 700 | 1.25 | -0.3pt | "This Week", chart section titles |
|
|
94
|
+
| Exercise Name | Inter | 18pt | 700 | 1.3 | -0.2pt | Exercise title — always in Hevy Blue |
|
|
95
|
+
| Metric / Timer | Inter | 17pt | 700 | 1.2 | 0pt | Duration, volume, 1RM — **tabular-nums** |
|
|
96
|
+
| Body | Inter | 16pt | 400 | 1.5 | 0pt | Descriptions, feed text, settings |
|
|
97
|
+
| Set Cell | Inter | 15pt | 600 | 1.3 | 0pt | kg / reps values — **tabular-nums** |
|
|
98
|
+
| Card Title | Inter | 15pt | 600 | 1.3 | -0.1pt | Feed card title, list row title |
|
|
99
|
+
| Caption | Inter | 13pt | 500 | 1.4 | 0pt | `Previous` hint, timestamps, helper text |
|
|
100
|
+
| Column Label | Inter | 11pt | 600 | 1.1 | 0.5pt | SET / PREVIOUS / KG / REPS — uppercase |
|
|
101
|
+
| Tab Label | Inter | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
|
|
102
|
+
| Button | Inter | 16pt | 700 | 1.0 | 0pt | Primary button label |
|
|
103
|
+
| Badge | Inter | 10pt | 800 | 1.0 | 0.3pt | PR / streak chips — uppercase |
|
|
104
|
+
|
|
105
|
+
### Principles
|
|
106
|
+
- **Numbers are the loudest element**: weights, reps, and timers use 700 weight + tabular figures; everything supporting them is lighter and greyer.
|
|
107
|
+
- **Tabular figures everywhere numeric**: the set table must not reflow when a 9 becomes a 10 — `tnum` is mandatory on every digit.
|
|
108
|
+
- **Weight concentrated at 400 / 500 / 600 / 700 / 800**: regular body, medium captions, semibold cells, bold exercise names + metrics, extrabold screen titles.
|
|
109
|
+
- **Hevy Blue carries hierarchy too**: an exercise name is bold *and* blue because it is both the heading and the tap-to-edit affordance.
|
|
110
|
+
- **Dynamic Type with floors**: titles, body, and cells scale; column labels, tab labels, and badges stay fixed (table layout is digit-sensitive).
|
|
111
|
+
- **Uppercase only for micro-labels**: column headers and badges; never body or titles.
|
|
112
|
+
|
|
113
|
+
## 4. Component Stylings
|
|
114
|
+
|
|
115
|
+
### Buttons
|
|
116
|
+
|
|
117
|
+
**Primary Button (Finish Workout / Save Routine)**
|
|
118
|
+
- Shape: rounded rectangle, 12pt corner radius
|
|
119
|
+
- Background: `#1E6FFF` (Hevy Blue) / text `#FFFFFF`
|
|
120
|
+
- Padding: 14pt vertical, 28pt horizontal; full-width variant spans content inset
|
|
121
|
+
- Font: Inter 16pt weight 700
|
|
122
|
+
- Pressed: background `#1857CC` + scale 0.98
|
|
123
|
+
- Disabled: `#1F2630` background, `#5E6675` text
|
|
124
|
+
|
|
125
|
+
**Secondary / Outline Button (Add Exercise)**
|
|
126
|
+
- Background: transparent
|
|
127
|
+
- Border: 1.5pt `#1E6FFF`
|
|
128
|
+
- Text: `#1E6FFF`, Inter 15pt weight 600
|
|
129
|
+
- Corner radius: 12pt; padding 11pt / 22pt
|
|
130
|
+
- Pressed: background `#14233F`
|
|
131
|
+
|
|
132
|
+
**Tonal Button (+ Add Set / inline actions)**
|
|
133
|
+
- Background: `#14233F` (Blue Soft) — or `#1F2630` for neutral inline actions
|
|
134
|
+
- Text: `#1E6FFF` (or `#9BA3B0` neutral), Inter 14pt weight 700
|
|
135
|
+
- Corner radius: 10pt; padding 11pt / 20pt
|
|
136
|
+
- Used as the full-width "+ Add Set" row inside an exercise card
|
|
137
|
+
|
|
138
|
+
**Destructive Text Button (Discard / Delete Set)**
|
|
139
|
+
- Background: transparent
|
|
140
|
+
- Text: `#F1545B`, Inter 14pt weight 600
|
|
141
|
+
- No border; confirmation sheet required before destructive commit
|
|
142
|
+
|
|
143
|
+
**Icon Button (exercise `⋯`, set swipe actions)**
|
|
144
|
+
- 24pt glyph in 44pt hit area
|
|
145
|
+
- Default `#5E6675`; active `#F2F4F8`
|
|
146
|
+
- Swipe-left on a set row reveals delete (`#F1545B`) and a warm-up toggle
|
|
147
|
+
|
|
148
|
+
### Core Atoms
|
|
149
|
+
|
|
150
|
+
**Set Row** (the core atom)
|
|
151
|
+
- A table row inside an exercise card: `[set-index chip] [previous] [kg cell] [reps cell] [✓]`
|
|
152
|
+
- Set-index chip: 28pt rounded square, `#1F2630` bg, `#9BA3B0` 13pt/700; warm-up sets show `W`, drop sets `D`, failure `F`
|
|
153
|
+
- `Previous` cell: `#5E6675` 13pt, format `60 × 10` (last session's matching set)
|
|
154
|
+
- Editable cells (kg / reps): `#1F2630` bg, 8pt radius, `#F2F4F8` 15pt/600, tabular figures; focused → 1.5pt `#1E6FFF` border
|
|
155
|
+
- Checkmark: 26pt rounded-square; empty = 1.5pt `#262C36` border; checked = filled `#2FBF71` + white tick, and the entire row washes `#2FBF7129`
|
|
156
|
+
- Row height: 40pt; 7pt vertical cell padding
|
|
157
|
+
|
|
158
|
+
**Exercise Card**
|
|
159
|
+
- Background `#161B22`, 1pt `#262C36` border, 16pt corner radius, 14pt padding, 14pt gap between cards
|
|
160
|
+
- Header: 36pt exercise thumbnail (`#283040`, blue glyph), exercise name (`#1E6FFF` 18pt/700), trailing `⋯`
|
|
161
|
+
- Body: the set table
|
|
162
|
+
- Footer: full-width "+ Add Set" tonal row (34pt, 9pt radius, `#1F2630`, `#9BA3B0` 13pt/700)
|
|
163
|
+
|
|
164
|
+
**Rest-Timer Pill**
|
|
165
|
+
- 44pt tall, full-width minus 18pt inset, 12pt radius
|
|
166
|
+
- Background `#14233F`, 1pt `rgba(30,111,255,0.35)` border
|
|
167
|
+
- Leading: 22pt progress ring (3pt stroke, track `rgba(30,111,255,0.3)`, fill `#1E6FFF`, sweeping as time elapses)
|
|
168
|
+
- Center: `Rest · 1:24` in `#1E6FFF` 14pt/600 tabular
|
|
169
|
+
- Trailing: `Skip` in `#9BA3B0` 13pt/600; tap adds/subtracts 15s with ± controls on long-press
|
|
170
|
+
|
|
171
|
+
**PR Badge**
|
|
172
|
+
- Inline chip: background `#F5B83D` at 18% (`#F5B83D2E`), text `#F5B83D`, Inter 10pt/800 uppercase
|
|
173
|
+
- Content: `★ NEW PR · 1RM 87.5 kg` (also fires for best-set-volume and best-reps records)
|
|
174
|
+
- Appears under the set table the moment a logged set beats a stored record; a brief gold pulse + soft haptic
|
|
175
|
+
|
|
176
|
+
**Metric Stat (timer / volume / sets)**
|
|
177
|
+
- Stacked: 11pt `#9BA3B0` label over 17pt/700 `#F2F4F8` value (tabular)
|
|
178
|
+
- Live duration value tints `#1E6FFF`
|
|
179
|
+
- Used in the workout header row and on the post-workout summary
|
|
180
|
+
|
|
181
|
+
**Feed Card (Strava-like home)**
|
|
182
|
+
- `#161B22` card, 16pt radius; header avatar + name + relative time
|
|
183
|
+
- Workout title (`#F2F4F8` 15pt/600), stat strip (Duration / Volume / PRs), muscle-split bar
|
|
184
|
+
- Footer: kudos (filled `#1E6FFF` when liked) + comment count
|
|
185
|
+
|
|
186
|
+
### Navigation
|
|
187
|
+
|
|
188
|
+
**Bottom Tab Bar**
|
|
189
|
+
- Height: 68pt incl. home indicator; background `rgba(14,17,22,0.94)` + blur, 0.5pt `#262C36` top border
|
|
190
|
+
- 5 tabs: Home, Profile, **Workout** (center), History, Exercises
|
|
191
|
+
- Icon 22pt; active color `#1E6FFF` with a soft `rgba(30,111,255,0.16)` icon fill; inactive `#5E6675`
|
|
192
|
+
- Labels: Inter 10pt/600, always shown
|
|
193
|
+
- No tint pill — active state is icon color + soft fill only
|
|
194
|
+
|
|
195
|
+
**Top Bar (in-workout)**
|
|
196
|
+
- Routine name (26pt/700) leading; trailing `Finish` button (Hevy Blue, 10pt radius, 13pt/700)
|
|
197
|
+
- Below: the metric stat row (Duration / Volume / Sets) then the rest-timer pill
|
|
198
|
+
- On scroll, a compact title + Finish stay pinned
|
|
199
|
+
|
|
200
|
+
**Large-Title Screens (Home / History / Exercises)**
|
|
201
|
+
- iOS large-title pattern: 32pt/800 title that collapses to a 17pt centered nav title on scroll
|
|
202
|
+
- Trailing: contextual icon (filter, add, search)
|
|
203
|
+
|
|
204
|
+
### Input Fields
|
|
205
|
+
|
|
206
|
+
**Set Cell Input (kg / reps)**
|
|
207
|
+
- 36pt tall, `#1F2630` bg, 8pt radius, centered `#F2F4F8` 15pt/600 tabular
|
|
208
|
+
- Numeric keypad; focus → 1.5pt `#1E6FFF` border, value selected for fast overwrite
|
|
209
|
+
- Empty placeholder shows the `Previous` value greyed at `#5E6675`
|
|
210
|
+
|
|
211
|
+
**Search Field (Exercises / Add Exercise)**
|
|
212
|
+
- 40pt tall, `#1F2630` bg, 12pt radius, leading 16pt magnifier `#9BA3B0`
|
|
213
|
+
- Placeholder "Search exercises" `#5E6675` 15pt
|
|
214
|
+
- Focus: 1.5pt `#1E6FFF` border
|
|
215
|
+
|
|
216
|
+
**Segmented Control (chart range: 1W / 1M / 3M / 1Y)**
|
|
217
|
+
- Track `#1F2630`, 10pt radius; selected segment `#283040` with `#F2F4F8` text; unselected `#9BA3B0`
|
|
218
|
+
- 32pt tall, equal segments
|
|
219
|
+
|
|
220
|
+
### Distinctive Components
|
|
221
|
+
|
|
222
|
+
**The Set Table**
|
|
223
|
+
- The signature Hevy component: a per-exercise grid with columns SET / PREVIOUS / KG / REPS / ✓
|
|
224
|
+
- Tabular figures lock column widths; the `Previous` column is the killer feature (always know the target)
|
|
225
|
+
- Checking a set washes it green and auto-starts the rest timer
|
|
226
|
+
|
|
227
|
+
**Rest-Timer Pill with Sweeping Ring**
|
|
228
|
+
- Auto-starts on set completion; the ring depletes; ±15s controls; soft haptic + sound at 0
|
|
229
|
+
- Persists as a Live Activity / Dynamic Island countdown when the app backgrounds
|
|
230
|
+
|
|
231
|
+
**Gold PR Badge**
|
|
232
|
+
- Fires for 1RM, best set volume, or best reps; gold pulse + haptic; collected on the profile's "Records" page
|
|
233
|
+
|
|
234
|
+
**Post-Workout Summary**
|
|
235
|
+
- Full-screen card: duration, total volume, set count, list of PRs, muscle-split donut, share-image button
|
|
236
|
+
- The single celebratory moment — confetti-free, just numbers and PR gold
|
|
237
|
+
|
|
238
|
+
**Muscle-Split Bar / Donut**
|
|
239
|
+
- Horizontal stacked bar (or donut) of volume per muscle group; segments use a calm desaturated ramp, never the brand blue
|
|
240
|
+
|
|
241
|
+
**Friends Feed**
|
|
242
|
+
- Strava-style chronological feed of friends' completed workouts with kudos and comments
|
|
243
|
+
|
|
244
|
+
**1RM / Volume Trend Chart**
|
|
245
|
+
- Line chart on `#0E1116`; line in `#1E6FFF`, gridlines `#262C36`, axis labels `#5E6675`; PR points marked in `#F5B83D`
|
|
246
|
+
|
|
247
|
+
## 5. Layout Principles
|
|
248
|
+
|
|
249
|
+
### Spacing System
|
|
250
|
+
- Base unit: 4pt
|
|
251
|
+
- Scale: 4, 8, 12, 14, 16, 20, 24, 32, 40, 48, 64
|
|
252
|
+
- Content inset: 16–18pt horizontal
|
|
253
|
+
- Card padding: 14pt; card-to-card gap: 14pt
|
|
254
|
+
- Set-row vertical padding: 7pt; row height ~40pt
|
|
255
|
+
- Section gap: 24pt
|
|
256
|
+
|
|
257
|
+
### Grid & Container
|
|
258
|
+
- iPhone: single column, 16–18pt insets, cards full-width
|
|
259
|
+
- Set table: 5 columns — index (28pt) / previous (flex) / kg (flex) / reps (flex) / check (26pt)
|
|
260
|
+
- iPad: content max-width ~720pt centered; optional 2-column for feed + summary
|
|
261
|
+
- Charts: full-bleed minus inset, fixed aspect 16:9
|
|
262
|
+
|
|
263
|
+
### Whitespace Philosophy
|
|
264
|
+
- **Density where it counts**: the set table is intentionally tight so a full exercise fits on screen mid-set
|
|
265
|
+
- **Breathing room between exercises**: 14pt gaps + card borders separate exercises clearly
|
|
266
|
+
- **Numbers get air**: metric stats and the timer get generous vertical padding so they read at a glance
|
|
267
|
+
- **No decorative whitespace**: every pixel serves logging or reading; the app is a tool, not a magazine
|
|
268
|
+
|
|
269
|
+
### Border Radius Scale
|
|
270
|
+
- Square (0pt): chart plot area, full-bleed media
|
|
271
|
+
- Subtle (4pt): rarely used micro-elements
|
|
272
|
+
- Small (8pt): set cells, set-index chip
|
|
273
|
+
- Standard (10pt): tonal buttons, segmented control, Finish button
|
|
274
|
+
- Comfortable (12pt): primary/outline buttons, rest pill, search field
|
|
275
|
+
- Card (16pt): exercise cards, feed cards, sheets
|
|
276
|
+
- Large (20pt): bottom sheets, modals
|
|
277
|
+
- Pill (500pt): filter chips, kudos pill
|
|
278
|
+
- Circle (50%): avatars, the rest-timer ring
|
|
279
|
+
|
|
280
|
+
## 6. Depth & Elevation
|
|
281
|
+
|
|
282
|
+
Hevy is mostly flat — depth is conveyed by the surface-tier ladder (`#0E1116` → `#161B22` → `#1F2630` → `#283040`) and hairline borders, not by drop shadows. Shadows appear only on truly floating UI.
|
|
283
|
+
|
|
284
|
+
| Level | Treatment | Use |
|
|
285
|
+
|-------|-----------|-----|
|
|
286
|
+
| Base (Level 0) | Canvas `#0E1116`, no shadow | App background |
|
|
287
|
+
| Card (Level 1) | `#161B22` + 1pt `#262C36` border | Exercise cards, feed cards, list rows |
|
|
288
|
+
| Raised (Level 2) | `#1F2630` / `#283040`, no shadow | Set cells, chips, segmented control |
|
|
289
|
+
| Floating (Level 3) | `rgba(0,0,0,0.5) 0 8px 24px` | Sheets, dropdowns, the add-exercise picker |
|
|
290
|
+
| Sheet (Level 4) | `rgba(0,0,0,0.6) 0 -10px 32px` + 20pt top radius | Bottom sheets (set-type, rest settings) |
|
|
291
|
+
| Overlay | `rgba(0,0,0,0.55)` scrim | Behind modals and the post-workout summary |
|
|
292
|
+
|
|
293
|
+
**Shadow Philosophy**: on a near-black canvas, drop shadows barely register, so Hevy uses the surface ladder + 1pt borders as the primary depth cue and reserves real shadows for genuinely floating layers. Floating panels also get a subtle border so they read as detached even when the shadow is faint.
|
|
294
|
+
|
|
295
|
+
### Motion
|
|
296
|
+
- **Set check**: tapping ✓ fills the box (120ms ease-out), washes the row green (150ms), triggers a soft success haptic, and auto-starts the rest timer
|
|
297
|
+
- **Rest-timer ring**: continuous linear sweep over the rest duration; ±15s buttons nudge with a 200ms spring; soft + sound at 0
|
|
298
|
+
- **PR badge**: scales 0.9→1.0 with a 220ms spring + brief gold opacity pulse + a celebratory soft-impact haptic
|
|
299
|
+
- **Add set**: new row slides down (height 0→auto, 200ms ease-out) and the cell focuses
|
|
300
|
+
- **Finish workout**: primary button → post-workout summary pushes up as a full-screen sheet (320ms ease-out)
|
|
301
|
+
- **Tab switch**: instant; no cross-fade (a gym tool should feel immediate)
|
|
302
|
+
- **Pull-to-refresh (feed)**: standard iOS spinner; cards fade-in on load
|
|
303
|
+
- **Live Activity**: rest countdown mirrors to Dynamic Island / Lock Screen with the ring + remaining time
|
|
304
|
+
- **Haptics**: soft impact on set check, medium on PR, light tick on rest ± and timer end
|
|
305
|
+
|
|
306
|
+
## 7. Do's and Don'ts
|
|
307
|
+
|
|
308
|
+
### Do
|
|
309
|
+
- Default to dark — launch into the near-black training canvas (`#0E1116`); it's engineered for gyms
|
|
310
|
+
- Use Hevy Blue (`#1E6FFF`) as the *only* action color — Finish, tabs, exercise titles, CTAs
|
|
311
|
+
- Render every number with tabular figures so the set table and timers never reflow
|
|
312
|
+
- Show the `Previous` column on every set — knowing the target is the core value proposition
|
|
313
|
+
- Wash completed set rows green (`#2FBF7129`) with a filled `#2FBF71` checkmark
|
|
314
|
+
- Fire a gold (`#F5B83D`) PR badge the moment a record breaks — it's the app's dopamine hit
|
|
315
|
+
- Auto-start the rest timer on set completion and surface it as a glanceable pill
|
|
316
|
+
- Keep the set table dense — a full exercise should fit on screen mid-set
|
|
317
|
+
- Make the exercise name both bold *and* blue (it's heading + edit affordance)
|
|
318
|
+
- Use the surface ladder + 1pt borders for depth, not heavy shadows
|
|
319
|
+
- Mirror the rest timer to Dynamic Island / Live Activity when backgrounded
|
|
320
|
+
|
|
321
|
+
### Don't
|
|
322
|
+
- Don't add a second brand accent — Hevy Blue is the entire action vocabulary
|
|
323
|
+
- Don't use proportional figures anywhere numeric — the table will jitter as digits change
|
|
324
|
+
- Don't hide the `Previous` column to "clean up" — it's the feature
|
|
325
|
+
- Don't decorate with photography, gradients-for-mood, or illustration — numbers are the content
|
|
326
|
+
- Don't use pure black (`#000000`) for the canvas — `#0E1116` (blue-cool near-black) is correct
|
|
327
|
+
- Don't make PRs loud with confetti — a gold badge + pulse + haptic is the whole celebration
|
|
328
|
+
- Don't add tab-bar tint pills — active is icon color + soft fill only
|
|
329
|
+
- Don't space the set table loosely — density is intentional for mid-workout speed
|
|
330
|
+
- Don't animate aggressively — a gym tool must feel instant; motion is 120–320ms, functional
|
|
331
|
+
- Don't tint charts with the brand blue's hue for non-data chrome — keep gridlines neutral grey
|
|
332
|
+
- Don't block logging behind confirmation dialogs — only destructive actions confirm
|
|
333
|
+
|
|
334
|
+
## 8. Responsive Behavior
|
|
335
|
+
|
|
336
|
+
### Device Sizes
|
|
337
|
+
| Device | Width | Key Changes |
|
|
338
|
+
|--------|-------|-------------|
|
|
339
|
+
| iPhone SE (3rd gen) | 375pt | Set table tightens to 6pt cell padding; metric row wraps to 2+1 |
|
|
340
|
+
| iPhone 13 / 14 / 15 | 390pt | Standard layout |
|
|
341
|
+
| iPhone 15 / 16 Pro | 393pt | Dynamic Island hosts the rest-timer Live Activity |
|
|
342
|
+
| iPhone 15 / 16 Pro Max | 430pt | Larger set cells; metric values at 18pt |
|
|
343
|
+
| iPad (portrait) | 768pt | Content max-width 720pt centered; feed + summary can go 2-column |
|
|
344
|
+
| iPad (landscape) | 1024pt+ | Optional split: exercise list rail + active set table |
|
|
345
|
+
|
|
346
|
+
### Dynamic Type
|
|
347
|
+
- Scales: screen titles, routine titles, exercise names, body, set-cell values
|
|
348
|
+
- Fixed: column labels, tab labels, PR/streak badges, set-index chip (table layout is digit-width-sensitive)
|
|
349
|
+
- Numeric metrics scale but always retain tabular figures
|
|
350
|
+
|
|
351
|
+
### Orientation
|
|
352
|
+
- iPhone: portrait-locked for the workout log (one-handed mid-set use)
|
|
353
|
+
- iPad: supports landscape with the split set-table layout
|
|
354
|
+
- Charts rotate and re-fit
|
|
355
|
+
|
|
356
|
+
### Touch Targets
|
|
357
|
+
- Set-cell input: 36pt tall, full-cell tap
|
|
358
|
+
- Checkmark: 26pt glyph, 44pt hit
|
|
359
|
+
- Tab icons: 22pt glyph, 49pt hit
|
|
360
|
+
- `+ Add Set` row: 34pt tall, full-width tap
|
|
361
|
+
- Rest ± controls: 32pt hit minimum
|
|
362
|
+
|
|
363
|
+
### Safe Area Handling
|
|
364
|
+
- Top: large title / workout header respects safe area + Dynamic Island
|
|
365
|
+
- Bottom: tab bar + home indicator respected; the rest pill floats above the keyboard when a cell is focused
|
|
366
|
+
- Keyboard: numeric keypad pushes the active exercise card into view; rest pill stays pinned above it
|
|
367
|
+
- Sides: 16–18pt content inset
|
|
368
|
+
|
|
369
|
+
## 9. Agent Prompt Guide
|
|
370
|
+
|
|
371
|
+
### Quick Color Reference
|
|
372
|
+
- Canvas (dark): `#0E1116`
|
|
373
|
+
- Card surface: `#161B22`
|
|
374
|
+
- Input surface: `#1F2630`
|
|
375
|
+
- Surface 3 / chips: `#283040`
|
|
376
|
+
- Divider: `#262C36`
|
|
377
|
+
- Hevy Blue (action): `#1E6FFF`
|
|
378
|
+
- Blue pressed: `#1857CC`
|
|
379
|
+
- Blue soft fill: `#14233F`
|
|
380
|
+
- Text primary: `#F2F4F8`
|
|
381
|
+
- Text secondary: `#9BA3B0`
|
|
382
|
+
- Text tertiary: `#5E6675`
|
|
383
|
+
- Set done green: `#2FBF71` (row wash `#2FBF7129`)
|
|
384
|
+
- PR gold: `#F5B83D` (badge bg `#F5B83D2E`)
|
|
385
|
+
- Error red: `#F1545B`
|
|
386
|
+
|
|
387
|
+
### Example Component Prompts
|
|
388
|
+
- "Build the Hevy active-workout header in SwiftUI: leading routine name in Inter 26pt weight 700 `#F2F4F8`; trailing `Finish` button — `#1E6FFF` bg, white Inter 13pt/700, 10pt radius, 7×16pt padding. Below: a 3-up metric row (Duration / Volume / Sets), each a VStack of an 11pt `#9BA3B0` label over a 17pt/700 value with `.monospacedDigit()`; the Duration value tints `#1E6FFF`. Background `#0E1116`."
|
|
389
|
+
|
|
390
|
+
- "Create a Hevy set row: an HStack — 28pt rounded-square index chip (`#1F2630` bg, `#9BA3B0` 13pt/700), a `Previous` label `#5E6675` 13pt formatted `60 × 10`, two 36pt editable cells (`#1F2630` bg, 8pt radius, `#F2F4F8` 15pt/600, monospaced digits, 1.5pt `#1E6FFF` border on focus), and a 26pt checkmark (empty: 1.5pt `#262C36` border; checked: filled `#2FBF71` + white tick). On check, wash the whole row `#2FBF71` at 16% alpha and start the rest timer."
|
|
391
|
+
|
|
392
|
+
- "Render the Hevy rest-timer pill: 44pt tall, full-width minus 18pt, 12pt radius, `#14233F` bg, 1pt `rgba(30,111,255,0.35)` border. Leading 22pt circular progress ring (3pt stroke, track `rgba(30,111,255,0.3)`, fill `#1E6FFF`) sweeping over the rest duration. Center text `Rest · 1:24` in `#1E6FFF` 14pt/600 monospaced. Trailing `Skip` in `#9BA3B0` 13pt/600. Soft haptic + sound at 0; mirror to a Live Activity."
|
|
393
|
+
|
|
394
|
+
- "Build the Hevy PR badge: an inline chip with `#F5B83D` at 18% alpha background, `#F5B83D` text, Inter 10pt weight 800 uppercase, content `★ NEW PR · 1RM 87.5 kg`. On appear, spring-scale 0.9→1.0 over 220ms with a brief gold opacity pulse and a medium-impact haptic."
|
|
395
|
+
|
|
396
|
+
- "Create a Hevy exercise card: `#161B22` bg, 1pt `#262C36` border, 16pt radius, 14pt padding. Header: 36pt thumbnail (`#283040`, blue glyph), exercise name in `#1E6FFF` Inter 18pt/700, trailing `⋯` `#5E6675`. Body: the set table (columns SET / PREVIOUS / KG / REPS / ✓, 11pt uppercase `#9BA3B0` headers). Footer: a full-width `+ Add Set` tonal row, 34pt, 9pt radius, `#1F2630` bg, `#9BA3B0` 13pt/700."
|
|
397
|
+
|
|
398
|
+
- "Render the Hevy bottom tab bar: 68pt incl. home indicator, `rgba(14,17,22,0.94)` + blur, 0.5pt `#262C36` top border. Tabs: Home, Profile, Workout (center), History, Exercises. 22pt icons; active `#1E6FFF` with a soft `rgba(30,111,255,0.16)` fill; inactive `#5E6675`; labels Inter 10pt/600 always shown. No tint pill."
|
|
399
|
+
|
|
400
|
+
### Iteration Guide
|
|
401
|
+
1. Canvas is near-black blue-cool `#0E1116` — NOT pure black, NOT a warm dark
|
|
402
|
+
2. Hevy Blue `#1E6FFF` is the ONLY action color — Finish, tabs, exercise titles, every CTA
|
|
403
|
+
3. Every number uses tabular figures — the set table must never reflow as digits change
|
|
404
|
+
4. The `Previous` column is mandatory on every set — it is the product's core value
|
|
405
|
+
5. Completed set rows wash green `#2FBF71` @ 16% with a filled checkmark; rest timer auto-starts
|
|
406
|
+
6. PR badge is gold `#F5B83D` and fires on record-break — a pulse + haptic, never confetti
|
|
407
|
+
7. Surface ladder (`#0E1116`→`#161B22`→`#1F2630`→`#283040`) + 1pt borders carry depth, not shadows
|
|
408
|
+
8. The set table is intentionally dense so a full exercise fits on screen mid-set
|
|
409
|
+
9. Exercise names are bold AND blue (heading + tap-to-edit affordance)
|
|
410
|
+
10. Motion is functional and fast (120–320ms) — a gym tool must feel instant
|