@nurix/etna 0.19.50 → 0.19.51
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/data/harness-index.json +1 -1
- package/data/harnesses/apollo/harness.json +2 -2
- package/data/harnesses/apollo/skills/design/SKILL.md +55 -29
- package/data/harnesses/apollo/skills/design/references/compose.md +8 -4
- package/data/harnesses/apollo/skills/design/references/content.md +5 -5
- package/data/harnesses/apollo/skills/design/references/existing-apps.md +1 -1
- package/data/harnesses/apollo/skills/design/references/intake.md +11 -7
- package/data/harnesses/apollo/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/apollo/skills/design/references/ship-gate.md +3 -3
- package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +26 -6
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/skills/design/SKILL.md +55 -29
- package/data/harnesses/code/skills/design/references/compose.md +8 -4
- package/data/harnesses/code/skills/design/references/content.md +5 -5
- package/data/harnesses/code/skills/design/references/existing-apps.md +1 -1
- package/data/harnesses/code/skills/design/references/intake.md +11 -7
- package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/code/skills/design/references/ship-gate.md +3 -3
- package/data/harnesses/code/skills/design/scripts/select-chart.mjs +26 -6
- package/package.json +2 -2
- package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +0 -38
- package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +0 -38
- package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +0 -33
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +0 -19
- package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +0 -19
- package/data/harnesses/apollo/skills/design/data/charts/census.csv +0 -58
- package/data/harnesses/apollo/skills/design/data/checklists/browse.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +0 -20
- package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/grid.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/queue.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +0 -21
- package/data/harnesses/apollo/skills/design/data/checklists/settings.md +0 -21
- package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +0 -68
- package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +0 -63
- package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +0 -60
- package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +0 -78
- package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +0 -62
- package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +0 -65
- package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +0 -91
- package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +0 -90
- package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +0 -89
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +0 -15
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +0 -87
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +0 -25
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +0 -15
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +0 -83
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +0 -25
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +0 -15
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +0 -89
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +0 -25
- package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +0 -20
- package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +0 -20
- package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +0 -17
- package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +0 -21
- package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +0 -17
- package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +0 -21
- package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +0 -18
- package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +0 -19
- package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +0 -20
- package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +0 -18
- package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +0 -16
- package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +0 -16
- package/data/harnesses/apollo/skills/design/data/iconography.md +0 -199
- package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +0 -18
- package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +0 -18
- package/data/harnesses/apollo/skills/design/data/tells.csv +0 -34
- package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +0 -17
- package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +0 -17
- package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +0 -29
- package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +0 -29
- package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +0 -179
- package/data/harnesses/apollo/skills/design/design-md/index.csv +0 -67
- package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +0 -207
- package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/apple.md +0 -206
- package/data/harnesses/apollo/skills/design/design-md/library/binance.md +0 -210
- package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +0 -210
- package/data/harnesses/apollo/skills/design/design-md/library/cal.md +0 -209
- package/data/harnesses/apollo/skills/design/design-md/library/clay.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/composio.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/expo.md +0 -200
- package/data/harnesses/apollo/skills/design/design-md/library/figma.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/framer.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +0 -205
- package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +0 -200
- package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/meta.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +0 -210
- package/data/harnesses/apollo/skills/design/design-md/library/miro.md +0 -209
- package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +0 -201
- package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +0 -201
- package/data/harnesses/apollo/skills/design/design-md/library/notion.md +0 -204
- package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +0 -215
- package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +0 -213
- package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +0 -216
- package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +0 -218
- package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +0 -214
- package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/resend.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +0 -203
- package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +0 -200
- package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +0 -201
- package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/slack.md +0 -202
- package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +0 -206
- package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +0 -206
- package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +0 -196
- package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +0 -196
- package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +0 -194
- package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +0 -193
- package/data/harnesses/apollo/skills/design/design-md/library/uber.md +0 -195
- package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +0 -195
- package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/warp.md +0 -196
- package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/wired.md +0 -197
- package/data/harnesses/apollo/skills/design/design-md/library/wise.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +0 -199
- package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +0 -198
- package/data/harnesses/apollo/skills/design/design-md/nurix.md +0 -214
- package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +0 -184
- package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +0 -216
- package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +0 -211
- package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +0 -212
- package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +0 -216
- package/data/harnesses/code/skills/design/data/blueprints/browse.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/creation-flow.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/dashboard.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/grid.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/queue.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/record-detail.md +0 -38
- package/data/harnesses/code/skills/design/data/blueprints/settings.md +0 -38
- package/data/harnesses/code/skills/design/data/chart-styling/Readme.md +0 -33
- package/data/harnesses/code/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/datadog-classic-six-aligned.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/econ-red-rule-horizontal.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/material-rounded-explicit-label.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/plot-currentcolor-inherit.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/saas-gradient-glow-area.md +0 -19
- package/data/harnesses/code/skills/design/data/chart-styling/shadcn-composable-css-vars.md +0 -19
- package/data/harnesses/code/skills/design/data/charts/census.csv +0 -58
- package/data/harnesses/code/skills/design/data/checklists/browse.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/creation-flow.md +0 -20
- package/data/harnesses/code/skills/design/data/checklists/dashboard.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/grid.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/queue.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/record-detail.md +0 -21
- package/data/harnesses/code/skills/design/data/checklists/settings.md +0 -21
- package/data/harnesses/code/skills/design/data/chrome/board-column.md +0 -68
- package/data/harnesses/code/skills/design/data/chrome/data-table.md +0 -63
- package/data/harnesses/code/skills/design/data/chrome/side-panel.md +0 -60
- package/data/harnesses/code/skills/design/data/chrome/sidebar.md +0 -78
- package/data/harnesses/code/skills/design/data/chrome/stat-cards.md +0 -62
- package/data/harnesses/code/skills/design/data/chrome/topbar.md +0 -65
- package/data/harnesses/code/skills/design/data/color/accent-presets.md +0 -90
- package/data/harnesses/code/skills/design/data/color/aesop-earth-mute.md +0 -91
- package/data/harnesses/code/skills/design/data/color/arc-peach-play.md +0 -90
- package/data/harnesses/code/skills/design/data/color/attio-hunter-teal.md +0 -90
- package/data/harnesses/code/skills/design/data/color/carbon-cyan-signal.md +0 -90
- package/data/harnesses/code/skills/design/data/color/clay-parchment.md +0 -90
- package/data/harnesses/code/skills/design/data/color/duolingo-feather.md +0 -90
- package/data/harnesses/code/skills/design/data/color/geist-mono-signal.md +0 -90
- package/data/harnesses/code/skills/design/data/color/linear-graphite-violet.md +0 -90
- package/data/harnesses/code/skills/design/data/color/mercury-onyx-cobalt.md +0 -90
- package/data/harnesses/code/skills/design/data/color/notion-paper-ink.md +0 -90
- package/data/harnesses/code/skills/design/data/color/radix-slate-iris.md +0 -90
- package/data/harnesses/code/skills/design/data/color/raycast-void-spectrum.md +0 -90
- package/data/harnesses/code/skills/design/data/color/spectrum-celery-fuchsia.md +0 -90
- package/data/harnesses/code/skills/design/data/color/stripe-blurple-ruby.md +0 -90
- package/data/harnesses/code/skills/design/data/color/superhuman-cod-picton.md +0 -89
- package/data/harnesses/code/skills/design/data/corpora/operations-review/companies.csv +0 -15
- package/data/harnesses/code/skills/design/data/corpora/operations-review/corpus.md +0 -87
- package/data/harnesses/code/skills/design/data/corpora/operations-review/people.csv +0 -25
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/companies.csv +0 -15
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/corpus.md +0 -83
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/people.csv +0 -25
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/companies.csv +0 -15
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/corpus.md +0 -89
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/people.csv +0 -25
- package/data/harnesses/code/skills/design/data/elevation/ant-design-directional-shadow.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/apple-liquid-glass-material.md +0 -18
- package/data/harnesses/code/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +0 -20
- package/data/harnesses/code/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +0 -20
- package/data/harnesses/code/skills/design/data/elevation/github-primer-sparing-shadow.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/ibm-carbon-layer-and-border.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/linear-dark-surface-ladder.md +0 -17
- package/data/harnesses/code/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/material-3-tonal-elevation.md +0 -21
- package/data/harnesses/code/skills/design/data/elevation/neobrutalist-hard-offset.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +0 -18
- package/data/harnesses/code/skills/design/data/elevation/notion-warm-minimal-hairline.md +0 -17
- package/data/harnesses/code/skills/design/data/elevation/polaris-elevation-inset-bevel.md +0 -21
- package/data/harnesses/code/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/shadcn-neutral-derived-radius.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +0 -18
- package/data/harnesses/code/skills/design/data/elevation/tailwind-default-utility-scale.md +0 -19
- package/data/harnesses/code/skills/design/data/elevation/vercel-geist-shadow-as-border.md +0 -20
- package/data/harnesses/code/skills/design/data/gradients/amber-attention-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/cloud-shadow-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/confident-lavender-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/ember-ship-flare.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/full-metal-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/indigo-ruby-cta-band.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/linear-graphite-wash.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/marble-quartz-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/midnight-aurora-panel.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/neutral-volume-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/revenue-uptrend-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/risk-decline-fill.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/signal-blue-develop.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/slate-mist-wash.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/stripe-atmosphere-mesh.md +0 -18
- package/data/harnesses/code/skills/design/data/gradients/teal-signal-accent.md +0 -16
- package/data/harnesses/code/skills/design/data/gradients/violet-magenta-promo.md +0 -16
- package/data/harnesses/code/skills/design/data/iconography.md +0 -199
- package/data/harnesses/code/skills/design/data/motion/accordion-expand.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/destructive-hold-confirm.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/drag-dismiss-momentum.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/empty-state-arrive.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/hover-lift.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/modal-center-arrive.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/number-ticker-roll.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/onboarding-bounce.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/panel-slide.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/press-feedback.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/progress-linear-loop.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/route-crossfade.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/rubber-band-overscroll.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/skeleton-shimmer.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/stagger-arrive.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/toast-enter-stack.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/tooltip-chain-instant.md +0 -18
- package/data/harnesses/code/skills/design/data/motion/trigger-anchored-reveal.md +0 -18
- package/data/harnesses/code/skills/design/data/tells.csv +0 -34
- package/data/harnesses/code/skills/design/data/typography/anton-work-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/archivo-black-archivo.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/bitter-karla.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/dm-serif-dm-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/fraunces-inter.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/geist-geist-mono.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/hubot-sans-mona-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/instrument-serif-instrument-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/inter-operator-single-family.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/libre-baskerville-libre-franklin.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/newsreader-inter.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/playfair-display-source-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/public-sans-operator-single-family.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/sohne-inter-fintech.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/source-serif-source-sans.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +0 -17
- package/data/harnesses/code/skills/design/data/typography/spectral-manrope.md +0 -17
- package/data/harnesses/code/skills/design/data/voices/bright-collaborator.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/direct-operator.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/earnest-helper.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/editorial-composed.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/quiet-concierge.md +0 -29
- package/data/harnesses/code/skills/design/data/voices/warm-guide.md +0 -29
- package/data/harnesses/code/skills/design/design-md/SCHEMA.md +0 -179
- package/data/harnesses/code/skills/design/design-md/index.csv +0 -67
- package/data/harnesses/code/skills/design/design-md/library/airbnb.md +0 -207
- package/data/harnesses/code/skills/design/design-md/library/airtable.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/anthropic-claude.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/apple.md +0 -206
- package/data/harnesses/code/skills/design/design-md/library/binance.md +0 -210
- package/data/harnesses/code/skills/design/design-md/library/bmw.md +0 -210
- package/data/harnesses/code/skills/design/design-md/library/cal.md +0 -209
- package/data/harnesses/code/skills/design/design-md/library/clay.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/clickhouse.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/cohere.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/coinbase.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/composio.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/cursor.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/elevenlabs.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/expo.md +0 -200
- package/data/harnesses/code/skills/design/design-md/library/figma.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/framer.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/hashicorp.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/ibm.md +0 -205
- package/data/harnesses/code/skills/design/design-md/library/intercom.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/kraken.md +0 -200
- package/data/harnesses/code/skills/design/design-md/library/linear-app.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/lovable.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/meta.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/minimax.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/mintlify.md +0 -210
- package/data/harnesses/code/skills/design/design-md/library/miro.md +0 -209
- package/data/harnesses/code/skills/design/design-md/library/mistral-ai.md +0 -201
- package/data/harnesses/code/skills/design/design-md/library/mongodb.md +0 -201
- package/data/harnesses/code/skills/design/design-md/library/notion.md +0 -204
- package/data/harnesses/code/skills/design/design-md/library/nvidia.md +0 -215
- package/data/harnesses/code/skills/design/design-md/library/ollama.md +0 -213
- package/data/harnesses/code/skills/design/design-md/library/opencode-ai.md +0 -216
- package/data/harnesses/code/skills/design/design-md/library/posthog.md +0 -218
- package/data/harnesses/code/skills/design/design-md/library/raycast.md +0 -214
- package/data/harnesses/code/skills/design/design-md/library/replicate.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/resend.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/revolut.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/runwayml.md +0 -203
- package/data/harnesses/code/skills/design/design-md/library/sanity.md +0 -200
- package/data/harnesses/code/skills/design/design-md/library/sentry.md +0 -201
- package/data/harnesses/code/skills/design/design-md/library/shopify.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/slack.md +0 -202
- package/data/harnesses/code/skills/design/design-md/library/spacex.md +0 -206
- package/data/harnesses/code/skills/design/design-md/library/spotify.md +0 -206
- package/data/harnesses/code/skills/design/design-md/library/stripe.md +0 -196
- package/data/harnesses/code/skills/design/design-md/library/supabase.md +0 -196
- package/data/harnesses/code/skills/design/design-md/library/superhuman.md +0 -194
- package/data/harnesses/code/skills/design/design-md/library/tesla.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/theverge.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/together-ai.md +0 -193
- package/data/harnesses/code/skills/design/design-md/library/uber.md +0 -195
- package/data/harnesses/code/skills/design/design-md/library/vercel.md +0 -195
- package/data/harnesses/code/skills/design/design-md/library/voltagent.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/warp.md +0 -196
- package/data/harnesses/code/skills/design/design-md/library/webflow.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/wired.md +0 -197
- package/data/harnesses/code/skills/design/design-md/library/wise.md +0 -198
- package/data/harnesses/code/skills/design/design-md/library/x-ai.md +0 -199
- package/data/harnesses/code/skills/design/design-md/library/zapier.md +0 -198
- package/data/harnesses/code/skills/design/design-md/nurix.md +0 -214
- package/data/harnesses/code/skills/design/design-md/variants/editorial-luxury.md +0 -184
- package/data/harnesses/code/skills/design/design-md/variants/expressive-saas.md +0 -216
- package/data/harnesses/code/skills/design/design-md/variants/quiet-premium.md +0 -211
- package/data/harnesses/code/skills/design/design-md/variants/terse-dense-operator.md +0 -212
- package/data/harnesses/code/skills/design/design-md/variants/warm-approachable.md +0 -216
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: sidebar
|
|
3
|
-
class: d2
|
|
4
|
-
sourced: 2026-07-12
|
|
5
|
-
source: "@nurix/components Sidebar + opinionated layer (Brand, Switcher, ItemGroup, UserMenu, Callout, FileTree, SidebarCommandTrigger) — ~/dev/components"
|
|
6
|
-
license: open
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Chrome recipe — sidebar
|
|
10
|
-
|
|
11
|
-
The complete app-nav sidebar: brand block, searchable sections, badged items, promo slot, user footer, icon-collapse rail. One import path (`@nurix/components/sidebar`) carries both the unstyled shell primitives and the opinionated content layer.
|
|
12
|
-
|
|
13
|
-
## Anatomy
|
|
14
|
-
|
|
15
|
-
**Shell** (state + regions):
|
|
16
|
-
|
|
17
|
-
| Slot | Library part | Spec |
|
|
18
|
-
| --- | --- | --- |
|
|
19
|
-
| Provider | `SidebarProvider` | Owns open/collapsed state; persists it in a cookie (`sidebar_state`, 7 days); registers the global toggle shortcut. |
|
|
20
|
-
| Frame | `Sidebar` | `collapsible: "icon" \| "offcanvas" \| "none"`. Widths: 16rem expanded, 3rem icon rail, 18rem as a mobile drawer below the `md` breakpoint (mobile renders as an overlay sheet, not an inline column). |
|
|
21
|
-
| Header | `SidebarHeader` | Pinned top region — hosts the brand block or switcher, and the search trigger. |
|
|
22
|
-
| Content | `SidebarContent` | The scrollable middle — one or more item groups. |
|
|
23
|
-
| Footer | `SidebarFooter` | Pinned bottom region — promo slot and/or user footer. |
|
|
24
|
-
| Rail | `SidebarRail` | Thin edge hit-area that toggles collapse on click. |
|
|
25
|
-
| Inset | `SidebarInset` | The main-content wrapper beside the sidebar. |
|
|
26
|
-
| Trigger | `SidebarTrigger` | Icon button (lives in the topbar) toggling the same state. |
|
|
27
|
-
|
|
28
|
-
**Content layer** (each grounded in the shipped props):
|
|
29
|
-
|
|
30
|
-
- **Brand block** — `Brand { logo, name, caption?, href? }`: a 32px logo tile filled with `sidebar-primary` / `sidebar-primary-foreground`, name (medium weight) over an optional caption. Collapses to logo-only in icon mode.
|
|
31
|
-
- **Switcher** — `Switcher { render: "simple" | "rich", drop: "bottom" | "right", options, activeId, onSelect, addAction?, menuLabel? }`: header dropdown for team/workspace/version. Options carry `{ id, label, sublabel?, icon?, shortcut? }`; an optional add-action row sits under a separator.
|
|
32
|
-
- **Search trigger** — `SidebarCommandTrigger { placeholder, shortcut }`: a ⌘K search chip pinned to 32px height; in icon mode it swaps to a matched-height icon button with a tooltip, so the rail never shifts on collapse.
|
|
33
|
-
- **Sections** — `ItemGroup { label?, render: "list" | "tree" | "rich", collapsible?, defaultOpen?, showMore?, items, itemsCollapsible?, compact?, collapsedLabel: "hide" | "divider" }`. `list` = flat rows with optional inline collapsible submenu; `tree` = recursive chevron tree; `rich` = two-line rows (label + sublabel + trailing hint). `collapsedLabel: "divider"` keeps a 32px hairline footprint in icon mode so groups stay separated without rail shift. `compact` halves group padding and tightens item gap.
|
|
34
|
-
- **Item** — `{ id, label, icon?, badge?, state?, emoji?, avatar?, sublabel?, trailing?, isActive?, href?, onClick?, children? }`: one leading decoration (icon, emoji, or avatar), the label, and a trailing badge/state pill rendered outside the button (`SidebarMenuBadge`). `children` makes it a branch.
|
|
35
|
-
- **Promo slot** — `Callout { title, description?, action?, input?: { kind: "email" | "text", placeholder?, onSubmit? } }`: a bordered card on a low-alpha `sidebar-accent` wash with title, description, optional single input + full-width action button. Hidden entirely in icon mode.
|
|
36
|
-
- **User footer** — `UserMenu { user: { name, email, avatar? }, menuItems? }`: avatar (initials fallback) + name/email + up-down chevron; opens a dropdown (right of the rail on desktop, below on mobile) with an identity header and action items (`{ id, label, icon?, shortcut?, destructive? }`).
|
|
37
|
-
|
|
38
|
-
## The eight states
|
|
39
|
-
|
|
40
|
-
| State | Spec | Token roles |
|
|
41
|
-
| --- | --- | --- |
|
|
42
|
-
| default | Rows at rest: transparent fill, quiet text, 16px icons. | `sidebar` (surface), `sidebar-foreground` |
|
|
43
|
-
| hover | Row fills; text sharpens. Group labels with collapse affordance show a pointer + chevron. | `sidebar-accent`, `sidebar-accent-foreground` |
|
|
44
|
-
| focus | Focus-visible ring on the focused row/control; same fill as hover. Never suppressed. | `sidebar-ring` |
|
|
45
|
-
| active | The current destination: persistent fill + medium weight, exposed via `data-active` / `aria-current`. Open branch parents show a rotated chevron; an open dropdown trigger holds the accent fill (`data-state="open"`). | `sidebar-accent`, `sidebar-accent-foreground` |
|
|
46
|
-
| disabled | ~50% opacity, no pointer events, removed from tab order; label still legible. | `sidebar-foreground` at reduced alpha |
|
|
47
|
-
| loading | `SidebarMenuSkeleton` rows — icon square + text bar shimmer — while nav data resolves; header and footer regions render immediately so the frame never jumps. | `muted` (skeleton), `sidebar-border` |
|
|
48
|
-
| error / empty | A group with nothing to show renders a one-line hint in muted text or is omitted; the sidebar itself carries no error surface — failures belong to content. Attention counts ride item badges. | `muted-foreground`; `destructive` on alert badges |
|
|
49
|
-
| success | No persistent success state; confirmation is expressed as badge-count change or a status-role pill on the relevant item. | status roles via badge |
|
|
50
|
-
|
|
51
|
-
## Keyboard behavior
|
|
52
|
-
|
|
53
|
-
- **Cmd/Ctrl+B** toggles collapse globally (registered by `SidebarProvider`); `SidebarTrigger` and `SidebarRail` are the pointer equivalents.
|
|
54
|
-
- **Tab order**: header (brand/switcher → search trigger) → groups top-to-bottom, items in visual order → footer user menu. Items are real links or buttons — **Enter** activates, **Space** activates buttons.
|
|
55
|
-
- **Branches**: Enter/Space on a collapsible parent toggles it; the chevron rotation mirrors `data-state`.
|
|
56
|
-
- **Dropdowns** (Switcher, UserMenu): Enter/Space opens; arrow keys move through options; Enter selects; **Escape** closes and returns focus to the trigger.
|
|
57
|
-
- **cmdk path**: the search chip opens the command palette (⌘K); deep or infrequent destinations live in the palette — the sidebar carries the trigger, not a second search UI.
|
|
58
|
-
- **Icon mode**: focus order is unchanged; each item surfaces its label as a tooltip on focus/hover so keyboard users are never navigating unlabeled glyphs.
|
|
59
|
-
|
|
60
|
-
## Token reach
|
|
61
|
-
|
|
62
|
-
The sidebar consumes the eight dedicated sidebar roles — the active package's emission must cover all eight in both themes:
|
|
63
|
-
|
|
64
|
-
- `sidebar` — the rail/panel surface (distinct from content `background`).
|
|
65
|
-
- `sidebar-foreground` — item and label text.
|
|
66
|
-
- `sidebar-primary` / `sidebar-primary-foreground` — the brand logo tile and any primary emphasis.
|
|
67
|
-
- `sidebar-accent` / `sidebar-accent-foreground` — hover, active, and open-menu fills.
|
|
68
|
-
- `sidebar-border` — hairlines: the panel edge, icon-mode group dividers.
|
|
69
|
-
- `sidebar-ring` — focus rings.
|
|
70
|
-
|
|
71
|
-
Secondary reach: the Callout uses `sidebar-border` + a low-alpha `sidebar-accent` wash + `muted-foreground`; dropdown menus render on `popover` / `popover-foreground`; destructive menu items use `destructive`; skeletons use `muted`. No color literal appears anywhere in the recipe — badge and state-pill colors resolve to status roles.
|
|
72
|
-
|
|
73
|
-
## When to use / composition notes
|
|
74
|
-
|
|
75
|
-
The sidebar is the primary navigation for any operator shell with more than a handful of destinations; icon-collapse earns its place on dense screens where horizontal space is the scarce resource, and the cookie-persisted state means the user's choice survives reloads. Canonical composition: `Brand` **or** `Switcher` in the header (both only when the product truly has workspace switching), the search trigger under it, one to three `ItemGroup`s in the content (label them once there are two), and the footer stacking `Callout` (optional, promotional, dismissible by omission) above `UserMenu`. Icons on every item are a positive obligation — a bare, icon-less nav is a known judge complaint. Density: `compact` on data-heavy operator tools, default elsewhere.
|
|
76
|
-
|
|
77
|
-
- **`primitives: nurix`** — `import { SidebarProvider, Sidebar, SidebarHeader, SidebarContent, SidebarFooter, SidebarRail, SidebarInset, SidebarTrigger, Brand, Switcher, ItemGroup, UserMenu, Callout, SidebarCommandTrigger } from "@nurix/components/sidebar";`
|
|
78
|
-
- **`primitives: native`** — this recipe is the build spec: a fixed aside (256px expanded / 48px icon rail) with pinned header/footer and an independently scrolling middle, collapse state persisted (cookie or localStorage), a global Cmd/Ctrl+B toggle, an overlay drawer below 768px, tooltips on rail items, and the state/keyboard/token contracts above implemented with the incumbent stack's own nav primitives.
|
|
@@ -1,62 +0,0 @@
|
|
|
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`.
|
|
@@ -1,65 +0,0 @@
|
|
|
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.
|
|
@@ -1,90 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,91 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,90 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,90 +0,0 @@
|
|
|
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
|
-
```
|