@hex-core/themes 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2LXEWDOF.js +68 -0
- package/dist/chunk-2LXEWDOF.js.map +1 -0
- package/dist/chunk-2SIVAJHV.js +68 -0
- package/dist/chunk-2SIVAJHV.js.map +1 -0
- package/dist/chunk-2UVSQNAF.js +68 -0
- package/dist/chunk-2UVSQNAF.js.map +1 -0
- package/dist/chunk-2XBAWSN6.js +68 -0
- package/dist/chunk-2XBAWSN6.js.map +1 -0
- package/dist/chunk-3FR2JLIS.js +68 -0
- package/dist/chunk-3FR2JLIS.js.map +1 -0
- package/dist/chunk-4AQSFP5U.js +68 -0
- package/dist/chunk-4AQSFP5U.js.map +1 -0
- package/dist/chunk-4CRJPM5Q.js +68 -0
- package/dist/chunk-4CRJPM5Q.js.map +1 -0
- package/dist/chunk-4EAEPKGB.js +68 -0
- package/dist/chunk-4EAEPKGB.js.map +1 -0
- package/dist/chunk-4JPNRIHQ.js +68 -0
- package/dist/chunk-4JPNRIHQ.js.map +1 -0
- package/dist/chunk-4WCDNNON.js +68 -0
- package/dist/chunk-4WCDNNON.js.map +1 -0
- package/dist/chunk-4XQKUS33.js +68 -0
- package/dist/chunk-4XQKUS33.js.map +1 -0
- package/dist/chunk-5FW5RHIU.js +68 -0
- package/dist/chunk-5FW5RHIU.js.map +1 -0
- package/dist/chunk-64G56KOZ.js +68 -0
- package/dist/chunk-64G56KOZ.js.map +1 -0
- package/dist/chunk-6UDYRVS2.js +68 -0
- package/dist/chunk-6UDYRVS2.js.map +1 -0
- package/dist/chunk-75HM5DPO.js +68 -0
- package/dist/chunk-75HM5DPO.js.map +1 -0
- package/dist/chunk-7VETPCK7.js +68 -0
- package/dist/chunk-7VETPCK7.js.map +1 -0
- package/dist/chunk-BMH72AOR.js +68 -0
- package/dist/chunk-BMH72AOR.js.map +1 -0
- package/dist/chunk-BTDSHLZE.js +68 -0
- package/dist/chunk-BTDSHLZE.js.map +1 -0
- package/dist/chunk-BTKVLLPL.js +68 -0
- package/dist/chunk-BTKVLLPL.js.map +1 -0
- package/dist/chunk-CZDOW4UT.js +68 -0
- package/dist/chunk-CZDOW4UT.js.map +1 -0
- package/dist/chunk-DHT4VCQG.js +68 -0
- package/dist/chunk-DHT4VCQG.js.map +1 -0
- package/dist/chunk-DM6DAYEM.js +68 -0
- package/dist/chunk-DM6DAYEM.js.map +1 -0
- package/dist/chunk-DN2M4ZI5.js +68 -0
- package/dist/chunk-DN2M4ZI5.js.map +1 -0
- package/dist/chunk-DOUW4N6H.js +68 -0
- package/dist/chunk-DOUW4N6H.js.map +1 -0
- package/dist/chunk-DTZPLDZ5.js +68 -0
- package/dist/chunk-DTZPLDZ5.js.map +1 -0
- package/dist/chunk-E6MRSOPD.js +68 -0
- package/dist/chunk-E6MRSOPD.js.map +1 -0
- package/dist/chunk-FABPV7PL.js +68 -0
- package/dist/chunk-FABPV7PL.js.map +1 -0
- package/dist/chunk-FM67TP64.js +68 -0
- package/dist/chunk-FM67TP64.js.map +1 -0
- package/dist/chunk-GFABZZVH.js +68 -0
- package/dist/chunk-GFABZZVH.js.map +1 -0
- package/dist/chunk-HTLRH4MJ.js +68 -0
- package/dist/chunk-HTLRH4MJ.js.map +1 -0
- package/dist/chunk-IDBHZ2PV.js +68 -0
- package/dist/chunk-IDBHZ2PV.js.map +1 -0
- package/dist/chunk-J54YKOPC.js +68 -0
- package/dist/chunk-J54YKOPC.js.map +1 -0
- package/dist/chunk-JN5K3V7M.js +68 -0
- package/dist/chunk-JN5K3V7M.js.map +1 -0
- package/dist/chunk-JU4TDT2G.js +528 -0
- package/dist/chunk-JU4TDT2G.js.map +1 -0
- package/dist/chunk-JWBGRQJI.js +68 -0
- package/dist/chunk-JWBGRQJI.js.map +1 -0
- package/dist/chunk-KFVFORR5.js +68 -0
- package/dist/chunk-KFVFORR5.js.map +1 -0
- package/dist/chunk-LILQL4KG.js +68 -0
- package/dist/chunk-LILQL4KG.js.map +1 -0
- package/dist/chunk-M7JXKTNY.js +68 -0
- package/dist/chunk-M7JXKTNY.js.map +1 -0
- package/dist/chunk-NM567GJA.js +68 -0
- package/dist/chunk-NM567GJA.js.map +1 -0
- package/dist/chunk-NMWHITVJ.js +68 -0
- package/dist/chunk-NMWHITVJ.js.map +1 -0
- package/dist/chunk-NSWZ6DXW.js +68 -0
- package/dist/chunk-NSWZ6DXW.js.map +1 -0
- package/dist/chunk-NXSLVEML.js +68 -0
- package/dist/chunk-NXSLVEML.js.map +1 -0
- package/dist/chunk-NZX4NVB7.js +68 -0
- package/dist/chunk-NZX4NVB7.js.map +1 -0
- package/dist/chunk-OAB7GNRG.js +68 -0
- package/dist/chunk-OAB7GNRG.js.map +1 -0
- package/dist/chunk-P4I6HJZA.js +68 -0
- package/dist/chunk-P4I6HJZA.js.map +1 -0
- package/dist/chunk-PC3NQBOZ.js +68 -0
- package/dist/chunk-PC3NQBOZ.js.map +1 -0
- package/dist/chunk-PE3RNDVR.js +68 -0
- package/dist/chunk-PE3RNDVR.js.map +1 -0
- package/dist/chunk-Q2Q3577E.js +68 -0
- package/dist/chunk-Q2Q3577E.js.map +1 -0
- package/dist/chunk-QEMINSRG.js +68 -0
- package/dist/chunk-QEMINSRG.js.map +1 -0
- package/dist/chunk-RGBZ3ZXX.js +68 -0
- package/dist/chunk-RGBZ3ZXX.js.map +1 -0
- package/dist/chunk-RWSUTY67.js +68 -0
- package/dist/chunk-RWSUTY67.js.map +1 -0
- package/dist/chunk-SB3JKBJD.js +68 -0
- package/dist/chunk-SB3JKBJD.js.map +1 -0
- package/dist/chunk-TAHSZ55U.js +68 -0
- package/dist/chunk-TAHSZ55U.js.map +1 -0
- package/dist/chunk-TCR3NGBV.js +68 -0
- package/dist/chunk-TCR3NGBV.js.map +1 -0
- package/dist/chunk-TKPBFOEN.js +68 -0
- package/dist/chunk-TKPBFOEN.js.map +1 -0
- package/dist/chunk-TN6KDVAG.js +68 -0
- package/dist/chunk-TN6KDVAG.js.map +1 -0
- package/dist/chunk-UIMBGFLW.js +68 -0
- package/dist/chunk-UIMBGFLW.js.map +1 -0
- package/dist/chunk-UL4F5NTU.js +68 -0
- package/dist/chunk-UL4F5NTU.js.map +1 -0
- package/dist/chunk-UWDKL3IR.js +68 -0
- package/dist/chunk-UWDKL3IR.js.map +1 -0
- package/dist/chunk-VNYLNLIH.js +68 -0
- package/dist/chunk-VNYLNLIH.js.map +1 -0
- package/dist/chunk-W2VEHVDK.js +68 -0
- package/dist/chunk-W2VEHVDK.js.map +1 -0
- package/dist/chunk-WMYSBUH5.js +68 -0
- package/dist/chunk-WMYSBUH5.js.map +1 -0
- package/dist/chunk-WNTQIMRE.js +68 -0
- package/dist/chunk-WNTQIMRE.js.map +1 -0
- package/dist/chunk-WY72KJJW.js +68 -0
- package/dist/chunk-WY72KJJW.js.map +1 -0
- package/dist/chunk-WYTM3WHD.js +68 -0
- package/dist/chunk-WYTM3WHD.js.map +1 -0
- package/dist/chunk-XGQWOJRB.js +68 -0
- package/dist/chunk-XGQWOJRB.js.map +1 -0
- package/dist/chunk-YZKPRCKP.js +68 -0
- package/dist/chunk-YZKPRCKP.js.map +1 -0
- package/dist/chunk-ZEPFA7ZT.js +68 -0
- package/dist/chunk-ZEPFA7ZT.js.map +1 -0
- package/dist/chunk-ZIMELPXX.js +68 -0
- package/dist/chunk-ZIMELPXX.js.map +1 -0
- package/dist/chunk-ZMAIAAT6.js +68 -0
- package/dist/chunk-ZMAIAAT6.js.map +1 -0
- package/dist/chunk-ZOCDSEOF.js +68 -0
- package/dist/chunk-ZOCDSEOF.js.map +1 -0
- package/dist/chunk-ZSUTMUVB.js +68 -0
- package/dist/chunk-ZSUTMUVB.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 +15 -3
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const coinbaseBrief = "---\nversion: alpha\nname: Coinbase\ndescription: An institutional-grade crypto exchange whose marketing surfaces read like a quietly-confident financial-services brand. The base canvas is pure white; Coinbase Blue (`#0052ff`) is the single brand voltage, used scarcely on primary CTAs, signature glyphs, and inline accent moments. Type runs Coinbase's licensed CoinbaseDisplay (display) and CoinbaseSans (body) at modest weights \u2014 display sits at weight 400 not 700, signaling editorial calm rather than fintech-bombastic. Page rhythm rotates between bright white sections, soft gray elevation bands, and full-bleed dark editorial heroes (`#0a0b0d`) carrying product-ui mockup cards. Iconography is geometric and minimal; depth comes from card-on-card layering, never decorative shadows.\n\ncolors:\n primary: \"#0052ff\"\n primary-active: \"#003ecc\"\n primary-disabled: \"#a8b8cc\"\n ink: \"#0a0b0d\"\n body: \"#5b616e\"\n body-strong: \"#0a0b0d\"\n muted: \"#7c828a\"\n muted-soft: \"#a8acb3\"\n hairline: \"#dee1e6\"\n hairline-soft: \"#eef0f3\"\n canvas: \"#ffffff\"\n surface-soft: \"#f7f7f7\"\n surface-card: \"#ffffff\"\n surface-strong: \"#eef0f3\"\n surface-dark: \"#0a0b0d\"\n surface-dark-elevated: \"#16181c\"\n on-primary: \"#ffffff\"\n on-dark: \"#ffffff\"\n on-dark-soft: \"#a8acb3\"\n semantic-up: \"#05b169\"\n semantic-down: \"#cf202f\"\n accent-yellow: \"#f4b000\"\n\ntypography:\n display-mega:\n fontFamily: \"'Coinbase Display', -apple-system, system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif\"\n fontSize: 80px\n fontWeight: 400\n lineHeight: 1.0\n letterSpacing: -2px\n display-xl:\n fontFamily: \"'Coinbase Display', sans-serif\"\n fontSize: 64px\n fontWeight: 400\n lineHeight: 1.0\n letterSpacing: -1.6px\n display-lg:\n fontFamily: \"'Coinbase Display', sans-serif\"\n fontSize: 52px\n fontWeight: 400\n lineHeight: 1.0\n letterSpacing: -1.3px\n display-md:\n fontFamily: \"'Coinbase Display', sans-serif\"\n fontSize: 44px\n fontWeight: 400\n lineHeight: 1.09\n letterSpacing: -1px\n display-sm:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 36px\n fontWeight: 400\n lineHeight: 1.11\n letterSpacing: -0.5px\n title-lg:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 32px\n fontWeight: 400\n lineHeight: 1.13\n letterSpacing: -0.4px\n title-md:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 18px\n fontWeight: 600\n lineHeight: 1.33\n letterSpacing: 0\n title-sm:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 16px\n fontWeight: 600\n lineHeight: 1.25\n letterSpacing: 0\n body-md:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 16px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n body-strong:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 16px\n fontWeight: 700\n lineHeight: 1.5\n letterSpacing: 0\n body-sm:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 14px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n caption:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 13px\n fontWeight: 400\n lineHeight: 1.5\n letterSpacing: 0\n caption-strong:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 12px\n fontWeight: 600\n lineHeight: 1.5\n letterSpacing: 0\n number-display:\n fontFamily: \"'Coinbase Mono', 'Coinbase Sans', monospace\"\n fontSize: 18px\n fontWeight: 500\n lineHeight: 1.4\n letterSpacing: 0\n button:\n fontFamily: \"'Coinbase Sans', sans-serif\"\n fontSize: 16px\n fontWeight: 600\n lineHeight: 1.15\n letterSpacing: 0\n nav-link:\n fontFamily: \"'Coinbase Sans', 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: 8px\n md: 12px\n lg: 16px\n xl: 24px\n pill: 100px\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-light:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.nav-link}\"\n height: 64px\n top-nav-on-dark:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\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.pill}\"\n padding: 12px 20px\n height: 44px\n button-primary-active:\n backgroundColor: \"{colors.primary-active}\"\n textColor: \"{colors.on-primary}\"\n rounded: \"{rounded.pill}\"\n button-primary-disabled:\n backgroundColor: \"{colors.primary-disabled}\"\n textColor: \"{colors.on-primary}\"\n rounded: \"{rounded.pill}\"\n button-secondary-light:\n backgroundColor: \"{colors.surface-strong}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.pill}\"\n padding: 12px 20px\n height: 44px\n button-secondary-dark:\n backgroundColor: \"{colors.surface-dark-elevated}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.pill}\"\n padding: 12px 20px\n height: 44px\n button-outline-on-dark:\n backgroundColor: transparent\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.pill}\"\n padding: 11px 19px\n height: 44px\n button-tertiary-text:\n backgroundColor: transparent\n textColor: \"{colors.primary}\"\n typography: \"{typography.button}\"\n button-pill-cta:\n backgroundColor: \"{colors.primary}\"\n textColor: \"{colors.on-primary}\"\n typography: \"{typography.button}\"\n rounded: \"{rounded.pill}\"\n padding: 16px 32px\n height: 56px\n hero-band-dark:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-mega}\"\n padding: 96px\n hero-band-light:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.display-mega}\"\n padding: 96px\n product-ui-card-dark:\n backgroundColor: \"{colors.surface-dark-elevated}\"\n textColor: \"{colors.on-dark}\"\n rounded: \"{rounded.xl}\"\n padding: 32px\n product-ui-card-light:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n rounded: \"{rounded.xl}\"\n padding: 32px\n feature-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.title-md}\"\n rounded: \"{rounded.xl}\"\n padding: 32px\n asset-row:\n backgroundColor: transparent\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n padding: 16px 0\n price-up-cell:\n backgroundColor: transparent\n textColor: \"{colors.semantic-up}\"\n typography: \"{typography.number-display}\"\n price-down-cell:\n backgroundColor: transparent\n textColor: \"{colors.semantic-down}\"\n typography: \"{typography.number-display}\"\n pricing-tier-card:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.xl}\"\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.xl}\"\n padding: 32px\n cta-band-dark:\n backgroundColor: \"{colors.surface-dark}\"\n textColor: \"{colors.on-dark}\"\n typography: \"{typography.display-lg}\"\n padding: 96px\n text-input:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.md}\"\n padding: 14px 16px\n height: 48px\n search-input-pill:\n backgroundColor: \"{colors.surface-strong}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.body-md}\"\n rounded: \"{rounded.pill}\"\n padding: 12px 20px\n height: 44px\n badge-pill:\n backgroundColor: \"{colors.surface-strong}\"\n textColor: \"{colors.ink}\"\n typography: \"{typography.caption-strong}\"\n rounded: \"{rounded.pill}\"\n padding: 4px 12px\n asset-icon-circular:\n backgroundColor: \"{colors.surface-strong}\"\n rounded: \"{rounded.full}\"\n size: 32px\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 legal-band:\n backgroundColor: \"{colors.canvas}\"\n textColor: \"{colors.muted}\"\n typography: \"{typography.caption}\"\n---\n\n## Overview\n\nCoinbase reads like an institutional financial brand that happens to trade crypto \u2014 the marketing surfaces are quiet, white-canvas, editorially-spaced, and almost monochromatic. The single brand voltage is **Coinbase Blue** (`{colors.primary}` \u2014 #0052ff), used scarcely: every primary CTA pill, the brand wordmark, and inline emphasis links. Beyond that one blue, the system is white canvas + ink + soft gray elevation bands + a deep near-black editorial canvas (`{colors.surface-dark}` \u2014 #0a0b0d) for full-bleed product-mockup heroes.\n\nType pairs **CoinbaseDisplay** for hero headlines with **CoinbaseSans** for body, captions, and navigation. Display sits at **weight 400** \u2014 not the 700+ typical of trading platforms. The choice signals editorial calm and institutional trust rather than fintech urgency.\n\nThe page rhythm rotates three modes: bright white editorial sections, soft-gray elevation bands, and **full-bleed dark editorial heroes** carrying layered product-UI mockup cards. The dark hero with floating dashboard mockups is the single most distinctive component.\n\n**Key Characteristics:**\n- Single accent color: `{colors.primary}` (#0052ff Coinbase Blue) carries every primary CTA, wordmark, and inline brand link. Used scarcely.\n- Modest display weights \u2014 CoinbaseDisplay at weight 400, never 700+.\n- Editorial pill geometry: every CTA is `{rounded.pill}` (100px), every asset glyph is `{rounded.full}`, every card is `{rounded.xl}` (24px). Sharp corners absent.\n- Full-bleed dark heroes with floating product-UI cards: `{component.hero-band-dark}` plus inline `{component.product-ui-card-dark}` mockups is the brand's strongest signature pattern.\n- Trading semantics: `{colors.semantic-up}` (#05b169) and `{colors.semantic-down}` (#cf202f) \u2014 text color only, never background fills.\n- 96px section rhythm \u2014 generous editorial pacing.\n\n## Colors\n\n### Brand & Accent\n- **Coinbase Blue** (`{colors.primary}` \u2014 #0052ff): The single brand color. Every primary CTA pill, the Coinbase wordmark, and inline brand links.\n- **Coinbase Blue Active** (`{colors.primary-active}` \u2014 #003ecc): Press-state darken on the primary pill.\n- **Coinbase Blue Disabled** (`{colors.primary-disabled}` \u2014 #a8b8cc): Faded-blue tint for disabled CTAs.\n- **Accent Yellow** (`{colors.accent-yellow}` \u2014 #f4b000): A small sub-brand accent used very sparingly on Bitcoin/asset glyph fills inside feature cards. Illustrative-only, not an action color.\n\n### Surface\n- **Canvas** (`{colors.canvas}` \u2014 #ffffff): The default page floor.\n- **Surface Soft** (`{colors.surface-soft}` \u2014 #f7f7f7): Subtle alternating band surface.\n- **Surface Strong** (`{colors.surface-strong}` \u2014 #eef0f3): The light-gray fill behind secondary buttons, search pills, asset-icon plates.\n- **Surface Dark** (`{colors.surface-dark}` \u2014 #0a0b0d): Deep near-black canvas for full-bleed dark heroes, CTA bands. Same hex as `{colors.ink}` \u2014 page-floor and text-color share the value.\n- **Surface Dark Elevated** (`{colors.surface-dark-elevated}` \u2014 #16181c): One step lighter, used for floating product-UI mockup cards inside dark heroes.\n\n### Hairlines\n- **Hairline** (`{colors.hairline}` \u2014 #dee1e6): Default 1px divider on white surfaces.\n- **Hairline Soft** (`{colors.hairline-soft}` \u2014 #eef0f3): Lighter divider \u2014 same hex as `{colors.surface-strong}`.\n\n### Text\n- **Ink** (`{colors.ink}` \u2014 #0a0b0d): Display headings, primary nav, body emphasis.\n- **Body** (`{colors.body}` \u2014 #5b616e): Default running-text \u2014 slightly cool gray.\n- **Body Strong** (`{colors.body-strong}` \u2014 #0a0b0d): Same as ink, used for stronger emphasis.\n- **Muted** (`{colors.muted}` \u2014 #7c828a): Sub-titles, breadcrumbs, footer secondary.\n- **Muted Soft** (`{colors.muted-soft}` \u2014 #a8acb3): Disabled link text.\n- **On Primary** (`{colors.on-primary}` \u2014 #ffffff): White text on Coinbase Blue CTAs.\n- **On Dark** (`{colors.on-dark}` \u2014 #ffffff): White text on dark heroes.\n- **On Dark Soft** (`{colors.on-dark-soft}` \u2014 #a8acb3): Muted off-white for secondary text on dark.\n\n### Trading Semantics\n- **Semantic Up** (`{colors.semantic-up}` \u2014 #05b169): \"Price up\" green, text color only.\n- **Semantic Down** (`{colors.semantic-down}` \u2014 #cf202f): \"Price down\" red, text color only.\n\n## Typography\n\n### Font Family\nThe system runs **CoinbaseDisplay** (display headlines), **CoinbaseSans** (body, navigation, captions, buttons), **CoinbaseIcons** (icon font), and **CoinbaseMono** for tabular numerical data. Fallback stack: `-apple-system, system-ui, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif`.\n\nThe display/body split is functional: CoinbaseDisplay carries hero headlines only; CoinbaseSans carries everything else.\n\n### Hierarchy\n\n| Token | Size | Weight | Line Height | Letter Spacing | Use |\n|---|---|---|---|---|---|\n| `{typography.display-mega}` | 80px | 400 | 1.0 | -2px | Homepage hero h1 |\n| `{typography.display-xl}` | 64px | 400 | 1.0 | -1.6px | Subsidiary heroes |\n| `{typography.display-lg}` | 52px | 400 | 1.0 | -1.3px | Section heads |\n| `{typography.display-md}` | 44px | 400 | 1.09 | -1px | CTA-band headlines |\n| `{typography.display-sm}` | 36px | 400 | 1.11 | -0.5px | Sub-section heads \u2014 CoinbaseSans |\n| `{typography.title-lg}` | 32px | 400 | 1.13 | -0.4px | Card group titles |\n| `{typography.title-md}` | 18px | 600 | 1.33 | 0 | Component titles, asset row primary |\n| `{typography.title-sm}` | 16px | 600 | 1.25 | 0 | List labels |\n| `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default body |\n| `{typography.body-strong}` | 16px | 700 | 1.5 | 0 | Emphasized body |\n| `{typography.body-sm}` | 14px | 400 | 1.5 | 0 | Footer body |\n| `{typography.caption}` | 13px | 400 | 1.5 | 0 | Photo captions |\n| `{typography.caption-strong}` | 12px | 600 | 1.5 | 0 | Badge pill labels |\n| `{typography.number-display}` | 18px | 500 | 1.4 | 0 | Asset prices, percent changes \u2014 CoinbaseMono |\n| `{typography.button}` | 16px | 600 | 1.15 | 0 | Standard CTA pill |\n| `{typography.nav-link}` | 14px | 500 | 1.4 | 0 | Top-nav menu items |\n\n### Principles\n- **Display weight stays at 400.** The single most distinctive typographic choice \u2014 signals \"calm institutional brand\" rather than \"trading-platform urgency.\"\n- **Negative letter-spacing on display only.** Display uses -1px to -2px tracking; body stays at 0.\n- **CoinbaseMono on every number.** Asset prices, percent changes \u2014 anything tabular renders in CoinbaseMono.\n\n### Note on Font Substitutes\nCoinbaseDisplay, CoinbaseSans, and CoinbaseMono are licensed Coinbase typefaces.\n- **CoinbaseDisplay \u2192 Inter** at weight 400, letter-spacing -1.5%.\n- **CoinbaseSans \u2192 Inter** at weight 400/600.\n- **CoinbaseMono \u2192 JetBrains Mono** or **Geist Mono** at weight 500.\n\n## Layout\n\n### Spacing System\n- **Base unit:** 4px.\n- **Tokens:** `{spacing.xxs}` 4px \u00B7 `{spacing.xs}` 8px \u00B7 `{spacing.sm}` 12px \u00B7 `{spacing.base}` 16px \u00B7 `{spacing.md}` 20px \u00B7 `{spacing.lg}` 24px \u00B7 `{spacing.xl}` 32px \u00B7 `{spacing.xxl}` 48px \u00B7 `{spacing.section}` 96px.\n- **Section padding:** `{spacing.section}` (96px) for every major editorial band.\n- **Card internal padding:** `{spacing.xl}` (32px) for feature cards and product-UI mockups.\n\n### Grid & Container\n- **Max content width:** ~1200px centered. Hero photography full-bleed.\n- **Editorial body:** Single 12-column grid.\n- **Feature card grids:** 2-up at desktop for hero splits, 3-up for benefit grids.\n- **Footer:** 6-column link list at desktop.\n\n### Whitespace Philosophy\nGenerous editorial pacing \u2014 closer to Bloomberg or the Financial Times than to a trading dashboard. 96px between bands; cards inside bands sit 24px apart. Density lives behind login walls, not on marketing.\n\n## Elevation & Depth\n\n| Level | Treatment | Use |\n|---|---|---|\n| Flat | No shadow, no border | 80% of surfaces |\n| Hairline border | 1px `{colors.hairline}` | Feature card outlines on white |\n| Soft drop | `0 4px 12px rgba(0, 0, 0, 0.04)` | Single shadow tier \u2014 hovered cards |\n| Photographic | Full-bleed product-UI mockups | Hero depth |\n\n### Decorative Depth\n- **Layered product-UI cards inside dark heroes** is the most distinctive decorative pattern \u2014 a `{component.product-ui-card-dark}` floats above a darker base canvas, often with a second smaller card overlapping at an angle.\n- **Geometric brand illustrations** carry illustrative depth where shadows would otherwise.\n\n## Shapes\n\n### Border Radius Scale\n\n| Token | Value | Use |\n|---|---|---|\n| `{rounded.none}` | 0px | Reserved (essentially unused) |\n| `{rounded.xs}` | 4px | Inline tags |\n| `{rounded.sm}` | 8px | Compact rows |\n| `{rounded.md}` | 12px | Form inputs |\n| `{rounded.lg}` | 16px | Mid-size cards |\n| `{rounded.xl}` | 24px | Feature cards, product-UI mockups, pricing tiers |\n| `{rounded.pill}` | 100px | All CTA buttons, search pills, badges |\n| `{rounded.full}` | 9999px | Asset icon circles, avatars |\n\nPill for interactive, card-radius (24px) for containers, full circle for icons. Sharp corners absent.\n\n## Components\n\n### Top Navigation\n\n**`top-nav-light`** \u2014 Default top nav on white pages. Background `{colors.canvas}`, text `{colors.ink}`, height 64px. Layout: Coinbase wordmark left, primary horizontal menu (Cryptocurrencies / Individuals / Businesses / Institutions / Developers / Company), search-icon + globe + Sign In + Sign Up CTAs right.\n\n**`top-nav-on-dark`** \u2014 Top nav over a dark hero band. Background `{colors.surface-dark}`, text `{colors.on-dark}`. Same layout.\n\n### Buttons\n\n**`button-primary`** \u2014 The signature Coinbase Blue pill. Background `{colors.primary}`, text `{colors.on-primary}`, type `{typography.button}` (16px / 600), padding 12px \u00D7 20px, height 44px, rounded `{rounded.pill}` (100px).\n\n**`button-primary-active`** \u2014 Press state. Background `{colors.primary-active}`, deeper blue.\n\n**`button-primary-disabled`** \u2014 Faded blue tint. Background `{colors.primary-disabled}`. Cursor not-allowed.\n\n**`button-secondary-light`** \u2014 Soft-gray secondary on white surfaces. Background `{colors.surface-strong}`, text `{colors.ink}`, same pill geometry.\n\n**`button-secondary-dark`** \u2014 Used on dark heroes. Background `{colors.surface-dark-elevated}`, text `{colors.on-dark}`, same pill geometry.\n\n**`button-outline-on-dark`** \u2014 Transparent pill with white outline. Background transparent, text `{colors.on-dark}`, 1px white border.\n\n**`button-tertiary-text`** \u2014 Inline text link. Background transparent, text `{colors.primary}`, type `{typography.button}`.\n\n**`button-pill-cta`** \u2014 Larger pill CTA used on the homepage hero (\"Get started\"). Same Coinbase Blue palette but with 56px height and 16px \u00D7 32px padding for a prouder stance.\n\n### Hero Bands\n\n**`hero-band-dark`** \u2014 The signature full-bleed dark hero. Background `{colors.surface-dark}`, text `{colors.on-dark}`, full-bleed layered product-UI mockup cards. Display headline left in `{typography.display-mega}` (80px / 400), subhead in `{typography.body-md}`, two CTAs.\n\n**`hero-band-light`** \u2014 White-canvas variant used on Wealth and Explore. Background `{colors.canvas}`, text `{colors.ink}`. Same skeleton, light palette.\n\n### Cards\n\n**`product-ui-card-dark`** \u2014 The floating product-UI mockup. Background `{colors.surface-dark-elevated}`, text `{colors.on-dark}`, rounded `{rounded.xl}` (24px), padding 32px. Often shown as 2-3 stacked cards at slight rotation, mimicking a layered dashboard.\n\n**`product-ui-card-light`** \u2014 Light-canvas variant used on Explore for asset cards. Background `{colors.canvas}`, text `{colors.ink}`, same geometry, 1px hairline border.\n\n**`feature-card`** \u2014 Used in 3-up and 2-up grids. Background `{colors.canvas}`, text `{colors.ink}`, type `{typography.title-md}`, rounded `{rounded.xl}`, padding 32px.\n\n### Trading Surfaces\n\n**`asset-row`** \u2014 Horizontal row in asset lists (Explore, Wealth). Background transparent, 1px hairline divider. Layout: 32px circular asset icon left, asset name + ticker, price column in `{typography.number-display}`, 24h change column with `{component.price-up-cell}` or `{component.price-down-cell}`.\n\n**`price-up-cell`** + **`price-down-cell`** \u2014 Inline price-change cells. Color only \u2014 green or red text in `{typography.number-display}`, no background fill.\n\n**`asset-icon-circular`** \u2014 Circular plate behind asset glyphs. Background `{colors.surface-strong}`, rounded `{rounded.full}`, 32px diameter.\n\n### Pricing\n\n**`pricing-tier-card`** \u2014 Standard pricing tier on Developer Platform. Background `{colors.canvas}`, rounded `{rounded.xl}`, padding 32px, 1px hairline border. Layout: tier name + price + feature checklist + CTA pill.\n\n**`pricing-tier-featured`** \u2014 The featured tier. Background `{colors.surface-dark}`, text `{colors.on-dark}`. Same skeleton, dark palette \u2014 visual inversion signals \"highlighted choice\" without colored ribbons.\n\n### Forms\n\n**`text-input`** \u2014 Standard text input. Background `{colors.canvas}`, text `{colors.ink}`, rounded `{rounded.md}` (12px), padding 14px \u00D7 16px, height 48px, 1px hairline border. On focus, border thickens to 2px Coinbase Blue.\n\n**`search-input-pill`** \u2014 Pill-shaped search bar. Background `{colors.surface-strong}`, rounded `{rounded.pill}`, padding 12px \u00D7 20px, height 44px.\n\n### Tags & Badges\n\n**`badge-pill`** \u2014 Small uppercase pill used as section labels (\"INSTITUTIONAL\", \"REGULATED\"). Background `{colors.surface-strong}`, text `{colors.ink}`, type `{typography.caption-strong}`, rounded `{rounded.pill}`.\n\n### CTA / Footer\n\n**`cta-band-dark`** \u2014 Pre-footer \"Take control of your money\" band. Background `{colors.surface-dark}`, text `{colors.on-dark}`, vertical padding 96px. Centered headline + two CTAs.\n\n**`footer-light`** \u2014 Closing white-canvas footer. Background `{colors.canvas}`, text `{colors.body}`. 6-column link list.\n\n**`footer-link`** \u2014 Individual footer link. Background transparent, text `{colors.body}`.\n\n**`legal-band`** \u2014 Bottom strip beneath footer columns. All text `{colors.muted}` at `{typography.caption}`.\n\n## Do's and Don'ts\n\n### Do\n- Reserve `{colors.primary}` (Coinbase Blue) for primary CTAs, wordmark, brand-glyph illustrations, inline accent links.\n- Set every CTA as `{rounded.pill}` (100px); every asset glyph as `{rounded.full}`.\n- Keep CoinbaseDisplay headlines at weight 400.\n- Use the dark/light band rotation as page rhythm.\n- Render every numerical value in CoinbaseMono via `{typography.number-display}`.\n- Pair every dark hero with a layered product-UI mockup card stack.\n\n### Don't\n- Don't introduce a secondary brand color. Coinbase Blue is the only action color; trading green/red are semantic-only.\n- Don't bold display copy \u2014 display sits at weight 400; bolding shifts the brand voice.\n- Don't add drop shadow tiers \u2014 system has one shadow tier.\n- Don't use sharp `{rounded.none}` (0px) on CTAs.\n- Don't mix CoinbaseDisplay and CoinbaseSans inside the same headline.\n- Don't use trading green/red as a button background.\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 h1 80\u219240px; feature card grid 1-up; asset row stacks; nav collapses to hamburger; layered product-UI cards collapse to single card. |\n| Tablet | 640\u20131024px | Hero h1 64px; feature card grid 2-up; asset rows stay horizontal but compress columns. |\n| Desktop | 1024\u20131280px | Full hero h1 80px; feature card grid 3-up; full asset row layout. |\n| Wide | > 1280px | Content caps at 1200px; hero photography full-bleed. |\n\n### Touch Targets\n- Primary CTA pill at 44px height \u2014 at WCAG AAA.\n- Larger hero pill (`{component.button-pill-cta}`) at 56px \u2014 well above AAA.\n- Asset icon circles at 32px \u2014 borderline; padded 8px row creates effective 48px tap zone.\n- Search pill at 44px height \u2014 at AAA.\n\n### Collapsing Strategy\n- Top nav switches to hamburger sheet below 768px. Sign Up CTA stays visible.\n- Hero h1 steps down: 80 \u2192 64 \u2192 52 \u2192 44 \u2192 36px on smallest screens.\n- Layered product-UI mockup cards collapse from 2-3 stacked into a single card on mobile.\n- Pricing tier rows: 3-up \u2192 2-up \u2192 1-up.\n- Asset rows on mobile stack vertically: ticker line on top, price + change line beneath.\n\n## Iteration Guide\n\n1. Focus on a single component at a time. Reference YAML keys directly.\n2. New CTAs default to `{rounded.pill}` (100px); new icon plates default to `{rounded.full}`. Cards use `{rounded.xl}`.\n3. Variants live as separate entries inside the `components:` block.\n4. Use `{token.refs}` everywhere \u2014 never inline hex.\n5. Hover state never documented. Only Default and Active/Pressed.\n6. CoinbaseDisplay 400 for display, CoinbaseSans 400/600/700 for body. CoinbaseMono on every number.\n7. Coinbase Blue stays scarce \u2014 one or two blue moments per band.\n\n## Known Gaps\n\n- CoinbaseDisplay, CoinbaseSans, CoinbaseMono are licensed; Inter and JetBrains Mono are documented substitutes.\n- In-product trading surfaces (order book, charts, order forms) are behind login walls \u2014 this document covers marketing only.\n- Animation timings out of scope.\n- Form validation states beyond focus not visible on captured surfaces.\n- Accent yellow appears only inside Bitcoin asset glyph illustrations; documented as illustrative-only.\n";
|
|
2
|
+
|
|
3
|
+
export { coinbaseBrief };
|
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
// src/presets/_briefs/coinbase.ts
|
|
2
|
+
var coinbaseBrief = `---
|
|
3
|
+
version: alpha
|
|
4
|
+
name: Coinbase
|
|
5
|
+
description: An institutional-grade crypto exchange whose marketing surfaces read like a quietly-confident financial-services brand. The base canvas is pure white; Coinbase Blue (\`#0052ff\`) is the single brand voltage, used scarcely on primary CTAs, signature glyphs, and inline accent moments. Type runs Coinbase's licensed CoinbaseDisplay (display) and CoinbaseSans (body) at modest weights \u2014 display sits at weight 400 not 700, signaling editorial calm rather than fintech-bombastic. Page rhythm rotates between bright white sections, soft gray elevation bands, and full-bleed dark editorial heroes (\`#0a0b0d\`) carrying product-ui mockup cards. Iconography is geometric and minimal; depth comes from card-on-card layering, never decorative shadows.
|
|
6
|
+
|
|
7
|
+
colors:
|
|
8
|
+
primary: "#0052ff"
|
|
9
|
+
primary-active: "#003ecc"
|
|
10
|
+
primary-disabled: "#a8b8cc"
|
|
11
|
+
ink: "#0a0b0d"
|
|
12
|
+
body: "#5b616e"
|
|
13
|
+
body-strong: "#0a0b0d"
|
|
14
|
+
muted: "#7c828a"
|
|
15
|
+
muted-soft: "#a8acb3"
|
|
16
|
+
hairline: "#dee1e6"
|
|
17
|
+
hairline-soft: "#eef0f3"
|
|
18
|
+
canvas: "#ffffff"
|
|
19
|
+
surface-soft: "#f7f7f7"
|
|
20
|
+
surface-card: "#ffffff"
|
|
21
|
+
surface-strong: "#eef0f3"
|
|
22
|
+
surface-dark: "#0a0b0d"
|
|
23
|
+
surface-dark-elevated: "#16181c"
|
|
24
|
+
on-primary: "#ffffff"
|
|
25
|
+
on-dark: "#ffffff"
|
|
26
|
+
on-dark-soft: "#a8acb3"
|
|
27
|
+
semantic-up: "#05b169"
|
|
28
|
+
semantic-down: "#cf202f"
|
|
29
|
+
accent-yellow: "#f4b000"
|
|
30
|
+
|
|
31
|
+
typography:
|
|
32
|
+
display-mega:
|
|
33
|
+
fontFamily: "'Coinbase Display', -apple-system, system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif"
|
|
34
|
+
fontSize: 80px
|
|
35
|
+
fontWeight: 400
|
|
36
|
+
lineHeight: 1.0
|
|
37
|
+
letterSpacing: -2px
|
|
38
|
+
display-xl:
|
|
39
|
+
fontFamily: "'Coinbase Display', sans-serif"
|
|
40
|
+
fontSize: 64px
|
|
41
|
+
fontWeight: 400
|
|
42
|
+
lineHeight: 1.0
|
|
43
|
+
letterSpacing: -1.6px
|
|
44
|
+
display-lg:
|
|
45
|
+
fontFamily: "'Coinbase Display', sans-serif"
|
|
46
|
+
fontSize: 52px
|
|
47
|
+
fontWeight: 400
|
|
48
|
+
lineHeight: 1.0
|
|
49
|
+
letterSpacing: -1.3px
|
|
50
|
+
display-md:
|
|
51
|
+
fontFamily: "'Coinbase Display', sans-serif"
|
|
52
|
+
fontSize: 44px
|
|
53
|
+
fontWeight: 400
|
|
54
|
+
lineHeight: 1.09
|
|
55
|
+
letterSpacing: -1px
|
|
56
|
+
display-sm:
|
|
57
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
58
|
+
fontSize: 36px
|
|
59
|
+
fontWeight: 400
|
|
60
|
+
lineHeight: 1.11
|
|
61
|
+
letterSpacing: -0.5px
|
|
62
|
+
title-lg:
|
|
63
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
64
|
+
fontSize: 32px
|
|
65
|
+
fontWeight: 400
|
|
66
|
+
lineHeight: 1.13
|
|
67
|
+
letterSpacing: -0.4px
|
|
68
|
+
title-md:
|
|
69
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
70
|
+
fontSize: 18px
|
|
71
|
+
fontWeight: 600
|
|
72
|
+
lineHeight: 1.33
|
|
73
|
+
letterSpacing: 0
|
|
74
|
+
title-sm:
|
|
75
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
76
|
+
fontSize: 16px
|
|
77
|
+
fontWeight: 600
|
|
78
|
+
lineHeight: 1.25
|
|
79
|
+
letterSpacing: 0
|
|
80
|
+
body-md:
|
|
81
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
82
|
+
fontSize: 16px
|
|
83
|
+
fontWeight: 400
|
|
84
|
+
lineHeight: 1.5
|
|
85
|
+
letterSpacing: 0
|
|
86
|
+
body-strong:
|
|
87
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
88
|
+
fontSize: 16px
|
|
89
|
+
fontWeight: 700
|
|
90
|
+
lineHeight: 1.5
|
|
91
|
+
letterSpacing: 0
|
|
92
|
+
body-sm:
|
|
93
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
94
|
+
fontSize: 14px
|
|
95
|
+
fontWeight: 400
|
|
96
|
+
lineHeight: 1.5
|
|
97
|
+
letterSpacing: 0
|
|
98
|
+
caption:
|
|
99
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
100
|
+
fontSize: 13px
|
|
101
|
+
fontWeight: 400
|
|
102
|
+
lineHeight: 1.5
|
|
103
|
+
letterSpacing: 0
|
|
104
|
+
caption-strong:
|
|
105
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
106
|
+
fontSize: 12px
|
|
107
|
+
fontWeight: 600
|
|
108
|
+
lineHeight: 1.5
|
|
109
|
+
letterSpacing: 0
|
|
110
|
+
number-display:
|
|
111
|
+
fontFamily: "'Coinbase Mono', 'Coinbase Sans', monospace"
|
|
112
|
+
fontSize: 18px
|
|
113
|
+
fontWeight: 500
|
|
114
|
+
lineHeight: 1.4
|
|
115
|
+
letterSpacing: 0
|
|
116
|
+
button:
|
|
117
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
118
|
+
fontSize: 16px
|
|
119
|
+
fontWeight: 600
|
|
120
|
+
lineHeight: 1.15
|
|
121
|
+
letterSpacing: 0
|
|
122
|
+
nav-link:
|
|
123
|
+
fontFamily: "'Coinbase Sans', sans-serif"
|
|
124
|
+
fontSize: 14px
|
|
125
|
+
fontWeight: 500
|
|
126
|
+
lineHeight: 1.4
|
|
127
|
+
letterSpacing: 0
|
|
128
|
+
|
|
129
|
+
rounded:
|
|
130
|
+
none: 0px
|
|
131
|
+
xs: 4px
|
|
132
|
+
sm: 8px
|
|
133
|
+
md: 12px
|
|
134
|
+
lg: 16px
|
|
135
|
+
xl: 24px
|
|
136
|
+
pill: 100px
|
|
137
|
+
full: 9999px
|
|
138
|
+
|
|
139
|
+
spacing:
|
|
140
|
+
xxs: 4px
|
|
141
|
+
xs: 8px
|
|
142
|
+
sm: 12px
|
|
143
|
+
base: 16px
|
|
144
|
+
md: 20px
|
|
145
|
+
lg: 24px
|
|
146
|
+
xl: 32px
|
|
147
|
+
xxl: 48px
|
|
148
|
+
section: 96px
|
|
149
|
+
|
|
150
|
+
components:
|
|
151
|
+
top-nav-light:
|
|
152
|
+
backgroundColor: "{colors.canvas}"
|
|
153
|
+
textColor: "{colors.ink}"
|
|
154
|
+
typography: "{typography.nav-link}"
|
|
155
|
+
height: 64px
|
|
156
|
+
top-nav-on-dark:
|
|
157
|
+
backgroundColor: "{colors.surface-dark}"
|
|
158
|
+
textColor: "{colors.on-dark}"
|
|
159
|
+
typography: "{typography.nav-link}"
|
|
160
|
+
height: 64px
|
|
161
|
+
button-primary:
|
|
162
|
+
backgroundColor: "{colors.primary}"
|
|
163
|
+
textColor: "{colors.on-primary}"
|
|
164
|
+
typography: "{typography.button}"
|
|
165
|
+
rounded: "{rounded.pill}"
|
|
166
|
+
padding: 12px 20px
|
|
167
|
+
height: 44px
|
|
168
|
+
button-primary-active:
|
|
169
|
+
backgroundColor: "{colors.primary-active}"
|
|
170
|
+
textColor: "{colors.on-primary}"
|
|
171
|
+
rounded: "{rounded.pill}"
|
|
172
|
+
button-primary-disabled:
|
|
173
|
+
backgroundColor: "{colors.primary-disabled}"
|
|
174
|
+
textColor: "{colors.on-primary}"
|
|
175
|
+
rounded: "{rounded.pill}"
|
|
176
|
+
button-secondary-light:
|
|
177
|
+
backgroundColor: "{colors.surface-strong}"
|
|
178
|
+
textColor: "{colors.ink}"
|
|
179
|
+
typography: "{typography.button}"
|
|
180
|
+
rounded: "{rounded.pill}"
|
|
181
|
+
padding: 12px 20px
|
|
182
|
+
height: 44px
|
|
183
|
+
button-secondary-dark:
|
|
184
|
+
backgroundColor: "{colors.surface-dark-elevated}"
|
|
185
|
+
textColor: "{colors.on-dark}"
|
|
186
|
+
typography: "{typography.button}"
|
|
187
|
+
rounded: "{rounded.pill}"
|
|
188
|
+
padding: 12px 20px
|
|
189
|
+
height: 44px
|
|
190
|
+
button-outline-on-dark:
|
|
191
|
+
backgroundColor: transparent
|
|
192
|
+
textColor: "{colors.on-dark}"
|
|
193
|
+
typography: "{typography.button}"
|
|
194
|
+
rounded: "{rounded.pill}"
|
|
195
|
+
padding: 11px 19px
|
|
196
|
+
height: 44px
|
|
197
|
+
button-tertiary-text:
|
|
198
|
+
backgroundColor: transparent
|
|
199
|
+
textColor: "{colors.primary}"
|
|
200
|
+
typography: "{typography.button}"
|
|
201
|
+
button-pill-cta:
|
|
202
|
+
backgroundColor: "{colors.primary}"
|
|
203
|
+
textColor: "{colors.on-primary}"
|
|
204
|
+
typography: "{typography.button}"
|
|
205
|
+
rounded: "{rounded.pill}"
|
|
206
|
+
padding: 16px 32px
|
|
207
|
+
height: 56px
|
|
208
|
+
hero-band-dark:
|
|
209
|
+
backgroundColor: "{colors.surface-dark}"
|
|
210
|
+
textColor: "{colors.on-dark}"
|
|
211
|
+
typography: "{typography.display-mega}"
|
|
212
|
+
padding: 96px
|
|
213
|
+
hero-band-light:
|
|
214
|
+
backgroundColor: "{colors.canvas}"
|
|
215
|
+
textColor: "{colors.ink}"
|
|
216
|
+
typography: "{typography.display-mega}"
|
|
217
|
+
padding: 96px
|
|
218
|
+
product-ui-card-dark:
|
|
219
|
+
backgroundColor: "{colors.surface-dark-elevated}"
|
|
220
|
+
textColor: "{colors.on-dark}"
|
|
221
|
+
rounded: "{rounded.xl}"
|
|
222
|
+
padding: 32px
|
|
223
|
+
product-ui-card-light:
|
|
224
|
+
backgroundColor: "{colors.canvas}"
|
|
225
|
+
textColor: "{colors.ink}"
|
|
226
|
+
rounded: "{rounded.xl}"
|
|
227
|
+
padding: 32px
|
|
228
|
+
feature-card:
|
|
229
|
+
backgroundColor: "{colors.canvas}"
|
|
230
|
+
textColor: "{colors.ink}"
|
|
231
|
+
typography: "{typography.title-md}"
|
|
232
|
+
rounded: "{rounded.xl}"
|
|
233
|
+
padding: 32px
|
|
234
|
+
asset-row:
|
|
235
|
+
backgroundColor: transparent
|
|
236
|
+
textColor: "{colors.ink}"
|
|
237
|
+
typography: "{typography.body-md}"
|
|
238
|
+
padding: 16px 0
|
|
239
|
+
price-up-cell:
|
|
240
|
+
backgroundColor: transparent
|
|
241
|
+
textColor: "{colors.semantic-up}"
|
|
242
|
+
typography: "{typography.number-display}"
|
|
243
|
+
price-down-cell:
|
|
244
|
+
backgroundColor: transparent
|
|
245
|
+
textColor: "{colors.semantic-down}"
|
|
246
|
+
typography: "{typography.number-display}"
|
|
247
|
+
pricing-tier-card:
|
|
248
|
+
backgroundColor: "{colors.canvas}"
|
|
249
|
+
textColor: "{colors.ink}"
|
|
250
|
+
typography: "{typography.body-md}"
|
|
251
|
+
rounded: "{rounded.xl}"
|
|
252
|
+
padding: 32px
|
|
253
|
+
pricing-tier-featured:
|
|
254
|
+
backgroundColor: "{colors.surface-dark}"
|
|
255
|
+
textColor: "{colors.on-dark}"
|
|
256
|
+
typography: "{typography.body-md}"
|
|
257
|
+
rounded: "{rounded.xl}"
|
|
258
|
+
padding: 32px
|
|
259
|
+
cta-band-dark:
|
|
260
|
+
backgroundColor: "{colors.surface-dark}"
|
|
261
|
+
textColor: "{colors.on-dark}"
|
|
262
|
+
typography: "{typography.display-lg}"
|
|
263
|
+
padding: 96px
|
|
264
|
+
text-input:
|
|
265
|
+
backgroundColor: "{colors.canvas}"
|
|
266
|
+
textColor: "{colors.ink}"
|
|
267
|
+
typography: "{typography.body-md}"
|
|
268
|
+
rounded: "{rounded.md}"
|
|
269
|
+
padding: 14px 16px
|
|
270
|
+
height: 48px
|
|
271
|
+
search-input-pill:
|
|
272
|
+
backgroundColor: "{colors.surface-strong}"
|
|
273
|
+
textColor: "{colors.ink}"
|
|
274
|
+
typography: "{typography.body-md}"
|
|
275
|
+
rounded: "{rounded.pill}"
|
|
276
|
+
padding: 12px 20px
|
|
277
|
+
height: 44px
|
|
278
|
+
badge-pill:
|
|
279
|
+
backgroundColor: "{colors.surface-strong}"
|
|
280
|
+
textColor: "{colors.ink}"
|
|
281
|
+
typography: "{typography.caption-strong}"
|
|
282
|
+
rounded: "{rounded.pill}"
|
|
283
|
+
padding: 4px 12px
|
|
284
|
+
asset-icon-circular:
|
|
285
|
+
backgroundColor: "{colors.surface-strong}"
|
|
286
|
+
rounded: "{rounded.full}"
|
|
287
|
+
size: 32px
|
|
288
|
+
footer-light:
|
|
289
|
+
backgroundColor: "{colors.canvas}"
|
|
290
|
+
textColor: "{colors.body}"
|
|
291
|
+
typography: "{typography.body-sm}"
|
|
292
|
+
padding: 64px 48px
|
|
293
|
+
footer-link:
|
|
294
|
+
backgroundColor: transparent
|
|
295
|
+
textColor: "{colors.body}"
|
|
296
|
+
typography: "{typography.body-sm}"
|
|
297
|
+
legal-band:
|
|
298
|
+
backgroundColor: "{colors.canvas}"
|
|
299
|
+
textColor: "{colors.muted}"
|
|
300
|
+
typography: "{typography.caption}"
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Overview
|
|
304
|
+
|
|
305
|
+
Coinbase reads like an institutional financial brand that happens to trade crypto \u2014 the marketing surfaces are quiet, white-canvas, editorially-spaced, and almost monochromatic. The single brand voltage is **Coinbase Blue** (\`{colors.primary}\` \u2014 #0052ff), used scarcely: every primary CTA pill, the brand wordmark, and inline emphasis links. Beyond that one blue, the system is white canvas + ink + soft gray elevation bands + a deep near-black editorial canvas (\`{colors.surface-dark}\` \u2014 #0a0b0d) for full-bleed product-mockup heroes.
|
|
306
|
+
|
|
307
|
+
Type pairs **CoinbaseDisplay** for hero headlines with **CoinbaseSans** for body, captions, and navigation. Display sits at **weight 400** \u2014 not the 700+ typical of trading platforms. The choice signals editorial calm and institutional trust rather than fintech urgency.
|
|
308
|
+
|
|
309
|
+
The page rhythm rotates three modes: bright white editorial sections, soft-gray elevation bands, and **full-bleed dark editorial heroes** carrying layered product-UI mockup cards. The dark hero with floating dashboard mockups is the single most distinctive component.
|
|
310
|
+
|
|
311
|
+
**Key Characteristics:**
|
|
312
|
+
- Single accent color: \`{colors.primary}\` (#0052ff Coinbase Blue) carries every primary CTA, wordmark, and inline brand link. Used scarcely.
|
|
313
|
+
- Modest display weights \u2014 CoinbaseDisplay at weight 400, never 700+.
|
|
314
|
+
- Editorial pill geometry: every CTA is \`{rounded.pill}\` (100px), every asset glyph is \`{rounded.full}\`, every card is \`{rounded.xl}\` (24px). Sharp corners absent.
|
|
315
|
+
- Full-bleed dark heroes with floating product-UI cards: \`{component.hero-band-dark}\` plus inline \`{component.product-ui-card-dark}\` mockups is the brand's strongest signature pattern.
|
|
316
|
+
- Trading semantics: \`{colors.semantic-up}\` (#05b169) and \`{colors.semantic-down}\` (#cf202f) \u2014 text color only, never background fills.
|
|
317
|
+
- 96px section rhythm \u2014 generous editorial pacing.
|
|
318
|
+
|
|
319
|
+
## Colors
|
|
320
|
+
|
|
321
|
+
### Brand & Accent
|
|
322
|
+
- **Coinbase Blue** (\`{colors.primary}\` \u2014 #0052ff): The single brand color. Every primary CTA pill, the Coinbase wordmark, and inline brand links.
|
|
323
|
+
- **Coinbase Blue Active** (\`{colors.primary-active}\` \u2014 #003ecc): Press-state darken on the primary pill.
|
|
324
|
+
- **Coinbase Blue Disabled** (\`{colors.primary-disabled}\` \u2014 #a8b8cc): Faded-blue tint for disabled CTAs.
|
|
325
|
+
- **Accent Yellow** (\`{colors.accent-yellow}\` \u2014 #f4b000): A small sub-brand accent used very sparingly on Bitcoin/asset glyph fills inside feature cards. Illustrative-only, not an action color.
|
|
326
|
+
|
|
327
|
+
### Surface
|
|
328
|
+
- **Canvas** (\`{colors.canvas}\` \u2014 #ffffff): The default page floor.
|
|
329
|
+
- **Surface Soft** (\`{colors.surface-soft}\` \u2014 #f7f7f7): Subtle alternating band surface.
|
|
330
|
+
- **Surface Strong** (\`{colors.surface-strong}\` \u2014 #eef0f3): The light-gray fill behind secondary buttons, search pills, asset-icon plates.
|
|
331
|
+
- **Surface Dark** (\`{colors.surface-dark}\` \u2014 #0a0b0d): Deep near-black canvas for full-bleed dark heroes, CTA bands. Same hex as \`{colors.ink}\` \u2014 page-floor and text-color share the value.
|
|
332
|
+
- **Surface Dark Elevated** (\`{colors.surface-dark-elevated}\` \u2014 #16181c): One step lighter, used for floating product-UI mockup cards inside dark heroes.
|
|
333
|
+
|
|
334
|
+
### Hairlines
|
|
335
|
+
- **Hairline** (\`{colors.hairline}\` \u2014 #dee1e6): Default 1px divider on white surfaces.
|
|
336
|
+
- **Hairline Soft** (\`{colors.hairline-soft}\` \u2014 #eef0f3): Lighter divider \u2014 same hex as \`{colors.surface-strong}\`.
|
|
337
|
+
|
|
338
|
+
### Text
|
|
339
|
+
- **Ink** (\`{colors.ink}\` \u2014 #0a0b0d): Display headings, primary nav, body emphasis.
|
|
340
|
+
- **Body** (\`{colors.body}\` \u2014 #5b616e): Default running-text \u2014 slightly cool gray.
|
|
341
|
+
- **Body Strong** (\`{colors.body-strong}\` \u2014 #0a0b0d): Same as ink, used for stronger emphasis.
|
|
342
|
+
- **Muted** (\`{colors.muted}\` \u2014 #7c828a): Sub-titles, breadcrumbs, footer secondary.
|
|
343
|
+
- **Muted Soft** (\`{colors.muted-soft}\` \u2014 #a8acb3): Disabled link text.
|
|
344
|
+
- **On Primary** (\`{colors.on-primary}\` \u2014 #ffffff): White text on Coinbase Blue CTAs.
|
|
345
|
+
- **On Dark** (\`{colors.on-dark}\` \u2014 #ffffff): White text on dark heroes.
|
|
346
|
+
- **On Dark Soft** (\`{colors.on-dark-soft}\` \u2014 #a8acb3): Muted off-white for secondary text on dark.
|
|
347
|
+
|
|
348
|
+
### Trading Semantics
|
|
349
|
+
- **Semantic Up** (\`{colors.semantic-up}\` \u2014 #05b169): "Price up" green, text color only.
|
|
350
|
+
- **Semantic Down** (\`{colors.semantic-down}\` \u2014 #cf202f): "Price down" red, text color only.
|
|
351
|
+
|
|
352
|
+
## Typography
|
|
353
|
+
|
|
354
|
+
### Font Family
|
|
355
|
+
The system runs **CoinbaseDisplay** (display headlines), **CoinbaseSans** (body, navigation, captions, buttons), **CoinbaseIcons** (icon font), and **CoinbaseMono** for tabular numerical data. Fallback stack: \`-apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif\`.
|
|
356
|
+
|
|
357
|
+
The display/body split is functional: CoinbaseDisplay carries hero headlines only; CoinbaseSans carries everything else.
|
|
358
|
+
|
|
359
|
+
### Hierarchy
|
|
360
|
+
|
|
361
|
+
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|
|
362
|
+
|---|---|---|---|---|---|
|
|
363
|
+
| \`{typography.display-mega}\` | 80px | 400 | 1.0 | -2px | Homepage hero h1 |
|
|
364
|
+
| \`{typography.display-xl}\` | 64px | 400 | 1.0 | -1.6px | Subsidiary heroes |
|
|
365
|
+
| \`{typography.display-lg}\` | 52px | 400 | 1.0 | -1.3px | Section heads |
|
|
366
|
+
| \`{typography.display-md}\` | 44px | 400 | 1.09 | -1px | CTA-band headlines |
|
|
367
|
+
| \`{typography.display-sm}\` | 36px | 400 | 1.11 | -0.5px | Sub-section heads \u2014 CoinbaseSans |
|
|
368
|
+
| \`{typography.title-lg}\` | 32px | 400 | 1.13 | -0.4px | Card group titles |
|
|
369
|
+
| \`{typography.title-md}\` | 18px | 600 | 1.33 | 0 | Component titles, asset row primary |
|
|
370
|
+
| \`{typography.title-sm}\` | 16px | 600 | 1.25 | 0 | List labels |
|
|
371
|
+
| \`{typography.body-md}\` | 16px | 400 | 1.5 | 0 | Default body |
|
|
372
|
+
| \`{typography.body-strong}\` | 16px | 700 | 1.5 | 0 | Emphasized body |
|
|
373
|
+
| \`{typography.body-sm}\` | 14px | 400 | 1.5 | 0 | Footer body |
|
|
374
|
+
| \`{typography.caption}\` | 13px | 400 | 1.5 | 0 | Photo captions |
|
|
375
|
+
| \`{typography.caption-strong}\` | 12px | 600 | 1.5 | 0 | Badge pill labels |
|
|
376
|
+
| \`{typography.number-display}\` | 18px | 500 | 1.4 | 0 | Asset prices, percent changes \u2014 CoinbaseMono |
|
|
377
|
+
| \`{typography.button}\` | 16px | 600 | 1.15 | 0 | Standard CTA pill |
|
|
378
|
+
| \`{typography.nav-link}\` | 14px | 500 | 1.4 | 0 | Top-nav menu items |
|
|
379
|
+
|
|
380
|
+
### Principles
|
|
381
|
+
- **Display weight stays at 400.** The single most distinctive typographic choice \u2014 signals "calm institutional brand" rather than "trading-platform urgency."
|
|
382
|
+
- **Negative letter-spacing on display only.** Display uses -1px to -2px tracking; body stays at 0.
|
|
383
|
+
- **CoinbaseMono on every number.** Asset prices, percent changes \u2014 anything tabular renders in CoinbaseMono.
|
|
384
|
+
|
|
385
|
+
### Note on Font Substitutes
|
|
386
|
+
CoinbaseDisplay, CoinbaseSans, and CoinbaseMono are licensed Coinbase typefaces.
|
|
387
|
+
- **CoinbaseDisplay \u2192 Inter** at weight 400, letter-spacing -1.5%.
|
|
388
|
+
- **CoinbaseSans \u2192 Inter** at weight 400/600.
|
|
389
|
+
- **CoinbaseMono \u2192 JetBrains Mono** or **Geist Mono** at weight 500.
|
|
390
|
+
|
|
391
|
+
## Layout
|
|
392
|
+
|
|
393
|
+
### Spacing System
|
|
394
|
+
- **Base unit:** 4px.
|
|
395
|
+
- **Tokens:** \`{spacing.xxs}\` 4px \xB7 \`{spacing.xs}\` 8px \xB7 \`{spacing.sm}\` 12px \xB7 \`{spacing.base}\` 16px \xB7 \`{spacing.md}\` 20px \xB7 \`{spacing.lg}\` 24px \xB7 \`{spacing.xl}\` 32px \xB7 \`{spacing.xxl}\` 48px \xB7 \`{spacing.section}\` 96px.
|
|
396
|
+
- **Section padding:** \`{spacing.section}\` (96px) for every major editorial band.
|
|
397
|
+
- **Card internal padding:** \`{spacing.xl}\` (32px) for feature cards and product-UI mockups.
|
|
398
|
+
|
|
399
|
+
### Grid & Container
|
|
400
|
+
- **Max content width:** ~1200px centered. Hero photography full-bleed.
|
|
401
|
+
- **Editorial body:** Single 12-column grid.
|
|
402
|
+
- **Feature card grids:** 2-up at desktop for hero splits, 3-up for benefit grids.
|
|
403
|
+
- **Footer:** 6-column link list at desktop.
|
|
404
|
+
|
|
405
|
+
### Whitespace Philosophy
|
|
406
|
+
Generous editorial pacing \u2014 closer to Bloomberg or the Financial Times than to a trading dashboard. 96px between bands; cards inside bands sit 24px apart. Density lives behind login walls, not on marketing.
|
|
407
|
+
|
|
408
|
+
## Elevation & Depth
|
|
409
|
+
|
|
410
|
+
| Level | Treatment | Use |
|
|
411
|
+
|---|---|---|
|
|
412
|
+
| Flat | No shadow, no border | 80% of surfaces |
|
|
413
|
+
| Hairline border | 1px \`{colors.hairline}\` | Feature card outlines on white |
|
|
414
|
+
| Soft drop | \`0 4px 12px rgba(0, 0, 0, 0.04)\` | Single shadow tier \u2014 hovered cards |
|
|
415
|
+
| Photographic | Full-bleed product-UI mockups | Hero depth |
|
|
416
|
+
|
|
417
|
+
### Decorative Depth
|
|
418
|
+
- **Layered product-UI cards inside dark heroes** is the most distinctive decorative pattern \u2014 a \`{component.product-ui-card-dark}\` floats above a darker base canvas, often with a second smaller card overlapping at an angle.
|
|
419
|
+
- **Geometric brand illustrations** carry illustrative depth where shadows would otherwise.
|
|
420
|
+
|
|
421
|
+
## Shapes
|
|
422
|
+
|
|
423
|
+
### Border Radius Scale
|
|
424
|
+
|
|
425
|
+
| Token | Value | Use |
|
|
426
|
+
|---|---|---|
|
|
427
|
+
| \`{rounded.none}\` | 0px | Reserved (essentially unused) |
|
|
428
|
+
| \`{rounded.xs}\` | 4px | Inline tags |
|
|
429
|
+
| \`{rounded.sm}\` | 8px | Compact rows |
|
|
430
|
+
| \`{rounded.md}\` | 12px | Form inputs |
|
|
431
|
+
| \`{rounded.lg}\` | 16px | Mid-size cards |
|
|
432
|
+
| \`{rounded.xl}\` | 24px | Feature cards, product-UI mockups, pricing tiers |
|
|
433
|
+
| \`{rounded.pill}\` | 100px | All CTA buttons, search pills, badges |
|
|
434
|
+
| \`{rounded.full}\` | 9999px | Asset icon circles, avatars |
|
|
435
|
+
|
|
436
|
+
Pill for interactive, card-radius (24px) for containers, full circle for icons. Sharp corners absent.
|
|
437
|
+
|
|
438
|
+
## Components
|
|
439
|
+
|
|
440
|
+
### Top Navigation
|
|
441
|
+
|
|
442
|
+
**\`top-nav-light\`** \u2014 Default top nav on white pages. Background \`{colors.canvas}\`, text \`{colors.ink}\`, height 64px. Layout: Coinbase wordmark left, primary horizontal menu (Cryptocurrencies / Individuals / Businesses / Institutions / Developers / Company), search-icon + globe + Sign In + Sign Up CTAs right.
|
|
443
|
+
|
|
444
|
+
**\`top-nav-on-dark\`** \u2014 Top nav over a dark hero band. Background \`{colors.surface-dark}\`, text \`{colors.on-dark}\`. Same layout.
|
|
445
|
+
|
|
446
|
+
### Buttons
|
|
447
|
+
|
|
448
|
+
**\`button-primary\`** \u2014 The signature Coinbase Blue pill. Background \`{colors.primary}\`, text \`{colors.on-primary}\`, type \`{typography.button}\` (16px / 600), padding 12px \xD7 20px, height 44px, rounded \`{rounded.pill}\` (100px).
|
|
449
|
+
|
|
450
|
+
**\`button-primary-active\`** \u2014 Press state. Background \`{colors.primary-active}\`, deeper blue.
|
|
451
|
+
|
|
452
|
+
**\`button-primary-disabled\`** \u2014 Faded blue tint. Background \`{colors.primary-disabled}\`. Cursor not-allowed.
|
|
453
|
+
|
|
454
|
+
**\`button-secondary-light\`** \u2014 Soft-gray secondary on white surfaces. Background \`{colors.surface-strong}\`, text \`{colors.ink}\`, same pill geometry.
|
|
455
|
+
|
|
456
|
+
**\`button-secondary-dark\`** \u2014 Used on dark heroes. Background \`{colors.surface-dark-elevated}\`, text \`{colors.on-dark}\`, same pill geometry.
|
|
457
|
+
|
|
458
|
+
**\`button-outline-on-dark\`** \u2014 Transparent pill with white outline. Background transparent, text \`{colors.on-dark}\`, 1px white border.
|
|
459
|
+
|
|
460
|
+
**\`button-tertiary-text\`** \u2014 Inline text link. Background transparent, text \`{colors.primary}\`, type \`{typography.button}\`.
|
|
461
|
+
|
|
462
|
+
**\`button-pill-cta\`** \u2014 Larger pill CTA used on the homepage hero ("Get started"). Same Coinbase Blue palette but with 56px height and 16px \xD7 32px padding for a prouder stance.
|
|
463
|
+
|
|
464
|
+
### Hero Bands
|
|
465
|
+
|
|
466
|
+
**\`hero-band-dark\`** \u2014 The signature full-bleed dark hero. Background \`{colors.surface-dark}\`, text \`{colors.on-dark}\`, full-bleed layered product-UI mockup cards. Display headline left in \`{typography.display-mega}\` (80px / 400), subhead in \`{typography.body-md}\`, two CTAs.
|
|
467
|
+
|
|
468
|
+
**\`hero-band-light\`** \u2014 White-canvas variant used on Wealth and Explore. Background \`{colors.canvas}\`, text \`{colors.ink}\`. Same skeleton, light palette.
|
|
469
|
+
|
|
470
|
+
### Cards
|
|
471
|
+
|
|
472
|
+
**\`product-ui-card-dark\`** \u2014 The floating product-UI mockup. Background \`{colors.surface-dark-elevated}\`, text \`{colors.on-dark}\`, rounded \`{rounded.xl}\` (24px), padding 32px. Often shown as 2-3 stacked cards at slight rotation, mimicking a layered dashboard.
|
|
473
|
+
|
|
474
|
+
**\`product-ui-card-light\`** \u2014 Light-canvas variant used on Explore for asset cards. Background \`{colors.canvas}\`, text \`{colors.ink}\`, same geometry, 1px hairline border.
|
|
475
|
+
|
|
476
|
+
**\`feature-card\`** \u2014 Used in 3-up and 2-up grids. Background \`{colors.canvas}\`, text \`{colors.ink}\`, type \`{typography.title-md}\`, rounded \`{rounded.xl}\`, padding 32px.
|
|
477
|
+
|
|
478
|
+
### Trading Surfaces
|
|
479
|
+
|
|
480
|
+
**\`asset-row\`** \u2014 Horizontal row in asset lists (Explore, Wealth). Background transparent, 1px hairline divider. Layout: 32px circular asset icon left, asset name + ticker, price column in \`{typography.number-display}\`, 24h change column with \`{component.price-up-cell}\` or \`{component.price-down-cell}\`.
|
|
481
|
+
|
|
482
|
+
**\`price-up-cell\`** + **\`price-down-cell\`** \u2014 Inline price-change cells. Color only \u2014 green or red text in \`{typography.number-display}\`, no background fill.
|
|
483
|
+
|
|
484
|
+
**\`asset-icon-circular\`** \u2014 Circular plate behind asset glyphs. Background \`{colors.surface-strong}\`, rounded \`{rounded.full}\`, 32px diameter.
|
|
485
|
+
|
|
486
|
+
### Pricing
|
|
487
|
+
|
|
488
|
+
**\`pricing-tier-card\`** \u2014 Standard pricing tier on Developer Platform. Background \`{colors.canvas}\`, rounded \`{rounded.xl}\`, padding 32px, 1px hairline border. Layout: tier name + price + feature checklist + CTA pill.
|
|
489
|
+
|
|
490
|
+
**\`pricing-tier-featured\`** \u2014 The featured tier. Background \`{colors.surface-dark}\`, text \`{colors.on-dark}\`. Same skeleton, dark palette \u2014 visual inversion signals "highlighted choice" without colored ribbons.
|
|
491
|
+
|
|
492
|
+
### Forms
|
|
493
|
+
|
|
494
|
+
**\`text-input\`** \u2014 Standard text input. Background \`{colors.canvas}\`, text \`{colors.ink}\`, rounded \`{rounded.md}\` (12px), padding 14px \xD7 16px, height 48px, 1px hairline border. On focus, border thickens to 2px Coinbase Blue.
|
|
495
|
+
|
|
496
|
+
**\`search-input-pill\`** \u2014 Pill-shaped search bar. Background \`{colors.surface-strong}\`, rounded \`{rounded.pill}\`, padding 12px \xD7 20px, height 44px.
|
|
497
|
+
|
|
498
|
+
### Tags & Badges
|
|
499
|
+
|
|
500
|
+
**\`badge-pill\`** \u2014 Small uppercase pill used as section labels ("INSTITUTIONAL", "REGULATED"). Background \`{colors.surface-strong}\`, text \`{colors.ink}\`, type \`{typography.caption-strong}\`, rounded \`{rounded.pill}\`.
|
|
501
|
+
|
|
502
|
+
### CTA / Footer
|
|
503
|
+
|
|
504
|
+
**\`cta-band-dark\`** \u2014 Pre-footer "Take control of your money" band. Background \`{colors.surface-dark}\`, text \`{colors.on-dark}\`, vertical padding 96px. Centered headline + two CTAs.
|
|
505
|
+
|
|
506
|
+
**\`footer-light\`** \u2014 Closing white-canvas footer. Background \`{colors.canvas}\`, text \`{colors.body}\`. 6-column link list.
|
|
507
|
+
|
|
508
|
+
**\`footer-link\`** \u2014 Individual footer link. Background transparent, text \`{colors.body}\`.
|
|
509
|
+
|
|
510
|
+
**\`legal-band\`** \u2014 Bottom strip beneath footer columns. All text \`{colors.muted}\` at \`{typography.caption}\`.
|
|
511
|
+
|
|
512
|
+
## Do's and Don'ts
|
|
513
|
+
|
|
514
|
+
### Do
|
|
515
|
+
- Reserve \`{colors.primary}\` (Coinbase Blue) for primary CTAs, wordmark, brand-glyph illustrations, inline accent links.
|
|
516
|
+
- Set every CTA as \`{rounded.pill}\` (100px); every asset glyph as \`{rounded.full}\`.
|
|
517
|
+
- Keep CoinbaseDisplay headlines at weight 400.
|
|
518
|
+
- Use the dark/light band rotation as page rhythm.
|
|
519
|
+
- Render every numerical value in CoinbaseMono via \`{typography.number-display}\`.
|
|
520
|
+
- Pair every dark hero with a layered product-UI mockup card stack.
|
|
521
|
+
|
|
522
|
+
### Don't
|
|
523
|
+
- Don't introduce a secondary brand color. Coinbase Blue is the only action color; trading green/red are semantic-only.
|
|
524
|
+
- Don't bold display copy \u2014 display sits at weight 400; bolding shifts the brand voice.
|
|
525
|
+
- Don't add drop shadow tiers \u2014 system has one shadow tier.
|
|
526
|
+
- Don't use sharp \`{rounded.none}\` (0px) on CTAs.
|
|
527
|
+
- Don't mix CoinbaseDisplay and CoinbaseSans inside the same headline.
|
|
528
|
+
- Don't use trading green/red as a button background.
|
|
529
|
+
- 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.
|
|
530
|
+
|
|
531
|
+
## Responsive Behavior
|
|
532
|
+
|
|
533
|
+
### Breakpoints
|
|
534
|
+
|
|
535
|
+
| Name | Width | Key Changes |
|
|
536
|
+
|---|---|---|
|
|
537
|
+
| Mobile | < 640px | Hero h1 80\u219240px; feature card grid 1-up; asset row stacks; nav collapses to hamburger; layered product-UI cards collapse to single card. |
|
|
538
|
+
| Tablet | 640\u20131024px | Hero h1 64px; feature card grid 2-up; asset rows stay horizontal but compress columns. |
|
|
539
|
+
| Desktop | 1024\u20131280px | Full hero h1 80px; feature card grid 3-up; full asset row layout. |
|
|
540
|
+
| Wide | > 1280px | Content caps at 1200px; hero photography full-bleed. |
|
|
541
|
+
|
|
542
|
+
### Touch Targets
|
|
543
|
+
- Primary CTA pill at 44px height \u2014 at WCAG AAA.
|
|
544
|
+
- Larger hero pill (\`{component.button-pill-cta}\`) at 56px \u2014 well above AAA.
|
|
545
|
+
- Asset icon circles at 32px \u2014 borderline; padded 8px row creates effective 48px tap zone.
|
|
546
|
+
- Search pill at 44px height \u2014 at AAA.
|
|
547
|
+
|
|
548
|
+
### Collapsing Strategy
|
|
549
|
+
- Top nav switches to hamburger sheet below 768px. Sign Up CTA stays visible.
|
|
550
|
+
- Hero h1 steps down: 80 \u2192 64 \u2192 52 \u2192 44 \u2192 36px on smallest screens.
|
|
551
|
+
- Layered product-UI mockup cards collapse from 2-3 stacked into a single card on mobile.
|
|
552
|
+
- Pricing tier rows: 3-up \u2192 2-up \u2192 1-up.
|
|
553
|
+
- Asset rows on mobile stack vertically: ticker line on top, price + change line beneath.
|
|
554
|
+
|
|
555
|
+
## Iteration Guide
|
|
556
|
+
|
|
557
|
+
1. Focus on a single component at a time. Reference YAML keys directly.
|
|
558
|
+
2. New CTAs default to \`{rounded.pill}\` (100px); new icon plates default to \`{rounded.full}\`. Cards use \`{rounded.xl}\`.
|
|
559
|
+
3. Variants live as separate entries inside the \`components:\` block.
|
|
560
|
+
4. Use \`{token.refs}\` everywhere \u2014 never inline hex.
|
|
561
|
+
5. Hover state never documented. Only Default and Active/Pressed.
|
|
562
|
+
6. CoinbaseDisplay 400 for display, CoinbaseSans 400/600/700 for body. CoinbaseMono on every number.
|
|
563
|
+
7. Coinbase Blue stays scarce \u2014 one or two blue moments per band.
|
|
564
|
+
|
|
565
|
+
## Known Gaps
|
|
566
|
+
|
|
567
|
+
- CoinbaseDisplay, CoinbaseSans, CoinbaseMono are licensed; Inter and JetBrains Mono are documented substitutes.
|
|
568
|
+
- In-product trading surfaces (order book, charts, order forms) are behind login walls \u2014 this document covers marketing only.
|
|
569
|
+
- Animation timings out of scope.
|
|
570
|
+
- Form validation states beyond focus not visible on captured surfaces.
|
|
571
|
+
- Accent yellow appears only inside Bitcoin asset glyph illustrations; documented as illustrative-only.
|
|
572
|
+
`;
|
|
573
|
+
export {
|
|
574
|
+
coinbaseBrief
|
|
575
|
+
};
|
|
576
|
+
//# sourceMappingURL=coinbase.js.map
|