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,372 @@
|
|
|
1
|
+
# Design System Inspiration of Substack (iOS)
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Substack's iOS app is built around a single belief: the writing is the product, and the writer's voice deserves a page that looks like a fine magazine, not a feed. Open any post and you land on a clean white reading surface — a serif headline set tight, an italic serif dek, a compact byline with the publication's logo and subscriber count, and then long-form body text in a generous reading serif at 18pt with 1.65 line-height. There are no cards around the prose, no boxes, no shadows in the reading column. The chrome is deliberately minimal and editorial: the only saturated color in the entire experience is **Substack Orange (`#FF6719`)**, and it is rationed almost entirely to one job — the **Subscribe** button. Substack monetizes writers, so the orange Subscribe CTA is the single most important pixel in the app and everything else recedes to let it land.
|
|
6
|
+
|
|
7
|
+
The signature screen is the **post reader**: publication row (logo tile + name + subscriber count), serif title, italic serif subtitle, byline with avatar and "X min read", body prose with inline orange-left-border pull-quotes, a sticky **Subscribe card** (often a paywall break — "Keep reading with a subscription") with the orange button and the price line, and a bottom action bar (Like ♥ in orange, Comment, Restack, Share). The second signature surface is the **Inbox**: a chronological list of new posts from every publication the reader subscribes to — a small square publication thumbnail, an uppercase orange publication name, a serif post title, byline + read-time meta, and an orange unread dot. Inbox is the home tab; it is an email-replacement reading queue, not an algorithmic feed.
|
|
8
|
+
|
|
9
|
+
The color system is intentionally sparse. White paper carries the reading experience; near-black serif ink does the words; Substack Orange is the brand and the conversion; a single link blue (`#4A6FE3`) handles inline hyperlinks; everything else is neutral grey. The typography is the design: a high-quality reading serif (Spectral / Source Serif family) for everything the reader *reads* — titles, deks, body, pull-quotes — and a clean grotesque (Inter / system) for the chrome the reader *operates* — buttons, labels, the tab bar, metadata. The app has a Reader (light) and a Dark theme; the dark theme softens the page to charcoal `#121212` but the orange never changes — it is the one constant signal.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- White reading surface (`#FFFFFF`) light / soft charcoal (`#121212`) dark — a magazine page, not a feed
|
|
13
|
+
- Serif everything-you-read (title, dek, body, pull-quote); sans everything-you-operate (buttons, tabs, meta)
|
|
14
|
+
- Substack Orange (`#FF6719`) rationed almost entirely to the Subscribe CTA — the one conversion
|
|
15
|
+
- Long-form reading body: serif 18pt, 1.65 line-height, generous measure — built for 18-minute reads
|
|
16
|
+
- Sticky Subscribe card / paywall break with orange button + price line ("$8/month · $80/year")
|
|
17
|
+
- Inbox as home — a chronological subscription queue with orange publication labels + unread dots
|
|
18
|
+
- Publication row: logo tile + name + subscriber count — the publication is the brand, not Substack
|
|
19
|
+
- Pull-quotes with a 3pt orange left border, italic serif
|
|
20
|
+
- Bottom action bar: Like (orange heart) / Comment / Restack / Share
|
|
21
|
+
- Discover, Notes (a short-form companion feed), and Profile complete the tabs
|
|
22
|
+
- Restraint: one orange, one link blue, neutral greys — no decorative color anywhere
|
|
23
|
+
|
|
24
|
+
## 2. Color Palette & Roles
|
|
25
|
+
|
|
26
|
+
### Primary (Brand & Interactive)
|
|
27
|
+
- **Substack Orange** (`#FF6719`): The single brand + conversion color — Subscribe button, active tab, unread dot, liked heart, publication label, pull-quote border. Held identical light AND dark.
|
|
28
|
+
- **Orange Pressed** (`#E5560E`): Pressed state of the Subscribe button and orange controls.
|
|
29
|
+
- **Orange Tint Surface** (`#FFF7F2` light / `#2A1C12` dark): Subscribe-card / paywall background wash.
|
|
30
|
+
- **Orange Tint Border** (`#FFD9C2` light / `#5C3A24` dark): Subscribe-card hairline.
|
|
31
|
+
- **Link Blue** (`#4A6FE3`): Inline hyperlinks in body prose only — the one non-orange accent.
|
|
32
|
+
|
|
33
|
+
### Reading Surface (Light — "Reader" theme)
|
|
34
|
+
- **Paper White** (`#FFFFFF`): The reading page.
|
|
35
|
+
- **Reading Ink** (`#1F1F1F`): Body prose — near-black, warm-neutral, not pure black.
|
|
36
|
+
- **Title Ink** (`#1A1A1A`): Titles and headers.
|
|
37
|
+
- **Subhead Ink** (`#57534E`): Dek / subtitle, warm grey.
|
|
38
|
+
- **Meta Grey** (`#8A8A8A`): Byline meta, captions.
|
|
39
|
+
- **Hairline** (`#ECECEC`): Byline and section rules.
|
|
40
|
+
|
|
41
|
+
### App Surfaces (Light)
|
|
42
|
+
- **Surface Subtle** (`#F7F6F4`): Search field, grouped rows.
|
|
43
|
+
- **Divider** (`#E7E5E1`): List dividers.
|
|
44
|
+
|
|
45
|
+
### App Surfaces (Dark)
|
|
46
|
+
- **Dark Canvas** (`#121212`): Reading page + app background in dark — soft charcoal, NOT pure black.
|
|
47
|
+
- **Dark Surface 1** (`#1B1B1B`): Cards, the Subscribe card base, rows.
|
|
48
|
+
- **Dark Surface 2** (`#262626`): Pressed rows, search field.
|
|
49
|
+
- **Dark Divider** (`#2E2E2E`): Hairline rules on dark.
|
|
50
|
+
|
|
51
|
+
### Text
|
|
52
|
+
- **Text Primary Light** (`#1A1A1A`): Chrome labels, titles.
|
|
53
|
+
- **Text Secondary Light** (`#6B6B6B`): Metadata, captions.
|
|
54
|
+
- **Text Primary Dark** (`#EDEDED`): Body + chrome on dark.
|
|
55
|
+
- **Text Secondary Dark** (`#A6A6A6`): Secondary text on dark.
|
|
56
|
+
- **Text Tertiary Dark** (`#6E6E6E`): Disabled / overline on dark.
|
|
57
|
+
|
|
58
|
+
### Semantic
|
|
59
|
+
- **Error Red** (`#D93025`): Unsubscribe confirm, payment error.
|
|
60
|
+
- **Success Green** (`#1A8917`): "Subscribed" / saved toast.
|
|
61
|
+
- **Like Orange** (`#FF6719`): Liked-heart fill (reuses brand orange).
|
|
62
|
+
- **Warning Amber** (`#E5560E`): Non-blocking warnings (reuses pressed orange).
|
|
63
|
+
|
|
64
|
+
## 3. Typography Rules
|
|
65
|
+
|
|
66
|
+
### Font Family
|
|
67
|
+
- **Reading Serif**: Substack sets long-form in a high-quality reading serif. Use **`Source Serif 4`** (Frank Grießhammer / Adobe, SIL OFL — an optical-size transitional serif) as the reference face for titles, deks, body, and pull-quotes; `Spectral` (Production Type, SIL OFL) is an equally faithful alternative. The reading face is the brand's editorial voice.
|
|
68
|
+
- **UI / Chrome**: **`Inter`** (Rasmus Andersson, SIL OFL) — a neutral humanist grotesque; used for buttons, the tab bar, labels, byline meta, and all chrome.
|
|
69
|
+
- **iOS Fallback**: serif → `Georgia` / `'Times New Roman'`; sans → `-apple-system, 'SF Pro Text'`.
|
|
70
|
+
- **Reader font/size is user-adjustable**: the reader can pick serif/sans + text size in reading settings — respect it globally on the post body.
|
|
71
|
+
- **Rationale**: Substack competes with magazines and email newsletters — body must read like editorial print; chrome must be invisible and neutral so the orange Subscribe is the only thing that pops.
|
|
72
|
+
|
|
73
|
+
### Hierarchy
|
|
74
|
+
|
|
75
|
+
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
|
76
|
+
|------|------|------|--------|-------------|----------------|-------|
|
|
77
|
+
| Screen Title | Source Serif 4 | 30pt | 700 | 1.2 | -0.4pt | "Inbox", "Discover" large nav title |
|
|
78
|
+
| Post Title | Source Serif 4 | 26pt | 700 | 1.22 | -0.3pt | The hero post headline |
|
|
79
|
+
| Section Heading (in post) | Source Serif 4 | 22pt | 700 | 1.3 | -0.2pt | H2 within a post body |
|
|
80
|
+
| Pull Quote | Source Serif 4 | 21pt | 600 italic | 1.4 | 0pt | Orange-left-border quote |
|
|
81
|
+
| Reading Body | Source Serif 4 | 18pt | 400 | 1.65 | 0pt | The long-form prose — user-scalable |
|
|
82
|
+
| Subtitle / Dek | Source Serif 4 | 17pt | 400 italic | 1.4 | 0pt | The post's italic deck under the title |
|
|
83
|
+
| Button | Inter | 15pt | 700 | 1.0 | 0pt | "Subscribe", primary CTAs |
|
|
84
|
+
| Label / Publication | Inter | 14pt | 600 | 1.3 | 0pt | Publication name, list labels |
|
|
85
|
+
| Metadata | Inter | 13pt | 400 | 1.4 | 0pt | "Mario Gabriele · 18 min read · May 14" |
|
|
86
|
+
| Caption | Inter | 12pt | 400 | 1.4 | 0pt | Subscriber count, footnote |
|
|
87
|
+
| Publication Eyebrow | Inter | 11pt | 700 | 1.0 | 0.4pt | UPPERCASE publication label in inbox |
|
|
88
|
+
| Overline | Inter | 11pt | 700 | 1.0 | 0.8pt | "FROM THE GENERALIST" all-caps |
|
|
89
|
+
| Tab Label | Inter | 10pt | 600 | 1.0 | 0.1pt | Bottom tab labels |
|
|
90
|
+
|
|
91
|
+
### Principles
|
|
92
|
+
- **Serif reads, sans operates**: anything the reader *reads* (title, dek, body, pull-quote, section heads) is the serif; anything the reader *acts on* (buttons, tabs, labels, meta) is Inter.
|
|
93
|
+
- **Long-form first**: body is 18pt at 1.65 line-height with a generous measure — designed for sustained 15–20 minute reads, not skimming.
|
|
94
|
+
- **The dek is italic serif**: the subtitle/deck under a title is italic — an editorial convention that signals "magazine".
|
|
95
|
+
- **Numerals are sans**: subscriber counts, prices, read-times use Inter tabular figures.
|
|
96
|
+
- **Reader controls size**: the post body must honor the user's chosen reading text size and face globally.
|
|
97
|
+
- **Dynamic Type first-class**: titles, deks, body, section heads scale; tab labels, eyebrows, captions stay fixed.
|
|
98
|
+
|
|
99
|
+
## 4. Component Stylings
|
|
100
|
+
|
|
101
|
+
### Buttons
|
|
102
|
+
|
|
103
|
+
**Subscribe Button (the conversion)**
|
|
104
|
+
- Shape: Rounded rectangle, 6pt corner radius, full content width in cards
|
|
105
|
+
- Height: 42–48pt
|
|
106
|
+
- Background: `#FF6719` (Substack Orange)
|
|
107
|
+
- Text: `#FFFFFF`, Inter 15pt weight 700
|
|
108
|
+
- Pressed: background `#E5560E` + scale 0.98
|
|
109
|
+
- This is the single most important element in the app — it appears once per post (in the sticky/paywall card) and on publication pages; never duplicated as decoration
|
|
110
|
+
|
|
111
|
+
**Subscribed / Outline State**
|
|
112
|
+
- Background: transparent
|
|
113
|
+
- Border: 1pt `#6B6B6B` light / `#A6A6A6` dark
|
|
114
|
+
- Text: `#1A1A1A` light / `#EDEDED` dark with a leading check, Inter 14pt weight 600
|
|
115
|
+
- Corner radius: 6pt
|
|
116
|
+
- Pressed: background `#F7F6F4` / `#262626`
|
|
117
|
+
|
|
118
|
+
**Ghost Button ("Share", secondary)**
|
|
119
|
+
- Background: `#F7F6F4` / `#262626`
|
|
120
|
+
- Border: 1pt divider
|
|
121
|
+
- Text: Inter 13pt weight 600
|
|
122
|
+
- Corner radius: 6pt
|
|
123
|
+
|
|
124
|
+
**Text / Link Button ("Continue reading", "See all")**
|
|
125
|
+
- Font: Inter 14pt weight 600
|
|
126
|
+
- Color: `#4A6FE3`
|
|
127
|
+
- No underline
|
|
128
|
+
|
|
129
|
+
### Post Reader (the core surface)
|
|
130
|
+
|
|
131
|
+
The reading view is Substack's fundamental surface.
|
|
132
|
+
- Background: `#FFFFFF` (Reader) / `#121212` (Dark)
|
|
133
|
+
- Publication row: 34pt logo tile (6pt radius) + name (Inter 14pt/600) + "X subscribers" (12pt grey)
|
|
134
|
+
- Title: serif 26pt/700, tight leading, -0.3pt tracking
|
|
135
|
+
- Dek: italic serif 17pt/400, `#57534E`
|
|
136
|
+
- Byline: 26pt avatar + "Author · Date · X min read" (Inter 13pt grey), with a 0.5pt hairline below
|
|
137
|
+
- Body: serif 18pt/400, 1.65 line-height, ink `#1F1F1F`; inline links `#4A6FE3` underlined
|
|
138
|
+
- Pull-quote: serif 21pt/600 italic, 3pt `#FF6719` left border, 18pt left padding
|
|
139
|
+
- Images: full-bleed-to-measure, optional italic serif caption 13pt grey
|
|
140
|
+
- Section headings: serif 22pt/700
|
|
141
|
+
- No cards/boxes/shadows in the reading column — prose flows on bare paper
|
|
142
|
+
|
|
143
|
+
### Subscribe Card / Paywall Break
|
|
144
|
+
- Background: `#FFF7F2` (orange tint) / `#2A1C12` dark
|
|
145
|
+
- Border: 1pt `#FFD9C2` / `#5C3A24`, 10pt corner radius, 14pt padding, centered
|
|
146
|
+
- Heading: serif 15pt/700 ("Keep reading with a subscription")
|
|
147
|
+
- Subtext: Inter 12pt grey
|
|
148
|
+
- Orange Subscribe button (full width, 42pt, 6pt radius)
|
|
149
|
+
- Price line: Inter 11pt grey ("$8/month · $80/year · cancel anytime")
|
|
150
|
+
- Often inserted mid-post as the paywall cut (free preview above, blurred/locked below)
|
|
151
|
+
|
|
152
|
+
### Inbox Row
|
|
153
|
+
- Layout: 56pt square publication thumbnail (6pt radius) + content column + unread dot
|
|
154
|
+
- Publication eyebrow: Inter 11pt/700 UPPERCASE `#FF6719`, 0.4pt tracking
|
|
155
|
+
- Post title: serif 15pt/700, 1.3 line-height, 2-line clamp
|
|
156
|
+
- Meta: Inter 12pt `#6E6E6E` ("Author · X min · date")
|
|
157
|
+
- Unread dot: 8pt circle `#FF6719`
|
|
158
|
+
- Row divider: 1pt divider; full-row tap → post reader
|
|
159
|
+
- Inbox is the home tab — chronological, NOT algorithmic
|
|
160
|
+
|
|
161
|
+
### Navigation
|
|
162
|
+
|
|
163
|
+
**Post Top Bar**
|
|
164
|
+
- Height: 44pt + safe area
|
|
165
|
+
- Leading: back chevron
|
|
166
|
+
- Trailing: Share icon + ⋯ overflow (Mute publication, Copy link, Report)
|
|
167
|
+
- Background: paper/charcoal, 0.5pt bottom hairline; the publication name can appear centered on scroll
|
|
168
|
+
|
|
169
|
+
**Bottom Tab Bar**
|
|
170
|
+
- Height: 50pt + safe area
|
|
171
|
+
- 4 tabs: Inbox, Discover, Notes, Profile
|
|
172
|
+
- Icon size: 22pt; labels Inter 10pt weight 600
|
|
173
|
+
- Active: `#FF6719` (filled glyph); inactive: `#9A9A9A` / `#6E6E6E`
|
|
174
|
+
- No tint pill — active is glyph fill + orange
|
|
175
|
+
- Background: paper / charcoal, 0.5pt top hairline
|
|
176
|
+
|
|
177
|
+
### Input Fields
|
|
178
|
+
|
|
179
|
+
**Search (Discover)**
|
|
180
|
+
- Height: 40pt
|
|
181
|
+
- Background: `#F7F6F4` / `#262626`
|
|
182
|
+
- Corner radius: 8pt
|
|
183
|
+
- Leading `magnifyingglass` 16pt grey
|
|
184
|
+
- Placeholder: "Search Substack" Inter 14pt grey
|
|
185
|
+
- Focus: 1.5pt `#FF6719` border
|
|
186
|
+
|
|
187
|
+
**Comment Composer**
|
|
188
|
+
- Bottom sheet; multiline Inter 15pt input (comments are sans, not serif — they are chrome/conversation, not the article)
|
|
189
|
+
- "Post" orange button in the sheet header
|
|
190
|
+
- Threaded replies indented 24pt
|
|
191
|
+
|
|
192
|
+
### Distinctive Components
|
|
193
|
+
|
|
194
|
+
**Publication Header (Publication page)**
|
|
195
|
+
- Cover band + large logo + publication name (serif 26pt) + tagline (italic serif) + subscriber count
|
|
196
|
+
- A prominent orange Subscribe button + "X posts" / "About" tabs
|
|
197
|
+
|
|
198
|
+
**Sticky Subscribe / Paywall Cut**
|
|
199
|
+
- The free preview fades into a locked section behind the Subscribe card — the central monetization moment
|
|
200
|
+
|
|
201
|
+
**Pull-Quote**
|
|
202
|
+
- Italic serif with the signature 3pt orange left rule — the most recognizable in-post element
|
|
203
|
+
|
|
204
|
+
**Action Bar (post footer)**
|
|
205
|
+
- Like (orange heart, count), Comment (count), Restack (Notes share), Share
|
|
206
|
+
- Like fills orange with a heart-pop on tap
|
|
207
|
+
|
|
208
|
+
**Notes Card (Notes tab)**
|
|
209
|
+
- Short-form: avatar + name + handle + short text + Like/Reply/Restack — a Twitter-like companion feed, still neutral with orange accents
|
|
210
|
+
|
|
211
|
+
**Subscription Tier Selector**
|
|
212
|
+
- Free / Monthly / Annual cards; the recommended tier ringed in orange with an orange-tint background
|
|
213
|
+
|
|
214
|
+
**Unread Dot**
|
|
215
|
+
- 8pt orange dot on inbox rows and on the Inbox tab badge — the "you have new reading" signal
|
|
216
|
+
|
|
217
|
+
## 5. Layout Principles
|
|
218
|
+
|
|
219
|
+
### Spacing System
|
|
220
|
+
- Base unit: 4pt
|
|
221
|
+
- Scale: 4, 8, 12, 16, 20, 24, 32, 40, 48
|
|
222
|
+
- Reading content inset: 24pt horizontal (a comfortable editorial measure)
|
|
223
|
+
- App/chrome inset: 16pt horizontal
|
|
224
|
+
- Paragraph spacing: 18pt between body paragraphs
|
|
225
|
+
|
|
226
|
+
### Grid & Container
|
|
227
|
+
- iPhone reader: single column, 24pt insets (measure ≈ 60–66 chars)
|
|
228
|
+
- iPhone inbox: single list, 16pt insets, 56pt thumbnails
|
|
229
|
+
- iPad reader: centered column, max measure ≈ 680pt
|
|
230
|
+
- iPad inbox: single wide list or two-column on landscape
|
|
231
|
+
|
|
232
|
+
### Whitespace Philosophy
|
|
233
|
+
- **The page breathes like print**: 24pt measure + 1.65 leading + 18pt paragraph spacing — sustained reading comfort over density
|
|
234
|
+
- **Chrome is sparse**: lists are simple rows with hairlines; no decorative containers
|
|
235
|
+
- **One color**: orange appears for Subscribe / active / unread / like and nothing else; the rest is paper + ink + grey
|
|
236
|
+
- **The Subscribe card is the only tinted block**: a single warm-orange wash that draws the eye to the conversion
|
|
237
|
+
|
|
238
|
+
### Border Radius Scale
|
|
239
|
+
- Square (0pt): The reading column, full-bleed images, hairlines
|
|
240
|
+
- Subtle (4pt): Inline chips, small tags
|
|
241
|
+
- Standard (6pt): Subscribe button, ghost buttons, search field
|
|
242
|
+
- Card (8–10pt): Subscribe card, tier cards, inbox thumbnails
|
|
243
|
+
- Comfortable (16pt): Bottom sheets, modals
|
|
244
|
+
- Pill (500pt): Filter chips
|
|
245
|
+
- Circle (50%): Avatars, unread dot
|
|
246
|
+
|
|
247
|
+
## 6. Depth & Elevation
|
|
248
|
+
|
|
249
|
+
Substack is nearly flat — the reading column has zero elevation, and shadow appears only on floating sheets and (lightly) on the Subscribe card.
|
|
250
|
+
|
|
251
|
+
| Level | Treatment | Use |
|
|
252
|
+
|-------|-----------|-----|
|
|
253
|
+
| Page (Level 0) | No shadow, no border | Reading column, inbox rows, prose |
|
|
254
|
+
| Card (Level 1) | `rgba(255,103,25,0.06)` fill + 1pt orange-tint border (no shadow) | Subscribe card, tier cards — color, not depth |
|
|
255
|
+
| Sticky (Level 2) | `rgba(0,0,0,0.06) 0 -2px 12px` | The sticky Subscribe bar over the page bottom |
|
|
256
|
+
| Sheet (Level 3) | `rgba(0,0,0,0.16) 0 -4px 24px` | Comment composer, share sheet, settings |
|
|
257
|
+
| Scrim | `rgba(0,0,0,0.3)` | Behind sheets and modals |
|
|
258
|
+
|
|
259
|
+
**Shadow Philosophy**: The reading surface must look like a printed page — flat, matte, no shadow. The Subscribe card stands out by *color* (warm orange tint + thin orange border), not by elevation, keeping the editorial calm. Only transient floating things (the sticky bar, sheets) get a faint shadow as a "this floats" cue. On dark mode shadows are nearly invisible, so the Subscribe card relies entirely on its orange-tint border. Chrome cards never carry drop shadow.
|
|
260
|
+
|
|
261
|
+
### Motion
|
|
262
|
+
- **Subscribe tap**: orange button does a 1.0→0.97→1.0 spring (180ms); on success, the button morphs to "Subscribed ✓" with a 220ms crossfade + soft success haptic
|
|
263
|
+
- **Like (heart)**: heart fills orange with a 1.0→1.3→1.0 pop (220ms spring) + soft haptic; count ticks up
|
|
264
|
+
- **Paywall reveal**: scrolling into the paywall fades the locked text to a blur over 250ms; the Subscribe card slides up 250ms ease-out and sticks
|
|
265
|
+
- **Inbox → post**: iOS native push, 300ms; the publication thumbnail can shared-element into the post header
|
|
266
|
+
- **Pull to refresh (Inbox)**: orange spinner, standard iOS rubber-band
|
|
267
|
+
- **Tab switch**: instant; selected glyph fills with a 120ms crossfade; unread dot animates in with a small scale
|
|
268
|
+
- **Notes compose**: bottom sheet slides up 280ms ease-out
|
|
269
|
+
- **Read progress**: a thin orange progress line at the very top edge fills as the reader scrolls the post
|
|
270
|
+
- **Haptic feedback**: soft impact on Subscribe success and Like; light on pull-to-refresh trigger
|
|
271
|
+
- **Restack**: a small toast slides up ("Restacked to Notes") 250ms; no modal
|
|
272
|
+
|
|
273
|
+
## 7. Do's and Don'ts
|
|
274
|
+
|
|
275
|
+
### Do
|
|
276
|
+
- Make the post reader the product — a clean white page, serif prose, no boxes
|
|
277
|
+
- Set everything-you-read in a reading serif (Source Serif 4 / Spectral); everything-you-operate in Inter
|
|
278
|
+
- Body at 18pt with 1.65 line-height and a ~24pt editorial measure — built for long reads
|
|
279
|
+
- Make the dek/subtitle italic serif — the editorial-magazine signal
|
|
280
|
+
- Ration Substack Orange (`#FF6719`) to the Subscribe CTA, active tab, unread dot, liked heart, pull-quote rule — nothing else
|
|
281
|
+
- Use the orange-tint Subscribe card as the one tinted block; stand it out by color, not shadow
|
|
282
|
+
- Make Inbox the home tab — chronological subscription queue, not an algorithm
|
|
283
|
+
- Use the 3pt orange left border for pull-quotes
|
|
284
|
+
- Keep the Subscribe button a single instance per post (the sticky/paywall card)
|
|
285
|
+
- Hold the orange identical in light and dark — it is the one constant signal
|
|
286
|
+
|
|
287
|
+
### Don't
|
|
288
|
+
- Don't put cards, borders, or shadows around the reading prose — it flows on bare paper
|
|
289
|
+
- Don't use pure black for body ink — warm near-black `#1F1F1F` is correct
|
|
290
|
+
- Don't use pure black for dark mode — soft charcoal `#121212`
|
|
291
|
+
- Don't set the post body in a UI sans — the article is serif
|
|
292
|
+
- Don't add a second accent color — orange + one link blue + neutral greys only
|
|
293
|
+
- Don't make comments serif — comments/Notes are conversation chrome, set in Inter
|
|
294
|
+
- Don't scatter orange decoratively — it must mean "subscribe / active / new / liked"
|
|
295
|
+
- Don't make Inbox algorithmic — it is a chronological reading queue (email replacement)
|
|
296
|
+
- Don't duplicate the Subscribe button as decoration — one per post, where conversion happens
|
|
297
|
+
- Don't animate the reading column decoratively — quiet motion; the read-progress line is the only ambient motion
|
|
298
|
+
- Don't add a Material tint pill to the active tab — it is glyph fill + orange
|
|
299
|
+
|
|
300
|
+
## 8. Responsive Behavior
|
|
301
|
+
|
|
302
|
+
### Device Sizes
|
|
303
|
+
| Device | Width | Key Changes |
|
|
304
|
+
|--------|-------|-------------|
|
|
305
|
+
| iPhone SE (3rd gen) | 375pt | Reading inset 20pt; inbox thumbnails 52pt |
|
|
306
|
+
| iPhone 13/14/15 | 390pt | Standard layout; reading inset 24pt |
|
|
307
|
+
| iPhone 15/16 Pro | 393pt | Dynamic Island respected by post top bar |
|
|
308
|
+
| iPhone 15/16 Pro Max | 430pt | Wider measure; larger title |
|
|
309
|
+
| iPad (portrait) | 768pt | Centered reading column max ≈ 680pt; inbox single wide list |
|
|
310
|
+
| iPad (landscape) | 1024pt+ | Two-column: inbox list + post reader |
|
|
311
|
+
|
|
312
|
+
### Dynamic Type
|
|
313
|
+
- Post title, dek, body, section heads, pull-quotes: full scale, plus the in-app reading-size control as an additional multiplier
|
|
314
|
+
- Tab labels, publication eyebrow, captions, overlines: FIXED (layout-sensitive)
|
|
315
|
+
- Inbox post titles scale modestly with body text
|
|
316
|
+
|
|
317
|
+
### Orientation
|
|
318
|
+
- Reader rotates; iPad landscape shows inbox + reader side by side
|
|
319
|
+
- Inbox reflows; thumbnails stay fixed
|
|
320
|
+
- Sheets and the Subscribe card re-anchor on rotation
|
|
321
|
+
|
|
322
|
+
### Touch Targets
|
|
323
|
+
- Subscribe button: 44pt tall minimum (the most important target — never smaller)
|
|
324
|
+
- Action-bar items (Like/Comment/Restack/Share): 44pt hit
|
|
325
|
+
- Inbox row: full-row tap, 72pt+ tall
|
|
326
|
+
- Tab bar icons: 22pt glyph, 49pt hit
|
|
327
|
+
|
|
328
|
+
### Safe Area Handling
|
|
329
|
+
- Reader: prose respects safe area; the read-progress line hugs the very top safe-area edge
|
|
330
|
+
- Top bar respects Dynamic Island
|
|
331
|
+
- Bottom: tab bar + home indicator respected; the sticky Subscribe bar sits above the home indicator
|
|
332
|
+
- Sides: 24pt reading inset, 16pt chrome inset
|
|
333
|
+
|
|
334
|
+
## 9. Agent Prompt Guide
|
|
335
|
+
|
|
336
|
+
### Quick Color Reference
|
|
337
|
+
- Reading page: `#FFFFFF` light / `#121212` dark
|
|
338
|
+
- Body ink: `#1F1F1F` light / `#EDEDED` dark
|
|
339
|
+
- Title ink: `#1A1A1A` light / `#EDEDED` dark
|
|
340
|
+
- Dek / subhead: `#57534E` light / `#A6A6A6` dark
|
|
341
|
+
- Brand + conversion (Subscribe / active / unread / like): `#FF6719` (pressed `#E5560E`)
|
|
342
|
+
- Subscribe-card wash: `#FFF7F2` light / `#2A1C12` dark; border `#FFD9C2` / `#5C3A24`
|
|
343
|
+
- Link blue (inline only): `#4A6FE3`
|
|
344
|
+
- App surface: `#F7F6F4` light / `#1B1B1B`–`#262626` dark
|
|
345
|
+
- Hairline: `#ECECEC` light / `#2E2E2E` dark
|
|
346
|
+
- Text secondary: `#6B6B6B` light / `#A6A6A6` dark
|
|
347
|
+
- Error: `#D93025`
|
|
348
|
+
|
|
349
|
+
### Example Component Prompts
|
|
350
|
+
- "Build the Substack post reader in SwiftUI: background `#FFFFFF` (or `#121212` dark). A publication row — 34pt logo tile (6pt radius, orange gradient), name in Inter 14pt weight 600, 'Mario Gabriele · 312,400 subscribers' in Inter 12pt `#8A8A8A`. Title in Source Serif 4 26pt weight 700 `#1A1A1A` tracking -0.3pt; dek in Source Serif 4 italic 17pt `#57534E`; byline (26pt avatar + 'Author · May 14 · 18 min read' Inter 13pt grey) with a 0.5pt `#ECECEC` hairline below. Body in Source Serif 4 18pt weight 400, line-height 1.65, ink `#1F1F1F`, inline links `#4A6FE3` underlined."
|
|
351
|
+
|
|
352
|
+
- "Create the Substack Subscribe card / paywall break: centered card, background `#FFF7F2` (dark `#2A1C12`), 1pt `#FFD9C2` border, 10pt radius, 14pt padding. Heading 'Keep reading with a subscription' in Source Serif 4 15pt weight 700; subtext Inter 12pt `#8A8A8A`; a full-width 42pt Subscribe button, 6pt radius, background `#FF6719`, label Inter 15pt weight 700 white; price line 'Β$8/month · $80/year · cancel anytime' in Inter 11pt `#A0A0A0`. On tap: button springs 1.0→0.97→1.0 (180ms), then crossfades to 'Subscribed ✓' with a soft success haptic."
|
|
353
|
+
|
|
354
|
+
- "Render a Substack pull-quote: Source Serif 4 21pt weight 600 italic `#1A1A1A`, a 3pt `#FF6719` left border, 18pt left padding, 6pt top/bottom padding, 20pt bottom margin. No background, no box."
|
|
355
|
+
|
|
356
|
+
- "Build a Substack inbox row: 56pt square publication thumbnail (6pt radius) + content column + trailing 8pt `#FF6719` unread dot. Eyebrow = publication name in Inter 11pt weight 700 UPPERCASE `#FF6719` 0.4pt tracking; post title in Source Serif 4 15pt weight 700 2-line clamp; meta 'Author · 18 min · May 14' in Inter 12pt `#6E6E6E`. 1pt divider; full-row tap pushes the post."
|
|
357
|
+
|
|
358
|
+
- "Render the Substack bottom action bar: Like (heart, count) / Comment (count) / Restack / Share, Inter 13pt weight 600 `#57534E`. Liked = heart filled `#FF6719` with a 1.0→1.3→1.0 pop (220ms spring) + soft haptic and the count incremented."
|
|
359
|
+
|
|
360
|
+
- "Build the Substack bottom tab bar: 4 tabs Inbox / Discover / Notes / Profile, 22pt glyphs, Inter 10pt weight 600 labels. Active = filled glyph `#FF6719`; inactive = outline glyph `#9A9A9A` (dark `#6E6E6E`). No tint pill — color + fill only. Paper `#FFFFFF` / charcoal `#121212` background, 0.5pt top hairline `#ECECEC` / `#2E2E2E`. The Inbox tab shows an orange unread dot badge when new posts arrive."
|
|
361
|
+
|
|
362
|
+
### Iteration Guide
|
|
363
|
+
1. The post reader is the product — a clean white page (`#FFFFFF` / dark `#121212`), serif prose, zero boxes
|
|
364
|
+
2. Serif for everything-you-read (title/dek/body/pull-quote); Inter for everything-you-operate (buttons/tabs/meta)
|
|
365
|
+
3. Body is serif 18pt at 1.65 line-height with a ~24pt editorial measure — built for 15–20 minute reads
|
|
366
|
+
4. The dek/subtitle is italic serif — the magazine signal
|
|
367
|
+
5. Substack Orange `#FF6719` is rationed to Subscribe / active tab / unread dot / liked heart / pull-quote rule — nothing else
|
|
368
|
+
6. The Subscribe card is the one tinted block; it stands out by warm-orange color, never by shadow
|
|
369
|
+
7. Inbox is the home tab — a chronological subscription queue, never algorithmic
|
|
370
|
+
8. The reading column is flat — no cards, borders, or shadows; only sheets and the sticky bar float
|
|
371
|
+
9. One link blue `#4A6FE3` for inline links is the only non-orange accent; everything else is paper + ink + grey
|
|
372
|
+
10. Hold the orange identical in light and dark — it is the single constant conversion signal
|