@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
|
@@ -139,83 +139,3 @@ Directives the emitting agent follows verbatim:
|
|
|
139
139
|
- Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
|
|
140
140
|
- The pastels live only in charts (`chart-1..5`); stay flat — hairline and weight before shadow, and
|
|
141
141
|
reach past a hairline only for a real overlay.
|
|
142
|
-
|
|
143
|
-
```yaml design-primitives
|
|
144
|
-
radius: 8px # derived: Figma control radius (rounded.md, inputs/list items) carries the friendly rounding; the marketing pill (50px) stays behind
|
|
145
|
-
shadow-intensity: 0.35 # derived: brand is shadow-light by design (level-2 overlay is only 0.06 alpha); hairline and surface carry depth
|
|
146
|
-
border-weight: 1px
|
|
147
|
-
density-gap: 1
|
|
148
|
-
density-inset: 1
|
|
149
|
-
font-sans: Inter, system-ui, sans-serif # derived: figmaSans substitute (corpus names Inter for its fine variable-weight axis)
|
|
150
|
-
font-mono: JetBrains Mono, ui-monospace, monospace # derived: figmaMono substitute (corpus names JetBrains Mono) — IDs, codes, log lines, eyebrows
|
|
151
|
-
font-weight-normal: 400 # derived: brand body runs 320-340 (display-tuned); Inter has no 320 stop and 300 is too thin for 13px tables, so 400
|
|
152
|
-
font-weight-strong: 600 # derived: operator emphasis bracketed by brand headline 540 / card-title 700
|
|
153
|
-
heading-tracking: -0.01em # derived: matches Figma's headline-scale tracking (-0.26px at 26px); the -1.72px hero tracking is display-scale, stays behind
|
|
154
|
-
duration-unit: 50ms # derived: corpus documents no motion (no-interaction policy); operator functional-motion base
|
|
155
|
-
duration-fast: 100ms # derived: operator functional default
|
|
156
|
-
duration-normal: 150ms # derived: operator functional default
|
|
157
|
-
duration-slow: 250ms # derived: operator functional default
|
|
158
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: standard functional ease; corpus documents no motion
|
|
159
|
-
contrast-boost: 1 # derived: pure black ink on white is already maximal contrast; hairlines are visible; no boost needed
|
|
160
|
-
icon-stroke: 1.75 # derived: refined operator stroke, one step under lucide's 2
|
|
161
|
-
icon-size-base: 16px # derived: operator default; matches the corpus's 16px comparison-checkmark glyph
|
|
162
|
-
sidebar-width-expanded: 256px # derived: 8px-grid aligned (32 units), slightly roomier per the brand's generous rhythm
|
|
163
|
-
sidebar-width-collapsed: 56px # derived: mirrors Figma's 56px top-nav height (7 units)
|
|
164
|
-
topbar-height: 56px # brand: Figma's documented top-nav height
|
|
165
|
-
side-panel-width: 440px # derived: 8px-grid aligned (55 units), roomy per brand character
|
|
166
|
-
side-panel-width-rich: 640px # derived: 8px-grid aligned (80 units) for content-heavy detail
|
|
167
|
-
modal-width-max: 560px # derived: 8px-grid aligned (70 units); modals for confirmations only
|
|
168
|
-
form-max-width: 640px # derived: 8px-grid aligned (80 units)
|
|
169
|
-
table-row-height: 44px # derived: brand's generous rhythm + the 44px min touch target the corpus cites; dense archetypes step down via the surface catalog
|
|
170
|
-
verbosity: default
|
|
171
|
-
feedback: subtle # derived: brand is calm, editorial, shadow-light — quiet feedback fits
|
|
172
|
-
density-tier: standard # derived: brand rhythm is generous (8px base) but operator work needs function; standard, leaning roomy
|
|
173
|
-
product-traits: [design-tools, collaboration, dashboard, admin]
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
```yaml lever-manifest
|
|
177
|
-
version: 1
|
|
178
|
-
fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
|
|
179
|
-
color-tokens:
|
|
180
|
-
light:
|
|
181
|
-
background: "#ffffff"
|
|
182
|
-
foreground: "#000000"
|
|
183
|
-
card: "#ffffff"
|
|
184
|
-
card-foreground: "#000000"
|
|
185
|
-
muted: "#f7f7f5"
|
|
186
|
-
muted-foreground: "#666666" # derived: brand refuses mid-gray text on marketing; operator secondary ink needs it — neutral gray, 5.7:1 AA on white
|
|
187
|
-
border: "#e6e6e6"
|
|
188
|
-
input: "#e6e6e6"
|
|
189
|
-
ring: "#ff3d8b" # brand: Figma magenta, the single chromatic accent, on the focus ring
|
|
190
|
-
primary: "#000000"
|
|
191
|
-
primary-foreground: "#ffffff"
|
|
192
|
-
accent: "#ffe4ef" # derived: pale magenta tint for selection/hover surfaces
|
|
193
|
-
accent-foreground: "#000000" # derived: ink-black for AA on the pale accent; magenta stays scarce on the ring/indicator
|
|
194
|
-
destructive: "#eb5757" # derived: Figma product red, matching the palette's bright-friendly saturation
|
|
195
|
-
destructive-foreground: "#ffffff"
|
|
196
|
-
success: "#1ea64a" # brand: documented semantic-success green
|
|
197
|
-
warning: "#f2994a" # derived: Figma product amber; matches the success green's friendly saturation
|
|
198
|
-
popover: "#ffffff"
|
|
199
|
-
popover-foreground: "#000000"
|
|
200
|
-
secondary: "#f7f7f5"
|
|
201
|
-
secondary-foreground: "#000000"
|
|
202
|
-
chart-1: "#ff3d8b" # brand: magenta anchors the ramp as the saturated primary series
|
|
203
|
-
chart-2: "#7c5cde" # derived: block-lilac (#c5b0f4) deepened for chart legibility
|
|
204
|
-
chart-3: "#1ea64a" # brand: success green
|
|
205
|
-
chart-4: "#f2994a" # derived: warning amber
|
|
206
|
-
chart-5: "#1f1d3d" # brand: block-navy deep indigo
|
|
207
|
-
sidebar: "#f7f7f5"
|
|
208
|
-
sidebar-foreground: "#000000"
|
|
209
|
-
sidebar-primary: "#000000"
|
|
210
|
-
sidebar-primary-foreground: "#ffffff"
|
|
211
|
-
sidebar-accent: "#ffe4ef" # derived: pale magenta hover/selection tint, matching accent
|
|
212
|
-
sidebar-accent-foreground: "#000000"
|
|
213
|
-
sidebar-border: "#e6e6e6"
|
|
214
|
-
sidebar-ring: "#ff3d8b" # brand: magenta focus ring in the nav
|
|
215
|
-
spacing-scale: [4, 8, 12, 16, 24, 32, 48, 96]
|
|
216
|
-
radius-scale: [0, 6, 8, 24, 9999]
|
|
217
|
-
shadow-levels: [none, sm, md]
|
|
218
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
219
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
220
|
-
accent-count: 1
|
|
221
|
-
```
|
|
@@ -9,11 +9,11 @@ sourced: 2026-07-04
|
|
|
9
9
|
|
|
10
10
|
Framer's brand is a near-pure-black marketing artboard: white display type set poster-tight, one
|
|
11
11
|
confident blue used only as a signal, and vibrant gradient atmosphere tiles that show what the tool
|
|
12
|
-
builds. This library entry translates that identity to operator work — a CRM, a queue, a dashboard
|
|
13
|
-
Framer's language. What carries: the dark charcoal surface ladder, white ink, the single blue
|
|
14
|
-
the tight-tracked Inter voice, the softly-rounded geometry. What stays behind: the
|
|
15
|
-
Walsheim display, the gradient spotlight cards as chrome, the pill CTA, the 5px/96px
|
|
16
|
-
|
|
12
|
+
builds. This library entry translates that identity to operator work — a CRM, a queue, a dashboard
|
|
13
|
+
in Framer's language. What carries: the dark charcoal surface ladder, white ink, the single blue
|
|
14
|
+
signal, the tight-tracked Inter voice, the softly-rounded geometry. What stays behind: the
|
|
15
|
+
hero-scale GT Walsheim display, the gradient spotlight cards as chrome, the pill CTA, the 5px/96px
|
|
16
|
+
editorial rhythm.
|
|
17
17
|
|
|
18
18
|
Framer is categorically dark. Where the operator doctrine defaults light and treats dark as opt-in,
|
|
19
19
|
this brand legitimately inverts it: the base theme *is* dark, and `color-tokens.light` carries the
|
|
@@ -154,83 +154,3 @@ Directives the emitting agent follows verbatim:
|
|
|
154
154
|
codes, timestamps; `tabular-nums` on every numeric column.
|
|
155
155
|
- Track headings tight; keep buttons and cards on the `radius` default. Leave behind the GT Walsheim
|
|
156
156
|
hero display, the gradient spotlight cards, the pill CTA, and the 96px editorial section rhythm.
|
|
157
|
-
|
|
158
|
-
```yaml design-primitives
|
|
159
|
-
radius: 10px # derived: brand default 15-20px card radius is marketing-soft; operator settles on the 10px form/list step, softer than a terminal but not a marketing panel
|
|
160
|
-
shadow-intensity: 0.5 # derived: brand elevates by surface lift + a light top-edge; shadow only lifts true overlays against near-black
|
|
161
|
-
border-weight: 1px
|
|
162
|
-
density-gap: 1
|
|
163
|
-
density-inset: 1
|
|
164
|
-
font-sans: Inter, system-ui, sans-serif # rationale: brand's body face; the single sans slot serves body/table chrome and operator headings (GT Walsheim is hero-display only, stays behind)
|
|
165
|
-
font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus specs no mono; Geist is named as a substitute family, its mono sibling pairs cleanly with Inter for IDs/codes/logs
|
|
166
|
-
font-weight-normal: 400
|
|
167
|
-
font-weight-strong: 600 # derived: brand keeps a narrow weight band (display 500, Inter headline 700); operator strong lands at 600 so hierarchy rides size + tracking, not a heavy ramp
|
|
168
|
-
heading-tracking: -0.02em # derived: brand's aggressive negative tracking carries as a tighter-than-default operator heading tracking; the hero -5.5px extreme stays behind
|
|
169
|
-
duration-unit: 50ms # derived: corpus silent on motion; operator-standard base
|
|
170
|
-
duration-fast: 100ms
|
|
171
|
-
duration-normal: 150ms
|
|
172
|
-
duration-slow: 250ms
|
|
173
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on easing; functional operator standard
|
|
174
|
-
contrast-boost: 1
|
|
175
|
-
icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke, one step under lucide's 2
|
|
176
|
-
icon-size-base: 16px
|
|
177
|
-
sidebar-width-expanded: 248px # derived: no sidebar in the marketing corpus; operator-standard shell
|
|
178
|
-
sidebar-width-collapsed: 56px # derived: operator-standard icon rail
|
|
179
|
-
topbar-height: 56px # rationale: the brand's top-nav height (56px) carried directly
|
|
180
|
-
side-panel-width: 420px # derived: operator-standard shell (no side panel in the marketing corpus)
|
|
181
|
-
side-panel-width-rich: 640px # derived: operator-standard content-heavy panel
|
|
182
|
-
modal-width-max: 560px # derived: operator-standard modal cap
|
|
183
|
-
form-max-width: 640px # derived: operator-standard form column
|
|
184
|
-
table-row-height: 40px # derived: comfortable at standard density; dense archetypes step down via the surface catalog
|
|
185
|
-
verbosity: default
|
|
186
|
-
feedback: subtle
|
|
187
|
-
density-tier: standard # derived: brand reads spacious/editorial, not terminal-dense; operator holds at standard for legibility, steps denser per archetype
|
|
188
|
-
product-traits: [design-tool, builder, dashboard, saas, dev-tools]
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
```yaml lever-manifest
|
|
192
|
-
version: 1
|
|
193
|
-
fonts: { sans: "Inter, system-ui, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
|
|
194
|
-
color-tokens:
|
|
195
|
-
light: # note: brand is categorically dark — the base map carries dark values (no light mode ships); this is the recorded doctrine-inversion override
|
|
196
|
-
background: "#090909"
|
|
197
|
-
foreground: "#ffffff"
|
|
198
|
-
card: "#141414"
|
|
199
|
-
card-foreground: "#ffffff"
|
|
200
|
-
muted: "#1c1c1c"
|
|
201
|
-
muted-foreground: "#999999"
|
|
202
|
-
border: "#262626"
|
|
203
|
-
input: "#262626"
|
|
204
|
-
ring: "#0099ff"
|
|
205
|
-
primary: "#ffffff"
|
|
206
|
-
primary-foreground: "#000000"
|
|
207
|
-
accent: "#1c1c1c"
|
|
208
|
-
accent-foreground: "#ffffff"
|
|
209
|
-
destructive: "#ef4444" # derived: corpus has no destructive red (only success green); operator-standard red legible on near-black
|
|
210
|
-
destructive-foreground: "#ffffff"
|
|
211
|
-
success: "#22c55e"
|
|
212
|
-
warning: "#f59e0b" # derived: corpus has no warning hue; operator-standard amber legible on near-black
|
|
213
|
-
popover: "#141414"
|
|
214
|
-
popover-foreground: "#ffffff"
|
|
215
|
-
secondary: "#141414"
|
|
216
|
-
secondary-foreground: "#ffffff"
|
|
217
|
-
chart-1: "#0099ff" # accent-blue as the primary data series
|
|
218
|
-
chart-2: "#6a4cf5" # gradient-violet, repurposed from marketing atmosphere to chart series
|
|
219
|
-
chart-3: "#d44df0" # gradient-magenta
|
|
220
|
-
chart-4: "#ff7a3d" # gradient-orange
|
|
221
|
-
chart-5: "#ff5577" # gradient-coral
|
|
222
|
-
sidebar: "#090909" # note: brand chrome sits on canvas; sidebar matches background, separated by sidebar-border
|
|
223
|
-
sidebar-foreground: "#ffffff"
|
|
224
|
-
sidebar-primary: "#0099ff" # derived: active-nav takes the blue signal (the brand marks selection/active with blue), not the white primary fill
|
|
225
|
-
sidebar-primary-foreground: "#ffffff"
|
|
226
|
-
sidebar-accent: "#141414" # hover/selected nav row lifts to surface-1
|
|
227
|
-
sidebar-accent-foreground: "#ffffff"
|
|
228
|
-
sidebar-border: "#1a1a1a" # hairline-soft, the brand's chrome divider
|
|
229
|
-
sidebar-ring: "#0099ff"
|
|
230
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
231
|
-
radius-scale: [0, 4, 6, 10, 15, 9999]
|
|
232
|
-
shadow-levels: [none, sm, md]
|
|
233
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
234
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
235
|
-
accent-count: 1
|
|
236
|
-
```
|
|
@@ -32,8 +32,8 @@ monochrome. Density is `standard` — the brand breathes more than a terminal, b
|
|
|
32
32
|
|
|
33
33
|
## 2 Color Roles
|
|
34
34
|
|
|
35
|
-
Dark values
|
|
36
|
-
|
|
35
|
+
Dark values. One accent — blue `primary` is the only chromatic hue that carries UI meaning; status
|
|
36
|
+
hues speak only status; the product palette lives only in charts.
|
|
37
37
|
|
|
38
38
|
| Role | Value | Allowed where |
|
|
39
39
|
| --- | --- | --- |
|
|
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
|
|
|
138
138
|
- Headings ride the brand sans (hashicorpSans; Inter the open substitute) at 600 with tight negative tracking; the 80/56/40px display scale stays behind — operator headings top out at 24px. Keep the uppercase eyebrow above meaningful sections.
|
|
139
139
|
- Every numeric column is `tabular-nums`; every ID / code / timestamp / log line is `font-mono` (JetBrains Mono) — the operator surface reclaims the mono the marketing brand reserves for in-product. Detail and edit go in the side panel beside the work; the blue `ring` focus outline is always visible for keyboard work.
|
|
140
140
|
- Leave behind: the 80px hero display, the per-product chromatic identity cards, full-bleed CTA banners, and the 96px section rhythm — marketing scale, not operator chrome.
|
|
141
|
-
|
|
142
|
-
```yaml design-primitives
|
|
143
|
-
radius: 8px # corpus: brand button/input/list radius (rounded.md 8px); cards step to 12px via the scale; pill is badges-only
|
|
144
|
-
shadow-intensity: 0.2 # derived: brand is shadowless on dark — depth is surface lift; only true overlays earn the faintest lift on the black canvas
|
|
145
|
-
border-weight: 1px
|
|
146
|
-
density-gap: 1 # derived: standard tier — brand breathes more than a terminal (relaxed body, 96px sections); archetypes step denser
|
|
147
|
-
density-inset: 1 # derived: matches the standard density-gap for coherent component insets
|
|
148
|
-
font-sans: Inter, system-ui, sans-serif # derived: hashicorpSans is proprietary; Inter is the corpus's own first-choice open substitute (closest geometric proportions)
|
|
149
|
-
font-mono: JetBrains Mono, ui-monospace, monospace # derived: marketing brand withholds mono (in-product only); operator IDs/logs need one — JetBrains Mono
|
|
150
|
-
font-weight-normal: 400 # derived: brand marketing body is 500; dense operator tables read cleaner at 400, heading weight carries the engineered voice
|
|
151
|
-
font-weight-strong: 600 # corpus: headline / card-title / subhead / eyebrow all 600; the 700 display weights top out above operator scale and stay behind
|
|
152
|
-
heading-tracking: -0.02em # corpus: signature tight negative display tracking (-0.4 to -0.6px at operator heading sizes ≈ -0.02em)
|
|
153
|
-
duration-unit: 50ms # derived: corpus documents no motion (known gap); functional operator base
|
|
154
|
-
duration-fast: 100ms # derived: corpus silent; functional tempo
|
|
155
|
-
duration-normal: 150ms # derived: corpus silent; standard functional tempo
|
|
156
|
-
duration-slow: 250ms # derived: corpus silent; overlay / panel transition
|
|
157
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
|
|
158
|
-
contrast-boost: 1 # derived: the solid #3b3d45 hairline reads clearly on pure black; borders carry the grid, no boost
|
|
159
|
-
icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke one step under lucide's 2, matching the engineered voice
|
|
160
|
-
icon-size-base: 16px # derived: corpus silent on icon size; operator default
|
|
161
|
-
sidebar-width-expanded: 248px # derived: brand has no app sidebar (marketing top nav); standard operator rail
|
|
162
|
-
sidebar-width-collapsed: 56px # derived: standard operator icon rail
|
|
163
|
-
topbar-height: 64px # corpus top-nav height (64px)
|
|
164
|
-
side-panel-width: 420px # derived: corpus silent; standard operator detail panel
|
|
165
|
-
side-panel-width-rich: 640px # derived: content-heavy detail panel
|
|
166
|
-
modal-width-max: 560px # derived: corpus's CTA banners are full-bleed marketing; operator confirmation cap
|
|
167
|
-
form-max-width: 640px # derived: brand max content ~1280px is marketing; operator form cap
|
|
168
|
-
table-row-height: 40px # derived: standard operator row; dense archetypes step down via the surface catalog
|
|
169
|
-
verbosity: default
|
|
170
|
-
feedback: subtle # derived: brand is confident and quiet; functional feedback only
|
|
171
|
-
density-tier: standard # derived: brand's relaxed body and 96px sections read more spacious than a terminal; the infra-operator reading is standard, archetypes step denser
|
|
172
|
-
product-traits: [dev-tools, infrastructure, dashboard, admin]
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
```yaml lever-manifest
|
|
176
|
-
version: 1
|
|
177
|
-
fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
|
|
178
|
-
color-tokens:
|
|
179
|
-
light: # categorically-dark brand: the default-worn theme is dark and fills this required default slot; there is no light surface, and the canvas is pure #000000 (brand token wins over the doctrine ban)
|
|
180
|
-
background: "#000000"
|
|
181
|
-
foreground: "#ffffff"
|
|
182
|
-
card: "#15181e"
|
|
183
|
-
card-foreground: "#ffffff"
|
|
184
|
-
muted: "#0c0e12" # derived: a faint well between the black canvas and the charcoal card, for inset tracks and quiet band tints
|
|
185
|
-
muted-foreground: "#b2b6bd"
|
|
186
|
-
border: "#3b3d45"
|
|
187
|
-
input: "#3b3d45"
|
|
188
|
-
ring: "#2b89ff"
|
|
189
|
-
primary: "#2b89ff"
|
|
190
|
-
primary-foreground: "#ffffff"
|
|
191
|
-
accent: "#1f232b"
|
|
192
|
-
accent-foreground: "#ffffff"
|
|
193
|
-
destructive: "#e62b1e"
|
|
194
|
-
destructive-foreground: "#ffffff"
|
|
195
|
-
success: "#00ca8e"
|
|
196
|
-
warning: "#ffcf25"
|
|
197
|
-
popover: "#15181e"
|
|
198
|
-
popover-foreground: "#ffffff"
|
|
199
|
-
secondary: "#1f232b"
|
|
200
|
-
secondary-foreground: "#ffffff"
|
|
201
|
-
chart-1: "#2b89ff" # accent blue — primary data series
|
|
202
|
-
chart-2: "#7b42bc" # Terraform purple — per-product palette repurposed as the chart categorical ramp
|
|
203
|
-
chart-3: "#00ca8e" # Nomad green
|
|
204
|
-
chart-4: "#ffcf25" # Vault yellow
|
|
205
|
-
chart-5: "#f24c53" # Boundary coral
|
|
206
|
-
sidebar: "#000000" # derived: brand nav rides the canvas; the hairline sidebar-border carries the seam
|
|
207
|
-
sidebar-foreground: "#b2b6bd" # derived: resting nav labels dim to brand secondary ink, brightening on active
|
|
208
|
-
sidebar-primary: "#2b89ff" # derived: blue active-nav indicator
|
|
209
|
-
sidebar-primary-foreground: "#ffffff"
|
|
210
|
-
sidebar-accent: "#1f232b" # derived: hover / selected nav lift (surface-2)
|
|
211
|
-
sidebar-accent-foreground: "#ffffff"
|
|
212
|
-
sidebar-border: "#3b3d45"
|
|
213
|
-
sidebar-ring: "#2b89ff"
|
|
214
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
215
|
-
radius-scale: [0, 4, 6, 8, 12, 16, 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,12 +8,11 @@ sourced: 2026-07-04
|
|
|
8
8
|
# IBM — Carbon operator design
|
|
9
9
|
|
|
10
10
|
The operator reading of IBM's Carbon Design System. Carbon was built for enterprise product
|
|
11
|
-
surfaces, so it dresses an internal tool almost natively — but the source corpus is IBM's
|
|
12
|
-
canvas, and marketing graces are stripped here. What carries: the flat 0px square
|
|
13
|
-
as the single accent, IBM Plex Sans, the 4px grid, and depth carried by hairlines
|
|
14
|
-
What stays behind: the 76/60/42px weight-300 hero display type, the full-bleed
|
|
15
|
-
dark inverted footer, and the soft-blue hero gradient.
|
|
16
|
-
judgment past the corpus is annotated `# derived:` where it lands.
|
|
11
|
+
surfaces, so it dresses an internal tool almost natively — but the source corpus is IBM's
|
|
12
|
+
*marketing* canvas, and marketing graces are stripped here. What carries: the flat 0px square
|
|
13
|
+
geometry, IBM Blue as the single accent, IBM Plex Sans, the 4px grid, and depth carried by hairlines
|
|
14
|
+
and surface change. What stays behind: the 76/60/42px weight-300 hero display type, the full-bleed
|
|
15
|
+
blue CTA banner, the dark inverted footer, and the soft-blue hero gradient.
|
|
17
16
|
|
|
18
17
|
## 1 Visual Theme
|
|
19
18
|
|
|
@@ -152,83 +151,3 @@ inverted footer, and the soft-blue hero gradient — all marketing.
|
|
|
152
151
|
- Depth is hairline and surface change; reach past a hairline only for a real overlay.
|
|
153
152
|
- Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
|
|
154
153
|
- Keep the whole app light; do not invert to charcoal outside a deliberate dark opt-in.
|
|
155
|
-
|
|
156
|
-
```yaml design-primitives
|
|
157
|
-
radius: 0px # derived: Carbon commits to 0px square corners on every surface; the scale still offers 2/4px for rare exceptions
|
|
158
|
-
shadow-intensity: 0.3 # derived: Carbon resists shadow on flat tiles; only overlays (menu/modal) take a soft Carbon elevation
|
|
159
|
-
border-weight: 1px
|
|
160
|
-
density-gap: 0.85 # derived: "content is dense by design" — dense tier tightens the spacing scale
|
|
161
|
-
density-inset: 0.85 # derived: matches the dense tier for coherent component insets
|
|
162
|
-
font-sans: IBM Plex Sans, Helvetica Neue, Arial, sans-serif
|
|
163
|
-
font-mono: IBM Plex Mono, ui-monospace, SFMono-Regular, monospace # derived: Carbon keeps mono to product surfaces; the operator UI is a product surface, so Plex Mono returns for IDs/codes/logs
|
|
164
|
-
font-weight-normal: 400
|
|
165
|
-
font-weight-strong: 600 # rationale: Carbon body-emphasis weight; operator headings use 600, not the marketing weight-300 hero display
|
|
166
|
-
heading-tracking: 0em # rationale: Carbon operator-scale headings track 0; the negative display tracking (-0.5px at 76px) stays with the marketing hero
|
|
167
|
-
duration-unit: 50ms # derived: corpus is silent on motion; a functional operator base
|
|
168
|
-
duration-fast: 70ms # derived: Carbon fast-01
|
|
169
|
-
duration-normal: 150ms # derived: Carbon moderate-01
|
|
170
|
-
duration-slow: 240ms # derived: Carbon moderate-02
|
|
171
|
-
ease-default: cubic-bezier(0.2,0,0.38,0.9) # derived: Carbon "productive standard" easing (corpus silent; brand-authentic)
|
|
172
|
-
contrast-boost: 1 # derived: Carbon's 1px #e0e0e0 hairlines already read crisply; no boost needed
|
|
173
|
-
icon-stroke: 2 # derived: Carbon @carbon/icons run a 2px square stroke — heavier and squarer than the default 1.75
|
|
174
|
-
icon-size-base: 16px # derived: Carbon's smallest icon size on the 16px grid
|
|
175
|
-
sidebar-width-expanded: 256px # derived: Carbon UI Shell SideNav width
|
|
176
|
-
sidebar-width-collapsed: 48px # derived: Carbon SideNav icon rail / header height (corpus top-nav is 48px)
|
|
177
|
-
topbar-height: 48px # rationale: corpus top-nav height is 48px exactly
|
|
178
|
-
side-panel-width: 400px # derived: corpus documents no side panel; standard operator detail width
|
|
179
|
-
side-panel-width-rich: 640px # derived: content-heavy detail; matches Carbon's wide modal
|
|
180
|
-
modal-width-max: 640px # derived: Carbon medium modal width
|
|
181
|
-
form-max-width: 640px # derived: single-column form cap
|
|
182
|
-
table-row-height: 40px # derived: Carbon DataTable "short" row; dense archetypes step to 32px via the surface catalog
|
|
183
|
-
verbosity: default
|
|
184
|
-
feedback: subtle
|
|
185
|
-
density-tier: dense # rationale: Carbon reads dense — "content is dense by design, not a lot of air"
|
|
186
|
-
product-traits: [enterprise, dashboard, admin, data-grid, dev-tools]
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
```yaml lever-manifest
|
|
190
|
-
version: 1
|
|
191
|
-
fonts: { sans: "IBM Plex Sans, Helvetica Neue, Arial, sans-serif", mono: "IBM Plex Mono, ui-monospace, SFMono-Regular, monospace" }
|
|
192
|
-
color-tokens:
|
|
193
|
-
light:
|
|
194
|
-
background: "#ffffff"
|
|
195
|
-
foreground: "#161616"
|
|
196
|
-
card: "#ffffff"
|
|
197
|
-
card-foreground: "#161616"
|
|
198
|
-
muted: "#f4f4f4"
|
|
199
|
-
muted-foreground: "#525252"
|
|
200
|
-
border: "#e0e0e0"
|
|
201
|
-
input: "#e0e0e0"
|
|
202
|
-
ring: "#0f62fe"
|
|
203
|
-
primary: "#0f62fe"
|
|
204
|
-
primary-foreground: "#ffffff"
|
|
205
|
-
accent: "#edf5ff" # derived: Carbon blue-10 row-selection tint (corpus gives no selection color)
|
|
206
|
-
accent-foreground: "#0f62fe"
|
|
207
|
-
destructive: "#da1e28"
|
|
208
|
-
destructive-foreground: "#ffffff"
|
|
209
|
-
success: "#24a148"
|
|
210
|
-
warning: "#f1c21b"
|
|
211
|
-
popover: "#ffffff"
|
|
212
|
-
popover-foreground: "#161616"
|
|
213
|
-
secondary: "#f4f4f4"
|
|
214
|
-
secondary-foreground: "#161616"
|
|
215
|
-
chart-1: "#6929c4" # derived: Carbon @carbon/charts categorical 1 (purple-70) — corpus silent on charts
|
|
216
|
-
chart-2: "#1192e8" # derived: Carbon categorical 2 (cyan-50)
|
|
217
|
-
chart-3: "#005d5d" # derived: Carbon categorical 3 (teal-70)
|
|
218
|
-
chart-4: "#9f1853" # derived: Carbon categorical 4 (magenta-70)
|
|
219
|
-
chart-5: "#fa4d56" # derived: Carbon categorical 5 (red-50)
|
|
220
|
-
sidebar: "#f4f4f4" # derived: Carbon surface-1 side-nav ground, distinct from the white canvas
|
|
221
|
-
sidebar-foreground: "#161616"
|
|
222
|
-
sidebar-primary: "#0f62fe"
|
|
223
|
-
sidebar-primary-foreground: "#ffffff"
|
|
224
|
-
sidebar-accent: "#edf5ff" # derived: blue-10 active/hovered nav tint
|
|
225
|
-
sidebar-accent-foreground: "#0f62fe"
|
|
226
|
-
sidebar-border: "#e0e0e0"
|
|
227
|
-
sidebar-ring: "#0f62fe"
|
|
228
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64, 96]
|
|
229
|
-
radius-scale: [0, 2, 4, 6, 8, 9999]
|
|
230
|
-
shadow-levels: [none, sm, md]
|
|
231
|
-
motion: { durations: [70, 150, 240], easings: ["cubic-bezier(0.2,0,0.38,0.9)"] }
|
|
232
|
-
icons: { family: lucide, stroke: 2 }
|
|
233
|
-
accent-count: 1
|
|
234
|
-
```
|
|
@@ -7,14 +7,13 @@ sourced: 2026-07-04
|
|
|
7
7
|
|
|
8
8
|
# Intercom — the operator reading
|
|
9
9
|
|
|
10
|
-
The calm, editorial customer-service brand rendered for internal tools. Intercom's public surfaces
|
|
11
|
-
publication-quiet and product-screenshot-led; an operator surface wearing this brand keeps the
|
|
12
|
-
cream canvas, the white-on-cream lift, the charcoal ink, the single reserved Fin Orange, the
|
|
13
|
-
radii, and the geometric-sans voice that never bolds past 500. The 72px hero display, the
|
|
14
|
-
product-mockup rhythm, the pure-black quote strip, the pill tab toggles, and the 96px section
|
|
15
|
-
stay behind. What carries is the feel: a warm cream ground the category never uses, panels
|
|
16
|
-
turning white rather than by casting shadow, and one orange spark held in reserve.
|
|
17
|
-
are fully valued; every judgment past the corpus is annotated `# derived:`.
|
|
10
|
+
The calm, editorial customer-service brand rendered for internal tools. Intercom's public surfaces
|
|
11
|
+
are publication-quiet and product-screenshot-led; an operator surface wearing this brand keeps the
|
|
12
|
+
warm cream canvas, the white-on-cream lift, the charcoal ink, the single reserved Fin Orange, the
|
|
13
|
+
modest radii, and the geometric-sans voice that never bolds past 500. The 72px hero display, the
|
|
14
|
+
product-mockup rhythm, the pure-black quote strip, the pill tab toggles, and the 96px section
|
|
15
|
+
breathing stay behind. What carries is the feel: a warm cream ground the category never uses, panels
|
|
16
|
+
that lift by turning white rather than by casting shadow, and one orange spark held in reserve.
|
|
18
17
|
|
|
19
18
|
## 1 Visual Theme
|
|
20
19
|
|
|
@@ -29,9 +28,8 @@ is held in reserve for the one action that matters; everything neutral is charco
|
|
|
29
28
|
|
|
30
29
|
## 2 Color Roles
|
|
31
30
|
|
|
32
|
-
Light values
|
|
33
|
-
|
|
34
|
-
status.
|
|
31
|
+
Light values. One accent: Fin Orange is the only chromatic hue that carries meaning; the report
|
|
32
|
+
palette lives in charts, status speaks only status.
|
|
35
33
|
|
|
36
34
|
| Role | Value | Allowed where |
|
|
37
35
|
| --- | --- | --- |
|
|
@@ -158,83 +156,3 @@ for operator work.
|
|
|
158
156
|
only for a real overlay.
|
|
159
157
|
- One accent. The report palette (`chart-*`) is for charts only; Brand Blue and the black quote strip
|
|
160
158
|
are not operator colors. Leave the hero, the product-mockup rhythm, and the 96px breathing behind.
|
|
161
|
-
|
|
162
|
-
```yaml design-primitives
|
|
163
|
-
radius: 8px # corpus: buttons/inputs at rounded.md (8px); scale offers 12px cards, 16px product tiles
|
|
164
|
-
shadow-intensity: 0.25 # derived: Intercom resists drop shadows — depth is white-on-cream surface change; shadow only faint on true overlays
|
|
165
|
-
border-weight: 1px
|
|
166
|
-
density-gap: 1
|
|
167
|
-
density-inset: 1
|
|
168
|
-
font-sans: Saans, Inter, system-ui, sans-serif # corpus: proprietary Saans; Inter at weight 500 the closest free substitute
|
|
169
|
-
font-mono: SaansMono, "JetBrains Mono", ui-monospace, monospace # corpus: proprietary SaansMono; JetBrains Mono the approximation
|
|
170
|
-
font-weight-normal: 400
|
|
171
|
-
font-weight-strong: 500 # corpus: weight 500 carries display "confident without bold" — the brand never bolds past 500
|
|
172
|
-
heading-tracking: -0.02em # corpus: aggressive negative tracking is an Intercom signature (-0.5px at 28px); ~-0.02em at operator heading scale
|
|
173
|
-
duration-unit: 50ms # derived: corpus (marketing) is silent on motion; operator-standard functional base
|
|
174
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
175
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
176
|
-
duration-slow: 250ms # derived: corpus silent on motion
|
|
177
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard operator ease
|
|
178
|
-
contrast-boost: 1 # derived: Intercom's soft warm hairline (#d3cec6 on cream) is intentionally low-contrast; no boost
|
|
179
|
-
icon-stroke: 1.5 # derived: refined editorial feel; one step under lucide's 2
|
|
180
|
-
icon-size-base: 16px
|
|
181
|
-
sidebar-width-expanded: 248px # derived: Intercom has no operator shell; standard operator rail
|
|
182
|
-
sidebar-width-collapsed: 56px # derived: corpus has no shell; operator standard icon rail
|
|
183
|
-
topbar-height: 56px # corpus: top-nav height 56px
|
|
184
|
-
side-panel-width: 420px # derived: corpus has no shell; standard side panel
|
|
185
|
-
side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
|
|
186
|
-
modal-width-max: 560px # derived: corpus has no shell; confirmations only
|
|
187
|
-
form-max-width: 640px # derived: corpus has no shell; standard form column
|
|
188
|
-
table-row-height: 44px # derived: Intercom's calm editorial rhythm breathes a touch over the dense 40px
|
|
189
|
-
verbosity: default
|
|
190
|
-
feedback: subtle # rationale: Intercom is a warm, human support brand — gentle present feedback, not austere silence
|
|
191
|
-
density-tier: standard # rationale: editorial-spacious marketing read down to an honest operator tier; warmth carried by the cream palette, not whitespace
|
|
192
|
-
product-traits: [customer-support, helpdesk, inbox, crm, ai-agent]
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
```yaml lever-manifest
|
|
196
|
-
version: 1
|
|
197
|
-
fonts: { sans: "Saans, Inter, system-ui, sans-serif", mono: "SaansMono, \"JetBrains Mono\", ui-monospace, monospace" }
|
|
198
|
-
color-tokens:
|
|
199
|
-
light:
|
|
200
|
-
background: "#f5f1ec" # cream canvas — the brand's defining surface, never pure white
|
|
201
|
-
foreground: "#111111" # charcoal ink
|
|
202
|
-
card: "#ffffff" # white — cards lift off the cream canvas
|
|
203
|
-
card-foreground: "#111111"
|
|
204
|
-
muted: "#ebe7e1" # surface-2 warm cream — hover rows, subtle fills
|
|
205
|
-
muted-foreground: "#626260" # ink-muted
|
|
206
|
-
border: "#d3cec6" # warm hairline
|
|
207
|
-
input: "#d3cec6"
|
|
208
|
-
ring: "#ff5600" # derived: focus outline in the brand voltage, unmistakable for keyboard-first
|
|
209
|
-
primary: "#ff5600" # Fin Orange — the single voltage, reserved for the one primary action per surface (operator reading of Intercom's reserve-orange rule)
|
|
210
|
-
primary-foreground: "#ffffff" # corpus: white on button-fin
|
|
211
|
-
accent: "#e6e0d6" # derived: deep-cream selection tint (a step past surface-2) — Intercom selects by warm-neutral shift, reserving orange
|
|
212
|
-
accent-foreground: "#111111"
|
|
213
|
-
destructive: "#c41c1c" # corpus: semantic-error
|
|
214
|
-
destructive-foreground: "#ffffff"
|
|
215
|
-
success: "#0bdf50" # corpus: semantic-success (bright brand green; a status fill/dot, not text)
|
|
216
|
-
warning: "#d97706" # derived: corpus has no warning amber; a warm amber kept distinct from the red-orange Fin primary
|
|
217
|
-
popover: "#ffffff"
|
|
218
|
-
popover-foreground: "#111111"
|
|
219
|
-
secondary: "#ebe7e1" # warm cream secondary button (operator reading of Intercom's white/cream secondary — cream stays visible on white cards)
|
|
220
|
-
secondary-foreground: "#111111"
|
|
221
|
-
chart-1: "#fe4c02" # corpus report palette: report-orange
|
|
222
|
-
chart-2: "#65b5ff" # corpus: report-blue
|
|
223
|
-
chart-3: "#0bdf50" # corpus: report-green
|
|
224
|
-
chart-4: "#ff2067" # corpus: report-pink
|
|
225
|
-
chart-5: "#b3e01c" # corpus: report-lime
|
|
226
|
-
sidebar: "#efeae3" # derived: warm cream rail, a hair off the cream canvas
|
|
227
|
-
sidebar-foreground: "#111111"
|
|
228
|
-
sidebar-primary: "#ff5600" # Fin Orange marks the active nav item
|
|
229
|
-
sidebar-primary-foreground: "#ffffff"
|
|
230
|
-
sidebar-accent: "#e6e0d6" # matches accent — warm-cream hover/active nav
|
|
231
|
-
sidebar-accent-foreground: "#111111"
|
|
232
|
-
sidebar-border: "#d3cec6"
|
|
233
|
-
sidebar-ring: "#ff5600"
|
|
234
|
-
spacing-scale: [4, 8, 12, 16, 24, 32, 48, 64] # corpus base unit 8px; drops the marketing 96px section step
|
|
235
|
-
radius-scale: [0, 4, 6, 8, 12, 16, 24, 9999] # corpus radius scale (xs..xxl, pill)
|
|
236
|
-
shadow-levels: [none, sm] # Intercom resists shadows — one faint tier for true overlays over the flat baseline
|
|
237
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] } # derived: corpus silent on motion
|
|
238
|
-
icons: { family: lucide, stroke: 1.5 }
|
|
239
|
-
accent-count: 1
|
|
240
|
-
```
|
|
@@ -8,13 +8,13 @@ sourced: 2026-07-04
|
|
|
8
8
|
# Kraken — the operator reading
|
|
9
9
|
|
|
10
10
|
The operator reading of Kraken's brand — a clean, trustworthy crypto-exchange look built on a
|
|
11
|
-
commanding purple. Kraken's own surfaces are marketing-editorial: a Kraken-Brand display face at
|
|
12
|
-
scale (48/36/28px, weight 700, hard negative tracking) over a pure-white canvas. This entry
|
|
13
|
-
survives at operator scale — the white canvas, the single commanding Kraken Purple
|
|
14
|
-
near-black ink, the cool blue-gray neutral field, the firm 12px rounded-not-pill
|
|
15
|
-
whisper-level shadows, the negative-tracking type voice — and leaves the hero-scale
|
|
16
|
-
Purple reads commanding in marketing; at operator scale it stays the one reserved
|
|
17
|
-
|
|
11
|
+
commanding purple. Kraken's own surfaces are marketing-editorial: a Kraken-Brand display face at
|
|
12
|
+
hero scale (48/36/28px, weight 700, hard negative tracking) over a pure-white canvas. This entry
|
|
13
|
+
keeps what survives at operator scale — the white canvas, the single commanding Kraken Purple
|
|
14
|
+
accent, the cool near-black ink, the cool blue-gray neutral field, the firm 12px rounded-not-pill
|
|
15
|
+
geometry, the whisper-level shadows, the negative-tracking type voice — and leaves the hero-scale
|
|
16
|
+
display behind. Purple reads commanding in marketing; at operator scale it stays the one reserved
|
|
17
|
+
accent.
|
|
18
18
|
|
|
19
19
|
## 1 Visual Theme
|
|
20
20
|
|
|
@@ -28,8 +28,8 @@ engineered, not flatly warm. The geometry is firmly rounded — 12px controls, n
|
|
|
28
28
|
|
|
29
29
|
## 2 Color Roles
|
|
30
30
|
|
|
31
|
-
Light values
|
|
32
|
-
|
|
31
|
+
Light values. One accent: `primary` is the only chromatic hue that carries brand meaning; the
|
|
32
|
+
positive/negative trading hues speak status only.
|
|
33
33
|
|
|
34
34
|
| Role | Value | Allowed where |
|
|
35
35
|
| --- | --- | --- |
|
|
@@ -154,83 +154,3 @@ Directives the emitting agent follows verbatim:
|
|
|
154
154
|
- Leave the marketing skin behind: the Kraken-Brand hero display at 48/36/28px weight 700 stays behind.
|
|
155
155
|
What carries: the palette, its cool temperature, the single commanding purple, the firm 12px rounded
|
|
156
156
|
geometry, the whisper-shadow depth, and the tabular fintech number voice.
|
|
157
|
-
|
|
158
|
-
```yaml design-primitives
|
|
159
|
-
radius: 12px # corpus: buttons at 12px, repeated as the brand rule ("12px on all buttons", "12px is the max"); firmly rounded, never a pill
|
|
160
|
-
shadow-intensity: 0.3 # derived: corpus shadows are whisper-level (0.03–0.04 alpha) — near-flat, hairlines carry depth
|
|
161
|
-
border-weight: 1px # corpus: outlined button and divider borders at 1px
|
|
162
|
-
density-gap: 1
|
|
163
|
-
density-inset: 1
|
|
164
|
-
font-sans: IBM Plex Sans, system-ui, sans-serif # corpus: Kraken-Brand/Kraken-Product proprietary → IBM Plex Sans is the corpus's own documented fallback; one sans slot serves both voices
|
|
165
|
-
font-mono: IBM Plex Mono, ui-monospace, monospace # derived: corpus is silent on a mono; IBM Plex Mono pairs with the Plex sans for the fintech number voice
|
|
166
|
-
font-weight-normal: 400 # corpus: body weight 400
|
|
167
|
-
font-weight-strong: 600 # corpus: feature titles 600, buttons 500–600; the display 700 is a marketing hero that stays behind
|
|
168
|
-
heading-tracking: -0.02em # corpus: display hero -1px (-0.02em), sections -0.5px; the negative tracking is the display signature, carried to operator heading scale
|
|
169
|
-
duration-unit: 50ms # derived: corpus silent on motion; functional operator base
|
|
170
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
171
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
172
|
-
duration-slow: 250ms # derived: corpus silent on motion
|
|
173
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
|
|
174
|
-
contrast-boost: 1 # derived: clean marketing-calm brand, not a dense grid; cool hairlines already carry structure
|
|
175
|
-
icon-stroke: 1.75 # derived: corpus silent on iconography; operator-standard stroke
|
|
176
|
-
icon-size-base: 16px # derived: corpus silent; operator standard base control icon
|
|
177
|
-
sidebar-width-expanded: 248px # derived: corpus is marketing-only (no app shell); operator standard
|
|
178
|
-
sidebar-width-collapsed: 56px # derived: corpus has no shell; operator standard icon rail
|
|
179
|
-
topbar-height: 56px # derived: corpus has no shell; operator standard top-nav height
|
|
180
|
-
side-panel-width: 420px # derived: corpus has no shell; operator standard detail width
|
|
181
|
-
side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
|
|
182
|
-
modal-width-max: 560px # derived: corpus has no shell; confirmations only
|
|
183
|
-
form-max-width: 640px # derived: corpus has no shell; operator forms cap comfortably
|
|
184
|
-
table-row-height: 44px # derived: rounded, clean fintech read — rows breathe a touch over the dense 40px default (corpus button padding runs tall)
|
|
185
|
-
verbosity: default
|
|
186
|
-
feedback: subtle
|
|
187
|
-
density-tier: standard # rationale: corpus is a clean, trustworthy marketing surface, not a terminal — dense-capable but reads calm; honest standard tier
|
|
188
|
-
product-traits: [crypto-exchange, trading-desk, fintech, dashboard]
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
```yaml lever-manifest
|
|
192
|
-
version: 1
|
|
193
|
-
fonts: { sans: "IBM Plex Sans, system-ui, sans-serif", mono: "IBM Plex Mono, ui-monospace, monospace" }
|
|
194
|
-
color-tokens:
|
|
195
|
-
light:
|
|
196
|
-
background: "#ffffff"
|
|
197
|
-
foreground: "#101114"
|
|
198
|
-
card: "#ffffff"
|
|
199
|
-
card-foreground: "#101114"
|
|
200
|
-
muted: "#f2f2f5" # derived: light cool-gray fill from the blue-gray neutral scale
|
|
201
|
-
muted-foreground: "#686b82"
|
|
202
|
-
border: "#dedee5"
|
|
203
|
-
input: "#dedee5"
|
|
204
|
-
ring: "#7132f5"
|
|
205
|
-
primary: "#7132f5"
|
|
206
|
-
primary-foreground: "#ffffff"
|
|
207
|
-
accent: "#ebe5fe" # derived: solid equivalent of the corpus's Purple Subtle rgba(133,91,251,0.16) over white
|
|
208
|
-
accent-foreground: "#7132f5"
|
|
209
|
-
destructive: "#cf2e3f" # derived: corpus documents only a success green — a sell/down/destructive red is derived to pair, tuned cool to match the blue-gray field
|
|
210
|
-
destructive-foreground: "#ffffff"
|
|
211
|
-
success: "#149e61"
|
|
212
|
-
warning: "#e08c0a" # derived: corpus documents no caution hue; an amber warning derived to complete the status triad
|
|
213
|
-
popover: "#ffffff"
|
|
214
|
-
popover-foreground: "#101114"
|
|
215
|
-
secondary: "#f6f6f8" # derived: solid equivalent of the corpus's Secondary Gray rgba(148,151,169,0.08) over white
|
|
216
|
-
secondary-foreground: "#101114"
|
|
217
|
-
chart-1: "#7132f5" # Kraken Purple
|
|
218
|
-
chart-2: "#149e61" # positive green
|
|
219
|
-
chart-3: "#cf2e3f" # derived: the down/sell red
|
|
220
|
-
chart-4: "#5741d8" # derived: Purple Dark as a second cool series
|
|
221
|
-
chart-5: "#9497a9" # derived: silver-blue neutral for a fifth series
|
|
222
|
-
sidebar: "#f7f7f9" # derived: operator sidebar tinted from the cool-gray neutral (corpus is marketing-only)
|
|
223
|
-
sidebar-foreground: "#101114"
|
|
224
|
-
sidebar-primary: "#7132f5"
|
|
225
|
-
sidebar-primary-foreground: "#ffffff"
|
|
226
|
-
sidebar-accent: "#ebe5fe" # derived: the purple-wash selection tint
|
|
227
|
-
sidebar-accent-foreground: "#7132f5"
|
|
228
|
-
sidebar-border: "#dedee5"
|
|
229
|
-
sidebar-ring: "#7132f5"
|
|
230
|
-
spacing-scale: [4, 8, 12, 16, 20, 24, 32, 48]
|
|
231
|
-
radius-scale: [3, 6, 8, 10, 12, 16, 9999]
|
|
232
|
-
shadow-levels: [none, sm, md]
|
|
233
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
234
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
235
|
-
accent-count: 1
|
|
236
|
-
```
|