@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,272 @@
|
|
|
1
|
+
/* ─────────────────────────────────────────────────────────────────────────
|
|
2
|
+
* design-systems/hashicorp/tokens.css
|
|
3
|
+
*
|
|
4
|
+
* Structured token bindings for "Design System Inspired by HashiCorp" —
|
|
5
|
+
* enterprise infrastructure-as-code made tangible: a dramatic near-black
|
|
6
|
+
* canvas, engineering-grade typography, whisper-level shadows, and one
|
|
7
|
+
* functional blue accent reserved for actionable signals.
|
|
8
|
+
*
|
|
9
|
+
* Brand identity in three sentences:
|
|
10
|
+
* 1. Dark-mode-native canvas (#15181e Dark Charcoal → #0d0e12 Near Black).
|
|
11
|
+
* DESIGN.md §1 names these as the "dramatic dark-mode for hero areas
|
|
12
|
+
* and product showcases" — we bind --bg/--surface to the iconic
|
|
13
|
+
* pair because HashiCorp's brand-defining surfaces are dark.
|
|
14
|
+
* 2. HashiCorp Sans for headings (600–700 weight, kern enabled, 1.17
|
|
15
|
+
* line-height at 82px display); system-ui for body, navigation, and
|
|
16
|
+
* functional text. The brand font carries the weight; system-ui
|
|
17
|
+
* carries the words.
|
|
18
|
+
* 3. Action Blue (#1060ff) as the lone functional accent on dark; the
|
|
19
|
+
* multi-product palette (Terraform purple, Vault yellow, Waypoint
|
|
20
|
+
* teal, Vagrant blue) lives in DESIGN.md §2 as product-scoped
|
|
21
|
+
* colors and intentionally does NOT bind here — DESIGN.md §7 forbids
|
|
22
|
+
* "product brand colors outside their product context".
|
|
23
|
+
*
|
|
24
|
+
* Brand-specific schema decisions (each one bends a schema convention
|
|
25
|
+
* to match HashiCorp's voice rather than the cross-brand default):
|
|
26
|
+
*
|
|
27
|
+
* 1. --bg is #15181e (Dark Charcoal), not white. DESIGN.md describes
|
|
28
|
+
* the brand's "dual mode" — clean white informational sections AND
|
|
29
|
+
* dramatic dark hero/product areas — but the dark surfaces are the
|
|
30
|
+
* identity-defining ones; that is where HashiCorp Sans at 82px,
|
|
31
|
+
* the multi-product accent colors, and the whisper shadows all
|
|
32
|
+
* do their work. Binding --bg to the dark canvas honors the
|
|
33
|
+
* iconic look and matches the "dark-friendly enterprise UI"
|
|
34
|
+
* identity called out in the brand interpretation.
|
|
35
|
+
*
|
|
36
|
+
* 2. --fg ramp is independently bound across all four tiers
|
|
37
|
+
* (Near White #efeff1 → Mid Gray #d5d7db → Cool Gray #b2b6bd →
|
|
38
|
+
* Dark Gray #656a76). DESIGN.md §2 lists each as a named role —
|
|
39
|
+
* "Primary text on dark / Button text on dark / Border accents /
|
|
40
|
+
* Helper text" — and the brand genuinely walks the full ramp.
|
|
41
|
+
* Collapsing --fg-2 or --muted to siblings would flatten the
|
|
42
|
+
* ladder that gives HashiCorp content its enterprise density.
|
|
43
|
+
*
|
|
44
|
+
* 3. --border is rgba(178, 182, 189, 0.4) — the literal alpha used
|
|
45
|
+
* on DESIGN.md §4's "Primary Dark" button border. Binding
|
|
46
|
+
* --border to the alpha (not a solid hex) lets `--elev-ring`
|
|
47
|
+
* reproduce the cool-gray hairline and lets components reach the
|
|
48
|
+
* same value via `border: 1px solid var(--border)`.
|
|
49
|
+
* --border-soft drops to 0.15 alpha for inner separators that
|
|
50
|
+
* should not visually compete with the button edge.
|
|
51
|
+
*
|
|
52
|
+
* 4. --accent is Action Blue (#1060ff), NOT a product brand color.
|
|
53
|
+
* DESIGN.md §2 explicitly classifies Terraform purple / Vault
|
|
54
|
+
* yellow / Waypoint teal as product-scoped tokens; the corporate
|
|
55
|
+
* brand's functional CTA color on dark is #1060ff. --accent-hover
|
|
56
|
+
* LIFTS to #2b89ff (DESIGN.md "Bright Blue — Active links, hover
|
|
57
|
+
* accent") instead of darkening — the schema's default black-mix
|
|
58
|
+
* formula would lose contrast on the dark canvas. --accent-active
|
|
59
|
+
* then darkens via the standard formula for the press state.
|
|
60
|
+
*
|
|
61
|
+
* 5. --warn is #bb5a00 (DESIGN.md Amber-200), not the schema default
|
|
62
|
+
* #eab308. The brighter yellow would clash with HashiCorp's
|
|
63
|
+
* muted enterprise palette and read as "Vault product color"
|
|
64
|
+
* rather than "warning state". The burnt-amber sits warm but
|
|
65
|
+
* restrained on the dark canvas.
|
|
66
|
+
*
|
|
67
|
+
* 6. --font-display loads HashiCorp Sans (the custom brand face
|
|
68
|
+
* called out throughout DESIGN.md) with a substantive fallback
|
|
69
|
+
* stack; --font-body uses system-ui per DESIGN.md §3's brand/
|
|
70
|
+
* system split ("HashiCorp Sans for headings only (17px+),
|
|
71
|
+
* system-ui for everything else"). Mixing the two is the
|
|
72
|
+
* structural rule — never set body copy in HashiCorp Sans.
|
|
73
|
+
*
|
|
74
|
+
* 7. Type scale tops at 82px (--text-4xl) with 1.17 line-height
|
|
75
|
+
* (--leading-tight). DESIGN.md §3 lists 82px / 52px / 42px / 34px
|
|
76
|
+
* / 26px as the documented HashiCorp Sans tiers; the 8 schema
|
|
77
|
+
* slots map onto five of those plus body sizes 20/16/14/13.
|
|
78
|
+
* --tracking-display is `normal` because DESIGN.md §3 explicitly
|
|
79
|
+
* sets the 82px hero to letter-spacing `normal` — the brand
|
|
80
|
+
* relies on kerning, not tracking, for its monolithic feel.
|
|
81
|
+
*
|
|
82
|
+
* 8. --leading-body is 1.63 (DESIGN.md's relaxed 1.63–1.69 body
|
|
83
|
+
* range) — generous reading rhythm BELOW the tight 1.17 headings
|
|
84
|
+
* is the brand's "weight at the top of each section" rule.
|
|
85
|
+
* --leading-tight is 1.17, the documented display line-height.
|
|
86
|
+
*
|
|
87
|
+
* 9. --radius scale is tight: 5px / 8px / 8px / 5px. DESIGN.md §5
|
|
88
|
+
* caps radius at 8px ("nothing pill-shaped or circular") and
|
|
89
|
+
* uses 5px for primary buttons, badges, and inputs. We bind
|
|
90
|
+
* --radius-lg to the same 8px ceiling (HashiCorp does not have
|
|
91
|
+
* a third tier above cards) and --radius-pill to 5px, matching
|
|
92
|
+
* DESIGN.md §4's "Badges / Pills — Radius: 5px". The brand's
|
|
93
|
+
* "no true pill" rule is structural, not stylistic.
|
|
94
|
+
*
|
|
95
|
+
* 10. --elev-raised is the whisper-shadow VERBATIM from DESIGN.md §6
|
|
96
|
+
* Level 1: dual-layer at 5% opacity on a cool-gray base. The
|
|
97
|
+
* doc says it explicitly: "If you can see the shadow, it's too
|
|
98
|
+
* strong." We must not strengthen this in component CSS —
|
|
99
|
+
* enterprise stability is communicated through restraint.
|
|
100
|
+
*
|
|
101
|
+
* 11. --focus-ring is 3px solid var(--accent) (sharp ring, no halo),
|
|
102
|
+
* per DESIGN.md §6 ("Focus (Level 2) — 3px solid"). Sharp focus
|
|
103
|
+
* is the engineered alternative to the schema's 3px alpha glow.
|
|
104
|
+
*
|
|
105
|
+
* 12. --section-y-desktop is 80px (DESIGN.md §5 "Enterprise breathing
|
|
106
|
+
* room: Generous vertical spacing between sections (48px–80px+)").
|
|
107
|
+
* --container-max is 1150px exactly — DESIGN.md §5 names ~1150px
|
|
108
|
+
* as the documented xl breakpoint and max content width.
|
|
109
|
+
*
|
|
110
|
+
* Source contracts:
|
|
111
|
+
* - Standard token names: design-systems/_schema/tokens.schema.ts
|
|
112
|
+
* - A2 fallback parity: design-systems/_schema/defaults.css
|
|
113
|
+
* - Lint enforcement: apps/daemon/src/lint-artifact.ts
|
|
114
|
+
*
|
|
115
|
+
* Keep this file additive: never invent token names not also documented
|
|
116
|
+
* in DESIGN.md or the schema. The HashiCorp Sans face is referenced by
|
|
117
|
+
* name only — the stack lists OS fallbacks so artifacts render
|
|
118
|
+
* acceptably even when the brand font is not loaded.
|
|
119
|
+
* ─────────────────────────────────────────────────────────────────── */
|
|
120
|
+
|
|
121
|
+
:root {
|
|
122
|
+
/* ─── Surface (3 levels — dark-mode canvas) ───────────────────────
|
|
123
|
+
* DESIGN.md §1 names #15181e and #0d0e12 as the two dark-mode
|
|
124
|
+
* surfaces. --surface-warm aliases --surface because the brand is
|
|
125
|
+
* famously achromatic on dark — depth comes from luminance steps
|
|
126
|
+
* and whisper shadows, not from warm-tinting one surface against
|
|
127
|
+
* another. (DESIGN.md §7: "Don't use pure black (#000000) for dark
|
|
128
|
+
* backgrounds — use #15181e or #0d0e12.") */
|
|
129
|
+
--bg: #15181e; /* Dark Charcoal — hero canvas */
|
|
130
|
+
--surface: #0d0e12; /* Near Black — cards, inputs */
|
|
131
|
+
--surface-warm: var(--surface); /* alias — no warm tier on dark */
|
|
132
|
+
|
|
133
|
+
/* ─── Foreground ramp (4 levels) ──────────────────────────────────
|
|
134
|
+
* Near White → Mid Gray → Cool Gray → Dark Gray. All four are named
|
|
135
|
+
* in DESIGN.md §2 with distinct roles, so we bind each independently
|
|
136
|
+
* (no aliasing). #efeff1 instead of #ffffff matters — pure white
|
|
137
|
+
* against #15181e reads as harsh; the slight warmth keeps the
|
|
138
|
+
* enterprise tone from feeling clinical. */
|
|
139
|
+
--fg: #efeff1; /* Near White — primary text on dark */
|
|
140
|
+
--fg-2: #d5d7db; /* Mid Gray — body description, button text */
|
|
141
|
+
--muted: #b2b6bd; /* Cool Gray — captions, tertiary text */
|
|
142
|
+
--meta: #656a76; /* Dark Gray — helper text, disabled */
|
|
143
|
+
|
|
144
|
+
/* ─── Border (2 levels) ──────────────────────────────────────────
|
|
145
|
+
* DESIGN.md §4 names rgba(178, 182, 189, 0.4) as the primary dark
|
|
146
|
+
* button border — we lift that exact alpha into --border so
|
|
147
|
+
* --elev-ring and `border: 1px solid var(--border)` both reproduce
|
|
148
|
+
* the documented hairline. --border-soft drops to 0.15 for inner
|
|
149
|
+
* row separators that must not compete with the card edge. */
|
|
150
|
+
--border: rgba(178, 182, 189, 0.4); /* Cool Gray @ 0.4 — primary button edge */
|
|
151
|
+
--border-soft: rgba(178, 182, 189, 0.15); /* inner separator — barely-there */
|
|
152
|
+
|
|
153
|
+
/* ─── Accent ─────────────────────────────────────────────────────
|
|
154
|
+
* Action Blue — the corporate brand's single functional CTA color
|
|
155
|
+
* on dark. Hard cap of ≤2 visible uses per screen aligns with
|
|
156
|
+
* DESIGN.md §7's restraint: the multi-product palette (Terraform
|
|
157
|
+
* purple, Vault yellow) is product-scoped and intentionally does
|
|
158
|
+
* NOT bind here. Hover LIFTS to Bright Blue rather than darkening
|
|
159
|
+
* (the schema default would lose contrast on dark). */
|
|
160
|
+
--accent: #1060ff; /* Action Blue — primary CTA on dark */
|
|
161
|
+
--accent-on: #ffffff; /* white label on saturated blue */
|
|
162
|
+
--accent-hover: #2b89ff; /* Bright Blue — DESIGN.md §2 active links */
|
|
163
|
+
--accent-active: color-mix(in oklab, var(--accent), black 14%);
|
|
164
|
+
|
|
165
|
+
/* ─── Semantic ───────────────────────────────────────────────────
|
|
166
|
+
* --warn overrides to DESIGN.md §2 Amber #bb5a00 (the schema's
|
|
167
|
+
* #eab308 would read as "Vault product color" on a HashiCorp
|
|
168
|
+
* surface). --success and --danger inherit the schema defaults —
|
|
169
|
+
* DESIGN.md does not define a brand-specific success color, and
|
|
170
|
+
* #731e25 (DESIGN.md's documented red) is a deep error-background
|
|
171
|
+
* tone, not the foreground signal a --danger token needs. */
|
|
172
|
+
--success: #16a34a;
|
|
173
|
+
--warn: #bb5a00; /* DESIGN.md Amber-200 — warning states */
|
|
174
|
+
--danger: #dc2626;
|
|
175
|
+
|
|
176
|
+
/* ─── Typography ─────────────────────────────────────────────────
|
|
177
|
+
* Brand/system split per DESIGN.md §3. HashiCorp Sans is the
|
|
178
|
+
* heading face; system-ui handles body, navigation, and functional
|
|
179
|
+
* text. The fallback chains let artifacts render acceptably when
|
|
180
|
+
* the custom face is not loaded. */
|
|
181
|
+
--font-display: "HashiCorp Sans", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
182
|
+
--font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
183
|
+
--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
|
|
184
|
+
|
|
185
|
+
/* Type scale — DESIGN.md §3 Hierarchy table. The 8 schema slots
|
|
186
|
+
* map the HashiCorp Sans display tiers (82/52/42/26) plus the
|
|
187
|
+
* documented body/caption sizes (20/16/14/13). Sub-heading 34px
|
|
188
|
+
* and small-title 19px live inline in components when needed. */
|
|
189
|
+
--text-xs: 13px; /* caption / uppercase label */
|
|
190
|
+
--text-sm: 14px; /* small body */
|
|
191
|
+
--text-base: 16px; /* body / nav / button text */
|
|
192
|
+
--text-lg: 20px; /* body large / hero description */
|
|
193
|
+
--text-xl: 26px; /* card title */
|
|
194
|
+
--text-2xl: 42px; /* feature heading */
|
|
195
|
+
--text-3xl: 52px; /* section heading */
|
|
196
|
+
--text-4xl: 82px; /* display hero — "infrastructure-grade" */
|
|
197
|
+
|
|
198
|
+
/* DESIGN.md §3: tight headings (1.17–1.21) over relaxed body
|
|
199
|
+
* (1.50–1.69). We sit at the documented endpoints — 1.17 hero,
|
|
200
|
+
* 1.63 body. --tracking-display is `normal` because DESIGN.md §3
|
|
201
|
+
* lists the 82px hero at letter-spacing `normal` (kerning is on
|
|
202
|
+
* via font-feature-settings, not tracking). */
|
|
203
|
+
--leading-body: 1.63;
|
|
204
|
+
--leading-tight: 1.17;
|
|
205
|
+
--tracking-display: normal;
|
|
206
|
+
|
|
207
|
+
/* ─── Spacing ────────────────────────────────────────────────────
|
|
208
|
+
* 8px base unit (DESIGN.md §5). The 4/8/12/16/20/24/32/48 tier
|
|
209
|
+
* covers structural rhythm; sub-tier increments (2/3/6/7/9/11)
|
|
210
|
+
* live per-component because they are too fine for the shared
|
|
211
|
+
* schema. */
|
|
212
|
+
--space-1: 4px;
|
|
213
|
+
--space-2: 8px;
|
|
214
|
+
--space-3: 12px;
|
|
215
|
+
--space-4: 16px;
|
|
216
|
+
--space-5: 20px;
|
|
217
|
+
--space-6: 24px;
|
|
218
|
+
--space-8: 32px;
|
|
219
|
+
--space-12: 48px;
|
|
220
|
+
|
|
221
|
+
/* Section rhythm — DESIGN.md §5 "Enterprise breathing room
|
|
222
|
+
* (48–80px+)". 80px desktop sits at the documented top end;
|
|
223
|
+
* we collapse to 56px on tablet and 40px on phone. */
|
|
224
|
+
--section-y-desktop: 80px;
|
|
225
|
+
--section-y-tablet: 56px;
|
|
226
|
+
--section-y-phone: 40px;
|
|
227
|
+
|
|
228
|
+
/* ─── Radius ─────────────────────────────────────────────────────
|
|
229
|
+
* DESIGN.md §5 caps radius at 8px and uses 5px for buttons/inputs/
|
|
230
|
+
* badges. --radius-lg sits at the 8px ceiling (no third tier
|
|
231
|
+
* exists in the brand). --radius-pill binds to 5px because
|
|
232
|
+
* DESIGN.md §4 explicitly says "Badges / Pills — Radius: 5px" —
|
|
233
|
+
* HashiCorp does not have a true 9999px pill shape; the no-pill
|
|
234
|
+
* rule is structural. */
|
|
235
|
+
--radius-sm: 5px; /* DESIGN.md "Comfortable" — buttons, inputs */
|
|
236
|
+
--radius-md: 8px; /* DESIGN.md "Card" — cards, containers */
|
|
237
|
+
--radius-lg: 8px; /* same 8px ceiling — no third tier */
|
|
238
|
+
--radius-pill: 5px; /* DESIGN.md §4 — no true pills, 5px chips */
|
|
239
|
+
|
|
240
|
+
/* ─── Elevation (3 levels) ───────────────────────────────────────
|
|
241
|
+
* Whisper shadows VERBATIM from DESIGN.md §6 Level 1: dual-layer
|
|
242
|
+
* at 5% opacity on a cool-gray (97, 104, 117) base. The doc is
|
|
243
|
+
* emphatic: "If you can see the shadow, it's too strong." Never
|
|
244
|
+
* strengthen these values in component overrides. */
|
|
245
|
+
--elev-flat: none;
|
|
246
|
+
--elev-ring: 0 0 0 1px var(--border);
|
|
247
|
+
--elev-raised:
|
|
248
|
+
rgba(97, 104, 117, 0.05) 0px 1px 1px,
|
|
249
|
+
rgba(97, 104, 117, 0.05) 0px 2px 2px;
|
|
250
|
+
|
|
251
|
+
/* ─── Focus ring ─────────────────────────────────────────────────
|
|
252
|
+
* DESIGN.md §6 Level 2: "3px solid var(--mds-color-focus-action-
|
|
253
|
+
* external)". Sharp 3px ring at --accent, not the schema's alpha
|
|
254
|
+
* glow — HashiCorp's focus is engineered, not atmospheric. */
|
|
255
|
+
--focus-ring: 0 0 0 3px var(--accent);
|
|
256
|
+
|
|
257
|
+
/* ─── Motion ─────────────────────────────────────────────────────
|
|
258
|
+
* Standard durations — HashiCorp's enterprise tone leans on type
|
|
259
|
+
* and shadow restraint, not motion choreography. */
|
|
260
|
+
--motion-fast: 150ms;
|
|
261
|
+
--motion-base: 200ms;
|
|
262
|
+
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
263
|
+
|
|
264
|
+
/* ─── Layout ─────────────────────────────────────────────────────
|
|
265
|
+
* 1150px max content width per DESIGN.md §5 ("Max content width:
|
|
266
|
+
* ~1150px (xl breakpoint)"). Gutters narrow on mobile to preserve
|
|
267
|
+
* the line-length-as-craft feel. */
|
|
268
|
+
--container-max: 1150px;
|
|
269
|
+
--container-gutter-desktop: 24px;
|
|
270
|
+
--container-gutter-tablet: 16px;
|
|
271
|
+
--container-gutter-phone: 12px;
|
|
272
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# HUD Design System
|
|
2
|
+
|
|
3
|
+
> Category: Themed & Unique
|
|
4
|
+
> Fighter jet / helicopter head-up display. Phosphor green on near-black, all-caps data overlays, angular geometry. Zero ambiguity at speed and altitude.
|
|
5
|
+
|
|
6
|
+
## 1. Visual Theme & Atmosphere
|
|
7
|
+
|
|
8
|
+
A **combat pilot's glass cockpit** — everything readable in a split second, in any light condition, under any G-load. The HUD projects critical flight data directly into the pilot's line of sight so they never have to look down. Translucency and glow replace depth and shadow. Every element is functional or it doesn't exist.
|
|
9
|
+
|
|
10
|
+
| Element | Hex | Role |
|
|
11
|
+
|---------|-----|------|
|
|
12
|
+
| Background | `#0A0A0A` | Near-black, primary canvas |
|
|
13
|
+
| Surface | `#111316` | Elevated panels, card backgrounds |
|
|
14
|
+
| Border | `#1E2328` | Subtle panel separation |
|
|
15
|
+
| Primary | `#00FF41` | Active readouts, all data values |
|
|
16
|
+
| Secondary | `#7FFF00` | Standby/dimmed values, inactive fields |
|
|
17
|
+
| Tertiary | `#5A9A5A` | Grid lines, tick marks, reference arcs |
|
|
18
|
+
| Warning | `#FFB800` | Caution, system advisories |
|
|
19
|
+
| Alert | `#FF3B3B` | Critical warnings, fault indicators |
|
|
20
|
+
|
|
21
|
+
*Readings must be unambiguous at 200 knots in Instrument Meteorological Conditions.*
|
|
22
|
+
|
|
23
|
+
### Use Cases
|
|
24
|
+
|
|
25
|
+
HUD is purpose-built for:
|
|
26
|
+
- **Flight simulation UIs** — combat sims, civil aviation trainers, helicopter hoist operations
|
|
27
|
+
- **Telemetry dashboards** — real-time velocity, altitude, heading overlays
|
|
28
|
+
- **Command-and-control displays** — drone operator screens, ISR stations
|
|
29
|
+
- **Any high-speed, zero-ambiguity data overlay**
|
|
30
|
+
|
|
31
|
+
### Prior Art
|
|
32
|
+
|
|
33
|
+
F-16 Fighting Falcon HUD, Apache AH-64 attack helicopter integrated display, F-35 helmet-mounted display system, Garmin G1000 flight deck. All share: phosphor green primary, decluttered minimalism, and information hierarchy driven by operational urgency.
|
|
34
|
+
|
|
35
|
+
## 2. Color Palette & Roles
|
|
36
|
+
|
|
37
|
+
### Surface Palette
|
|
38
|
+
|
|
39
|
+
| Token | Hex | Usage |
|
|
40
|
+
|-------|-----|-------|
|
|
41
|
+
| Background | `#0A0A0A` | Page canvas, primary depth |
|
|
42
|
+
| Surface | `#111316` | Panels, cards, elevated areas |
|
|
43
|
+
| Border | `#1E2328` | Panel dividers, subtle structure |
|
|
44
|
+
|
|
45
|
+
### Data Palette
|
|
46
|
+
|
|
47
|
+
| Token | Hex | Usage |
|
|
48
|
+
|-------|-----|-------|
|
|
49
|
+
| Primary | `#00FF41` | Speed, altitude, heading readouts |
|
|
50
|
+
| Secondary | `#7FFF00` | Standby/dimmed values, inactive fields |
|
|
51
|
+
| Tertiary | `#5A9A5A` | Grid lines, tick marks, reference arcs |
|
|
52
|
+
| Warning | `#FFB800` | Caution, system advisories |
|
|
53
|
+
| Alert | `#FF3B3B` | Critical warnings, fault indicators |
|
|
54
|
+
|
|
55
|
+
All data colors on `#0A0A0A` pass WCAG AA (minimum 4.5:1).
|
|
56
|
+
|
|
57
|
+
### Dark Mode
|
|
58
|
+
|
|
59
|
+
Dark mode is the native and only mode. A HUD is projected in low-light or high-glare cockpit conditions; there is no light mode by design.
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
:root {
|
|
63
|
+
--color-bg: #0A0A0A;
|
|
64
|
+
--color-surface: #111316;
|
|
65
|
+
--color-border: #1E2328;
|
|
66
|
+
--data-primary: #00FF41;
|
|
67
|
+
--data-secondary: #7FFF00;
|
|
68
|
+
--data-tertiary: #5A9A5A;
|
|
69
|
+
--data-warning: #FFB800;
|
|
70
|
+
--data-alert: #FF3B3B;
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 3. Typography Rules
|
|
75
|
+
|
|
76
|
+
| Role | Size | Weight | Line Height | Font |
|
|
77
|
+
|------|------|--------|-------------|------|
|
|
78
|
+
| Display | 32px | 700 | 1.0 | JetBrains Mono |
|
|
79
|
+
| Heading | 12px | 700 | 1.0 | Inter, uppercase |
|
|
80
|
+
| Body | 14px | 400 | 1.2 | JetBrains Mono |
|
|
81
|
+
| Label | 10px | 600 | 1.0 | Inter, uppercase |
|
|
82
|
+
| Micro | 8px | 700 | 1.0 | Inter, uppercase |
|
|
83
|
+
|
|
84
|
+
**Font labels for catalog extraction:**
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Display: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace
|
|
88
|
+
Body: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace
|
|
89
|
+
Heading: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif
|
|
90
|
+
Label: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif
|
|
91
|
+
Micro: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif
|
|
92
|
+
Mono: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 4. Component Stylings
|
|
96
|
+
|
|
97
|
+
### Data Readout
|
|
98
|
+
|
|
99
|
+
Displays a single data value with label. Always uses `--data-primary` color.
|
|
100
|
+
|
|
101
|
+
```css
|
|
102
|
+
.data-readout {
|
|
103
|
+
font-family: 'JetBrains Mono', monospace;
|
|
104
|
+
font-size: 14px;
|
|
105
|
+
font-weight: 700;
|
|
106
|
+
color: var(--data-primary);
|
|
107
|
+
letter-spacing: 0.05em;
|
|
108
|
+
}
|
|
109
|
+
.data-readout-label {
|
|
110
|
+
font-family: 'Inter', sans-serif;
|
|
111
|
+
font-size: 10px;
|
|
112
|
+
font-weight: 600;
|
|
113
|
+
text-transform: uppercase;
|
|
114
|
+
color: var(--data-tertiary);
|
|
115
|
+
letter-spacing: 0.1em;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Status Indicator
|
|
120
|
+
|
|
121
|
+
Dot or bar that reflects system state. Colors map to operational states.
|
|
122
|
+
|
|
123
|
+
```css
|
|
124
|
+
.status-dot {
|
|
125
|
+
width: 8px;
|
|
126
|
+
height: 8px;
|
|
127
|
+
border-radius: 50%;
|
|
128
|
+
background: var(--data-primary); /* active */
|
|
129
|
+
}
|
|
130
|
+
.status-dot.standby { background: var(--data-secondary); }
|
|
131
|
+
.status-dot.warning { background: var(--data-warning); }
|
|
132
|
+
.status-dot.alert { background: var(--data-alert); }
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Grid Lines
|
|
136
|
+
|
|
137
|
+
Reference marks for spatial orientation. Thin lines in `--data-tertiary`.
|
|
138
|
+
|
|
139
|
+
## 5. Layout Principles
|
|
140
|
+
|
|
141
|
+
HUDs are overlay systems — they display over a visual field. The layout is absolute-positioned overlays on a transparent or dark background. Information density is high; whitespace is used to separate data clusters, not for aesthetics.
|
|
142
|
+
|
|
143
|
+
Key structural patterns:
|
|
144
|
+
- Grid lines reference the center of the display (crosshair)
|
|
145
|
+
- Data readouts cluster by update frequency (altitude updates slower than airspeed)
|
|
146
|
+
- Warning states override all other information layers
|
|
147
|
+
|
|
148
|
+
## 6. Depth & Elevation
|
|
149
|
+
|
|
150
|
+
HUD overlays use opacity and glow rather than elevation shadows. Panels are distinguished by border color and subtle surface shifts, not drop shadows. The HUD exists in a single visual plane.
|
|
151
|
+
|
|
152
|
+
## 7. Do's and Don'ts
|
|
153
|
+
|
|
154
|
+
- Do not use tertiary `#5A9A5A` for body or readout text — only grid lines and reference marks
|
|
155
|
+
- Do not animate elements that do not signal operational state
|
|
156
|
+
- Do not provide a light mode — a HUD only exists in low-light or high-glare conditions
|
|
157
|
+
- Do not use rounded corners greater than 50% (circle reticles only)
|
|
158
|
+
- Do not use gradients — flat color fills only
|
|
159
|
+
- Do not convey information by color alone — reinforce with position and label
|
|
160
|
+
|
|
161
|
+
## 8. Responsive Behavior
|
|
162
|
+
|
|
163
|
+
HUD overlays are viewport-relative. On smaller viewports, data clusters compress proportionally. Critical readouts (speed, altitude, heading) remain visible at all sizes; secondary indicators hide or minimize. The layout uses a 12-column grid with absolute-positioned data panels anchored to screen edges.
|
|
164
|
+
|
|
165
|
+
## 9. Agent Prompt Guide
|
|
166
|
+
|
|
167
|
+
When generating a HUD-style interface, prompt the model to:
|
|
168
|
+
- Use JetBrains Mono for all data readouts; Inter (uppercase) for labels only
|
|
169
|
+
- Set `--data-primary` to `#00FF41` for all active readouts
|
|
170
|
+
- Apply 150ms ease-out for state transitions, 100ms linear for data value changes
|
|
171
|
+
- Include a status indicator component with active/standby/warning/alert states
|
|
172
|
+
- Ensure all text passes 4.5:1 contrast on `#0A0A0A`
|
|
173
|
+
- Never add decorative animation or light mode variants
|
|
@@ -0,0 +1,136 @@
|
|
|
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>HUD - reference components</title>
|
|
7
|
+
<meta name="description" content="Reference fixture for design-systems/hud: HUD interface language with dark transparent panels, cyan telemetry, and compact status readouts." />
|
|
8
|
+
<style>
|
|
9
|
+
:root {
|
|
10
|
+
--bg: #090b12;
|
|
11
|
+
--surface: #121722;
|
|
12
|
+
--surface-warm: #1b2233;
|
|
13
|
+
--fg: #f8fafc;
|
|
14
|
+
--fg-2: #cbd5e1;
|
|
15
|
+
--muted: #94a3b8;
|
|
16
|
+
--meta: #60a5fa;
|
|
17
|
+
--border: #2a3447;
|
|
18
|
+
--border-soft: #1d2636;
|
|
19
|
+
--accent: #60a5fa;
|
|
20
|
+
--accent-on: #06101d;
|
|
21
|
+
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
|
|
22
|
+
--accent-active: color-mix(in oklab, var(--accent), black 14%);
|
|
23
|
+
--success: #22c55e;
|
|
24
|
+
--warn: #fbbf24;
|
|
25
|
+
--danger: #fb7185;
|
|
26
|
+
--font-display: "IBM Plex Mono", ui-monospace, monospace;
|
|
27
|
+
--font-body: "IBM Plex Mono", ui-monospace, monospace;
|
|
28
|
+
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
|
|
29
|
+
--text-xs: 11px;
|
|
30
|
+
--text-sm: 12px;
|
|
31
|
+
--text-base: 14px;
|
|
32
|
+
--text-lg: 16px;
|
|
33
|
+
--text-xl: 20px;
|
|
34
|
+
--text-2xl: 28px;
|
|
35
|
+
--text-3xl: 40px;
|
|
36
|
+
--text-4xl: 56px;
|
|
37
|
+
--leading-body: 1.45;
|
|
38
|
+
--leading-tight: 1.06;
|
|
39
|
+
--tracking-display: -0.025em;
|
|
40
|
+
--space-1: 4px;
|
|
41
|
+
--space-2: 8px;
|
|
42
|
+
--space-3: 12px;
|
|
43
|
+
--space-4: 16px;
|
|
44
|
+
--space-5: 20px;
|
|
45
|
+
--space-6: 24px;
|
|
46
|
+
--space-8: 32px;
|
|
47
|
+
--space-12: 48px;
|
|
48
|
+
--section-y-desktop: 80px;
|
|
49
|
+
--section-y-tablet: 60px;
|
|
50
|
+
--section-y-phone: 42px;
|
|
51
|
+
--radius-sm: 10px;
|
|
52
|
+
--radius-md: 16px;
|
|
53
|
+
--radius-lg: 24px;
|
|
54
|
+
--radius-pill: 9999px;
|
|
55
|
+
--elev-flat: none;
|
|
56
|
+
--elev-ring: 0 0 0 1px var(--border);
|
|
57
|
+
--elev-raised: 0 24px 72px rgba(0, 0, 0, 0.42);
|
|
58
|
+
--focus-ring: 0 0 0 4px rgba(96, 165, 250, 0.28);
|
|
59
|
+
--motion-fast: 100ms;
|
|
60
|
+
--motion-base: 180ms;
|
|
61
|
+
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
62
|
+
--container-max: 1280px;
|
|
63
|
+
--container-gutter-desktop: 36px;
|
|
64
|
+
--container-gutter-tablet: 24px;
|
|
65
|
+
--container-gutter-phone: 16px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
69
|
+
html, body { margin: 0; padding: 0; }
|
|
70
|
+
body { min-height: 100vh; background: var(--bg); color: var(--fg); font-family: var(--font-body); font-size: var(--text-base); line-height: var(--leading-body); -webkit-font-smoothing: antialiased; }
|
|
71
|
+
.page { min-height: 100vh; background: radial-gradient(circle at 80% 8%, rgba(96, 165, 250, 0.24), transparent 34%), #090b12; }
|
|
72
|
+
.container { max-width: var(--container-max); margin-inline: auto; padding-inline: var(--container-gutter-desktop); }
|
|
73
|
+
section { padding-block: var(--section-y-desktop); }
|
|
74
|
+
@media (max-width: 1023px) { .container { padding-inline: var(--container-gutter-tablet); } section { padding-block: var(--section-y-tablet); } }
|
|
75
|
+
@media (max-width: 639px) { .container { padding-inline: var(--container-gutter-phone); } section { padding-block: var(--section-y-phone); } }
|
|
76
|
+
h1, h2, h3, p { margin: 0; }
|
|
77
|
+
h1, h2, h3 { font-family: var(--font-display); line-height: var(--leading-tight); letter-spacing: var(--tracking-display); }
|
|
78
|
+
h1 { max-width: 840px; font-size: var(--text-4xl); font-weight: 760; }
|
|
79
|
+
h2 { font-size: var(--text-3xl); font-weight: 700; }
|
|
80
|
+
h3 { font-size: var(--text-xl); font-weight: 700; }
|
|
81
|
+
.eyebrow { color: var(--meta); font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }
|
|
82
|
+
.lead { max-width: 640px; color: var(--fg-2); font-size: var(--text-lg); }
|
|
83
|
+
.hero { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr); gap: var(--space-8); align-items: center; }
|
|
84
|
+
.stack > * + * { margin-block-start: var(--space-4); }
|
|
85
|
+
.actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-block-start: var(--space-6); }
|
|
86
|
+
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 var(--space-5); border: 1px solid transparent; border-radius: var(--radius-md); font: 700 var(--text-sm) / 1 var(--font-body); color: inherit; text-decoration: none; cursor: pointer; transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard); }
|
|
87
|
+
.btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
|
|
88
|
+
.btn-primary { background: var(--accent); color: var(--accent-on); }
|
|
89
|
+
.btn-primary:hover { background: var(--accent-hover); transform: translateY(-1px); }
|
|
90
|
+
.btn-secondary { background: var(--surface); color: var(--fg); border-color: var(--border); box-shadow: var(--elev-ring); }
|
|
91
|
+
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); }
|
|
92
|
+
.panel { background: color-mix(in oklab, var(--surface), transparent 4%); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--elev-raised); overflow: hidden; }
|
|
93
|
+
.panel-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); padding: var(--space-5); border-bottom: 1px solid var(--border-soft); }
|
|
94
|
+
.status { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--meta); font: 700 var(--text-xs) / 1 var(--font-mono); text-transform: uppercase; letter-spacing: 0.08em; }
|
|
95
|
+
.status::before { width: 8px; height: 8px; border-radius: var(--radius-pill); background: var(--success); content: ""; }
|
|
96
|
+
.metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--border-soft); }
|
|
97
|
+
.metric { padding: var(--space-5); border-right: 1px solid var(--border-soft); }
|
|
98
|
+
.metric:last-child { border-right: 0; }
|
|
99
|
+
.metric strong { display: block; font-family: var(--font-display); font-size: var(--text-2xl); line-height: var(--leading-tight); }
|
|
100
|
+
.metric span { color: var(--muted); font-size: var(--text-sm); }
|
|
101
|
+
.card-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); padding: var(--space-5); }
|
|
102
|
+
.mini-card { min-height: 148px; padding: var(--space-5); border: 1px solid var(--border-soft); border-radius: var(--radius-md); background: var(--surface-warm); }
|
|
103
|
+
.mini-card p, .tile p { color: var(--muted); font-size: var(--text-sm); margin-block-start: var(--space-3); }
|
|
104
|
+
.swatches { display: flex; gap: var(--space-2); margin-block-start: var(--space-4); }
|
|
105
|
+
.swatch { width: 32px; height: 32px; border-radius: var(--radius-sm); border: 1px solid var(--border); }
|
|
106
|
+
.swatch.accent { background: var(--accent); } .swatch.surface { background: var(--surface); } .swatch.warm { background: var(--surface-warm); } .swatch.fg { background: var(--fg); }
|
|
107
|
+
.field { display: grid; gap: var(--space-2); margin-block-start: var(--space-5); }
|
|
108
|
+
label { color: var(--fg-2); font-size: var(--text-sm); font-weight: 700; }
|
|
109
|
+
input { width: 100%; min-height: 46px; padding: 0 var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); color: var(--fg); font: inherit; }
|
|
110
|
+
input:focus { outline: none; box-shadow: var(--focus-ring); border-color: var(--accent); }
|
|
111
|
+
.lower { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-4); }
|
|
112
|
+
.tile { padding: var(--space-5); border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); }
|
|
113
|
+
@media (max-width: 860px) { .hero, .lower { grid-template-columns: 1fr; } .metric-grid, .card-row { grid-template-columns: 1fr; } .metric { border-right: 0; border-bottom: 1px solid var(--border-soft); } .metric:last-child { border-bottom: 0; } }
|
|
114
|
+
</style>
|
|
115
|
+
</head>
|
|
116
|
+
<body>
|
|
117
|
+
<main class="page">
|
|
118
|
+
<section>
|
|
119
|
+
<div class="container hero">
|
|
120
|
+
<div class="stack">
|
|
121
|
+
<p class="eyebrow">HUD design system</p>
|
|
122
|
+
<h1>Heads-up display overlay</h1>
|
|
123
|
+
<p class="lead">Transparent tactical panels, scanning metrics, and high-contrast status overlays.</p>
|
|
124
|
+
<div class="actions" aria-label="Reference actions"><a class="btn btn-primary" href="#">Primary action</a><a class="btn btn-secondary" href="#">Secondary action</a></div>
|
|
125
|
+
</div>
|
|
126
|
+
<article class="panel" aria-label="HUD component preview">
|
|
127
|
+
<div class="panel-head"><div><p class="eyebrow">Live module</p><h3>Reference component</h3></div><span class="status">online</span></div>
|
|
128
|
+
<div class="metric-grid"><div class="metric"><strong>98%</strong><span>Signal quality</span></div><div class="metric"><strong>24</strong><span>Active flows</span></div><div class="metric"><strong>3.2s</strong><span>Response time</span></div></div>
|
|
129
|
+
<div class="card-row"><div class="mini-card"><h3>Palette</h3><p>HUD interface language with dark transparent panels, cyan telemetry, and compact status readouts.</p><div class="swatches" aria-label="Token swatches"><span class="swatch accent"></span><span class="swatch surface"></span><span class="swatch warm"></span><span class="swatch fg"></span></div></div><div class="mini-card"><h3>Control</h3><p>Focus, hover, and status states share the same system signal.</p><div class="field"><label for="hud-input">Reference input</label><input id="hud-input" value="HUD system token" /></div></div></div>
|
|
130
|
+
</article>
|
|
131
|
+
</div>
|
|
132
|
+
</section>
|
|
133
|
+
<section><div class="container lower"><article class="tile"><p class="eyebrow">Typography</p><h2>Display rhythm</h2><p>Headlines use the display stack with the declared scale and leading.</p></article><article class="tile"><p class="eyebrow">Surface</p><h2>Layer system</h2><p>Cards, warm panels, borders, and raised states resolve through shared tokens.</p></article><article class="tile"><p class="eyebrow">Interaction</p><h2>Motion states</h2><p>Buttons, inputs, and panels use system-specific focus rings and easing.</p></article></div></section>
|
|
134
|
+
</main>
|
|
135
|
+
</body>
|
|
136
|
+
</html>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* design-systems/hud/tokens.css
|
|
2
|
+
* Structured token bindings for HUD.
|
|
3
|
+
* HUD interface language with dark transparent panels, cyan telemetry, and compact status readouts.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--bg: #090b12;
|
|
8
|
+
--surface: #121722;
|
|
9
|
+
--surface-warm: #1b2233;
|
|
10
|
+
--fg: #f8fafc;
|
|
11
|
+
--fg-2: #cbd5e1;
|
|
12
|
+
--muted: #94a3b8;
|
|
13
|
+
--meta: #60a5fa;
|
|
14
|
+
--border: #2a3447;
|
|
15
|
+
--border-soft: #1d2636;
|
|
16
|
+
--accent: #60a5fa;
|
|
17
|
+
--accent-on: #06101d;
|
|
18
|
+
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
|
|
19
|
+
--accent-active: color-mix(in oklab, var(--accent), black 14%);
|
|
20
|
+
--success: #22c55e;
|
|
21
|
+
--warn: #fbbf24;
|
|
22
|
+
--danger: #fb7185;
|
|
23
|
+
--font-display: "IBM Plex Mono", ui-monospace, monospace;
|
|
24
|
+
--font-body: "IBM Plex Mono", ui-monospace, monospace;
|
|
25
|
+
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
|
|
26
|
+
--text-xs: 11px;
|
|
27
|
+
--text-sm: 12px;
|
|
28
|
+
--text-base: 14px;
|
|
29
|
+
--text-lg: 16px;
|
|
30
|
+
--text-xl: 20px;
|
|
31
|
+
--text-2xl: 28px;
|
|
32
|
+
--text-3xl: 40px;
|
|
33
|
+
--text-4xl: 56px;
|
|
34
|
+
--leading-body: 1.45;
|
|
35
|
+
--leading-tight: 1.06;
|
|
36
|
+
--tracking-display: -0.025em;
|
|
37
|
+
--space-1: 4px;
|
|
38
|
+
--space-2: 8px;
|
|
39
|
+
--space-3: 12px;
|
|
40
|
+
--space-4: 16px;
|
|
41
|
+
--space-5: 20px;
|
|
42
|
+
--space-6: 24px;
|
|
43
|
+
--space-8: 32px;
|
|
44
|
+
--space-12: 48px;
|
|
45
|
+
--section-y-desktop: 80px;
|
|
46
|
+
--section-y-tablet: 60px;
|
|
47
|
+
--section-y-phone: 42px;
|
|
48
|
+
--radius-sm: 10px;
|
|
49
|
+
--radius-md: 16px;
|
|
50
|
+
--radius-lg: 24px;
|
|
51
|
+
--radius-pill: 9999px;
|
|
52
|
+
--elev-flat: none;
|
|
53
|
+
--elev-ring: 0 0 0 1px var(--border);
|
|
54
|
+
--elev-raised: 0 24px 72px rgba(0, 0, 0, 0.42);
|
|
55
|
+
--focus-ring: 0 0 0 4px rgba(96, 165, 250, 0.28);
|
|
56
|
+
--motion-fast: 100ms;
|
|
57
|
+
--motion-base: 180ms;
|
|
58
|
+
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
59
|
+
--container-max: 1280px;
|
|
60
|
+
--container-gutter-desktop: 36px;
|
|
61
|
+
--container-gutter-tablet: 24px;
|
|
62
|
+
--container-gutter-phone: 16px;
|
|
63
|
+
}
|