@qijenchen/design-system 0.1.0-beta.8 → 0.1.0-beta.80

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 (1356) hide show
  1. package/CLAUDE.md +200 -0
  2. package/README.md +10 -9
  3. package/cli-init.mjs +90 -0
  4. package/dist/components/Accordion/accordion.d.ts +1 -1
  5. package/dist/components/Accordion/accordion.d.ts.map +1 -1
  6. package/dist/components/Accordion/accordion.js +4 -1
  7. package/dist/components/Accordion/accordion.js.map +1 -1
  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 +2 -2
  13. package/dist/components/Alert/alert.d.ts.map +1 -1
  14. package/dist/components/Alert/alert.js +8 -7
  15. package/dist/components/Alert/alert.js.map +1 -1
  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 +3 -1
  21. package/dist/components/AppShell/_demo-helpers.d.ts.map +1 -1
  22. package/dist/components/AppShell/app-shell.d.ts +2 -2
  23. package/dist/components/AppShell/app-shell.d.ts.map +1 -1
  24. package/dist/components/AppShell/app-shell.js +9 -8
  25. package/dist/components/AppShell/app-shell.js.map +1 -1
  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 +1 -1
  31. package/dist/components/AspectRatio/aspect-ratio.d.ts.map +1 -1
  32. package/dist/components/AspectRatio/aspect-ratio.js +4 -2
  33. package/dist/components/AspectRatio/aspect-ratio.js.map +1 -1
  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 +12 -6
  39. package/dist/components/Avatar/avatar.d.ts.map +1 -1
  40. package/dist/components/Avatar/avatar.js +12 -23
  41. package/dist/components/Avatar/avatar.js.map +1 -1
  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 +20 -8
  47. package/dist/components/Badge/badge.d.ts.map +1 -1
  48. package/dist/components/Badge/badge.js +7 -5
  49. package/dist/components/Badge/badge.js.map +1 -1
  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 +1 -1
  55. package/dist/components/Breadcrumb/breadcrumb.js.map +1 -1
  56. package/dist/components/Breadcrumb/index.d.ts +2 -0
  57. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  58. package/dist/components/Breadcrumb/index.js +12 -0
  59. package/dist/components/Breadcrumb/index.js.map +1 -0
  60. package/dist/components/BulkActionBar/bulk-action-bar.d.ts +2 -2
  61. package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -1
  62. package/dist/components/BulkActionBar/bulk-action-bar.js +3 -3
  63. package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -1
  64. package/dist/components/BulkActionBar/index.d.ts +2 -0
  65. package/dist/components/BulkActionBar/index.d.ts.map +1 -0
  66. package/dist/components/BulkActionBar/index.js +7 -0
  67. package/dist/components/BulkActionBar/index.js.map +1 -0
  68. package/dist/components/Button/button.d.ts +7 -7
  69. package/dist/components/Button/button.d.ts.map +1 -1
  70. package/dist/components/Button/button.js +13 -10
  71. package/dist/components/Button/button.js.map +1 -1
  72. package/dist/components/Button/index.d.ts +2 -0
  73. package/dist/components/Button/index.d.ts.map +1 -0
  74. package/dist/components/Button/index.js +8 -0
  75. package/dist/components/Button/index.js.map +1 -0
  76. package/dist/components/Calendar/calendar.d.ts +9 -5
  77. package/dist/components/Calendar/calendar.d.ts.map +1 -1
  78. package/dist/components/Calendar/calendar.js +88 -76
  79. package/dist/components/Calendar/calendar.js.map +1 -1
  80. package/dist/components/Calendar/index.d.ts +2 -0
  81. package/dist/components/Calendar/index.d.ts.map +1 -0
  82. package/dist/components/Calendar/index.js +6 -0
  83. package/dist/components/Calendar/index.js.map +1 -0
  84. package/dist/components/Carousel/carousel.d.ts.map +1 -1
  85. package/dist/components/Carousel/carousel.js +11 -6
  86. package/dist/components/Carousel/carousel.js.map +1 -1
  87. package/dist/components/Carousel/index.d.ts +2 -0
  88. package/dist/components/Carousel/index.d.ts.map +1 -0
  89. package/dist/components/Carousel/index.js +11 -0
  90. package/dist/components/Carousel/index.js.map +1 -0
  91. package/dist/components/Chart/chart.d.ts +2 -2
  92. package/dist/components/Chart/chart.d.ts.map +1 -1
  93. package/dist/components/Chart/chart.js +3 -1
  94. package/dist/components/Chart/chart.js.map +1 -1
  95. package/dist/components/Chart/index.d.ts +2 -0
  96. package/dist/components/Chart/index.d.ts.map +1 -0
  97. package/dist/components/Chart/index.js +11 -0
  98. package/dist/components/Chart/index.js.map +1 -0
  99. package/dist/components/Checkbox/checkbox-group.d.ts +2 -1
  100. package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -1
  101. package/dist/components/Checkbox/checkbox-group.js.map +1 -1
  102. package/dist/components/Checkbox/checkbox.d.ts +13 -7
  103. package/dist/components/Checkbox/checkbox.d.ts.map +1 -1
  104. package/dist/components/Checkbox/checkbox.js +49 -15
  105. package/dist/components/Checkbox/checkbox.js.map +1 -1
  106. package/dist/components/Checkbox/index.d.ts +2 -0
  107. package/dist/components/Checkbox/index.d.ts.map +1 -0
  108. package/dist/components/Checkbox/index.js +7 -0
  109. package/dist/components/Checkbox/index.js.map +1 -0
  110. package/dist/components/Chip/chip.d.ts +6 -6
  111. package/dist/components/Chip/chip.js +4 -3
  112. package/dist/components/Chip/chip.js.map +1 -1
  113. package/dist/components/Chip/index.d.ts +2 -0
  114. package/dist/components/Chip/index.d.ts.map +1 -0
  115. package/dist/components/Chip/index.js +8 -0
  116. package/dist/components/Chip/index.js.map +1 -0
  117. package/dist/components/CircularProgress/circular-progress.d.ts +2 -3
  118. package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -1
  119. package/dist/components/CircularProgress/circular-progress.js +4 -3
  120. package/dist/components/CircularProgress/circular-progress.js.map +1 -1
  121. package/dist/components/CircularProgress/index.d.ts +2 -0
  122. package/dist/components/CircularProgress/index.d.ts.map +1 -0
  123. package/dist/components/CircularProgress/index.js +6 -0
  124. package/dist/components/CircularProgress/index.js.map +1 -0
  125. package/dist/components/Coachmark/coachmark-story-helpers.d.ts +22 -0
  126. package/dist/components/Coachmark/coachmark-story-helpers.d.ts.map +1 -0
  127. package/dist/components/Coachmark/coachmark.d.ts +4 -4
  128. package/dist/components/Coachmark/coachmark.d.ts.map +1 -1
  129. package/dist/components/Coachmark/coachmark.js +9 -4
  130. package/dist/components/Coachmark/coachmark.js.map +1 -1
  131. package/dist/components/Coachmark/index.d.ts +2 -0
  132. package/dist/components/Coachmark/index.d.ts.map +1 -0
  133. package/dist/components/Coachmark/index.js +6 -0
  134. package/dist/components/Coachmark/index.js.map +1 -0
  135. package/dist/components/Combobox/combobox.d.ts +16 -7
  136. package/dist/components/Combobox/combobox.d.ts.map +1 -1
  137. package/dist/components/Combobox/combobox.js +74 -39
  138. package/dist/components/Combobox/combobox.js.map +1 -1
  139. package/dist/components/Combobox/index.d.ts +2 -0
  140. package/dist/components/Combobox/index.d.ts.map +1 -0
  141. package/dist/components/Combobox/index.js +6 -0
  142. package/dist/components/Combobox/index.js.map +1 -0
  143. package/dist/components/Command/command.d.ts +5 -1
  144. package/dist/components/Command/command.d.ts.map +1 -1
  145. package/dist/components/Command/command.js +6 -6
  146. package/dist/components/Command/command.js.map +1 -1
  147. package/dist/components/Command/index.d.ts +2 -0
  148. package/dist/components/Command/index.d.ts.map +1 -0
  149. package/dist/components/Command/index.js +14 -0
  150. package/dist/components/Command/index.js.map +1 -0
  151. package/dist/components/DataTable/cell-registry.d.ts.map +1 -1
  152. package/dist/components/DataTable/cell-registry.js +6 -5
  153. package/dist/components/DataTable/cell-registry.js.map +1 -1
  154. package/dist/components/DataTable/data-table.d.ts +29 -8
  155. package/dist/components/DataTable/data-table.d.ts.map +1 -1
  156. package/dist/components/DataTable/data-table.js +69 -39
  157. package/dist/components/DataTable/data-table.js.map +1 -1
  158. package/dist/components/DataTable/filter-operators.d.ts +1 -1
  159. package/dist/components/DataTable/filter-tree.d.ts +1 -1
  160. package/dist/components/DataTable/index.d.ts +2 -0
  161. package/dist/components/DataTable/index.d.ts.map +1 -0
  162. package/dist/components/DataTable/index.js +8 -0
  163. package/dist/components/DataTable/index.js.map +1 -0
  164. package/dist/components/DateGrid/date-grid.d.ts +21 -17
  165. package/dist/components/DateGrid/date-grid.d.ts.map +1 -1
  166. package/dist/components/DateGrid/date-grid.js +2 -2
  167. package/dist/components/DateGrid/date-grid.js.map +1 -1
  168. package/dist/components/DateGrid/index.d.ts +2 -0
  169. package/dist/components/DateGrid/index.d.ts.map +1 -0
  170. package/dist/components/DateGrid/index.js +6 -0
  171. package/dist/components/DateGrid/index.js.map +1 -0
  172. package/dist/components/DatePicker/date-picker.d.ts.map +1 -1
  173. package/dist/components/DatePicker/date-picker.js +29 -18
  174. package/dist/components/DatePicker/date-picker.js.map +1 -1
  175. package/dist/components/DatePicker/index.d.ts +2 -0
  176. package/dist/components/DatePicker/index.d.ts.map +1 -0
  177. package/dist/components/DatePicker/index.js +8 -0
  178. package/dist/components/DatePicker/index.js.map +1 -0
  179. package/dist/components/DescriptionList/description-list.d.ts +3 -3
  180. package/dist/components/DescriptionList/description-list.js +4 -3
  181. package/dist/components/DescriptionList/description-list.js.map +1 -1
  182. package/dist/components/DescriptionList/index.d.ts +2 -0
  183. package/dist/components/DescriptionList/index.d.ts.map +1 -0
  184. package/dist/components/DescriptionList/index.js +7 -0
  185. package/dist/components/DescriptionList/index.js.map +1 -0
  186. package/dist/components/Dialog/dialog.d.ts.map +1 -1
  187. package/dist/components/Dialog/dialog.js.map +1 -1
  188. package/dist/components/Dialog/index.d.ts +2 -0
  189. package/dist/components/Dialog/index.d.ts.map +1 -0
  190. package/dist/components/Dialog/index.js +16 -0
  191. package/dist/components/Dialog/index.js.map +1 -0
  192. package/dist/components/DropdownMenu/dropdown-menu.d.ts +3 -2
  193. package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -1
  194. package/dist/components/DropdownMenu/dropdown-menu.js +3 -4
  195. package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -1
  196. package/dist/components/DropdownMenu/index.d.ts +2 -0
  197. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  198. package/dist/components/DropdownMenu/index.js +21 -0
  199. package/dist/components/DropdownMenu/index.js.map +1 -0
  200. package/dist/components/Empty/empty.d.ts +11 -3
  201. package/dist/components/Empty/empty.d.ts.map +1 -1
  202. package/dist/components/Empty/empty.js +6 -6
  203. package/dist/components/Empty/empty.js.map +1 -1
  204. package/dist/components/Empty/index.d.ts +2 -0
  205. package/dist/components/Empty/index.d.ts.map +1 -0
  206. package/dist/components/Empty/index.js +6 -0
  207. package/dist/components/Empty/index.js.map +1 -0
  208. package/dist/components/Field/field-context.d.ts +49 -0
  209. package/dist/components/Field/field-context.d.ts.map +1 -1
  210. package/dist/components/Field/field-context.js +42 -0
  211. package/dist/components/Field/field-context.js.map +1 -1
  212. package/dist/components/Field/field-types.js.map +1 -1
  213. package/dist/components/Field/field-wrapper.js +5 -5
  214. package/dist/components/Field/field-wrapper.js.map +1 -1
  215. package/dist/components/Field/field.d.ts +4 -2
  216. package/dist/components/Field/field.d.ts.map +1 -1
  217. package/dist/components/Field/field.js +1 -0
  218. package/dist/components/Field/field.js.map +1 -1
  219. package/dist/components/Field/index.d.ts +2 -0
  220. package/dist/components/Field/index.d.ts.map +1 -0
  221. package/dist/components/Field/index.js +12 -0
  222. package/dist/components/Field/index.js.map +1 -0
  223. package/dist/components/Field/use-form-validation.d.ts +88 -0
  224. package/dist/components/Field/use-form-validation.d.ts.map +1 -0
  225. package/dist/components/Field/use-form-validation.js +127 -0
  226. package/dist/components/Field/use-form-validation.js.map +1 -0
  227. package/dist/components/FieldControlGroup/field-control-group.d.ts +5 -5
  228. package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -1
  229. package/dist/components/FieldControlGroup/field-control-group.js +1 -1
  230. package/dist/components/FieldControlGroup/field-control-group.js.map +1 -1
  231. package/dist/components/FieldControlGroup/index.d.ts +2 -0
  232. package/dist/components/FieldControlGroup/index.d.ts.map +1 -0
  233. package/dist/components/FieldControlGroup/index.js +6 -0
  234. package/dist/components/FieldControlGroup/index.js.map +1 -0
  235. package/dist/components/FileItem/file-item.d.ts +12 -2
  236. package/dist/components/FileItem/file-item.d.ts.map +1 -1
  237. package/dist/components/FileItem/file-item.js +20 -6
  238. package/dist/components/FileItem/file-item.js.map +1 -1
  239. package/dist/components/FileItem/index.d.ts +2 -0
  240. package/dist/components/FileItem/index.d.ts.map +1 -0
  241. package/dist/components/FileItem/index.js +6 -0
  242. package/dist/components/FileItem/index.js.map +1 -0
  243. package/dist/components/FileUpload/file-upload.d.ts +32 -13
  244. package/dist/components/FileUpload/file-upload.d.ts.map +1 -1
  245. package/dist/components/FileUpload/file-upload.js +62 -18
  246. package/dist/components/FileUpload/file-upload.js.map +1 -1
  247. package/dist/components/FileUpload/index.d.ts +2 -0
  248. package/dist/components/FileUpload/index.d.ts.map +1 -0
  249. package/dist/components/FileUpload/index.js +6 -0
  250. package/dist/components/FileUpload/index.js.map +1 -0
  251. package/dist/components/FileViewer/file-viewer.d.ts +2 -2
  252. package/dist/components/FileViewer/file-viewer.d.ts.map +1 -1
  253. package/dist/components/FileViewer/file-viewer.js +28 -19
  254. package/dist/components/FileViewer/file-viewer.js.map +1 -1
  255. package/dist/components/FileViewer/index.d.ts +2 -0
  256. package/dist/components/FileViewer/index.d.ts.map +1 -0
  257. package/dist/components/FileViewer/index.js +7 -0
  258. package/dist/components/FileViewer/index.js.map +1 -0
  259. package/dist/components/HoverCard/hover-card.d.ts +7 -3
  260. package/dist/components/HoverCard/hover-card.d.ts.map +1 -1
  261. package/dist/components/HoverCard/hover-card.js +4 -3
  262. package/dist/components/HoverCard/hover-card.js.map +1 -1
  263. package/dist/components/HoverCard/index.d.ts +2 -0
  264. package/dist/components/HoverCard/index.d.ts.map +1 -0
  265. package/dist/components/HoverCard/index.js +8 -0
  266. package/dist/components/HoverCard/index.js.map +1 -0
  267. package/dist/components/Input/index.d.ts +2 -0
  268. package/dist/components/Input/index.d.ts.map +1 -0
  269. package/dist/components/Input/index.js +6 -0
  270. package/dist/components/Input/index.js.map +1 -0
  271. package/dist/components/Input/input.d.ts +5 -2
  272. package/dist/components/Input/input.d.ts.map +1 -1
  273. package/dist/components/Input/input.js +10 -8
  274. package/dist/components/Input/input.js.map +1 -1
  275. package/dist/components/LinkInput/index.d.ts +2 -0
  276. package/dist/components/LinkInput/index.d.ts.map +1 -0
  277. package/dist/components/LinkInput/index.js +6 -0
  278. package/dist/components/LinkInput/index.js.map +1 -0
  279. package/dist/components/LinkInput/link-input.d.ts.map +1 -1
  280. package/dist/components/LinkInput/link-input.js +8 -8
  281. package/dist/components/LinkInput/link-input.js.map +1 -1
  282. package/dist/components/Menu/index.d.ts +2 -0
  283. package/dist/components/Menu/index.d.ts.map +1 -0
  284. package/dist/components/Menu/index.js +9 -0
  285. package/dist/components/Menu/index.js.map +1 -0
  286. package/dist/components/Menu/menu-item.d.ts +6 -2
  287. package/dist/components/Menu/menu-item.d.ts.map +1 -1
  288. package/dist/components/Menu/menu-item.js +2 -1
  289. package/dist/components/Menu/menu-item.js.map +1 -1
  290. package/dist/components/Notice/index.d.ts +2 -0
  291. package/dist/components/Notice/index.d.ts.map +1 -0
  292. package/dist/components/Notice/index.js +8 -0
  293. package/dist/components/Notice/index.js.map +1 -0
  294. package/dist/components/Notice/notice.d.ts +13 -6
  295. package/dist/components/Notice/notice.d.ts.map +1 -1
  296. package/dist/components/Notice/notice.js +16 -6
  297. package/dist/components/Notice/notice.js.map +1 -1
  298. package/dist/components/NumberInput/index.d.ts +2 -0
  299. package/dist/components/NumberInput/index.d.ts.map +1 -0
  300. package/dist/components/NumberInput/index.js +7 -0
  301. package/dist/components/NumberInput/index.js.map +1 -0
  302. package/dist/components/NumberInput/number-input.d.ts.map +1 -1
  303. package/dist/components/NumberInput/number-input.js +8 -7
  304. package/dist/components/NumberInput/number-input.js.map +1 -1
  305. package/dist/components/OverflowIndicator/index.d.ts +2 -0
  306. package/dist/components/OverflowIndicator/index.d.ts.map +1 -0
  307. package/dist/components/OverflowIndicator/index.js +6 -0
  308. package/dist/components/OverflowIndicator/index.js.map +1 -0
  309. package/dist/components/OverflowIndicator/overflow-indicator.d.ts +5 -1
  310. package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -1
  311. package/dist/components/OverflowIndicator/overflow-indicator.js +13 -6
  312. package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -1
  313. package/dist/components/PeoplePicker/index.d.ts +2 -0
  314. package/dist/components/PeoplePicker/index.d.ts.map +1 -0
  315. package/dist/components/PeoplePicker/index.js +9 -0
  316. package/dist/components/PeoplePicker/index.js.map +1 -0
  317. package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -1
  318. package/dist/components/PeoplePicker/people-picker-helpers.js +2 -2
  319. package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -1
  320. package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -1
  321. package/dist/components/PeoplePicker/people-picker.js +21 -17
  322. package/dist/components/PeoplePicker/people-picker.js.map +1 -1
  323. package/dist/components/PeoplePicker/person-display.d.ts +7 -7
  324. package/dist/components/PeoplePicker/person-display.d.ts.map +1 -1
  325. package/dist/components/PeoplePicker/person-display.js +9 -9
  326. package/dist/components/PeoplePicker/person-display.js.map +1 -1
  327. package/dist/components/Popover/index.d.ts +2 -0
  328. package/dist/components/Popover/index.d.ts.map +1 -0
  329. package/dist/components/Popover/index.js +14 -0
  330. package/dist/components/Popover/index.js.map +1 -0
  331. package/dist/components/Popover/popover.d.ts +2 -2
  332. package/dist/components/Popover/popover.d.ts.map +1 -1
  333. package/dist/components/Popover/popover.js +12 -12
  334. package/dist/components/Popover/popover.js.map +1 -1
  335. package/dist/components/ProfileCard/index.d.ts +2 -0
  336. package/dist/components/ProfileCard/index.d.ts.map +1 -0
  337. package/dist/components/ProfileCard/index.js +8 -0
  338. package/dist/components/ProfileCard/index.js.map +1 -0
  339. package/dist/components/{NameCard/name-card.d.ts → ProfileCard/profile-card.d.ts} +26 -20
  340. package/dist/components/ProfileCard/profile-card.d.ts.map +1 -0
  341. package/dist/components/{NameCard/name-card.js → ProfileCard/profile-card.js} +11 -10
  342. package/dist/components/ProfileCard/profile-card.js.map +1 -0
  343. package/dist/components/ProgressBar/index.d.ts +2 -0
  344. package/dist/components/ProgressBar/index.d.ts.map +1 -0
  345. package/dist/components/ProgressBar/index.js +6 -0
  346. package/dist/components/ProgressBar/index.js.map +1 -0
  347. package/dist/components/ProgressBar/progress-bar.d.ts +2 -2
  348. package/dist/components/ProgressBar/progress-bar.js +3 -3
  349. package/dist/components/ProgressBar/progress-bar.js.map +1 -1
  350. package/dist/components/RadioGroup/index.d.ts +2 -0
  351. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  352. package/dist/components/RadioGroup/index.js +8 -0
  353. package/dist/components/RadioGroup/index.js.map +1 -0
  354. package/dist/components/RadioGroup/radio-group.d.ts +15 -9
  355. package/dist/components/RadioGroup/radio-group.d.ts.map +1 -1
  356. package/dist/components/RadioGroup/radio-group.js +71 -33
  357. package/dist/components/RadioGroup/radio-group.js.map +1 -1
  358. package/dist/components/Rating/index.d.ts +2 -0
  359. package/dist/components/Rating/index.d.ts.map +1 -0
  360. package/dist/components/Rating/index.js +6 -0
  361. package/dist/components/Rating/index.js.map +1 -0
  362. package/dist/components/Rating/rating.d.ts +6 -2
  363. package/dist/components/Rating/rating.d.ts.map +1 -1
  364. package/dist/components/Rating/rating.js +10 -7
  365. package/dist/components/Rating/rating.js.map +1 -1
  366. package/dist/components/ScrollArea/index.d.ts +2 -0
  367. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  368. package/dist/components/ScrollArea/index.js +7 -0
  369. package/dist/components/ScrollArea/index.js.map +1 -0
  370. package/dist/components/ScrollArea/scroll-area.d.ts +1 -1
  371. package/dist/components/ScrollArea/scroll-area.js +2 -2
  372. package/dist/components/ScrollArea/scroll-area.js.map +1 -1
  373. package/dist/components/SegmentedControl/index.d.ts +2 -0
  374. package/dist/components/SegmentedControl/index.d.ts.map +1 -0
  375. package/dist/components/SegmentedControl/index.js +9 -0
  376. package/dist/components/SegmentedControl/index.js.map +1 -0
  377. package/dist/components/SegmentedControl/segmented-control.d.ts +2 -2
  378. package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -1
  379. package/dist/components/SegmentedControl/segmented-control.js +8 -10
  380. package/dist/components/SegmentedControl/segmented-control.js.map +1 -1
  381. package/dist/components/Select/index.d.ts +2 -0
  382. package/dist/components/Select/index.d.ts.map +1 -0
  383. package/dist/components/Select/index.js +6 -0
  384. package/dist/components/Select/index.js.map +1 -0
  385. package/dist/components/Select/select.d.ts.map +1 -1
  386. package/dist/components/Select/select.js +30 -18
  387. package/dist/components/Select/select.js.map +1 -1
  388. package/dist/components/SelectMenu/index.d.ts +2 -0
  389. package/dist/components/SelectMenu/index.d.ts.map +1 -0
  390. package/dist/components/SelectMenu/index.js +6 -0
  391. package/dist/components/SelectMenu/index.js.map +1 -0
  392. package/dist/components/SelectMenu/select-menu.d.ts +10 -5
  393. package/dist/components/SelectMenu/select-menu.d.ts.map +1 -1
  394. package/dist/components/SelectMenu/select-menu.js +12 -4
  395. package/dist/components/SelectMenu/select-menu.js.map +1 -1
  396. package/dist/components/SelectionControl/index.d.ts +2 -0
  397. package/dist/components/SelectionControl/index.d.ts.map +1 -0
  398. package/dist/components/SelectionControl/index.js +7 -0
  399. package/dist/components/SelectionControl/index.js.map +1 -0
  400. package/dist/components/SelectionControl/selection-item.d.ts +5 -1
  401. package/dist/components/SelectionControl/selection-item.d.ts.map +1 -1
  402. package/dist/components/SelectionControl/selection-item.js +3 -1
  403. package/dist/components/SelectionControl/selection-item.js.map +1 -1
  404. package/dist/components/Separator/index.d.ts +2 -0
  405. package/dist/components/Separator/index.d.ts.map +1 -0
  406. package/dist/components/Separator/index.js +6 -0
  407. package/dist/components/Separator/index.js.map +1 -0
  408. package/dist/components/Separator/separator.d.ts +2 -2
  409. package/dist/components/Separator/separator.js +4 -3
  410. package/dist/components/Separator/separator.js.map +1 -1
  411. package/dist/components/Sheet/index.d.ts +2 -0
  412. package/dist/components/Sheet/index.d.ts.map +1 -0
  413. package/dist/components/Sheet/index.js +17 -0
  414. package/dist/components/Sheet/index.js.map +1 -0
  415. package/dist/components/Sheet/sheet.d.ts +6 -5
  416. package/dist/components/Sheet/sheet.d.ts.map +1 -1
  417. package/dist/components/Sheet/sheet.js +1 -1
  418. package/dist/components/Sheet/sheet.js.map +1 -1
  419. package/dist/components/Sidebar/index.d.ts +2 -0
  420. package/dist/components/Sidebar/index.d.ts.map +1 -0
  421. package/dist/components/Sidebar/index.js +24 -0
  422. package/dist/components/Sidebar/index.js.map +1 -0
  423. package/dist/components/Sidebar/sidebar.d.ts +2 -2
  424. package/dist/components/Sidebar/sidebar.d.ts.map +1 -1
  425. package/dist/components/Sidebar/sidebar.js +9 -5
  426. package/dist/components/Sidebar/sidebar.js.map +1 -1
  427. package/dist/components/Skeleton/index.d.ts +2 -0
  428. package/dist/components/Skeleton/index.d.ts.map +1 -0
  429. package/dist/components/Skeleton/index.js +6 -0
  430. package/dist/components/Skeleton/index.js.map +1 -0
  431. package/dist/components/Skeleton/skeleton.d.ts +1 -1
  432. package/dist/components/Skeleton/skeleton.js +2 -1
  433. package/dist/components/Skeleton/skeleton.js.map +1 -1
  434. package/dist/components/Slider/index.d.ts +2 -0
  435. package/dist/components/Slider/index.d.ts.map +1 -0
  436. package/dist/components/Slider/index.js +7 -0
  437. package/dist/components/Slider/index.js.map +1 -0
  438. package/dist/components/Slider/slider.d.ts +6 -6
  439. package/dist/components/Slider/slider.d.ts.map +1 -1
  440. package/dist/components/Slider/slider.js +25 -10
  441. package/dist/components/Slider/slider.js.map +1 -1
  442. package/dist/components/Steps/index.d.ts +2 -0
  443. package/dist/components/Steps/index.d.ts.map +1 -0
  444. package/dist/components/Steps/index.js +12 -0
  445. package/dist/components/Steps/index.js.map +1 -0
  446. package/dist/components/Steps/steps.d.ts +2 -2
  447. package/dist/components/Steps/steps.d.ts.map +1 -1
  448. package/dist/components/Steps/steps.js +48 -23
  449. package/dist/components/Steps/steps.js.map +1 -1
  450. package/dist/components/Switch/index.d.ts +2 -0
  451. package/dist/components/Switch/index.d.ts.map +1 -0
  452. package/dist/components/Switch/index.js +7 -0
  453. package/dist/components/Switch/index.js.map +1 -0
  454. package/dist/components/Switch/switch.d.ts +16 -14
  455. package/dist/components/Switch/switch.d.ts.map +1 -1
  456. package/dist/components/Switch/switch.js +46 -17
  457. package/dist/components/Switch/switch.js.map +1 -1
  458. package/dist/components/Tabs/index.d.ts +2 -0
  459. package/dist/components/Tabs/index.d.ts.map +1 -0
  460. package/dist/components/Tabs/index.js +10 -0
  461. package/dist/components/Tabs/index.js.map +1 -0
  462. package/dist/components/Tabs/tabs.d.ts +5 -5
  463. package/dist/components/Tabs/tabs.d.ts.map +1 -1
  464. package/dist/components/Tabs/tabs.js +14 -7
  465. package/dist/components/Tabs/tabs.js.map +1 -1
  466. package/dist/components/Tag/index.d.ts +2 -0
  467. package/dist/components/Tag/index.d.ts.map +1 -0
  468. package/dist/components/Tag/index.js +7 -0
  469. package/dist/components/Tag/index.js.map +1 -0
  470. package/dist/components/Tag/tag.d.ts +37 -23
  471. package/dist/components/Tag/tag.d.ts.map +1 -1
  472. package/dist/components/Tag/tag.js +39 -44
  473. package/dist/components/Tag/tag.js.map +1 -1
  474. package/dist/components/Textarea/index.d.ts +2 -0
  475. package/dist/components/Textarea/index.d.ts.map +1 -0
  476. package/dist/components/Textarea/index.js +7 -0
  477. package/dist/components/Textarea/index.js.map +1 -0
  478. package/dist/components/Textarea/textarea.d.ts +5 -10
  479. package/dist/components/Textarea/textarea.d.ts.map +1 -1
  480. package/dist/components/Textarea/textarea.js +14 -12
  481. package/dist/components/Textarea/textarea.js.map +1 -1
  482. package/dist/components/TimePicker/index.d.ts +2 -0
  483. package/dist/components/TimePicker/index.d.ts.map +1 -0
  484. package/dist/components/TimePicker/index.js +6 -0
  485. package/dist/components/TimePicker/index.js.map +1 -0
  486. package/dist/components/TimePicker/time-columns.d.ts.map +1 -1
  487. package/dist/components/TimePicker/time-columns.js +4 -1
  488. package/dist/components/TimePicker/time-columns.js.map +1 -1
  489. package/dist/components/TimePicker/time-picker.d.ts +2 -1
  490. package/dist/components/TimePicker/time-picker.d.ts.map +1 -1
  491. package/dist/components/TimePicker/time-picker.js +33 -32
  492. package/dist/components/TimePicker/time-picker.js.map +1 -1
  493. package/dist/components/Toast/index.d.ts +2 -0
  494. package/dist/components/Toast/index.d.ts.map +1 -0
  495. package/dist/components/Toast/index.js +7 -0
  496. package/dist/components/Toast/index.js.map +1 -0
  497. package/dist/components/Toast/toast.d.ts +1 -1
  498. package/dist/components/Toast/toast.js +2 -2
  499. package/dist/components/Toast/toast.js.map +1 -1
  500. package/dist/components/Tooltip/index.d.ts +2 -0
  501. package/dist/components/Tooltip/index.d.ts.map +1 -0
  502. package/dist/components/Tooltip/index.js +9 -0
  503. package/dist/components/Tooltip/index.js.map +1 -0
  504. package/dist/components/Tooltip/tooltip.d.ts +1 -1
  505. package/dist/components/Tooltip/tooltip.d.ts.map +1 -1
  506. package/dist/components/Tooltip/tooltip.js +2 -1
  507. package/dist/components/Tooltip/tooltip.js.map +1 -1
  508. package/dist/components/TreeView/index.d.ts +2 -0
  509. package/dist/components/TreeView/index.d.ts.map +1 -0
  510. package/dist/components/TreeView/index.js +8 -0
  511. package/dist/components/TreeView/index.js.map +1 -0
  512. package/dist/components/TreeView/tree-view.d.ts +11 -11
  513. package/dist/components/TreeView/tree-view.d.ts.map +1 -1
  514. package/dist/components/TreeView/tree-view.js +36 -9
  515. package/dist/components/TreeView/tree-view.js.map +1 -1
  516. package/dist/hooks/use-overflow-items.d.ts +10 -6
  517. package/dist/hooks/use-overflow-items.d.ts.map +1 -1
  518. package/dist/hooks/use-overflow-items.js.map +1 -1
  519. package/dist/index.d.ts +57 -67
  520. package/dist/index.d.ts.map +1 -1
  521. package/dist/index.js +29 -59
  522. package/dist/index.js.map +1 -1
  523. package/dist/lib/utils.d.ts.map +1 -1
  524. package/dist/lib/utils.js +3 -1
  525. package/dist/lib/utils.js.map +1 -1
  526. package/dist/node_modules/react-hook-form/dist/index.esm.js +1950 -0
  527. package/dist/node_modules/react-hook-form/dist/index.esm.js.map +1 -0
  528. package/dist/patterns/element-anatomy/index.d.ts +2 -0
  529. package/dist/patterns/element-anatomy/index.d.ts.map +1 -0
  530. package/dist/patterns/element-anatomy/index.js +20 -0
  531. package/dist/patterns/element-anatomy/index.js.map +1 -0
  532. package/dist/patterns/element-anatomy/item-anatomy.d.ts +9 -5
  533. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -1
  534. package/dist/patterns/element-anatomy/item-anatomy.js +1 -1
  535. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -1
  536. package/dist/patterns/header-canonical/chrome-header.d.ts +13 -4
  537. package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -1
  538. package/dist/patterns/header-canonical/chrome-header.js +4 -2
  539. package/dist/patterns/header-canonical/chrome-header.js.map +1 -1
  540. package/dist/patterns/header-canonical/index.d.ts +2 -0
  541. package/dist/patterns/header-canonical/index.d.ts.map +1 -0
  542. package/dist/patterns/header-canonical/index.js +6 -0
  543. package/dist/patterns/header-canonical/index.js.map +1 -0
  544. package/dist/patterns/horizontal-overflow/index.d.ts +2 -0
  545. package/dist/patterns/horizontal-overflow/index.d.ts.map +1 -0
  546. package/dist/patterns/horizontal-overflow/index.js +14 -0
  547. package/dist/patterns/horizontal-overflow/index.js.map +1 -0
  548. package/dist/patterns/overlay-surface/index.d.ts +2 -0
  549. package/dist/patterns/overlay-surface/index.d.ts.map +1 -0
  550. package/dist/patterns/overlay-surface/index.js +8 -0
  551. package/dist/patterns/overlay-surface/index.js.map +1 -0
  552. package/dist/patterns/overlay-surface/overlay-surface.d.ts +11 -2
  553. package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -1
  554. package/dist/patterns/overlay-surface/overlay-surface.js +5 -2
  555. package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -1
  556. package/dist/patterns/resize-handle/index.d.ts +2 -0
  557. package/dist/patterns/resize-handle/index.d.ts.map +1 -0
  558. package/dist/patterns/resize-handle/index.js +5 -0
  559. package/dist/patterns/resize-handle/index.js.map +1 -0
  560. package/dist/story-governance/category-matrix.d.ts +35 -0
  561. package/dist/story-governance/category-matrix.d.ts.map +1 -0
  562. package/dist/tokens/categorical-color.d.ts +60 -0
  563. package/dist/tokens/categorical-color.d.ts.map +1 -0
  564. package/dist/tokens/categorical-color.js +110 -0
  565. package/dist/tokens/categorical-color.js.map +1 -0
  566. package/dist/tokens/motion/motion.d.ts +1 -1
  567. package/dist/tokens/motion/motion.d.ts.map +1 -1
  568. package/dist/tokens/motion/motion.js.map +1 -1
  569. package/dist/tokens/uiSize/icon-size.d.ts +1 -2
  570. package/dist/tokens/uiSize/icon-size.d.ts.map +1 -1
  571. package/ds-canonical/commands/README.md +26 -0
  572. package/ds-canonical/commands/gov-status.md +79 -0
  573. package/ds-canonical/fork/governance.lock +222 -0
  574. package/ds-canonical/fork/hooks/block_prototype_imports.py +111 -0
  575. package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +95 -0
  576. package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +349 -0
  577. package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +132 -0
  578. package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +140 -0
  579. package/ds-canonical/fork/hooks/check_field_family_invariants.sh +250 -0
  580. package/ds-canonical/fork/hooks/check_fork_product_quality.sh +36 -0
  581. package/ds-canonical/fork/hooks/check_item_list_gap.sh +54 -0
  582. package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +96 -0
  583. package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +149 -0
  584. package/ds-canonical/fork/hooks/check_pattern_invariants.sh +196 -0
  585. package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  586. package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +183 -0
  587. package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +79 -0
  588. package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +238 -0
  589. package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +44 -0
  590. package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +54 -0
  591. package/ds-canonical/fork/launchers/settings-hooks.json +58 -0
  592. package/ds-canonical/fork/manifest.json +98 -0
  593. package/ds-canonical/fork/preamble.md +495 -0
  594. package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +183 -0
  595. package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +65 -0
  596. package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +229 -0
  597. package/ds-canonical/fork/skills/delivery-handoff/references/flow-diagram.md +180 -0
  598. package/ds-canonical/fork/skills/delivery-handoff/references/handoff-template.md +177 -0
  599. package/ds-canonical/fork/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  600. package/ds-canonical/fork/skills/performance-audit/SKILL.md +107 -0
  601. package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +232 -0
  602. package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +246 -0
  603. package/ds-canonical/fork/skills/product-ui-audit/references/common-misuses.md +329 -0
  604. package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +159 -0
  605. package/ds-canonical/fork/skills/propose-options/SKILL.md +177 -0
  606. package/ds-canonical/fork/skills/prototype/SKILL.md +244 -0
  607. package/ds-canonical/fork/skills/prototype/references/audit-checks.md +38 -0
  608. package/ds-canonical/fork/skills/prototype/references/benchmark-sources.md +94 -0
  609. package/ds-canonical/fork/skills/prototype/references/checkpoints.md +191 -0
  610. package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +141 -0
  611. package/ds-canonical/fork/skills/prototype/references/ooux-template.md +198 -0
  612. package/ds-canonical/fork/skills/prototype/references/proposal-template.md +229 -0
  613. package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +200 -0
  614. package/ds-canonical/fork/skills/ux-audit/SKILL.md +130 -0
  615. package/ds-canonical/fork/skills/visual-audit/SKILL.md +247 -0
  616. package/ds-canonical/fork/skills/visual-audit/output/.gitkeep +0 -0
  617. package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +101 -0
  618. package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +297 -0
  619. package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  620. package/ds-canonical/hooks/README.md +145 -0
  621. package/ds-canonical/hooks/_log-fire.sh +46 -0
  622. package/ds-canonical/hooks/auto_regen_ds_barrel.sh +58 -0
  623. package/ds-canonical/hooks/block_prototype_imports.py +111 -0
  624. package/ds-canonical/hooks/check_audit_post_report_validator.sh +156 -0
  625. package/ds-canonical/hooks/check_audit_sample_escape.sh +76 -0
  626. package/ds-canonical/hooks/check_benchmark_citation.sh +106 -0
  627. package/ds-canonical/hooks/check_canonical_propagation.sh +189 -0
  628. package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +95 -0
  629. package/ds-canonical/hooks/check_codex_brief_invariants.sh +115 -0
  630. package/ds-canonical/hooks/check_codex_collab_5step.sh +108 -0
  631. package/ds-canonical/hooks/check_consumer_app_invariants.sh +349 -0
  632. package/ds-canonical/hooks/check_datatable_invariants.sh +180 -0
  633. package/ds-canonical/hooks/check_dim_count_drift.sh +72 -0
  634. package/ds-canonical/hooks/check_ds_anchor_preflight.sh +132 -0
  635. package/ds-canonical/hooks/check_escape_marker_abuse.sh +140 -0
  636. package/ds-canonical/hooks/check_field_controls_contracts.sh +137 -0
  637. package/ds-canonical/hooks/check_field_family_invariants.sh +250 -0
  638. package/ds-canonical/hooks/check_file_size_budget.sh +60 -0
  639. package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +71 -0
  640. package/ds-canonical/hooks/check_item_list_gap.sh +54 -0
  641. package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +96 -0
  642. package/ds-canonical/hooks/check_main_branch_workbench.sh +93 -0
  643. package/ds-canonical/hooks/check_naming_and_abstraction.sh +165 -0
  644. package/ds-canonical/hooks/check_opacity_token_usage.sh +149 -0
  645. package/ds-canonical/hooks/check_orphan_ds_css.sh +66 -0
  646. package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +75 -0
  647. package/ds-canonical/hooks/check_pattern_invariants.sh +196 -0
  648. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +56 -0
  649. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +53 -0
  650. package/ds-canonical/hooks/check_plugin_fork_health.sh +137 -0
  651. package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +90 -0
  652. package/ds-canonical/hooks/check_propose_discipline.sh +147 -0
  653. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +70 -0
  654. package/ds-canonical/hooks/check_propose_without_benchmark.sh +63 -0
  655. package/ds-canonical/hooks/check_select_all_canonical.sh +58 -0
  656. package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  657. package/ds-canonical/hooks/check_solo_workflow.sh +317 -0
  658. package/ds-canonical/hooks/check_spec_class_drift.sh +88 -0
  659. package/ds-canonical/hooks/check_story_invariants.sh +748 -0
  660. package/ds-canonical/hooks/check_storybook_addon_packaging.sh +151 -0
  661. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +110 -0
  662. package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +183 -0
  663. package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +79 -0
  664. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +104 -0
  665. package/ds-canonical/hooks/chrome_header_dispatcher.sh +56 -0
  666. package/ds-canonical/hooks/enforce_home_charter.sh +44 -0
  667. package/ds-canonical/hooks/inject_deploy_url_after_push.sh +238 -0
  668. package/ds-canonical/hooks/inject_pending_self_audit.sh +248 -0
  669. package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +100 -0
  670. package/ds-canonical/hooks/lib/_approval_re.sh +33 -0
  671. package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +75 -0
  672. package/ds-canonical/hooks/lib/_code_quality.sh +73 -0
  673. package/ds-canonical/hooks/lib/_cva_default_sync.sh +69 -0
  674. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +49 -0
  675. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +163 -0
  676. package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +87 -0
  677. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +56 -0
  678. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +162 -0
  679. package/ds-canonical/hooks/lib/_person_data_richness.sh +42 -0
  680. package/ds-canonical/hooks/lib/_story_compile_drift.sh +48 -0
  681. package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +70 -0
  682. package/ds-canonical/hooks/lib/_token_hygiene.sh +104 -0
  683. package/ds-canonical/hooks/log_governance_fires.sh +50 -0
  684. package/ds-canonical/hooks/log_skill_invokes.sh +41 -0
  685. package/ds-canonical/hooks/post_edit_dispatcher.sh +62 -0
  686. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_addon_subdir_ship.sh +76 -0
  687. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_app_story_title.sh +81 -0
  688. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_ds_primitive_misuse.sh +120 -0
  689. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_no_ds_catalog.sh +101 -0
  690. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_story_baseline.sh +76 -0
  691. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_data_table_size_num_to_meta_width.sh +68 -0
  692. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_fork_user_plugin_install.sh +79 -0
  693. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_plugin_freshness.sh +68 -0
  694. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_cite_required.sh +88 -0
  695. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +74 -0
  696. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_storybook_addon_preset_cjs.sh +87 -0
  697. package/ds-canonical/hooks/retired/check_anatomy_section_numbering.sh +106 -0
  698. package/ds-canonical/hooks/retired/check_avatar_hovercard.sh +90 -0
  699. package/ds-canonical/hooks/retired/check_button_icon_literal.sh.retired-2026-04-28 +38 -0
  700. package/ds-canonical/hooks/retired/check_container_breathing.sh +142 -0
  701. package/ds-canonical/hooks/retired/check_governance_compliance.sh +61 -0
  702. package/ds-canonical/hooks/retired/check_icon_only_padding_formula.sh +104 -0
  703. package/ds-canonical/hooks/retired/check_item_content_primitive.sh +150 -0
  704. package/ds-canonical/hooks/retired/check_item_list_gap.sh +153 -0
  705. package/ds-canonical/hooks/retired/check_sideoffset_canonical.sh +65 -0
  706. package/ds-canonical/hooks/retired/check_spec_iteration_tag.sh +87 -0
  707. package/ds-canonical/hooks/retired/check_ssot_consultation.sh +88 -0
  708. package/ds-canonical/hooks/retired/check_sync_update.sh +20 -0
  709. package/ds-canonical/hooks/retired/check_third_party_dom_verified.sh +95 -0
  710. package/ds-canonical/hooks/retired/enforce_home_charter.sh +125 -0
  711. package/ds-canonical/hooks/retired/post_edit_canonical_interrogate.sh +109 -0
  712. package/ds-canonical/hooks/retired/pre_edit_spec_check.sh +68 -0
  713. package/ds-canonical/hooks/retired/pre_new_component_spec.sh +39 -0
  714. package/ds-canonical/hooks/retired/pre_write_subsumption_check.sh +112 -0
  715. package/ds-canonical/hooks/retired/stop_meta_self_audit.sh.retired-2026-05-13 +76 -0
  716. package/ds-canonical/hooks/retired/tests/test_check_anatomy_section_numbering.sh +14 -0
  717. package/ds-canonical/hooks/retired/tests/test_check_avatar_hovercard.sh +15 -0
  718. package/ds-canonical/hooks/retired/tests/test_check_container_breathing.sh +15 -0
  719. package/ds-canonical/hooks/retired/tests/test_check_governance_compliance.sh +15 -0
  720. package/ds-canonical/hooks/retired/tests/test_check_icon_only_padding_formula.sh +79 -0
  721. package/ds-canonical/hooks/retired/tests/test_check_item_content_primitive.sh +15 -0
  722. package/ds-canonical/hooks/retired/tests/test_check_item_list_gap.sh +163 -0
  723. package/ds-canonical/hooks/retired/tests/test_check_sideoffset_canonical.sh +15 -0
  724. package/ds-canonical/hooks/retired/tests/test_check_spec_iteration_tag.sh +15 -0
  725. package/ds-canonical/hooks/retired/tests/test_check_ssot_consultation.sh +15 -0
  726. package/ds-canonical/hooks/retired/tests/test_check_sync_update.sh +14 -0
  727. package/ds-canonical/hooks/retired/tests/test_check_third_party_dom_verified.sh +15 -0
  728. package/ds-canonical/hooks/retired/tests/test_enforce_home_charter.sh +15 -0
  729. package/ds-canonical/hooks/retired/tests/test_pre_edit_spec_check.sh +15 -0
  730. package/ds-canonical/hooks/retired/tests/test_pre_new_component_spec.sh +15 -0
  731. package/ds-canonical/hooks/retired/tests/test_pre_write_subsumption_check.sh +63 -0
  732. package/ds-canonical/hooks/session_start_governance_check.sh +310 -0
  733. package/ds-canonical/hooks/stop_passive_logging.sh +322 -0
  734. package/ds-canonical/hooks/stop_self_audit.sh +516 -0
  735. package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +15 -0
  736. package/ds-canonical/hooks/tests/run-all.sh +76 -0
  737. package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +180 -0
  738. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +143 -0
  739. package/ds-canonical/hooks/tests/test_check_addon_subdir_ship.sh +171 -0
  740. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +196 -0
  741. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +127 -0
  742. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +93 -0
  743. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +115 -0
  744. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +133 -0
  745. package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +198 -0
  746. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +146 -0
  747. package/ds-canonical/hooks/tests/test_check_code_quality.sh +15 -0
  748. package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +208 -0
  749. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +96 -0
  750. package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +12 -0
  751. package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +164 -0
  752. package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +240 -0
  753. package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +214 -0
  754. package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +202 -0
  755. package/ds-canonical/hooks/tests/test_check_cva_default_sync.sh +15 -0
  756. package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +53 -0
  757. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +122 -0
  758. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +98 -0
  759. package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +104 -0
  760. package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +192 -0
  761. package/ds-canonical/hooks/tests/test_check_field_controls_contracts.sh +126 -0
  762. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +203 -0
  763. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +32 -0
  764. package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +46 -0
  765. package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +190 -0
  766. package/ds-canonical/hooks/tests/test_check_hardcoded_strings.sh +14 -0
  767. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +110 -0
  768. package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +44 -0
  769. package/ds-canonical/hooks/tests/test_check_layout_space_canonical.sh +73 -0
  770. package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +206 -0
  771. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +147 -0
  772. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +136 -0
  773. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +110 -0
  774. package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +212 -0
  775. package/ds-canonical/hooks/tests/test_check_overlay_handcraft.sh +126 -0
  776. package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +191 -0
  777. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +148 -0
  778. package/ds-canonical/hooks/tests/test_check_peoplepicker_ssot_drift.sh +108 -0
  779. package/ds-canonical/hooks/tests/test_check_person_data_richness.sh +58 -0
  780. package/ds-canonical/hooks/tests/test_check_pixel_quantified_audit.sh +142 -0
  781. package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +9 -0
  782. package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +181 -0
  783. package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +10 -0
  784. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +127 -0
  785. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +117 -0
  786. package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +55 -0
  787. package/ds-canonical/hooks/tests/test_check_select_all_canonical.sh +125 -0
  788. package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +224 -0
  789. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +201 -0
  790. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +135 -0
  791. package/ds-canonical/hooks/tests/test_check_story_anatomy.sh.broken +197 -0
  792. package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +187 -0
  793. package/ds-canonical/hooks/tests/test_check_story_compile_drift.sh +15 -0
  794. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +384 -0
  795. package/ds-canonical/hooks/tests/test_check_story_name_jargon.sh.broken +53 -0
  796. package/ds-canonical/hooks/tests/test_check_story_slot_split.sh +156 -0
  797. package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +10 -0
  798. package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +200 -0
  799. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +176 -0
  800. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +141 -0
  801. package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +182 -0
  802. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +21 -0
  803. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +169 -0
  804. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +77 -0
  805. package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +193 -0
  806. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +125 -0
  807. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +10 -0
  808. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +7 -0
  809. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +108 -0
  810. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +154 -0
  811. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +95 -0
  812. package/ds-canonical/hooks/tests/test_stop_governance_drift_check.sh.broken +125 -0
  813. package/ds-canonical/hooks/tests/test_stop_harvest_corrections.sh +10 -0
  814. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +100 -0
  815. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +98 -0
  816. package/ds-canonical/hooks/tests/test_stop_tsc_sanity.sh +10 -0
  817. package/ds-canonical/references/README.md +46 -0
  818. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +74 -0
  819. package/ds-canonical/references/build-ui-canonicals.md +72 -0
  820. package/ds-canonical/references/composition-fidelity.md +47 -0
  821. package/ds-canonical/references/cva-patterns.md +41 -0
  822. package/ds-canonical/references/drag-canonical.md +331 -0
  823. package/ds-canonical/references/item-anatomy-recipe.md +225 -0
  824. package/ds-canonical/references/naming-conventions.md +57 -0
  825. package/ds-canonical/references/principle-dim-map.json +513 -0
  826. package/ds-canonical/references/props-naming.md +59 -0
  827. package/ds-canonical/references/scenario-definition.md +146 -0
  828. package/ds-canonical/references/spec-rules.md +58 -0
  829. package/ds-canonical/references/ssot-consultation.md +63 -0
  830. package/ds-canonical/references/ssot-index.md +40 -0
  831. package/ds-canonical/references/story-baseline-registry.json +107 -0
  832. package/ds-canonical/references/structural-token-retention.md +42 -0
  833. package/ds-canonical/references/tailwind-gotchas.md +87 -0
  834. package/ds-canonical/references/ui-dev-rules.md +81 -0
  835. package/ds-canonical/rules/README.md +34 -0
  836. package/ds-canonical/rules/meta-patterns.md +87 -0
  837. package/ds-canonical/rules/self-verify.md +56 -0
  838. package/ds-canonical/rules/spec-rules.md +25 -0
  839. package/ds-canonical/rules/story-rules.md +67 -0
  840. package/ds-canonical/rules/ui-development.md +92 -0
  841. package/ds-canonical/skills/README.md +88 -0
  842. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +181 -0
  843. package/ds-canonical/skills/code-quality-audit/SKILL.md +63 -0
  844. package/ds-canonical/skills/codex-collab/SKILL.md +249 -0
  845. package/ds-canonical/skills/codex-collab/references/brief-template.md +48 -0
  846. package/ds-canonical/skills/codex-collab/references/transport.md +58 -0
  847. package/ds-canonical/skills/codify-corrections/SKILL.md +184 -0
  848. package/ds-canonical/skills/codify-principle/SKILL.md +151 -0
  849. package/ds-canonical/skills/component-quality-gate/SKILL.md +102 -0
  850. package/ds-canonical/skills/component-quality-gate/references/checklist.md +79 -0
  851. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +254 -0
  852. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +123 -0
  853. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +186 -0
  854. package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +30 -0
  855. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +69 -0
  856. package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +33 -0
  857. package/ds-canonical/skills/delivery-handoff/SKILL.md +229 -0
  858. package/ds-canonical/skills/delivery-handoff/references/flow-diagram.md +180 -0
  859. package/ds-canonical/skills/delivery-handoff/references/handoff-template.md +177 -0
  860. package/ds-canonical/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  861. package/ds-canonical/skills/design-system-audit/SKILL.md +386 -0
  862. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +1325 -0
  863. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +240 -0
  864. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +240 -0
  865. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +378 -0
  866. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +175 -0
  867. package/ds-canonical/skills/ensure-canonical/SKILL.md +196 -0
  868. package/ds-canonical/skills/governance-health/SKILL.md +147 -0
  869. package/ds-canonical/skills/knowledge-prune/SKILL.md +250 -0
  870. package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +11 -0
  871. package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +55 -0
  872. package/ds-canonical/skills/knowledge-prune/references/world-class-prune-alignment.md +7 -0
  873. package/ds-canonical/skills/new-component/SKILL.md +170 -0
  874. package/ds-canonical/skills/new-component/references/new-component-checklist.md +85 -0
  875. package/ds-canonical/skills/performance-audit/SKILL.md +107 -0
  876. package/ds-canonical/skills/product-ui-audit/SKILL.md +230 -0
  877. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +246 -0
  878. package/ds-canonical/skills/product-ui-audit/references/common-misuses.md +329 -0
  879. package/ds-canonical/skills/product-ui-audit/references/report-template.md +159 -0
  880. package/ds-canonical/skills/propose-options/SKILL.md +177 -0
  881. package/ds-canonical/skills/prototype/SKILL.md +244 -0
  882. package/ds-canonical/skills/prototype/references/audit-checks.md +37 -0
  883. package/ds-canonical/skills/prototype/references/benchmark-sources.md +94 -0
  884. package/ds-canonical/skills/prototype/references/checkpoints.md +191 -0
  885. package/ds-canonical/skills/prototype/references/evaluation-matrix.md +141 -0
  886. package/ds-canonical/skills/prototype/references/ooux-template.md +198 -0
  887. package/ds-canonical/skills/prototype/references/proposal-template.md +229 -0
  888. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +198 -0
  889. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +159 -0
  890. package/ds-canonical/skills/story-writing/SKILL.md +122 -0
  891. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +217 -0
  892. package/ds-canonical/skills/story-writing/references/category-templates.md +174 -0
  893. package/ds-canonical/skills/story-writing/references/example-selection.md +70 -0
  894. package/ds-canonical/skills/story-writing/references/self-check.md +20 -0
  895. package/ds-canonical/skills/ux-audit/SKILL.md +130 -0
  896. package/ds-canonical/skills/visual-audit/SKILL.md +245 -0
  897. package/ds-canonical/skills/visual-audit/output/.gitkeep +0 -0
  898. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +100 -0
  899. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +297 -0
  900. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  901. package/ds-canonical/templates/_README.md +23 -0
  902. package/ds-canonical/templates/dashboard-app.tsx +161 -0
  903. package/ds-story-manifest.json +1684 -0
  904. package/llms-full.txt +414 -0
  905. package/llms.txt +70 -0
  906. package/package.json +31 -8
  907. package/src/components/Accordion/accordion.anatomy.stories.tsx +496 -0
  908. package/src/components/Accordion/accordion.principles.stories.tsx +360 -0
  909. package/src/components/Accordion/accordion.spec.md +131 -0
  910. package/src/components/Accordion/accordion.stories.tsx +190 -0
  911. package/src/components/Accordion/accordion.tsx +4 -1
  912. package/src/components/Accordion/index.ts +5 -0
  913. package/src/components/Alert/alert.anatomy.stories.tsx +238 -0
  914. package/src/components/Alert/alert.principles.stories.tsx +220 -0
  915. package/src/components/Alert/alert.spec.md +202 -0
  916. package/src/components/Alert/alert.stories.tsx +139 -0
  917. package/src/components/Alert/alert.tsx +9 -6
  918. package/src/components/Alert/index.ts +5 -0
  919. package/src/components/AppShell/_demo-helpers.tsx +87 -11
  920. package/src/components/AppShell/app-shell.anatomy.stories.tsx +176 -0
  921. package/src/components/AppShell/app-shell.principles.stories.tsx +140 -0
  922. package/src/components/AppShell/app-shell.spec.md +357 -0
  923. package/src/components/AppShell/app-shell.stories.tsx +442 -0
  924. package/src/components/AppShell/app-shell.tsx +15 -9
  925. package/src/components/AppShell/index.ts +5 -0
  926. package/src/components/AspectRatio/aspect-ratio.anatomy.stories.tsx +208 -0
  927. package/src/components/AspectRatio/aspect-ratio.principles.stories.tsx +303 -0
  928. package/src/components/AspectRatio/aspect-ratio.spec.md +148 -0
  929. package/src/components/AspectRatio/aspect-ratio.stories.tsx +170 -0
  930. package/src/components/AspectRatio/aspect-ratio.tsx +4 -2
  931. package/src/components/AspectRatio/index.ts +5 -0
  932. package/src/components/Avatar/avatar.anatomy.stories.tsx +701 -0
  933. package/src/components/Avatar/avatar.principles.stories.tsx +245 -0
  934. package/src/components/Avatar/avatar.spec.md +312 -0
  935. package/src/components/Avatar/avatar.stories.tsx +135 -0
  936. package/src/components/Avatar/avatar.tsx +45 -46
  937. package/src/components/Avatar/index.ts +5 -0
  938. package/src/components/Badge/badge.anatomy.stories.tsx +591 -0
  939. package/src/components/Badge/badge.principles.stories.tsx +391 -0
  940. package/src/components/Badge/badge.spec.md +398 -0
  941. package/src/components/Badge/badge.stories.tsx +80 -0
  942. package/src/components/Badge/badge.tsx +34 -13
  943. package/src/components/Badge/index.ts +5 -0
  944. package/src/components/Breadcrumb/breadcrumb.anatomy.stories.tsx +458 -0
  945. package/src/components/Breadcrumb/breadcrumb.principles.stories.tsx +343 -0
  946. package/src/components/Breadcrumb/breadcrumb.spec.md +268 -0
  947. package/src/components/Breadcrumb/breadcrumb.stories.tsx +307 -0
  948. package/src/components/Breadcrumb/breadcrumb.tsx +2 -2
  949. package/src/components/Breadcrumb/index.ts +5 -0
  950. package/src/components/BulkActionBar/bulk-action-bar.anatomy.stories.tsx +224 -0
  951. package/src/components/BulkActionBar/bulk-action-bar.principles.stories.tsx +242 -0
  952. package/src/components/BulkActionBar/bulk-action-bar.spec.md +226 -0
  953. package/src/components/BulkActionBar/bulk-action-bar.stories.tsx +136 -0
  954. package/src/components/BulkActionBar/bulk-action-bar.tsx +13 -11
  955. package/src/components/BulkActionBar/index.ts +5 -0
  956. package/src/components/Button/button.anatomy.stories.tsx +710 -0
  957. package/src/components/Button/button.principles.stories.tsx +370 -0
  958. package/src/components/Button/button.spec.md +463 -0
  959. package/src/components/Button/button.stories.tsx +362 -0
  960. package/src/components/Button/button.tsx +25 -28
  961. package/src/components/Button/index.ts +5 -0
  962. package/src/components/Calendar/calendar.anatomy.stories.tsx +218 -0
  963. package/src/components/Calendar/calendar.principles.stories.tsx +143 -0
  964. package/src/components/Calendar/calendar.spec.md +264 -0
  965. package/src/components/Calendar/calendar.stories.tsx +88 -0
  966. package/src/components/Calendar/calendar.tsx +54 -40
  967. package/src/components/Calendar/index.ts +5 -0
  968. package/src/components/Carousel/carousel.anatomy.stories.tsx +516 -0
  969. package/src/components/Carousel/carousel.principles.stories.tsx +330 -0
  970. package/src/components/Carousel/carousel.spec.md +273 -0
  971. package/src/components/Carousel/carousel.stories.tsx +121 -0
  972. package/src/components/Carousel/carousel.tsx +26 -7
  973. package/src/components/Carousel/index.ts +5 -0
  974. package/src/components/Chart/chart.anatomy.stories.tsx +307 -0
  975. package/src/components/Chart/chart.principles.stories.tsx +436 -0
  976. package/src/components/Chart/chart.spec.md +174 -0
  977. package/src/components/Chart/chart.stories.tsx +268 -0
  978. package/src/components/Chart/chart.tsx +5 -2
  979. package/src/components/Chart/index.ts +5 -0
  980. package/src/components/Checkbox/checkbox-group.tsx +2 -1
  981. package/src/components/Checkbox/checkbox.anatomy.stories.tsx +626 -0
  982. package/src/components/Checkbox/checkbox.principles.stories.tsx +216 -0
  983. package/src/components/Checkbox/checkbox.spec.md +372 -0
  984. package/src/components/Checkbox/checkbox.stories.tsx +114 -0
  985. package/src/components/Checkbox/checkbox.tsx +80 -22
  986. package/src/components/Checkbox/index.ts +5 -0
  987. package/src/components/Chip/chip.anatomy.stories.tsx +422 -0
  988. package/src/components/Chip/chip.principles.stories.tsx +228 -0
  989. package/src/components/Chip/chip.spec.md +237 -0
  990. package/src/components/Chip/chip.stories.tsx +88 -0
  991. package/src/components/Chip/chip.tsx +6 -6
  992. package/src/components/Chip/index.ts +5 -0
  993. package/src/components/CircularProgress/circular-progress.anatomy.stories.tsx +176 -0
  994. package/src/components/CircularProgress/circular-progress.principles.stories.tsx +258 -0
  995. package/src/components/CircularProgress/circular-progress.spec.md +267 -0
  996. package/src/components/CircularProgress/circular-progress.stories.tsx +153 -0
  997. package/src/components/CircularProgress/circular-progress.tsx +4 -5
  998. package/src/components/CircularProgress/index.ts +5 -0
  999. package/src/components/Coachmark/coachmark-story-helpers.tsx +39 -0
  1000. package/src/components/Coachmark/coachmark.anatomy.stories.tsx +356 -0
  1001. package/src/components/Coachmark/coachmark.principles.stories.tsx +355 -0
  1002. package/src/components/Coachmark/coachmark.spec.md +238 -0
  1003. package/src/components/Coachmark/coachmark.stories.tsx +214 -0
  1004. package/src/components/Coachmark/coachmark.tsx +16 -7
  1005. package/src/components/Coachmark/index.ts +5 -0
  1006. package/src/components/Combobox/combobox.anatomy.stories.tsx +919 -0
  1007. package/src/components/Combobox/combobox.principles.stories.tsx +239 -0
  1008. package/src/components/Combobox/combobox.spec.md +202 -0
  1009. package/src/components/Combobox/combobox.stories.tsx +184 -0
  1010. package/src/components/Combobox/combobox.tsx +86 -39
  1011. package/src/components/Combobox/index.ts +5 -0
  1012. package/src/components/Command/command.anatomy.stories.tsx +107 -0
  1013. package/src/components/Command/command.principles.stories.tsx +88 -0
  1014. package/src/components/Command/command.spec.md +181 -0
  1015. package/src/components/Command/command.stories.tsx +280 -0
  1016. package/src/components/Command/command.tsx +13 -8
  1017. package/src/components/Command/index.ts +5 -0
  1018. package/src/components/DataTable/cell-registry.tsx +19 -6
  1019. package/src/components/DataTable/data-table-filter-panel.tsx +8 -8
  1020. package/src/components/DataTable/data-table-sort-manager.tsx +4 -4
  1021. package/src/components/DataTable/data-table.anatomy.stories.tsx +519 -0
  1022. package/src/components/DataTable/data-table.css +1 -1
  1023. package/src/components/DataTable/data-table.principles.stories.tsx +265 -0
  1024. package/src/components/DataTable/data-table.spec.md +540 -0
  1025. package/src/components/DataTable/data-table.stories.tsx +1941 -0
  1026. package/src/components/DataTable/data-table.tsx +121 -53
  1027. package/src/components/DataTable/filter-operators.spec.md +267 -0
  1028. package/src/components/DataTable/filter-operators.ts +1 -1
  1029. package/src/components/DataTable/filter-tree.ts +2 -2
  1030. package/src/components/DataTable/index.ts +5 -0
  1031. package/src/components/DateGrid/date-grid.anatomy.stories.tsx +583 -0
  1032. package/src/components/DateGrid/date-grid.principles.stories.tsx +338 -0
  1033. package/src/components/DateGrid/date-grid.spec.md +218 -0
  1034. package/src/components/DateGrid/date-grid.stories.tsx +195 -0
  1035. package/src/components/DateGrid/date-grid.tsx +22 -18
  1036. package/src/components/DateGrid/index.ts +5 -0
  1037. package/src/components/DatePicker/date-picker.anatomy.stories.tsx +952 -0
  1038. package/src/components/DatePicker/date-picker.principles.stories.tsx +205 -0
  1039. package/src/components/DatePicker/date-picker.spec.md +337 -0
  1040. package/src/components/DatePicker/date-picker.stories.tsx +323 -0
  1041. package/src/components/DatePicker/date-picker.tsx +46 -22
  1042. package/src/components/DatePicker/index.ts +5 -0
  1043. package/src/components/DescriptionList/description-list.anatomy.stories.tsx +252 -0
  1044. package/src/components/DescriptionList/description-list.principles.stories.tsx +309 -0
  1045. package/src/components/DescriptionList/description-list.spec.md +220 -0
  1046. package/src/components/DescriptionList/description-list.stories.tsx +112 -0
  1047. package/src/components/DescriptionList/description-list.tsx +3 -3
  1048. package/src/components/DescriptionList/index.ts +5 -0
  1049. package/src/components/Dialog/dialog.anatomy.stories.tsx +484 -0
  1050. package/src/components/Dialog/dialog.principles.stories.tsx +313 -0
  1051. package/src/components/Dialog/dialog.spec.md +216 -0
  1052. package/src/components/Dialog/dialog.stories.tsx +483 -0
  1053. package/src/components/Dialog/dialog.tsx +9 -9
  1054. package/src/components/Dialog/index.ts +5 -0
  1055. package/src/components/DropdownMenu/dropdown-menu.anatomy.stories.tsx +969 -0
  1056. package/src/components/DropdownMenu/dropdown-menu.principles.stories.tsx +339 -0
  1057. package/src/components/DropdownMenu/dropdown-menu.spec.md +260 -0
  1058. package/src/components/DropdownMenu/dropdown-menu.stories.tsx +286 -0
  1059. package/src/components/DropdownMenu/dropdown-menu.tsx +29 -7
  1060. package/src/components/DropdownMenu/index.ts +5 -0
  1061. package/src/components/Empty/empty.anatomy.stories.tsx +275 -0
  1062. package/src/components/Empty/empty.principles.stories.tsx +314 -0
  1063. package/src/components/Empty/empty.spec.md +216 -0
  1064. package/src/components/Empty/empty.stories.tsx +80 -0
  1065. package/src/components/Empty/empty.tsx +16 -7
  1066. package/src/components/Empty/index.ts +5 -0
  1067. package/src/components/Field/field-context.ts +98 -0
  1068. package/src/components/Field/field-controls.spec.md +382 -0
  1069. package/src/components/Field/field-types.ts +1 -1
  1070. package/src/components/Field/field-wrapper.tsx +6 -6
  1071. package/src/components/Field/field.anatomy.stories.tsx +544 -0
  1072. package/src/components/Field/field.principles.stories.tsx +278 -0
  1073. package/src/components/Field/field.spec.md +460 -0
  1074. package/src/components/Field/field.stories.tsx +716 -0
  1075. package/src/components/Field/field.tsx +12 -5
  1076. package/src/components/Field/form-validation.spec.md +172 -0
  1077. package/src/components/Field/index.ts +5 -0
  1078. package/src/components/Field/use-form-validation.ts +242 -0
  1079. package/src/components/FieldControlGroup/field-control-group.anatomy.stories.tsx +118 -0
  1080. package/src/components/FieldControlGroup/field-control-group.principles.stories.tsx +121 -0
  1081. package/src/components/FieldControlGroup/field-control-group.spec.md +195 -0
  1082. package/src/components/FieldControlGroup/field-control-group.stories.tsx +161 -0
  1083. package/src/components/FieldControlGroup/field-control-group.tsx +9 -8
  1084. package/src/components/FieldControlGroup/index.ts +5 -0
  1085. package/src/components/FileItem/file-item.anatomy.stories.tsx +344 -0
  1086. package/src/components/FileItem/file-item.principles.stories.tsx +276 -0
  1087. package/src/components/FileItem/file-item.spec.md +491 -0
  1088. package/src/components/FileItem/file-item.stories.tsx +265 -0
  1089. package/src/components/FileItem/file-item.tsx +37 -13
  1090. package/src/components/FileItem/index.ts +5 -0
  1091. package/src/components/FileUpload/file-upload.anatomy.stories.tsx +446 -0
  1092. package/src/components/FileUpload/file-upload.principles.stories.tsx +312 -0
  1093. package/src/components/FileUpload/file-upload.spec.md +163 -0
  1094. package/src/components/FileUpload/file-upload.stories.tsx +167 -0
  1095. package/src/components/FileUpload/file-upload.tsx +78 -27
  1096. package/src/components/FileUpload/index.ts +5 -0
  1097. package/src/components/FileViewer/file-viewer.anatomy.stories.tsx +1127 -0
  1098. package/src/components/FileViewer/file-viewer.principles.stories.tsx +636 -0
  1099. package/src/components/FileViewer/file-viewer.spec.md +368 -0
  1100. package/src/components/FileViewer/file-viewer.stories.tsx +407 -0
  1101. package/src/components/FileViewer/file-viewer.tsx +58 -28
  1102. package/src/components/FileViewer/index.ts +5 -0
  1103. package/src/components/HoverCard/hover-card.anatomy.stories.tsx +145 -0
  1104. package/src/components/HoverCard/hover-card.principles.stories.tsx +222 -0
  1105. package/src/components/HoverCard/hover-card.spec.md +167 -0
  1106. package/src/components/HoverCard/hover-card.stories.tsx +304 -0
  1107. package/src/components/HoverCard/hover-card.tsx +15 -4
  1108. package/src/components/HoverCard/index.ts +5 -0
  1109. package/src/components/Input/index.ts +5 -0
  1110. package/src/components/Input/input.anatomy.stories.tsx +763 -0
  1111. package/src/components/Input/input.principles.stories.tsx +265 -0
  1112. package/src/components/Input/input.spec.md +207 -0
  1113. package/src/components/Input/input.stories.tsx +133 -0
  1114. package/src/components/Input/input.tsx +17 -14
  1115. package/src/components/LinkInput/index.ts +5 -0
  1116. package/src/components/LinkInput/link-input.anatomy.stories.tsx +746 -0
  1117. package/src/components/LinkInput/link-input.principles.stories.tsx +182 -0
  1118. package/src/components/LinkInput/link-input.spec.md +144 -0
  1119. package/src/components/LinkInput/link-input.stories.tsx +132 -0
  1120. package/src/components/LinkInput/link-input.tsx +9 -8
  1121. package/src/components/Menu/index.ts +5 -0
  1122. package/src/components/Menu/menu-item.anatomy.stories.tsx +780 -0
  1123. package/src/components/Menu/menu-item.principles.stories.tsx +81 -0
  1124. package/src/components/Menu/menu-item.spec.md +304 -0
  1125. package/src/components/Menu/menu-item.stories.tsx +214 -0
  1126. package/src/components/Menu/menu-item.tsx +8 -3
  1127. package/src/components/Notice/index.ts +5 -0
  1128. package/src/components/Notice/notice.anatomy.stories.tsx +610 -0
  1129. package/src/components/Notice/notice.principles.stories.tsx +102 -0
  1130. package/src/components/Notice/notice.spec.md +158 -0
  1131. package/src/components/Notice/notice.stories.tsx +257 -0
  1132. package/src/components/Notice/notice.tsx +26 -10
  1133. package/src/components/NumberInput/index.ts +5 -0
  1134. package/src/components/NumberInput/number-input.anatomy.stories.tsx +787 -0
  1135. package/src/components/NumberInput/number-input.principles.stories.tsx +199 -0
  1136. package/src/components/NumberInput/number-input.spec.md +144 -0
  1137. package/src/components/NumberInput/number-input.stories.tsx +142 -0
  1138. package/src/components/NumberInput/number-input.tsx +9 -10
  1139. package/src/components/OverflowIndicator/index.ts +5 -0
  1140. package/src/components/OverflowIndicator/overflow-indicator.anatomy.stories.tsx +549 -0
  1141. package/src/components/OverflowIndicator/overflow-indicator.principles.stories.tsx +77 -0
  1142. package/src/components/OverflowIndicator/overflow-indicator.spec.md +127 -0
  1143. package/src/components/OverflowIndicator/overflow-indicator.stories.tsx +238 -0
  1144. package/src/components/OverflowIndicator/overflow-indicator.tsx +19 -6
  1145. package/src/components/PeoplePicker/index.ts +5 -0
  1146. package/src/components/PeoplePicker/people-picker-helpers.ts +5 -5
  1147. package/src/components/PeoplePicker/people-picker.anatomy.stories.tsx +427 -0
  1148. package/src/components/PeoplePicker/people-picker.principles.stories.tsx +192 -0
  1149. package/src/components/PeoplePicker/people-picker.spec.md +292 -0
  1150. package/src/components/PeoplePicker/people-picker.stories.tsx +162 -0
  1151. package/src/components/PeoplePicker/people-picker.tsx +31 -22
  1152. package/src/components/PeoplePicker/person-display.tsx +30 -29
  1153. package/src/components/Popover/index.ts +5 -0
  1154. package/src/components/Popover/popover.anatomy.stories.tsx +279 -0
  1155. package/src/components/Popover/popover.principles.stories.tsx +295 -0
  1156. package/src/components/Popover/popover.spec.md +209 -0
  1157. package/src/components/Popover/popover.stories.tsx +116 -0
  1158. package/src/components/Popover/popover.tsx +17 -14
  1159. package/src/components/ProfileCard/index.ts +5 -0
  1160. package/src/components/ProfileCard/profile-card.anatomy.stories.tsx +504 -0
  1161. package/src/components/ProfileCard/profile-card.principles.stories.tsx +225 -0
  1162. package/src/components/ProfileCard/profile-card.spec.md +191 -0
  1163. package/src/components/ProfileCard/profile-card.stories.tsx +53 -0
  1164. package/src/components/{NameCard/name-card.tsx → ProfileCard/profile-card.tsx} +36 -30
  1165. package/src/components/ProgressBar/index.ts +5 -0
  1166. package/src/components/ProgressBar/progress-bar.anatomy.stories.tsx +438 -0
  1167. package/src/components/ProgressBar/progress-bar.principles.stories.tsx +339 -0
  1168. package/src/components/ProgressBar/progress-bar.spec.md +240 -0
  1169. package/src/components/ProgressBar/progress-bar.stories.tsx +119 -0
  1170. package/src/components/ProgressBar/progress-bar.tsx +4 -4
  1171. package/src/components/RadioGroup/index.ts +5 -0
  1172. package/src/components/RadioGroup/radio-group.anatomy.stories.tsx +681 -0
  1173. package/src/components/RadioGroup/radio-group.principles.stories.tsx +163 -0
  1174. package/src/components/RadioGroup/radio-group.spec.md +149 -0
  1175. package/src/components/RadioGroup/radio-group.stories.tsx +101 -0
  1176. package/src/components/RadioGroup/radio-group.tsx +114 -57
  1177. package/src/components/Rating/index.ts +5 -0
  1178. package/src/components/Rating/rating.anatomy.stories.tsx +495 -0
  1179. package/src/components/Rating/rating.principles.stories.tsx +296 -0
  1180. package/src/components/Rating/rating.spec.md +214 -0
  1181. package/src/components/Rating/rating.stories.tsx +133 -0
  1182. package/src/components/Rating/rating.tsx +29 -14
  1183. package/src/components/ScrollArea/index.ts +5 -0
  1184. package/src/components/ScrollArea/scroll-area.anatomy.stories.tsx +451 -0
  1185. package/src/components/ScrollArea/scroll-area.principles.stories.tsx +331 -0
  1186. package/src/components/ScrollArea/scroll-area.spec.md +143 -0
  1187. package/src/components/ScrollArea/scroll-area.stories.tsx +243 -0
  1188. package/src/components/ScrollArea/scroll-area.tsx +2 -2
  1189. package/src/components/SegmentedControl/index.ts +5 -0
  1190. package/src/components/SegmentedControl/segmented-control.anatomy.stories.tsx +295 -0
  1191. package/src/components/SegmentedControl/segmented-control.principles.stories.tsx +281 -0
  1192. package/src/components/SegmentedControl/segmented-control.spec.md +297 -0
  1193. package/src/components/SegmentedControl/segmented-control.stories.tsx +33 -0
  1194. package/src/components/SegmentedControl/segmented-control.tsx +9 -10
  1195. package/src/components/Select/index.ts +5 -0
  1196. package/src/components/Select/select.anatomy.stories.tsx +828 -0
  1197. package/src/components/Select/select.principles.stories.tsx +311 -0
  1198. package/src/components/Select/select.spec.md +337 -0
  1199. package/src/components/Select/select.stories.tsx +198 -0
  1200. package/src/components/Select/select.tsx +37 -16
  1201. package/src/components/SelectMenu/index.ts +5 -0
  1202. package/src/components/SelectMenu/select-menu.anatomy.stories.tsx +812 -0
  1203. package/src/components/SelectMenu/select-menu.principles.stories.tsx +107 -0
  1204. package/src/components/SelectMenu/select-menu.spec.md +229 -0
  1205. package/src/components/SelectMenu/select-menu.stories.tsx +155 -0
  1206. package/src/components/SelectMenu/select-menu.tsx +34 -9
  1207. package/src/components/SelectionControl/index.ts +5 -0
  1208. package/src/components/SelectionControl/selection-item.anatomy.stories.tsx +571 -0
  1209. package/src/components/SelectionControl/selection-item.principles.stories.tsx +77 -0
  1210. package/src/components/SelectionControl/selection-item.spec.md +141 -0
  1211. package/src/components/SelectionControl/selection-item.stories.tsx +137 -0
  1212. package/src/components/SelectionControl/selection-item.tsx +8 -2
  1213. package/src/components/Separator/index.ts +5 -0
  1214. package/src/components/Separator/separator.anatomy.stories.tsx +125 -0
  1215. package/src/components/Separator/separator.principles.stories.tsx +141 -0
  1216. package/src/components/Separator/separator.spec.md +115 -0
  1217. package/src/components/Separator/separator.stories.tsx +127 -0
  1218. package/src/components/Separator/separator.tsx +2 -2
  1219. package/src/components/Sheet/index.ts +5 -0
  1220. package/src/components/Sheet/sheet.anatomy.stories.tsx +269 -0
  1221. package/src/components/Sheet/sheet.principles.stories.tsx +351 -0
  1222. package/src/components/Sheet/sheet.spec.md +146 -0
  1223. package/src/components/Sheet/sheet.stories.tsx +168 -0
  1224. package/src/components/Sheet/sheet.tsx +7 -6
  1225. package/src/components/Sidebar/index.ts +5 -0
  1226. package/src/components/Sidebar/sidebar.anatomy.stories.tsx +772 -0
  1227. package/src/components/Sidebar/sidebar.principles.stories.tsx +505 -0
  1228. package/src/components/Sidebar/sidebar.spec.md +724 -0
  1229. package/src/components/Sidebar/sidebar.stories.tsx +498 -0
  1230. package/src/components/Sidebar/sidebar.tsx +20 -9
  1231. package/src/components/Skeleton/index.ts +5 -0
  1232. package/src/components/Skeleton/skeleton.anatomy.stories.tsx +145 -0
  1233. package/src/components/Skeleton/skeleton.principles.stories.tsx +234 -0
  1234. package/src/components/Skeleton/skeleton.spec.md +106 -0
  1235. package/src/components/Skeleton/skeleton.stories.tsx +137 -0
  1236. package/src/components/Skeleton/skeleton.tsx +1 -1
  1237. package/src/components/Slider/index.ts +5 -0
  1238. package/src/components/Slider/slider.anatomy.stories.tsx +236 -0
  1239. package/src/components/Slider/slider.principles.stories.tsx +250 -0
  1240. package/src/components/Slider/slider.spec.md +358 -0
  1241. package/src/components/Slider/slider.stories.tsx +99 -0
  1242. package/src/components/Slider/slider.tsx +54 -16
  1243. package/src/components/Steps/index.ts +5 -0
  1244. package/src/components/Steps/steps.anatomy.stories.tsx +448 -0
  1245. package/src/components/Steps/steps.principles.stories.tsx +300 -0
  1246. package/src/components/Steps/steps.spec.md +479 -0
  1247. package/src/components/Steps/steps.stories.tsx +335 -0
  1248. package/src/components/Steps/steps.tsx +56 -26
  1249. package/src/components/Switch/index.ts +5 -0
  1250. package/src/components/Switch/switch.anatomy.stories.tsx +227 -0
  1251. package/src/components/Switch/switch.principles.stories.tsx +174 -0
  1252. package/src/components/Switch/switch.spec.md +238 -0
  1253. package/src/components/Switch/switch.stories.tsx +107 -0
  1254. package/src/components/Switch/switch.tsx +69 -32
  1255. package/src/components/Tabs/index.ts +5 -0
  1256. package/src/components/Tabs/tabs.anatomy.stories.tsx +414 -0
  1257. package/src/components/Tabs/tabs.principles.stories.tsx +257 -0
  1258. package/src/components/Tabs/tabs.spec.md +331 -0
  1259. package/src/components/Tabs/tabs.stories.tsx +155 -0
  1260. package/src/components/Tabs/tabs.tsx +17 -10
  1261. package/src/components/Tag/index.ts +5 -0
  1262. package/src/components/Tag/tag.anatomy.stories.tsx +664 -0
  1263. package/src/components/Tag/tag.principles.stories.tsx +270 -0
  1264. package/src/components/Tag/tag.spec.md +324 -0
  1265. package/src/components/Tag/tag.stories.tsx +69 -0
  1266. package/src/components/Tag/tag.tsx +55 -57
  1267. package/src/components/Textarea/index.ts +5 -0
  1268. package/src/components/Textarea/textarea.anatomy.stories.tsx +304 -0
  1269. package/src/components/Textarea/textarea.principles.stories.tsx +175 -0
  1270. package/src/components/Textarea/textarea.spec.md +162 -0
  1271. package/src/components/Textarea/textarea.stories.tsx +53 -0
  1272. package/src/components/Textarea/textarea.tsx +20 -18
  1273. package/src/components/TimePicker/index.ts +5 -0
  1274. package/src/components/TimePicker/time-columns.tsx +8 -1
  1275. package/src/components/TimePicker/time-picker.anatomy.stories.tsx +281 -0
  1276. package/src/components/TimePicker/time-picker.principles.stories.tsx +140 -0
  1277. package/src/components/TimePicker/time-picker.spec.md +290 -0
  1278. package/src/components/TimePicker/time-picker.stories.tsx +193 -0
  1279. package/src/components/TimePicker/time-picker.tsx +41 -23
  1280. package/src/components/Toast/index.ts +5 -0
  1281. package/src/components/Toast/toast.anatomy.stories.tsx +324 -0
  1282. package/src/components/Toast/toast.principles.stories.tsx +217 -0
  1283. package/src/components/Toast/toast.spec.md +181 -0
  1284. package/src/components/Toast/toast.stories.tsx +125 -0
  1285. package/src/components/Toast/toast.tsx +2 -2
  1286. package/src/components/Tooltip/index.ts +5 -0
  1287. package/src/components/Tooltip/tooltip.anatomy.stories.tsx +413 -0
  1288. package/src/components/Tooltip/tooltip.principles.stories.tsx +204 -0
  1289. package/src/components/Tooltip/tooltip.spec.md +142 -0
  1290. package/src/components/Tooltip/tooltip.stories.tsx +116 -0
  1291. package/src/components/Tooltip/tooltip.tsx +4 -1
  1292. package/src/components/TreeView/index.ts +5 -0
  1293. package/src/components/TreeView/tree-view.anatomy.stories.tsx +426 -0
  1294. package/src/components/TreeView/tree-view.principles.stories.tsx +190 -0
  1295. package/src/components/TreeView/tree-view.spec.md +390 -0
  1296. package/src/components/TreeView/tree-view.stories.tsx +299 -0
  1297. package/src/components/TreeView/tree-view.tsx +63 -26
  1298. package/src/hooks/use-overflow-items.ts +10 -6
  1299. package/src/index.ts +73 -69
  1300. package/src/lib/utils.ts +2 -1
  1301. package/src/patterns/README.md +15 -11
  1302. package/src/patterns/action-bar/action-bar.spec.md +465 -0
  1303. package/src/patterns/action-bar/action-bar.stories.tsx +612 -0
  1304. package/src/patterns/element-anatomy/element-anatomy.spec.md +217 -0
  1305. package/src/patterns/element-anatomy/index.ts +5 -0
  1306. package/src/patterns/element-anatomy/inline-action.spec.md +320 -0
  1307. package/src/patterns/element-anatomy/item-anatomy.spec.md +1051 -0
  1308. package/src/patterns/element-anatomy/item-anatomy.stories.tsx +1622 -0
  1309. package/src/patterns/element-anatomy/item-anatomy.tsx +9 -5
  1310. package/src/patterns/header-canonical/chrome-header.tsx +16 -5
  1311. package/src/patterns/header-canonical/header-canonical.css +2 -2
  1312. package/src/patterns/header-canonical/header-canonical.spec.md +326 -0
  1313. package/src/patterns/header-canonical/header-canonical.stories.tsx +150 -0
  1314. package/src/patterns/header-canonical/index.ts +5 -0
  1315. package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +211 -0
  1316. package/src/patterns/horizontal-overflow/index.ts +5 -0
  1317. package/src/patterns/overlay-surface/index.ts +5 -0
  1318. package/src/patterns/overlay-surface/overlay-surface.spec.md +442 -0
  1319. package/src/patterns/overlay-surface/overlay-surface.tsx +26 -11
  1320. package/src/patterns/resize-handle/index.ts +5 -0
  1321. package/src/patterns/resize-handle/resize-handle.spec.md +120 -0
  1322. package/src/patterns/resize-handle/resize-handle.stories.tsx +71 -0
  1323. package/src/story-governance/category-matrix.json +132 -0
  1324. package/src/story-governance/category-matrix.ts +55 -0
  1325. package/src/styles/base.css +92 -0
  1326. package/src/styles/tokens.css +11 -0
  1327. package/src/tokens/README.md +7 -2
  1328. package/src/tokens/categorical-color.ts +164 -0
  1329. package/src/tokens/color/color.spec.md +801 -0
  1330. package/src/tokens/color/color.stories.tsx +363 -0
  1331. package/src/tokens/color/primitives.css +7 -0
  1332. package/src/tokens/color/semantic.css +28 -13
  1333. package/src/tokens/density/density.spec.md +128 -0
  1334. package/src/tokens/density/density.stories.tsx +240 -0
  1335. package/src/tokens/elevation/elevation.spec.md +78 -0
  1336. package/src/tokens/elevation/elevation.stories.tsx +98 -0
  1337. package/src/tokens/layoutSpace/layoutSpace.css +1 -1
  1338. package/src/tokens/layoutSpace/layoutSpace.spec.md +324 -0
  1339. package/src/tokens/layoutSpace/layoutSpace.stories.tsx +75 -0
  1340. package/src/tokens/motion/motion.css +2 -2
  1341. package/src/tokens/motion/motion.spec.md +105 -0
  1342. package/src/tokens/motion/motion.ts +1 -1
  1343. package/src/tokens/opacity/opacity.spec.md +73 -0
  1344. package/src/tokens/opacity/opacity.stories.tsx +69 -0
  1345. package/src/tokens/orphan-tokens.spec.md +128 -0
  1346. package/src/tokens/radius/radius.spec.md +126 -0
  1347. package/src/tokens/radius/radius.stories.tsx +86 -0
  1348. package/src/tokens/token-system.spec.md +240 -0
  1349. package/src/tokens/typography/typography.spec.md +204 -0
  1350. package/src/tokens/typography/typography.stories.tsx +133 -0
  1351. package/src/tokens/uiSize/icon-size.ts +1 -2
  1352. package/src/tokens/uiSize/uiSize.css +21 -0
  1353. package/src/tokens/uiSize/uiSize.spec.md +465 -0
  1354. package/src/tokens/utility-registry.json +124 -0
  1355. package/dist/components/NameCard/name-card.d.ts.map +0 -1
  1356. package/dist/components/NameCard/name-card.js.map +0 -1
@@ -0,0 +1,292 @@
1
+ ---
2
+ component: PeoplePicker
3
+ family: 4
4
+ variants: {}
5
+ sizes: {}
6
+ traits:
7
+ - isInputLike
8
+ benchmark:
9
+ - Ant Design Mentions: github.com/ant-design/ant-design/tree/master/components/mentions
10
+ - MUI Autocomplete: github.com/mui/material-ui/tree/master/packages/mui-material/src/Autocomplete
11
+ - Polaris Combobox: github.com/Shopify/polaris/tree/main/polaris-react/src/components/Combobox
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
+ # PeoplePicker 設計原則
17
+
18
+ ## 定位
19
+
20
+ PeoplePicker 是**人員選擇器**——專為「從人員清單中選一個或多個」設計的複合元件。外觀對齊 Select / Combobox,差異在選項前綴有 Avatar 視覺。
21
+
22
+ **實作基礎**:組合元件——single mode wrap `<Select searchable>`、multi mode wrap `<Combobox>`(stack / pill 皆同;`people-picker.tsx` 檔頭「v15.6 SSOT 重構 v2」comment SSOT),已選值 render 用 `PersonDisplay`(Avatar + Name)。Popover + Command(cmdk)搜尋 + SelectMenu 浮層是 Select / Combobox 內部下層細節,PeoplePicker 不直接 import / render 它們。
23
+
24
+ 共用規則見 `../Field/field-controls.spec.md`。本文件只記錄 PeoplePicker 特有的原則。
25
+
26
+ ## Controlled-only rationale(Dim 26)
27
+
28
+ 本元件採 **controlled-only**:`value` + `onChange`,不支援 `defaultValue` uncontrolled fallback(value pair V1)。多選跟隨內部 wrap 的 `Combobox`(controlled-only,rationale 見其 spec「Controlled-only rationale(Dim 26)」段);單選雖 wrap dual-mode 的 `Select`(其有 `defaultValue`),但本 wrapper 刻意不 expose `defaultValue` 以維持兩 mode API 一致——wrapper 單側開放 dual-mode 會產生狀態斷層。未來要改 dual-mode 需自 primitive 層引入 `useControllableState`,屬 major API 擴充。
29
+
30
+ **Layout Family**:CLAUDE.md 4-Family Model **Family 4(Field control layout)** 消費者。結構繼承 `components/Field/field-controls.spec.md` 的 `fieldWrapperStyles + [startIcon?] [<editable>] [endAction?]` 規格,視覺對齊 Family 1(Menu item)讓 SelectMenu trigger + options 連續一致。
31
+
32
+ ---
33
+
34
+ ## 何時用
35
+
36
+ - **指派人員**:指派 task、assignee、reviewer 選擇
37
+ - **加入成員**:team / channel / project 加人
38
+ - **@提及選擇器**:文章 / 留言 / chat 內插入 @user
39
+ - **多人協作選擇**:訂單協作人員、共同擁有者
40
+ - **需要 avatar 視覺識別**:人員清單視覺辨識高於純文字 label
41
+
42
+ ## 何時不用
43
+
44
+ | 場景 | 改用 | 原因 |
45
+ |------|------|------|
46
+ | 一般分類選擇(非人員)| `Select` / `Combobox` | PeoplePicker 專為人員設計,有 Avatar prefix |
47
+ | 單選純文字選項(狀態 / 類別)| `Select` | PeoplePicker 開銷較大,靠 Avatar 識別;非人員用 Select |
48
+ | 多選非人員 tag | `Combobox` | Combobox 是通用多選,無 Avatar 假設 |
49
+ | 只顯示單一人員(不需選擇)| `ProfileCard` + `Avatar` | PeoplePicker 是選擇器,純展示用 ProfileCard |
50
+ | 顯示整個 team 成員列表 | `Avatar.Group` / 自訂 list | PeoplePicker 是「選人」介面,不是「展示 team」 |
51
+
52
+ ---
53
+
54
+ ## 單選 vs 多選
55
+
56
+ 透過 `value` prop 的類型決定:
57
+
58
+ | 模式 | value 類型 | 視覺 |
59
+ |------|-----------|------|
60
+ | 單選 | `PersonValue \| null` | Field 顯示單一 Avatar + Name |
61
+ | 多選 | `PersonValue[]` | default `multiDisplay='stack'`:Avatar 疊合陣列;`multiDisplay='pill'` opt-in:每人矩形 Tag pill |
62
+
63
+ **判斷**:
64
+ - 「這個 task 指派給誰」→ 單選(assignee 通常一個)
65
+ - 「選擇 reviewers」→ 多選(reviewer 可多人)
66
+ - 「加入 channel 的成員」→ 多選
67
+ - 「文章作者」→ 單選
68
+
69
+ ### 多選顯示樣式(multiDisplay)
70
+
71
+ Multi mode 公開 `multiDisplay` / `pillShowAvatar` / `pillWrap` 三個顯示 props(jsDoc SSOT 見 `people-picker.tsx` `PeoplePickerProps`;single mode 忽略):`multiDisplay='stack'`(default)= Avatar 疊合 + 圓形 `+N` overflow、不可 wrap;`'pill'` opt-in = 每人矩形 Tag pill、可 wrap(對齊 GitHub Reviewers / Combobox tag-input idiom)。`pillShowAvatar`(default `true`)控 pill 內 avatar prefix,`false` → 純文字 pill(對齊 Tag 元件 `avatar` prop SSOT);`pillWrap`(default `true`)控 pill 換行(對齊 Combobox `wrap` prop)。
72
+
73
+ ---
74
+
75
+ ## 搜尋
76
+
77
+ PeoplePicker 永遠支援搜尋(內部使用 `Command` / cmdk)——因為人員清單通常規模較大且使用者記得人名關鍵字(符合 Select spec「Searchable 開啟判斷」的「label 性質」主判準:人名是獨特關鍵字)。
78
+
79
+ - **搜尋 placeholder**:預設「搜尋人員…」,可透過 `searchPlaceholder` 覆寫
80
+ - **空狀態**:預設「沒有符合的人員」,透過 `emptyText` 覆寫
81
+
82
+ ---
83
+
84
+ ## 與 Select / Combobox 的分界
85
+
86
+ | | PeoplePicker | Select | Combobox |
87
+ |---|---|---|---|
88
+ | 資料類型 | **人員**(含 Avatar) | 任意(純文字)| 任意(純文字)|
89
+ | 單選 / 多選 | 兩者皆支援(value 類型決定)| 單選 | 多選 |
90
+ | 視覺 prefix | Avatar(必備) | 可選 startIcon | 無 |
91
+ | 底層實作 | Popover + Command + SelectMenu | 桌機自建 listbox(`role="combobox"` div + cmdk SelectMenu,`select.tsx:570`)/ 觸控 native `<select>`(`select.tsx` NativeSelect) | 桌機自建 listbox(`role="combobox"` div + cmdk SelectMenu + Tag overlay,`combobox.tsx:699`)/ 觸控 native `<select>`(`combobox.tsx` NativeCombobox) |
92
+ | 搜尋 | 永遠啟用(人名本質);single = inline-trigger(wrap `<Select searchable>`),multi 預設 panel-top(`searchIn='menu'`,`searchIn='trigger'` opt-in)— 對齊本 spec L91-92 SSOT 表 | 可選 `searchable`(單選短列表 → inline-trigger only)| 可選 `searchable` + `searchIn='menu' \| 'trigger'`(多選 → 兩種模式)|
93
+
94
+ **搜尋型態 SSOT canonical**(A1-A5 spec,2026-05-11;2026-05-12 補 PeoplePicker multi `searchIn` opt-in):
95
+
96
+ | 型態 | 使用情境 | 元件 API |
97
+ |---|---|---|
98
+ | **none** | 短列表 (< 7 選項) / 自然語言 label 可用 native type-ahead | 不傳 `searchable` |
99
+ | **inline-trigger** | 單選 + 需快速 type-and-pick;trigger 變 input | `<Select searchable />` / `<Combobox searchable searchIn='trigger' />` / `<PeoplePicker />` single / `<PeoplePicker multi searchIn='trigger' />` |
100
+ | **panel-top** | 多選 + 連續 type-and-select(關鍵字保留在 menu 不被 chip 切走) | `<Combobox searchable searchIn='menu' />` / `<PeoplePicker multi />`(default menu) |
101
+
102
+ ### Trigger display SSOT canonical table(2026-05-15 v3 user verbatim 整理)
103
+
104
+ **PeoplePicker 是獨立元件,有自己的另一層 SSOT,並非完全繼承 Select / Combobox**。下表標出哪些繼承、哪些 PeoplePicker 自己定義 — **改一處先看本表,違反該層 SSOT = 漂移**。
105
+
106
+ **讀表方式**:每 row 的設計意圖(canonical)為主體;`file:line` cite 是 drift 防護的實作錨點(改 code 必同步 cite),非要求讀者 trace 實作。
107
+
108
+ #### A. 元件本質繼承表
109
+
110
+ | 面向 | 來源 SSOT |
111
+ |---|---|
112
+ | 單人互動邏輯(open/close/keyboard/搜尋)| **繼承 Select**(只多套一層 Avatar 視覺包裝)|
113
+ | 多人互動邏輯(N tag / overflow / inline-search)| **繼承 Combobox**(但 tag 和溢出**換成圓形 avatar 視覺**)|
114
+ | Avatar 在 field 內 padding(12px 固定)| **PeoplePicker 自己**(不繼承 Combobox density-dependent 公式)|
115
+ | +N 溢出 chip 形狀(**圓形**;stack mode)| **PeoplePicker 自己**(不繼承 Combobox 矩形 tag) |
116
+ | 多人 tag 視覺(default `multiDisplay='stack'`:**圓形 avatar overlap `-ml-0.5`**) | **PeoplePicker 自己**(`multiDisplay='pill'` opt-in 才用 Combobox 矩形 Tag pill,見「多選顯示樣式」)|
117
+ | 多人 length=1 視覺(降階為 avatar+人名,跟單人視覺一致)| **PeoplePicker 自己**(Combobox 無此特殊)|
118
+
119
+ #### B. 單人完整 trigger SSOT
120
+
121
+ | state | trigger 顯示 |
122
+ |---|---|
123
+ | 空、closed | placeholder「請選擇人員」+ 按空間 ellipsis |
124
+ | 選 1 人、closed | avatar + 人名 + 按空間 ellipsis(`PersonDisplay`,`person-display.tsx:137-152`)|
125
+ | open + inline-search、未選 | input cursor + placeholder「請選擇人員」(trigger empty placeholder,**不**用「搜尋…」)|
126
+ | open + inline-search、選 1 人 | input cursor + 該人名 overlay(本人名字當記憶提示,按空間 ellipsis;`select.tsx:204-205` `triggerEmptyPlaceholder = placeholder \|\| '搜尋…'` + `showSelectedOverlay` span 顯人名,2026-05-15 Bug 2 fix 改 span overlay 取代原 native placeholder)|
127
+ | open + panel-search、選 1 人 | avatar + 人名 + ellipsis(搜尋框在 panel 內,trigger 視覺不變)|
128
+
129
+ #### C. 多人 length=1 trigger SSOT(降階為單人視覺)
130
+
131
+ | state | trigger 顯示 |
132
+ |---|---|
133
+ | closed | avatar + 人名 + ellipsis(= 單人 closed,共享 `PersonDisplay`)|
134
+ | open + panel-search | avatar + 人名 + ellipsis(panel 內搜尋,trigger 視覺不變)|
135
+ | open + inline-search | avatar + **input cursor**(原本人名位置被輸入區取代;**因 avatar 仍可見,placeholder 永遠空,只剩 cursor** — 對齊 §E 「avatar 存在 → placeholder 空」rule,避免視覺重複造成混亂)|
136
+
137
+ #### D. 多人 length≥2 trigger SSOT(avatar stack 視覺)
138
+
139
+ | state | trigger 顯示 |
140
+ |---|---|
141
+ | closed | **圓形 avatar stack overlap `-ml-0.5` + 圓形 +N 溢出 chip**(本來放人名的地方不放人名)|
142
+ | open + inline-search、**未選**(length=0)| input cursor + placeholder「請選擇人員」(trigger empty placeholder,**不**用「搜尋…」)|
143
+ | open + inline-search、**已選**(length≥2)| **avatar stack + 圓形 +N + input cursor 在 +N 的右側**(stack 跟 +N 不動;cursor 接在 +N 後;empty search 不顯 placeholder,純 cursor。對齊 Combobox `trailing` slot placement)|
144
+ | open + panel-search、已選 | avatar stack + 圓形 +N(searchbox 在 panel 內,trigger 視覺不變)|
145
+
146
+ #### E. 共享 SSOT(單人 ↔ 多人 length=1 必對齊)
147
+
148
+ | 共享項 | SSOT owner |
149
+ |---|---|
150
+ | Avatar 左 inset 距 trigger.left = 12px 固定(不隨 size/density 漂移)| 本 spec L94 + `people-picker.tsx:362` `!px-[var(--field-px)]` inject(form context)/ `!px-[var(--table-cell-px)]`(naked variant table cell)|
151
+ | Avatar+人名視覺 | `person-display.tsx:137-152` `PersonDisplay`(共享 renderer)|
152
+ | 人名按空間 ellipsis | `person-display.tsx:150` `truncate flex-1 min-w-0` |
153
+ | Placeholder ellipsis(inline-search active 時)| `field-wrapper.tsx:244` `bareInputStyles` 含 `truncate` |
154
+ | Empty-state inline-search placeholder(未選時 → trigger empty placeholder) | `select.tsx:204` `triggerEmptyPlaceholder = placeholder \|\| '搜尋…'` / `combobox.tsx` CustomCombobox inline input `items.length === 0 ? placeholder : ''`(2026-05-15 Drift A fix 對齊 PeoplePicker SSOT)|
155
+
156
+ **Avatar-presence → placeholder 規則(2026-05-15 user verbatim「只要有 avatar 存在,placeholder 都是空的,只會出現 cursor,這樣才不會造成混亂」)**:
157
+
158
+ | 場景 | avatar 是否可見 | placeholder 行為 |
159
+ |---|---|---|
160
+ | 單人 inline-search、已選、open | ❌(input **取代** avatar/name,avatar 消失)| 該人名以 span overlay 顯示(memory aid)— `select.tsx:204-205`(2026-05-15 Bug 2 fix 改 span overlay)|
161
+ | 單人 inline-search、未選、open | ❌(從來沒 avatar)| placeholder = **trigger empty placeholder「請選擇人員」** |
162
+ | 多人 inline-search、length≥1、open | ✅(avatar/stack 仍在,input 在 trailing)| **placeholder = '' 純 cursor**(避免跟 avatar 重複)|
163
+ | 多人 inline-search、length=0、open | ❌(empty)| placeholder = **trigger empty placeholder「請選擇人員」** — `combobox.tsx` CustomCombobox inline input(Drift A fix)|
164
+
165
+ **規則一句話**:`placeholder = (visible_avatar_exists) ? '' : (selectedLabel ?? triggerEmptyPlaceholder)`。
166
+
167
+ **搜尋預設模式(2026-05-15 user 拍板)**:多選系列 default `searchIn='menu'`(panel-top search)。`searchIn='trigger'` 為 opt-in。Single mode 永遠 inline-search(Select 慣例)。
168
+
169
+ #### F. Cell-edit ↔ Field-edit 一致性 invariant
170
+
171
+ `MultiPersonCell` / `PersonCell`(`cell-registry.tsx` cell-as-input,DataTable)+ form context PeoplePicker **包同一個元件**,所以 §B/§C/§D 規則對兩 surface 都成立。差別只在 padding 機制(共 §E)— 兩 surface 都產出 12px inset,**禁分歧**。
172
+
173
+ **改 PeoplePicker 視覺前必查本表,動 trigger render / placeholder / overflowShape / tagWrapperClassName 前先 cite 對應 row。** Hook `check_peoplepicker_ssot_drift.sh` 機械強制。
174
+
175
+ **Avatar 左 inset SSOT(GitHub people picker idiom)**:single trigger / multi stack 第一個 avatar 距 trigger.left = **12px 固定**(不隨 size / density 漂移)。實作:PeoplePicker form context + 有 tag → `cn(className, '!px-[var(--field-px)]')` inject 12px override 到 Combobox Field wrapper,**覆蓋** Combobox `tagPadding[size]` density-dependent calc 公式(該公式在 default lg + 全 comfortable 共 4/6 組合漂離 12px,故報廢改固定值;推導史詳 git log 2026-05-13);`tagAreaPaddingLeftPx={undefined}` 不再 +8 magic。Cell context naked variant `!px-[var(--table-cell-px)]` 已是 12px 不 inject。對齊 GitHub picker / Material Autocomplete renderTags / Ant Select tagRender 共享 fixed-inset canonical(不 scale with size)。 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
176
+
177
+ **判準**:
178
+ - **選人 → PeoplePicker**(不用 Select / Combobox 代替,失去 Avatar 視覺)
179
+ - **非人員單選 → Select**
180
+ - **非人員多選 → Combobox**
181
+
182
+ **常見誤解**:(1)「PeoplePicker 只是 Combobox + avatar 皮」— 它有自己一層 SSOT(avatar 12px 固定 inset / 圓形 +N chip / avatar-presence placeholder 規則),見上方 §A 繼承表;(2)「拿來展示 team 名單」— 它是選擇器,純展示用 `Avatar.Group` / `ProfileCard`(見禁止事項)。
183
+
184
+ ---
185
+
186
+ ## PersonValue 型別
187
+
188
+ ```tsx
189
+ type PersonValue = string | PersonData
190
+
191
+ interface PersonData {
192
+ name: string
193
+ avatarUrl?: string
194
+ description?: string
195
+ status?: 'online' | 'away' | 'busy' | 'offline'
196
+ statusMessage?: React.ReactNode
197
+ id?: string
198
+ employeeNumber?: string
199
+ fields?: { label: string; value: string }[]
200
+ onViewProfile?: () => void
201
+ }
202
+ ```
203
+
204
+ - **簡單用 string**:只有名字(fallback 顯示 initials)
205
+ - **完整物件 `PersonData`**:name + avatar + presence 狀態 + 狀態訊息 + 員工 ID + 自訂欄位 + profile 跳轉(展示完整 ProfileCard,對齊 `avatar.spec.md`「person avatar hover → ProfileCard」DS-wide canonical;SSOT 型別見 `person-display.tsx` PersonData)
206
+
207
+ ---
208
+
209
+ ## readonly / disabled
210
+
211
+ 與其他 Field 一致:
212
+ - **readonly**:顯示選中人員(Avatar + Name),無 dropdown trigger、無搜尋
213
+ - **disabled**:灰化整個 field,不可互動
214
+
215
+ ---
216
+
217
+ ## 禁止事項
218
+
219
+ - ❌ 用 PeoplePicker 選非人員(部門 / 專案 / 類別)——那些用 Select / Combobox
220
+ - ❌ 在 readonly 模式顯示搜尋或 dropdown——readonly 是純展示
221
+ - ❌ 多選情境強制單選(限制 value.length === 1)——改用 Select(如果真的單選)
222
+ - ❌ 把 PeoplePicker 當 Team Member 展示元件用(不選人、只看名單)——用 Avatar.Group 或自訂 list
223
+ - ❌ 不搭配 Avatar 視覺(純文字名字)——失去 PeoplePicker 存在的理由,直接用 Select / Combobox
224
+
225
+ ---
226
+
227
+ ## Anatomy story 結構
228
+
229
+ PeoplePicker 是 **composite Field Control**(Field shell + Avatar + SelectMenu),anatomy 採 DS 標準結構 + 元件特有矩陣:
230
+
231
+ - `Overview` —— 預設視覺概覽
232
+ - `Inspector` —— 互動式 prop 試玩(`mode` × `size` × `disabled` 即時切換,搭 `SAMPLE_PEOPLE` fixture)。對齊全部同類 composite Field Control(Combobox / Select / SelectMenu / DatePicker / TimePicker / NumberInput / LinkInput 皆有 Inspector)的 DS 慣例,單組合即時試玩 prop。
233
+ - 元件特有 `ModeMatrix`(single / multi)+ `PersonValueType`(value 結構)—— Inspector 單一組合無法同時並列的跨模式 / 多值對照,由矩陣補齊
234
+ - 標準 `SizeMatrix` / `ColorMatrix` / `StateBehavior`(真實 Assignee picker 場景)
235
+
236
+ ---
237
+
238
+ ## shadcn passthrough 例外說明
239
+
240
+ PeoplePicker 是 **composite 元件**(內部 wrap `<Select>`(single)/ `<Combobox>`(multi)),其主 API 為 declarative(value / onChange / size / mode / options...)。**有套 `forwardRef` + HTML root props spread**(codex P2 fix 2026-05-07 v15.10,`people-picker.tsx:110` / L52 / L130 `...rest`):
241
+
242
+ - **forwardRef + 單一 root**:`PeoplePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>`,ref 與 `...rest`(`id` / `data-testid` / `onBlur` / `onFocus` / `aria-*` 等 HTML root props)forward 到內部 trigger 容器(readonly/disabled root div、或 wrapped Select / Combobox 的 root),對齊 DS 既有 Combobox / Select 慣例
243
+ - **`onChange` 走 Omit**:本元件 onChange 用 `(value: PersonValue[]) => void` custom signature,跟 HTMLAttributes onChange 衝突,故 Omit
244
+ - **API 邊界明確才是 composite 價值**:PeoplePicker 暴露的是「選人」語意,不是「彈出選單 + 搜尋 + 渲染頭像」的 DOM 細節。若 consumer 需要更細的 DOM-level 控制,該用底層 Popover + Combobox 自組,不該透過 PeoplePicker
245
+
246
+ `displayName = 'PeoplePicker'` 保留,無 `asChild`(composite 不是 Slot-compat)。
247
+
248
+ ---
249
+
250
+ ## 邊界案例
251
+
252
+ - **Disabled**:`disabled` → `resolvedMode='disabled'`(`useResolvedFieldMode`),走獨立 static-display 分支(`people-picker.tsx`「readonly / disabled」段)——渲染靜態 `<div>` 包 `MultiPersonDisplay` / `PersonDisplay` + `ItemSuffix` ChevronDown 類型身份 indicator(2026-06-26:disabled 保留 chevron、readonly 不顯示;naked variant 依 `showDisplayEndIcon`),**不** wrap Select / Combobox、無 dismiss X、無 inline-search input。token 走 M24 state precedence(`text-fg-disabled`,含 chevron)。
253
+ - **Loading(async people fetch)**:目前 PeoplePicker **未暴露 `loading` prop**(`PeoplePickerProps` 無此欄位,內部也未 forward 給 wrapped Select / Combobox)。consumer 若需 loading 態,在 fetch 完成前自行控制 `people=[]`(走 emptyText 空態)。底層 Select / Combobox / SelectMenu 各有自己的 loading 機制,但尚未經 PeoplePicker API 層轉發。
254
+ - **Empty(no search results)**:`emptyText` 預設「沒有符合的人員」(本 spec L72 已 codify);無 creatable mode(人員不可建立)。
255
+ - **Empty(no value selected)**:single mode → trigger 顯 placeholder「請選擇人員」;multi mode `value=[]` → trigger 同 placeholder(無 avatar stack 渲);詳「Trigger display SSOT canonical table」B-D 段。
256
+ - **`people` 清單變動(async fetch 後更新)**:已選 value 顯示不依賴 `people` 查找 — display 路徑直接渲染 value 自帶資料;edit 路徑以人名回查 `people`,查不到降級為純名字 string(initials fallback),不報錯(`people-picker-helpers.ts:74-75`)。選單選項即時跟隨 props 重渲。
257
+ - **RTL**:未實作方向鏡像(avatar stack overlap `-ml-0.5` / 12px inset 皆以 LTR physical 方向設計);RTL 屬 DS-wide 決策,未定(與 Chip / Breadcrumb 同口徑)。
258
+ - **Dark mode / density**:Avatar 12px inset 固定不隨 density 漂移(PeoplePicker own,見「Trigger display SSOT canonical table」§E + Avatar 左 inset SSOT 段);其他走 Field + SelectMenu SSOT。
259
+
260
+ ---
261
+
262
+ ## 相關
263
+
264
+ - `./person-display.tsx` — PersonValue 的顯示元件(Avatar + Name,readonly / DataTable cell 用)
265
+ - `../Select/select.spec.md` — 非人員單選的對應元件
266
+ - `../Combobox/combobox.spec.md` — 非人員多選的對應元件
267
+ - `../SelectMenu/select-menu.tsx` — PeoplePicker edit mode 的浮層選單(內部消費)
268
+ - `../Avatar/avatar.spec.md` — 選項與已選值的 Avatar 視覺
269
+ - `../ProfileCard/profile-card.spec.md` — 純顯示人員資訊的對應元件(非選擇器)
270
+ - `../Field/field-controls.spec.md` — Field Control 共用規則
271
+
272
+ ## A11y 預設
273
+
274
+ **ARIA / Pattern**:對齊 [W3C ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/) 對應 pattern。
275
+
276
+ **Keyboard 行為**:
277
+
278
+ - Tab — focus trigger
279
+ - Enter / Space — 開啟 picker
280
+ - 字母鍵 — type-ahead 搜尋
281
+ - ↑/↓ — 導覽 people
282
+ - Enter — 選擇 / 取消選擇
283
+
284
+ **Focus**:Field 家族 focus 由 Field wrapper 提供(`focus-within:!border-primary`,`field-wrapper.tsx` v13.3 SSOT;對齊 Select / Combobox spec「Focus」段),非 outline ring;focus management 由元件 own。
285
+
286
+ **驗證**:Storybook a11y addon panel 應 0 critical violation;鍵盤完整可操作(無需滑鼠)。WCAG AA contrast ≥ 4.5:1(text)/ 3:1(UI)。
287
+
288
+ ## 被引用(auto-maintained,Dim 3 reciprocal audit)
289
+
290
+ > 本節由 `scripts/add-reciprocal-pointers.mjs` 自動維護,列出在 SSOT 語境下指向本 spec 的其他 spec。若要手動補充,寫在本節之前。
291
+
292
+ - `select-menu.spec.md`
@@ -0,0 +1,162 @@
1
+ // @story-trait-rationale: pre-existing isInputLike WithError trait gap tracked separately (see L62/L72 inline rationale); this edit only adds explicit variant="primary" to the primary-CTA Button per new tertiary/text default migration
2
+ import * as React from 'react'
3
+ import type { Meta, StoryObj } from '@storybook/react'
4
+ import { PeoplePicker } from '@/design-system/components/PeoplePicker/people-picker'
5
+ import type { PersonValue } from './person-display'
6
+ import { Button } from '@/design-system/components/Button/button'
7
+
8
+ const meta: Meta = {
9
+ title: 'Design System/Components/PeoplePicker/展示',
10
+ parameters: {
11
+ docs: {
12
+ description: {
13
+ component: '人員選擇元件。外觀同 Select,value 前面多 avatar。多人時 avatar 堆疊。',
14
+ },
15
+ },
16
+ },
17
+ }
18
+
19
+ export default meta
20
+ type Story = StoryObj
21
+
22
+ // PersonData sample 含 ProfileCard 重要資訊(status / statusMessage / fields)—
23
+ // canonical:所有 person avatar hover 都應 render 完整資訊(profile-card.spec.md)。
24
+ const samplePeople = [
25
+ {
26
+ name: 'Alice Chen', avatarUrl: 'https://i.pravatar.cc/48?u=alice', description: 'Design|D-0042|EMP-1001',
27
+ status: 'online' as const,
28
+ statusMessage: 'Out of Office: Back on Monday! For urgent matters please contact @Wei-Lun Cheng in the meantime.',
29
+ fields: [{ label: 'ID', value: 'YHANAX' }, { label: 'Employee number', value: 'EMP-1001' }],
30
+ },
31
+ {
32
+ name: 'Bob Lin', avatarUrl: 'https://i.pravatar.cc/48?u=bob', description: 'Engineering|E-0087|EMP-1002',
33
+ status: 'busy' as const,
34
+ statusMessage: '正在處理 Q2 release,優先處理 P0 issues',
35
+ fields: [{ label: 'ID', value: 'BLIN01' }, { label: 'Employee number', value: 'EMP-1002' }],
36
+ },
37
+ {
38
+ name: 'Charlie Wu', avatarUrl: 'https://i.pravatar.cc/48?u=charlie', description: 'Product|P-0015|EMP-1003',
39
+ status: 'away' as const,
40
+ statusMessage: '外出開會,下午 3 點後回覆',
41
+ fields: [{ label: 'ID', value: 'CWU003' }, { label: 'Employee number', value: 'EMP-1003' }],
42
+ },
43
+ {
44
+ name: 'Diana Huang', avatarUrl: 'https://i.pravatar.cc/48?u=diana', description: 'Marketing|M-0023|EMP-1004',
45
+ status: 'online' as const,
46
+ statusMessage: 'Welcome pings! 我下午在 campaign review meeting',
47
+ fields: [{ label: 'ID', value: 'DHUANG' }, { label: 'Employee number', value: 'EMP-1004' }],
48
+ },
49
+ {
50
+ name: 'Eric Tsai', avatarUrl: 'https://i.pravatar.cc/48?u=eric', description: 'Engineering|E-0091|EMP-1005',
51
+ status: 'offline' as const,
52
+ statusMessage: 'PTO until next Tuesday',
53
+ fields: [{ label: 'ID', value: 'ETSAI' }, { label: 'Employee number', value: 'EMP-1005' }],
54
+ },
55
+ {
56
+ name: 'Fiona Lee', avatarUrl: 'https://i.pravatar.cc/48?u=fiona', description: 'Design|D-0056|EMP-1006',
57
+ status: 'online' as const,
58
+ statusMessage: 'Working on ProfileCard v3 refactor',
59
+ fields: [{ label: 'ID', value: 'FLEE' }, { label: 'Employee number', value: 'EMP-1006' }],
60
+ },
61
+ ]
62
+
63
+ // @story-trait-rationale: pre-existing trait gaps (Default/WithError) tracked separately; this PR scope = add display mode card to mode showcase only.
64
+ /* ── 單人(互動) ── */
65
+ const SinglePicker = () => {
66
+ const [val, setVal] = React.useState<PersonValue | null>(samplePeople[0])
67
+ return (
68
+ <div className="flex flex-col gap-6 max-w-xs">
69
+ <div>
70
+ <h3 className="text-body font-bold text-foreground mb-2">edit(可互動)</h3>
71
+ <PeoplePicker value={val} people={samplePeople} onChange={(v) => setVal(v[0] ?? null)} aria-label="負責人(edit mode demo)" />
72
+ </div>
73
+ {/* @story-trait-rationale: pre-existing trait gaps tracked separately */}
74
+ <div>
75
+ <h3 className="text-body font-bold text-foreground mb-2">display</h3>
76
+ <PeoplePicker mode="display" value={samplePeople[0]} />
77
+ </div>
78
+ <div>
79
+ <h3 className="text-body font-bold text-foreground mb-2">readonly</h3>
80
+ <PeoplePicker mode="readonly" value={samplePeople[0]} />
81
+ </div>
82
+ <div>
83
+ <h3 className="text-body font-bold text-foreground mb-2">disabled</h3>
84
+ <PeoplePicker mode="disabled" value={samplePeople[0]} />
85
+ </div>
86
+ </div>
87
+ )
88
+ }
89
+
90
+ export const Single: Story = {
91
+ name: '單人',
92
+ render: () => <SinglePicker />,
93
+ }
94
+
95
+ /* ── 多人(互動) ── */
96
+ const MultiPicker = () => {
97
+ const [val, setVal] = React.useState<PersonValue[]>(samplePeople.slice(0, 4))
98
+ const readonlyVal = samplePeople.slice(0, 4)
99
+ return (
100
+ <div className="flex flex-col gap-6 max-w-xs">
101
+ <div>
102
+ <h3 className="text-body font-bold text-foreground mb-2">edit(可互動,多選)</h3>
103
+ <PeoplePicker value={val} people={samplePeople} onChange={setVal} />
104
+ </div>
105
+ <div>
106
+ <h3 className="text-body font-bold text-foreground mb-2">readonly</h3>
107
+ <PeoplePicker mode="readonly" value={readonlyVal} />
108
+ </div>
109
+ </div>
110
+ )
111
+ }
112
+
113
+ export const Multi: Story = {
114
+ name: '多人',
115
+ render: () => <MultiPicker />,
116
+ }
117
+
118
+ /* ── 尺寸與 Button 對齊 ── */
119
+ const SizePicker = ({ size }: { size: 'sm' | 'md' | 'lg' }) => {
120
+ const [val, setVal] = React.useState<PersonValue | null>(samplePeople[0])
121
+ return (
122
+ <div className="flex items-center gap-3">
123
+ <PeoplePicker size={size} value={val} people={samplePeople} onChange={(v) => setVal(v[0] ?? null)} className="max-w-xs" />
124
+ <Button variant="primary" size={size}>送出</Button>
125
+ <span className="text-caption text-fg-muted">size="{size}"</span>
126
+ </div>
127
+ )
128
+ }
129
+
130
+ export const SizeAlignment: Story = {
131
+ name: '尺寸',
132
+ render: () => (
133
+ <div className="flex flex-col gap-4">
134
+ {(['sm', 'md', 'lg'] as const).map(size => (
135
+ <SizePicker key={size} size={size} />
136
+ ))}
137
+ </div>
138
+ ),
139
+ }
140
+
141
+ /* ── 人員清單非同步載入(已選值先到、名錄後到) ── */
142
+ const AsyncDirectoryPicker = () => {
143
+ const [people, setPeople] = React.useState<PersonValue[]>([])
144
+ const [val, setVal] = React.useState<PersonValue[]>([samplePeople[0], samplePeople[2]])
145
+ React.useEffect(() => {
146
+ const timer = window.setTimeout(() => setPeople(samplePeople), 1500)
147
+ return () => window.clearTimeout(timer)
148
+ }, [])
149
+ return (
150
+ <div className="flex flex-col gap-2 max-w-xs">
151
+ <PeoplePicker value={val} people={people} onChange={setVal} aria-label="任務協作者" />
152
+ <p className="text-caption text-fg-secondary">
153
+ Jira 任務「協作者」欄位場景:已選成員隨任務資料先抵達,組織人員名錄約 1.5 秒後才從 API 回來——已選的 avatar 與姓名立即顯示,不等名錄載入。
154
+ </p>
155
+ </div>
156
+ )
157
+ }
158
+
159
+ export const AsyncDirectoryLoad: Story = {
160
+ name: '人員清單非同步載入',
161
+ render: () => <AsyncDirectoryPicker />,
162
+ }
@@ -1,18 +1,18 @@
1
1
  // @benchmark-unverified-blanket: file-level retraction per M22 (d) — claims herein not individually URL-cited; treat as unverified visual/usage rumor unless retrofit per-claim. Hook escape preserved.
2
- // @placeholder-vocabulary-allow: 1-cycle backward-compat — `placeholder` 已加(trigger empty SSOT),`emptyPlaceholder={emptyText}` forward 仍保留讓既有 consumer 不被 silent break;Combobox line 509 `placeholder ?? emptyPlaceholder` fallback → placeholder 永遠 takes precedence。Future cycle 移除 emptyPlaceholder forward(per field-controls.spec.md 共享 contract b)。
3
- // @cell-metric-escape-allow: comment describes RETIRED `tagAreaPaddingLeftPx={8}` magic — current code is surface-guarded (`surface === 'form'` only injects `!px-3`; table-cell context untouched, lets naked `!px-[var(--table-cell-px)]` SSOT take over). Hook regex grep'd the comment word, not the live code path. Per (a) fix 2026-05-13 user-approved Path a.
2
+ // @placeholder-vocabulary-allow: 1-cycle backward-compat — `placeholder` 已加(trigger empty SSOT),`emptyPlaceholder={emptyText}` forward 仍保留讓既有 consumer 不被 silent break;Combobox line 760 `placeholder ?? emptyPlaceholder` fallback → placeholder 永遠 takes precedence。Future cycle 移除 emptyPlaceholder forward(per field-controls.spec.md 共享 contract b)。
3
+ // @cell-metric-escape-allow: comment describes RETIRED `tagAreaPaddingLeftPx={8}` magic — current code is surface-guarded (`surface === 'form'` only injects `!px-[var(--field-px)]`; table-cell context untouched, lets naked `!px-[var(--table-cell-px)]` SSOT take over). Hook regex grep'd the comment word, not the live code path. Per (a) fix 2026-05-13 user-approved Path a.
4
4
  import * as React from 'react'
5
5
  import { ChevronDown } from 'lucide-react'
6
6
  import { cn } from '@/lib/utils'
7
7
  import type { FieldMode, FieldVariant } from '@/design-system/components/Field/field-types'
8
8
  import { fieldWrapperStyles, EMPTY_DISPLAY, nakedCellRowModeAlign } from '@/design-system/components/Field/field-wrapper'
9
9
  import { ItemSuffix } from '@/design-system/patterns/element-anatomy/item-anatomy'
10
- import { useFieldContext, useFieldSurface } from '@/design-system/components/Field/field-context'
10
+ import { useFieldSurface, useResolvedFieldSize, useResolvedFieldDisabled, useResolvedFieldMode, useResolvedFieldVariant } from '@/design-system/components/Field/field-context'
11
11
  import { Avatar } from '@/design-system/components/Avatar/avatar'
12
12
  import { Tag } from '@/design-system/components/Tag/tag'
13
13
  import { Select } from '@/design-system/components/Select/select'
14
14
  import { Combobox } from '@/design-system/components/Combobox/combobox'
15
- import { PersonDisplay, MultiPersonDisplay, PersonAvatarTag, buildPersonNameCard, resolvePerson, type PersonValue } from './person-display'
15
+ import { PersonDisplay, MultiPersonDisplay, PersonAvatarTag, buildPersonProfileCard, resolvePerson, type PersonValue } from './person-display'
16
16
  import {
17
17
  getAvatarStackVisibleCount,
18
18
  AVATAR_STACK_AVATAR_PX,
@@ -35,10 +35,11 @@ export { PEOPLE_PICKER_LENGTH1_WRAPPER_CLASS, getPeoplePickerTagWrapperClass }
35
35
  // **2026-05-07 v15.6 SSOT 重構 v2**:
36
36
  //
37
37
  // - **single mode** wraps `<Select searchable selectedItemRenderer>`
38
- // - **multi mode** 兩種 displayMode(consumer 自選):
38
+ // - **multi mode** 兩種 displayMode(consumer 自選),**皆 wrap `<Combobox>`**(同 SSOT,
39
+ // 差別在 tagRenderer 視覺):
39
40
  // - **'stack'**(default,baseline 既有視覺)— Avatar 疊合 + `+N` overflow indicator,
40
- // 不可 wrap。Trigger 自組 + 直接 wrap `<SelectMenu multiple>` primitive,
41
- // trigger render `<MultiPersonDisplay>` reuse baseline primitive(SSOT)。
41
+ // 不可 wrap。tagRenderer 渲染 avatar stack(visible count shared `avatar-stack-overflow`
42
+ // primitive deterministic formula,2026-05-15 Bug 3 fix;display 路徑 `<MultiPersonDisplay>` primitive)。
42
43
  // 對齊 Notion / Linear / Atlassian / Slack 多人 quick-glance idiom。
43
44
  // - **'pill'**(opt-in)— 每人 Tag pill,可 wrap。Wrap `<Combobox tagRenderer>`,
44
45
  // tagRenderer 用 Tag 元件 `avatar` prop SSOT(不塞 children)。
@@ -110,7 +111,7 @@ export interface PeoplePickerProps extends Omit<React.HTMLAttributes<HTMLDivElem
110
111
  const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(function PeoplePicker({
111
112
  mode: modeProp,
112
113
  variant: variantProp,
113
- size = 'md',
114
+ size: sizeProp,
114
115
  value,
115
116
  onChange,
116
117
  people = [],
@@ -118,7 +119,7 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
118
119
  searchPlaceholder = '搜尋人員…', // i18n-allow: DS default
119
120
  emptyText = '沒有符合的人員', // i18n-allow: DS default — only for SelectMenu noResultsText
120
121
  className,
121
- disabled,
122
+ disabled: disabledProp,
122
123
  defaultOpen = false,
123
124
  onOpenChange,
124
125
  multiDisplay = 'stack',
@@ -129,11 +130,12 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
129
130
  'aria-label': ariaLabel,
130
131
  ...rest
131
132
  }, ref) {
132
- const fieldCtx = useFieldContext()
133
133
  const surface = useFieldSurface()
134
- const mode: FieldMode = modeProp ?? fieldCtx?.mode ?? 'edit'
135
- const resolvedMode: FieldMode = disabled ? 'disabled' : mode
136
- const resolvedVariant: FieldVariant = variantProp ?? fieldCtx?.variant ?? 'default'
134
+ const size = useResolvedFieldSize(sizeProp) // B cascade fix
135
+ const disabled = useResolvedFieldDisabled(disabledProp)
136
+ // 2026-06-08 SSOT:mode/disabled/variant 統一經 helper;修 <Field disabled> cascade(原只讀 fieldCtx.mode)
137
+ const resolvedMode: FieldMode = useResolvedFieldMode({ mode: modeProp, disabled })
138
+ const resolvedVariant: FieldVariant = useResolvedFieldVariant(variantProp)
137
139
  const isMulti = Array.isArray(value)
138
140
  const isEmpty = !value || (isMulti && value.length === 0)
139
141
 
@@ -176,6 +178,7 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
176
178
  ref={ref}
177
179
  className={cn(fieldWrapperStyles({ mode: resolvedMode, variant: resolvedVariant, size }), className)}
178
180
  data-field-mode={resolvedMode}
181
+ aria-disabled={resolvedMode === 'disabled' ? true : undefined}
179
182
  aria-label={ariaLabel}
180
183
  {...rest}
181
184
  >
@@ -186,6 +189,12 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
186
189
  ? <MultiPersonDisplay value={value as PersonValue[]} size={size} measured />
187
190
  : <PersonDisplay value={value as PersonValue} size={size} />}
188
191
  </span>
192
+ {/* 2026-06-26 類型身份 indicator:edit 顯示 / readonly 不顯示 / disabled 保留(fg-disabled,對齊原生 <select disabled>);naked cell 依 showDisplayEndIcon */}
193
+ {(resolvedVariant === 'naked' ? showDisplayEndIcon : resolvedMode === 'disabled') && (
194
+ <ItemSuffix className="pointer-events-none">
195
+ <ChevronDown size={ICON_SIZE[size as 'sm' | 'md' | 'lg']} className={cn('shrink-0', resolvedMode === 'disabled' ? 'text-fg-disabled' : 'text-fg-muted')} aria-hidden />
196
+ </ItemSuffix>
197
+ )}
189
198
  </div>
190
199
  )
191
200
  }
@@ -244,7 +253,7 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
244
253
  searchPlaceholder={searchPlaceholder}
245
254
  // 2026-05-12 Stream C Issue 4(codex Q3):placeholder = trigger empty hint('請選擇人員')
246
255
  // — semantic clean separation;emptyText 不再 silent 轉 trigger placeholder。
247
- // emptyPlaceholder backward-compat forward(Combobox line 509 `placeholder ?? emptyPlaceholder` fallback)
256
+ // emptyPlaceholder backward-compat forward(Combobox line 760 `placeholder ?? emptyPlaceholder` fallback)
248
257
  // 1 cycle:future 移除 emptyPlaceholder forward,emptyText 改傳 SelectMenu noResultsText。
249
258
  placeholder={placeholder}
250
259
  emptyPlaceholder={emptyText}
@@ -271,9 +280,9 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
271
280
  // Combobox tagRenderer slot,SSOT = Tag primitive 視覺(per codex Round 3 verdict)。
272
281
  // 人名 99% < 25 chars 不觸發 cap;極端長名(複數姓 + middle name)觸發 ellipsis 是合理 UX。
273
282
  avatar={pillShowAvatar
274
- ? <Avatar src={p.avatarUrl} alt={p.name} size={16} hoverCard={buildPersonNameCard(p)} />
283
+ ? <Avatar src={p.avatarUrl} alt={p.name} size={16} hoverCard={buildPersonProfileCard(p)} />
275
284
  : undefined}
276
- onDismiss={onRemove}
285
+ onRemove={onRemove}
277
286
  >
278
287
  {p.name}
279
288
  </Tag>
@@ -354,12 +363,12 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
354
363
  // 撤掉 `tagAreaPaddingLeftPx={8}` magic — Combobox `tagPadding[size]` 是 density-dependent
355
364
  // calc 公式(`(field-height - icon-size) / 2`),只在 md size + default density 才 = 4px;
356
365
  // 其他 size/density 漂 6px / 8px → 4+8=12 spec 公式不成立。
357
- // (a) fix:form context + 有 tag → 改 inject `!px-3`(固定 12px)直接 override `tagPadding[size]`,
366
+ // (a) fix:form context + 有 tag → 改 inject `!px-[var(--field-px)]`(固定 12px)直接 override `tagPadding[size]`,
358
367
  // 達成 GitHub PeoplePicker fixed 12px inset(對齊 cell context 同 13px from cell.left 含 1px border)。
359
- // - form + 有 tag → `!px-3`(12px 固定 inset)+ tagAreaPaddingLeftPx undefined → field.padL=12 ✓
368
+ // - form + 有 tag → `!px-[var(--field-px)]`(12px 固定 inset)+ tagAreaPaddingLeftPx undefined → field.padL=12 ✓
360
369
  // - table-cell + 有 tag → naked variant `!px-[var(--table-cell-px)]` 已是 12px,不 inject ✓
361
370
  // - isEmpty → 不 inject,走 Combobox 預設文字 inset(`tagPadding[size]` 公式自然 vertical center)
362
- className={cn(className, !isEmpty && surface === 'form' && '!px-3')}
371
+ className={cn(className, !isEmpty && surface === 'form' && '!px-[var(--field-px)]')}
363
372
  aria-label={ariaLabel}
364
373
  // 2026-05-15 Bug 1 fix(Claude+Codex Step 5 比稿 consensus,user verbatim「就 A」):per-length 動態
365
374
  // wrapper class — length=1 降階單人視覺需要 width constraint chain(`flex-1 min-w-0 overflow-hidden`),
@@ -400,10 +409,10 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
400
409
  src={p.avatarUrl}
401
410
  alt={p.name}
402
411
  size={16}
403
- hoverCard={buildPersonNameCard(p)}
412
+ hoverCard={buildPersonProfileCard(p)}
404
413
  />
405
414
  }
406
- onDismiss={() => {
415
+ onRemove={() => {
407
416
  onChange?.(selectedNames.filter(n => n !== item.value).map(n => findPerson(people, n)))
408
417
  }}
409
418
  >
@@ -420,7 +429,7 @@ const PeoplePicker = React.forwardRef<HTMLDivElement, PeoplePickerProps>(functio
420
429
  // selectedNames.length === 1 → PersonDisplay(avatar + name)代替 PersonAvatarTag(avatar only)。
421
430
  // SSOT 對齊 PeoplePicker single mode line 201 selectedItemRenderer。多選 1 人時視覺等同單選,
422
431
  // 只在 length > 1 才走 stack(各 avatar 純 chip)。多選 + inline 搜尋場景拿掉 name 改 cursor
423
- // future 工作(需 PeoplePicker 加 searchIn='trigger' opt-in,當前 wrapped Combobox 走 menu search)。
432
+ // `searchIn='trigger'` opt-in(2026-05-12 規則 3 ship,已轉傳 Combobox;default 'menu' panel-top search)。
424
433
  if (selectedNames.length === 1) {
425
434
  return <PersonDisplay key={item.value} value={p} size={size} />
426
435
  }