@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,507 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>WeChat 微信 — reference components</title>
|
|
7
|
+
<meta
|
|
8
|
+
name="description"
|
|
9
|
+
content="Reference fixture for design-systems/wechat. Every visible
|
|
10
|
+
value comes from tokens.css. WeChat (微信) signature moves: muted
|
|
11
|
+
#EDEDED chat-list canvas, single decisive WeChat Green
|
|
12
|
+
(#07C160) accent, bilingual CJK-aware typography, modest
|
|
13
|
+
mobile-first type scale, whisper-quiet elevation lifted from
|
|
14
|
+
the incoming chat bubble."
|
|
15
|
+
/>
|
|
16
|
+
|
|
17
|
+
<style>
|
|
18
|
+
:root {
|
|
19
|
+
--bg: #ededed;
|
|
20
|
+
--surface: #f7f7f7;
|
|
21
|
+
--surface-warm: var(--surface);
|
|
22
|
+
|
|
23
|
+
--fg: #1a1a1a;
|
|
24
|
+
--fg-2: var(--fg);
|
|
25
|
+
--muted: #888888;
|
|
26
|
+
--meta: var(--muted);
|
|
27
|
+
|
|
28
|
+
--border: #e0e0e0;
|
|
29
|
+
--border-soft: var(--border);
|
|
30
|
+
|
|
31
|
+
--accent: #07c160;
|
|
32
|
+
--accent-on: #ffffff;
|
|
33
|
+
--accent-hover: #10b160;
|
|
34
|
+
--accent-active: #059050;
|
|
35
|
+
|
|
36
|
+
--success: #07c160;
|
|
37
|
+
--warn: #fab702;
|
|
38
|
+
--danger: #fa5151;
|
|
39
|
+
|
|
40
|
+
--font-display: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
41
|
+
--font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
42
|
+
--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
|
|
43
|
+
|
|
44
|
+
--text-xs: 11px;
|
|
45
|
+
--text-sm: 13px;
|
|
46
|
+
--text-base: 15px;
|
|
47
|
+
--text-lg: 16px;
|
|
48
|
+
--text-xl: 18px;
|
|
49
|
+
--text-2xl: 24px;
|
|
50
|
+
--text-3xl: 32px;
|
|
51
|
+
--text-4xl: 48px;
|
|
52
|
+
|
|
53
|
+
--leading-body: 1.6;
|
|
54
|
+
--leading-tight: 1.3;
|
|
55
|
+
--tracking-display: -0.01em;
|
|
56
|
+
|
|
57
|
+
--space-1: 4px;
|
|
58
|
+
--space-2: 8px;
|
|
59
|
+
--space-3: 12px;
|
|
60
|
+
--space-4: 16px;
|
|
61
|
+
--space-5: 20px;
|
|
62
|
+
--space-6: 24px;
|
|
63
|
+
--space-8: 32px;
|
|
64
|
+
--space-12: 48px;
|
|
65
|
+
|
|
66
|
+
--section-y-desktop: 72px;
|
|
67
|
+
--section-y-tablet: 48px;
|
|
68
|
+
--section-y-phone: 32px;
|
|
69
|
+
|
|
70
|
+
--radius-sm: 4px;
|
|
71
|
+
--radius-md: 8px;
|
|
72
|
+
--radius-lg: 16px;
|
|
73
|
+
--radius-pill: 9999px;
|
|
74
|
+
|
|
75
|
+
--elev-flat: none;
|
|
76
|
+
--elev-ring: 0 0 0 1px var(--border);
|
|
77
|
+
--elev-raised: 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
78
|
+
|
|
79
|
+
--focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
|
|
80
|
+
|
|
81
|
+
--motion-fast: 100ms;
|
|
82
|
+
--motion-base: 200ms;
|
|
83
|
+
--ease-standard: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
84
|
+
|
|
85
|
+
--container-max: 1200px;
|
|
86
|
+
--container-gutter-desktop: 24px;
|
|
87
|
+
--container-gutter-tablet: 16px;
|
|
88
|
+
--container-gutter-phone: 16px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* ─── Reset ─────────────────────────────────────────────── */
|
|
92
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
93
|
+
html, body { margin: 0; padding: 0; }
|
|
94
|
+
body {
|
|
95
|
+
background: var(--bg);
|
|
96
|
+
color: var(--fg);
|
|
97
|
+
font-family: var(--font-body);
|
|
98
|
+
font-size: var(--text-base);
|
|
99
|
+
line-height: var(--leading-body);
|
|
100
|
+
-webkit-font-smoothing: antialiased;
|
|
101
|
+
-moz-osx-font-smoothing: grayscale;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* ─── Layout ─────────────────────────────────────────────── */
|
|
105
|
+
.container {
|
|
106
|
+
max-width: var(--container-max);
|
|
107
|
+
margin-inline: auto;
|
|
108
|
+
padding-inline: var(--container-gutter-desktop);
|
|
109
|
+
}
|
|
110
|
+
section { padding-block: var(--section-y-desktop); }
|
|
111
|
+
section + section { border-top: 1px solid var(--border); }
|
|
112
|
+
@media (max-width: 1023px) {
|
|
113
|
+
.container { padding-inline: var(--container-gutter-tablet); }
|
|
114
|
+
section { padding-block: var(--section-y-tablet); }
|
|
115
|
+
}
|
|
116
|
+
@media (max-width: 639px) {
|
|
117
|
+
.container { padding-inline: var(--container-gutter-phone); }
|
|
118
|
+
section { padding-block: var(--section-y-phone); }
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* ─── Typography — modest, bilingual, mobile-first ──────── */
|
|
122
|
+
h1, h2, h3 {
|
|
123
|
+
font-family: var(--font-display);
|
|
124
|
+
line-height: var(--leading-tight);
|
|
125
|
+
margin: 0;
|
|
126
|
+
color: var(--fg);
|
|
127
|
+
}
|
|
128
|
+
h1 {
|
|
129
|
+
font-size: var(--text-4xl);
|
|
130
|
+
letter-spacing: var(--tracking-display);
|
|
131
|
+
font-weight: 600;
|
|
132
|
+
}
|
|
133
|
+
h2 {
|
|
134
|
+
font-size: var(--text-3xl);
|
|
135
|
+
letter-spacing: var(--tracking-display);
|
|
136
|
+
font-weight: 600;
|
|
137
|
+
}
|
|
138
|
+
h3 {
|
|
139
|
+
font-size: var(--text-xl);
|
|
140
|
+
font-weight: 600;
|
|
141
|
+
}
|
|
142
|
+
p { margin: 0; }
|
|
143
|
+
.lead {
|
|
144
|
+
font-size: var(--text-lg);
|
|
145
|
+
color: var(--muted);
|
|
146
|
+
line-height: var(--leading-body);
|
|
147
|
+
}
|
|
148
|
+
.body-muted { color: var(--muted); }
|
|
149
|
+
.body-sm { font-size: var(--text-sm); }
|
|
150
|
+
.body-xs { font-size: var(--text-xs); color: var(--meta); }
|
|
151
|
+
.eyebrow {
|
|
152
|
+
font-size: var(--text-xs);
|
|
153
|
+
color: var(--muted);
|
|
154
|
+
text-transform: uppercase;
|
|
155
|
+
letter-spacing: 0.08em;
|
|
156
|
+
font-weight: 500;
|
|
157
|
+
}
|
|
158
|
+
.stack-2 > * + * { margin-block-start: var(--space-2); }
|
|
159
|
+
.stack-3 > * + * { margin-block-start: var(--space-3); }
|
|
160
|
+
.stack-4 > * + * { margin-block-start: var(--space-4); }
|
|
161
|
+
.stack-6 > * + * { margin-block-start: var(--space-6); }
|
|
162
|
+
|
|
163
|
+
/* ─── Buttons — green is the load-bearing colour ───────── */
|
|
164
|
+
.btn {
|
|
165
|
+
display: inline-flex;
|
|
166
|
+
align-items: center;
|
|
167
|
+
gap: var(--space-2);
|
|
168
|
+
padding: 10px var(--space-6);
|
|
169
|
+
border-radius: var(--radius-md);
|
|
170
|
+
font-family: var(--font-body);
|
|
171
|
+
font-size: var(--text-lg);
|
|
172
|
+
font-weight: 500;
|
|
173
|
+
line-height: 1;
|
|
174
|
+
cursor: pointer;
|
|
175
|
+
border: none;
|
|
176
|
+
transition: background-color var(--motion-fast) var(--ease-standard),
|
|
177
|
+
color var(--motion-fast) var(--ease-standard);
|
|
178
|
+
text-decoration: none;
|
|
179
|
+
}
|
|
180
|
+
.btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
|
|
181
|
+
.btn-primary {
|
|
182
|
+
background: var(--accent);
|
|
183
|
+
color: var(--accent-on);
|
|
184
|
+
}
|
|
185
|
+
.btn-primary:hover { background: var(--accent-hover); }
|
|
186
|
+
.btn-primary:active { background: var(--accent-active); }
|
|
187
|
+
.btn-secondary {
|
|
188
|
+
background: var(--surface);
|
|
189
|
+
color: var(--fg);
|
|
190
|
+
border: 1px solid var(--border);
|
|
191
|
+
}
|
|
192
|
+
.btn-secondary:hover { background: color-mix(in oklab, var(--surface), var(--fg) 4%); }
|
|
193
|
+
|
|
194
|
+
/* ─── Inputs — light surface, green focus ──────────────── */
|
|
195
|
+
.field { display: flex; flex-direction: column; gap: var(--space-2); }
|
|
196
|
+
.field label {
|
|
197
|
+
font-size: var(--text-sm);
|
|
198
|
+
font-weight: 500;
|
|
199
|
+
color: var(--fg);
|
|
200
|
+
}
|
|
201
|
+
.field input {
|
|
202
|
+
padding: 10px var(--space-3);
|
|
203
|
+
border-radius: var(--radius-md);
|
|
204
|
+
border: 1px solid var(--border);
|
|
205
|
+
background: var(--surface);
|
|
206
|
+
color: var(--fg);
|
|
207
|
+
font-family: var(--font-body);
|
|
208
|
+
font-size: var(--text-base);
|
|
209
|
+
outline: none;
|
|
210
|
+
transition: border-color var(--motion-fast) var(--ease-standard),
|
|
211
|
+
box-shadow var(--motion-fast) var(--ease-standard);
|
|
212
|
+
}
|
|
213
|
+
.field input:focus-visible {
|
|
214
|
+
border-color: var(--accent);
|
|
215
|
+
box-shadow: var(--focus-ring);
|
|
216
|
+
}
|
|
217
|
+
.field input::placeholder { color: var(--muted); }
|
|
218
|
+
.field-help { font-size: var(--text-xs); color: var(--meta); }
|
|
219
|
+
|
|
220
|
+
/* ─── Cards — flat surface, hairline border ────────────── */
|
|
221
|
+
.card {
|
|
222
|
+
background: var(--surface);
|
|
223
|
+
border-radius: var(--radius-lg);
|
|
224
|
+
padding: var(--space-6);
|
|
225
|
+
display: flex;
|
|
226
|
+
flex-direction: column;
|
|
227
|
+
gap: var(--space-3);
|
|
228
|
+
box-shadow: var(--elev-raised);
|
|
229
|
+
border: 1px solid var(--border-soft);
|
|
230
|
+
}
|
|
231
|
+
.card h3 { line-height: var(--leading-tight); }
|
|
232
|
+
|
|
233
|
+
/* ─── Badges ────────────────────────────────────────────── */
|
|
234
|
+
.badge {
|
|
235
|
+
display: inline-flex; align-items: center; gap: var(--space-2);
|
|
236
|
+
padding: 3px var(--space-2);
|
|
237
|
+
border-radius: var(--radius-pill);
|
|
238
|
+
font-size: var(--text-xs);
|
|
239
|
+
font-weight: 500;
|
|
240
|
+
line-height: 1.6;
|
|
241
|
+
}
|
|
242
|
+
.badge-success {
|
|
243
|
+
color: var(--accent-on);
|
|
244
|
+
background: var(--success);
|
|
245
|
+
}
|
|
246
|
+
.badge-muted {
|
|
247
|
+
color: var(--muted);
|
|
248
|
+
background: color-mix(in oklab, var(--muted), transparent 88%);
|
|
249
|
+
}
|
|
250
|
+
.badge-dot { width: 6px; height: 6px; border-radius: var(--radius-pill); background: currentColor; }
|
|
251
|
+
|
|
252
|
+
/* ─── Links ─────────────────────────────────────────────── */
|
|
253
|
+
a { color: var(--accent); text-decoration: none; }
|
|
254
|
+
a:hover { text-decoration: underline; text-underline-offset: 3px; }
|
|
255
|
+
kbd {
|
|
256
|
+
font-family: var(--font-mono); font-size: var(--text-xs);
|
|
257
|
+
padding: 2px 6px; border-radius: var(--radius-sm);
|
|
258
|
+
border: 1px solid var(--border); background: var(--surface); color: var(--muted);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* ─── Hero — chat-bubble preview anchored on the right ── */
|
|
262
|
+
.hero-grid {
|
|
263
|
+
display: grid;
|
|
264
|
+
grid-template-columns: 1.3fr 1fr;
|
|
265
|
+
gap: var(--space-12);
|
|
266
|
+
align-items: center;
|
|
267
|
+
}
|
|
268
|
+
@media (max-width: 1023px) {
|
|
269
|
+
.hero-grid { grid-template-columns: 1fr; gap: var(--space-8); }
|
|
270
|
+
}
|
|
271
|
+
.hero-actions {
|
|
272
|
+
display: flex; gap: var(--space-3);
|
|
273
|
+
margin-block-start: var(--space-6);
|
|
274
|
+
flex-wrap: wrap;
|
|
275
|
+
}
|
|
276
|
+
.hero-meta {
|
|
277
|
+
display: flex; flex-direction: column; gap: var(--space-3);
|
|
278
|
+
padding: var(--space-4) var(--space-5);
|
|
279
|
+
border: 1px solid var(--border);
|
|
280
|
+
border-radius: var(--radius-md);
|
|
281
|
+
background: var(--surface);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* Chat-bubble illustration — DESIGN.md §Components ───────
|
|
285
|
+
* Bubble fills (#95EC69 outgoing, #FFFFFF incoming) are
|
|
286
|
+
* brand-specific C-extensions and therefore stay inline as
|
|
287
|
+
* one-off literals; they are not promoted to tokens. */
|
|
288
|
+
.chat-frame {
|
|
289
|
+
display: flex; flex-direction: column;
|
|
290
|
+
gap: var(--space-2);
|
|
291
|
+
padding: var(--space-5);
|
|
292
|
+
background: var(--bg);
|
|
293
|
+
border: 1px solid var(--border);
|
|
294
|
+
border-radius: var(--radius-lg);
|
|
295
|
+
}
|
|
296
|
+
.chat-row {
|
|
297
|
+
display: flex; align-items: flex-end; gap: var(--space-2);
|
|
298
|
+
max-width: 100%;
|
|
299
|
+
}
|
|
300
|
+
.chat-row.self { justify-content: flex-end; }
|
|
301
|
+
.chat-avatar {
|
|
302
|
+
width: 32px; height: 32px;
|
|
303
|
+
border-radius: var(--radius-pill);
|
|
304
|
+
background: var(--border);
|
|
305
|
+
flex-shrink: 0;
|
|
306
|
+
}
|
|
307
|
+
.bubble {
|
|
308
|
+
max-width: 78%;
|
|
309
|
+
padding: 10px var(--space-3);
|
|
310
|
+
border-radius: var(--radius-lg);
|
|
311
|
+
font-size: var(--text-base);
|
|
312
|
+
line-height: var(--leading-body);
|
|
313
|
+
color: var(--fg);
|
|
314
|
+
}
|
|
315
|
+
.bubble.self {
|
|
316
|
+
background: #95EC69;
|
|
317
|
+
border-top-right-radius: var(--radius-sm);
|
|
318
|
+
}
|
|
319
|
+
.bubble.other {
|
|
320
|
+
background: #ffffff;
|
|
321
|
+
border-top-left-radius: var(--radius-sm);
|
|
322
|
+
box-shadow: var(--elev-raised);
|
|
323
|
+
}
|
|
324
|
+
.timestamp {
|
|
325
|
+
align-self: center;
|
|
326
|
+
padding: var(--space-1) var(--space-2);
|
|
327
|
+
border-radius: var(--radius-sm);
|
|
328
|
+
background: color-mix(in oklab, var(--fg), transparent 92%);
|
|
329
|
+
font-size: var(--text-xs);
|
|
330
|
+
color: var(--muted);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/* ─── Features grid — three mini-program style cards ───── */
|
|
334
|
+
.features-grid {
|
|
335
|
+
display: grid;
|
|
336
|
+
grid-template-columns: repeat(3, 1fr);
|
|
337
|
+
gap: var(--space-5);
|
|
338
|
+
}
|
|
339
|
+
@media (max-width: 1023px) { .features-grid { grid-template-columns: 1fr 1fr; } }
|
|
340
|
+
@media (max-width: 639px) { .features-grid { grid-template-columns: 1fr; } }
|
|
341
|
+
.card-icon {
|
|
342
|
+
width: 40px; height: 40px;
|
|
343
|
+
border-radius: var(--radius-md);
|
|
344
|
+
background: color-mix(in oklab, var(--accent), transparent 86%);
|
|
345
|
+
color: var(--accent);
|
|
346
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
347
|
+
}
|
|
348
|
+
.card-icon svg { width: 22px; height: 22px; }
|
|
349
|
+
|
|
350
|
+
/* ─── Form row ─────────────────────────────────────────── */
|
|
351
|
+
.form-row {
|
|
352
|
+
display: grid;
|
|
353
|
+
grid-template-columns: 1.3fr 1fr;
|
|
354
|
+
gap: var(--space-12);
|
|
355
|
+
align-items: start;
|
|
356
|
+
}
|
|
357
|
+
@media (max-width: 1023px) { .form-row { grid-template-columns: 1fr; } }
|
|
358
|
+
.form { display: flex; flex-direction: column; gap: var(--space-4); max-width: 420px; }
|
|
359
|
+
.form-actions { display: flex; gap: var(--space-3); margin-block-start: var(--space-2); }
|
|
360
|
+
.icon { width: 16px; height: 16px; flex-shrink: 0; }
|
|
361
|
+
.row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
|
|
362
|
+
</style>
|
|
363
|
+
</head>
|
|
364
|
+
<body>
|
|
365
|
+
<main class="container">
|
|
366
|
+
<section data-od-id="hero">
|
|
367
|
+
<div class="hero-grid">
|
|
368
|
+
<div class="stack-4">
|
|
369
|
+
<p class="eyebrow">Reference fixture · wechat · 微信</p>
|
|
370
|
+
<h1>微信,是一个生活方式。</h1>
|
|
371
|
+
<p class="lead" style="max-width: 56ch">
|
|
372
|
+
WeChat — a way of life. From messages and Moments to Mini Programs,
|
|
373
|
+
payments, and official accounts, one app holds the whole day.
|
|
374
|
+
所有功能,皆在微信。
|
|
375
|
+
</p>
|
|
376
|
+
<div class="hero-actions">
|
|
377
|
+
<a href="./tokens.css" class="btn btn-primary">
|
|
378
|
+
立即体验
|
|
379
|
+
<svg class="icon" viewBox="0 0 24 24" fill="none"
|
|
380
|
+
stroke="currentColor" stroke-width="2"
|
|
381
|
+
stroke-linecap="round" stroke-linejoin="round"
|
|
382
|
+
aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
|
|
383
|
+
</a>
|
|
384
|
+
<a href="./DESIGN.md" class="btn btn-secondary">了解更多 · Learn more</a>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
<aside class="chat-frame" aria-label="Chat preview · 聊天预览">
|
|
388
|
+
<span class="timestamp"><time datetime="2026-05-18T14:08">下午 2:08</time></span>
|
|
389
|
+
<div class="chat-row">
|
|
390
|
+
<span class="chat-avatar" aria-hidden="true"></span>
|
|
391
|
+
<div class="bubble other">在吗?周末出来喝杯咖啡?</div>
|
|
392
|
+
</div>
|
|
393
|
+
<div class="chat-row self">
|
|
394
|
+
<div class="bubble self">好呀!老地方见 ☕</div>
|
|
395
|
+
</div>
|
|
396
|
+
<div class="chat-row">
|
|
397
|
+
<span class="chat-avatar" aria-hidden="true"></span>
|
|
398
|
+
<div class="bubble other">See you Saturday — I'll send the location.</div>
|
|
399
|
+
</div>
|
|
400
|
+
</aside>
|
|
401
|
+
</div>
|
|
402
|
+
</section>
|
|
403
|
+
|
|
404
|
+
<section data-od-id="features">
|
|
405
|
+
<div class="stack-3">
|
|
406
|
+
<p class="eyebrow">What this fixture exercises · 本示例所演示</p>
|
|
407
|
+
<h2 style="max-width: 24ch">日常的连接,安静地发生。</h2>
|
|
408
|
+
<p class="lead" style="max-width: 56ch">
|
|
409
|
+
Everyday connection, quietly delivered — chat, pay, scan, share.
|
|
410
|
+
Green is the only colour that raises its voice.
|
|
411
|
+
</p>
|
|
412
|
+
</div>
|
|
413
|
+
<div class="features-grid" style="margin-block-start: var(--space-8)">
|
|
414
|
+
<article class="card">
|
|
415
|
+
<span class="card-icon" aria-hidden="true">
|
|
416
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
417
|
+
stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
|
|
418
|
+
<path d="M21 12a8 8 0 0 1-11.7 7.1L4 21l1.9-5.3A8 8 0 1 1 21 12z"/>
|
|
419
|
+
</svg>
|
|
420
|
+
</span>
|
|
421
|
+
<h3>聊天 · Chat</h3>
|
|
422
|
+
<p class="body-muted body-sm">
|
|
423
|
+
15px 正文配 1.6 行高,#95EC69 outgoing bubbles, #FFFFFF
|
|
424
|
+
incoming — the colour pair every WeChat user knows by heart.
|
|
425
|
+
</p>
|
|
426
|
+
<a href="./DESIGN.md" class="body-sm">查看气泡规范 →</a>
|
|
427
|
+
</article>
|
|
428
|
+
<article class="card">
|
|
429
|
+
<span class="card-icon" aria-hidden="true">
|
|
430
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
431
|
+
stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
|
|
432
|
+
<rect x="3" y="3" width="7" height="7" rx="1.5"/>
|
|
433
|
+
<rect x="14" y="3" width="7" height="7" rx="1.5"/>
|
|
434
|
+
<rect x="3" y="14" width="7" height="7" rx="1.5"/>
|
|
435
|
+
<path d="M14 14h3M14 17h7M17 21v-7"/>
|
|
436
|
+
</svg>
|
|
437
|
+
</span>
|
|
438
|
+
<h3>小程序 · Mini Programs</h3>
|
|
439
|
+
<p class="body-muted body-sm">
|
|
440
|
+
卡片以 16px 圆角浮于灰底之上,hairline border 替代厚阴影 —
|
|
441
|
+
cards float on the chat-list gray with whisper-quiet elevation.
|
|
442
|
+
</p>
|
|
443
|
+
<a href="./tokens.css" class="body-sm">Inspect radius →</a>
|
|
444
|
+
</article>
|
|
445
|
+
<article class="card">
|
|
446
|
+
<span class="card-icon" aria-hidden="true">
|
|
447
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
|
448
|
+
stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">
|
|
449
|
+
<rect x="4" y="6" width="16" height="12" rx="2"/>
|
|
450
|
+
<path d="M4 10h16M8 14h3"/>
|
|
451
|
+
</svg>
|
|
452
|
+
</span>
|
|
453
|
+
<h3>支付 · WeChat Pay</h3>
|
|
454
|
+
<p class="body-muted body-sm">
|
|
455
|
+
#07C160 是“完成”的颜色 — green doubles as success because in
|
|
456
|
+
WeChat green is paid, done, delivered, confirmed.
|
|
457
|
+
</p>
|
|
458
|
+
<a href="./tokens.css" class="body-sm">Inspect accent →</a>
|
|
459
|
+
</article>
|
|
460
|
+
</div>
|
|
461
|
+
</section>
|
|
462
|
+
|
|
463
|
+
<section data-od-id="form">
|
|
464
|
+
<div class="form-row">
|
|
465
|
+
<div class="stack-4">
|
|
466
|
+
<p class="eyebrow">Form components · 表单组件</p>
|
|
467
|
+
<h2>用微信号登录。</h2>
|
|
468
|
+
<p class="body-muted" style="max-width: 48ch">
|
|
469
|
+
Sign in with your WeChat ID. Inputs sit on the surface tier,
|
|
470
|
+
focus rings inherit the brand green — no cool grays, no
|
|
471
|
+
competing accents. 简单、安静、熟悉。
|
|
472
|
+
</p>
|
|
473
|
+
<div class="hero-meta" role="status" aria-label="Service status · 服务状态">
|
|
474
|
+
<div class="row-between">
|
|
475
|
+
<span class="body-sm">服务状态 · Service</span>
|
|
476
|
+
<span class="badge badge-success">
|
|
477
|
+
<span class="badge-dot" aria-hidden="true"></span>
|
|
478
|
+
正常 Operational
|
|
479
|
+
</span>
|
|
480
|
+
</div>
|
|
481
|
+
<p class="body-xs">
|
|
482
|
+
Last reviewed <time datetime="2026-05-18">2026-05-18</time> ·
|
|
483
|
+
Press <kbd>⌘</kbd> <kbd>K</kbd> to search tokens.
|
|
484
|
+
</p>
|
|
485
|
+
</div>
|
|
486
|
+
</div>
|
|
487
|
+
<form class="form" onsubmit="event.preventDefault();">
|
|
488
|
+
<div class="field">
|
|
489
|
+
<label for="wxid">微信号 · WeChat ID</label>
|
|
490
|
+
<input id="wxid" type="text" placeholder="wxid_xxxxxxxx" autocomplete="username" required />
|
|
491
|
+
<p class="field-help">仅用于身份验证 — used for sign-in only.</p>
|
|
492
|
+
</div>
|
|
493
|
+
<div class="field">
|
|
494
|
+
<label for="phone">手机号 · Mobile</label>
|
|
495
|
+
<input id="phone" type="tel" placeholder="+86 138 0000 0000" autocomplete="tel" />
|
|
496
|
+
<p class="field-help">We'll send a verification code · 我们会发送验证码。</p>
|
|
497
|
+
</div>
|
|
498
|
+
<div class="form-actions">
|
|
499
|
+
<button type="submit" class="btn btn-primary">登录 · Sign in</button>
|
|
500
|
+
<button type="button" class="btn btn-secondary">扫码登录</button>
|
|
501
|
+
</div>
|
|
502
|
+
</form>
|
|
503
|
+
</div>
|
|
504
|
+
</section>
|
|
505
|
+
</main>
|
|
506
|
+
</body>
|
|
507
|
+
</html>
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/* ─────────────────────────────────────────────────────────────────────────
|
|
2
|
+
* design-systems/wechat/tokens.css
|
|
3
|
+
*
|
|
4
|
+
* Structured token bindings for "WeChat" (微信) — Tencent's all-in-one
|
|
5
|
+
* social, payment, and mini-program super-app. The visual language is
|
|
6
|
+
* a quiet, light-friendly consumer canvas built around one decisive
|
|
7
|
+
* signal: WeChat Green (#07C160). Everything else recedes so green
|
|
8
|
+
* carries the brand — CTAs, success states, active tab, focus ring.
|
|
9
|
+
* Bilingual CJK-aware typography (PingFang SC, Hiragino Sans GB,
|
|
10
|
+
* Microsoft YaHei, Noto Sans SC) keeps English and 中文 on the same
|
|
11
|
+
* vertical rhythm so chat rows, page titles, and mini-program cards
|
|
12
|
+
* align in either script without per-language overrides.
|
|
13
|
+
*
|
|
14
|
+
* Brand identity in three sentences:
|
|
15
|
+
* 1. The canvas is the muted #EDEDED chat-list gray, not pure white —
|
|
16
|
+
* this is the colour every WeChat user has stared at for a decade.
|
|
17
|
+
* Surfaces (#F7F7F7) lift one tone above it. Pure white belongs to
|
|
18
|
+
* incoming chat bubbles, not pages.
|
|
19
|
+
* 2. Brand green #07C160 is the only accent. Hover (#10B160) and
|
|
20
|
+
* pressed (#059050) come straight from the platform spec; the same
|
|
21
|
+
* green doubles as the success state because in WeChat green *is*
|
|
22
|
+
* "good / done / sent / paid".
|
|
23
|
+
* 3. Type is mobile-first and dense: 15px body at 1.6 line-height,
|
|
24
|
+
* 18px page titles, 11px timestamps. The display ladder (24 → 32
|
|
25
|
+
* → 48px) is deliberately modest — WeChat's marketing voice
|
|
26
|
+
* ("微信,是一个生活方式") is understated, not billboard-loud.
|
|
27
|
+
*
|
|
28
|
+
* Schema decisions:
|
|
29
|
+
* - --bg: #ededed (chat-list gray, DESIGN.md §UI Neutrals).
|
|
30
|
+
* - --surface: #f7f7f7 (card / sheet lift on bg).
|
|
31
|
+
* - --surface-warm: var(--surface) — single surface tier.
|
|
32
|
+
* - --fg: #1a1a1a (ink); --fg-2 alias — DESIGN.md has one text tier.
|
|
33
|
+
* - --muted: #888888 (secondary + timestamps);
|
|
34
|
+
* --meta: var(--muted) — DESIGN.md does not separate the tier.
|
|
35
|
+
* - --border: #e0e0e0; --border-soft alias — single border weight.
|
|
36
|
+
* - --accent: #07c160 + hover #10b160 + active #059050 (DESIGN.md).
|
|
37
|
+
* - --success: #07c160 (brand-as-success — green is "done" in WeChat).
|
|
38
|
+
* - --warn: #fab702; --danger: #fa5151 (DESIGN.md functional palette).
|
|
39
|
+
* - --font-display / --font-body: identical apple-system + CJK stack.
|
|
40
|
+
* DESIGN.md uses a single family across the app; bilingual users get
|
|
41
|
+
* PingFang SC → Hiragino Sans GB → Microsoft YaHei → Noto Sans SC
|
|
42
|
+
* fallbacks so 中文 renders crisply on macOS, iOS, Windows and Linux.
|
|
43
|
+
* - Type scale: 11 / 13 / 15 / 16 / 18 / 24 / 32 / 48 — mobile-first
|
|
44
|
+
* chat ladder extended with a modest 48px hero for marketing pages.
|
|
45
|
+
* - --leading-body: 1.6 (DESIGN.md body, generous for CJK density).
|
|
46
|
+
* - Radius: 4 / 8 / 16 / pill (DESIGN.md §Border Radius).
|
|
47
|
+
* - Motion: 100ms hover, 200ms message-entry, cubic-bezier(0.25, 0.1,
|
|
48
|
+
* 0.25, 1) — DESIGN.md §Motion (instant + fast + ease-default).
|
|
49
|
+
* ─────────────────────────────────────────────────────────────────── */
|
|
50
|
+
|
|
51
|
+
:root {
|
|
52
|
+
/* ─── Surface ──────────────────────────────────────────────────────
|
|
53
|
+
* Light-friendly canvas: the muted #EDEDED chat-list gray is the
|
|
54
|
+
* WeChat user's home colour. Surfaces lift one tone above it. */
|
|
55
|
+
--bg: #ededed; /* chat-list gray — primary canvas */
|
|
56
|
+
--surface: #f7f7f7; /* card / sheet lift on bg */
|
|
57
|
+
--surface-warm: var(--surface); /* alias — single surface tier */
|
|
58
|
+
|
|
59
|
+
/* ─── Foreground ───────────────────────────────────────────────────
|
|
60
|
+
* One ink, one secondary. DESIGN.md does not separate dark / warm
|
|
61
|
+
* tiers, so --fg-2 and --meta alias their siblings. */
|
|
62
|
+
--fg: #1a1a1a; /* ink — primary text */
|
|
63
|
+
--fg-2: var(--fg); /* alias — single text weight */
|
|
64
|
+
--muted: #888888; /* secondary + timestamps */
|
|
65
|
+
--meta: var(--muted); /* alias — same gray for metadata */
|
|
66
|
+
|
|
67
|
+
/* ─── Border ───────────────────────────────────────────────────────
|
|
68
|
+
* Dividers are quiet — most cards are defined by background contrast,
|
|
69
|
+
* not borders. When borders appear, they are the same hairline gray. */
|
|
70
|
+
--border: #e0e0e0; /* card / row edge */
|
|
71
|
+
--border-soft: var(--border); /* alias — no inner separator tier */
|
|
72
|
+
|
|
73
|
+
/* ─── Accent ───────────────────────────────────────────────────────
|
|
74
|
+
* WeChat Green is the single load-bearing colour. Hover and active
|
|
75
|
+
* are taken verbatim from DESIGN.md so primary buttons feel native. */
|
|
76
|
+
--accent: #07c160; /* WeChat green — primary brand */
|
|
77
|
+
--accent-on: #ffffff;
|
|
78
|
+
--accent-hover: #10b160; /* DESIGN.md primary hover */
|
|
79
|
+
--accent-active: #059050; /* DESIGN.md primary pressed */
|
|
80
|
+
|
|
81
|
+
/* ─── Semantic ─────────────────────────────────────────────────────
|
|
82
|
+
* Green doubles as success because in WeChat green *is* "done / paid /
|
|
83
|
+
* sent". Warning + danger come straight from DESIGN.md §Functional. */
|
|
84
|
+
--success: #07c160; /* brand-as-success — paid / done */
|
|
85
|
+
--warn: #fab702; /* DESIGN.md warning orange */
|
|
86
|
+
--danger: #fa5151; /* DESIGN.md error red */
|
|
87
|
+
|
|
88
|
+
/* ─── Typography ───────────────────────────────────────────────────
|
|
89
|
+
* Single bilingual stack across display + body. -apple-system first
|
|
90
|
+
* for SF / SF Pro on Apple platforms; PingFang SC + Hiragino Sans GB
|
|
91
|
+
* + Microsoft YaHei + Noto Sans SC keep 中文 crisp on macOS, iOS,
|
|
92
|
+
* Windows and Linux respectively. Helvetica Neue / Helvetica / Arial
|
|
93
|
+
* close the Latin tail. */
|
|
94
|
+
--font-display: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
95
|
+
--font-body: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
96
|
+
--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
|
|
97
|
+
|
|
98
|
+
/* Type scale — DESIGN.md §Typography is mobile-first (11–18px). The
|
|
99
|
+
* top three tiers (24 / 32 / 48px) extend the ladder for marketing
|
|
100
|
+
* pages while staying understated — WeChat does not shout. */
|
|
101
|
+
--text-xs: 11px; /* caption / timestamp */
|
|
102
|
+
--text-sm: 13px; /* secondary text */
|
|
103
|
+
--text-base: 15px; /* body — WeChat default */
|
|
104
|
+
--text-lg: 16px; /* section header / button label */
|
|
105
|
+
--text-xl: 18px; /* page title */
|
|
106
|
+
--text-2xl: 24px; /* feature heading */
|
|
107
|
+
--text-3xl: 32px; /* H2 — section title */
|
|
108
|
+
--text-4xl: 48px; /* display hero — modest by design */
|
|
109
|
+
|
|
110
|
+
/* Leading + tracking.
|
|
111
|
+
* 1.6 body line-height (DESIGN.md) gives Chinese characters generous
|
|
112
|
+
* air; 1.3 tight line-height matches the page-title spec. Display
|
|
113
|
+
* tracking compresses one notch — works for both Latin and CJK. */
|
|
114
|
+
--leading-body: 1.6;
|
|
115
|
+
--leading-tight: 1.3;
|
|
116
|
+
--tracking-display: -0.01em;
|
|
117
|
+
|
|
118
|
+
/* ─── Spacing ──────────────────────────────────────────────────────
|
|
119
|
+
* 4px base unit, DESIGN.md §Spacing System. The schema's --space-5
|
|
120
|
+
* (20px) and --space-12 (48px) fill in tiers DESIGN.md does not name
|
|
121
|
+
* but the layout grid needs. */
|
|
122
|
+
--space-1: 4px;
|
|
123
|
+
--space-2: 8px;
|
|
124
|
+
--space-3: 12px;
|
|
125
|
+
--space-4: 16px;
|
|
126
|
+
--space-5: 20px;
|
|
127
|
+
--space-6: 24px;
|
|
128
|
+
--space-8: 32px;
|
|
129
|
+
--space-12: 48px;
|
|
130
|
+
|
|
131
|
+
/* ─── Section rhythm ───────────────────────────────────────────────
|
|
132
|
+
* Phone-first product — desktop rhythm stays modest (72px) and
|
|
133
|
+
* collapses to 32px on phones to keep chat-row density on small
|
|
134
|
+
* screens. */
|
|
135
|
+
--section-y-desktop: 72px;
|
|
136
|
+
--section-y-tablet: 48px;
|
|
137
|
+
--section-y-phone: 32px;
|
|
138
|
+
|
|
139
|
+
/* ─── Radius ───────────────────────────────────────────────────────
|
|
140
|
+
* DESIGN.md §Border Radius: 4 / 8 / 16 / pill. (The brand-specific
|
|
141
|
+
* --radius-bubble lives in DESIGN.md but is component-local — chat
|
|
142
|
+
* bubbles re-derive it inline so it does not enter the shared schema.) */
|
|
143
|
+
--radius-sm: 4px;
|
|
144
|
+
--radius-md: 8px;
|
|
145
|
+
--radius-lg: 16px;
|
|
146
|
+
--radius-pill: 9999px;
|
|
147
|
+
|
|
148
|
+
/* ─── Elevation ────────────────────────────────────────────────────
|
|
149
|
+
* Whisper-quiet shadow lifted from DESIGN.md's incoming-bubble spec
|
|
150
|
+
* (0 1px 2px rgba(0,0,0,0.06)). WeChat surfaces almost never float;
|
|
151
|
+
* when they do, the shadow is barely perceptible. */
|
|
152
|
+
--elev-flat: none;
|
|
153
|
+
--elev-ring: 0 0 0 1px var(--border);
|
|
154
|
+
--elev-raised: 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
155
|
+
|
|
156
|
+
/* ─── Focus ────────────────────────────────────────────────────────
|
|
157
|
+
* Green-tinted ring keeps the brand voice consistent on keyboard
|
|
158
|
+
* focus across inputs, buttons, and links. */
|
|
159
|
+
--focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
|
|
160
|
+
|
|
161
|
+
/* ─── Motion ───────────────────────────────────────────────────────
|
|
162
|
+
* DESIGN.md §Motion: 100ms hover, 200ms chat-message entry. Easing
|
|
163
|
+
* is the platform default (cubic-bezier(0.25, 0.1, 0.25, 1)) — the
|
|
164
|
+
* classic browser "ease", chosen for muscle-memory familiarity. */
|
|
165
|
+
--motion-fast: 100ms;
|
|
166
|
+
--motion-base: 200ms;
|
|
167
|
+
--ease-standard: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
168
|
+
|
|
169
|
+
/* ─── Layout ───────────────────────────────────────────────────────
|
|
170
|
+
* 1200px container fits WeChat's marketing-site pattern; phone
|
|
171
|
+
* gutters stay at 16px to match the chat row inset. */
|
|
172
|
+
--container-max: 1200px;
|
|
173
|
+
--container-gutter-desktop: 24px;
|
|
174
|
+
--container-gutter-tablet: 16px;
|
|
175
|
+
--container-gutter-phone: 16px;
|
|
176
|
+
}
|