@design-ai/cli 4.56.0 → 4.57.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 (264) hide show
  1. package/.claude-plugin/plugin.json +109 -25
  2. package/CHANGELOG.md +36 -0
  3. package/README.ko.md +9 -26
  4. package/README.md +10 -23
  5. package/cli/bin/design-ai.mjs +1 -0
  6. package/cli/commands/help.mjs +7 -4
  7. package/cli/commands/index.mjs +292 -0
  8. package/cli/commands/learn-help.mjs +149 -0
  9. package/cli/commands/learn-print-profile.mjs +373 -0
  10. package/cli/commands/learn-print-restore.mjs +349 -0
  11. package/cli/commands/learn-print-signals.mjs +453 -0
  12. package/cli/commands/learn.mjs +60 -1281
  13. package/cli/commands/pack.mjs +7 -3
  14. package/cli/commands/prompt.mjs +7 -3
  15. package/cli/commands/search.mjs +94 -1
  16. package/cli/lib/dispatch.mjs +3 -0
  17. package/cli/lib/embedding-index.mjs +199 -0
  18. package/cli/lib/embedding-provider.mjs +121 -0
  19. package/cli/lib/embedding-rerank.mjs +52 -0
  20. package/cli/lib/learn-args.mjs +490 -0
  21. package/cli/lib/learn-backup.mjs +748 -0
  22. package/cli/lib/learn-curation.mjs +612 -0
  23. package/cli/lib/learn-eval.mjs +459 -0
  24. package/cli/lib/learn-profile.mjs +763 -0
  25. package/cli/lib/learn-select.mjs +223 -0
  26. package/cli/lib/learn-shared.mjs +158 -0
  27. package/cli/lib/learn-test-support.mjs +218 -0
  28. package/cli/lib/learn-usage.mjs +360 -0
  29. package/cli/lib/learn.mjs +83 -3694
  30. package/cli/lib/lexical.mjs +137 -0
  31. package/cli/lib/local-config.mjs +110 -0
  32. package/cli/lib/mcp-server.mjs +13 -3
  33. package/cli/lib/pack.mjs +31 -4
  34. package/cli/lib/prompt.mjs +42 -4
  35. package/cli/lib/recall.mjs +193 -0
  36. package/cli/lib/retrieval-index.mjs +0 -0
  37. package/cli/lib/search-ranked.mjs +170 -0
  38. package/cli/lib/search.mjs +11 -1
  39. package/cli/lib/signals-backlog-commands.mjs +673 -0
  40. package/cli/lib/signals-backlog.mjs +361 -0
  41. package/cli/lib/signals-eval.mjs +176 -0
  42. package/cli/lib/signals-readiness.mjs +247 -0
  43. package/cli/lib/signals-registry.mjs +377 -0
  44. package/cli/lib/signals-render.mjs +478 -0
  45. package/cli/lib/signals-shared.mjs +75 -0
  46. package/cli/lib/signals.mjs +16 -2337
  47. package/cli/lib/site-bundle-handoff-expected.mjs +173 -0
  48. package/cli/lib/site-bundle-handoff-runbook-action-summary.mjs +332 -0
  49. package/cli/lib/site-bundle-handoff-runbook-human-lines.mjs +167 -0
  50. package/cli/lib/site-bundle-handoff-runbook-maps.mjs +238 -0
  51. package/cli/lib/site-bundle-handoff-runbook-next-step.mjs +278 -0
  52. package/cli/lib/site-bundle-handoff-runbook.mjs +44 -931
  53. package/cli/lib/site-test-support.mjs +68 -0
  54. package/cli/lib/skill-proposals-apply-commands.mjs +135 -0
  55. package/cli/lib/skill-proposals-apply-contract.mjs +750 -0
  56. package/cli/lib/skill-proposals-apply-plan.mjs +118 -0
  57. package/cli/lib/skill-proposals-generate.mjs +298 -0
  58. package/cli/lib/skill-proposals-render.mjs +532 -0
  59. package/cli/lib/skill-proposals-review.mjs +262 -0
  60. package/cli/lib/skill-proposals.mjs +15 -2046
  61. package/cli/lib/workspace-args.mjs +83 -0
  62. package/cli/lib/workspace-git.mjs +169 -0
  63. package/cli/lib/workspace-learning.mjs +483 -0
  64. package/cli/lib/workspace-repo.mjs +139 -0
  65. package/cli/lib/workspace-report.mjs +283 -0
  66. package/cli/lib/workspace-test-support.mjs +99 -0
  67. package/cli/lib/workspace.mjs +30 -1056
  68. package/docs/AI-LEARNING-PHASE2.md +215 -0
  69. package/docs/DISTRIBUTION.ko.md +2 -2
  70. package/docs/DISTRIBUTION.md +2 -2
  71. package/docs/NEXT-SURFACE-DECISION.md +125 -0
  72. package/docs/PRODUCT-READINESS.md +3 -3
  73. package/docs/RELEASE-GATES.ko.md +35 -0
  74. package/docs/RELEASE-GATES.md +234 -0
  75. package/docs/ROADMAP.md +53 -8
  76. package/docs/external-status.md +6 -8
  77. package/docs/inspection-20260630.md +169 -0
  78. package/docs/integrations/design-ai-mcp-server.md +4 -4
  79. package/docs/reference/ant-design.md +413 -0
  80. package/docs/reference/awesome-design-md.md +439 -0
  81. package/docs/reference/mui.md +783 -0
  82. package/docs/reference/shadcn-ui.md +298 -0
  83. package/examples/component-accordion-actions.md +5 -5
  84. package/examples/component-accordion-details.md +5 -5
  85. package/examples/component-accordion-summary.md +5 -5
  86. package/examples/component-accordion.md +3 -3
  87. package/examples/component-affix.md +1 -1
  88. package/examples/component-alert-dialog.md +1 -1
  89. package/examples/component-alert-title.md +1 -1
  90. package/examples/component-alert.md +3 -3
  91. package/examples/component-anchor.md +1 -1
  92. package/examples/component-app-bar.md +1 -1
  93. package/examples/component-aspect-ratio.md +1 -1
  94. package/examples/component-auto-complete.md +2 -2
  95. package/examples/component-avatar-group.md +5 -5
  96. package/examples/component-avatar.md +3 -3
  97. package/examples/component-back-top.md +1 -1
  98. package/examples/component-backdrop.md +1 -1
  99. package/examples/component-badge.md +3 -3
  100. package/examples/component-border-beam.md +3 -3
  101. package/examples/component-bottom-navigation.md +1 -1
  102. package/examples/component-box.md +1 -1
  103. package/examples/component-breadcrumb.md +3 -3
  104. package/examples/component-button-base.md +3 -3
  105. package/examples/component-button-group.md +2 -2
  106. package/examples/component-button.md +3 -3
  107. package/examples/component-calendar.md +2 -2
  108. package/examples/component-card-actions.md +1 -1
  109. package/examples/component-card-content.md +1 -1
  110. package/examples/component-card-header.md +1 -1
  111. package/examples/component-card-media.md +1 -1
  112. package/examples/component-card.md +3 -3
  113. package/examples/component-carousel.md +2 -2
  114. package/examples/component-cascader.md +1 -1
  115. package/examples/component-chart.md +1 -1
  116. package/examples/component-checkbox.md +3 -3
  117. package/examples/component-click-away-listener.md +1 -1
  118. package/examples/component-code.md +1 -1
  119. package/examples/component-collapsible.md +1 -1
  120. package/examples/component-color-picker.md +1 -1
  121. package/examples/component-combobox.md +1 -1
  122. package/examples/component-command.md +1 -1
  123. package/examples/component-config-provider.md +3 -3
  124. package/examples/component-context-menu.md +1 -1
  125. package/examples/component-css-baseline.md +3 -3
  126. package/examples/component-date-picker.md +2 -2
  127. package/examples/component-descriptions.md +1 -1
  128. package/examples/component-dialog-actions.md +1 -1
  129. package/examples/component-dialog-content-text.md +1 -1
  130. package/examples/component-dialog-content.md +1 -1
  131. package/examples/component-dialog-title.md +1 -1
  132. package/examples/component-dialog.md +2 -2
  133. package/examples/component-divider.md +3 -3
  134. package/examples/component-drawer.md +3 -3
  135. package/examples/component-dropdown.md +3 -3
  136. package/examples/component-empty.md +2 -2
  137. package/examples/component-fade.md +1 -1
  138. package/examples/component-field.md +1 -1
  139. package/examples/component-filled-input.md +1 -1
  140. package/examples/component-flex.md +1 -1
  141. package/examples/component-float-button.md +2 -2
  142. package/examples/component-form-control-label.md +1 -1
  143. package/examples/component-form-control.md +1 -1
  144. package/examples/component-form-controls.md +1 -1
  145. package/examples/component-form-group.md +1 -1
  146. package/examples/component-form-helper-text.md +1 -1
  147. package/examples/component-form-label.md +1 -1
  148. package/examples/component-form.md +2 -2
  149. package/examples/component-grid.md +2 -2
  150. package/examples/component-grow.md +1 -1
  151. package/examples/component-hover-card.md +1 -1
  152. package/examples/component-icon-button.md +1 -1
  153. package/examples/component-icon.md +1 -1
  154. package/examples/component-image-list.md +1 -1
  155. package/examples/component-image.md +1 -1
  156. package/examples/component-input-adornment.md +1 -1
  157. package/examples/component-input-base.md +1 -1
  158. package/examples/component-input-number.md +1 -1
  159. package/examples/component-input-otp.md +2 -2
  160. package/examples/component-input.md +3 -3
  161. package/examples/component-item.md +1 -1
  162. package/examples/component-label.md +1 -1
  163. package/examples/component-layout.md +1 -1
  164. package/examples/component-link.md +1 -1
  165. package/examples/component-list-item-avatar.md +1 -1
  166. package/examples/component-list-item-button.md +1 -1
  167. package/examples/component-list-item-icon.md +1 -1
  168. package/examples/component-list-item-text.md +1 -1
  169. package/examples/component-list-item.md +1 -1
  170. package/examples/component-list-subheader.md +1 -1
  171. package/examples/component-list.md +2 -2
  172. package/examples/component-masonry.md +1 -1
  173. package/examples/component-mentions.md +1 -1
  174. package/examples/component-menu-item.md +1 -1
  175. package/examples/component-menu-list.md +1 -1
  176. package/examples/component-menu.md +1 -1
  177. package/examples/component-menubar.md +1 -1
  178. package/examples/component-message.md +1 -1
  179. package/examples/component-mobile-stepper.md +1 -1
  180. package/examples/component-modal.md +5 -5
  181. package/examples/component-navigation-menu.md +1 -1
  182. package/examples/component-notification.md +1 -1
  183. package/examples/component-outlined-input.md +1 -1
  184. package/examples/component-pagination.md +3 -3
  185. package/examples/component-paper.md +1 -1
  186. package/examples/component-popconfirm.md +1 -1
  187. package/examples/component-popover.md +3 -3
  188. package/examples/component-popper.md +1 -1
  189. package/examples/component-progress.md +2 -2
  190. package/examples/component-qr-code.md +1 -1
  191. package/examples/component-radio.md +3 -3
  192. package/examples/component-rate.md +2 -2
  193. package/examples/component-resizable.md +1 -1
  194. package/examples/component-result.md +1 -1
  195. package/examples/component-scroll-area.md +1 -1
  196. package/examples/component-segmented.md +3 -3
  197. package/examples/component-select.md +3 -3
  198. package/examples/component-separator.md +1 -1
  199. package/examples/component-sheet.md +1 -1
  200. package/examples/component-sidebar.md +1 -1
  201. package/examples/component-skeleton.md +3 -3
  202. package/examples/component-slide.md +1 -1
  203. package/examples/component-slider.md +3 -3
  204. package/examples/component-snackbar-content.md +1 -1
  205. package/examples/component-snackbar.md +1 -1
  206. package/examples/component-sonner.md +1 -1
  207. package/examples/component-space.md +1 -1
  208. package/examples/component-speed-dial-action.md +1 -1
  209. package/examples/component-speed-dial.md +1 -1
  210. package/examples/component-spin.md +2 -2
  211. package/examples/component-spinner.md +1 -1
  212. package/examples/component-splitter.md +2 -2
  213. package/examples/component-stack.md +1 -1
  214. package/examples/component-statistic.md +1 -1
  215. package/examples/component-step-button.md +4 -4
  216. package/examples/component-step-connector.md +4 -4
  217. package/examples/component-step-content.md +1 -1
  218. package/examples/component-step-icon.md +1 -1
  219. package/examples/component-step-label.md +1 -1
  220. package/examples/component-step.md +2 -2
  221. package/examples/component-steps.md +2 -2
  222. package/examples/component-swipeable-drawer.md +1 -1
  223. package/examples/component-switch.md +3 -3
  224. package/examples/component-tab-scroll-button.md +5 -5
  225. package/examples/component-tab.md +1 -1
  226. package/examples/component-table-body.md +1 -1
  227. package/examples/component-table-cell.md +1 -1
  228. package/examples/component-table-container.md +1 -1
  229. package/examples/component-table-footer.md +1 -1
  230. package/examples/component-table-head.md +1 -1
  231. package/examples/component-table-pagination.md +1 -1
  232. package/examples/component-table-row.md +1 -1
  233. package/examples/component-table-sort-label.md +1 -1
  234. package/examples/component-table.md +2 -2
  235. package/examples/component-tabs.md +3 -3
  236. package/examples/component-tag-badge.md +2 -2
  237. package/examples/component-tag.md +1 -1
  238. package/examples/component-textarea-autosize.md +1 -1
  239. package/examples/component-textarea.md +1 -1
  240. package/examples/component-time-picker.md +1 -1
  241. package/examples/component-timeline.md +1 -1
  242. package/examples/component-toast.md +4 -4
  243. package/examples/component-toggle-button.md +1 -1
  244. package/examples/component-toggle.md +1 -1
  245. package/examples/component-toolbar.md +1 -1
  246. package/examples/component-tooltip.md +3 -3
  247. package/examples/component-tour.md +1 -1
  248. package/examples/component-transfer.md +1 -1
  249. package/examples/component-tree-select.md +1 -1
  250. package/examples/component-tree.md +1 -1
  251. package/examples/component-typography.md +2 -2
  252. package/examples/component-upload.md +1 -1
  253. package/examples/component-watermark.md +1 -1
  254. package/examples/component-zoom.md +1 -1
  255. package/knowledge/COVERAGE.md +4 -3
  256. package/knowledge/components/INDEX.md +202 -202
  257. package/knowledge/patterns/brand-references.md +72 -72
  258. package/package.json +1 -1
  259. package/tools/audit/local-ci.py +16 -1
  260. package/tools/audit/package-smoke.py +611 -9
  261. package/tools/audit/registry-smoke.py +534 -0
  262. package/tools/audit/release-metadata.py +47 -1
  263. package/tools/audit/smoke_assertions.py +915 -13
  264. package/tools/migrations/refs-links-to-reference-pages.py +179 -0
@@ -196,9 +196,9 @@ If any of these don't exist in your token system, **stop and add them before imp
196
196
 
197
197
  ## References
198
198
 
199
- - Ant Design: [`refs/ant-design/components/button/Button.tsx`](../refs/ant-design/components/button/Button.tsx) — most exhaustive prop coverage; uses `type` (legacy) and `variant` (modern) in parallel, with `color` as a separate axis.
200
- - MUI: [`refs/mui/packages/mui-material/src/Button/Button.d.ts`](../refs/mui/packages/mui-material/src/Button/Button.d.ts) — `variant` (`text`/`outlined`/`contained`), `color` (semantic), `loadingPosition`. The most thoroughly documented.
201
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/button.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/button.tsx) — Tailwind `cva` pattern, `asChild` via Radix Slot, simplest API surface. Inspired the `iconStart`/`iconEnd` and `asChild` choices in this spec.
199
+ - Ant Design: [`refs/ant-design/components/button/Button.tsx`](../docs/reference/ant-design.md#button) — most exhaustive prop coverage; uses `type` (legacy) and `variant` (modern) in parallel, with `color` as a separate axis.
200
+ - MUI: [`refs/mui/packages/mui-material/src/Button/Button.d.ts`](../docs/reference/mui.md#button) — `variant` (`text`/`outlined`/`contained`), `color` (semantic), `loadingPosition`. The most thoroughly documented.
201
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/button.tsx`](../docs/reference/shadcn-ui.md#button) — Tailwind `cva` pattern, `asChild` via Radix Slot, simplest API surface. Inspired the `iconStart`/`iconEnd` and `asChild` choices in this spec.
202
202
 
203
203
  API choices made:
204
204
  - **`variant` names**: `solid`/`outline`/`ghost`/`link` over MUI's `text`/`outlined`/`contained` (clearer for non-Material teams) and over Ant's `default`/`dashed`/`text`/`link` (`default` is uninformative).
@@ -262,9 +262,9 @@ function MonthlyScheduleScreen() {
262
262
 
263
263
  ## References
264
264
 
265
- - Ant Design: [`refs/ant-design/components/calendar/`](../refs/ant-design/components/calendar/) — `Calendar` with `mode="month" | "year"`, `dateCellRender`, `monthCellRender`. Most exhaustive.
265
+ - Ant Design: [`refs/ant-design/components/calendar/`](../docs/reference/ant-design.md#calendar) — `Calendar` with `mode="month" | "year"`, `dateCellRender`, `monthCellRender`. Most exhaustive.
266
266
  - MUI: `@mui/x-date-pickers` `DateCalendar` — focused on date selection within a calendar grid; not full-month event-display.
267
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/calendar.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/calendar.tsx) — wraps `react-day-picker`. Use as date selector or full calendar via `mode="default"` + `numberOfMonths`.
267
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/calendar.tsx`](../docs/reference/shadcn-ui.md#calendar) — wraps `react-day-picker`. Use as date selector or full calendar via `mode="default"` + `numberOfMonths`.
268
268
 
269
269
  For event-heavy calendar apps (Google Calendar style), consider:
270
270
  - `react-big-calendar` — month/week/day views with events
@@ -91,7 +91,7 @@ Left-aligned by default. The convention differs from `DialogActions` (right-alig
91
91
 
92
92
  ## References
93
93
 
94
- - MUI: [`CardActions.d.ts`](../refs/mui/packages/mui-material/src/CardActions/CardActions.d.ts)
94
+ - MUI: [`CardActions.d.ts`](../docs/reference/mui.md#card-actions)
95
95
 
96
96
  ## Cross-reference
97
97
 
@@ -79,7 +79,7 @@
79
79
 
80
80
  ## References
81
81
 
82
- - MUI: [`CardContent.d.ts`](../refs/mui/packages/mui-material/src/CardContent/CardContent.d.ts)
82
+ - MUI: [`CardContent.d.ts`](../docs/reference/mui.md#card-content)
83
83
 
84
84
  ## Cross-reference
85
85
 
@@ -112,7 +112,7 @@ function PostCard({ post, onMore, onLike }) {
112
112
 
113
113
  ## References
114
114
 
115
- - MUI: [`CardHeader`](../refs/mui/packages/mui-material/src/CardHeader/)
115
+ - MUI: [`CardHeader`](../docs/reference/mui.md#card-header)
116
116
 
117
117
  ## Cross-reference
118
118
 
@@ -69,7 +69,7 @@
69
69
 
70
70
  ## References
71
71
 
72
- - MUI: [`CardMedia`](../refs/mui/packages/mui-material/src/CardMedia/)
72
+ - MUI: [`CardMedia`](../docs/reference/mui.md#card-media)
73
73
 
74
74
  ## Cross-reference
75
75
 
@@ -216,9 +216,9 @@ For image-led cards: `padding="none"`, manually pad the text sections. The cover
216
216
 
217
217
  ## References
218
218
 
219
- - Ant Design: [`refs/ant-design/components/card/`](../refs/ant-design/components/card/) — `Card`, `Card.Meta`, `Card.Grid`. Strong support for tabbed cards (`tabList` prop) and grid cards. Most exhaustive.
220
- - MUI: [`refs/mui/packages/mui-material/src/Card/`](../refs/mui/packages/mui-material/src/Card/) — composition: `Card`, `CardHeader`, `CardMedia`, `CardContent`, `CardActions`, `CardActionArea` (the wrapper that makes a card clickable). MUI's `CardActionArea` is the clearest implementation of the interactive-card pattern.
221
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/card.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/card.tsx) — composition with `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`, `CardAction`. Cleanest minimal version.
219
+ - Ant Design: [`refs/ant-design/components/card/`](../docs/reference/ant-design.md#card) — `Card`, `Card.Meta`, `Card.Grid`. Strong support for tabbed cards (`tabList` prop) and grid cards. Most exhaustive.
220
+ - MUI: [`refs/mui/packages/mui-material/src/Card/`](../docs/reference/mui.md#card) — composition: `Card`, `CardHeader`, `CardMedia`, `CardContent`, `CardActions`, `CardActionArea` (the wrapper that makes a card clickable). MUI's `CardActionArea` is the clearest implementation of the interactive-card pattern.
221
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/card.tsx`](../docs/reference/shadcn-ui.md#card) — composition with `Card`, `CardHeader`, `CardTitle`, `CardDescription`, `CardContent`, `CardFooter`, `CardAction`. Cleanest minimal version.
222
222
 
223
223
  API choices made:
224
224
  - **Composition over prop overload**: matches all three references' direction. Single `<Card title=... description=... actions=...>` API was rejected — slot-based scales.
@@ -250,9 +250,9 @@ Swipe is a touch convention. For accessibility, ensure arrows are visible OR a c
250
250
 
251
251
  ## References
252
252
 
253
- - Ant Design: [`refs/ant-design/components/carousel/`](../refs/ant-design/components/carousel/) — `Carousel`. Wraps `react-slick`. Has `autoplay`, `dots`, `effect`. Solid baseline.
253
+ - Ant Design: [`refs/ant-design/components/carousel/`](../docs/reference/ant-design.md#carousel) — `Carousel`. Wraps `react-slick`. Has `autoplay`, `dots`, `effect`. Solid baseline.
254
254
  - MUI: no dedicated component. Use `react-slick` or `swiper`.
255
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/carousel.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/carousel.tsx) — wraps **Embla** carousel. Modern, framework-agnostic, excellent accessibility. **Default for new projects.**
255
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/carousel.tsx`](../docs/reference/shadcn-ui.md#carousel) — wraps **Embla** carousel. Modern, framework-agnostic, excellent accessibility. **Default for new projects.**
256
256
 
257
257
  API choices made:
258
258
  - **`autoplay: false` default**: matches a11y best practice. Most carousels don't need it.
@@ -125,7 +125,7 @@ For Korean address: combine with Daum Postcode (more user-friendly for actual ad
125
125
 
126
126
  ## References
127
127
 
128
- - Ant Design: [`refs/ant-design/components/cascader/`](../refs/ant-design/components/cascader/) — `Cascader` with full feature set. Most exhaustive.
128
+ - Ant Design: [`refs/ant-design/components/cascader/`](../docs/reference/ant-design.md#cascader) — `Cascader` with full feature set. Most exhaustive.
129
129
  - MUI / shadcn-ui: no built-in. Compose from Select-like primitives.
130
130
 
131
131
  ## Cross-reference
@@ -224,7 +224,7 @@ function RevenueChart({ data }: Props) {
224
224
 
225
225
  ## References
226
226
 
227
- - shadcn-ui: [`chart`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/chart.tsx) (Recharts wrapper)
227
+ - shadcn-ui: [`chart`](../docs/reference/shadcn-ui.md#chart) (Recharts wrapper)
228
228
  - Recharts: <https://recharts.org/>
229
229
  - Edward Tufte's *The Visual Display of Quantitative Information* — chart design fundamentals
230
230
 
@@ -137,9 +137,9 @@ const indeterminate = someChecked;
137
137
 
138
138
  ## References
139
139
 
140
- - Ant: [`Checkbox`](../refs/ant-design/components/checkbox)
141
- - MUI: [`Checkbox`](../refs/mui/packages/mui-material/src/Checkbox)
142
- - shadcn-ui: [`checkbox`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/checkbox.tsx)
140
+ - Ant: [`Checkbox`](../docs/reference/ant-design.md#checkbox)
141
+ - MUI: [`Checkbox`](../docs/reference/mui.md#checkbox)
142
+ - shadcn-ui: [`checkbox`](../docs/reference/shadcn-ui.md#checkbox)
143
143
 
144
144
  ## Cross-reference
145
145
 
@@ -77,7 +77,7 @@ shadcn-based projects don't include this as a separate primitive — Popover / S
77
77
 
78
78
  ## References
79
79
 
80
- - MUI: [`ClickAwayListener`](../refs/mui/packages/mui-material/src/ClickAwayListener)
80
+ - MUI: [`ClickAwayListener`](../docs/reference/mui.md#click-away-listener)
81
81
  - Hook alternatives in many libs (use-click-away, react-use, etc.)
82
82
 
83
83
  ## Cross-reference
@@ -198,7 +198,7 @@ For language announcement:
198
198
 
199
199
  ## References
200
200
 
201
- - Ant Design: [`Typography.Text code`](../refs/ant-design/components/typography/) — inline. Block code: just use HTML `<pre>` with optional CSS.
201
+ - Ant Design: [`Typography.Text code`](../docs/reference/ant-design.md#typography) — inline. Block code: just use HTML `<pre>` with optional CSS.
202
202
  - MUI: no dedicated Code component. Use `<code>` or `<Typography component="pre">`.
203
203
  - shadcn-ui: no built-in. Compose with `react-syntax-highlighter` + Tailwind.
204
204
 
@@ -209,7 +209,7 @@ function ProductDetails({ product }: Props) {
209
209
 
210
210
  ## References
211
211
 
212
- - shadcn-ui: [`collapsible`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/collapsible.tsx) (Radix)
212
+ - shadcn-ui: [`collapsible`](../docs/reference/shadcn-ui.md#collapsible) (Radix)
213
213
  - WAI-ARIA: [Disclosure pattern](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/)
214
214
 
215
215
  ## Cross-reference
@@ -100,7 +100,7 @@ Don't roll your own — color math is hard and there are subtle edge cases.
100
100
 
101
101
  ## References
102
102
 
103
- - Ant Design: [`refs/ant-design/components/color-picker/`](../refs/ant-design/components/color-picker/) — comprehensive. Has presets, alpha, multiple format inputs.
103
+ - Ant Design: [`refs/ant-design/components/color-picker/`](../docs/reference/ant-design.md#color-picker) — comprehensive. Has presets, alpha, multiple format inputs.
104
104
  - MUI: no built-in. Use `react-colorful` or similar.
105
105
  - shadcn-ui: no built-in. Compose with `Popover` + `react-colorful`.
106
106
 
@@ -255,7 +255,7 @@ function CountryPicker({ value, onChange }: Props) {
255
255
 
256
256
  ## References
257
257
 
258
- - shadcn-ui: [`combobox`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/combobox.tsx)
258
+ - shadcn-ui: [`combobox`](../docs/reference/shadcn-ui.md#combobox)
259
259
  - WAI-ARIA: [Combobox pattern](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/)
260
260
  - cmdk library
261
261
 
@@ -286,7 +286,7 @@ function GlobalCommandPalette() {
286
286
 
287
287
  ## References
288
288
 
289
- - shadcn-ui: [`command`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/command.tsx) (cmdk-based)
289
+ - shadcn-ui: [`command`](../docs/reference/shadcn-ui.md#command) (cmdk-based)
290
290
  - cmdk library by pacocoursey
291
291
  - Patterns: VS Code Command Palette, Linear, GitHub global search, Slack `Cmd+K`
292
292
  - WAI-ARIA: combobox + listbox pattern
@@ -183,8 +183,8 @@ export function ProductRoot() {
183
183
 
184
184
  ## References
185
185
 
186
- - Ant Design: [`config-provider/index.en-US.md`](../refs/ant-design/components/config-provider/index.en-US.md), [`config-provider/index.tsx`](../refs/ant-design/components/config-provider/index.tsx), [`config-provider/context.ts`](../refs/ant-design/components/config-provider/context.ts), [`app/index.en-US.md`](../refs/ant-design/components/app/index.en-US.md)
187
- - MUI: [`ThemeProvider.tsx`](../refs/mui/packages/mui-material/src/styles/ThemeProvider.tsx), [`CssBaseline.js`](../refs/mui/packages/mui-material/src/CssBaseline/CssBaseline.js)
188
- - shadcn-ui: [`theme-provider.tsx`](../refs/shadcn-ui/apps/v4/components/theme-provider.tsx), [`globals.css`](../refs/shadcn-ui/apps/v4/app/globals.css)
186
+ - Ant Design: [`config-provider/index.en-US.md`](../docs/reference/ant-design.md#config-provider), [`config-provider/index.tsx`](../docs/reference/ant-design.md#config-provider), [`config-provider/context.ts`](../docs/reference/ant-design.md#config-provider), [`app/index.en-US.md`](../docs/reference/ant-design.md#app)
187
+ - MUI: [`ThemeProvider.tsx`](../docs/reference/mui.md#styles), [`CssBaseline.js`](../docs/reference/mui.md#css-baseline)
188
+ - shadcn-ui: [`theme-provider.tsx`](../docs/reference/shadcn-ui.md), [`globals.css`](../docs/reference/shadcn-ui.md)
189
189
  - Knowledge: [`design-tokens/ant-design.md`](../knowledge/design-tokens/ant-design.md), [`a11y/contrast.md`](../knowledge/a11y/contrast.md), [`i18n/korean-product-conventions.md`](../knowledge/i18n/korean-product-conventions.md)
190
190
  - Cross-reference: [`component-css-baseline.md`](component-css-baseline.md), [`component-empty-state.md`](component-empty-state.md), [`component-form.md`](component-form.md)
@@ -168,7 +168,7 @@ Same as DropdownMenu — Korean text legible, Pretendard / NanumSquare body. 합
168
168
 
169
169
  ## References
170
170
 
171
- - shadcn-ui: [`context-menu`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/context-menu.tsx) (Radix)
171
+ - shadcn-ui: [`context-menu`](../docs/reference/shadcn-ui.md#context-menu) (Radix)
172
172
  - WAI-ARIA: same Menu pattern as DropdownMenu
173
173
  - Native: HTML5 `oncontextmenu` event
174
174
 
@@ -142,7 +142,7 @@ body {
142
142
 
143
143
  ## References
144
144
 
145
- - MUI: [`CssBaseline.d.ts`](../refs/mui/packages/mui-material/src/CssBaseline/CssBaseline.d.ts), [`CssBaseline.js`](../refs/mui/packages/mui-material/src/CssBaseline/CssBaseline.js), [`ThemeProvider.tsx`](../refs/mui/packages/mui-material/src/styles/ThemeProvider.tsx)
146
- - Ant Design: [`config-provider/index.en-US.md`](../refs/ant-design/components/config-provider/index.en-US.md), [`theme/index.tsx`](../refs/ant-design/components/theme/index.tsx)
147
- - shadcn-ui: [`theme-provider.tsx`](../refs/shadcn-ui/apps/v4/components/theme-provider.tsx), [`globals.css`](../refs/shadcn-ui/apps/v4/app/globals.css)
145
+ - MUI: [`CssBaseline.d.ts`](../docs/reference/mui.md#css-baseline), [`CssBaseline.js`](../docs/reference/mui.md#css-baseline), [`ThemeProvider.tsx`](../docs/reference/mui.md#styles)
146
+ - Ant Design: [`config-provider/index.en-US.md`](../docs/reference/ant-design.md#config-provider), [`theme/index.tsx`](../docs/reference/ant-design.md#theme)
147
+ - shadcn-ui: [`theme-provider.tsx`](../docs/reference/shadcn-ui.md), [`globals.css`](../docs/reference/shadcn-ui.md)
148
148
  - Knowledge: [`a11y/contrast.md`](../knowledge/a11y/contrast.md), [`i18n/korean-typography.md`](../knowledge/i18n/korean-typography.md), [`design-tokens/tailwind-v4.md`](../knowledge/design-tokens/tailwind-v4.md)
@@ -232,9 +232,9 @@ Announce on date selection: "May 7, 2026 selected" (or KR "2026년 5월 7일 선
232
232
 
233
233
  ## References
234
234
 
235
- - Ant Design: [`refs/ant-design/components/date-picker/`](../refs/ant-design/components/date-picker/) — most variants (`DatePicker`, `RangePicker`, `MonthPicker`, `YearPicker`, `WeekPicker`, `QuarterPicker`). Heavy but covers everything.
235
+ - Ant Design: [`refs/ant-design/components/date-picker/`](../docs/reference/ant-design.md#date-picker) — most variants (`DatePicker`, `RangePicker`, `MonthPicker`, `YearPicker`, `WeekPicker`, `QuarterPicker`). Heavy but covers everything.
236
236
  - MUI: `@mui/x-date-pickers` (separate package) — `DatePicker`, `DateTimePicker`, `DateRangePicker`. Excellent locale support; pairs with date-fns / dayjs / luxon adapters.
237
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/calendar.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/calendar.tsx) — wraps `react-day-picker`. Compose with `Popover` for the picker pattern.
237
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/calendar.tsx`](../docs/reference/shadcn-ui.md#calendar) — wraps `react-day-picker`. Compose with `Popover` for the picker pattern.
238
238
 
239
239
  API choices made:
240
240
  - **`mode` axis** (single / range / dateTime / quickRange) over Ant's separate components — fewer top-level imports.
@@ -231,7 +231,7 @@ function ProfileScreen() {
231
231
 
232
232
  ## References
233
233
 
234
- - Ant Design: [`refs/ant-design/components/descriptions/`](../refs/ant-design/components/descriptions/) — most exhaustive (column, span, layout, bordered, sections).
234
+ - Ant Design: [`refs/ant-design/components/descriptions/`](../docs/reference/ant-design.md#descriptions) — most exhaustive (column, span, layout, bordered, sections).
235
235
  - MUI / shadcn-ui: no built-in. Compose with `<dl>` + Tailwind.
236
236
 
237
237
  ## Cross-reference
@@ -100,7 +100,7 @@ For destructive primary actions (e.g., 삭제), use `color="error"` on the prima
100
100
 
101
101
  ## References
102
102
 
103
- - MUI: [`DialogActions.d.ts`](../refs/mui/packages/mui-material/src/DialogActions/DialogActions.d.ts)
103
+ - MUI: [`DialogActions.d.ts`](../docs/reference/mui.md#dialog-actions)
104
104
 
105
105
  ## Cross-reference
106
106
 
@@ -67,7 +67,7 @@ Extends `Typography` — all typography props work.
67
67
 
68
68
  ## References
69
69
 
70
- - MUI: [`DialogContentText`](../refs/mui/packages/mui-material/src/DialogContentText/)
70
+ - MUI: [`DialogContentText`](../docs/reference/mui.md#dialog-content-text)
71
71
 
72
72
  ## Cross-reference
73
73
 
@@ -95,7 +95,7 @@ For a long-content dialog: `Dialog` with `scroll="paper"` (default) and `divider
95
95
 
96
96
  ## References
97
97
 
98
- - MUI: [`DialogContent.d.ts`](../refs/mui/packages/mui-material/src/DialogContent/DialogContent.d.ts)
98
+ - MUI: [`DialogContent.d.ts`](../docs/reference/mui.md#dialog-content)
99
99
 
100
100
  ## Cross-reference
101
101
 
@@ -93,7 +93,7 @@ The close button is typically rendered separately (often inside the title row vi
93
93
 
94
94
  ## References
95
95
 
96
- - MUI: [`DialogTitle.d.ts`](../refs/mui/packages/mui-material/src/DialogTitle/DialogTitle.d.ts)
96
+ - MUI: [`DialogTitle.d.ts`](../docs/reference/mui.md#dialog-title)
97
97
 
98
98
  ## Cross-reference
99
99
 
@@ -161,8 +161,8 @@ function DeleteConfirmDialog({ open, onClose, onConfirm, isPending }) {
161
161
 
162
162
  ## References
163
163
 
164
- - Ant Design: [`Modal`](../refs/ant-design/components/modal/) — class API, mask
165
- - MUI: [`Dialog`](../refs/mui/packages/mui-material/src/Dialog/) — flagship reference
164
+ - Ant Design: [`Modal`](../docs/reference/ant-design.md#modal) — class API, mask
165
+ - MUI: [`Dialog`](../docs/reference/mui.md#dialog) — flagship reference
166
166
 
167
167
  ## Cross-reference
168
168
 
@@ -172,9 +172,9 @@ Most dividers in product UIs should be `aria-hidden`. The structure is conveyed
172
172
 
173
173
  ## References
174
174
 
175
- - Ant Design: [`refs/ant-design/components/divider/`](../refs/ant-design/components/divider/) — `Divider` with `type="horizontal" | "vertical"`, `dashed`, optional inline text. Mature.
176
- - MUI: [`refs/mui/packages/mui-material/src/Divider/`](../refs/mui/packages/mui-material/src/Divider/) — `Divider` with `orientation`, `variant="fullWidth" | "inset" | "middle"`, `textAlign`. Most variants.
177
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/separator.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/separator.tsx) — Radix Separator. Minimal primitive. `decorative` prop drives `aria-hidden` vs `role="separator"`.
175
+ - Ant Design: [`refs/ant-design/components/divider/`](../docs/reference/ant-design.md#divider) — `Divider` with `type="horizontal" | "vertical"`, `dashed`, optional inline text. Mature.
176
+ - MUI: [`refs/mui/packages/mui-material/src/Divider/`](../docs/reference/mui.md#divider) — `Divider` with `orientation`, `variant="fullWidth" | "inset" | "middle"`, `textAlign`. Most variants.
177
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/separator.tsx`](../docs/reference/shadcn-ui.md#separator) — Radix Separator. Minimal primitive. `decorative` prop drives `aria-hidden` vs `role="separator"`.
178
178
 
179
179
  ## Cross-reference
180
180
 
@@ -246,9 +246,9 @@ const [menuOpen, setMenuOpen] = useState(false);
246
246
 
247
247
  ## References
248
248
 
249
- - Ant Design: [`refs/ant-design/components/drawer/`](../refs/ant-design/components/drawer/) — `Drawer`. Supports `placement`, `size`, `mask`, `closable`. Mature.
250
- - MUI: [`refs/mui/packages/mui-material/src/Drawer/`](../refs/mui/packages/mui-material/src/Drawer/) — `Drawer` with `variant="permanent" | "persistent" | "temporary"`. Best persistent-mode handling.
251
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/sheet.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/sheet.tsx) — Radix Dialog primitive used as a side panel. Modal-only by default; persistent requires composition.
249
+ - Ant Design: [`refs/ant-design/components/drawer/`](../docs/reference/ant-design.md#drawer) — `Drawer`. Supports `placement`, `size`, `mask`, `closable`. Mature.
250
+ - MUI: [`refs/mui/packages/mui-material/src/Drawer/`](../docs/reference/mui.md#drawer) — `Drawer` with `variant="permanent" | "persistent" | "temporary"`. Best persistent-mode handling.
251
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/sheet.tsx`](../docs/reference/shadcn-ui.md#sheet) — Radix Dialog primitive used as a side panel. Modal-only by default; persistent requires composition.
252
252
 
253
253
  ## Cross-reference
254
254
 
@@ -207,9 +207,9 @@ function UserMenu({ user, onSignOut }: Props) {
207
207
 
208
208
  ## References
209
209
 
210
- - Ant: [`Dropdown`](../refs/ant-design/components/dropdown)
211
- - MUI: [`Menu`](../refs/mui/packages/mui-material/src/Menu)
212
- - shadcn-ui: [`dropdown-menu`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/dropdown-menu.tsx) (Radix-based)
210
+ - Ant: [`Dropdown`](../docs/reference/ant-design.md#dropdown)
211
+ - MUI: [`Menu`](../docs/reference/mui.md#menu)
212
+ - shadcn-ui: [`dropdown-menu`](../docs/reference/shadcn-ui.md#dropdown-menu) (Radix-based)
213
213
  - WAI-ARIA: [Menu pattern](https://www.w3.org/WAI/ARIA/apg/patterns/menu/)
214
214
 
215
215
  ## Cross-reference
@@ -162,8 +162,8 @@ Match the surrounding component's voice level.
162
162
 
163
163
  ## References
164
164
 
165
- - Ant: [`Empty`](../refs/ant-design/components/empty)
166
- - shadcn-ui: [`empty`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/empty.tsx)
165
+ - Ant: [`Empty`](../docs/reference/ant-design.md#empty)
166
+ - shadcn-ui: [`empty`](../docs/reference/shadcn-ui.md#empty)
167
167
 
168
168
  ## Cross-reference
169
169
 
@@ -77,7 +77,7 @@
77
77
 
78
78
  ## References
79
79
 
80
- - MUI: [`Fade`](../refs/mui/packages/mui-material/src/Fade/)
80
+ - MUI: [`Fade`](../docs/reference/mui.md#fade)
81
81
 
82
82
  ## Cross-reference
83
83
 
@@ -253,7 +253,7 @@ function SignupForm() {
253
253
 
254
254
  ## References
255
255
 
256
- - shadcn-ui: [`field`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/field.tsx)
256
+ - shadcn-ui: [`field`](../docs/reference/shadcn-ui.md#field)
257
257
  - WAI-ARIA Authoring Practices: form labeling
258
258
  - Native HTML: `<fieldset>`, `<legend>`, `<label>`
259
259
 
@@ -105,7 +105,7 @@ Same a11y contract as `OutlinedInput`:
105
105
 
106
106
  ## References
107
107
 
108
- - MUI: [`FilledInput`](../refs/mui/packages/mui-material/src/FilledInput/)
108
+ - MUI: [`FilledInput`](../docs/reference/mui.md#filled-input)
109
109
 
110
110
  ## Cross-reference
111
111
 
@@ -105,7 +105,7 @@ Stateless.
105
105
 
106
106
  ## References
107
107
 
108
- - Ant: [`Flex`](../refs/ant-design/components/flex)
108
+ - Ant: [`Flex`](../docs/reference/ant-design.md#flex)
109
109
  - MUI: `Stack` (sibling primitive)
110
110
  - Chakra UI: `HStack`, `VStack`, `Flex`
111
111
 
@@ -203,8 +203,8 @@ Subtle bg (`--color-primary-subtle-bg`), primary icon. Less emphasis but still e
203
203
 
204
204
  ## References
205
205
 
206
- - Ant Design: [`refs/ant-design/components/float-button/`](../refs/ant-design/components/float-button/) — `FloatButton`, `FloatButton.Group` (speed dial), `FloatButton.BackTop`. Most flexible.
207
- - MUI: [`refs/mui/packages/mui-material/src/Fab/`](../refs/mui/packages/mui-material/src/Fab/) — `Fab` with `variant="circular" | "extended"`, color, size. Material-aligned.
206
+ - Ant Design: [`refs/ant-design/components/float-button/`](../docs/reference/ant-design.md#float-button) — `FloatButton`, `FloatButton.Group` (speed dial), `FloatButton.BackTop`. Most flexible.
207
+ - MUI: [`refs/mui/packages/mui-material/src/Fab/`](../docs/reference/mui.md#fab) — `Fab` with `variant="circular" | "extended"`, color, size. Material-aligned.
208
208
  - shadcn-ui: no built-in. Compose with `Button` + Tailwind `fixed bottom-4 right-4 rounded-full`.
209
209
 
210
210
  ## Cross-reference
@@ -122,7 +122,7 @@ function ConsentCheckboxes() {
122
122
 
123
123
  ## References
124
124
 
125
- - MUI: [`FormControlLabel`](../refs/mui/packages/mui-material/src/FormControlLabel/)
125
+ - MUI: [`FormControlLabel`](../docs/reference/mui.md#form-control-label)
126
126
 
127
127
  ## Cross-reference
128
128
 
@@ -102,7 +102,7 @@ The visual gap between input and helper text is part of the FormControl's owned
102
102
 
103
103
  ## References
104
104
 
105
- - MUI: [`FormControl.d.ts`](../refs/mui/packages/mui-material/src/FormControl/FormControl.d.ts)
105
+ - MUI: [`FormControl.d.ts`](../docs/reference/mui.md#form-control)
106
106
 
107
107
  ## Cross-reference
108
108
 
@@ -236,7 +236,7 @@ The visible control is small (16–24px). The **clickable area** must be ≥ 44
236
236
 
237
237
  - Ant Design: `Switch`, `Checkbox`, `Checkbox.Group`, `Radio`, `Radio.Group`, `Radio.Button`. Has `Radio.Button` for segmented-control-style radios.
238
238
  - MUI: `Switch`, `Checkbox`, `Radio` + `RadioGroup` + `FormControl` for the wrapper. `FormControlLabel` for label-with-control.
239
- - shadcn-ui: [`switch.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/switch.tsx), [`checkbox.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/checkbox.tsx), [`radio-group.tsx`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/radio-group.tsx). Radix primitives. **Default for new projects.**
239
+ - shadcn-ui: [`switch.tsx`](../docs/reference/shadcn-ui.md#switch), [`checkbox.tsx`](../docs/reference/shadcn-ui.md#checkbox), [`radio-group.tsx`](../docs/reference/shadcn-ui.md#radio-group). Radix primitives. **Default for new projects.**
240
240
 
241
241
  API choices made:
242
242
  - **`onCheckedChange(checked)` for Switch + Checkbox**, **`onValueChange(value)` for RadioGroup**: matches the actual user intent — Switch/Checkbox is "what's the boolean?", RadioGroup is "what's the value?".
@@ -77,7 +77,7 @@ Layout primitive — no interactive state of its own.
77
77
 
78
78
  ## References
79
79
 
80
- - MUI: [`FormGroup`](../refs/mui/packages/mui-material/src/FormGroup/)
80
+ - MUI: [`FormGroup`](../docs/reference/mui.md#form-group)
81
81
 
82
82
  ## Cross-reference
83
83
 
@@ -86,7 +86,7 @@
86
86
 
87
87
  ## References
88
88
 
89
- - MUI: [`FormHelperText`](../refs/mui/packages/mui-material/src/FormHelperText/)
89
+ - MUI: [`FormHelperText`](../docs/reference/mui.md#form-helper-text)
90
90
 
91
91
  ## Cross-reference
92
92
 
@@ -89,7 +89,7 @@
89
89
 
90
90
  ## References
91
91
 
92
- - MUI: [`FormLabel`](../refs/mui/packages/mui-material/src/FormLabel/)
92
+ - MUI: [`FormLabel`](../docs/reference/mui.md#form-label)
93
93
 
94
94
  ## Cross-reference
95
95
 
@@ -272,9 +272,9 @@ Required affordances:
272
272
 
273
273
  ## References
274
274
 
275
- - Ant Design: [`refs/ant-design/components/form/`](../refs/ant-design/components/form/) — exhaustive `Form`, `Form.Item`, `Form.List`, `Form.Provider`. Most complete API. Built-in validation rules. Ant's `Form.useForm` is the imperative escape hatch.
275
+ - Ant Design: [`refs/ant-design/components/form/`](../docs/reference/ant-design.md#form) — exhaustive `Form`, `Form.Item`, `Form.List`, `Form.Provider`. Most complete API. Built-in validation rules. Ant's `Form.useForm` is the imperative escape hatch.
276
276
  - MUI: composition with `<form>` + `react-hook-form` + `<TextField>`. No dedicated Form component — MUI explicitly defers form orchestration to RHF.
277
- - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/) — `form.tsx` wraps RHF `FormProvider` + `Controller` + auto-wires `aria-*`. Cleanest minimal version. Mandates Zod + RHF.
277
+ - shadcn-ui: [`refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/`](../docs/reference/shadcn-ui.md) — `form.tsx` wraps RHF `FormProvider` + `Controller` + auto-wires `aria-*`. Cleanest minimal version. Mandates Zod + RHF.
278
278
 
279
279
  API choices made:
280
280
  - **Composition (`Form.Field`/`Form.Label`/`Form.Control`)** over Ant's `Form.Item` prop-blob — slot-based scales to custom field types better.
@@ -128,8 +128,8 @@ Stateless.
128
128
 
129
129
  ## References
130
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)
131
+ - Ant: [`Grid`](../docs/reference/ant-design.md#grid) (Row + Col, 24-col)
132
+ - MUI: [`Grid`](../docs/reference/mui.md#grid) (12-col)
133
133
  - CSS Grid Level 1 / 2
134
134
 
135
135
  ## Cross-reference
@@ -68,7 +68,7 @@
68
68
 
69
69
  ## References
70
70
 
71
- - MUI: [`Grow`](../refs/mui/packages/mui-material/src/Grow/)
71
+ - MUI: [`Grow`](../docs/reference/mui.md#grow)
72
72
 
73
73
  ## Cross-reference
74
74
 
@@ -200,7 +200,7 @@ function MentionLink({ user }: { user: User }) {
200
200
 
201
201
  ## References
202
202
 
203
- - shadcn-ui: [`hover-card`](../refs/shadcn-ui/apps/v4/registry/new-york-v4/ui/hover-card.tsx) (Radix)
203
+ - shadcn-ui: [`hover-card`](../docs/reference/shadcn-ui.md#hover-card) (Radix)
204
204
  - Patterns: Twitter / X profile previews on @mention hover
205
205
  - Patterns: GitHub PR review preview on commit hash hover
206
206
 
@@ -132,7 +132,7 @@ function ToolbarActions() {
132
132
 
133
133
  ## References
134
134
 
135
- - MUI: [`IconButton`](../refs/mui/packages/mui-material/src/IconButton)
135
+ - MUI: [`IconButton`](../docs/reference/mui.md#icon-button)
136
136
  - Material 3: Icon button variants
137
137
 
138
138
  ## Cross-reference
@@ -92,7 +92,7 @@ See [`knowledge/icons/curated-sets.md`](../knowledge/icons/curated-sets.md).
92
92
 
93
93
  ## References
94
94
 
95
- - MUI: [`SvgIcon`](../refs/mui/packages/mui-material/src/SvgIcon)
95
+ - MUI: [`SvgIcon`](../docs/reference/mui.md#svg-icon)
96
96
  - Phosphor Icons: 1200+ icons, 5 weights
97
97
  - Lucide: stroke-only minimalist set
98
98
 
@@ -98,7 +98,7 @@ Stateless. Tiles can be interactive (click → open / navigate); each tile follo
98
98
 
99
99
  ## References
100
100
 
101
- - MUI: [`ImageList`](../refs/mui/packages/mui-material/src/ImageList)
101
+ - MUI: [`ImageList`](../docs/reference/mui.md#image-list)
102
102
 
103
103
  ## Cross-reference
104
104
 
@@ -265,7 +265,7 @@ Always set an aspect ratio — this prevents the browser-jumping layout shift wh
265
265
 
266
266
  ## References
267
267
 
268
- - Ant Design: [`refs/ant-design/components/image/`](../refs/ant-design/components/image/) — `Image` + `Image.PreviewGroup` for lightbox. Has `placeholder`, `fallback`, `preview` config. Solid impl.
268
+ - Ant Design: [`refs/ant-design/components/image/`](../docs/reference/ant-design.md#image) — `Image` + `Image.PreviewGroup` for lightbox. Has `placeholder`, `fallback`, `preview` config. Solid impl.
269
269
  - MUI: no dedicated component. Compose with native `<img>`.
270
270
  - shadcn-ui: no built-in. Compose `<img>` + Tailwind. For lightbox: `react-photo-view` or `yet-another-react-lightbox`.
271
271
 
@@ -92,7 +92,7 @@ function PriceInput({ value, onChange }) {
92
92
 
93
93
  ## References
94
94
 
95
- - MUI: [`InputAdornment`](../refs/mui/packages/mui-material/src/InputAdornment/)
95
+ - MUI: [`InputAdornment`](../docs/reference/mui.md#input-adornment)
96
96
 
97
97
  ## Cross-reference
98
98
 
@@ -122,7 +122,7 @@ function SearchField({ value, onChange, onClear }) {
122
122
 
123
123
  ## References
124
124
 
125
- - MUI: [`InputBase`](../refs/mui/packages/mui-material/src/InputBase/)
125
+ - MUI: [`InputBase`](../docs/reference/mui.md#input-base)
126
126
 
127
127
  ## Cross-reference
128
128