@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
|
@@ -8,10 +8,10 @@ sourced: 2026-07-04
|
|
|
8
8
|
# Revolut — operator reading
|
|
9
9
|
|
|
10
10
|
The operator translation of Revolut's fintech-meets-brochure system — a two-mode marketing canvas
|
|
11
|
-
(true-black storytelling bands alternating with white catalogue bands, oversized Aeonik Pro
|
|
12
|
-
pill buttons, eight saturated illustration colours). This entry keeps the
|
|
13
|
-
leaves the hero scale behind; §9 lists exactly what carries and what
|
|
14
|
-
|
|
11
|
+
(true-black storytelling bands alternating with white catalogue bands, oversized Aeonik Pro
|
|
12
|
+
headlines, pill buttons, eight saturated illustration colours). This entry keeps the
|
|
13
|
+
operator-durable core and leaves the hero scale behind; §9 lists exactly what carries and what
|
|
14
|
+
stays.
|
|
15
15
|
|
|
16
16
|
## 1 Visual Theme
|
|
17
17
|
|
|
@@ -143,83 +143,3 @@ buttons · the band-switching rhythm · the illustration palette as chrome.
|
|
|
143
143
|
- Every numeric column is `tabular-nums`; every amount / ID / timestamp is `font-mono`, and every
|
|
144
144
|
workflow completes from the keyboard with the cobalt `ring` outline always visible.
|
|
145
145
|
- Stay flat — hairline and surface before shadow; illustration colours are chart series, not chrome.
|
|
146
|
-
|
|
147
|
-
```yaml design-primitives
|
|
148
|
-
radius: 12px # derived: Revolut's input radius (rounded.md) — the working-component corner; rounder than a typical operator base to carry the brand
|
|
149
|
-
shadow-intensity: 0.3 # derived: Revolut has no drop-shadow language; shadow barely lifts a true overlay
|
|
150
|
-
border-weight: 1px
|
|
151
|
-
density-gap: 1
|
|
152
|
-
density-inset: 1
|
|
153
|
-
font-sans: Aeonik Pro, Inter Display, General Sans, Inter, system-ui, sans-serif
|
|
154
|
-
font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus ships no mono; a clean geometric mono for amounts/IDs, pairing with Inter
|
|
155
|
-
font-weight-normal: 400
|
|
156
|
-
font-weight-strong: 600 # derived: brand display is Aeonik 500, but operator headings at 18–28px read cleaner at 600 (Revolut's own bold/button weight)
|
|
157
|
-
heading-tracking: -0.02em # derived: Revolut's display-xxl ratio (-2.72px/136px); carries the signature tight tracking at operator heading sizes
|
|
158
|
-
duration-unit: 50ms # derived: corpus silent on motion; functional operator defaults
|
|
159
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
160
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
161
|
-
duration-slow: 250ms # derived: corpus silent on motion
|
|
162
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard operator ease
|
|
163
|
-
contrast-boost: 1
|
|
164
|
-
icon-stroke: 1.75 # derived: corpus has no icon spec; one step under lucide's 2 for a refined operator stroke
|
|
165
|
-
icon-size-base: 16px # derived: corpus has no icon spec; operator default
|
|
166
|
-
sidebar-width-expanded: 256px # derived: Revolut is a top-nav marketing site; comfortable operator sidebar
|
|
167
|
-
sidebar-width-collapsed: 56px # derived: standard operator icon rail
|
|
168
|
-
topbar-height: 64px # Revolut nav-bar height
|
|
169
|
-
side-panel-width: 420px # derived: no side panels in the marketing corpus; operator default
|
|
170
|
-
side-panel-width-rich: 640px # derived: operator default for content-heavy detail
|
|
171
|
-
modal-width-max: 560px # derived: operator default
|
|
172
|
-
form-max-width: 640px # derived: operator default
|
|
173
|
-
table-row-height: 44px # derived: Revolut's comfortable feel (tall inputs) → a touch taller than the 40px operator norm
|
|
174
|
-
verbosity: default
|
|
175
|
-
feedback: subtle
|
|
176
|
-
density-tier: standard # derived: Revolut's generous marketing whitespace stays behind; operator density is standard-comfortable, not dense-terminal
|
|
177
|
-
product-traits: [fintech, payments, transaction-queue, dashboard, crm]
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
```yaml lever-manifest
|
|
181
|
-
version: 1
|
|
182
|
-
fonts: { sans: "Aeonik Pro, Inter Display, General Sans, Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
|
|
183
|
-
color-tokens:
|
|
184
|
-
light:
|
|
185
|
-
background: "#ffffff"
|
|
186
|
-
foreground: "#191c1f"
|
|
187
|
-
card: "#ffffff"
|
|
188
|
-
card-foreground: "#191c1f"
|
|
189
|
-
muted: "#f4f4f4"
|
|
190
|
-
muted-foreground: "#505a63"
|
|
191
|
-
border: "#e2e2e7"
|
|
192
|
-
input: "#e2e2e7"
|
|
193
|
-
ring: "#494fdf"
|
|
194
|
-
primary: "#494fdf"
|
|
195
|
-
primary-foreground: "#ffffff"
|
|
196
|
-
accent: "#edeefc" # derived: pale cobalt tint for selected/hovered rows; corpus gives no light tint of primary
|
|
197
|
-
accent-foreground: "#3a40c4"
|
|
198
|
-
destructive: "#e23b4a"
|
|
199
|
-
destructive-foreground: "#ffffff"
|
|
200
|
-
success: "#428619"
|
|
201
|
-
warning: "#ec7e00"
|
|
202
|
-
popover: "#ffffff"
|
|
203
|
-
popover-foreground: "#191c1f"
|
|
204
|
-
secondary: "#f4f4f4"
|
|
205
|
-
secondary-foreground: "#191c1f"
|
|
206
|
-
chart-1: "#494fdf"
|
|
207
|
-
chart-2: "#00a87e"
|
|
208
|
-
chart-3: "#007bc2"
|
|
209
|
-
chart-4: "#ec7e00"
|
|
210
|
-
chart-5: "#e61e49"
|
|
211
|
-
sidebar: "#000000"
|
|
212
|
-
sidebar-foreground: "#ffffff"
|
|
213
|
-
sidebar-primary: "#494fdf"
|
|
214
|
-
sidebar-primary-foreground: "#ffffff"
|
|
215
|
-
sidebar-accent: "#16181a"
|
|
216
|
-
sidebar-accent-foreground: "#ffffff"
|
|
217
|
-
sidebar-border: "#ffffff1f" # derived: hairline-dark rgba(255,255,255,0.12) as 8-digit hex
|
|
218
|
-
sidebar-ring: "#494fdf"
|
|
219
|
-
spacing-scale: [4, 6, 8, 14, 16, 24, 32, 48, 64]
|
|
220
|
-
radius-scale: [0, 8, 12, 20, 9999]
|
|
221
|
-
shadow-levels: [none, sm, md]
|
|
222
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
223
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
224
|
-
accent-count: 1
|
|
225
|
-
```
|
|
@@ -135,85 +135,3 @@ Directives the emitting agent follows verbatim:
|
|
|
135
135
|
- **Stays behind:** full-bleed cinematic photography, the 48px hero display type, asymmetric editorial
|
|
136
136
|
image grids, the 1600px cinema container, and photography-as-color. An operator surface earns its
|
|
137
137
|
clarity from structure, not spectacle.
|
|
138
|
-
|
|
139
|
-
```yaml design-primitives
|
|
140
|
-
radius: 6px # derived: corpus gives 4/6/8; 6px "subtle" is the operator default (scale keeps 4/8/16)
|
|
141
|
-
shadow-intensity: 0.15 # derived: brand is zero-shadow; a whisper only for true overlays
|
|
142
|
-
border-weight: 1px
|
|
143
|
-
density-gap: 1.1 # derived: cinema-grade breathing reads spacious, not dense
|
|
144
|
-
density-inset: 1.1
|
|
145
|
-
font-sans: DM Sans, Inter, system-ui, sans-serif # derived: DM Sans substitutes abcNormal's geometry (corpus-named), Inter fallback
|
|
146
|
-
font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # derived: brand is single-typeface; operator floor P4 needs a mono
|
|
147
|
-
font-weight-normal: 400
|
|
148
|
-
font-weight-strong: 600 # brand range is 400-600, never 700+
|
|
149
|
-
heading-tracking: -0.02em # derived: corpus display/section tracking (-1.2px/-1px) ≈ -0.02em at heading sizes
|
|
150
|
-
duration-unit: 50ms # derived: corpus silent on motion; functional operator defaults
|
|
151
|
-
duration-fast: 100ms
|
|
152
|
-
duration-normal: 150ms
|
|
153
|
-
duration-slow: 250ms
|
|
154
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
|
|
155
|
-
contrast-boost: 1 # derived: brand keeps borders intentionally faint; hold neutral
|
|
156
|
-
icon-stroke: 1.5 # derived: minimal editorial brand → refined thin stroke
|
|
157
|
-
icon-size-base: 16px
|
|
158
|
-
sidebar-width-expanded: 256px # derived: corpus has no shell; spacious posture opens it a step
|
|
159
|
-
sidebar-width-collapsed: 56px
|
|
160
|
-
topbar-height: 56px # derived: spacious posture
|
|
161
|
-
side-panel-width: 440px # derived: spacious posture
|
|
162
|
-
side-panel-width-rich: 640px
|
|
163
|
-
modal-width-max: 560px
|
|
164
|
-
form-max-width: 640px
|
|
165
|
-
table-row-height: 44px # derived: spacious rows carry the editorial breathing
|
|
166
|
-
verbosity: compact # derived: brand keeps text minimal, the interface near-invisible
|
|
167
|
-
feedback: minimal # derived: quiet, restrained, invisible-interface ethos
|
|
168
|
-
density-tier: spacious # derived: cinema-grade breathing, generous section spacing
|
|
169
|
-
product-traits: [creative-tools, media-asset, dashboard, review-queue]
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
```yaml lever-manifest
|
|
173
|
-
version: 1
|
|
174
|
-
fonts: { sans: "DM Sans, Inter, system-ui, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
|
|
175
|
-
color-tokens:
|
|
176
|
-
light:
|
|
177
|
-
background: "#ffffff"
|
|
178
|
-
foreground: "#0c0c0c"
|
|
179
|
-
card: "#ffffff"
|
|
180
|
-
card-foreground: "#0c0c0c"
|
|
181
|
-
muted: "#e9ecf2"
|
|
182
|
-
muted-foreground: "#767d88"
|
|
183
|
-
border: "#c9ccd1"
|
|
184
|
-
input: "#c9ccd1"
|
|
185
|
-
ring: "#0c0c0c"
|
|
186
|
-
primary: "#0c0c0c"
|
|
187
|
-
primary-foreground: "#ffffff"
|
|
188
|
-
accent: "#e9ecf2"
|
|
189
|
-
accent-foreground: "#0c0c0c"
|
|
190
|
-
destructive: "#c53030"
|
|
191
|
-
destructive-foreground: "#ffffff"
|
|
192
|
-
success: "#2f855a"
|
|
193
|
-
warning: "#b7791f"
|
|
194
|
-
popover: "#ffffff"
|
|
195
|
-
popover-foreground: "#0c0c0c"
|
|
196
|
-
secondary: "#e9ecf2"
|
|
197
|
-
secondary-foreground: "#0c0c0c"
|
|
198
|
-
chart-1: "#0c0c0c"
|
|
199
|
-
chart-2: "#3f3f3f"
|
|
200
|
-
chart-3: "#767d88"
|
|
201
|
-
chart-4: "#a7a7a7"
|
|
202
|
-
chart-5: "#c9ccd1"
|
|
203
|
-
sidebar: "#f2f4f8"
|
|
204
|
-
sidebar-foreground: "#0c0c0c"
|
|
205
|
-
sidebar-primary: "#0c0c0c"
|
|
206
|
-
sidebar-primary-foreground: "#ffffff"
|
|
207
|
-
sidebar-accent: "#e9ecf2"
|
|
208
|
-
sidebar-accent-foreground: "#0c0c0c"
|
|
209
|
-
sidebar-border: "#c9ccd1"
|
|
210
|
-
sidebar-ring: "#0c0c0c"
|
|
211
|
-
# dark is the brand-native default (data-theme="dark"); every dark value is documented in §2 Color Roles.
|
|
212
|
-
# A project confirming this library ships the dark map alongside; the coverage gate requires light, so light is machine-carried here.
|
|
213
|
-
spacing-scale: [4, 6, 8, 12, 16, 20, 24, 28, 32, 48, 64, 78]
|
|
214
|
-
radius-scale: [4, 6, 8, 16]
|
|
215
|
-
shadow-levels: [none, sm]
|
|
216
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
217
|
-
icons: { family: lucide, stroke: 1.5 }
|
|
218
|
-
accent-count: 1
|
|
219
|
-
```
|
|
@@ -18,9 +18,7 @@ the full-bleed marketing rhythm, and the neon-green/magenta highlights.
|
|
|
18
18
|
|
|
19
19
|
**This brand is categorically dark** — the near-black canvas is "not a dark mode but the primary
|
|
20
20
|
identity," and Sanity's light/inverted sections are marketing inversions, never an operator light
|
|
21
|
-
theme.
|
|
22
|
-
is dark and fills the required default (`light`) slot in the manifest. A white operator canvas is
|
|
23
|
-
off-brand.
|
|
21
|
+
theme. A white operator canvas is off-brand.
|
|
24
22
|
|
|
25
23
|
## 1 Visual Theme
|
|
26
24
|
|
|
@@ -35,9 +33,8 @@ focus `ring`. Density is `dense` — this reads like a tool for people who live
|
|
|
35
33
|
|
|
36
34
|
## 2 Color Roles
|
|
37
35
|
|
|
38
|
-
Dark values
|
|
39
|
-
|
|
40
|
-
hues speak only status.
|
|
36
|
+
Dark values. Two accents by strict role — coral rests, blue activates; the vivid greens and magenta
|
|
37
|
+
are chart/status graces, and status hues speak only status.
|
|
41
38
|
|
|
42
39
|
| Role | Value | Allowed where |
|
|
43
40
|
| --- | --- | --- |
|
|
@@ -169,83 +166,3 @@ Directives the emitting agent follows verbatim:
|
|
|
169
166
|
- Leave behind: the hero display at -4.48px tracking, full-pill CTA buttons, full-bleed marketing
|
|
170
167
|
sections and the 64-120px rhythm, and the neon-green/magenta highlights — marketing voltage, not
|
|
171
168
|
operator chrome.
|
|
172
|
-
|
|
173
|
-
```yaml design-primitives
|
|
174
|
-
radius: 6px # corpus: standard card/container radius (md 6px); inputs 3px, cards 12px via the scale; the pill CTA stays behind
|
|
175
|
-
shadow-intensity: 0.2 # derived: brand is colorimetric — depth is the surface ladder; only overlays get the faintest ring/blur lift
|
|
176
|
-
border-weight: 1px # corpus: 1px borders throughout
|
|
177
|
-
density-gap: 0.9 # derived: dense tier — terminal-native precision compresses spacing one step
|
|
178
|
-
density-inset: 0.9 # derived: matches the dense density-gap for coherent component insets
|
|
179
|
-
font-sans: waldenburgNormal, Space Grotesk, Inter, system-ui, sans-serif # corpus: waldenburgNormal custom face; Space Grotesk / Inter the geometric-condensed substitutes
|
|
180
|
-
font-mono: IBM Plex Mono, ui-monospace, monospace # corpus: IBM Plex Mono for code and technical labels
|
|
181
|
-
font-weight-normal: 400 # corpus: body 400
|
|
182
|
-
font-weight-strong: 500 # corpus: the brand never bolds — emphasis tops at 500 (600 only on 11px uppercase micro-labels); hierarchy is size + tracking
|
|
183
|
-
heading-tracking: -0.015em # derived: corpus documents -0.24px (~-0.01em) at the 24px title; nudged one notch tighter to carry the signature compressed tracking (hero -4.48px stays behind)
|
|
184
|
-
duration-unit: 50ms # derived: corpus documents no motion; functional operator base
|
|
185
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
186
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
187
|
-
duration-slow: 250ms # derived: corpus silent on motion
|
|
188
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
|
|
189
|
-
contrast-boost: 1 # derived: the visible `#353535` hairline plus the surface ladder already carry the grid; no boost
|
|
190
|
-
icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke one step under lucide's 2, matching the precise/engineered voice
|
|
191
|
-
icon-size-base: 16px # derived: corpus silent on icon size; operator standard
|
|
192
|
-
sidebar-width-expanded: 248px # derived: corpus is a marketing site with no app sidebar; standard operator rail
|
|
193
|
-
sidebar-width-collapsed: 56px # derived: standard operator icon rail
|
|
194
|
-
topbar-height: 52px # derived: corpus nav is "compact padding" with no explicit height; tight operator bar
|
|
195
|
-
side-panel-width: 420px # derived: corpus has no shell; standard operator detail panel
|
|
196
|
-
side-panel-width-rich: 640px # derived: content-heavy detail panel
|
|
197
|
-
modal-width-max: 560px # derived: corpus's full-bleed sections are marketing; operator confirmation cap
|
|
198
|
-
form-max-width: 640px # derived: corpus max content ~1440px is marketing; operator form cap
|
|
199
|
-
table-row-height: 40px # derived: dense-tier row height; dense archetypes step down via the surface catalog
|
|
200
|
-
verbosity: compact # derived: terminal-native "system readout" precision trusts dense readouts over explanatory chrome
|
|
201
|
-
feedback: subtle # derived: the consistent hover-to-blue activation is a present but restrained signal
|
|
202
|
-
density-tier: dense # derived: a tool "for people who live in terminals" reads dense
|
|
203
|
-
product-traits: [dev-tools, cms, content-platform, dashboard]
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
```yaml lever-manifest
|
|
207
|
-
version: 1
|
|
208
|
-
fonts: { sans: "waldenburgNormal, Space Grotesk, Inter, system-ui, sans-serif", mono: "IBM Plex Mono, ui-monospace, monospace" }
|
|
209
|
-
color-tokens:
|
|
210
|
-
light: # categorically-dark brand: the default-worn theme is dark and fills this required default slot; there is no light surface
|
|
211
|
-
background: "#0b0b0b"
|
|
212
|
-
foreground: "#ffffff"
|
|
213
|
-
card: "#212121"
|
|
214
|
-
card-foreground: "#ffffff"
|
|
215
|
-
muted: "#212121"
|
|
216
|
-
muted-foreground: "#b9b9b9"
|
|
217
|
-
border: "#353535"
|
|
218
|
-
input: "#353535"
|
|
219
|
-
ring: "#0052ef"
|
|
220
|
-
primary: "#f36458"
|
|
221
|
-
primary-foreground: "#ffffff"
|
|
222
|
-
accent: "#353535"
|
|
223
|
-
accent-foreground: "#ffffff"
|
|
224
|
-
destructive: "#dd0000"
|
|
225
|
-
destructive-foreground: "#ffffff"
|
|
226
|
-
success: "#37cd84" # derived: the calmer compliance green reads as UI status; the neon `#19d600` premium-highlight green stays behind (kept as a chart hue)
|
|
227
|
-
warning: "#f59e0b" # derived: corpus ships no warning hue and its orange border would collide with coral; a distinct amber carries caution
|
|
228
|
-
popover: "#212121"
|
|
229
|
-
popover-foreground: "#ffffff"
|
|
230
|
-
secondary: "#212121"
|
|
231
|
-
secondary-foreground: "#b9b9b9"
|
|
232
|
-
chart-1: "#0052ef" # electric blue — primary data series
|
|
233
|
-
chart-2: "#19d600" # neon green (sRGB fallback), repurposed as a chart hue
|
|
234
|
-
chart-3: "#f36458" # coral
|
|
235
|
-
chart-4: "#55beff" # light blue (documented secondary blue)
|
|
236
|
-
chart-5: "#f500ff" # magenta (display-p3 accent, sRGB approx), repurposed as a chart hue
|
|
237
|
-
sidebar: "#0b0b0b" # derived: nav rides the canvas; the hairline sidebar-border carries the seam
|
|
238
|
-
sidebar-foreground: "#b9b9b9" # derived: resting nav labels are silver, brightening on active
|
|
239
|
-
sidebar-primary: "#0052ef" # derived: blue active-nav indicator — the activation signal
|
|
240
|
-
sidebar-primary-foreground: "#ffffff"
|
|
241
|
-
sidebar-accent: "#212121" # derived: hover/selected nav lift off the canvas
|
|
242
|
-
sidebar-accent-foreground: "#ffffff"
|
|
243
|
-
sidebar-border: "#353535"
|
|
244
|
-
sidebar-ring: "#0052ef"
|
|
245
|
-
spacing-scale: [4, 8, 12, 16, 24, 32, 48, 64]
|
|
246
|
-
radius-scale: [3, 4, 6, 12, 9999]
|
|
247
|
-
shadow-levels: [none, sm]
|
|
248
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
249
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
250
|
-
accent-count: 2 # brand demands it: coral `primary` (the resting CTA) + electric blue (the system-wide activation signal on ring/nav/links); the doctrine one-accent floor yields to the documented two-signal system
|
|
251
|
-
```
|
|
@@ -7,17 +7,16 @@ sourced: 2026-07-04
|
|
|
7
7
|
|
|
8
8
|
# Sentry — the violet-and-lime developer-console operator design
|
|
9
9
|
|
|
10
|
-
Sentry's design language reads like a debugging console wearing a leather jacket: a deep
|
|
11
|
-
midnight canvas, electric-lime keyword highlights, sticker mascots, a chunky display
|
|
12
|
-
brand is explicitly *two-polarity* — dark violet owns marketing and feature pages,
|
|
13
|
-
the dense, scannable, transactional surfaces** (pricing, contact, reference)
|
|
14
|
-
tables. That white polarity is exactly operator territory, so this entry wears
|
|
15
|
-
violet palette and its cool temperature, the authoritative near-black-violet
|
|
16
|
-
as the strongest affordance on either polarity, the Rubik UI voice with
|
|
17
|
-
on every code/log surface, the 8px developer-dialect radius, and
|
|
18
|
-
highlight. What stays behind: the 88px display hero, the starfield
|
|
19
|
-
lime squiggle divider, and the dark-canvas marketing atmosphere.
|
|
20
|
-
annotated `# derived:` where it is silent.
|
|
10
|
+
Sentry's design language reads like a debugging console wearing a leather jacket: a deep
|
|
11
|
+
purple-violet midnight canvas, electric-lime keyword highlights, sticker mascots, a chunky display
|
|
12
|
+
sans. But the brand is explicitly *two-polarity* — dark violet owns marketing and feature pages,
|
|
13
|
+
while **white owns the dense, scannable, transactional surfaces** (pricing, contact, reference)
|
|
14
|
+
where developers scan tables. That white polarity is exactly operator territory, so this entry wears
|
|
15
|
+
it. What carries: the violet palette and its cool temperature, the authoritative near-black-violet
|
|
16
|
+
primary button that reads as the strongest affordance on either polarity, the Rubik UI voice with
|
|
17
|
+
uppercase `+0.2px` caps, Monaco on every code/log surface, the 8px developer-dialect radius, and
|
|
18
|
+
lime held scarce as a signature highlight. What stays behind: the 88px display hero, the starfield
|
|
19
|
+
texture, the floating mascots, the lime squiggle divider, and the dark-canvas marketing atmosphere.
|
|
21
20
|
|
|
22
21
|
## 1 Visual Theme
|
|
23
22
|
|
|
@@ -34,9 +33,9 @@ opt-in iconic read** for a monitoring surface that wants it, but light is the de
|
|
|
34
33
|
|
|
35
34
|
## 2 Color Roles
|
|
36
35
|
|
|
37
|
-
Light values
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
Light values. One accent — midnight-violet `primary` is the only hue that carries the primary-action
|
|
37
|
+
meaning; lime, pink, and the violet family speak charts and the scarce highlight, status hues speak
|
|
38
|
+
only status. The dark-console value is noted where it defines the identity.
|
|
40
39
|
|
|
41
40
|
| Role | Value | Allowed where |
|
|
42
41
|
| --- | --- | --- |
|
|
@@ -162,83 +161,3 @@ Directives the emitting agent follows verbatim:
|
|
|
162
161
|
- Leave behind the starfield texture, the floating mascots, the lime squiggle divider, and the 96px
|
|
163
162
|
marketing rhythm. What carries: the violet palette and cool temperature, the authoritative near-black
|
|
164
163
|
button, the Rubik caps cadence, Monaco, and the 8px radius character.
|
|
165
|
-
|
|
166
|
-
```yaml design-primitives
|
|
167
|
-
radius: 8px # corpus: buttons/code/selects at rounded.md (8px); inputs 6px, cards 12px, badges 4px — no sharp corners
|
|
168
|
-
shadow-intensity: 0.4 # derived: light-canvas floating cards/modals take real level-2 drop shadows (~0.1 alpha); dark depth is texture (left behind); operator keeps shadow to overlays
|
|
169
|
-
border-weight: 1px # corpus: every border is 1px
|
|
170
|
-
density-gap: 1 # derived: console heritage is dense-capable, but corpus functional body is a roomier 16px/1.5; honest standard tier, archetypes step denser
|
|
171
|
-
density-inset: 1 # derived: matches density-gap for coherent component insets
|
|
172
|
-
font-sans: Rubik, -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif # corpus: Rubik carries every body/caption/button/eyebrow role
|
|
173
|
-
font-mono: Monaco, Menlo, "Ubuntu Mono", monospace # corpus: Monaco on code blocks, install snippets, inline tokens
|
|
174
|
-
font-weight-normal: 400 # derived: corpus default UI body-md is 500 (display-tuned); operator dense body/table chrome reads cleaner at 400
|
|
175
|
-
font-weight-strong: 600 # corpus: heading-sm/body-strong at 600; the 700 button-cap and 700/88px hero display stay behind
|
|
176
|
-
heading-tracking: 0 # corpus: every Rubik heading tier tracks 0; the +0.2px tracking signature lives on uppercase caps, applied to the caption/button step by hand
|
|
177
|
-
duration-unit: 50ms # derived: corpus documents no motion timings; operator-standard functional base
|
|
178
|
-
duration-fast: 100ms # derived: corpus silent on motion
|
|
179
|
-
duration-normal: 150ms # derived: corpus silent on motion
|
|
180
|
-
duration-slow: 250ms # derived: corpus silent on motion
|
|
181
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional ease
|
|
182
|
-
contrast-boost: 1 # derived: the corpus hairline-cloud grid lines already read as a grid; no boost
|
|
183
|
-
icon-stroke: 1.75 # derived: corpus iconography is illustrated sticker mascots (marketing, left behind); operator line-icon stroke one step under lucide's 2
|
|
184
|
-
icon-size-base: 16px # derived: corpus has no UI icon size; operator standard
|
|
185
|
-
sidebar-width-expanded: 248px # derived: corpus has no app shell (marketing top-nav only); operator standard
|
|
186
|
-
sidebar-width-collapsed: 56px # derived: standard operator icon rail
|
|
187
|
-
topbar-height: 56px # derived: corpus nav padding 16/24px is marketing-generous; operator tightens to 56px
|
|
188
|
-
side-panel-width: 420px # derived: corpus has no shell; operator standard
|
|
189
|
-
side-panel-width-rich: 640px # derived: content-heavy detail (event payload / stack trace)
|
|
190
|
-
modal-width-max: 560px # derived: corpus dialogs are marketing; operator confirmation cap
|
|
191
|
-
form-max-width: 640px # derived: corpus contact form is a single light panel; 640 caps operator forms (the ~1152px container is marketing)
|
|
192
|
-
table-row-height: 40px # derived: standard operator; dense archetypes (log-stream) step down via the surface catalog
|
|
193
|
-
verbosity: default # derived: the console cadence is terse, but the brand narrates (playful, not austere); default suits a developer operator surface
|
|
194
|
-
feedback: subtle # derived: present-but-quiet operator feedback
|
|
195
|
-
density-tier: standard # derived: observability-console heritage is dense-capable, but corpus functional body is roomier than a trading terminal; honest standard, archetypes step denser
|
|
196
|
-
product-traits: [dev-tools, observability, dashboard, log-stream]
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
```yaml lever-manifest
|
|
200
|
-
version: 1
|
|
201
|
-
fonts: { sans: "Rubik, -apple-system, system-ui, \"Segoe UI\", Helvetica, Arial, sans-serif", mono: "Monaco, Menlo, \"Ubuntu Mono\", monospace" }
|
|
202
|
-
color-tokens:
|
|
203
|
-
light:
|
|
204
|
-
background: "#ffffff"
|
|
205
|
-
foreground: "#1f1633"
|
|
206
|
-
card: "#ffffff"
|
|
207
|
-
card-foreground: "#1f1633"
|
|
208
|
-
muted: "#f3f1f8" # derived: a faint violet tint over the corpus press-gray (#f0f0f0), holding the cool violet temperature on light
|
|
209
|
-
muted-foreground: "#6b6577" # derived: corpus documents only dark-surface muted; a violet-leaning mid gray reads as secondary text on white
|
|
210
|
-
border: "#e5e7eb" # corpus hairline-cloud — light-canvas dividers and grid lines
|
|
211
|
-
input: "#cfcfdb" # corpus hairline-cool — text-field and form-control edges
|
|
212
|
-
ring: "#3b82f6" # derived: corpus documents a dedicated translucent blue focus ring rgba(59,130,246,0.5) — "the only blue in the system"; carried as solid #3b82f6
|
|
213
|
-
primary: "#150f23" # corpus Midnight Violet — the authoritative near-black action, "strongest UI affordance regardless of polarity"
|
|
214
|
-
primary-foreground: "#ffffff"
|
|
215
|
-
accent: "#e9e5f4" # derived: faint violet selection wash, one step past muted so selection reads over hover; never lime/pink
|
|
216
|
-
accent-foreground: "#1f1633"
|
|
217
|
-
destructive: "#e11d48" # derived: corpus documents no error red (pink is decorative punctuation, never a signal); a cool crimson carries destruction on-temperature, distinct from the decorative pink
|
|
218
|
-
destructive-foreground: "#ffffff"
|
|
219
|
-
success: "#16a34a" # derived: corpus has no status green (lime is a decorative highlight, fails as a signal); a clean green carries success
|
|
220
|
-
warning: "#d97706" # derived: corpus has no caution hue; amber carries warning, kept distinct from the decorative lime
|
|
221
|
-
popover: "#ffffff"
|
|
222
|
-
popover-foreground: "#1f1633"
|
|
223
|
-
secondary: "#f3f1f8" # matches muted — secondary-button fill
|
|
224
|
-
secondary-foreground: "#1f1633"
|
|
225
|
-
chart-1: "#6a5fc1" # corpus Violet Link — the brand's own accent family carries the chart series
|
|
226
|
-
chart-2: "#c2ef4e" # corpus Electric Lime — the signature, scoped to charts + the scarce highlight glyph
|
|
227
|
-
chart-3: "#fa7faa" # corpus Hot Pink
|
|
228
|
-
chart-4: "#422082" # corpus Deep Violet
|
|
229
|
-
chart-5: "#79628c" # corpus Mid Violet
|
|
230
|
-
sidebar: "#f7f6fb" # derived: a faint violet-tinted step below the white canvas so the nav rail reads as chrome
|
|
231
|
-
sidebar-foreground: "#1f1633"
|
|
232
|
-
sidebar-primary: "#150f23" # active-nav marker = the primary action color
|
|
233
|
-
sidebar-primary-foreground: "#ffffff"
|
|
234
|
-
sidebar-accent: "#e9e5f4" # hover/selected nav lift, matches accent
|
|
235
|
-
sidebar-accent-foreground: "#1f1633"
|
|
236
|
-
sidebar-border: "#e5e7eb"
|
|
237
|
-
sidebar-ring: "#3b82f6"
|
|
238
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
239
|
-
radius-scale: [4, 6, 8, 10, 12, 18, 9999]
|
|
240
|
-
shadow-levels: [none, sm, md]
|
|
241
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
242
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
243
|
-
accent-count: 1
|
|
244
|
-
```
|
|
@@ -25,8 +25,8 @@ Comfortable `standard` density; the pill button shape carries in from the brand.
|
|
|
25
25
|
|
|
26
26
|
## 2 Color Roles
|
|
27
27
|
|
|
28
|
-
Light values first
|
|
29
|
-
|
|
28
|
+
Light values first. One chromatic accent — the mint-green family; black is ink/primary, a neutral,
|
|
29
|
+
not a second color.
|
|
30
30
|
|
|
31
31
|
| Role | Value | Allowed where |
|
|
32
32
|
| --- | --- | --- |
|
|
@@ -145,83 +145,3 @@ Directives the emitting agent follows verbatim:
|
|
|
145
145
|
- Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`; the black `ring`
|
|
146
146
|
focus outline is always visible and every workflow completes from the keyboard.
|
|
147
147
|
- Leave the cinematic black track and its photography on marketing surfaces — never the operator UI.
|
|
148
|
-
|
|
149
|
-
```yaml design-primitives
|
|
150
|
-
radius: 8px # derived: brand inputs 8px / cards 12px; 8px is the default component radius (buttons pill via the scale)
|
|
151
|
-
shadow-intensity: 0.6 # derived: the light track's signature soft "paper halo" carries real card hierarchy, not a flat brand
|
|
152
|
-
border-weight: 1px
|
|
153
|
-
density-gap: 1
|
|
154
|
-
density-inset: 1
|
|
155
|
-
font-sans: Inter, system-ui, sans-serif # derived: brand splits Neue Haas Grotesk Display (thin display, stays behind) + Inter (UI/body); the single sans slot takes Inter, the operator workhorse
|
|
156
|
-
font-mono: ui-monospace, SFMono-Regular, Menlo, monospace # brand code face is the system monospace
|
|
157
|
-
font-weight-normal: 400 # derived: brand variable body 420 is display-tuned; dense operator body reads cleaner at 400
|
|
158
|
-
font-weight-strong: 600 # derived: brand strong 550 collapses to the standard operator 600
|
|
159
|
-
heading-tracking: 0.01em # derived: Shopify headings track open (~+0.015em), inverted from the typical tight operator heading; a restrained +0.01em carries that editorial voice
|
|
160
|
-
duration-unit: 50ms # derived: corpus documents no motion; functional operator base
|
|
161
|
-
duration-fast: 120ms # derived: corpus silent on motion; functional
|
|
162
|
-
duration-normal: 200ms # derived: corpus silent on motion; functional
|
|
163
|
-
duration-slow: 320ms # derived: corpus silent on motion; functional
|
|
164
|
-
ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional easing
|
|
165
|
-
contrast-boost: 1 # black ink on cream is already high-contrast; no boost needed
|
|
166
|
-
icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke
|
|
167
|
-
icon-size-base: 16px # derived: corpus silent on icons; operator norm
|
|
168
|
-
sidebar-width-expanded: 240px # derived: marketing corpus has no admin shell; comfortable operator sidebar
|
|
169
|
-
sidebar-width-collapsed: 64px # derived: comfortable icon rail matching the brand's roomier density
|
|
170
|
-
topbar-height: 56px # derived: comfortable operator topbar
|
|
171
|
-
side-panel-width: 440px # derived: comfortable detail panel
|
|
172
|
-
side-panel-width-rich: 640px # derived: content-heavy panel
|
|
173
|
-
modal-width-max: 560px # derived: matches the brand's generous card width
|
|
174
|
-
form-max-width: 720px # derived: echoes the brand's ~720px reading column
|
|
175
|
-
table-row-height: 44px # derived: the brand's 44px touch minimum reads comfortable, not dense
|
|
176
|
-
verbosity: default
|
|
177
|
-
feedback: subtle
|
|
178
|
-
density-tier: standard # derived: consumer-commerce brand reads comfortable, not terminal-dense; archetypes step denser
|
|
179
|
-
product-traits: [commerce, admin, dashboard, crm]
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
```yaml lever-manifest
|
|
183
|
-
version: 1
|
|
184
|
-
fonts: { sans: "Inter, system-ui, sans-serif", mono: "ui-monospace, SFMono-Regular, Menlo, monospace" }
|
|
185
|
-
color-tokens:
|
|
186
|
-
light:
|
|
187
|
-
background: "#fbfbf5"
|
|
188
|
-
foreground: "#000000"
|
|
189
|
-
card: "#ffffff"
|
|
190
|
-
card-foreground: "#000000"
|
|
191
|
-
muted: "#f4f4f5"
|
|
192
|
-
muted-foreground: "#71717a"
|
|
193
|
-
border: "#e4e4e7"
|
|
194
|
-
input: "#e4e4e7"
|
|
195
|
-
ring: "#000000"
|
|
196
|
-
primary: "#000000"
|
|
197
|
-
primary-foreground: "#ffffff"
|
|
198
|
-
accent: "#c1fbd4"
|
|
199
|
-
accent-foreground: "#000000"
|
|
200
|
-
destructive: "#d82c0d" # derived: corpus documents no error hue; a warm commerce red
|
|
201
|
-
destructive-foreground: "#ffffff"
|
|
202
|
-
success: "#008060" # derived: pale aloe/pistachio are fills, not status; a saturated commerce green carries success with contrast
|
|
203
|
-
warning: "#b45309" # derived: corpus silent on caution; readable amber
|
|
204
|
-
popover: "#ffffff"
|
|
205
|
-
popover-foreground: "#000000"
|
|
206
|
-
secondary: "#f4f4f5"
|
|
207
|
-
secondary-foreground: "#000000"
|
|
208
|
-
chart-1: "#008060" # derived: corpus has no chart palette; commerce-green-forward categorical ramp
|
|
209
|
-
chart-2: "#5c6ac4" # derived: chart ramp
|
|
210
|
-
chart-3: "#47c1bf" # derived: chart ramp
|
|
211
|
-
chart-4: "#b45309" # derived: chart ramp (matches warning)
|
|
212
|
-
chart-5: "#d82c0d" # derived: chart ramp (matches destructive)
|
|
213
|
-
sidebar: "#f7f7f2" # derived: light rail, a hair off the cream canvas; the black track stays on marketing
|
|
214
|
-
sidebar-foreground: "#000000"
|
|
215
|
-
sidebar-primary: "#000000"
|
|
216
|
-
sidebar-primary-foreground: "#ffffff"
|
|
217
|
-
sidebar-accent: "#d4f9e0" # pistachio — the softer green for nav hover
|
|
218
|
-
sidebar-accent-foreground: "#000000"
|
|
219
|
-
sidebar-border: "#e4e4e7"
|
|
220
|
-
sidebar-ring: "#000000"
|
|
221
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
222
|
-
radius-scale: [0, 4, 8, 12, 20, 9999]
|
|
223
|
-
shadow-levels: [none, sm, md, lg]
|
|
224
|
-
motion: { durations: [120, 200, 320], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
225
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
226
|
-
accent-count: 1
|
|
227
|
-
```
|
|
@@ -7,14 +7,12 @@ sourced: 2026-07-04
|
|
|
7
7
|
|
|
8
8
|
# Slack — operator reading
|
|
9
9
|
|
|
10
|
-
An operator translation of Slack's design language: the signature deep-aubergine
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
machine blocks are fully valued; every judgment away from the marketing brand is
|
|
17
|
-
annotated `# derived:`.
|
|
10
|
+
An operator translation of Slack's design language: the signature deep-aubergine `sidebar`, a white
|
|
11
|
+
content canvas, one aubergine accent, and blue reserved strictly for links. The marketing surface —
|
|
12
|
+
cream-lavender pastel-mesh gradients, 64px hero display, floating product mockups — stays behind.
|
|
13
|
+
What carries is the palette temperature (warm aubergine, cool lavender tints), the humanist type
|
|
14
|
+
voice, Slack's rounded character, and the one thing every stranger recognizes as Slack: the dark
|
|
15
|
+
aubergine workspace rail.
|
|
18
16
|
|
|
19
17
|
## 1 Visual Theme
|
|
20
18
|
|
|
@@ -158,83 +156,3 @@ Directives the emitting agent follows verbatim:
|
|
|
158
156
|
- Detail and edit go in the side panel; a modal is a confirmation, not a workspace (P3).
|
|
159
157
|
- Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono` (P4).
|
|
160
158
|
- Every workflow completes from the keyboard; the `ring` focus outline is always visible (P6).
|
|
161
|
-
|
|
162
|
-
```yaml design-primitives
|
|
163
|
-
radius: 8px # derived: brand's rounded character (12-16px cards, 90px pills) settles at a friendly 8px operator workhorse; the pill (9999) is reserved for the signature primary CTA
|
|
164
|
-
shadow-intensity: 0.5 # derived: brand leans on soft atmospheric shadow for depth; operator keeps a moderate lift on overlays only
|
|
165
|
-
border-weight: 1px
|
|
166
|
-
density-gap: 1.05 # derived: Slack's comfortable padding (over-padded pills, 1.55 body leading) nudges spacing a hair above the neutral operator default
|
|
167
|
-
density-inset: 1.05 # derived: same comfortable-padding read carried onto component insets
|
|
168
|
-
font-sans: Lato, system-ui, sans-serif # derived: corpus names Lato as the humanist face that carries the brand's warmth at UI sizes (the display/UI faces are proprietary); a neutral grotesque flattens the voice
|
|
169
|
-
font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus is silent on mono; a neutral operator monospace for IDs, codes, log lines
|
|
170
|
-
font-weight-normal: 400
|
|
171
|
-
font-weight-strong: 600 # derived: brand runs 700 on buttons/display; operator emphasis relaxes to 600, reserving the bolder weight for the pill CTA label
|
|
172
|
-
heading-tracking: -0.01em # derived: brand tracks display tight-negative (-0.768px at 64px); at operator heading sizes it settles near -0.01em
|
|
173
|
-
duration-unit: 50ms # derived: corpus silent on motion; functional operator ramp (50/100/150/250) on the standard easing
|
|
174
|
-
duration-fast: 100ms
|
|
175
|
-
duration-normal: 150ms
|
|
176
|
-
duration-slow: 250ms
|
|
177
|
-
ease-default: cubic-bezier(0.4,0,0.2,1)
|
|
178
|
-
contrast-boost: 1
|
|
179
|
-
icon-stroke: 1.75 # derived: corpus silent on icons; a refined operator stroke one step under lucide's 2
|
|
180
|
-
icon-size-base: 16px # derived: standard operator icon size
|
|
181
|
-
sidebar-width-expanded: 260px # derived: nods to Slack's real workspace-rail width
|
|
182
|
-
sidebar-width-collapsed: 56px # derived: standard icon-rail width
|
|
183
|
-
topbar-height: 48px # derived: Slack's compact workspace header character
|
|
184
|
-
side-panel-width: 420px # derived: Slack's thread / details panel character
|
|
185
|
-
side-panel-width-rich: 640px # derived: content-heavy detail width
|
|
186
|
-
modal-width-max: 560px # derived: standard confirmation-modal cap
|
|
187
|
-
form-max-width: 640px # derived: standard single-column form width
|
|
188
|
-
table-row-height: 40px # derived: comfortable operator row honoring the brand's relaxed rhythm
|
|
189
|
-
verbosity: default
|
|
190
|
-
feedback: subtle
|
|
191
|
-
density-tier: standard # derived: a spacious consumer brand pulled to standard for operator work
|
|
192
|
-
product-traits: [collaboration, messaging, inbox, dashboard]
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
```yaml lever-manifest
|
|
196
|
-
version: 1
|
|
197
|
-
fonts: { sans: "Lato, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
|
|
198
|
-
color-tokens:
|
|
199
|
-
light:
|
|
200
|
-
background: "#ffffff"
|
|
201
|
-
foreground: "#1d1d1d"
|
|
202
|
-
card: "#ffffff"
|
|
203
|
-
card-foreground: "#1d1d1d"
|
|
204
|
-
muted: "#f5f3f7" # derived: faint lavender-gray, a whisper of the aubergine family
|
|
205
|
-
muted-foreground: "#696969"
|
|
206
|
-
border: "#e6e6e6"
|
|
207
|
-
input: "#e6e6e6"
|
|
208
|
-
ring: "#611f69" # derived: aubergine-press, visible focus outline on light
|
|
209
|
-
primary: "#4a154b"
|
|
210
|
-
primary-foreground: "#ffffff"
|
|
211
|
-
accent: "#f9f0ff"
|
|
212
|
-
accent-foreground: "#4a154b"
|
|
213
|
-
destructive: "#cc4117"
|
|
214
|
-
destructive-foreground: "#ffffff"
|
|
215
|
-
success: "#007a5a"
|
|
216
|
-
warning: "#d97706" # derived: corpus has no warning hue; a contrast-safe amber for status
|
|
217
|
-
popover: "#ffffff"
|
|
218
|
-
popover-foreground: "#1d1d1d"
|
|
219
|
-
secondary: "#f9f0ff"
|
|
220
|
-
secondary-foreground: "#1d1d1d"
|
|
221
|
-
chart-1: "#4a154b"
|
|
222
|
-
chart-2: "#1264a3"
|
|
223
|
-
chart-3: "#007a5a"
|
|
224
|
-
chart-4: "#d97706" # derived: amber, extends the palette for chart distinction
|
|
225
|
-
chart-5: "#cc4117"
|
|
226
|
-
sidebar: "#4a154b"
|
|
227
|
-
sidebar-foreground: "#f9f0ff" # derived: warm light lavender text on the aubergine rail
|
|
228
|
-
sidebar-primary: "#611f69" # derived: aubergine-press band for the active nav item
|
|
229
|
-
sidebar-primary-foreground: "#ffffff"
|
|
230
|
-
sidebar-accent: "#592466" # derived: aubergine-tint hover band on the rail
|
|
231
|
-
sidebar-accent-foreground: "#ffffff"
|
|
232
|
-
sidebar-border: "#3d1140" # derived: a shade below aubergine for a subtle divider on the rail
|
|
233
|
-
sidebar-ring: "#d9bdde" # derived: light mauve focus ring, visible on the aubergine rail
|
|
234
|
-
spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
|
|
235
|
-
radius-scale: [0, 4, 8, 12, 9999]
|
|
236
|
-
shadow-levels: [none, sm, md]
|
|
237
|
-
motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
|
|
238
|
-
icons: { family: lucide, stroke: 1.75 }
|
|
239
|
-
accent-count: 1
|
|
240
|
-
```
|