@qijenchen/design-system 0.1.0-beta.3 → 0.1.0-beta.32

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 (1041) hide show
  1. package/CLAUDE.md +201 -0
  2. package/README.md +155 -0
  3. package/cli-init.mjs +90 -0
  4. package/dist/components/Accordion/accordion.d.ts +37 -0
  5. package/dist/components/Accordion/accordion.d.ts.map +1 -0
  6. package/dist/components/Accordion/accordion.js +78 -0
  7. package/dist/components/Accordion/accordion.js.map +1 -0
  8. package/dist/components/Accordion/index.d.ts +2 -0
  9. package/dist/components/Accordion/index.d.ts.map +1 -0
  10. package/dist/components/Accordion/index.js +9 -0
  11. package/dist/components/Accordion/index.js.map +1 -0
  12. package/dist/components/Alert/alert.d.ts +47 -0
  13. package/dist/components/Alert/alert.d.ts.map +1 -0
  14. package/dist/components/Alert/alert.js +132 -0
  15. package/dist/components/Alert/alert.js.map +1 -0
  16. package/dist/components/Alert/index.d.ts +2 -0
  17. package/dist/components/Alert/index.d.ts.map +1 -0
  18. package/dist/components/Alert/index.js +7 -0
  19. package/dist/components/Alert/index.js.map +1 -0
  20. package/dist/components/AppShell/_demo-helpers.d.ts +49 -0
  21. package/dist/components/AppShell/_demo-helpers.d.ts.map +1 -0
  22. package/dist/components/AppShell/app-shell.d.ts +76 -0
  23. package/dist/components/AppShell/app-shell.d.ts.map +1 -0
  24. package/dist/components/AppShell/app-shell.js +214 -0
  25. package/dist/components/AppShell/app-shell.js.map +1 -0
  26. package/dist/components/AppShell/index.d.ts +2 -0
  27. package/dist/components/AppShell/index.d.ts.map +1 -0
  28. package/dist/components/AppShell/index.js +7 -0
  29. package/dist/components/AppShell/index.js.map +1 -0
  30. package/dist/components/AspectRatio/aspect-ratio.d.ts +40 -0
  31. package/dist/components/AspectRatio/aspect-ratio.d.ts.map +1 -0
  32. package/dist/components/AspectRatio/aspect-ratio.js +23 -0
  33. package/dist/components/AspectRatio/aspect-ratio.js.map +1 -0
  34. package/dist/components/AspectRatio/index.d.ts +2 -0
  35. package/dist/components/AspectRatio/index.d.ts.map +1 -0
  36. package/dist/components/AspectRatio/index.js +6 -0
  37. package/dist/components/AspectRatio/index.js.map +1 -0
  38. package/dist/components/Avatar/avatar.d.ts +85 -0
  39. package/dist/components/Avatar/avatar.d.ts.map +1 -0
  40. package/dist/components/Avatar/avatar.js +195 -0
  41. package/dist/components/Avatar/avatar.js.map +1 -0
  42. package/dist/components/Avatar/index.d.ts +2 -0
  43. package/dist/components/Avatar/index.d.ts.map +1 -0
  44. package/dist/components/Avatar/index.js +6 -0
  45. package/dist/components/Avatar/index.js.map +1 -0
  46. package/dist/components/Badge/badge.d.ts +43 -0
  47. package/dist/components/Badge/badge.d.ts.map +1 -0
  48. package/dist/components/Badge/badge.js +69 -0
  49. package/dist/components/Badge/badge.js.map +1 -0
  50. package/dist/components/Badge/index.d.ts +2 -0
  51. package/dist/components/Badge/index.d.ts.map +1 -0
  52. package/dist/components/Badge/index.js +7 -0
  53. package/dist/components/Badge/index.js.map +1 -0
  54. package/dist/components/Breadcrumb/breadcrumb.d.ts +163 -0
  55. package/dist/components/Breadcrumb/breadcrumb.d.ts.map +1 -0
  56. package/dist/components/Breadcrumb/breadcrumb.js +300 -0
  57. package/dist/components/Breadcrumb/breadcrumb.js.map +1 -0
  58. package/dist/components/Breadcrumb/index.d.ts +2 -0
  59. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  60. package/dist/components/Breadcrumb/index.js +12 -0
  61. package/dist/components/Breadcrumb/index.js.map +1 -0
  62. package/dist/components/BulkActionBar/bulk-action-bar.d.ts +46 -0
  63. package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -0
  64. package/dist/components/BulkActionBar/bulk-action-bar.js +78 -0
  65. package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -0
  66. package/dist/components/BulkActionBar/index.d.ts +2 -0
  67. package/dist/components/BulkActionBar/index.d.ts.map +1 -0
  68. package/dist/components/BulkActionBar/index.js +7 -0
  69. package/dist/components/BulkActionBar/index.js.map +1 -0
  70. package/dist/components/Button/button-group.d.ts +49 -0
  71. package/dist/components/Button/button-group.d.ts.map +1 -0
  72. package/dist/components/Button/button-group.js +46 -0
  73. package/dist/components/Button/button-group.js.map +1 -0
  74. package/dist/components/Button/button.d.ts +203 -0
  75. package/dist/components/Button/button.d.ts.map +1 -0
  76. package/dist/components/Button/button.js +309 -0
  77. package/dist/components/Button/button.js.map +1 -0
  78. package/dist/components/Button/index.d.ts +2 -0
  79. package/dist/components/Button/index.d.ts.map +1 -0
  80. package/dist/components/Button/index.js +8 -0
  81. package/dist/components/Button/index.js.map +1 -0
  82. package/dist/components/Calendar/calendar.d.ts +81 -0
  83. package/dist/components/Calendar/calendar.d.ts.map +1 -0
  84. package/dist/components/Calendar/calendar.js +282 -0
  85. package/dist/components/Calendar/calendar.js.map +1 -0
  86. package/dist/components/Calendar/index.d.ts +2 -0
  87. package/dist/components/Calendar/index.d.ts.map +1 -0
  88. package/dist/components/Calendar/index.js +6 -0
  89. package/dist/components/Calendar/index.js.map +1 -0
  90. package/dist/components/Carousel/carousel.d.ts +61 -0
  91. package/dist/components/Carousel/carousel.d.ts.map +1 -0
  92. package/dist/components/Carousel/carousel.js +276 -0
  93. package/dist/components/Carousel/carousel.js.map +1 -0
  94. package/dist/components/Carousel/index.d.ts +2 -0
  95. package/dist/components/Carousel/index.d.ts.map +1 -0
  96. package/dist/components/Carousel/index.js +11 -0
  97. package/dist/components/Carousel/index.js.map +1 -0
  98. package/dist/components/Chart/chart.d.ts +94 -0
  99. package/dist/components/Chart/chart.d.ts.map +1 -0
  100. package/dist/components/Chart/chart.js +233 -0
  101. package/dist/components/Chart/chart.js.map +1 -0
  102. package/dist/components/Chart/index.d.ts +2 -0
  103. package/dist/components/Chart/index.d.ts.map +1 -0
  104. package/dist/components/Chart/index.js +11 -0
  105. package/dist/components/Chart/index.js.map +1 -0
  106. package/dist/components/Checkbox/checkbox-group.d.ts +58 -0
  107. package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -0
  108. package/dist/components/Checkbox/checkbox-group.js +28 -0
  109. package/dist/components/Checkbox/checkbox-group.js.map +1 -0
  110. package/dist/components/Checkbox/checkbox.d.ts +73 -0
  111. package/dist/components/Checkbox/checkbox.d.ts.map +1 -0
  112. package/dist/components/Checkbox/checkbox.js +125 -0
  113. package/dist/components/Checkbox/checkbox.js.map +1 -0
  114. package/dist/components/Checkbox/index.d.ts +2 -0
  115. package/dist/components/Checkbox/index.d.ts.map +1 -0
  116. package/dist/components/Checkbox/index.js +7 -0
  117. package/dist/components/Checkbox/index.js.map +1 -0
  118. package/dist/components/Chip/chip.d.ts +54 -0
  119. package/dist/components/Chip/chip.d.ts.map +1 -0
  120. package/dist/components/Chip/chip.js +224 -0
  121. package/dist/components/Chip/chip.js.map +1 -0
  122. package/dist/components/Chip/index.d.ts +2 -0
  123. package/dist/components/Chip/index.d.ts.map +1 -0
  124. package/dist/components/Chip/index.js +8 -0
  125. package/dist/components/Chip/index.js.map +1 -0
  126. package/dist/components/CircularProgress/circular-progress.d.ts +40 -0
  127. package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -0
  128. package/dist/components/CircularProgress/circular-progress.js +118 -0
  129. package/dist/components/CircularProgress/circular-progress.js.map +1 -0
  130. package/dist/components/CircularProgress/index.d.ts +2 -0
  131. package/dist/components/CircularProgress/index.d.ts.map +1 -0
  132. package/dist/components/CircularProgress/index.js +6 -0
  133. package/dist/components/CircularProgress/index.js.map +1 -0
  134. package/dist/components/Coachmark/coachmark.d.ts +100 -0
  135. package/dist/components/Coachmark/coachmark.d.ts.map +1 -0
  136. package/dist/components/Coachmark/coachmark.js +107 -0
  137. package/dist/components/Coachmark/coachmark.js.map +1 -0
  138. package/dist/components/Coachmark/index.d.ts +2 -0
  139. package/dist/components/Coachmark/index.d.ts.map +1 -0
  140. package/dist/components/Coachmark/index.js +6 -0
  141. package/dist/components/Coachmark/index.js.map +1 -0
  142. package/dist/components/Combobox/combobox.d.ts +150 -0
  143. package/dist/components/Combobox/combobox.d.ts.map +1 -0
  144. package/dist/components/Combobox/combobox.js +608 -0
  145. package/dist/components/Combobox/combobox.js.map +1 -0
  146. package/dist/components/Combobox/index.d.ts +2 -0
  147. package/dist/components/Combobox/index.d.ts.map +1 -0
  148. package/dist/components/Combobox/index.js +6 -0
  149. package/dist/components/Combobox/index.js.map +1 -0
  150. package/dist/components/Command/command.d.ts +106 -0
  151. package/dist/components/Command/command.d.ts.map +1 -0
  152. package/dist/components/Command/command.js +123 -0
  153. package/dist/components/Command/command.js.map +1 -0
  154. package/dist/components/Command/index.d.ts +2 -0
  155. package/dist/components/Command/index.d.ts.map +1 -0
  156. package/dist/components/Command/index.js +14 -0
  157. package/dist/components/Command/index.js.map +1 -0
  158. package/dist/components/DataTable/active-editor-controller.d.ts +66 -0
  159. package/dist/components/DataTable/active-editor-controller.d.ts.map +1 -0
  160. package/dist/components/DataTable/cell-registry.d.ts +37 -0
  161. package/dist/components/DataTable/cell-registry.d.ts.map +1 -0
  162. package/dist/components/DataTable/cell-registry.js +377 -0
  163. package/dist/components/DataTable/cell-registry.js.map +1 -0
  164. package/dist/components/DataTable/column-types.d.ts +145 -0
  165. package/dist/components/DataTable/column-types.d.ts.map +1 -0
  166. package/dist/components/DataTable/column-types.js +17 -0
  167. package/dist/components/DataTable/column-types.js.map +1 -0
  168. package/dist/components/DataTable/data-table-column-visibility-panel.d.ts +49 -0
  169. package/dist/components/DataTable/data-table-column-visibility-panel.d.ts.map +1 -0
  170. package/dist/components/DataTable/data-table-filter-panel.d.ts +30 -0
  171. package/dist/components/DataTable/data-table-filter-panel.d.ts.map +1 -0
  172. package/dist/components/DataTable/data-table-interaction-layer.d.ts +78 -0
  173. package/dist/components/DataTable/data-table-interaction-layer.d.ts.map +1 -0
  174. package/dist/components/DataTable/data-table-interaction-layer.js +220 -0
  175. package/dist/components/DataTable/data-table-interaction-layer.js.map +1 -0
  176. package/dist/components/DataTable/data-table-sort-manager.d.ts +19 -0
  177. package/dist/components/DataTable/data-table-sort-manager.d.ts.map +1 -0
  178. package/dist/components/DataTable/data-table.d.ts +181 -0
  179. package/dist/components/DataTable/data-table.d.ts.map +1 -0
  180. package/dist/components/DataTable/data-table.js +1851 -0
  181. package/dist/components/DataTable/data-table.js.map +1 -0
  182. package/dist/components/DataTable/filter-operators.d.ts +116 -0
  183. package/dist/components/DataTable/filter-operators.d.ts.map +1 -0
  184. package/dist/components/DataTable/filter-tree.d.ts +66 -0
  185. package/dist/components/DataTable/filter-tree.d.ts.map +1 -0
  186. package/dist/components/DataTable/index.d.ts +2 -0
  187. package/dist/components/DataTable/index.d.ts.map +1 -0
  188. package/dist/components/DataTable/index.js +8 -0
  189. package/dist/components/DataTable/index.js.map +1 -0
  190. package/dist/components/DataTable/lib/column-meta.d.ts +49 -0
  191. package/dist/components/DataTable/lib/column-meta.d.ts.map +1 -0
  192. package/dist/components/DateGrid/date-grid.d.ts +61 -0
  193. package/dist/components/DateGrid/date-grid.d.ts.map +1 -0
  194. package/dist/components/DateGrid/date-grid.js +168 -0
  195. package/dist/components/DateGrid/date-grid.js.map +1 -0
  196. package/dist/components/DateGrid/index.d.ts +2 -0
  197. package/dist/components/DateGrid/index.d.ts.map +1 -0
  198. package/dist/components/DateGrid/index.js +6 -0
  199. package/dist/components/DateGrid/index.js.map +1 -0
  200. package/dist/components/DatePicker/date-picker.d.ts +119 -0
  201. package/dist/components/DatePicker/date-picker.d.ts.map +1 -0
  202. package/dist/components/DatePicker/date-picker.js +743 -0
  203. package/dist/components/DatePicker/date-picker.js.map +1 -0
  204. package/dist/components/DatePicker/index.d.ts +2 -0
  205. package/dist/components/DatePicker/index.d.ts.map +1 -0
  206. package/dist/components/DatePicker/index.js +8 -0
  207. package/dist/components/DatePicker/index.js.map +1 -0
  208. package/dist/components/DescriptionList/description-list.d.ts +60 -0
  209. package/dist/components/DescriptionList/description-list.d.ts.map +1 -0
  210. package/dist/components/DescriptionList/description-list.js +77 -0
  211. package/dist/components/DescriptionList/description-list.js.map +1 -0
  212. package/dist/components/DescriptionList/index.d.ts +2 -0
  213. package/dist/components/DescriptionList/index.d.ts.map +1 -0
  214. package/dist/components/DescriptionList/index.js +7 -0
  215. package/dist/components/DescriptionList/index.js.map +1 -0
  216. package/dist/components/Dialog/dialog.d.ts +54 -0
  217. package/dist/components/Dialog/dialog.d.ts.map +1 -0
  218. package/dist/components/Dialog/dialog.js +151 -0
  219. package/dist/components/Dialog/dialog.js.map +1 -0
  220. package/dist/components/Dialog/index.d.ts +2 -0
  221. package/dist/components/Dialog/index.d.ts.map +1 -0
  222. package/dist/components/Dialog/index.js +16 -0
  223. package/dist/components/Dialog/index.js.map +1 -0
  224. package/dist/components/DropdownMenu/dropdown-menu.d.ts +111 -0
  225. package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -0
  226. package/dist/components/DropdownMenu/dropdown-menu.js +288 -0
  227. package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -0
  228. package/dist/components/DropdownMenu/index.d.ts +2 -0
  229. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  230. package/dist/components/DropdownMenu/index.js +21 -0
  231. package/dist/components/DropdownMenu/index.js.map +1 -0
  232. package/dist/components/Empty/empty.d.ts +40 -0
  233. package/dist/components/Empty/empty.d.ts.map +1 -0
  234. package/dist/components/Empty/empty.js +66 -0
  235. package/dist/components/Empty/empty.js.map +1 -0
  236. package/dist/components/Empty/index.d.ts +2 -0
  237. package/dist/components/Empty/index.d.ts.map +1 -0
  238. package/dist/components/Empty/index.js +6 -0
  239. package/dist/components/Empty/index.js.map +1 -0
  240. package/dist/components/Field/field-context.d.ts +77 -0
  241. package/dist/components/Field/field-context.d.ts.map +1 -0
  242. package/dist/components/Field/field-context.js +37 -0
  243. package/dist/components/Field/field-context.js.map +1 -0
  244. package/dist/components/Field/field-types.d.ts +5 -0
  245. package/dist/components/Field/field-types.d.ts.map +1 -0
  246. package/dist/components/Field/field-types.js +13 -0
  247. package/dist/components/Field/field-types.js.map +1 -0
  248. package/dist/components/Field/field-wrapper.d.ts +17 -0
  249. package/dist/components/Field/field-wrapper.d.ts.map +1 -0
  250. package/dist/components/Field/field-wrapper.js +252 -0
  251. package/dist/components/Field/field-wrapper.js.map +1 -0
  252. package/dist/components/Field/field.d.ts +127 -0
  253. package/dist/components/Field/field.d.ts.map +1 -0
  254. package/dist/components/Field/field.js +295 -0
  255. package/dist/components/Field/field.js.map +1 -0
  256. package/dist/components/Field/index.d.ts +2 -0
  257. package/dist/components/Field/index.d.ts.map +1 -0
  258. package/dist/components/Field/index.js +10 -0
  259. package/dist/components/Field/index.js.map +1 -0
  260. package/dist/components/FieldControlGroup/field-control-group.d.ts +74 -0
  261. package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -0
  262. package/dist/components/FieldControlGroup/field-control-group.js +62 -0
  263. package/dist/components/FieldControlGroup/field-control-group.js.map +1 -0
  264. package/dist/components/FieldControlGroup/index.d.ts +2 -0
  265. package/dist/components/FieldControlGroup/index.d.ts.map +1 -0
  266. package/dist/components/FieldControlGroup/index.js +6 -0
  267. package/dist/components/FieldControlGroup/index.js.map +1 -0
  268. package/dist/components/FileItem/file-item.d.ts +44 -0
  269. package/dist/components/FileItem/file-item.d.ts.map +1 -0
  270. package/dist/components/FileItem/file-item.js +202 -0
  271. package/dist/components/FileItem/file-item.js.map +1 -0
  272. package/dist/components/FileItem/index.d.ts +2 -0
  273. package/dist/components/FileItem/index.d.ts.map +1 -0
  274. package/dist/components/FileItem/index.js +6 -0
  275. package/dist/components/FileItem/index.js.map +1 -0
  276. package/dist/components/FileUpload/file-upload.d.ts +97 -0
  277. package/dist/components/FileUpload/file-upload.d.ts.map +1 -0
  278. package/dist/components/FileUpload/file-upload.js +231 -0
  279. package/dist/components/FileUpload/file-upload.js.map +1 -0
  280. package/dist/components/FileUpload/index.d.ts +2 -0
  281. package/dist/components/FileUpload/index.d.ts.map +1 -0
  282. package/dist/components/FileUpload/index.js +6 -0
  283. package/dist/components/FileUpload/index.js.map +1 -0
  284. package/dist/components/FileViewer/file-viewer-types.d.ts +73 -0
  285. package/dist/components/FileViewer/file-viewer-types.d.ts.map +1 -0
  286. package/dist/components/FileViewer/file-viewer.d.ts +82 -0
  287. package/dist/components/FileViewer/file-viewer.d.ts.map +1 -0
  288. package/dist/components/FileViewer/file-viewer.js +752 -0
  289. package/dist/components/FileViewer/file-viewer.js.map +1 -0
  290. package/dist/components/FileViewer/image-renderer.d.ts +9 -0
  291. package/dist/components/FileViewer/image-renderer.d.ts.map +1 -0
  292. package/dist/components/FileViewer/image-renderer.js +165 -0
  293. package/dist/components/FileViewer/image-renderer.js.map +1 -0
  294. package/dist/components/FileViewer/index.d.ts +2 -0
  295. package/dist/components/FileViewer/index.d.ts.map +1 -0
  296. package/dist/components/FileViewer/index.js +7 -0
  297. package/dist/components/FileViewer/index.js.map +1 -0
  298. package/dist/components/HoverCard/hover-card.d.ts +30 -0
  299. package/dist/components/HoverCard/hover-card.d.ts.map +1 -0
  300. package/dist/components/HoverCard/hover-card.js +61 -0
  301. package/dist/components/HoverCard/hover-card.js.map +1 -0
  302. package/dist/components/HoverCard/index.d.ts +2 -0
  303. package/dist/components/HoverCard/index.d.ts.map +1 -0
  304. package/dist/components/HoverCard/index.js +8 -0
  305. package/dist/components/HoverCard/index.js.map +1 -0
  306. package/dist/components/Input/index.d.ts +2 -0
  307. package/dist/components/Input/index.d.ts.map +1 -0
  308. package/dist/components/Input/index.js +6 -0
  309. package/dist/components/Input/index.js.map +1 -0
  310. package/dist/components/Input/input.d.ts +72 -0
  311. package/dist/components/Input/input.d.ts.map +1 -0
  312. package/dist/components/Input/input.js +148 -0
  313. package/dist/components/Input/input.js.map +1 -0
  314. package/dist/components/LinkInput/index.d.ts +2 -0
  315. package/dist/components/LinkInput/index.d.ts.map +1 -0
  316. package/dist/components/LinkInput/index.js +6 -0
  317. package/dist/components/LinkInput/index.js.map +1 -0
  318. package/dist/components/LinkInput/link-input.d.ts +46 -0
  319. package/dist/components/LinkInput/link-input.d.ts.map +1 -0
  320. package/dist/components/LinkInput/link-input.js +215 -0
  321. package/dist/components/LinkInput/link-input.js.map +1 -0
  322. package/dist/components/Menu/index.d.ts +2 -0
  323. package/dist/components/Menu/index.d.ts.map +1 -0
  324. package/dist/components/Menu/index.js +9 -0
  325. package/dist/components/Menu/index.js.map +1 -0
  326. package/dist/components/Menu/menu-item.d.ts +83 -0
  327. package/dist/components/Menu/menu-item.d.ts.map +1 -0
  328. package/dist/components/Menu/menu-item.js +209 -0
  329. package/dist/components/Menu/menu-item.js.map +1 -0
  330. package/dist/components/NameCard/index.d.ts +2 -0
  331. package/dist/components/NameCard/index.d.ts.map +1 -0
  332. package/dist/components/NameCard/index.js +8 -0
  333. package/dist/components/NameCard/index.js.map +1 -0
  334. package/dist/components/NameCard/name-card.d.ts +85 -0
  335. package/dist/components/NameCard/name-card.d.ts.map +1 -0
  336. package/dist/components/NameCard/name-card.js +153 -0
  337. package/dist/components/NameCard/name-card.js.map +1 -0
  338. package/dist/components/Notice/index.d.ts +2 -0
  339. package/dist/components/Notice/index.d.ts.map +1 -0
  340. package/dist/components/Notice/index.js +8 -0
  341. package/dist/components/Notice/index.js.map +1 -0
  342. package/dist/components/Notice/notice.d.ts +69 -0
  343. package/dist/components/Notice/notice.d.ts.map +1 -0
  344. package/dist/components/Notice/notice.js +121 -0
  345. package/dist/components/Notice/notice.js.map +1 -0
  346. package/dist/components/NumberInput/index.d.ts +2 -0
  347. package/dist/components/NumberInput/index.d.ts.map +1 -0
  348. package/dist/components/NumberInput/index.js +7 -0
  349. package/dist/components/NumberInput/index.js.map +1 -0
  350. package/dist/components/NumberInput/number-input.d.ts +57 -0
  351. package/dist/components/NumberInput/number-input.d.ts.map +1 -0
  352. package/dist/components/NumberInput/number-input.js +131 -0
  353. package/dist/components/NumberInput/number-input.js.map +1 -0
  354. package/dist/components/OverflowIndicator/index.d.ts +2 -0
  355. package/dist/components/OverflowIndicator/index.d.ts.map +1 -0
  356. package/dist/components/OverflowIndicator/index.js +6 -0
  357. package/dist/components/OverflowIndicator/index.js.map +1 -0
  358. package/dist/components/OverflowIndicator/overflow-indicator.d.ts +23 -0
  359. package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -0
  360. package/dist/components/OverflowIndicator/overflow-indicator.js +111 -0
  361. package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -0
  362. package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts +57 -0
  363. package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts.map +1 -0
  364. package/dist/components/PeoplePicker/avatar-stack-overflow.js +35 -0
  365. package/dist/components/PeoplePicker/avatar-stack-overflow.js.map +1 -0
  366. package/dist/components/PeoplePicker/index.d.ts +2 -0
  367. package/dist/components/PeoplePicker/index.d.ts.map +1 -0
  368. package/dist/components/PeoplePicker/index.js +9 -0
  369. package/dist/components/PeoplePicker/index.js.map +1 -0
  370. package/dist/components/PeoplePicker/people-picker-helpers.d.ts +7 -0
  371. package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -0
  372. package/dist/components/PeoplePicker/people-picker-helpers.js +25 -0
  373. package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -0
  374. package/dist/components/PeoplePicker/people-picker.d.ts +77 -0
  375. package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -0
  376. package/dist/components/PeoplePicker/people-picker.js +263 -0
  377. package/dist/components/PeoplePicker/people-picker.js.map +1 -0
  378. package/dist/components/PeoplePicker/person-display.d.ts +66 -0
  379. package/dist/components/PeoplePicker/person-display.d.ts.map +1 -0
  380. package/dist/components/PeoplePicker/person-display.js +203 -0
  381. package/dist/components/PeoplePicker/person-display.js.map +1 -0
  382. package/dist/components/Popover/index.d.ts +2 -0
  383. package/dist/components/Popover/index.d.ts.map +1 -0
  384. package/dist/components/Popover/index.js +14 -0
  385. package/dist/components/Popover/index.js.map +1 -0
  386. package/dist/components/Popover/popover.d.ts +50 -0
  387. package/dist/components/Popover/popover.d.ts.map +1 -0
  388. package/dist/components/Popover/popover.js +113 -0
  389. package/dist/components/Popover/popover.js.map +1 -0
  390. package/dist/components/ProgressBar/index.d.ts +2 -0
  391. package/dist/components/ProgressBar/index.d.ts.map +1 -0
  392. package/dist/components/ProgressBar/index.js +6 -0
  393. package/dist/components/ProgressBar/index.js.map +1 -0
  394. package/dist/components/ProgressBar/progress-bar.d.ts +37 -0
  395. package/dist/components/ProgressBar/progress-bar.d.ts.map +1 -0
  396. package/dist/components/ProgressBar/progress-bar.js +86 -0
  397. package/dist/components/ProgressBar/progress-bar.js.map +1 -0
  398. package/dist/components/RadioGroup/index.d.ts +2 -0
  399. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  400. package/dist/components/RadioGroup/index.js +8 -0
  401. package/dist/components/RadioGroup/index.js.map +1 -0
  402. package/dist/components/RadioGroup/radio-group.d.ts +78 -0
  403. package/dist/components/RadioGroup/radio-group.d.ts.map +1 -0
  404. package/dist/components/RadioGroup/radio-group.js +153 -0
  405. package/dist/components/RadioGroup/radio-group.js.map +1 -0
  406. package/dist/components/Rating/index.d.ts +2 -0
  407. package/dist/components/Rating/index.d.ts.map +1 -0
  408. package/dist/components/Rating/index.js +6 -0
  409. package/dist/components/Rating/index.js.map +1 -0
  410. package/dist/components/Rating/rating.d.ts +46 -0
  411. package/dist/components/Rating/rating.d.ts.map +1 -0
  412. package/dist/components/Rating/rating.js +179 -0
  413. package/dist/components/Rating/rating.js.map +1 -0
  414. package/dist/components/ScrollArea/index.d.ts +2 -0
  415. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  416. package/dist/components/ScrollArea/index.js +7 -0
  417. package/dist/components/ScrollArea/index.js.map +1 -0
  418. package/dist/components/ScrollArea/scroll-area.d.ts +45 -0
  419. package/dist/components/ScrollArea/scroll-area.d.ts.map +1 -0
  420. package/dist/components/ScrollArea/scroll-area.js +65 -0
  421. package/dist/components/ScrollArea/scroll-area.js.map +1 -0
  422. package/dist/components/SegmentedControl/index.d.ts +2 -0
  423. package/dist/components/SegmentedControl/index.d.ts.map +1 -0
  424. package/dist/components/SegmentedControl/index.js +9 -0
  425. package/dist/components/SegmentedControl/index.js.map +1 -0
  426. package/dist/components/SegmentedControl/segmented-control.d.ts +102 -0
  427. package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -0
  428. package/dist/components/SegmentedControl/segmented-control.js +171 -0
  429. package/dist/components/SegmentedControl/segmented-control.js.map +1 -0
  430. package/dist/components/Select/index.d.ts +2 -0
  431. package/dist/components/Select/index.d.ts.map +1 -0
  432. package/dist/components/Select/index.js +6 -0
  433. package/dist/components/Select/index.js.map +1 -0
  434. package/dist/components/Select/select.d.ts +102 -0
  435. package/dist/components/Select/select.d.ts.map +1 -0
  436. package/dist/components/Select/select.js +435 -0
  437. package/dist/components/Select/select.js.map +1 -0
  438. package/dist/components/SelectMenu/index.d.ts +2 -0
  439. package/dist/components/SelectMenu/index.d.ts.map +1 -0
  440. package/dist/components/SelectMenu/index.js +6 -0
  441. package/dist/components/SelectMenu/index.js.map +1 -0
  442. package/dist/components/SelectMenu/select-menu.d.ts +103 -0
  443. package/dist/components/SelectMenu/select-menu.d.ts.map +1 -0
  444. package/dist/components/SelectMenu/select-menu.js +239 -0
  445. package/dist/components/SelectMenu/select-menu.js.map +1 -0
  446. package/dist/components/SelectionControl/index.d.ts +2 -0
  447. package/dist/components/SelectionControl/index.d.ts.map +1 -0
  448. package/dist/components/SelectionControl/index.js +7 -0
  449. package/dist/components/SelectionControl/index.js.map +1 -0
  450. package/dist/components/SelectionControl/selection-item.d.ts +69 -0
  451. package/dist/components/SelectionControl/selection-item.d.ts.map +1 -0
  452. package/dist/components/SelectionControl/selection-item.js +142 -0
  453. package/dist/components/SelectionControl/selection-item.js.map +1 -0
  454. package/dist/components/Separator/index.d.ts +2 -0
  455. package/dist/components/Separator/index.d.ts.map +1 -0
  456. package/dist/components/Separator/index.js +6 -0
  457. package/dist/components/Separator/index.js.map +1 -0
  458. package/dist/components/Separator/separator.d.ts +17 -0
  459. package/dist/components/Separator/separator.d.ts.map +1 -0
  460. package/dist/components/Separator/separator.js +39 -0
  461. package/dist/components/Separator/separator.js.map +1 -0
  462. package/dist/components/Sheet/index.d.ts +2 -0
  463. package/dist/components/Sheet/index.d.ts.map +1 -0
  464. package/dist/components/Sheet/index.js +17 -0
  465. package/dist/components/Sheet/index.js.map +1 -0
  466. package/dist/components/Sheet/sheet.d.ts +56 -0
  467. package/dist/components/Sheet/sheet.d.ts.map +1 -0
  468. package/dist/components/Sheet/sheet.js +145 -0
  469. package/dist/components/Sheet/sheet.js.map +1 -0
  470. package/dist/components/Sidebar/index.d.ts +2 -0
  471. package/dist/components/Sidebar/index.d.ts.map +1 -0
  472. package/dist/components/Sidebar/index.js +24 -0
  473. package/dist/components/Sidebar/index.js.map +1 -0
  474. package/dist/components/Sidebar/sidebar.d.ts +195 -0
  475. package/dist/components/Sidebar/sidebar.d.ts.map +1 -0
  476. package/dist/components/Sidebar/sidebar.js +826 -0
  477. package/dist/components/Sidebar/sidebar.js.map +1 -0
  478. package/dist/components/Skeleton/index.d.ts +2 -0
  479. package/dist/components/Skeleton/index.d.ts.map +1 -0
  480. package/dist/components/Skeleton/index.js +6 -0
  481. package/dist/components/Skeleton/index.js.map +1 -0
  482. package/dist/components/Skeleton/skeleton.d.ts +16 -0
  483. package/dist/components/Skeleton/skeleton.d.ts.map +1 -0
  484. package/dist/components/Skeleton/skeleton.js +30 -0
  485. package/dist/components/Skeleton/skeleton.js.map +1 -0
  486. package/dist/components/Slider/index.d.ts +2 -0
  487. package/dist/components/Slider/index.d.ts.map +1 -0
  488. package/dist/components/Slider/index.js +7 -0
  489. package/dist/components/Slider/index.js.map +1 -0
  490. package/dist/components/Slider/slider.d.ts +48 -0
  491. package/dist/components/Slider/slider.d.ts.map +1 -0
  492. package/dist/components/Slider/slider.js +108 -0
  493. package/dist/components/Slider/slider.js.map +1 -0
  494. package/dist/components/Steps/index.d.ts +2 -0
  495. package/dist/components/Steps/index.d.ts.map +1 -0
  496. package/dist/components/Steps/index.js +12 -0
  497. package/dist/components/Steps/index.js.map +1 -0
  498. package/dist/components/Steps/steps.d.ts +71 -0
  499. package/dist/components/Steps/steps.d.ts.map +1 -0
  500. package/dist/components/Steps/steps.js +583 -0
  501. package/dist/components/Steps/steps.js.map +1 -0
  502. package/dist/components/Switch/index.d.ts +2 -0
  503. package/dist/components/Switch/index.d.ts.map +1 -0
  504. package/dist/components/Switch/index.js +7 -0
  505. package/dist/components/Switch/index.js.map +1 -0
  506. package/dist/components/Switch/switch.d.ts +112 -0
  507. package/dist/components/Switch/switch.d.ts.map +1 -0
  508. package/dist/components/Switch/switch.js +179 -0
  509. package/dist/components/Switch/switch.js.map +1 -0
  510. package/dist/components/Tabs/index.d.ts +2 -0
  511. package/dist/components/Tabs/index.d.ts.map +1 -0
  512. package/dist/components/Tabs/index.js +10 -0
  513. package/dist/components/Tabs/index.js.map +1 -0
  514. package/dist/components/Tabs/tabs.d.ts +104 -0
  515. package/dist/components/Tabs/tabs.d.ts.map +1 -0
  516. package/dist/components/Tabs/tabs.js +316 -0
  517. package/dist/components/Tabs/tabs.js.map +1 -0
  518. package/dist/components/Tag/index.d.ts +2 -0
  519. package/dist/components/Tag/index.d.ts.map +1 -0
  520. package/dist/components/Tag/index.js +7 -0
  521. package/dist/components/Tag/index.js.map +1 -0
  522. package/dist/components/Tag/tag.d.ts +86 -0
  523. package/dist/components/Tag/tag.d.ts.map +1 -0
  524. package/dist/components/Tag/tag.js +172 -0
  525. package/dist/components/Tag/tag.js.map +1 -0
  526. package/dist/components/Textarea/index.d.ts +2 -0
  527. package/dist/components/Textarea/index.d.ts.map +1 -0
  528. package/dist/components/Textarea/index.js +7 -0
  529. package/dist/components/Textarea/index.js.map +1 -0
  530. package/dist/components/Textarea/textarea.d.ts +74 -0
  531. package/dist/components/Textarea/textarea.d.ts.map +1 -0
  532. package/dist/components/Textarea/textarea.js +224 -0
  533. package/dist/components/Textarea/textarea.js.map +1 -0
  534. package/dist/components/TimePicker/index.d.ts +2 -0
  535. package/dist/components/TimePicker/index.d.ts.map +1 -0
  536. package/dist/components/TimePicker/index.js +6 -0
  537. package/dist/components/TimePicker/index.js.map +1 -0
  538. package/dist/components/TimePicker/time-columns.d.ts +46 -0
  539. package/dist/components/TimePicker/time-columns.d.ts.map +1 -0
  540. package/dist/components/TimePicker/time-columns.js +173 -0
  541. package/dist/components/TimePicker/time-columns.js.map +1 -0
  542. package/dist/components/TimePicker/time-picker.d.ts +94 -0
  543. package/dist/components/TimePicker/time-picker.d.ts.map +1 -0
  544. package/dist/components/TimePicker/time-picker.js +253 -0
  545. package/dist/components/TimePicker/time-picker.js.map +1 -0
  546. package/dist/components/Toast/index.d.ts +2 -0
  547. package/dist/components/Toast/index.d.ts.map +1 -0
  548. package/dist/components/Toast/index.js +7 -0
  549. package/dist/components/Toast/index.js.map +1 -0
  550. package/dist/components/Toast/toast.d.ts +61 -0
  551. package/dist/components/Toast/toast.d.ts.map +1 -0
  552. package/dist/components/Toast/toast.js +76 -0
  553. package/dist/components/Toast/toast.js.map +1 -0
  554. package/dist/components/Tooltip/index.d.ts +2 -0
  555. package/dist/components/Tooltip/index.d.ts.map +1 -0
  556. package/dist/components/Tooltip/index.js +9 -0
  557. package/dist/components/Tooltip/index.js.map +1 -0
  558. package/dist/components/Tooltip/tooltip.d.ts +20 -0
  559. package/dist/components/Tooltip/tooltip.d.ts.map +1 -0
  560. package/dist/components/Tooltip/tooltip.js +53 -0
  561. package/dist/components/Tooltip/tooltip.js.map +1 -0
  562. package/dist/components/TreeView/index.d.ts +2 -0
  563. package/dist/components/TreeView/index.d.ts.map +1 -0
  564. package/dist/components/TreeView/index.js +8 -0
  565. package/dist/components/TreeView/index.js.map +1 -0
  566. package/dist/components/TreeView/tree-view.d.ts +166 -0
  567. package/dist/components/TreeView/tree-view.d.ts.map +1 -0
  568. package/dist/components/TreeView/tree-view.js +638 -0
  569. package/dist/components/TreeView/tree-view.js.map +1 -0
  570. package/dist/hooks/use-controllable.d.ts +16 -0
  571. package/dist/hooks/use-controllable.d.ts.map +1 -0
  572. package/dist/hooks/use-controllable.js +26 -0
  573. package/dist/hooks/use-controllable.js.map +1 -0
  574. package/dist/hooks/use-is-narrow-viewport.d.ts +2 -0
  575. package/dist/hooks/use-is-narrow-viewport.d.ts.map +1 -0
  576. package/dist/hooks/use-is-narrow-viewport.js +19 -0
  577. package/dist/hooks/use-is-narrow-viewport.js.map +1 -0
  578. package/dist/hooks/use-is-touch-device.d.ts +8 -0
  579. package/dist/hooks/use-is-touch-device.d.ts.map +1 -0
  580. package/dist/hooks/use-is-touch-device.js +16 -0
  581. package/dist/hooks/use-is-touch-device.js.map +1 -0
  582. package/dist/hooks/use-overflow-items.d.ts +124 -0
  583. package/dist/hooks/use-overflow-items.d.ts.map +1 -0
  584. package/dist/hooks/use-overflow-items.js +97 -0
  585. package/dist/hooks/use-overflow-items.js.map +1 -0
  586. package/dist/index.d.ts +74 -0
  587. package/dist/index.d.ts.map +1 -0
  588. package/dist/index.js +393 -0
  589. package/dist/index.js.map +1 -0
  590. package/dist/lib/drag-visual.d.ts +158 -0
  591. package/dist/lib/drag-visual.d.ts.map +1 -0
  592. package/dist/lib/drag-visual.js +96 -0
  593. package/dist/lib/drag-visual.js.map +1 -0
  594. package/dist/lib/i18n/i18n-context.d.ts +105 -0
  595. package/dist/lib/i18n/i18n-context.d.ts.map +1 -0
  596. package/dist/lib/multi-select-ordering.d.ts +54 -0
  597. package/dist/lib/multi-select-ordering.d.ts.map +1 -0
  598. package/dist/lib/multi-select-ordering.js +13 -0
  599. package/dist/lib/multi-select-ordering.js.map +1 -0
  600. package/dist/lib/utils.d.ts +12 -0
  601. package/dist/lib/utils.d.ts.map +1 -0
  602. package/dist/lib/utils.js +79 -0
  603. package/dist/lib/utils.js.map +1 -0
  604. package/dist/patterns/element-anatomy/index.d.ts +2 -0
  605. package/dist/patterns/element-anatomy/index.d.ts.map +1 -0
  606. package/dist/patterns/element-anatomy/index.js +20 -0
  607. package/dist/patterns/element-anatomy/index.js.map +1 -0
  608. package/dist/patterns/element-anatomy/item-anatomy.d.ts +370 -0
  609. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -0
  610. package/dist/patterns/element-anatomy/item-anatomy.js +272 -0
  611. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -0
  612. package/dist/patterns/header-canonical/chrome-header.d.ts +80 -0
  613. package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -0
  614. package/dist/patterns/header-canonical/chrome-header.js +75 -0
  615. package/dist/patterns/header-canonical/chrome-header.js.map +1 -0
  616. package/dist/patterns/header-canonical/index.d.ts +2 -0
  617. package/dist/patterns/header-canonical/index.d.ts.map +1 -0
  618. package/dist/patterns/header-canonical/index.js +5 -0
  619. package/dist/patterns/header-canonical/index.js.map +1 -0
  620. package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts +101 -0
  621. package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts.map +1 -0
  622. package/dist/patterns/horizontal-overflow/horizontal-overflow.js +105 -0
  623. package/dist/patterns/horizontal-overflow/horizontal-overflow.js.map +1 -0
  624. package/dist/patterns/horizontal-overflow/index.d.ts +2 -0
  625. package/dist/patterns/horizontal-overflow/index.d.ts.map +1 -0
  626. package/dist/patterns/horizontal-overflow/index.js +14 -0
  627. package/dist/patterns/horizontal-overflow/index.js.map +1 -0
  628. package/dist/patterns/overlay-surface/index.d.ts +2 -0
  629. package/dist/patterns/overlay-surface/index.d.ts.map +1 -0
  630. package/dist/patterns/overlay-surface/index.js +7 -0
  631. package/dist/patterns/overlay-surface/index.js.map +1 -0
  632. package/dist/patterns/overlay-surface/overlay-surface.d.ts +28 -0
  633. package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -0
  634. package/dist/patterns/overlay-surface/overlay-surface.js +85 -0
  635. package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -0
  636. package/dist/patterns/resize-handle/index.d.ts +2 -0
  637. package/dist/patterns/resize-handle/index.d.ts.map +1 -0
  638. package/dist/patterns/resize-handle/index.js +5 -0
  639. package/dist/patterns/resize-handle/index.js.map +1 -0
  640. package/dist/patterns/resize-handle/resize-handle.d.ts +102 -0
  641. package/dist/patterns/resize-handle/resize-handle.d.ts.map +1 -0
  642. package/dist/patterns/resize-handle/resize-handle.js +74 -0
  643. package/dist/patterns/resize-handle/resize-handle.js.map +1 -0
  644. package/dist/react-day-picker.css +457 -0
  645. package/dist/stories-helpers/anatomy/anatomy-utils.d.ts +40 -0
  646. package/dist/stories-helpers/anatomy/anatomy-utils.d.ts.map +1 -0
  647. package/dist/tokens/elevation/overlay-geometry.d.ts +12 -0
  648. package/dist/tokens/elevation/overlay-geometry.d.ts.map +1 -0
  649. package/dist/tokens/elevation/overlay-geometry.js +7 -0
  650. package/dist/tokens/elevation/overlay-geometry.js.map +1 -0
  651. package/dist/tokens/motion/motion.d.ts +15 -0
  652. package/dist/tokens/motion/motion.d.ts.map +1 -0
  653. package/dist/tokens/motion/motion.js +9 -0
  654. package/dist/tokens/motion/motion.js.map +1 -0
  655. package/dist/tokens/uiSize/icon-size.d.ts +53 -0
  656. package/dist/tokens/uiSize/icon-size.d.ts.map +1 -0
  657. package/ds-canonical/commands/README.md +26 -0
  658. package/ds-canonical/commands/gov-status.md +79 -0
  659. package/ds-canonical/hooks/README.md +145 -0
  660. package/ds-canonical/hooks/_log-fire.sh +44 -0
  661. package/ds-canonical/hooks/block_prototype_imports.py +111 -0
  662. package/ds-canonical/hooks/check_app_shell_primary_header_consistency.sh +68 -0
  663. package/ds-canonical/hooks/check_audit_post_report_validator.sh +88 -0
  664. package/ds-canonical/hooks/check_audit_sample_escape.sh +73 -0
  665. package/ds-canonical/hooks/check_benchmark_citation.sh +106 -0
  666. package/ds-canonical/hooks/check_canonical_propagation.sh +189 -0
  667. package/ds-canonical/hooks/check_chrome_header_handcraft.sh +70 -0
  668. package/ds-canonical/hooks/check_codex_brief_invariants.sh +83 -0
  669. package/ds-canonical/hooks/check_codex_collab_5step.sh +108 -0
  670. package/ds-canonical/hooks/check_datatable_invariants.sh +117 -0
  671. package/ds-canonical/hooks/check_dim_count_drift.sh +72 -0
  672. package/ds-canonical/hooks/check_field_controls_contracts.sh +110 -0
  673. package/ds-canonical/hooks/check_field_family_invariants.sh +205 -0
  674. package/ds-canonical/hooks/check_file_size_budget.sh +60 -0
  675. package/ds-canonical/hooks/check_header_with_tabs_border.sh +87 -0
  676. package/ds-canonical/hooks/check_main_branch_workbench.sh +93 -0
  677. package/ds-canonical/hooks/check_naming_and_abstraction.sh +165 -0
  678. package/ds-canonical/hooks/check_opacity_token_usage.sh +149 -0
  679. package/ds-canonical/hooks/check_pattern_invariants.sh +194 -0
  680. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +56 -0
  681. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +53 -0
  682. package/ds-canonical/hooks/check_propose_plain_chinese.sh +74 -0
  683. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +70 -0
  684. package/ds-canonical/hooks/check_select_all_canonical.sh +58 -0
  685. package/ds-canonical/hooks/check_solo_workflow.sh +258 -0
  686. package/ds-canonical/hooks/check_spec_class_drift.sh +88 -0
  687. package/ds-canonical/hooks/check_story_invariants.sh +612 -0
  688. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +105 -0
  689. package/ds-canonical/hooks/check_tab_lg_chrome_header_equal.sh +66 -0
  690. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +104 -0
  691. package/ds-canonical/hooks/enforce_home_charter.sh +44 -0
  692. package/ds-canonical/hooks/inject_pending_self_audit.sh +204 -0
  693. package/ds-canonical/hooks/lib/_approval_re.sh +33 -0
  694. package/ds-canonical/hooks/lib/_code_quality.sh +73 -0
  695. package/ds-canonical/hooks/lib/_cva_default_sync.sh +69 -0
  696. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +49 -0
  697. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +163 -0
  698. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +56 -0
  699. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +141 -0
  700. package/ds-canonical/hooks/lib/_person_data_richness.sh +42 -0
  701. package/ds-canonical/hooks/lib/_story_compile_drift.sh +48 -0
  702. package/ds-canonical/hooks/lib/_token_hygiene.sh +95 -0
  703. package/ds-canonical/hooks/log_governance_fires.sh +50 -0
  704. package/ds-canonical/hooks/log_skill_invokes.sh +41 -0
  705. package/ds-canonical/hooks/post_edit_dispatcher.sh +62 -0
  706. package/ds-canonical/hooks/retired/check_anatomy_section_numbering.sh +106 -0
  707. package/ds-canonical/hooks/retired/check_avatar_hovercard.sh +90 -0
  708. package/ds-canonical/hooks/retired/check_button_icon_literal.sh.retired-2026-04-28 +38 -0
  709. package/ds-canonical/hooks/retired/check_container_breathing.sh +142 -0
  710. package/ds-canonical/hooks/retired/check_governance_compliance.sh +61 -0
  711. package/ds-canonical/hooks/retired/check_icon_only_padding_formula.sh +104 -0
  712. package/ds-canonical/hooks/retired/check_item_content_primitive.sh +150 -0
  713. package/ds-canonical/hooks/retired/check_item_list_gap.sh +153 -0
  714. package/ds-canonical/hooks/retired/check_sideoffset_canonical.sh +65 -0
  715. package/ds-canonical/hooks/retired/check_spec_iteration_tag.sh +87 -0
  716. package/ds-canonical/hooks/retired/check_ssot_consultation.sh +88 -0
  717. package/ds-canonical/hooks/retired/check_sync_update.sh +20 -0
  718. package/ds-canonical/hooks/retired/check_third_party_dom_verified.sh +95 -0
  719. package/ds-canonical/hooks/retired/enforce_home_charter.sh +125 -0
  720. package/ds-canonical/hooks/retired/post_edit_canonical_interrogate.sh +109 -0
  721. package/ds-canonical/hooks/retired/pre_edit_spec_check.sh +68 -0
  722. package/ds-canonical/hooks/retired/pre_new_component_spec.sh +39 -0
  723. package/ds-canonical/hooks/retired/pre_write_subsumption_check.sh +112 -0
  724. package/ds-canonical/hooks/retired/stop_meta_self_audit.sh.retired-2026-05-13 +76 -0
  725. package/ds-canonical/hooks/retired/tests/test_check_anatomy_section_numbering.sh +14 -0
  726. package/ds-canonical/hooks/retired/tests/test_check_avatar_hovercard.sh +15 -0
  727. package/ds-canonical/hooks/retired/tests/test_check_container_breathing.sh +15 -0
  728. package/ds-canonical/hooks/retired/tests/test_check_governance_compliance.sh +15 -0
  729. package/ds-canonical/hooks/retired/tests/test_check_icon_only_padding_formula.sh +79 -0
  730. package/ds-canonical/hooks/retired/tests/test_check_item_content_primitive.sh +15 -0
  731. package/ds-canonical/hooks/retired/tests/test_check_item_list_gap.sh +163 -0
  732. package/ds-canonical/hooks/retired/tests/test_check_sideoffset_canonical.sh +15 -0
  733. package/ds-canonical/hooks/retired/tests/test_check_spec_iteration_tag.sh +15 -0
  734. package/ds-canonical/hooks/retired/tests/test_check_ssot_consultation.sh +15 -0
  735. package/ds-canonical/hooks/retired/tests/test_check_sync_update.sh +14 -0
  736. package/ds-canonical/hooks/retired/tests/test_check_third_party_dom_verified.sh +15 -0
  737. package/ds-canonical/hooks/retired/tests/test_enforce_home_charter.sh +15 -0
  738. package/ds-canonical/hooks/retired/tests/test_pre_edit_spec_check.sh +15 -0
  739. package/ds-canonical/hooks/retired/tests/test_pre_new_component_spec.sh +15 -0
  740. package/ds-canonical/hooks/retired/tests/test_pre_write_subsumption_check.sh +63 -0
  741. package/ds-canonical/hooks/session_start_governance_check.sh +263 -0
  742. package/ds-canonical/hooks/stop_passive_logging.sh +322 -0
  743. package/ds-canonical/hooks/stop_self_audit.sh +450 -0
  744. package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +15 -0
  745. package/ds-canonical/hooks/tests/run-all.sh +76 -0
  746. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +143 -0
  747. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +140 -0
  748. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +115 -0
  749. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +93 -0
  750. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +115 -0
  751. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +133 -0
  752. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +123 -0
  753. package/ds-canonical/hooks/tests/test_check_code_quality.sh +15 -0
  754. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +96 -0
  755. package/ds-canonical/hooks/tests/test_check_cva_default_sync.sh +15 -0
  756. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +122 -0
  757. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +98 -0
  758. package/ds-canonical/hooks/tests/test_check_field_controls_contracts.sh +126 -0
  759. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +194 -0
  760. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +32 -0
  761. package/ds-canonical/hooks/tests/test_check_hardcoded_strings.sh +14 -0
  762. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +110 -0
  763. package/ds-canonical/hooks/tests/test_check_layout_space_canonical.sh +73 -0
  764. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +147 -0
  765. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +136 -0
  766. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +110 -0
  767. package/ds-canonical/hooks/tests/test_check_overlay_handcraft.sh +126 -0
  768. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +148 -0
  769. package/ds-canonical/hooks/tests/test_check_peoplepicker_ssot_drift.sh +108 -0
  770. package/ds-canonical/hooks/tests/test_check_person_data_richness.sh +58 -0
  771. package/ds-canonical/hooks/tests/test_check_pixel_quantified_audit.sh +142 -0
  772. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +126 -0
  773. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +117 -0
  774. package/ds-canonical/hooks/tests/test_check_select_all_canonical.sh +125 -0
  775. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +201 -0
  776. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +135 -0
  777. package/ds-canonical/hooks/tests/test_check_story_anatomy.sh.broken +197 -0
  778. package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +187 -0
  779. package/ds-canonical/hooks/tests/test_check_story_compile_drift.sh +15 -0
  780. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +209 -0
  781. package/ds-canonical/hooks/tests/test_check_story_name_jargon.sh.broken +53 -0
  782. package/ds-canonical/hooks/tests/test_check_story_slot_split.sh +156 -0
  783. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +176 -0
  784. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +138 -0
  785. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +21 -0
  786. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +169 -0
  787. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +77 -0
  788. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +125 -0
  789. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +10 -0
  790. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +7 -0
  791. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +108 -0
  792. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +143 -0
  793. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +95 -0
  794. package/ds-canonical/hooks/tests/test_stop_governance_drift_check.sh.broken +125 -0
  795. package/ds-canonical/hooks/tests/test_stop_harvest_corrections.sh +10 -0
  796. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +100 -0
  797. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +76 -0
  798. package/ds-canonical/hooks/tests/test_stop_tsc_sanity.sh +10 -0
  799. package/ds-canonical/references/README.md +43 -0
  800. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +74 -0
  801. package/ds-canonical/references/build-ui-canonicals.md +69 -0
  802. package/ds-canonical/references/cva-patterns.md +41 -0
  803. package/ds-canonical/references/drag-canonical.md +331 -0
  804. package/ds-canonical/references/item-anatomy-recipe.md +225 -0
  805. package/ds-canonical/references/naming-conventions.md +56 -0
  806. package/ds-canonical/references/principle-dim-map.json +515 -0
  807. package/ds-canonical/references/props-naming.md +45 -0
  808. package/ds-canonical/references/spec-rules.md +58 -0
  809. package/ds-canonical/references/ssot-consultation.md +63 -0
  810. package/ds-canonical/references/ssot-index.md +40 -0
  811. package/ds-canonical/references/story-baseline-registry.json +79 -0
  812. package/ds-canonical/references/structural-token-retention.md +42 -0
  813. package/ds-canonical/references/tailwind-gotchas.md +87 -0
  814. package/ds-canonical/references/ui-dev-rules.md +60 -0
  815. package/ds-canonical/rules/README.md +34 -0
  816. package/ds-canonical/rules/meta-patterns.md +87 -0
  817. package/ds-canonical/rules/self-verify.md +53 -0
  818. package/ds-canonical/rules/spec-rules.md +25 -0
  819. package/ds-canonical/rules/story-rules.md +56 -0
  820. package/ds-canonical/rules/ui-development.md +87 -0
  821. package/ds-canonical/skills/README.md +88 -0
  822. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +181 -0
  823. package/ds-canonical/skills/code-quality-audit/SKILL.md +63 -0
  824. package/ds-canonical/skills/codex-collab/SKILL.md +249 -0
  825. package/ds-canonical/skills/codex-collab/references/brief-template.md +48 -0
  826. package/ds-canonical/skills/codex-collab/references/transport.md +58 -0
  827. package/ds-canonical/skills/codify-corrections/SKILL.md +184 -0
  828. package/ds-canonical/skills/codify-principle/SKILL.md +151 -0
  829. package/ds-canonical/skills/component-quality-gate/SKILL.md +102 -0
  830. package/ds-canonical/skills/component-quality-gate/references/checklist.md +79 -0
  831. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +247 -0
  832. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +123 -0
  833. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +165 -0
  834. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +91 -0
  835. package/ds-canonical/skills/delivery-handoff/SKILL.md +229 -0
  836. package/ds-canonical/skills/delivery-handoff/references/flow-diagram.md +180 -0
  837. package/ds-canonical/skills/delivery-handoff/references/handoff-template.md +177 -0
  838. package/ds-canonical/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  839. package/ds-canonical/skills/design-system-audit/SKILL.md +343 -0
  840. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +1260 -0
  841. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +240 -0
  842. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +240 -0
  843. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +364 -0
  844. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +175 -0
  845. package/ds-canonical/skills/design-system-audit/references/spec-template.md +66 -0
  846. package/ds-canonical/skills/ensure-canonical/SKILL.md +196 -0
  847. package/ds-canonical/skills/governance-health/SKILL.md +146 -0
  848. package/ds-canonical/skills/knowledge-prune/SKILL.md +303 -0
  849. package/ds-canonical/skills/new-component/SKILL.md +170 -0
  850. package/ds-canonical/skills/new-component/references/new-component-checklist.md +85 -0
  851. package/ds-canonical/skills/performance-audit/SKILL.md +107 -0
  852. package/ds-canonical/skills/product-ui-audit/SKILL.md +230 -0
  853. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +246 -0
  854. package/ds-canonical/skills/product-ui-audit/references/common-misuses.md +329 -0
  855. package/ds-canonical/skills/product-ui-audit/references/report-template.md +159 -0
  856. package/ds-canonical/skills/propose-options/SKILL.md +177 -0
  857. package/ds-canonical/skills/prototype/SKILL.md +244 -0
  858. package/ds-canonical/skills/prototype/references/audit-checks.md +37 -0
  859. package/ds-canonical/skills/prototype/references/benchmark-sources.md +94 -0
  860. package/ds-canonical/skills/prototype/references/checkpoints.md +191 -0
  861. package/ds-canonical/skills/prototype/references/evaluation-matrix.md +141 -0
  862. package/ds-canonical/skills/prototype/references/ooux-template.md +198 -0
  863. package/ds-canonical/skills/prototype/references/proposal-template.md +229 -0
  864. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +198 -0
  865. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +159 -0
  866. package/ds-canonical/skills/story-writing/SKILL.md +122 -0
  867. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +217 -0
  868. package/ds-canonical/skills/story-writing/references/category-templates.md +174 -0
  869. package/ds-canonical/skills/story-writing/references/example-selection.md +70 -0
  870. package/ds-canonical/skills/story-writing/references/self-check.md +20 -0
  871. package/ds-canonical/skills/ux-audit/SKILL.md +130 -0
  872. package/ds-canonical/skills/visual-audit/SKILL.md +245 -0
  873. package/ds-canonical/skills/visual-audit/output/.gitkeep +0 -0
  874. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +100 -0
  875. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +297 -0
  876. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  877. package/ds-canonical/templates/_README.md +23 -0
  878. package/ds-canonical/templates/dashboard-app.tsx +145 -0
  879. package/ds-story-manifest.json +1690 -0
  880. package/package.json +22 -9
  881. package/src/components/Accordion/accordion.spec.md +114 -0
  882. package/src/components/Accordion/index.ts +5 -0
  883. package/src/components/Alert/alert.spec.md +197 -0
  884. package/src/components/Alert/index.ts +5 -0
  885. package/src/components/AppShell/app-shell.spec.md +331 -0
  886. package/src/components/AppShell/index.ts +5 -0
  887. package/src/components/AspectRatio/aspect-ratio.spec.md +134 -0
  888. package/src/components/AspectRatio/index.ts +5 -0
  889. package/src/components/Avatar/avatar.spec.md +319 -0
  890. package/src/components/Avatar/index.ts +5 -0
  891. package/src/components/Badge/badge.spec.md +380 -0
  892. package/src/components/Badge/index.ts +5 -0
  893. package/src/components/Breadcrumb/breadcrumb.spec.md +251 -0
  894. package/src/components/Breadcrumb/breadcrumb.tsx +26 -16
  895. package/src/components/Breadcrumb/index.ts +5 -0
  896. package/src/components/BulkActionBar/bulk-action-bar.spec.md +210 -0
  897. package/src/components/BulkActionBar/index.ts +5 -0
  898. package/src/components/Button/button.spec.md +445 -0
  899. package/src/components/Button/index.ts +5 -0
  900. package/src/components/Calendar/calendar.spec.md +242 -0
  901. package/src/components/Calendar/index.ts +5 -0
  902. package/src/components/Carousel/carousel.spec.md +253 -0
  903. package/src/components/Carousel/index.ts +5 -0
  904. package/src/components/Chart/chart.spec.md +155 -0
  905. package/src/components/Chart/index.ts +5 -0
  906. package/src/components/Checkbox/checkbox.spec.md +344 -0
  907. package/src/components/Checkbox/index.ts +5 -0
  908. package/src/components/Chip/chip.spec.md +230 -0
  909. package/src/components/Chip/index.ts +5 -0
  910. package/src/components/CircularProgress/circular-progress.spec.md +268 -0
  911. package/src/components/CircularProgress/index.ts +5 -0
  912. package/src/components/Coachmark/coachmark.spec.md +230 -0
  913. package/src/components/Coachmark/index.ts +5 -0
  914. package/src/components/Combobox/combobox.spec.md +180 -0
  915. package/src/components/Combobox/combobox.tsx +6 -6
  916. package/src/components/Combobox/index.ts +5 -0
  917. package/src/components/Command/command.spec.md +171 -0
  918. package/src/components/Command/index.ts +5 -0
  919. package/src/components/DataTable/data-table.spec.md +525 -0
  920. package/src/components/DataTable/index.ts +5 -0
  921. package/src/components/DateGrid/date-grid.spec.md +215 -0
  922. package/src/components/DateGrid/index.ts +5 -0
  923. package/src/components/DatePicker/date-picker.spec.md +334 -0
  924. package/src/components/DatePicker/index.ts +5 -0
  925. package/src/components/DescriptionList/description-list.spec.md +214 -0
  926. package/src/components/DescriptionList/index.ts +5 -0
  927. package/src/components/Dialog/dialog.spec.md +193 -0
  928. package/src/components/Dialog/dialog.tsx +4 -4
  929. package/src/components/Dialog/index.ts +5 -0
  930. package/src/components/DropdownMenu/dropdown-menu.spec.md +241 -0
  931. package/src/components/DropdownMenu/index.ts +5 -0
  932. package/src/components/Empty/empty.spec.md +204 -0
  933. package/src/components/Empty/index.ts +5 -0
  934. package/src/components/Field/field-controls.spec.md +338 -0
  935. package/src/components/Field/field.spec.md +438 -0
  936. package/src/components/Field/form-validation.spec.md +142 -0
  937. package/src/components/Field/index.ts +5 -0
  938. package/src/components/FieldControlGroup/field-control-group.spec.md +176 -0
  939. package/src/components/FieldControlGroup/index.ts +5 -0
  940. package/src/components/FileItem/file-item.spec.md +467 -0
  941. package/src/components/FileItem/index.ts +5 -0
  942. package/src/components/FileUpload/file-upload.spec.md +123 -0
  943. package/src/components/FileUpload/index.ts +5 -0
  944. package/src/components/FileViewer/file-viewer.spec.md +373 -0
  945. package/src/components/FileViewer/index.ts +5 -0
  946. package/src/components/HoverCard/hover-card.spec.md +149 -0
  947. package/src/components/HoverCard/index.ts +5 -0
  948. package/src/components/Input/index.ts +5 -0
  949. package/src/components/Input/input.spec.md +193 -0
  950. package/src/components/LinkInput/index.ts +5 -0
  951. package/src/components/LinkInput/link-input.spec.md +130 -0
  952. package/src/components/Menu/index.ts +5 -0
  953. package/src/components/Menu/menu-item.spec.md +283 -0
  954. package/src/components/NameCard/index.ts +5 -0
  955. package/src/components/NameCard/name-card.spec.md +171 -0
  956. package/src/components/Notice/index.ts +5 -0
  957. package/src/components/Notice/notice.spec.md +149 -0
  958. package/src/components/NumberInput/index.ts +5 -0
  959. package/src/components/NumberInput/number-input.spec.md +126 -0
  960. package/src/components/OverflowIndicator/index.ts +5 -0
  961. package/src/components/OverflowIndicator/overflow-indicator.spec.md +120 -0
  962. package/src/components/PeoplePicker/index.ts +5 -0
  963. package/src/components/PeoplePicker/people-picker.spec.md +263 -0
  964. package/src/components/Popover/index.ts +5 -0
  965. package/src/components/Popover/popover.spec.md +191 -0
  966. package/src/components/Popover/popover.tsx +1 -1
  967. package/src/components/ProgressBar/index.ts +5 -0
  968. package/src/components/ProgressBar/progress-bar.spec.md +232 -0
  969. package/src/components/RadioGroup/index.ts +5 -0
  970. package/src/components/RadioGroup/radio-group.spec.md +141 -0
  971. package/src/components/Rating/index.ts +5 -0
  972. package/src/components/Rating/rating.spec.md +208 -0
  973. package/src/components/ScrollArea/index.ts +5 -0
  974. package/src/components/ScrollArea/scroll-area.spec.md +145 -0
  975. package/src/components/SegmentedControl/index.ts +5 -0
  976. package/src/components/SegmentedControl/segmented-control.spec.md +295 -0
  977. package/src/components/Select/index.ts +5 -0
  978. package/src/components/Select/select.spec.md +299 -0
  979. package/src/components/SelectMenu/index.ts +5 -0
  980. package/src/components/SelectMenu/select-menu.spec.md +220 -0
  981. package/src/components/SelectionControl/index.ts +5 -0
  982. package/src/components/SelectionControl/selection-item.spec.md +128 -0
  983. package/src/components/Separator/index.ts +5 -0
  984. package/src/components/Separator/separator.spec.md +109 -0
  985. package/src/components/Sheet/index.ts +5 -0
  986. package/src/components/Sheet/sheet.spec.md +141 -0
  987. package/src/components/Sheet/sheet.tsx +1 -1
  988. package/src/components/Sidebar/index.ts +5 -0
  989. package/src/components/Sidebar/sidebar.spec.md +706 -0
  990. package/src/components/Skeleton/index.ts +5 -0
  991. package/src/components/Skeleton/skeleton.spec.md +104 -0
  992. package/src/components/Slider/index.ts +5 -0
  993. package/src/components/Slider/slider.spec.md +353 -0
  994. package/src/components/Steps/index.ts +5 -0
  995. package/src/components/Steps/steps.spec.md +465 -0
  996. package/src/components/Switch/index.ts +5 -0
  997. package/src/components/Switch/switch.spec.md +215 -0
  998. package/src/components/Tabs/index.ts +5 -0
  999. package/src/components/Tabs/tabs.spec.md +314 -0
  1000. package/src/components/Tag/index.ts +5 -0
  1001. package/src/components/Tag/tag.spec.md +282 -0
  1002. package/src/components/Textarea/index.ts +5 -0
  1003. package/src/components/Textarea/textarea.spec.md +151 -0
  1004. package/src/components/TimePicker/index.ts +5 -0
  1005. package/src/components/TimePicker/time-picker.spec.md +279 -0
  1006. package/src/components/TimePicker/time-picker.tsx +4 -4
  1007. package/src/components/Toast/index.ts +5 -0
  1008. package/src/components/Toast/toast.spec.md +177 -0
  1009. package/src/components/Tooltip/index.ts +5 -0
  1010. package/src/components/Tooltip/tooltip.spec.md +132 -0
  1011. package/src/components/TreeView/index.ts +5 -0
  1012. package/src/components/TreeView/tree-view.spec.md +388 -0
  1013. package/src/components/TreeView/tree-view.tsx +24 -12
  1014. package/src/index.ts +70 -69
  1015. package/src/patterns/action-bar/action-bar.spec.md +458 -0
  1016. package/src/patterns/element-anatomy/element-anatomy.spec.md +215 -0
  1017. package/src/patterns/element-anatomy/index.ts +5 -0
  1018. package/src/patterns/element-anatomy/inline-action.spec.md +304 -0
  1019. package/src/patterns/element-anatomy/item-anatomy.spec.md +1042 -0
  1020. package/src/patterns/header-canonical/header-canonical.spec.md +285 -0
  1021. package/src/patterns/header-canonical/index.ts +5 -0
  1022. package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +191 -0
  1023. package/src/patterns/horizontal-overflow/index.ts +5 -0
  1024. package/src/patterns/overlay-surface/index.ts +5 -0
  1025. package/src/patterns/overlay-surface/overlay-surface.spec.md +419 -0
  1026. package/src/patterns/resize-handle/index.ts +5 -0
  1027. package/src/patterns/resize-handle/resize-handle.spec.md +109 -0
  1028. package/src/styles/tokens.css +42 -0
  1029. package/src/tokens/README.md +2 -0
  1030. package/src/tokens/color/color.spec.md +772 -0
  1031. package/src/tokens/density/density.spec.md +127 -0
  1032. package/src/tokens/elevation/elevation.spec.md +72 -0
  1033. package/src/tokens/layoutSpace/layoutSpace.spec.md +303 -0
  1034. package/src/tokens/motion/motion.spec.md +97 -0
  1035. package/src/tokens/opacity/opacity.spec.md +78 -0
  1036. package/src/tokens/orphan-tokens.spec.md +117 -0
  1037. package/src/tokens/radius/radius.spec.md +123 -0
  1038. package/src/tokens/token-system.spec.md +243 -0
  1039. package/src/tokens/typography/typography.spec.md +202 -0
  1040. package/src/tokens/uiSize/uiSize.css +16 -0
  1041. package/src/tokens/uiSize/uiSize.spec.md +428 -0
@@ -0,0 +1,283 @@
1
+ ---
2
+ component: MenuItem
3
+ family: 1
4
+ variants: {}
5
+ sizes:
6
+ sm: {}
7
+ md: {}
8
+ lg: {}
9
+ traits:
10
+ - hasInteractiveStates
11
+ - isInternal
12
+ benchmark:
13
+ - Radix Menu primitive: github.com/radix-ui/primitives/tree/main/packages/react/menu
14
+ - Ant Design Menu: github.com/ant-design/ant-design/tree/master/components/menu
15
+ - Polaris ActionList: github.com/Shopify/polaris/tree/main/polaris-react/src/components/ActionList
16
+ ---
17
+
18
+ # MenuItem 設計原則
19
+
20
+ ## 定位
21
+
22
+ MenuItem 是所有 menu 類元件的**共用視覺佈局層**——處理 prefix 對齊、尺寸、狀態。SelectMenu、DropdownMenu、未來的 ContextMenu 等都消費它。它只負責 layout(padding、gap、prefix alignment、typography),互動行為由各 menu 的 Radix primitive 外層控制。
23
+
24
+ **Layout Family**:CLAUDE.md 4-Family Model **Family 1(Menu item layout)** 消費者。結構繼承 `patterns/element-anatomy/item-anatomy.spec.md`「Menu item layout」章節的 scanning-mode 規格。
25
+
26
+ ---
27
+
28
+ ## 結構
29
+
30
+ ```
31
+ prefix content suffix
32
+ [checkbox?] [icon? | avatar?] [label + description?] [tag?]
33
+ ```
34
+
35
+ - **Prefix**:checkbox(多選,由父層注入)+ startIcon 或 avatar(互斥)
36
+ - **Content**:label + 可選 description
37
+ - **Suffix**:tag(ml-auto 靠右)
38
+
39
+ prefix icon 跟 label 同色(foreground),不是 fg-muted。詳見 item-anatomy.spec.md 的 Icon 色彩原則。
40
+
41
+ ---
42
+
43
+ ## Prefix 對齊——24px 閾值
44
+
45
+ 所有 prefix 元素(checkbox、icon、avatar)共享同一個對齊容器。容器高度決定對齊行為:
46
+
47
+ | prefix 最大高度 | 容器 | 對齊目標 |
48
+ |---|---|---|
49
+ | ≤ 24px | `h-[1lh]` | 第一行 label 的垂直中心 |
50
+ | > 24px | `h-[calc(1lh+var(--item-gap-label-desc)+desc_1lh)]` | label + gap + description 文字塊的垂直中心 |
51
+
52
+ **SSOT**:對齊公式封裝於 `patterns/element-anatomy/item-anatomy.tsx` 的 `itemPrefixAlignVariants`(2026-04-23 重構)。MenuItem 消費此 primitive,不自建對齊邏輯;改 gap token(`--item-gap-label-desc`)或 font-size token 一處 → MenuItem 自動同步。
53
+
54
+ **24px 是物理限制**——16px icon 在 24px 圓內仍可辨識(內部 icon 下限 12px),但在更小的容器中 icon 會低於可讀閾值。
55
+
56
+ **無 description 時 prefix 上限 24px**——沒有文字塊可對齊,強制 inline。
57
+
58
+ 多行文字超過參考高度時,外層 `items-start` 讓 prefix Y 不隨文字下移。
59
+
60
+ ---
61
+
62
+ ## startIcon vs avatar
63
+
64
+ | | `startIcon` | `avatar` |
65
+ |---|---|---|
66
+ | 型別 | `LucideIcon` | `AvatarData` |
67
+ | 角色 | **描述**選項的性質(形容詞) | **代表**選項的身份(名詞) |
68
+ | 尺寸 | 16/20px(icon tier,元件控制) | 由 description 決定:無 desc → 20/24/24px,有 desc → 32/32/40px |
69
+ | 對齊 | 永遠 inline(≤ 24px) | 無 desc → inline;有 desc → block |
70
+
71
+ ### avatar 尺寸推導
72
+
73
+ inline(無 description)= 對應 size 的 Tag 高度:
74
+
75
+ | sm | md | lg |
76
+ |---|---|---|
77
+ | 20px | 24px | 24px |
78
+
79
+ block(有 description)= `floor₈(1lh + 2px + desc_1lh)`:
80
+
81
+ | sm | md | lg |
82
+ |---|---|---|
83
+ | 32px | 32px | 40px |
84
+
85
+ ---
86
+
87
+ ## Size
88
+
89
+ 單行高度對齊 field-height token,與 Button、Input 等互動元件等高。
90
+
91
+ | Size | 高度 | Label | Description | Icon | Checkbox |
92
+ |---|---|---|---|---|---|
93
+ | sm | `h-field-sm` | `text-body leading-compact` | `text-caption` | 16px | 16px (sm) |
94
+ | md | `h-field-md` | `text-body leading-compact` | `text-caption` | 16px | 16px (md) |
95
+ | lg | `h-field-lg` | `text-body-lg leading-compact` | `text-body leading-compact` | 20px | 20px (lg) |
96
+
97
+ 所有文字使用 `leading-compact` (1.3)——選單選項是短文字,不需要閱讀行距。
98
+
99
+ description 降一級:sm/md 的 label 14px → description 12px;lg 的 label 16px → description 14px。
100
+
101
+ ---
102
+
103
+ ## Suffix 對齊(實作限制)
104
+
105
+ 依 `item-anatomy.spec.md` 的對齊規則,suffix 應該套用 24px 閾值公式(跟 prefix 同公式但獨立判斷)。但 **MenuItem 的實作把 suffix 寫死成 `h-[1lh]` inline 對齊**——只支援 ≤24px 的小 suffix(Tag、ChevronRight、Badge、計數)。
106
+
107
+ ### 為什麼 hardcode
108
+
109
+ 選單選項的 suffix 99% 是小元素,不會超過 24px。為了避免每個 consumer 都要思考 suffix 對齊規則,MenuItem 直接套用最常見的 inline 對齊。
110
+
111
+ ### 限制
112
+
113
+ 如果你要塞大塊 suffix(thumbnail 40px、stacked badge、multi-line text),**MenuItem 會把它對齊到 label 第一行而不是文字塊中心**,視覺上會跟它修飾的對象失聯。
114
+
115
+ ### 解法
116
+
117
+ 需要大塊 suffix 的場景應該:
118
+
119
+ 1. **重新評估這個東西是不是 menu item**——如果 suffix 是大塊內容,可能需要 ListItem(列表行)而非 menu item
120
+ 2. **包一個 wrapper 元件**——consumer 自己組合 prefix + content + 大塊 suffix,套用 item-anatomy.spec.md 的完整 4-slot 規則
121
+ 3. 不要 hack `endContent` 塞大東西進去——layout 會壞
122
+
123
+ ---
124
+
125
+ ## Clamp 政策(Label / Description 行數)
126
+
127
+ | Prop | 預設 | 理由 |
128
+ |---|---|---|
129
+ | `labelMaxLines` | `1` | 選項是供快速掃視的短文字,必須在一行內辨識完 |
130
+ | `descMaxLines` | `1` | 與 label 對稱,維持掃視節奏;description 是補充說明,不是閱讀內容 |
131
+
132
+ **為什麼 description 也預設 1 行?**
133
+
134
+ Menu 的設計目的是「**快速掃視多個選項挑一個**」。垂直空間是寶貴的——選單通常要塞 5–20 個選項。如果 description 沒有 clamp,一個過長的 description 會把 item 撐高,破壞 row rhythm,使用者眼睛要重新校準。
135
+
136
+ 整個選單應該只有「**兩種 row 高度**」:
137
+ - 無 description → `field-height`(單行 label)
138
+ - 有 description → `field-height` + 2px + 一行 desc 高度
139
+
140
+ 不能讓 row 高度變成「label 1 行 + desc 1~N 行」這種不可預測的範圍。
141
+
142
+ **Per-instance override**:consumer 若有合理理由(例如 settings 選單想顯示 2 行說明),可以顯式 `<MenuItem descMaxLines={2} ...>` 覆寫。要顯示完整不截,傳 `descMaxLines="none"`(不能傳 `undefined`,React props 的 destructure default 在 undefined 時會接管,fallback 到預設 `1`)。
143
+
144
+ ---
145
+
146
+ ## 狀態
147
+
148
+ | 狀態 | 背景 | 文字 | 觸發方式 |
149
+ |---|---|---|---|
150
+ | default | transparent | foreground | — |
151
+ | hover | `--neutral-hover` | foreground | 滑鼠 hover |
152
+ | selected(單選) | `--neutral-selected` | foreground | bg 高亮(不用 ✓ 勾號,避免影響 prefix 對齊) |
153
+ | selected(多選) | transparent | foreground | checkbox 勾選 |
154
+ | disabled | transparent | `--fg-disabled` | disabled prop |
155
+
156
+ ### 選中指示器
157
+
158
+ | 模式 | 選中指示器 |
159
+ |---|---|
160
+ | 單選 | `bg-neutral-selected` 背景高亮 |
161
+ | 多選 | Checkbox 勾選 |
162
+
163
+ 單選和 DropdownMenu RadioItem 統一用 `bg-neutral-selected`。不用 ✓ 勾號——勾號在 prefix 會影響群組內對齊。
164
+
165
+ disabled 時所有元素(icon、checkbox、文字)統一 `fg-disabled`。
166
+
167
+ ### 浮層關閉行為
168
+
169
+ | 模式 | 選了之後 | 原因 |
170
+ |---|---|---|
171
+ | 單選 | **關閉浮層** | 選完就結束 |
172
+ | 多選 | **不關閉** | 需要繼續勾選 |
173
+ | DropdownMenu CheckboxItem | **不關閉** | 同多選邏輯 |
174
+ | DropdownMenu 一般 Item | **關閉** | 執行動作後結束 |
175
+
176
+ ### Prefix icon 色彩
177
+
178
+ Menu item 的 prefix icon 跟 label 同色(foreground),不是 fg-muted。Prefix icon 是 label 的視覺延伸。
179
+
180
+ 詳見 `item-anatomy.spec.md` 的 Icon 色彩原則。
181
+
182
+ ---
183
+
184
+ ## Group
185
+
186
+ 群組由 `MenuGroup` 包裹,`py-2`(8px)上下內距。群組緊鄰群組,無額外間距。
187
+
188
+ ### Group Header
189
+
190
+ `header` prop 讓 item 變為群組標題:
191
+ - `font-medium` (500)
192
+ - `text-fg-muted` (neutral-7)
193
+ - 不可選、不可 hover
194
+ - 尺寸與一般 item 相同
195
+
196
+ ---
197
+
198
+ ## Footer(多選)
199
+
200
+ `MenuFooter` 提供固定底部區域(`border-t` + `py-2`)。
201
+
202
+ 典型用途:「全選」checkbox item,使用 `checked="indeterminate"` 在部分選中時顯示 minus 圖示。
203
+
204
+ ---
205
+
206
+ ## 禁止事項
207
+
208
+ - ❌ `startIcon` 和 `avatar` 不可同時使用
209
+ - ❌ 無 `description` 時不可使用 > 24px 的 avatar
210
+ - ❌ disabled item 不可有 hover 效果
211
+ - ❌ disabled item 內的所有子元件(icon、checkbox、文字)都必須呈現 disabled 狀態——fg-disabled 統一,checkbox 用 disabled 樣式
212
+ - ❌ header item 不可被選中
213
+ - ❌ 不在 item 內放獨立互動元素(如 Button)——item 本身就是互動單位
214
+
215
+ ---
216
+
217
+ ## 何時用 / 何時不用
218
+
219
+ **MenuItem 是 internal primitive**——不直接使用,透過 `SelectMenu` / `DropdownMenu` 等外層 menu 元件消費。
220
+
221
+ | 場景 | 正確做法 |
222
+ |------|---------|
223
+ | 建立操作選單(複製 / 刪除 / 分享)| 用 `DropdownMenu` + `DropdownMenuItem`(內部消費 MenuItem)|
224
+ | 建立選值下拉(選項 + 搜尋)| 用 `SelectMenu`(內部消費 MenuItem)|
225
+ | 建立右鍵選單 | 用未來的 `ContextMenu`(待開發)|
226
+ | 直接在 JSX 中用 `<MenuItem>` | ❌ **禁止**——會失去 menu 外層的 Radix 無障礙 / 鍵盤 / 焦點管理 |
227
+
228
+ ### 消費者
229
+
230
+ - `../SelectMenu/select-menu.tsx` — 下拉選單浮層
231
+ - `../DropdownMenu/dropdown-menu.tsx` — 操作選單
232
+ - 未來:ContextMenu、CommandPalette
233
+
234
+ ---
235
+
236
+ ## 為何無獨立 StateBehavior story
237
+
238
+ MenuItem 的狀態色(default / hover / selected / disabled)是**結構性的**——透過 variant(single / multi)× state 的二維矩陣呈現比時序互動更清楚。已在 `ColorMatrix` 用 TOKEN_MAP 完整矩陣覆蓋(單選 multi / 多選 single 各自的 4 state × bg / text / icon / desc token 對照)。
239
+
240
+ 獨立 StateBehavior story 會複製 ColorMatrix 內容——MenuItem 的 state 本身就是色彩表達,無額外「時序 / 動畫」可獨立呈現(不像 Accordion 有 expand/collapse 行為)。Inspector 已互動式展示 selected / disabled 單一 variant 的切換。
241
+
242
+ 對應 anatomy story:保留 `Overview` + `Inspector` + `ColorMatrix`(含完整狀態色矩陣) + `SizeMatrix`。
243
+
244
+ ---
245
+
246
+ ## 邊界案例
247
+
248
+ - **Disabled**:`disabled` prop 由 MenuItem primitive own;視覺 `text-fg-disabled`(neutral-6,M24 state>emphasis)、無 hover bg、`aria-disabled="true"`、Enter / click 不觸發 onSelect、鍵盤導覽自動 skip(由 consumer SelectMenu / DropdownMenu / cmdk 處理)。已在「選擇 / 狀態視覺規則」段 codify。
249
+ - **Loading**:MenuItem 為單一 row primitive 非 async surface,本身不擁有 loading prop。Async option list 的 loading 由 consumer(SelectMenu / Combobox / DropdownMenu)在 list body 替換為 `<Empty icon={<CircularProgress/>}/>`(SelectMenu SSOT)。
250
+ - **Empty(label-only / icon-only)**:label 為必傳;若無 prefix icon / avatar / checkbox,layout 自動收斂為 `[label] [suffix?]`;若無 suffix(shortcut / endAction / chevron),收斂為純 `[label]`。
251
+ - **Dark mode**:走 semantic token 自動 adapt。
252
+ - **Density**:`size` 由 consumer menu(`Menu` block-tier `compact` / `reading`)決定 row height + padding,MenuItem 自身不持 density state。
253
+
254
+ ---
255
+
256
+ ## 相關
257
+
258
+ - `../../patterns/element-anatomy/item-anatomy.spec.md` — MenuItem 的 row primitive 繼承規則(prefix / label / suffix 對齊)
259
+ - `../Avatar/avatar.spec.md` — Prefix 的 Avatar 尺寸
260
+ - `../Checkbox/checkbox.spec.md` — CheckboxItem 的視覺規則(DropdownMenu 使用)
261
+ - `../SelectMenu/select-menu.spec.md` — 主要消費者之一
262
+ - `../DropdownMenu/dropdown-menu.spec.md` — 另一個主要消費者
263
+
264
+ ## A11y 預設
265
+
266
+ **ARIA / Pattern**:對齊 [W3C ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/) 對應 pattern。
267
+
268
+ **Keyboard 行為**:
269
+
270
+ - Tab — focus container
271
+ - ↑/↓ — 導覽 items
272
+ - Enter — activate
273
+ - Esc — 關閉(若在 menu context)
274
+
275
+ **Focus**:focus-visible ring 對齊 DS canonical(`outline: 2px solid var(--ring)`);focus management 由元件 own。
276
+
277
+ **驗證**:Storybook a11y addon panel 應 0 critical violation;鍵盤完整可操作(無需滑鼠)。WCAG AA contrast ≥ 4.5:1(text)/ 3:1(UI)。
278
+
279
+ ## 被引用(auto-maintained,Dim 3 reciprocal audit)
280
+
281
+ > 本節由 `scripts/add-reciprocal-pointers.mjs` 自動維護,列出在 SSOT 語境下指向本 spec 的其他 spec。若要手動補充,寫在本節之前。
282
+
283
+ - `opacity.spec.md`
@@ -0,0 +1,5 @@
1
+ // AUTO-GENERATED by scripts/gen-component-indexes.mjs — DO NOT EDIT MANUALLY.
2
+ // Re-export pattern enables package.json exports map subpath:
3
+ // import { ... } from '@qijenchen/design-system/{components,patterns}/<Dir>'
4
+ // Regenerate: node scripts/gen-component-indexes.mjs
5
+ export * from './name-card'
@@ -0,0 +1,171 @@
1
+ ---
2
+ component: NameCard
3
+ family: composite
4
+ traits:
5
+ - isInternal
6
+ variants: {}
7
+ sizes: {}
8
+ benchmark:
9
+ - Polaris MediaCard: github.com/Shopify/polaris/tree/main/polaris-react/src/components/MediaCard
10
+ - MUI Card: github.com/mui/material-ui/tree/master/packages/mui-material/src/Card
11
+ ---
12
+
13
+ <!-- @benchmark-cited: D5 retrofit 2026-05-18 — body claims marked per-claim @benchmark-unverified inline; canonical source URLs in frontmatter benchmark list. -->
14
+
15
+ # NameCard 設計原則
16
+
17
+ 人員 HoverCard 的內容元件。提供統一的人員資訊展示格式,作為 HoverCard 的 content 消費者。
18
+
19
+ **實作基礎**:組合元件——Avatar + Text + Button 配 HoverCard 浮層。NameCard 本身不含觸發或定位邏輯(那是 HoverCard 的職責),只是 HoverCard content 的標準人員模板。
20
+
21
+ **Layout Family**:非上述 family — composite(Avatar prefix + text block + action suffix,組合自 HoverCard content 內部;跨 section 垂直堆疊由 `border-t border-divider` 分隔,不屬 Family 1-4 的任何單行結構)。
22
+
23
+ ---
24
+
25
+ ## 何時用
26
+
27
+ - **Avatar hover 顯示人員詳情**:留言者 / 指派者 / 成員列表 hover 彈出詳細資訊
28
+ - **@提及互動**:`@username` hover 顯示該使用者的 card
29
+ - **團隊 / 成員快速預覽**:Settings 頁的成員列表、PR reviewer 清單的 hover 預覽
30
+ - **需要快速動作的人員資訊**:NameCard 可放 CTA button(Message / Invite / Follow)
31
+
32
+ ## 何時不用
33
+
34
+ | 場景 | 改用 | 原因 |
35
+ |------|------|------|
36
+ | 點擊進入人員 profile 頁 | `<a>` 或 Link | Navigation 不需 hover card 的浮層 |
37
+ | 人員清單 row(不需要 hover 展開詳情)| `Avatar` + inline text | NameCard 是 hover content,list row 不需要 |
38
+ | 單純顯示一個名字 | `Avatar` + `Text` | NameCard 是完整資訊卡,單名字用更輕量元件 |
39
+ | 複雜人員表單(編輯角色 / 權限)| `Dialog` 或專用頁面 | NameCard 是快速預覽,不承載複雜互動 |
40
+
41
+ ## 結構
42
+
43
+ NameCard 是**三層 chrome 結構**(2026-04-23 canonical):
44
+
45
+ ```
46
+ ┌─────────────────────────────┐
47
+ │ HEADER(固定,shrink-0) │ ← Profile(Avatar + Name + Subtitle)+ Actions(選用)
48
+ ├─────────────────────────────┤
49
+ │ BODY(flex-1,可垂直捲動) │ ← Status section(v12 conditional)+ Info fields(always-render)
50
+ │ ↕ 空間不足時此區 ScrollArea │ Status undefined → 整 status block skip
51
+ ├─────────────────────────────┤
52
+ │ FOOTER(固定,shrink-0) │ ← View more(hover context 必含,詳「View more canonical」)
53
+ └─────────────────────────────┘
54
+ ```
55
+
56
+ - **Header 固定**:Profile + Actions 一體,**不捲動**(使用者的視覺 anchor:誰 + 可對他做什麼)
57
+ - **Body 可捲動**:Status section + Info fields。以 `<ScrollArea>` 包(cross-OS overlay 捲軸)
58
+ - **Footer 固定**:View more **永遠可見**(hover preview 的 escape hatch 到完整 profile)
59
+
60
+ **Status section v12 conditional rule(2026-05-14 user 拍板)**:`status` 在 production 一定會被設定(每個 user 都有 presence state)。如果 status undefined,**唯一可能性 = 資料還沒讀到(loading transient)**,**不**是「user 沒設定狀態」。所以 status undefined 期間 → **整 status block 隱藏**(等資料到才 render),**禁** render「Status not set」這種 placeholder 文字(語義錯,user presence 不會「沒設定」)。**此規則 NameCard-specific 不外推至 DS 其他元件**(FileItem / DescriptionList / DataTable cell 各自 placeholder 邏輯 unrelated)。
61
+
62
+ **取消「精簡版」變體**:NameCard 只有**一種結構**,consumer 未傳的 section 不另開 minimal variant。世界級對照:Slack / GitHub / LinkedIn hover-profile 皆單一結構,不分「簡版/full 版」。
63
+
64
+ **DS-wide PersonData 預設展示一致 canonical**:任何 PersonData 來源展示 NameCard 時,`description` / `fields` 預設都應提供;`status` / `statusMessage` opt-in(僅 loading transient 或 consumer mock data 才會缺,production data 必有)。
65
+
66
+ Section 之間用 `border-t border-divider` 分隔(見 `separator.spec.md`「元件固定結構 → CSS border-t/b」)。詳細 class / padding token 見 `name-card.tsx`。
67
+
68
+ <!-- 2026-05-18 D2 fix:width SSOT 統一 320(對齊 tsx `w-[320px]`)。本檔之前 L150 殘留「280px」自相矛盾已撤,只保留 L72 320 canonical。 -->
69
+
70
+ **View more 按鈕 padding**:固定 `py-3`(12px),比 Body `py-3` 同位 — 讓 footer 有明顯呼吸空間,不跟 body section 邊界混淆。
71
+
72
+ ## 寬度(元件級常數)
73
+
74
+ NameCard 固定 **320px 寬**(見 `.tsx` 的 `w-[320px]`)——HoverCard 浮層寬度由 NameCard 決定,不隨內容伸縮(避免 hover 時浮層寬度跳動)。
75
+
76
+ 對照世界級:Material Snackbar 固定 344px、Slack message modal 固定寬度——**單一元件的 canonical 寬度屬於該元件自己的 design spec,不抽為跨元件 token**。Token 系統只管共享值(如 `--field-height-*`、`--layout-space-*`);單一元件獨有的結構常數留在 component code + 本 spec。 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
77
+
78
+ ## Action 行(2026-04-20 canonical)
79
+
80
+ Action 區的 layout **永遠等寬均分容器寬度**——multiple actions 每個 Button 取相同 `1fr` 寬、single action 撐滿整個 NameCard width。實作 = `grid grid-flow-col auto-cols-fr gap-2` + `[&>*]:w-full` 強制每個 child fill grid cell。
81
+
82
+ ```
83
+ [ Chat ][ Audio call ▾ ] ← 2 個 action:各 50%
84
+ [ Message ] ← 1 個 action:100%
85
+ [ Follow ][ Message ][ ...] ← 3 個 action:各 33%
86
+ ```
87
+
88
+ **為什麼等寬均分**:
89
+ - NameCard 是**人員關係卡**,action 是 relationship actions(Chat / Audio / Message / Follow)——這類動作視覺權重對等,無主次之分,等寬最直覺
90
+ - Single action 撐滿讓「行動列」永遠占滿 card 底部,視覺節奏一致(不會「單一 button 孤零零縮在左邊」)
91
+ - 世界級對照:iOS Contact card / macOS Contact / LinkedIn profile card / Slack profile modal 的 action row——全部等寬 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
92
+
93
+ **Consumer 跨 story / 跨 consumer 必須用同一組 canonical actions**:
94
+
95
+ NameCard 的 default actions **是 `Chat + Audio call`**(chat app 標配,對齊 name-card.stories.tsx 的 `actionButtons` 常數)。story / principles / consumer code 不要每個範例改成不同 action——同一個元件在不同 demo 下出現 3 種不同 action 組合,讓 consumer 誤以為 action 會隨情境自動變。**例外**:要展示 single-action / 3-action 數量差異時才改,並明示「這是展示 action 數量變化」。
96
+
97
+ ## Profile Header
98
+
99
+ - **Avatar**:透過 Avatar `status` prop 顯示狀態圓點(見 `avatar.spec.md`)
100
+ - **Text column 對齊**:最小高度對齊 avatar 高度——短文字(單行名字)垂直置中於 avatar;長文字(多行名字 + subtitle)自然撐高
101
+ - **字級層級**:Name > Subtitle;name 為 strong weight,subtitle 為 secondary color
102
+
103
+ ## Status 區
104
+
105
+ 非互動狀態標籤以 `bg-muted` 承載(不用 `bg-secondary`——Muted 視覺重量更低,對齊 Badge / Skeleton family)。狀態點顏色走 `--status-*` presence token(2026-04-20):`online` / `away` / `busy` / `offline`——跟 Avatar status 同源、獨立於 success/warning/error(presence 不是 validation state)。訊息必須包在 `<DescriptionList>` 內以 `<DescriptionItem>` 呈現(不可孤立 dt/dd),clamp 兩行避免無限伸展。
106
+
107
+ ## Info Fields
108
+
109
+ 使用 `DescriptionList cols={2}`,適合展示 ID、員工編號等短屬性。
110
+
111
+ ## View More
112
+
113
+ `Button variant="link" size="sm" className="w-full"`——填滿容器寬度的文字按鈕。位於獨立的 bordered section(`border-t border-divider`),`py-2` 較緊湊。
114
+
115
+ 只在傳入 `onViewMore` callback 時顯示。
116
+
117
+ ## 設計決策
118
+
119
+ - **固定寬度而非 min/max**:HoverCard 內容量可預期,固定寬度避免不同人員 card 寬度跳動
120
+ - **Section 用 border-t 分隔**:清晰的資訊分區,每個 section 獨立存在或不存在
121
+ - **Status badge 用 muted 而非 interactive 色**:狀態是展示資訊,不可點擊,不應暗示互動性
122
+
123
+ ---
124
+
125
+ ## 禁止事項
126
+
127
+ - ❌ 不要在 HoverCard 外直接用 NameCard 當 standalone card——它不是獨立 Card primitive,是 HoverCard content 模板,缺少浮層外殼(radius / border / shadow)與定位邏輯。需要 card 佈局時用專屬元件或自組 Surface
128
+ - ❌ 不要硬寫內部 Avatar size——NameCard Profile Header 的 avatar 尺寸由元件內部規格決定,consumer 覆寫會破壞 text column 對齊公式
129
+ - ❌ 不要 override HoverCard `z-index` / `sideOffset` / `collisionPadding`——浮層行為由 `../HoverCard/hover-card.spec.md` + `../../patterns/overlay-surface/overlay-surface.spec.md` 管理,單獨 override 會破壞跨浮層的一致 stacking
130
+ - ❌ 不要把非人員資料塞進 NameCard(例如檔案預覽、物件資訊)——NameCard 是人員專屬模板,語意不可挪用;其他 hover 詳情請自組 HoverCard content
131
+ - ❌ Status section 的狀態點不要自訂色——走 `--status-online/away/busy/offline` presence token canonical,與 Avatar status 同源,改色會跨元件漂移
132
+ - ❌ Action button 不要放動詞性 icon-only(例 Trash2 刪除)——NameCard actions 是關係型快速動作(Message / Invite / Follow),破壞性操作應走 Dialog confirm flow
133
+
134
+ ---
135
+
136
+ ## A11y 預設
137
+
138
+ > 命名對齊 DS canonical(2026-05-18,per `# 命名與語言一致性`)。本節原標題「無障礙」,改「A11y 預設」與其他 spec 一致。
139
+
140
+ - **Trigger 整合**:Avatar 作為 HoverCard trigger 時,`onFocus` / `onBlur` 與 mouseenter/leave 同時觸發由 Radix HoverCard 管理——鍵盤使用者 Tab 到 avatar 可自動顯示 card,Escape 關閉
141
+ - **Focus 順序**:NameCard 內若有 Action button,Tab 順序為 trigger(Avatar)→ 第一個 action → 後續 action → view more;不抓取 focus 進入浮層(保留 Radix `HoverCard` 預設語意,與 Popover 的 focus trap 不同)
142
+ - **Live region 語意**:NameCard 是展示內容,非 announcement,不套 `aria-live`
143
+ - **DL 語意**:Info Fields 使用 DescriptionList(`<dl>/<dt>/<dd>`),screen reader 會讀成「term X, description Y」對話;詳見 `../DescriptionList/description-list.spec.md`「無障礙」段
144
+ - **CTA button aria-label**:icon-only action button 必須帶 `aria-label`(「傳訊息給 {name}」「加入 {name} 為好友」),不只是 icon 視覺
145
+ - **色彩對比**:Status badge `bg-muted` + `text-foreground` / Avatar status 圓點均通過 WCAG AA,不依賴單一色彩載體(搭配文字標籤)
146
+
147
+ ---
148
+
149
+ ## 為何無 Inspector / SizeMatrix
150
+
151
+ - **無 Inspector**:NameCard 的決策維度是「section 組合」(avatar + profile / status / info / viewMore 的開關)——互動 Inspector 切換 toggle 可以做,但 `SectionMatrix` 的 side-by-side 矩陣(最簡 → 中 → full)對 consumer 的判斷更直接(「什麼 section 組合適合什麼 context」)。多維組合用矩陣呈現比單組合互動玩耍有效。
152
+ - **無 SizeMatrix**:NameCard 固定 **320px 寬**(元件級常數,見本 spec「寬度」段),跨 consumer / variant 不變——人員資訊卡的 canonical width 屬於元件自身,不抽為 token。Section 高度由內容撐開,無 size tier。
153
+
154
+ 對應 anatomy story:保留 `Overview` + `SectionMatrix` + `ColorMatrix`(Status 色) + 元件特有 `HoverCardIntegration`(canonical usage pattern) + `StateBehavior`(空值 / 過長文字邊界)。
155
+
156
+ ---
157
+
158
+ ## 相關
159
+
160
+ - `../HoverCard/hover-card.spec.md` — NameCard 的浮層容器(觸發與定位由 HoverCard 負責)
161
+ - `../Avatar/avatar.spec.md` — Profile header 的身份視覺(Avatar 的 `hoverCard` prop 自動整合 NameCard)
162
+ - `../Tooltip/tooltip.spec.md` — 純文字 hover 提示(NameCard 是可互動 hover content)
163
+ - `../DescriptionList/description-list.spec.md` — Info fields 的 label / value 佈局
164
+ - `../Button/button.spec.md` — Action button(Message / Invite 等 CTA)
165
+
166
+ ## 被引用(auto-maintained,Dim 3 reciprocal audit)
167
+
168
+ > 本節由 `scripts/add-reciprocal-pointers.mjs` 自動維護,列出在 SSOT 語境下指向本 spec 的其他 spec。若要手動補充,寫在本節之前。
169
+
170
+ - `people-picker.spec.md`
171
+ - `tag.spec.md`
@@ -0,0 +1,5 @@
1
+ // AUTO-GENERATED by scripts/gen-component-indexes.mjs — DO NOT EDIT MANUALLY.
2
+ // Re-export pattern enables package.json exports map subpath:
3
+ // import { ... } from '@qijenchen/design-system/{components,patterns}/<Dir>'
4
+ // Regenerate: node scripts/gen-component-indexes.mjs
5
+ export * from './notice'
@@ -0,0 +1,149 @@
1
+ ---
2
+ component: Notice
3
+ family: 2
4
+ variants: {}
5
+ sizes: {}
6
+ traits:
7
+ - isInternal
8
+ benchmark:
9
+ - Ant Design Alert: github.com/ant-design/ant-design/tree/master/components/alert
10
+ - Polaris Banner: github.com/Shopify/polaris/tree/main/polaris-react/src/components/Banner
11
+ - Carbon Notification: github.com/carbon-design-system/carbon/tree/main/packages/react/src/components/Notification
12
+ ---
13
+
14
+ <!-- @benchmark-cited: D5 retrofit 2026-05-18 — body claims marked per-claim @benchmark-unverified inline; canonical source URLs in frontmatter benchmark list. -->
15
+
16
+ # Notice 設計原則
17
+
18
+ **Toast / Alert 共用的視覺佈局層**——跟 MenuItem 為 SelectMenu / DropdownMenu 共用是同一個架構概念。Notice 只負責 layout 和 icon 選擇,色彩由消費者透過 `data-theme` 控制。
19
+
20
+ ## 定位
21
+
22
+ Notice 是純視覺 primitive,不是獨立使用的元件。消費者:
23
+ - **Toast**:浮動 + 自動消失(Sonner)
24
+ - **Alert**:inline / fixed 持久通知
25
+
26
+ **Layout Family**:CLAUDE.md 4-Family Model **Family 2(List item layout)** 消費者。結構繼承 `patterns/element-anatomy/item-anatomy.spec.md`「List item layout」章節的 reading-mode 規格。Notice 語意為 notification(非 row collection),但視覺排版遵循 Family 2 確保跨元件視覺一致。
27
+
28
+ **尺寸偏離(documented exception)**:Notice / Alert / Toast **單一固定 size**,**不**實作 Family 2 baseline 的 sm/md/lg。世界級共識(Material Banner/Snackbar、Polaris Banner、Atlassian InlineMessage、GitHub Flash)都是**單一 prominent size**——通知的使命是「搶注意」而非「在密度選擇裡協調」,提供 size 選項反而會讓 consumer 糾結(該用哪個 size?)而稀釋元件的目的性。同理 padding 也不隨 density 變(`px-4 py-3` 固定)——通知是跨 density 一致的訊息載體。 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
29
+
30
+ ## Typography
31
+
32
+ md tier,固定不隨 density 變:
33
+ - title: `text-body`(14px)`leading-compact`(1.3)— 有 description 時加 `font-medium`
34
+ - description: `text-body`(14px)`leading-compact` + `text-fg-secondary`(neutral-8)
35
+
36
+ 相同 body 字級,層級靠 font-weight / color 區分。
37
+
38
+ ## Padding(固定)
39
+
40
+ | 屬性 | 值 | 理由 |
41
+ |---|---|---|
42
+ | px | `px-4`(16px) | 世界級系統共識(Atlassian/GitHub/Material/Linear 都是 16px) | <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
43
+ | py | `py-3`(12px) | 介於 row(7px)和 section(16px)之間,通知的 sweet spot |
44
+ | gap | `gap-2`(8px) | 跟 item-layout icon-text gap 一致 |
45
+
46
+ 不隨 density 變——Toast/Alert 是通知,不是工作區域元件。
47
+
48
+ ## Layout
49
+
50
+ item-layout 4-slot:
51
+ ```
52
+ [status icon?] [title + description?] [endContent?] [dismiss X?]
53
+ ```
54
+
55
+ - Icon: 16px,`h-[1lh]` inline 對齊 first line
56
+ - Dismiss X: `<Button iconOnly dismiss size="xs" />` — chrome corner action group region(Cat 3)。xs 是 **Notification banner family canonical**(Notice / Alert / Toast inherit):ephemeral banner `px-4 py-3` 固定不隨 density,dismiss 邊角小 affordance 輕量不搶眼。詳見 `patterns/overlay-surface/overlay-surface.spec.md`「Chrome dismiss size canonical — 三家族分類」+ `patterns/element-anatomy/item-anatomy.spec.md`「Dismiss canonical — X close only」
57
+ - endContent: 通常放 `<Button variant="tertiary" size="xs">`
58
+
59
+ ## Variant
60
+
61
+ | Variant | Icon | 語意 |
62
+ |---|---|---|
63
+ | neutral | 無 | 一般訊息 |
64
+ | info | Info(ℹ) | 資訊提示 |
65
+ | success | CircleCheck(✓) | 操作成功 |
66
+ | warning | TriangleAlert(⚠) | 警告 |
67
+ | error | XCircle(✕) | 錯誤 |
68
+
69
+ ## Theme 策略
70
+
71
+ Notice **不設** bg 和 text color。消費者在 container 設 `data-theme` + `text-foreground`,Notice 內所有 token 自然適配。
72
+
73
+ 消費者的 data-theme 策略:
74
+
75
+ | 場景 | data-theme | text 結果 |
76
+ |---|---|---|
77
+ | 有色相 solid(info/success/error) | `"dark"` | neutral-9 = 白 |
78
+ | warning solid | `"light"`(永遠) | neutral-9 = 黑 |
79
+ | neutral solid | `{inverse}`(跟頁反) | 跟隨翻轉 |
80
+ | subtle | 不設(跟隨頁面) | 跟隨頁面 |
81
+
82
+ ### 為什麼 data-theme 要搭配 text-foreground
83
+
84
+ CSS `color` 從 body 繼承的是**已解析的計算值**,不是 `var(--foreground)` 表達式。`data-theme` 改變 `--foreground` 的值,但不改 `color` 屬性。在 theme boundary 設 `text-foreground` class 強制 `color: var(--foreground)` 在正確 context 重新解析。
85
+
86
+ ## 何時用 / 何時不用
87
+
88
+ **Notice 是 internal primitive**——不直接使用,透過 `Alert` / `Toast` 等外層通知元件消費。
89
+
90
+ | 場景 | 正確做法 |
91
+ |------|---------|
92
+ | Inline / fixed 持久通知 | 用 `Alert`(內部消費 Notice)|
93
+ | 浮動自動消失的短暫通知 | 用 `Toast`(內部消費 Notice + sonner)|
94
+ | 直接在 JSX 中用 `<Notice>` | ❌ **禁止**——失去 Alert / Toast 外層的生命週期與定位管理 |
95
+
96
+ ### 消費者
97
+
98
+ - `../Alert/alert.spec.md` — inline / fixed 持久通知
99
+ - `../Toast/toast.spec.md` — 浮動非阻斷短暫通知
100
+
101
+ ---
102
+
103
+ ## 為何無 SizeMatrix / ColorMatrix
104
+
105
+ Notice 是 **Toast / Alert 共用的 layout primitive**,刻意不擁有尺寸與色彩變體:
106
+
107
+ - **無 SizeMatrix**:Notice / Alert / Toast **單一固定 size**(見本 spec「尺寸偏離」段),不實作 Family 2 baseline 的 sm/md/lg——通知的使命是「搶注意」而非「在密度選擇裡協調」。padding 固定 `px-4 py-3`,typography 固定 md tier(14px),不隨 density 變。
108
+ - **無 ColorMatrix**:Notice 本身**不設 bg / text color**(見本 spec「Theme 策略」段),色彩完全由 consumer(Alert / Toast)透過 `data-theme` + `text-foreground` 控制。Notice 層級的色彩矩陣沒有意義——視覺對照屬於 consumer 的職責,應查 `alert.anatomy.stories.tsx` 與 `toast.anatomy.stories.tsx` 的 ColorMatrix。
109
+
110
+ 對應 anatomy story:保留 `Overview` / `Inspector` / `StateBehavior`,額外追加元件特有的 `VariantIconMap`(展示 5 種 variant 對應的 status icon + 語意)。
111
+
112
+ ---
113
+
114
+ ## 邊界案例
115
+
116
+ - **Disabled(dismiss button)**:Notice 本身不擁有 disabled state(internal primitive,無互動);內嵌的 `<Button iconOnly dismiss size="xs" />` 自動繼承 Button disabled 視覺(`text-fg-disabled` + `cursor-not-allowed`)。Consumer(Alert / Toast)若需 disable dismiss,應透過 consumer-level prop pass-through。
117
+ - **Loading**:Notice 非 async surface,無 loading state。Body 內若 consumer 注入 CTA Button,該 Button 自行處理 loading。
118
+ - **Empty**:Notice 必有 title 或 description 其一(消費合約);無 title-only icon-less 形態,layout 至少 1 行內容。
119
+ - **Icon-only / variant=neutral**:`neutral` variant 不渲 status icon,layout 自動收斂為 `[title + description?] [endContent?] [dismiss X?]` 三 slot。
120
+
121
+ ---
122
+
123
+ ## 相關
124
+
125
+ - `../Alert/alert.spec.md` — 主要消費者(持久通知)
126
+ - `../Toast/toast.spec.md` — 主要消費者(短暫通知)
127
+ - `../../patterns/element-anatomy/item-anatomy.spec.md` — Notice 的 layout 共用規則
128
+ - `../../tokens/color/color.spec.md` — color tokens 和 variant × theme 策略
129
+ - `../../tokens/color/primitives.css` — primitives nested theme(`:root, [data-theme]` pattern)
130
+
131
+ ## A11y 預設
132
+
133
+ **ARIA / Pattern**:對齊 [W3C ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/) 對應 pattern。
134
+
135
+ **Keyboard 行為**:
136
+
137
+ - Tab — focus dismiss button(若 dismissible)
138
+ - Esc — dismiss(若 dismissible)
139
+
140
+ **Focus**:focus-visible ring 對齊 DS canonical(`outline: 2px solid var(--ring)`);focus management 由元件 own。
141
+
142
+ **驗證**:Storybook a11y addon panel 應 0 critical violation;鍵盤完整可操作(無需滑鼠)。WCAG AA contrast ≥ 4.5:1(text)/ 3:1(UI)。
143
+
144
+ ## 被引用(auto-maintained,Dim 3 reciprocal audit)
145
+
146
+ > 本節由 `scripts/add-reciprocal-pointers.mjs` 自動維護,列出在 SSOT 語境下指向本 spec 的其他 spec。若要手動補充,寫在本節之前。
147
+
148
+ - `bulk-action-bar.spec.md`
149
+ - `coachmark.spec.md`
@@ -0,0 +1,5 @@
1
+ // AUTO-GENERATED by scripts/gen-component-indexes.mjs — DO NOT EDIT MANUALLY.
2
+ // Re-export pattern enables package.json exports map subpath:
3
+ // import { ... } from '@qijenchen/design-system/{components,patterns}/<Dir>'
4
+ // Regenerate: node scripts/gen-component-indexes.mjs
5
+ export * from './number-input'