@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,157 @@
|
|
|
1
|
+
# `StepConnector` - spec
|
|
2
|
+
|
|
3
|
+
> Direct upstream component: MUI `StepConnector`. Parent pattern references: Ant Design `Steps`, MUI `Stepper`, and composed shadcn-style primitives.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
`StepConnector` draws the visual line between steps in a stepper. It communicates sequence and completed progress, but it is not interactive and should not be announced by assistive technology.
|
|
8
|
+
|
|
9
|
+
Use it only inside a `Steps` / `Stepper` composition.
|
|
10
|
+
|
|
11
|
+
## Anatomy
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Step
|
|
15
|
+
└── StepIcon
|
|
16
|
+
|
|
|
17
|
+
| StepConnector
|
|
18
|
+
|
|
|
19
|
+
Step
|
|
20
|
+
└── StepIcon
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| Part | Required | Purpose |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| Root | yes | Positions the connector between adjacent steps. |
|
|
26
|
+
| Line | yes | Visual track for wait/active/completed state. |
|
|
27
|
+
| State classes | contextual | Active, completed, disabled, orientation, and alternative-label states come from parent context. |
|
|
28
|
+
|
|
29
|
+
## API
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<Stepper connector={<StepConnector />}>
|
|
33
|
+
<Step>
|
|
34
|
+
<StepLabel>본인인증</StepLabel>
|
|
35
|
+
</Step>
|
|
36
|
+
<Step>
|
|
37
|
+
<StepLabel>정보 입력</StepLabel>
|
|
38
|
+
</Step>
|
|
39
|
+
</Stepper>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
| Prop | Type | Default | Description |
|
|
43
|
+
| --- | --- | --- | --- |
|
|
44
|
+
| `classes` | `Partial<StepConnectorClasses>` | - | Style override hooks for MUI-style implementations. |
|
|
45
|
+
| `sx` | `SxProps<Theme>` | - | MUI system override. Prefer tokens for shared design-system code. |
|
|
46
|
+
|
|
47
|
+
`children` is intentionally omitted in MUI. This component renders the connector structure itself.
|
|
48
|
+
|
|
49
|
+
## API choices made
|
|
50
|
+
|
|
51
|
+
- Keep the API minimal. Connector state is derived from parent stepper context.
|
|
52
|
+
- Do not add `status`, `orientation`, or `completed` props to the public API unless building a standalone custom connector.
|
|
53
|
+
- Do not expose content slots. A connector is decorative, not a label surface.
|
|
54
|
+
|
|
55
|
+
## States
|
|
56
|
+
|
|
57
|
+
| State | Trigger | Visual rule |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| Wait | Neither adjacent step is completed/current | Neutral border/line color. |
|
|
60
|
+
| Active | Adjacent current step | Primary or emphasized line segment if the product wants active progress. |
|
|
61
|
+
| Completed | Previous step completed | Primary filled line. |
|
|
62
|
+
| Error | Adjacent step has error | Error line only when it helps locate the failing step; pair with error text on the step label. |
|
|
63
|
+
| Disabled | Parent step disabled | Muted connector. |
|
|
64
|
+
| Horizontal | Parent orientation | Line runs inline between indicators. |
|
|
65
|
+
| Vertical | Parent orientation | Line runs block direction below the indicator. |
|
|
66
|
+
| Alternative label | Parent layout | Connector positions behind labels and aligns to indicator centers. |
|
|
67
|
+
|
|
68
|
+
## Tokens consumed
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
--color-border-default
|
|
72
|
+
--color-primary-default
|
|
73
|
+
--color-error
|
|
74
|
+
--color-text-disabled
|
|
75
|
+
--space-sm
|
|
76
|
+
--space-md
|
|
77
|
+
--step-icon-size-sm
|
|
78
|
+
--step-icon-size-md
|
|
79
|
+
--step-connector-thickness
|
|
80
|
+
--motion-fast
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If step-specific tokens do not exist, map to the existing border, size, and spacing tokens.
|
|
84
|
+
|
|
85
|
+
## Accessibility
|
|
86
|
+
|
|
87
|
+
- Connector is decorative: set `aria-hidden="true"` and keep it out of the tab order.
|
|
88
|
+
- Do not encode step status only in connector color. `StepLabel` or the parent list must expose completed/current/error text.
|
|
89
|
+
- In high contrast mode, connector should remain visible through border/outline properties.
|
|
90
|
+
- Touch target requirements do not apply because the connector is not interactive.
|
|
91
|
+
|
|
92
|
+
## Layout rules
|
|
93
|
+
|
|
94
|
+
| Rule | Value |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| Thickness | 1px default; 2px only for high-emphasis progress flows. |
|
|
97
|
+
| Horizontal | Flexible line between step indicators; do not force fixed width. |
|
|
98
|
+
| Vertical | Minimum height should preserve spacing between labels. |
|
|
99
|
+
| Last step | No trailing connector after the final step. |
|
|
100
|
+
| RTL | Use logical inline properties; horizontal connector mirrors automatically. |
|
|
101
|
+
|
|
102
|
+
## Code example
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
function CheckoutConnector(props: StepConnectorProps) {
|
|
106
|
+
return (
|
|
107
|
+
<StepConnector
|
|
108
|
+
{...props}
|
|
109
|
+
aria-hidden="true"
|
|
110
|
+
className="checkout-step-connector"
|
|
111
|
+
/>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
<Steps current={currentStep} connector={<CheckoutConnector />}>
|
|
116
|
+
<Step completed>
|
|
117
|
+
<StepLabel>장바구니</StepLabel>
|
|
118
|
+
</Step>
|
|
119
|
+
<Step>
|
|
120
|
+
<StepLabel>배송 정보</StepLabel>
|
|
121
|
+
</Step>
|
|
122
|
+
<Step>
|
|
123
|
+
<StepLabel>결제</StepLabel>
|
|
124
|
+
</Step>
|
|
125
|
+
</Steps>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Edge cases
|
|
129
|
+
|
|
130
|
+
- **One step only**: render no connector.
|
|
131
|
+
- **Skipped optional step**: connector after the skipped step should follow the chosen status model, usually completed if the flow can advance.
|
|
132
|
+
- **Error step**: show error on the step icon/label first; connector color is secondary.
|
|
133
|
+
- **Vertical labels with long copy**: connector height should follow layout, not overlap label text.
|
|
134
|
+
- **Alternative label layout**: align connector to icon centers, not label baselines.
|
|
135
|
+
- **Reduced motion**: avoid animated line filling. State changes can switch instantly.
|
|
136
|
+
- **Print**: connectors should remain visible in grayscale; avoid relying on primary color alone.
|
|
137
|
+
|
|
138
|
+
## Don't
|
|
139
|
+
|
|
140
|
+
- Don't make the connector clickable.
|
|
141
|
+
- Don't place text or icons inside the connector line.
|
|
142
|
+
- Don't show a connector after the final step.
|
|
143
|
+
- Don't use connector color as the only indication of completed/error state.
|
|
144
|
+
|
|
145
|
+
## References
|
|
146
|
+
|
|
147
|
+
- MUI direct source: [`refs/mui/packages/mui-material/src/StepConnector/StepConnector.d.ts`](../refs/mui/packages/mui-material/src/StepConnector/StepConnector.d.ts)
|
|
148
|
+
- MUI implementation: [`refs/mui/packages/mui-material/src/StepConnector/StepConnector.js`](../refs/mui/packages/mui-material/src/StepConnector/StepConnector.js)
|
|
149
|
+
- MUI stepper docs/examples: [`refs/mui/docs/data/material/components/steppers/`](../refs/mui/docs/data/material/components/steppers/)
|
|
150
|
+
- Ant Design parent pattern: [`refs/ant-design/components/steps/`](../refs/ant-design/components/steps/)
|
|
151
|
+
- Accessibility baseline: [`knowledge/a11y/keyboard-and-focus.md`](../knowledge/a11y/keyboard-and-focus.md)
|
|
152
|
+
|
|
153
|
+
## Cross-reference
|
|
154
|
+
|
|
155
|
+
- [examples/component-steps.md](component-steps.md)
|
|
156
|
+
- [examples/component-step-icon.md](component-step-icon.md)
|
|
157
|
+
- [examples/component-step-label.md](component-step-label.md)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# `StepContent` — spec
|
|
2
|
+
|
|
3
|
+
> Synthesized from MUI `StepContent`. The body region under a vertical-orientation `Step`. Renders the step's actual form / instruction / control panel. Only used with `<Stepper orientation="vertical">`.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- Vertical-orientation steppers (each step has expanded body content).
|
|
8
|
+
- Mobile onboarding flows where steps stack vertically.
|
|
9
|
+
- For horizontal steppers, render content separately below the stepper.
|
|
10
|
+
|
|
11
|
+
## API
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Stepper activeStep={step} orientation="vertical">
|
|
15
|
+
<Step>
|
|
16
|
+
<StepLabel>이메일 입력</StepLabel>
|
|
17
|
+
<StepContent>
|
|
18
|
+
<TextField fullWidth label="이메일" />
|
|
19
|
+
<Stack direction="row" gap={1} sx={{ mt: 2 }}>
|
|
20
|
+
<Button onClick={handleNext} variant="contained">다음</Button>
|
|
21
|
+
</Stack>
|
|
22
|
+
</StepContent>
|
|
23
|
+
</Step>
|
|
24
|
+
</Stepper>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
| Prop | Type | Default | Description |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| `children` | `ReactNode` | — | Step body content |
|
|
30
|
+
| `transitionDuration` | `number \| 'auto'` | `'auto'` | Collapse animation |
|
|
31
|
+
| `TransitionComponent` | `Component` | `Collapse` | Custom transition |
|
|
32
|
+
| `TransitionProps` | `TransitionProps` | — | Pass-through |
|
|
33
|
+
|
|
34
|
+
## States
|
|
35
|
+
|
|
36
|
+
| State | Visual |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| Active step | Content expanded |
|
|
39
|
+
| Inactive step | Content collapsed (animated) |
|
|
40
|
+
|
|
41
|
+
## Tokens consumed
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
--space-md /* horizontal padding */
|
|
45
|
+
--space-md-y /* vertical padding */
|
|
46
|
+
--motion-duration-auto
|
|
47
|
+
--step-connector-line /* left vertical rule */
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Accessibility
|
|
51
|
+
|
|
52
|
+
- Hidden content is `aria-hidden` when collapsed.
|
|
53
|
+
- Focus moves into the active step's content automatically when activeStep changes.
|
|
54
|
+
- For long step content with internal scrolling, the parent step should handle scroll-into-view.
|
|
55
|
+
|
|
56
|
+
## Edge cases
|
|
57
|
+
|
|
58
|
+
- **Form validation per step** — show errors inline AND prevent progression to next step. Keep current `StepContent` expanded until valid.
|
|
59
|
+
- **Long content (10+ form fields)** — that's a multi-screen flow, not a vertical stepper. Switch to a separate page per step.
|
|
60
|
+
- **Mobile narrow viewport** — vertical orientation works well; ensure step labels and content fit at 320px.
|
|
61
|
+
|
|
62
|
+
## Code example
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
function VerticalOnboarding() {
|
|
66
|
+
const [step, setStep] = useState(0);
|
|
67
|
+
const totalSteps = 3;
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<Stepper activeStep={step} orientation="vertical">
|
|
71
|
+
<Step>
|
|
72
|
+
<StepLabel>기본 정보</StepLabel>
|
|
73
|
+
<StepContent>
|
|
74
|
+
<Stack gap={2}>
|
|
75
|
+
<TextField label="이름" />
|
|
76
|
+
<TextField label="이메일" />
|
|
77
|
+
<Stack direction="row" gap={1}>
|
|
78
|
+
<Button onClick={() => setStep(1)} variant="contained">
|
|
79
|
+
다음
|
|
80
|
+
</Button>
|
|
81
|
+
</Stack>
|
|
82
|
+
</Stack>
|
|
83
|
+
</StepContent>
|
|
84
|
+
</Step>
|
|
85
|
+
<Step>
|
|
86
|
+
<StepLabel>비밀번호</StepLabel>
|
|
87
|
+
<StepContent>
|
|
88
|
+
<TextField fullWidth label="비밀번호" type="password" />
|
|
89
|
+
<Stack direction="row" gap={1} sx={{ mt: 2 }}>
|
|
90
|
+
<Button onClick={() => setStep(0)}>이전</Button>
|
|
91
|
+
<Button onClick={() => setStep(2)} variant="contained">다음</Button>
|
|
92
|
+
</Stack>
|
|
93
|
+
</StepContent>
|
|
94
|
+
</Step>
|
|
95
|
+
<Step>
|
|
96
|
+
<StepLabel>완료</StepLabel>
|
|
97
|
+
<StepContent>
|
|
98
|
+
<Typography>가입이 완료됐어요.</Typography>
|
|
99
|
+
<Button variant="contained" sx={{ mt: 2 }}>시작하기</Button>
|
|
100
|
+
</StepContent>
|
|
101
|
+
</Step>
|
|
102
|
+
</Stepper>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Don't
|
|
108
|
+
|
|
109
|
+
- Don't use with horizontal stepper — content won't render.
|
|
110
|
+
- Don't omit Back/Next buttons — users need explicit progression controls.
|
|
111
|
+
|
|
112
|
+
## References
|
|
113
|
+
|
|
114
|
+
- MUI: [`StepContent`](../refs/mui/packages/mui-material/src/StepContent/)
|
|
115
|
+
|
|
116
|
+
## Cross-reference
|
|
117
|
+
|
|
118
|
+
- [`component-steps.md`](component-steps.md)
|
|
119
|
+
- [`component-step.md`](component-step.md)
|
|
120
|
+
- [`component-step-label.md`](component-step-label.md)
|
|
121
|
+
- [`knowledge/patterns/b2b-onboarding-flows.md`](../knowledge/patterns/b2b-onboarding-flows.md)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# `StepIcon` — spec
|
|
2
|
+
|
|
3
|
+
> Synthesized from MUI `StepIcon`. The numbered/checked circle in a `Stepper` flow. Shows step number when upcoming/active, checkmark when complete, error icon when failed.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- Inside `StepLabel` (auto-rendered by `Step` parent).
|
|
8
|
+
- For custom step icons, override via `StepLabel.StepIconComponent`.
|
|
9
|
+
|
|
10
|
+
## API
|
|
11
|
+
|
|
12
|
+
```tsx
|
|
13
|
+
<Step>
|
|
14
|
+
<StepLabel
|
|
15
|
+
StepIconComponent={CustomStepIcon}
|
|
16
|
+
error={hasError}
|
|
17
|
+
>
|
|
18
|
+
배송지 입력
|
|
19
|
+
</StepLabel>
|
|
20
|
+
</Step>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`StepIcon` is rarely used directly — `Step` + `StepLabel` render it automatically. Override only when you need a custom icon set.
|
|
24
|
+
|
|
25
|
+
| Prop | Type | Default | Description |
|
|
26
|
+
| --- | --- | --- | --- |
|
|
27
|
+
| `icon` | `ReactNode` | step number | The icon content (number, custom component) |
|
|
28
|
+
| `active` | `boolean` | `false` | Current step |
|
|
29
|
+
| `completed` | `boolean` | `false` | Past step |
|
|
30
|
+
| `error` | `boolean` | `false` | Step failed |
|
|
31
|
+
|
|
32
|
+
## States
|
|
33
|
+
|
|
34
|
+
| State | Visual |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| Upcoming | outlined circle, step number, fg-muted |
|
|
37
|
+
| Active | filled brand circle, step number, fg-on-brand, slightly larger |
|
|
38
|
+
| Completed | filled brand circle, checkmark icon, fg-on-brand |
|
|
39
|
+
| Error | filled error circle, X icon, fg-on-error |
|
|
40
|
+
| Disabled | reduced opacity |
|
|
41
|
+
|
|
42
|
+
## Tokens consumed
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
--step-icon-size-24
|
|
46
|
+
--step-icon-bg-active /* brand */
|
|
47
|
+
--step-icon-bg-completed /* brand */
|
|
48
|
+
--step-icon-bg-error /* error */
|
|
49
|
+
--step-icon-bg-upcoming /* transparent */
|
|
50
|
+
--step-icon-border-upcoming /* fg-muted */
|
|
51
|
+
--step-icon-fg-on-brand
|
|
52
|
+
--step-icon-fg-on-error
|
|
53
|
+
--step-icon-fg-upcoming
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Accessibility
|
|
57
|
+
|
|
58
|
+
- Decorative (the `StepLabel` text is the accessible name).
|
|
59
|
+
- For error states, screen readers announce via `StepLabel.error` setting `aria-invalid` on the step.
|
|
60
|
+
|
|
61
|
+
## Edge cases
|
|
62
|
+
|
|
63
|
+
- **Long stepper (8+ steps)** — number-in-circle becomes hard to read; switch to `MobileStepper` (dots/progress) for mobile.
|
|
64
|
+
- **Custom icons per step** (e.g., shopping cart → payment → confirmation) — override `StepIconComponent` per `StepLabel`. Different icons signal step *type*, not just step *number*.
|
|
65
|
+
|
|
66
|
+
## Code example
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
function CartStepper({ activeStep }) {
|
|
70
|
+
const steps = [
|
|
71
|
+
{ label: '장바구니', icon: <CartIcon /> },
|
|
72
|
+
{ label: '결제 정보', icon: <CardIcon /> },
|
|
73
|
+
{ label: '주문 확인', icon: <CheckIcon /> },
|
|
74
|
+
];
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<Stepper activeStep={activeStep} alternativeLabel>
|
|
78
|
+
{steps.map((step, idx) => (
|
|
79
|
+
<Step key={step.label}>
|
|
80
|
+
<StepLabel
|
|
81
|
+
StepIconComponent={({ active, completed }) => (
|
|
82
|
+
<Avatar
|
|
83
|
+
sx={{
|
|
84
|
+
bgcolor: completed ? 'success.main' : active ? 'primary.main' : 'grey.300',
|
|
85
|
+
width: 32,
|
|
86
|
+
height: 32,
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
{step.icon}
|
|
90
|
+
</Avatar>
|
|
91
|
+
)}
|
|
92
|
+
>
|
|
93
|
+
{step.label}
|
|
94
|
+
</StepLabel>
|
|
95
|
+
</Step>
|
|
96
|
+
))}
|
|
97
|
+
</Stepper>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Don't
|
|
103
|
+
|
|
104
|
+
- Don't render directly outside `StepLabel`.
|
|
105
|
+
- Don't use icons that don't communicate progress (e.g., decorative-only flowers).
|
|
106
|
+
|
|
107
|
+
## References
|
|
108
|
+
|
|
109
|
+
- MUI: [`StepIcon`](../refs/mui/packages/mui-material/src/StepIcon/)
|
|
110
|
+
|
|
111
|
+
## Cross-reference
|
|
112
|
+
|
|
113
|
+
- [`component-step.md`](component-step.md)
|
|
114
|
+
- [`component-step-label.md`](component-step-label.md)
|
|
115
|
+
- [`component-steps.md`](component-steps.md)
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# `StepLabel` — spec
|
|
2
|
+
|
|
3
|
+
> Synthesized from MUI `StepLabel`. The text label of a `Step` — primary text + optional caption. Combines `StepIcon` + label into the standard step appearance.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- Inside every `Step` that has a visible label.
|
|
8
|
+
- For step-only-by-position (rare), use `Step` without `StepLabel`.
|
|
9
|
+
|
|
10
|
+
## API
|
|
11
|
+
|
|
12
|
+
```tsx
|
|
13
|
+
<Step>
|
|
14
|
+
<StepLabel
|
|
15
|
+
optional={<Typography variant="caption">선택</Typography>}
|
|
16
|
+
error={!!stepErrors[currentStep]}
|
|
17
|
+
>
|
|
18
|
+
배송지 정보
|
|
19
|
+
</StepLabel>
|
|
20
|
+
</Step>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| Prop | Type | Default | Description |
|
|
24
|
+
| --- | --- | --- | --- |
|
|
25
|
+
| `children` | `ReactNode` | — | Primary label |
|
|
26
|
+
| `icon` | `ReactNode` | step number | Override icon |
|
|
27
|
+
| `optional` | `ReactNode` | — | Caption beneath label (e.g., "Optional", "Required") |
|
|
28
|
+
| `error` | `boolean` | `false` | Mark step as failed |
|
|
29
|
+
| `StepIconComponent` | `ElementType` | `StepIcon` | Custom icon component |
|
|
30
|
+
| `StepIconProps` | `StepIconProps` | — | Pass-through to icon |
|
|
31
|
+
|
|
32
|
+
## States
|
|
33
|
+
|
|
34
|
+
Inherited from parent `Step`:
|
|
35
|
+
- Upcoming: muted text + outlined icon
|
|
36
|
+
- Active: bold text + filled icon
|
|
37
|
+
- Completed: regular text + checkmark icon
|
|
38
|
+
- Error: error-colored text + error icon
|
|
39
|
+
|
|
40
|
+
## Tokens consumed
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
--font-size-body
|
|
44
|
+
--font-weight-medium /* active */
|
|
45
|
+
--font-weight-regular
|
|
46
|
+
--color-fg-default
|
|
47
|
+
--color-fg-muted
|
|
48
|
+
--color-fg-error
|
|
49
|
+
--space-sm /* gap between icon and label */
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Accessibility
|
|
53
|
+
|
|
54
|
+
- The label is the accessible name of the step.
|
|
55
|
+
- For `error={true}`, `aria-invalid="true"` propagates.
|
|
56
|
+
- `optional` content is read after the primary label.
|
|
57
|
+
- Korean step labels: keep concise (1-3 words). Long labels truncate.
|
|
58
|
+
|
|
59
|
+
## Edge cases
|
|
60
|
+
|
|
61
|
+
- **Korean honorific** — step labels use noun form ("배송지 입력") not sentence form ("배송지를 입력하세요").
|
|
62
|
+
- **Optional steps** — set `optional={<Typography variant="caption">선택</Typography>}`. Don't bake "(선택)" into the primary label.
|
|
63
|
+
- **Long labels in horizontal stepper** — switch to `<Stepper alternativeLabel>` so labels render below icons (more horizontal room).
|
|
64
|
+
|
|
65
|
+
## Code example
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
<Stepper activeStep={step} orientation="vertical">
|
|
69
|
+
<Step>
|
|
70
|
+
<StepLabel>이메일 인증</StepLabel>
|
|
71
|
+
</Step>
|
|
72
|
+
<Step>
|
|
73
|
+
<StepLabel
|
|
74
|
+
optional={<Typography variant="caption" color="text.secondary">선택</Typography>}
|
|
75
|
+
>
|
|
76
|
+
프로필 사진
|
|
77
|
+
</StepLabel>
|
|
78
|
+
</Step>
|
|
79
|
+
<Step>
|
|
80
|
+
<StepLabel error={!!errors.payment}>
|
|
81
|
+
결제 정보
|
|
82
|
+
</StepLabel>
|
|
83
|
+
</Step>
|
|
84
|
+
</Stepper>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Don't
|
|
88
|
+
|
|
89
|
+
- Don't put block-level content inside the label — break composition.
|
|
90
|
+
- Don't omit error state when a step actually failed — silent failure is confusing.
|
|
91
|
+
|
|
92
|
+
## References
|
|
93
|
+
|
|
94
|
+
- MUI: [`StepLabel`](../refs/mui/packages/mui-material/src/StepLabel/)
|
|
95
|
+
|
|
96
|
+
## Cross-reference
|
|
97
|
+
|
|
98
|
+
- [`component-step.md`](component-step.md)
|
|
99
|
+
- [`component-step-icon.md`](component-step-icon.md)
|
|
100
|
+
- [`component-steps.md`](component-steps.md)
|
|
101
|
+
- [`knowledge/patterns/onboarding.md`](../knowledge/patterns/onboarding.md)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# `Step` — spec
|
|
2
|
+
|
|
3
|
+
> Synthesized from MUI `Step`. A single step in a `Steps` / `Stepper` flow. Sub-component spec for completeness; in practice, use [`component-steps.md`](component-steps.md) for the full Stepper pattern.
|
|
4
|
+
|
|
5
|
+
## API
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
<Steps current={1}>
|
|
9
|
+
<Step title="배송지 입력" />
|
|
10
|
+
<Step title="결제 수단" status="active" />
|
|
11
|
+
<Step title="주문 확인" status="upcoming" />
|
|
12
|
+
</Steps>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Default | Description |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| `title` | `string` | required | Step label |
|
|
18
|
+
| `description` | `string` | — | Sub-label |
|
|
19
|
+
| `status` | `"complete" \| "active" \| "upcoming" \| "error"` | derived | Visual state |
|
|
20
|
+
| `icon` | `ReactNode` | — | Custom icon override |
|
|
21
|
+
| `disabled` | `boolean` | `false` | Disabled |
|
|
22
|
+
|
|
23
|
+
## States
|
|
24
|
+
|
|
25
|
+
| Status | Visual |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `complete` | Filled circle + check icon, brand color |
|
|
28
|
+
| `active` (current) | Filled circle + step number, brand color, larger |
|
|
29
|
+
| `upcoming` | Outline circle + step number, muted |
|
|
30
|
+
| `error` | Filled circle + X icon, error color |
|
|
31
|
+
|
|
32
|
+
## Connector lines
|
|
33
|
+
|
|
34
|
+
Between Step instances, render a connector line indicating progress:
|
|
35
|
+
- Complete → Active: solid brand color line.
|
|
36
|
+
- Active → Upcoming: muted line.
|
|
37
|
+
- Error: red dashed.
|
|
38
|
+
|
|
39
|
+
This is handled by the parent `Steps` component, not Step itself.
|
|
40
|
+
|
|
41
|
+
## Tokens consumed
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
--step-circle-bg-complete
|
|
45
|
+
--step-circle-bg-active
|
|
46
|
+
--step-circle-bg-upcoming
|
|
47
|
+
--step-circle-bg-error
|
|
48
|
+
--step-fg-complete
|
|
49
|
+
--step-connector-complete
|
|
50
|
+
--step-connector-incomplete
|
|
51
|
+
--space-sm
|
|
52
|
+
--font-size-sm
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Accessibility
|
|
56
|
+
|
|
57
|
+
- Each Step: `<li>` (parent is `<ol role="list">`).
|
|
58
|
+
- Step status communicated via `aria-current="step"` (active) or text label.
|
|
59
|
+
- Don't rely on color alone — include icon (check / X / number).
|
|
60
|
+
|
|
61
|
+
## Code example
|
|
62
|
+
|
|
63
|
+
```tsx
|
|
64
|
+
<Steps current={2}>
|
|
65
|
+
<Step title="배송지" description="입력 완료" />
|
|
66
|
+
<Step title="결제" description="진행 중" />
|
|
67
|
+
<Step title="확인" />
|
|
68
|
+
<Step title="완료" />
|
|
69
|
+
</Steps>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Don't
|
|
73
|
+
|
|
74
|
+
- Don't ship Step without parent Steps. Step is a sub-component.
|
|
75
|
+
- Don't use Step for non-sequential UI. Use Tabs or Pagination instead.
|
|
76
|
+
|
|
77
|
+
## References
|
|
78
|
+
|
|
79
|
+
- MUI: [`Step`](../refs/mui/packages/mui-material/src/Step)
|
|
80
|
+
- Ant: [`Steps`](../refs/ant-design/components/steps) (parent)
|
|
81
|
+
|
|
82
|
+
## Cross-reference
|
|
83
|
+
|
|
84
|
+
- [`examples/component-steps.md`](component-steps.md) — full Stepper spec
|