@nurix/etna 0.19.11 → 0.19.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/agents/maintenance.md +1 -1
- package/data/harnesses/code/harness.json +1 -1
- package/data/harnesses/code/rules/frontend.md +5 -5
- package/data/harnesses/code/skills/design/SKILL.md +70 -50
- package/data/harnesses/code/skills/design/components/charts.md +76 -0
- package/data/harnesses/code/skills/design/components/collections.md +132 -0
- package/data/harnesses/code/skills/design/components/feedback.md +47 -0
- package/data/harnesses/code/skills/design/components/hooks.md +35 -0
- package/data/harnesses/code/skills/design/components/index.md +143 -0
- package/data/harnesses/code/skills/design/components/inputs.md +327 -0
- package/data/harnesses/code/skills/design/components/layout.md +52 -0
- package/data/harnesses/code/skills/design/components/media.md +66 -0
- package/data/harnesses/code/skills/design/components/motion.md +82 -0
- package/data/harnesses/code/skills/design/components/navigation.md +29 -0
- package/data/harnesses/code/skills/design/components/overlays.md +72 -0
- package/data/harnesses/code/skills/design/components/setup.md +40 -0
- package/data/harnesses/code/skills/design/components/typography.md +46 -0
- package/data/harnesses/code/skills/design/components/utils.md +37 -0
- package/data/harnesses/code/skills/design/data/blueprints/browse.md +38 -0
- package/data/harnesses/code/skills/design/data/blueprints/creation-flow.md +38 -0
- package/data/harnesses/code/skills/design/data/blueprints/dashboard.md +38 -0
- package/data/harnesses/code/skills/design/data/blueprints/grid.md +38 -0
- package/data/harnesses/code/skills/design/data/blueprints/queue.md +38 -0
- package/data/harnesses/code/skills/design/data/blueprints/record-detail.md +38 -0
- package/data/harnesses/code/skills/design/data/blueprints/settings.md +38 -0
- package/data/harnesses/code/skills/design/data/chart-styling/Readme.md +33 -0
- package/data/harnesses/code/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
- package/data/harnesses/code/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
- package/data/harnesses/code/skills/design/data/charts/census.csv +58 -0
- package/data/harnesses/code/skills/design/data/checklists/browse.md +21 -0
- package/data/harnesses/code/skills/design/data/checklists/creation-flow.md +20 -0
- package/data/harnesses/code/skills/design/data/checklists/dashboard.md +21 -0
- package/data/harnesses/code/skills/design/data/checklists/grid.md +21 -0
- package/data/harnesses/code/skills/design/data/checklists/queue.md +21 -0
- package/data/harnesses/code/skills/design/data/checklists/record-detail.md +21 -0
- package/data/harnesses/code/skills/design/data/checklists/settings.md +21 -0
- package/data/harnesses/code/skills/design/data/chrome/board-column.md +68 -0
- package/data/harnesses/code/skills/design/data/chrome/data-table.md +63 -0
- package/data/harnesses/code/skills/design/data/chrome/side-panel.md +60 -0
- package/data/harnesses/code/skills/design/data/chrome/sidebar.md +78 -0
- package/data/harnesses/code/skills/design/data/chrome/stat-cards.md +62 -0
- package/data/harnesses/code/skills/design/data/chrome/topbar.md +65 -0
- package/data/harnesses/code/skills/design/data/color/accent-presets.md +90 -0
- package/data/harnesses/code/skills/design/data/color/aesop-earth-mute.md +91 -0
- package/data/harnesses/code/skills/design/data/color/arc-peach-play.md +90 -0
- package/data/harnesses/code/skills/design/data/color/attio-hunter-teal.md +90 -0
- package/data/harnesses/code/skills/design/data/color/carbon-cyan-signal.md +90 -0
- package/data/harnesses/code/skills/design/data/color/clay-parchment.md +90 -0
- package/data/harnesses/code/skills/design/data/color/duolingo-feather.md +90 -0
- package/data/harnesses/code/skills/design/data/color/geist-mono-signal.md +90 -0
- package/data/harnesses/code/skills/design/data/color/linear-graphite-violet.md +90 -0
- package/data/harnesses/code/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
- package/data/harnesses/code/skills/design/data/color/notion-paper-ink.md +90 -0
- package/data/harnesses/code/skills/design/data/color/radix-slate-iris.md +90 -0
- package/data/harnesses/code/skills/design/data/color/raycast-void-spectrum.md +90 -0
- package/data/harnesses/code/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
- package/data/harnesses/code/skills/design/data/color/stripe-blurple-ruby.md +90 -0
- package/data/harnesses/code/skills/design/data/color/superhuman-cod-picton.md +89 -0
- package/data/harnesses/code/skills/design/data/corpora/operations-review/companies.csv +15 -0
- package/data/harnesses/code/skills/design/data/corpora/operations-review/corpus.md +87 -0
- package/data/harnesses/code/skills/design/data/corpora/operations-review/people.csv +25 -0
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
- package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
- package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
- package/data/harnesses/code/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
- package/data/harnesses/code/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
- package/data/harnesses/code/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
- package/data/harnesses/code/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
- package/data/harnesses/code/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
- package/data/harnesses/code/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
- package/data/harnesses/code/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
- package/data/harnesses/code/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
- package/data/harnesses/code/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
- package/data/harnesses/code/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
- package/data/harnesses/code/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
- package/data/harnesses/code/skills/design/data/gradients/amber-attention-fill.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/confident-lavender-wash.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/ember-ship-flare.md +18 -0
- package/data/harnesses/code/skills/design/data/gradients/full-metal-wash.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
- package/data/harnesses/code/skills/design/data/gradients/linear-graphite-wash.md +18 -0
- package/data/harnesses/code/skills/design/data/gradients/marble-quartz-wash.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/neutral-volume-fill.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/risk-decline-fill.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/signal-blue-develop.md +18 -0
- package/data/harnesses/code/skills/design/data/gradients/slate-mist-wash.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
- package/data/harnesses/code/skills/design/data/gradients/teal-signal-accent.md +16 -0
- package/data/harnesses/code/skills/design/data/gradients/violet-magenta-promo.md +16 -0
- package/data/harnesses/code/skills/design/data/iconography.md +199 -0
- package/data/harnesses/code/skills/design/data/motion/accordion-expand.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/destructive-hold-confirm.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/empty-state-arrive.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/hover-lift.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/modal-center-arrive.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/number-ticker-roll.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/onboarding-bounce.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/panel-slide.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/press-feedback.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/progress-linear-loop.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/route-crossfade.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/rubber-band-overscroll.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/skeleton-shimmer.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/stagger-arrive.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/toast-enter-stack.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/tooltip-chain-instant.md +18 -0
- package/data/harnesses/code/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
- package/data/harnesses/code/skills/design/data/tells.csv +34 -0
- package/data/harnesses/code/skills/design/data/typography/anton-work-sans.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/archivo-black-archivo.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/bitter-karla.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/fraunces-inter.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/geist-geist-mono.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/inter-operator-single-family.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/newsreader-inter.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/playfair-display-source-sans.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/sohne-inter-fintech.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/source-serif-source-sans.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
- package/data/harnesses/code/skills/design/data/typography/spectral-manrope.md +17 -0
- package/data/harnesses/code/skills/design/data/voices/bright-collaborator.md +29 -0
- package/data/harnesses/code/skills/design/data/voices/direct-operator.md +29 -0
- package/data/harnesses/code/skills/design/data/voices/earnest-helper.md +29 -0
- package/data/harnesses/code/skills/design/data/voices/editorial-composed.md +29 -0
- package/data/harnesses/code/skills/design/data/voices/quiet-concierge.md +29 -0
- package/data/harnesses/code/skills/design/data/voices/warm-guide.md +29 -0
- package/data/harnesses/code/skills/design/design-md/SCHEMA.md +179 -0
- package/data/harnesses/code/skills/design/design-md/index.csv +67 -0
- package/data/harnesses/code/skills/design/design-md/library/airbnb.md +207 -0
- package/data/harnesses/code/skills/design/design-md/library/airtable.md +205 -0
- package/data/harnesses/code/skills/design/design-md/library/anthropic-claude.md +203 -0
- package/data/harnesses/code/skills/design/design-md/library/apple.md +206 -0
- package/data/harnesses/code/skills/design/design-md/library/binance.md +210 -0
- package/data/harnesses/code/skills/design/design-md/library/bmw.md +210 -0
- package/data/harnesses/code/skills/design/design-md/library/cal.md +209 -0
- package/data/harnesses/code/skills/design/design-md/library/clay.md +204 -0
- package/data/harnesses/code/skills/design/design-md/library/clickhouse.md +205 -0
- package/data/harnesses/code/skills/design/design-md/library/cohere.md +205 -0
- package/data/harnesses/code/skills/design/design-md/library/coinbase.md +198 -0
- package/data/harnesses/code/skills/design/design-md/library/composio.md +198 -0
- package/data/harnesses/code/skills/design/design-md/library/cursor.md +197 -0
- package/data/harnesses/code/skills/design/design-md/library/elevenlabs.md +199 -0
- package/data/harnesses/code/skills/design/design-md/library/expo.md +200 -0
- package/data/harnesses/code/skills/design/design-md/library/figma.md +199 -0
- package/data/harnesses/code/skills/design/design-md/library/framer.md +202 -0
- package/data/harnesses/code/skills/design/design-md/library/hashicorp.md +205 -0
- package/data/harnesses/code/skills/design/design-md/library/ibm.md +205 -0
- package/data/harnesses/code/skills/design/design-md/library/intercom.md +204 -0
- package/data/harnesses/code/skills/design/design-md/library/kraken.md +200 -0
- package/data/harnesses/code/skills/design/design-md/library/linear-app.md +198 -0
- package/data/harnesses/code/skills/design/design-md/library/lovable.md +199 -0
- package/data/harnesses/code/skills/design/design-md/library/meta.md +204 -0
- package/data/harnesses/code/skills/design/design-md/library/minimax.md +204 -0
- package/data/harnesses/code/skills/design/design-md/library/mintlify.md +210 -0
- package/data/harnesses/code/skills/design/design-md/library/miro.md +209 -0
- package/data/harnesses/code/skills/design/design-md/library/mistral-ai.md +201 -0
- package/data/harnesses/code/skills/design/design-md/library/mongodb.md +201 -0
- package/data/harnesses/code/skills/design/design-md/library/notion.md +204 -0
- package/data/harnesses/code/skills/design/design-md/library/nvidia.md +215 -0
- package/data/harnesses/code/skills/design/design-md/library/ollama.md +213 -0
- package/data/harnesses/code/skills/design/design-md/library/opencode-ai.md +216 -0
- package/data/harnesses/code/skills/design/design-md/library/posthog.md +218 -0
- package/data/harnesses/code/skills/design/design-md/library/raycast.md +214 -0
- package/data/harnesses/code/skills/design/design-md/library/replicate.md +202 -0
- package/data/harnesses/code/skills/design/design-md/library/resend.md +203 -0
- package/data/harnesses/code/skills/design/design-md/library/revolut.md +203 -0
- package/data/harnesses/code/skills/design/design-md/library/runwayml.md +203 -0
- package/data/harnesses/code/skills/design/design-md/library/sanity.md +200 -0
- package/data/harnesses/code/skills/design/design-md/library/sentry.md +201 -0
- package/data/harnesses/code/skills/design/design-md/library/shopify.md +202 -0
- package/data/harnesses/code/skills/design/design-md/library/slack.md +202 -0
- package/data/harnesses/code/skills/design/design-md/library/spacex.md +206 -0
- package/data/harnesses/code/skills/design/design-md/library/spotify.md +206 -0
- package/data/harnesses/code/skills/design/design-md/library/stripe.md +196 -0
- package/data/harnesses/code/skills/design/design-md/library/supabase.md +196 -0
- package/data/harnesses/code/skills/design/design-md/library/superhuman.md +194 -0
- package/data/harnesses/code/skills/design/design-md/library/tesla.md +198 -0
- package/data/harnesses/code/skills/design/design-md/library/theverge.md +199 -0
- package/data/harnesses/code/skills/design/design-md/library/together-ai.md +193 -0
- package/data/harnesses/code/skills/design/design-md/library/uber.md +195 -0
- package/data/harnesses/code/skills/design/design-md/library/vercel.md +195 -0
- package/data/harnesses/code/skills/design/design-md/library/voltagent.md +197 -0
- package/data/harnesses/code/skills/design/design-md/library/warp.md +196 -0
- package/data/harnesses/code/skills/design/design-md/library/webflow.md +197 -0
- package/data/harnesses/code/skills/design/design-md/library/wired.md +197 -0
- package/data/harnesses/code/skills/design/design-md/library/wise.md +198 -0
- package/data/harnesses/code/skills/design/design-md/library/x-ai.md +199 -0
- package/data/harnesses/code/skills/design/design-md/library/zapier.md +198 -0
- package/data/harnesses/code/skills/design/design-md/nurix.md +214 -0
- package/data/harnesses/code/skills/design/design-md/variants/editorial-luxury.md +184 -0
- package/data/harnesses/code/skills/design/design-md/variants/expressive-saas.md +216 -0
- package/data/harnesses/code/skills/design/design-md/variants/quiet-premium.md +211 -0
- package/data/harnesses/code/skills/design/design-md/variants/terse-dense-operator.md +212 -0
- package/data/harnesses/code/skills/design/design-md/variants/warm-approachable.md +216 -0
- package/data/harnesses/code/skills/design/references/compose.md +23 -0
- package/data/harnesses/code/skills/design/references/content.md +28 -0
- package/data/harnesses/code/skills/design/references/emission.md +21 -0
- package/data/harnesses/code/skills/design/references/existing-apps.md +27 -0
- package/data/harnesses/code/skills/design/references/intake.md +36 -0
- package/data/harnesses/code/skills/design/references/object-pass.md +24 -0
- package/data/harnesses/code/skills/design/references/ship-gate.md +29 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +195 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +49 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +44 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/creation-paths.md +46 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +42 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +42 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +46 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/page-archetype.md +48 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +42 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +46 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/state-matrix.md +41 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/table-mechanics.md +48 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/verbs.md +45 -0
- package/data/harnesses/code/skills/design/references/ux-patterns/viewer-context.md +40 -0
- package/data/harnesses/code/skills/design/scripts/README-validator.md +27 -0
- package/data/harnesses/code/skills/design/scripts/select-chart.mjs +596 -0
- package/data/harnesses/code/skills/design/scripts/validate-design-md.mjs +1198 -0
- package/data/harnesses/discussion/agents/discussion-baseline.md +1 -1
- package/data/harnesses/discussion/harness.json +1 -1
- package/data/harnesses/etna/agents/maintenance.md +1 -1
- package/data/harnesses/etna/harness.json +1 -1
- package/data/harnesses/hr/CLAUDE.md +1 -1
- package/data/harnesses/hr/harness.json +1 -1
- package/package.json +1 -1
- package/data/harnesses/code/skills/design/data/catalog/rules.csv +0 -137
- package/data/harnesses/code/skills/design/data/combinations/Readme.md +0 -33
- package/data/harnesses/code/skills/design/data/combinations/accent-presets.md +0 -113
- package/data/harnesses/code/skills/design/data/combinations/charts.csv +0 -33
- package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +0 -448
- package/data/harnesses/code/skills/design/data/combinations/icons.csv +0 -157
- package/data/harnesses/code/skills/design/data/combinations/landing.csv +0 -38
- package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +0 -2001
- package/data/harnesses/code/skills/design/data/combinations/manifest.json +0 -330
- package/data/harnesses/code/skills/design/data/combinations/motion.csv +0 -10
- package/data/harnesses/code/skills/design/data/combinations/palettes.csv +0 -92
- package/data/harnesses/code/skills/design/data/combinations/product-router.csv +0 -80
- package/data/harnesses/code/skills/design/data/combinations/styles.csv +0 -67
- package/data/harnesses/code/skills/design/data/combinations/typography.csv +0 -64
- package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +0 -106
- package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +0 -154
- package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +0 -151
- package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/apple.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/binance.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/cal.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/clay.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +0 -147
- package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +0 -156
- package/data/harnesses/code/skills/design/data/design-md/library/composio.md +0 -138
- package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +0 -138
- package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +0 -137
- package/data/harnesses/code/skills/design/data/design-md/library/expo.md +0 -148
- package/data/harnesses/code/skills/design/data/design-md/library/figma.md +0 -141
- package/data/harnesses/code/skills/design/data/design-md/library/framer.md +0 -156
- package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +0 -153
- package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +0 -158
- package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +0 -156
- package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +0 -122
- package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/meta.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/miro.md +0 -153
- package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +0 -155
- package/data/harnesses/code/skills/design/data/design-md/library/notion.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +0 -141
- package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +0 -145
- package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +0 -142
- package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +0 -152
- package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +0 -137
- package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/resend.md +0 -170
- package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +0 -145
- package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +0 -137
- package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +0 -168
- package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +0 -163
- package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +0 -147
- package/data/harnesses/code/skills/design/data/design-md/library/slack.md +0 -158
- package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +0 -171
- package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +0 -166
- package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +0 -160
- package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +0 -173
- package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +0 -145
- package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +0 -153
- package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +0 -167
- package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/uber.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +0 -130
- package/data/harnesses/code/skills/design/data/design-md/library/warp.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +0 -140
- package/data/harnesses/code/skills/design/data/design-md/library/wired.md +0 -139
- package/data/harnesses/code/skills/design/data/design-md/library/wise.md +0 -137
- package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +0 -138
- package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +0 -158
- package/data/harnesses/code/skills/design/data/design-md/nurix.md +0 -138
- package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +0 -695
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +0 -1272
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +0 -1268
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +0 -1273
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +0 -1262
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +0 -1257
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +0 -1270
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +0 -1270
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +0 -1261
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +0 -1268
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +0 -1281
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +0 -1262
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +0 -1271
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +0 -1276
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +0 -1293
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +0 -1270
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +0 -1276
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +0 -1267
- package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +0 -251
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +0 -1273
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +0 -1286
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +0 -1290
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +0 -1270
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +0 -23
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +0 -599
- package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +0 -1272
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +0 -1267
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +0 -1289
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +0 -1258
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +0 -1284
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +0 -1291
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +0 -1263
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +0 -1270
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +0 -1261
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +0 -1209
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +0 -1265
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +0 -1253
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +0 -1268
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +0 -1261
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +0 -1263
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +0 -1266
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +0 -23
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +0 -623
- package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +0 -1276
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +0 -1264
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +0 -1268
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +0 -1270
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +0 -1288
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +0 -1272
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +0 -1265
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +0 -1287
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +0 -1286
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +0 -1285
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +0 -1287
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +0 -1278
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +0 -1269
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +0 -1285
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +0 -1303
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +0 -1274
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +0 -1296
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +0 -23
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +0 -612
- package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +0 -1282
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +0 -1287
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +0 -1268
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +0 -1276
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +0 -1273
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +0 -1296
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +0 -20
- package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +0 -1286
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +0 -249
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +0 -249
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +0 -225
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +0 -249
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +0 -224
- package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +0 -249
- package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +0 -88
- package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +0 -132
- package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +0 -76
- package/data/harnesses/code/skills/design/references/create.md +0 -173
- package/data/harnesses/code/skills/design/references/diagnosis.md +0 -108
- package/data/harnesses/code/skills/design/references/hard-rules.md +0 -177
- package/data/harnesses/code/skills/design/references/improve.md +0 -116
- package/data/harnesses/code/skills/design/references/interaction.md +0 -77
- package/data/harnesses/code/skills/design/references/introspect.md +0 -100
- package/data/harnesses/code/skills/design/references/lifecycle.md +0 -73
- package/data/harnesses/code/skills/design/references/personality.md +0 -575
- package/data/harnesses/code/skills/design/references/structure.md +0 -159
- package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +0 -1312
- package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +0 -1498
- package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +0 -551
- package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +0 -1092
- package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +0 -26
- package/data/harnesses/code/skills/design/scripts/lib/vocabulary.mjs +0 -65
- package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +0 -538
- package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +0 -312
- package/data/harnesses/code/skills/design/scripts/render-rung.mjs +0 -890
- package/data/harnesses/code/skills/design/scripts/scaffold.mjs +0 -769
- package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +0 -675
- package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +0 -164
- package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +0 -439
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Motion Components
|
|
2
|
+
|
|
3
|
+
> Generated reference (regen-owned; see [index.md](index.md)). Binds only under `primitives: nurix`.
|
|
4
|
+
|
|
5
|
+
Animation primitives built on the `motion` library (`motion-primitives/*`) plus a small `animate-ui/*` layer. Compose sparingly — decorative and low-frequency surfaces only; never on data or on actions users repeat dozens of times a day. Import each from its own subpath, e.g. `import { AnimatedGroup } from "@nurix/components/motion-primitives/animated-group"`.
|
|
6
|
+
|
|
7
|
+
## Animated numbers
|
|
8
|
+
|
|
9
|
+
Tick-up numerals that render as plain text until JS is ready (no layout shift, no flash of `0`).
|
|
10
|
+
|
|
11
|
+
- `motion-primitives/animated-number` — `AnimatedNumber`: spring-interpolated count-up; `value`, `springOptions`, `as` (element/component, default `span`)
|
|
12
|
+
- `motion-primitives/sliding-number` — `SlidingNumber`: per-digit slot-machine roll; `value`, `padStart`, `decimalSeparator`
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
<AnimatedNumber value={total} springOptions={{ bounce: 0.2 }} />
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Stagger entrance
|
|
19
|
+
|
|
20
|
+
- `motion-primitives/animated-group` — `AnimatedGroup`: staggers children in on mount/update. **Props:** `preset` [fade|slide|scale|blur|blur-slide|zoom|flip|bounce|rotate|swing], `variants` (`{ container, item }`, overrides preset), `as`/`asChild`
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
<AnimatedGroup preset="blur-slide">
|
|
24
|
+
{items.map((item) => <Card key={item.id}>{item.label}</Card>)}
|
|
25
|
+
</AnimatedGroup>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Text effects
|
|
29
|
+
|
|
30
|
+
Per-character/word/line text animation — low-frequency surfaces only (empty states, onboarding, marketing-adjacent copy).
|
|
31
|
+
|
|
32
|
+
- `motion-primitives/text-effect` — `TextEffect`: staggered reveal; `per` [word|char|line], `preset` [blur|fade-in-blur|scale|fade|slide], `delay`, `trigger`, `onAnimationComplete`
|
|
33
|
+
- `motion-primitives/text-morph` — `TextMorph`: morphs character-by-character between successive `children` string values; `as`, `variants`, `transition`
|
|
34
|
+
- `motion-primitives/text-scramble` — `TextScramble`: scrambles through random characters before resolving; `duration`, `speed`, `characterSet`, `trigger`, `onScrambleComplete`
|
|
35
|
+
- `motion-primitives/text-shimmer` — `TextShimmer`: looping gradient shimmer across the text; `duration`, `spread`
|
|
36
|
+
|
|
37
|
+
## Morphing overlays
|
|
38
|
+
|
|
39
|
+
Trigger element morphs its own bounds into the overlay (shared-layout, not a fade) — interruptible mid-animation.
|
|
40
|
+
|
|
41
|
+
- `motion-primitives/morphing-dialog` — `MorphingDialog` (root) + `MorphingDialogTrigger`, `MorphingDialogContainer` (portal), `MorphingDialogContent`, `MorphingDialogTitle`, `MorphingDialogSubtitle`, `MorphingDialogDescription` (`disableLayoutAnimation`), `MorphingDialogImage`, `MorphingDialogClose`; root takes `transition`
|
|
42
|
+
- `motion-primitives/morphing-popover` — `MorphingPopover` (`defaultOpen`/`open`/`onOpenChange`, `variants`) + `MorphingPopoverTrigger`, `MorphingPopoverContent`
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
<MorphingDialog>
|
|
46
|
+
<MorphingDialogTrigger>
|
|
47
|
+
<img src={thumb} alt="" />
|
|
48
|
+
</MorphingDialogTrigger>
|
|
49
|
+
<MorphingDialogContainer>
|
|
50
|
+
<MorphingDialogContent>
|
|
51
|
+
<MorphingDialogImage src={fullSize} alt="" />
|
|
52
|
+
</MorphingDialogContent>
|
|
53
|
+
</MorphingDialogContainer>
|
|
54
|
+
</MorphingDialog>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Panel transitions
|
|
58
|
+
|
|
59
|
+
Crossfade/slide between sibling panels, or a height-animated reveal. Distinct from the plain shadcn `accordion`/`tabs` subpaths in [layout.md](layout.md)/[navigation.md](navigation.md) — these are the animated variants.
|
|
60
|
+
|
|
61
|
+
- `motion-primitives/transition-panel` — `TransitionPanel`: crossfades between `children[activeIndex]`; `variants` (`{ enter, center, exit }`), `transition`
|
|
62
|
+
- `motion-primitives/disclosure` — `Disclosure` (root, `open`/`onOpenChange`) + `DisclosureTrigger`, `DisclosureContent`; `useDisclosure()` for custom triggers
|
|
63
|
+
- `motion-primitives/accordion` — animated `Accordion` (root, `expandedValue`/`onValueChange`, single-expand) + `AccordionItem`, `AccordionTrigger`, `AccordionContent`; `useAccordion()`
|
|
64
|
+
- `animate-ui/components/animate/tabs` — animated `Tabs`: sliding active-tab highlight over the primitive below; `variant` [solid|underline], `size` [sm|md|lg]
|
|
65
|
+
|
|
66
|
+
## Decorative effects
|
|
67
|
+
|
|
68
|
+
Pointer-tracked washes and ambient loops — decorative chrome only, never load-bearing content.
|
|
69
|
+
|
|
70
|
+
- `motion-primitives/spotlight` — `Spotlight`: cursor-following radial glow inside a `position: relative` parent; `size`, `springOptions`
|
|
71
|
+
- `motion-primitives/glow-effect` — `GlowEffect`: animated multi-color glow; `mode` [rotate|pulse|breathe|colorShift|flowHorizontal|static], `colors`, `blur` (preset or px number), `duration`, `scale`
|
|
72
|
+
- `motion-primitives/animated-background` — `AnimatedBackground`: sliding highlight that tracks the active/hovered child (each child needs a `data-id`); `defaultValue`, `onValueChange`, `enableHover`
|
|
73
|
+
- `motion-primitives/infinite-slider` — `InfiniteSlider`: seamless looping marquee; `gap`, `speed`, `speedOnHover`, `direction` [horizontal|vertical], `reverse`
|
|
74
|
+
- `animate-ui/primitives/effects/highlight` — `Highlight`: the sliding-highlight primitive underneath `AnimatedBackground`/animated `Tabs`; `mode` [children|parent], `value`/`defaultValue`/`onValueChange` (controlled or uncontrolled), `hover`, `click`, `transition`, `exitDelay`
|
|
75
|
+
|
|
76
|
+
## Dynamic toolbar
|
|
77
|
+
|
|
78
|
+
- `motion-primitives/toolbar-dynamic` — `ToolbarDynamic`: toolbar that expands to a contextual search input; `expandedWidth`, `collapsedWidth`, `placeholder`, `transition`. Ships `ToolbarButton` for the collapsed action icons.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
Two further `animate-ui` subpaths are low-level primitives consumed internally rather than composed directly: `animate-ui/primitives/animate/slot` (an `asChild`-merging `Slot`, the plumbing behind the animated `Tabs`) and `animate-ui/primitives/effects/theme-toggler` (the directional-wipe primitive behind the `theme-toggler` component in [media.md](media.md)).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Navigation Components
|
|
2
|
+
|
|
3
|
+
> Generated reference (regen-owned; see [index.md](index.md)). Binds only under `primitives: nurix`.
|
|
4
|
+
|
|
5
|
+
Components: Breadcrumb, Menubar, Navbar, NavigationMenu, Pagination, Sidebar, SlideOutMenu, Tabs, VerticalIconBar
|
|
6
|
+
|
|
7
|
+
Each imports from its own subpath, with compound members alongside, e.g. `import { Tabs, TabsList, TabsTrigger, TabsContent } from "@nurix/components/tabs"`.
|
|
8
|
+
|
|
9
|
+
## Sidebar
|
|
10
|
+
|
|
11
|
+
App sidebar: full shadcn primitives plus an opinionated layer, all from the single `@nurix/components/sidebar` subpath.
|
|
12
|
+
|
|
13
|
+
**Sub-components:** `SidebarProvider`, `Sidebar` (`side` [left|right], `variant` [sidebar|floating|inset], `collapsible` [offcanvas|icon|none]), `SidebarTrigger`, `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarGroup`, `SidebarMenu`, `SidebarMenuItem`, `SidebarMenuButton`, `SidebarRail`, `SidebarInset`, `useSidebar`. **Opinionated layer:** `Brand`, `Switcher` (`render` [simple|rich], `options`, `activeId`, `onSelect`), `ItemGroup` (`render` [list|tree|rich], `collapsible`, `compact`, `collapsedLabel` [hide|divider], `items`, `onItemClick`), `UserMenu`, `Callout`, `FileTree`, `SidebarCommandTrigger`.
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<SidebarProvider>
|
|
17
|
+
<Sidebar collapsible="icon">
|
|
18
|
+
<SidebarHeader>
|
|
19
|
+
<Switcher options={workspaces} />
|
|
20
|
+
</SidebarHeader>
|
|
21
|
+
<SidebarContent>
|
|
22
|
+
<ItemGroup label="Platform" render="tree" items={items} />
|
|
23
|
+
</SidebarContent>
|
|
24
|
+
<SidebarFooter>
|
|
25
|
+
<UserMenu user={user} />
|
|
26
|
+
</SidebarFooter>
|
|
27
|
+
</Sidebar>
|
|
28
|
+
</SidebarProvider>
|
|
29
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Overlay Components
|
|
2
|
+
|
|
3
|
+
> Generated reference (regen-owned; see [index.md](index.md)). Binds only under `primitives: nurix`.
|
|
4
|
+
|
|
5
|
+
## Dialog
|
|
6
|
+
|
|
7
|
+
Modal dialog with configurable size, position, and variant.
|
|
8
|
+
|
|
9
|
+
**Sub-components:** `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogBody`, `DialogFooter`, `DialogTitle`, `DialogDescription`, `DialogClose`
|
|
10
|
+
|
|
11
|
+
**Content props:** `size` [sm|md|default|lg|xl|full], `position` [center|top|bottom], `variant` [default|danger], `dismissible` (default true; false when variant is danger), `showDividers`, `scrollable` (pins header/footer, scrolls body), `title`, `description`, `icon` (render a built-in header)
|
|
12
|
+
|
|
13
|
+
**Header/Footer props:** `showDivider`
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Dialog>
|
|
17
|
+
<DialogTrigger asChild>
|
|
18
|
+
<Button>Edit profile</Button>
|
|
19
|
+
</DialogTrigger>
|
|
20
|
+
<DialogContent size="lg">
|
|
21
|
+
<DialogHeader showDivider>
|
|
22
|
+
<DialogTitle>Edit Profile</DialogTitle>
|
|
23
|
+
</DialogHeader>
|
|
24
|
+
<DialogBody>
|
|
25
|
+
<Input value={name} onChange={(e) => setName(e.target.value)} />
|
|
26
|
+
</DialogBody>
|
|
27
|
+
<DialogFooter showDivider>
|
|
28
|
+
<Button onClick={handleSave}>Save</Button>
|
|
29
|
+
</DialogFooter>
|
|
30
|
+
</DialogContent>
|
|
31
|
+
</Dialog>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Sheet
|
|
35
|
+
|
|
36
|
+
Side panel overlay with header/body/footer layout.
|
|
37
|
+
|
|
38
|
+
**Sub-components:** `SheetTrigger`, `SheetContent`, `SheetHeader`, `SheetBody`, `SheetFooter`, `SheetTitle`, `SheetDescription`, `SheetClose`
|
|
39
|
+
|
|
40
|
+
**Content props:** `side` [top|right|bottom|left], `size` [sm|md|default|lg|xl|full] (left/right only; top/bottom span full width), `showCloseButton`, `showOverlay`
|
|
41
|
+
|
|
42
|
+
**Header/Footer props:** `showDivider` **Body props:** `noPadding`
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
<Sheet>
|
|
46
|
+
<SheetTrigger asChild>
|
|
47
|
+
<Button>Open</Button>
|
|
48
|
+
</SheetTrigger>
|
|
49
|
+
<SheetContent side="right" size="lg">
|
|
50
|
+
<SheetHeader showDivider>
|
|
51
|
+
<SheetTitle>Settings</SheetTitle>
|
|
52
|
+
</SheetHeader>
|
|
53
|
+
<SheetBody>
|
|
54
|
+
<Input value={name} onChange={(e) => setName(e.target.value)} />
|
|
55
|
+
</SheetBody>
|
|
56
|
+
<SheetFooter showDivider>
|
|
57
|
+
<Button onClick={handleSave}>Save</Button>
|
|
58
|
+
</SheetFooter>
|
|
59
|
+
</SheetContent>
|
|
60
|
+
</Sheet>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Other Overlays
|
|
64
|
+
|
|
65
|
+
Standard compound components following the Trigger/Content pattern; import each from its kebab-case subpath (e.g. `@nurix/components/popover`):
|
|
66
|
+
|
|
67
|
+
- `Command` (`command`)
|
|
68
|
+
- `ContextMenu` (`context-menu`)
|
|
69
|
+
- `DropdownMenu` (`dropdown-menu`)
|
|
70
|
+
- `HoverCard` (`hover-card`)
|
|
71
|
+
- `Popover` (`popover`)
|
|
72
|
+
- `Tooltip` (`tooltip`)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Setup & Configuration
|
|
2
|
+
|
|
3
|
+
> Generated reference (regen-owned; see [index.md](index.md)). Loads only under `primitives: nurix` — this is the wiring a project needs before any `@nurix/components` import resolves.
|
|
4
|
+
|
|
5
|
+
## Package
|
|
6
|
+
|
|
7
|
+
`@nurix/components` — published to the public npm registry (`registry.npmjs.org`) under the restricted `@nurix` scope. Only `dist/` ships. Peer dependencies: `react ^19`, `react-dom ^19`. Source of truth: `github.com/nurixlabs/components`.
|
|
8
|
+
|
|
9
|
+
## Installing
|
|
10
|
+
|
|
11
|
+
The scope is restricted, so the consumer project needs an npm token with read access to `@nurix` in its `.npmrc`:
|
|
12
|
+
|
|
13
|
+
```ini
|
|
14
|
+
//registry.npmjs.org/:_authToken=${NPM_READ_TOKEN}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Then install with the project's package manager (detect from the lockfile): `npm install @nurix/components`.
|
|
18
|
+
|
|
19
|
+
## Styles (required)
|
|
20
|
+
|
|
21
|
+
In the consumer's CSS entry, after Tailwind v4:
|
|
22
|
+
|
|
23
|
+
```css
|
|
24
|
+
@import "tailwindcss";
|
|
25
|
+
@import "@nurix/components/styles.css";
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The shipped `styles.css` is **not** precompiled — it carries the design tokens, base layer, and an embedded `@source "./**/*.js"` directive, so the consumer's Tailwind v4 build scans the package's compiled JS and generates every utility class the components use. The project must have Tailwind v4 set up; it does **not** add its own `@source` for this package.
|
|
29
|
+
|
|
30
|
+
The design skill's token artifact (CSS custom properties emitted from the project `design.md`) layers over these tokens — theme blocks carry specificity armor precisely so this package's `:root` block cannot defeat them.
|
|
31
|
+
|
|
32
|
+
## Import pattern
|
|
33
|
+
|
|
34
|
+
Use subpath imports — each published entry maps to one; never import from the root barrel in generated code:
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import { Button } from "@nurix/components/button";
|
|
38
|
+
import { Cell } from "@nurix/components/cell";
|
|
39
|
+
import { defineColumn } from "@nurix/components/table";
|
|
40
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Typography Components
|
|
2
|
+
|
|
3
|
+
> Generated reference (regen-owned; see [index.md](index.md)). Binds only under `primitives: nurix`.
|
|
4
|
+
|
|
5
|
+
Import each from its kebab-case subpath, e.g. `import { Badge } from "@nurix/components/badge"`.
|
|
6
|
+
|
|
7
|
+
## Text
|
|
8
|
+
|
|
9
|
+
Inline editable text using native `contentEditable` — plain text that grows a focus border and becomes editable on click, no controlled-input plumbing required.
|
|
10
|
+
|
|
11
|
+
**Props:** `value`, `defaultValue`, `placeholder`, `disabled`, `readOnly`, `onSave`, `validator`, `onValidationError`, `hideHoverEffect`
|
|
12
|
+
|
|
13
|
+
Enter or blur commits via `onSave` (skipped if unchanged); Escape reverts to the pre-edit value. A `validator` regex blocks the commit and reports via `onValidationError` instead.
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Text
|
|
17
|
+
defaultValue={title}
|
|
18
|
+
placeholder="Untitled"
|
|
19
|
+
onSave={saveTitle}
|
|
20
|
+
validator={/^.{1,80}$/}
|
|
21
|
+
/>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## SecureText
|
|
25
|
+
|
|
26
|
+
Masked display for sensitive values (passwords, API keys, card numbers) with an optional reveal toggle.
|
|
27
|
+
|
|
28
|
+
**Props:** `value`, `revealable` (default true), `defaultRevealed`, `revealed`/`onRevealedChange` (controlled), `variant` [default|mono], `size` [sm|default|lg], `maskOptions` (`{ maskChar, unmaskedStart, unmaskedEnd, preserveSpacing, grouping, showLength }`)
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
<SecureText
|
|
32
|
+
value={apiKey}
|
|
33
|
+
variant="mono"
|
|
34
|
+
maskOptions={{ unmaskedStart: 4, unmaskedEnd: 4, grouping: 4 }}
|
|
35
|
+
/>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Other Components
|
|
39
|
+
|
|
40
|
+
- `badge` — `Badge`: `variant` [default|secondary|destructive|outline|ghost|link], `asChild`
|
|
41
|
+
- `chip` — `Chip`: removable tag; `variant` [default|secondary|outline|muted], `size` [sm|default|lg], `onRemove`, `disabled`
|
|
42
|
+
- `code` — `Code`: inline `<code>` or a `block` (renders `<pre>`); `variant` [default|ghost|muted], `size` [sm|default|lg], `block`
|
|
43
|
+
- `kbd` — `Kbd`: keycap; `variant` [default|outline], `size` [sm|default|lg]
|
|
44
|
+
- `label` — `Label`: Radix `Label.Root`, tracks a peer/group's `disabled` state automatically
|
|
45
|
+
- `link` — `Link`: `variant` [default|muted|plain|underline], `size` [sm|default|lg], `asChild`, `external` (forces `target="_blank"` + a trailing icon; also auto-detects `target="_blank"`)
|
|
46
|
+
- `markdown` — `Markdown`: GFM `react-markdown` + `remark-gfm` render with a full element map (headings, lists, code, blockquote, tables) styled on the library's own tokens — no `@tailwindcss/typography` plugin needed; safe to re-render incrementally while streaming. **Props:** `children` (markdown string), `className`
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Utils
|
|
2
|
+
|
|
3
|
+
> Generated reference (regen-owned; see [index.md](index.md)). Binds only under `primitives: nurix`.
|
|
4
|
+
|
|
5
|
+
Low-level utilities and shared types, each published as its own subpath under `@nurix/components/<subpath>`.
|
|
6
|
+
|
|
7
|
+
## cn
|
|
8
|
+
|
|
9
|
+
`cn(...inputs)` (from `utils`) — `clsx` + `tailwind-merge`; the class-merge used throughout the library. Same subpath also exports `isMobileDevice()` (UA-sniffing boolean, prefer `useIsMobile` in components).
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
<div className={cn("rounded-md", isActive && "bg-primary", className)} />
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## formatDate
|
|
16
|
+
|
|
17
|
+
`formatDate(date, opts?)` (from `format`) — Intl-based date formatting; returns `""` on a missing/invalid input instead of throwing. Defaults to `{ month: "long", day: "numeric", year: "numeric" }`, overridable via `opts`.
|
|
18
|
+
|
|
19
|
+
## generateId
|
|
20
|
+
|
|
21
|
+
`generateId(prefixOrOptions?, options?)` (from `id`) — nanoid-based alphanumeric ID; `{ length = 12, separator = "_" }`. Accepts a prefix key as the first argument (prepended with `separator`) or an options object directly.
|
|
22
|
+
|
|
23
|
+
## getErrorMessage
|
|
24
|
+
|
|
25
|
+
`getErrorMessage(err)` (from `handle-error`) — normalizes an unknown error into a display string: joins `ZodError` issue messages with newlines, passes through a plain `Error.message`, else a generic fallback.
|
|
26
|
+
|
|
27
|
+
## getStrictContext
|
|
28
|
+
|
|
29
|
+
`getStrictContext<T>(name?)` (from `get-strict-context`) — returns a `[Provider, useSafeContext]` pair; the hook throws (`useContext must be used within <name>`) when read outside its `Provider`, instead of silently returning `undefined`.
|
|
30
|
+
|
|
31
|
+
## composeRefs
|
|
32
|
+
|
|
33
|
+
`composeRefs(...refs)` / `useComposedRefs(...refs)` (from `compose-refs`) — merges multiple callback refs and `RefObject`s (including React 19 ref-cleanup returns) into one callback ref.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
Two further subpaths are non-UI escape hatches, not composable concepts: `types` (a barrel of public component prop types — `InputProps`, `SelectProps`, `CellProps`, …) and `node-catalog` (runtime node definitions for the NuStack Plan engine — data, not UI).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: browse
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from Salesforce list views, GitHub search/Explore, Retool templates, Zendesk views, Notion gallery view, Airtable interfaces, Linear command menu"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the browse archetype — unordered lookup across a record catalog. View-types (table, cards, board) are projections that may appear inside any shape.
|
|
9
|
+
|
|
10
|
+
## Shape: Filter Rail Browse
|
|
11
|
+
Regions: search/sort bar (full-width, top) / filter rail (left, fixed ~20%, checkboxes and facets) / result area (remaining ~80%, table or card grid) / optional saved-view tabs above the results.
|
|
12
|
+
The eye lands on: the result count and the first few rows or cards immediately right of the rail.
|
|
13
|
+
When to use: users know roughly what they want and need to narrow a large catalog by attributes before picking one.
|
|
14
|
+
Seen in: Salesforce list views with filter tabs, GitHub code/issue search with its left filter sidebar, Retool admin-panel search-and-table patterns.
|
|
15
|
+
|
|
16
|
+
## Shape: Topic Shelf Browse
|
|
17
|
+
Regions: search bar (top, secondary) / stacked horizontal shelves (full-width, each a named topic or collection) / each shelf scrolls independently left-right.
|
|
18
|
+
The eye lands on: the first shelf's title and its lead card — curation, not a filter control, drives attention.
|
|
19
|
+
When to use: the goal is inspiration or discovery across a broad catalog rather than narrowing toward a known target.
|
|
20
|
+
Seen in: GitHub Explore (Trending repositories, Topics, Collections), Retool's template gallery landing page.
|
|
21
|
+
|
|
22
|
+
## Shape: Faceted Table Browse
|
|
23
|
+
Regions: saved-view tab strip (top, full-width) / facet and group controls (top-right, compact) / dense table body (full-width, below) with grouped row headers.
|
|
24
|
+
The eye lands on: the active view's name and its row count in the tab strip, then the grouped section headers.
|
|
25
|
+
When to use: the same underlying record set is browsed through several standing, shareable slices rather than one ad hoc filter.
|
|
26
|
+
Seen in: Salesforce list views (Table/Split/Kanban toggle on one saved view), Zendesk ticket views grouped and ordered by field.
|
|
27
|
+
|
|
28
|
+
## Shape: Gallery Card Browse
|
|
29
|
+
Regions: toolbar (top, thin) / uniform card grid (full-width, cover-forward cards with a small property strip beneath each) / no persistent side rail.
|
|
30
|
+
The eye lands on: the cover or lead property of the first card, not on chrome or filters.
|
|
31
|
+
When to use: the records are visually distinguishable (people, assets, campaigns) and recognition beats reading fields.
|
|
32
|
+
Seen in: Notion gallery view, Airtable's gallery-style interface layouts.
|
|
33
|
+
|
|
34
|
+
## Shape: Command-First Browse
|
|
35
|
+
Regions: a single centered search/command input (top, dominant) that expands into a ranked result list beneath it as the user types / no visible content before a query.
|
|
36
|
+
The eye lands on: the input caret, then the top-ranked result as it appears.
|
|
37
|
+
When to use: the catalog is too large or too varied to shelf or facet usefully, and users already have a query in mind.
|
|
38
|
+
Seen in: GitHub's global search entry point, Linear's Cmd+K command menu used as a navigation-and-discovery surface.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: creation-flow
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from Stripe Connect onboarding, Linear issue creation, GitHub new-repository page, Retool App IDE, Airtable Interface Designer, wizard-pattern references"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the creation-flow archetype — how a new object enters the system. The object's field count, orderedness, and context-sensitivity pick the shape.
|
|
9
|
+
|
|
10
|
+
## Shape: Linear Stepper Wizard
|
|
11
|
+
Regions: step rail (left or top, numbered, shows progress and lets users jump to completed steps) / one focused form panel per step (center, only the current step's fields are visible) / persistent progress indicator.
|
|
12
|
+
The eye lands on: the current step's label, highlighted in the rail.
|
|
13
|
+
When to use: creation requires many required fields best collected in a specific order, especially with validation or document upload between groups.
|
|
14
|
+
Seen in: Stripe's hosted/embedded Connect account onboarding, generic SaaS setup wizards built around a stepper.
|
|
15
|
+
|
|
16
|
+
## Shape: Slide-Over Quick Create
|
|
17
|
+
Regions: a right-hand panel or modal (slides over the current screen, ~⅓–½ width) capturing a minimal field set / the underlying list or board stays visible and dimmed behind it.
|
|
18
|
+
The eye lands on: the title/name field, auto-focused at the top of the slide-over.
|
|
19
|
+
When to use: the object being created is simple enough not to need its own page, and preserving the user's current context matters more than a guided sequence.
|
|
20
|
+
Seen in: Linear's issue-creation modal (triggered by `C` or `Cmd+K`, preserves a draft if dismissed).
|
|
21
|
+
|
|
22
|
+
## Shape: Single-Page Form
|
|
23
|
+
Regions: one dedicated page (full-width, no steps) with fields grouped into clearly labeled sections top to bottom / primary submit action at the bottom of the page.
|
|
24
|
+
The eye lands on: the first required field at the top of the page (commonly a name field).
|
|
25
|
+
When to use: the object has a small, fixed set of fields that don't benefit from being split across steps.
|
|
26
|
+
Seen in: GitHub's "Create a new repository" page (name, description, visibility, template, initialization options all on one page).
|
|
27
|
+
|
|
28
|
+
## Shape: Builder Canvas Creation
|
|
29
|
+
Regions: component/element palette (left, narrow) / live authoring canvas (center, widest, shows the artifact being built and previewed simultaneously) / property inspector (right, contextual to whatever is selected).
|
|
30
|
+
The eye lands on: whatever element on the canvas was most recently added or selected.
|
|
31
|
+
When to use: the thing being created is itself a visual composition (an app, a page, an interface) rather than a record with fixed fields.
|
|
32
|
+
Seen in: Retool's App IDE; Airtable's Interface Designer when building a new interface from scratch.
|
|
33
|
+
|
|
34
|
+
## Shape: Guided Checklist Launcher
|
|
35
|
+
Regions: a persistent checklist/progress tracker (top or side, shows completion percentage) / each checklist item expands into its own focused step or opens a separate flow / dismissible and resumable at any time.
|
|
36
|
+
The eye lands on: the next incomplete checklist item, usually highlighted or bolded.
|
|
37
|
+
When to use: setup spans many optional or asynchronous sub-tasks (some requiring external verification) that shouldn't block each other.
|
|
38
|
+
Seen in: Stripe's embedded onboarding requirements flow, generic SaaS account-setup checklists.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dashboard
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from Stripe Dashboard home, Datadog dashboards and Dependency Map Navigator, Airtable Interface Designer, network-operations-center layout conventions, BI single-metric report layouts"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the dashboard archetype — many signals summarized for scan or narrative. Which shape fits follows from whether the audience scans for anomalies or reads for a story.
|
|
9
|
+
|
|
10
|
+
## Shape: KPI Strip + Chart Grid
|
|
11
|
+
Regions: KPI strip (full-width, top, 4–6 tiles each with a value, delta, and inline sparkline) / flexible chart-and-table grid beneath, arranged in a 12-column layout.
|
|
12
|
+
The eye lands on: the single largest number in the leftmost KPI tile.
|
|
13
|
+
When to use: a general operator or executive audience needs the headline health of the business before anything else.
|
|
14
|
+
Seen in: Stripe Dashboard's home page ("Your overview" widgets).
|
|
15
|
+
|
|
16
|
+
## Shape: Dense Monitoring Grid
|
|
17
|
+
Regions: named tabs (top, grouping widgets into sections) / a 12-column responsive grid packed edge-to-edge with many small, same-scale widgets (graphs, single-value tiles, status lists).
|
|
18
|
+
The eye lands on: whichever widget is currently in an alert/error color state, not a fixed position.
|
|
19
|
+
When to use: the goal is at-a-glance anomaly-spotting across many signals at once, not narrative or storytelling.
|
|
20
|
+
Seen in: Datadog dashboards in high-density mode.
|
|
21
|
+
|
|
22
|
+
## Shape: Freeform Canvas Dashboard
|
|
23
|
+
Regions: an unconstrained drag-anywhere canvas mixing number tiles, charts, filtered record lists, and text blocks, each element independently sourced from a different underlying table.
|
|
24
|
+
The eye lands on: whichever element the dashboard's author placed largest or first — no default focal convention.
|
|
25
|
+
When to use: the dashboard's authors need full control over juxtaposing heterogeneous content (not just uniform charts) for a specific audience.
|
|
26
|
+
Seen in: Airtable's Interface Designer dashboard layout.
|
|
27
|
+
|
|
28
|
+
## Shape: Command-Center Split
|
|
29
|
+
Regions: relationship/topology map or geographic overview (left or center, dominant, ~⅔) / live list or table of affected entities (right, ~⅓, sorted by severity, updates in real time).
|
|
30
|
+
The eye lands on: whatever node or row is currently flagged in an alert color.
|
|
31
|
+
When to use: operators must go from "something is wrong somewhere" to "which specific thing" without leaving one screen.
|
|
32
|
+
Seen in: Datadog's Dependency Map Navigator; the video-wall convention of a dominant overview display paired with secondary alert panels used in network operations centers.
|
|
33
|
+
|
|
34
|
+
## Shape: Narrative Single-Column Report
|
|
35
|
+
Regions: one hero chart or metric (top, full-width) / supporting breakdown tables and secondary charts stacked below it in reading order / minimal or no side chrome.
|
|
36
|
+
The eye lands on: the hero chart's headline trend line.
|
|
37
|
+
When to use: the dashboard is meant to be read top-to-bottom like a report, telling one story, rather than scanned for many independent signals.
|
|
38
|
+
Seen in: single-metric deep-dive report layouts common to BI tools built around one hero visualization followed by supporting cuts of the same data.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: grid
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from Airtable grid view and grouped views, Notion table side peek, Retool App IDE and admin templates, spreadsheet-style admin tables"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the grid archetype — many records edited or scanned across many fields at once, spreadsheet-fashion.
|
|
9
|
+
|
|
10
|
+
## Shape: Frozen-Header Spreadsheet
|
|
11
|
+
Regions: toolbar (top, view switch / row-height / filter controls) / grid body (full-width, first column(s) frozen while scrolling horizontally) / add-row affordance pinned to the bottom edge.
|
|
12
|
+
The eye lands on: the frozen leftmost column, which anchors every row as the grid scrolls.
|
|
13
|
+
When to use: users need to scan and bulk-edit many records across many fields the way they would in a spreadsheet.
|
|
14
|
+
Seen in: Airtable grid view, Google-Sheets-style admin data tables.
|
|
15
|
+
|
|
16
|
+
## Shape: Grid + Side Peek
|
|
17
|
+
Regions: grid (majority of width, ~70–80%) / record detail panel (right, slides in on row selection, ~20–30%, doesn't navigate away from the grid).
|
|
18
|
+
The eye lands on: the selected row's highlighted state in the grid, then the panel that opens beside it.
|
|
19
|
+
When to use: editing one record's full detail is common but shouldn't cost the user their place in the larger table.
|
|
20
|
+
Seen in: Airtable's expand-record-from-grid interaction, Notion's table view opening records in a side peek.
|
|
21
|
+
|
|
22
|
+
## Shape: Grouped Grid with Subtotals
|
|
23
|
+
Regions: grid body (full-width) organized into collapsible group bands, each with a header row carrying aggregate stats (count, sum, average) for that group.
|
|
24
|
+
The eye lands on: the group header's aggregate figure, before any individual row.
|
|
25
|
+
When to use: the grid's job is roll-up reporting on structured data, not just record-by-record editing.
|
|
26
|
+
Seen in: Airtable's grouped grid view with per-group summary bars.
|
|
27
|
+
|
|
28
|
+
## Shape: Builder Canvas Grid
|
|
29
|
+
Regions: component palette (left, narrow, categorized list) / authoring canvas (center, widest, a 12-column grid used to place UI components rather than data rows) / inspector (right, contextual to the selected component).
|
|
30
|
+
The eye lands on: the component currently selected on the canvas, highlighted against the grid.
|
|
31
|
+
When to use: the "grid" is the structural device for assembling an interface or app, not for displaying records.
|
|
32
|
+
Seen in: Retool's App IDE (canvas + component tree + Inspector panel).
|
|
33
|
+
|
|
34
|
+
## Shape: Bulk-Action Grid
|
|
35
|
+
Regions: search/filter bar (top) / grid with a persistent selection checkbox column (left edge) / sticky bulk-action toolbar that appears above the grid only once rows are selected.
|
|
36
|
+
The eye lands on: the selection-count indicator in the bulk-action toolbar once it appears.
|
|
37
|
+
When to use: the primary job is applying one action to many rows at once (delete, export, reassign), not editing cells individually.
|
|
38
|
+
Seen in: Retool admin-panel table/search/form templates built for internal operators.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: queue
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from Zendesk Agent Workspace, Salesforce Split View, Intercom inbox, Superhuman Split Inbox, Gmail preview pane, Jira-style backlog tables"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the queue archetype — prioritized, claimable work processed toward empty. The list order is the product; view-types are projections.
|
|
9
|
+
|
|
10
|
+
## Shape: Split Triage
|
|
11
|
+
Regions: item list (left, ~⅓, one row per item, unread/priority state visible) / reading pane (right, ~⅔, shows the selected item in full) / action bar pinned to the reading pane's top edge.
|
|
12
|
+
The eye lands on: the subject or title of the item open in the reading pane.
|
|
13
|
+
When to use: operators process items one at a time but need the surrounding list visible to keep their place and jump ahead.
|
|
14
|
+
Seen in: Gmail's preview-pane layout, Salesforce Split View, Intercom's conversation table with a preview panel.
|
|
15
|
+
|
|
16
|
+
## Shape: Three-Column Context Triage
|
|
17
|
+
Regions: ticket properties (left, narrow, editable fields) / conversation thread (center, widest, scrolls independently) / context panel (right, collapsible, customer/account data pulled from other systems).
|
|
18
|
+
The eye lands on: the newest message in the center conversation thread.
|
|
19
|
+
When to use: resolving one item requires both editing structured fields and reading unstructured context side by side.
|
|
20
|
+
Seen in: Zendesk Agent Workspace's ticket interface.
|
|
21
|
+
|
|
22
|
+
## Shape: Card-Stack Triage
|
|
23
|
+
Regions: a single focal card (center, dominant, full item detail) with decision controls (approve/reject/skip) directly beneath it / no persistent list visible at all.
|
|
24
|
+
The eye lands on: the one card currently in front of the operator.
|
|
25
|
+
When to use: throughput and low cognitive load matter more than seeing what's next or re-ordering the queue.
|
|
26
|
+
Seen in: moderation/review-queue patterns built around one-decision-at-a-time keyboard flows (the pattern Superhuman's and Zendesk's triage conventions both borrow from).
|
|
27
|
+
|
|
28
|
+
## Shape: Grouped Table Queue
|
|
29
|
+
Regions: standing view tabs (top, each a saved filter) / dense table (full-width, grouped by a status or priority field with collapsible group headers) / row click opens detail rather than a separate pane.
|
|
30
|
+
The eye lands on: the group header counts, which signal where backlog is piling up.
|
|
31
|
+
When to use: triage is about prioritizing across the whole backlog first, and deep work on one item happens after selection, not alongside it.
|
|
32
|
+
Seen in: Zendesk's saved Views grouped and ordered by field, Jira-style backlog triage tables.
|
|
33
|
+
|
|
34
|
+
## Shape: Zero-Chrome Queue
|
|
35
|
+
Regions: a single wide column (full-width, no folders/menus/sidebar) listing items as compact single-line rows / a shortcuts overlay appears on demand rather than living in permanent chrome.
|
|
36
|
+
The eye lands on: the top unprocessed row.
|
|
37
|
+
When to use: expert operators triage at very high volume and any persistent chrome would slow them down.
|
|
38
|
+
Seen in: Superhuman's Split Inbox list view.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: record-detail
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from Salesforce Lightning record pages, HubSpot record layout, Stripe customer detail, GitHub pull-request Files changed, Datadog Service Page"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the record-detail archetype — one entity, its fields, its history, and its relationships on a single page.
|
|
9
|
+
|
|
10
|
+
## Shape: Highlights + Related Tabs
|
|
11
|
+
Regions: highlights band (top, full-width, up to ~7 key fields drawn from a compact layout) / horizontal tab strip (below highlights) switching between Related, Details, and Activity panels beneath.
|
|
12
|
+
The eye lands on: the first field in the highlights band (typically the record's name/status).
|
|
13
|
+
When to use: one record has many categories of related information that don't need to be visible simultaneously.
|
|
14
|
+
Seen in: Salesforce Lightning record pages (highlights panel driven by compact layout + related-list cards).
|
|
15
|
+
|
|
16
|
+
## Shape: Three-Column CRM Record
|
|
17
|
+
Regions: property sidebar (left, ~25%, "About" fields) / activity timeline (center, ~50%, chronological log) / associated-records rail (right, ~25%, previews of linked deals/tickets/companies).
|
|
18
|
+
The eye lands on: the most recent entry at the top of the center timeline.
|
|
19
|
+
When to use: the record's story (what happened, in order) matters as much as its current field values or its relationships.
|
|
20
|
+
Seen in: HubSpot's contact/company/deal record layout.
|
|
21
|
+
|
|
22
|
+
## Shape: Hero Header + Tab Strip
|
|
23
|
+
Regions: hero header (top, full-width, entity name plus top-line stats) / horizontal tab strip immediately below (Payments / Subscriptions / Invoices / Events) / one table per tab filling the rest of the page.
|
|
24
|
+
The eye lands on: the top-line stat in the hero header (balance, lifetime value, status).
|
|
25
|
+
When to use: one entity has several large, independently-scrollable tables of history that shouldn't compete for space at once.
|
|
26
|
+
Seen in: Stripe's customer detail page.
|
|
27
|
+
|
|
28
|
+
## Shape: Conversation + Docked Panels
|
|
29
|
+
Regions: resizable file/change tree (left, collapsible) / conversation or diff thread (center, dominant, scrolls independently) / docked overview and comments panels (right, toggled on demand, don't require navigating away).
|
|
30
|
+
The eye lands on: the active file or comment thread being discussed in the center pane.
|
|
31
|
+
When to use: reviewing a change requires holding structure (what changed), discussion (what people said), and description (why) in view together.
|
|
32
|
+
Seen in: GitHub's redesigned pull request "Files changed" page.
|
|
33
|
+
|
|
34
|
+
## Shape: Dependency-Map Record
|
|
35
|
+
Regions: relationship graph/map (left or center, dominant canvas showing the entity's upstream/downstream connections) / metrics table (docked right or bottom, request/error/latency figures per connection).
|
|
36
|
+
The eye lands on: the node representing the record itself, at the center of its dependency graph.
|
|
37
|
+
When to use: the entity's identity is defined by its relationships to other entities, and those relationships are the diagnostic surface.
|
|
38
|
+
Seen in: Datadog's Service Page (dependency map paired with a request/error-rate/latency table).
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: settings
|
|
3
|
+
class: d3
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "design-skill-phase1 D3 sweep — distilled from GitHub repository settings, Slack admin console, Stripe Dashboard settings, Salesforce Setup Quick Find, common SaaS account-settings patterns"
|
|
6
|
+
license: open
|
|
7
|
+
---
|
|
8
|
+
Composition shapes for the settings archetype — configuration surfaces organized by scope, subject, and risk. The size and depth of the settings surface picks the shape.
|
|
9
|
+
|
|
10
|
+
## Shape: Left Category Nav + Detail Pane
|
|
11
|
+
Regions: left navigation (fixed width, expandable category tree) / detail pane (remaining width, shows the form or table for the selected category only).
|
|
12
|
+
The eye lands on: the highlighted item in the left nav, then the pane's section heading.
|
|
13
|
+
When to use: settings span many unrelated categories that users navigate between rather than read straight through.
|
|
14
|
+
Seen in: GitHub repository settings, Slack's admin console left-nav category tree.
|
|
15
|
+
|
|
16
|
+
## Shape: Top Tab Strip Sections
|
|
17
|
+
Regions: horizontal tab strip (top, full-width, a handful of top-level categories) / one scrollable panel per tab filling the rest of the page.
|
|
18
|
+
The eye lands on: the active tab label.
|
|
19
|
+
When to use: the number of top-level categories is small enough to stay visible at once without a side nav's real estate cost.
|
|
20
|
+
Seen in: Stripe Dashboard settings, split into Personal / Account / Product tabs.
|
|
21
|
+
|
|
22
|
+
## Shape: Search-Driven Settings
|
|
23
|
+
Regions: a quick-find search box (top, prominent) over an otherwise large, unbrowsed index of setting pages / results filter the index live as the user types.
|
|
24
|
+
The eye lands on: the search box itself before any content.
|
|
25
|
+
When to use: the settings surface is too large or too deep to browse by category reliably, and users usually know the setting's name.
|
|
26
|
+
Seen in: Salesforce's Setup home with Quick Find search over the full Setup/Object Manager index.
|
|
27
|
+
|
|
28
|
+
## Shape: Long Scrolling Anchored Page
|
|
29
|
+
Regions: a single continuous page (full-width, no separate nav pane or tabs) with settings grouped into vertically stacked sections / optional anchor links jump to a section.
|
|
30
|
+
The eye lands on: whichever section heading is nearest the top of the current scroll position.
|
|
31
|
+
When to use: the total settings surface is modest enough that scrolling beats clicking between categories.
|
|
32
|
+
Seen in: common single-page "Account settings" patterns across SaaS admin surfaces (the pattern GitHub and Stripe both fall back to for smaller settings areas nested inside their larger nav/tab shells).
|
|
33
|
+
|
|
34
|
+
## Shape: Master-Detail Settings List
|
|
35
|
+
Regions: a table of configuration records (full-width or left-majority — API keys, webhooks, members, roles) with an "add" action above it / clicking a row opens that record's own edit form, inline or in a panel.
|
|
36
|
+
The eye lands on: the most recently created or most active row in the table.
|
|
37
|
+
When to use: the "setting" is really a collection of independent records (keys, integrations, members) rather than a single configuration object.
|
|
38
|
+
Seen in: Stripe's API keys and webhooks pages, GitHub's collaborators and webhooks settings pages.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: chart-styling-conventions
|
|
3
|
+
class: a7
|
|
4
|
+
sourced: 2026-07-12
|
|
5
|
+
source: "Distilled from the A7 Phase-1 chart-styling sweep's cross-cutting tells (docs/research/design-skill-phase1/a7-chart-styling.md) — Datawrapper's gray-hierarchy and confetti-spaghetti posts, NYT/Economist chrome-restraint practice"
|
|
6
|
+
license: open
|
|
7
|
+
feel: "quiet chrome, loud data — the axis never competes with the series it's measuring"
|
|
8
|
+
---
|
|
9
|
+
Landing page for the A7 chart-styling database — one entry per named chrome + ramp recipe under `data/chart-styling/<id>.md`. Every entry specs axis/gridline/tooltip/legend chrome plus the three data ramps (categorical, sequential, diverging), and **every value is a token-role reference** (`chart-1`…`chart-5`, `muted`, `muted-foreground`, `border`, `surface-overlay`, `surface-raised`, `card`, `popover`, `success`, `destructive`, `warning`, `foreground`) — an entry never carries a color literal. The active identity package resolves the actual OKLCH/hex values; these recipes only say which role plays which chrome or ramp job. Chart *form* selection (bar vs. line vs. scatter) is a separate decision layer (B1) upstream of this one — A7 is styling only.
|
|
10
|
+
|
|
11
|
+
## Cross-cutting tells (apply across every recipe below)
|
|
12
|
+
|
|
13
|
+
- **Rainbow categorical soup** — too many saturated hues in one legend reads as "confetti spaghetti" (Datawrapper's term). Prefer running a family of related series in shades of two or three hues over reaching for a fifth or sixth chart token.
|
|
14
|
+
- **Heavy black axes** — keep axis lines thin-to-absent; let the gridline (or the label alone) carry structure instead of a bold ruled line.
|
|
15
|
+
- **Gridlines darker than data** — the three-tier gray hierarchy is a hard rule, not a preference: gridline contrast < label contrast < title contrast, always. A gridline that out-contrasts a data stroke has failed — lighten the gridline token, never darken the data.
|
|
16
|
+
|
|
17
|
+
## Index
|
|
18
|
+
|
|
19
|
+
| id | register | when to use |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `econ-red-rule-horizontal` | editorial, print/slide | single-message hero charts, one accent rule, everything else recedes |
|
|
22
|
+
| `nyt-ghost-grid-direct-label` | editorial, narrative | line/area charts where the series shape is the story; direct end-of-line labels |
|
|
23
|
+
| `ft-vocabulary-ranked-muted` | editorial/financial | a family of related chart types in one story needing shared chrome |
|
|
24
|
+
| `plot-currentcolor-inherit` | embedded/inline | charts dropped into prose or docs, inheriting the page's ink color |
|
|
25
|
+
| `datawrapper-tiered-gray-hierarchy` | editorial default | general-purpose; the three-gray-tier ordering rule |
|
|
26
|
+
| `grafana-dark-threshold-bands` | ops/monitoring | dark-first always-on dashboards; threshold bands carry the alert signal |
|
|
27
|
+
| `datadog-classic-six-aligned` | ops/monitoring | multi-panel monitoring grids needing consistent series identity |
|
|
28
|
+
| `carbon-accessible-alert-semantic` | enterprise/accessibility | dense dashboards under a WCAG contrast mandate |
|
|
29
|
+
| `carbon-monochrome-sequential-trend` | analytics | single-metric trend/heatmap charts, one hue's lightness ramp |
|
|
30
|
+
| `shadcn-composable-css-vars` | product analytics | modern Recharts-via-shadcn UI, chart-N vars feed chrome directly |
|
|
31
|
+
| `material-rounded-explicit-label` | consumer analytics | Material-flavored product, never color-alone encoding |
|
|
32
|
+
| `saas-gradient-glow-area` | growth/marketing | usage charts, upgrade nudges — warmth over analytical density |
|
|
33
|
+
| `financial-diverging-threshold-overlay` | finance/ops | P&L, budget-vs-actual, SLA burn-down — zero-baseline deviation reads |
|