@nurix/etna 0.18.20 → 0.18.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +3 -3
- package/data/harnesses/code/agents/brainstorm.md +1 -1
- package/data/harnesses/code/agents/maintenance.md +8 -7
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/rules/database.md +38 -0
- package/data/harnesses/code/rules/express.md +28 -0
- package/data/harnesses/code/rules/frontend.md +14 -0
- package/data/harnesses/code/rules/general.md +2 -40
- package/data/harnesses/code/rules/nomenclature.md +1 -8
- package/data/harnesses/code/rules/nustack.md +150 -0
- package/data/harnesses/code/skills/brainstorm/README.md +4 -4
- package/data/harnesses/code/skills/brainstorm/SKILL.md +5 -3
- package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +15 -11
- package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +5 -5
- package/data/harnesses/code/skills/design/SKILL.md +14 -11
- package/data/harnesses/code/skills/design/data/catalog/rules.csv +4 -4
- package/data/harnesses/code/skills/design/data/combinations/Readme.md +29 -0
- package/data/harnesses/code/skills/design/data/combinations/charts.csv +33 -0
- package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +437 -0
- package/data/harnesses/code/skills/design/data/combinations/icons.csv +157 -0
- package/data/harnesses/code/skills/design/data/combinations/landing.csv +38 -0
- package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +2001 -0
- package/data/harnesses/code/skills/design/data/combinations/manifest.json +283 -0
- package/data/harnesses/code/skills/design/data/combinations/palettes.csv +49 -0
- package/data/harnesses/code/skills/design/data/combinations/product-router.csv +80 -0
- package/data/harnesses/code/skills/design/data/combinations/styles.csv +54 -0
- package/data/harnesses/code/skills/design/data/combinations/typography.csv +61 -0
- package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +27 -238
- package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +7 -88
- package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +1 -82
- package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +4 -85
- package/data/harnesses/code/skills/design/data/design-md/library/apple.md +5 -86
- package/data/harnesses/code/skills/design/data/design-md/library/binance.md +4 -87
- package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +7 -86
- package/data/harnesses/code/skills/design/data/design-md/library/cal.md +4 -84
- package/data/harnesses/code/skills/design/data/design-md/library/clay.md +5 -86
- package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +3 -84
- package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +2 -82
- package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +10 -91
- package/data/harnesses/code/skills/design/data/design-md/library/composio.md +2 -84
- package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +3 -85
- package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +7 -90
- package/data/harnesses/code/skills/design/data/design-md/library/expo.md +0 -80
- package/data/harnesses/code/skills/design/data/design-md/library/figma.md +0 -80
- package/data/harnesses/code/skills/design/data/design-md/library/framer.md +5 -85
- package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +2 -82
- package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +5 -86
- package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +9 -91
- package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +9 -89
- package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +0 -115
- package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +5 -85
- package/data/harnesses/code/skills/design/data/design-md/library/meta.md +7 -88
- package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +3 -84
- package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +4 -85
- package/data/harnesses/code/skills/design/data/design-md/library/miro.md +8 -88
- package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +8 -88
- package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +4 -85
- package/data/harnesses/code/skills/design/data/design-md/library/notion.md +4 -84
- package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +7 -88
- package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +5 -86
- package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +6 -87
- package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +9 -91
- package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +5 -88
- package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +9 -89
- package/data/harnesses/code/skills/design/data/design-md/library/resend.md +4 -119
- package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +4 -84
- package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +0 -82
- package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +3 -86
- package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +13 -94
- package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +2 -82
- package/data/harnesses/code/skills/design/data/design-md/library/slack.md +6 -88
- package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +13 -94
- package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +4 -86
- package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +7 -88
- package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +6 -88
- package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +5 -86
- package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +6 -86
- package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +12 -93
- package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +11 -91
- package/data/harnesses/code/skills/design/data/design-md/library/uber.md +8 -88
- package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +2 -82
- package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +11 -126
- package/data/harnesses/code/skills/design/data/design-md/library/warp.md +8 -88
- package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +3 -83
- package/data/harnesses/code/skills/design/data/design-md/library/wired.md +10 -91
- package/data/harnesses/code/skills/design/data/design-md/library/wise.md +7 -90
- package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +6 -88
- package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +9 -89
- package/data/harnesses/code/skills/design/data/design-md/nurix.md +4 -87
- package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +580 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +954 -0
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +949 -0
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +962 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +973 -0
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +954 -0
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +963 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +981 -0
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +962 -0
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +959 -0
- package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +251 -0
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +978 -0
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +982 -0
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +589 -0
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +977 -0
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +950 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +976 -0
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +904 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +957 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +945 -0
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +953 -0
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +955 -0
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +613 -0
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +956 -0
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +958 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +980 -0
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +964 -0
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +957 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +974 -0
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +973 -0
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +966 -0
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +961 -0
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +977 -0
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +991 -0
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +966 -0
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +988 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +23 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +602 -0
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +974 -0
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +979 -0
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +960 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +968 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +965 -0
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +988 -0
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +20 -0
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +978 -0
- package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +1 -1
- package/data/harnesses/code/skills/design/references/create.md +14 -9
- package/data/harnesses/code/skills/design/references/diagnosis.md +1 -1
- package/data/harnesses/code/skills/design/references/hard-rules.md +4 -4
- package/data/harnesses/code/skills/design/references/improve.md +11 -9
- package/data/harnesses/code/skills/design/references/introspect.md +1 -1
- package/data/harnesses/code/skills/design/references/personality.md +337 -413
- package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +1032 -0
- package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +596 -296
- package/data/harnesses/code/skills/design/scripts/{detector.mjs → lib/checks.mjs} +145 -140
- package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +26 -0
- package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +105 -37
- package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +60 -73
- package/data/harnesses/code/skills/design/scripts/render-rung.mjs +1 -1
- package/data/harnesses/code/skills/design/scripts/scaffold.mjs +1 -1
- package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +205 -37
- package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +68 -0
- package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +314 -0
- package/data/harnesses/code/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/code/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/code/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/code/skills/documentation/references/templates.md +306 -52
- package/data/harnesses/etna/CLAUDE.md +3 -3
- package/data/harnesses/etna/agents/brainstorm.md +1 -1
- package/data/harnesses/etna/agents/maintenance.md +8 -7
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/general.md +2 -40
- package/data/harnesses/etna/rules/nomenclature.md +1 -8
- package/data/harnesses/etna/skills/brainstorm/README.md +4 -4
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +5 -3
- package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +15 -11
- package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +5 -5
- package/data/harnesses/etna/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/etna/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/etna/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/etna/skills/documentation/references/templates.md +306 -52
- package/data/harnesses/mobile/CLAUDE.md +3 -3
- package/data/harnesses/mobile/agents/brainstorm.md +1 -1
- package/data/harnesses/mobile/agents/maintenance.md +8 -7
- package/data/harnesses/mobile/harness.json +2 -2
- package/data/harnesses/mobile/rules/database.md +38 -0
- package/data/harnesses/mobile/rules/general.md +2 -40
- package/data/harnesses/mobile/rules/nomenclature.md +1 -8
- package/data/harnesses/mobile/rules/nustack.md +150 -0
- package/data/harnesses/mobile/skills/brainstorm/README.md +4 -4
- package/data/harnesses/mobile/skills/brainstorm/SKILL.md +5 -3
- package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +15 -11
- package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +5 -5
- package/data/harnesses/mobile/skills/documentation/SKILL.md +61 -17
- package/data/harnesses/mobile/skills/documentation/references/examples.md +41 -0
- package/data/harnesses/mobile/skills/documentation/references/style-guide.md +14 -9
- package/data/harnesses/mobile/skills/documentation/references/templates.md +306 -52
- package/package.json +1 -1
- package/data/harnesses/code/skills/design/scripts/hook-config.json +0 -11
|
@@ -7,14 +7,14 @@ sourced: 2026-07-04
|
|
|
7
7
|
|
|
8
8
|
# VoltAgent — near-black electric-green developer-console operator design
|
|
9
9
|
|
|
10
|
-
The *operator* reading of VoltAgent — a near-black IDE dressed as a documentation site: an
|
|
11
|
-
canvas with no light counterpart, one electric-green accent, hairline-bordered
|
|
12
|
-
**Categorically dark**, like the source: dark is the signature, a valued
|
|
13
|
-
carries — the near-black canvas, the single accent held
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
The *operator* reading of VoltAgent — a near-black IDE dressed as a documentation site: an
|
|
11
|
+
unrelenting `#101010` canvas with no light counterpart, one electric-green accent, hairline-bordered
|
|
12
|
+
cards, code-editor mockups. **Categorically dark**, like the source: dark is the signature, a valued
|
|
13
|
+
light daytime mode ships alongside. What carries — the near-black canvas, the single accent held
|
|
14
|
+
scarce, hairline-only flat depth, Inter + SF Mono, the 6px radius, near-black text on green (never
|
|
15
|
+
white); what stays behind — the 60px hero, the code-editor mockups, the 48px band rhythm, the green
|
|
16
|
+
divider band. One green does everything, so `success` is the brand's own deeper emerald `#10b981`
|
|
17
|
+
(its inline-link green), never the accent.
|
|
18
18
|
|
|
19
19
|
## 1 Visual Theme
|
|
20
20
|
|
|
@@ -28,9 +28,9 @@ anchor surface is the near-black canvas beside a hair-darker `sidebar`, separate
|
|
|
28
28
|
|
|
29
29
|
## 2 Color Roles
|
|
30
30
|
|
|
31
|
-
The signature is dark; both themes are valued
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
The signature is dark; both themes are valued. One chromatic accent — `primary` is the only hue that
|
|
32
|
+
carries the primary-action meaning; status hues speak only status; the deeper emerald `success` is
|
|
33
|
+
deliberately not the accent green.
|
|
34
34
|
|
|
35
35
|
| Role | Light (daytime) | Dark (signature) | Allowed where |
|
|
36
36
|
| --- | --- | --- | --- |
|
|
@@ -128,118 +128,3 @@ Directives the emitting agent follows verbatim:
|
|
|
128
128
|
- `success` is the deeper emerald `#10b981`, never the accent green — keep status legible against a brand whose accent is already green.
|
|
129
129
|
- Render every code, log, terminal, and metric surface in `font-mono` (SF Mono); every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`; section labels wear the uppercase Inter eyebrow at `+0.18em`.
|
|
130
130
|
- Depth is hairlines and one surface step, never shadow; reach for the overlay lift only for a true modal or popover. Detail and edit go in the side panel, never a modal. The green `ring` focus outline is always visible. Leave behind the 60px hero, the code-editor mockups, the 48px band rhythm, and the green divider.
|
|
131
|
-
|
|
132
|
-
```yaml design-primitives
|
|
133
|
-
radius: 6px # corpus: buttons/inputs at rounded.sm (6px); cards step to 8px (md); pill 9999 is badges/live-tags only
|
|
134
|
-
shadow-intensity: 0.4 # derived: brand is hairline-first with no card shadows, but its modal lift is heavy — overlays earn a real md shadow while cards stay flat
|
|
135
|
-
border-weight: 1px # corpus: 1px hairlines carry all elevation (featured cards use 3px, a variant not the base)
|
|
136
|
-
density-gap: 1 # derived: engineered-documentation feel read to an honest standard operator tier; archetypes step denser via the surface catalog
|
|
137
|
-
density-inset: 1 # derived: matches density-gap for coherent component insets
|
|
138
|
-
font-sans: Inter, system-ui, -apple-system, sans-serif # corpus: Inter carries display, body, UI, buttons, and every uppercase eyebrow
|
|
139
|
-
font-mono: SFMono-Regular, Menlo, Monaco, Consolas, monospace # corpus: SF Mono on every code/log/terminal/metric surface (JetBrains Mono or Geist Mono the free substitutes)
|
|
140
|
-
font-weight-normal: 400 # corpus: body and UI at 400
|
|
141
|
-
font-weight-strong: 600 # corpus: eyebrows, buttons, and strong body at 600 (the 700 display weight is hero-scale and stays behind)
|
|
142
|
-
heading-tracking: -0.02em # corpus: negative display tracking (-0.6px at 24px, -0.9px at 36px) is the calm engineered signature; -0.02em at operator heading scale
|
|
143
|
-
duration-unit: 50ms # derived: corpus is silent on motion; operator-standard functional base
|
|
144
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
145
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
146
|
-
duration-slow: 250ms # derived: corpus silent on motion; overlay/panel transition
|
|
147
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
|
|
148
|
-
contrast-boost: 1 # derived: the subtle hairline discipline on near-black is intentional; no boost
|
|
149
|
-
icon-stroke: 1.75 # derived: corpus has no icon system; a refined 1.75 stroke suits the precise engineered feel
|
|
150
|
-
icon-size-base: 16px # derived: corpus silent on icon size; operator standard
|
|
151
|
-
sidebar-width-expanded: 248px # derived: corpus has a marketing top-nav, no app-shell rail; operator standard
|
|
152
|
-
sidebar-width-collapsed: 56px # derived: standard operator icon rail
|
|
153
|
-
topbar-height: 52px # derived: corpus nav padding (12/32) reads generous; operator tightens to 52px
|
|
154
|
-
side-panel-width: 420px # derived: corpus has no shell; operator standard detail width
|
|
155
|
-
side-panel-width-rich: 640px # derived: content-heavy detail panel
|
|
156
|
-
modal-width-max: 560px # derived: corpus modal is full-bleed marketing; operator confirmation cap
|
|
157
|
-
form-max-width: 640px # derived: corpus max content ~1200-1400px is marketing; operator single-column reading caps forms at 640
|
|
158
|
-
table-row-height: 40px # derived: standard operator row; the engineered feel wants dense rows
|
|
159
|
-
verbosity: default
|
|
160
|
-
feedback: subtle # derived: brand is quiet and engineered but ships live pills and copy affordances — gentle present feedback, not austere silence
|
|
161
|
-
density-tier: standard # derived: engineered-documentation brand read to an honest operator tier; archetypes step denser, never the whole app
|
|
162
|
-
product-traits: [dev-tools, ai-agents, agent-console, dashboard, log-stream]
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
```yaml lever-manifest
|
|
166
|
-
version: 1
|
|
167
|
-
fonts: { sans: "Inter, system-ui, -apple-system, sans-serif", mono: "SFMono-Regular, Menlo, Monaco, Consolas, monospace" }
|
|
168
|
-
color-tokens:
|
|
169
|
-
light:
|
|
170
|
-
background: "#ffffff"
|
|
171
|
-
foreground: "#101010" # corpus: the brand near-black carries as daytime ink
|
|
172
|
-
card: "#ffffff"
|
|
173
|
-
card-foreground: "#101010"
|
|
174
|
-
muted: "#f4f4f5" # derived: neutral light fill, inverse of the near-black surface family
|
|
175
|
-
muted-foreground: "#6b7280" # derived: neutral-cool gray echoing the corpus mute #8b949e
|
|
176
|
-
border: "#e4e4e7" # derived: neutral light hairline (the dark #3d3a39 hairline inverts)
|
|
177
|
-
input: "#e4e4e7"
|
|
178
|
-
ring: "#00d992"
|
|
179
|
-
primary: "#00d992" # corpus: the single electric-green accent
|
|
180
|
-
primary-foreground: "#101010" # corpus: near-black text on green, never white
|
|
181
|
-
accent: "#ececed" # derived: neutral selection lift; never the accent green
|
|
182
|
-
accent-foreground: "#101010"
|
|
183
|
-
destructive: "#dc2626" # derived: corpus surfaces no error hue (Docusaurus default); standard operator red
|
|
184
|
-
destructive-foreground: "#ffffff"
|
|
185
|
-
success: "#10b981" # corpus: primary-deep — the deeper emerald, distinct from the electric accent green
|
|
186
|
-
warning: "#d97706" # derived: corpus has no warning hue; standard operator amber
|
|
187
|
-
popover: "#ffffff"
|
|
188
|
-
popover-foreground: "#101010"
|
|
189
|
-
secondary: "#f4f4f5"
|
|
190
|
-
secondary-foreground: "#101010"
|
|
191
|
-
chart-1: "#00d992" # corpus: brand green anchors the categorical series
|
|
192
|
-
chart-2: "#0ea5e9" # derived: sky, spread across a categorical set
|
|
193
|
-
chart-3: "#8b5cf6" # derived: violet
|
|
194
|
-
chart-4: "#f59e0b" # derived: amber
|
|
195
|
-
chart-5: "#f43f5e" # derived: rose
|
|
196
|
-
sidebar: "#fafafa" # derived: faint step below the white canvas so the rail reads as chrome
|
|
197
|
-
sidebar-foreground: "#101010"
|
|
198
|
-
sidebar-primary: "#00d992"
|
|
199
|
-
sidebar-primary-foreground: "#101010"
|
|
200
|
-
sidebar-accent: "#ececed"
|
|
201
|
-
sidebar-accent-foreground: "#101010"
|
|
202
|
-
sidebar-border: "#e4e4e7"
|
|
203
|
-
sidebar-ring: "#00d992"
|
|
204
|
-
dark:
|
|
205
|
-
background: "#101010" # corpus: canvas — the only marketing surface
|
|
206
|
-
foreground: "#f2f2f2" # corpus: ink, off-white to reduce contrast strain
|
|
207
|
-
card: "#1a1a1a" # corpus: canvas-soft — operator panel lift (marketing cards sit on the canvas + hairline; that flatness stays behind)
|
|
208
|
-
card-foreground: "#f2f2f2"
|
|
209
|
-
muted: "#242424" # derived: neutral hover/fill step above the card, reads on #1a1a1a
|
|
210
|
-
muted-foreground: "#8b949e" # corpus: mute
|
|
211
|
-
border: "#3d3a39" # corpus: hairline
|
|
212
|
-
input: "#3d3a39" # corpus: hairline field edge
|
|
213
|
-
ring: "#00d992"
|
|
214
|
-
primary: "#00d992"
|
|
215
|
-
primary-foreground: "#101010" # corpus: on-primary near-black
|
|
216
|
-
accent: "#2e2e2e" # derived: neutral selection lift above hover; never green
|
|
217
|
-
accent-foreground: "#f2f2f2"
|
|
218
|
-
destructive: "#f04438" # derived: red reads on near-black (corpus semantic is Docusaurus default)
|
|
219
|
-
destructive-foreground: "#ffffff"
|
|
220
|
-
success: "#10b981" # corpus: primary-deep emerald, distinct from the accent
|
|
221
|
-
warning: "#f59e0b" # derived: amber that reads on near-black
|
|
222
|
-
popover: "#1a1a1a" # corpus: canvas-soft — overlays match the card
|
|
223
|
-
popover-foreground: "#f2f2f2"
|
|
224
|
-
secondary: "#242424"
|
|
225
|
-
secondary-foreground: "#f2f2f2"
|
|
226
|
-
chart-1: "#00d992" # corpus: brand green anchors the series
|
|
227
|
-
chart-2: "#38bdf8" # derived: sky, reads on near-black
|
|
228
|
-
chart-3: "#a78bfa" # derived: violet
|
|
229
|
-
chart-4: "#fbbf24" # derived: amber
|
|
230
|
-
chart-5: "#fb7185" # derived: rose
|
|
231
|
-
sidebar: "#0c0c0c" # derived: one hair below the canvas so the nav rail recedes as chrome
|
|
232
|
-
sidebar-foreground: "#bdbdbd" # corpus: body — the nav-link text color
|
|
233
|
-
sidebar-primary: "#00d992"
|
|
234
|
-
sidebar-primary-foreground: "#101010"
|
|
235
|
-
sidebar-accent: "#2e2e2e"
|
|
236
|
-
sidebar-accent-foreground: "#f2f2f2"
|
|
237
|
-
sidebar-border: "#3d3a39"
|
|
238
|
-
sidebar-ring: "#00d992"
|
|
239
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
240
|
-
radius-scale: [0, 4, 6, 8, 9999]
|
|
241
|
-
shadow-levels: [none, sm, md]
|
|
242
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
243
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
244
|
-
accent-count: 1
|
|
245
|
-
```
|
|
@@ -17,12 +17,12 @@ every neutral, the extremely tight near-rectangular radius, the Inter + DM Mono
|
|
|
17
17
|
**monochrome** system with no chromatic accent. What stays behind: the 64px hero display, the 96px
|
|
18
18
|
section rhythm, the full-page terminal-mockup imagery, and the always-dark marketing band.
|
|
19
19
|
|
|
20
|
-
**Warm, light, and monochrome.** Warp's identity is the warmth, not the darkness — `oklch` hue 84.6,
|
|
21
|
-
brown-beige tint on every neutral. This theme keeps that warmth on a **light** paper floor so the
|
|
22
|
-
light-default floor holds cleanly; the brand's own warm-charcoal `#2b2622` survives as the code /
|
|
23
|
-
terminal inlay (Warp is a terminal — that surface is real chrome, not a mockup). With no
|
|
24
|
-
accent, the one operator accent is **ink**: the primary action is a filled warm-charcoal
|
|
25
|
-
|
|
20
|
+
**Warm, light, and monochrome.** Warp's identity is the warmth, not the darkness — `oklch` hue 84.6,
|
|
21
|
+
a brown-beige tint on every neutral. This theme keeps that warmth on a **light** paper floor so the
|
|
22
|
+
light-default floor holds cleanly; the brand's own warm-charcoal `#2b2622` survives as the code /
|
|
23
|
+
log / terminal inlay (Warp is a terminal — that surface is real chrome, not a mockup). With no
|
|
24
|
+
chromatic accent, the one operator accent is **ink**: the primary action is a filled warm-charcoal
|
|
25
|
+
button.
|
|
26
26
|
|
|
27
27
|
## 1 Visual Theme
|
|
28
28
|
|
|
@@ -36,8 +36,8 @@ and near-rectangular radius keep the terminal-dialect tightness.
|
|
|
36
36
|
|
|
37
37
|
## 2 Color Roles
|
|
38
38
|
|
|
39
|
-
Light values
|
|
40
|
-
|
|
39
|
+
Light values. No chromatic accent: `primary` is monochrome ink; the chart series live only in charts
|
|
40
|
+
(see §7); status hues speak only status.
|
|
41
41
|
|
|
42
42
|
| Role | Value | Allowed where |
|
|
43
43
|
| --- | --- | --- |
|
|
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
|
|
|
138
138
|
- Render code, log, and terminal panels in `font-mono` (DM Mono) on the warm-charcoal `#2b2622` inlay — show real terminal chrome, not a light mockup of it. Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
|
|
139
139
|
- Keep the geometry near-rectangular — the button/input radius is 3–4px; pill is badges only. Depth is the paper-to-off-white step and warm hairlines, never shadow; reach for the faint overlay lift only for a true modal or popover. Detail and edit go in the side panel beside the work, never a modal.
|
|
140
140
|
- Keyboard-first: the charcoal `ring` focus outline is always visible. Leave behind the 64px hero display, the 96px section rhythm, the full-page terminal-mockup imagery, and the always-dark marketing band.
|
|
141
|
-
|
|
142
|
-
```yaml design-primitives
|
|
143
|
-
radius: 4px # corpus: --radius base is rounded.md (4px); buttons run tighter at rounded.sm (3px); the brand is near-rectangular, never a generous pill
|
|
144
|
-
shadow-intensity: 0.15 # derived: brand is hairline-only ("no drop shadows on cards"); only true overlays earn the faintest lift
|
|
145
|
-
border-weight: 1px # corpus: 1px warm hairlines carry all depth
|
|
146
|
-
density-gap: 1 # derived: spacious marketing (96px sections) read to an honest standard operator tier; terminal tightness carried by radius/temperature, not the grid
|
|
147
|
-
density-inset: 1 # derived: matches density-gap for coherent component insets
|
|
148
|
-
font-sans: Inter, system-ui, -apple-system, sans-serif # corpus: Inter carries every display, body, button, and label role (weights 400/500)
|
|
149
|
-
font-mono: DM Mono, ui-monospace, SFMono-Regular, Menlo, monospace # corpus: DM Mono on every terminal mockup and code surface
|
|
150
|
-
font-weight-normal: 400 # corpus: body and — defining trait — the quiet display both sit at 400
|
|
151
|
-
font-weight-strong: 500 # corpus: nav links, buttons, body-strong at 500; the display stays 400 and the brand never goes heavy (700+ forbidden)
|
|
152
|
-
heading-tracking: -0.02em # corpus: negative tracking is part of the voice (-1.6px at 64px hero); ~-0.02em at operator heading scale
|
|
153
|
-
duration-unit: 50ms # derived: corpus declares no motion system on the marketing surface; operator-standard functional base
|
|
154
|
-
duration-fast: 100ms # derived: corpus silent on motion; functional tempo
|
|
155
|
-
duration-normal: 150ms # derived: corpus silent on motion; standard functional tempo
|
|
156
|
-
duration-slow: 250ms # derived: corpus silent on motion; overlay/panel transition
|
|
157
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional ease
|
|
158
|
-
contrast-boost: 1 # derived: the soft warm hairlines are the intended restraint; no boost
|
|
159
|
-
icon-stroke: 1.5 # derived: corpus silent on icons; a light refined stroke suits the quiet, minimal feel
|
|
160
|
-
icon-size-base: 16px # derived: corpus silent on icon size; operator standard
|
|
161
|
-
sidebar-width-expanded: 240px # derived: corpus has no app shell (marketing nav only); terminal-dialect tightness → a dense rail
|
|
162
|
-
sidebar-width-collapsed: 56px # derived: standard operator icon rail
|
|
163
|
-
topbar-height: 52px # corpus: nav padding md/xl (10px/24px) resolves to a ~52px bar — the brand's nav height
|
|
164
|
-
side-panel-width: 420px # derived: corpus has no shell; dense terminal read holds a tight detail panel
|
|
165
|
-
side-panel-width-rich: 640px # derived: content-heavy detail panel
|
|
166
|
-
modal-width-max: 560px # derived: corpus's CTA bands are full-bleed marketing; operator confirmation cap
|
|
167
|
-
form-max-width: 640px # derived: corpus max content ~1200px is marketing; single-column reading caps forms at 640
|
|
168
|
-
table-row-height: 40px # derived: terminal-dialect density → the dense 40px default, not the roomier editorial 44
|
|
169
|
-
verbosity: default
|
|
170
|
-
feedback: subtle # derived: brand is quietly understated but keeps a visible keyboard focus ring; gentle present feedback, not austere silence
|
|
171
|
-
density-tier: standard # derived: spacious marketing read down to an honest operator tier; terminal tightness carried by radius/temperature, not whitespace
|
|
172
|
-
product-traits: [terminal, dev-tools, ai-console, agent-ops, dashboard]
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
```yaml lever-manifest
|
|
176
|
-
version: 1
|
|
177
|
-
fonts: { sans: "Inter, system-ui, -apple-system, sans-serif", mono: "DM Mono, ui-monospace, SFMono-Regular, Menlo, monospace" }
|
|
178
|
-
color-tokens:
|
|
179
|
-
light:
|
|
180
|
-
background: "#f2efe8" # derived: warm paper floor one step below Warp's off-white, holding the brown-beige temperature in a light theme
|
|
181
|
-
foreground: "#2b2622" # corpus: Warp's warm-charcoal canvas, inverted to ink for the light theme
|
|
182
|
-
card: "#f7f5f0" # corpus: Warp off-white — the brand's literal light tone, as the lifted card surface
|
|
183
|
-
card-foreground: "#2b2622"
|
|
184
|
-
muted: "#eae6dd" # derived: soft warm fill for hover rows and quiet bands, one step below the paper
|
|
185
|
-
muted-foreground: "#6b655c" # derived: Warp's light mute (#aea69c reads for dark bg); darkened to a warm gray for light-mode text contrast
|
|
186
|
-
border: "#e2ddd2" # derived: warm hairline inverted from Warp's dark hairline (#3f3a36) for a light surface
|
|
187
|
-
input: "#e2ddd2"
|
|
188
|
-
ring: "#2b2622"
|
|
189
|
-
primary: "#2b2622" # corpus: no chromatic accent — the monochrome ink action is Warp's own canvas color
|
|
190
|
-
primary-foreground: "#f7f5f0" # corpus: off-white text on the charcoal action (Warp's inverted button-primary)
|
|
191
|
-
accent: "#e4dfd4" # derived: warm selection lift one step past muted, so selection reads over hover; never ink-filled
|
|
192
|
-
accent-foreground: "#2b2622"
|
|
193
|
-
destructive: "#c0392b" # derived: corpus has no error hue; a warm brick-red matching the palette temperature
|
|
194
|
-
destructive-foreground: "#f7f5f0" # derived: off-white on the warm red, holding temperature
|
|
195
|
-
success: "#5b8a45" # derived: corpus has no success hue; a warm-leaning green
|
|
196
|
-
warning: "#b8791f" # derived: corpus has no warning hue; a warm amber matching the brown-beige temperature
|
|
197
|
-
popover: "#f7f5f0"
|
|
198
|
-
popover-foreground: "#2b2622"
|
|
199
|
-
secondary: "#eae6dd"
|
|
200
|
-
secondary-foreground: "#2b2622"
|
|
201
|
-
chart-1: "#b0724e" # derived: monochrome brand has no chart palette; a warm categorical set (terracotta) holds temperature
|
|
202
|
-
chart-2: "#8a8250" # derived: warm olive
|
|
203
|
-
chart-3: "#5f7d5a" # derived: muted warm sage green
|
|
204
|
-
chart-4: "#a98a3f" # derived: muted warm gold
|
|
205
|
-
chart-5: "#6b655c" # derived: warm taupe neutral, echoing the ink for spread
|
|
206
|
-
sidebar: "#efece5" # derived: a faint warm step below the paper so the nav rail reads as chrome
|
|
207
|
-
sidebar-foreground: "#2b2622"
|
|
208
|
-
sidebar-primary: "#2b2622"
|
|
209
|
-
sidebar-primary-foreground: "#f7f5f0"
|
|
210
|
-
sidebar-accent: "#e4dfd4" # derived: hover/selected nav lift, matches accent
|
|
211
|
-
sidebar-accent-foreground: "#2b2622"
|
|
212
|
-
sidebar-border: "#e2ddd2"
|
|
213
|
-
sidebar-ring: "#2b2622"
|
|
214
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
215
|
-
radius-scale: [0, 2, 3, 4, 6, 9999]
|
|
216
|
-
shadow-levels: [none, sm, md]
|
|
217
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
218
|
-
icons: { family: lucide, stroke: 1.5 }
|
|
219
|
-
accent-count: 1
|
|
220
|
-
```
|
|
@@ -8,9 +8,9 @@ sourced: 2026-07-04
|
|
|
8
8
|
# Webflow — the visual-builder operator reading
|
|
9
9
|
|
|
10
10
|
A deliberate operator reading of the Webflow brand: engineered, near-monochrome, hairline-first. The
|
|
11
|
-
marketing site breathes 80px hero display type and full-saturation category cards; an operator
|
|
12
|
-
keeps the near-black primary, the pure-gray neutrals, and the single crisp blue, and leaves
|
|
13
|
-
display type and chromatic fills behind.
|
|
11
|
+
marketing site breathes 80px hero display type and full-saturation category cards; an operator
|
|
12
|
+
surface keeps the near-black primary, the pure-gray neutrals, and the single crisp blue, and leaves
|
|
13
|
+
the display type and chromatic fills behind.
|
|
14
14
|
|
|
15
15
|
## 1 Visual Theme
|
|
16
16
|
|
|
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
|
|
|
138
138
|
- Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono` (P4).
|
|
139
139
|
- Every workflow completes from the keyboard; the 2px blue `ring` is always visible (P6). Stay flat —
|
|
140
140
|
hairline and weight before shadow; reach past a hairline only for a real overlay.
|
|
141
|
-
|
|
142
|
-
```yaml design-primitives
|
|
143
|
-
radius: 4px # derived: brand's canonical button/badge radius; cards step to the 8px card radius via the scale
|
|
144
|
-
shadow-intensity: 0.5 # derived: brand's signature is layered drop-shadow on featured cards; operator stays hairline-first, mid intensity lifts true overlays only
|
|
145
|
-
border-weight: 1px
|
|
146
|
-
density-gap: 1
|
|
147
|
-
density-inset: 1
|
|
148
|
-
font-sans: WF Visual Sans Variable, Inter, system-ui, -apple-system, sans-serif
|
|
149
|
-
font-mono: WFVisualSans-Mono, Inconsolata, ui-monospace, SFMono-Regular, Menlo, monospace
|
|
150
|
-
font-weight-normal: 400
|
|
151
|
-
font-weight-strong: 600
|
|
152
|
-
heading-tracking: -0.01em # derived: brand display tracking is -0.16px/16px ≈ -0.01em; negative kerning is the voice
|
|
153
|
-
duration-unit: 50ms # derived: corpus has no motion spec; standard operator base
|
|
154
|
-
duration-fast: 100ms # derived: no corpus motion
|
|
155
|
-
duration-normal: 150ms # derived: no corpus motion
|
|
156
|
-
duration-slow: 250ms # derived: no corpus motion
|
|
157
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: standard operator ease
|
|
158
|
-
contrast-boost: 1
|
|
159
|
-
icon-stroke: 1.75 # derived: one step under lucide's 2 for a refined, engineered operator stroke
|
|
160
|
-
icon-size-base: 16px
|
|
161
|
-
sidebar-width-expanded: 248px # derived: brand is a website with no app shell; standard operator rail
|
|
162
|
-
sidebar-width-collapsed: 56px # derived: no brand shell
|
|
163
|
-
topbar-height: 56px # derived: brand nav-bar 16px vertical padding + 22px line ≈ 54, rounded
|
|
164
|
-
side-panel-width: 420px # derived: no brand shell
|
|
165
|
-
side-panel-width-rich: 640px # derived: no brand shell
|
|
166
|
-
modal-width-max: 560px # derived: no brand shell
|
|
167
|
-
form-max-width: 640px # derived: no brand shell
|
|
168
|
-
table-row-height: 44px # derived: brand's ~44px touch-target rhythm; cell padding 12/16
|
|
169
|
-
verbosity: default
|
|
170
|
-
feedback: subtle
|
|
171
|
-
density-tier: standard # derived: marketing surface is spacious, but a general operator default balances legibility and density; archetypes step denser
|
|
172
|
-
product-traits: [cms, dashboard, builder, admin, content-ops]
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
```yaml lever-manifest
|
|
176
|
-
version: 1
|
|
177
|
-
fonts: { sans: "WF Visual Sans Variable, Inter, system-ui, -apple-system, sans-serif", mono: "WFVisualSans-Mono, Inconsolata, ui-monospace, SFMono-Regular, Menlo, monospace" }
|
|
178
|
-
color-tokens:
|
|
179
|
-
light:
|
|
180
|
-
background: "#ffffff"
|
|
181
|
-
foreground: "#080808"
|
|
182
|
-
card: "#ffffff"
|
|
183
|
-
card-foreground: "#080808"
|
|
184
|
-
muted: "#f4f4f4" # derived: light neutral fill; brand neutrals are pure achromatic
|
|
185
|
-
muted-foreground: "#5a5a5a"
|
|
186
|
-
border: "#d8d8d8"
|
|
187
|
-
input: "#d8d8d8"
|
|
188
|
-
ring: "#146ef5" # derived: brand info blue is the interactive/focus accent
|
|
189
|
-
primary: "#080808"
|
|
190
|
-
primary-foreground: "#ffffff"
|
|
191
|
-
accent: "#eaf1fe" # derived: faint tint of the info blue for selection/hover surfaces
|
|
192
|
-
accent-foreground: "#146ef5"
|
|
193
|
-
destructive: "#ee1d36"
|
|
194
|
-
destructive-foreground: "#ffffff"
|
|
195
|
-
success: "#00d722"
|
|
196
|
-
warning: "#ffae13"
|
|
197
|
-
popover: "#ffffff"
|
|
198
|
-
popover-foreground: "#080808"
|
|
199
|
-
secondary: "#f4f4f4" # derived: matches the secondary-button neutral fill
|
|
200
|
-
secondary-foreground: "#080808"
|
|
201
|
-
chart-1: "#7a3dff"
|
|
202
|
-
chart-2: "#3b89ff"
|
|
203
|
-
chart-3: "#00d722"
|
|
204
|
-
chart-4: "#ff6b00"
|
|
205
|
-
chart-5: "#ed52cb"
|
|
206
|
-
sidebar: "#fafafa" # derived: faint neutral to seat the rail against the white canvas
|
|
207
|
-
sidebar-foreground: "#080808"
|
|
208
|
-
sidebar-primary: "#080808" # derived: brand app-shell active indicator uses the near-black primary
|
|
209
|
-
sidebar-primary-foreground: "#ffffff"
|
|
210
|
-
sidebar-accent: "#eaf1fe" # derived: selected-nav tint matches the content accent
|
|
211
|
-
sidebar-accent-foreground: "#146ef5"
|
|
212
|
-
sidebar-border: "#d8d8d8"
|
|
213
|
-
sidebar-ring: "#146ef5"
|
|
214
|
-
spacing-scale: [2, 4, 8, 12, 16, 20, 24, 32, 48, 64]
|
|
215
|
-
radius-scale: [0, 2, 4, 8, 9999]
|
|
216
|
-
shadow-levels: [none, sm, md]
|
|
217
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
218
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
219
|
-
accent-count: 1
|
|
220
|
-
```
|
|
@@ -8,11 +8,11 @@ sourced: 2026-07-04
|
|
|
8
8
|
# Wired — the print-editorial, black-on-white operator reading
|
|
9
9
|
|
|
10
10
|
An operator translation of Wired's design language — a flagship technology magazine ported to the
|
|
11
|
-
screen. The marketing theatre stays behind: the 64px `WiredDisplay` cover headline, the full-bleed
|
|
12
|
-
hero photography, the magazine story grid. What carries is the chassis underneath — a strict
|
|
13
|
-
black-on-white duet with no chromatic accent, square geometry on every control, hairline-only
|
|
14
|
-
and an editorial three-face type voice where a serif carries the page title over the sans
|
|
15
|
-
|
|
11
|
+
screen. The marketing theatre stays behind: the 64px `WiredDisplay` cover headline, the full-bleed
|
|
12
|
+
16:9 hero photography, the magazine story grid. What carries is the chassis underneath — a strict
|
|
13
|
+
black-on-white duet with no chromatic accent, square geometry on every control, hairline-only
|
|
14
|
+
elevation, and an editorial three-face type voice where a serif carries the page title over the sans
|
|
15
|
+
that runs the chrome.
|
|
16
16
|
|
|
17
17
|
## 1 Visual Theme
|
|
18
18
|
|
|
@@ -26,9 +26,9 @@ a white `sidebar` split by a hairline; density is `standard`, the breathing ridi
|
|
|
26
26
|
|
|
27
27
|
## 2 Color Roles
|
|
28
28
|
|
|
29
|
-
Light values
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
Light values. A deliberate black-and-white duet: `primary` is black, the sole chromatic grace (link
|
|
30
|
+
blue) is text-links only, and status hues are derived (the brand ships none), kept deep to sit under
|
|
31
|
+
the austerity.
|
|
32
32
|
|
|
33
33
|
| Role | Value | Allowed where |
|
|
34
34
|
| --- | --- | --- |
|
|
@@ -65,9 +65,8 @@ substitutes — applied to h1/h2 by hand at operator scale, never the 64px hero.
|
|
|
65
65
|
| caption | uppercase eyebrow / category | sans | 12px / 1.3 | `font-weight-strong`, `+0.02em`, uppercase |
|
|
66
66
|
| code | IDs, logs, amounts | mono | 13px / 1.5 | `font-weight-normal` |
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
typeface, not the weight.
|
|
68
|
+
Two weights only: sans emphasis 700, serif heading 400 — **never** promote the display past 400, its
|
|
69
|
+
elegance is the typeface, not the weight.
|
|
71
70
|
|
|
72
71
|
## 4 Component Stylings
|
|
73
72
|
|
|
@@ -138,83 +137,3 @@ element, put to keyboard work.
|
|
|
138
137
|
sans; `tabular-nums` on numeric columns, `font-mono` on IDs / codes / timestamps.
|
|
139
138
|
- Every workflow completes from the keyboard, the 2px black `ring` always visible; stay flat — hairline
|
|
140
139
|
and the black border before anything, the brand owns no shadow.
|
|
141
|
-
|
|
142
|
-
```yaml design-primitives
|
|
143
|
-
radius: 0px # corpus: rounded.none 0px on every interactive shape — the brand's square-geometry signature
|
|
144
|
-
shadow-intensity: 0 # corpus: the brand uses no drop-shadows; hairlines and the 2px black border carry all elevation
|
|
145
|
-
border-weight: 1px # corpus: 1px hairline dividers and input borders (the 2px black border is the special standout case)
|
|
146
|
-
density-gap: 1
|
|
147
|
-
density-inset: 1
|
|
148
|
-
font-sans: Apercu, Inter, Helvetica Neue, Helvetica, Arial, sans-serif # corpus: Apercu is the sans for nav/labels/buttons/metadata; Inter the open substitute
|
|
149
|
-
font-mono: IBM Plex Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus ships no mono; IBM Plex Mono's editorial grotesque suits the austere modern voice
|
|
150
|
-
font-weight-normal: 400 # corpus: body/Apercu regular is 400
|
|
151
|
-
font-weight-strong: 700 # corpus: Apercu emphasis is 700 (buttons, nav-strong, body-strong) — a two-weight 400/700 sans; the serif heading holds 400
|
|
152
|
-
heading-tracking: -0.01em # corpus: WiredDisplay tracks negative (-0.5px@64 down to -0.3px@32); at operator heading sizes that lands near -0.01em
|
|
153
|
-
duration-unit: 50ms # derived: corpus silent on motion; operator-standard functional base
|
|
154
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
155
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
156
|
-
duration-slow: 250ms # derived: corpus silent on motion; a print-restrained brand keeps motion minimal
|
|
157
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard operator ease
|
|
158
|
-
contrast-boost: 1 # derived: stark black-on-white is already maximal text contrast; the faint hairline is intentional, no boost
|
|
159
|
-
icon-stroke: 1.75 # derived: refined operator stroke, one step under lucide's 2, to sit with the high-contrast type
|
|
160
|
-
icon-size-base: 16px # derived: corpus silent; operator standard against 14-17px body
|
|
161
|
-
sidebar-width-expanded: 248px # derived: corpus has no shell; operator-standard editorial rail
|
|
162
|
-
sidebar-width-collapsed: 56px # derived: corpus has no shell; standard icon rail
|
|
163
|
-
topbar-height: 52px # derived: corpus masthead is a thin band; the operator topbar stays lean
|
|
164
|
-
side-panel-width: 420px # derived: corpus has no shell; operator standard
|
|
165
|
-
side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
|
|
166
|
-
modal-width-max: 560px # derived: corpus has no shell; confirmations only
|
|
167
|
-
form-max-width: 640px # derived: Wired's narrow single-column forms cap comfortably here
|
|
168
|
-
table-row-height: 40px # derived: corpus data-table cell has 12px vertical padding at standard density → 40px rows
|
|
169
|
-
verbosity: default # derived: the brand's minimalism is typographic, not label-hiding; keep operator labels present
|
|
170
|
-
feedback: subtle # rationale: subtle keeps the 2px ring — which here IS the brand's heavy black border — the keyboard-first austerity still wants unmistakable
|
|
171
|
-
density-tier: standard # rationale: an editorial magazine read down to an honest operator tier; breathing carried by type, not widened rows
|
|
172
|
-
product-traits: [cms, editorial, content-ops, dashboard, admin]
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
```yaml lever-manifest
|
|
176
|
-
version: 1
|
|
177
|
-
fonts: { sans: "Apercu, Inter, 'Helvetica Neue', Helvetica, Arial, sans-serif", mono: "IBM Plex Mono, ui-monospace, SFMono-Regular, monospace" }
|
|
178
|
-
color-tokens:
|
|
179
|
-
light:
|
|
180
|
-
background: "#ffffff"
|
|
181
|
-
foreground: "#000000" # brand override: pure black ink is intentional (the printed-page duet), not the usual near-black
|
|
182
|
-
card: "#ffffff"
|
|
183
|
-
card-foreground: "#000000"
|
|
184
|
-
muted: "#f5f5f5"
|
|
185
|
-
muted-foreground: "#757575"
|
|
186
|
-
border: "#e0e0e0"
|
|
187
|
-
input: "#000000" # corpus: text-input border is ink black — the square black-bordered field
|
|
188
|
-
ring: "#000000" # corpus: black is the heavy-border / standout treatment; the focus ring reuses it
|
|
189
|
-
primary: "#000000"
|
|
190
|
-
primary-foreground: "#ffffff"
|
|
191
|
-
accent: "#f5f5f5"
|
|
192
|
-
accent-foreground: "#000000"
|
|
193
|
-
destructive: "#c1121f" # derived: brand ships no status palette; a deep red kept under the monochrome austerity
|
|
194
|
-
destructive-foreground: "#ffffff"
|
|
195
|
-
success: "#1a7f37" # derived: brand ships no status palette; a deep green for status only
|
|
196
|
-
warning: "#b45309" # derived: brand ships no status palette; a deep amber for status only
|
|
197
|
-
popover: "#ffffff"
|
|
198
|
-
popover-foreground: "#000000"
|
|
199
|
-
secondary: "#f5f5f5"
|
|
200
|
-
secondary-foreground: "#000000"
|
|
201
|
-
chart-1: "#000000" # black anchor
|
|
202
|
-
chart-2: "#057dbc" # the one chromatic grace: link blue as the single accent series
|
|
203
|
-
chart-3: "#757575" # body gray
|
|
204
|
-
chart-4: "#b0b0b0" # derived: light gray step for a monochrome spread
|
|
205
|
-
chart-5: "#404040" # derived: dark gray step; the brand is monochrome, so the chart ramp is grayscale + one blue
|
|
206
|
-
sidebar: "#ffffff" # corpus: the nav-bar / masthead is white (the black footer band stays footer-only)
|
|
207
|
-
sidebar-foreground: "#000000"
|
|
208
|
-
sidebar-primary: "#000000" # corpus: app-shell active indicator is {colors.primary} = black
|
|
209
|
-
sidebar-primary-foreground: "#ffffff"
|
|
210
|
-
sidebar-accent: "#f5f5f5"
|
|
211
|
-
sidebar-accent-foreground: "#000000"
|
|
212
|
-
sidebar-border: "#e0e0e0"
|
|
213
|
-
sidebar-ring: "#000000"
|
|
214
|
-
spacing-scale: [2, 4, 8, 12, 16, 20, 24, 32, 48]
|
|
215
|
-
radius-scale: [0, 9999] # corpus: only 0 (everything) and 9999 (circular icon container) — the strict square scale enforces the no-round-corners rule
|
|
216
|
-
shadow-levels: [none, sm, md]
|
|
217
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
218
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
219
|
-
accent-count: 1
|
|
220
|
-
```
|
|
@@ -7,13 +7,10 @@ sourced: 2026-07-04
|
|
|
7
7
|
|
|
8
8
|
# Wise — the operator reading
|
|
9
9
|
|
|
10
|
-
A global money-transfer brand distilled to one idea for internal tools: a single lime-green action
|
|
11
|
-
against a warm sage surface ladder, near-black olive ink, and generously rounded cards. This
|
|
12
|
-
deliberate operator reading of Wise — the friendly-fintech temperature carried onto a payments
|
|
13
|
-
a transfers queue, a settlement dashboard — with the marketing skin left behind.
|
|
14
|
-
light theme (fully valued, no `hint:`); Wise's hero moment (Wise Sans weight 900 at 64–126px, the 24px
|
|
15
|
-
pill CTA, the currency-converter widget, the polarity-flipped dark bands) does not translate at operator
|
|
16
|
-
scale and stays behind. Judgments away from the marketing surfaces are annotated `# derived:`.
|
|
10
|
+
A global money-transfer brand distilled to one idea for internal tools: a single lime-green action
|
|
11
|
+
color against a warm sage surface ladder, near-black olive ink, and generously rounded cards. This
|
|
12
|
+
is a deliberate operator reading of Wise — the friendly-fintech temperature carried onto a payments
|
|
13
|
+
console, a transfers queue, a settlement dashboard — with the marketing skin left behind.
|
|
17
14
|
|
|
18
15
|
## 1 Visual Theme
|
|
19
16
|
|
|
@@ -27,9 +24,9 @@ Density is `standard` — the brand breathes, so the operator read holds an hone
|
|
|
27
24
|
|
|
28
25
|
## 2 Color Roles
|
|
29
26
|
|
|
30
|
-
Light values
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
Light values. One accent: `primary` lime carries brand meaning; the two greens are disciplined apart
|
|
28
|
+
(lime is the action, positive green is status), and the tertiary orange `#ffc091` / cyan `#38c8ff`
|
|
29
|
+
are illustration graces that survive only as chart hues, never UI accents.
|
|
33
30
|
|
|
34
31
|
| Role | Value | Allowed where |
|
|
35
32
|
| --- | --- | --- |
|
|
@@ -138,83 +135,3 @@ The operator sweep is 375 / 768 / 1024 / 1440:
|
|
|
138
135
|
the currency-converter widget, the polarity-flipped dark bands, and illustrative SVGs. What carries:
|
|
139
136
|
the sage/white temperature, the lime accent, the olive ink, the moderate radius, the Inter voice, and
|
|
140
137
|
the tabular number discipline.
|
|
141
|
-
|
|
142
|
-
```yaml design-primitives
|
|
143
|
-
radius: 12px # derived: brand's canonical 24px is marketing-soft; operator tightens to the brand's own form radius (rounded.md 12px), scale still offers 16/24px for cards
|
|
144
|
-
shadow-intensity: 0.35 # derived: flat brand; elevation is surface contrast, shadow only faint on true overlays
|
|
145
|
-
border-weight: 1px
|
|
146
|
-
density-gap: 1 # derived: the brand breathes; an honest standard tier over packing tight
|
|
147
|
-
density-inset: 1 # derived: matches the standard tier's component insets
|
|
148
|
-
font-sans: Inter, system-ui, -apple-system, sans-serif # the brand's actual second face and full body/UI workhorse; Wise Sans 900 is a hero-only stencil, left behind
|
|
149
|
-
font-mono: JetBrains Mono, ui-monospace, monospace # derived: corpus documents no mono; operator IDs/codes/amounts need one
|
|
150
|
-
font-weight-normal: 400
|
|
151
|
-
font-weight-strong: 600 # corpus: Inter semibold 600 carries buttons/labels/sub-display; the 900 hero weight stays behind
|
|
152
|
-
heading-tracking: -0.02em # corpus: derived from the brand's Inter display-xs (-0.48px / 24px ≈ -0.02em)
|
|
153
|
-
duration-unit: 50ms # derived: motion out of scope in corpus; functional operator base
|
|
154
|
-
duration-fast: 100ms # derived
|
|
155
|
-
duration-normal: 150ms # derived
|
|
156
|
-
duration-slow: 250ms # derived
|
|
157
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: standard functional ease; timings undocumented
|
|
158
|
-
contrast-boost: 1 # derived: the sage/white ladder plus hairlines already carry the grid
|
|
159
|
-
icon-stroke: 1.75 # derived: operator line-icon stroke one step under lucide's 2; the friendly brand still reads clean
|
|
160
|
-
icon-size-base: 16px # derived: base control icon size
|
|
161
|
-
sidebar-width-expanded: 256px # derived: no app shell in corpus; the brand's generous spacing → a touch wider than a dense rail
|
|
162
|
-
sidebar-width-collapsed: 56px # derived
|
|
163
|
-
topbar-height: 56px # derived: corpus nav-bar padding (12/24) implies a comfortable ~56px bar
|
|
164
|
-
side-panel-width: 440px # derived: no shell in corpus; standard nudged up for the brand's breathing
|
|
165
|
-
side-panel-width-rich: 640px # derived: content-heavy detail width
|
|
166
|
-
modal-width-max: 560px # derived: confirmations only
|
|
167
|
-
form-max-width: 640px # derived: the brand's single-column reading caps forms comfortably
|
|
168
|
-
table-row-height: 44px # derived: the brand breathes → rows a touch over the dense 40px default; dense archetypes step down via the surface catalog
|
|
169
|
-
verbosity: default
|
|
170
|
-
feedback: subtle # rationale: the friendly brand voice wants gentle present feedback, not austere silence
|
|
171
|
-
density-tier: standard # rationale: a spacious marketing brand read down to an honest operator tier; warmth carried by palette/radius, not whitespace
|
|
172
|
-
product-traits: [fintech, payments, money-transfer, dashboard, admin]
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
```yaml lever-manifest
|
|
176
|
-
version: 1
|
|
177
|
-
fonts: { sans: "Inter, system-ui, -apple-system, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
|
|
178
|
-
color-tokens:
|
|
179
|
-
light:
|
|
180
|
-
background: "#e8ebe6"
|
|
181
|
-
foreground: "#0e0f0c"
|
|
182
|
-
card: "#ffffff"
|
|
183
|
-
card-foreground: "#0e0f0c"
|
|
184
|
-
muted: "#eef1ea"
|
|
185
|
-
muted-foreground: "#454745"
|
|
186
|
-
border: "#d4d8d2"
|
|
187
|
-
input: "#0e0f0c" # the Wise signature 1px ink input border — a legitimate brand override of the hairline default
|
|
188
|
-
ring: "#163300" # derived: the lime primary is too light for a legible focus outline; the brand's forest ink-deep reads unmistakably
|
|
189
|
-
primary: "#9fe870"
|
|
190
|
-
primary-foreground: "#0e0f0c"
|
|
191
|
-
accent: "#e2f6d5"
|
|
192
|
-
accent-foreground: "#0e0f0c"
|
|
193
|
-
destructive: "#d03238"
|
|
194
|
-
destructive-foreground: "#ffffff"
|
|
195
|
-
success: "#2ead4b"
|
|
196
|
-
warning: "#b86700" # derived: the brand's bright warning #ffd11a fails as status text on white; its own warning-deep carries caution legibly
|
|
197
|
-
popover: "#ffffff"
|
|
198
|
-
popover-foreground: "#0e0f0c"
|
|
199
|
-
secondary: "#e8ebe6" # corpus: button-secondary fill is canvas-soft (sage)
|
|
200
|
-
secondary-foreground: "#0e0f0c"
|
|
201
|
-
chart-1: "#2ead4b" # derived: the pale lime primary is too light for a chart mark; the brand's positive green leads the series
|
|
202
|
-
chart-2: "#38c8ff" # brand accent cyan, parked as a chart hue
|
|
203
|
-
chart-3: "#ffc091" # brand accent orange, parked as a chart hue
|
|
204
|
-
chart-4: "#163300" # brand forest ink-deep
|
|
205
|
-
chart-5: "#ffd11a" # brand warning yellow, distinct enough for a fifth series
|
|
206
|
-
sidebar: "#ffffff" # corpus: nav-bar surface is white canvas — the chrome sits bright beside the sage content
|
|
207
|
-
sidebar-foreground: "#0e0f0c"
|
|
208
|
-
sidebar-primary: "#9fe870"
|
|
209
|
-
sidebar-primary-foreground: "#0e0f0c"
|
|
210
|
-
sidebar-accent: "#e2f6d5"
|
|
211
|
-
sidebar-accent-foreground: "#0e0f0c"
|
|
212
|
-
sidebar-border: "#d4d8d2"
|
|
213
|
-
sidebar-ring: "#163300"
|
|
214
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
215
|
-
radius-scale: [0, 8, 12, 16, 24, 9999]
|
|
216
|
-
shadow-levels: [none, sm, md]
|
|
217
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
218
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
219
|
-
accent-count: 1
|
|
220
|
-
```
|