@hex-core/themes 0.1.1 → 0.2.1
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/README.md +5 -1
- package/dist/chunk-2LU3ENLP.js +68 -0
- package/dist/chunk-2LU3ENLP.js.map +1 -0
- package/dist/chunk-2OH25A4J.js +68 -0
- package/dist/chunk-2OH25A4J.js.map +1 -0
- package/dist/chunk-2SI7O4FQ.js +68 -0
- package/dist/chunk-2SI7O4FQ.js.map +1 -0
- package/dist/chunk-4LQ3BH7F.js +68 -0
- package/dist/chunk-4LQ3BH7F.js.map +1 -0
- package/dist/chunk-4QXKFLEQ.js +68 -0
- package/dist/chunk-4QXKFLEQ.js.map +1 -0
- package/dist/chunk-5BH5ZMDH.js +68 -0
- package/dist/chunk-5BH5ZMDH.js.map +1 -0
- package/dist/chunk-5O65TVZP.js +68 -0
- package/dist/chunk-5O65TVZP.js.map +1 -0
- package/dist/chunk-5TDK4XMA.js +68 -0
- package/dist/chunk-5TDK4XMA.js.map +1 -0
- package/dist/chunk-72IPJZ6V.js +68 -0
- package/dist/chunk-72IPJZ6V.js.map +1 -0
- package/dist/chunk-73N7YFTY.js +68 -0
- package/dist/chunk-73N7YFTY.js.map +1 -0
- package/dist/chunk-7MPAMAFC.js +68 -0
- package/dist/chunk-7MPAMAFC.js.map +1 -0
- package/dist/chunk-7OAKNGRU.js +68 -0
- package/dist/chunk-7OAKNGRU.js.map +1 -0
- package/dist/chunk-7YP2HHHV.js +68 -0
- package/dist/chunk-7YP2HHHV.js.map +1 -0
- package/dist/chunk-7YPET3HT.js +68 -0
- package/dist/chunk-7YPET3HT.js.map +1 -0
- package/dist/chunk-7ZAFN5WE.js +68 -0
- package/dist/chunk-7ZAFN5WE.js.map +1 -0
- package/dist/chunk-ATBX7KXM.js +68 -0
- package/dist/chunk-ATBX7KXM.js.map +1 -0
- package/dist/chunk-BCLCH6JZ.js +68 -0
- package/dist/chunk-BCLCH6JZ.js.map +1 -0
- package/dist/chunk-BH7IPZBT.js +68 -0
- package/dist/chunk-BH7IPZBT.js.map +1 -0
- package/dist/chunk-BK432RWC.js +68 -0
- package/dist/chunk-BK432RWC.js.map +1 -0
- package/dist/chunk-BMLLM5GC.js +68 -0
- package/dist/chunk-BMLLM5GC.js.map +1 -0
- package/dist/chunk-CEQN6EQY.js +68 -0
- package/dist/chunk-CEQN6EQY.js.map +1 -0
- package/dist/chunk-CFLNGBY5.js +68 -0
- package/dist/chunk-CFLNGBY5.js.map +1 -0
- package/dist/chunk-CTI3W357.js +68 -0
- package/dist/chunk-CTI3W357.js.map +1 -0
- package/dist/chunk-CUO2HNBR.js +68 -0
- package/dist/chunk-CUO2HNBR.js.map +1 -0
- package/dist/chunk-D5JFUYFN.js +68 -0
- package/dist/chunk-D5JFUYFN.js.map +1 -0
- package/dist/chunk-DE2NWOEB.js +68 -0
- package/dist/chunk-DE2NWOEB.js.map +1 -0
- package/dist/chunk-DLLP5KXF.js +68 -0
- package/dist/chunk-DLLP5KXF.js.map +1 -0
- package/dist/chunk-E26YKJRK.js +68 -0
- package/dist/chunk-E26YKJRK.js.map +1 -0
- package/dist/chunk-EV4APPVD.js +528 -0
- package/dist/chunk-EV4APPVD.js.map +1 -0
- package/dist/chunk-EZFP45CP.js +68 -0
- package/dist/chunk-EZFP45CP.js.map +1 -0
- package/dist/chunk-FE2IENES.js +68 -0
- package/dist/chunk-FE2IENES.js.map +1 -0
- package/dist/chunk-FK5WSFAA.js +68 -0
- package/dist/chunk-FK5WSFAA.js.map +1 -0
- package/dist/chunk-G2V6XAJ7.js +68 -0
- package/dist/chunk-G2V6XAJ7.js.map +1 -0
- package/dist/chunk-GAOOBTSH.js +68 -0
- package/dist/chunk-GAOOBTSH.js.map +1 -0
- package/dist/chunk-GAQ6LS55.js +68 -0
- package/dist/chunk-GAQ6LS55.js.map +1 -0
- package/dist/chunk-GSTGBWQZ.js +68 -0
- package/dist/chunk-GSTGBWQZ.js.map +1 -0
- package/dist/chunk-I267MA2D.js +68 -0
- package/dist/chunk-I267MA2D.js.map +1 -0
- package/dist/chunk-I4Z7DY3Z.js +68 -0
- package/dist/chunk-I4Z7DY3Z.js.map +1 -0
- package/dist/chunk-I6H6W42Y.js +68 -0
- package/dist/chunk-I6H6W42Y.js.map +1 -0
- package/dist/chunk-IJBNLZQH.js +68 -0
- package/dist/chunk-IJBNLZQH.js.map +1 -0
- package/dist/chunk-IRDDULX7.js +68 -0
- package/dist/chunk-IRDDULX7.js.map +1 -0
- package/dist/chunk-IXKXYUXQ.js +68 -0
- package/dist/chunk-IXKXYUXQ.js.map +1 -0
- package/dist/chunk-JZEZHM5N.js +68 -0
- package/dist/chunk-JZEZHM5N.js.map +1 -0
- package/dist/chunk-KCI73LIZ.js +68 -0
- package/dist/chunk-KCI73LIZ.js.map +1 -0
- package/dist/chunk-KDS62BXD.js +68 -0
- package/dist/chunk-KDS62BXD.js.map +1 -0
- package/dist/chunk-KLNZW4GO.js +68 -0
- package/dist/chunk-KLNZW4GO.js.map +1 -0
- package/dist/chunk-KXBE5FQ7.js +68 -0
- package/dist/chunk-KXBE5FQ7.js.map +1 -0
- package/dist/chunk-KZDIZ2FL.js +68 -0
- package/dist/chunk-KZDIZ2FL.js.map +1 -0
- package/dist/chunk-LDZC2QYF.js +68 -0
- package/dist/chunk-LDZC2QYF.js.map +1 -0
- package/dist/chunk-LNKOIFH4.js +68 -0
- package/dist/chunk-LNKOIFH4.js.map +1 -0
- package/dist/chunk-MVMZS3PQ.js +68 -0
- package/dist/chunk-MVMZS3PQ.js.map +1 -0
- package/dist/chunk-NIED6GXO.js +68 -0
- package/dist/chunk-NIED6GXO.js.map +1 -0
- package/dist/chunk-NKTZOR54.js +68 -0
- package/dist/chunk-NKTZOR54.js.map +1 -0
- package/dist/chunk-OCQYO6PW.js +68 -0
- package/dist/chunk-OCQYO6PW.js.map +1 -0
- package/dist/chunk-PJAJD5VJ.js +68 -0
- package/dist/chunk-PJAJD5VJ.js.map +1 -0
- package/dist/chunk-PN567MCL.js +68 -0
- package/dist/chunk-PN567MCL.js.map +1 -0
- package/dist/chunk-QEBXRSTH.js +68 -0
- package/dist/chunk-QEBXRSTH.js.map +1 -0
- package/dist/chunk-QTKMLEEM.js +68 -0
- package/dist/chunk-QTKMLEEM.js.map +1 -0
- package/dist/chunk-RN4ZII2I.js +68 -0
- package/dist/chunk-RN4ZII2I.js.map +1 -0
- package/dist/chunk-RTCJ5B7S.js +68 -0
- package/dist/chunk-RTCJ5B7S.js.map +1 -0
- package/dist/chunk-SG2ACM7O.js +68 -0
- package/dist/chunk-SG2ACM7O.js.map +1 -0
- package/dist/chunk-SORTCBSJ.js +68 -0
- package/dist/chunk-SORTCBSJ.js.map +1 -0
- package/dist/chunk-TXY7LBYM.js +68 -0
- package/dist/chunk-TXY7LBYM.js.map +1 -0
- package/dist/chunk-UIS6TMM5.js +68 -0
- package/dist/chunk-UIS6TMM5.js.map +1 -0
- package/dist/chunk-VOXUB4AT.js +68 -0
- package/dist/chunk-VOXUB4AT.js.map +1 -0
- package/dist/chunk-VUSSQAEI.js +68 -0
- package/dist/chunk-VUSSQAEI.js.map +1 -0
- package/dist/chunk-WAU2FYDY.js +68 -0
- package/dist/chunk-WAU2FYDY.js.map +1 -0
- package/dist/chunk-YRGKMQP4.js +68 -0
- package/dist/chunk-YRGKMQP4.js.map +1 -0
- package/dist/chunk-Z3XCYZN4.js +68 -0
- package/dist/chunk-Z3XCYZN4.js.map +1 -0
- package/dist/chunk-Z6XLNVF3.js +68 -0
- package/dist/chunk-Z6XLNVF3.js.map +1 -0
- package/dist/chunk-ZQJDUTSK.js +68 -0
- package/dist/chunk-ZQJDUTSK.js.map +1 -0
- package/dist/chunk-ZTYINGDT.js +68 -0
- package/dist/chunk-ZTYINGDT.js.map +1 -0
- package/dist/index.d.ts +185 -23
- package/dist/index.js +359 -3
- package/dist/index.js.map +1 -1
- package/dist/presets/_briefs/airbnb.d.ts +3 -0
- package/dist/presets/_briefs/airbnb.js +551 -0
- package/dist/presets/_briefs/airbnb.js.map +1 -0
- package/dist/presets/_briefs/airtable.d.ts +3 -0
- package/dist/presets/_briefs/airtable.js +560 -0
- package/dist/presets/_briefs/airtable.js.map +1 -0
- package/dist/presets/_briefs/apple.d.ts +3 -0
- package/dist/presets/_briefs/apple.js +568 -0
- package/dist/presets/_briefs/apple.js.map +1 -0
- package/dist/presets/_briefs/binance.d.ts +3 -0
- package/dist/presets/_briefs/binance.js +640 -0
- package/dist/presets/_briefs/binance.js.map +1 -0
- package/dist/presets/_briefs/bmw-m.d.ts +3 -0
- package/dist/presets/_briefs/bmw-m.js +509 -0
- package/dist/presets/_briefs/bmw-m.js.map +1 -0
- package/dist/presets/_briefs/bmw.d.ts +3 -0
- package/dist/presets/_briefs/bmw.js +550 -0
- package/dist/presets/_briefs/bmw.js.map +1 -0
- package/dist/presets/_briefs/bugatti.d.ts +3 -0
- package/dist/presets/_briefs/bugatti.js +460 -0
- package/dist/presets/_briefs/bugatti.js.map +1 -0
- package/dist/presets/_briefs/cal.d.ts +3 -0
- package/dist/presets/_briefs/cal.js +548 -0
- package/dist/presets/_briefs/cal.js.map +1 -0
- package/dist/presets/_briefs/claude.d.ts +3 -0
- package/dist/presets/_briefs/claude.js +595 -0
- package/dist/presets/_briefs/claude.js.map +1 -0
- package/dist/presets/_briefs/clay.d.ts +3 -0
- package/dist/presets/_briefs/clay.js +547 -0
- package/dist/presets/_briefs/clay.js.map +1 -0
- package/dist/presets/_briefs/clickhouse.d.ts +3 -0
- package/dist/presets/_briefs/clickhouse.js +550 -0
- package/dist/presets/_briefs/clickhouse.js.map +1 -0
- package/dist/presets/_briefs/cohere.d.ts +3 -0
- package/dist/presets/_briefs/cohere.js +457 -0
- package/dist/presets/_briefs/cohere.js.map +1 -0
- package/dist/presets/_briefs/coinbase.d.ts +3 -0
- package/dist/presets/_briefs/coinbase.js +576 -0
- package/dist/presets/_briefs/coinbase.js.map +1 -0
- package/dist/presets/_briefs/composio.d.ts +3 -0
- package/dist/presets/_briefs/composio.js +512 -0
- package/dist/presets/_briefs/composio.js.map +1 -0
- package/dist/presets/_briefs/cursor.d.ts +3 -0
- package/dist/presets/_briefs/cursor.js +543 -0
- package/dist/presets/_briefs/cursor.js.map +1 -0
- package/dist/presets/_briefs/elevenlabs.d.ts +3 -0
- package/dist/presets/_briefs/elevenlabs.js +510 -0
- package/dist/presets/_briefs/elevenlabs.js.map +1 -0
- package/dist/presets/_briefs/expo.d.ts +3 -0
- package/dist/presets/_briefs/expo.js +532 -0
- package/dist/presets/_briefs/expo.js.map +1 -0
- package/dist/presets/_briefs/ferrari.d.ts +3 -0
- package/dist/presets/_briefs/ferrari.js +537 -0
- package/dist/presets/_briefs/ferrari.js.map +1 -0
- package/dist/presets/_briefs/figma.d.ts +3 -0
- package/dist/presets/_briefs/figma.js +226 -0
- package/dist/presets/_briefs/figma.js.map +1 -0
- package/dist/presets/_briefs/framer.d.ts +3 -0
- package/dist/presets/_briefs/framer.js +252 -0
- package/dist/presets/_briefs/framer.js.map +1 -0
- package/dist/presets/_briefs/hashicorp.d.ts +3 -0
- package/dist/presets/_briefs/hashicorp.js +284 -0
- package/dist/presets/_briefs/hashicorp.js.map +1 -0
- package/dist/presets/_briefs/ibm.d.ts +3 -0
- package/dist/presets/_briefs/ibm.js +338 -0
- package/dist/presets/_briefs/ibm.js.map +1 -0
- package/dist/presets/_briefs/intercom.d.ts +3 -0
- package/dist/presets/_briefs/intercom.js +152 -0
- package/dist/presets/_briefs/intercom.js.map +1 -0
- package/dist/presets/_briefs/kraken.d.ts +3 -0
- package/dist/presets/_briefs/kraken.js +131 -0
- package/dist/presets/_briefs/kraken.js.map +1 -0
- package/dist/presets/_briefs/lamborghini.d.ts +3 -0
- package/dist/presets/_briefs/lamborghini.js +294 -0
- package/dist/presets/_briefs/lamborghini.js.map +1 -0
- package/dist/presets/_briefs/linear.d.ts +3 -0
- package/dist/presets/_briefs/linear.js +373 -0
- package/dist/presets/_briefs/linear.js.map +1 -0
- package/dist/presets/_briefs/lovable.d.ts +3 -0
- package/dist/presets/_briefs/lovable.js +304 -0
- package/dist/presets/_briefs/lovable.js.map +1 -0
- package/dist/presets/_briefs/mastercard.d.ts +3 -0
- package/dist/presets/_briefs/mastercard.js +371 -0
- package/dist/presets/_briefs/mastercard.js.map +1 -0
- package/dist/presets/_briefs/meta.d.ts +3 -0
- package/dist/presets/_briefs/meta.js +372 -0
- package/dist/presets/_briefs/meta.js.map +1 -0
- package/dist/presets/_briefs/minimax.d.ts +3 -0
- package/dist/presets/_briefs/minimax.js +263 -0
- package/dist/presets/_briefs/minimax.js.map +1 -0
- package/dist/presets/_briefs/mintlify.d.ts +3 -0
- package/dist/presets/_briefs/mintlify.js +332 -0
- package/dist/presets/_briefs/mintlify.js.map +1 -0
- package/dist/presets/_briefs/miro.d.ts +3 -0
- package/dist/presets/_briefs/miro.js +114 -0
- package/dist/presets/_briefs/miro.js.map +1 -0
- package/dist/presets/_briefs/mistral.d.ts +3 -0
- package/dist/presets/_briefs/mistral.js +267 -0
- package/dist/presets/_briefs/mistral.js.map +1 -0
- package/dist/presets/_briefs/mongodb.d.ts +3 -0
- package/dist/presets/_briefs/mongodb.js +272 -0
- package/dist/presets/_briefs/mongodb.js.map +1 -0
- package/dist/presets/_briefs/nike.d.ts +3 -0
- package/dist/presets/_briefs/nike.js +369 -0
- package/dist/presets/_briefs/nike.js.map +1 -0
- package/dist/presets/_briefs/notion.d.ts +3 -0
- package/dist/presets/_briefs/notion.js +315 -0
- package/dist/presets/_briefs/notion.js.map +1 -0
- package/dist/presets/_briefs/nvidia.d.ts +3 -0
- package/dist/presets/_briefs/nvidia.js +299 -0
- package/dist/presets/_briefs/nvidia.js.map +1 -0
- package/dist/presets/_briefs/ollama.d.ts +3 -0
- package/dist/presets/_briefs/ollama.js +273 -0
- package/dist/presets/_briefs/ollama.js.map +1 -0
- package/dist/presets/_briefs/opencode.d.ts +3 -0
- package/dist/presets/_briefs/opencode.js +287 -0
- package/dist/presets/_briefs/opencode.js.map +1 -0
- package/dist/presets/_briefs/pinterest.d.ts +3 -0
- package/dist/presets/_briefs/pinterest.js +236 -0
- package/dist/presets/_briefs/pinterest.js.map +1 -0
- package/dist/presets/_briefs/playstation.d.ts +3 -0
- package/dist/presets/_briefs/playstation.js +370 -0
- package/dist/presets/_briefs/playstation.js.map +1 -0
- package/dist/presets/_briefs/posthog.d.ts +3 -0
- package/dist/presets/_briefs/posthog.js +262 -0
- package/dist/presets/_briefs/posthog.js.map +1 -0
- package/dist/presets/_briefs/raycast.d.ts +3 -0
- package/dist/presets/_briefs/raycast.js +274 -0
- package/dist/presets/_briefs/raycast.js.map +1 -0
- package/dist/presets/_briefs/renault.d.ts +3 -0
- package/dist/presets/_briefs/renault.js +317 -0
- package/dist/presets/_briefs/renault.js.map +1 -0
- package/dist/presets/_briefs/replicate.d.ts +3 -0
- package/dist/presets/_briefs/replicate.js +267 -0
- package/dist/presets/_briefs/replicate.js.map +1 -0
- package/dist/presets/_briefs/resend.d.ts +3 -0
- package/dist/presets/_briefs/resend.js +309 -0
- package/dist/presets/_briefs/resend.js.map +1 -0
- package/dist/presets/_briefs/revolut.d.ts +3 -0
- package/dist/presets/_briefs/revolut.js +191 -0
- package/dist/presets/_briefs/revolut.js.map +1 -0
- package/dist/presets/_briefs/runwayml.d.ts +3 -0
- package/dist/presets/_briefs/runwayml.js +250 -0
- package/dist/presets/_briefs/runwayml.js.map +1 -0
- package/dist/presets/_briefs/sanity.d.ts +3 -0
- package/dist/presets/_briefs/sanity.js +363 -0
- package/dist/presets/_briefs/sanity.js.map +1 -0
- package/dist/presets/_briefs/sentry.d.ts +3 -0
- package/dist/presets/_briefs/sentry.js +268 -0
- package/dist/presets/_briefs/sentry.js.map +1 -0
- package/dist/presets/_briefs/shopify.d.ts +3 -0
- package/dist/presets/_briefs/shopify.js +356 -0
- package/dist/presets/_briefs/shopify.js.map +1 -0
- package/dist/presets/_briefs/slack.d.ts +3 -0
- package/dist/presets/_briefs/slack.js +221 -0
- package/dist/presets/_briefs/slack.js.map +1 -0
- package/dist/presets/_briefs/spacex.d.ts +3 -0
- package/dist/presets/_briefs/spacex.js +200 -0
- package/dist/presets/_briefs/spacex.js.map +1 -0
- package/dist/presets/_briefs/spotify.d.ts +3 -0
- package/dist/presets/_briefs/spotify.js +252 -0
- package/dist/presets/_briefs/spotify.js.map +1 -0
- package/dist/presets/_briefs/starbucks.d.ts +3 -0
- package/dist/presets/_briefs/starbucks.js +586 -0
- package/dist/presets/_briefs/starbucks.js.map +1 -0
- package/dist/presets/_briefs/stripe.d.ts +3 -0
- package/dist/presets/_briefs/stripe.js +328 -0
- package/dist/presets/_briefs/stripe.js.map +1 -0
- package/dist/presets/_briefs/supabase.d.ts +3 -0
- package/dist/presets/_briefs/supabase.js +261 -0
- package/dist/presets/_briefs/supabase.js.map +1 -0
- package/dist/presets/_briefs/superhuman.d.ts +3 -0
- package/dist/presets/_briefs/superhuman.js +258 -0
- package/dist/presets/_briefs/superhuman.js.map +1 -0
- package/dist/presets/_briefs/tesla.d.ts +3 -0
- package/dist/presets/_briefs/tesla.js +292 -0
- package/dist/presets/_briefs/tesla.js.map +1 -0
- package/dist/presets/_briefs/theverge.d.ts +3 -0
- package/dist/presets/_briefs/theverge.js +345 -0
- package/dist/presets/_briefs/theverge.js.map +1 -0
- package/dist/presets/_briefs/together.d.ts +3 -0
- package/dist/presets/_briefs/together.js +269 -0
- package/dist/presets/_briefs/together.js.map +1 -0
- package/dist/presets/_briefs/uber.d.ts +3 -0
- package/dist/presets/_briefs/uber.js +301 -0
- package/dist/presets/_briefs/uber.js.map +1 -0
- package/dist/presets/_briefs/vercel.d.ts +3 -0
- package/dist/presets/_briefs/vercel.js +316 -0
- package/dist/presets/_briefs/vercel.js.map +1 -0
- package/dist/presets/_briefs/vodafone.d.ts +3 -0
- package/dist/presets/_briefs/vodafone.js +429 -0
- package/dist/presets/_briefs/vodafone.js.map +1 -0
- package/dist/presets/_briefs/voltagent.d.ts +3 -0
- package/dist/presets/_briefs/voltagent.js +329 -0
- package/dist/presets/_briefs/voltagent.js.map +1 -0
- package/dist/presets/_briefs/warp.d.ts +3 -0
- package/dist/presets/_briefs/warp.js +259 -0
- package/dist/presets/_briefs/warp.js.map +1 -0
- package/dist/presets/_briefs/webflow.d.ts +3 -0
- package/dist/presets/_briefs/webflow.js +98 -0
- package/dist/presets/_briefs/webflow.js.map +1 -0
- package/dist/presets/_briefs/wired.d.ts +3 -0
- package/dist/presets/_briefs/wired.js +284 -0
- package/dist/presets/_briefs/wired.js.map +1 -0
- package/dist/presets/_briefs/wise.d.ts +3 -0
- package/dist/presets/_briefs/wise.js +179 -0
- package/dist/presets/_briefs/wise.js.map +1 -0
- package/dist/presets/_briefs/x.d.ts +3 -0
- package/dist/presets/_briefs/x.js +263 -0
- package/dist/presets/_briefs/x.js.map +1 -0
- package/dist/presets/_briefs/zapier.d.ts +3 -0
- package/dist/presets/_briefs/zapier.js +334 -0
- package/dist/presets/_briefs/zapier.js.map +1 -0
- package/dist/presets/airbnb.d.ts +5 -0
- package/dist/presets/airbnb.js +7 -0
- package/dist/presets/airbnb.js.map +1 -0
- package/dist/presets/airtable.d.ts +5 -0
- package/dist/presets/airtable.js +7 -0
- package/dist/presets/airtable.js.map +1 -0
- package/dist/presets/apple.d.ts +5 -0
- package/dist/presets/apple.js +7 -0
- package/dist/presets/apple.js.map +1 -0
- package/dist/presets/binance.d.ts +5 -0
- package/dist/presets/binance.js +7 -0
- package/dist/presets/binance.js.map +1 -0
- package/dist/presets/bmw-m.d.ts +5 -0
- package/dist/presets/bmw-m.js +7 -0
- package/dist/presets/bmw-m.js.map +1 -0
- package/dist/presets/bmw.d.ts +5 -0
- package/dist/presets/bmw.js +7 -0
- package/dist/presets/bmw.js.map +1 -0
- package/dist/presets/bugatti.d.ts +5 -0
- package/dist/presets/bugatti.js +7 -0
- package/dist/presets/bugatti.js.map +1 -0
- package/dist/presets/cal.d.ts +5 -0
- package/dist/presets/cal.js +7 -0
- package/dist/presets/cal.js.map +1 -0
- package/dist/presets/claude.d.ts +5 -0
- package/dist/presets/claude.js +7 -0
- package/dist/presets/claude.js.map +1 -0
- package/dist/presets/clay.d.ts +5 -0
- package/dist/presets/clay.js +7 -0
- package/dist/presets/clay.js.map +1 -0
- package/dist/presets/clickhouse.d.ts +5 -0
- package/dist/presets/clickhouse.js +7 -0
- package/dist/presets/clickhouse.js.map +1 -0
- package/dist/presets/cohere.d.ts +5 -0
- package/dist/presets/cohere.js +7 -0
- package/dist/presets/cohere.js.map +1 -0
- package/dist/presets/coinbase.d.ts +5 -0
- package/dist/presets/coinbase.js +7 -0
- package/dist/presets/coinbase.js.map +1 -0
- package/dist/presets/composio.d.ts +5 -0
- package/dist/presets/composio.js +7 -0
- package/dist/presets/composio.js.map +1 -0
- package/dist/presets/cursor.d.ts +5 -0
- package/dist/presets/cursor.js +7 -0
- package/dist/presets/cursor.js.map +1 -0
- package/dist/presets/elevenlabs.d.ts +5 -0
- package/dist/presets/elevenlabs.js +7 -0
- package/dist/presets/elevenlabs.js.map +1 -0
- package/dist/presets/expo.d.ts +5 -0
- package/dist/presets/expo.js +7 -0
- package/dist/presets/expo.js.map +1 -0
- package/dist/presets/ferrari.d.ts +5 -0
- package/dist/presets/ferrari.js +7 -0
- package/dist/presets/ferrari.js.map +1 -0
- package/dist/presets/figma.d.ts +5 -0
- package/dist/presets/figma.js +7 -0
- package/dist/presets/figma.js.map +1 -0
- package/dist/presets/framer.d.ts +5 -0
- package/dist/presets/framer.js +7 -0
- package/dist/presets/framer.js.map +1 -0
- package/dist/presets/hashicorp.d.ts +5 -0
- package/dist/presets/hashicorp.js +7 -0
- package/dist/presets/hashicorp.js.map +1 -0
- package/dist/presets/ibm.d.ts +5 -0
- package/dist/presets/ibm.js +7 -0
- package/dist/presets/ibm.js.map +1 -0
- package/dist/presets/index.d.ts +94 -0
- package/dist/presets/index.js +297 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/intercom.d.ts +5 -0
- package/dist/presets/intercom.js +7 -0
- package/dist/presets/intercom.js.map +1 -0
- package/dist/presets/kraken.d.ts +5 -0
- package/dist/presets/kraken.js +7 -0
- package/dist/presets/kraken.js.map +1 -0
- package/dist/presets/lamborghini.d.ts +5 -0
- package/dist/presets/lamborghini.js +7 -0
- package/dist/presets/lamborghini.js.map +1 -0
- package/dist/presets/linear.d.ts +5 -0
- package/dist/presets/linear.js +7 -0
- package/dist/presets/linear.js.map +1 -0
- package/dist/presets/lovable.d.ts +5 -0
- package/dist/presets/lovable.js +7 -0
- package/dist/presets/lovable.js.map +1 -0
- package/dist/presets/mastercard.d.ts +5 -0
- package/dist/presets/mastercard.js +7 -0
- package/dist/presets/mastercard.js.map +1 -0
- package/dist/presets/meta.d.ts +5 -0
- package/dist/presets/meta.js +7 -0
- package/dist/presets/meta.js.map +1 -0
- package/dist/presets/minimax.d.ts +5 -0
- package/dist/presets/minimax.js +7 -0
- package/dist/presets/minimax.js.map +1 -0
- package/dist/presets/mintlify.d.ts +5 -0
- package/dist/presets/mintlify.js +7 -0
- package/dist/presets/mintlify.js.map +1 -0
- package/dist/presets/miro.d.ts +5 -0
- package/dist/presets/miro.js +7 -0
- package/dist/presets/miro.js.map +1 -0
- package/dist/presets/mistral.d.ts +5 -0
- package/dist/presets/mistral.js +7 -0
- package/dist/presets/mistral.js.map +1 -0
- package/dist/presets/mongodb.d.ts +5 -0
- package/dist/presets/mongodb.js +7 -0
- package/dist/presets/mongodb.js.map +1 -0
- package/dist/presets/nike.d.ts +5 -0
- package/dist/presets/nike.js +7 -0
- package/dist/presets/nike.js.map +1 -0
- package/dist/presets/notion.d.ts +5 -0
- package/dist/presets/notion.js +7 -0
- package/dist/presets/notion.js.map +1 -0
- package/dist/presets/nvidia.d.ts +5 -0
- package/dist/presets/nvidia.js +7 -0
- package/dist/presets/nvidia.js.map +1 -0
- package/dist/presets/ollama.d.ts +5 -0
- package/dist/presets/ollama.js +7 -0
- package/dist/presets/ollama.js.map +1 -0
- package/dist/presets/opencode.d.ts +5 -0
- package/dist/presets/opencode.js +7 -0
- package/dist/presets/opencode.js.map +1 -0
- package/dist/presets/pinterest.d.ts +5 -0
- package/dist/presets/pinterest.js +7 -0
- package/dist/presets/pinterest.js.map +1 -0
- package/dist/presets/playstation.d.ts +5 -0
- package/dist/presets/playstation.js +7 -0
- package/dist/presets/playstation.js.map +1 -0
- package/dist/presets/posthog.d.ts +5 -0
- package/dist/presets/posthog.js +7 -0
- package/dist/presets/posthog.js.map +1 -0
- package/dist/presets/raycast.d.ts +5 -0
- package/dist/presets/raycast.js +7 -0
- package/dist/presets/raycast.js.map +1 -0
- package/dist/presets/renault.d.ts +5 -0
- package/dist/presets/renault.js +7 -0
- package/dist/presets/renault.js.map +1 -0
- package/dist/presets/replicate.d.ts +5 -0
- package/dist/presets/replicate.js +7 -0
- package/dist/presets/replicate.js.map +1 -0
- package/dist/presets/resend.d.ts +5 -0
- package/dist/presets/resend.js +7 -0
- package/dist/presets/resend.js.map +1 -0
- package/dist/presets/revolut.d.ts +5 -0
- package/dist/presets/revolut.js +7 -0
- package/dist/presets/revolut.js.map +1 -0
- package/dist/presets/runwayml.d.ts +5 -0
- package/dist/presets/runwayml.js +7 -0
- package/dist/presets/runwayml.js.map +1 -0
- package/dist/presets/sanity.d.ts +5 -0
- package/dist/presets/sanity.js +7 -0
- package/dist/presets/sanity.js.map +1 -0
- package/dist/presets/sentry.d.ts +5 -0
- package/dist/presets/sentry.js +7 -0
- package/dist/presets/sentry.js.map +1 -0
- package/dist/presets/shopify.d.ts +5 -0
- package/dist/presets/shopify.js +7 -0
- package/dist/presets/shopify.js.map +1 -0
- package/dist/presets/slack.d.ts +5 -0
- package/dist/presets/slack.js +7 -0
- package/dist/presets/slack.js.map +1 -0
- package/dist/presets/spacex.d.ts +5 -0
- package/dist/presets/spacex.js +7 -0
- package/dist/presets/spacex.js.map +1 -0
- package/dist/presets/spotify.d.ts +5 -0
- package/dist/presets/spotify.js +7 -0
- package/dist/presets/spotify.js.map +1 -0
- package/dist/presets/starbucks.d.ts +5 -0
- package/dist/presets/starbucks.js +7 -0
- package/dist/presets/starbucks.js.map +1 -0
- package/dist/presets/stripe.d.ts +5 -0
- package/dist/presets/stripe.js +7 -0
- package/dist/presets/stripe.js.map +1 -0
- package/dist/presets/supabase.d.ts +5 -0
- package/dist/presets/supabase.js +7 -0
- package/dist/presets/supabase.js.map +1 -0
- package/dist/presets/superhuman.d.ts +5 -0
- package/dist/presets/superhuman.js +7 -0
- package/dist/presets/superhuman.js.map +1 -0
- package/dist/presets/tesla.d.ts +5 -0
- package/dist/presets/tesla.js +7 -0
- package/dist/presets/tesla.js.map +1 -0
- package/dist/presets/theverge.d.ts +5 -0
- package/dist/presets/theverge.js +7 -0
- package/dist/presets/theverge.js.map +1 -0
- package/dist/presets/together.d.ts +5 -0
- package/dist/presets/together.js +7 -0
- package/dist/presets/together.js.map +1 -0
- package/dist/presets/uber.d.ts +5 -0
- package/dist/presets/uber.js +7 -0
- package/dist/presets/uber.js.map +1 -0
- package/dist/presets/vercel.d.ts +5 -0
- package/dist/presets/vercel.js +7 -0
- package/dist/presets/vercel.js.map +1 -0
- package/dist/presets/vodafone.d.ts +5 -0
- package/dist/presets/vodafone.js +7 -0
- package/dist/presets/vodafone.js.map +1 -0
- package/dist/presets/voltagent.d.ts +5 -0
- package/dist/presets/voltagent.js +7 -0
- package/dist/presets/voltagent.js.map +1 -0
- package/dist/presets/warp.d.ts +5 -0
- package/dist/presets/warp.js +7 -0
- package/dist/presets/warp.js.map +1 -0
- package/dist/presets/webflow.d.ts +5 -0
- package/dist/presets/webflow.js +7 -0
- package/dist/presets/webflow.js.map +1 -0
- package/dist/presets/wired.d.ts +5 -0
- package/dist/presets/wired.js +7 -0
- package/dist/presets/wired.js.map +1 -0
- package/dist/presets/wise.d.ts +5 -0
- package/dist/presets/wise.js +7 -0
- package/dist/presets/wise.js.map +1 -0
- package/dist/presets/x.d.ts +5 -0
- package/dist/presets/x.js +7 -0
- package/dist/presets/x.js.map +1 -0
- package/dist/presets/zapier.d.ts +5 -0
- package/dist/presets/zapier.js +7 -0
- package/dist/presets/zapier.js.map +1 -0
- package/package.json +17 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presets/_briefs/expo.ts"],"sourcesContent":["// AUTO-GENERATED — do not hand-edit. Source: https://github.com/voltagent/awesome-design-md\nexport const expoBrief = `---\nversion: alpha\nname: Expo\ndescription: A React Native developer-platform whose marketing site reads like a quietly-confident infrastructure brand. The base canvas is pure white with a soft sky-blue gradient atmospheric wash behind the hero; near-black ink (\\`#171717\\`) carries body and display alike. The single brand voltage is **pure black** (\\`#000000\\`) for primary CTAs — minimal and editorial-feeling, paired with a small blue text-link accent (\\`#0d74ce\\`) reserved for inline body links. Type pairs Inter at modest weights (display 600, body 400) with JetBrains Mono on every code surface. The brand's strongest visual signature is the **device-mockup hero** — a centered MacBook + iPhone composite showing real Expo dev surfaces — over the gradient sky wash.\n\ncolors:\n primary: \"#000000\"\n primary-active: \"#1a1a1a\"\n text-link: \"#0d74ce\"\n text-link-secondary: \"#476cff\"\n ink: \"#171717\"\n body: \"#60646c\"\n body-strong: \"#171717\"\n muted: \"#999999\"\n muted-soft: \"#cccccc\"\n hairline: \"#f0f0f3\"\n hairline-soft: \"#f5f5f7\"\n hairline-strong: \"#dcdee0\"\n canvas: \"#ffffff\"\n canvas-soft: \"#fafafa\"\n surface-card: \"#ffffff\"\n surface-strong: \"#f0f0f3\"\n surface-dark: \"#171717\"\n surface-dark-elevated: \"#1a1a1a\"\n on-primary: \"#ffffff\"\n on-dark: \"#ffffff\"\n on-dark-soft: \"#b0b4ba\"\n gradient-sky-light: \"#cfe7ff\"\n gradient-sky-mid: \"#a8c8e8\"\n accent-warning: \"#ab6400\"\n accent-preview: \"#8145b5\"\n accent-link-bright: \"#47c2ff\"\n semantic-error: \"#eb8e90\"\n semantic-success: \"#16a34a\"\n\ntypography:\n display-mega:\n fontFamily: \"'Inter', -apple-system, system-ui, sans-serif\"\n fontSize: 64px\n fontWeight: 600\n lineHeight: 1.05\n letterSpacing: -1.92px\n display-xl:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 48px\n fontWeight: 600\n lineHeight: 1.1\n letterSpacing: -1.44px\n display-lg:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 36px\n fontWeight: 600\n lineHeight: 1.15\n letterSpacing: -1.08px\n display-md:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 28px\n fontWeight: 600\n lineHeight: 1.2\n letterSpacing: -0.84px\n display-sm:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 22px\n fontWeight: 600\n lineHeight: 1.25\n letterSpacing: -0.5px\n title-md:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 18px\n fontWeight: 600\n lineHeight: 1.4\n letterSpacing: 0\n title-sm:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 16px\n fontWeight: 600\n lineHeight: 1.4\n letterSpacing: 0\n body-md:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 16px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n body-sm:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n caption:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 13px\n fontWeight: 400\n lineHeight: 1.4\n letterSpacing: 0\n caption-uppercase:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 11px\n fontWeight: 600\n lineHeight: 1.4\n letterSpacing: 0.88px\n textTransform: uppercase\n code:\n fontFamily: \"'JetBrains Mono', 'Fira Code', monospace\"\n fontSize: 13px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n button:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 14px\n fontWeight: 500\n lineHeight: 1.0\n letterSpacing: 0\n nav-link:\n fontFamily: \"'Inter', sans-serif\"\n fontSize: 14px\n fontWeight: 500\n lineHeight: 1.4\n letterSpacing: 0\n\nrounded:\n none: 0px\n xs: 4px\n sm: 6px\n md: 8px\n lg: 12px\n xl: 16px\n xxl: 24px\n pill: 9999px\n full: 9999px\n\nspacing:\n xxs: 4px\n xs: 8px\n sm: 12px\n base: 16px\n md: 20px\n lg: 24px\n xl: 32px\n xxl: 48px\n section: 96px\n\ncomponents:\n top-nav:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.nav-link}\"\n height: 64px\n button-primary:\n backgroundColor: \"{colors.primary}\"\n textColor: \"{colors.on-primary}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.md}\"\n padding: 10px 18px\n height: 40px\n button-primary-active:\n backgroundColor: \"{colors.primary-active}\"\n textColor: \"{colors.on-primary}\"\n rounded: \"{rounded.md}\"\n button-secondary:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.md}\"\n padding: 9px 17px\n height: 40px\n button-tertiary-text:\n backgroundColor: transparent\n textColor: \"{colors.text-link}\"\n typography: \"{typography.button}\"\n hero-band:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-mega}\"\n padding: 96px\n device-mockup-card:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.ink}\"\n rounded: \"{rounded.xl}\"\n padding: 0\n feature-card:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.lg}\"\n padding: 24px\n feature-card-dark:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.lg}\"\n padding: 24px\n workflow-step-card:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.body}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.lg}\"\n padding: 20px\n workflow-step-icon:\n backgroundColor: \"{colors.surface-strong}\"\n rounded: \"{rounded.md}\"\n size: 32px\n code-block:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.code}\"\n rounded: \"{rounded.lg}\"\n padding: 20px\n ide-mockup-card:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n rounded: \"{rounded.lg}\"\n padding: 0\n pricing-tier-card:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.lg}\"\n padding: 32px\n pricing-tier-featured:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.lg}\"\n padding: 32px\n text-input:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.md}\"\n padding: 12px 16px\n height: 44px\n badge-pill:\n backgroundColor: \"{colors.surface-strong}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.caption-uppercase}\"\n rounded: \"{rounded.pill}\"\n padding: 4px 10px\n ecosystem-tile:\n backgroundColor: \"{colors.surface-card}\"\n rounded: \"{rounded.md}\"\n size: 64px\n cta-band:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-lg}\"\n padding: 96px\n testimonial-card:\n backgroundColor: \"{colors.surface-card}\"\n textColor: \"{colors.body}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.lg}\"\n padding: 24px\n footer-light:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.body}\"\n typography: \"{typography.body-sm}\"\n padding: 64px 48px\n footer-link:\n backgroundColor: transparent\n textColor: \"{colors.body}\"\n typography: \"{typography.body-sm}\"\n---\n\n## Overview\n\nExpo's marketing site reads like a quietly-confident React-Native developer platform. The base canvas is **pure white** (\\`{colors.canvas}\\` — #ffffff) with a soft **sky-blue gradient atmospheric wash** behind the hero band. Near-black ink \\`{colors.ink}\\` (#171717) carries body and display alike. The single brand voltage is **pure black** (\\`{colors.primary}\\` — #000000) for primary CTAs — minimal and editorial-feeling. A small blue text-link accent (\\`{colors.text-link}\\` — #0d74ce) is reserved for inline body links, never as a CTA.\n\nType runs **Inter** as the single sans family at modest weights (display 600, body 400). JetBrains Mono carries every code surface. No custom typeface — the brand trusts Inter's editorial neutrality.\n\nThe brand's strongest visual signature is the **device-mockup hero** — a centered MacBook + iPhone composite showing real Expo dev surfaces (Expo Studio, EAS Build dashboard, the Expo Go simulator) — over a sky-blue gradient atmospheric wash. The composite is the page's chrome instead of an illustration.\n\n**Key Characteristics:**\n- Pure white canvas with sky-blue gradient atmospheric backdrop in hero only.\n- Single primary CTA: pure black pill at \\`{rounded.md}\\` (8px) — compact developer-tool dialect.\n- Text-link blue (\\`{colors.text-link}\\`) for inline links only — never on a CTA.\n- Inter as the single sans family — no custom display typeface.\n- JetBrains Mono on every code surface.\n- Device-mockup hero with real Expo product surfaces is the brand chrome.\n- Hairline + soft drop depth; no atmospheric brand decoration outside the hero.\n- 96px section rhythm.\n\n## Colors\n\n### Brand & Accent\n- **Black** (\\`{colors.primary}\\` — #000000): Primary CTA fill. Used scarcely.\n- **Black Active** (\\`{colors.primary-active}\\` — #1a1a1a): Press state.\n- **Text Link Blue** (\\`{colors.text-link}\\` — #0d74ce): Inline body links inside long-form copy. Scoped narrowly — never on CTAs.\n- **Legal Link Blue** (\\`{colors.text-link-secondary}\\` — #476cff): Inline links inside legal copy footer.\n- **Bright Cyan** (\\`{colors.accent-link-bright}\\` — #47c2ff): Used very sparingly inside docs widget links.\n\n### Surface\n- **Canvas** (\\`{colors.canvas}\\` — #ffffff): Pure white page floor.\n- **Canvas Soft** (\\`{colors.canvas-soft}\\` — #fafafa): Subtle alternating band.\n- **Surface Card** (\\`{colors.surface-card}\\` — #ffffff): Pure white card.\n- **Surface Strong** (\\`{colors.surface-strong}\\` — #f0f0f3): Badges, ecosystem tiles, secondary buttons.\n- **Surface Dark** (\\`{colors.surface-dark}\\` — #171717): Dark feature cards, code blocks, IDE mockups, featured pricing.\n- **Surface Dark Elevated** (\\`{colors.surface-dark-elevated}\\` — #1a1a1a): One step lighter inside dark cards.\n\n### Atmospheric Backdrop\n- **Sky Light** (\\`{colors.gradient-sky-light}\\` — #cfe7ff) + **Sky Mid** (\\`{colors.gradient-sky-mid}\\` — #a8c8e8): The soft sky-blue gradient wash behind the homepage hero only. Not a brand action color.\n\n### Hairlines\n- **Hairline** (\\`{colors.hairline}\\` — #f0f0f3): Default 1px divider.\n- **Hairline Soft** (\\`{colors.hairline-soft}\\` — #f5f5f7): Lighter divider.\n- **Hairline Strong** (\\`{colors.hairline-strong}\\` — #dcdee0): Stronger panel outline.\n\n### Text\n- **Ink** (\\`{colors.ink}\\` — #171717): Display, body emphasis.\n- **Body** (\\`{colors.body}\\` — #60646c): Default running-text — slightly cool gray.\n- **Body Strong** (\\`{colors.body-strong}\\` — #171717): Same as ink.\n- **Muted** (\\`{colors.muted}\\` — #999999): Sub-titles.\n- **Muted Soft** (\\`{colors.muted-soft}\\` — #cccccc): Disabled text.\n- **On Primary** (\\`{colors.on-primary}\\` — #ffffff): White text on black CTA.\n- **On Dark** (\\`{colors.on-dark}\\` — #ffffff): White text on dark cards.\n- **On Dark Soft** (\\`{colors.on-dark-soft}\\` — #b0b4ba): Muted off-white on dark.\n\n### Semantic\n- **Warning** (\\`{colors.accent-warning}\\` — #ab6400): Warning text inside docs callouts.\n- **Preview** (\\`{colors.accent-preview}\\` — #8145b5): \"Preview\" tag color.\n- **Success** (\\`{colors.semantic-success}\\` — #16a34a): Confirmation.\n- **Error** (\\`{colors.semantic-error}\\` — #eb8e90): Validation errors.\n\n## Typography\n\n### Font Family\n**Inter** is the single sans family across every text role. **JetBrains Mono** carries every code surface. Fallback: \\`-apple-system, system-ui, sans-serif\\`.\n\n### Hierarchy\n\n| Token | Size | Weight | Line Height | Letter Spacing | Use |\n|---|---|---|---|---|---|\n| \\`{typography.display-mega}\\` | 64px | 600 | 1.05 | -1.92px | Homepage hero h1 |\n| \\`{typography.display-xl}\\` | 48px | 600 | 1.1 | -1.44px | Subsidiary heroes |\n| \\`{typography.display-lg}\\` | 36px | 600 | 1.15 | -1.08px | Section heads |\n| \\`{typography.display-md}\\` | 28px | 600 | 1.2 | -0.84px | Sub-section heads |\n| \\`{typography.display-sm}\\` | 22px | 600 | 1.25 | -0.5px | Card group titles |\n| \\`{typography.title-md}\\` | 18px | 600 | 1.4 | 0 | Component titles |\n| \\`{typography.title-sm}\\` | 16px | 600 | 1.4 | 0 | List labels |\n| \\`{typography.body-md}\\` | 16px | 400 | 1.5 | 0 | Default body |\n| \\`{typography.body-sm}\\` | 14px | 400 | 1.5 | 0 | Footer body |\n| \\`{typography.caption}\\` | 13px | 400 | 1.4 | 0 | Photo captions |\n| \\`{typography.caption-uppercase}\\` | 11px | 600 | 1.4 | 0.88px | Section labels, badges |\n| \\`{typography.code}\\` | 13px | 400 | 1.5 | 0 | Code blocks — JetBrains Mono |\n| \\`{typography.button}\\` | 14px | 500 | 1.0 | 0 | CTA labels |\n| \\`{typography.nav-link}\\` | 14px | 500 | 1.4 | 0 | Top-nav menu |\n\n### Principles\n- **Display weight stays at 600** — confident but not bombastic. Inter at 600 reads cleaner than 700.\n- **Negative letter-spacing on display** — -0.5px to -1.92px tracking.\n- **JetBrains Mono on every code surface.**\n\n### Note on Font Substitutes\nInter and JetBrains Mono are both freely available — the system uses them directly.\n\n## Layout\n\n### Spacing System\n- **Base unit:** 4px.\n- **Tokens:** \\`{spacing.xxs}\\` 4px · \\`{spacing.xs}\\` 8px · \\`{spacing.sm}\\` 12px · \\`{spacing.base}\\` 16px · \\`{spacing.md}\\` 20px · \\`{spacing.lg}\\` 24px · \\`{spacing.xl}\\` 32px · \\`{spacing.xxl}\\` 48px · \\`{spacing.section}\\` 96px.\n- **Section padding:** 96px.\n\n### Grid & Container\n- Max content width: ~1200px.\n- Editorial body: 12-column grid.\n- Feature card grids: 2-up at desktop for hero splits, 3-up for benefit grids.\n- Ecosystem tile grid: 8-up at desktop.\n- Footer: 5-column at desktop.\n\n### Whitespace Philosophy\nGenerous editorial pacing. The white canvas does not compete with the hero's gradient sky wash; cards inside dense workflow sections sit close (16-24px gap).\n\n## Elevation & Depth\n\n| Level | Treatment | Use |\n|---|---|---|\n| Flat (canvas) | \\`{colors.canvas}\\` (#ffffff) | Body bands, footer |\n| Card | \\`{colors.surface-card}\\` (#ffffff) | Content cards |\n| Hairline border | 1px \\`{colors.hairline}\\` | Card outlines |\n| Soft drop | \\`0 4px 12px rgba(0, 0, 0, 0.04)\\` | Hovered cards (single shadow tier) |\n| Atmospheric gradient | Sky-blue radial wash | Hero backdrop only |\n| Dark inversion | \\`{colors.surface-dark}\\` (#171717) | Dark feature cards, code blocks, featured pricing |\n\n### Decorative Depth\n- **Sky-blue gradient backdrop** in the hero only — atmospheric depth without claiming to be a brand color.\n- **Device mockup composite** as page chrome — MacBook + iPhone showing real Expo dev surfaces.\n\n## Shapes\n\n### Border Radius Scale\n\n| Token | Value | Use |\n|---|---|---|\n| \\`{rounded.none}\\` | 0px | Reserved |\n| \\`{rounded.xs}\\` | 4px | Inline tags |\n| \\`{rounded.sm}\\` | 6px | Compact rows |\n| \\`{rounded.md}\\` | 8px | CTA buttons, form inputs, ecosystem tiles |\n| \\`{rounded.lg}\\` | 12px | Feature cards, code blocks, pricing tiers |\n| \\`{rounded.xl}\\` | 16px | Device mockup cards |\n| \\`{rounded.xxl}\\` | 24px | Larger atmospheric cards (rare) |\n| \\`{rounded.pill}\\` | 9999px | Badges only |\n| \\`{rounded.full}\\` | 9999px | Avatar plates (rare) |\n\nCompact developer-ergonomic radii — 8px CTAs, 12px cards. Pill geometry is reserved for badges, never CTAs.\n\n## Components\n\n### Top Navigation\n\n**\\`top-nav\\`** — Background \\`{colors.canvas}\\`, text \\`{colors.ink}\\`, height 64px. Layout: Expo wordmark left, primary horizontal menu (Tools / Workflows / EAS / Pricing / Docs / Showcase), Sign In + Get started CTA right.\n\n### Buttons\n\n**\\`button-primary\\`** — Pure black pill. Background \\`{colors.primary}\\`, text \\`{colors.on-primary}\\`, type \\`{typography.button}\\` (14px / 500), padding 10px × 18px, height 40px, rounded \\`{rounded.md}\\` (8px).\n\n**\\`button-primary-active\\`** — Press state. Background \\`{colors.primary-active}\\`.\n\n**\\`button-secondary\\`** — White card with 1px hairline-strong border. Background \\`{colors.surface-card}\\`, text \\`{colors.ink}\\`, 1px \\`{colors.hairline-strong}\\` border.\n\n**\\`button-tertiary-text\\`** — Inline blue text link. Background transparent, text \\`{colors.text-link}\\`.\n\n### Hero & Device Mockup\n\n**\\`hero-band\\`** — Background \\`{colors.canvas}\\` with a soft sky-blue gradient wash behind the centered headline. Display headline in \\`{typography.display-mega}\\` (64px / 600 / -1.92px), subhead in \\`{typography.body-md}\\`, single primary CTA, then below — the device mockup composite.\n\n**\\`device-mockup-card\\`** — A layered MacBook + iPhone composite showing real Expo dev surfaces. Background \\`{colors.surface-card}\\`, rounded \\`{rounded.xl}\\`. The MacBook holds the EAS dashboard or Expo Studio screenshot; the iPhone overlay shows the running app in Expo Go. This is the page chrome.\n\n### Cards\n\n**\\`feature-card\\`** — Background \\`{colors.surface-card}\\`, text \\`{colors.ink}\\`, type \\`{typography.title-md}\\`, rounded \\`{rounded.lg}\\`, padding 24px, 1px \\`{colors.hairline-strong}\\` border.\n\n**\\`feature-card-dark\\`** — Dark variant. Background \\`{colors.surface-dark}\\`, text \\`{colors.on-dark}\\`. Same shape, dark inversion.\n\n**\\`workflow-step-card\\`** — Step in the \"Get your app on every device\" workflow row. Background \\`{colors.surface-card}\\`, text \\`{colors.body}\\`, rounded \\`{rounded.lg}\\`, padding 20px. Layout: 32px square \\`{component.workflow-step-icon}\\` + step number + label + body.\n\n**\\`workflow-step-icon\\`** — Square plate. Background \\`{colors.surface-strong}\\`, rounded \\`{rounded.md}\\`, 32px size.\n\n**\\`testimonial-card\\`** — Quote card. Background \\`{colors.surface-card}\\`, text \\`{colors.body}\\`, rounded \\`{rounded.lg}\\`, padding 24px.\n\n### Code & IDE\n\n**\\`code-block\\`** — Inline code block. Background \\`{colors.surface-dark}\\`, text \\`{colors.on-dark}\\` in \\`{typography.code}\\` (JetBrains Mono 13px), rounded \\`{rounded.lg}\\`, padding 20px. White text on dark.\n\n**\\`ide-mockup-card\\`** — Stylized IDE mockup. Background \\`{colors.surface-dark}\\`, rounded \\`{rounded.lg}\\`. Multi-pane editor + terminal preview.\n\n### Pricing\n\n**\\`pricing-tier-card\\`** — Standard pricing tier. Background \\`{colors.surface-card}\\`, rounded \\`{rounded.lg}\\`, padding 32px, 1px \\`{colors.hairline-strong}\\` border.\n\n**\\`pricing-tier-featured\\`** — Featured tier. Background \\`{colors.surface-dark}\\`, text \\`{colors.on-dark}\\`. Same shape, dark inversion.\n\n### Ecosystem\n\n**\\`ecosystem-tile\\`** — Square logo plate for ecosystem partner logos (TypeScript, React, Sentry, etc.). Background \\`{colors.surface-card}\\`, rounded \\`{rounded.md}\\`, 64px size, 1px \\`{colors.hairline}\\` border.\n\n### Forms & Tags\n\n**\\`text-input\\`** — Background \\`{colors.surface-card}\\`, text \\`{colors.ink}\\`, rounded \\`{rounded.md}\\` (8px), padding 12px × 16px, height 44px, 1px \\`{colors.hairline-strong}\\` border. Focus thickens border to 2px ink.\n\n**\\`badge-pill\\`** — Small uppercase pill. Background \\`{colors.surface-strong}\\`, text \\`{colors.ink}\\`, type \\`{typography.caption-uppercase}\\`, rounded \\`{rounded.pill}\\`, padding 4px × 10px.\n\n### CTA / Footer\n\n**\\`cta-band\\`** — Pre-footer band. Background \\`{colors.canvas}\\`, centered display headline in \\`{typography.display-lg}\\`, single black pill CTA. 96px padding.\n\n**\\`footer-light\\`** — Closing white footer. Background \\`{colors.canvas}\\`, text \\`{colors.body}\\`. 5-column link list. 64×48px padding.\n\n**\\`footer-link\\`** — Background transparent, text \\`{colors.body}\\`, type \\`{typography.body-sm}\\`.\n\n## Do's and Don'ts\n\n### Do\n- Reserve \\`{colors.primary}\\` (black) for primary CTAs.\n- Use \\`{colors.text-link}\\` (blue) for inline body links only — never on CTAs or buttons.\n- Set every CTA at \\`{rounded.md}\\` (8px) — developer dialect.\n- Use Inter at weight 600 for display, 400 for body.\n- Render every code surface in JetBrains Mono.\n- Pair the hero with the device-mockup composite — it's the page chrome.\n\n### Don't\n- Don't introduce a saturated brand action color. Black is the only CTA fill.\n- Don't use blue (\\`{colors.text-link}\\`) on a CTA. Inline links only.\n- Don't drop display below weight 600 or above 700.\n- Don't use full pills on CTAs — pills are for badges only.\n- Don't replicate the sky-blue gradient backdrop outside the hero.\n- Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA is what appears on actual page CTAs.\n\n## Responsive Behavior\n\n### Breakpoints\n\n| Name | Width | Key Changes |\n|---|---|---|\n| Mobile | < 640px | Hero h1 64→32px; device mockup → single iPhone screen; feature grid 1-up; nav hamburger. |\n| Tablet | 640–1024px | Hero h1 48px; device mockup compresses; feature grid 2-up. |\n| Desktop | 1024–1280px | Full hero h1 64px; full MacBook + iPhone composite; feature grid 3-up. |\n| Wide | > 1280px | Content caps at 1200px. |\n\n### Touch Targets\n- Primary CTA at 40px height — at WCAG AA, padded for AAA.\n- Search input 44px — at AAA.\n\n### Collapsing Strategy\n- Top nav switches to hamburger below 768px.\n- Device mockup MacBook + iPhone collapses to a single iPhone preview on mobile.\n- Feature grid: 3-up → 2-up → 1-up.\n- Ecosystem tile grid: 8-up → 4-up → 3-up → 2-up.\n\n## Iteration Guide\n\n1. Focus on a single component at a time.\n2. CTAs default to \\`{rounded.md}\\` (8px). Cards use \\`{rounded.lg}\\` (12px).\n3. Variants live as separate entries.\n4. Use \\`{token.refs}\\` everywhere — never inline hex.\n5. Hover state never documented.\n6. Inter 600 for display, Inter 400 for body. JetBrains Mono on code.\n7. Black stays the only CTA color; text-link blue stays inline-only.\n\n## Known Gaps\n\n- Inter and JetBrains Mono are freely available — no licensing concerns.\n- Animation timings (device mockup parallax, hero entrance) out of scope.\n- In-app surfaces (EAS dashboard interactive, Expo Go simulator) only partially captured via marketing mockups.\n- Form validation states beyond focus not visible on captured surfaces.\n`;\n"],"mappings":";AACO,IAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const ferrariBrief = "---\nversion: alpha\nname: Ferrari\ndescription: A luxury-automotive brand whose marketing surfaces read as cinematic editorial. The base canvas is **near-black** (`#181818`) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables). The single brand voltage is **Rosso Corsa** (`#da291c`) \u2014 the iconic Ferrari racing red \u2014 used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights. Type runs **FerrariSans** at modest weights (display 500, body 400) \u2014 never bombastic. Spacing follows an explicit 8px token ladder (`xxxs` 4px through `super` 128px); generous editorial pacing throughout. The brand's strongest visual signature is the **full-bleed cinematic hero photograph** that fills the viewport top with car photography, model details, or trackside livery \u2014 followed by a tighter editorial body layout below.\n\ncolors:\n primary: \"#da291c\"\n primary-active: \"#b01e0a\"\n primary-hover: \"#9d2211\"\n ink: \"#ffffff\"\n body: \"#969696\"\n body-strong: \"#ffffff\"\n body-on-light: \"#181818\"\n muted: \"#666666\"\n muted-soft: \"#8f8f8f\"\n hairline: \"#303030\"\n hairline-on-light: \"#d2d2d2\"\n hairline-soft: \"#ebebeb\"\n canvas: \"#181818\"\n canvas-elevated: \"#303030\"\n canvas-light: \"#ffffff\"\n surface-card: \"#303030\"\n surface-soft-light: \"#f7f7f7\"\n surface-strong-light: \"#ebebeb\"\n on-primary: \"#ffffff\"\n on-dark: \"#ffffff\"\n on-light: \"#181818\"\n accent-yellow-hypersail: \"#fff200\"\n accent-yellow: \"#f6e500\"\n semantic-info: \"#4c98b9\"\n semantic-success: \"#03904a\"\n semantic-warning: \"#f13a2c\"\n\ntypography:\n display-mega:\n fontFamily: \"'FerrariSans', -apple-system, system-ui, sans-serif\"\n fontSize: 80px\n fontWeight: 500\n lineHeight: 1.05\n letterSpacing: -1.6px\n display-xl:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 56px\n fontWeight: 500\n lineHeight: 1.1\n letterSpacing: -1.12px\n display-lg:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 36px\n fontWeight: 500\n lineHeight: 1.2\n letterSpacing: -0.36px\n display-md:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 26px\n fontWeight: 500\n lineHeight: 1.5\n letterSpacing: 0.195px\n title-md:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 18px\n fontWeight: 700\n lineHeight: 1.2\n letterSpacing: 0\n title-sm:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 16px\n fontWeight: 500\n lineHeight: 1.4\n letterSpacing: 0.08px\n body-md:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n body-sm:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 13px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n caption:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 12px\n fontWeight: 400\n lineHeight: 1.4\n letterSpacing: 0\n caption-uppercase:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 11px\n fontWeight: 600\n lineHeight: 1.4\n letterSpacing: 1.1px\n textTransform: uppercase\n button:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 14px\n fontWeight: 700\n lineHeight: 1.0\n letterSpacing: 1.4px\n textTransform: uppercase\n nav-link:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 13px\n fontWeight: 600\n lineHeight: 1.4\n letterSpacing: 0.65px\n textTransform: uppercase\n number-display:\n fontFamily: \"'FerrariSans', sans-serif\"\n fontSize: 80px\n fontWeight: 700\n lineHeight: 1.0\n letterSpacing: -1.6px\n\nrounded:\n none: 0px\n xs: 2px\n sm: 4px\n md: 6px\n lg: 8px\n xl: 12px\n full: 9999px\n\nspacing:\n xxxs: 4px\n xxs: 8px\n xs: 16px\n sm: 24px\n md: 32px\n lg: 48px\n xl: 64px\n xxl: 96px\n super: 128px\n\ncomponents:\n top-nav-on-dark:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.nav-link}\"\n height: 64px\n top-nav-on-light:\n backgroundColor: \"{colors.canvas-light}\"\n textColor: \"{colors.body-on-light}\"\n typography: \"{typography.nav-link}\"\n height: 64px\n button-primary:\n backgroundColor: \"{colors.primary}\"\n textColor: \"{colors.on-primary}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.none}\"\n padding: 14px 32px\n height: 48px\n button-primary-active:\n backgroundColor: \"{colors.primary-active}\"\n textColor: \"{colors.on-primary}\"\n rounded: \"{rounded.none}\"\n button-outline-on-dark:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.none}\"\n padding: 13px 31px\n height: 48px\n button-outline-on-light:\n backgroundColor: transparent\n textColor: \"{colors.body-on-light}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.none}\"\n padding: 13px 31px\n height: 48px\n button-tertiary-text:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.button}\"\n hero-band-cinema:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-mega}\"\n padding: 0\n hero-band-light:\n backgroundColor: \"{colors.canvas-light}\"\n textColor: \"{colors.body-on-light}\"\n typography: \"{typography.display-xl}\"\n padding: 96px\n feature-card-photo:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.none}\"\n padding: 0\n feature-card-light:\n backgroundColor: \"{colors.canvas-light}\"\n textColor: \"{colors.body-on-light}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.none}\"\n padding: 32px\n livery-band:\n backgroundColor: \"{colors.primary}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-lg}\"\n padding: 96px\n preowned-listing-card:\n backgroundColor: \"{colors.canvas-light}\"\n textColor: \"{colors.body-on-light}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n spec-cell:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.number-display}\"\n padding: 24px 0\n race-position-cell:\n backgroundColor: transparent\n textColor: \"{colors.primary}\"\n typography: \"{typography.number-display}\"\n race-calendar-row:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n padding: 16px 0\n driver-card:\n backgroundColor: \"{colors.canvas-elevated}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.none}\"\n padding: 24px\n text-input-on-dark:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.sm}\"\n padding: 14px 16px\n height: 48px\n text-input-on-light:\n backgroundColor: \"{colors.canvas-light}\"\n textColor: \"{colors.body-on-light}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.sm}\"\n padding: 14px 16px\n height: 48px\n badge-pill:\n backgroundColor: \"{colors.canvas-elevated}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.caption-uppercase}\"\n rounded: \"{rounded.full}\"\n padding: 4px 12px\n cta-band-dark:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-lg}\"\n padding: 96px\n newsletter-input-band:\n backgroundColor: \"{colors.canvas-elevated}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.sm}\"\n padding: 32px\n footer-dark:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.body}\"\n typography: \"{typography.body-sm}\"\n padding: 64px 48px\n footer-link:\n backgroundColor: transparent\n textColor: \"{colors.body}\"\n typography: \"{typography.body-sm}\"\n---\n\n## Overview\n\nFerrari's marketing site reads as cinematic editorial \u2014 closer to a luxury-magazine spread than a typical car-OEM site. The base canvas is **near-black** (`{colors.canvas}` \u2014 #181818) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables, dealer surfaces). The single brand voltage is **Rosso Corsa** (`{colors.primary}` \u2014 #da291c), the iconic Ferrari racing red, used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights.\n\nType runs **FerrariSans** as the single sans family at modest weights \u2014 display 500, body 400. CTA labels render in uppercase with generous tracking (1.1-1.4px). The brand never uses bold display copy.\n\nThe brand's strongest visual signature is the **full-bleed cinematic hero photograph** \u2014 top-of-page imagery shows car photography, model details, or trackside livery without any chrome competing with it. Headlines float over the bottom of the photo or sit in a tight band beneath. Spacing follows the explicit 8px token ladder: `xxxs` 4 / `xxs` 8 / `xs` 16 / `sm` 24 / `md` 32 / `lg` 48 / `xl` 64 / `xxl` 96 / `super` 128.\n\n**Key Characteristics:**\n- Single accent: `{colors.primary}` (Rosso Corsa #da291c) for primary CTAs, the Cavallino, F1 race-position highlights. Used scarcely.\n- Near-black canvas (#181818) \u2014 never pure black. White-canvas bands only inside editorial contexts.\n- Single sans family: FerrariSans across every text role.\n- Display weight stays at 500 \u2014 never bold.\n- CTA labels render uppercase with 1.4px tracking.\n- Sharp `{rounded.none}` (0px) corners on every CTA, card, and band \u2014 luxury-automotive precision.\n- Full-bleed cinematic hero photography is the page chrome.\n- Explicit 8px spacing token ladder with named scale (xxxs through super).\n- Hairlines + photographic depth \u2014 no drop shadow tiers.\n\n## Colors\n\n### Brand & Accent\n- **Rosso Corsa** (`{colors.primary}` \u2014 #da291c): The iconic Ferrari racing red. Primary CTA fill, Cavallino mark, F1 driver-position highlights. Used scarcely.\n- **Rosso Corsa Active** (`{colors.primary-active}` \u2014 #b01e0a): Press state.\n- **Rosso Corsa Hover-darker** (`{colors.primary-hover}` \u2014 #9d2211): Documented for completeness; per the no-hover policy this is not used in preview HTML.\n- **Hypersail Yellow** (`{colors.accent-yellow-hypersail}` \u2014 #fff200) + **Yellow** (`{colors.accent-yellow}` \u2014 #f6e500): Sub-brand accents reserved for the Hypersail sailing program and the global focus-ring color. Not part of the main automotive palette.\n\n### Surface\n- **Canvas** (`{colors.canvas}` \u2014 #181818): Near-black page floor \u2014 never pure black, slight warmth.\n- **Canvas Elevated** (`{colors.canvas-elevated}` \u2014 #303030): Cards and panels on dark canvas.\n- **Canvas Light** (`{colors.canvas-light}` \u2014 #ffffff): White editorial bands (preowned listings, pricing).\n- **Surface Card** (`{colors.surface-card}` \u2014 #303030): Same as canvas-elevated \u2014 driver cards, livery photo plates.\n- **Surface Soft Light** (`{colors.surface-soft-light}` \u2014 #f7f7f7): Light editorial alternating band.\n- **Surface Strong Light** (`{colors.surface-strong-light}` \u2014 #ebebeb): Light-canvas dividers, badges.\n\n### Hairlines\n- **Hairline** (`{colors.hairline}` \u2014 #303030): 1px divider on dark \u2014 same hex as `{colors.canvas-elevated}`.\n- **Hairline On Light** (`{colors.hairline-on-light}` \u2014 #d2d2d2): 1px divider on light bands.\n- **Hairline Soft** (`{colors.hairline-soft}` \u2014 #ebebeb): Lighter divider.\n\n### Text\n- **Ink** (`{colors.ink}` \u2014 #ffffff): Display, body emphasis on dark.\n- **Body** (`{colors.body}` \u2014 #969696): Default running-text on dark.\n- **Body Strong** (`{colors.body-strong}` \u2014 #ffffff): Same as ink.\n- **Body On Light** (`{colors.body-on-light}` \u2014 #181818): Default text on light bands.\n- **Muted** (`{colors.muted}` \u2014 #666666): Sub-titles, captions on dark.\n- **Muted Soft** (`{colors.muted-soft}` \u2014 #8f8f8f): Disabled link text.\n- **On Primary** (`{colors.on-primary}` \u2014 #ffffff): White text on Rosso Corsa.\n\n### Semantic\n- **Info** (`{colors.semantic-info}` \u2014 #4c98b9): Info badges, callout backgrounds.\n- **Success** (`{colors.semantic-success}` \u2014 #03904a): Confirmation.\n- **Warning** (`{colors.semantic-warning}` \u2014 #f13a2c): Validation warnings.\n\n## Typography\n\n### Font Family\n**FerrariSans** is the licensed single sans family across every text role. Fallback: `-apple-system, system-ui, sans-serif`. No display/body family split.\n\n### Hierarchy\n\n| Token | Size | Weight | Line Height | Letter Spacing | Use |\n|---|---|---|---|---|---|\n| `{typography.display-mega}` | 80px | 500 | 1.05 | -1.6px | Homepage hero h1 |\n| `{typography.display-xl}` | 56px | 500 | 1.1 | -1.12px | Subsidiary heroes |\n| `{typography.display-lg}` | 36px | 500 | 1.2 | -0.36px | Section heads, livery band |\n| `{typography.display-md}` | 26px | 500 | 1.5 | 0.195px | Sub-section heads |\n| `{typography.title-md}` | 18px | 700 | 1.2 | 0 | Component titles |\n| `{typography.title-sm}` | 16px | 500 | 1.4 | 0.08px | List labels |\n| `{typography.body-md}` | 14px | 400 | 1.5 | 0 | Default body |\n| `{typography.body-sm}` | 13px | 400 | 1.5 | 0 | Footer body |\n| `{typography.caption}` | 12px | 400 | 1.4 | 0 | Photo captions |\n| `{typography.caption-uppercase}` | 11px | 600 | 1.4 | 1.1px | Section labels, badges |\n| `{typography.button}` | 14px | 700 | 1.0 | 1.4px (uppercase) | CTA pill labels |\n| `{typography.nav-link}` | 13px | 600 | 1.4 | 0.65px (uppercase) | Top-nav menu items |\n| `{typography.number-display}` | 80px | 700 | 1.0 | -1.6px | Race position highlights, spec values |\n\n### Principles\n- **Display weight stays at 500.** Editorial confidence, not bombastic. The cinematic photography is doing the visual heavy-lifting \u2014 type doesn't need to compete.\n- **CTA labels are uppercase with 1.4px tracking.** Luxury-precision feel.\n- **Nav labels are uppercase with 0.65px tracking.** Consistent with CTA voice.\n- **Negative letter-spacing on display only.** -0.36px to -1.6px on display sizes; body stays at 0.\n\n### Note on Font Substitutes\nFerrariSans is licensed. Open-source substitute: **Inter** at weight 500 with letter-spacing -1%, or **S\u00F6hne** for closer humanist proportions.\n\n## Layout\n\n### Spacing System\n- **Base unit:** 4px.\n- **Tokens:** `{spacing.xxxs}` 4px \u00B7 `{spacing.xxs}` 8px \u00B7 `{spacing.xs}` 16px \u00B7 `{spacing.sm}` 24px \u00B7 `{spacing.md}` 32px \u00B7 `{spacing.lg}` 48px \u00B7 `{spacing.xl}` 64px \u00B7 `{spacing.xxl}` 96px \u00B7 `{spacing.super}` 128px.\n- **Section padding:** `{spacing.xxl}` (96px) for major bands; `{spacing.super}` (128px) reserved for hero band depth.\n\n### Grid & Container\n- Max content width: ~1280px on editorial bands. Hero photography goes full-bleed.\n- Editorial body: 12-column grid.\n- Feature card grids: 2-up at desktop for hero splits, 3-up for benefit grids, 4-up for preowned listing tiles.\n- Footer: 5-column at desktop.\n\n### Whitespace Philosophy\nGenerous editorial pacing. Cinematic hero photography occupies generous viewport real-estate; body sections sit in tighter editorial layouts beneath. The canvas-light editorial bands (preowned, pricing) carry tighter density than the dark cinema bands.\n\n## Elevation & Depth\n\nThe system uses **photographic depth + brightness-step** elevation. No drop shadows except a single soft-small `{shadow.small}` documented in extracted tokens.\n\n| Level | Treatment | Use |\n|---|---|---|\n| Flat (canvas) | `{colors.canvas}` (#181818) | Body bands, footer |\n| Card | `{colors.canvas-elevated}` (#303030) | Driver cards, livery plates |\n| Light band | `{colors.canvas-light}` (#ffffff) | Preowned listings, pricing |\n| Hairline border | 1px `{colors.hairline}` or `{colors.hairline-on-light}` | Card outlines, dividers |\n| Soft drop | `0 4px 8px rgba(0,0,0,0.1)` | Hovered cards (single shadow tier) |\n| Photographic | Full-bleed cinema imagery | Hero band, livery photographs |\n\n### Decorative Depth\n- **Full-bleed cinema photography** is the brand's primary depth treatment.\n- **Brand red gradient** (`linear-gradient(180deg, #a00c01, #da291c 64%)`): The Rosso Corsa gradient used inside accent bands and CTA hover states.\n- **Dark grey gradient** (`linear-gradient(180deg, #3c3c3c, #030303 64%)`): Atmospheric darken used at section transitions.\n\n## Shapes\n\n### Border Radius Scale\n\n| Token | Value | Use |\n|---|---|---|\n| `{rounded.none}` | 0px | Every CTA, card, band \u2014 dominant radius |\n| `{rounded.xs}` | 2px | Tight badges (rare) |\n| `{rounded.sm}` | 4px | Form inputs |\n| `{rounded.md}` | 6px | Compact cards (rare) |\n| `{rounded.lg}` | 8px | Mobile-only collapse cards |\n| `{rounded.xl}` | 12px | Modal/dialog corners (rare) |\n| `{rounded.full}` | 9999px | Avatar plates, badge pills |\n\nThe radius vocabulary is **sharp by default**. Sharp 0px corners are the brand button shape \u2014 never rounded pills. Pill geometry is reserved for badge labels only.\n\n## Components\n\n### Top Navigation\n\n**`top-nav-on-dark`** \u2014 Default top nav on dark hero pages. Background `{colors.canvas}`, text `{colors.ink}`, height 64px. Layout: Cavallino mark left, primary horizontal menu (Models / F1 / Lifestyle / Owners / Preowned), language picker + utilities right. Menu items render uppercase with 0.65px tracking.\n\n**`top-nav-on-light`** \u2014 White-canvas variant for editorial light bands.\n\n### Buttons\n\n**`button-primary`** \u2014 The signature Rosso Corsa CTA. Background `{colors.primary}`, text `{colors.on-primary}`, type `{typography.button}` (14px / 700 / 1.4px tracking, uppercase), padding 14px \u00D7 32px, height 48px, **rounded `{rounded.none}` (0px \u2014 sharp corners)**.\n\n**`button-primary-active`** \u2014 Press state. Background `{colors.primary-active}`.\n\n**`button-outline-on-dark`** \u2014 Transparent with 1px white border. Background transparent, text `{colors.ink}`, 1px white border, same sharp 0px corners.\n\n**`button-outline-on-light`** \u2014 Transparent with 1px ink border on light bands.\n\n**`button-tertiary-text`** \u2014 Inline text link, uppercase tracking.\n\n### Hero Bands\n\n**`hero-band-cinema`** \u2014 Full-bleed cinematic photograph. Background `{colors.canvas}` underneath, but the photo fills the viewport. Display headline floats over the bottom of the photo or sits in a tight band beneath, in `{typography.display-mega}` (80px / 500 / -1.6px). One primary CTA + one outline CTA. Zero padding \u2014 the photo fills edge-to-edge.\n\n**`hero-band-light`** \u2014 White-canvas variant for editorial bands. Background `{colors.canvas-light}`, text `{colors.body-on-light}`, padding 96px.\n\n### Cards\n\n**`feature-card-photo`** \u2014 Image-first card. Background `{colors.canvas}`, text `{colors.ink}`, rounded `{rounded.none}`. Image fills the top edge-to-edge; title + body sit beneath in tight typography.\n\n**`feature-card-light`** \u2014 White-canvas variant. Background `{colors.canvas-light}`, text `{colors.body-on-light}`, rounded `{rounded.none}`, padding 32px.\n\n**`driver-card`** \u2014 F1 driver portrait card. Background `{colors.canvas-elevated}`, text `{colors.ink}`, rounded `{rounded.none}`, padding 24px. Layout: driver portrait + name + race number + team badge.\n\n### Editorial Surfaces\n\n**`livery-band`** \u2014 A full-width Rosso Corsa accent band. Background `{colors.primary}`, text `{colors.ink}`, type `{typography.display-lg}`, 96px padding. Used as a standout livery callout between dark editorial bands.\n\n**`preowned-listing-card`** \u2014 Used in the preowned Ferrari listing grid. Background `{colors.canvas-light}`, text `{colors.body-on-light}`, rounded `{rounded.none}`, padding 24px. Layout: car photo top + model name + year/mileage + price.\n\n### Spec & Race Surfaces\n\n**`spec-cell`** \u2014 Technical spec callout. Transparent background, value in `{typography.number-display}` (80px / 700 / -1.6px white), label below in `{typography.caption-uppercase}`.\n\n**`race-position-cell`** \u2014 F1 driver finishing position. Same number-display geometry but text in `{colors.primary}` Rosso Corsa for the brand's racing identity.\n\n**`race-calendar-row`** \u2014 Hairline-divided row in the F1 race calendar. Layout: date column left, race name + circuit middle, results column right.\n\n### Forms & Tags\n\n**`text-input-on-dark`** \u2014 Background `{colors.canvas}`, text `{colors.ink}`, rounded `{rounded.sm}` (4px), padding 14px \u00D7 16px, height 48px, 1px `{colors.hairline}` border.\n\n**`text-input-on-light`** \u2014 White-canvas variant.\n\n**`badge-pill`** \u2014 Small uppercase pill. Background `{colors.canvas-elevated}`, text `{colors.ink}`, type `{typography.caption-uppercase}` (11px / 600 / 1.1px tracking, uppercase), rounded `{rounded.full}` (9999px), padding 4px \u00D7 12px. The only place pill geometry is used.\n\n### Newsletter / CTA / Footer\n\n**`newsletter-input-band`** \u2014 Newsletter signup band. Background `{colors.canvas-elevated}`, padding 32px, rounded `{rounded.sm}`. Holds an inline email input + primary CTA.\n\n**`cta-band-dark`** \u2014 Pre-footer band. Background `{colors.canvas}`, centered display headline in `{typography.display-lg}`, single Rosso Corsa CTA. 96px padding.\n\n**`footer-dark`** \u2014 Closing dark footer. Background `{colors.canvas}`, text `{colors.body}`. 5-column link list. 64\u00D748px padding.\n\n**`footer-link`** \u2014 Background transparent, text `{colors.body}`, type `{typography.body-sm}`.\n\n## Do's and Don'ts\n\n### Do\n- Reserve `{colors.primary}` (Rosso Corsa) for primary CTAs, the Cavallino mark, and F1 race-position highlights.\n- Set every CTA at `{rounded.none}` (0px sharp corners) \u2014 the brand's signature precision.\n- Render CTA labels in uppercase with 1.4px tracking via `{typography.button}`.\n- Pair every hero with a full-bleed cinematic photograph \u2014 the photograph IS the depth.\n- Use the explicit 8px spacing ladder (`xxxs` through `super`) rather than ad-hoc px values.\n- Keep display weight at 500 \u2014 never bold.\n\n### Don't\n- Don't introduce a saturated brand color other than Rosso Corsa.\n- Don't use rounded or pill CTAs \u2014 sharp 0px corners are the brand button.\n- Don't bold display copy. The cinematic photography does the visual heavy-lifting.\n- Don't use Hypersail yellow outside the Hypersail sailing program context.\n- Don't use pure black canvas. The brand canvas is `{colors.canvas}` (#181818) \u2014 slightly warm.\n- Don't add drop shadow tiers. Photography + brightness-step elevation carry the depth.\n- Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA color is what appears on actual product CTAs, not on injected modals.\n\n## Responsive Behavior\n\n### Breakpoints\n\n| Name | Width | Key Changes |\n|---|---|---|\n| Mobile | < 640px | Hero photograph crops vertically; hero h1 80\u219232px; feature card grid 1-up; nav hamburger; preowned listing 1-up. |\n| Tablet | 640\u20131024px | Hero h1 56px; feature card grid 2-up; preowned listing 2-up. |\n| Desktop | 1024\u20131280px | Full hero h1 80px; feature card grid 3-up; preowned listing 4-up. |\n| Wide | > 1280px | Editorial body content caps at 1280px; hero photography continues full-bleed. |\n\n### Touch Targets\n- Primary CTA at 48px height \u2014 at WCAG AAA (44 \u00D7 44).\n- Nav items render uppercase with 0.65px tracking, padded for an effective 48px tap area.\n\n### Collapsing Strategy\n- Top nav switches to hamburger below 768px.\n- Hero photograph reframes per breakpoint via art direction \u2014 desktop carries wide cinematic; mobile crops tighter or shifts to vertical.\n- Feature card grid: 4-up \u2192 3-up \u2192 2-up \u2192 1-up.\n- F1 driver cards: 2-up at desktop, 1-up at mobile.\n\n## Iteration Guide\n\n1. Focus on a single component at a time.\n2. CTAs default to `{rounded.none}` (0px sharp). Cards use `{rounded.none}` too. Pill is reserved for badges.\n3. Variants live as separate entries inside `components:`.\n4. Use `{token.refs}` everywhere \u2014 never inline hex.\n5. Hover state never documented.\n6. FerrariSans 500 for display, 400/700 for body. Uppercase + tracking on CTAs and nav.\n7. Rosso Corsa stays scarce \u2014 primary CTAs, Cavallino, race-position highlights only.\n8. Use the explicit 8px named spacing ladder.\n\n## Known Gaps\n\n- FerrariSans is a licensed typeface; Inter at weight 500 is the documented substitute.\n- Animation timings (hero parallax, livery band entrance, race position counter) out of scope.\n- In-product surfaces (preowned configurator, F1 telemetry overlays) only partially captured via marketing surfaces.\n- Form validation states beyond focus not visible on captured surfaces.\n- Hypersail yellow tokens are extracted but only appear in the Hypersail sailing program context \u2014 documented as scoped accents.\n";
|
|
2
|
+
|
|
3
|
+
export { ferrariBrief };
|
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
// src/presets/_briefs/ferrari.ts
|
|
2
|
+
var ferrariBrief = `---
|
|
3
|
+
version: alpha
|
|
4
|
+
name: Ferrari
|
|
5
|
+
description: A luxury-automotive brand whose marketing surfaces read as cinematic editorial. The base canvas is **near-black** (\`#181818\`) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables). The single brand voltage is **Rosso Corsa** (\`#da291c\`) \u2014 the iconic Ferrari racing red \u2014 used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights. Type runs **FerrariSans** at modest weights (display 500, body 400) \u2014 never bombastic. Spacing follows an explicit 8px token ladder (\`xxxs\` 4px through \`super\` 128px); generous editorial pacing throughout. The brand's strongest visual signature is the **full-bleed cinematic hero photograph** that fills the viewport top with car photography, model details, or trackside livery \u2014 followed by a tighter editorial body layout below.
|
|
6
|
+
|
|
7
|
+
colors:
|
|
8
|
+
primary: "#da291c"
|
|
9
|
+
primary-active: "#b01e0a"
|
|
10
|
+
primary-hover: "#9d2211"
|
|
11
|
+
ink: "#ffffff"
|
|
12
|
+
body: "#969696"
|
|
13
|
+
body-strong: "#ffffff"
|
|
14
|
+
body-on-light: "#181818"
|
|
15
|
+
muted: "#666666"
|
|
16
|
+
muted-soft: "#8f8f8f"
|
|
17
|
+
hairline: "#303030"
|
|
18
|
+
hairline-on-light: "#d2d2d2"
|
|
19
|
+
hairline-soft: "#ebebeb"
|
|
20
|
+
canvas: "#181818"
|
|
21
|
+
canvas-elevated: "#303030"
|
|
22
|
+
canvas-light: "#ffffff"
|
|
23
|
+
surface-card: "#303030"
|
|
24
|
+
surface-soft-light: "#f7f7f7"
|
|
25
|
+
surface-strong-light: "#ebebeb"
|
|
26
|
+
on-primary: "#ffffff"
|
|
27
|
+
on-dark: "#ffffff"
|
|
28
|
+
on-light: "#181818"
|
|
29
|
+
accent-yellow-hypersail: "#fff200"
|
|
30
|
+
accent-yellow: "#f6e500"
|
|
31
|
+
semantic-info: "#4c98b9"
|
|
32
|
+
semantic-success: "#03904a"
|
|
33
|
+
semantic-warning: "#f13a2c"
|
|
34
|
+
|
|
35
|
+
typography:
|
|
36
|
+
display-mega:
|
|
37
|
+
fontFamily: "'FerrariSans', -apple-system, system-ui, sans-serif"
|
|
38
|
+
fontSize: 80px
|
|
39
|
+
fontWeight: 500
|
|
40
|
+
lineHeight: 1.05
|
|
41
|
+
letterSpacing: -1.6px
|
|
42
|
+
display-xl:
|
|
43
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
44
|
+
fontSize: 56px
|
|
45
|
+
fontWeight: 500
|
|
46
|
+
lineHeight: 1.1
|
|
47
|
+
letterSpacing: -1.12px
|
|
48
|
+
display-lg:
|
|
49
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
50
|
+
fontSize: 36px
|
|
51
|
+
fontWeight: 500
|
|
52
|
+
lineHeight: 1.2
|
|
53
|
+
letterSpacing: -0.36px
|
|
54
|
+
display-md:
|
|
55
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
56
|
+
fontSize: 26px
|
|
57
|
+
fontWeight: 500
|
|
58
|
+
lineHeight: 1.5
|
|
59
|
+
letterSpacing: 0.195px
|
|
60
|
+
title-md:
|
|
61
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
62
|
+
fontSize: 18px
|
|
63
|
+
fontWeight: 700
|
|
64
|
+
lineHeight: 1.2
|
|
65
|
+
letterSpacing: 0
|
|
66
|
+
title-sm:
|
|
67
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
68
|
+
fontSize: 16px
|
|
69
|
+
fontWeight: 500
|
|
70
|
+
lineHeight: 1.4
|
|
71
|
+
letterSpacing: 0.08px
|
|
72
|
+
body-md:
|
|
73
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
74
|
+
fontSize: 14px
|
|
75
|
+
fontWeight: 400
|
|
76
|
+
lineHeight: 1.5
|
|
77
|
+
letterSpacing: 0
|
|
78
|
+
body-sm:
|
|
79
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
80
|
+
fontSize: 13px
|
|
81
|
+
fontWeight: 400
|
|
82
|
+
lineHeight: 1.5
|
|
83
|
+
letterSpacing: 0
|
|
84
|
+
caption:
|
|
85
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
86
|
+
fontSize: 12px
|
|
87
|
+
fontWeight: 400
|
|
88
|
+
lineHeight: 1.4
|
|
89
|
+
letterSpacing: 0
|
|
90
|
+
caption-uppercase:
|
|
91
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
92
|
+
fontSize: 11px
|
|
93
|
+
fontWeight: 600
|
|
94
|
+
lineHeight: 1.4
|
|
95
|
+
letterSpacing: 1.1px
|
|
96
|
+
textTransform: uppercase
|
|
97
|
+
button:
|
|
98
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
99
|
+
fontSize: 14px
|
|
100
|
+
fontWeight: 700
|
|
101
|
+
lineHeight: 1.0
|
|
102
|
+
letterSpacing: 1.4px
|
|
103
|
+
textTransform: uppercase
|
|
104
|
+
nav-link:
|
|
105
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
106
|
+
fontSize: 13px
|
|
107
|
+
fontWeight: 600
|
|
108
|
+
lineHeight: 1.4
|
|
109
|
+
letterSpacing: 0.65px
|
|
110
|
+
textTransform: uppercase
|
|
111
|
+
number-display:
|
|
112
|
+
fontFamily: "'FerrariSans', sans-serif"
|
|
113
|
+
fontSize: 80px
|
|
114
|
+
fontWeight: 700
|
|
115
|
+
lineHeight: 1.0
|
|
116
|
+
letterSpacing: -1.6px
|
|
117
|
+
|
|
118
|
+
rounded:
|
|
119
|
+
none: 0px
|
|
120
|
+
xs: 2px
|
|
121
|
+
sm: 4px
|
|
122
|
+
md: 6px
|
|
123
|
+
lg: 8px
|
|
124
|
+
xl: 12px
|
|
125
|
+
full: 9999px
|
|
126
|
+
|
|
127
|
+
spacing:
|
|
128
|
+
xxxs: 4px
|
|
129
|
+
xxs: 8px
|
|
130
|
+
xs: 16px
|
|
131
|
+
sm: 24px
|
|
132
|
+
md: 32px
|
|
133
|
+
lg: 48px
|
|
134
|
+
xl: 64px
|
|
135
|
+
xxl: 96px
|
|
136
|
+
super: 128px
|
|
137
|
+
|
|
138
|
+
components:
|
|
139
|
+
top-nav-on-dark:
|
|
140
|
+
backgroundColor: "{colors.canvas}"
|
|
141
|
+
textColor: "{colors.ink}"
|
|
142
|
+
typography: "{typography.nav-link}"
|
|
143
|
+
height: 64px
|
|
144
|
+
top-nav-on-light:
|
|
145
|
+
backgroundColor: "{colors.canvas-light}"
|
|
146
|
+
textColor: "{colors.body-on-light}"
|
|
147
|
+
typography: "{typography.nav-link}"
|
|
148
|
+
height: 64px
|
|
149
|
+
button-primary:
|
|
150
|
+
backgroundColor: "{colors.primary}"
|
|
151
|
+
textColor: "{colors.on-primary}"
|
|
152
|
+
typography: "{typography.button}"
|
|
153
|
+
rounded: "{rounded.none}"
|
|
154
|
+
padding: 14px 32px
|
|
155
|
+
height: 48px
|
|
156
|
+
button-primary-active:
|
|
157
|
+
backgroundColor: "{colors.primary-active}"
|
|
158
|
+
textColor: "{colors.on-primary}"
|
|
159
|
+
rounded: "{rounded.none}"
|
|
160
|
+
button-outline-on-dark:
|
|
161
|
+
backgroundColor: transparent
|
|
162
|
+
textColor: "{colors.ink}"
|
|
163
|
+
typography: "{typography.button}"
|
|
164
|
+
rounded: "{rounded.none}"
|
|
165
|
+
padding: 13px 31px
|
|
166
|
+
height: 48px
|
|
167
|
+
button-outline-on-light:
|
|
168
|
+
backgroundColor: transparent
|
|
169
|
+
textColor: "{colors.body-on-light}"
|
|
170
|
+
typography: "{typography.button}"
|
|
171
|
+
rounded: "{rounded.none}"
|
|
172
|
+
padding: 13px 31px
|
|
173
|
+
height: 48px
|
|
174
|
+
button-tertiary-text:
|
|
175
|
+
backgroundColor: transparent
|
|
176
|
+
textColor: "{colors.ink}"
|
|
177
|
+
typography: "{typography.button}"
|
|
178
|
+
hero-band-cinema:
|
|
179
|
+
backgroundColor: "{colors.canvas}"
|
|
180
|
+
textColor: "{colors.ink}"
|
|
181
|
+
typography: "{typography.display-mega}"
|
|
182
|
+
padding: 0
|
|
183
|
+
hero-band-light:
|
|
184
|
+
backgroundColor: "{colors.canvas-light}"
|
|
185
|
+
textColor: "{colors.body-on-light}"
|
|
186
|
+
typography: "{typography.display-xl}"
|
|
187
|
+
padding: 96px
|
|
188
|
+
feature-card-photo:
|
|
189
|
+
backgroundColor: "{colors.canvas}"
|
|
190
|
+
textColor: "{colors.ink}"
|
|
191
|
+
typography: "{typography.title-md}"
|
|
192
|
+
rounded: "{rounded.none}"
|
|
193
|
+
padding: 0
|
|
194
|
+
feature-card-light:
|
|
195
|
+
backgroundColor: "{colors.canvas-light}"
|
|
196
|
+
textColor: "{colors.body-on-light}"
|
|
197
|
+
typography: "{typography.title-md}"
|
|
198
|
+
rounded: "{rounded.none}"
|
|
199
|
+
padding: 32px
|
|
200
|
+
livery-band:
|
|
201
|
+
backgroundColor: "{colors.primary}"
|
|
202
|
+
textColor: "{colors.ink}"
|
|
203
|
+
typography: "{typography.display-lg}"
|
|
204
|
+
padding: 96px
|
|
205
|
+
preowned-listing-card:
|
|
206
|
+
backgroundColor: "{colors.canvas-light}"
|
|
207
|
+
textColor: "{colors.body-on-light}"
|
|
208
|
+
typography: "{typography.body-md}"
|
|
209
|
+
rounded: "{rounded.none}"
|
|
210
|
+
padding: 24px
|
|
211
|
+
spec-cell:
|
|
212
|
+
backgroundColor: transparent
|
|
213
|
+
textColor: "{colors.ink}"
|
|
214
|
+
typography: "{typography.number-display}"
|
|
215
|
+
padding: 24px 0
|
|
216
|
+
race-position-cell:
|
|
217
|
+
backgroundColor: transparent
|
|
218
|
+
textColor: "{colors.primary}"
|
|
219
|
+
typography: "{typography.number-display}"
|
|
220
|
+
race-calendar-row:
|
|
221
|
+
backgroundColor: transparent
|
|
222
|
+
textColor: "{colors.ink}"
|
|
223
|
+
typography: "{typography.body-md}"
|
|
224
|
+
padding: 16px 0
|
|
225
|
+
driver-card:
|
|
226
|
+
backgroundColor: "{colors.canvas-elevated}"
|
|
227
|
+
textColor: "{colors.ink}"
|
|
228
|
+
typography: "{typography.title-md}"
|
|
229
|
+
rounded: "{rounded.none}"
|
|
230
|
+
padding: 24px
|
|
231
|
+
text-input-on-dark:
|
|
232
|
+
backgroundColor: "{colors.canvas}"
|
|
233
|
+
textColor: "{colors.ink}"
|
|
234
|
+
typography: "{typography.body-md}"
|
|
235
|
+
rounded: "{rounded.sm}"
|
|
236
|
+
padding: 14px 16px
|
|
237
|
+
height: 48px
|
|
238
|
+
text-input-on-light:
|
|
239
|
+
backgroundColor: "{colors.canvas-light}"
|
|
240
|
+
textColor: "{colors.body-on-light}"
|
|
241
|
+
typography: "{typography.body-md}"
|
|
242
|
+
rounded: "{rounded.sm}"
|
|
243
|
+
padding: 14px 16px
|
|
244
|
+
height: 48px
|
|
245
|
+
badge-pill:
|
|
246
|
+
backgroundColor: "{colors.canvas-elevated}"
|
|
247
|
+
textColor: "{colors.ink}"
|
|
248
|
+
typography: "{typography.caption-uppercase}"
|
|
249
|
+
rounded: "{rounded.full}"
|
|
250
|
+
padding: 4px 12px
|
|
251
|
+
cta-band-dark:
|
|
252
|
+
backgroundColor: "{colors.canvas}"
|
|
253
|
+
textColor: "{colors.ink}"
|
|
254
|
+
typography: "{typography.display-lg}"
|
|
255
|
+
padding: 96px
|
|
256
|
+
newsletter-input-band:
|
|
257
|
+
backgroundColor: "{colors.canvas-elevated}"
|
|
258
|
+
textColor: "{colors.ink}"
|
|
259
|
+
typography: "{typography.body-md}"
|
|
260
|
+
rounded: "{rounded.sm}"
|
|
261
|
+
padding: 32px
|
|
262
|
+
footer-dark:
|
|
263
|
+
backgroundColor: "{colors.canvas}"
|
|
264
|
+
textColor: "{colors.body}"
|
|
265
|
+
typography: "{typography.body-sm}"
|
|
266
|
+
padding: 64px 48px
|
|
267
|
+
footer-link:
|
|
268
|
+
backgroundColor: transparent
|
|
269
|
+
textColor: "{colors.body}"
|
|
270
|
+
typography: "{typography.body-sm}"
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Overview
|
|
274
|
+
|
|
275
|
+
Ferrari's marketing site reads as cinematic editorial \u2014 closer to a luxury-magazine spread than a typical car-OEM site. The base canvas is **near-black** (\`{colors.canvas}\` \u2014 #181818) holding pure white display type; white-canvas bands appear only inside specific editorial contexts (preowned listings, pricing tables, dealer surfaces). The single brand voltage is **Rosso Corsa** (\`{colors.primary}\` \u2014 #da291c), the iconic Ferrari racing red, used scarcely on primary CTAs, the Cavallino mark, and Formula 1 race-position highlights.
|
|
276
|
+
|
|
277
|
+
Type runs **FerrariSans** as the single sans family at modest weights \u2014 display 500, body 400. CTA labels render in uppercase with generous tracking (1.1-1.4px). The brand never uses bold display copy.
|
|
278
|
+
|
|
279
|
+
The brand's strongest visual signature is the **full-bleed cinematic hero photograph** \u2014 top-of-page imagery shows car photography, model details, or trackside livery without any chrome competing with it. Headlines float over the bottom of the photo or sit in a tight band beneath. Spacing follows the explicit 8px token ladder: \`xxxs\` 4 / \`xxs\` 8 / \`xs\` 16 / \`sm\` 24 / \`md\` 32 / \`lg\` 48 / \`xl\` 64 / \`xxl\` 96 / \`super\` 128.
|
|
280
|
+
|
|
281
|
+
**Key Characteristics:**
|
|
282
|
+
- Single accent: \`{colors.primary}\` (Rosso Corsa #da291c) for primary CTAs, the Cavallino, F1 race-position highlights. Used scarcely.
|
|
283
|
+
- Near-black canvas (#181818) \u2014 never pure black. White-canvas bands only inside editorial contexts.
|
|
284
|
+
- Single sans family: FerrariSans across every text role.
|
|
285
|
+
- Display weight stays at 500 \u2014 never bold.
|
|
286
|
+
- CTA labels render uppercase with 1.4px tracking.
|
|
287
|
+
- Sharp \`{rounded.none}\` (0px) corners on every CTA, card, and band \u2014 luxury-automotive precision.
|
|
288
|
+
- Full-bleed cinematic hero photography is the page chrome.
|
|
289
|
+
- Explicit 8px spacing token ladder with named scale (xxxs through super).
|
|
290
|
+
- Hairlines + photographic depth \u2014 no drop shadow tiers.
|
|
291
|
+
|
|
292
|
+
## Colors
|
|
293
|
+
|
|
294
|
+
### Brand & Accent
|
|
295
|
+
- **Rosso Corsa** (\`{colors.primary}\` \u2014 #da291c): The iconic Ferrari racing red. Primary CTA fill, Cavallino mark, F1 driver-position highlights. Used scarcely.
|
|
296
|
+
- **Rosso Corsa Active** (\`{colors.primary-active}\` \u2014 #b01e0a): Press state.
|
|
297
|
+
- **Rosso Corsa Hover-darker** (\`{colors.primary-hover}\` \u2014 #9d2211): Documented for completeness; per the no-hover policy this is not used in preview HTML.
|
|
298
|
+
- **Hypersail Yellow** (\`{colors.accent-yellow-hypersail}\` \u2014 #fff200) + **Yellow** (\`{colors.accent-yellow}\` \u2014 #f6e500): Sub-brand accents reserved for the Hypersail sailing program and the global focus-ring color. Not part of the main automotive palette.
|
|
299
|
+
|
|
300
|
+
### Surface
|
|
301
|
+
- **Canvas** (\`{colors.canvas}\` \u2014 #181818): Near-black page floor \u2014 never pure black, slight warmth.
|
|
302
|
+
- **Canvas Elevated** (\`{colors.canvas-elevated}\` \u2014 #303030): Cards and panels on dark canvas.
|
|
303
|
+
- **Canvas Light** (\`{colors.canvas-light}\` \u2014 #ffffff): White editorial bands (preowned listings, pricing).
|
|
304
|
+
- **Surface Card** (\`{colors.surface-card}\` \u2014 #303030): Same as canvas-elevated \u2014 driver cards, livery photo plates.
|
|
305
|
+
- **Surface Soft Light** (\`{colors.surface-soft-light}\` \u2014 #f7f7f7): Light editorial alternating band.
|
|
306
|
+
- **Surface Strong Light** (\`{colors.surface-strong-light}\` \u2014 #ebebeb): Light-canvas dividers, badges.
|
|
307
|
+
|
|
308
|
+
### Hairlines
|
|
309
|
+
- **Hairline** (\`{colors.hairline}\` \u2014 #303030): 1px divider on dark \u2014 same hex as \`{colors.canvas-elevated}\`.
|
|
310
|
+
- **Hairline On Light** (\`{colors.hairline-on-light}\` \u2014 #d2d2d2): 1px divider on light bands.
|
|
311
|
+
- **Hairline Soft** (\`{colors.hairline-soft}\` \u2014 #ebebeb): Lighter divider.
|
|
312
|
+
|
|
313
|
+
### Text
|
|
314
|
+
- **Ink** (\`{colors.ink}\` \u2014 #ffffff): Display, body emphasis on dark.
|
|
315
|
+
- **Body** (\`{colors.body}\` \u2014 #969696): Default running-text on dark.
|
|
316
|
+
- **Body Strong** (\`{colors.body-strong}\` \u2014 #ffffff): Same as ink.
|
|
317
|
+
- **Body On Light** (\`{colors.body-on-light}\` \u2014 #181818): Default text on light bands.
|
|
318
|
+
- **Muted** (\`{colors.muted}\` \u2014 #666666): Sub-titles, captions on dark.
|
|
319
|
+
- **Muted Soft** (\`{colors.muted-soft}\` \u2014 #8f8f8f): Disabled link text.
|
|
320
|
+
- **On Primary** (\`{colors.on-primary}\` \u2014 #ffffff): White text on Rosso Corsa.
|
|
321
|
+
|
|
322
|
+
### Semantic
|
|
323
|
+
- **Info** (\`{colors.semantic-info}\` \u2014 #4c98b9): Info badges, callout backgrounds.
|
|
324
|
+
- **Success** (\`{colors.semantic-success}\` \u2014 #03904a): Confirmation.
|
|
325
|
+
- **Warning** (\`{colors.semantic-warning}\` \u2014 #f13a2c): Validation warnings.
|
|
326
|
+
|
|
327
|
+
## Typography
|
|
328
|
+
|
|
329
|
+
### Font Family
|
|
330
|
+
**FerrariSans** is the licensed single sans family across every text role. Fallback: \`-apple-system, system-ui, sans-serif\`. No display/body family split.
|
|
331
|
+
|
|
332
|
+
### Hierarchy
|
|
333
|
+
|
|
334
|
+
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|
|
335
|
+
|---|---|---|---|---|---|
|
|
336
|
+
| \`{typography.display-mega}\` | 80px | 500 | 1.05 | -1.6px | Homepage hero h1 |
|
|
337
|
+
| \`{typography.display-xl}\` | 56px | 500 | 1.1 | -1.12px | Subsidiary heroes |
|
|
338
|
+
| \`{typography.display-lg}\` | 36px | 500 | 1.2 | -0.36px | Section heads, livery band |
|
|
339
|
+
| \`{typography.display-md}\` | 26px | 500 | 1.5 | 0.195px | Sub-section heads |
|
|
340
|
+
| \`{typography.title-md}\` | 18px | 700 | 1.2 | 0 | Component titles |
|
|
341
|
+
| \`{typography.title-sm}\` | 16px | 500 | 1.4 | 0.08px | List labels |
|
|
342
|
+
| \`{typography.body-md}\` | 14px | 400 | 1.5 | 0 | Default body |
|
|
343
|
+
| \`{typography.body-sm}\` | 13px | 400 | 1.5 | 0 | Footer body |
|
|
344
|
+
| \`{typography.caption}\` | 12px | 400 | 1.4 | 0 | Photo captions |
|
|
345
|
+
| \`{typography.caption-uppercase}\` | 11px | 600 | 1.4 | 1.1px | Section labels, badges |
|
|
346
|
+
| \`{typography.button}\` | 14px | 700 | 1.0 | 1.4px (uppercase) | CTA pill labels |
|
|
347
|
+
| \`{typography.nav-link}\` | 13px | 600 | 1.4 | 0.65px (uppercase) | Top-nav menu items |
|
|
348
|
+
| \`{typography.number-display}\` | 80px | 700 | 1.0 | -1.6px | Race position highlights, spec values |
|
|
349
|
+
|
|
350
|
+
### Principles
|
|
351
|
+
- **Display weight stays at 500.** Editorial confidence, not bombastic. The cinematic photography is doing the visual heavy-lifting \u2014 type doesn't need to compete.
|
|
352
|
+
- **CTA labels are uppercase with 1.4px tracking.** Luxury-precision feel.
|
|
353
|
+
- **Nav labels are uppercase with 0.65px tracking.** Consistent with CTA voice.
|
|
354
|
+
- **Negative letter-spacing on display only.** -0.36px to -1.6px on display sizes; body stays at 0.
|
|
355
|
+
|
|
356
|
+
### Note on Font Substitutes
|
|
357
|
+
FerrariSans is licensed. Open-source substitute: **Inter** at weight 500 with letter-spacing -1%, or **S\xF6hne** for closer humanist proportions.
|
|
358
|
+
|
|
359
|
+
## Layout
|
|
360
|
+
|
|
361
|
+
### Spacing System
|
|
362
|
+
- **Base unit:** 4px.
|
|
363
|
+
- **Tokens:** \`{spacing.xxxs}\` 4px \xB7 \`{spacing.xxs}\` 8px \xB7 \`{spacing.xs}\` 16px \xB7 \`{spacing.sm}\` 24px \xB7 \`{spacing.md}\` 32px \xB7 \`{spacing.lg}\` 48px \xB7 \`{spacing.xl}\` 64px \xB7 \`{spacing.xxl}\` 96px \xB7 \`{spacing.super}\` 128px.
|
|
364
|
+
- **Section padding:** \`{spacing.xxl}\` (96px) for major bands; \`{spacing.super}\` (128px) reserved for hero band depth.
|
|
365
|
+
|
|
366
|
+
### Grid & Container
|
|
367
|
+
- Max content width: ~1280px on editorial bands. Hero photography goes full-bleed.
|
|
368
|
+
- Editorial body: 12-column grid.
|
|
369
|
+
- Feature card grids: 2-up at desktop for hero splits, 3-up for benefit grids, 4-up for preowned listing tiles.
|
|
370
|
+
- Footer: 5-column at desktop.
|
|
371
|
+
|
|
372
|
+
### Whitespace Philosophy
|
|
373
|
+
Generous editorial pacing. Cinematic hero photography occupies generous viewport real-estate; body sections sit in tighter editorial layouts beneath. The canvas-light editorial bands (preowned, pricing) carry tighter density than the dark cinema bands.
|
|
374
|
+
|
|
375
|
+
## Elevation & Depth
|
|
376
|
+
|
|
377
|
+
The system uses **photographic depth + brightness-step** elevation. No drop shadows except a single soft-small \`{shadow.small}\` documented in extracted tokens.
|
|
378
|
+
|
|
379
|
+
| Level | Treatment | Use |
|
|
380
|
+
|---|---|---|
|
|
381
|
+
| Flat (canvas) | \`{colors.canvas}\` (#181818) | Body bands, footer |
|
|
382
|
+
| Card | \`{colors.canvas-elevated}\` (#303030) | Driver cards, livery plates |
|
|
383
|
+
| Light band | \`{colors.canvas-light}\` (#ffffff) | Preowned listings, pricing |
|
|
384
|
+
| Hairline border | 1px \`{colors.hairline}\` or \`{colors.hairline-on-light}\` | Card outlines, dividers |
|
|
385
|
+
| Soft drop | \`0 4px 8px rgba(0,0,0,0.1)\` | Hovered cards (single shadow tier) |
|
|
386
|
+
| Photographic | Full-bleed cinema imagery | Hero band, livery photographs |
|
|
387
|
+
|
|
388
|
+
### Decorative Depth
|
|
389
|
+
- **Full-bleed cinema photography** is the brand's primary depth treatment.
|
|
390
|
+
- **Brand red gradient** (\`linear-gradient(180deg, #a00c01, #da291c 64%)\`): The Rosso Corsa gradient used inside accent bands and CTA hover states.
|
|
391
|
+
- **Dark grey gradient** (\`linear-gradient(180deg, #3c3c3c, #030303 64%)\`): Atmospheric darken used at section transitions.
|
|
392
|
+
|
|
393
|
+
## Shapes
|
|
394
|
+
|
|
395
|
+
### Border Radius Scale
|
|
396
|
+
|
|
397
|
+
| Token | Value | Use |
|
|
398
|
+
|---|---|---|
|
|
399
|
+
| \`{rounded.none}\` | 0px | Every CTA, card, band \u2014 dominant radius |
|
|
400
|
+
| \`{rounded.xs}\` | 2px | Tight badges (rare) |
|
|
401
|
+
| \`{rounded.sm}\` | 4px | Form inputs |
|
|
402
|
+
| \`{rounded.md}\` | 6px | Compact cards (rare) |
|
|
403
|
+
| \`{rounded.lg}\` | 8px | Mobile-only collapse cards |
|
|
404
|
+
| \`{rounded.xl}\` | 12px | Modal/dialog corners (rare) |
|
|
405
|
+
| \`{rounded.full}\` | 9999px | Avatar plates, badge pills |
|
|
406
|
+
|
|
407
|
+
The radius vocabulary is **sharp by default**. Sharp 0px corners are the brand button shape \u2014 never rounded pills. Pill geometry is reserved for badge labels only.
|
|
408
|
+
|
|
409
|
+
## Components
|
|
410
|
+
|
|
411
|
+
### Top Navigation
|
|
412
|
+
|
|
413
|
+
**\`top-nav-on-dark\`** \u2014 Default top nav on dark hero pages. Background \`{colors.canvas}\`, text \`{colors.ink}\`, height 64px. Layout: Cavallino mark left, primary horizontal menu (Models / F1 / Lifestyle / Owners / Preowned), language picker + utilities right. Menu items render uppercase with 0.65px tracking.
|
|
414
|
+
|
|
415
|
+
**\`top-nav-on-light\`** \u2014 White-canvas variant for editorial light bands.
|
|
416
|
+
|
|
417
|
+
### Buttons
|
|
418
|
+
|
|
419
|
+
**\`button-primary\`** \u2014 The signature Rosso Corsa CTA. Background \`{colors.primary}\`, text \`{colors.on-primary}\`, type \`{typography.button}\` (14px / 700 / 1.4px tracking, uppercase), padding 14px \xD7 32px, height 48px, **rounded \`{rounded.none}\` (0px \u2014 sharp corners)**.
|
|
420
|
+
|
|
421
|
+
**\`button-primary-active\`** \u2014 Press state. Background \`{colors.primary-active}\`.
|
|
422
|
+
|
|
423
|
+
**\`button-outline-on-dark\`** \u2014 Transparent with 1px white border. Background transparent, text \`{colors.ink}\`, 1px white border, same sharp 0px corners.
|
|
424
|
+
|
|
425
|
+
**\`button-outline-on-light\`** \u2014 Transparent with 1px ink border on light bands.
|
|
426
|
+
|
|
427
|
+
**\`button-tertiary-text\`** \u2014 Inline text link, uppercase tracking.
|
|
428
|
+
|
|
429
|
+
### Hero Bands
|
|
430
|
+
|
|
431
|
+
**\`hero-band-cinema\`** \u2014 Full-bleed cinematic photograph. Background \`{colors.canvas}\` underneath, but the photo fills the viewport. Display headline floats over the bottom of the photo or sits in a tight band beneath, in \`{typography.display-mega}\` (80px / 500 / -1.6px). One primary CTA + one outline CTA. Zero padding \u2014 the photo fills edge-to-edge.
|
|
432
|
+
|
|
433
|
+
**\`hero-band-light\`** \u2014 White-canvas variant for editorial bands. Background \`{colors.canvas-light}\`, text \`{colors.body-on-light}\`, padding 96px.
|
|
434
|
+
|
|
435
|
+
### Cards
|
|
436
|
+
|
|
437
|
+
**\`feature-card-photo\`** \u2014 Image-first card. Background \`{colors.canvas}\`, text \`{colors.ink}\`, rounded \`{rounded.none}\`. Image fills the top edge-to-edge; title + body sit beneath in tight typography.
|
|
438
|
+
|
|
439
|
+
**\`feature-card-light\`** \u2014 White-canvas variant. Background \`{colors.canvas-light}\`, text \`{colors.body-on-light}\`, rounded \`{rounded.none}\`, padding 32px.
|
|
440
|
+
|
|
441
|
+
**\`driver-card\`** \u2014 F1 driver portrait card. Background \`{colors.canvas-elevated}\`, text \`{colors.ink}\`, rounded \`{rounded.none}\`, padding 24px. Layout: driver portrait + name + race number + team badge.
|
|
442
|
+
|
|
443
|
+
### Editorial Surfaces
|
|
444
|
+
|
|
445
|
+
**\`livery-band\`** \u2014 A full-width Rosso Corsa accent band. Background \`{colors.primary}\`, text \`{colors.ink}\`, type \`{typography.display-lg}\`, 96px padding. Used as a standout livery callout between dark editorial bands.
|
|
446
|
+
|
|
447
|
+
**\`preowned-listing-card\`** \u2014 Used in the preowned Ferrari listing grid. Background \`{colors.canvas-light}\`, text \`{colors.body-on-light}\`, rounded \`{rounded.none}\`, padding 24px. Layout: car photo top + model name + year/mileage + price.
|
|
448
|
+
|
|
449
|
+
### Spec & Race Surfaces
|
|
450
|
+
|
|
451
|
+
**\`spec-cell\`** \u2014 Technical spec callout. Transparent background, value in \`{typography.number-display}\` (80px / 700 / -1.6px white), label below in \`{typography.caption-uppercase}\`.
|
|
452
|
+
|
|
453
|
+
**\`race-position-cell\`** \u2014 F1 driver finishing position. Same number-display geometry but text in \`{colors.primary}\` Rosso Corsa for the brand's racing identity.
|
|
454
|
+
|
|
455
|
+
**\`race-calendar-row\`** \u2014 Hairline-divided row in the F1 race calendar. Layout: date column left, race name + circuit middle, results column right.
|
|
456
|
+
|
|
457
|
+
### Forms & Tags
|
|
458
|
+
|
|
459
|
+
**\`text-input-on-dark\`** \u2014 Background \`{colors.canvas}\`, text \`{colors.ink}\`, rounded \`{rounded.sm}\` (4px), padding 14px \xD7 16px, height 48px, 1px \`{colors.hairline}\` border.
|
|
460
|
+
|
|
461
|
+
**\`text-input-on-light\`** \u2014 White-canvas variant.
|
|
462
|
+
|
|
463
|
+
**\`badge-pill\`** \u2014 Small uppercase pill. Background \`{colors.canvas-elevated}\`, text \`{colors.ink}\`, type \`{typography.caption-uppercase}\` (11px / 600 / 1.1px tracking, uppercase), rounded \`{rounded.full}\` (9999px), padding 4px \xD7 12px. The only place pill geometry is used.
|
|
464
|
+
|
|
465
|
+
### Newsletter / CTA / Footer
|
|
466
|
+
|
|
467
|
+
**\`newsletter-input-band\`** \u2014 Newsletter signup band. Background \`{colors.canvas-elevated}\`, padding 32px, rounded \`{rounded.sm}\`. Holds an inline email input + primary CTA.
|
|
468
|
+
|
|
469
|
+
**\`cta-band-dark\`** \u2014 Pre-footer band. Background \`{colors.canvas}\`, centered display headline in \`{typography.display-lg}\`, single Rosso Corsa CTA. 96px padding.
|
|
470
|
+
|
|
471
|
+
**\`footer-dark\`** \u2014 Closing dark footer. Background \`{colors.canvas}\`, text \`{colors.body}\`. 5-column link list. 64\xD748px padding.
|
|
472
|
+
|
|
473
|
+
**\`footer-link\`** \u2014 Background transparent, text \`{colors.body}\`, type \`{typography.body-sm}\`.
|
|
474
|
+
|
|
475
|
+
## Do's and Don'ts
|
|
476
|
+
|
|
477
|
+
### Do
|
|
478
|
+
- Reserve \`{colors.primary}\` (Rosso Corsa) for primary CTAs, the Cavallino mark, and F1 race-position highlights.
|
|
479
|
+
- Set every CTA at \`{rounded.none}\` (0px sharp corners) \u2014 the brand's signature precision.
|
|
480
|
+
- Render CTA labels in uppercase with 1.4px tracking via \`{typography.button}\`.
|
|
481
|
+
- Pair every hero with a full-bleed cinematic photograph \u2014 the photograph IS the depth.
|
|
482
|
+
- Use the explicit 8px spacing ladder (\`xxxs\` through \`super\`) rather than ad-hoc px values.
|
|
483
|
+
- Keep display weight at 500 \u2014 never bold.
|
|
484
|
+
|
|
485
|
+
### Don't
|
|
486
|
+
- Don't introduce a saturated brand color other than Rosso Corsa.
|
|
487
|
+
- Don't use rounded or pill CTAs \u2014 sharp 0px corners are the brand button.
|
|
488
|
+
- Don't bold display copy. The cinematic photography does the visual heavy-lifting.
|
|
489
|
+
- Don't use Hypersail yellow outside the Hypersail sailing program context.
|
|
490
|
+
- Don't use pure black canvas. The brand canvas is \`{colors.canvas}\` (#181818) \u2014 slightly warm.
|
|
491
|
+
- Don't add drop shadow tiers. Photography + brightness-step elevation carry the depth.
|
|
492
|
+
- Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA color is what appears on actual product CTAs, not on injected modals.
|
|
493
|
+
|
|
494
|
+
## Responsive Behavior
|
|
495
|
+
|
|
496
|
+
### Breakpoints
|
|
497
|
+
|
|
498
|
+
| Name | Width | Key Changes |
|
|
499
|
+
|---|---|---|
|
|
500
|
+
| Mobile | < 640px | Hero photograph crops vertically; hero h1 80\u219232px; feature card grid 1-up; nav hamburger; preowned listing 1-up. |
|
|
501
|
+
| Tablet | 640\u20131024px | Hero h1 56px; feature card grid 2-up; preowned listing 2-up. |
|
|
502
|
+
| Desktop | 1024\u20131280px | Full hero h1 80px; feature card grid 3-up; preowned listing 4-up. |
|
|
503
|
+
| Wide | > 1280px | Editorial body content caps at 1280px; hero photography continues full-bleed. |
|
|
504
|
+
|
|
505
|
+
### Touch Targets
|
|
506
|
+
- Primary CTA at 48px height \u2014 at WCAG AAA (44 \xD7 44).
|
|
507
|
+
- Nav items render uppercase with 0.65px tracking, padded for an effective 48px tap area.
|
|
508
|
+
|
|
509
|
+
### Collapsing Strategy
|
|
510
|
+
- Top nav switches to hamburger below 768px.
|
|
511
|
+
- Hero photograph reframes per breakpoint via art direction \u2014 desktop carries wide cinematic; mobile crops tighter or shifts to vertical.
|
|
512
|
+
- Feature card grid: 4-up \u2192 3-up \u2192 2-up \u2192 1-up.
|
|
513
|
+
- F1 driver cards: 2-up at desktop, 1-up at mobile.
|
|
514
|
+
|
|
515
|
+
## Iteration Guide
|
|
516
|
+
|
|
517
|
+
1. Focus on a single component at a time.
|
|
518
|
+
2. CTAs default to \`{rounded.none}\` (0px sharp). Cards use \`{rounded.none}\` too. Pill is reserved for badges.
|
|
519
|
+
3. Variants live as separate entries inside \`components:\`.
|
|
520
|
+
4. Use \`{token.refs}\` everywhere \u2014 never inline hex.
|
|
521
|
+
5. Hover state never documented.
|
|
522
|
+
6. FerrariSans 500 for display, 400/700 for body. Uppercase + tracking on CTAs and nav.
|
|
523
|
+
7. Rosso Corsa stays scarce \u2014 primary CTAs, Cavallino, race-position highlights only.
|
|
524
|
+
8. Use the explicit 8px named spacing ladder.
|
|
525
|
+
|
|
526
|
+
## Known Gaps
|
|
527
|
+
|
|
528
|
+
- FerrariSans is a licensed typeface; Inter at weight 500 is the documented substitute.
|
|
529
|
+
- Animation timings (hero parallax, livery band entrance, race position counter) out of scope.
|
|
530
|
+
- In-product surfaces (preowned configurator, F1 telemetry overlays) only partially captured via marketing surfaces.
|
|
531
|
+
- Form validation states beyond focus not visible on captured surfaces.
|
|
532
|
+
- Hypersail yellow tokens are extracted but only appear in the Hypersail sailing program context \u2014 documented as scoped accents.
|
|
533
|
+
`;
|
|
534
|
+
export {
|
|
535
|
+
ferrariBrief
|
|
536
|
+
};
|
|
537
|
+
//# sourceMappingURL=ferrari.js.map
|