@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,327 @@
1
+ <!-- hand-written -->
2
+ # `GameMenu` (custom — composable game menu shell with focus / input handling) — spec
3
+
4
+ > Composable shell for main menu / pause menu / settings / inventory / store. Handles focus management for keyboard / controller / touch, button-prompt swapping, modal stacking, and reduced-motion. Pairs with [`knowledge/game-ui/menu-systems.md`](../knowledge/game-ui/menu-systems.md).
5
+
6
+ ## Purpose
7
+
8
+ Game menus need behaviors web menus don't:
9
+ 1. **Controller / d-pad navigation** with auto-focus.
10
+ 2. **Button prompt** rendering ([A] Confirm, [B] Back) per platform.
11
+ 3. **Modal stacking** (pause → settings → audio sub-menu).
12
+ 4. **Tab navigation** with shoulder buttons (LB/RB).
13
+ 5. **Auto-pause game** when opened.
14
+ 6. **Smooth transitions** between menus.
15
+
16
+ `GameMenu` provides these primitives so each game menu screen doesn't reinvent.
17
+
18
+ ## Anatomy
19
+
20
+ ```
21
+ ┌──────────────────────────────────────────┐
22
+ │ ← [Back] TITLE [LB]│[RB] │ ← header w/ tabs
23
+ ├──────────────────────────────────────────┤
24
+ │ │
25
+ │ [Menu items list] │
26
+ │ ▶ Selected item │
27
+ │ Item 2 │
28
+ │ Item 3 │
29
+ │ │
30
+ │ [Detail panel] │
31
+ │ Description of selected item │
32
+ │ │
33
+ ├──────────────────────────────────────────┤
34
+ │ [A] Confirm [B] Back [Y] Action │ ← input prompts footer
35
+ └──────────────────────────────────────────┘
36
+ ```
37
+
38
+ ## API
39
+
40
+ ```tsx
41
+ <GameMenu
42
+ open={open}
43
+ onClose={() => setOpen(false)}
44
+ title="설정 / Settings"
45
+ inputType={inputType}
46
+ pauseGame
47
+ variant="overlay" // "fullscreen" | "overlay" | "modal"
48
+ tabs={[
49
+ { id: "video", label: "Video" },
50
+ { id: "audio", label: "Audio" },
51
+ { id: "controls", label: "Controls" },
52
+ { id: "a11y", label: "Accessibility" },
53
+ ]}
54
+ activeTab={tab}
55
+ onTabChange={setTab}
56
+ prompts={[
57
+ { button: "A", label: "Confirm", action: confirm },
58
+ { button: "B", label: "Back", action: back },
59
+ { button: "Y", label: "Reset", action: reset },
60
+ ]}
61
+ >
62
+ <GameMenuList>
63
+ <GameMenuItem id="resolution" label="Resolution" value="1920x1080" />
64
+ <GameMenuItem id="fullscreen" label="Fullscreen" value={true} type="toggle" />
65
+ <GameMenuItem id="vsync" label="V-Sync" value="On" type="select" options={...} />
66
+ </GameMenuList>
67
+ </GameMenu>
68
+ ```
69
+
70
+ | Prop | Type | Default | Description |
71
+ | --- | --- | --- | --- |
72
+ | `open` | `boolean` | — | Visibility |
73
+ | `onClose` | `() => void` | — | Back button / Esc |
74
+ | `title` | `string` | — | Menu title |
75
+ | `inputType` | `"keyboard" \| "controller-xbox" \| "controller-ps" \| "touch"` | auto | Determines prompts |
76
+ | `pauseGame` | `boolean` | `true` | Pause game world while menu open (single-player) |
77
+ | `variant` | `"fullscreen" \| "overlay" \| "modal"` | `"overlay"` | Visual treatment |
78
+ | `tabs` | `Tab[]` | `[]` | Tab definitions |
79
+ | `activeTab` | `string` | — | Current tab |
80
+ | `onTabChange` | `(id) => void` | — | Tab switch handler |
81
+ | `prompts` | `Prompt[]` | `[]` | Input prompt definitions for footer |
82
+ | `transitionDuration` | `number` | `200` | Open/close ms |
83
+ | `children` | `ReactNode` | — | Menu content |
84
+
85
+ ## Variants
86
+
87
+ ### `fullscreen`
88
+
89
+ Full-screen replacement for game render. Used for main menu, settings, large inventories.
90
+
91
+ ### `overlay`
92
+
93
+ Semi-opaque overlay with menu panel. Game world dimmed but visible. Used for pause, in-game inventory.
94
+
95
+ ### `modal`
96
+
97
+ Centered modal with backdrop. Used for confirmation dialogs, item detail.
98
+
99
+ ## Components inside
100
+
101
+ ### GameMenuList
102
+
103
+ ```tsx
104
+ <GameMenuList orientation="vertical" wrapNav={true}>
105
+ {items}
106
+ </GameMenuList>
107
+ ```
108
+
109
+ Handles arrow key / d-pad navigation between children.
110
+
111
+ ### GameMenuItem
112
+
113
+ ```tsx
114
+ <GameMenuItem
115
+ id="vsync"
116
+ label="V-Sync"
117
+ type="select" // "button" | "toggle" | "select" | "slider" | "remap"
118
+ value={value}
119
+ options={["Off", "On", "Adaptive"]}
120
+ onChange={(v) => setValue(v)}
121
+ description="Synchronizes display refresh; reduces tearing"
122
+ hotkey="V" // optional keyboard shortcut
123
+ />
124
+ ```
125
+
126
+ | `type` | UI |
127
+ | --- | --- |
128
+ | `button` | Single action (Resume, Quit) |
129
+ | `toggle` | On / Off boolean |
130
+ | `select` | Dropdown / cycle options |
131
+ | `slider` | Range input |
132
+ | `remap` | Capture next button press |
133
+
134
+ ### Tab strip
135
+
136
+ For tabbed menus:
137
+
138
+ ```
139
+ [< L1] Video Audio Controls Accessibility [R1 >]
140
+ ───── ───────
141
+ active
142
+ ```
143
+
144
+ L1 / R1 (or Q / E on PC) cycle tabs. Click / tap also works.
145
+
146
+ ## Focus management
147
+
148
+ ### Auto-focus on open
149
+
150
+ When menu opens, first interactive item auto-focused. Visible focus ring on controllers.
151
+
152
+ ### Focus trap
153
+
154
+ Tab / arrow / d-pad cycles within menu. Doesn't escape to background game.
155
+
156
+ ### Focus restoration on close
157
+
158
+ When menu closes, focus returns to whatever triggered it (or game window).
159
+
160
+ ### Visible focus indicator
161
+
162
+ ```css
163
+ .game-menu-item[data-focused="true"] {
164
+ outline: 2px solid var(--game-menu-focus-color);
165
+ background: var(--game-menu-focus-bg);
166
+ }
167
+ ```
168
+
169
+ For controller users: focus indicator must be unmistakable. Bigger, brighter than typical web focus ring.
170
+
171
+ ## Input handling
172
+
173
+ ### Keyboard
174
+
175
+ - Arrow keys / WASD: navigate.
176
+ - Enter / Space: confirm.
177
+ - Esc: back.
178
+ - Tab / Shift+Tab: alternative navigation.
179
+ - Letter shortcuts (V for V-Sync) when defined.
180
+
181
+ ### Controller (Xbox)
182
+
183
+ - D-pad / left stick: navigate.
184
+ - A: confirm.
185
+ - B: back.
186
+ - Y: secondary action (reset, more info).
187
+ - X: tertiary.
188
+ - LB / RB: tab cycle.
189
+ - Start / Menu button: close.
190
+
191
+ ### Controller (PlayStation)
192
+
193
+ - D-pad / left stick: navigate.
194
+ - ✕ (X): confirm.
195
+ - ◯ (Circle): back.
196
+ - △ (Triangle): secondary.
197
+ - □ (Square): tertiary.
198
+ - L1 / R1: tab cycle.
199
+ - Options: close.
200
+
201
+ ### Touch
202
+
203
+ - Tap: select / confirm.
204
+ - Tap "Back" button (top-left).
205
+ - Swipe between tabs.
206
+ - Long-press for context menu (optional).
207
+
208
+ ## Button prompt rendering
209
+
210
+ ```tsx
211
+ <InputPrompt button="A" inputType="controller-xbox" /> → [A]
212
+ <InputPrompt button="A" inputType="controller-ps" /> → [✕]
213
+ <InputPrompt button="A" inputType="keyboard" /> → [Enter]
214
+ <InputPrompt button="A" inputType="touch" /> → [Confirm] (text label)
215
+ ```
216
+
217
+ Common abstract names: `confirm`, `cancel`, `secondary`, `tertiary`, `tab-prev`, `tab-next`, `menu`. Component maps to platform.
218
+
219
+ ## States
220
+
221
+ | State | Visual |
222
+ | --- | --- |
223
+ | Closed | Hidden |
224
+ | Opening | Fade-in + scale 200ms |
225
+ | Open | Steady state |
226
+ | Tab transition | Cross-fade content 150ms |
227
+ | Closing | Fade-out 200ms |
228
+ | Reduced motion | Instant open / close |
229
+
230
+ ## Tokens consumed
231
+
232
+ ```
233
+ --game-menu-bg-overlay (semi-opaque backdrop)
234
+ --game-menu-bg-panel (menu panel bg)
235
+ --game-menu-fg-default (text)
236
+ --game-menu-fg-emphasis (selected / hover)
237
+ --game-menu-focus-color (focus ring)
238
+ --game-menu-focus-bg (focus bg)
239
+ --game-menu-divider (between sections)
240
+ --game-menu-prompts-bg (footer prompts bg)
241
+ --game-menu-anim-fade (200ms by default)
242
+ --game-menu-ease (ease-out)
243
+ ```
244
+
245
+ ## Accessibility
246
+
247
+ - **Focus visible** at all times during keyboard / controller use.
248
+ - **Screen reader**: each menu item announced as it's focused.
249
+ - **High contrast** mode swaps tokens.
250
+ - **Reduced motion** disables transitions.
251
+ - **Localizable** all labels.
252
+ - **Subtitle for menu sounds** if SFX-driven menus (rare but exists).
253
+ - **Touch targets** ≥ 44pt on mobile.
254
+
255
+ ## Implementation hints
256
+
257
+ ```tsx
258
+ function GameMenu({ open, onClose, title, inputType, prompts, children, ... }: Props) {
259
+ const containerRef = useRef<HTMLDivElement>(null);
260
+
261
+ // Focus trap
262
+ useFocusTrap(containerRef, { active: open, onEscape: onClose });
263
+
264
+ // Auto-focus first interactive on open
265
+ useEffect(() => {
266
+ if (open) {
267
+ const first = containerRef.current?.querySelector<HTMLElement>("[data-focusable='true']");
268
+ first?.focus();
269
+ }
270
+ }, [open]);
271
+
272
+ // Pause game when open (single-player only)
273
+ useEffect(() => {
274
+ if (open) gameState.pause();
275
+ else gameState.resume();
276
+ }, [open]);
277
+
278
+ if (!open) return null;
279
+
280
+ return (
281
+ <div className="game-menu-backdrop" onClick={onClose} role="dialog" aria-label={title}>
282
+ <div ref={containerRef} className="game-menu-panel" onClick={e => e.stopPropagation()}>
283
+ <GameMenuHeader title={title} onBack={onClose} tabs={...} />
284
+ <GameMenuBody>{children}</GameMenuBody>
285
+ <GameMenuPrompts prompts={prompts} inputType={inputType} />
286
+ </div>
287
+ </div>
288
+ );
289
+ }
290
+ ```
291
+
292
+ ## Edge cases
293
+
294
+ - **Multiplayer game**: don't pause world; show menu over live game with semi-transparency.
295
+ - **Network disconnect mid-menu**: handle gracefully; usually return to title.
296
+ - **Multiple menus stacked** (settings → audio submenu): manage stack; `B` / Esc pops stack one level.
297
+ - **Controller disconnect**: fall back to keyboard prompts; alert player.
298
+ - **Cross-platform game**: detect controller type and swap prompts; some games allow manual override.
299
+ - **Save/load mid-menu**: confirm before allowing destructive actions.
300
+ - **Tab content lazy-load**: don't render all tabs at mount; load on activate.
301
+
302
+ ## Korean game menu specifics
303
+
304
+ - 자막 toggle prominent (often top of accessibility).
305
+ - 본인인증 button visible on account / login menus.
306
+ - 확률 표시 (probability) link from gacha menus.
307
+ - VIP / 출석 banners commonly integrated into main menu.
308
+
309
+ ## Don't
310
+
311
+ - Don't hard-code one input type. Detect and swap.
312
+ - Don't break the back button. Esc / B should always work.
313
+ - Don't lock the player out of menu (must be openable any time game is running).
314
+ - Don't delay critical menus (settings) behind cinematics.
315
+ - Don't omit input prompts. Players need to know which buttons work.
316
+ - Don't use small touch targets (< 44pt) on mobile.
317
+ - Don't auto-pause in multiplayer.
318
+ - Don't make settings unsearchable past 50 items.
319
+
320
+ ## Cross-reference
321
+
322
+ - [`knowledge/game-ui/menu-systems.md`](../knowledge/game-ui/menu-systems.md) — menu types
323
+ - [`knowledge/game-ui/game-ui-fundamentals.md`](../knowledge/game-ui/game-ui-fundamentals.md) — input methods
324
+ - [`knowledge/game-ui/game-accessibility.md`](../knowledge/game-ui/game-accessibility.md) — a11y
325
+ - [`knowledge/game-ui/korean-gaming-conventions.md`](../knowledge/game-ui/korean-gaming-conventions.md) — KR
326
+ - [`examples/component-game-hud.md`](component-game-hud.md) — HUD primitive
327
+ - [`knowledge/a11y/keyboard-and-focus.md`](../knowledge/a11y/keyboard-and-focus.md) — focus management
@@ -0,0 +1,140 @@
1
+ # `Grid` — spec
2
+
3
+ > Synthesized from Ant Design `Grid` (Row + Col) and MUI `Grid` (v2). Two-dimensional layout primitive — rows + columns with gap. Use for responsive multi-column layouts.
4
+
5
+ ## When to use
6
+
7
+ - Multi-column layouts (3-up feature grids, 2-col forms, dashboards).
8
+ - Responsive layouts that change column count by breakpoint.
9
+ - Anywhere CSS Grid is the right tool and you want a system primitive.
10
+
11
+ When NOT to use:
12
+ - Single direction (row OR column with consistent gap) — use `Flex` / `Stack`.
13
+ - Pinterest-style varying heights — use `Masonry`.
14
+ - Tabular data — use `Table`.
15
+
16
+ ## API — Ant style (Row + Col)
17
+
18
+ ```tsx
19
+ <Row gutter={[16, 16]}>
20
+ <Col xs={24} sm={12} lg={8}>
21
+ <Card>Item 1</Card>
22
+ </Col>
23
+ <Col xs={24} sm={12} lg={8}>
24
+ <Card>Item 2</Card>
25
+ </Col>
26
+ <Col xs={24} sm={12} lg={8}>
27
+ <Card>Item 3</Card>
28
+ </Col>
29
+ </Row>
30
+ ```
31
+
32
+ 24-column grid (Ant's default). Each `<Col>` specifies span per breakpoint.
33
+
34
+ ## API — MUI v2 style
35
+
36
+ ```tsx
37
+ <Grid container spacing={2}>
38
+ <Grid xs={12} sm={6} lg={4}>
39
+ <Card>Item 1</Card>
40
+ </Grid>
41
+ <Grid xs={12} sm={6} lg={4}>
42
+ <Card>Item 2</Card>
43
+ </Grid>
44
+ <Grid xs={12} sm={6} lg={4}>
45
+ <Card>Item 3</Card>
46
+ </Grid>
47
+ </Grid>
48
+ ```
49
+
50
+ 12-column grid. Same idea.
51
+
52
+ ## API — modern CSS Grid wrapper
53
+
54
+ ```tsx
55
+ <Grid columns={{ mobile: 1, tablet: 2, desktop: 3 }} gap={4}>
56
+ <Card>Item 1</Card>
57
+ <Card>Item 2</Card>
58
+ <Card>Item 3</Card>
59
+ </Grid>
60
+ ```
61
+
62
+ Simpler if your design system doesn't need fractional column spans (most don't).
63
+
64
+ ## States
65
+
66
+ Stateless.
67
+
68
+ ## Tokens consumed
69
+
70
+ ```
71
+ --breakpoint-mobile / -tablet / -desktop / -wide
72
+ --space-{0..n} (gap)
73
+ --grid-columns (system grid count: 12 or 24)
74
+ ```
75
+
76
+ ## Common layouts
77
+
78
+ ### 3-up cards, responsive
79
+
80
+ ```tsx
81
+ <Grid columns={{ mobile: 1, tablet: 2, desktop: 3 }} gap={6}>
82
+ {features.map(f => <FeatureCard key={f.id} {...f} />)}
83
+ </Grid>
84
+ ```
85
+
86
+ ### Sidebar + content (asymmetric)
87
+
88
+ ```tsx
89
+ <Grid columns="240px 1fr" gap={4}>
90
+ <aside>Sidebar</aside>
91
+ <main>Content</main>
92
+ </Grid>
93
+ ```
94
+
95
+ (Pass through to CSS `grid-template-columns` for non-system-grid cases.)
96
+
97
+ ### Form (2-column)
98
+
99
+ ```tsx
100
+ <Grid columns={{ mobile: 1, tablet: 2 }} gap={4}>
101
+ <Field>
102
+ <Label>First name</Label>
103
+ <Input />
104
+ </Field>
105
+ <Field>
106
+ <Label>Last name</Label>
107
+ <Input />
108
+ </Field>
109
+ <Field span={2}> {/* full-width on tablet+ */}
110
+ <Label>Address</Label>
111
+ <Input />
112
+ </Field>
113
+ </Grid>
114
+ ```
115
+
116
+ ## Accessibility
117
+
118
+ - Grid is presentational. Source order = reading order; ensure DOM matches the intended reading order.
119
+ - Don't use CSS Grid `grid-row` / `grid-column` to visually re-order if it breaks reading. Screen readers read DOM.
120
+ - For responsive collapses: ensure mobile single-column doesn't break content priority.
121
+
122
+ ## Don't
123
+
124
+ - Don't use Grid for single-row toolbars. Use Flex.
125
+ - Don't reorder content via `order` / `grid-area` such that DOM != reading order.
126
+ - Don't nest Grids 4+ levels — refactor to a single grid or use components.
127
+ - Don't hard-code pixel widths in Grid spans. Use the column system OR fractions.
128
+
129
+ ## References
130
+
131
+ - Ant: [`Grid`](../refs/ant-design/components/grid) (Row + Col, 24-col)
132
+ - MUI: [`Grid`](../refs/mui/packages/mui-material/src/Grid) (12-col)
133
+ - CSS Grid Level 1 / 2
134
+
135
+ ## Cross-reference
136
+
137
+ - [`examples/component-flex.md`](component-flex.md) — single-direction
138
+ - [`examples/component-masonry.md`](component-masonry.md) — varied-height
139
+ - [`examples/component-feature-grid.md`](component-feature-grid.md) — opinionated 3-up wrapper
140
+ - [`knowledge/layout/spacing-and-grid.md`](../knowledge/layout/spacing-and-grid.md)
@@ -0,0 +1,79 @@
1
+ # `Grow` — spec
2
+
3
+ > Synthesized from MUI `Grow`. Scale + fade transition — element grows from a transform origin point. Used for menus, popovers, tooltips that should appear "from" their anchor.
4
+
5
+ ## When to use
6
+
7
+ - Menus / popovers anchored to a button.
8
+ - Tooltips with a discoverable origin.
9
+ - Cards that emerge from a "+" floating action button.
10
+
11
+ ## API
12
+
13
+ ```tsx
14
+ <Grow in={open} style={{ transformOrigin: '0 0 0' }} timeout={200}>
15
+ <Paper>Menu items</Paper>
16
+ </Grow>
17
+ ```
18
+
19
+ | Prop | Type | Default | Description |
20
+ | --- | --- | --- | --- |
21
+ | `in` | `boolean` | required | Trigger enter/exit |
22
+ | `timeout` | `number \| 'auto' \| { enter, exit }` | `'auto'` | `'auto'` computes from element size |
23
+ | `easing` | `string \| { enter, exit }` | theme default | CSS easing |
24
+ | `mountOnEnter` | `boolean` | `false` | |
25
+ | `unmountOnExit` | `boolean` | `false` | |
26
+ | `style` | `CSSProperties` | — | Set `transformOrigin` to control where it grows from |
27
+
28
+ ## Tokens consumed
29
+
30
+ ```
31
+ --motion-duration-auto
32
+ --motion-easing-out
33
+ ```
34
+
35
+ ## Accessibility
36
+
37
+ - Same as `Fade`: respects `prefers-reduced-motion`.
38
+ - For menus, ensure focus moves into the menu after enter (auto via `MenuList autoFocusItem`).
39
+
40
+ ## Edge cases
41
+
42
+ - **transformOrigin missing** — defaults to center. For menus anchored top-left, set `transformOrigin: '0 0 0'`. For floating-action menus, `'100% 100%'`.
43
+ - **`timeout='auto'`** — MUI computes duration from element height (longer for taller). Good default; override only for tight UI.
44
+
45
+ ## Code example
46
+
47
+ ```tsx
48
+ <Popper open={open} anchorEl={anchorEl} transition placement="bottom-start">
49
+ {({ TransitionProps }) => (
50
+ <Grow {...TransitionProps} style={{ transformOrigin: '0 0 0' }}>
51
+ <Paper>
52
+ <ClickAwayListener onClickAway={handleClose}>
53
+ <MenuList autoFocusItem>
54
+ <MenuItem>편집</MenuItem>
55
+ <MenuItem>삭제</MenuItem>
56
+ </MenuList>
57
+ </ClickAwayListener>
58
+ </Paper>
59
+ </Grow>
60
+ )}
61
+ </Popper>
62
+ ```
63
+
64
+ ## Don't
65
+
66
+ - Don't grow from `center` for menus — feels detached from the anchor.
67
+ - Don't combine with `Slide` on the same element — pick one direction of motion.
68
+
69
+ ## References
70
+
71
+ - MUI: [`Grow`](../refs/mui/packages/mui-material/src/Grow/)
72
+
73
+ ## Cross-reference
74
+
75
+ - [`component-fade.md`](component-fade.md)
76
+ - [`component-slide.md`](component-slide.md)
77
+ - [`component-zoom.md`](component-zoom.md)
78
+ - [`component-popper.md`](component-popper.md)
79
+ - [`knowledge/motion/principles.md`](../knowledge/motion/principles.md)