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,400 @@
|
|
|
1
|
+
# Design System Inspiration of happn (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
happn's entire product — and therefore its design system — is built around a single, very specific idea: **the people you have crossed paths with in real life**. Not a global swipe deck, not a search radius — happn shows you profiles only after your phone and theirs registered being in roughly the same place at roughly the same time. The signature screen is the **Crossings timeline**: a vertical, scrollable feed where each entry is a location-and-time-stamped card ("Camille, 27 — Le Marais · 11 min ago — You crossed paths 3 times"), strung together on a thin connector line dotted with happn-pink markers. The timeline reads like a diary of near-misses, and the core gesture is sending a **Charm** — a one-tap pink heart that tells someone "I noticed you crossed my path."
|
|
6
|
+
|
|
7
|
+
The brand color is an unmistakable **happn pink** (`#FF4865`) that on hero moments deepens into a pink→**magenta** (`#E91E63`) gradient. This pink is the connective tissue of the whole UI: it's the timeline dots, the Charm heart, the active tab, the primary button, and the map crossing pins. A warm **rose tint** (`#FF7B93`) softens secondary surfaces, and a single reserved **gold** (`#FFC24B`) means one thing only — **Crush** (mutual instant interest) and premium. The canvas is a cool graphite near-black (`#0E0E12`) in dark mode and a clean off-white in light; happn ships both, but the brand is most recognizable on dark, where the pink and the timeline glow.
|
|
8
|
+
|
|
9
|
+
The second defining surface is the **Map** — the same crossings rendered as teardrop pins on a city map, so you can literally see *where* your paths intersected (a café, a metro station, a park). Pins use the same pink / gradient / ghost language as the timeline hearts. The third surface is **Chats**, which only unlock after a mutual Charm (a **Crush**), reinforcing that conversation is earned through real-world serendipity. Beyond Charm there's the **FlashNote** — a short opener attached to your Charm so the first message references something real.
|
|
10
|
+
|
|
11
|
+
Typography is a friendly rounded-geometric: **Poppins** for the wordmark, names, headings, and buttons (its circular bowls feel warm and contemporary, matching happn's optimistic "serendipity" tone), with **Inter** for body copy, location strings, and metadata where dense legibility matters. Weights live in the 400/500/600/700 band. Geometry is soft: cards at 18pt, buttons are full pills (500pt), avatars are 16pt rounded squares, map pins are the classic teardrop. The overall feeling is hopeful, urban, a little romantic, and grounded in *place and time* rather than endless swiping.
|
|
12
|
+
|
|
13
|
+
**Key Characteristics:**
|
|
14
|
+
- Crossings timeline — a vertical connector-line feed of location+time-stamped cards (the signature screen)
|
|
15
|
+
- Built on real-world path-crossing, not a global swipe deck or radius search
|
|
16
|
+
- happn pink `#FF4865` as connective tissue: dots, Charm heart, active tab, primary CTA, map pins
|
|
17
|
+
- Pink→magenta gradient (`#FF4865 → #E91E63`) on hero buttons and the Crush star
|
|
18
|
+
- "Charm" — the one-tap pink-heart gesture; "Crush" — mutual Charm that unlocks chat
|
|
19
|
+
- Reserved gold `#FFC24B` — Crush / premium only, used nowhere else
|
|
20
|
+
- Map view — the same crossings as teardrop pins on a city map (where you crossed)
|
|
21
|
+
- FlashNote — a short opener attached to a Charm so first contact references something real
|
|
22
|
+
- Location + time stamps everywhere ("Le Marais · 11 min ago", "You crossed paths 3 times")
|
|
23
|
+
- Cool graphite canvas `#0E0E12` dark / off-white light — ships both, recognizable on dark
|
|
24
|
+
- Poppins (wordmark/names/headings/buttons) + Inter (body/location/meta) — warm rounded-geometric
|
|
25
|
+
- Soft geometry — 18pt cards, 500pt pill buttons, 16pt rounded-square avatars, teardrop pins
|
|
26
|
+
|
|
27
|
+
## 2. Color Palette & Roles
|
|
28
|
+
|
|
29
|
+
### Primary (Interactive)
|
|
30
|
+
- **happn Pink** (`#FF4865`): The brand color and connective tissue — timeline dots, Charm heart, active tab, primary button, map pins, crossing count.
|
|
31
|
+
- **Pink Pressed** (`#E5354F`): Pressed state of pink surfaces.
|
|
32
|
+
- **Magenta** (`#E91E63`): Gradient end-stop, deep accents — pairs with happn pink in the hero gradient.
|
|
33
|
+
- **Hero Gradient**: `linear-gradient(120deg, #FF4865, #E91E63)` — primary hero buttons, Crush star, splash.
|
|
34
|
+
- **Rose Tint** (`#FF7B93`): Soft secondary accent, subtle highlights, secondary avatars.
|
|
35
|
+
- **Crush Gold** (`#FFC24B`): RESERVED — Crush celebration + premium only. Never decorative.
|
|
36
|
+
|
|
37
|
+
### Canvas & Surfaces (Dark)
|
|
38
|
+
- **Canvas Graphite** (`#0E0E12`): Primary dark canvas — cool near-black, NOT pure black.
|
|
39
|
+
- **Surface 1** (`#18181F`): Timeline cards, list rows.
|
|
40
|
+
- **Surface 2** (`#21212B`): Elevated chips, ghost buttons, top-bar icons, sheets.
|
|
41
|
+
- **Surface 3** (`#2C2C38`): Pressed surface, input fields.
|
|
42
|
+
- **Divider** (`#2A2A33`): Hairline dividers AND the timeline connector spine.
|
|
43
|
+
|
|
44
|
+
### Canvas & Surfaces (Light)
|
|
45
|
+
happn also ships a light theme. The brand is most recognizable on dark, but pair these for light.
|
|
46
|
+
|
|
47
|
+
| Role | Light Mode | Dark Mode |
|
|
48
|
+
|------|-----------|-----------|
|
|
49
|
+
| Canvas | `#FFFFFF` | `#0E0E12` |
|
|
50
|
+
| Surface 1 | `#F6F6F8` | `#18181F` |
|
|
51
|
+
| Surface 2 | `#EDEDF1` | `#21212B` |
|
|
52
|
+
| Surface 3 | `#E4E4EA` | `#2C2C38` |
|
|
53
|
+
| Divider / Spine | `#E6E6EC` | `#2A2A33` |
|
|
54
|
+
| Text Primary | `#15151B` | `#F4F4F6` |
|
|
55
|
+
| Text Secondary | `#6C6C7A` | `#A0A0AE` |
|
|
56
|
+
| happn Pink | `#FF4865` | `#FF4865` |
|
|
57
|
+
| Magenta | `#E91E63` | `#E91E63` |
|
|
58
|
+
| Crush Gold | `#FFC24B` | `#FFC24B` |
|
|
59
|
+
|
|
60
|
+
### Text
|
|
61
|
+
- **Text Primary** (`#F4F4F6` dark / `#15151B` light): Names, headings, primary body.
|
|
62
|
+
- **Text Secondary** (`#A0A0AE` dark / `#6C6C7A` light): Location strings, timestamps, metadata.
|
|
63
|
+
- **Text Tertiary** (`#6C6C7A` dark / `#9A9AA6` light): Disabled, very low emphasis, ghost icon strokes.
|
|
64
|
+
- **On-Pink** (`#FFFFFF`): Text/icon on pink or gradient fills.
|
|
65
|
+
- **On-Gold** (`#1A1A1A`): Text on Crush gold.
|
|
66
|
+
|
|
67
|
+
### Semantic
|
|
68
|
+
- **Success** (`#4ED9A4`): "Charm sent" confirmation, "It's a Crush" success.
|
|
69
|
+
- **Error** (`#FF5C5C`): Form errors, block/report confirmation.
|
|
70
|
+
- **Warning** (`#FFC24B`): Reuses Crush gold sparingly for caution (rare).
|
|
71
|
+
- **Crossing Glow** (`rgba(255,72,101,0.18)`): The 4pt halo ring around active timeline dots.
|
|
72
|
+
|
|
73
|
+
## 3. Typography Rules
|
|
74
|
+
|
|
75
|
+
### Font Family
|
|
76
|
+
- **Wordmark / Names / Headings / Buttons**: `Poppins` (by Indian Type Foundry & Jonny Pinhorn, SIL OFL) — a geometric sans with near-circular bowls; warm, optimistic, contemporary — matches happn's "serendipity" tone and approximates its rounded brand type.
|
|
77
|
+
- **Body / Location / Metadata**: `Inter` (by Rasmus Andersson, SIL OFL) — neutral and dense-legible for location strings, timestamps, chat, and long bios.
|
|
78
|
+
- **Fallback Stack**: `-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Segoe UI', Roboto, Helvetica, Arial, sans-serif`
|
|
79
|
+
- happn's production app uses a custom rounded-geometric; **Poppins** is the closest free, well-hinted match.
|
|
80
|
+
|
|
81
|
+
### Hierarchy
|
|
82
|
+
|
|
83
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
84
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
85
|
+
| Display | Poppins | 32pt | 700 | 1.15 | -0.5pt | Onboarding / empty-state hero |
|
|
86
|
+
| Profile Name | Poppins | 26pt | 700 | 1.15 | -0.4pt | Full profile "Camille, 27" |
|
|
87
|
+
| Section Title | Poppins | 22pt | 600 | 1.2 | -0.3pt | "People near you" |
|
|
88
|
+
| Subsection | Poppins | 18pt | 600 | 1.3 | -0.1pt | "Where you crossed" |
|
|
89
|
+
| Body | Inter | 16pt | 400 | 1.5 | 0pt | Bio text, chat messages |
|
|
90
|
+
| Card Name | Poppins | 15pt | 600 | 1.3 | 0pt | Name in timeline card "Léa, 24" |
|
|
91
|
+
| Timeline Header | Poppins | 15pt | 600 | 1.3 | 0pt | "Crossed paths today" |
|
|
92
|
+
| Location / Meta | Inter | 12pt | 400 | 1.4 | 0pt | "Le Marais · 11 min ago" |
|
|
93
|
+
| Crossing Count | Poppins | 12pt | 600 | 1.3 | 0pt | "You crossed paths 3 times" — pink |
|
|
94
|
+
| Body Meta | Inter | 14pt | 400 | 1.4 | 0pt | Secondary descriptive lines |
|
|
95
|
+
| Button | Poppins | 16pt | 600 | 1.0 | 0pt | Primary / gradient / outline CTA |
|
|
96
|
+
| Caption | Inter | 12pt | 400 | 1.3 | 0.1pt | Helper text, fine print |
|
|
97
|
+
| Tab Label | Poppins | 10pt | 600 | 1.0 | 0.2pt | Bottom tab labels |
|
|
98
|
+
|
|
99
|
+
### Principles
|
|
100
|
+
- **Two-font system**: Poppins carries warmth/identity (wordmark, names, headings, buttons, crossing count); Inter carries dense legibility (body, location strings, timestamps, chat). Never set body in Poppins.
|
|
101
|
+
- **Weights 400/500/600/700 only** — no thin, no black.
|
|
102
|
+
- **Crossing count is always pink**: "You crossed paths N times" uses happn pink `#FF4865` — it's the emotional hook of the timeline.
|
|
103
|
+
- **Negative tracking on display/section**: tighten -0.3 to -0.5pt at 22pt+ Poppins for a confident wordmark feel.
|
|
104
|
+
- **Location strings are quiet**: 12pt Inter `#A0A0AE` with a leading pin glyph — present but never louder than the name.
|
|
105
|
+
- **Dynamic Type**: display, name, section, body scale; crossing count, tab labels, location meta stay fixed (layout-sensitive rows).
|
|
106
|
+
|
|
107
|
+
## 4. Component Stylings
|
|
108
|
+
|
|
109
|
+
### Buttons
|
|
110
|
+
|
|
111
|
+
**Primary Button (Send a Charm / Continue)**
|
|
112
|
+
- Shape: Full pill, 500pt corner radius
|
|
113
|
+
- Background: `#FF4865` (happn pink)
|
|
114
|
+
- Text/Icon: `#FFFFFF`
|
|
115
|
+
- Padding: 15pt vertical, 30pt horizontal
|
|
116
|
+
- Font: Poppins 16pt weight 600
|
|
117
|
+
- Pressed: background `#E5354F` + scale 0.98
|
|
118
|
+
|
|
119
|
+
**Gradient Button (hero "Say hi" / splash CTA)**
|
|
120
|
+
- Background: `linear-gradient(120deg, #FF4865, #E91E63)`
|
|
121
|
+
- Text: `#FFFFFF`
|
|
122
|
+
- Shape: pill 500pt
|
|
123
|
+
- Padding: 15pt / 30pt
|
|
124
|
+
- Pressed: scale 0.98 + slight darken overlay
|
|
125
|
+
|
|
126
|
+
**Outline Button (Maybe later / secondary)**
|
|
127
|
+
- Background: transparent
|
|
128
|
+
- Text: `#F4F4F6` (dark) / `#15151B` (light)
|
|
129
|
+
- Border: 1.5pt `#FF4865`
|
|
130
|
+
- Shape: pill 500pt
|
|
131
|
+
- Padding: 13pt / 24pt
|
|
132
|
+
- Pressed: background `rgba(255,72,101,0.10)`
|
|
133
|
+
|
|
134
|
+
**Text Button (See profile / inline action)**
|
|
135
|
+
- Background: none
|
|
136
|
+
- Text: `#FF4865`, Poppins 15pt weight 600
|
|
137
|
+
- No underline
|
|
138
|
+
- Pressed: opacity 0.7
|
|
139
|
+
|
|
140
|
+
**Icon Button (top-bar search)**
|
|
141
|
+
- Size: 17pt glyph in a 34pt circular `#21212B` hit area
|
|
142
|
+
- Color: `#F4F4F6`, stroke 2pt
|
|
143
|
+
- Pressed: background `#2C2C38`
|
|
144
|
+
|
|
145
|
+
### Crossings Timeline (the core atom)
|
|
146
|
+
|
|
147
|
+
The signature happn surface. A vertical scroll where each crossing is a card pinned to a connector line.
|
|
148
|
+
|
|
149
|
+
**Connector Spine**
|
|
150
|
+
- A 2pt vertical line `#2A2A33` running down the left, behind the dots
|
|
151
|
+
- Continuous between cards; hidden after the last card
|
|
152
|
+
|
|
153
|
+
**Crossing Dot**
|
|
154
|
+
- 12pt circle, `#FF4865`, with a 4pt halo `rgba(255,72,101,0.18)` ring
|
|
155
|
+
- Positioned at the top-left of each card, centered on the spine
|
|
156
|
+
- Ghost (older / not-yet-active) variant: dot uses `#2C2C38`, no halo
|
|
157
|
+
|
|
158
|
+
**Crossing Card**
|
|
159
|
+
- Shape: rounded rect, 18pt corner radius
|
|
160
|
+
- Background: `#18181F` (dark) / `#F6F6F8` (light), 1pt `#2A2A33` border
|
|
161
|
+
- Padding: 12pt; left content inset 26pt to clear the spine/dot
|
|
162
|
+
- Layout (horizontal): avatar · meta · Charm heart
|
|
163
|
+
- Avatar: 56pt rounded square, 16pt radius (gradient placeholder)
|
|
164
|
+
- Name: Poppins 15pt w600 `#F4F4F6` ("Camille, 27")
|
|
165
|
+
- Location row: pin glyph 11pt + Inter 12pt `#A0A0AE` ("Le Marais · 11 min ago")
|
|
166
|
+
- Crossing count: Poppins 12pt w600 `#FF4865` ("You crossed paths 3 times")
|
|
167
|
+
- Charm heart (trailing): 40pt circle
|
|
168
|
+
- Card-to-card gap: 14pt
|
|
169
|
+
|
|
170
|
+
**Charm Heart (on card)**
|
|
171
|
+
- Active/available: 40pt circle `#FF4865`, white filled heart 18pt, shadow `0 6px 16px -4px rgba(255,72,101,0.5)`
|
|
172
|
+
- Ghost (not yet charmed): 40pt circle `#21212B`, 1pt `#2A2A33`, heart outline `#A0A0AE`
|
|
173
|
+
- Sent: heart fills + brief scale bounce + success haptic
|
|
174
|
+
|
|
175
|
+
### Charm · Crush · FlashNote
|
|
176
|
+
|
|
177
|
+
**Charm** — the core action. A pink heart that signals interest from a crossing.
|
|
178
|
+
- Standalone large variant: 56pt circle `#FF4865`, white heart 24pt, shadow `0 8px 20px -6px rgba(255,72,101,0.55)`
|
|
179
|
+
|
|
180
|
+
**Crush** — a mutual Charm. Unlocks chat. Celebrated with gold.
|
|
181
|
+
- Crush star: 56pt circle, hero gradient `linear-gradient(135deg,#FF4865,#E91E63)`, white star 24pt
|
|
182
|
+
- Crush celebration screen uses **gold `#FFC24B`** accents (the only place gold appears besides premium)
|
|
183
|
+
|
|
184
|
+
**FlashNote** — a short opener attached to a Charm.
|
|
185
|
+
- Surface: `#21212B`, 1pt `#2A2A33`, 16pt radius, 12/16pt padding
|
|
186
|
+
- Text: Inter 13pt `#A0A0AE`, prefixed "FlashNote · "
|
|
187
|
+
|
|
188
|
+
### Map View
|
|
189
|
+
|
|
190
|
+
**Crossing Pin (teardrop)**
|
|
191
|
+
- Classic teardrop: 44pt body, `border-radius: 50% 50% 50% 6px` rotated 45°, white 30pt inner dot
|
|
192
|
+
- Default: `#FF4865`
|
|
193
|
+
- Highlighted / mutual: hero gradient `linear-gradient(135deg,#FF4865,#E91E63)`
|
|
194
|
+
- Ghost (passed / older): `#21212B`, 1pt `#2A2A33`, `#6C6C7A` inner
|
|
195
|
+
- Tap → opens the crossing's profile sheet
|
|
196
|
+
|
|
197
|
+
### Navigation
|
|
198
|
+
|
|
199
|
+
**Top Bar**
|
|
200
|
+
- Height: 44pt + safe area
|
|
201
|
+
- Leading: wordmark "happ**n**" — Poppins 22pt w700, the trailing "n" in `#FF4865`
|
|
202
|
+
- Trailing: search glyph 17pt in a 34pt `#21212B` circle
|
|
203
|
+
- Background: transparent over canvas
|
|
204
|
+
|
|
205
|
+
**Bottom Tab Bar**
|
|
206
|
+
- Height: 64pt + safe area
|
|
207
|
+
- Background: `rgba(14,14,18,0.94)` + `saturate(180%) blur(20px)`, 0.5pt top border `#2A2A33`
|
|
208
|
+
- Tabs (4): Timeline · Map · Chats · Profile
|
|
209
|
+
- Icon: 23pt; Timeline icon is the happn heart-leaf glyph
|
|
210
|
+
- Active: icon filled `#FF4865` + label `#FF4865` Poppins 10pt w600
|
|
211
|
+
- Inactive: `#6C6C7A`
|
|
212
|
+
- No tint pill — color + fill is the active signal
|
|
213
|
+
|
|
214
|
+
### Input Fields
|
|
215
|
+
|
|
216
|
+
**Search Bar**
|
|
217
|
+
- Height: 44pt
|
|
218
|
+
- Background: `#21212B` (dark) / `#EDEDF1` (light)
|
|
219
|
+
- Border: none (focus: 1.5pt `#FF4865`)
|
|
220
|
+
- Corner radius: 999pt (pill)
|
|
221
|
+
- Leading magnifier 16pt `#A0A0AE`; placeholder Inter 14pt `#A0A0AE`
|
|
222
|
+
|
|
223
|
+
**Chat Composer**
|
|
224
|
+
- Height: 44pt pill, `#21212B`, send button = 34pt pink circle with white arrow
|
|
225
|
+
- FlashNote prompt appears above composer on first message
|
|
226
|
+
|
|
227
|
+
### Distinctive Components
|
|
228
|
+
|
|
229
|
+
**Crossings Timeline** — see above. The defining happn surface: place + time + frequency of real-world path crossings, on a connector line.
|
|
230
|
+
|
|
231
|
+
**Charm Heart** — the one-tap pink interest gesture, present on every timeline card and profile.
|
|
232
|
+
|
|
233
|
+
**Crush Celebration** — the gold moment when a Charm is mutual; chat unlocks.
|
|
234
|
+
|
|
235
|
+
**FlashNote** — opener text attached to a Charm so first contact references something real.
|
|
236
|
+
|
|
237
|
+
**Map Crossing Pins** — the same crossings as teardrop pins on a city map; the "where" of serendipity.
|
|
238
|
+
|
|
239
|
+
**Crossing Count Badge** — "You crossed paths N times" in pink; the emotional hook that differentiates happn from swipe apps.
|
|
240
|
+
|
|
241
|
+
## 5. Layout Principles
|
|
242
|
+
|
|
243
|
+
### Spacing System
|
|
244
|
+
- Base unit: 4pt
|
|
245
|
+
- Scale: 4, 8, 12, 14, 16, 18, 20, 24, 26, 32, 40, 56
|
|
246
|
+
- Card padding: 12pt; spine clearance inset: 26pt
|
|
247
|
+
- Card-to-card gap: 14pt
|
|
248
|
+
- Screen side inset: 16pt
|
|
249
|
+
|
|
250
|
+
### Grid & Container
|
|
251
|
+
- iPhone: single timeline column, 16pt side insets
|
|
252
|
+
- Map: full-bleed; pins overlay; profile sheet slides up over the map
|
|
253
|
+
- iPad: timeline max-width 600pt centered; Map fills, sheet as side panel
|
|
254
|
+
- No multi-column content — the timeline is a single focused scroll
|
|
255
|
+
|
|
256
|
+
### Whitespace Philosophy
|
|
257
|
+
- **Timeline rhythm**: 14pt between crossing cards keeps the connector line readable as a continuous thread
|
|
258
|
+
- **The spine is sacred**: never let card content cross the 26pt inset that protects the connector line + dots
|
|
259
|
+
- **Location is quiet**: generous but secondary; the name and crossing count lead, the place/time supports
|
|
260
|
+
- **Map breathes**: pins are spaced so taps don't collide; clusters expand on zoom
|
|
261
|
+
|
|
262
|
+
### Border Radius Scale
|
|
263
|
+
- Square (0pt): full-bleed map
|
|
264
|
+
- Medium (8pt): inline tags, small affordances
|
|
265
|
+
- Standard (12pt): small cards, sheet sub-elements
|
|
266
|
+
- Avatar (16pt): timeline rounded-square avatars; FlashNote surface
|
|
267
|
+
- Card (18pt): the signature crossing card
|
|
268
|
+
- Comfortable (24pt): bottom-sheet top corners
|
|
269
|
+
- Pill (500pt): all buttons, search bar
|
|
270
|
+
- Circle (50%): Charm/Crush buttons, dots, tab icons hit area
|
|
271
|
+
- Teardrop: map pins (`50% 50% 50% 6px` rotated 45°)
|
|
272
|
+
|
|
273
|
+
## 6. Depth & Elevation
|
|
274
|
+
|
|
275
|
+
happn uses soft, pink-tinted elevation — shadows are warm and reserved for the Charm and floating layers.
|
|
276
|
+
|
|
277
|
+
| Level | Treatment | Use |
|
|
278
|
+
|-------|-----------|-----|
|
|
279
|
+
| Flat (Level 0) | No shadow | Canvas, connector spine, list text |
|
|
280
|
+
| Card (Level 1) | 1pt `#2A2A33` border (dark) / `0 1px 3px rgba(0,0,0,0.06)` (light) | Crossing cards |
|
|
281
|
+
| Charm (Level 2) | `0 6px 16px -4px rgba(255,72,101,0.5)` | Charm heart on card |
|
|
282
|
+
| Charm Large (Level 2+) | `0 8px 20px -6px rgba(255,72,101,0.55)` | Standalone Charm / Crush button |
|
|
283
|
+
| Sheet (Level 3) | `0 -8px 40px rgba(0,0,0,0.5)` | Profile sheet over map, bottom sheets |
|
|
284
|
+
| Scrim | `rgba(0,0,0,0.45)` | Dim behind sheets and the Crush takeover |
|
|
285
|
+
|
|
286
|
+
**Shadow Philosophy**: happn's elevation is *emotional* — the only prominent shadows are the warm pink halos behind the Charm and Crush buttons, which read as "this is the thing to tap." Cards lean on a 1pt border (dark) or a whisper shadow (light) rather than heavy elevation, so the timeline stays calm and the pink pops.
|
|
287
|
+
|
|
288
|
+
### Motion
|
|
289
|
+
- **Charm tap**: heart scales 1.0 → 1.25 → 1.0 over 280ms spring (damping 0.55), fills pink, soft success haptic; on the card the ghost heart morphs to filled
|
|
290
|
+
- **Crush reveal**: full-screen gold takeover — two avatars slide together from edges 360ms ease-out, gold sparkle burst, "It's a Crush!" Poppins 32pt, chat-unlock button rises
|
|
291
|
+
- **Timeline scroll**: connector spine and dots scroll with content; new crossings fade+slide in from bottom 240ms ease-out as they load
|
|
292
|
+
- **Dot pulse**: a freshly-added crossing's dot pulses its halo (scale 1.0 → 1.4 → 1.0) once over 600ms to draw the eye
|
|
293
|
+
- **Card press**: scale 0.98 + 80ms ease-out; release springs back
|
|
294
|
+
- **Tab switch**: icon fill cross-dissolves to pink 180ms; no pill slide
|
|
295
|
+
- **Map pin tap**: pin lifts (translateY -6pt) + bounce 220ms, profile sheet slides up 320ms ease-out
|
|
296
|
+
- **Sheet present**: slide up 320ms ease-out; scrim fades in parallel
|
|
297
|
+
- **Haptics**: soft impact on Charm sent, success notification on Crush, light selection on tab switch and pin tap
|
|
298
|
+
|
|
299
|
+
## 7. Do's and Don'ts
|
|
300
|
+
|
|
301
|
+
### Do
|
|
302
|
+
- Make the Crossings timeline the home screen — a connector line of place+time+frequency cards
|
|
303
|
+
- Keep happn pink `#FF4865` as the connective tissue — dots, Charm, active tab, primary CTA, pins
|
|
304
|
+
- Always show the crossing count in pink ("You crossed paths N times") — it's the emotional hook
|
|
305
|
+
- Protect the 26pt spine inset — card content never crosses the connector line
|
|
306
|
+
- Use the pink→magenta gradient on hero buttons and the Crush star
|
|
307
|
+
- Reserve gold `#FFC24B` strictly for Crush + premium — nowhere else
|
|
308
|
+
- Render the Map with the same pink / gradient / ghost teardrop language as the timeline
|
|
309
|
+
- Use Poppins for warmth (wordmark, names, headings, buttons) and Inter for legibility (body, location, chat)
|
|
310
|
+
- Stamp location + time on every crossing ("Le Marais · 11 min ago")
|
|
311
|
+
- Celebrate a Crush with a full gold takeover — conversation is earned through serendipity
|
|
312
|
+
- Use a cool graphite canvas `#0E0E12` for dark — not pure black
|
|
313
|
+
|
|
314
|
+
### Don't
|
|
315
|
+
- Don't present a global swipe deck — happn is path-crossings, not a radius search
|
|
316
|
+
- Don't let card content cross the connector spine inset (breaks the timeline metaphor)
|
|
317
|
+
- Don't use gold for anything but Crush/premium (it dilutes the celebration)
|
|
318
|
+
- Don't drop the location/time/frequency stamps — they ARE the product
|
|
319
|
+
- Don't set body or location strings in Poppins — Inter carries dense legibility
|
|
320
|
+
- Don't tint the whole active tab (pill/label block) — color + icon fill is enough
|
|
321
|
+
- Don't make location louder than the name — place supports, name leads
|
|
322
|
+
- Don't use pure black for the dark canvas — `#0E0E12` graphite keeps cards readable
|
|
323
|
+
- Don't unlock chat before a mutual Charm — a Crush gates conversation by design
|
|
324
|
+
- Don't use thin/black font weights — stay 400–700
|
|
325
|
+
- Don't replace "Charm"/"Crush" vocabulary with "Like"/"Match" — it changes the brand voice
|
|
326
|
+
|
|
327
|
+
## 8. Responsive Behavior
|
|
328
|
+
|
|
329
|
+
### Device Sizes
|
|
330
|
+
| Device | Width | Key Changes |
|
|
331
|
+
|--------|-------|-------------|
|
|
332
|
+
| iPhone SE (3rd gen) | 375pt | Avatar 48pt; crossing count wraps below location; tighter card padding |
|
|
333
|
+
| iPhone 13/14/15 | 390pt | Standard layout |
|
|
334
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island; top bar + first card start below island |
|
|
335
|
+
| iPhone 15/16 Pro Max | 430pt | Avatar 60pt; larger Charm 44pt; name 16pt |
|
|
336
|
+
| iPad (portrait) | 768pt | Timeline max-width 600pt centered; Map full with side profile panel |
|
|
337
|
+
| iPad (landscape) | 1024pt+ | Split: timeline list (420pt) + Map detail, or Map + profile panel |
|
|
338
|
+
|
|
339
|
+
### Dynamic Type
|
|
340
|
+
- Display, profile name, section, body: full scale
|
|
341
|
+
- Crossing count, tab labels, location/time meta: FIXED (layout-sensitive timeline rows)
|
|
342
|
+
- Card name scales one step then truncates with ellipsis (never wraps to 2 lines)
|
|
343
|
+
|
|
344
|
+
### Orientation
|
|
345
|
+
- Timeline portrait-preferred on iPhone; Map rotates freely
|
|
346
|
+
- iPad supports landscape — list + Map split layout
|
|
347
|
+
- Chat rotates freely
|
|
348
|
+
|
|
349
|
+
### Touch Targets
|
|
350
|
+
- Charm heart (card): 40pt circle (≥ 44pt hit via padding)
|
|
351
|
+
- Standalone Charm/Crush: 56pt
|
|
352
|
+
- Map pin: 44pt teardrop body, 48pt hit
|
|
353
|
+
- Tab icon: 23pt glyph, 48pt hit
|
|
354
|
+
- Top-bar search: 34pt circle hit
|
|
355
|
+
- Crossing card: full-card tap → profile
|
|
356
|
+
|
|
357
|
+
### Safe Area Handling
|
|
358
|
+
- Top: wordmark + first card respect Dynamic Island / notch
|
|
359
|
+
- Bottom: tab bar + home indicator respected; last card scrolls clear of tab bar
|
|
360
|
+
- Map: pins and sheet respect safe areas; sheet grab handle below notch
|
|
361
|
+
- Keyboard (chat): composer rises with keyboard; messages scroll above it
|
|
362
|
+
|
|
363
|
+
## 9. Agent Prompt Guide
|
|
364
|
+
|
|
365
|
+
### Quick Color Reference
|
|
366
|
+
- Canvas: `#0E0E12` dark / `#FFFFFF` light (graphite, not pure black)
|
|
367
|
+
- Surface 1 / 2 / 3: `#18181F` / `#21212B` / `#2C2C38`
|
|
368
|
+
- Divider / timeline spine: `#2A2A33`
|
|
369
|
+
- Text primary / secondary / tertiary: `#F4F4F6` / `#A0A0AE` / `#6C6C7A`
|
|
370
|
+
- happn pink: `#FF4865` (pressed `#E5354F`)
|
|
371
|
+
- Magenta (gradient end): `#E91E63` — gradient `linear-gradient(120deg,#FF4865,#E91E63)`
|
|
372
|
+
- Rose tint: `#FF7B93`
|
|
373
|
+
- Crush gold (reserved): `#FFC24B`
|
|
374
|
+
- On-pink text: `#FFFFFF`
|
|
375
|
+
- Success / Error: `#4ED9A4` / `#FF5C5C`
|
|
376
|
+
|
|
377
|
+
### Example Component Prompts
|
|
378
|
+
- "Build the happn Crossings timeline in SwiftUI: a vertical scroll with a 2pt `#2A2A33` connector spine on the left. Each crossing = a 12pt `#FF4865` dot with a 4pt `rgba(255,72,101,0.18)` halo on the spine, plus a card (18pt radius, `#18181F`, 1pt `#2A2A33` border, 12pt padding, 26pt left inset to clear the spine). Card: 56pt rounded-square avatar (16pt radius), name Poppins 15pt w600 `#F4F4F6` ('Camille, 27'), location row = 11pt pin glyph + Inter 12pt `#A0A0AE` ('Le Marais · 11 min ago'), crossing count Poppins 12pt w600 `#FF4865` ('You crossed paths 3 times'), trailing 40pt Charm heart. 14pt gap between cards."
|
|
379
|
+
|
|
380
|
+
- "Create the happn Charm heart: 40pt circle `#FF4865` with white filled heart 18pt and shadow `0 6px 16px -4px rgba(255,72,101,0.5)`. Ghost (not yet charmed) variant: 40pt circle `#21212B`, 1pt `#2A2A33`, outline heart `#A0A0AE`. On tap: scale 1.0 → 1.25 → 1.0 over 280ms spring (damping 0.55), fill pink, soft success haptic."
|
|
381
|
+
|
|
382
|
+
- "Build the happn Crush celebration: full-screen gold takeover. Two circular avatars slide together from left/right edges over 360ms ease-out, a `#FFC24B` gold sparkle burst, 'It's a Crush!' in Poppins 32pt w700 `#F4F4F6`, then a gradient pill button 'Start chatting' (`linear-gradient(120deg,#FF4865,#E91E63)`, Poppins 16pt w600 `#FFFFFF`) rises from the bottom. Success notification haptic."
|
|
383
|
+
|
|
384
|
+
- "Render a happn map crossing pin: a teardrop — 44pt body, `border-radius: 50% 50% 50% 6px` rotated 45°, 30pt white inner circle. Default `#FF4865`; mutual/highlighted = `linear-gradient(135deg,#FF4865,#E91E63)`; ghost = `#21212B` + 1pt `#2A2A33` + `#6C6C7A` inner. Tap lifts the pin -6pt with a 220ms bounce and slides up the profile sheet 320ms ease-out."
|
|
385
|
+
|
|
386
|
+
- "Create the happn bottom tab bar: height 64pt + safe area, background `rgba(14,14,18,0.94)` + `saturate(180%) blur(20px)`, 0.5pt top border `#2A2A33`. Four tabs: Timeline (happn heart-leaf glyph), Map, Chats, Profile, icons 23pt. Active = filled icon `#FF4865` + label `#FF4865` Poppins 10pt w600; inactive `#6C6C7A`. No tint pill."
|
|
387
|
+
|
|
388
|
+
- "Build the happn FlashNote field: surface `#21212B`, 1pt `#2A2A33`, 16pt radius, 12/16pt padding, text Inter 13pt `#A0A0AE` prefixed 'FlashNote · '. It attaches to a Charm so the recipient sees a real opener with the interest."
|
|
389
|
+
|
|
390
|
+
### Iteration Guide
|
|
391
|
+
1. The home screen is the Crossings timeline — a connector-line feed of place+time+frequency cards, NOT a swipe deck
|
|
392
|
+
2. happn pink `#FF4865` is the connective tissue — dots, Charm, active tab, primary CTA, map pins
|
|
393
|
+
3. The crossing count is always pink ("You crossed paths N times") — it's the emotional differentiator
|
|
394
|
+
4. The 26pt spine inset is sacred — card content never crosses the connector line
|
|
395
|
+
5. Gold `#FFC24B` is reserved for Crush + premium only — never decorative
|
|
396
|
+
6. Hero buttons + the Crush star use the pink→magenta gradient `linear-gradient(120deg,#FF4865,#E91E63)`
|
|
397
|
+
7. Type is two-font: Poppins for warmth (wordmark/name/heading/button), Inter for legibility (body/location/chat)
|
|
398
|
+
8. Map pins reuse the timeline's pink / gradient / ghost language as teardrops
|
|
399
|
+
9. Chat is gated by a mutual Charm (a Crush) — conversation is earned through real-world serendipity
|
|
400
|
+
10. Dark canvas is graphite `#0E0E12`, not pure black; cards lift from `#18181F`
|