@nurix/etna 0.19.41 → 0.19.43
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/bin/etna.js +14 -0
- package/data/harness-index.json +5 -1
- package/data/harnesses/apollo/.prettierignore +29 -0
- package/data/harnesses/apollo/.prettierrc.json +3 -0
- package/data/harnesses/apollo/.vscode/settings.json +19 -0
- package/data/harnesses/apollo/CLAUDE.md +162 -0
- package/data/harnesses/apollo/agents/brainstorm.md +144 -0
- package/data/harnesses/apollo/agents/change-review.md +251 -0
- package/data/harnesses/apollo/agents/lld-mode.md +56 -0
- package/data/harnesses/apollo/agents/maintenance.md +229 -0
- package/data/harnesses/apollo/agents/performance-review.md +223 -0
- package/data/harnesses/apollo/agents/retro.md +46 -0
- package/data/harnesses/apollo/codex/agents/brainstorm.toml +142 -0
- package/data/harnesses/apollo/codex/agents/change-review.toml +249 -0
- package/data/harnesses/apollo/codex/agents/lld-mode.toml +52 -0
- package/data/harnesses/apollo/codex/agents/maintenance.toml +228 -0
- package/data/harnesses/apollo/codex/agents/performance-review.toml +222 -0
- package/data/harnesses/apollo/codex/agents/retro.toml +45 -0
- package/data/harnesses/apollo/docs/README.md +28 -0
- package/data/harnesses/apollo/docs/history/CHANGELOG.md +26 -0
- package/data/harnesses/apollo/docs/history/backlog.md +19 -0
- package/data/harnesses/apollo/docs/memory/main.md +15 -0
- package/data/harnesses/apollo/docs/structure.md +54 -0
- package/data/harnesses/apollo/harness.json +18 -0
- package/data/harnesses/apollo/hooks/generate-ownership-index.mjs +148 -0
- package/data/harnesses/apollo/hooks/hooks.json +16 -0
- package/data/harnesses/apollo/rules/changelog.md +19 -0
- package/data/harnesses/apollo/rules/database.md +123 -0
- package/data/harnesses/apollo/rules/express.md +33 -0
- package/data/harnesses/apollo/rules/frontend.md +32 -0
- package/data/harnesses/apollo/rules/general.md +62 -0
- package/data/harnesses/apollo/rules/nomenclature.md +34 -0
- package/data/harnesses/apollo/rules/pnpm.md +57 -0
- package/data/harnesses/apollo/rules/testing.md +23 -0
- package/data/harnesses/apollo/rules/verification.md +67 -0
- package/data/harnesses/apollo/skills/boundary/SKILL.md +69 -0
- package/data/harnesses/apollo/skills/boundary/references/index.md +16 -0
- package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +99 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +81 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +55 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +87 -0
- package/data/harnesses/apollo/skills/brainstorm/README.md +56 -0
- package/data/harnesses/apollo/skills/brainstorm/SKILL.md +173 -0
- package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +98 -0
- package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +86 -0
- package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +186 -0
- package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +460 -0
- package/data/harnesses/apollo/skills/design/SKILL.md +100 -0
- package/data/harnesses/apollo/skills/design/components/charts.md +76 -0
- package/data/harnesses/apollo/skills/design/components/collections.md +132 -0
- package/data/harnesses/apollo/skills/design/components/feedback.md +47 -0
- package/data/harnesses/apollo/skills/design/components/hooks.md +35 -0
- package/data/harnesses/apollo/skills/design/components/index.md +143 -0
- package/data/harnesses/apollo/skills/design/components/inputs.md +327 -0
- package/data/harnesses/apollo/skills/design/components/layout.md +52 -0
- package/data/harnesses/apollo/skills/design/components/media.md +66 -0
- package/data/harnesses/apollo/skills/design/components/motion.md +82 -0
- package/data/harnesses/apollo/skills/design/components/navigation.md +29 -0
- package/data/harnesses/apollo/skills/design/components/overlays.md +72 -0
- package/data/harnesses/apollo/skills/design/components/setup.md +40 -0
- package/data/harnesses/apollo/skills/design/components/typography.md +46 -0
- package/data/harnesses/apollo/skills/design/components/utils.md +37 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +38 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +33 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
- package/data/harnesses/apollo/skills/design/data/charts/census.csv +58 -0
- package/data/harnesses/apollo/skills/design/data/checklists/browse.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +20 -0
- package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/grid.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/queue.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/settings.md +21 -0
- package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +68 -0
- package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +63 -0
- package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +60 -0
- package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +78 -0
- package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +62 -0
- package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +65 -0
- package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +91 -0
- package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +89 -0
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +15 -0
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +87 -0
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +25 -0
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
- package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
- package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
- package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
- package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
- package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
- package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
- package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
- package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
- package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
- package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
- package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +16 -0
- package/data/harnesses/apollo/skills/design/data/iconography.md +199 -0
- package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
- package/data/harnesses/apollo/skills/design/data/tells.csv +34 -0
- package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +17 -0
- package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +29 -0
- package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +179 -0
- package/data/harnesses/apollo/skills/design/design-md/index.csv +67 -0
- package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +207 -0
- package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/apple.md +206 -0
- package/data/harnesses/apollo/skills/design/design-md/library/binance.md +210 -0
- package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +210 -0
- package/data/harnesses/apollo/skills/design/design-md/library/cal.md +209 -0
- package/data/harnesses/apollo/skills/design/design-md/library/clay.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/composio.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/expo.md +200 -0
- package/data/harnesses/apollo/skills/design/design-md/library/figma.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/framer.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +200 -0
- package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/meta.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +210 -0
- package/data/harnesses/apollo/skills/design/design-md/library/miro.md +209 -0
- package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +201 -0
- package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +201 -0
- package/data/harnesses/apollo/skills/design/design-md/library/notion.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +215 -0
- package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +213 -0
- package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +216 -0
- package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +218 -0
- package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +214 -0
- package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/resend.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +200 -0
- package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +201 -0
- package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/slack.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +206 -0
- package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +206 -0
- package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +196 -0
- package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +196 -0
- package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +194 -0
- package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +193 -0
- package/data/harnesses/apollo/skills/design/design-md/library/uber.md +195 -0
- package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +195 -0
- package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/warp.md +196 -0
- package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/wired.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/wise.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/nurix.md +214 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +184 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +216 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +211 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +212 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +216 -0
- package/data/harnesses/apollo/skills/design/references/compose.md +23 -0
- package/data/harnesses/apollo/skills/design/references/content.md +28 -0
- package/data/harnesses/apollo/skills/design/references/emission.md +21 -0
- package/data/harnesses/apollo/skills/design/references/existing-apps.md +27 -0
- package/data/harnesses/apollo/skills/design/references/intake.md +36 -0
- package/data/harnesses/apollo/skills/design/references/object-pass.md +24 -0
- package/data/harnesses/apollo/skills/design/references/ship-gate.md +29 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +195 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +49 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +44 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +46 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +42 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +42 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +46 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +48 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +42 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +46 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +41 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +48 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +45 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +40 -0
- package/data/harnesses/apollo/skills/design/scripts/README-validator.md +27 -0
- package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +596 -0
- package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +1198 -0
- package/data/harnesses/apollo/skills/documentation/SKILL.md +132 -0
- package/data/harnesses/apollo/skills/documentation/references/examples.md +279 -0
- package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +44 -0
- package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +49 -0
- package/data/harnesses/apollo/skills/documentation/references/style-guide.md +351 -0
- package/data/harnesses/apollo/skills/documentation/references/untemplated.md +38 -0
- package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +140 -0
- package/data/harnesses/apollo/skills/documentation/templates/Readme.md +32 -0
- package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +20 -0
- package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +121 -0
- package/data/harnesses/apollo/skills/documentation/templates/backlog.md +33 -0
- package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +79 -0
- package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +57 -0
- package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +41 -0
- package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +72 -0
- package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +30 -0
- package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +15 -0
- package/data/harnesses/apollo/skills/documentation/templates/feature.md +149 -0
- package/data/harnesses/apollo/skills/documentation/templates/glossary.md +11 -0
- package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +25 -0
- package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +34 -0
- package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +11 -0
- package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +36 -0
- package/data/harnesses/apollo/skills/documentation/templates/plan.md +71 -0
- package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +37 -0
- package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +104 -0
- package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +27 -0
- package/data/harnesses/apollo/skills/documentation/templates/structure.md +65 -0
- package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +32 -0
- package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +29 -0
- package/data/harnesses/apollo/skills/test-plan/SKILL.md +83 -0
- package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +451 -0
- package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +214 -0
- package/data/harnesses/code/agents/maintenance.md +2 -2
- package/data/harnesses/code/codex/agents/maintenance.toml +2 -2
- package/data/harnesses/code/harness.json +3 -2
- package/data/harnesses/delivery/agents/maintenance.md +2 -2
- package/data/harnesses/delivery/codex/agents/maintenance.toml +2 -2
- package/data/harnesses/delivery/harness.json +3 -2
- package/data/harnesses/discover/codex/agents/api.toml +24 -0
- package/data/harnesses/discover/codex/agents/codebase.toml +24 -0
- package/data/harnesses/discover/codex/agents/community.toml +24 -0
- package/data/harnesses/discover/codex/agents/deployed-client-bundle.toml +24 -0
- package/data/harnesses/discover/codex/agents/distribution-artifacts.toml +24 -0
- package/data/harnesses/discover/codex/agents/docs.toml +27 -1
- package/data/harnesses/discover/codex/agents/infra-backend-fingerprint.toml +24 -0
- package/data/harnesses/discover/codex/agents/packages.toml +24 -0
- package/data/harnesses/discover/codex/agents/session.toml +40 -0
- package/data/harnesses/discover/codex/agents/website.toml +24 -0
- package/data/harnesses/discover/codex/agents/wire-capture.toml +40 -0
- package/data/harnesses/discover/harness.json +3 -2
- package/data/harnesses/discover/rules/calibration.md +219 -0
- package/data/harnesses/discover/rules/tooling.md +205 -0
- package/data/harnesses/discussion/harness.json +1 -0
- package/data/harnesses/etna/agents/maintenance.md +2 -2
- package/data/harnesses/etna/codex/agents/maintenance.toml +2 -2
- package/data/harnesses/etna/harness.json +3 -2
- package/data/harnesses/hr/harness.json +1 -0
- package/data/harnesses/kb-agi/harness.json +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: stat-cards
|
|
3
|
+
class: d2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "@nurix/components Statistics compound family (+ AnimatedNumber, useStatHoverBridge; visuals host Gauge/Spark/ProgressBar/ChartLegend) — ~/dev/components"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Chrome recipe — stat cards
|
|
10
|
+
|
|
11
|
+
The stat-card family: one compound grammar for every KPI tile, gauge card, sparkline card, legend card, and list card. The root is a structural flex column providing shared context (`size`, `comparisonLabel`); ~two dozen dotted parts compose the regions. The card draws no chart geometry itself — the visual slot hosts a chart element. The dashboard-tile obligation applies to every instance: **number + comparison + trend + state + door**.
|
|
12
|
+
|
|
13
|
+
## Anatomy
|
|
14
|
+
|
|
15
|
+
| Slot | Library part | Spec |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| Root | `Statistics { size: "sm" \| "md" \| "lg", variant: "bare" \| "card" \| "elevated" \| "outline" \| "soft" \| "ghost", accent: "none" \| "primary" \| "success" \| "warning" \| "danger" \| "info", gap, justify, comparisonLabel }` | The surface. `bare` draws nothing (consumer owns the wrapper); the rest share `overflow-hidden rounded p-6` with their own background/border/shadow. `accent` draws a 4px left stripe. `size` scales the headline value and title through context. |
|
|
18
|
+
| Section | `StatisticsSection` | Vertical region group for top/bottom cascades (`justify: "between"` pins one to each end). |
|
|
19
|
+
| Header | `StatisticsHeader` → `StatisticsIcon { variant, tone: "soft" \| "solid" \| "outline" \| "plain", size (incl. "oversized"), shape }` + `StatisticsHeading` (`StatisticsTitle`, `StatisticsDescription`) + `StatisticsActions` | Icon/title block left, trailing actions (menu, info, tabs, date range) right. `oversized` icons bleed out the clipped top-right corner as a decorative watermark. |
|
|
20
|
+
| Metric row | `StatisticsMetric` → `StatisticsValue { animated?, value, format, prefix, suffix }` + `StatisticsUnit` + `StatisticsTrend { value, direction?, invert?, pill?, format? }` + `StatisticsComparison` | Baseline-aligned: headline value (static, or digit-animated via NumberFlow with a formatted static first paint — SSR-safe), unit ("/ 5,000"), signed trend badge, comparison label (falls back to the card's `comparisonLabel`). |
|
|
21
|
+
| Visual | `StatisticsVisual` (layout via `StatisticsGroup` horizontal/vertical) | Generic centered slot hosting `<Spark>`, `<Gauge>`, `<ProgressBar>`, `<ChartLegend>`, or any chart element. (Legacy `StatisticsGauge`/`Progress`/`SegmentedBar`/`Sparkline`/`Legend*` parts are deprecated thin wrappers over those same components.) |
|
|
22
|
+
| Content | `StatisticsContent` | Escape hatch for list / table / paragraph cards. |
|
|
23
|
+
| Footer | `StatisticsFooter` → `StatisticsCaption` + `StatisticsLink` | Freshness caption left ("Updated 2m ago" — the tile's *state*), link right (the tile's *door*). |
|
|
24
|
+
| Hover bridge | `useStatHoverBridge()` | Headless hook lifting a hovered chart point into the header: hand its `onHoverChange` to the embedded graph, read `hover.value`/`hover.label` in the value/description with a resting fallback. |
|
|
25
|
+
|
|
26
|
+
Every part emits `data-slot="statistics-…"` for styling and testing hooks.
|
|
27
|
+
|
|
28
|
+
## The eight states
|
|
29
|
+
|
|
30
|
+
| State | Spec | Token roles |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| default | Card variant on the card surface with a hairline border; value at display scale with tabular numerals; title strong, description muted. | `card` + `card-foreground`, `border`, `foreground`, `muted-foreground` |
|
|
33
|
+
| hover | Elevated variants lift per the package's elevation ramp; with the hover bridge wired, hovering the embedded chart live-rewrites the value and description to the hovered point, reverting on leave. | elevation system; value stays `foreground` |
|
|
34
|
+
| focus | The door (footer link or whole-card link) and any header action are focus stops with visible rings. | `ring` |
|
|
35
|
+
| active | A clickable card shows a pressed treatment; the accent stripe marks category or alert affiliation. | `accent` stripe via `primary`/status roles |
|
|
36
|
+
| disabled | No permission for the metric: value masked (—), lock caption, non-interactive, ~50% presence — the tile keeps its footprint. | reduced-alpha, `muted-foreground` |
|
|
37
|
+
| loading | Skeleton title bar + value block + visual area at the card's fixed height — the grid never reflows when data lands. | `muted` |
|
|
38
|
+
| error / empty | Degraded: em-dash value + status-role caption ("stale as of 09:12") — never a fabricated number. Empty series: the visual slot shows a quiet hint, never a zeroed fake chart. | `warning` / `destructive` caption, `muted-foreground` |
|
|
39
|
+
| success | Trend intent is the success surface: up = good on the success role, down = bad on `destructive`; `invert` flips the mapping for lower-is-better metrics (error rate, latency, churn); zero/no-direction = neutral muted. `pill` wraps it in a tinted badge. Exposed as `data-direction`. | `success` / `destructive` status roles |
|
|
40
|
+
|
|
41
|
+
## Keyboard behavior
|
|
42
|
+
|
|
43
|
+
- A stat card is mostly static content; its interactive elements — header actions, the footer link, a clickable card — join the tab order in reading order (header action → door), **Enter** activates.
|
|
44
|
+
- The hover bridge is a pointer-only *enhancement*: the resting value is always the correct headline without any pointer, so keyboard and touch users lose nothing; point inspection falls to the embedded chart's own keyboard/tooltip behavior.
|
|
45
|
+
- An actions menu follows menu semantics: Enter/Space opens, arrows move, Escape closes to the trigger.
|
|
46
|
+
- Animated values render as real formatted text (static until the animation element registers), so the accessible name is always the current number — no aria gymnastics required.
|
|
47
|
+
- **cmdk path**: none — tiles are destinations for the palette ("Go to revenue"), not hosts of it.
|
|
48
|
+
|
|
49
|
+
## Token reach
|
|
50
|
+
|
|
51
|
+
- `card` / `card-foreground` — surface and text; `border` — hairline (outline/card variants); `muted` / `muted-foreground` — description, captions, skeletons.
|
|
52
|
+
- Accent stripe and `StatisticsIcon` variants — `primary` plus the status roles (`success`, `warning`, `destructive`/danger, `info`) at soft/solid/outline tones.
|
|
53
|
+
- `StatisticsTrend` — **status roles only**. Known library deviation: the shipped component pins success intent to Tailwind `emerald-500` literals and has no success token; under `nurix` the trend/icon success tints are restyled in place to the package's `success` role (the no-jails law permits this; the token-reach report flags the literal), and under `native` the implementation uses status roles from the start.
|
|
54
|
+
- Embedded visuals — `chart-1..5` for series color, chart chrome roles (`chart-grid`, `chart-tooltip-background/foreground`) for scaffolding; a spark/gauge/progress fill is never a hex literal. The default spark stroke (`var(--primary)`) already token-reaches.
|
|
55
|
+
- The headline value inherits the type ramp's display size via the card `size`; mono/tabular figures come from the package's type roles, never a hardcoded family.
|
|
56
|
+
|
|
57
|
+
## When to use / composition notes
|
|
58
|
+
|
|
59
|
+
Stat cards are the dashboard's KPI strip (4–6 tiles full-width per the blueprint shapes) and the record header's vital signs; the same grammar scales from a bare number-plus-trend to a gauge card with a legend, so one card system covers the whole surface. Every tile carries all five obligations — a number without a comparison is decoration, a tile without a door is a dead end. Use `size` to build hierarchy (one `lg` hero metric, `md` support tiles) instead of ad-hoc font sizes; use `justify="between"` with two sections for cards whose visual anchors the bottom edge. Wire the hover bridge whenever a chart lives in the card — it is the cheapest "designed, not templated" signal in the set.
|
|
60
|
+
|
|
61
|
+
- **`primitives: nurix`** — `import { Statistics, StatisticsHeader, StatisticsIcon, StatisticsHeading, StatisticsTitle, StatisticsDescription, StatisticsActions, StatisticsMetric, StatisticsValue, StatisticsUnit, StatisticsTrend, StatisticsComparison, StatisticsVisual, StatisticsFooter, StatisticsCaption, StatisticsLink, useStatHoverBridge } from "@nurix/components/statistics";` (visuals: `@nurix/components/spark`, `/gauge`, `/progress-bar`; the animated number: `@nurix/components/animated-number`).
|
|
62
|
+
- **`primitives: native`** — this recipe is the build spec: a fixed-height card with header / baseline-aligned metric row / visual slot / footer regions, a display-scale tabular headline that is correct on first paint (animation optional and additive), a sign-driven trend badge with an invert switch on status roles, skeletons that hold the footprint, degraded states that never fabricate numbers, and all series color drawn from the token artifact's `chart-1..5`.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: topbar
|
|
3
|
+
class: d2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "@nurix/components — composed pattern: SidebarTrigger + Separator + Breadcrumb family + CommandTrigger + Button (the library's site-header pattern; no single Topbar export) — ~/dev/components"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Chrome recipe — topbar
|
|
10
|
+
|
|
11
|
+
The app-shell top bar: the sticky row above the content pane carrying the sidebar toggle, the breadcrumb trail, global search, and screen-level actions. In `@nurix/components` this is a **documented composition, not a single export** — every shipped app-shell demo assembles it from `SidebarTrigger`, `Separator`, the `Breadcrumb` family, `CommandTrigger`, and `Button`. Page-level mastheads below it are separate components (`Header` at `@nurix/components/header` for config-driven record headers; `PageHeader` for list/detail mastheads with a stat ledger) and are not part of this recipe.
|
|
12
|
+
|
|
13
|
+
## Anatomy
|
|
14
|
+
|
|
15
|
+
| Slot | Library part | Spec |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| Bar | flex row | Sticky (`top-0`), 48–56px tall, full width of the content pane, hairline bottom border. Optional glass treatment: `background` at ~95% alpha + backdrop blur. |
|
|
18
|
+
| Sidebar toggle | `SidebarTrigger` | Leading icon button toggling the sidebar; reflects open state via `data-state`. |
|
|
19
|
+
| Divider | `Separator orientation="vertical"` | 16px vertical hairline between toggle and breadcrumbs. |
|
|
20
|
+
| Breadcrumbs | `Breadcrumb` → `BreadcrumbList` / `BreadcrumbItem` / `BreadcrumbLink` / `BreadcrumbSeparator` / `BreadcrumbPage` | The location trail. Ancestors are links; the last segment is `BreadcrumbPage` — plain text, `aria-current="page"`, never a link. Deep trails collapse middle segments into an ellipsis dropdown. |
|
|
21
|
+
| Spring | flex spacer | Pushes the trailing cluster right. |
|
|
22
|
+
| Search slot | `CommandTrigger { placeholder, shortcut }` | A bordered search chip with placeholder text and a right-aligned `⌘K` kbd hint; opens the command palette. |
|
|
23
|
+
| Actions | `Button` (ghost/icon), overflow `DropdownMenu` | At most 3 visible screen-level actions; further actions collapse into an overflow menu. Theme toggle sits here. |
|
|
24
|
+
| Identity | `Avatar` (optional) | Only when the shell has no sidebar user footer — one identity home per shell, never two. |
|
|
25
|
+
|
|
26
|
+
## The eight states
|
|
27
|
+
|
|
28
|
+
State is mostly per-control; the bar itself is stable chrome.
|
|
29
|
+
|
|
30
|
+
| State | Spec | Token roles |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| default | Bar on the content canvas with a hairline base; breadcrumb ancestors quiet, current page at full strength. | `background`, `border`, `muted-foreground` (ancestors), `foreground` (current) |
|
|
33
|
+
| hover | Breadcrumb links sharpen to full foreground; icon buttons gain an accent fill. | `foreground`, `accent` + `accent-foreground` |
|
|
34
|
+
| focus | Focus-visible ring on every control — toggle, links, chip, buttons. | `ring` |
|
|
35
|
+
| active | Sidebar toggle mirrors the open sidebar (`data-state`); the current crumb is the persistent active marker; a pressed action holds its pressed fill. | `foreground`, `accent` |
|
|
36
|
+
| disabled | Actions at ~50% opacity, no pointer events; breadcrumbs are never disabled. | reduced-alpha foreground |
|
|
37
|
+
| loading | An in-flight screen action shows an inline spinner inside its own button. The bar never skeletons: breadcrumbs derive from the route and render immediately. | `muted-foreground` (spinner) |
|
|
38
|
+
| error / empty | An empty trail renders the page title as the single `BreadcrumbPage`. Errors surface as toasts or content-level states — the bar itself hosts none; a degraded-environment banner may attach *beneath* the bar on a status-role tint. | `warning` / `destructive` (banner only) |
|
|
39
|
+
| success | Transient: an action button briefly swaps to a check, or a toast confirms; nothing persistent lives in the bar. | `success` status role (transient) |
|
|
40
|
+
|
|
41
|
+
## Keyboard behavior
|
|
42
|
+
|
|
43
|
+
- **Tab order**: the bar follows the skip link and precedes the content pane — toggle → breadcrumb links → search chip → actions → identity. Plain sequential tabbing; no roving focus is needed at this control count.
|
|
44
|
+
- **Enter** activates crumbs and buttons; **Space** activates buttons.
|
|
45
|
+
- **Cmd/Ctrl+B** toggles the sidebar from anywhere (provider-owned); the `SidebarTrigger` is its visible affordance.
|
|
46
|
+
- **cmdk path**: **⌘K / Ctrl+K** opens the command palette from anywhere; the search chip is the visible, clickable affordance and displays the shortcut as a kbd hint. Inside the palette: type to filter, arrows to move, Enter to run, Escape to close. Global navigation and infrequent actions belong in the palette, not as more topbar buttons.
|
|
47
|
+
- Overflow menu: Enter/Space opens, arrows move, Escape closes and returns focus to the trigger.
|
|
48
|
+
|
|
49
|
+
## Token reach
|
|
50
|
+
|
|
51
|
+
- `background` — the bar surface (with optional alpha for the glass treatment). The bar sits on the content canvas: it never consumes the `sidebar-*` roles.
|
|
52
|
+
- `border` — the bottom hairline and the vertical separator.
|
|
53
|
+
- `foreground` / `muted-foreground` — current crumb vs ancestors; icon default strength.
|
|
54
|
+
- `accent` / `accent-foreground` — icon-button hover/pressed fills.
|
|
55
|
+
- `ring` — focus rings.
|
|
56
|
+
- `popover` / `popover-foreground` — overflow and ellipsis dropdowns.
|
|
57
|
+
- `primary` — at most one primary CTA, only when the screen genuinely has a single dominant action.
|
|
58
|
+
- Status roles (`warning`, `destructive`, `success`) — only for the attached environment banner and transient confirmations; never as bar decoration.
|
|
59
|
+
|
|
60
|
+
## When to use / composition notes
|
|
61
|
+
|
|
62
|
+
Every screen inside the shell gets the topbar; it is the constant that makes the sidebar collapsible (the toggle must survive collapse) and the command palette discoverable. Keep it thin — the topbar locates and searches; identity-weight content (record title, status, metadata, stats) belongs to the page masthead below it (`Header` / `PageHeader` under `nurix`), and datasets' own toolbars belong to their tables. The three-zone rhythm — locate left, search center-right, act right — is the invariant; what varies per product is only which trailing actions earn a permanent slot.
|
|
63
|
+
|
|
64
|
+
- **`primitives: nurix`** — composed, e.g.: `import { SidebarTrigger } from "@nurix/components/sidebar"; import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator } from "@nurix/components/breadcrumb"; import { CommandTrigger } from "@nurix/components/command"; import { Separator } from "@nurix/components/separator"; import { Button } from "@nurix/components/button";`
|
|
65
|
+
- **`primitives: native`** — this recipe is the build spec: a sticky 48–56px flex row with the slot order above, a real `<nav aria-label="Breadcrumb">` trail with `aria-current="page"` on the last segment, a search affordance wired to the stack's palette (or a plain search route) showing its shortcut, and the state/keyboard/token contracts implemented with the incumbent stack's own primitives.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: accent-presets
|
|
3
|
+
class: a2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "v1 design-skill asset, imported outright (v1 data/combinations/accent-presets.md); per-step contrast grades recomputed at admission, not carried from the source"
|
|
6
|
+
license: open
|
|
7
|
+
feel: "twelve pre-vetted accent voltages — from emerald operator-default to zinc/stone mono restraint — each graded step by step against light and dark"
|
|
8
|
+
---
|
|
9
|
+
Load when an accent is being chosen or overridden. One accent by default; a second
|
|
10
|
+
only when the active identity genuinely calls for it — status hues (emerald / amber /
|
|
11
|
+
rose / violet / zinc as semantics) don't count against that budget, they are semantic,
|
|
12
|
+
not decorative. In dark themes the accent's 600 step keeps its OKLCH as the action
|
|
13
|
+
fill (lightening it washes it out); accent-tinted surfaces pair a dark neutral surface
|
|
14
|
+
with the 300 step as text. `amber` and `orange` never carry body text on dark
|
|
15
|
+
backgrounds below the 700 step — the grades below say exactly where each step stops
|
|
16
|
+
being text-safe.
|
|
17
|
+
|
|
18
|
+
Neutral-temperature fit (from v1, unchanged): cool-slate neutrals clash with amber and
|
|
19
|
+
orange (fits: indigo, blue, sky, violet, teal); true gray takes anything (best:
|
|
20
|
+
emerald, indigo, violet, sky, pink); warm neutrals clash with sky and blue (fits:
|
|
21
|
+
emerald, teal, amber, orange, stone, rose). By use case: emerald is the operator
|
|
22
|
+
default; indigo/sky for CRM and support; teal/blue for clinical calm; amber/orange
|
|
23
|
+
for logistics and field energy; violet/blue for engineering; zinc/stone for the
|
|
24
|
+
no-accent mono registers.
|
|
25
|
+
|
|
26
|
+
```yaml values
|
|
27
|
+
reference-surfaces: { light: "oklch(0.97 0 0)", dark: "oklch(0.141 0 0)" } # v1 neutral-50 / neutral-950
|
|
28
|
+
grades: { aaa: ">= 7:1 body text", aa: ">= 4.5:1 body/large text", a: ">= 3:1 UI elements only", x: "< 3:1 — decorative only" }
|
|
29
|
+
steps: [50, 100, 300, 500, 600, 700, 900]
|
|
30
|
+
emerald:
|
|
31
|
+
use: "status-rich CRM; active emphasis (v1 default accent)"
|
|
32
|
+
scale: [oklch(0.97 0.02 165), oklch(0.93 0.06 165), oklch(0.80 0.13 165), oklch(0.69 0.18 165), oklch(0.60 0.18 165), oklch(0.50 0.18 165), oklch(0.30 0.18 165)]
|
|
33
|
+
on-light: [x, x, x, x, a, aa, aaa]
|
|
34
|
+
on-dark: [aaa, aaa, aaa, aaa, aa, a, x]
|
|
35
|
+
indigo:
|
|
36
|
+
use: "generic SaaS; trust-building"
|
|
37
|
+
scale: [oklch(0.97 0.02 270), oklch(0.93 0.06 270), oklch(0.78 0.13 270), oklch(0.55 0.20 270), oklch(0.47 0.20 270), oklch(0.39 0.20 270), oklch(0.25 0.18 270)]
|
|
38
|
+
on-light: [x, x, x, aa, aa, aaa, aaa]
|
|
39
|
+
on-dark: [aaa, aaa, aaa, a, x, x, x]
|
|
40
|
+
violet:
|
|
41
|
+
use: "power tools; technical UIs"
|
|
42
|
+
scale: [oklch(0.97 0.02 295), oklch(0.93 0.06 295), oklch(0.78 0.13 295), oklch(0.55 0.22 295), oklch(0.48 0.22 295), oklch(0.40 0.22 295), oklch(0.25 0.20 295)]
|
|
43
|
+
on-light: [x, x, x, aa, aa, aaa, aaa]
|
|
44
|
+
on-dark: [aaa, aaa, aaa, a, x, x, x]
|
|
45
|
+
rose:
|
|
46
|
+
use: "critical workflows; alert-prone domains"
|
|
47
|
+
scale: [oklch(0.97 0.02 15), oklch(0.93 0.06 15), oklch(0.78 0.13 15), oklch(0.62 0.22 15), oklch(0.55 0.22 15), oklch(0.45 0.22 15), oklch(0.30 0.20 15)]
|
|
48
|
+
on-light: [x, x, x, a, aa, aa, aaa]
|
|
49
|
+
on-dark: [aaa, aaa, aaa, aa, a, x, x]
|
|
50
|
+
amber:
|
|
51
|
+
use: "warehouses; logistics; energy"
|
|
52
|
+
scale: [oklch(0.97 0.04 100), oklch(0.94 0.09 95), oklch(0.84 0.14 90), oklch(0.78 0.16 80), oklch(0.70 0.17 75), oklch(0.60 0.17 70), oklch(0.40 0.16 65)]
|
|
53
|
+
on-light: [x, x, x, x, x, a, aaa]
|
|
54
|
+
on-dark: [aaa, aaa, aaa, aaa, aaa, aa, x]
|
|
55
|
+
teal:
|
|
56
|
+
use: "healthcare; calm clinical UIs"
|
|
57
|
+
scale: [oklch(0.97 0.02 195), oklch(0.93 0.06 195), oklch(0.78 0.12 195), oklch(0.60 0.13 195), oklch(0.52 0.13 195), oklch(0.43 0.13 195), oklch(0.28 0.12 195)]
|
|
58
|
+
on-light: [x, x, x, a, a, aa, aaa]
|
|
59
|
+
on-dark: [aaa, aaa, aaa, aa, a, x, x]
|
|
60
|
+
sky:
|
|
61
|
+
use: "customer support; conversational"
|
|
62
|
+
scale: [oklch(0.97 0.02 225), oklch(0.93 0.06 225), oklch(0.80 0.13 225), oklch(0.68 0.15 225), oklch(0.58 0.16 225), oklch(0.48 0.17 225), oklch(0.30 0.16 225)]
|
|
63
|
+
on-light: [x, x, x, x, a, aa, aaa]
|
|
64
|
+
on-dark: [aaa, aaa, aaa, aaa, aa, a, x]
|
|
65
|
+
blue:
|
|
66
|
+
use: "traditional enterprise"
|
|
67
|
+
scale: [oklch(0.97 0.02 245), oklch(0.93 0.06 245), oklch(0.78 0.13 245), oklch(0.55 0.20 245), oklch(0.47 0.20 245), oklch(0.39 0.20 245), oklch(0.25 0.18 245)]
|
|
68
|
+
on-light: [x, x, x, a, aa, aaa, aaa]
|
|
69
|
+
on-dark: [aaa, aaa, aaa, a, a, x, x]
|
|
70
|
+
pink:
|
|
71
|
+
use: "brand-driven; younger ops teams"
|
|
72
|
+
scale: [oklch(0.97 0.02 0), oklch(0.93 0.06 0), oklch(0.80 0.15 0), oklch(0.67 0.22 0), oklch(0.58 0.22 0), oklch(0.48 0.22 0), oklch(0.30 0.20 0)]
|
|
73
|
+
on-light: [x, x, x, a, a, aa, aaa]
|
|
74
|
+
on-dark: [aaa, aaa, aaa, aa, a, x, x]
|
|
75
|
+
orange:
|
|
76
|
+
use: "high-energy; field service"
|
|
77
|
+
scale: [oklch(0.97 0.04 50), oklch(0.93 0.09 50), oklch(0.82 0.15 50), oklch(0.70 0.19 50), oklch(0.62 0.19 50), oklch(0.52 0.19 50), oklch(0.32 0.17 50)]
|
|
78
|
+
on-light: [x, x, x, x, a, aa, aaa]
|
|
79
|
+
on-dark: [aaa, aaa, aaa, aa, aa, a, x]
|
|
80
|
+
zinc:
|
|
81
|
+
use: "plain / cron registers; deliberately no accent (mono)"
|
|
82
|
+
scale: [oklch(0.97 0 0), oklch(0.93 0 0), oklch(0.80 0 0), oklch(0.55 0 0), oklch(0.44 0 0), oklch(0.37 0 0), oklch(0.20 0 0)]
|
|
83
|
+
on-light: [x, x, x, a, aaa, aaa, aaa]
|
|
84
|
+
on-dark: [aaa, aaa, aaa, a, x, x, x]
|
|
85
|
+
stone:
|
|
86
|
+
use: "plain register with warm neutrals (warm mono)"
|
|
87
|
+
scale: [oklch(0.97 0.005 80), oklch(0.93 0.006 80), oklch(0.80 0.008 80), oklch(0.55 0.012 80), oklch(0.44 0.013 80), oklch(0.37 0.014 80), oklch(0.20 0.016 80)]
|
|
88
|
+
on-light: [x, x, x, a, aaa, aaa, aaa]
|
|
89
|
+
on-dark: [aaa, aaa, aaa, a, x, x, x]
|
|
90
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: aesop-earth-mute
|
|
3
|
+
class: a2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "Distilled from Aesop's brand identity (brandcolorcode.com/aesop; cross-checked color.adobe.com/Aesop-brand-earth-mute) — muted earthy monochrome"
|
|
6
|
+
license: open
|
|
7
|
+
feel: "understated earthy olive-beige monochrome — intellectual, unbranded luxury that whispers instead of shouts"
|
|
8
|
+
---
|
|
9
|
+
The most restrained chroma in the set (accent tops out at 0.06–0.07). Background hue
|
|
10
|
+
is pinned just past 100° specifically to escape flat AI-tan territory — the anti-cream
|
|
11
|
+
band ends at hue 100 — while keeping the earthy, olive-leaning premium feel; the whole
|
|
12
|
+
light theme sits lower in lightness than any other entry, like unbleached paper.
|
|
13
|
+
Neutrals carry 0.015–0.028 chroma toward hue 95–110; the authored dark is a deep
|
|
14
|
+
olive-umber ladder, hue held.
|
|
15
|
+
|
|
16
|
+
```yaml values
|
|
17
|
+
light:
|
|
18
|
+
background: oklch(0.88 0.025 110)
|
|
19
|
+
foreground: oklch(0.26 0.02 90)
|
|
20
|
+
card: oklch(0.902 0.02 108)
|
|
21
|
+
card-foreground: oklch(0.26 0.02 90)
|
|
22
|
+
popover: oklch(0.922 0.015 105)
|
|
23
|
+
popover-foreground: oklch(0.26 0.02 90)
|
|
24
|
+
primary: oklch(0.45 0.06 105)
|
|
25
|
+
primary-foreground: oklch(0.985 0.008 105)
|
|
26
|
+
secondary: oklch(0.838 0.026 102)
|
|
27
|
+
secondary-foreground: oklch(0.3 0.028 92)
|
|
28
|
+
muted: oklch(0.848 0.024 105)
|
|
29
|
+
muted-foreground: oklch(0.38 0.025 95)
|
|
30
|
+
accent: oklch(0.856 0.035 105)
|
|
31
|
+
accent-foreground: oklch(0.28 0.045 100)
|
|
32
|
+
destructive: oklch(0.5 0.15 30)
|
|
33
|
+
destructive-foreground: oklch(0.985 0.008 30)
|
|
34
|
+
success: oklch(0.55 0.09 140)
|
|
35
|
+
warning: oklch(0.72 0.1 80)
|
|
36
|
+
border: oklch(0.775 0.028 102)
|
|
37
|
+
input: oklch(0.775 0.028 102)
|
|
38
|
+
ring: oklch(0.45 0.06 105)
|
|
39
|
+
surface-raised: oklch(0.888 0.023 108)
|
|
40
|
+
surface-overlay: oklch(0.922 0.015 105)
|
|
41
|
+
chart-1: oklch(0.5 0.07 105)
|
|
42
|
+
chart-2: oklch(0.58 0.08 60)
|
|
43
|
+
chart-3: oklch(0.55 0.07 140)
|
|
44
|
+
chart-4: oklch(0.52 0.09 35)
|
|
45
|
+
chart-5: oklch(0.5 0.05 260)
|
|
46
|
+
sidebar: oklch(0.864 0.023 106)
|
|
47
|
+
sidebar-foreground: oklch(0.28 0.022 92)
|
|
48
|
+
sidebar-primary: oklch(0.45 0.06 105)
|
|
49
|
+
sidebar-primary-foreground: oklch(0.985 0.008 105)
|
|
50
|
+
sidebar-accent: oklch(0.842 0.03 104)
|
|
51
|
+
sidebar-accent-foreground: oklch(0.27 0.042 100)
|
|
52
|
+
sidebar-border: oklch(0.762 0.026 102)
|
|
53
|
+
sidebar-ring: oklch(0.45 0.06 105)
|
|
54
|
+
dark:
|
|
55
|
+
background: oklch(0.22 0.02 95)
|
|
56
|
+
foreground: oklch(0.9 0.015 90)
|
|
57
|
+
card: oklch(0.25 0.02 104)
|
|
58
|
+
card-foreground: oklch(0.9 0.015 90)
|
|
59
|
+
popover: oklch(0.32 0.022 104)
|
|
60
|
+
popover-foreground: oklch(0.9 0.015 90)
|
|
61
|
+
primary: oklch(0.65 0.07 100)
|
|
62
|
+
primary-foreground: oklch(0.18 0.03 105)
|
|
63
|
+
secondary: oklch(0.3 0.022 104)
|
|
64
|
+
secondary-foreground: oklch(0.88 0.012 104)
|
|
65
|
+
muted: oklch(0.29 0.022 104)
|
|
66
|
+
muted-foreground: oklch(0.7 0.015 104)
|
|
67
|
+
accent: oklch(0.34 0.045 105)
|
|
68
|
+
accent-foreground: oklch(0.87 0.06 105)
|
|
69
|
+
destructive: oklch(0.57 0.135 30)
|
|
70
|
+
destructive-foreground: oklch(0.985 0.008 30)
|
|
71
|
+
success: oklch(0.61 0.08 140)
|
|
72
|
+
warning: oklch(0.74 0.09 80)
|
|
73
|
+
border: oklch(0.325 0.022 104)
|
|
74
|
+
input: oklch(0.325 0.022 104)
|
|
75
|
+
ring: oklch(0.65 0.07 100)
|
|
76
|
+
surface-raised: oklch(0.27 0.02 104)
|
|
77
|
+
surface-overlay: oklch(0.32 0.022 104)
|
|
78
|
+
chart-1: oklch(0.6 0.063 105)
|
|
79
|
+
chart-2: oklch(0.68 0.072 60)
|
|
80
|
+
chart-3: oklch(0.65 0.063 140)
|
|
81
|
+
chart-4: oklch(0.62 0.081 35)
|
|
82
|
+
chart-5: oklch(0.6 0.045 260)
|
|
83
|
+
sidebar: oklch(0.195 0.02 104)
|
|
84
|
+
sidebar-foreground: oklch(0.88 0.012 104)
|
|
85
|
+
sidebar-primary: oklch(0.65 0.07 100)
|
|
86
|
+
sidebar-primary-foreground: oklch(0.18 0.03 105)
|
|
87
|
+
sidebar-accent: oklch(0.265 0.03 105)
|
|
88
|
+
sidebar-accent-foreground: oklch(0.9 0.02 105)
|
|
89
|
+
sidebar-border: oklch(0.28 0.022 104)
|
|
90
|
+
sidebar-ring: oklch(0.65 0.07 100)
|
|
91
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: arc-peach-play
|
|
3
|
+
class: a2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "Distilled from Arc browser's theme palette (arc.net/colors.html, cross-referenced via devslovecoffee.com) — warm cream/peach with coral foreground"
|
|
6
|
+
license: open
|
|
7
|
+
feel: "playful peachy cream with a coral-orange accent — a browser that wants design itself to feel human"
|
|
8
|
+
---
|
|
9
|
+
Warmer and more saturated than the Notion/Claude entries, pinned just below the
|
|
10
|
+
anti-cream hue floor (background hue 32, under the 40° band edge) so the peach stays
|
|
11
|
+
legibly a color, not a neutral. Fits playful, personality-forward consumer tools.
|
|
12
|
+
Neutrals carry 0.02–0.042 chroma toward hue 28–35; the authored dark is a warm
|
|
13
|
+
plum-brown ladder, never black.
|
|
14
|
+
|
|
15
|
+
```yaml values
|
|
16
|
+
light:
|
|
17
|
+
background: oklch(0.93 0.035 32)
|
|
18
|
+
foreground: oklch(0.26 0.03 25)
|
|
19
|
+
card: oklch(0.952 0.028 32)
|
|
20
|
+
card-foreground: oklch(0.26 0.03 25)
|
|
21
|
+
popover: oklch(0.966 0.02 32)
|
|
22
|
+
popover-foreground: oklch(0.26 0.03 25)
|
|
23
|
+
primary: oklch(0.65 0.19 35)
|
|
24
|
+
primary-foreground: oklch(0.18 0.03 35)
|
|
25
|
+
secondary: oklch(0.892 0.04 32)
|
|
26
|
+
secondary-foreground: oklch(0.3 0.04 28)
|
|
27
|
+
muted: oklch(0.902 0.037 32)
|
|
28
|
+
muted-foreground: oklch(0.42 0.035 28)
|
|
29
|
+
accent: oklch(0.912 0.055 35)
|
|
30
|
+
accent-foreground: oklch(0.32 0.105 35)
|
|
31
|
+
destructive: oklch(0.55 0.22 20)
|
|
32
|
+
destructive-foreground: oklch(0.985 0.008 20)
|
|
33
|
+
success: oklch(0.62 0.14 145)
|
|
34
|
+
warning: oklch(0.8 0.15 85)
|
|
35
|
+
border: oklch(0.838 0.042 32)
|
|
36
|
+
input: oklch(0.838 0.042 32)
|
|
37
|
+
ring: oklch(0.65 0.19 35)
|
|
38
|
+
surface-raised: oklch(0.94 0.032 32)
|
|
39
|
+
surface-overlay: oklch(0.966 0.02 32)
|
|
40
|
+
chart-1: oklch(0.65 0.19 35)
|
|
41
|
+
chart-2: oklch(0.58 0.15 300)
|
|
42
|
+
chart-3: oklch(0.65 0.12 200)
|
|
43
|
+
chart-4: oklch(0.62 0.14 145)
|
|
44
|
+
chart-5: oklch(0.78 0.13 85)
|
|
45
|
+
sidebar: oklch(0.916 0.038 32)
|
|
46
|
+
sidebar-foreground: oklch(0.3 0.03 28)
|
|
47
|
+
sidebar-primary: oklch(0.65 0.19 35)
|
|
48
|
+
sidebar-primary-foreground: oklch(0.18 0.03 35)
|
|
49
|
+
sidebar-accent: oklch(0.895 0.05 35)
|
|
50
|
+
sidebar-accent-foreground: oklch(0.3 0.09 35)
|
|
51
|
+
sidebar-border: oklch(0.828 0.04 32)
|
|
52
|
+
sidebar-ring: oklch(0.65 0.19 35)
|
|
53
|
+
dark:
|
|
54
|
+
background: oklch(0.21 0.025 30)
|
|
55
|
+
foreground: oklch(0.95 0.015 35)
|
|
56
|
+
card: oklch(0.24 0.025 32)
|
|
57
|
+
card-foreground: oklch(0.95 0.015 35)
|
|
58
|
+
popover: oklch(0.31 0.028 32)
|
|
59
|
+
popover-foreground: oklch(0.95 0.015 35)
|
|
60
|
+
primary: oklch(0.7 0.17 35)
|
|
61
|
+
primary-foreground: oklch(0.18 0.03 35)
|
|
62
|
+
secondary: oklch(0.29 0.029 32)
|
|
63
|
+
secondary-foreground: oklch(0.88 0.014 32)
|
|
64
|
+
muted: oklch(0.28 0.029 32)
|
|
65
|
+
muted-foreground: oklch(0.7 0.015 32)
|
|
66
|
+
accent: oklch(0.33 0.045 35)
|
|
67
|
+
accent-foreground: oklch(0.87 0.06 35)
|
|
68
|
+
destructive: oklch(0.62 0.205 20)
|
|
69
|
+
destructive-foreground: oklch(0.18 0.03 20)
|
|
70
|
+
success: oklch(0.68 0.13 145)
|
|
71
|
+
warning: oklch(0.82 0.14 85)
|
|
72
|
+
border: oklch(0.315 0.03 32)
|
|
73
|
+
input: oklch(0.315 0.03 32)
|
|
74
|
+
ring: oklch(0.7 0.17 35)
|
|
75
|
+
surface-raised: oklch(0.26 0.025 32)
|
|
76
|
+
surface-overlay: oklch(0.31 0.028 32)
|
|
77
|
+
chart-1: oklch(0.75 0.171 35)
|
|
78
|
+
chart-2: oklch(0.68 0.135 300)
|
|
79
|
+
chart-3: oklch(0.75 0.108 200)
|
|
80
|
+
chart-4: oklch(0.72 0.126 145)
|
|
81
|
+
chart-5: oklch(0.85 0.117 85)
|
|
82
|
+
sidebar: oklch(0.185 0.025 32)
|
|
83
|
+
sidebar-foreground: oklch(0.88 0.014 32)
|
|
84
|
+
sidebar-primary: oklch(0.7 0.17 35)
|
|
85
|
+
sidebar-primary-foreground: oklch(0.18 0.03 35)
|
|
86
|
+
sidebar-accent: oklch(0.255 0.03 35)
|
|
87
|
+
sidebar-accent-foreground: oklch(0.9 0.02 35)
|
|
88
|
+
sidebar-border: oklch(0.27 0.029 32)
|
|
89
|
+
sidebar-ring: oklch(0.7 0.17 35)
|
|
90
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: attio-hunter-teal
|
|
3
|
+
class: a2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "Distilled from Attio's brand palette (mobbin.com/colors/brand/attio) — hunter-black foundation, teal/green primary"
|
|
6
|
+
license: open
|
|
7
|
+
feel: "hunter-black foundation with a fresh teal pulse — quiet sophistication for data-dense work, alive rather than sterile"
|
|
8
|
+
---
|
|
9
|
+
Positioned against typical gray enterprise CRM chrome: the neutral ramp itself
|
|
10
|
+
carries a green-black tint (0.006–0.014 chroma toward hue 165), not just the accent —
|
|
11
|
+
which is what gives Attio's own screens their "alive" quality. The teal action color
|
|
12
|
+
is light enough that fills carry a deep hunter ink; the authored dark is a hunter
|
|
13
|
+
black-green ladder, hue held.
|
|
14
|
+
|
|
15
|
+
```yaml values
|
|
16
|
+
light:
|
|
17
|
+
background: oklch(0.985 0.006 165)
|
|
18
|
+
foreground: oklch(0.24 0.015 165)
|
|
19
|
+
card: oklch(0.997 0.004 165)
|
|
20
|
+
card-foreground: oklch(0.24 0.015 165)
|
|
21
|
+
popover: oklch(0.999 0.003 165)
|
|
22
|
+
popover-foreground: oklch(0.24 0.015 165)
|
|
23
|
+
primary: oklch(0.68 0.13 175)
|
|
24
|
+
primary-foreground: oklch(0.18 0.03 175)
|
|
25
|
+
secondary: oklch(0.937 0.01 165)
|
|
26
|
+
secondary-foreground: oklch(0.3 0.018 165)
|
|
27
|
+
muted: oklch(0.947 0.009 165)
|
|
28
|
+
muted-foreground: oklch(0.45 0.018 165)
|
|
29
|
+
accent: oklch(0.945 0.045 175)
|
|
30
|
+
accent-foreground: oklch(0.32 0.1 175)
|
|
31
|
+
destructive: oklch(0.56 0.2 25)
|
|
32
|
+
destructive-foreground: oklch(0.985 0.008 25)
|
|
33
|
+
success: oklch(0.65 0.14 150)
|
|
34
|
+
warning: oklch(0.76 0.13 80)
|
|
35
|
+
border: oklch(0.897 0.011 165)
|
|
36
|
+
input: oklch(0.897 0.011 165)
|
|
37
|
+
ring: oklch(0.68 0.13 175)
|
|
38
|
+
surface-raised: oklch(0.991 0.005 165)
|
|
39
|
+
surface-overlay: oklch(0.999 0.003 165)
|
|
40
|
+
chart-1: oklch(0.68 0.13 175)
|
|
41
|
+
chart-2: oklch(0.62 0.12 145)
|
|
42
|
+
chart-3: oklch(0.58 0.12 230)
|
|
43
|
+
chart-4: oklch(0.74 0.12 80)
|
|
44
|
+
chart-5: oklch(0.6 0.13 330)
|
|
45
|
+
sidebar: oklch(0.969 0.008 165)
|
|
46
|
+
sidebar-foreground: oklch(0.3 0.014 165)
|
|
47
|
+
sidebar-primary: oklch(0.68 0.13 175)
|
|
48
|
+
sidebar-primary-foreground: oklch(0.18 0.03 175)
|
|
49
|
+
sidebar-accent: oklch(0.925 0.036 175)
|
|
50
|
+
sidebar-accent-foreground: oklch(0.3 0.09 175)
|
|
51
|
+
sidebar-border: oklch(0.885 0.01 165)
|
|
52
|
+
sidebar-ring: oklch(0.68 0.13 175)
|
|
53
|
+
dark:
|
|
54
|
+
background: oklch(0.19 0.015 165)
|
|
55
|
+
foreground: oklch(0.93 0.01 165)
|
|
56
|
+
card: oklch(0.22 0.015 165)
|
|
57
|
+
card-foreground: oklch(0.93 0.01 165)
|
|
58
|
+
popover: oklch(0.29 0.014 165)
|
|
59
|
+
popover-foreground: oklch(0.93 0.01 165)
|
|
60
|
+
primary: oklch(0.72 0.12 175)
|
|
61
|
+
primary-foreground: oklch(0.18 0.03 175)
|
|
62
|
+
secondary: oklch(0.27 0.014 165)
|
|
63
|
+
secondary-foreground: oklch(0.88 0.012 165)
|
|
64
|
+
muted: oklch(0.26 0.014 165)
|
|
65
|
+
muted-foreground: oklch(0.7 0.014 165)
|
|
66
|
+
accent: oklch(0.31 0.045 175)
|
|
67
|
+
accent-foreground: oklch(0.87 0.06 175)
|
|
68
|
+
destructive: oklch(0.63 0.185 25)
|
|
69
|
+
destructive-foreground: oklch(0.18 0.03 25)
|
|
70
|
+
success: oklch(0.71 0.13 150)
|
|
71
|
+
warning: oklch(0.78 0.12 80)
|
|
72
|
+
border: oklch(0.295 0.014 165)
|
|
73
|
+
input: oklch(0.295 0.014 165)
|
|
74
|
+
ring: oklch(0.72 0.12 175)
|
|
75
|
+
surface-raised: oklch(0.24 0.015 165)
|
|
76
|
+
surface-overlay: oklch(0.29 0.014 165)
|
|
77
|
+
chart-1: oklch(0.78 0.117 175)
|
|
78
|
+
chart-2: oklch(0.72 0.108 145)
|
|
79
|
+
chart-3: oklch(0.68 0.108 230)
|
|
80
|
+
chart-4: oklch(0.84 0.108 80)
|
|
81
|
+
chart-5: oklch(0.7 0.117 330)
|
|
82
|
+
sidebar: oklch(0.165 0.015 165)
|
|
83
|
+
sidebar-foreground: oklch(0.88 0.012 165)
|
|
84
|
+
sidebar-primary: oklch(0.72 0.12 175)
|
|
85
|
+
sidebar-primary-foreground: oklch(0.18 0.03 175)
|
|
86
|
+
sidebar-accent: oklch(0.235 0.03 175)
|
|
87
|
+
sidebar-accent-foreground: oklch(0.9 0.02 175)
|
|
88
|
+
sidebar-border: oklch(0.25 0.014 165)
|
|
89
|
+
sidebar-ring: oklch(0.72 0.12 175)
|
|
90
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: carbon-cyan-signal
|
|
3
|
+
class: a2
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "Distilled from IBM Carbon Design System (carbondesignsystem.com/elements/color) — hue-family + role-based theme structure"
|
|
6
|
+
license: open
|
|
7
|
+
feel: "enterprise cool gray with a cyan-blue primary — dense, data-heavy, built for four-theme scalability"
|
|
8
|
+
---
|
|
9
|
+
A cooler, slightly deeper-chroma neutral than Geist's, built around Carbon's
|
|
10
|
+
role-token habit (background/border/text as separate concerns) rather than a single
|
|
11
|
+
generated ramp. Fits enterprise, data-heavy surfaces. Mid neutrals carry 0.008–0.014
|
|
12
|
+
chroma toward hue 240 (cool cyan-gray); the dark theme is authored as a fixed-stop
|
|
13
|
+
surface ladder, hue held at 240.
|
|
14
|
+
|
|
15
|
+
```yaml values
|
|
16
|
+
light:
|
|
17
|
+
background: oklch(0.98 0.003 240)
|
|
18
|
+
foreground: oklch(0.2 0.01 240)
|
|
19
|
+
card: oklch(0.992 0.002 240)
|
|
20
|
+
card-foreground: oklch(0.2 0.01 240)
|
|
21
|
+
popover: oklch(0.997 0.002 240)
|
|
22
|
+
popover-foreground: oklch(0.2 0.01 240)
|
|
23
|
+
primary: oklch(0.55 0.15 210)
|
|
24
|
+
primary-foreground: oklch(0.18 0.03 210)
|
|
25
|
+
secondary: oklch(0.932 0.009 240)
|
|
26
|
+
secondary-foreground: oklch(0.3 0.015 240)
|
|
27
|
+
muted: oklch(0.942 0.008 240)
|
|
28
|
+
muted-foreground: oklch(0.45 0.015 240)
|
|
29
|
+
accent: oklch(0.945 0.045 210)
|
|
30
|
+
accent-foreground: oklch(0.32 0.1 210)
|
|
31
|
+
destructive: oklch(0.55 0.22 20)
|
|
32
|
+
destructive-foreground: oklch(0.985 0.008 20)
|
|
33
|
+
success: oklch(0.58 0.15 150)
|
|
34
|
+
warning: oklch(0.72 0.16 80)
|
|
35
|
+
border: oklch(0.892 0.01 240)
|
|
36
|
+
input: oklch(0.892 0.01 240)
|
|
37
|
+
ring: oklch(0.55 0.15 210)
|
|
38
|
+
surface-raised: oklch(0.986 0.003 240)
|
|
39
|
+
surface-overlay: oklch(0.997 0.002 240)
|
|
40
|
+
chart-1: oklch(0.55 0.15 210)
|
|
41
|
+
chart-2: oklch(0.55 0.14 260)
|
|
42
|
+
chart-3: oklch(0.6 0.11 170)
|
|
43
|
+
chart-4: oklch(0.58 0.14 320)
|
|
44
|
+
chart-5: oklch(0.72 0.13 80)
|
|
45
|
+
sidebar: oklch(0.964 0.006 240)
|
|
46
|
+
sidebar-foreground: oklch(0.3 0.011 240)
|
|
47
|
+
sidebar-primary: oklch(0.55 0.15 210)
|
|
48
|
+
sidebar-primary-foreground: oklch(0.18 0.03 210)
|
|
49
|
+
sidebar-accent: oklch(0.925 0.036 210)
|
|
50
|
+
sidebar-accent-foreground: oklch(0.3 0.09 210)
|
|
51
|
+
sidebar-border: oklch(0.88 0.007 240)
|
|
52
|
+
sidebar-ring: oklch(0.55 0.15 210)
|
|
53
|
+
dark:
|
|
54
|
+
background: oklch(0.17 0.01 240)
|
|
55
|
+
foreground: oklch(0.92 0.008 240)
|
|
56
|
+
card: oklch(0.2 0.01 240)
|
|
57
|
+
card-foreground: oklch(0.92 0.008 240)
|
|
58
|
+
popover: oklch(0.27 0.013 240)
|
|
59
|
+
popover-foreground: oklch(0.92 0.008 240)
|
|
60
|
+
primary: oklch(0.72 0.13 210)
|
|
61
|
+
primary-foreground: oklch(0.18 0.03 210)
|
|
62
|
+
secondary: oklch(0.25 0.014 240)
|
|
63
|
+
secondary-foreground: oklch(0.88 0.012 240)
|
|
64
|
+
muted: oklch(0.24 0.014 240)
|
|
65
|
+
muted-foreground: oklch(0.7 0.014 240)
|
|
66
|
+
accent: oklch(0.29 0.045 210)
|
|
67
|
+
accent-foreground: oklch(0.87 0.06 210)
|
|
68
|
+
destructive: oklch(0.62 0.205 20)
|
|
69
|
+
destructive-foreground: oklch(0.18 0.03 20)
|
|
70
|
+
success: oklch(0.64 0.14 150)
|
|
71
|
+
warning: oklch(0.74 0.15 80)
|
|
72
|
+
border: oklch(0.275 0.014 240)
|
|
73
|
+
input: oklch(0.275 0.014 240)
|
|
74
|
+
ring: oklch(0.72 0.13 210)
|
|
75
|
+
surface-raised: oklch(0.22 0.01 240)
|
|
76
|
+
surface-overlay: oklch(0.27 0.013 240)
|
|
77
|
+
chart-1: oklch(0.65 0.135 210)
|
|
78
|
+
chart-2: oklch(0.65 0.126 260)
|
|
79
|
+
chart-3: oklch(0.7 0.099 170)
|
|
80
|
+
chart-4: oklch(0.68 0.126 320)
|
|
81
|
+
chart-5: oklch(0.82 0.117 80)
|
|
82
|
+
sidebar: oklch(0.145 0.01 240)
|
|
83
|
+
sidebar-foreground: oklch(0.88 0.012 240)
|
|
84
|
+
sidebar-primary: oklch(0.72 0.13 210)
|
|
85
|
+
sidebar-primary-foreground: oklch(0.18 0.03 210)
|
|
86
|
+
sidebar-accent: oklch(0.215 0.03 210)
|
|
87
|
+
sidebar-accent-foreground: oklch(0.9 0.02 210)
|
|
88
|
+
sidebar-border: oklch(0.23 0.014 240)
|
|
89
|
+
sidebar-ring: oklch(0.72 0.13 210)
|
|
90
|
+
```
|