@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.
Files changed (529) hide show
  1. package/.claude-plugin/plugin.json +164 -0
  2. package/AGENTS.ko.md +126 -0
  3. package/AGENTS.md +182 -0
  4. package/CHANGELOG.md +6883 -0
  5. package/CLAUDE.md +39 -0
  6. package/LICENSE +21 -0
  7. package/README.ko.md +245 -0
  8. package/README.md +277 -0
  9. package/agents/README.md +14 -0
  10. package/agents/a11y-reviewer.md +121 -0
  11. package/agents/component-architect.md +57 -0
  12. package/agents/design-critic.md +46 -0
  13. package/agents/token-extractor.md +63 -0
  14. package/cli/bin/design-ai-mcp.mjs +6 -0
  15. package/cli/bin/design-ai.mjs +40 -0
  16. package/cli/commands/audit.mjs +111 -0
  17. package/cli/commands/check.mjs +226 -0
  18. package/cli/commands/doctor.mjs +141 -0
  19. package/cli/commands/examples.mjs +58 -0
  20. package/cli/commands/help.mjs +271 -0
  21. package/cli/commands/install.mjs +161 -0
  22. package/cli/commands/learn.mjs +1871 -0
  23. package/cli/commands/list.mjs +143 -0
  24. package/cli/commands/mcp.mjs +27 -0
  25. package/cli/commands/pack.mjs +211 -0
  26. package/cli/commands/prompt.mjs +199 -0
  27. package/cli/commands/route.mjs +247 -0
  28. package/cli/commands/search.mjs +60 -0
  29. package/cli/commands/show.mjs +52 -0
  30. package/cli/commands/site.mjs +558 -0
  31. package/cli/commands/status.mjs +161 -0
  32. package/cli/commands/uninstall.mjs +119 -0
  33. package/cli/commands/update.mjs +184 -0
  34. package/cli/commands/version.mjs +94 -0
  35. package/cli/commands/workspace.mjs +176 -0
  36. package/cli/lib/brief.mjs +52 -0
  37. package/cli/lib/check.mjs +642 -0
  38. package/cli/lib/dispatch.mjs +109 -0
  39. package/cli/lib/doctor.mjs +505 -0
  40. package/cli/lib/examples.mjs +258 -0
  41. package/cli/lib/exec.mjs +63 -0
  42. package/cli/lib/help-flags.mjs +5 -0
  43. package/cli/lib/learn.mjs +3694 -0
  44. package/cli/lib/log.mjs +47 -0
  45. package/cli/lib/mcp-server.mjs +426 -0
  46. package/cli/lib/output.mjs +101 -0
  47. package/cli/lib/pack.mjs +599 -0
  48. package/cli/lib/paths.mjs +63 -0
  49. package/cli/lib/prompt.mjs +603 -0
  50. package/cli/lib/route.mjs +740 -0
  51. package/cli/lib/search.mjs +158 -0
  52. package/cli/lib/show.mjs +161 -0
  53. package/cli/lib/signals.mjs +2337 -0
  54. package/cli/lib/site.mjs +6617 -0
  55. package/cli/lib/skill-proposals.mjs +2046 -0
  56. package/cli/lib/suggest.mjs +66 -0
  57. package/cli/lib/workspace.mjs +1056 -0
  58. package/commands/README.md +25 -0
  59. package/commands/component-spec.md +34 -0
  60. package/commands/conversational.md +44 -0
  61. package/commands/design-from-brief.md +141 -0
  62. package/commands/design-review.md +62 -0
  63. package/commands/document-from-brief.md +47 -0
  64. package/commands/extract-tokens.md +38 -0
  65. package/commands/game-ui.md +40 -0
  66. package/commands/illustration.md +37 -0
  67. package/commands/iterate.md +167 -0
  68. package/commands/motion-design.md +54 -0
  69. package/commands/palette-from-brand.md +50 -0
  70. package/commands/print.md +49 -0
  71. package/commands/slide-deck.md +46 -0
  72. package/commands/spatial.md +47 -0
  73. package/commands/stability-review.md +74 -0
  74. package/commands/video.md +42 -0
  75. package/commands/website-improvement.md +77 -0
  76. package/docs/AGENT-DEVELOPMENT.md +658 -0
  77. package/docs/AI-LEARNING.md +429 -0
  78. package/docs/AIDER-INTEGRATION.md +224 -0
  79. package/docs/ARCHITECTURE.ko.md +183 -0
  80. package/docs/ARCHITECTURE.md +105 -0
  81. package/docs/CODEX-INTEGRATION.md +311 -0
  82. package/docs/COMPANY-WEBSITE-DOGFOOD.ko.md +144 -0
  83. package/docs/COMPANY-WEBSITE-DOGFOOD.md +150 -0
  84. package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.ko.md +153 -0
  85. package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.md +154 -0
  86. package/docs/CONTRIBUTING.ko.md +203 -0
  87. package/docs/CONTRIBUTING.md +242 -0
  88. package/docs/CURSOR-INTEGRATION.md +220 -0
  89. package/docs/DISTRIBUTION.ko.md +248 -0
  90. package/docs/DISTRIBUTION.md +253 -0
  91. package/docs/DOGFOOD-FINDINGS.md +180 -0
  92. package/docs/DOGFOOD-V4-FINDINGS.md +139 -0
  93. package/docs/DOGFOOD-V4-MKDOCS-FINDINGS.md +233 -0
  94. package/docs/DOGFOOD-V4-NPM-FINDINGS.md +157 -0
  95. package/docs/DOGFOOD-V4-VSCODE-FINDINGS.md +135 -0
  96. package/docs/FIGMA-INTEGRATION.md +222 -0
  97. package/docs/MCP-INTEGRATION.md +243 -0
  98. package/docs/MIGRATION-v4.md +121 -0
  99. package/docs/PLUGIN-PACKAGING.md +240 -0
  100. package/docs/PRODUCT-READINESS.md +66 -0
  101. package/docs/QUICKSTART.ko.md +178 -0
  102. package/docs/QUICKSTART.md +179 -0
  103. package/docs/RELEASE-CHECKLIST.md +292 -0
  104. package/docs/ROADMAP.md +19495 -0
  105. package/docs/SESSION-LOG.md +940 -0
  106. package/docs/TOKEN-SYNC.md +237 -0
  107. package/docs/USING.ko.md +206 -0
  108. package/docs/USING.md +218 -0
  109. package/docs/WEBSITE-IMPROVEMENT.ko.md +75 -0
  110. package/docs/WEBSITE-IMPROVEMENT.md +89 -0
  111. package/docs/announcements/README.md +56 -0
  112. package/docs/announcements/dev-to-korea.md +206 -0
  113. package/docs/announcements/hashnode-post.ko.md +232 -0
  114. package/docs/announcements/okky-post.ko.md +158 -0
  115. package/docs/announcements/press-kit.md +101 -0
  116. package/docs/announcements/reddit-r-korea.md +196 -0
  117. package/docs/announcements/show-hn.md +114 -0
  118. package/docs/announcements/twitter-thread.md +255 -0
  119. package/docs/external-status.md +34 -0
  120. package/docs/integrations/aider-walkthrough.ko.md +275 -0
  121. package/docs/integrations/aider-walkthrough.md +274 -0
  122. package/docs/integrations/codex-walkthrough.ko.md +297 -0
  123. package/docs/integrations/codex-walkthrough.md +297 -0
  124. package/docs/integrations/cursor-walkthrough.ko.md +281 -0
  125. package/docs/integrations/cursor-walkthrough.md +284 -0
  126. package/docs/integrations/design-ai-mcp-server.md +169 -0
  127. package/docs/integrations/figma-mcp.md +149 -0
  128. package/docs/integrations/github-mcp.md +178 -0
  129. package/docs/integrations/linear-mcp.md +215 -0
  130. package/docs/integrations/notion-mcp.md +174 -0
  131. package/docs/integrations/sdk-walkthrough.ko.md +375 -0
  132. package/docs/integrations/sdk-walkthrough.md +375 -0
  133. package/docs/integrations/slack-mcp.md +208 -0
  134. package/docs/integrations/vscode-walkthrough.ko.md +202 -0
  135. package/docs/integrations/vscode-walkthrough.md +205 -0
  136. package/docs/requirements.txt +16 -0
  137. package/docs/site-overrides/extra.css +83 -0
  138. package/docs/site-overrides/favicon.svg +4 -0
  139. package/docs/site-overrides/logo.svg +10 -0
  140. package/docs/site-overrides/main.html +18 -0
  141. package/docs/website-console/app.js +2540 -0
  142. package/docs/website-console/index.html +24 -0
  143. package/docs/website-console/styles.css +975 -0
  144. package/examples/README.md +252 -0
  145. package/examples/cases/dogfood-v4-korean-hr-onboarding.md +356 -0
  146. package/examples/component-accordion-actions.md +153 -0
  147. package/examples/component-accordion-details.md +147 -0
  148. package/examples/component-accordion-summary.md +180 -0
  149. package/examples/component-accordion.md +229 -0
  150. package/examples/component-account-card.md +284 -0
  151. package/examples/component-address-input.md +260 -0
  152. package/examples/component-affix.md +190 -0
  153. package/examples/component-alert-dialog.md +210 -0
  154. package/examples/component-alert-title.md +77 -0
  155. package/examples/component-alert.md +192 -0
  156. package/examples/component-amount-input.md +278 -0
  157. package/examples/component-anchor.md +198 -0
  158. package/examples/component-app-bar.md +249 -0
  159. package/examples/component-aspect-ratio.md +156 -0
  160. package/examples/component-auto-complete.md +199 -0
  161. package/examples/component-avatar-group.md +170 -0
  162. package/examples/component-avatar.md +191 -0
  163. package/examples/component-back-top.md +123 -0
  164. package/examples/component-backdrop.md +148 -0
  165. package/examples/component-badge.md +181 -0
  166. package/examples/component-banner.md +237 -0
  167. package/examples/component-biometric-gate.md +281 -0
  168. package/examples/component-blockquote.md +153 -0
  169. package/examples/component-border-beam.md +207 -0
  170. package/examples/component-bottom-navigation.md +226 -0
  171. package/examples/component-box.md +112 -0
  172. package/examples/component-breadcrumb.md +222 -0
  173. package/examples/component-button-base.md +190 -0
  174. package/examples/component-button-group.md +117 -0
  175. package/examples/component-button.md +213 -0
  176. package/examples/component-calendar.md +280 -0
  177. package/examples/component-callout.md +131 -0
  178. package/examples/component-card-actions.md +101 -0
  179. package/examples/component-card-content.md +90 -0
  180. package/examples/component-card-header.md +122 -0
  181. package/examples/component-card-media.md +79 -0
  182. package/examples/component-card.md +233 -0
  183. package/examples/component-carousel.md +266 -0
  184. package/examples/component-cascader.md +135 -0
  185. package/examples/component-category-picker.md +271 -0
  186. package/examples/component-chart.md +237 -0
  187. package/examples/component-chat-interface.md +399 -0
  188. package/examples/component-checkbox.md +149 -0
  189. package/examples/component-click-away-listener.md +87 -0
  190. package/examples/component-code.md +213 -0
  191. package/examples/component-collapsible.md +219 -0
  192. package/examples/component-color-picker.md +110 -0
  193. package/examples/component-combobox.md +267 -0
  194. package/examples/component-command.md +299 -0
  195. package/examples/component-config-provider.md +190 -0
  196. package/examples/component-context-menu.md +179 -0
  197. package/examples/component-css-baseline.md +148 -0
  198. package/examples/component-date-picker.md +249 -0
  199. package/examples/component-descriptions.md +242 -0
  200. package/examples/component-dialog-actions.md +111 -0
  201. package/examples/component-dialog-content-text.md +76 -0
  202. package/examples/component-dialog-content.md +105 -0
  203. package/examples/component-dialog-title.md +104 -0
  204. package/examples/component-dialog.md +176 -0
  205. package/examples/component-divider.md +182 -0
  206. package/examples/component-doc-page.md +217 -0
  207. package/examples/component-drawer.md +257 -0
  208. package/examples/component-dropdown.md +220 -0
  209. package/examples/component-email-layout.md +253 -0
  210. package/examples/component-empty-state.md +269 -0
  211. package/examples/component-empty.md +172 -0
  212. package/examples/component-fade.md +87 -0
  213. package/examples/component-feature-grid.md +201 -0
  214. package/examples/component-field.md +266 -0
  215. package/examples/component-filled-input.md +114 -0
  216. package/examples/component-flex.md +117 -0
  217. package/examples/component-float-button.md +214 -0
  218. package/examples/component-form-control-label.md +134 -0
  219. package/examples/component-form-control.md +113 -0
  220. package/examples/component-form-controls.md +251 -0
  221. package/examples/component-form-group.md +86 -0
  222. package/examples/component-form-helper-text.md +95 -0
  223. package/examples/component-form-label.md +98 -0
  224. package/examples/component-form.md +291 -0
  225. package/examples/component-game-hud.md +362 -0
  226. package/examples/component-game-menu.md +327 -0
  227. package/examples/component-grid.md +140 -0
  228. package/examples/component-grow.md +79 -0
  229. package/examples/component-hero-block.md +252 -0
  230. package/examples/component-hover-card.md +211 -0
  231. package/examples/component-icon-button.md +142 -0
  232. package/examples/component-icon.md +102 -0
  233. package/examples/component-illustration.md +280 -0
  234. package/examples/component-image-list.md +107 -0
  235. package/examples/component-image.md +282 -0
  236. package/examples/component-input-adornment.md +101 -0
  237. package/examples/component-input-base.md +134 -0
  238. package/examples/component-input-number.md +141 -0
  239. package/examples/component-input-otp.md +271 -0
  240. package/examples/component-input.md +213 -0
  241. package/examples/component-item.md +243 -0
  242. package/examples/component-kbd.md +197 -0
  243. package/examples/component-krw-amount.md +219 -0
  244. package/examples/component-label.md +118 -0
  245. package/examples/component-layout.md +217 -0
  246. package/examples/component-link.md +223 -0
  247. package/examples/component-list-item-avatar.md +72 -0
  248. package/examples/component-list-item-button.md +139 -0
  249. package/examples/component-list-item-icon.md +82 -0
  250. package/examples/component-list-item-text.md +98 -0
  251. package/examples/component-list-item.md +116 -0
  252. package/examples/component-list-subheader.md +70 -0
  253. package/examples/component-list.md +198 -0
  254. package/examples/component-loading-button.md +125 -0
  255. package/examples/component-loading-sequence.md +254 -0
  256. package/examples/component-lottie-player.md +279 -0
  257. package/examples/component-masonry.md +191 -0
  258. package/examples/component-mentions.md +189 -0
  259. package/examples/component-menu-item.md +102 -0
  260. package/examples/component-menu-list.md +98 -0
  261. package/examples/component-menu.md +139 -0
  262. package/examples/component-menubar.md +259 -0
  263. package/examples/component-message.md +162 -0
  264. package/examples/component-mobile-stepper.md +155 -0
  265. package/examples/component-modal.md +220 -0
  266. package/examples/component-navigation-menu.md +295 -0
  267. package/examples/component-notification.md +166 -0
  268. package/examples/component-otp-countdown.md +245 -0
  269. package/examples/component-outlined-input.md +145 -0
  270. package/examples/component-page-transition.md +281 -0
  271. package/examples/component-pagination.md +226 -0
  272. package/examples/component-paper.md +199 -0
  273. package/examples/component-pass-auth.md +265 -0
  274. package/examples/component-payment-brand-button.md +253 -0
  275. package/examples/component-payment-method-selector.md +272 -0
  276. package/examples/component-payment-receipt.md +277 -0
  277. package/examples/component-popconfirm.md +144 -0
  278. package/examples/component-popover.md +239 -0
  279. package/examples/component-popper.md +129 -0
  280. package/examples/component-pricing-cards.md +247 -0
  281. package/examples/component-progress.md +195 -0
  282. package/examples/component-qr-code.md +201 -0
  283. package/examples/component-radio.md +167 -0
  284. package/examples/component-rate.md +202 -0
  285. package/examples/component-resizable.md +163 -0
  286. package/examples/component-result.md +270 -0
  287. package/examples/component-scroll-area.md +199 -0
  288. package/examples/component-scroll-reveal.md +320 -0
  289. package/examples/component-segmented.md +178 -0
  290. package/examples/component-select.md +258 -0
  291. package/examples/component-separator.md +177 -0
  292. package/examples/component-sheet.md +277 -0
  293. package/examples/component-sidebar.md +257 -0
  294. package/examples/component-skeleton.md +178 -0
  295. package/examples/component-slide.md +89 -0
  296. package/examples/component-slider.md +208 -0
  297. package/examples/component-snackbar-content.md +92 -0
  298. package/examples/component-snackbar.md +121 -0
  299. package/examples/component-sonner.md +165 -0
  300. package/examples/component-space.md +125 -0
  301. package/examples/component-spatial-locomotion.md +373 -0
  302. package/examples/component-spatial-panel.md +330 -0
  303. package/examples/component-speed-dial-action.md +78 -0
  304. package/examples/component-speed-dial.md +177 -0
  305. package/examples/component-spin.md +173 -0
  306. package/examples/component-spinner.md +204 -0
  307. package/examples/component-splitter.md +210 -0
  308. package/examples/component-stack.md +130 -0
  309. package/examples/component-statistic.md +282 -0
  310. package/examples/component-step-button.md +157 -0
  311. package/examples/component-step-connector.md +157 -0
  312. package/examples/component-step-content.md +121 -0
  313. package/examples/component-step-icon.md +115 -0
  314. package/examples/component-step-label.md +101 -0
  315. package/examples/component-step.md +84 -0
  316. package/examples/component-steps.md +264 -0
  317. package/examples/component-stock-chart.md +251 -0
  318. package/examples/component-swipeable-drawer.md +149 -0
  319. package/examples/component-switch.md +99 -0
  320. package/examples/component-tab-scroll-button.md +180 -0
  321. package/examples/component-tab.md +120 -0
  322. package/examples/component-table-body.md +82 -0
  323. package/examples/component-table-cell.md +118 -0
  324. package/examples/component-table-container.md +75 -0
  325. package/examples/component-table-footer.md +72 -0
  326. package/examples/component-table-head.md +78 -0
  327. package/examples/component-table-pagination.md +137 -0
  328. package/examples/component-table-row.md +113 -0
  329. package/examples/component-table-sort-label.md +109 -0
  330. package/examples/component-table.md +202 -0
  331. package/examples/component-tabs.md +184 -0
  332. package/examples/component-tag-badge.md +309 -0
  333. package/examples/component-tag.md +102 -0
  334. package/examples/component-testimonial-carousel.md +218 -0
  335. package/examples/component-textarea-autosize.md +114 -0
  336. package/examples/component-textarea.md +173 -0
  337. package/examples/component-time-picker.md +205 -0
  338. package/examples/component-timeline.md +170 -0
  339. package/examples/component-toast.md +224 -0
  340. package/examples/component-toggle-button.md +129 -0
  341. package/examples/component-toggle.md +220 -0
  342. package/examples/component-toolbar.md +104 -0
  343. package/examples/component-tooltip.md +178 -0
  344. package/examples/component-tour.md +176 -0
  345. package/examples/component-transaction-list-item.md +243 -0
  346. package/examples/component-transfer.md +156 -0
  347. package/examples/component-tree-select.md +202 -0
  348. package/examples/component-tree.md +297 -0
  349. package/examples/component-typography.md +215 -0
  350. package/examples/component-upload.md +295 -0
  351. package/examples/component-video-hero.md +409 -0
  352. package/examples/component-video-player.md +340 -0
  353. package/examples/component-voice-input.md +408 -0
  354. package/examples/component-watermark.md +217 -0
  355. package/examples/component-zoom.md +92 -0
  356. package/examples/doc-explanation-example.md +196 -0
  357. package/examples/doc-how-to-example.md +205 -0
  358. package/examples/doc-tutorial-example.md +162 -0
  359. package/examples/dogfood-korean-fintech-system.md +433 -0
  360. package/examples/email-transactional-example.md +259 -0
  361. package/examples/palette-saas-violet.md +235 -0
  362. package/examples/print-business-card-spec.md +205 -0
  363. package/examples/print-packaging-spec.md +285 -0
  364. package/examples/report-example.md +228 -0
  365. package/examples/slide-deck-example.md +237 -0
  366. package/examples/website-improvement-report.md +128 -0
  367. package/examples/website-improvement-workspace.json +126 -0
  368. package/install.sh +189 -0
  369. package/knowledge/COVERAGE.md +740 -0
  370. package/knowledge/PRINCIPLES.md +108 -0
  371. package/knowledge/a11y/contrast.md +70 -0
  372. package/knowledge/a11y/keyboard-and-focus.md +108 -0
  373. package/knowledge/colors/color-theory.md +90 -0
  374. package/knowledge/colors/mui-palette-structure.md +105 -0
  375. package/knowledge/colors/palettes-by-product-type.md +876 -0
  376. package/knowledge/components/INDEX.md +231 -0
  377. package/knowledge/components/index.json +1470 -0
  378. package/knowledge/components/shadcn-registry.md +159 -0
  379. package/knowledge/conversational/ai-chat-interfaces.md +323 -0
  380. package/knowledge/conversational/chatbot-design.md +312 -0
  381. package/knowledge/conversational/conversational-ui-fundamentals.md +299 -0
  382. package/knowledge/conversational/korean-voice-conventions.md +281 -0
  383. package/knowledge/conversational/voice-ui-patterns.md +297 -0
  384. package/knowledge/design-tokens/ant-design.md +124 -0
  385. package/knowledge/design-tokens/material-3.md +235 -0
  386. package/knowledge/design-tokens/polaris-and-carbon.md +231 -0
  387. package/knowledge/design-tokens/tailwind-v4.md +284 -0
  388. package/knowledge/game-ui/game-accessibility.md +317 -0
  389. package/knowledge/game-ui/game-ui-fundamentals.md +281 -0
  390. package/knowledge/game-ui/hud-design.md +324 -0
  391. package/knowledge/game-ui/korean-gaming-conventions.md +312 -0
  392. package/knowledge/game-ui/menu-systems.md +388 -0
  393. package/knowledge/i18n/korean-app-store-visual.md +223 -0
  394. package/knowledge/i18n/korean-document-style.md +301 -0
  395. package/knowledge/i18n/korean-payments.md +211 -0
  396. package/knowledge/i18n/korean-product-conventions.md +96 -0
  397. package/knowledge/i18n/korean-publishing.md +139 -0
  398. package/knowledge/i18n/korean-typography.md +123 -0
  399. package/knowledge/icons/curated-sets.md +225 -0
  400. package/knowledge/illustration/hero-illustrations.md +234 -0
  401. package/knowledge/illustration/illustration-systems.md +221 -0
  402. package/knowledge/illustration/mascot-design.md +208 -0
  403. package/knowledge/illustration/spot-illustrations.md +246 -0
  404. package/knowledge/illustration/svg-optimization.md +308 -0
  405. package/knowledge/layout/spacing-and-grid.md +119 -0
  406. package/knowledge/motion/app-loading-sequences.md +277 -0
  407. package/knowledge/motion/choreography-depth.md +297 -0
  408. package/knowledge/motion/marketing-motion.md +223 -0
  409. package/knowledge/motion/micro-interactions.md +266 -0
  410. package/knowledge/motion/motion-tools.md +281 -0
  411. package/knowledge/motion/principles.md +126 -0
  412. package/knowledge/patterns/auth-flow-design.md +316 -0
  413. package/knowledge/patterns/b2b-onboarding-flows.md +182 -0
  414. package/knowledge/patterns/brand-identity.md +238 -0
  415. package/knowledge/patterns/brand-references.md +97 -0
  416. package/knowledge/patterns/chart-color-encoding.md +269 -0
  417. package/knowledge/patterns/chart-types.md +344 -0
  418. package/knowledge/patterns/dashboard-composition.md +299 -0
  419. package/knowledge/patterns/design-system-qa.md +356 -0
  420. package/knowledge/patterns/document-typography.md +248 -0
  421. package/knowledge/patterns/email-design.md +338 -0
  422. package/knowledge/patterns/empty-states.md +263 -0
  423. package/knowledge/patterns/error-states.md +318 -0
  424. package/knowledge/patterns/form-design.md +237 -0
  425. package/knowledge/patterns/information-architecture.md +341 -0
  426. package/knowledge/patterns/landing-hero-design.md +283 -0
  427. package/knowledge/patterns/landing-page-patterns.md +681 -0
  428. package/knowledge/patterns/list-and-feed.md +371 -0
  429. package/knowledge/patterns/mobile-navigation.md +278 -0
  430. package/knowledge/patterns/money-and-amount.md +301 -0
  431. package/knowledge/patterns/onboarding.md +300 -0
  432. package/knowledge/patterns/pricing-page-design.md +261 -0
  433. package/knowledge/patterns/realtime-data.md +280 -0
  434. package/knowledge/patterns/report-design.md +330 -0
  435. package/knowledge/patterns/search-ux.md +373 -0
  436. package/knowledge/patterns/settings-page.md +325 -0
  437. package/knowledge/patterns/slide-deck-design.md +316 -0
  438. package/knowledge/patterns/styles-catalog.md +2599 -0
  439. package/knowledge/patterns/technical-writing.md +306 -0
  440. package/knowledge/patterns/ui-reasoning.md +1853 -0
  441. package/knowledge/patterns/ux-guidelines.md +1454 -0
  442. package/knowledge/platforms/react-native.md +395 -0
  443. package/knowledge/print/brochures-and-flyers.md +276 -0
  444. package/knowledge/print/korean-print-conventions.md +284 -0
  445. package/knowledge/print/packaging.md +321 -0
  446. package/knowledge/print/print-fundamentals.md +238 -0
  447. package/knowledge/print/signage-and-posters.md +235 -0
  448. package/knowledge/print/stationery.md +262 -0
  449. package/knowledge/spatial/ar-patterns.md +253 -0
  450. package/knowledge/spatial/comfort-and-accessibility.md +245 -0
  451. package/knowledge/spatial/spatial-design-fundamentals.md +346 -0
  452. package/knowledge/spatial/spatial-ui-elements.md +343 -0
  453. package/knowledge/spatial/vr-patterns.md +302 -0
  454. package/knowledge/typography/font-pairings.md +332 -0
  455. package/knowledge/typography/mui-type-scale.md +57 -0
  456. package/knowledge/typography/type-scale-fundamentals.md +105 -0
  457. package/knowledge/video/in-product-video.md +277 -0
  458. package/knowledge/video/korean-video-conventions.md +247 -0
  459. package/knowledge/video/marketing-video.md +258 -0
  460. package/knowledge/video/social-and-short-form.md +257 -0
  461. package/knowledge/video/video-fundamentals.md +296 -0
  462. package/package.json +106 -0
  463. package/skills/README.md +39 -0
  464. package/skills/color-palette/PLAYBOOK.md +175 -0
  465. package/skills/color-palette/SKILL.md +6 -0
  466. package/skills/color-palette/TEMPLATE.md +103 -0
  467. package/skills/component-spec-writer/PLAYBOOK.md +169 -0
  468. package/skills/component-spec-writer/SKILL.md +6 -0
  469. package/skills/component-spec-writer/TEMPLATE.md +115 -0
  470. package/skills/conversational-ui-designer/PLAYBOOK.md +231 -0
  471. package/skills/conversational-ui-designer/SKILL.md +6 -0
  472. package/skills/design-broadcast/PLAYBOOK.md +146 -0
  473. package/skills/design-broadcast/SKILL.md +6 -0
  474. package/skills/design-critique/PLAYBOOK.md +137 -0
  475. package/skills/design-critique/SKILL.md +6 -0
  476. package/skills/design-pr-review/PLAYBOOK.md +171 -0
  477. package/skills/design-pr-review/SKILL.md +6 -0
  478. package/skills/design-system-builder/PLAYBOOK.md +218 -0
  479. package/skills/design-system-builder/SKILL.md +6 -0
  480. package/skills/design-system-qa/PLAYBOOK.md +163 -0
  481. package/skills/design-system-qa/SKILL.md +6 -0
  482. package/skills/document-author/PLAYBOOK.md +167 -0
  483. package/skills/document-author/SKILL.md +6 -0
  484. package/skills/figma-token-sync/PLAYBOOK.md +149 -0
  485. package/skills/figma-token-sync/SKILL.md +6 -0
  486. package/skills/game-ui-designer/PLAYBOOK.md +209 -0
  487. package/skills/game-ui-designer/SKILL.md +6 -0
  488. package/skills/handoff-spec/PLAYBOOK.md +170 -0
  489. package/skills/handoff-spec/SKILL.md +6 -0
  490. package/skills/illustration-designer/PLAYBOOK.md +166 -0
  491. package/skills/illustration-designer/SKILL.md +6 -0
  492. package/skills/motion-designer/PLAYBOOK.md +223 -0
  493. package/skills/motion-designer/SKILL.md +6 -0
  494. package/skills/print-designer/PLAYBOOK.md +209 -0
  495. package/skills/print-designer/SKILL.md +6 -0
  496. package/skills/slide-deck-author/PLAYBOOK.md +198 -0
  497. package/skills/slide-deck-author/SKILL.md +6 -0
  498. package/skills/spatial-designer/PLAYBOOK.md +238 -0
  499. package/skills/spatial-designer/SKILL.md +6 -0
  500. package/skills/ux-audit/PLAYBOOK.md +142 -0
  501. package/skills/ux-audit/SKILL.md +6 -0
  502. package/skills/video-designer/PLAYBOOK.md +240 -0
  503. package/skills/video-designer/SKILL.md +6 -0
  504. package/skills/website-improvement/PLAYBOOK.md +118 -0
  505. package/skills/website-improvement/SKILL.md +6 -0
  506. package/skills/website-improvement/TEMPLATE.md +103 -0
  507. package/tools/audit/changelog-generate.py +176 -0
  508. package/tools/audit/check-coverage.py +483 -0
  509. package/tools/audit/doctor_assertions.py +256 -0
  510. package/tools/audit/example-qa.py +108 -0
  511. package/tools/audit/frontmatter-check.py +199 -0
  512. package/tools/audit/integration-check.py +95 -0
  513. package/tools/audit/korean-copy-check.py +161 -0
  514. package/tools/audit/link-check.py +146 -0
  515. package/tools/audit/local-ci.py +558 -0
  516. package/tools/audit/package-contents.py +723 -0
  517. package/tools/audit/package-smoke.py +22443 -0
  518. package/tools/audit/raw-hex-check.py +252 -0
  519. package/tools/audit/registry-smoke.py +8188 -0
  520. package/tools/audit/release-metadata.py +9832 -0
  521. package/tools/audit/run-all.py +351 -0
  522. package/tools/audit/smoke_assertions.py +12742 -0
  523. package/tools/audit/stability-review.py +332 -0
  524. package/tools/audit/stale-check.py +156 -0
  525. package/tools/migrations/add-version-frontmatter.py +132 -0
  526. package/tools/migrations/bump-last-updated.py +131 -0
  527. package/tools/migrations/promote-stability.py +172 -0
  528. package/tools/preview/README.md +58 -0
  529. 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