@design-ai/cli 4.55.0
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/.claude-plugin/plugin.json +164 -0
- package/AGENTS.ko.md +126 -0
- package/AGENTS.md +182 -0
- package/CHANGELOG.md +6883 -0
- package/CLAUDE.md +39 -0
- package/LICENSE +21 -0
- package/README.ko.md +245 -0
- package/README.md +277 -0
- package/agents/README.md +14 -0
- package/agents/a11y-reviewer.md +121 -0
- package/agents/component-architect.md +57 -0
- package/agents/design-critic.md +46 -0
- package/agents/token-extractor.md +63 -0
- package/cli/bin/design-ai-mcp.mjs +6 -0
- package/cli/bin/design-ai.mjs +40 -0
- package/cli/commands/audit.mjs +111 -0
- package/cli/commands/check.mjs +226 -0
- package/cli/commands/doctor.mjs +141 -0
- package/cli/commands/examples.mjs +58 -0
- package/cli/commands/help.mjs +271 -0
- package/cli/commands/install.mjs +161 -0
- package/cli/commands/learn.mjs +1871 -0
- package/cli/commands/list.mjs +143 -0
- package/cli/commands/mcp.mjs +27 -0
- package/cli/commands/pack.mjs +211 -0
- package/cli/commands/prompt.mjs +199 -0
- package/cli/commands/route.mjs +247 -0
- package/cli/commands/search.mjs +60 -0
- package/cli/commands/show.mjs +52 -0
- package/cli/commands/site.mjs +558 -0
- package/cli/commands/status.mjs +161 -0
- package/cli/commands/uninstall.mjs +119 -0
- package/cli/commands/update.mjs +184 -0
- package/cli/commands/version.mjs +94 -0
- package/cli/commands/workspace.mjs +176 -0
- package/cli/lib/brief.mjs +52 -0
- package/cli/lib/check.mjs +642 -0
- package/cli/lib/dispatch.mjs +109 -0
- package/cli/lib/doctor.mjs +505 -0
- package/cli/lib/examples.mjs +258 -0
- package/cli/lib/exec.mjs +63 -0
- package/cli/lib/help-flags.mjs +5 -0
- package/cli/lib/learn.mjs +3694 -0
- package/cli/lib/log.mjs +47 -0
- package/cli/lib/mcp-server.mjs +426 -0
- package/cli/lib/output.mjs +101 -0
- package/cli/lib/pack.mjs +599 -0
- package/cli/lib/paths.mjs +63 -0
- package/cli/lib/prompt.mjs +603 -0
- package/cli/lib/route.mjs +740 -0
- package/cli/lib/search.mjs +158 -0
- package/cli/lib/show.mjs +161 -0
- package/cli/lib/signals.mjs +2337 -0
- package/cli/lib/site.mjs +6617 -0
- package/cli/lib/skill-proposals.mjs +2046 -0
- package/cli/lib/suggest.mjs +66 -0
- package/cli/lib/workspace.mjs +1056 -0
- package/commands/README.md +25 -0
- package/commands/component-spec.md +34 -0
- package/commands/conversational.md +44 -0
- package/commands/design-from-brief.md +141 -0
- package/commands/design-review.md +62 -0
- package/commands/document-from-brief.md +47 -0
- package/commands/extract-tokens.md +38 -0
- package/commands/game-ui.md +40 -0
- package/commands/illustration.md +37 -0
- package/commands/iterate.md +167 -0
- package/commands/motion-design.md +54 -0
- package/commands/palette-from-brand.md +50 -0
- package/commands/print.md +49 -0
- package/commands/slide-deck.md +46 -0
- package/commands/spatial.md +47 -0
- package/commands/stability-review.md +74 -0
- package/commands/video.md +42 -0
- package/commands/website-improvement.md +77 -0
- package/docs/AGENT-DEVELOPMENT.md +658 -0
- package/docs/AI-LEARNING.md +429 -0
- package/docs/AIDER-INTEGRATION.md +224 -0
- package/docs/ARCHITECTURE.ko.md +183 -0
- package/docs/ARCHITECTURE.md +105 -0
- package/docs/CODEX-INTEGRATION.md +311 -0
- package/docs/COMPANY-WEBSITE-DOGFOOD.ko.md +144 -0
- package/docs/COMPANY-WEBSITE-DOGFOOD.md +150 -0
- package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.ko.md +153 -0
- package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.md +154 -0
- package/docs/CONTRIBUTING.ko.md +203 -0
- package/docs/CONTRIBUTING.md +242 -0
- package/docs/CURSOR-INTEGRATION.md +220 -0
- package/docs/DISTRIBUTION.ko.md +248 -0
- package/docs/DISTRIBUTION.md +253 -0
- package/docs/DOGFOOD-FINDINGS.md +180 -0
- package/docs/DOGFOOD-V4-FINDINGS.md +139 -0
- package/docs/DOGFOOD-V4-MKDOCS-FINDINGS.md +233 -0
- package/docs/DOGFOOD-V4-NPM-FINDINGS.md +157 -0
- package/docs/DOGFOOD-V4-VSCODE-FINDINGS.md +135 -0
- package/docs/FIGMA-INTEGRATION.md +222 -0
- package/docs/MCP-INTEGRATION.md +243 -0
- package/docs/MIGRATION-v4.md +121 -0
- package/docs/PLUGIN-PACKAGING.md +240 -0
- package/docs/PRODUCT-READINESS.md +66 -0
- package/docs/QUICKSTART.ko.md +178 -0
- package/docs/QUICKSTART.md +179 -0
- package/docs/RELEASE-CHECKLIST.md +292 -0
- package/docs/ROADMAP.md +19495 -0
- package/docs/SESSION-LOG.md +940 -0
- package/docs/TOKEN-SYNC.md +237 -0
- package/docs/USING.ko.md +206 -0
- package/docs/USING.md +218 -0
- package/docs/WEBSITE-IMPROVEMENT.ko.md +75 -0
- package/docs/WEBSITE-IMPROVEMENT.md +89 -0
- package/docs/announcements/README.md +56 -0
- package/docs/announcements/dev-to-korea.md +206 -0
- package/docs/announcements/hashnode-post.ko.md +232 -0
- package/docs/announcements/okky-post.ko.md +158 -0
- package/docs/announcements/press-kit.md +101 -0
- package/docs/announcements/reddit-r-korea.md +196 -0
- package/docs/announcements/show-hn.md +114 -0
- package/docs/announcements/twitter-thread.md +255 -0
- package/docs/external-status.md +34 -0
- package/docs/integrations/aider-walkthrough.ko.md +275 -0
- package/docs/integrations/aider-walkthrough.md +274 -0
- package/docs/integrations/codex-walkthrough.ko.md +297 -0
- package/docs/integrations/codex-walkthrough.md +297 -0
- package/docs/integrations/cursor-walkthrough.ko.md +281 -0
- package/docs/integrations/cursor-walkthrough.md +284 -0
- package/docs/integrations/design-ai-mcp-server.md +169 -0
- package/docs/integrations/figma-mcp.md +149 -0
- package/docs/integrations/github-mcp.md +178 -0
- package/docs/integrations/linear-mcp.md +215 -0
- package/docs/integrations/notion-mcp.md +174 -0
- package/docs/integrations/sdk-walkthrough.ko.md +375 -0
- package/docs/integrations/sdk-walkthrough.md +375 -0
- package/docs/integrations/slack-mcp.md +208 -0
- package/docs/integrations/vscode-walkthrough.ko.md +202 -0
- package/docs/integrations/vscode-walkthrough.md +205 -0
- package/docs/requirements.txt +16 -0
- package/docs/site-overrides/extra.css +83 -0
- package/docs/site-overrides/favicon.svg +4 -0
- package/docs/site-overrides/logo.svg +10 -0
- package/docs/site-overrides/main.html +18 -0
- package/docs/website-console/app.js +2540 -0
- package/docs/website-console/index.html +24 -0
- package/docs/website-console/styles.css +975 -0
- package/examples/README.md +252 -0
- package/examples/cases/dogfood-v4-korean-hr-onboarding.md +356 -0
- package/examples/component-accordion-actions.md +153 -0
- package/examples/component-accordion-details.md +147 -0
- package/examples/component-accordion-summary.md +180 -0
- package/examples/component-accordion.md +229 -0
- package/examples/component-account-card.md +284 -0
- package/examples/component-address-input.md +260 -0
- package/examples/component-affix.md +190 -0
- package/examples/component-alert-dialog.md +210 -0
- package/examples/component-alert-title.md +77 -0
- package/examples/component-alert.md +192 -0
- package/examples/component-amount-input.md +278 -0
- package/examples/component-anchor.md +198 -0
- package/examples/component-app-bar.md +249 -0
- package/examples/component-aspect-ratio.md +156 -0
- package/examples/component-auto-complete.md +199 -0
- package/examples/component-avatar-group.md +170 -0
- package/examples/component-avatar.md +191 -0
- package/examples/component-back-top.md +123 -0
- package/examples/component-backdrop.md +148 -0
- package/examples/component-badge.md +181 -0
- package/examples/component-banner.md +237 -0
- package/examples/component-biometric-gate.md +281 -0
- package/examples/component-blockquote.md +153 -0
- package/examples/component-border-beam.md +207 -0
- package/examples/component-bottom-navigation.md +226 -0
- package/examples/component-box.md +112 -0
- package/examples/component-breadcrumb.md +222 -0
- package/examples/component-button-base.md +190 -0
- package/examples/component-button-group.md +117 -0
- package/examples/component-button.md +213 -0
- package/examples/component-calendar.md +280 -0
- package/examples/component-callout.md +131 -0
- package/examples/component-card-actions.md +101 -0
- package/examples/component-card-content.md +90 -0
- package/examples/component-card-header.md +122 -0
- package/examples/component-card-media.md +79 -0
- package/examples/component-card.md +233 -0
- package/examples/component-carousel.md +266 -0
- package/examples/component-cascader.md +135 -0
- package/examples/component-category-picker.md +271 -0
- package/examples/component-chart.md +237 -0
- package/examples/component-chat-interface.md +399 -0
- package/examples/component-checkbox.md +149 -0
- package/examples/component-click-away-listener.md +87 -0
- package/examples/component-code.md +213 -0
- package/examples/component-collapsible.md +219 -0
- package/examples/component-color-picker.md +110 -0
- package/examples/component-combobox.md +267 -0
- package/examples/component-command.md +299 -0
- package/examples/component-config-provider.md +190 -0
- package/examples/component-context-menu.md +179 -0
- package/examples/component-css-baseline.md +148 -0
- package/examples/component-date-picker.md +249 -0
- package/examples/component-descriptions.md +242 -0
- package/examples/component-dialog-actions.md +111 -0
- package/examples/component-dialog-content-text.md +76 -0
- package/examples/component-dialog-content.md +105 -0
- package/examples/component-dialog-title.md +104 -0
- package/examples/component-dialog.md +176 -0
- package/examples/component-divider.md +182 -0
- package/examples/component-doc-page.md +217 -0
- package/examples/component-drawer.md +257 -0
- package/examples/component-dropdown.md +220 -0
- package/examples/component-email-layout.md +253 -0
- package/examples/component-empty-state.md +269 -0
- package/examples/component-empty.md +172 -0
- package/examples/component-fade.md +87 -0
- package/examples/component-feature-grid.md +201 -0
- package/examples/component-field.md +266 -0
- package/examples/component-filled-input.md +114 -0
- package/examples/component-flex.md +117 -0
- package/examples/component-float-button.md +214 -0
- package/examples/component-form-control-label.md +134 -0
- package/examples/component-form-control.md +113 -0
- package/examples/component-form-controls.md +251 -0
- package/examples/component-form-group.md +86 -0
- package/examples/component-form-helper-text.md +95 -0
- package/examples/component-form-label.md +98 -0
- package/examples/component-form.md +291 -0
- package/examples/component-game-hud.md +362 -0
- package/examples/component-game-menu.md +327 -0
- package/examples/component-grid.md +140 -0
- package/examples/component-grow.md +79 -0
- package/examples/component-hero-block.md +252 -0
- package/examples/component-hover-card.md +211 -0
- package/examples/component-icon-button.md +142 -0
- package/examples/component-icon.md +102 -0
- package/examples/component-illustration.md +280 -0
- package/examples/component-image-list.md +107 -0
- package/examples/component-image.md +282 -0
- package/examples/component-input-adornment.md +101 -0
- package/examples/component-input-base.md +134 -0
- package/examples/component-input-number.md +141 -0
- package/examples/component-input-otp.md +271 -0
- package/examples/component-input.md +213 -0
- package/examples/component-item.md +243 -0
- package/examples/component-kbd.md +197 -0
- package/examples/component-krw-amount.md +219 -0
- package/examples/component-label.md +118 -0
- package/examples/component-layout.md +217 -0
- package/examples/component-link.md +223 -0
- package/examples/component-list-item-avatar.md +72 -0
- package/examples/component-list-item-button.md +139 -0
- package/examples/component-list-item-icon.md +82 -0
- package/examples/component-list-item-text.md +98 -0
- package/examples/component-list-item.md +116 -0
- package/examples/component-list-subheader.md +70 -0
- package/examples/component-list.md +198 -0
- package/examples/component-loading-button.md +125 -0
- package/examples/component-loading-sequence.md +254 -0
- package/examples/component-lottie-player.md +279 -0
- package/examples/component-masonry.md +191 -0
- package/examples/component-mentions.md +189 -0
- package/examples/component-menu-item.md +102 -0
- package/examples/component-menu-list.md +98 -0
- package/examples/component-menu.md +139 -0
- package/examples/component-menubar.md +259 -0
- package/examples/component-message.md +162 -0
- package/examples/component-mobile-stepper.md +155 -0
- package/examples/component-modal.md +220 -0
- package/examples/component-navigation-menu.md +295 -0
- package/examples/component-notification.md +166 -0
- package/examples/component-otp-countdown.md +245 -0
- package/examples/component-outlined-input.md +145 -0
- package/examples/component-page-transition.md +281 -0
- package/examples/component-pagination.md +226 -0
- package/examples/component-paper.md +199 -0
- package/examples/component-pass-auth.md +265 -0
- package/examples/component-payment-brand-button.md +253 -0
- package/examples/component-payment-method-selector.md +272 -0
- package/examples/component-payment-receipt.md +277 -0
- package/examples/component-popconfirm.md +144 -0
- package/examples/component-popover.md +239 -0
- package/examples/component-popper.md +129 -0
- package/examples/component-pricing-cards.md +247 -0
- package/examples/component-progress.md +195 -0
- package/examples/component-qr-code.md +201 -0
- package/examples/component-radio.md +167 -0
- package/examples/component-rate.md +202 -0
- package/examples/component-resizable.md +163 -0
- package/examples/component-result.md +270 -0
- package/examples/component-scroll-area.md +199 -0
- package/examples/component-scroll-reveal.md +320 -0
- package/examples/component-segmented.md +178 -0
- package/examples/component-select.md +258 -0
- package/examples/component-separator.md +177 -0
- package/examples/component-sheet.md +277 -0
- package/examples/component-sidebar.md +257 -0
- package/examples/component-skeleton.md +178 -0
- package/examples/component-slide.md +89 -0
- package/examples/component-slider.md +208 -0
- package/examples/component-snackbar-content.md +92 -0
- package/examples/component-snackbar.md +121 -0
- package/examples/component-sonner.md +165 -0
- package/examples/component-space.md +125 -0
- package/examples/component-spatial-locomotion.md +373 -0
- package/examples/component-spatial-panel.md +330 -0
- package/examples/component-speed-dial-action.md +78 -0
- package/examples/component-speed-dial.md +177 -0
- package/examples/component-spin.md +173 -0
- package/examples/component-spinner.md +204 -0
- package/examples/component-splitter.md +210 -0
- package/examples/component-stack.md +130 -0
- package/examples/component-statistic.md +282 -0
- package/examples/component-step-button.md +157 -0
- package/examples/component-step-connector.md +157 -0
- package/examples/component-step-content.md +121 -0
- package/examples/component-step-icon.md +115 -0
- package/examples/component-step-label.md +101 -0
- package/examples/component-step.md +84 -0
- package/examples/component-steps.md +264 -0
- package/examples/component-stock-chart.md +251 -0
- package/examples/component-swipeable-drawer.md +149 -0
- package/examples/component-switch.md +99 -0
- package/examples/component-tab-scroll-button.md +180 -0
- package/examples/component-tab.md +120 -0
- package/examples/component-table-body.md +82 -0
- package/examples/component-table-cell.md +118 -0
- package/examples/component-table-container.md +75 -0
- package/examples/component-table-footer.md +72 -0
- package/examples/component-table-head.md +78 -0
- package/examples/component-table-pagination.md +137 -0
- package/examples/component-table-row.md +113 -0
- package/examples/component-table-sort-label.md +109 -0
- package/examples/component-table.md +202 -0
- package/examples/component-tabs.md +184 -0
- package/examples/component-tag-badge.md +309 -0
- package/examples/component-tag.md +102 -0
- package/examples/component-testimonial-carousel.md +218 -0
- package/examples/component-textarea-autosize.md +114 -0
- package/examples/component-textarea.md +173 -0
- package/examples/component-time-picker.md +205 -0
- package/examples/component-timeline.md +170 -0
- package/examples/component-toast.md +224 -0
- package/examples/component-toggle-button.md +129 -0
- package/examples/component-toggle.md +220 -0
- package/examples/component-toolbar.md +104 -0
- package/examples/component-tooltip.md +178 -0
- package/examples/component-tour.md +176 -0
- package/examples/component-transaction-list-item.md +243 -0
- package/examples/component-transfer.md +156 -0
- package/examples/component-tree-select.md +202 -0
- package/examples/component-tree.md +297 -0
- package/examples/component-typography.md +215 -0
- package/examples/component-upload.md +295 -0
- package/examples/component-video-hero.md +409 -0
- package/examples/component-video-player.md +340 -0
- package/examples/component-voice-input.md +408 -0
- package/examples/component-watermark.md +217 -0
- package/examples/component-zoom.md +92 -0
- package/examples/doc-explanation-example.md +196 -0
- package/examples/doc-how-to-example.md +205 -0
- package/examples/doc-tutorial-example.md +162 -0
- package/examples/dogfood-korean-fintech-system.md +433 -0
- package/examples/email-transactional-example.md +259 -0
- package/examples/palette-saas-violet.md +235 -0
- package/examples/print-business-card-spec.md +205 -0
- package/examples/print-packaging-spec.md +285 -0
- package/examples/report-example.md +228 -0
- package/examples/slide-deck-example.md +237 -0
- package/examples/website-improvement-report.md +128 -0
- package/examples/website-improvement-workspace.json +126 -0
- package/install.sh +189 -0
- package/knowledge/COVERAGE.md +740 -0
- package/knowledge/PRINCIPLES.md +108 -0
- package/knowledge/a11y/contrast.md +70 -0
- package/knowledge/a11y/keyboard-and-focus.md +108 -0
- package/knowledge/colors/color-theory.md +90 -0
- package/knowledge/colors/mui-palette-structure.md +105 -0
- package/knowledge/colors/palettes-by-product-type.md +876 -0
- package/knowledge/components/INDEX.md +231 -0
- package/knowledge/components/index.json +1470 -0
- package/knowledge/components/shadcn-registry.md +159 -0
- package/knowledge/conversational/ai-chat-interfaces.md +323 -0
- package/knowledge/conversational/chatbot-design.md +312 -0
- package/knowledge/conversational/conversational-ui-fundamentals.md +299 -0
- package/knowledge/conversational/korean-voice-conventions.md +281 -0
- package/knowledge/conversational/voice-ui-patterns.md +297 -0
- package/knowledge/design-tokens/ant-design.md +124 -0
- package/knowledge/design-tokens/material-3.md +235 -0
- package/knowledge/design-tokens/polaris-and-carbon.md +231 -0
- package/knowledge/design-tokens/tailwind-v4.md +284 -0
- package/knowledge/game-ui/game-accessibility.md +317 -0
- package/knowledge/game-ui/game-ui-fundamentals.md +281 -0
- package/knowledge/game-ui/hud-design.md +324 -0
- package/knowledge/game-ui/korean-gaming-conventions.md +312 -0
- package/knowledge/game-ui/menu-systems.md +388 -0
- package/knowledge/i18n/korean-app-store-visual.md +223 -0
- package/knowledge/i18n/korean-document-style.md +301 -0
- package/knowledge/i18n/korean-payments.md +211 -0
- package/knowledge/i18n/korean-product-conventions.md +96 -0
- package/knowledge/i18n/korean-publishing.md +139 -0
- package/knowledge/i18n/korean-typography.md +123 -0
- package/knowledge/icons/curated-sets.md +225 -0
- package/knowledge/illustration/hero-illustrations.md +234 -0
- package/knowledge/illustration/illustration-systems.md +221 -0
- package/knowledge/illustration/mascot-design.md +208 -0
- package/knowledge/illustration/spot-illustrations.md +246 -0
- package/knowledge/illustration/svg-optimization.md +308 -0
- package/knowledge/layout/spacing-and-grid.md +119 -0
- package/knowledge/motion/app-loading-sequences.md +277 -0
- package/knowledge/motion/choreography-depth.md +297 -0
- package/knowledge/motion/marketing-motion.md +223 -0
- package/knowledge/motion/micro-interactions.md +266 -0
- package/knowledge/motion/motion-tools.md +281 -0
- package/knowledge/motion/principles.md +126 -0
- package/knowledge/patterns/auth-flow-design.md +316 -0
- package/knowledge/patterns/b2b-onboarding-flows.md +182 -0
- package/knowledge/patterns/brand-identity.md +238 -0
- package/knowledge/patterns/brand-references.md +97 -0
- package/knowledge/patterns/chart-color-encoding.md +269 -0
- package/knowledge/patterns/chart-types.md +344 -0
- package/knowledge/patterns/dashboard-composition.md +299 -0
- package/knowledge/patterns/design-system-qa.md +356 -0
- package/knowledge/patterns/document-typography.md +248 -0
- package/knowledge/patterns/email-design.md +338 -0
- package/knowledge/patterns/empty-states.md +263 -0
- package/knowledge/patterns/error-states.md +318 -0
- package/knowledge/patterns/form-design.md +237 -0
- package/knowledge/patterns/information-architecture.md +341 -0
- package/knowledge/patterns/landing-hero-design.md +283 -0
- package/knowledge/patterns/landing-page-patterns.md +681 -0
- package/knowledge/patterns/list-and-feed.md +371 -0
- package/knowledge/patterns/mobile-navigation.md +278 -0
- package/knowledge/patterns/money-and-amount.md +301 -0
- package/knowledge/patterns/onboarding.md +300 -0
- package/knowledge/patterns/pricing-page-design.md +261 -0
- package/knowledge/patterns/realtime-data.md +280 -0
- package/knowledge/patterns/report-design.md +330 -0
- package/knowledge/patterns/search-ux.md +373 -0
- package/knowledge/patterns/settings-page.md +325 -0
- package/knowledge/patterns/slide-deck-design.md +316 -0
- package/knowledge/patterns/styles-catalog.md +2599 -0
- package/knowledge/patterns/technical-writing.md +306 -0
- package/knowledge/patterns/ui-reasoning.md +1853 -0
- package/knowledge/patterns/ux-guidelines.md +1454 -0
- package/knowledge/platforms/react-native.md +395 -0
- package/knowledge/print/brochures-and-flyers.md +276 -0
- package/knowledge/print/korean-print-conventions.md +284 -0
- package/knowledge/print/packaging.md +321 -0
- package/knowledge/print/print-fundamentals.md +238 -0
- package/knowledge/print/signage-and-posters.md +235 -0
- package/knowledge/print/stationery.md +262 -0
- package/knowledge/spatial/ar-patterns.md +253 -0
- package/knowledge/spatial/comfort-and-accessibility.md +245 -0
- package/knowledge/spatial/spatial-design-fundamentals.md +346 -0
- package/knowledge/spatial/spatial-ui-elements.md +343 -0
- package/knowledge/spatial/vr-patterns.md +302 -0
- package/knowledge/typography/font-pairings.md +332 -0
- package/knowledge/typography/mui-type-scale.md +57 -0
- package/knowledge/typography/type-scale-fundamentals.md +105 -0
- package/knowledge/video/in-product-video.md +277 -0
- package/knowledge/video/korean-video-conventions.md +247 -0
- package/knowledge/video/marketing-video.md +258 -0
- package/knowledge/video/social-and-short-form.md +257 -0
- package/knowledge/video/video-fundamentals.md +296 -0
- package/package.json +106 -0
- package/skills/README.md +39 -0
- package/skills/color-palette/PLAYBOOK.md +175 -0
- package/skills/color-palette/SKILL.md +6 -0
- package/skills/color-palette/TEMPLATE.md +103 -0
- package/skills/component-spec-writer/PLAYBOOK.md +169 -0
- package/skills/component-spec-writer/SKILL.md +6 -0
- package/skills/component-spec-writer/TEMPLATE.md +115 -0
- package/skills/conversational-ui-designer/PLAYBOOK.md +231 -0
- package/skills/conversational-ui-designer/SKILL.md +6 -0
- package/skills/design-broadcast/PLAYBOOK.md +146 -0
- package/skills/design-broadcast/SKILL.md +6 -0
- package/skills/design-critique/PLAYBOOK.md +137 -0
- package/skills/design-critique/SKILL.md +6 -0
- package/skills/design-pr-review/PLAYBOOK.md +171 -0
- package/skills/design-pr-review/SKILL.md +6 -0
- package/skills/design-system-builder/PLAYBOOK.md +218 -0
- package/skills/design-system-builder/SKILL.md +6 -0
- package/skills/design-system-qa/PLAYBOOK.md +163 -0
- package/skills/design-system-qa/SKILL.md +6 -0
- package/skills/document-author/PLAYBOOK.md +167 -0
- package/skills/document-author/SKILL.md +6 -0
- package/skills/figma-token-sync/PLAYBOOK.md +149 -0
- package/skills/figma-token-sync/SKILL.md +6 -0
- package/skills/game-ui-designer/PLAYBOOK.md +209 -0
- package/skills/game-ui-designer/SKILL.md +6 -0
- package/skills/handoff-spec/PLAYBOOK.md +170 -0
- package/skills/handoff-spec/SKILL.md +6 -0
- package/skills/illustration-designer/PLAYBOOK.md +166 -0
- package/skills/illustration-designer/SKILL.md +6 -0
- package/skills/motion-designer/PLAYBOOK.md +223 -0
- package/skills/motion-designer/SKILL.md +6 -0
- package/skills/print-designer/PLAYBOOK.md +209 -0
- package/skills/print-designer/SKILL.md +6 -0
- package/skills/slide-deck-author/PLAYBOOK.md +198 -0
- package/skills/slide-deck-author/SKILL.md +6 -0
- package/skills/spatial-designer/PLAYBOOK.md +238 -0
- package/skills/spatial-designer/SKILL.md +6 -0
- package/skills/ux-audit/PLAYBOOK.md +142 -0
- package/skills/ux-audit/SKILL.md +6 -0
- package/skills/video-designer/PLAYBOOK.md +240 -0
- package/skills/video-designer/SKILL.md +6 -0
- package/skills/website-improvement/PLAYBOOK.md +118 -0
- package/skills/website-improvement/SKILL.md +6 -0
- package/skills/website-improvement/TEMPLATE.md +103 -0
- package/tools/audit/changelog-generate.py +176 -0
- package/tools/audit/check-coverage.py +483 -0
- package/tools/audit/doctor_assertions.py +256 -0
- package/tools/audit/example-qa.py +108 -0
- package/tools/audit/frontmatter-check.py +199 -0
- package/tools/audit/integration-check.py +95 -0
- package/tools/audit/korean-copy-check.py +161 -0
- package/tools/audit/link-check.py +146 -0
- package/tools/audit/local-ci.py +558 -0
- package/tools/audit/package-contents.py +723 -0
- package/tools/audit/package-smoke.py +22443 -0
- package/tools/audit/raw-hex-check.py +252 -0
- package/tools/audit/registry-smoke.py +8188 -0
- package/tools/audit/release-metadata.py +9832 -0
- package/tools/audit/run-all.py +351 -0
- package/tools/audit/smoke_assertions.py +12742 -0
- package/tools/audit/stability-review.py +332 -0
- package/tools/audit/stale-check.py +156 -0
- package/tools/migrations/add-version-frontmatter.py +132 -0
- package/tools/migrations/bump-last-updated.py +131 -0
- package/tools/migrations/promote-stability.py +172 -0
- package/tools/preview/README.md +58 -0
- package/tools/preview/render-tokens.py +454 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
---
|
|
3
|
+
title: Brand identity foundations
|
|
4
|
+
applies_to: [brand, identity, logo, voice]
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
last_updated: 2026-05
|
|
7
|
+
stability: stable
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Brand identity
|
|
11
|
+
|
|
12
|
+
design-ai consumes brand inputs (colors, fonts, voice) to make design choices. This file covers the **brand fundamentals** every product design touches — even if you're not designing the brand itself.
|
|
13
|
+
|
|
14
|
+
## What brand identity contains
|
|
15
|
+
|
|
16
|
+
Brand identity is roughly 5 layers, from most-visible to least:
|
|
17
|
+
|
|
18
|
+
| Layer | Examples |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| **Logo** | Wordmark, lettermark, symbol, combination |
|
|
21
|
+
| **Color** | Primary, accent, neutrals (the palette your product uses) |
|
|
22
|
+
| **Typography** | Brand font(s) — used in marketing AND product |
|
|
23
|
+
| **Voice / tone** | How you write — playful vs serious, polite vs casual |
|
|
24
|
+
| **Imagery / illustration** | Photo style, illustration system, iconography |
|
|
25
|
+
|
|
26
|
+
A "brand guideline" document covers all five.
|
|
27
|
+
|
|
28
|
+
## Logo — fundamentals
|
|
29
|
+
|
|
30
|
+
design-ai doesn't generate logos but specs how they're used. Common rules:
|
|
31
|
+
|
|
32
|
+
### Anatomy
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Lettermark: Wordmark: Symbol: Combination:
|
|
36
|
+
[T] Toss [○] [○] Toss
|
|
37
|
+
brand
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| Type | Use |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| **Lettermark** | Single letter (KakaoBank's "K", Toss's "T"). Compact, memorable. |
|
|
43
|
+
| **Wordmark** | Just the company name styled. (Google, Coupang) |
|
|
44
|
+
| **Symbol** | No text. Recognizable enough alone. (Apple's apple) |
|
|
45
|
+
| **Combination** | Symbol + wordmark. Most flexible. |
|
|
46
|
+
|
|
47
|
+
For Korean apps: lettermarks are common (한 글자 — K, T, N) due to Hangul/Latin compatibility.
|
|
48
|
+
|
|
49
|
+
### Logo rules
|
|
50
|
+
|
|
51
|
+
- **Minimum clear space**: padding around the logo equal to the cap-height of the wordmark (or radius of symbol).
|
|
52
|
+
- **Minimum size**: typically 16px (favicon) / 24px (standard). Below this: lettermark only.
|
|
53
|
+
- **Don't distort**: stretch, skew, gradient, drop-shadow on logos = brand violation.
|
|
54
|
+
- **Locked combinations**: if "logo + tagline" is locked, never split.
|
|
55
|
+
- **Color treatment**: brand color (default), white-on-dark (for dark backgrounds), 1-color (for ink-restrictive contexts).
|
|
56
|
+
|
|
57
|
+
### Logo variants per context
|
|
58
|
+
|
|
59
|
+
A real brand kit ships:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
logo/
|
|
63
|
+
├── primary.svg # default — full color
|
|
64
|
+
├── primary-white.svg # for dark backgrounds
|
|
65
|
+
├── primary-black.svg # 1-color, ink-only
|
|
66
|
+
├── lettermark.svg # symbol-only
|
|
67
|
+
├── lettermark-white.svg
|
|
68
|
+
├── horizontal.svg # stacked is default; horizontal for narrow placements
|
|
69
|
+
├── icon-32.png # raster for app icon
|
|
70
|
+
└── icon-1024.png # high-res for app store
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Provide all variants — designers and devs grab what they need.
|
|
74
|
+
|
|
75
|
+
## Color (brand)
|
|
76
|
+
|
|
77
|
+
The brand color set is **input** to design-ai's `color-palette` skill. See [`knowledge/colors/color-theory.md`](../colors/color-theory.md) for ramp construction.
|
|
78
|
+
|
|
79
|
+
Brand color = **primary anchor**. Everything else is generated from it.
|
|
80
|
+
|
|
81
|
+
A brand kit specifies:
|
|
82
|
+
- **Primary** (the seed)
|
|
83
|
+
- **Optional secondary** (often a complementary or accent hue)
|
|
84
|
+
- **Neutral** (often a hue-tinted gray matched to the primary)
|
|
85
|
+
- **Forbidden colors** (e.g., "never use red except for errors")
|
|
86
|
+
- **Color usage rules** ("primary on hero only, accent for CTAs")
|
|
87
|
+
|
|
88
|
+
The **product's** semantic palette (text, bg, border) is derived. Brand provides hue; design system provides system.
|
|
89
|
+
|
|
90
|
+
## Typography (brand)
|
|
91
|
+
|
|
92
|
+
Brand fonts often differ from product fonts:
|
|
93
|
+
|
|
94
|
+
| Surface | Font choice |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| Marketing site (hero) | Display brand font — distinct, memorable |
|
|
97
|
+
| Marketing body | Brand font OR humanist sans |
|
|
98
|
+
| Product UI | Often a different font — system or workhorse sans |
|
|
99
|
+
| Documents | A serif or paired humanist sans |
|
|
100
|
+
|
|
101
|
+
For Korean apps: Pretendard often works at all surfaces. Trying to maintain "brand font in marketing, Pretendard in product" creates inconsistency.
|
|
102
|
+
|
|
103
|
+
Practical: pick **one font for product + secondary marketing surfaces**, and *one display* font for hero / landing if you want extra brand punch.
|
|
104
|
+
|
|
105
|
+
## Voice / tone
|
|
106
|
+
|
|
107
|
+
Voice and tone are different:
|
|
108
|
+
|
|
109
|
+
| | Definition |
|
|
110
|
+
| --- | --- |
|
|
111
|
+
| **Voice** | Personality. Stays consistent across all contexts. |
|
|
112
|
+
| **Tone** | Emotional register. Varies by context. |
|
|
113
|
+
|
|
114
|
+
Brand voice example: "Warm, direct, knowledgeable, never preachy."
|
|
115
|
+
Tone variations:
|
|
116
|
+
- Onboarding email: warmer, encouraging.
|
|
117
|
+
- Error message: direct, no apologies, action-oriented.
|
|
118
|
+
- Marketing landing page: confident, declarative.
|
|
119
|
+
- Customer support: warm, patient, problem-solving.
|
|
120
|
+
|
|
121
|
+
### Voice attributes (typical brand kit)
|
|
122
|
+
|
|
123
|
+
A voice kit defines 4–6 attributes with **what we are AND what we're not**:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
We are: Warm
|
|
127
|
+
NOT: Sycophantic ("Hey friend!" is too much)
|
|
128
|
+
|
|
129
|
+
We are: Direct
|
|
130
|
+
NOT: Curt ("Done." is too cold)
|
|
131
|
+
|
|
132
|
+
We are: Knowledgeable
|
|
133
|
+
NOT: Condescending ("Obviously, you should..." — no.)
|
|
134
|
+
|
|
135
|
+
We are: Confident
|
|
136
|
+
NOT: Brash ("Best in the world!" — no.)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This dual definition prevents drift.
|
|
140
|
+
|
|
141
|
+
### Korean voice considerations
|
|
142
|
+
|
|
143
|
+
For Korean apps, choose a **honorific level** as part of voice:
|
|
144
|
+
|
|
145
|
+
| Level | When to use | Example |
|
|
146
|
+
| --- | --- | --- |
|
|
147
|
+
| 존댓말 (~합니다) | Formal — banking, fintech, B2B | "잠시 후 다시 시도해 주세요." |
|
|
148
|
+
| 존댓말 (~해요) | Friendly — consumer apps, casual | "다시 한번 시도해 주세요." |
|
|
149
|
+
| 반말 | **Don't use** in product UI | (avoid) |
|
|
150
|
+
|
|
151
|
+
Most consumer Korean apps use casual ~해요. Banking / fintech: ~합니다 / ~합니다 mixed.
|
|
152
|
+
|
|
153
|
+
## Imagery / illustration
|
|
154
|
+
|
|
155
|
+
Brand imagery is a hidden axis. Often missing from "I have a brand color" briefs.
|
|
156
|
+
|
|
157
|
+
| Style | Examples | Use |
|
|
158
|
+
| --- | --- | --- |
|
|
159
|
+
| **Photography (lifestyle)** | Real people, natural lighting | Marketing, e-commerce |
|
|
160
|
+
| **Photography (product)** | Hero shots, on-white | E-commerce |
|
|
161
|
+
| **Illustration (line)** | Single-color outline drawings | Tech docs, UI empty states |
|
|
162
|
+
| **Illustration (flat)** | Multi-color flat shapes | Marketing, onboarding |
|
|
163
|
+
| **Illustration (3D / Memphis)** | Dimensional shapes | Tech / fintech (Toss-style) |
|
|
164
|
+
| **Geometric / abstract** | Shapes, no people | Tech, B2B |
|
|
165
|
+
|
|
166
|
+
Pick one style for the brand. **Don't mix** illustration styles within the product — Apple-style 3D in onboarding + Memphis in errors = visual chaos.
|
|
167
|
+
|
|
168
|
+
For Korean apps: Toss-style 3D abstract is currently dominant in fintech. KakaoBank uses flat illustrations. Pick a side per product.
|
|
169
|
+
|
|
170
|
+
## Brand vs design system
|
|
171
|
+
|
|
172
|
+
Brand and design system are **adjacent but distinct**:
|
|
173
|
+
|
|
174
|
+
| | Brand | Design system |
|
|
175
|
+
| --- | --- | --- |
|
|
176
|
+
| **Owned by** | Marketing / leadership | Engineering / product design |
|
|
177
|
+
| **Audience** | Customers, market | Builders (designers, devs) |
|
|
178
|
+
| **Output** | Logo, voice, brand kit | Tokens, components, patterns |
|
|
179
|
+
| **Updated** | Rarely (every 3–5 years) | Frequently (per quarter) |
|
|
180
|
+
| **Source of truth** | Brand book | tokens/source.json + Storybook |
|
|
181
|
+
|
|
182
|
+
Design system **inherits** from brand:
|
|
183
|
+
- Brand primary → semantic primary token
|
|
184
|
+
- Brand font → product type stack
|
|
185
|
+
- Brand voice → component copy
|
|
186
|
+
|
|
187
|
+
design-ai's role: take brand inputs, produce the design system.
|
|
188
|
+
|
|
189
|
+
## Brand audit (against brand kit)
|
|
190
|
+
|
|
191
|
+
Use this checklist when reviewing whether a product matches its brand:
|
|
192
|
+
|
|
193
|
+
- [ ] Logo: rendered correctly, sized within bounds, in approved variants only.
|
|
194
|
+
- [ ] Color: primary used per spec; semantic tokens reference it; no rogue brand colors elsewhere.
|
|
195
|
+
- [ ] Typography: brand font used (or designed alternative); fallback chain correct.
|
|
196
|
+
- [ ] Voice: error messages, empty states, CTAs match voice attributes.
|
|
197
|
+
- [ ] Imagery: one illustration style; photos match brand guidelines (lifestyle / product / etc.).
|
|
198
|
+
- [ ] Iconography: single icon library, consistent stroke width.
|
|
199
|
+
- [ ] Motion: brand has motion language? Check that animations match.
|
|
200
|
+
|
|
201
|
+
Run as a once-per-quarter check.
|
|
202
|
+
|
|
203
|
+
## Brand kit format
|
|
204
|
+
|
|
205
|
+
A real brand kit is typically:
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
brand-kit/
|
|
209
|
+
├── README.md # how to use this kit
|
|
210
|
+
├── logo/ # SVG + PNG variants
|
|
211
|
+
├── color.json # primary, secondary, neutrals, semantic
|
|
212
|
+
├── typography.md # font choices, weights, scale, fallbacks
|
|
213
|
+
├── voice.md # attributes, dos/don'ts, copy examples
|
|
214
|
+
├── imagery/ # reference images, illustration system
|
|
215
|
+
├── icons/ # if custom icons exist
|
|
216
|
+
└── examples/ # marketing pages, ads, screenshots showing the brand
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
The "brand book" PDF (typical agency deliverable) is a presentation of this kit — the kit itself is the working artifact.
|
|
220
|
+
|
|
221
|
+
## When to invest in brand vs design system
|
|
222
|
+
|
|
223
|
+
If you have neither: **invest in design system first**. A working product with a thin brand beats a brand book with no product.
|
|
224
|
+
|
|
225
|
+
If you have a strong brand but inconsistent product: invest in design system. The brand will guide it.
|
|
226
|
+
|
|
227
|
+
If you have a working design system but no brand identity: a brand book solidifies decisions but isn't urgent unless marketing demands it.
|
|
228
|
+
|
|
229
|
+
For early-stage Korean fintech / startup: focus design system first; brand emerges via product use.
|
|
230
|
+
|
|
231
|
+
## Cross-reference
|
|
232
|
+
|
|
233
|
+
- [`knowledge/colors/color-theory.md`](../colors/color-theory.md) — palette construction from brand color
|
|
234
|
+
- [`knowledge/typography/font-pairings.md`](../typography/font-pairings.md) — font selection per mood
|
|
235
|
+
- [`knowledge/patterns/styles-catalog.md`](styles-catalog.md) — visual style families
|
|
236
|
+
- [`knowledge/patterns/brand-references.md`](brand-references.md) — peer brand references
|
|
237
|
+
- [`skills/design-system-builder/PLAYBOOK.md`](../../skills/design-system-builder/PLAYBOOK.md) — converts brand inputs to a system
|
|
238
|
+
- [`knowledge/i18n/korean-product-conventions.md`](../i18n/korean-product-conventions.md) — Korean voice conventions
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Brand reference index
|
|
3
|
+
source: refs/awesome-design-md/design-md/
|
|
4
|
+
upstream: https://github.com/VoltAgent/awesome-design-md
|
|
5
|
+
extracted_at: 2026-05-19
|
|
6
|
+
applies_to: [art-direction, brand-research]
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
last_updated: 2026-05
|
|
9
|
+
stability: stable
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Brand reference index
|
|
13
|
+
|
|
14
|
+
Curated design notes on 71 brands. When designing for a comparable category, open the brand's notes for token references, voice, and visual cues.
|
|
15
|
+
|
|
16
|
+
| Brand | Files |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
|
|
19
|
+
| **[airbnb](../../refs/awesome-design-md/design-md/airbnb/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/airbnb/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/airbnb/README.md) |
|
|
20
|
+
| **[airtable](../../refs/awesome-design-md/design-md/airtable/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/airtable/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/airtable/README.md) |
|
|
21
|
+
| **[apple](../../refs/awesome-design-md/design-md/apple/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/apple/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/apple/README.md) |
|
|
22
|
+
| **[binance](../../refs/awesome-design-md/design-md/binance/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/binance/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/binance/README.md) |
|
|
23
|
+
| **[bmw](../../refs/awesome-design-md/design-md/bmw/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/bmw/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/bmw/README.md) |
|
|
24
|
+
| **[bmw-m](../../refs/awesome-design-md/design-md/bmw-m/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/bmw-m/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/bmw-m/README.md) |
|
|
25
|
+
| **[bugatti](../../refs/awesome-design-md/design-md/bugatti/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/bugatti/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/bugatti/README.md) |
|
|
26
|
+
| **[cal](../../refs/awesome-design-md/design-md/cal/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/cal/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/cal/README.md) |
|
|
27
|
+
| **[claude](../../refs/awesome-design-md/design-md/claude/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/claude/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/claude/README.md) |
|
|
28
|
+
| **[clay](../../refs/awesome-design-md/design-md/clay/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/clay/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/clay/README.md) |
|
|
29
|
+
| **[clickhouse](../../refs/awesome-design-md/design-md/clickhouse/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/clickhouse/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/clickhouse/README.md) |
|
|
30
|
+
| **[cohere](../../refs/awesome-design-md/design-md/cohere/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/cohere/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/cohere/README.md) |
|
|
31
|
+
| **[coinbase](../../refs/awesome-design-md/design-md/coinbase/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/coinbase/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/coinbase/README.md) |
|
|
32
|
+
| **[composio](../../refs/awesome-design-md/design-md/composio/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/composio/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/composio/README.md) |
|
|
33
|
+
| **[cursor](../../refs/awesome-design-md/design-md/cursor/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/cursor/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/cursor/README.md) |
|
|
34
|
+
| **[elevenlabs](../../refs/awesome-design-md/design-md/elevenlabs/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/elevenlabs/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/elevenlabs/README.md) |
|
|
35
|
+
| **[expo](../../refs/awesome-design-md/design-md/expo/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/expo/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/expo/README.md) |
|
|
36
|
+
| **[ferrari](../../refs/awesome-design-md/design-md/ferrari/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/ferrari/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/ferrari/README.md) |
|
|
37
|
+
| **[figma](../../refs/awesome-design-md/design-md/figma/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/figma/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/figma/README.md) |
|
|
38
|
+
| **[framer](../../refs/awesome-design-md/design-md/framer/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/framer/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/framer/README.md) |
|
|
39
|
+
| **[hashicorp](../../refs/awesome-design-md/design-md/hashicorp/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/hashicorp/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/hashicorp/README.md) |
|
|
40
|
+
| **[ibm](../../refs/awesome-design-md/design-md/ibm/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/ibm/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/ibm/README.md) |
|
|
41
|
+
| **[intercom](../../refs/awesome-design-md/design-md/intercom/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/intercom/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/intercom/README.md) |
|
|
42
|
+
| **[kraken](../../refs/awesome-design-md/design-md/kraken/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/kraken/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/kraken/README.md) |
|
|
43
|
+
| **[lamborghini](../../refs/awesome-design-md/design-md/lamborghini/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/lamborghini/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/lamborghini/README.md) |
|
|
44
|
+
| **[linear.app](../../refs/awesome-design-md/design-md/linear.app/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/linear.app/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/linear.app/README.md) |
|
|
45
|
+
| **[lovable](../../refs/awesome-design-md/design-md/lovable/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/lovable/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/lovable/README.md) |
|
|
46
|
+
| **[mastercard](../../refs/awesome-design-md/design-md/mastercard/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/mastercard/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/mastercard/README.md) |
|
|
47
|
+
| **[meta](../../refs/awesome-design-md/design-md/meta/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/meta/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/meta/README.md) |
|
|
48
|
+
| **[minimax](../../refs/awesome-design-md/design-md/minimax/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/minimax/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/minimax/README.md) |
|
|
49
|
+
| **[mintlify](../../refs/awesome-design-md/design-md/mintlify/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/mintlify/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/mintlify/README.md) |
|
|
50
|
+
| **[miro](../../refs/awesome-design-md/design-md/miro/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/miro/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/miro/README.md) |
|
|
51
|
+
| **[mistral.ai](../../refs/awesome-design-md/design-md/mistral.ai/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/mistral.ai/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/mistral.ai/README.md) |
|
|
52
|
+
| **[mongodb](../../refs/awesome-design-md/design-md/mongodb/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/mongodb/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/mongodb/README.md) |
|
|
53
|
+
| **[nike](../../refs/awesome-design-md/design-md/nike/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/nike/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/nike/README.md) |
|
|
54
|
+
| **[notion](../../refs/awesome-design-md/design-md/notion/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/notion/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/notion/README.md) |
|
|
55
|
+
| **[nvidia](../../refs/awesome-design-md/design-md/nvidia/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/nvidia/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/nvidia/README.md) |
|
|
56
|
+
| **[ollama](../../refs/awesome-design-md/design-md/ollama/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/ollama/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/ollama/README.md) |
|
|
57
|
+
| **[opencode.ai](../../refs/awesome-design-md/design-md/opencode.ai/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/opencode.ai/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/opencode.ai/README.md) |
|
|
58
|
+
| **[pinterest](../../refs/awesome-design-md/design-md/pinterest/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/pinterest/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/pinterest/README.md) |
|
|
59
|
+
| **[playstation](../../refs/awesome-design-md/design-md/playstation/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/playstation/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/playstation/README.md) |
|
|
60
|
+
| **[posthog](../../refs/awesome-design-md/design-md/posthog/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/posthog/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/posthog/README.md) |
|
|
61
|
+
| **[raycast](../../refs/awesome-design-md/design-md/raycast/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/raycast/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/raycast/README.md) |
|
|
62
|
+
| **[renault](../../refs/awesome-design-md/design-md/renault/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/renault/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/renault/README.md) |
|
|
63
|
+
| **[replicate](../../refs/awesome-design-md/design-md/replicate/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/replicate/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/replicate/README.md) |
|
|
64
|
+
| **[resend](../../refs/awesome-design-md/design-md/resend/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/resend/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/resend/README.md) |
|
|
65
|
+
| **[revolut](../../refs/awesome-design-md/design-md/revolut/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/revolut/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/revolut/README.md) |
|
|
66
|
+
| **[runwayml](../../refs/awesome-design-md/design-md/runwayml/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/runwayml/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/runwayml/README.md) |
|
|
67
|
+
| **[sanity](../../refs/awesome-design-md/design-md/sanity/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/sanity/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/sanity/README.md) |
|
|
68
|
+
| **[sentry](../../refs/awesome-design-md/design-md/sentry/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/sentry/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/sentry/README.md) |
|
|
69
|
+
| **[shopify](../../refs/awesome-design-md/design-md/shopify/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/shopify/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/shopify/README.md) |
|
|
70
|
+
| **[slack](../../refs/awesome-design-md/design-md/slack/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/slack/DESIGN.md) |
|
|
71
|
+
| **[spacex](../../refs/awesome-design-md/design-md/spacex/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/spacex/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/spacex/README.md) |
|
|
72
|
+
| **[spotify](../../refs/awesome-design-md/design-md/spotify/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/spotify/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/spotify/README.md) |
|
|
73
|
+
| **[starbucks](../../refs/awesome-design-md/design-md/starbucks/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/starbucks/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/starbucks/README.md) |
|
|
74
|
+
| **[stripe](../../refs/awesome-design-md/design-md/stripe/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/stripe/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/stripe/README.md) |
|
|
75
|
+
| **[supabase](../../refs/awesome-design-md/design-md/supabase/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/supabase/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/supabase/README.md) |
|
|
76
|
+
| **[superhuman](../../refs/awesome-design-md/design-md/superhuman/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/superhuman/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/superhuman/README.md) |
|
|
77
|
+
| **[tesla](../../refs/awesome-design-md/design-md/tesla/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/tesla/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/tesla/README.md) |
|
|
78
|
+
| **[theverge](../../refs/awesome-design-md/design-md/theverge/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/theverge/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/theverge/README.md) |
|
|
79
|
+
| **[together.ai](../../refs/awesome-design-md/design-md/together.ai/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/together.ai/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/together.ai/README.md) |
|
|
80
|
+
| **[uber](../../refs/awesome-design-md/design-md/uber/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/uber/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/uber/README.md) |
|
|
81
|
+
| **[vercel](../../refs/awesome-design-md/design-md/vercel/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/vercel/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/vercel/README.md) |
|
|
82
|
+
| **[vodafone](../../refs/awesome-design-md/design-md/vodafone/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/vodafone/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/vodafone/README.md) |
|
|
83
|
+
| **[voltagent](../../refs/awesome-design-md/design-md/voltagent/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/voltagent/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/voltagent/README.md) |
|
|
84
|
+
| **[warp](../../refs/awesome-design-md/design-md/warp/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/warp/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/warp/README.md) |
|
|
85
|
+
| **[webflow](../../refs/awesome-design-md/design-md/webflow/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/webflow/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/webflow/README.md) |
|
|
86
|
+
| **[wired](../../refs/awesome-design-md/design-md/wired/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/wired/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/wired/README.md) |
|
|
87
|
+
| **[wise](../../refs/awesome-design-md/design-md/wise/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/wise/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/wise/README.md) |
|
|
88
|
+
| **[x.ai](../../refs/awesome-design-md/design-md/x.ai/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/x.ai/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/x.ai/README.md) |
|
|
89
|
+
| **[zapier](../../refs/awesome-design-md/design-md/zapier/)** | [`DESIGN.md`](../../refs/awesome-design-md/design-md/zapier/DESIGN.md), [`README.md`](../../refs/awesome-design-md/design-md/zapier/README.md) |
|
|
90
|
+
|
|
91
|
+
## How to use
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
1. Designing in a category? Find the closest comparable brand above.
|
|
95
|
+
2. Read the markdown files for that brand — colors, type, voice, image direction.
|
|
96
|
+
3. Cite, paraphrase, adapt — don't copy verbatim.
|
|
97
|
+
4. Cross-reference with `knowledge/colors/palettes-by-product-type.md` to find a matching palette starting point.
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
---
|
|
3
|
+
title: Chart color encoding
|
|
4
|
+
applies_to: [data-visualization, dashboard, all-data-ui]
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
last_updated: 2026-05
|
|
7
|
+
stability: stable
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Chart color encoding
|
|
11
|
+
|
|
12
|
+
Color in charts encodes meaning. Picking the wrong palette makes data unreadable; picking the right one makes it intuitive. This is the floor.
|
|
13
|
+
|
|
14
|
+
## Three palette types
|
|
15
|
+
|
|
16
|
+
| Palette | Use | Example |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| **Sequential** | Ordered data (low → high), single direction | Heatmap of activity, choropleth map of population |
|
|
19
|
+
| **Diverging** | Data with a meaningful midpoint (positive ↔ negative) | Profit/loss, sentiment, deviation from average |
|
|
20
|
+
| **Categorical** | Distinct, unordered categories | Product types, regions, departments |
|
|
21
|
+
|
|
22
|
+
Pick the type that matches your data. Using categorical for ordered data hides the order; using sequential for categorical implies false ordering.
|
|
23
|
+
|
|
24
|
+
## Sequential palettes
|
|
25
|
+
|
|
26
|
+
Single hue progressing from light to dark (or vice versa).
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Light blue → Dark blue: ▁▂▃▄▅▆▇█
|
|
30
|
+
#DBEAFE → #1E3A8A
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Properties:
|
|
34
|
+
- One hue, varying lightness (and chroma)
|
|
35
|
+
- Use for "more is more" relationships (revenue, count, density)
|
|
36
|
+
- Don't use for negative values
|
|
37
|
+
|
|
38
|
+
### Recommended sequential ramps
|
|
39
|
+
|
|
40
|
+
- **Blue ramp** (most universal): `#DBEAFE` → `#1E3A8A` (Tailwind blue-100 → blue-900)
|
|
41
|
+
- **Teal ramp** (modern, neutral): `#CCFBF1` → `#134E4A`
|
|
42
|
+
- **Viridis** (perceptually uniform, colorblind-safe): standard scientific viz palette
|
|
43
|
+
- **Brand-extended**: take your `--color-primary-50` → `--color-primary-900` ramp
|
|
44
|
+
|
|
45
|
+
For 5-step charts: pick steps `100, 300, 500, 700, 900`. Skip the very-light (50) and very-dark (950) — they don't read on common backgrounds.
|
|
46
|
+
|
|
47
|
+
## Diverging palettes
|
|
48
|
+
|
|
49
|
+
Two hues meeting at a neutral midpoint.
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Red ←─── Light gray ───→ Blue:
|
|
53
|
+
█▆▄▂│▂▄▆█
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Properties:
|
|
57
|
+
- Two opposing hues (often red ↔ blue)
|
|
58
|
+
- Lightest at the midpoint (neutral)
|
|
59
|
+
- Use when zero/baseline is meaningful
|
|
60
|
+
|
|
61
|
+
### Recommended diverging ramps
|
|
62
|
+
|
|
63
|
+
- **Red-Blue** (most universal): financial gain/loss in non-Korean contexts
|
|
64
|
+
- **Red-Green** (avoid): fails for red-green colorblind users (~8% of men)
|
|
65
|
+
- **Brown-Teal**: colorblind-friendly alternative to red-green
|
|
66
|
+
|
|
67
|
+
### Korean fintech consideration
|
|
68
|
+
|
|
69
|
+
Korean stock convention is **inverted**: red = up (gain), blue = down (loss). For non-stock financial data (banking, expense tracking) Korean apps usually follow Western convention (green = positive). Cite [`money-and-amount.md`](money-and-amount.md).
|
|
70
|
+
|
|
71
|
+
When designing for Korean stock UIs:
|
|
72
|
+
- Diverging: red ↔ blue with red = positive
|
|
73
|
+
- For other Korean financial: green = positive, red = negative
|
|
74
|
+
|
|
75
|
+
## Categorical palettes
|
|
76
|
+
|
|
77
|
+
Distinct hues for distinct categories.
|
|
78
|
+
|
|
79
|
+
### Rules
|
|
80
|
+
|
|
81
|
+
| Rule | Why |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| Use ≤ 8 colors | More than 8 → user can't track |
|
|
84
|
+
| Vary lightness AND hue | Pure hue rotation is hard to distinguish |
|
|
85
|
+
| Test for colorblindness | At least 4–5 colors should be distinguishable for protanopia / deuteranopia |
|
|
86
|
+
| Avoid hue similarity | Don't put similar greens / similar blues next to each other |
|
|
87
|
+
| Don't use semantic colors | Reserve red for error, green for success — using them as categorical 1 and 2 confuses |
|
|
88
|
+
|
|
89
|
+
### Recommended palettes
|
|
90
|
+
|
|
91
|
+
**Tableau 10** (industry standard, 10 colors):
|
|
92
|
+
```
|
|
93
|
+
#4E79A7 blue
|
|
94
|
+
#F28E2B orange
|
|
95
|
+
#E15759 red
|
|
96
|
+
#76B7B2 teal
|
|
97
|
+
#59A14F green
|
|
98
|
+
#EDC948 yellow
|
|
99
|
+
#B07AA1 purple
|
|
100
|
+
#FF9DA7 pink
|
|
101
|
+
#9C755F brown
|
|
102
|
+
#BAB0AC gray
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Material Design palette** (8 colors):
|
|
106
|
+
```
|
|
107
|
+
#1F77B4 blue
|
|
108
|
+
#FF7F0E orange
|
|
109
|
+
#2CA02C green
|
|
110
|
+
#D62728 red
|
|
111
|
+
#9467BD purple
|
|
112
|
+
#8C564B brown
|
|
113
|
+
#E377C2 pink
|
|
114
|
+
#7F7F7F gray
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Brand-extended** (when categorical = your business):
|
|
118
|
+
- Primary brand color = category 1
|
|
119
|
+
- Accent color = category 2
|
|
120
|
+
- Cool blue + warm orange = categories 3, 4
|
|
121
|
+
- Etc.
|
|
122
|
+
|
|
123
|
+
### Order of categorical hues
|
|
124
|
+
|
|
125
|
+
When mapping to categories, assign by:
|
|
126
|
+
1. **Logical order** (if categories have one): "small / medium / large" → light to dark.
|
|
127
|
+
2. **Frequency** (if not): most-common category gets the most prominent color.
|
|
128
|
+
3. **Alphabetical**: only as last resort.
|
|
129
|
+
|
|
130
|
+
## Color blindness
|
|
131
|
+
|
|
132
|
+
Roughly 8% of men, 0.5% of women. Most common forms:
|
|
133
|
+
- **Deuteranopia** (red-green): can't distinguish red and green at similar lightness.
|
|
134
|
+
- **Protanopia** (red-green): similar.
|
|
135
|
+
- **Tritanopia** (blue-yellow): rare.
|
|
136
|
+
|
|
137
|
+
Test palettes with simulators:
|
|
138
|
+
- Sim Daltonism (Mac, free)
|
|
139
|
+
- Coblis (web, free)
|
|
140
|
+
- Browser DevTools (Chrome's "Emulate vision deficiencies")
|
|
141
|
+
|
|
142
|
+
### Rules
|
|
143
|
+
|
|
144
|
+
- **Don't use red+green as the only signal** (fails for ~8% of men).
|
|
145
|
+
- **Pair color with shape, pattern, or label** — color is one cue among many.
|
|
146
|
+
- **Sequential and diverging palettes** are usually safer than categorical.
|
|
147
|
+
- **Test legends specifically** — labels next to color swatches lose if labels are tiny.
|
|
148
|
+
|
|
149
|
+
## Color + meaning beyond palette
|
|
150
|
+
|
|
151
|
+
Charts encode information via:
|
|
152
|
+
|
|
153
|
+
| Encoding | Use |
|
|
154
|
+
| --- | --- |
|
|
155
|
+
| Hue | Categories |
|
|
156
|
+
| Saturation | Sequential intensity (low/high) |
|
|
157
|
+
| Lightness | Sequential intensity OR categorical with brightness contrast |
|
|
158
|
+
| Opacity | Confidence / uncertainty |
|
|
159
|
+
| Pattern (stripes, dots) | Categorical when color isn't enough |
|
|
160
|
+
| Texture | Same as pattern |
|
|
161
|
+
|
|
162
|
+
Layer encodings: a stacked bar can use **hue** for category and **opacity** for time period.
|
|
163
|
+
|
|
164
|
+
## Specific chart types
|
|
165
|
+
|
|
166
|
+
### Line chart
|
|
167
|
+
|
|
168
|
+
- One color per series.
|
|
169
|
+
- Up to 5 series before crowding.
|
|
170
|
+
- Match the line color to the legend; same on hover.
|
|
171
|
+
- For confidence intervals: same hue, lower opacity for the band.
|
|
172
|
+
|
|
173
|
+
### Bar chart
|
|
174
|
+
|
|
175
|
+
- All bars same color when comparing within one dimension (e.g., "monthly revenue").
|
|
176
|
+
- Different colors when comparing across dimensions ("by category").
|
|
177
|
+
- Sort descending by value (most apps) — leftmost bar is the highest.
|
|
178
|
+
|
|
179
|
+
### Stacked bar / area
|
|
180
|
+
|
|
181
|
+
- Each segment is a category — use categorical palette.
|
|
182
|
+
- Order by size (largest at the bottom of stack).
|
|
183
|
+
- Sequential palette if segments are ordered (small → medium → large customer).
|
|
184
|
+
|
|
185
|
+
### Pie / donut chart
|
|
186
|
+
|
|
187
|
+
- 2–6 slices max. More than that, use a bar chart.
|
|
188
|
+
- Sort by size (descending, clockwise from 12 o'clock).
|
|
189
|
+
- "Other" bucket if too many tiny slices.
|
|
190
|
+
|
|
191
|
+
### Heatmap
|
|
192
|
+
|
|
193
|
+
- **Sequential** palette is mandatory.
|
|
194
|
+
- Lightest at low value, darkest at high.
|
|
195
|
+
- Provide a numeric scale legend.
|
|
196
|
+
|
|
197
|
+
### Scatter plot
|
|
198
|
+
|
|
199
|
+
- Single category: one color.
|
|
200
|
+
- Multiple categories: ≤ 5 colors.
|
|
201
|
+
- Add transparency (`opacity: 0.6–0.8`) for overlap.
|
|
202
|
+
|
|
203
|
+
### Choropleth (map)
|
|
204
|
+
|
|
205
|
+
- Sequential or diverging palette.
|
|
206
|
+
- 5–7 bins typical.
|
|
207
|
+
- Provide value legend.
|
|
208
|
+
|
|
209
|
+
## Korean dashboard color palettes
|
|
210
|
+
|
|
211
|
+
Common patterns in Korean financial apps:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
Toss-style (modern, monochromatic with accent):
|
|
215
|
+
- Background: white / near-white
|
|
216
|
+
- Primary: Toss blue #3182F6
|
|
217
|
+
- Sequential: blue 50 → blue 900
|
|
218
|
+
- Categorical: blue, teal, purple, gray (cool, calm)
|
|
219
|
+
|
|
220
|
+
KakaoBank-style (warm, brand-led):
|
|
221
|
+
- Background: warm white
|
|
222
|
+
- Primary: Kakao yellow #FFEB00 (used sparingly)
|
|
223
|
+
- Sequential: gold ramp
|
|
224
|
+
- Categorical: yellow, slate, navy, gray
|
|
225
|
+
|
|
226
|
+
Stock app (Korean inverted convention):
|
|
227
|
+
- Positive: red #DC2626
|
|
228
|
+
- Negative: blue #2563EB
|
|
229
|
+
- Neutral: gray
|
|
230
|
+
- No green/red diverging
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Background and chart elements
|
|
234
|
+
|
|
235
|
+
- **Chart background**: `--color-bg-default` or `--color-bg-elevated`. White is fine.
|
|
236
|
+
- **Gridlines**: very light (`--color-border-default` or lighter). They guide; they don't compete.
|
|
237
|
+
- **Axes**: `--color-text-tertiary`, thin (1px).
|
|
238
|
+
- **Axis labels**: `--color-text-secondary`, smaller font.
|
|
239
|
+
- **Annotations** (callouts, target lines): use a subtle accent color (often a lighter brand color).
|
|
240
|
+
|
|
241
|
+
## When to NOT use color
|
|
242
|
+
|
|
243
|
+
Sometimes black-and-white is better:
|
|
244
|
+
- Print contexts.
|
|
245
|
+
- Color-blind audience that's > the norm.
|
|
246
|
+
- Very dense charts where color noise hurts more than it helps.
|
|
247
|
+
|
|
248
|
+
Rely on:
|
|
249
|
+
- Patterns (stripes, dots) for categories
|
|
250
|
+
- Line styles (solid, dashed, dotted) for series
|
|
251
|
+
- Value labels (numbers next to bars)
|
|
252
|
+
- Annotations
|
|
253
|
+
|
|
254
|
+
## Tools
|
|
255
|
+
|
|
256
|
+
- **OKLCH picker**: generate perceptually uniform palettes
|
|
257
|
+
- **Coolors.co**: palette generation
|
|
258
|
+
- **ColorBrewer**: scientifically-backed palettes for cartography (works for any chart)
|
|
259
|
+
- **Material Theme Builder**: HCT-based palettes
|
|
260
|
+
- **Chroma.js**: programmatic generation
|
|
261
|
+
- **ggplot2 viridis**: perceptually uniform sequential palettes
|
|
262
|
+
|
|
263
|
+
## Cross-reference
|
|
264
|
+
|
|
265
|
+
- [`knowledge/colors/color-theory.md`](../colors/color-theory.md) — palette construction
|
|
266
|
+
- [`knowledge/patterns/chart-types.md`](chart-types.md) — choosing the right chart for the data
|
|
267
|
+
- [`knowledge/patterns/dashboard-composition.md`](dashboard-composition.md) — applying palettes in a dashboard
|
|
268
|
+
- [`knowledge/patterns/money-and-amount.md`](money-and-amount.md) — money color semantics, KR stock convention
|
|
269
|
+
- [`knowledge/a11y/contrast.md`](../a11y/contrast.md) — text on chart backgrounds
|