@aexol/spectral 0.7.0 → 0.7.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/dist/agent/index.js +76 -301
- package/dist/cli.js +11 -0
- package/dist/designer/data/systems/agentic/DESIGN.md +71 -0
- package/dist/designer/data/systems/agentic/components.html +154 -0
- package/dist/designer/data/systems/agentic/tokens.css +63 -0
- package/dist/designer/data/systems/airbnb/DESIGN.md +393 -0
- package/dist/designer/data/systems/airbnb/components.html +1373 -0
- package/dist/designer/data/systems/airbnb/tokens.css +261 -0
- package/dist/designer/data/systems/airtable/DESIGN.md +92 -0
- package/dist/designer/data/systems/airtable/components.html +489 -0
- package/dist/designer/data/systems/airtable/tokens.css +261 -0
- package/dist/designer/data/systems/ant/DESIGN.md +71 -0
- package/dist/designer/data/systems/ant/components.html +154 -0
- package/dist/designer/data/systems/ant/tokens.css +63 -0
- package/dist/designer/data/systems/apple/DESIGN.md +250 -0
- package/dist/designer/data/systems/apple/components.html +749 -0
- package/dist/designer/data/systems/apple/tokens.css +286 -0
- package/dist/designer/data/systems/application/DESIGN.md +71 -0
- package/dist/designer/data/systems/application/components.html +154 -0
- package/dist/designer/data/systems/application/tokens.css +63 -0
- package/dist/designer/data/systems/arc/DESIGN.md +152 -0
- package/dist/designer/data/systems/arc/components.html +432 -0
- package/dist/designer/data/systems/arc/tokens.css +137 -0
- package/dist/designer/data/systems/artistic/DESIGN.md +71 -0
- package/dist/designer/data/systems/artistic/components.html +136 -0
- package/dist/designer/data/systems/artistic/tokens.css +63 -0
- package/dist/designer/data/systems/atelier-zero/DESIGN.md +316 -0
- package/dist/designer/data/systems/atelier-zero/components.html +136 -0
- package/dist/designer/data/systems/atelier-zero/tokens.css +63 -0
- package/dist/designer/data/systems/bento/DESIGN.md +71 -0
- package/dist/designer/data/systems/bento/components.html +136 -0
- package/dist/designer/data/systems/bento/tokens.css +63 -0
- package/dist/designer/data/systems/binance/DESIGN.md +348 -0
- package/dist/designer/data/systems/binance/components.html +550 -0
- package/dist/designer/data/systems/binance/tokens.css +255 -0
- package/dist/designer/data/systems/bmw/DESIGN.md +183 -0
- package/dist/designer/data/systems/bmw/components.html +551 -0
- package/dist/designer/data/systems/bmw/tokens.css +179 -0
- package/dist/designer/data/systems/bmw-m/DESIGN.md +246 -0
- package/dist/designer/data/systems/bmw-m/components.html +342 -0
- package/dist/designer/data/systems/bmw-m/tokens.css +64 -0
- package/dist/designer/data/systems/bold/DESIGN.md +71 -0
- package/dist/designer/data/systems/bold/components.html +136 -0
- package/dist/designer/data/systems/bold/tokens.css +63 -0
- package/dist/designer/data/systems/brutalism/DESIGN.md +71 -0
- package/dist/designer/data/systems/brutalism/components.html +154 -0
- package/dist/designer/data/systems/brutalism/tokens.css +63 -0
- package/dist/designer/data/systems/bugatti/DESIGN.md +271 -0
- package/dist/designer/data/systems/bugatti/components.html +342 -0
- package/dist/designer/data/systems/bugatti/tokens.css +64 -0
- package/dist/designer/data/systems/cafe/DESIGN.md +71 -0
- package/dist/designer/data/systems/cafe/components.html +136 -0
- package/dist/designer/data/systems/cafe/tokens.css +63 -0
- package/dist/designer/data/systems/cal/DESIGN.md +262 -0
- package/dist/designer/data/systems/cal/components.html +376 -0
- package/dist/designer/data/systems/cal/tokens.css +265 -0
- package/dist/designer/data/systems/canva/DESIGN.md +157 -0
- package/dist/designer/data/systems/canva/components.html +461 -0
- package/dist/designer/data/systems/canva/tokens.css +147 -0
- package/dist/designer/data/systems/cisco/DESIGN.md +201 -0
- package/dist/designer/data/systems/cisco/components.html +342 -0
- package/dist/designer/data/systems/cisco/tokens.css +64 -0
- package/dist/designer/data/systems/claude/DESIGN.md +315 -0
- package/dist/designer/data/systems/claude/components.html +483 -0
- package/dist/designer/data/systems/claude/tokens.css +130 -0
- package/dist/designer/data/systems/clay/DESIGN.md +307 -0
- package/dist/designer/data/systems/clay/components.html +136 -0
- package/dist/designer/data/systems/clay/tokens.css +63 -0
- package/dist/designer/data/systems/claymorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/claymorphism/components.html +136 -0
- package/dist/designer/data/systems/claymorphism/tokens.css +63 -0
- package/dist/designer/data/systems/clean/DESIGN.md +71 -0
- package/dist/designer/data/systems/clean/components.html +136 -0
- package/dist/designer/data/systems/clean/tokens.css +63 -0
- package/dist/designer/data/systems/clickhouse/DESIGN.md +284 -0
- package/dist/designer/data/systems/clickhouse/components.html +506 -0
- package/dist/designer/data/systems/clickhouse/tokens.css +135 -0
- package/dist/designer/data/systems/cohere/DESIGN.md +269 -0
- package/dist/designer/data/systems/cohere/components.html +353 -0
- package/dist/designer/data/systems/cohere/tokens.css +126 -0
- package/dist/designer/data/systems/coinbase/DESIGN.md +132 -0
- package/dist/designer/data/systems/coinbase/components.html +501 -0
- package/dist/designer/data/systems/coinbase/tokens.css +257 -0
- package/dist/designer/data/systems/colorful/DESIGN.md +71 -0
- package/dist/designer/data/systems/colorful/components.html +136 -0
- package/dist/designer/data/systems/colorful/tokens.css +63 -0
- package/dist/designer/data/systems/composio/DESIGN.md +310 -0
- package/dist/designer/data/systems/composio/components.html +342 -0
- package/dist/designer/data/systems/composio/tokens.css +64 -0
- package/dist/designer/data/systems/contemporary/DESIGN.md +71 -0
- package/dist/designer/data/systems/contemporary/components.html +136 -0
- package/dist/designer/data/systems/contemporary/tokens.css +63 -0
- package/dist/designer/data/systems/corporate/DESIGN.md +71 -0
- package/dist/designer/data/systems/corporate/components.html +136 -0
- package/dist/designer/data/systems/corporate/tokens.css +63 -0
- package/dist/designer/data/systems/cosmic/DESIGN.md +71 -0
- package/dist/designer/data/systems/cosmic/components.html +136 -0
- package/dist/designer/data/systems/cosmic/tokens.css +63 -0
- package/dist/designer/data/systems/creative/DESIGN.md +71 -0
- package/dist/designer/data/systems/creative/components.html +136 -0
- package/dist/designer/data/systems/creative/tokens.css +63 -0
- package/dist/designer/data/systems/cursor/DESIGN.md +312 -0
- package/dist/designer/data/systems/cursor/components.html +654 -0
- package/dist/designer/data/systems/cursor/tokens.css +218 -0
- package/dist/designer/data/systems/dashboard/DESIGN.md +71 -0
- package/dist/designer/data/systems/dashboard/components.html +154 -0
- package/dist/designer/data/systems/dashboard/tokens.css +63 -0
- package/dist/designer/data/systems/default/DESIGN.md +62 -0
- package/dist/designer/data/systems/default/components.html +523 -0
- package/dist/designer/data/systems/default/tokens.css +200 -0
- package/dist/designer/data/systems/discord/DESIGN.md +162 -0
- package/dist/designer/data/systems/discord/components.html +359 -0
- package/dist/designer/data/systems/discord/tokens.css +125 -0
- package/dist/designer/data/systems/dithered/DESIGN.md +71 -0
- package/dist/designer/data/systems/dithered/components.html +136 -0
- package/dist/designer/data/systems/dithered/tokens.css +63 -0
- package/dist/designer/data/systems/doodle/DESIGN.md +71 -0
- package/dist/designer/data/systems/doodle/components.html +136 -0
- package/dist/designer/data/systems/doodle/tokens.css +63 -0
- package/dist/designer/data/systems/dramatic/DESIGN.md +71 -0
- package/dist/designer/data/systems/dramatic/components.html +136 -0
- package/dist/designer/data/systems/dramatic/tokens.css +63 -0
- package/dist/designer/data/systems/duolingo/DESIGN.md +154 -0
- package/dist/designer/data/systems/duolingo/components.html +532 -0
- package/dist/designer/data/systems/duolingo/tokens.css +130 -0
- package/dist/designer/data/systems/editorial/DESIGN.md +71 -0
- package/dist/designer/data/systems/editorial/components.html +154 -0
- package/dist/designer/data/systems/editorial/tokens.css +63 -0
- package/dist/designer/data/systems/elegant/DESIGN.md +71 -0
- package/dist/designer/data/systems/elegant/components.html +136 -0
- package/dist/designer/data/systems/elegant/tokens.css +63 -0
- package/dist/designer/data/systems/elevenlabs/DESIGN.md +268 -0
- package/dist/designer/data/systems/elevenlabs/components.html +342 -0
- package/dist/designer/data/systems/elevenlabs/tokens.css +127 -0
- package/dist/designer/data/systems/energetic/DESIGN.md +72 -0
- package/dist/designer/data/systems/energetic/components.html +136 -0
- package/dist/designer/data/systems/energetic/tokens.css +63 -0
- package/dist/designer/data/systems/enterprise/DESIGN.md +71 -0
- package/dist/designer/data/systems/enterprise/components.html +154 -0
- package/dist/designer/data/systems/enterprise/tokens.css +63 -0
- package/dist/designer/data/systems/expo/DESIGN.md +284 -0
- package/dist/designer/data/systems/expo/components.html +342 -0
- package/dist/designer/data/systems/expo/tokens.css +64 -0
- package/dist/designer/data/systems/expressive/DESIGN.md +71 -0
- package/dist/designer/data/systems/expressive/components.html +136 -0
- package/dist/designer/data/systems/expressive/tokens.css +63 -0
- package/dist/designer/data/systems/fantasy/DESIGN.md +71 -0
- package/dist/designer/data/systems/fantasy/components.html +136 -0
- package/dist/designer/data/systems/fantasy/tokens.css +63 -0
- package/dist/designer/data/systems/ferrari/DESIGN.md +317 -0
- package/dist/designer/data/systems/ferrari/components.html +342 -0
- package/dist/designer/data/systems/ferrari/tokens.css +64 -0
- package/dist/designer/data/systems/figma/DESIGN.md +223 -0
- package/dist/designer/data/systems/figma/components.html +344 -0
- package/dist/designer/data/systems/figma/tokens.css +126 -0
- package/dist/designer/data/systems/flat/DESIGN.md +71 -0
- package/dist/designer/data/systems/flat/components.html +136 -0
- package/dist/designer/data/systems/flat/tokens.css +63 -0
- package/dist/designer/data/systems/framer/DESIGN.md +249 -0
- package/dist/designer/data/systems/framer/components.html +438 -0
- package/dist/designer/data/systems/framer/tokens.css +238 -0
- package/dist/designer/data/systems/friendly/DESIGN.md +71 -0
- package/dist/designer/data/systems/friendly/components.html +136 -0
- package/dist/designer/data/systems/friendly/tokens.css +63 -0
- package/dist/designer/data/systems/futuristic/DESIGN.md +71 -0
- package/dist/designer/data/systems/futuristic/components.html +136 -0
- package/dist/designer/data/systems/futuristic/tokens.css +63 -0
- package/dist/designer/data/systems/github/DESIGN.md +155 -0
- package/dist/designer/data/systems/github/components.html +383 -0
- package/dist/designer/data/systems/github/tokens.css +125 -0
- package/dist/designer/data/systems/glassmorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/glassmorphism/components.html +154 -0
- package/dist/designer/data/systems/glassmorphism/tokens.css +63 -0
- package/dist/designer/data/systems/gradient/DESIGN.md +71 -0
- package/dist/designer/data/systems/gradient/components.html +154 -0
- package/dist/designer/data/systems/gradient/tokens.css +63 -0
- package/dist/designer/data/systems/hashicorp/DESIGN.md +281 -0
- package/dist/designer/data/systems/hashicorp/components.html +502 -0
- package/dist/designer/data/systems/hashicorp/tokens.css +272 -0
- package/dist/designer/data/systems/hud/DESIGN.md +173 -0
- package/dist/designer/data/systems/hud/components.html +136 -0
- package/dist/designer/data/systems/hud/tokens.css +63 -0
- package/dist/designer/data/systems/huggingface/DESIGN.md +149 -0
- package/dist/designer/data/systems/huggingface/components.html +346 -0
- package/dist/designer/data/systems/huggingface/tokens.css +125 -0
- package/dist/designer/data/systems/ibm/DESIGN.md +335 -0
- package/dist/designer/data/systems/ibm/components.html +342 -0
- package/dist/designer/data/systems/ibm/tokens.css +64 -0
- package/dist/designer/data/systems/intercom/DESIGN.md +149 -0
- package/dist/designer/data/systems/intercom/components.html +557 -0
- package/dist/designer/data/systems/intercom/tokens.css +150 -0
- package/dist/designer/data/systems/kami/DESIGN.md +410 -0
- package/dist/designer/data/systems/kami/components.html +601 -0
- package/dist/designer/data/systems/kami/tokens.css +272 -0
- package/dist/designer/data/systems/kraken/DESIGN.md +128 -0
- package/dist/designer/data/systems/kraken/components.html +342 -0
- package/dist/designer/data/systems/kraken/tokens.css +64 -0
- package/dist/designer/data/systems/lamborghini/DESIGN.md +291 -0
- package/dist/designer/data/systems/lamborghini/components.html +342 -0
- package/dist/designer/data/systems/lamborghini/tokens.css +64 -0
- package/dist/designer/data/systems/levels/DESIGN.md +71 -0
- package/dist/designer/data/systems/levels/components.html +154 -0
- package/dist/designer/data/systems/levels/tokens.css +63 -0
- package/dist/designer/data/systems/linear-app/DESIGN.md +370 -0
- package/dist/designer/data/systems/linear-app/components.html +370 -0
- package/dist/designer/data/systems/linear-app/tokens.css +130 -0
- package/dist/designer/data/systems/lingo/DESIGN.md +71 -0
- package/dist/designer/data/systems/lingo/components.html +154 -0
- package/dist/designer/data/systems/lingo/tokens.css +63 -0
- package/dist/designer/data/systems/loom/DESIGN.md +201 -0
- package/dist/designer/data/systems/loom/components.html +446 -0
- package/dist/designer/data/systems/loom/tokens.css +138 -0
- package/dist/designer/data/systems/lovable/DESIGN.md +301 -0
- package/dist/designer/data/systems/lovable/components.html +441 -0
- package/dist/designer/data/systems/lovable/tokens.css +258 -0
- package/dist/designer/data/systems/luxury/DESIGN.md +71 -0
- package/dist/designer/data/systems/luxury/components.html +154 -0
- package/dist/designer/data/systems/luxury/tokens.css +63 -0
- package/dist/designer/data/systems/mastercard/DESIGN.md +368 -0
- package/dist/designer/data/systems/mastercard/components.html +342 -0
- package/dist/designer/data/systems/mastercard/tokens.css +64 -0
- package/dist/designer/data/systems/material/DESIGN.md +71 -0
- package/dist/designer/data/systems/material/components.html +154 -0
- package/dist/designer/data/systems/material/tokens.css +63 -0
- package/dist/designer/data/systems/meta/DESIGN.md +369 -0
- package/dist/designer/data/systems/meta/components.html +398 -0
- package/dist/designer/data/systems/meta/tokens.css +263 -0
- package/dist/designer/data/systems/minimal/DESIGN.md +71 -0
- package/dist/designer/data/systems/minimal/components.html +154 -0
- package/dist/designer/data/systems/minimal/tokens.css +63 -0
- package/dist/designer/data/systems/minimax/DESIGN.md +260 -0
- package/dist/designer/data/systems/minimax/components.html +590 -0
- package/dist/designer/data/systems/minimax/tokens.css +148 -0
- package/dist/designer/data/systems/mintlify/DESIGN.md +329 -0
- package/dist/designer/data/systems/mintlify/components.html +737 -0
- package/dist/designer/data/systems/mintlify/tokens.css +256 -0
- package/dist/designer/data/systems/miro/DESIGN.md +111 -0
- package/dist/designer/data/systems/miro/components.html +342 -0
- package/dist/designer/data/systems/miro/tokens.css +64 -0
- package/dist/designer/data/systems/mission-control/DESIGN.md +474 -0
- package/dist/designer/data/systems/mission-control/components.html +136 -0
- package/dist/designer/data/systems/mission-control/tokens.css +63 -0
- package/dist/designer/data/systems/mistral-ai/DESIGN.md +264 -0
- package/dist/designer/data/systems/mistral-ai/components.html +338 -0
- package/dist/designer/data/systems/mistral-ai/tokens.css +125 -0
- package/dist/designer/data/systems/modern/DESIGN.md +71 -0
- package/dist/designer/data/systems/modern/components.html +154 -0
- package/dist/designer/data/systems/modern/tokens.css +63 -0
- package/dist/designer/data/systems/mongodb/DESIGN.md +269 -0
- package/dist/designer/data/systems/mongodb/components.html +462 -0
- package/dist/designer/data/systems/mongodb/tokens.css +176 -0
- package/dist/designer/data/systems/mono/DESIGN.md +71 -0
- package/dist/designer/data/systems/mono/components.html +136 -0
- package/dist/designer/data/systems/mono/tokens.css +63 -0
- package/dist/designer/data/systems/neobrutalism/DESIGN.md +71 -0
- package/dist/designer/data/systems/neobrutalism/components.html +136 -0
- package/dist/designer/data/systems/neobrutalism/tokens.css +63 -0
- package/dist/designer/data/systems/neon/DESIGN.md +71 -0
- package/dist/designer/data/systems/neon/components.html +136 -0
- package/dist/designer/data/systems/neon/tokens.css +63 -0
- package/dist/designer/data/systems/neumorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/neumorphism/components.html +136 -0
- package/dist/designer/data/systems/neumorphism/tokens.css +63 -0
- package/dist/designer/data/systems/nike/DESIGN.md +366 -0
- package/dist/designer/data/systems/nike/components.html +512 -0
- package/dist/designer/data/systems/nike/tokens.css +304 -0
- package/dist/designer/data/systems/notion/DESIGN.md +312 -0
- package/dist/designer/data/systems/notion/components.html +413 -0
- package/dist/designer/data/systems/notion/tokens.css +130 -0
- package/dist/designer/data/systems/nvidia/DESIGN.md +296 -0
- package/dist/designer/data/systems/nvidia/components.html +414 -0
- package/dist/designer/data/systems/nvidia/tokens.css +133 -0
- package/dist/designer/data/systems/ollama/DESIGN.md +270 -0
- package/dist/designer/data/systems/ollama/components.html +700 -0
- package/dist/designer/data/systems/ollama/tokens.css +242 -0
- package/dist/designer/data/systems/openai/DESIGN.md +140 -0
- package/dist/designer/data/systems/openai/components.html +382 -0
- package/dist/designer/data/systems/openai/tokens.css +133 -0
- package/dist/designer/data/systems/opencode-ai/DESIGN.md +284 -0
- package/dist/designer/data/systems/opencode-ai/components.html +389 -0
- package/dist/designer/data/systems/opencode-ai/tokens.css +126 -0
- package/dist/designer/data/systems/pacman/DESIGN.md +71 -0
- package/dist/designer/data/systems/pacman/components.html +342 -0
- package/dist/designer/data/systems/pacman/tokens.css +64 -0
- package/dist/designer/data/systems/paper/DESIGN.md +71 -0
- package/dist/designer/data/systems/paper/components.html +136 -0
- package/dist/designer/data/systems/paper/tokens.css +63 -0
- package/dist/designer/data/systems/perplexity/DESIGN.md +286 -0
- package/dist/designer/data/systems/perplexity/components.html +455 -0
- package/dist/designer/data/systems/perplexity/tokens.css +151 -0
- package/dist/designer/data/systems/perspective/DESIGN.md +71 -0
- package/dist/designer/data/systems/perspective/components.html +136 -0
- package/dist/designer/data/systems/perspective/tokens.css +63 -0
- package/dist/designer/data/systems/pinterest/DESIGN.md +233 -0
- package/dist/designer/data/systems/pinterest/components.html +865 -0
- package/dist/designer/data/systems/pinterest/tokens.css +262 -0
- package/dist/designer/data/systems/playstation/DESIGN.md +367 -0
- package/dist/designer/data/systems/playstation/components.html +414 -0
- package/dist/designer/data/systems/playstation/tokens.css +150 -0
- package/dist/designer/data/systems/posthog/DESIGN.md +259 -0
- package/dist/designer/data/systems/posthog/components.html +827 -0
- package/dist/designer/data/systems/posthog/tokens.css +272 -0
- package/dist/designer/data/systems/premium/DESIGN.md +71 -0
- package/dist/designer/data/systems/premium/components.html +154 -0
- package/dist/designer/data/systems/premium/tokens.css +63 -0
- package/dist/designer/data/systems/professional/DESIGN.md +71 -0
- package/dist/designer/data/systems/professional/components.html +136 -0
- package/dist/designer/data/systems/professional/tokens.css +63 -0
- package/dist/designer/data/systems/publication/DESIGN.md +71 -0
- package/dist/designer/data/systems/publication/components.html +154 -0
- package/dist/designer/data/systems/publication/tokens.css +63 -0
- package/dist/designer/data/systems/raycast/DESIGN.md +271 -0
- package/dist/designer/data/systems/raycast/components.html +507 -0
- package/dist/designer/data/systems/raycast/tokens.css +143 -0
- package/dist/designer/data/systems/refined/DESIGN.md +71 -0
- package/dist/designer/data/systems/refined/components.html +136 -0
- package/dist/designer/data/systems/refined/tokens.css +63 -0
- package/dist/designer/data/systems/renault/DESIGN.md +314 -0
- package/dist/designer/data/systems/renault/components.html +154 -0
- package/dist/designer/data/systems/renault/tokens.css +63 -0
- package/dist/designer/data/systems/replicate/DESIGN.md +264 -0
- package/dist/designer/data/systems/replicate/components.html +340 -0
- package/dist/designer/data/systems/replicate/tokens.css +125 -0
- package/dist/designer/data/systems/resend/DESIGN.md +306 -0
- package/dist/designer/data/systems/resend/components.html +839 -0
- package/dist/designer/data/systems/resend/tokens.css +353 -0
- package/dist/designer/data/systems/retro/DESIGN.md +71 -0
- package/dist/designer/data/systems/retro/components.html +136 -0
- package/dist/designer/data/systems/retro/tokens.css +63 -0
- package/dist/designer/data/systems/revolut/DESIGN.md +188 -0
- package/dist/designer/data/systems/revolut/components.html +342 -0
- package/dist/designer/data/systems/revolut/tokens.css +64 -0
- package/dist/designer/data/systems/runwayml/DESIGN.md +247 -0
- package/dist/designer/data/systems/runwayml/components.html +638 -0
- package/dist/designer/data/systems/runwayml/tokens.css +204 -0
- package/dist/designer/data/systems/sanity/DESIGN.md +360 -0
- package/dist/designer/data/systems/sanity/components.html +342 -0
- package/dist/designer/data/systems/sanity/tokens.css +64 -0
- package/dist/designer/data/systems/sentry/DESIGN.md +265 -0
- package/dist/designer/data/systems/sentry/components.html +387 -0
- package/dist/designer/data/systems/sentry/tokens.css +219 -0
- package/dist/designer/data/systems/shadcn/DESIGN.md +71 -0
- package/dist/designer/data/systems/shadcn/components.html +732 -0
- package/dist/designer/data/systems/shadcn/tokens.css +255 -0
- package/dist/designer/data/systems/shopify/DESIGN.md +353 -0
- package/dist/designer/data/systems/shopify/components.html +342 -0
- package/dist/designer/data/systems/shopify/tokens.css +141 -0
- package/dist/designer/data/systems/simple/DESIGN.md +71 -0
- package/dist/designer/data/systems/simple/components.html +136 -0
- package/dist/designer/data/systems/simple/tokens.css +63 -0
- package/dist/designer/data/systems/skeumorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/skeumorphism/components.html +136 -0
- package/dist/designer/data/systems/skeumorphism/tokens.css +63 -0
- package/dist/designer/data/systems/slack/DESIGN.md +363 -0
- package/dist/designer/data/systems/slack/components.html +387 -0
- package/dist/designer/data/systems/slack/tokens.css +127 -0
- package/dist/designer/data/systems/sleek/DESIGN.md +71 -0
- package/dist/designer/data/systems/sleek/components.html +136 -0
- package/dist/designer/data/systems/sleek/tokens.css +63 -0
- package/dist/designer/data/systems/spacex/DESIGN.md +197 -0
- package/dist/designer/data/systems/spacex/components.html +496 -0
- package/dist/designer/data/systems/spacex/tokens.css +154 -0
- package/dist/designer/data/systems/spacious/DESIGN.md +71 -0
- package/dist/designer/data/systems/spacious/components.html +136 -0
- package/dist/designer/data/systems/spacious/tokens.css +63 -0
- package/dist/designer/data/systems/spotify/DESIGN.md +249 -0
- package/dist/designer/data/systems/spotify/components.html +365 -0
- package/dist/designer/data/systems/spotify/tokens.css +127 -0
- package/dist/designer/data/systems/starbucks/DESIGN.md +583 -0
- package/dist/designer/data/systems/starbucks/components.html +493 -0
- package/dist/designer/data/systems/starbucks/tokens.css +182 -0
- package/dist/designer/data/systems/storytelling/DESIGN.md +71 -0
- package/dist/designer/data/systems/storytelling/components.html +136 -0
- package/dist/designer/data/systems/storytelling/tokens.css +63 -0
- package/dist/designer/data/systems/stripe/DESIGN.md +325 -0
- package/dist/designer/data/systems/stripe/components.html +1018 -0
- package/dist/designer/data/systems/stripe/tokens.css +295 -0
- package/dist/designer/data/systems/supabase/DESIGN.md +258 -0
- package/dist/designer/data/systems/supabase/components.html +741 -0
- package/dist/designer/data/systems/supabase/tokens.css +294 -0
- package/dist/designer/data/systems/superhuman/DESIGN.md +255 -0
- package/dist/designer/data/systems/superhuman/components.html +537 -0
- package/dist/designer/data/systems/superhuman/tokens.css +160 -0
- package/dist/designer/data/systems/tesla/DESIGN.md +289 -0
- package/dist/designer/data/systems/tesla/components.html +724 -0
- package/dist/designer/data/systems/tesla/tokens.css +285 -0
- package/dist/designer/data/systems/tetris/DESIGN.md +71 -0
- package/dist/designer/data/systems/tetris/components.html +342 -0
- package/dist/designer/data/systems/tetris/tokens.css +64 -0
- package/dist/designer/data/systems/theverge/DESIGN.md +342 -0
- package/dist/designer/data/systems/theverge/components.html +342 -0
- package/dist/designer/data/systems/theverge/tokens.css +64 -0
- package/dist/designer/data/systems/together-ai/DESIGN.md +266 -0
- package/dist/designer/data/systems/together-ai/components.html +422 -0
- package/dist/designer/data/systems/together-ai/tokens.css +127 -0
- package/dist/designer/data/systems/totality-festival/DESIGN.md +206 -0
- package/dist/designer/data/systems/totality-festival/components.html +136 -0
- package/dist/designer/data/systems/totality-festival/tokens.css +63 -0
- package/dist/designer/data/systems/trading-terminal/DESIGN.md +178 -0
- package/dist/designer/data/systems/trading-terminal/components.html +154 -0
- package/dist/designer/data/systems/trading-terminal/tokens.css +63 -0
- package/dist/designer/data/systems/uber/DESIGN.md +298 -0
- package/dist/designer/data/systems/uber/components.html +347 -0
- package/dist/designer/data/systems/uber/tokens.css +131 -0
- package/dist/designer/data/systems/urdu/DESIGN.md +1002 -0
- package/dist/designer/data/systems/urdu/components.html +136 -0
- package/dist/designer/data/systems/urdu/tokens.css +63 -0
- package/dist/designer/data/systems/vercel/DESIGN.md +313 -0
- package/dist/designer/data/systems/vercel/components.html +839 -0
- package/dist/designer/data/systems/vercel/tokens.css +270 -0
- package/dist/designer/data/systems/vibrant/DESIGN.md +71 -0
- package/dist/designer/data/systems/vibrant/components.html +136 -0
- package/dist/designer/data/systems/vibrant/tokens.css +63 -0
- package/dist/designer/data/systems/vintage/DESIGN.md +71 -0
- package/dist/designer/data/systems/vintage/components.html +136 -0
- package/dist/designer/data/systems/vintage/tokens.css +63 -0
- package/dist/designer/data/systems/vodafone/DESIGN.md +426 -0
- package/dist/designer/data/systems/vodafone/components.html +342 -0
- package/dist/designer/data/systems/vodafone/tokens.css +64 -0
- package/dist/designer/data/systems/voltagent/DESIGN.md +326 -0
- package/dist/designer/data/systems/voltagent/components.html +154 -0
- package/dist/designer/data/systems/voltagent/tokens.css +63 -0
- package/dist/designer/data/systems/warm-editorial/DESIGN.md +65 -0
- package/dist/designer/data/systems/warm-editorial/components.html +136 -0
- package/dist/designer/data/systems/warm-editorial/tokens.css +63 -0
- package/dist/designer/data/systems/warp/DESIGN.md +256 -0
- package/dist/designer/data/systems/warp/components.html +411 -0
- package/dist/designer/data/systems/warp/tokens.css +156 -0
- package/dist/designer/data/systems/webex/DESIGN.md +207 -0
- package/dist/designer/data/systems/webex/components.html +342 -0
- package/dist/designer/data/systems/webex/tokens.css +64 -0
- package/dist/designer/data/systems/webflow/DESIGN.md +95 -0
- package/dist/designer/data/systems/webflow/components.html +413 -0
- package/dist/designer/data/systems/webflow/tokens.css +191 -0
- package/dist/designer/data/systems/wechat/DESIGN.md +302 -0
- package/dist/designer/data/systems/wechat/components.html +507 -0
- package/dist/designer/data/systems/wechat/tokens.css +176 -0
- package/dist/designer/data/systems/wired/DESIGN.md +281 -0
- package/dist/designer/data/systems/wired/components.html +342 -0
- package/dist/designer/data/systems/wired/tokens.css +64 -0
- package/dist/designer/data/systems/wise/DESIGN.md +176 -0
- package/dist/designer/data/systems/wise/components.html +365 -0
- package/dist/designer/data/systems/wise/tokens.css +141 -0
- package/dist/designer/data/systems/x-ai/DESIGN.md +260 -0
- package/dist/designer/data/systems/x-ai/components.html +460 -0
- package/dist/designer/data/systems/x-ai/tokens.css +268 -0
- package/dist/designer/data/systems/xiaohongshu/DESIGN.md +402 -0
- package/dist/designer/data/systems/xiaohongshu/components.html +865 -0
- package/dist/designer/data/systems/xiaohongshu/tokens.css +193 -0
- package/dist/designer/data/systems/zapier/DESIGN.md +331 -0
- package/dist/designer/data/systems/zapier/components.html +342 -0
- package/dist/designer/data/systems/zapier/tokens.css +64 -0
- package/dist/designer/guidelines.js +176 -0
- package/dist/designer/index.js +236 -0
- package/dist/designer/skills.js +1675 -0
- package/dist/designer/systems.js +216 -0
- package/dist/server/pi-bridge.js +155 -5
- package/dist/server/session-stream.js +45 -1
- package/package.json +1 -1
|
@@ -0,0 +1,1018 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Inspired by Stripe — reference components</title>
|
|
7
|
+
<meta
|
|
8
|
+
name="description"
|
|
9
|
+
content="Reference fixture for design-systems/stripe. Every visible
|
|
10
|
+
value comes from tokens.css; the page itself follows Stripe's
|
|
11
|
+
rules — sohne-var with ss01 globally, weight 300 at display
|
|
12
|
+
sizes, deep navy (#061b31) headings instead of black, blue-
|
|
13
|
+
tinted multi-layer shadows on elevated surfaces, conservative
|
|
14
|
+
4-8px radius, and Stripe Purple capped at ≤2 visible uses
|
|
15
|
+
per screen."
|
|
16
|
+
/>
|
|
17
|
+
|
|
18
|
+
<style>
|
|
19
|
+
/* :root paste — sourced verbatim from
|
|
20
|
+
design-systems/stripe/tokens.css. Keep this block in sync
|
|
21
|
+
when tokens.css changes. The agent prompt instructs the
|
|
22
|
+
Designer panelist to paste this block as the FIRST thing in
|
|
23
|
+
their <style>, then reference everything below via var(...). */
|
|
24
|
+
:root {
|
|
25
|
+
--bg: #ffffff;
|
|
26
|
+
--surface: #ffffff;
|
|
27
|
+
--surface-warm: #f6f9fc;
|
|
28
|
+
|
|
29
|
+
--fg: #061b31;
|
|
30
|
+
--fg-2: #273951;
|
|
31
|
+
--muted: #64748d;
|
|
32
|
+
--meta: var(--muted);
|
|
33
|
+
|
|
34
|
+
--border: #e5edf5;
|
|
35
|
+
--border-soft: var(--border);
|
|
36
|
+
|
|
37
|
+
--accent: #533afd;
|
|
38
|
+
--accent-on: #ffffff;
|
|
39
|
+
|
|
40
|
+
--accent-hover: #4434d4;
|
|
41
|
+
--accent-active: #2e2b8c;
|
|
42
|
+
|
|
43
|
+
--success: #15be53;
|
|
44
|
+
--warn: #9b6829;
|
|
45
|
+
--danger: #ea2261;
|
|
46
|
+
|
|
47
|
+
--font-display:
|
|
48
|
+
"sohne-var", "Söhne", "Sohne",
|
|
49
|
+
"SF Pro Display", -apple-system, BlinkMacSystemFont,
|
|
50
|
+
system-ui, "Helvetica Neue", Arial, sans-serif;
|
|
51
|
+
--font-body:
|
|
52
|
+
"sohne-var", "Söhne", "Sohne",
|
|
53
|
+
"SF Pro Display", -apple-system, BlinkMacSystemFont,
|
|
54
|
+
system-ui, "Helvetica Neue", Arial, sans-serif;
|
|
55
|
+
--font-mono:
|
|
56
|
+
"SourceCodePro", "Source Code Pro",
|
|
57
|
+
ui-monospace, "SF Mono", "JetBrains Mono",
|
|
58
|
+
Menlo, Monaco, Consolas, monospace;
|
|
59
|
+
|
|
60
|
+
--text-xs: 12px;
|
|
61
|
+
--text-sm: 14px;
|
|
62
|
+
--text-base: 16px;
|
|
63
|
+
--text-lg: 18px;
|
|
64
|
+
--text-xl: 22px;
|
|
65
|
+
--text-2xl: 32px;
|
|
66
|
+
--text-3xl: 48px;
|
|
67
|
+
--text-4xl: 56px;
|
|
68
|
+
|
|
69
|
+
--leading-body: 1.40;
|
|
70
|
+
--leading-tight: 1.10;
|
|
71
|
+
--tracking-display: -0.02em;
|
|
72
|
+
|
|
73
|
+
--space-1: 4px;
|
|
74
|
+
--space-2: 8px;
|
|
75
|
+
--space-3: 12px;
|
|
76
|
+
--space-4: 16px;
|
|
77
|
+
--space-5: 20px;
|
|
78
|
+
--space-6: 24px;
|
|
79
|
+
--space-8: 32px;
|
|
80
|
+
--space-12: 48px;
|
|
81
|
+
|
|
82
|
+
--section-y-desktop: 96px;
|
|
83
|
+
--section-y-tablet: 64px;
|
|
84
|
+
--section-y-phone: 40px;
|
|
85
|
+
|
|
86
|
+
--radius-sm: 4px;
|
|
87
|
+
--radius-md: 6px;
|
|
88
|
+
--radius-lg: 8px;
|
|
89
|
+
--radius-pill: 9999px;
|
|
90
|
+
|
|
91
|
+
--elev-flat: none;
|
|
92
|
+
--elev-ring: 0 0 0 1px var(--border);
|
|
93
|
+
--elev-raised:
|
|
94
|
+
rgba(50, 50, 93, 0.25) 0px 30px 45px -30px,
|
|
95
|
+
rgba(0, 0, 0, 0.10) 0px 18px 36px -18px;
|
|
96
|
+
|
|
97
|
+
--focus-ring:
|
|
98
|
+
0 0 0 2px var(--accent),
|
|
99
|
+
0 0 0 5px color-mix(in oklab, var(--accent), transparent 75%);
|
|
100
|
+
|
|
101
|
+
--motion-fast: 150ms;
|
|
102
|
+
--motion-base: 200ms;
|
|
103
|
+
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
104
|
+
|
|
105
|
+
--container-max: 1080px;
|
|
106
|
+
--container-gutter-desktop: 32px;
|
|
107
|
+
--container-gutter-tablet: 24px;
|
|
108
|
+
--container-gutter-phone: 16px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* ─── Reset (minimal) ───────────────────────────────────────── */
|
|
112
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
113
|
+
html, body { margin: 0; padding: 0; }
|
|
114
|
+
body {
|
|
115
|
+
background: var(--bg);
|
|
116
|
+
color: var(--fg);
|
|
117
|
+
font-family: var(--font-body);
|
|
118
|
+
font-size: var(--text-base);
|
|
119
|
+
font-weight: 300; /* Stripe's signature: 300 is body weight */
|
|
120
|
+
line-height: var(--leading-body);
|
|
121
|
+
/* `"ss01"` is non-negotiable on every sohne-var element
|
|
122
|
+
(DESIGN.md §3 Principles). Inheriting from <body> applies
|
|
123
|
+
it to every descendant by default; specific components
|
|
124
|
+
that need `tnum` for financial tables override locally. */
|
|
125
|
+
font-feature-settings: "ss01";
|
|
126
|
+
-webkit-font-smoothing: antialiased;
|
|
127
|
+
}
|
|
128
|
+
strong { font-weight: 400; } /* never 600/700 in sohne-var per DESIGN.md §7 */
|
|
129
|
+
|
|
130
|
+
/* ─── Layout primitives ─────────────────────────────────────── */
|
|
131
|
+
.container {
|
|
132
|
+
max-width: var(--container-max);
|
|
133
|
+
margin-inline: auto;
|
|
134
|
+
padding-inline: var(--container-gutter-desktop);
|
|
135
|
+
}
|
|
136
|
+
section {
|
|
137
|
+
padding-block: var(--section-y-desktop);
|
|
138
|
+
}
|
|
139
|
+
section + section {
|
|
140
|
+
border-top: 1px solid var(--border);
|
|
141
|
+
}
|
|
142
|
+
@media (max-width: 1023px) {
|
|
143
|
+
.container { padding-inline: var(--container-gutter-tablet); }
|
|
144
|
+
section { padding-block: var(--section-y-tablet); }
|
|
145
|
+
}
|
|
146
|
+
@media (max-width: 639px) {
|
|
147
|
+
.container { padding-inline: var(--container-gutter-phone); }
|
|
148
|
+
section { padding-block: var(--section-y-phone); }
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* ─── Typography ────────────────────────────────────────────── */
|
|
152
|
+
h1, h2, h3 {
|
|
153
|
+
font-family: var(--font-display);
|
|
154
|
+
font-weight: 300; /* Stripe's anti-convention signature */
|
|
155
|
+
line-height: var(--leading-tight);
|
|
156
|
+
letter-spacing: var(--tracking-display);
|
|
157
|
+
color: var(--fg);
|
|
158
|
+
margin: 0;
|
|
159
|
+
}
|
|
160
|
+
h1 {
|
|
161
|
+
font-size: var(--text-4xl);
|
|
162
|
+
line-height: 1.03; /* DESIGN.md §3: display hero ratio */
|
|
163
|
+
letter-spacing: -0.025em; /* exact -1.4px at 56px */
|
|
164
|
+
}
|
|
165
|
+
h2 {
|
|
166
|
+
font-size: var(--text-2xl);
|
|
167
|
+
}
|
|
168
|
+
h3 {
|
|
169
|
+
font-size: var(--text-xl);
|
|
170
|
+
letter-spacing: -0.01em; /* relaxed at 22px per DESIGN.md §3 */
|
|
171
|
+
}
|
|
172
|
+
p { margin: 0; }
|
|
173
|
+
|
|
174
|
+
.lede {
|
|
175
|
+
font-size: var(--text-lg);
|
|
176
|
+
line-height: var(--leading-body);
|
|
177
|
+
color: var(--muted);
|
|
178
|
+
max-width: 56ch;
|
|
179
|
+
}
|
|
180
|
+
.body-muted { color: var(--muted); }
|
|
181
|
+
.body-meta { color: var(--meta); font-size: var(--text-sm); }
|
|
182
|
+
.body-sm { font-size: var(--text-sm); }
|
|
183
|
+
|
|
184
|
+
/* `.eyebrow` is the only place uppercase + tracking is used —
|
|
185
|
+
small label, deep-navy on lavender wash. tracking is well
|
|
186
|
+
above the craft 0.06em floor. */
|
|
187
|
+
.eyebrow {
|
|
188
|
+
display: inline-block;
|
|
189
|
+
font-size: var(--text-xs);
|
|
190
|
+
font-weight: 400;
|
|
191
|
+
line-height: 1;
|
|
192
|
+
color: var(--accent);
|
|
193
|
+
text-transform: uppercase;
|
|
194
|
+
letter-spacing: 0.08em;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.stack-3 > * + * { margin-block-start: var(--space-3); }
|
|
198
|
+
.stack-4 > * + * { margin-block-start: var(--space-4); }
|
|
199
|
+
.stack-6 > * + * { margin-block-start: var(--space-6); }
|
|
200
|
+
.stack-8 > * + * { margin-block-start: var(--space-8); }
|
|
201
|
+
|
|
202
|
+
/* ─── Buttons ───────────────────────────────────────────────
|
|
203
|
+
* Stripe buttons are conservative — 4px radius, 8/16 padding,
|
|
204
|
+
* weight-400 sohne-var with ss01. Hover shifts background
|
|
205
|
+
* colour; never transforms. Primary uses --accent / --accent-on;
|
|
206
|
+
* ghost uses the brand purple as text colour against a
|
|
207
|
+
* transparent shell with a purple-tinted border. */
|
|
208
|
+
.btn {
|
|
209
|
+
display: inline-flex;
|
|
210
|
+
align-items: center;
|
|
211
|
+
gap: var(--space-2);
|
|
212
|
+
padding: 8px 16px;
|
|
213
|
+
border-radius: var(--radius-sm);
|
|
214
|
+
font-family: var(--font-display);
|
|
215
|
+
font-feature-settings: "ss01";
|
|
216
|
+
font-weight: 400;
|
|
217
|
+
font-size: var(--text-base);
|
|
218
|
+
line-height: 1;
|
|
219
|
+
cursor: pointer;
|
|
220
|
+
border: 1px solid transparent;
|
|
221
|
+
background: transparent;
|
|
222
|
+
color: var(--fg);
|
|
223
|
+
text-decoration: none;
|
|
224
|
+
transition:
|
|
225
|
+
background-color var(--motion-fast) var(--ease-standard),
|
|
226
|
+
border-color var(--motion-fast) var(--ease-standard),
|
|
227
|
+
color var(--motion-fast) var(--ease-standard),
|
|
228
|
+
box-shadow var(--motion-fast) var(--ease-standard);
|
|
229
|
+
}
|
|
230
|
+
.btn:focus-visible {
|
|
231
|
+
outline: none;
|
|
232
|
+
box-shadow: var(--focus-ring);
|
|
233
|
+
}
|
|
234
|
+
.btn-primary {
|
|
235
|
+
background: var(--accent);
|
|
236
|
+
color: var(--accent-on);
|
|
237
|
+
}
|
|
238
|
+
.btn-primary:hover { background: var(--accent-hover); }
|
|
239
|
+
.btn-primary:active { background: var(--accent-active); }
|
|
240
|
+
|
|
241
|
+
/* Ghost / outlined — DESIGN.md §4 spec verbatim.
|
|
242
|
+
The hover wash is the only place we tint --accent with
|
|
243
|
+
transparency inline; it's a once-per-page rule rather than
|
|
244
|
+
a cross-component pattern, so it stays inline rather than
|
|
245
|
+
being promoted to a token. */
|
|
246
|
+
.btn-ghost {
|
|
247
|
+
background: transparent;
|
|
248
|
+
color: var(--accent);
|
|
249
|
+
border-color: color-mix(in oklab, var(--accent), white 65%);
|
|
250
|
+
}
|
|
251
|
+
.btn-ghost:hover {
|
|
252
|
+
background: color-mix(in oklab, var(--accent), transparent 95%);
|
|
253
|
+
border-color: color-mix(in oklab, var(--accent), white 55%);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Compact button for nav and toolbar — 14px / 4px radius */
|
|
257
|
+
.btn-sm {
|
|
258
|
+
padding: 6px 12px;
|
|
259
|
+
font-size: var(--text-sm);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* ─── Inputs ────────────────────────────────────────────── */
|
|
263
|
+
.field {
|
|
264
|
+
display: flex;
|
|
265
|
+
flex-direction: column;
|
|
266
|
+
gap: var(--space-2);
|
|
267
|
+
}
|
|
268
|
+
.field label {
|
|
269
|
+
font-size: var(--text-sm);
|
|
270
|
+
font-weight: 400;
|
|
271
|
+
color: var(--fg-2); /* dark-slate label per DESIGN.md §4 */
|
|
272
|
+
}
|
|
273
|
+
.field input,
|
|
274
|
+
.field select,
|
|
275
|
+
.field textarea {
|
|
276
|
+
padding: 10px 12px;
|
|
277
|
+
border-radius: var(--radius-sm);
|
|
278
|
+
border: 1px solid var(--border);
|
|
279
|
+
background: var(--surface);
|
|
280
|
+
color: var(--fg);
|
|
281
|
+
font-family: inherit;
|
|
282
|
+
font-feature-settings: "ss01";
|
|
283
|
+
font-size: var(--text-base);
|
|
284
|
+
font-weight: 300;
|
|
285
|
+
line-height: 1.4;
|
|
286
|
+
outline: none;
|
|
287
|
+
transition:
|
|
288
|
+
border-color var(--motion-fast) var(--ease-standard),
|
|
289
|
+
box-shadow var(--motion-fast) var(--ease-standard);
|
|
290
|
+
}
|
|
291
|
+
.field input:focus-visible,
|
|
292
|
+
.field select:focus-visible,
|
|
293
|
+
.field textarea:focus-visible {
|
|
294
|
+
border-color: var(--accent);
|
|
295
|
+
box-shadow: var(--focus-ring);
|
|
296
|
+
}
|
|
297
|
+
.field input::placeholder { color: var(--muted); }
|
|
298
|
+
.field-help {
|
|
299
|
+
font-size: var(--text-xs);
|
|
300
|
+
color: var(--muted);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/* ─── Cards ─────────────────────────────────────────────────
|
|
304
|
+
* Two card flavours:
|
|
305
|
+
* .card hairline border, no shadow — for grids and
|
|
306
|
+
* form panels where the border IS the edge.
|
|
307
|
+
* .card-elevated no border, blue-tinted multi-layer shadow —
|
|
308
|
+
* for featured / hero cards where Stripe's
|
|
309
|
+
* trademark elevation does the work.
|
|
310
|
+
* Both share radius and padding. Hover on .card-elevated
|
|
311
|
+
* intensifies the shadow; .card stays static (border doesn't
|
|
312
|
+
* pulse). */
|
|
313
|
+
.card {
|
|
314
|
+
background: var(--surface);
|
|
315
|
+
border: 1px solid var(--border);
|
|
316
|
+
border-radius: var(--radius-md);
|
|
317
|
+
padding: var(--space-6);
|
|
318
|
+
display: flex;
|
|
319
|
+
flex-direction: column;
|
|
320
|
+
gap: var(--space-3);
|
|
321
|
+
}
|
|
322
|
+
.card-elevated {
|
|
323
|
+
background: var(--surface);
|
|
324
|
+
border-radius: var(--radius-lg);
|
|
325
|
+
padding: var(--space-8);
|
|
326
|
+
display: flex;
|
|
327
|
+
flex-direction: column;
|
|
328
|
+
gap: var(--space-4);
|
|
329
|
+
box-shadow: var(--elev-raised);
|
|
330
|
+
transition: box-shadow var(--motion-base) var(--ease-standard);
|
|
331
|
+
}
|
|
332
|
+
.card-elevated:hover {
|
|
333
|
+
/* Intensify the near layer; far stays the same so the lift
|
|
334
|
+
reads as "drawing closer", not "growing larger". */
|
|
335
|
+
box-shadow:
|
|
336
|
+
rgba(50, 50, 93, 0.25) 0px 30px 45px -30px,
|
|
337
|
+
rgba(0, 0, 0, 0.14) 0px 24px 48px -16px;
|
|
338
|
+
}
|
|
339
|
+
.card-title {
|
|
340
|
+
font-family: var(--font-display);
|
|
341
|
+
font-feature-settings: "ss01";
|
|
342
|
+
font-weight: 300;
|
|
343
|
+
font-size: var(--text-xl);
|
|
344
|
+
line-height: 1.12;
|
|
345
|
+
letter-spacing: -0.01em;
|
|
346
|
+
color: var(--fg);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/* ─── Badges ────────────────────────────────────────────────
|
|
350
|
+
* Success badge per DESIGN.md §4. Pill radius is wrong here —
|
|
351
|
+
* Stripe uses 4px on badges, never 9999px. */
|
|
352
|
+
.badge {
|
|
353
|
+
display: inline-flex;
|
|
354
|
+
align-items: center;
|
|
355
|
+
gap: 6px;
|
|
356
|
+
padding: 1px 6px;
|
|
357
|
+
border-radius: var(--radius-sm);
|
|
358
|
+
font-size: var(--text-xs);
|
|
359
|
+
font-weight: 300;
|
|
360
|
+
line-height: 1.6;
|
|
361
|
+
font-feature-settings: "ss01";
|
|
362
|
+
}
|
|
363
|
+
.badge-success {
|
|
364
|
+
color: var(--success);
|
|
365
|
+
background: color-mix(in oklab, var(--success), transparent 80%);
|
|
366
|
+
border: 1px solid
|
|
367
|
+
color-mix(in oklab, var(--success), transparent 60%);
|
|
368
|
+
}
|
|
369
|
+
.badge-muted {
|
|
370
|
+
color: var(--muted);
|
|
371
|
+
background: var(--surface-warm);
|
|
372
|
+
border: 1px solid var(--border);
|
|
373
|
+
}
|
|
374
|
+
.badge-accent {
|
|
375
|
+
color: var(--accent);
|
|
376
|
+
background: color-mix(in oklab, var(--accent), white 88%);
|
|
377
|
+
border: 1px solid
|
|
378
|
+
color-mix(in oklab, var(--accent), white 70%);
|
|
379
|
+
}
|
|
380
|
+
.badge-dot {
|
|
381
|
+
width: 6px;
|
|
382
|
+
height: 6px;
|
|
383
|
+
border-radius: 50%;
|
|
384
|
+
background: currentColor;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/* ─── Links ─────────────────────────────────────────────────
|
|
388
|
+
* Default link is Stripe Purple. Underline appears only on
|
|
389
|
+
* hover, at a generous offset so the rule reads as a
|
|
390
|
+
* deliberate gesture. */
|
|
391
|
+
a {
|
|
392
|
+
color: var(--accent);
|
|
393
|
+
text-decoration: none;
|
|
394
|
+
font-feature-settings: "ss01";
|
|
395
|
+
}
|
|
396
|
+
a:hover {
|
|
397
|
+
text-decoration: underline;
|
|
398
|
+
text-underline-offset: 3px;
|
|
399
|
+
text-decoration-thickness: 1px;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/* ─── Kbd ───────────────────────────────────────────────────
|
|
403
|
+
* SourceCodePro at 12px, hairline border, navy text. Stripe's
|
|
404
|
+
* kbd is small and dense — no padding inflation. */
|
|
405
|
+
kbd {
|
|
406
|
+
font-family: var(--font-mono);
|
|
407
|
+
font-size: 11px;
|
|
408
|
+
font-weight: 500;
|
|
409
|
+
padding: 2px 6px;
|
|
410
|
+
border-radius: var(--radius-sm);
|
|
411
|
+
border: 1px solid var(--border);
|
|
412
|
+
background: var(--surface-warm);
|
|
413
|
+
color: var(--fg-2);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/* ─── Distinctive brand element: gradient halo ──────────────
|
|
417
|
+
* Stripe's signature hero decoration is a soft pastel wash
|
|
418
|
+
* behind the headline — built here from the brand purple
|
|
419
|
+
* mixed at varying transparencies (no raw hex outside :root).
|
|
420
|
+
* The halo sits in a layered radial-gradient and lets the
|
|
421
|
+
* navy headline read as "floating in twilight". */
|
|
422
|
+
.halo {
|
|
423
|
+
position: absolute;
|
|
424
|
+
inset: -10% -20% -20% -10%;
|
|
425
|
+
pointer-events: none;
|
|
426
|
+
background:
|
|
427
|
+
radial-gradient(
|
|
428
|
+
60% 50% at 15% 30%,
|
|
429
|
+
color-mix(in oklab, var(--accent), transparent 70%) 0%,
|
|
430
|
+
color-mix(in oklab, var(--accent), transparent 100%) 65%
|
|
431
|
+
),
|
|
432
|
+
radial-gradient(
|
|
433
|
+
45% 40% at 85% 20%,
|
|
434
|
+
color-mix(in oklab, var(--danger), transparent 75%) 0%,
|
|
435
|
+
color-mix(in oklab, var(--danger), transparent 100%) 70%
|
|
436
|
+
),
|
|
437
|
+
radial-gradient(
|
|
438
|
+
55% 45% at 70% 80%,
|
|
439
|
+
color-mix(in oklab, var(--accent), transparent 80%) 0%,
|
|
440
|
+
color-mix(in oklab, var(--accent), transparent 100%) 70%
|
|
441
|
+
);
|
|
442
|
+
filter: blur(40px);
|
|
443
|
+
z-index: 0;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/* ─── Code block ────────────────────────────────────────────
|
|
447
|
+
* DESIGN.md §3: SourceCodePro at 12px / weight 500 / 2.00
|
|
448
|
+
* line-height. The 2.00 leading is intentional — Stripe's
|
|
449
|
+
* payment-integration snippets need to read like prose, not
|
|
450
|
+
* like a terminal dump. */
|
|
451
|
+
.code {
|
|
452
|
+
background: var(--surface-warm);
|
|
453
|
+
border: 1px solid var(--border);
|
|
454
|
+
border-radius: var(--radius-md);
|
|
455
|
+
padding: var(--space-5);
|
|
456
|
+
font-family: var(--font-mono);
|
|
457
|
+
font-size: var(--text-xs);
|
|
458
|
+
font-weight: 500;
|
|
459
|
+
line-height: 2.0;
|
|
460
|
+
color: var(--fg);
|
|
461
|
+
white-space: pre;
|
|
462
|
+
overflow-x: auto;
|
|
463
|
+
}
|
|
464
|
+
.code .k { color: var(--accent); } /* keyword */
|
|
465
|
+
.code .s { color: var(--success); } /* string */
|
|
466
|
+
.code .c { color: var(--muted); } /* comment */
|
|
467
|
+
.code .n { color: var(--fg-2); } /* identifier */
|
|
468
|
+
|
|
469
|
+
/* ─── Metric (tabular financial rendering) ──────────────────
|
|
470
|
+
* DESIGN.md §3 "Caption Tabular" — `tnum` for any number in
|
|
471
|
+
* a data display so columns of figures align. The values use
|
|
472
|
+
* deep navy; the labels use slate. */
|
|
473
|
+
.metric {
|
|
474
|
+
display: flex;
|
|
475
|
+
flex-direction: column;
|
|
476
|
+
gap: 4px;
|
|
477
|
+
}
|
|
478
|
+
.metric-value {
|
|
479
|
+
font-family: var(--font-display);
|
|
480
|
+
font-feature-settings: "tnum", "ss01";
|
|
481
|
+
font-weight: 300;
|
|
482
|
+
font-size: var(--text-2xl);
|
|
483
|
+
line-height: 1.1;
|
|
484
|
+
letter-spacing: -0.01em;
|
|
485
|
+
color: var(--fg);
|
|
486
|
+
}
|
|
487
|
+
.metric-label {
|
|
488
|
+
font-size: var(--text-sm);
|
|
489
|
+
color: var(--muted);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/* ─── Section-specific layout ───────────────────────────── */
|
|
493
|
+
.hero {
|
|
494
|
+
position: relative;
|
|
495
|
+
overflow: hidden;
|
|
496
|
+
}
|
|
497
|
+
.hero-inner {
|
|
498
|
+
position: relative;
|
|
499
|
+
z-index: 1;
|
|
500
|
+
display: grid;
|
|
501
|
+
grid-template-columns: 1.3fr 1fr;
|
|
502
|
+
gap: var(--space-12);
|
|
503
|
+
align-items: end;
|
|
504
|
+
}
|
|
505
|
+
@media (max-width: 1023px) {
|
|
506
|
+
.hero-inner { grid-template-columns: 1fr; gap: var(--space-8); }
|
|
507
|
+
}
|
|
508
|
+
.hero h1 {
|
|
509
|
+
max-width: 14ch;
|
|
510
|
+
margin: 0;
|
|
511
|
+
}
|
|
512
|
+
.hero-actions {
|
|
513
|
+
display: flex;
|
|
514
|
+
gap: var(--space-3);
|
|
515
|
+
margin-block-start: var(--space-8);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.features-grid {
|
|
519
|
+
display: grid;
|
|
520
|
+
grid-template-columns: repeat(3, 1fr);
|
|
521
|
+
gap: var(--space-5);
|
|
522
|
+
margin-block-start: var(--space-8);
|
|
523
|
+
}
|
|
524
|
+
@media (max-width: 1023px) {
|
|
525
|
+
.features-grid { grid-template-columns: 1fr 1fr; }
|
|
526
|
+
}
|
|
527
|
+
@media (max-width: 639px) {
|
|
528
|
+
.features-grid { grid-template-columns: 1fr; }
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/* Pricing-style featured card row — exercises .card-elevated
|
|
532
|
+
alongside .card so the elevation contrast is visible. */
|
|
533
|
+
.pricing-grid {
|
|
534
|
+
display: grid;
|
|
535
|
+
grid-template-columns: 1fr 1.1fr 1fr;
|
|
536
|
+
gap: var(--space-5);
|
|
537
|
+
align-items: stretch;
|
|
538
|
+
margin-block-start: var(--space-8);
|
|
539
|
+
}
|
|
540
|
+
@media (max-width: 1023px) {
|
|
541
|
+
.pricing-grid { grid-template-columns: 1fr; }
|
|
542
|
+
}
|
|
543
|
+
.pricing-price {
|
|
544
|
+
font-family: var(--font-display);
|
|
545
|
+
font-feature-settings: "tnum", "ss01";
|
|
546
|
+
font-weight: 300;
|
|
547
|
+
font-size: var(--text-3xl);
|
|
548
|
+
line-height: 1.05;
|
|
549
|
+
letter-spacing: -0.02em;
|
|
550
|
+
color: var(--fg);
|
|
551
|
+
}
|
|
552
|
+
.pricing-price small {
|
|
553
|
+
font-size: var(--text-sm);
|
|
554
|
+
color: var(--muted);
|
|
555
|
+
margin-inline-start: var(--space-2);
|
|
556
|
+
font-feature-settings: "ss01";
|
|
557
|
+
}
|
|
558
|
+
.pricing-list {
|
|
559
|
+
list-style: none;
|
|
560
|
+
padding: 0;
|
|
561
|
+
margin: 0;
|
|
562
|
+
display: flex;
|
|
563
|
+
flex-direction: column;
|
|
564
|
+
gap: var(--space-2);
|
|
565
|
+
}
|
|
566
|
+
.pricing-list li {
|
|
567
|
+
position: relative;
|
|
568
|
+
padding-inline-start: var(--space-5);
|
|
569
|
+
font-size: var(--text-sm);
|
|
570
|
+
color: var(--fg-2);
|
|
571
|
+
line-height: 1.5;
|
|
572
|
+
}
|
|
573
|
+
.pricing-list li::before {
|
|
574
|
+
content: "";
|
|
575
|
+
position: absolute;
|
|
576
|
+
left: 0;
|
|
577
|
+
top: 0.45em;
|
|
578
|
+
width: 12px;
|
|
579
|
+
height: 7px;
|
|
580
|
+
border-left: 1.5px solid var(--accent);
|
|
581
|
+
border-bottom: 1.5px solid var(--accent);
|
|
582
|
+
transform: rotate(-45deg);
|
|
583
|
+
transform-origin: 0 100%;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
.metric-row {
|
|
587
|
+
display: grid;
|
|
588
|
+
grid-template-columns: repeat(4, 1fr);
|
|
589
|
+
gap: var(--space-8);
|
|
590
|
+
}
|
|
591
|
+
@media (max-width: 767px) {
|
|
592
|
+
.metric-row { grid-template-columns: repeat(2, 1fr); gap: var(--space-6); }
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
.form-row {
|
|
596
|
+
display: grid;
|
|
597
|
+
grid-template-columns: 1.2fr 1fr;
|
|
598
|
+
gap: var(--space-12);
|
|
599
|
+
align-items: start;
|
|
600
|
+
}
|
|
601
|
+
@media (max-width: 1023px) {
|
|
602
|
+
.form-row { grid-template-columns: 1fr; }
|
|
603
|
+
}
|
|
604
|
+
.form {
|
|
605
|
+
display: flex;
|
|
606
|
+
flex-direction: column;
|
|
607
|
+
gap: var(--space-4);
|
|
608
|
+
max-width: 460px;
|
|
609
|
+
padding: var(--space-6);
|
|
610
|
+
background: var(--surface);
|
|
611
|
+
border: 1px solid var(--border);
|
|
612
|
+
border-radius: var(--radius-lg);
|
|
613
|
+
box-shadow: var(--elev-raised);
|
|
614
|
+
}
|
|
615
|
+
.form-grid-2 {
|
|
616
|
+
display: grid;
|
|
617
|
+
grid-template-columns: 1fr 1fr;
|
|
618
|
+
gap: var(--space-3);
|
|
619
|
+
}
|
|
620
|
+
.form-actions {
|
|
621
|
+
display: flex;
|
|
622
|
+
gap: var(--space-3);
|
|
623
|
+
margin-block-start: var(--space-2);
|
|
624
|
+
align-items: center;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.icon { width: 14px; height: 14px; flex-shrink: 0; }
|
|
628
|
+
.row-between {
|
|
629
|
+
display: flex;
|
|
630
|
+
align-items: center;
|
|
631
|
+
justify-content: space-between;
|
|
632
|
+
gap: var(--space-3);
|
|
633
|
+
}
|
|
634
|
+
</style>
|
|
635
|
+
</head>
|
|
636
|
+
<body>
|
|
637
|
+
<main class="container">
|
|
638
|
+
<!-- ════════════════════════════════════════════════════════════
|
|
639
|
+
HERO — exercises: gradient .halo (Stripe's signature
|
|
640
|
+
pastel-wash behind the headline, built entirely from
|
|
641
|
+
color-mix() over --accent and --danger), h1 at 56px /
|
|
642
|
+
weight 300 / -0.025em (the brand's "whisper authority"),
|
|
643
|
+
.lede in slate, .btn-primary + .btn-ghost from DESIGN.md
|
|
644
|
+
§4 verbatim. Asymmetric grid on desktop; single column on
|
|
645
|
+
tablet.
|
|
646
|
+
═══════════════════════════════════════════════════════════════ -->
|
|
647
|
+
<section class="hero" data-od-id="hero">
|
|
648
|
+
<div class="halo" aria-hidden="true"></div>
|
|
649
|
+
|
|
650
|
+
<div class="hero-inner">
|
|
651
|
+
<div class="stack-6">
|
|
652
|
+
<span class="eyebrow">Payments · Infrastructure</span>
|
|
653
|
+
<h1>Financial infrastructure designed for the internet.</h1>
|
|
654
|
+
<p class="lede">
|
|
655
|
+
The reference fixture pastes Stripe's token block into a
|
|
656
|
+
single <code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)"><style></code>
|
|
657
|
+
and renders a recognisable Stripe page without authoring
|
|
658
|
+
any additional values — every colour, type size, and
|
|
659
|
+
shadow below resolves through <code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">var(--*)</code>.
|
|
660
|
+
</p>
|
|
661
|
+
<div class="hero-actions">
|
|
662
|
+
<a href="./tokens.css" class="btn btn-primary">
|
|
663
|
+
Start now
|
|
664
|
+
<svg
|
|
665
|
+
class="icon"
|
|
666
|
+
viewBox="0 0 24 24"
|
|
667
|
+
fill="none"
|
|
668
|
+
stroke="currentColor"
|
|
669
|
+
stroke-width="1.5"
|
|
670
|
+
stroke-linecap="round"
|
|
671
|
+
stroke-linejoin="round"
|
|
672
|
+
aria-hidden="true"
|
|
673
|
+
>
|
|
674
|
+
<path d="M5 12h14M13 6l6 6-6 6" />
|
|
675
|
+
</svg>
|
|
676
|
+
</a>
|
|
677
|
+
<a href="./DESIGN.md" class="btn btn-ghost">Contact sales</a>
|
|
678
|
+
</div>
|
|
679
|
+
</div>
|
|
680
|
+
|
|
681
|
+
<aside class="card-elevated" aria-label="Payment summary">
|
|
682
|
+
<div class="row-between">
|
|
683
|
+
<span class="eyebrow">Payment intent</span>
|
|
684
|
+
<span class="badge badge-success">
|
|
685
|
+
<span class="badge-dot" aria-hidden="true"></span>
|
|
686
|
+
Succeeded
|
|
687
|
+
</span>
|
|
688
|
+
</div>
|
|
689
|
+
|
|
690
|
+
<div class="metric">
|
|
691
|
+
<div
|
|
692
|
+
class="metric-value"
|
|
693
|
+
style="font-size: var(--text-3xl); letter-spacing: -0.02em"
|
|
694
|
+
>
|
|
695
|
+
$4,280.<span style="color: var(--muted)">00</span>
|
|
696
|
+
</div>
|
|
697
|
+
<div class="metric-label">
|
|
698
|
+
Charged via card_1NqK… · 2026-05-14
|
|
699
|
+
</div>
|
|
700
|
+
</div>
|
|
701
|
+
|
|
702
|
+
<div
|
|
703
|
+
style="
|
|
704
|
+
display: grid;
|
|
705
|
+
grid-template-columns: 1fr 1fr;
|
|
706
|
+
gap: var(--space-3);
|
|
707
|
+
padding-block-start: var(--space-3);
|
|
708
|
+
border-top: 1px solid var(--border);
|
|
709
|
+
"
|
|
710
|
+
>
|
|
711
|
+
<div class="metric">
|
|
712
|
+
<div class="metric-label">Net</div>
|
|
713
|
+
<div
|
|
714
|
+
class="metric-value"
|
|
715
|
+
style="font-size: var(--text-base); color: var(--fg-2)"
|
|
716
|
+
>
|
|
717
|
+
$4,154.88
|
|
718
|
+
</div>
|
|
719
|
+
</div>
|
|
720
|
+
<div class="metric">
|
|
721
|
+
<div class="metric-label">Fee</div>
|
|
722
|
+
<div
|
|
723
|
+
class="metric-value"
|
|
724
|
+
style="font-size: var(--text-base); color: var(--fg-2)"
|
|
725
|
+
>
|
|
726
|
+
$125.12
|
|
727
|
+
</div>
|
|
728
|
+
</div>
|
|
729
|
+
</div>
|
|
730
|
+
|
|
731
|
+
<p class="body-sm body-muted">
|
|
732
|
+
Press <kbd>⌘</kbd> <kbd>K</kbd> to inspect this token block
|
|
733
|
+
in the design-system viewer.
|
|
734
|
+
</p>
|
|
735
|
+
</aside>
|
|
736
|
+
</div>
|
|
737
|
+
</section>
|
|
738
|
+
|
|
739
|
+
<!-- ════════════════════════════════════════════════════════════
|
|
740
|
+
METRICS — exercises: .metric pattern with `tnum`, deep-
|
|
741
|
+
navy values, slate labels. Numbers describe the fixture
|
|
742
|
+
itself, not invented claims.
|
|
743
|
+
═══════════════════════════════════════════════════════════════ -->
|
|
744
|
+
<section data-od-id="metrics">
|
|
745
|
+
<div class="stack-3">
|
|
746
|
+
<span class="eyebrow">Schema in numbers</span>
|
|
747
|
+
<h2 style="max-width: 24ch">
|
|
748
|
+
Fifty-six tokens carry every visible value below.
|
|
749
|
+
</h2>
|
|
750
|
+
</div>
|
|
751
|
+
|
|
752
|
+
<div class="metric-row" style="margin-block-start: var(--space-8)">
|
|
753
|
+
<div class="metric">
|
|
754
|
+
<div class="metric-value">56</div>
|
|
755
|
+
<div class="metric-label">tokens in :root</div>
|
|
756
|
+
</div>
|
|
757
|
+
<div class="metric">
|
|
758
|
+
<div class="metric-value">0</div>
|
|
759
|
+
<div class="metric-label">brand-C extensions</div>
|
|
760
|
+
</div>
|
|
761
|
+
<div class="metric">
|
|
762
|
+
<div class="metric-value">3</div>
|
|
763
|
+
<div class="metric-label">elevation levels (flat · ring · raised)</div>
|
|
764
|
+
</div>
|
|
765
|
+
<div class="metric">
|
|
766
|
+
<div class="metric-value">300</div>
|
|
767
|
+
<div class="metric-label">default sohne-var weight</div>
|
|
768
|
+
</div>
|
|
769
|
+
</div>
|
|
770
|
+
</section>
|
|
771
|
+
|
|
772
|
+
<!-- ════════════════════════════════════════════════════════════
|
|
773
|
+
FEATURES — exercises: h2, .card (hairline border), h3 with
|
|
774
|
+
tighter tracking, body text, .features-grid responsive
|
|
775
|
+
ladder. Each card describes a real property of this
|
|
776
|
+
fixture (no "feature one/two/three" filler).
|
|
777
|
+
═══════════════════════════════════════════════════════════════ -->
|
|
778
|
+
<section data-od-id="features">
|
|
779
|
+
<div class="stack-3">
|
|
780
|
+
<span class="eyebrow">What this fixture exercises</span>
|
|
781
|
+
<h2 style="max-width: 30ch">
|
|
782
|
+
Every component renders through <code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">var(--*)</code> —
|
|
783
|
+
no raw hex, no off-token type.
|
|
784
|
+
</h2>
|
|
785
|
+
</div>
|
|
786
|
+
|
|
787
|
+
<div class="features-grid">
|
|
788
|
+
<article class="card">
|
|
789
|
+
<h3 class="card-title">Shadow as identity</h3>
|
|
790
|
+
<p class="body-muted body-sm">
|
|
791
|
+
The trademark blue-tinted multi-layer shadow lives at
|
|
792
|
+
<code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">--elev-raised</code>.
|
|
793
|
+
Rebinding it to a neutral drop shadow erases Stripe's
|
|
794
|
+
atmosphere even when every colour is right.
|
|
795
|
+
</p>
|
|
796
|
+
<a href="./tokens.css" class="body-sm">Inspect tokens →</a>
|
|
797
|
+
</article>
|
|
798
|
+
|
|
799
|
+
<article class="card">
|
|
800
|
+
<h3 class="card-title">Light weight as voice</h3>
|
|
801
|
+
<p class="body-muted body-sm">
|
|
802
|
+
Display sizes run at weight 300 with negative tracking.
|
|
803
|
+
Stripe's headlines feel like they don't need to shout;
|
|
804
|
+
weight 600 would erase the brand instantly.
|
|
805
|
+
</p>
|
|
806
|
+
<a href="./DESIGN.md" class="body-sm">Read the spec →</a>
|
|
807
|
+
</article>
|
|
808
|
+
|
|
809
|
+
<article class="card">
|
|
810
|
+
<h3 class="card-title">Accent discipline</h3>
|
|
811
|
+
<p class="body-muted body-sm">
|
|
812
|
+
<code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">--accent</code>
|
|
813
|
+
appears at most twice per screen — primary CTA and link
|
|
814
|
+
colour. Decorative ruby / magenta gradients live in the
|
|
815
|
+
hero halo, not on interactive elements.
|
|
816
|
+
</p>
|
|
817
|
+
<a href="./tokens.css" class="body-sm">Inspect accent →</a>
|
|
818
|
+
</article>
|
|
819
|
+
</div>
|
|
820
|
+
</section>
|
|
821
|
+
|
|
822
|
+
<!-- ════════════════════════════════════════════════════════════
|
|
823
|
+
PRICING — exercises: .card-elevated with the trademark
|
|
824
|
+
blue-tinted shadow, alongside two .card siblings so the
|
|
825
|
+
elevation hierarchy is immediately visible. Tabular numerals
|
|
826
|
+
on the price; check-mark feature list keyed to --accent.
|
|
827
|
+
═══════════════════════════════════════════════════════════════ -->
|
|
828
|
+
<section data-od-id="pricing">
|
|
829
|
+
<div class="stack-3">
|
|
830
|
+
<span class="eyebrow">Pricing pattern</span>
|
|
831
|
+
<h2 style="max-width: 26ch">
|
|
832
|
+
Featured tier lifts via shadow alone — no colour shift, no
|
|
833
|
+
border change.
|
|
834
|
+
</h2>
|
|
835
|
+
</div>
|
|
836
|
+
|
|
837
|
+
<div class="pricing-grid">
|
|
838
|
+
<article class="card">
|
|
839
|
+
<div class="stack-3">
|
|
840
|
+
<h3 class="card-title">Starter</h3>
|
|
841
|
+
<p class="body-muted body-sm">
|
|
842
|
+
For new accounts integrating their first payment flow.
|
|
843
|
+
</p>
|
|
844
|
+
</div>
|
|
845
|
+
<div class="pricing-price">
|
|
846
|
+
$0<small>/month</small>
|
|
847
|
+
</div>
|
|
848
|
+
<ul class="pricing-list">
|
|
849
|
+
<li>Standard processing rates</li>
|
|
850
|
+
<li>Dashboard access</li>
|
|
851
|
+
<li>Email support</li>
|
|
852
|
+
</ul>
|
|
853
|
+
<a href="./tokens.css" class="btn btn-ghost btn-sm">Start free</a>
|
|
854
|
+
</article>
|
|
855
|
+
|
|
856
|
+
<article class="card-elevated" aria-label="Featured tier">
|
|
857
|
+
<div class="row-between">
|
|
858
|
+
<span class="eyebrow">Most popular</span>
|
|
859
|
+
<span class="badge badge-accent">Featured</span>
|
|
860
|
+
</div>
|
|
861
|
+
<h3 class="card-title">Growth</h3>
|
|
862
|
+
<div class="pricing-price">
|
|
863
|
+
$79<small>/month</small>
|
|
864
|
+
</div>
|
|
865
|
+
<ul class="pricing-list">
|
|
866
|
+
<li>Volume processing discounts</li>
|
|
867
|
+
<li>Subscriptions & invoicing</li>
|
|
868
|
+
<li>Fraud monitoring</li>
|
|
869
|
+
<li>Priority support</li>
|
|
870
|
+
</ul>
|
|
871
|
+
<a href="./tokens.css" class="btn btn-primary btn-sm">Choose Growth</a>
|
|
872
|
+
</article>
|
|
873
|
+
|
|
874
|
+
<article class="card">
|
|
875
|
+
<div class="stack-3">
|
|
876
|
+
<h3 class="card-title">Scale</h3>
|
|
877
|
+
<p class="body-muted body-sm">
|
|
878
|
+
Custom pricing for high-volume merchants and platforms.
|
|
879
|
+
</p>
|
|
880
|
+
</div>
|
|
881
|
+
<div class="pricing-price">
|
|
882
|
+
Custom
|
|
883
|
+
</div>
|
|
884
|
+
<ul class="pricing-list">
|
|
885
|
+
<li>Negotiated processing rates</li>
|
|
886
|
+
<li>Dedicated solutions engineer</li>
|
|
887
|
+
<li>Custom data residency</li>
|
|
888
|
+
</ul>
|
|
889
|
+
<a href="./DESIGN.md" class="btn btn-ghost btn-sm">Contact sales</a>
|
|
890
|
+
</article>
|
|
891
|
+
</div>
|
|
892
|
+
</section>
|
|
893
|
+
|
|
894
|
+
<!-- ════════════════════════════════════════════════════════════
|
|
895
|
+
CODE PREVIEW — exercises: SourceCodePro at 12px / weight
|
|
896
|
+
500 / line-height 2.00 (DESIGN.md §3). Keyword tokens use
|
|
897
|
+
--accent; strings use --success; comments use --muted.
|
|
898
|
+
═══════════════════════════════════════════════════════════════ -->
|
|
899
|
+
<section data-od-id="code">
|
|
900
|
+
<div class="form-row">
|
|
901
|
+
<div class="stack-4">
|
|
902
|
+
<span class="eyebrow">Integration preview</span>
|
|
903
|
+
<h2 style="max-width: 18ch">
|
|
904
|
+
Two lines of code, one charge.
|
|
905
|
+
</h2>
|
|
906
|
+
<p class="body-muted lede">
|
|
907
|
+
The monospace face is <code style="font-family:var(--font-mono);font-size:0.95em">SourceCodePro</code>
|
|
908
|
+
at 12px / weight 500 / line-height 2.00 — generous leading
|
|
909
|
+
so payment snippets read like prose, not like terminal
|
|
910
|
+
output.
|
|
911
|
+
</p>
|
|
912
|
+
<div>
|
|
913
|
+
<a href="./tokens.css" class="btn btn-ghost btn-sm">Inspect mono token</a>
|
|
914
|
+
</div>
|
|
915
|
+
</div>
|
|
916
|
+
|
|
917
|
+
<pre class="code"><span class="c">// Create a PaymentIntent on your server.</span>
|
|
918
|
+
<span class="k">const</span> <span class="n">intent</span> = <span class="k">await</span> <span class="n">stripe</span>.<span class="n">paymentIntents</span>.<span class="n">create</span>({
|
|
919
|
+
<span class="n">amount</span>: <span class="k">4280</span>,
|
|
920
|
+
<span class="n">currency</span>: <span class="s">"usd"</span>,
|
|
921
|
+
<span class="n">automatic_payment_methods</span>: { <span class="n">enabled</span>: <span class="k">true</span> },
|
|
922
|
+
});
|
|
923
|
+
|
|
924
|
+
<span class="c">// Return the client secret to the browser.</span>
|
|
925
|
+
<span class="k">res</span>.<span class="n">json</span>({ <span class="n">clientSecret</span>: <span class="n">intent</span>.<span class="n">client_secret</span> });</pre>
|
|
926
|
+
</div>
|
|
927
|
+
</section>
|
|
928
|
+
|
|
929
|
+
<!-- ════════════════════════════════════════════════════════════
|
|
930
|
+
FORM — exercises: .field, input :focus-visible (purple halo
|
|
931
|
+
via --focus-ring), .btn-primary (reused), .btn-ghost,
|
|
932
|
+
.field-help. The form panel itself uses .card-elevated so
|
|
933
|
+
the trademark shadow frames the inputs.
|
|
934
|
+
═══════════════════════════════════════════════════════════════ -->
|
|
935
|
+
<section data-od-id="form">
|
|
936
|
+
<div class="form-row">
|
|
937
|
+
<div class="stack-4">
|
|
938
|
+
<span class="eyebrow">Form components</span>
|
|
939
|
+
<h2 style="max-width: 22ch">
|
|
940
|
+
Inputs inherit the same tokens.
|
|
941
|
+
</h2>
|
|
942
|
+
<p class="body-muted lede">
|
|
943
|
+
Focus rings, borders, placeholder colour — all derive
|
|
944
|
+
from <code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">--accent</code>
|
|
945
|
+
and <code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">--border</code>.
|
|
946
|
+
The submit button reuses <code style="font-family:var(--font-mono);font-size:0.92em;color:var(--fg-2)">.btn-primary</code>
|
|
947
|
+
unchanged. The panel itself lifts via the trademark
|
|
948
|
+
blue-tinted shadow.
|
|
949
|
+
</p>
|
|
950
|
+
</div>
|
|
951
|
+
|
|
952
|
+
<form class="form" onsubmit="event.preventDefault();">
|
|
953
|
+
<div class="row-between">
|
|
954
|
+
<h3 class="card-title" style="font-size: var(--text-lg)">
|
|
955
|
+
Contact sales
|
|
956
|
+
</h3>
|
|
957
|
+
<span class="badge badge-muted">Secure</span>
|
|
958
|
+
</div>
|
|
959
|
+
|
|
960
|
+
<div class="form-grid-2">
|
|
961
|
+
<div class="field">
|
|
962
|
+
<label for="first">First name</label>
|
|
963
|
+
<input
|
|
964
|
+
id="first"
|
|
965
|
+
type="text"
|
|
966
|
+
placeholder="Jamie"
|
|
967
|
+
autocomplete="given-name"
|
|
968
|
+
/>
|
|
969
|
+
</div>
|
|
970
|
+
<div class="field">
|
|
971
|
+
<label for="last">Last name</label>
|
|
972
|
+
<input
|
|
973
|
+
id="last"
|
|
974
|
+
type="text"
|
|
975
|
+
placeholder="Liu"
|
|
976
|
+
autocomplete="family-name"
|
|
977
|
+
/>
|
|
978
|
+
</div>
|
|
979
|
+
</div>
|
|
980
|
+
|
|
981
|
+
<div class="field">
|
|
982
|
+
<label for="email">Work email</label>
|
|
983
|
+
<input
|
|
984
|
+
id="email"
|
|
985
|
+
type="email"
|
|
986
|
+
placeholder="jamie@acme.dev"
|
|
987
|
+
autocomplete="email"
|
|
988
|
+
required
|
|
989
|
+
/>
|
|
990
|
+
<p class="field-help">
|
|
991
|
+
We'll send the integration brief and nothing else.
|
|
992
|
+
</p>
|
|
993
|
+
</div>
|
|
994
|
+
|
|
995
|
+
<div class="field">
|
|
996
|
+
<label for="volume">Monthly processing volume</label>
|
|
997
|
+
<select id="volume">
|
|
998
|
+
<option>Under $80k</option>
|
|
999
|
+
<option>$80k – $500k</option>
|
|
1000
|
+
<option>$500k – $5M</option>
|
|
1001
|
+
<option>Over $5M</option>
|
|
1002
|
+
</select>
|
|
1003
|
+
</div>
|
|
1004
|
+
|
|
1005
|
+
<div class="form-actions">
|
|
1006
|
+
<button type="submit" class="btn btn-primary">
|
|
1007
|
+
Start now
|
|
1008
|
+
</button>
|
|
1009
|
+
<button type="button" class="btn btn-ghost">
|
|
1010
|
+
Skip for now
|
|
1011
|
+
</button>
|
|
1012
|
+
</div>
|
|
1013
|
+
</form>
|
|
1014
|
+
</div>
|
|
1015
|
+
</section>
|
|
1016
|
+
</main>
|
|
1017
|
+
</body>
|
|
1018
|
+
</html>
|