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

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 (1375) hide show
  1. package/CLAUDE.md +201 -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 +7 -2
  13. package/dist/components/Alert/alert.d.ts.map +1 -1
  14. package/dist/components/Alert/alert.js +12 -8
  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 +3 -3
  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 +3 -2
  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 +14 -7
  39. package/dist/components/Avatar/avatar.d.ts.map +1 -1
  40. package/dist/components/Avatar/avatar.js +19 -24
  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 +9 -6
  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 +15 -2
  55. package/dist/components/Breadcrumb/breadcrumb.d.ts.map +1 -1
  56. package/dist/components/Breadcrumb/breadcrumb.js +9 -3
  57. package/dist/components/Breadcrumb/breadcrumb.js.map +1 -1
  58. package/dist/components/Breadcrumb/index.d.ts +2 -0
  59. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  60. package/dist/components/Breadcrumb/index.js +12 -0
  61. package/dist/components/Breadcrumb/index.js.map +1 -0
  62. package/dist/components/BulkActionBar/bulk-action-bar.d.ts +3 -3
  63. package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -1
  64. package/dist/components/BulkActionBar/bulk-action-bar.js +3 -3
  65. package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -1
  66. package/dist/components/BulkActionBar/index.d.ts +2 -0
  67. package/dist/components/BulkActionBar/index.d.ts.map +1 -0
  68. package/dist/components/BulkActionBar/index.js +7 -0
  69. package/dist/components/BulkActionBar/index.js.map +1 -0
  70. package/dist/components/Button/button.d.ts +10 -10
  71. package/dist/components/Button/button.d.ts.map +1 -1
  72. package/dist/components/Button/button.js +79 -50
  73. package/dist/components/Button/button.js.map +1 -1
  74. package/dist/components/Button/index.d.ts +3 -0
  75. package/dist/components/Button/index.d.ts.map +1 -0
  76. package/dist/components/Button/index.js +11 -0
  77. package/dist/components/Button/index.js.map +1 -0
  78. package/dist/components/Calendar/calendar.d.ts +9 -5
  79. package/dist/components/Calendar/calendar.d.ts.map +1 -1
  80. package/dist/components/Calendar/calendar.js +88 -76
  81. package/dist/components/Calendar/calendar.js.map +1 -1
  82. package/dist/components/Calendar/index.d.ts +2 -0
  83. package/dist/components/Calendar/index.d.ts.map +1 -0
  84. package/dist/components/Calendar/index.js +6 -0
  85. package/dist/components/Calendar/index.js.map +1 -0
  86. package/dist/components/Carousel/carousel.d.ts.map +1 -1
  87. package/dist/components/Carousel/carousel.js +11 -6
  88. package/dist/components/Carousel/carousel.js.map +1 -1
  89. package/dist/components/Carousel/index.d.ts +2 -0
  90. package/dist/components/Carousel/index.d.ts.map +1 -0
  91. package/dist/components/Carousel/index.js +11 -0
  92. package/dist/components/Carousel/index.js.map +1 -0
  93. package/dist/components/Chart/chart.d.ts +2 -2
  94. package/dist/components/Chart/chart.d.ts.map +1 -1
  95. package/dist/components/Chart/chart.js +4 -2
  96. package/dist/components/Chart/chart.js.map +1 -1
  97. package/dist/components/Chart/index.d.ts +2 -0
  98. package/dist/components/Chart/index.d.ts.map +1 -0
  99. package/dist/components/Chart/index.js +11 -0
  100. package/dist/components/Chart/index.js.map +1 -0
  101. package/dist/components/Checkbox/checkbox-group.d.ts +2 -1
  102. package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -1
  103. package/dist/components/Checkbox/checkbox-group.js.map +1 -1
  104. package/dist/components/Checkbox/checkbox.d.ts +18 -9
  105. package/dist/components/Checkbox/checkbox.d.ts.map +1 -1
  106. package/dist/components/Checkbox/checkbox.js +70 -15
  107. package/dist/components/Checkbox/checkbox.js.map +1 -1
  108. package/dist/components/Checkbox/index.d.ts +3 -0
  109. package/dist/components/Checkbox/index.d.ts.map +1 -0
  110. package/dist/components/Checkbox/index.js +10 -0
  111. package/dist/components/Checkbox/index.js.map +1 -0
  112. package/dist/components/Chip/chip.d.ts +13 -7
  113. package/dist/components/Chip/chip.d.ts.map +1 -1
  114. package/dist/components/Chip/chip.js +9 -4
  115. package/dist/components/Chip/chip.js.map +1 -1
  116. package/dist/components/Chip/index.d.ts +2 -0
  117. package/dist/components/Chip/index.d.ts.map +1 -0
  118. package/dist/components/Chip/index.js +8 -0
  119. package/dist/components/Chip/index.js.map +1 -0
  120. package/dist/components/CircularProgress/circular-progress.d.ts +2 -3
  121. package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -1
  122. package/dist/components/CircularProgress/circular-progress.js +4 -3
  123. package/dist/components/CircularProgress/circular-progress.js.map +1 -1
  124. package/dist/components/CircularProgress/index.d.ts +2 -0
  125. package/dist/components/CircularProgress/index.d.ts.map +1 -0
  126. package/dist/components/CircularProgress/index.js +6 -0
  127. package/dist/components/CircularProgress/index.js.map +1 -0
  128. package/dist/components/Coachmark/coachmark-story-helpers.d.ts +22 -0
  129. package/dist/components/Coachmark/coachmark-story-helpers.d.ts.map +1 -0
  130. package/dist/components/Coachmark/coachmark.d.ts +6 -4
  131. package/dist/components/Coachmark/coachmark.d.ts.map +1 -1
  132. package/dist/components/Coachmark/coachmark.js +13 -5
  133. package/dist/components/Coachmark/coachmark.js.map +1 -1
  134. package/dist/components/Coachmark/index.d.ts +2 -0
  135. package/dist/components/Coachmark/index.d.ts.map +1 -0
  136. package/dist/components/Coachmark/index.js +6 -0
  137. package/dist/components/Coachmark/index.js.map +1 -0
  138. package/dist/components/Combobox/combobox.d.ts +18 -7
  139. package/dist/components/Combobox/combobox.d.ts.map +1 -1
  140. package/dist/components/Combobox/combobox.js +81 -45
  141. package/dist/components/Combobox/combobox.js.map +1 -1
  142. package/dist/components/Combobox/index.d.ts +2 -0
  143. package/dist/components/Combobox/index.d.ts.map +1 -0
  144. package/dist/components/Combobox/index.js +6 -0
  145. package/dist/components/Combobox/index.js.map +1 -0
  146. package/dist/components/Command/command.d.ts +6 -2
  147. package/dist/components/Command/command.d.ts.map +1 -1
  148. package/dist/components/Command/command.js +8 -7
  149. package/dist/components/Command/command.js.map +1 -1
  150. package/dist/components/Command/index.d.ts +2 -0
  151. package/dist/components/Command/index.d.ts.map +1 -0
  152. package/dist/components/Command/index.js +14 -0
  153. package/dist/components/Command/index.js.map +1 -0
  154. package/dist/components/DataTable/active-editor-controller.d.ts +4 -3
  155. package/dist/components/DataTable/active-editor-controller.d.ts.map +1 -1
  156. package/dist/components/DataTable/cell-registry.d.ts.map +1 -1
  157. package/dist/components/DataTable/cell-registry.js +9 -5
  158. package/dist/components/DataTable/cell-registry.js.map +1 -1
  159. package/dist/components/DataTable/data-table-filter-panel.d.ts.map +1 -1
  160. package/dist/components/DataTable/data-table-interaction-layer.d.ts +4 -3
  161. package/dist/components/DataTable/data-table-interaction-layer.d.ts.map +1 -1
  162. package/dist/components/DataTable/data-table-interaction-layer.js.map +1 -1
  163. package/dist/components/DataTable/data-table.d.ts +37 -13
  164. package/dist/components/DataTable/data-table.d.ts.map +1 -1
  165. package/dist/components/DataTable/data-table.js +211 -89
  166. package/dist/components/DataTable/data-table.js.map +1 -1
  167. package/dist/components/DataTable/filter-operators.d.ts +1 -1
  168. package/dist/components/DataTable/filter-tree.d.ts +6 -1
  169. package/dist/components/DataTable/filter-tree.d.ts.map +1 -1
  170. package/dist/components/DataTable/index.d.ts +2 -0
  171. package/dist/components/DataTable/index.d.ts.map +1 -0
  172. package/dist/components/DataTable/index.js +8 -0
  173. package/dist/components/DataTable/index.js.map +1 -0
  174. package/dist/components/DateGrid/date-grid.d.ts +22 -18
  175. package/dist/components/DateGrid/date-grid.d.ts.map +1 -1
  176. package/dist/components/DateGrid/date-grid.js +8 -6
  177. package/dist/components/DateGrid/date-grid.js.map +1 -1
  178. package/dist/components/DateGrid/index.d.ts +2 -0
  179. package/dist/components/DateGrid/index.d.ts.map +1 -0
  180. package/dist/components/DateGrid/index.js +6 -0
  181. package/dist/components/DateGrid/index.js.map +1 -0
  182. package/dist/components/DatePicker/date-picker.d.ts.map +1 -1
  183. package/dist/components/DatePicker/date-picker.js +153 -124
  184. package/dist/components/DatePicker/date-picker.js.map +1 -1
  185. package/dist/components/DatePicker/index.d.ts +2 -0
  186. package/dist/components/DatePicker/index.d.ts.map +1 -0
  187. package/dist/components/DatePicker/index.js +8 -0
  188. package/dist/components/DatePicker/index.js.map +1 -0
  189. package/dist/components/DescriptionList/description-list.d.ts +3 -3
  190. package/dist/components/DescriptionList/description-list.js +4 -3
  191. package/dist/components/DescriptionList/description-list.js.map +1 -1
  192. package/dist/components/DescriptionList/index.d.ts +2 -0
  193. package/dist/components/DescriptionList/index.d.ts.map +1 -0
  194. package/dist/components/DescriptionList/index.js +7 -0
  195. package/dist/components/DescriptionList/index.js.map +1 -0
  196. package/dist/components/Dialog/dialog.d.ts +1 -1
  197. package/dist/components/Dialog/dialog.d.ts.map +1 -1
  198. package/dist/components/Dialog/dialog.js +2 -1
  199. package/dist/components/Dialog/dialog.js.map +1 -1
  200. package/dist/components/Dialog/index.d.ts +2 -0
  201. package/dist/components/Dialog/index.d.ts.map +1 -0
  202. package/dist/components/Dialog/index.js +16 -0
  203. package/dist/components/Dialog/index.js.map +1 -0
  204. package/dist/components/DropdownMenu/dropdown-menu.d.ts +4 -3
  205. package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -1
  206. package/dist/components/DropdownMenu/dropdown-menu.js +13 -7
  207. package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -1
  208. package/dist/components/DropdownMenu/index.d.ts +2 -0
  209. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  210. package/dist/components/DropdownMenu/index.js +21 -0
  211. package/dist/components/DropdownMenu/index.js.map +1 -0
  212. package/dist/components/Empty/empty.d.ts +11 -3
  213. package/dist/components/Empty/empty.d.ts.map +1 -1
  214. package/dist/components/Empty/empty.js +6 -6
  215. package/dist/components/Empty/empty.js.map +1 -1
  216. package/dist/components/Empty/index.d.ts +2 -0
  217. package/dist/components/Empty/index.d.ts.map +1 -0
  218. package/dist/components/Empty/index.js +6 -0
  219. package/dist/components/Empty/index.js.map +1 -0
  220. package/dist/components/Field/field-context.d.ts +49 -0
  221. package/dist/components/Field/field-context.d.ts.map +1 -1
  222. package/dist/components/Field/field-context.js +42 -0
  223. package/dist/components/Field/field-context.js.map +1 -1
  224. package/dist/components/Field/field-types.js.map +1 -1
  225. package/dist/components/Field/field-wrapper.d.ts +1 -0
  226. package/dist/components/Field/field-wrapper.d.ts.map +1 -1
  227. package/dist/components/Field/field-wrapper.js +32 -12
  228. package/dist/components/Field/field-wrapper.js.map +1 -1
  229. package/dist/components/Field/field.d.ts +4 -2
  230. package/dist/components/Field/field.d.ts.map +1 -1
  231. package/dist/components/Field/field.js +1 -0
  232. package/dist/components/Field/field.js.map +1 -1
  233. package/dist/components/Field/index.d.ts +2 -0
  234. package/dist/components/Field/index.d.ts.map +1 -0
  235. package/dist/components/Field/index.js +12 -0
  236. package/dist/components/Field/index.js.map +1 -0
  237. package/dist/components/Field/use-form-validation.d.ts +92 -0
  238. package/dist/components/Field/use-form-validation.d.ts.map +1 -0
  239. package/dist/components/Field/use-form-validation.js +139 -0
  240. package/dist/components/Field/use-form-validation.js.map +1 -0
  241. package/dist/components/FieldControlGroup/field-control-group.d.ts +8 -8
  242. package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -1
  243. package/dist/components/FieldControlGroup/field-control-group.js +1 -1
  244. package/dist/components/FieldControlGroup/field-control-group.js.map +1 -1
  245. package/dist/components/FieldControlGroup/index.d.ts +2 -0
  246. package/dist/components/FieldControlGroup/index.d.ts.map +1 -0
  247. package/dist/components/FieldControlGroup/index.js +6 -0
  248. package/dist/components/FieldControlGroup/index.js.map +1 -0
  249. package/dist/components/FileItem/file-item.d.ts +12 -2
  250. package/dist/components/FileItem/file-item.d.ts.map +1 -1
  251. package/dist/components/FileItem/file-item.js +23 -8
  252. package/dist/components/FileItem/file-item.js.map +1 -1
  253. package/dist/components/FileItem/index.d.ts +2 -0
  254. package/dist/components/FileItem/index.d.ts.map +1 -0
  255. package/dist/components/FileItem/index.js +6 -0
  256. package/dist/components/FileItem/index.js.map +1 -0
  257. package/dist/components/FileUpload/file-upload.d.ts +32 -13
  258. package/dist/components/FileUpload/file-upload.d.ts.map +1 -1
  259. package/dist/components/FileUpload/file-upload.js +72 -22
  260. package/dist/components/FileUpload/file-upload.js.map +1 -1
  261. package/dist/components/FileUpload/index.d.ts +2 -0
  262. package/dist/components/FileUpload/index.d.ts.map +1 -0
  263. package/dist/components/FileUpload/index.js +6 -0
  264. package/dist/components/FileUpload/index.js.map +1 -0
  265. package/dist/components/FileViewer/file-viewer.d.ts +2 -2
  266. package/dist/components/FileViewer/file-viewer.d.ts.map +1 -1
  267. package/dist/components/FileViewer/file-viewer.js +32 -22
  268. package/dist/components/FileViewer/file-viewer.js.map +1 -1
  269. package/dist/components/FileViewer/index.d.ts +2 -0
  270. package/dist/components/FileViewer/index.d.ts.map +1 -0
  271. package/dist/components/FileViewer/index.js +7 -0
  272. package/dist/components/FileViewer/index.js.map +1 -0
  273. package/dist/components/HoverCard/hover-card.d.ts +7 -3
  274. package/dist/components/HoverCard/hover-card.d.ts.map +1 -1
  275. package/dist/components/HoverCard/hover-card.js +4 -3
  276. package/dist/components/HoverCard/hover-card.js.map +1 -1
  277. package/dist/components/HoverCard/index.d.ts +2 -0
  278. package/dist/components/HoverCard/index.d.ts.map +1 -0
  279. package/dist/components/HoverCard/index.js +8 -0
  280. package/dist/components/HoverCard/index.js.map +1 -0
  281. package/dist/components/Input/index.d.ts +2 -0
  282. package/dist/components/Input/index.d.ts.map +1 -0
  283. package/dist/components/Input/index.js +6 -0
  284. package/dist/components/Input/index.js.map +1 -0
  285. package/dist/components/Input/input.d.ts +5 -2
  286. package/dist/components/Input/input.d.ts.map +1 -1
  287. package/dist/components/Input/input.js +11 -13
  288. package/dist/components/Input/input.js.map +1 -1
  289. package/dist/components/LinkInput/index.d.ts +2 -0
  290. package/dist/components/LinkInput/index.d.ts.map +1 -0
  291. package/dist/components/LinkInput/index.js +6 -0
  292. package/dist/components/LinkInput/index.js.map +1 -0
  293. package/dist/components/LinkInput/link-input.d.ts +2 -2
  294. package/dist/components/LinkInput/link-input.d.ts.map +1 -1
  295. package/dist/components/LinkInput/link-input.js +36 -35
  296. package/dist/components/LinkInput/link-input.js.map +1 -1
  297. package/dist/components/Menu/index.d.ts +2 -0
  298. package/dist/components/Menu/index.d.ts.map +1 -0
  299. package/dist/components/Menu/index.js +9 -0
  300. package/dist/components/Menu/index.js.map +1 -0
  301. package/dist/components/Menu/menu-item.d.ts +6 -2
  302. package/dist/components/Menu/menu-item.d.ts.map +1 -1
  303. package/dist/components/Menu/menu-item.js +3 -2
  304. package/dist/components/Menu/menu-item.js.map +1 -1
  305. package/dist/components/Notice/index.d.ts +2 -0
  306. package/dist/components/Notice/index.d.ts.map +1 -0
  307. package/dist/components/Notice/index.js +8 -0
  308. package/dist/components/Notice/index.js.map +1 -0
  309. package/dist/components/Notice/notice.d.ts +18 -6
  310. package/dist/components/Notice/notice.d.ts.map +1 -1
  311. package/dist/components/Notice/notice.js +25 -9
  312. package/dist/components/Notice/notice.js.map +1 -1
  313. package/dist/components/NumberInput/index.d.ts +2 -0
  314. package/dist/components/NumberInput/index.d.ts.map +1 -0
  315. package/dist/components/NumberInput/index.js +7 -0
  316. package/dist/components/NumberInput/index.js.map +1 -0
  317. package/dist/components/NumberInput/number-input.d.ts.map +1 -1
  318. package/dist/components/NumberInput/number-input.js +23 -14
  319. package/dist/components/NumberInput/number-input.js.map +1 -1
  320. package/dist/components/OverflowIndicator/index.d.ts +2 -0
  321. package/dist/components/OverflowIndicator/index.d.ts.map +1 -0
  322. package/dist/components/OverflowIndicator/index.js +6 -0
  323. package/dist/components/OverflowIndicator/index.js.map +1 -0
  324. package/dist/components/OverflowIndicator/overflow-indicator.d.ts +6 -2
  325. package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -1
  326. package/dist/components/OverflowIndicator/overflow-indicator.js +15 -7
  327. package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -1
  328. package/dist/components/PeoplePicker/index.d.ts +2 -0
  329. package/dist/components/PeoplePicker/index.d.ts.map +1 -0
  330. package/dist/components/PeoplePicker/index.js +9 -0
  331. package/dist/components/PeoplePicker/index.js.map +1 -0
  332. package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -1
  333. package/dist/components/PeoplePicker/people-picker-helpers.js +2 -2
  334. package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -1
  335. package/dist/components/PeoplePicker/people-picker.d.ts +2 -2
  336. package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -1
  337. package/dist/components/PeoplePicker/people-picker.js +56 -51
  338. package/dist/components/PeoplePicker/people-picker.js.map +1 -1
  339. package/dist/components/PeoplePicker/person-display.d.ts +7 -7
  340. package/dist/components/PeoplePicker/person-display.d.ts.map +1 -1
  341. package/dist/components/PeoplePicker/person-display.js +11 -11
  342. package/dist/components/PeoplePicker/person-display.js.map +1 -1
  343. package/dist/components/Popover/index.d.ts +2 -0
  344. package/dist/components/Popover/index.d.ts.map +1 -0
  345. package/dist/components/Popover/index.js +14 -0
  346. package/dist/components/Popover/index.js.map +1 -0
  347. package/dist/components/Popover/popover.d.ts +2 -2
  348. package/dist/components/Popover/popover.d.ts.map +1 -1
  349. package/dist/components/Popover/popover.js +12 -12
  350. package/dist/components/Popover/popover.js.map +1 -1
  351. package/dist/components/ProfileCard/index.d.ts +2 -0
  352. package/dist/components/ProfileCard/index.d.ts.map +1 -0
  353. package/dist/components/ProfileCard/index.js +8 -0
  354. package/dist/components/ProfileCard/index.js.map +1 -0
  355. package/dist/components/{NameCard/name-card.d.ts → ProfileCard/profile-card.d.ts} +29 -20
  356. package/dist/components/ProfileCard/profile-card.d.ts.map +1 -0
  357. package/dist/components/{NameCard/name-card.js → ProfileCard/profile-card.js} +11 -10
  358. package/dist/components/ProfileCard/profile-card.js.map +1 -0
  359. package/dist/components/ProgressBar/index.d.ts +2 -0
  360. package/dist/components/ProgressBar/index.d.ts.map +1 -0
  361. package/dist/components/ProgressBar/index.js +6 -0
  362. package/dist/components/ProgressBar/index.js.map +1 -0
  363. package/dist/components/ProgressBar/progress-bar.d.ts +2 -2
  364. package/dist/components/ProgressBar/progress-bar.js +3 -3
  365. package/dist/components/ProgressBar/progress-bar.js.map +1 -1
  366. package/dist/components/RadioGroup/index.d.ts +2 -0
  367. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  368. package/dist/components/RadioGroup/index.js +8 -0
  369. package/dist/components/RadioGroup/index.js.map +1 -0
  370. package/dist/components/RadioGroup/radio-group.d.ts +16 -10
  371. package/dist/components/RadioGroup/radio-group.d.ts.map +1 -1
  372. package/dist/components/RadioGroup/radio-group.js +97 -35
  373. package/dist/components/RadioGroup/radio-group.js.map +1 -1
  374. package/dist/components/Rating/index.d.ts +2 -0
  375. package/dist/components/Rating/index.d.ts.map +1 -0
  376. package/dist/components/Rating/index.js +6 -0
  377. package/dist/components/Rating/index.js.map +1 -0
  378. package/dist/components/Rating/rating.d.ts +6 -2
  379. package/dist/components/Rating/rating.d.ts.map +1 -1
  380. package/dist/components/Rating/rating.js +13 -10
  381. package/dist/components/Rating/rating.js.map +1 -1
  382. package/dist/components/ScrollArea/index.d.ts +2 -0
  383. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  384. package/dist/components/ScrollArea/index.js +7 -0
  385. package/dist/components/ScrollArea/index.js.map +1 -0
  386. package/dist/components/ScrollArea/scroll-area.d.ts +2 -2
  387. package/dist/components/ScrollArea/scroll-area.js +4 -4
  388. package/dist/components/ScrollArea/scroll-area.js.map +1 -1
  389. package/dist/components/SegmentedControl/index.d.ts +2 -0
  390. package/dist/components/SegmentedControl/index.d.ts.map +1 -0
  391. package/dist/components/SegmentedControl/index.js +9 -0
  392. package/dist/components/SegmentedControl/index.js.map +1 -0
  393. package/dist/components/SegmentedControl/segmented-control.d.ts +4 -4
  394. package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -1
  395. package/dist/components/SegmentedControl/segmented-control.js +18 -15
  396. package/dist/components/SegmentedControl/segmented-control.js.map +1 -1
  397. package/dist/components/Select/index.d.ts +2 -0
  398. package/dist/components/Select/index.d.ts.map +1 -0
  399. package/dist/components/Select/index.js +6 -0
  400. package/dist/components/Select/index.js.map +1 -0
  401. package/dist/components/Select/select.d.ts +9 -3
  402. package/dist/components/Select/select.d.ts.map +1 -1
  403. package/dist/components/Select/select.js +73 -29
  404. package/dist/components/Select/select.js.map +1 -1
  405. package/dist/components/SelectMenu/index.d.ts +2 -0
  406. package/dist/components/SelectMenu/index.d.ts.map +1 -0
  407. package/dist/components/SelectMenu/index.js +7 -0
  408. package/dist/components/SelectMenu/index.js.map +1 -0
  409. package/dist/components/SelectMenu/select-menu.d.ts +24 -6
  410. package/dist/components/SelectMenu/select-menu.d.ts.map +1 -1
  411. package/dist/components/SelectMenu/select-menu.js +51 -10
  412. package/dist/components/SelectMenu/select-menu.js.map +1 -1
  413. package/dist/components/SelectionControl/index.d.ts +2 -0
  414. package/dist/components/SelectionControl/index.d.ts.map +1 -0
  415. package/dist/components/SelectionControl/index.js +7 -0
  416. package/dist/components/SelectionControl/index.js.map +1 -0
  417. package/dist/components/SelectionControl/selection-item.d.ts +5 -1
  418. package/dist/components/SelectionControl/selection-item.d.ts.map +1 -1
  419. package/dist/components/SelectionControl/selection-item.js +3 -1
  420. package/dist/components/SelectionControl/selection-item.js.map +1 -1
  421. package/dist/components/Separator/index.d.ts +2 -0
  422. package/dist/components/Separator/index.d.ts.map +1 -0
  423. package/dist/components/Separator/index.js +6 -0
  424. package/dist/components/Separator/index.js.map +1 -0
  425. package/dist/components/Separator/separator.d.ts +2 -2
  426. package/dist/components/Separator/separator.js +4 -3
  427. package/dist/components/Separator/separator.js.map +1 -1
  428. package/dist/components/Sheet/index.d.ts +2 -0
  429. package/dist/components/Sheet/index.d.ts.map +1 -0
  430. package/dist/components/Sheet/index.js +17 -0
  431. package/dist/components/Sheet/index.js.map +1 -0
  432. package/dist/components/Sheet/sheet.d.ts +7 -6
  433. package/dist/components/Sheet/sheet.d.ts.map +1 -1
  434. package/dist/components/Sheet/sheet.js +3 -2
  435. package/dist/components/Sheet/sheet.js.map +1 -1
  436. package/dist/components/Sidebar/index.d.ts +2 -0
  437. package/dist/components/Sidebar/index.d.ts.map +1 -0
  438. package/dist/components/Sidebar/index.js +24 -0
  439. package/dist/components/Sidebar/index.js.map +1 -0
  440. package/dist/components/Sidebar/sidebar.d.ts +2 -2
  441. package/dist/components/Sidebar/sidebar.d.ts.map +1 -1
  442. package/dist/components/Sidebar/sidebar.js +32 -13
  443. package/dist/components/Sidebar/sidebar.js.map +1 -1
  444. package/dist/components/Skeleton/index.d.ts +2 -0
  445. package/dist/components/Skeleton/index.d.ts.map +1 -0
  446. package/dist/components/Skeleton/index.js +6 -0
  447. package/dist/components/Skeleton/index.js.map +1 -0
  448. package/dist/components/Skeleton/skeleton.d.ts +2 -2
  449. package/dist/components/Skeleton/skeleton.js +4 -3
  450. package/dist/components/Skeleton/skeleton.js.map +1 -1
  451. package/dist/components/Slider/index.d.ts +2 -0
  452. package/dist/components/Slider/index.d.ts.map +1 -0
  453. package/dist/components/Slider/index.js +7 -0
  454. package/dist/components/Slider/index.js.map +1 -0
  455. package/dist/components/Slider/slider.d.ts +6 -6
  456. package/dist/components/Slider/slider.d.ts.map +1 -1
  457. package/dist/components/Slider/slider.js +25 -10
  458. package/dist/components/Slider/slider.js.map +1 -1
  459. package/dist/components/Steps/index.d.ts +2 -0
  460. package/dist/components/Steps/index.d.ts.map +1 -0
  461. package/dist/components/Steps/index.js +12 -0
  462. package/dist/components/Steps/index.js.map +1 -0
  463. package/dist/components/Steps/steps.d.ts +2 -2
  464. package/dist/components/Steps/steps.d.ts.map +1 -1
  465. package/dist/components/Steps/steps.js +54 -26
  466. package/dist/components/Steps/steps.js.map +1 -1
  467. package/dist/components/Switch/index.d.ts +2 -0
  468. package/dist/components/Switch/index.d.ts.map +1 -0
  469. package/dist/components/Switch/index.js +7 -0
  470. package/dist/components/Switch/index.js.map +1 -0
  471. package/dist/components/Switch/switch.d.ts +18 -16
  472. package/dist/components/Switch/switch.d.ts.map +1 -1
  473. package/dist/components/Switch/switch.js +81 -22
  474. package/dist/components/Switch/switch.js.map +1 -1
  475. package/dist/components/Tabs/index.d.ts +2 -0
  476. package/dist/components/Tabs/index.d.ts.map +1 -0
  477. package/dist/components/Tabs/index.js +10 -0
  478. package/dist/components/Tabs/index.js.map +1 -0
  479. package/dist/components/Tabs/tabs.d.ts +10 -7
  480. package/dist/components/Tabs/tabs.d.ts.map +1 -1
  481. package/dist/components/Tabs/tabs.js +30 -31
  482. package/dist/components/Tabs/tabs.js.map +1 -1
  483. package/dist/components/Tag/index.d.ts +2 -0
  484. package/dist/components/Tag/index.d.ts.map +1 -0
  485. package/dist/components/Tag/index.js +7 -0
  486. package/dist/components/Tag/index.js.map +1 -0
  487. package/dist/components/Tag/tag.d.ts +37 -23
  488. package/dist/components/Tag/tag.d.ts.map +1 -1
  489. package/dist/components/Tag/tag.js +43 -44
  490. package/dist/components/Tag/tag.js.map +1 -1
  491. package/dist/components/Textarea/index.d.ts +2 -0
  492. package/dist/components/Textarea/index.d.ts.map +1 -0
  493. package/dist/components/Textarea/index.js +7 -0
  494. package/dist/components/Textarea/index.js.map +1 -0
  495. package/dist/components/Textarea/textarea.d.ts +7 -11
  496. package/dist/components/Textarea/textarea.d.ts.map +1 -1
  497. package/dist/components/Textarea/textarea.js +34 -24
  498. package/dist/components/Textarea/textarea.js.map +1 -1
  499. package/dist/components/TimePicker/index.d.ts +2 -0
  500. package/dist/components/TimePicker/index.d.ts.map +1 -0
  501. package/dist/components/TimePicker/index.js +6 -0
  502. package/dist/components/TimePicker/index.js.map +1 -0
  503. package/dist/components/TimePicker/time-columns.d.ts.map +1 -1
  504. package/dist/components/TimePicker/time-columns.js +4 -1
  505. package/dist/components/TimePicker/time-columns.js.map +1 -1
  506. package/dist/components/TimePicker/time-picker.d.ts +4 -3
  507. package/dist/components/TimePicker/time-picker.d.ts.map +1 -1
  508. package/dist/components/TimePicker/time-picker.js +38 -39
  509. package/dist/components/TimePicker/time-picker.js.map +1 -1
  510. package/dist/components/Toast/index.d.ts +2 -0
  511. package/dist/components/Toast/index.d.ts.map +1 -0
  512. package/dist/components/Toast/index.js +7 -0
  513. package/dist/components/Toast/index.js.map +1 -0
  514. package/dist/components/Toast/toast.d.ts +2 -2
  515. package/dist/components/Toast/toast.d.ts.map +1 -1
  516. package/dist/components/Toast/toast.js +5 -4
  517. package/dist/components/Toast/toast.js.map +1 -1
  518. package/dist/components/Tooltip/index.d.ts +2 -0
  519. package/dist/components/Tooltip/index.d.ts.map +1 -0
  520. package/dist/components/Tooltip/index.js +9 -0
  521. package/dist/components/Tooltip/index.js.map +1 -0
  522. package/dist/components/Tooltip/tooltip.d.ts +1 -1
  523. package/dist/components/Tooltip/tooltip.d.ts.map +1 -1
  524. package/dist/components/Tooltip/tooltip.js +3 -2
  525. package/dist/components/Tooltip/tooltip.js.map +1 -1
  526. package/dist/components/TreeView/index.d.ts +2 -0
  527. package/dist/components/TreeView/index.d.ts.map +1 -0
  528. package/dist/components/TreeView/index.js +8 -0
  529. package/dist/components/TreeView/index.js.map +1 -0
  530. package/dist/components/TreeView/tree-view.d.ts +11 -11
  531. package/dist/components/TreeView/tree-view.d.ts.map +1 -1
  532. package/dist/components/TreeView/tree-view.js +38 -10
  533. package/dist/components/TreeView/tree-view.js.map +1 -1
  534. package/dist/hooks/use-overflow-items.d.ts +10 -6
  535. package/dist/hooks/use-overflow-items.d.ts.map +1 -1
  536. package/dist/hooks/use-overflow-items.js.map +1 -1
  537. package/dist/index.d.ts +58 -67
  538. package/dist/index.d.ts.map +1 -1
  539. package/dist/index.js +38 -57
  540. package/dist/index.js.map +1 -1
  541. package/dist/lib/utils.d.ts.map +1 -1
  542. package/dist/lib/utils.js +3 -1
  543. package/dist/lib/utils.js.map +1 -1
  544. package/dist/patterns/element-anatomy/index.d.ts +2 -0
  545. package/dist/patterns/element-anatomy/index.d.ts.map +1 -0
  546. package/dist/patterns/element-anatomy/index.js +20 -0
  547. package/dist/patterns/element-anatomy/index.js.map +1 -0
  548. package/dist/patterns/element-anatomy/item-anatomy.d.ts +10 -6
  549. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -1
  550. package/dist/patterns/element-anatomy/item-anatomy.js +1 -1
  551. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -1
  552. package/dist/patterns/header-canonical/chrome-header.d.ts +13 -4
  553. package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -1
  554. package/dist/patterns/header-canonical/chrome-header.js +4 -2
  555. package/dist/patterns/header-canonical/chrome-header.js.map +1 -1
  556. package/dist/patterns/header-canonical/index.d.ts +2 -0
  557. package/dist/patterns/header-canonical/index.d.ts.map +1 -0
  558. package/dist/patterns/header-canonical/index.js +6 -0
  559. package/dist/patterns/header-canonical/index.js.map +1 -0
  560. package/dist/patterns/horizontal-overflow/index.d.ts +2 -0
  561. package/dist/patterns/horizontal-overflow/index.d.ts.map +1 -0
  562. package/dist/patterns/horizontal-overflow/index.js +14 -0
  563. package/dist/patterns/horizontal-overflow/index.js.map +1 -0
  564. package/dist/patterns/overlay-surface/index.d.ts +2 -0
  565. package/dist/patterns/overlay-surface/index.d.ts.map +1 -0
  566. package/dist/patterns/overlay-surface/index.js +8 -0
  567. package/dist/patterns/overlay-surface/index.js.map +1 -0
  568. package/dist/patterns/overlay-surface/overlay-surface.d.ts +11 -2
  569. package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -1
  570. package/dist/patterns/overlay-surface/overlay-surface.js +5 -2
  571. package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -1
  572. package/dist/patterns/resize-handle/index.d.ts +2 -0
  573. package/dist/patterns/resize-handle/index.d.ts.map +1 -0
  574. package/dist/patterns/resize-handle/index.js +5 -0
  575. package/dist/patterns/resize-handle/index.js.map +1 -0
  576. package/dist/story-governance/category-matrix.d.ts +35 -0
  577. package/dist/story-governance/category-matrix.d.ts.map +1 -0
  578. package/dist/tokens/categorical-color.d.ts +60 -0
  579. package/dist/tokens/categorical-color.d.ts.map +1 -0
  580. package/dist/tokens/categorical-color.js +110 -0
  581. package/dist/tokens/categorical-color.js.map +1 -0
  582. package/dist/tokens/motion/motion.d.ts +1 -1
  583. package/dist/tokens/motion/motion.d.ts.map +1 -1
  584. package/dist/tokens/motion/motion.js.map +1 -1
  585. package/dist/tokens/uiSize/icon-size.d.ts +3 -4
  586. package/dist/tokens/uiSize/icon-size.d.ts.map +1 -1
  587. package/ds-canonical/commands/README.md +26 -0
  588. package/ds-canonical/commands/gov-status.md +79 -0
  589. package/ds-canonical/fork/governance.lock +222 -0
  590. package/ds-canonical/fork/hooks/block_prototype_imports.py +111 -0
  591. package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +95 -0
  592. package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +349 -0
  593. package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +132 -0
  594. package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +140 -0
  595. package/ds-canonical/fork/hooks/check_field_family_invariants.sh +250 -0
  596. package/ds-canonical/fork/hooks/check_fork_product_quality.sh +36 -0
  597. package/ds-canonical/fork/hooks/check_item_list_gap.sh +54 -0
  598. package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +96 -0
  599. package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +158 -0
  600. package/ds-canonical/fork/hooks/check_pattern_invariants.sh +196 -0
  601. package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  602. package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +183 -0
  603. package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +79 -0
  604. package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +238 -0
  605. package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +44 -0
  606. package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +54 -0
  607. package/ds-canonical/fork/launchers/settings-hooks.json +58 -0
  608. package/ds-canonical/fork/manifest.json +98 -0
  609. package/ds-canonical/fork/preamble.md +495 -0
  610. package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +183 -0
  611. package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +65 -0
  612. package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +229 -0
  613. package/ds-canonical/fork/skills/delivery-handoff/references/flow-diagram.md +180 -0
  614. package/ds-canonical/fork/skills/delivery-handoff/references/handoff-template.md +177 -0
  615. package/ds-canonical/fork/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  616. package/ds-canonical/fork/skills/performance-audit/SKILL.md +107 -0
  617. package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +232 -0
  618. package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +246 -0
  619. package/ds-canonical/fork/skills/product-ui-audit/references/common-misuses.md +329 -0
  620. package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +159 -0
  621. package/ds-canonical/fork/skills/propose-options/SKILL.md +177 -0
  622. package/ds-canonical/fork/skills/prototype/SKILL.md +244 -0
  623. package/ds-canonical/fork/skills/prototype/references/audit-checks.md +38 -0
  624. package/ds-canonical/fork/skills/prototype/references/benchmark-sources.md +94 -0
  625. package/ds-canonical/fork/skills/prototype/references/checkpoints.md +191 -0
  626. package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +141 -0
  627. package/ds-canonical/fork/skills/prototype/references/ooux-template.md +198 -0
  628. package/ds-canonical/fork/skills/prototype/references/proposal-template.md +229 -0
  629. package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +200 -0
  630. package/ds-canonical/fork/skills/ux-audit/SKILL.md +130 -0
  631. package/ds-canonical/fork/skills/visual-audit/SKILL.md +247 -0
  632. package/ds-canonical/fork/skills/visual-audit/output/.gitkeep +0 -0
  633. package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +101 -0
  634. package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +297 -0
  635. package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  636. package/ds-canonical/hooks/README.md +145 -0
  637. package/ds-canonical/hooks/_log-fire.sh +46 -0
  638. package/ds-canonical/hooks/auto_regen_ds_barrel.sh +58 -0
  639. package/ds-canonical/hooks/block_prototype_imports.py +111 -0
  640. package/ds-canonical/hooks/check_audit_post_report_validator.sh +169 -0
  641. package/ds-canonical/hooks/check_audit_sample_escape.sh +76 -0
  642. package/ds-canonical/hooks/check_benchmark_citation.sh +106 -0
  643. package/ds-canonical/hooks/check_canonical_propagation.sh +189 -0
  644. package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +95 -0
  645. package/ds-canonical/hooks/check_codex_brief_invariants.sh +115 -0
  646. package/ds-canonical/hooks/check_codex_collab_5step.sh +108 -0
  647. package/ds-canonical/hooks/check_consumer_app_invariants.sh +349 -0
  648. package/ds-canonical/hooks/check_datatable_invariants.sh +180 -0
  649. package/ds-canonical/hooks/check_dim_count_drift.sh +72 -0
  650. package/ds-canonical/hooks/check_ds_anchor_preflight.sh +132 -0
  651. package/ds-canonical/hooks/check_escape_marker_abuse.sh +140 -0
  652. package/ds-canonical/hooks/check_field_controls_contracts.sh +137 -0
  653. package/ds-canonical/hooks/check_field_family_invariants.sh +250 -0
  654. package/ds-canonical/hooks/check_file_size_budget.sh +60 -0
  655. package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +72 -0
  656. package/ds-canonical/hooks/check_item_list_gap.sh +54 -0
  657. package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +96 -0
  658. package/ds-canonical/hooks/check_main_branch_workbench.sh +93 -0
  659. package/ds-canonical/hooks/check_naming_and_abstraction.sh +165 -0
  660. package/ds-canonical/hooks/check_opacity_token_usage.sh +158 -0
  661. package/ds-canonical/hooks/check_orphan_ds_css.sh +66 -0
  662. package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +75 -0
  663. package/ds-canonical/hooks/check_pattern_invariants.sh +196 -0
  664. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +56 -0
  665. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +53 -0
  666. package/ds-canonical/hooks/check_plugin_fork_health.sh +145 -0
  667. package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +90 -0
  668. package/ds-canonical/hooks/check_propose_discipline.sh +147 -0
  669. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +70 -0
  670. package/ds-canonical/hooks/check_propose_without_benchmark.sh +63 -0
  671. package/ds-canonical/hooks/check_select_all_canonical.sh +58 -0
  672. package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  673. package/ds-canonical/hooks/check_solo_workflow.sh +317 -0
  674. package/ds-canonical/hooks/check_spec_class_drift.sh +88 -0
  675. package/ds-canonical/hooks/check_story_invariants.sh +760 -0
  676. package/ds-canonical/hooks/check_storybook_addon_packaging.sh +151 -0
  677. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +113 -0
  678. package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +183 -0
  679. package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +79 -0
  680. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +104 -0
  681. package/ds-canonical/hooks/chrome_header_dispatcher.sh +56 -0
  682. package/ds-canonical/hooks/enforce_home_charter.sh +44 -0
  683. package/ds-canonical/hooks/inject_deploy_url_after_push.sh +238 -0
  684. package/ds-canonical/hooks/inject_pending_self_audit.sh +248 -0
  685. package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +100 -0
  686. package/ds-canonical/hooks/lib/_approval_re.sh +33 -0
  687. package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +75 -0
  688. package/ds-canonical/hooks/lib/_code_quality.sh +73 -0
  689. package/ds-canonical/hooks/lib/_cva_default_sync.sh +69 -0
  690. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +49 -0
  691. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +163 -0
  692. package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +87 -0
  693. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +56 -0
  694. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +162 -0
  695. package/ds-canonical/hooks/lib/_person_data_richness.sh +42 -0
  696. package/ds-canonical/hooks/lib/_story_compile_drift.sh +48 -0
  697. package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +70 -0
  698. package/ds-canonical/hooks/lib/_token_hygiene.sh +104 -0
  699. package/ds-canonical/hooks/log_governance_fires.sh +50 -0
  700. package/ds-canonical/hooks/log_skill_invokes.sh +41 -0
  701. package/ds-canonical/hooks/post_edit_dispatcher.sh +62 -0
  702. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_addon_subdir_ship.sh +76 -0
  703. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_app_story_title.sh +81 -0
  704. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_ds_primitive_misuse.sh +120 -0
  705. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_no_ds_catalog.sh +101 -0
  706. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_story_baseline.sh +76 -0
  707. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_data_table_size_num_to_meta_width.sh +68 -0
  708. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_fork_user_plugin_install.sh +79 -0
  709. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_plugin_freshness.sh +68 -0
  710. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_cite_required.sh +88 -0
  711. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +74 -0
  712. package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_storybook_addon_preset_cjs.sh +87 -0
  713. package/ds-canonical/hooks/retired/check_anatomy_section_numbering.sh +106 -0
  714. package/ds-canonical/hooks/retired/check_avatar_hovercard.sh +90 -0
  715. package/ds-canonical/hooks/retired/check_button_icon_literal.sh.retired-2026-04-28 +38 -0
  716. package/ds-canonical/hooks/retired/check_container_breathing.sh +142 -0
  717. package/ds-canonical/hooks/retired/check_governance_compliance.sh +61 -0
  718. package/ds-canonical/hooks/retired/check_icon_only_padding_formula.sh +104 -0
  719. package/ds-canonical/hooks/retired/check_item_content_primitive.sh +150 -0
  720. package/ds-canonical/hooks/retired/check_item_list_gap.sh +153 -0
  721. package/ds-canonical/hooks/retired/check_sideoffset_canonical.sh +65 -0
  722. package/ds-canonical/hooks/retired/check_spec_iteration_tag.sh +87 -0
  723. package/ds-canonical/hooks/retired/check_ssot_consultation.sh +88 -0
  724. package/ds-canonical/hooks/retired/check_sync_update.sh +20 -0
  725. package/ds-canonical/hooks/retired/check_third_party_dom_verified.sh +95 -0
  726. package/ds-canonical/hooks/retired/enforce_home_charter.sh +125 -0
  727. package/ds-canonical/hooks/retired/post_edit_canonical_interrogate.sh +109 -0
  728. package/ds-canonical/hooks/retired/pre_edit_spec_check.sh +68 -0
  729. package/ds-canonical/hooks/retired/pre_new_component_spec.sh +39 -0
  730. package/ds-canonical/hooks/retired/pre_write_subsumption_check.sh +112 -0
  731. package/ds-canonical/hooks/retired/stop_meta_self_audit.sh.retired-2026-05-13 +76 -0
  732. package/ds-canonical/hooks/retired/tests/test_check_anatomy_section_numbering.sh +14 -0
  733. package/ds-canonical/hooks/retired/tests/test_check_avatar_hovercard.sh +15 -0
  734. package/ds-canonical/hooks/retired/tests/test_check_container_breathing.sh +15 -0
  735. package/ds-canonical/hooks/retired/tests/test_check_governance_compliance.sh +15 -0
  736. package/ds-canonical/hooks/retired/tests/test_check_icon_only_padding_formula.sh +79 -0
  737. package/ds-canonical/hooks/retired/tests/test_check_item_content_primitive.sh +15 -0
  738. package/ds-canonical/hooks/retired/tests/test_check_item_list_gap.sh +163 -0
  739. package/ds-canonical/hooks/retired/tests/test_check_sideoffset_canonical.sh +15 -0
  740. package/ds-canonical/hooks/retired/tests/test_check_spec_iteration_tag.sh +15 -0
  741. package/ds-canonical/hooks/retired/tests/test_check_ssot_consultation.sh +15 -0
  742. package/ds-canonical/hooks/retired/tests/test_check_sync_update.sh +14 -0
  743. package/ds-canonical/hooks/retired/tests/test_check_third_party_dom_verified.sh +15 -0
  744. package/ds-canonical/hooks/retired/tests/test_enforce_home_charter.sh +15 -0
  745. package/ds-canonical/hooks/retired/tests/test_pre_edit_spec_check.sh +15 -0
  746. package/ds-canonical/hooks/retired/tests/test_pre_new_component_spec.sh +15 -0
  747. package/ds-canonical/hooks/retired/tests/test_pre_write_subsumption_check.sh +63 -0
  748. package/ds-canonical/hooks/session_start_governance_check.sh +310 -0
  749. package/ds-canonical/hooks/stop_passive_logging.sh +322 -0
  750. package/ds-canonical/hooks/stop_self_audit.sh +516 -0
  751. package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +15 -0
  752. package/ds-canonical/hooks/tests/run-all.sh +76 -0
  753. package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +180 -0
  754. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +143 -0
  755. package/ds-canonical/hooks/tests/test_check_addon_subdir_ship.sh +171 -0
  756. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +196 -0
  757. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +127 -0
  758. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +93 -0
  759. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +115 -0
  760. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +133 -0
  761. package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +198 -0
  762. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +146 -0
  763. package/ds-canonical/hooks/tests/test_check_code_quality.sh +15 -0
  764. package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +208 -0
  765. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +96 -0
  766. package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +12 -0
  767. package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +164 -0
  768. package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +240 -0
  769. package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +214 -0
  770. package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +202 -0
  771. package/ds-canonical/hooks/tests/test_check_cva_default_sync.sh +15 -0
  772. package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +53 -0
  773. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +122 -0
  774. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +98 -0
  775. package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +104 -0
  776. package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +192 -0
  777. package/ds-canonical/hooks/tests/test_check_field_controls_contracts.sh +126 -0
  778. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +203 -0
  779. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +32 -0
  780. package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +46 -0
  781. package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +190 -0
  782. package/ds-canonical/hooks/tests/test_check_hardcoded_strings.sh +14 -0
  783. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +110 -0
  784. package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +44 -0
  785. package/ds-canonical/hooks/tests/test_check_layout_space_canonical.sh +73 -0
  786. package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +206 -0
  787. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +147 -0
  788. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +136 -0
  789. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +110 -0
  790. package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +212 -0
  791. package/ds-canonical/hooks/tests/test_check_overlay_handcraft.sh +126 -0
  792. package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +191 -0
  793. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +148 -0
  794. package/ds-canonical/hooks/tests/test_check_peoplepicker_ssot_drift.sh +108 -0
  795. package/ds-canonical/hooks/tests/test_check_person_data_richness.sh +58 -0
  796. package/ds-canonical/hooks/tests/test_check_pixel_quantified_audit.sh +142 -0
  797. package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +9 -0
  798. package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +181 -0
  799. package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +10 -0
  800. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +127 -0
  801. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +117 -0
  802. package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +55 -0
  803. package/ds-canonical/hooks/tests/test_check_select_all_canonical.sh +125 -0
  804. package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +224 -0
  805. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +201 -0
  806. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +135 -0
  807. package/ds-canonical/hooks/tests/test_check_story_anatomy.sh.broken +197 -0
  808. package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +187 -0
  809. package/ds-canonical/hooks/tests/test_check_story_compile_drift.sh +15 -0
  810. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +384 -0
  811. package/ds-canonical/hooks/tests/test_check_story_name_jargon.sh.broken +53 -0
  812. package/ds-canonical/hooks/tests/test_check_story_slot_split.sh +156 -0
  813. package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +10 -0
  814. package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +200 -0
  815. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +176 -0
  816. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +141 -0
  817. package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +182 -0
  818. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +21 -0
  819. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +169 -0
  820. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +77 -0
  821. package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +193 -0
  822. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +125 -0
  823. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +10 -0
  824. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +7 -0
  825. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +108 -0
  826. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +154 -0
  827. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +95 -0
  828. package/ds-canonical/hooks/tests/test_stop_governance_drift_check.sh.broken +125 -0
  829. package/ds-canonical/hooks/tests/test_stop_harvest_corrections.sh +10 -0
  830. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +100 -0
  831. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +98 -0
  832. package/ds-canonical/hooks/tests/test_stop_tsc_sanity.sh +10 -0
  833. package/ds-canonical/references/README.md +46 -0
  834. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +74 -0
  835. package/ds-canonical/references/build-ui-canonicals.md +72 -0
  836. package/ds-canonical/references/composition-fidelity.md +47 -0
  837. package/ds-canonical/references/cva-patterns.md +41 -0
  838. package/ds-canonical/references/drag-canonical.md +331 -0
  839. package/ds-canonical/references/item-anatomy-recipe.md +225 -0
  840. package/ds-canonical/references/naming-conventions.md +57 -0
  841. package/ds-canonical/references/principle-dim-map.json +613 -0
  842. package/ds-canonical/references/props-naming.md +59 -0
  843. package/ds-canonical/references/scenario-definition.md +146 -0
  844. package/ds-canonical/references/spec-rules.md +58 -0
  845. package/ds-canonical/references/ssot-consultation.md +63 -0
  846. package/ds-canonical/references/ssot-index.md +40 -0
  847. package/ds-canonical/references/story-baseline-registry.json +108 -0
  848. package/ds-canonical/references/structural-token-retention.md +42 -0
  849. package/ds-canonical/references/tailwind-gotchas.md +87 -0
  850. package/ds-canonical/references/ui-dev-rules.md +81 -0
  851. package/ds-canonical/rules/README.md +34 -0
  852. package/ds-canonical/rules/meta-patterns.md +87 -0
  853. package/ds-canonical/rules/self-verify.md +56 -0
  854. package/ds-canonical/rules/spec-rules.md +25 -0
  855. package/ds-canonical/rules/story-rules.md +67 -0
  856. package/ds-canonical/rules/ui-development.md +92 -0
  857. package/ds-canonical/skills/README.md +88 -0
  858. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +181 -0
  859. package/ds-canonical/skills/code-quality-audit/SKILL.md +63 -0
  860. package/ds-canonical/skills/codex-collab/SKILL.md +249 -0
  861. package/ds-canonical/skills/codex-collab/references/brief-template.md +48 -0
  862. package/ds-canonical/skills/codex-collab/references/transport.md +58 -0
  863. package/ds-canonical/skills/codify-corrections/SKILL.md +184 -0
  864. package/ds-canonical/skills/codify-principle/SKILL.md +151 -0
  865. package/ds-canonical/skills/component-quality-gate/SKILL.md +102 -0
  866. package/ds-canonical/skills/component-quality-gate/references/checklist.md +79 -0
  867. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +254 -0
  868. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +123 -0
  869. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +186 -0
  870. package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +30 -0
  871. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +69 -0
  872. package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +33 -0
  873. package/ds-canonical/skills/delivery-handoff/SKILL.md +229 -0
  874. package/ds-canonical/skills/delivery-handoff/references/flow-diagram.md +180 -0
  875. package/ds-canonical/skills/delivery-handoff/references/handoff-template.md +177 -0
  876. package/ds-canonical/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  877. package/ds-canonical/skills/design-system-audit/SKILL.md +386 -0
  878. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +1325 -0
  879. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +240 -0
  880. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +240 -0
  881. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +378 -0
  882. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +175 -0
  883. package/ds-canonical/skills/ensure-canonical/SKILL.md +196 -0
  884. package/ds-canonical/skills/governance-health/SKILL.md +147 -0
  885. package/ds-canonical/skills/knowledge-prune/SKILL.md +250 -0
  886. package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +11 -0
  887. package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +55 -0
  888. package/ds-canonical/skills/knowledge-prune/references/world-class-prune-alignment.md +7 -0
  889. package/ds-canonical/skills/new-component/SKILL.md +170 -0
  890. package/ds-canonical/skills/new-component/references/new-component-checklist.md +85 -0
  891. package/ds-canonical/skills/performance-audit/SKILL.md +107 -0
  892. package/ds-canonical/skills/product-ui-audit/SKILL.md +230 -0
  893. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +246 -0
  894. package/ds-canonical/skills/product-ui-audit/references/common-misuses.md +329 -0
  895. package/ds-canonical/skills/product-ui-audit/references/report-template.md +159 -0
  896. package/ds-canonical/skills/propose-options/SKILL.md +177 -0
  897. package/ds-canonical/skills/prototype/SKILL.md +244 -0
  898. package/ds-canonical/skills/prototype/references/audit-checks.md +37 -0
  899. package/ds-canonical/skills/prototype/references/benchmark-sources.md +94 -0
  900. package/ds-canonical/skills/prototype/references/checkpoints.md +191 -0
  901. package/ds-canonical/skills/prototype/references/evaluation-matrix.md +141 -0
  902. package/ds-canonical/skills/prototype/references/ooux-template.md +198 -0
  903. package/ds-canonical/skills/prototype/references/proposal-template.md +229 -0
  904. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +198 -0
  905. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +159 -0
  906. package/ds-canonical/skills/story-writing/SKILL.md +122 -0
  907. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +217 -0
  908. package/ds-canonical/skills/story-writing/references/category-templates.md +174 -0
  909. package/ds-canonical/skills/story-writing/references/example-selection.md +70 -0
  910. package/ds-canonical/skills/story-writing/references/self-check.md +20 -0
  911. package/ds-canonical/skills/ux-audit/SKILL.md +130 -0
  912. package/ds-canonical/skills/visual-audit/SKILL.md +245 -0
  913. package/ds-canonical/skills/visual-audit/output/.gitkeep +0 -0
  914. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +100 -0
  915. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +297 -0
  916. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  917. package/ds-canonical/templates/_README.md +23 -0
  918. package/ds-canonical/templates/dashboard-app.tsx +161 -0
  919. package/ds-story-manifest.json +1684 -0
  920. package/llms-full.txt +419 -0
  921. package/llms.txt +71 -0
  922. package/package.json +31 -8
  923. package/src/components/Accordion/accordion.anatomy.stories.tsx +496 -0
  924. package/src/components/Accordion/accordion.principles.stories.tsx +360 -0
  925. package/src/components/Accordion/accordion.spec.md +131 -0
  926. package/src/components/Accordion/accordion.stories.tsx +190 -0
  927. package/src/components/Accordion/accordion.tsx +4 -1
  928. package/src/components/Accordion/index.ts +5 -0
  929. package/src/components/Alert/alert.anatomy.stories.tsx +241 -0
  930. package/src/components/Alert/alert.principles.stories.tsx +220 -0
  931. package/src/components/Alert/alert.spec.md +202 -0
  932. package/src/components/Alert/alert.stories.tsx +139 -0
  933. package/src/components/Alert/alert.tsx +18 -7
  934. package/src/components/Alert/index.ts +5 -0
  935. package/src/components/AppShell/_demo-helpers.tsx +87 -11
  936. package/src/components/AppShell/app-shell.anatomy.stories.tsx +179 -0
  937. package/src/components/AppShell/app-shell.principles.stories.tsx +140 -0
  938. package/src/components/AppShell/app-shell.spec.md +358 -0
  939. package/src/components/AppShell/app-shell.stories.tsx +442 -0
  940. package/src/components/AppShell/app-shell.tsx +16 -10
  941. package/src/components/AppShell/index.ts +5 -0
  942. package/src/components/AspectRatio/aspect-ratio.anatomy.stories.tsx +208 -0
  943. package/src/components/AspectRatio/aspect-ratio.principles.stories.tsx +303 -0
  944. package/src/components/AspectRatio/aspect-ratio.spec.md +147 -0
  945. package/src/components/AspectRatio/aspect-ratio.stories.tsx +170 -0
  946. package/src/components/AspectRatio/aspect-ratio.tsx +6 -3
  947. package/src/components/AspectRatio/index.ts +5 -0
  948. package/src/components/Avatar/avatar.anatomy.stories.tsx +701 -0
  949. package/src/components/Avatar/avatar.principles.stories.tsx +245 -0
  950. package/src/components/Avatar/avatar.spec.md +312 -0
  951. package/src/components/Avatar/avatar.stories.tsx +135 -0
  952. package/src/components/Avatar/avatar.tsx +61 -54
  953. package/src/components/Avatar/index.ts +5 -0
  954. package/src/components/Badge/badge.anatomy.stories.tsx +591 -0
  955. package/src/components/Badge/badge.principles.stories.tsx +391 -0
  956. package/src/components/Badge/badge.spec.md +398 -0
  957. package/src/components/Badge/badge.stories.tsx +80 -0
  958. package/src/components/Badge/badge.tsx +38 -14
  959. package/src/components/Badge/index.ts +5 -0
  960. package/src/components/Breadcrumb/breadcrumb.anatomy.stories.tsx +458 -0
  961. package/src/components/Breadcrumb/breadcrumb.principles.stories.tsx +348 -0
  962. package/src/components/Breadcrumb/breadcrumb.spec.md +270 -0
  963. package/src/components/Breadcrumb/breadcrumb.stories.tsx +307 -0
  964. package/src/components/Breadcrumb/breadcrumb.tsx +12 -6
  965. package/src/components/Breadcrumb/index.ts +5 -0
  966. package/src/components/BulkActionBar/bulk-action-bar.anatomy.stories.tsx +225 -0
  967. package/src/components/BulkActionBar/bulk-action-bar.principles.stories.tsx +242 -0
  968. package/src/components/BulkActionBar/bulk-action-bar.spec.md +227 -0
  969. package/src/components/BulkActionBar/bulk-action-bar.stories.tsx +136 -0
  970. package/src/components/BulkActionBar/bulk-action-bar.tsx +14 -12
  971. package/src/components/BulkActionBar/index.ts +5 -0
  972. package/src/components/Button/button.anatomy.stories.tsx +710 -0
  973. package/src/components/Button/button.principles.stories.tsx +370 -0
  974. package/src/components/Button/button.spec.md +463 -0
  975. package/src/components/Button/button.stories.tsx +362 -0
  976. package/src/components/Button/button.tsx +86 -52
  977. package/src/components/Button/index.ts +6 -0
  978. package/src/components/Calendar/calendar.anatomy.stories.tsx +218 -0
  979. package/src/components/Calendar/calendar.principles.stories.tsx +143 -0
  980. package/src/components/Calendar/calendar.spec.md +270 -0
  981. package/src/components/Calendar/calendar.stories.tsx +88 -0
  982. package/src/components/Calendar/calendar.tsx +54 -40
  983. package/src/components/Calendar/index.ts +5 -0
  984. package/src/components/Carousel/carousel.anatomy.stories.tsx +516 -0
  985. package/src/components/Carousel/carousel.principles.stories.tsx +330 -0
  986. package/src/components/Carousel/carousel.spec.md +273 -0
  987. package/src/components/Carousel/carousel.stories.tsx +121 -0
  988. package/src/components/Carousel/carousel.tsx +27 -7
  989. package/src/components/Carousel/index.ts +5 -0
  990. package/src/components/Chart/chart.anatomy.stories.tsx +307 -0
  991. package/src/components/Chart/chart.principles.stories.tsx +436 -0
  992. package/src/components/Chart/chart.spec.md +174 -0
  993. package/src/components/Chart/chart.stories.tsx +268 -0
  994. package/src/components/Chart/chart.tsx +7 -3
  995. package/src/components/Chart/index.ts +5 -0
  996. package/src/components/Checkbox/checkbox-group.tsx +2 -1
  997. package/src/components/Checkbox/checkbox.anatomy.stories.tsx +626 -0
  998. package/src/components/Checkbox/checkbox.principles.stories.tsx +216 -0
  999. package/src/components/Checkbox/checkbox.spec.md +372 -0
  1000. package/src/components/Checkbox/checkbox.stories.tsx +114 -0
  1001. package/src/components/Checkbox/checkbox.tsx +115 -24
  1002. package/src/components/Checkbox/index.ts +6 -0
  1003. package/src/components/Chip/chip.anatomy.stories.tsx +422 -0
  1004. package/src/components/Chip/chip.principles.stories.tsx +228 -0
  1005. package/src/components/Chip/chip.spec.md +237 -0
  1006. package/src/components/Chip/chip.stories.tsx +88 -0
  1007. package/src/components/Chip/chip.tsx +10 -10
  1008. package/src/components/Chip/index.ts +5 -0
  1009. package/src/components/CircularProgress/circular-progress.anatomy.stories.tsx +176 -0
  1010. package/src/components/CircularProgress/circular-progress.principles.stories.tsx +260 -0
  1011. package/src/components/CircularProgress/circular-progress.spec.md +269 -0
  1012. package/src/components/CircularProgress/circular-progress.stories.tsx +145 -0
  1013. package/src/components/CircularProgress/circular-progress.tsx +4 -5
  1014. package/src/components/CircularProgress/index.ts +5 -0
  1015. package/src/components/Coachmark/coachmark-story-helpers.tsx +39 -0
  1016. package/src/components/Coachmark/coachmark.anatomy.stories.tsx +356 -0
  1017. package/src/components/Coachmark/coachmark.principles.stories.tsx +355 -0
  1018. package/src/components/Coachmark/coachmark.spec.md +238 -0
  1019. package/src/components/Coachmark/coachmark.stories.tsx +214 -0
  1020. package/src/components/Coachmark/coachmark.tsx +26 -9
  1021. package/src/components/Coachmark/index.ts +5 -0
  1022. package/src/components/Combobox/combobox.anatomy.stories.tsx +919 -0
  1023. package/src/components/Combobox/combobox.principles.stories.tsx +239 -0
  1024. package/src/components/Combobox/combobox.spec.md +202 -0
  1025. package/src/components/Combobox/combobox.stories.tsx +184 -0
  1026. package/src/components/Combobox/combobox.tsx +109 -55
  1027. package/src/components/Combobox/index.ts +5 -0
  1028. package/src/components/Command/command.anatomy.stories.tsx +107 -0
  1029. package/src/components/Command/command.principles.stories.tsx +86 -0
  1030. package/src/components/Command/command.spec.md +181 -0
  1031. package/src/components/Command/command.stories.tsx +280 -0
  1032. package/src/components/Command/command.tsx +14 -9
  1033. package/src/components/Command/index.ts +5 -0
  1034. package/src/components/DataTable/active-editor-controller.ts +4 -3
  1035. package/src/components/DataTable/cell-registry.tsx +27 -6
  1036. package/src/components/DataTable/data-table-filter-panel.tsx +16 -10
  1037. package/src/components/DataTable/data-table-interaction-layer.tsx +8 -7
  1038. package/src/components/DataTable/data-table-sort-manager.tsx +4 -4
  1039. package/src/components/DataTable/data-table.anatomy.stories.tsx +519 -0
  1040. package/src/components/DataTable/data-table.css +3 -3
  1041. package/src/components/DataTable/data-table.principles.stories.tsx +265 -0
  1042. package/src/components/DataTable/data-table.spec.md +540 -0
  1043. package/src/components/DataTable/data-table.stories.tsx +1942 -0
  1044. package/src/components/DataTable/data-table.tsx +323 -104
  1045. package/src/components/DataTable/filter-operators.spec.md +267 -0
  1046. package/src/components/DataTable/filter-operators.ts +1 -1
  1047. package/src/components/DataTable/filter-tree.ts +34 -11
  1048. package/src/components/DataTable/index.ts +5 -0
  1049. package/src/components/DateGrid/date-grid.anatomy.stories.tsx +583 -0
  1050. package/src/components/DateGrid/date-grid.principles.stories.tsx +338 -0
  1051. package/src/components/DateGrid/date-grid.spec.md +220 -0
  1052. package/src/components/DateGrid/date-grid.stories.tsx +195 -0
  1053. package/src/components/DateGrid/date-grid.tsx +29 -23
  1054. package/src/components/DateGrid/index.ts +5 -0
  1055. package/src/components/DatePicker/date-picker.anatomy.stories.tsx +952 -0
  1056. package/src/components/DatePicker/date-picker.principles.stories.tsx +205 -0
  1057. package/src/components/DatePicker/date-picker.spec.md +338 -0
  1058. package/src/components/DatePicker/date-picker.stories.tsx +342 -0
  1059. package/src/components/DatePicker/date-picker.tsx +79 -34
  1060. package/src/components/DatePicker/index.ts +5 -0
  1061. package/src/components/DescriptionList/description-list.anatomy.stories.tsx +252 -0
  1062. package/src/components/DescriptionList/description-list.principles.stories.tsx +309 -0
  1063. package/src/components/DescriptionList/description-list.spec.md +220 -0
  1064. package/src/components/DescriptionList/description-list.stories.tsx +112 -0
  1065. package/src/components/DescriptionList/description-list.tsx +3 -3
  1066. package/src/components/DescriptionList/index.ts +5 -0
  1067. package/src/components/Dialog/dialog.anatomy.stories.tsx +484 -0
  1068. package/src/components/Dialog/dialog.principles.stories.tsx +313 -0
  1069. package/src/components/Dialog/dialog.spec.md +216 -0
  1070. package/src/components/Dialog/dialog.stories.tsx +483 -0
  1071. package/src/components/Dialog/dialog.tsx +11 -10
  1072. package/src/components/Dialog/index.ts +5 -0
  1073. package/src/components/DropdownMenu/dropdown-menu.anatomy.stories.tsx +971 -0
  1074. package/src/components/DropdownMenu/dropdown-menu.principles.stories.tsx +339 -0
  1075. package/src/components/DropdownMenu/dropdown-menu.spec.md +262 -0
  1076. package/src/components/DropdownMenu/dropdown-menu.stories.tsx +286 -0
  1077. package/src/components/DropdownMenu/dropdown-menu.tsx +39 -9
  1078. package/src/components/DropdownMenu/index.ts +5 -0
  1079. package/src/components/Empty/empty.anatomy.stories.tsx +275 -0
  1080. package/src/components/Empty/empty.principles.stories.tsx +314 -0
  1081. package/src/components/Empty/empty.spec.md +217 -0
  1082. package/src/components/Empty/empty.stories.tsx +69 -0
  1083. package/src/components/Empty/empty.tsx +16 -7
  1084. package/src/components/Empty/index.ts +5 -0
  1085. package/src/components/Field/field-context.ts +98 -0
  1086. package/src/components/Field/field-controls.spec.md +383 -0
  1087. package/src/components/Field/field-types.ts +1 -1
  1088. package/src/components/Field/field-wrapper.tsx +34 -14
  1089. package/src/components/Field/field.anatomy.stories.tsx +544 -0
  1090. package/src/components/Field/field.principles.stories.tsx +278 -0
  1091. package/src/components/Field/field.spec.md +462 -0
  1092. package/src/components/Field/field.stories.tsx +716 -0
  1093. package/src/components/Field/field.tsx +12 -5
  1094. package/src/components/Field/form-validation.spec.md +175 -0
  1095. package/src/components/Field/index.ts +5 -0
  1096. package/src/components/Field/use-form-validation.ts +266 -0
  1097. package/src/components/FieldControlGroup/field-control-group.anatomy.stories.tsx +119 -0
  1098. package/src/components/FieldControlGroup/field-control-group.principles.stories.tsx +121 -0
  1099. package/src/components/FieldControlGroup/field-control-group.spec.md +195 -0
  1100. package/src/components/FieldControlGroup/field-control-group.stories.tsx +161 -0
  1101. package/src/components/FieldControlGroup/field-control-group.tsx +12 -11
  1102. package/src/components/FieldControlGroup/index.ts +5 -0
  1103. package/src/components/FileItem/file-item.anatomy.stories.tsx +346 -0
  1104. package/src/components/FileItem/file-item.principles.stories.tsx +276 -0
  1105. package/src/components/FileItem/file-item.spec.md +491 -0
  1106. package/src/components/FileItem/file-item.stories.tsx +265 -0
  1107. package/src/components/FileItem/file-item.tsx +40 -15
  1108. package/src/components/FileItem/index.ts +5 -0
  1109. package/src/components/FileUpload/file-upload.anatomy.stories.tsx +446 -0
  1110. package/src/components/FileUpload/file-upload.principles.stories.tsx +312 -0
  1111. package/src/components/FileUpload/file-upload.spec.md +166 -0
  1112. package/src/components/FileUpload/file-upload.stories.tsx +167 -0
  1113. package/src/components/FileUpload/file-upload.tsx +97 -31
  1114. package/src/components/FileUpload/index.ts +5 -0
  1115. package/src/components/FileViewer/file-viewer.anatomy.stories.tsx +1129 -0
  1116. package/src/components/FileViewer/file-viewer.principles.stories.tsx +636 -0
  1117. package/src/components/FileViewer/file-viewer.spec.md +368 -0
  1118. package/src/components/FileViewer/file-viewer.stories.tsx +407 -0
  1119. package/src/components/FileViewer/file-viewer.tsx +62 -31
  1120. package/src/components/FileViewer/index.ts +5 -0
  1121. package/src/components/HoverCard/hover-card.anatomy.stories.tsx +145 -0
  1122. package/src/components/HoverCard/hover-card.principles.stories.tsx +222 -0
  1123. package/src/components/HoverCard/hover-card.spec.md +167 -0
  1124. package/src/components/HoverCard/hover-card.stories.tsx +304 -0
  1125. package/src/components/HoverCard/hover-card.tsx +15 -4
  1126. package/src/components/HoverCard/index.ts +5 -0
  1127. package/src/components/Input/index.ts +5 -0
  1128. package/src/components/Input/input.anatomy.stories.tsx +763 -0
  1129. package/src/components/Input/input.principles.stories.tsx +265 -0
  1130. package/src/components/Input/input.spec.md +207 -0
  1131. package/src/components/Input/input.stories.tsx +139 -0
  1132. package/src/components/Input/input.tsx +18 -19
  1133. package/src/components/LinkInput/index.ts +5 -0
  1134. package/src/components/LinkInput/link-input.anatomy.stories.tsx +748 -0
  1135. package/src/components/LinkInput/link-input.principles.stories.tsx +182 -0
  1136. package/src/components/LinkInput/link-input.spec.md +144 -0
  1137. package/src/components/LinkInput/link-input.stories.tsx +132 -0
  1138. package/src/components/LinkInput/link-input.tsx +53 -40
  1139. package/src/components/Menu/index.ts +5 -0
  1140. package/src/components/Menu/menu-item.anatomy.stories.tsx +780 -0
  1141. package/src/components/Menu/menu-item.principles.stories.tsx +81 -0
  1142. package/src/components/Menu/menu-item.spec.md +305 -0
  1143. package/src/components/Menu/menu-item.stories.tsx +214 -0
  1144. package/src/components/Menu/menu-item.tsx +11 -4
  1145. package/src/components/Notice/index.ts +5 -0
  1146. package/src/components/Notice/notice.anatomy.stories.tsx +615 -0
  1147. package/src/components/Notice/notice.principles.stories.tsx +102 -0
  1148. package/src/components/Notice/notice.spec.md +159 -0
  1149. package/src/components/Notice/notice.stories.tsx +257 -0
  1150. package/src/components/Notice/notice.tsx +47 -14
  1151. package/src/components/NumberInput/index.ts +5 -0
  1152. package/src/components/NumberInput/number-input.anatomy.stories.tsx +788 -0
  1153. package/src/components/NumberInput/number-input.principles.stories.tsx +200 -0
  1154. package/src/components/NumberInput/number-input.spec.md +145 -0
  1155. package/src/components/NumberInput/number-input.stories.tsx +142 -0
  1156. package/src/components/NumberInput/number-input.tsx +32 -18
  1157. package/src/components/OverflowIndicator/index.ts +5 -0
  1158. package/src/components/OverflowIndicator/overflow-indicator.anatomy.stories.tsx +549 -0
  1159. package/src/components/OverflowIndicator/overflow-indicator.principles.stories.tsx +77 -0
  1160. package/src/components/OverflowIndicator/overflow-indicator.spec.md +127 -0
  1161. package/src/components/OverflowIndicator/overflow-indicator.stories.tsx +238 -0
  1162. package/src/components/OverflowIndicator/overflow-indicator.tsx +21 -7
  1163. package/src/components/PeoplePicker/index.ts +5 -0
  1164. package/src/components/PeoplePicker/people-picker-helpers.ts +5 -5
  1165. package/src/components/PeoplePicker/people-picker.anatomy.stories.tsx +427 -0
  1166. package/src/components/PeoplePicker/people-picker.principles.stories.tsx +192 -0
  1167. package/src/components/PeoplePicker/people-picker.spec.md +292 -0
  1168. package/src/components/PeoplePicker/people-picker.stories.tsx +162 -0
  1169. package/src/components/PeoplePicker/people-picker.tsx +92 -74
  1170. package/src/components/PeoplePicker/person-display.tsx +35 -32
  1171. package/src/components/Popover/index.ts +5 -0
  1172. package/src/components/Popover/popover.anatomy.stories.tsx +279 -0
  1173. package/src/components/Popover/popover.principles.stories.tsx +295 -0
  1174. package/src/components/Popover/popover.spec.md +207 -0
  1175. package/src/components/Popover/popover.stories.tsx +116 -0
  1176. package/src/components/Popover/popover.tsx +19 -16
  1177. package/src/components/ProfileCard/index.ts +5 -0
  1178. package/src/components/ProfileCard/profile-card.anatomy.stories.tsx +504 -0
  1179. package/src/components/ProfileCard/profile-card.principles.stories.tsx +225 -0
  1180. package/src/components/ProfileCard/profile-card.spec.md +190 -0
  1181. package/src/components/ProfileCard/profile-card.stories.tsx +53 -0
  1182. package/src/components/{NameCard/name-card.tsx → ProfileCard/profile-card.tsx} +39 -30
  1183. package/src/components/ProgressBar/index.ts +5 -0
  1184. package/src/components/ProgressBar/progress-bar.anatomy.stories.tsx +438 -0
  1185. package/src/components/ProgressBar/progress-bar.principles.stories.tsx +339 -0
  1186. package/src/components/ProgressBar/progress-bar.spec.md +240 -0
  1187. package/src/components/ProgressBar/progress-bar.stories.tsx +119 -0
  1188. package/src/components/ProgressBar/progress-bar.tsx +4 -4
  1189. package/src/components/RadioGroup/index.ts +5 -0
  1190. package/src/components/RadioGroup/radio-group.anatomy.stories.tsx +681 -0
  1191. package/src/components/RadioGroup/radio-group.principles.stories.tsx +163 -0
  1192. package/src/components/RadioGroup/radio-group.spec.md +149 -0
  1193. package/src/components/RadioGroup/radio-group.stories.tsx +103 -0
  1194. package/src/components/RadioGroup/radio-group.tsx +150 -60
  1195. package/src/components/Rating/index.ts +5 -0
  1196. package/src/components/Rating/rating.anatomy.stories.tsx +498 -0
  1197. package/src/components/Rating/rating.principles.stories.tsx +296 -0
  1198. package/src/components/Rating/rating.spec.md +214 -0
  1199. package/src/components/Rating/rating.stories.tsx +133 -0
  1200. package/src/components/Rating/rating.tsx +32 -17
  1201. package/src/components/ScrollArea/index.ts +5 -0
  1202. package/src/components/ScrollArea/scroll-area.anatomy.stories.tsx +451 -0
  1203. package/src/components/ScrollArea/scroll-area.principles.stories.tsx +331 -0
  1204. package/src/components/ScrollArea/scroll-area.spec.md +144 -0
  1205. package/src/components/ScrollArea/scroll-area.stories.tsx +243 -0
  1206. package/src/components/ScrollArea/scroll-area.tsx +3 -3
  1207. package/src/components/SegmentedControl/index.ts +5 -0
  1208. package/src/components/SegmentedControl/segmented-control.anatomy.stories.tsx +295 -0
  1209. package/src/components/SegmentedControl/segmented-control.principles.stories.tsx +281 -0
  1210. package/src/components/SegmentedControl/segmented-control.spec.md +297 -0
  1211. package/src/components/SegmentedControl/segmented-control.stories.tsx +33 -0
  1212. package/src/components/SegmentedControl/segmented-control.tsx +25 -16
  1213. package/src/components/Select/index.ts +5 -0
  1214. package/src/components/Select/select.anatomy.stories.tsx +828 -0
  1215. package/src/components/Select/select.principles.stories.tsx +311 -0
  1216. package/src/components/Select/select.spec.md +338 -0
  1217. package/src/components/Select/select.stories.tsx +198 -0
  1218. package/src/components/Select/select.tsx +72 -30
  1219. package/src/components/SelectMenu/index.ts +5 -0
  1220. package/src/components/SelectMenu/select-menu.anatomy.stories.tsx +812 -0
  1221. package/src/components/SelectMenu/select-menu.principles.stories.tsx +107 -0
  1222. package/src/components/SelectMenu/select-menu.spec.md +232 -0
  1223. package/src/components/SelectMenu/select-menu.stories.tsx +155 -0
  1224. package/src/components/SelectMenu/select-menu.tsx +123 -16
  1225. package/src/components/SelectionControl/index.ts +5 -0
  1226. package/src/components/SelectionControl/selection-item.anatomy.stories.tsx +571 -0
  1227. package/src/components/SelectionControl/selection-item.principles.stories.tsx +77 -0
  1228. package/src/components/SelectionControl/selection-item.spec.md +142 -0
  1229. package/src/components/SelectionControl/selection-item.stories.tsx +137 -0
  1230. package/src/components/SelectionControl/selection-item.tsx +8 -2
  1231. package/src/components/Separator/index.ts +5 -0
  1232. package/src/components/Separator/separator.anatomy.stories.tsx +125 -0
  1233. package/src/components/Separator/separator.principles.stories.tsx +141 -0
  1234. package/src/components/Separator/separator.spec.md +115 -0
  1235. package/src/components/Separator/separator.stories.tsx +127 -0
  1236. package/src/components/Separator/separator.tsx +2 -2
  1237. package/src/components/Sheet/index.ts +5 -0
  1238. package/src/components/Sheet/sheet.anatomy.stories.tsx +269 -0
  1239. package/src/components/Sheet/sheet.principles.stories.tsx +351 -0
  1240. package/src/components/Sheet/sheet.spec.md +146 -0
  1241. package/src/components/Sheet/sheet.stories.tsx +168 -0
  1242. package/src/components/Sheet/sheet.tsx +9 -7
  1243. package/src/components/Sidebar/index.ts +5 -0
  1244. package/src/components/Sidebar/sidebar.anatomy.stories.tsx +772 -0
  1245. package/src/components/Sidebar/sidebar.principles.stories.tsx +505 -0
  1246. package/src/components/Sidebar/sidebar.spec.md +725 -0
  1247. package/src/components/Sidebar/sidebar.stories.tsx +500 -0
  1248. package/src/components/Sidebar/sidebar.tsx +56 -20
  1249. package/src/components/Skeleton/index.ts +5 -0
  1250. package/src/components/Skeleton/skeleton.anatomy.stories.tsx +145 -0
  1251. package/src/components/Skeleton/skeleton.principles.stories.tsx +234 -0
  1252. package/src/components/Skeleton/skeleton.spec.md +105 -0
  1253. package/src/components/Skeleton/skeleton.stories.tsx +137 -0
  1254. package/src/components/Skeleton/skeleton.tsx +2 -2
  1255. package/src/components/Slider/index.ts +5 -0
  1256. package/src/components/Slider/slider.anatomy.stories.tsx +236 -0
  1257. package/src/components/Slider/slider.principles.stories.tsx +250 -0
  1258. package/src/components/Slider/slider.spec.md +358 -0
  1259. package/src/components/Slider/slider.stories.tsx +99 -0
  1260. package/src/components/Slider/slider.tsx +54 -16
  1261. package/src/components/Steps/index.ts +5 -0
  1262. package/src/components/Steps/steps.anatomy.stories.tsx +448 -0
  1263. package/src/components/Steps/steps.principles.stories.tsx +300 -0
  1264. package/src/components/Steps/steps.spec.md +480 -0
  1265. package/src/components/Steps/steps.stories.tsx +335 -0
  1266. package/src/components/Steps/steps.tsx +67 -29
  1267. package/src/components/Switch/index.ts +5 -0
  1268. package/src/components/Switch/switch.anatomy.stories.tsx +227 -0
  1269. package/src/components/Switch/switch.principles.stories.tsx +174 -0
  1270. package/src/components/Switch/switch.spec.md +238 -0
  1271. package/src/components/Switch/switch.stories.tsx +107 -0
  1272. package/src/components/Switch/switch.tsx +116 -38
  1273. package/src/components/Tabs/index.ts +5 -0
  1274. package/src/components/Tabs/tabs.anatomy.stories.tsx +415 -0
  1275. package/src/components/Tabs/tabs.principles.stories.tsx +259 -0
  1276. package/src/components/Tabs/tabs.spec.md +332 -0
  1277. package/src/components/Tabs/tabs.stories.tsx +155 -0
  1278. package/src/components/Tabs/tabs.tsx +49 -35
  1279. package/src/components/Tag/index.ts +5 -0
  1280. package/src/components/Tag/tag.anatomy.stories.tsx +664 -0
  1281. package/src/components/Tag/tag.principles.stories.tsx +270 -0
  1282. package/src/components/Tag/tag.spec.md +324 -0
  1283. package/src/components/Tag/tag.stories.tsx +69 -0
  1284. package/src/components/Tag/tag.tsx +59 -57
  1285. package/src/components/Textarea/index.ts +5 -0
  1286. package/src/components/Textarea/textarea.anatomy.stories.tsx +304 -0
  1287. package/src/components/Textarea/textarea.principles.stories.tsx +175 -0
  1288. package/src/components/Textarea/textarea.spec.md +163 -0
  1289. package/src/components/Textarea/textarea.stories.tsx +53 -0
  1290. package/src/components/Textarea/textarea.tsx +36 -27
  1291. package/src/components/TimePicker/index.ts +5 -0
  1292. package/src/components/TimePicker/time-columns.tsx +8 -1
  1293. package/src/components/TimePicker/time-picker.anatomy.stories.tsx +282 -0
  1294. package/src/components/TimePicker/time-picker.principles.stories.tsx +140 -0
  1295. package/src/components/TimePicker/time-picker.spec.md +290 -0
  1296. package/src/components/TimePicker/time-picker.stories.tsx +193 -0
  1297. package/src/components/TimePicker/time-picker.tsx +46 -30
  1298. package/src/components/Toast/index.ts +5 -0
  1299. package/src/components/Toast/toast.anatomy.stories.tsx +323 -0
  1300. package/src/components/Toast/toast.principles.stories.tsx +216 -0
  1301. package/src/components/Toast/toast.spec.md +181 -0
  1302. package/src/components/Toast/toast.stories.tsx +129 -0
  1303. package/src/components/Toast/toast.tsx +11 -8
  1304. package/src/components/Tooltip/index.ts +5 -0
  1305. package/src/components/Tooltip/tooltip.anatomy.stories.tsx +413 -0
  1306. package/src/components/Tooltip/tooltip.principles.stories.tsx +204 -0
  1307. package/src/components/Tooltip/tooltip.spec.md +142 -0
  1308. package/src/components/Tooltip/tooltip.stories.tsx +116 -0
  1309. package/src/components/Tooltip/tooltip.tsx +5 -2
  1310. package/src/components/TreeView/index.ts +5 -0
  1311. package/src/components/TreeView/tree-view.anatomy.stories.tsx +431 -0
  1312. package/src/components/TreeView/tree-view.principles.stories.tsx +190 -0
  1313. package/src/components/TreeView/tree-view.spec.md +390 -0
  1314. package/src/components/TreeView/tree-view.stories.tsx +299 -0
  1315. package/src/components/TreeView/tree-view.tsx +79 -27
  1316. package/src/hooks/use-overflow-items.ts +10 -6
  1317. package/src/index.ts +73 -69
  1318. package/src/lib/utils.ts +2 -1
  1319. package/src/patterns/README.md +15 -11
  1320. package/src/patterns/action-bar/action-bar.spec.md +465 -0
  1321. package/src/patterns/action-bar/action-bar.stories.tsx +612 -0
  1322. package/src/patterns/element-anatomy/element-anatomy.spec.md +217 -0
  1323. package/src/patterns/element-anatomy/index.ts +5 -0
  1324. package/src/patterns/element-anatomy/inline-action.spec.md +320 -0
  1325. package/src/patterns/element-anatomy/item-anatomy.spec.md +1043 -0
  1326. package/src/patterns/element-anatomy/item-anatomy.stories.tsx +1623 -0
  1327. package/src/patterns/element-anatomy/item-anatomy.tsx +10 -6
  1328. package/src/patterns/header-canonical/chrome-header.tsx +16 -5
  1329. package/src/patterns/header-canonical/header-canonical.css +3 -4
  1330. package/src/patterns/header-canonical/header-canonical.spec.md +326 -0
  1331. package/src/patterns/header-canonical/header-canonical.stories.tsx +150 -0
  1332. package/src/patterns/header-canonical/index.ts +5 -0
  1333. package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +212 -0
  1334. package/src/patterns/horizontal-overflow/index.ts +5 -0
  1335. package/src/patterns/overlay-surface/index.ts +5 -0
  1336. package/src/patterns/overlay-surface/overlay-surface.spec.md +443 -0
  1337. package/src/patterns/overlay-surface/overlay-surface.tsx +31 -16
  1338. package/src/patterns/resize-handle/index.ts +5 -0
  1339. package/src/patterns/resize-handle/resize-handle.spec.md +120 -0
  1340. package/src/patterns/resize-handle/resize-handle.stories.tsx +71 -0
  1341. package/src/story-governance/category-matrix.json +132 -0
  1342. package/src/story-governance/category-matrix.ts +55 -0
  1343. package/src/styles/base.css +92 -0
  1344. package/src/styles/tokens.css +11 -0
  1345. package/src/tokens/README.md +7 -2
  1346. package/src/tokens/categorical-color.ts +164 -0
  1347. package/src/tokens/color/color.spec.md +801 -0
  1348. package/src/tokens/color/color.stories.tsx +363 -0
  1349. package/src/tokens/color/primitives.css +14 -5
  1350. package/src/tokens/color/semantic.css +28 -13
  1351. package/src/tokens/density/density.spec.md +130 -0
  1352. package/src/tokens/density/density.stories.tsx +240 -0
  1353. package/src/tokens/elevation/elevation.spec.md +78 -0
  1354. package/src/tokens/elevation/elevation.stories.tsx +98 -0
  1355. package/src/tokens/layoutSpace/layoutSpace.css +1 -1
  1356. package/src/tokens/layoutSpace/layoutSpace.spec.md +324 -0
  1357. package/src/tokens/layoutSpace/layoutSpace.stories.tsx +75 -0
  1358. package/src/tokens/motion/motion.css +2 -2
  1359. package/src/tokens/motion/motion.spec.md +105 -0
  1360. package/src/tokens/motion/motion.ts +1 -1
  1361. package/src/tokens/opacity/opacity.spec.md +73 -0
  1362. package/src/tokens/opacity/opacity.stories.tsx +65 -0
  1363. package/src/tokens/orphan-tokens.spec.md +128 -0
  1364. package/src/tokens/radius/radius.spec.md +126 -0
  1365. package/src/tokens/radius/radius.stories.tsx +86 -0
  1366. package/src/tokens/token-system.spec.md +240 -0
  1367. package/src/tokens/typography/typography.css +1 -1
  1368. package/src/tokens/typography/typography.spec.md +204 -0
  1369. package/src/tokens/typography/typography.stories.tsx +133 -0
  1370. package/src/tokens/uiSize/icon-size.ts +3 -4
  1371. package/src/tokens/uiSize/uiSize.css +21 -0
  1372. package/src/tokens/uiSize/uiSize.spec.md +466 -0
  1373. package/src/tokens/utility-registry.json +125 -0
  1374. package/dist/components/NameCard/name-card.d.ts.map +0 -1
  1375. package/dist/components/NameCard/name-card.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.js","sources":["../../../src/components/TimePicker/time-picker.tsx"],"sourcesContent":["// @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.\nimport * as React from 'react'\nimport { X, Clock } from 'lucide-react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@/lib/utils'\nimport type { FieldMode, FieldVariant } from '@/design-system/components/Field/field-types'\nimport {\n fieldWrapperStyles,\n bareInputStyles,\n EMPTY_DISPLAY,\n fieldDisplayTextClass,\n} from '@/design-system/components/Field/field-wrapper'\nimport { ItemInlineAction, ItemSuffix } from '@/design-system/patterns/element-anatomy/item-anatomy'\nimport { Popover, PopoverTrigger, PopoverContent } from '@/design-system/components/Popover/popover'\nimport { useFieldContext } from '@/design-system/components/Field/field-context'\nimport { Button } from '@/design-system/components/Button/button'\nimport {\n TimeColumns,\n isoToTimeParts,\n timePartsToString,\n type TimeParts,\n type TimeStep,\n type TimeColumnsDisabled,\n} from '@/design-system/components/TimePicker/time-columns'\nimport { ICON_SIZE } from '@/design-system/tokens/uiSize/icon-size'\n\n/**\n * TimePicker — 單一時間(時/分/秒)輸入與顯示元件\n *\n * ── 定位(同 DatePicker 家族)──\n * Value 以 ISO time string 儲存(\"HH:mm\" 或 \"HH:mm:ss\"),local-time 語義(不帶時區)。\n * Edit 用本 DS 自建 time column panel + Popover 呈現,視覺與 DatePicker 一致。\n * Display 用 Intl.DateTimeFormat 格式化(跨 locale / 12h-24h 統一經過此 API)。\n *\n * ── Layout Family ──\n * CLAUDE.md 4-Family Model Family 4(Field control layout)消費者。結構繼承\n * `fieldWrapperStyles + [<editable>] [endIcon=Clock]`,視覺對齊 DatePicker(同\n * 「點擊觸發浮層」role:indicator 在 suffix slot,對齊 Material `endAdornment` /\n * Ant DatePicker / Polaris Picker 共識)。\n *\n * ── 實作基礎 ──\n * Trigger:`<button>` + `fieldWrapperStyles`(視覺仍是 Input wrapper,改為可點擊觸發浮層)\n * Popup:`Popover`(消費 overlay-surface pattern)\n * Panel 主體:自建 column picker(三欄 scrollable list),不引入第三方 time library\n *\n * ── 共用規則 ──\n * Mode / size / disabled / error 等詳見 `../Field/field-controls.spec.md`。\n */\n\n// ── Time ISO <-> parts conversion ───────────────────────────────────────────\n// Value 用 ISO time string(HH:mm 或 HH:mm:ss),local-time 語義(不帶時區/日期)。\n// 跟 DatePicker 的 ISO date string 策略一致。\n// `isoToTimeParts` / `timePartsToString` 改 import from time-columns(M17 SSOT)。\n\n// ── Display formatting ──────────────────────────────────────────────────────\n\nexport interface TimeFormatOptions {\n /** Intl.DateTimeFormat options(預設 { hour: '2-digit', minute: '2-digit', hour12: false }) */\n formatOptions?: Intl.DateTimeFormatOptions\n /** locale(預設 'en-US') */\n locale?: string\n}\n\nfunction formatTime(\n iso: string,\n options: TimeFormatOptions = {},\n): string {\n const parts = isoToTimeParts(iso)\n if (!parts) return iso\n const {\n formatOptions = { hour: '2-digit', minute: '2-digit', hour12: false },\n locale = 'en-US',\n } = options\n // 借用 Date 讓 Intl.DateTimeFormat 處理 locale / 12h-24h\n const d = new Date()\n d.setHours(parts.hours, parts.minutes, parts.seconds, 0)\n return new Intl.DateTimeFormat(locale, formatOptions).format(d)\n}\n\n// ── Disabled time callback ──────────────────────────────────────────────────\n// `Step` / `buildRange` / `TimeColumn`(內部欄位實作)拔掉,改 import `TimeColumns` primitive。\n\n// code-quality-allow: dead-export — public API surface — consumer-exposed for future use\nexport interface DisabledTimeResult {\n disabledHours?: number[]\n disabledMinutes?: number[]\n disabledSeconds?: number[]\n}\n\n// ── Component props ─────────────────────────────────────────────────────────\n\nexport interface TimePickerProps\n extends TimeFormatOptions,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'placeholder'\n > {\n mode?: FieldMode\n /** Field chrome variant. Default = context.variant ?? 'default'. Per-prop override. */\n variant?: FieldVariant\n error?: boolean\n size?: 'sm' | 'md' | 'lg'\n /** ISO time string(\"HH:mm\" 或 \"HH:mm:ss\") */\n value?: string | null\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n /** 允許清空已選值 */\n clearable?: boolean\n /**\n * 是否顯示秒欄(三欄 picker)。預設 false(兩欄:時/分)。\n * format 自動對應:false → \"HH:mm\",true → \"HH:mm:ss\"。\n */\n showSeconds?: boolean\n /** 分鐘步進(會議常用 15)。預設 1 */\n minuteStep?: TimeStep\n /** 秒步進。預設 1。僅 showSeconds=true 有效 */\n secondStep?: TimeStep\n /** 動態 disabled 某些時/分/秒(基於已選其他欄位)。 */\n disabledTime?: (parts: TimeParts) => DisabledTimeResult\n /**\n * Suffix indicator(2026-05-05 v9 canonical fix):「點擊觸發浮層」indicator 一律 suffix\n * (對齊 DatePicker calendar / Material endAdornment)。預設 Clock,傳 null 可關閉。\n */\n endIcon?: LucideIcon | null\n /**\n * Display 是否渲 endIcon + Field naked wrapper(D-path opt-in,2026-05-08)\n * — DataTable cell display↔edit 像素級對齊用。預設 false(裸 span,backward compat)。\n * 設 true 時 display 也走 fieldWrapperStyles(naked variant)+ ItemSuffix Clock,\n * 與 edit 同 DOM 結構,消除 Layer-B padding mismatch。\n */\n showDisplayEndIcon?: boolean\n /** Initial open state(uncontrolled)— DataTable cell-as-input 1-step open canonical */\n defaultOpen?: boolean\n /** open state 變更 callback。DataTable cell-as-input 用:open=false → cell exit edit */\n onOpenChange?: (open: boolean) => void\n}\n\n// code-quality-allow: long-function — foundational composite main body — 拆 sub-fn 會複雜化 local state / ref / context binding\nconst TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n mode = 'edit',\n variant: variantProp,\n error: errorProp = false,\n size = 'md',\n value,\n onChange,\n placeholder,\n className,\n disabled: disabledProp,\n clearable = false,\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabledTime,\n endIcon,\n showDisplayEndIcon = false,\n formatOptions,\n locale,\n defaultOpen = false,\n onOpenChange,\n id: idProp,\n 'aria-describedby': ariaDescribedByProp,\n 'aria-errormessage': ariaErrorMessageProp,\n ...props\n },\n ref,\n ) => {\n const fieldCtx = useFieldContext()\n const error = errorProp || (fieldCtx?.invalid ?? false)\n const disabled = disabledProp ?? fieldCtx?.disabled\n const resolvedMode = disabled ? 'disabled' : mode\n const variant: FieldVariant = variantProp ?? fieldCtx?.variant ?? 'default'\n const isEditable = resolvedMode === 'edit'\n // 2026-05-18 改 import ICON_SIZE SSOT(per user『做完』approval,消除 M17 違反 7+ 重複 ternary)\n const iconSize = ICON_SIZE[size as 'sm' | 'md' | 'lg']\n const EndIconCmp: LucideIcon | null =\n endIcon === null ? null : (endIcon ?? Clock)\n const defaultPlaceholder = showSeconds ? 'HH:MM:SS' : 'HH:MM'\n const resolvedPlaceholder = placeholder ?? defaultPlaceholder\n const showClear = clearable && !!value && isEditable\n const [open, setOpenState] = React.useState(defaultOpen)\n const setOpen = React.useCallback((next: boolean) => { setOpenState(next); onOpenChange?.(next) }, [onOpenChange])\n\n const currentParts = React.useMemo(() => isoToTimeParts(value), [value])\n // draft 僅在 panel 開啟時用來處理 commit(OK button)的暫存\n const [draft, setDraft] = React.useState<TimeParts>(\n () => currentParts ?? { hours: 0, minutes: 0, seconds: 0 },\n )\n\n // 每次 popover 開啟時以當前 value 初始化 draft\n React.useEffect(() => {\n if (open) {\n setDraft(currentParts ?? { hours: 0, minutes: 0, seconds: 0 })\n }\n }, [open, currentParts])\n\n const disabledForColumns: TimeColumnsDisabled | undefined = React.useMemo(() => {\n if (!disabledTime) return undefined\n const res = disabledTime(draft)\n return {\n hours: res.disabledHours,\n minutes: res.disabledMinutes,\n seconds: res.disabledSeconds,\n }\n }, [disabledTime, draft])\n\n const commitDraft = (next: TimeParts) => {\n setDraft(next)\n onChange?.(timePartsToString(next, showSeconds))\n }\n\n const handleNow = () => {\n const now = new Date()\n // 按照 minuteStep / secondStep 對齊\n const m = Math.round(now.getMinutes() / minuteStep) * minuteStep\n const s = showSeconds\n ? Math.round(now.getSeconds() / secondStep) * secondStep\n : 0\n const next: TimeParts = {\n hours: now.getHours(),\n minutes: Math.min(m, 59),\n seconds: Math.min(s, 59),\n }\n commitDraft(next)\n setOpen(false)\n }\n\n // mode='display'(Phase B2 2026-05-05):純內容輸出 — 對齊原 TimePickerDisplay sub-component(retired)。\n // Default(showDisplayEndIcon=false):無 Field wrapper / 無 Clock icon — backward compat 裸 span。\n // Opt-in(showDisplayEndIcon=true,2026-05-08 D-path):Field naked wrapper + ItemSuffix Clock,\n // 與 edit 同結構消除 cell display↔edit 像素偏移(Layer-B padding mismatch)。\n if (resolvedMode === 'display') {\n if (!showDisplayEndIcon) {\n // 2026-05-14 I2 fix(spec contract (e) display typography canonical):bare span 套\n // `fieldDisplayTextClass(size)`(sm/md→text-body,lg→text-body-lg)— 對齊 Field family 統一。\n if (!value) return <span className={cn(fieldDisplayTextClass(size), 'text-fg-muted', className)}>{EMPTY_DISPLAY}</span>\n return <span className={cn(fieldDisplayTextClass(size), 'truncate', className)}>{formatTime(value, { formatOptions, locale })}</span>\n }\n return (\n <div\n className={cn(fieldWrapperStyles({ mode: 'display', variant, size }), className)}\n data-field-mode=\"display\"\n >\n <span className={cn(bareInputStyles, 'flex-1 min-w-0 truncate', !value && 'text-fg-muted')}>\n {value ? formatTime(value, { formatOptions, locale }) : EMPTY_DISPLAY}\n </span>\n {EndIconCmp && (\n <ItemSuffix className=\"pointer-events-none\">\n <EndIconCmp size={iconSize} className=\"text-fg-muted\" aria-hidden />\n </ItemSuffix>\n )}\n </div>\n )\n }\n\n // readonly / disabled\n if (!isEditable) {\n return (\n <div\n className={cn(fieldWrapperStyles({ mode: resolvedMode, variant: variant, size }), className)}\n data-field-mode={resolvedMode}\n {...(props as React.HTMLAttributes<HTMLDivElement>)}\n >\n <span\n className={cn(\n 'flex-1 min-w-0',\n resolvedMode === 'disabled' && 'text-fg-disabled',\n )}\n >\n {value\n ? formatTime(value, { formatOptions, locale })\n : <span className=\"text-fg-muted\">{EMPTY_DISPLAY}</span>\n }\n </span>\n {EndIconCmp && (\n <ItemSuffix className=\"pointer-events-none\">\n <EndIconCmp\n size={iconSize}\n className={resolvedMode === 'disabled' ? 'text-fg-disabled' : 'text-fg-muted'}\n aria-hidden\n />\n </ItemSuffix>\n )}\n </div>\n )\n }\n\n const displayText = value\n ? formatTime(value, { formatOptions, locale })\n : <span className=\"text-fg-muted\">{resolvedPlaceholder}</span>\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {/* a11y(2026-04-25 nested-interactive fix):trigger 改 <div role='combobox'>\n (對齊 Select / Combobox 同 pattern),原 <button> 會與內層 ItemInlineAction\n 清除 button 構成 nested-interactive。Radix Popover 在 trigger asChild 下會\n 自動 inject keyboard handler(Enter / Space 開啟)+ 正確 aria attributes。 */}\n <PopoverTrigger asChild>\n <div\n ref={ref}\n id={idProp ?? fieldCtx?.id}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n aria-labelledby={fieldCtx?.labelId}\n aria-invalid={error || undefined}\n aria-required={fieldCtx?.required || undefined}\n aria-describedby={ariaDescribedByProp ?? fieldCtx?.descriptionId}\n aria-errormessage={ariaErrorMessageProp ?? (error ? fieldCtx?.errorId : undefined)}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n data-field-mode=\"edit\"\n data-error={error ? '' : undefined}\n className={cn(\n fieldWrapperStyles({ mode: 'edit', variant: variant, size }),\n 'text-left cursor-pointer',\n 'focus-visible:outline-none',\n error && [\n 'border-error hover:border-error-hover',\n 'focus-within:border-error focus-within:hover:border-error',\n ],\n className,\n )}\n {...props}\n >\n <span className={cn(bareInputStyles, 'truncate', !value && 'text-fg-muted')}>\n {displayText}\n </span>\n {showClear && (\n <ItemInlineAction\n size={size ?? 'md'}\n action={{\n icon: X,\n label: '清除時間', // i18n-allow: DS default inline-action label\n onClick: (e) => {\n e?.stopPropagation()\n onChange?.('')\n },\n }}\n />\n )}\n {EndIconCmp && (\n <ItemSuffix className=\"pointer-events-none\">\n <EndIconCmp size={iconSize} className=\"text-fg-muted\" aria-hidden />\n </ItemSuffix>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n {/* Panel 對齊 ref/timepicker.png:2-3 個 SelectMenu 式欄位並排,分隔線分開。\n Width 依欄數由 TimeColumns 決定:2 欄 w-40 / 3 欄 w-60。\n Height 由 wrapper 控:216px 預設(~7 items)。\n TimeColumns 本身 h-full,parent 控 height — 讓 DatePicker showTime / Range 可\n 用 flex-row items-stretch 自動同 calendar 高。 */}\n <div className=\"flex flex-col h-[216px]\">\n <TimeColumns\n value={draft}\n onChange={commitDraft}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabledForColumns}\n // 2026-05-06 v9.1 M25 chain fix:TimeColumns 自然高 = 24 buttons × ~28.7px = 688px\n // 會撐破 parent h-[216px]。flex-1 + min-h-0 讓 TimeColumns 取 parent 剩餘空間\n // (216 - footer 40 = 176px)→ ScrollArea h-full 才能正確收斂 →\n // listbox scrollIntoView 找對 nearest scrollable ancestor(內部 viewport),\n // 不會走到 document body 把 popover 內容推出畫面(user 報「hours 欄空白」根因)。\n className=\"flex-1 min-h-0\"\n />\n {/* Footer:Now + OK */}\n <div\n className={cn(\n 'flex items-center justify-between gap-2',\n 'border-t border-divider',\n 'px-[var(--layout-space-tight)] py-[var(--layout-space-tight)]',\n )}\n >\n <Button variant=\"text\" size=\"sm\" onClick={handleNow}>\n 此刻\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={() => setOpen(false)}\n >\n 確定\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n )\n },\n)\nTimePicker.displayName = 'TimePicker'\n\n// Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)\n// Phase 2 fill needed: purpose descriptions + when rationale + world-class refs\nexport const timePickerMeta = {\n component: 'TimePicker',\n family: 4,\n variants: {\n\n },\n sizes: {\n\n },\n states: ['default', 'hover', 'active', 'focus-visible', 'disabled'],\n tokens: {\n bg: ['bg-neutral-hover', 'bg-primary', 'bg-transparent'],\n fg: ['text-fg-disabled', 'text-fg-muted', 'text-foreground'],\n ring: [],\n },\n} as const\n\nexport { TimePicker }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time-picker.js","sources":["../../../src/components/TimePicker/time-picker.tsx"],"sourcesContent":["// @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.\nimport * as React from 'react'\nimport { X, Clock } from 'lucide-react'\nimport type { LucideIcon } from 'lucide-react'\nimport { cn } from '@/lib/utils'\nimport type { FieldMode, FieldVariant } from '@/design-system/components/Field/field-types'\nimport {\n fieldWrapperStyles,\n bareInputStyles,\n EMPTY_DISPLAY,\n fieldDisplayTextClass,\n} from '@/design-system/components/Field/field-wrapper'\nimport { ItemInlineAction, ItemSuffix } from '@/design-system/patterns/element-anatomy/item-anatomy'\nimport { Popover, PopoverTrigger, PopoverContent } from '@/design-system/components/Popover/popover'\nimport { useFieldContext, useResolvedFieldSize, useResolvedFieldDisabled, useResolvedFieldMode, useResolvedFieldVariant, useResolvedFieldInvalid } from '@/design-system/components/Field/field-context'\nimport { Button } from '@/design-system/components/Button/button'\nimport { SurfaceFooter } from '@/design-system/patterns/overlay-surface/overlay-surface'\nimport {\n TimeColumns,\n isoToTimeParts,\n timePartsToString,\n type TimeParts,\n type TimeStep,\n type TimeColumnsDisabled,\n} from '@/design-system/components/TimePicker/time-columns'\nimport { ICON_SIZE } from '@/design-system/tokens/uiSize/icon-size'\n\n/**\n * TimePicker — 單一時間(時/分/秒)輸入與顯示元件\n *\n * ── 定位(同 DatePicker 家族)──\n * Value 以 ISO time string 儲存(\"HH:mm\" 或 \"HH:mm:ss\"),local-time 語義(不帶時區)。\n * Edit 用本 DS 自建 time column panel + Popover 呈現,視覺與 DatePicker 一致。\n * Display 用 Intl.DateTimeFormat 格式化(跨 locale / 12h-24h 統一經過此 API)。\n *\n * ── Layout Family ──\n * CLAUDE.md 4-Family Model Family 4(Field control layout)消費者。結構繼承\n * `fieldWrapperStyles + [<editable>] [endIcon=Clock]`,視覺對齊 DatePicker(同\n * 「點擊觸發浮層」role:indicator 在 suffix slot,對齊 Material `endAdornment` /\n * Ant DatePicker / Polaris Picker 共識)。\n *\n * ── 實作基礎 ──\n * Trigger:`<div role=\"combobox\">` + `fieldWrapperStyles`(視覺仍是 Input wrapper,改為可點擊觸發浮層;\n * 2026-04-25 由 `<button>` 改 div 避 nested-interactive,對齊 Select / Combobox,鍵盤靠顯式 onKeyDown)\n * Popup:`Popover`(消費 overlay-surface pattern)\n * Panel 主體:自建 column picker(三欄 scrollable list),不引入第三方 time library\n *\n * ── 共用規則 ──\n * Mode / size / disabled / error 等詳見 `../Field/field-controls.spec.md`。\n */\n\n// ── Time ISO <-> parts conversion ───────────────────────────────────────────\n// Value 用 ISO time string(HH:mm 或 HH:mm:ss),local-time 語義(不帶時區/日期)。\n// 跟 DatePicker 的 ISO date string 策略一致。\n// `isoToTimeParts` / `timePartsToString` 改 import from time-columns(M17 SSOT)。\n\n// ── Display formatting ──────────────────────────────────────────────────────\n\nexport interface TimeFormatOptions {\n /** Intl.DateTimeFormat options(預設 { hour: '2-digit', minute: '2-digit', hour12: false }) */\n formatOptions?: Intl.DateTimeFormatOptions\n /** locale(預設 'en-US') */\n locale?: string\n}\n\nfunction formatTime(\n iso: string,\n options: TimeFormatOptions = {},\n): string {\n const parts = isoToTimeParts(iso)\n if (!parts) return iso\n const {\n formatOptions = { hour: '2-digit', minute: '2-digit', hour12: false },\n locale = 'en-US',\n } = options\n // 借用 Date 讓 Intl.DateTimeFormat 處理 locale / 12h-24h\n const d = new Date()\n d.setHours(parts.hours, parts.minutes, parts.seconds, 0)\n return new Intl.DateTimeFormat(locale, formatOptions).format(d)\n}\n\n// ── Disabled time callback ──────────────────────────────────────────────────\n// `Step` / `buildRange` / `TimeColumn`(內部欄位實作)拔掉,改 import `TimeColumns` primitive。\n\n// code-quality-allow: dead-export — public API surface — consumer-exposed for future use\nexport interface DisabledTimeResult {\n disabledHours?: number[]\n disabledMinutes?: number[]\n disabledSeconds?: number[]\n}\n\n// ── Component props ─────────────────────────────────────────────────────────\n\nexport interface TimePickerProps\n extends TimeFormatOptions,\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'placeholder'\n > {\n mode?: FieldMode\n /** Field chrome variant. Default = context.variant ?? 'default'. Per-prop override. */\n variant?: FieldVariant\n error?: boolean\n size?: 'sm' | 'md' | 'lg'\n /** ISO time string(\"HH:mm\" 或 \"HH:mm:ss\") */\n value?: string | null\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n /** 允許清空已選值 */\n clearable?: boolean\n /**\n * 是否顯示秒欄(三欄 picker)。預設 false(兩欄:時/分)。\n * format 自動對應:false → \"HH:mm\",true → \"HH:mm:ss\"。\n */\n showSeconds?: boolean\n /** 分鐘步進(會議常用 15)。預設 1 */\n minuteStep?: TimeStep\n /** 秒步進。預設 1。僅 showSeconds=true 有效 */\n secondStep?: TimeStep\n /** 動態 disabled 某些時/分/秒(基於已選其他欄位)。 */\n disabledTime?: (parts: TimeParts) => DisabledTimeResult\n /**\n * Suffix indicator(2026-05-05 v9 canonical fix):「點擊觸發浮層」indicator 一律 suffix\n * (對齊 DatePicker calendar / Material endAdornment)。預設 Clock,傳 null 可關閉。\n */\n endIcon?: LucideIcon | null\n /**\n * Display 是否渲 endIcon + Field naked wrapper(D-path opt-in,2026-05-08)\n * — DataTable cell display↔edit 像素級對齊用。預設 false(裸 span,backward compat)。\n * 設 true 時 display 也走 fieldWrapperStyles(naked variant)+ ItemSuffix Clock,\n * 與 edit 同 DOM 結構,消除 Layer-B padding mismatch。\n */\n showDisplayEndIcon?: boolean\n /** Initial open state(uncontrolled)— DataTable cell-as-input 1-step open canonical */\n defaultOpen?: boolean\n /** open state 變更 callback。DataTable cell-as-input 用:open=false → cell exit edit */\n onOpenChange?: (open: boolean) => void\n}\n\n// code-quality-allow: long-function — foundational composite main body — 拆 sub-fn 會複雜化 local state / ref / context binding\nconst TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n mode,\n variant: variantProp,\n error: errorProp = false,\n size: sizeProp,\n value,\n onChange,\n placeholder,\n className,\n disabled: disabledProp,\n clearable = false,\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabledTime,\n endIcon,\n showDisplayEndIcon = false,\n formatOptions,\n locale,\n defaultOpen = false,\n onOpenChange,\n id: idProp,\n 'aria-describedby': ariaDescribedByProp,\n 'aria-errormessage': ariaErrorMessageProp,\n ...props\n },\n ref,\n ) => {\n const fieldCtx = useFieldContext()\n const size = useResolvedFieldSize(sizeProp) // B 組 cascade fix\n const error = useResolvedFieldInvalid(errorProp)\n const disabled = useResolvedFieldDisabled(disabledProp)\n // 2026-06-08 SSOT:mode 經 useResolvedFieldMode;修 <Field mode=\"display\"> 漏 cascade\n const resolvedMode = useResolvedFieldMode({ mode, disabled })\n const variant: FieldVariant = useResolvedFieldVariant(variantProp)\n const isEditable = resolvedMode === 'edit'\n // 2026-05-18 改 import ICON_SIZE SSOT(per user『做完』approval,消除 M17 違反 7+ 重複 ternary)\n const iconSize = ICON_SIZE[size as 'sm' | 'md' | 'lg']\n const EndIconCmp: LucideIcon | null =\n endIcon === null ? null : (endIcon ?? Clock)\n const defaultPlaceholder = showSeconds ? 'HH:MM:SS' : 'HH:MM'\n const resolvedPlaceholder = placeholder ?? defaultPlaceholder\n const showClear = clearable && !!value && isEditable\n const [open, setOpenState] = React.useState(defaultOpen)\n const setOpen = React.useCallback((next: boolean) => { setOpenState(next); onOpenChange?.(next) }, [onOpenChange])\n\n const currentParts = React.useMemo(() => isoToTimeParts(value), [value])\n // draft 僅在 panel 開啟時用來處理 commit(OK button)的暫存\n const [draft, setDraft] = React.useState<TimeParts>(\n () => currentParts ?? { hours: 0, minutes: 0, seconds: 0 },\n )\n\n // 每次 popover 開啟時以當前 value 初始化 draft\n React.useEffect(() => {\n if (open) {\n setDraft(currentParts ?? { hours: 0, minutes: 0, seconds: 0 })\n }\n }, [open, currentParts])\n\n const disabledForColumns: TimeColumnsDisabled | undefined = React.useMemo(() => {\n if (!disabledTime) return undefined\n const res = disabledTime(draft)\n return {\n hours: res.disabledHours,\n minutes: res.disabledMinutes,\n seconds: res.disabledSeconds,\n }\n }, [disabledTime, draft])\n\n const commitDraft = (next: TimeParts) => {\n setDraft(next)\n onChange?.(timePartsToString(next, showSeconds))\n }\n\n const handleNow = () => {\n const now = new Date()\n // 按照 minuteStep / secondStep 對齊\n const m = Math.round(now.getMinutes() / minuteStep) * minuteStep\n const s = showSeconds\n ? Math.round(now.getSeconds() / secondStep) * secondStep\n : 0\n const next: TimeParts = {\n hours: now.getHours(),\n minutes: Math.min(m, 59),\n seconds: Math.min(s, 59),\n }\n commitDraft(next)\n setOpen(false)\n }\n\n // mode='display'(Phase B2 2026-05-05):純內容輸出 — 對齊原 TimePickerDisplay sub-component(retired)。\n // Default(showDisplayEndIcon=false):無 Field wrapper / 無 Clock icon — backward compat 裸 span。\n // Opt-in(showDisplayEndIcon=true,2026-05-08 D-path):Field naked wrapper + ItemSuffix Clock,\n // 與 edit 同結構消除 cell display↔edit 像素偏移(Layer-B padding mismatch)。\n if (resolvedMode === 'display') {\n if (!showDisplayEndIcon) {\n // 2026-05-14 I2 fix(spec contract (e) display typography canonical):bare span 套\n // `fieldDisplayTextClass(size)`(sm/md→text-body,lg→text-body-lg)— 對齊 Field family 統一。\n if (!value) return <span className={cn(fieldDisplayTextClass(size), 'text-fg-muted', className)}>{EMPTY_DISPLAY}</span>\n return <span className={cn(fieldDisplayTextClass(size), 'truncate', className)}>{formatTime(value, { formatOptions, locale })}</span>\n }\n return (\n <div\n className={cn(fieldWrapperStyles({ mode: 'display', variant, size }), className)}\n data-field-mode=\"display\"\n >\n <span className={cn(bareInputStyles, 'flex-1 min-w-0 truncate', !value && 'text-fg-muted')}>\n {value ? formatTime(value, { formatOptions, locale }) : EMPTY_DISPLAY}\n </span>\n {EndIconCmp && (\n <ItemSuffix className=\"pointer-events-none\">\n <EndIconCmp size={iconSize} className=\"text-fg-muted\" aria-hidden />\n </ItemSuffix>\n )}\n </div>\n )\n }\n\n // readonly / disabled\n if (!isEditable) {\n return (\n <div\n className={cn(fieldWrapperStyles({ mode: resolvedMode, variant: variant, size }), className)}\n data-field-mode={resolvedMode}\n aria-disabled={resolvedMode === 'disabled' ? true : undefined}\n {...(props as React.HTMLAttributes<HTMLDivElement>)}\n >\n <span\n className={cn(\n 'flex-1 min-w-0',\n resolvedMode === 'disabled' && 'text-fg-disabled',\n )}\n >\n {value\n ? formatTime(value, { formatOptions, locale })\n : <span className=\"text-fg-muted\">{EMPTY_DISPLAY}</span>\n }\n </span>\n {/* 2026-06-26 類型身份 indicator:edit 顯示 / readonly 不顯示 / disabled 保留(fg-disabled);naked cell 依 showDisplayEndIcon=isEditable(修 disabled cell 漏顯 bug)*/}\n {EndIconCmp && (variant === 'naked' ? showDisplayEndIcon : resolvedMode === 'disabled') && (\n <ItemSuffix className=\"pointer-events-none\">\n <EndIconCmp\n size={iconSize}\n className={resolvedMode === 'disabled' ? 'text-fg-disabled' : 'text-fg-muted'}\n aria-hidden\n />\n </ItemSuffix>\n )}\n </div>\n )\n }\n\n const displayText = value\n ? formatTime(value, { formatOptions, locale })\n : <span className=\"text-fg-muted\">{resolvedPlaceholder}</span>\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {/* a11y(2026-04-25 nested-interactive fix):trigger 改 <div role='combobox'>\n (對齊 Select / Combobox 同 pattern),原 <button> 會與內層 ItemInlineAction\n 清除 button 構成 nested-interactive。\n 2026-06-01 鍵盤開啟修正:Radix PopoverTrigger 只 compose onClick\n (@radix-ui/react-popover index.js:145),不 inject 任何 onKeyDown。原生 <button>\n 靠瀏覽器在 Enter/Space 自動派發 click 才能開;但本 trigger 是 <div role=combobox>,\n div 不會自動派發 click → 鍵盤使用者打不開 panel。故顯式加 onKeyDown\n (對齊 select.tsx:609-619 既有 canonical + WAI-ARIA APG combobox required keys)。 */}\n <PopoverTrigger asChild>\n <div\n ref={ref}\n id={idProp ?? fieldCtx?.id}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n aria-labelledby={fieldCtx?.labelId}\n aria-invalid={error || undefined}\n aria-required={fieldCtx?.required || undefined}\n aria-describedby={ariaDescribedByProp ?? fieldCtx?.descriptionId}\n aria-errormessage={ariaErrorMessageProp ?? (error ? fieldCtx?.errorId : undefined)}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onKeyDown={(e) => {\n if (disabled) return\n // Enter / Space / ArrowDown / Alt+ArrowDown → 開 panel(APG combobox required + Select canonical)\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault()\n setOpen(true)\n }\n // Escape → 關(Radix Content 已自帶,trigger 補位對齊 select.tsx:597)\n if (e.key === 'Escape') setOpen(false)\n }}\n data-field-mode=\"edit\"\n data-error={error ? '' : undefined}\n className={cn(\n fieldWrapperStyles({ mode: 'edit', variant: variant, size, error }),\n 'text-left cursor-pointer',\n 'focus-visible:outline-none',\n className,\n )}\n {...props}\n >\n <span className={cn(bareInputStyles, 'truncate', !value && 'text-fg-muted')}>\n {displayText}\n </span>\n {showClear && (\n <ItemInlineAction\n size={size ?? 'md'}\n action={{\n icon: X,\n label: '清除時間', // i18n-allow: DS default inline-action label\n onClick: (e) => {\n e?.stopPropagation()\n onChange?.('')\n },\n }}\n />\n )}\n {EndIconCmp && (\n <ItemSuffix className=\"pointer-events-none\">\n <EndIconCmp size={iconSize} className=\"text-fg-muted\" aria-hidden />\n </ItemSuffix>\n )}\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n {/* Panel 對齊 ref/timepicker.png:2-3 個 SelectMenu 式欄位並排,分隔線分開。\n Width 依欄數由 TimeColumns 決定:2 欄 w-40 / 3 欄 w-60。\n Height 由 wrapper 控:216px 預設(扣 footer 後 list 約可見 5-6 items)。\n TimeColumns 本身 h-full,parent 控 height — 讓 DatePicker showTime / Range 可\n 用 flex-row items-stretch 自動同 calendar 高。 */}\n <div className=\"flex flex-col h-[216px]\">\n <TimeColumns\n value={draft}\n onChange={commitDraft}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabledForColumns}\n // 2026-05-06 v9.1 M25 chain fix:TimeColumns 自然高 = 24 buttons × ~28.7px = 688px\n // 會撐破 parent h-[216px]。flex-1 + min-h-0 讓 TimeColumns 取 parent 剩餘空間\n // (216 − footer ≈53px ≈ 163px)→ ScrollArea h-full 才能正確收斂 →\n // listbox scrollIntoView 找對 nearest scrollable ancestor(內部 viewport),\n // 不會走到 document body 把 popover 內容推出畫面(user 報「hours 欄空白」根因)。\n className=\"flex-1 min-h-0\"\n />\n {/* Footer:消費 SurfaceFooter SSOT(border-t + py-tight + gap-2 + shrink-0 + justify-end)。\n px override 回 layout-space-tight,因 TimePicker 滿欄 column 面板無 chrome-padded body\n 內縮邊可對齊(footer px = body 內縮 原則;column-selector 數字置中、零內距,\n 見 time-picker.spec.md)。此刻 mr-auto 把確定推右,視覺等同原 justify-between\n —— 純結構消費 overlay-surface canonical(overlay-surface.spec.md:17「不自寫 padding token」),零視覺變化。 */}\n <SurfaceFooter className=\"px-[var(--layout-space-tight)]\">\n <Button variant=\"text\" size=\"sm\" onClick={handleNow} className=\"mr-auto\">\n 此刻\n </Button>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={() => setOpen(false)}\n >\n 確定\n </Button>\n </SurfaceFooter>\n </div>\n </PopoverContent>\n </Popover>\n )\n },\n)\nTimePicker.displayName = 'TimePicker'\n\n// Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)\n// Phase 2 fill needed: purpose descriptions + when rationale + world-class refs\nexport const timePickerMeta = {\n component: 'TimePicker',\n family: 4,\n variants: {\n\n },\n sizes: {\n\n },\n // states 對齊真實視覺態:trigger 與 panel item 皆無 'active'(按下)專屬視覺態(2026-07-04 audit 對齊)。\n states: ['default', 'hover', 'focus-visible', 'disabled'],\n tokens: {\n // panel selected 走 bg-neutral-selected(time-columns.tsx isSelected;spec「欄內 item 狀態」),非 bg-primary。\n bg: ['bg-neutral-hover', 'bg-neutral-selected', 'bg-transparent'],\n fg: ['text-fg-disabled', 'text-fg-muted', 'text-foreground'],\n ring: [],\n },\n} as const\n\nexport { TimePicker }\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './toast';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Toaster, toast, toastMeta } from "./toast.js";
2
+ export {
3
+ Toaster,
4
+ toast,
5
+ toastMeta
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -31,7 +31,7 @@ export interface ToasterProps {
31
31
  declare const Toaster: React.ForwardRefExoticComponent<ToasterProps & React.RefAttributes<HTMLDivElement>>;
32
32
  export declare const toastMeta: {
33
33
  readonly component: "Toast";
34
- readonly family: null;
34
+ readonly family: 2;
35
35
  readonly variants: {
36
36
  readonly neutral: {
37
37
  readonly when: "非狀態通知;一般 announcement / tip";
@@ -50,7 +50,7 @@ export declare const toastMeta: {
50
50
  };
51
51
  };
52
52
  readonly sizes: {};
53
- readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
53
+ readonly states: readonly ["default"];
54
54
  readonly tokens: {
55
55
  readonly bg: readonly ["bg-error", "bg-info", "bg-surface-raised", "bg-warning"];
56
56
  readonly fg: readonly ["text-foreground"];
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAA;AAGtG;;;;;;;;;;;;GAYG;AAGH,MAAM,MAAM,YAAY,GAAG,aAAa,CAAA;AAExC,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAqDD,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,mBAG1C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,CAAA;CACtG;AAMD,QAAA,MAAM,OAAO,qFAUZ,CAAA;AAKD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBZ,CAAA;AAEV,OAAO,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/components/Toast/toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAA;AAGtG;;;;;;;;;;;;GAYG;AAGH,MAAM,MAAM,YAAY,GAAG,aAAa,CAAA;AAExC,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAqDD,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,mBAK1C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,CAAA;CACtG;AAMD,QAAA,MAAM,OAAO,qFAUZ,CAAA;AAKD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBZ,CAAA;AAEV,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -33,7 +33,7 @@ function ToastInner({
33
33
  return /* @__PURE__ */ jsx("div", { role: liveRole, "aria-live": liveLevel, className: "rounded-lg overflow-hidden", style: { boxShadow: "var(--elevation-200)" }, children: /* @__PURE__ */ jsx("div", { className: bg, children: /* @__PURE__ */ jsx("div", { "data-theme": theme, className: "text-foreground", children: /* @__PURE__ */ jsx(Notice, { variant, endContent: actionButton, onDismiss: dismiss, ...rest }) }) }) });
34
34
  }
35
35
  function toast(options) {
36
- const { duration = 4e3, ...rest } = options;
36
+ const { duration = options.action ? 1e4 : 4e3, ...rest } = options;
37
37
  return toast$1.custom((id) => /* @__PURE__ */ jsx(ToastInner, { id, ...rest }), { duration });
38
38
  }
39
39
  const Toaster = React.forwardRef(
@@ -51,8 +51,8 @@ const Toaster = React.forwardRef(
51
51
  Toaster.displayName = "Toaster";
52
52
  const toastMeta = {
53
53
  component: "Toast",
54
- family: null,
55
- // non-family composite / overlay / layout
54
+ family: 2,
55
+ // Family 2(List item layout)— 透過 Notice 繼承,對齊 toast.spec.md frontmatter L3 + L39
56
56
  variants: {
57
57
  neutral: { when: "非狀態通知;一般 announcement / tip" },
58
58
  info: { when: "資訊性提示(新版本 / 同步完成)" },
@@ -61,7 +61,8 @@ const toastMeta = {
61
61
  error: { when: "錯誤(匯入失敗 / 權限不足);action prop 可加重試" }
62
62
  },
63
63
  sizes: {},
64
- states: ["default", "hover", "active", "focus-visible", "disabled"],
64
+ // 2026-07-04 audit 對齊:Toast disabled state(spec 邊界案例明文;對齊 noticeMeta ['default'] 已修 pattern)
65
+ states: ["default"],
65
66
  tokens: {
66
67
  bg: ["bg-error", "bg-info", "bg-surface-raised", "bg-warning"],
67
68
  fg: ["text-foreground"],
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sources":["../../../src/components/Toast/toast.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Toaster as SonnerToaster, toast as sonnerToast } from 'sonner'\nimport { Notice, useInverseTheme, type NoticeVariant } from '@/design-system/components/Notice/notice'\nimport { Button } from '@/design-system/components/Button/button'\n\n/**\n * Toast — 非阻斷式浮動通知\n *\n * ── Container 三層結構(所有 variant 統一) ──\n *\n * 1. Shadow wrapper: rounded-lg + elevation-200(永遠在頁面 theme 解析)\n * 2. Bg layer: bg-{color}(有色相 variant 在頁面 theme 解析)\n * 3. Theme layer: data-theme + text-foreground(content token re-resolve)\n *\n * neutral/success(inverse): bg + theme 同層(bg-surface-raised 需要跟 data-theme 一起翻轉)\n * info/error(dark): bg 在 outer,theme 在 inner\n * warning(light always): bg 在 outer,theme=\"light\" 在 inner\n */\n\n// code-quality-allow: dead-export — public API surface — consumer-exposed for future use\nexport type ToastVariant = NoticeVariant\n\nexport interface ToastOptions {\n variant?: ToastVariant\n title: string\n description?: string\n action?: { label: string; onClick: () => void }\n duration?: number\n}\n\nfunction ToastInner({\n id,\n variant = 'neutral',\n action,\n ...rest\n}: ToastOptions & { id: string | number }) {\n const inverseTheme = useInverseTheme()\n const isInverse = variant === 'neutral' || variant === 'success'\n const dismiss = () => sonnerToast.dismiss(id)\n\n const actionButton = action ? (\n <Button variant=\"tertiary\" size=\"xs\" onClick={action.onClick}>{action.label}</Button>\n ) : undefined\n\n // ── Live region 由 outer Toast wrapper 擁有(WAI-ARIA + spec L59-60 canonical) ──\n // Notice(inner layout)不再帶 role,避免 nested live region。\n // - error / warning → role=\"alert\" + aria-live=\"assertive\"(中斷朗讀)\n // - info / success / neutral → role=\"status\" + aria-live=\"polite\"(空閒朗讀)\n const isCritical = variant === 'error' || variant === 'warning'\n const liveRole = isCritical ? 'alert' : 'status'\n const liveLevel = isCritical ? 'assertive' : 'polite'\n\n // ── 1. Shadow wrapper(統一,永遠在頁面 theme) ──\n // ── 2+3. Bg + theme layer ──\n\n if (isInverse) {\n // bg-surface-raised 需要跟 data-theme 同層翻轉\n return (\n <div role={liveRole} aria-live={liveLevel} className=\"rounded-lg overflow-hidden\" style={{ boxShadow: 'var(--elevation-200)' }}>\n <div data-theme={inverseTheme} className=\"bg-surface-raised text-foreground\">\n <Notice variant={variant} iconClassName={variant === 'success' ? 'text-success' : undefined}\n endContent={actionButton} onDismiss={dismiss} {...rest} />\n </div>\n </div>\n )\n }\n\n const bg = variant === 'warning' ? 'bg-warning' : variant === 'error' ? 'bg-error' : 'bg-info'\n const theme = variant === 'warning' ? 'light' : 'dark'\n\n return (\n <div role={liveRole} aria-live={liveLevel} className=\"rounded-lg overflow-hidden\" style={{ boxShadow: 'var(--elevation-200)' }}>\n <div className={bg}>\n <div data-theme={theme} className=\"text-foreground\">\n <Notice variant={variant} endContent={actionButton} onDismiss={dismiss} {...rest} />\n </div>\n </div>\n </div>\n )\n}\n\nexport function toast(options: ToastOptions) {\n const { duration = 4000, ...rest } = options\n return sonnerToast.custom((id) => <ToastInner id={id} {...rest} />, { duration })\n}\n\nexport interface ToasterProps {\n position?: 'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center'\n}\n\n// shadcn canonical:forwardRef + displayName 統一。Sonner Toaster portal-renders\n// document body,ref Toaster 本身無實際 DOM 節點可接(portal 逃逸),\n// 但保留 forwardRef 簽名以符合 DS 統一 API(consumer 可 typecheck 傳 ref,\n// 與其他 DS 元件一致)。\nconst Toaster = React.forwardRef<HTMLDivElement, ToasterProps>(\n ({ position = 'bottom-right', ...props }, _ref) => {\n return (\n <SonnerToaster\n position={position}\n toastOptions={{ unstyled: true, className: 'w-[360px]' }}\n {...props}\n />\n )\n },\n)\nToaster.displayName = 'Toaster'\n\n// Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)\n// Phase 2 fill needed: purpose descriptions + when rationale + world-class refs\nexport const toastMeta = {\n component: 'Toast',\n family: null, // non-family composite / overlay / layout\n variants: {\n neutral: { when: '非狀態通知;一般 announcement / tip' },\n info: { when: '資訊性提示(新版本 / 同步完成)' },\n success: { when: '成功確認(已寄送 / 付款完成)' },\n warning: { when: '可恢復警告(未儲存 / 連線不穩)' },\n error: { when: '錯誤(匯入失敗 / 權限不足);action prop 可加重試' },\n },\n sizes: {},\n states: ['default', 'hover', 'active', 'focus-visible', 'disabled'],\n tokens: {\n bg: ['bg-error', 'bg-info', 'bg-surface-raised', 'bg-warning'],\n fg: ['text-foreground'],\n ring: [],\n },\n} as const\n\nexport { Toaster }\n"],"names":["sonnerToast","SonnerToaster"],"mappings":";;;;;AA8BA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,QAAM,eAAe,gBAAA;AACrB,QAAM,YAAY,YAAY,aAAa,YAAY;AACvD,QAAM,UAAU,MAAMA,QAAY,QAAQ,EAAE;AAE5C,QAAM,eAAe,SACnB,oBAAC,QAAA,EAAO,SAAQ,YAAW,MAAK,MAAK,SAAS,OAAO,SAAU,UAAA,OAAO,OAAM,IAC1E;AAMJ,QAAM,aAAa,YAAY,WAAW,YAAY;AACtD,QAAM,WAAW,aAAa,UAAU;AACxC,QAAM,YAAY,aAAa,cAAc;AAK7C,MAAI,WAAW;AAEb,+BACG,OAAA,EAAI,MAAM,UAAU,aAAW,WAAW,WAAU,8BAA6B,OAAO,EAAE,WAAW,0BACpG,UAAA,oBAAC,SAAI,cAAY,cAAc,WAAU,qCACvC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QAAO;AAAA,QAAkB,eAAe,YAAY,YAAY,iBAAiB;AAAA,QAChF,YAAY;AAAA,QAAc,WAAW;AAAA,QAAU,GAAG;AAAA,MAAA;AAAA,IAAA,GACtD,EAAA,CACF;AAAA,EAEJ;AAEA,QAAM,KAAK,YAAY,YAAY,eAAe,YAAY,UAAU,aAAa;AACrF,QAAM,QAAQ,YAAY,YAAY,UAAU;AAEhD,SACE,oBAAC,OAAA,EAAI,MAAM,UAAU,aAAW,WAAW,WAAU,8BAA6B,OAAO,EAAE,WAAW,uBAAA,GACpG,UAAA,oBAAC,SAAI,WAAW,IACd,UAAA,oBAAC,OAAA,EAAI,cAAY,OAAO,WAAU,mBAChC,8BAAC,QAAA,EAAO,SAAkB,YAAY,cAAc,WAAW,SAAU,GAAG,MAAM,EAAA,CACpF,GACF,GACF;AAEJ;AAEO,SAAS,MAAM,SAAuB;AAC3C,QAAM,EAAE,WAAW,KAAM,GAAG,SAAS;AACrC,SAAOA,QAAY,OAAO,CAAC,OAAO,oBAAC,YAAA,EAAW,IAAS,GAAG,KAAA,CAAM,GAAI,EAAE,SAAA,CAAU;AAClF;AAUA,MAAM,UAAU,MAAM;AAAA,EACpB,CAAC,EAAE,WAAW,gBAAgB,GAAG,MAAA,GAAS,SAAS;AACjD,WACE;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,cAAc,EAAE,UAAU,MAAM,WAAW,YAAA;AAAA,QAC1C,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACA,QAAQ,cAAc;AAIf,MAAM,YAAY;AAAA,EACvB,WAAW;AAAA,EACX,QAAQ;AAAA;AAAA,EACR,UAAU;AAAA,IACR,SAAS,EAAE,MAAM,8BAAA;AAAA,IACjB,MAAM,EAAE,MAAM,oBAAA;AAAA,IACd,SAAS,EAAE,MAAM,mBAAA;AAAA,IACjB,SAAS,EAAE,MAAM,oBAAA;AAAA,IACjB,OAAO,EAAE,MAAM,mCAAA;AAAA,EAAmC;AAAA,EAEpD,OAAO,CAAA;AAAA,EACP,QAAQ,CAAC,WAAW,SAAS,UAAU,iBAAiB,UAAU;AAAA,EAClE,QAAQ;AAAA,IACN,IAAI,CAAC,YAAY,WAAW,qBAAqB,YAAY;AAAA,IAC7D,IAAI,CAAC,iBAAiB;AAAA,IACtB,MAAM,CAAA;AAAA,EAAC;AAEX;"}
1
+ {"version":3,"file":"toast.js","sources":["../../../src/components/Toast/toast.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Toaster as SonnerToaster, toast as sonnerToast } from 'sonner'\nimport { Notice, useInverseTheme, type NoticeVariant } from '@/design-system/components/Notice/notice'\nimport { Button } from '@/design-system/components/Button/button'\n\n/**\n * Toast — 非阻斷式浮動通知\n *\n * ── Container 三層結構(所有 variant 統一) ──\n *\n * 1. Shadow wrapper: rounded-lg + elevation-200(永遠在頁面 theme 解析)\n * 2. Bg layer: bg-{color}(有色相 variant 在頁面 theme 解析)\n * 3. Theme layer: data-theme + text-foreground(content token re-resolve)\n *\n * neutral/success(inverse): bg + theme 同層(bg-surface-raised 需要跟 data-theme 一起翻轉)\n * info/error(dark): bg 在 outer,theme 在 inner\n * warning(light always): bg 在 outer,theme=\"light\" 在 inner\n */\n\n// code-quality-allow: dead-export — public API surface — consumer-exposed for future use\nexport type ToastVariant = NoticeVariant\n\nexport interface ToastOptions {\n variant?: ToastVariant\n title: string\n description?: string\n action?: { label: string; onClick: () => void }\n duration?: number\n}\n\nfunction ToastInner({\n id,\n variant = 'neutral',\n action,\n ...rest\n}: ToastOptions & { id: string | number }) {\n const inverseTheme = useInverseTheme()\n const isInverse = variant === 'neutral' || variant === 'success'\n const dismiss = () => sonnerToast.dismiss(id)\n\n const actionButton = action ? (\n <Button variant=\"tertiary\" size=\"xs\" onClick={action.onClick}>{action.label}</Button>\n ) : undefined\n\n // ── Live region 由 outer Toast wrapper 擁有(WAI-ARIA + toast.spec.md「A11y 預設」段 canonical) ──\n // Notice(inner layout)不再帶 role,避免 nested live region。\n // - error / warning → role=\"alert\" + aria-live=\"assertive\"(中斷朗讀)\n // - info / success / neutral → role=\"status\" + aria-live=\"polite\"(空閒朗讀)\n const isCritical = variant === 'error' || variant === 'warning'\n const liveRole = isCritical ? 'alert' : 'status'\n const liveLevel = isCritical ? 'assertive' : 'polite'\n\n // ── 1. Shadow wrapper(統一,永遠在頁面 theme) ──\n // ── 2+3. Bg + theme layer ──\n\n if (isInverse) {\n // bg-surface-raised 需要跟 data-theme 同層翻轉\n return (\n <div role={liveRole} aria-live={liveLevel} className=\"rounded-lg overflow-hidden\" style={{ boxShadow: 'var(--elevation-200)' }}>\n <div data-theme={inverseTheme} className=\"bg-surface-raised text-foreground\">\n <Notice variant={variant} iconClassName={variant === 'success' ? 'text-success' : undefined}\n endContent={actionButton} onDismiss={dismiss} {...rest} />\n </div>\n </div>\n )\n }\n\n const bg = variant === 'warning' ? 'bg-warning' : variant === 'error' ? 'bg-error' : 'bg-info'\n const theme = variant === 'warning' ? 'light' : 'dark'\n\n return (\n <div role={liveRole} aria-live={liveLevel} className=\"rounded-lg overflow-hidden\" style={{ boxShadow: 'var(--elevation-200)' }}>\n <div className={bg}>\n <div data-theme={theme} className=\"text-foreground\">\n <Notice variant={variant} endContent={actionButton} onDismiss={dismiss} {...rest} />\n </div>\n </div>\n </div>\n )\n}\n\nexport function toast(options: ToastOptions) {\n // 2026-07-05 D4:sonner 計時器不因鍵盤 Tab 焦點暫停(僅 hover / pointer 按住 / ⌥T hotkey)——\n // 含 action(復原/重試)預設 10s,給鍵盤使用者足夠時間 Tab 到 action(user 拍板;對齊 Polaris toast with action ≥10s)\n const { duration = options.action ? 10000 : 4000, ...rest } = options\n return sonnerToast.custom((id) => <ToastInner id={id} {...rest} />, { duration })\n}\n\nexport interface ToasterProps {\n position?: 'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center'\n}\n\n// shadcn canonical:forwardRef + displayName 統一。SonnerToaster 不轉發 ref,\n// ref 無實際 DOM 節點可接;viewport 為就地渲染的 <section>,以 CSS position:fixed\n// 覆蓋 viewport(portal — sonner 全庫 0 createPortal,2026-07-04 grep 驗證)。\n// 保留 forwardRef 簽名以符合 DS 統一 API(consumer 可 typecheck 傳 ref)。\nconst Toaster = React.forwardRef<HTMLDivElement, ToasterProps>(\n ({ position = 'bottom-right', ...props }, _ref) => {\n return (\n <SonnerToaster\n position={position}\n toastOptions={{ unstyled: true, className: 'w-[360px]' }}\n {...props}\n />\n )\n },\n)\nToaster.displayName = 'Toaster'\n\n// Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)\n// Phase 2 fill needed: purpose descriptions + when rationale + world-class refs\nexport const toastMeta = {\n component: 'Toast',\n family: 2, // Family 2(List item layout)— 透過 Notice 繼承,對齊 toast.spec.md frontmatter L3 + L39\n variants: {\n neutral: { when: '非狀態通知;一般 announcement / tip' },\n info: { when: '資訊性提示(新版本 / 同步完成)' },\n success: { when: '成功確認(已寄送 / 付款完成)' },\n warning: { when: '可恢復警告(未儲存 / 連線不穩)' },\n error: { when: '錯誤(匯入失敗 / 權限不足);action prop 可加重試' },\n },\n sizes: {},\n // 2026-07-04 audit 對齊:Toast 無 disabled state(spec 邊界案例明文;對齊 noticeMeta ['default'] 已修 pattern)\n states: ['default'],\n tokens: {\n bg: ['bg-error', 'bg-info', 'bg-surface-raised', 'bg-warning'],\n fg: ['text-foreground'],\n ring: [],\n },\n} as const\n\nexport { Toaster }\n"],"names":["sonnerToast","SonnerToaster"],"mappings":";;;;;AA8BA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAA2C;AACzC,QAAM,eAAe,gBAAA;AACrB,QAAM,YAAY,YAAY,aAAa,YAAY;AACvD,QAAM,UAAU,MAAMA,QAAY,QAAQ,EAAE;AAE5C,QAAM,eAAe,SACnB,oBAAC,QAAA,EAAO,SAAQ,YAAW,MAAK,MAAK,SAAS,OAAO,SAAU,UAAA,OAAO,OAAM,IAC1E;AAMJ,QAAM,aAAa,YAAY,WAAW,YAAY;AACtD,QAAM,WAAW,aAAa,UAAU;AACxC,QAAM,YAAY,aAAa,cAAc;AAK7C,MAAI,WAAW;AAEb,+BACG,OAAA,EAAI,MAAM,UAAU,aAAW,WAAW,WAAU,8BAA6B,OAAO,EAAE,WAAW,0BACpG,UAAA,oBAAC,SAAI,cAAY,cAAc,WAAU,qCACvC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QAAO;AAAA,QAAkB,eAAe,YAAY,YAAY,iBAAiB;AAAA,QAChF,YAAY;AAAA,QAAc,WAAW;AAAA,QAAU,GAAG;AAAA,MAAA;AAAA,IAAA,GACtD,EAAA,CACF;AAAA,EAEJ;AAEA,QAAM,KAAK,YAAY,YAAY,eAAe,YAAY,UAAU,aAAa;AACrF,QAAM,QAAQ,YAAY,YAAY,UAAU;AAEhD,SACE,oBAAC,OAAA,EAAI,MAAM,UAAU,aAAW,WAAW,WAAU,8BAA6B,OAAO,EAAE,WAAW,uBAAA,GACpG,UAAA,oBAAC,SAAI,WAAW,IACd,UAAA,oBAAC,OAAA,EAAI,cAAY,OAAO,WAAU,mBAChC,8BAAC,QAAA,EAAO,SAAkB,YAAY,cAAc,WAAW,SAAU,GAAG,MAAM,EAAA,CACpF,GACF,GACF;AAEJ;AAEO,SAAS,MAAM,SAAuB;AAG3C,QAAM,EAAE,WAAW,QAAQ,SAAS,MAAQ,KAAM,GAAG,SAAS;AAC9D,SAAOA,QAAY,OAAO,CAAC,OAAO,oBAAC,YAAA,EAAW,IAAS,GAAG,KAAA,CAAM,GAAI,EAAE,SAAA,CAAU;AAClF;AAUA,MAAM,UAAU,MAAM;AAAA,EACpB,CAAC,EAAE,WAAW,gBAAgB,GAAG,MAAA,GAAS,SAAS;AACjD,WACE;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,cAAc,EAAE,UAAU,MAAM,WAAW,YAAA;AAAA,QAC1C,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACA,QAAQ,cAAc;AAIf,MAAM,YAAY;AAAA,EACvB,WAAW;AAAA,EACX,QAAQ;AAAA;AAAA,EACR,UAAU;AAAA,IACR,SAAS,EAAE,MAAM,8BAAA;AAAA,IACjB,MAAM,EAAE,MAAM,oBAAA;AAAA,IACd,SAAS,EAAE,MAAM,mBAAA;AAAA,IACjB,SAAS,EAAE,MAAM,oBAAA;AAAA,IACjB,OAAO,EAAE,MAAM,mCAAA;AAAA,EAAmC;AAAA,EAEpD,OAAO,CAAA;AAAA;AAAA,EAEP,QAAQ,CAAC,SAAS;AAAA,EAClB,QAAQ;AAAA,IACN,IAAI,CAAC,YAAY,WAAW,qBAAqB,YAAY;AAAA,IAC7D,IAAI,CAAC,iBAAiB;AAAA,IACtB,MAAM,CAAA;AAAA,EAAC;AAEX;"}
@@ -0,0 +1,2 @@
1
+ export * from './tooltip';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/index.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, tooltipMeta } from "./tooltip.js";
2
+ export {
3
+ Tooltip,
4
+ TooltipContent,
5
+ TooltipProvider,
6
+ TooltipTrigger,
7
+ tooltipMeta
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -9,7 +9,7 @@ export declare const tooltipMeta: {
9
9
  readonly family: null;
10
10
  readonly variants: {};
11
11
  readonly sizes: {};
12
- readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
12
+ readonly states: readonly ["default"];
13
13
  readonly tokens: {
14
14
  readonly bg: readonly [];
15
15
  readonly fg: readonly [];
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAU3D,QAAA,MAAM,eAAe,GAAI,6BAAoD,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,4CAElI,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,6BAAoD,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,4CAEtH,CAAA;AAED,QAAA,MAAM,cAAc,gHAA2B,CAAA;AAE/C,QAAA,MAAM,cAAc,gKAwBlB,CAAA;AAKF,eAAO,MAAM,WAAW;;;;;;;;;;;CAed,CAAA;AAEV,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAU3D,QAAA,MAAM,eAAe,GAAI,6BAAoD,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,4CAElI,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,6BAAoD,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,4CAEtH,CAAA;AAED,QAAA,MAAM,cAAc,gHAA2B,CAAA;AAE/C,QAAA,MAAM,cAAc,gKA2BlB,CAAA;AAKF,eAAO,MAAM,WAAW;;;;;;;;;;;CAed,CAAA;AAEV,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -9,7 +9,7 @@ const Tooltip = ({ delayDuration = HOVER_DELAY_PLAIN_MS, ...props }) => /* @__PU
9
9
  const TooltipTrigger = TooltipPrimitive.Trigger;
10
10
  const TooltipContent = React.forwardRef(({ className, sideOffset = OVERLAY_SIDE_OFFSET, collisionPadding = OVERLAY_COLLISION_PADDING, style, children, ...props }, ref) => (
11
11
  // collisionPadding default 8px:避免 tooltip 貼 viewport 邊(Radix avoidCollisions 預設 true 但 padding 0 會貼邊)
12
- // 對齊 HoverCard canonical 避免 viewport edge clipping
12
+ // 消費 OVERLAY_COLLISION_PADDING overlay 家族 canonical(與 Popover 一致;HoverCard 特例 12 補 rounding)避免 viewport edge clipping
13
13
  /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
14
14
  TooltipPrimitive.Content,
15
15
  {
@@ -36,7 +36,8 @@ const tooltipMeta = {
36
36
  // non-family composite / overlay / layout
37
37
  variants: {},
38
38
  sizes: {},
39
- states: ["default", "hover", "active", "focus-visible", "disabled"],
39
+ states: ["default"],
40
+ // 2026-06-11 R2:Tooltip 浮層本身無互動 state(anatomy rationale L9-12),
40
41
  tokens: {
41
42
  bg: [],
42
43
  fg: [],
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../../src/components/Tooltip/tooltip.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\nimport { OVERLAY_SIDE_OFFSET, OVERLAY_COLLISION_PADDING } from \"@/design-system/tokens/elevation/overlay-geometry\"\nimport { HOVER_DELAY_PLAIN_MS } from \"@/design-system/tokens/motion/motion\"\n\n// 2026-05-18 ship per user 拍板 #3A:Tooltip Provider 預設 delayDuration 對齊 motion token SSOT。\n// Radix 預設 700ms 過保守(被 Material 150-200 / MUI 100 / Atlassian 300 集體驗證),DS 統一用\n// `--hover-delay-plain` (500ms,JS mirror `HOVER_DELAY_PLAIN_MS`)。Consumer 仍可 per-instance override。\n// 2026-05-21 D5 Phase B codex 抓 comment 200 vs token 500 drift → 註解 500ms 對齊 motion.css:27 SSOT。\nconst TooltipProvider = ({ delayDuration = HOVER_DELAY_PLAIN_MS, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>) => (\n <TooltipPrimitive.Provider delayDuration={delayDuration} {...props} />\n)\n\nconst Tooltip = ({ delayDuration = HOVER_DELAY_PLAIN_MS, ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) => (\n <TooltipPrimitive.Root delayDuration={delayDuration} {...props} />\n)\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = OVERLAY_SIDE_OFFSET, collisionPadding = OVERLAY_COLLISION_PADDING, style, children, ...props }, ref) => (\n // collisionPadding default 8px:避免 tooltip 貼 viewport 邊(Radix avoidCollisions 預設 true 但 padding 0 會貼邊)\n // 對齊 HoverCard canonical 避免 viewport edge clipping\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n className={cn(\n \"z-50 overflow-hidden rounded-md px-3 py-2 text-body font-normal text-on-emphasis bg-tooltip max-w-[280px]\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 motion-reduce:animate-none motion-reduce:zoom-in-100\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n \"origin-[var(--radix-tooltip-content-transform-origin)]\",\n className\n )}\n style={{ boxShadow: 'var(--elevation-200)', ...style }}\n {...props}\n >\n <div data-theme=\"dark\" className=\"contents\">{children}</div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)\n// Phase 2 fill needed: purpose descriptions + when rationale + world-class refs\nexport const tooltipMeta = {\n component: 'Tooltip',\n family: null, // non-family composite / overlay / layout\n variants: {\n\n },\n sizes: {\n\n },\n states: ['default', 'hover', 'active', 'focus-visible', 'disabled'],\n tokens: {\n bg: [],\n fg: [],\n ring: [],\n },\n} as const\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"],"names":[],"mappings":";;;;;;AAWA,MAAM,kBAAkB,CAAC,EAAE,gBAAgB,sBAAsB,GAAG,MAAA,MAClE,oBAAC,iBAAiB,UAAjB,EAA0B,eAA+B,GAAG,MAAA,CAAO;AAGtE,MAAM,UAAU,CAAC,EAAE,gBAAgB,sBAAsB,GAAG,MAAA,MAC1D,oBAAC,iBAAiB,MAAjB,EAAsB,eAA+B,GAAG,MAAA,CAAO;AAGlE,MAAM,iBAAiB,iBAAiB;AAExC,MAAM,iBAAiB,MAAM,WAG3B,CAAC,EAAE,WAAW,aAAa,qBAAqB,mBAAmB,2BAA2B,OAAO,UAAU,GAAG,SAAS;AAAA;AAAA;AAAA,EAG3H,oBAAC,iBAAiB,QAAjB,EACC,UAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,WAAW,wBAAwB,GAAG,MAAA;AAAA,MAC9C,GAAG;AAAA,MAEJ,8BAAC,OAAA,EAAI,cAAW,QAAO,WAAU,YAAY,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA,EACxD,CACF;AAAA,CACD;AACD,eAAe,cAAc,iBAAiB,QAAQ;AAI/C,MAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,QAAQ;AAAA;AAAA,EACR,UAAU,CAAA;AAAA,EAGV,OAAO,CAAA;AAAA,EAGP,QAAQ,CAAC,WAAW,SAAS,UAAU,iBAAiB,UAAU;AAAA,EAClE,QAAQ;AAAA,IACN,IAAI,CAAA;AAAA,IACJ,IAAI,CAAA;AAAA,IACJ,MAAM,CAAA;AAAA,EAAC;AAEX;"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../../src/components/Tooltip/tooltip.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\nimport { OVERLAY_SIDE_OFFSET, OVERLAY_COLLISION_PADDING } from \"@/design-system/tokens/elevation/overlay-geometry\"\nimport { HOVER_DELAY_PLAIN_MS } from \"@/design-system/tokens/motion/motion\"\n\n// 2026-05-18 ship per user 拍板 #3A:Tooltip Provider 預設 delayDuration 對齊 motion token SSOT。\n// Radix 預設 700ms 過保守(被 Material 150-200 / MUI 100 / Atlassian 300 集體驗證),DS 統一用\n// `--hover-delay-plain` (500ms,JS mirror `HOVER_DELAY_PLAIN_MS`)。Consumer 仍可 per-instance override。\n// 2026-05-21 D5 Phase B codex 抓 comment 200 vs token 500 drift → 註解 500ms 對齊 motion.css:27 SSOT。\nconst TooltipProvider = ({ delayDuration = HOVER_DELAY_PLAIN_MS, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>) => (\n <TooltipPrimitive.Provider delayDuration={delayDuration} {...props} />\n)\n\nconst Tooltip = ({ delayDuration = HOVER_DELAY_PLAIN_MS, ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) => (\n <TooltipPrimitive.Root delayDuration={delayDuration} {...props} />\n)\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = OVERLAY_SIDE_OFFSET, collisionPadding = OVERLAY_COLLISION_PADDING, style, children, ...props }, ref) => (\n // collisionPadding default 8px:避免 tooltip 貼 viewport 邊(Radix avoidCollisions 預設 true 但 padding 0 會貼邊)\n // 消費 OVERLAY_COLLISION_PADDING overlay 家族 canonical(與 Popover 一致;HoverCard 特例 12 補 rounding)避免 viewport edge clipping\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n // Density:繼承 page density(2026-06-15 canonical)。Tooltip padding 寫死 px-3 py-2、內容 text-body,\n // 不消費任何 density / layout-space token → 鎖 density 對它是 inert(原 data-density=\"md\" 是 409b91da\n // a11y 批次「對齊 Popover」順手加,非設計決策)→ 移除,讓全浮層行為一致(全繼承 page)。\n className={cn(\n \"z-50 overflow-hidden rounded-md px-3 py-2 text-body font-normal text-on-emphasis bg-tooltip max-w-[280px]\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 motion-reduce:animate-none motion-reduce:zoom-in-100\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n \"origin-[var(--radix-tooltip-content-transform-origin)]\",\n className\n )}\n style={{ boxShadow: 'var(--elevation-200)', ...style }}\n {...props}\n >\n <div data-theme=\"dark\" className=\"contents\">{children}</div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)\n// Phase 2 fill needed: purpose descriptions + when rationale + world-class refs\nexport const tooltipMeta = {\n component: 'Tooltip',\n family: null, // non-family composite / overlay / layout\n variants: {\n\n },\n sizes: {\n\n },\n states: ['default'], // 2026-06-11 R2:Tooltip 浮層本身無互動 state(anatomy rationale L9-12),\n tokens: {\n bg: [],\n fg: [],\n ring: [],\n },\n} as const\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"],"names":[],"mappings":";;;;;;AAWA,MAAM,kBAAkB,CAAC,EAAE,gBAAgB,sBAAsB,GAAG,MAAA,MAClE,oBAAC,iBAAiB,UAAjB,EAA0B,eAA+B,GAAG,MAAA,CAAO;AAGtE,MAAM,UAAU,CAAC,EAAE,gBAAgB,sBAAsB,GAAG,MAAA,MAC1D,oBAAC,iBAAiB,MAAjB,EAAsB,eAA+B,GAAG,MAAA,CAAO;AAGlE,MAAM,iBAAiB,iBAAiB;AAExC,MAAM,iBAAiB,MAAM,WAG3B,CAAC,EAAE,WAAW,aAAa,qBAAqB,mBAAmB,2BAA2B,OAAO,UAAU,GAAG,SAAS;AAAA;AAAA;AAAA,EAG3H,oBAAC,iBAAiB,QAAjB,EACC,UAAA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MAIA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,WAAW,wBAAwB,GAAG,MAAA;AAAA,MAC9C,GAAG;AAAA,MAEJ,8BAAC,OAAA,EAAI,cAAW,QAAO,WAAU,YAAY,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA,EACxD,CACF;AAAA,CACD;AACD,eAAe,cAAc,iBAAiB,QAAQ;AAI/C,MAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,QAAQ;AAAA;AAAA,EACR,UAAU,CAAA;AAAA,EAGV,OAAO,CAAA;AAAA,EAGP,QAAQ,CAAC,SAAS;AAAA;AAAA,EAClB,QAAQ;AAAA,IACN,IAAI,CAAA;AAAA,IACJ,IAAI,CAAA;AAAA,IACJ,MAAM,CAAA;AAAA,EAAC;AAEX;"}
@@ -0,0 +1,2 @@
1
+ export * from './tree-view';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TreeView/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { TreeItem, TreeView, treeItemVariants, treeViewMeta } from "./tree-view.js";
2
+ export {
3
+ TreeItem,
4
+ TreeView,
5
+ treeItemVariants,
6
+ treeViewMeta
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -26,7 +26,7 @@ type SelectionMode = 'single' | 'multiple' | 'none';
26
26
  */
27
27
  type TreeContext = 'sidebar' | 'menu';
28
28
  /** Drag drop position — 拖放目標的三種位置 */
29
- export type DropPosition = 'before' | 'after' | 'inside';
29
+ export type TreeDropPosition = 'before' | 'after' | 'inside';
30
30
  /** onDragEnd callback 的參數 */
31
31
  export interface TreeDragEndEvent {
32
32
  /** 被拖曳的 node id */
@@ -34,14 +34,14 @@ export interface TreeDragEndEvent {
34
34
  /** 目標 node id */
35
35
  targetId: string;
36
36
  /** 放置位置:before(同層上方)/ after(同層下方)/ inside(成為子 node) */
37
- position: DropPosition;
37
+ position: TreeDropPosition;
38
38
  }
39
39
  export interface TreeViewProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onDragEnd'> {
40
40
  /** 元件尺寸,影響 node 高度、icon 大小、indent 寬度 */
41
41
  size?: SizeKey;
42
42
  /**
43
43
  * 使用脈絡,決定 item 的水平 padding:
44
- * - `'sidebar'`(預設):頁面側邊欄,px-2(8px)
44
+ * - `'sidebar'`(預設):頁面側邊欄,`--layout-space-loose`(md=16px / lg=24px,隨 density 連動)
45
45
  * - `'menu'`:浮層選單 / dropdown,px-3(12px),對齊 MenuItem
46
46
  */
47
47
  context?: TreeContext;
@@ -63,7 +63,7 @@ export interface TreeViewProps extends Omit<React.HTMLAttributes<HTMLDivElement>
63
63
  defaultSelectedIds?: string[];
64
64
  /**
65
65
  * 啟用拖曳排序。預設 false。
66
- * 啟用後每個 TreeItem 左側出現 drag handle(GripVertical icon),
66
+ * 啟用後整列可拖(Figma 風格,無 grip handle;靠 distance:5 區分 click vs drag),
67
67
  * 拖曳時顯示 drop indicator(before / after / inside 三種位置)。
68
68
  * Consumer 透過 `onDragEnd` callback 接收 reorder 事件,自行更新 data。
69
69
  */
@@ -91,14 +91,14 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>
91
91
  */
92
92
  checkbox?: React.ReactNode;
93
93
  /**
94
- * 右側 inline actions(suffix slot,宣告式 API)。對齊 `uiSize.spec.md`「Inline Action」
94
+ * 右側 inline actions(suffix slot,宣告式 API)。對齊 `patterns/element-anatomy/inline-action.spec.md`
95
95
  * 與 `SidebarMenuButton.inlineActions` 的同一條規格——TreeItem / SidebarMenuButton /
96
96
  * 未來的 row primitive 全部用同一個 declarative API。
97
97
  *
98
98
  * Consumer 只宣告 intent,TreeItem 用 `<ItemInlineAction>` 自動渲染:
99
99
  * - Icon 尺寸 = `ICON_SIZE[treeViewSize]`(自動)
100
100
  * - Hover bg、tooltip、aria-label、cursor-pointer 自動處理
101
- * - **不可以**手刻 button JSX(canonical 實作在 `item-layout.tsx`)
101
+ * - **不可以**手刻 button JSX(canonical 實作在 `patterns/element-anatomy/item-anatomy.tsx` `ItemInlineAction`)
102
102
  *
103
103
  * ```tsx
104
104
  * <TreeItem
@@ -127,7 +127,7 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>
127
127
  *
128
128
  * 規則對齊 Input.endSlot canonical:90% case 用 `inlineActions` 宣告式 API,
129
129
  * 10% config 表達不出時走 slot。視覺一致性由 consumer 負責(可使用 host 內部 helper
130
- * — 但禁止 app-code 直接 import L3 primitive,見 `check_l3_primitive_import.sh`)。
130
+ * — 但禁止 app-code 直接 import L3 primitive,見 `check_canonical_propagation.sh` E.2,原 `check_l3_primitive_import` 已 folded)。
131
131
  */
132
132
  inlineActionsSlot?: React.ReactNode;
133
133
  /**
@@ -139,8 +139,8 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>
139
139
  */
140
140
  actionsReveal?: false | "hover";
141
141
  /**
142
- * 取代 chevron 的位置。用於 stepper 的 status indicator(●/○/✓)。
143
- * 設定後 chevron 不渲染,改渲染 indicator
142
+ * 取代 icon 的位置。用於 stepper 的 status indicator(●/○/✓)。
143
+ * 設定後 icon 不渲染、改渲染 indicator;chevron 永遠保留(expandable=旋轉箭頭 / leaf=placeholder)
144
144
  */
145
145
  indicator?: React.ReactNode;
146
146
  /** 是否停用 */
@@ -151,12 +151,12 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>
151
151
  declare const TreeItem: React.ForwardRefExoticComponent<TreeItemProps & React.RefAttributes<HTMLDivElement>>;
152
152
  export declare const treeViewMeta: {
153
153
  readonly component: "TreeView";
154
- readonly family: null;
154
+ readonly family: 1;
155
155
  readonly variants: {};
156
156
  readonly sizes: {};
157
157
  readonly states: readonly ["default", "hover", "active", "focus-visible", "disabled"];
158
158
  readonly tokens: {
159
- readonly bg: readonly ["bg-neutral-hover", "bg-primary", "bg-primary-subtle", "bg-surface"];
159
+ readonly bg: readonly ["bg-neutral-hover", "bg-neutral-selected", "bg-surface"];
160
160
  readonly fg: readonly ["text-fg-disabled", "text-fg-muted", "text-fg-secondary", "text-foreground"];
161
161
  readonly ring: readonly ["ring-ring"];
162
162
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../src/components/TreeView/tree-view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../src/components/TreeView/tree-view.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,8 @@ import { ChevronRight } from "lucide-react";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { dropIndicatorRow, dropIndicatorInside, dragSourceClass } from "../../lib/drag-visual.js";
8
8
  import { cn } from "../../lib/utils.js";
9
- import { ItemPrefix, ICON_SIZE, ItemIcon, ItemSuffix, ItemInlineAction, RowSizeProvider, ROW_PADDING_BY_SIZE } from "../../patterns/element-anatomy/item-anatomy.js";
9
+ import { Checkbox } from "../Checkbox/checkbox.js";
10
+ import { ICON_SIZE, ItemPrefix, ItemIcon, ItemSuffix, ItemInlineAction, RowSizeProvider, ROW_PADDING_BY_SIZE } from "../../patterns/element-anatomy/item-anatomy.js";
10
11
  const CONTEXT_PX_VAR = {
11
12
  sidebar: "var(--layout-space-loose)",
12
13
  // md=16px, lg=24px(density 連動)
@@ -92,6 +93,7 @@ const TreeView = React.forwardRef(
92
93
  [controlledSelected, onSelectedChange]
93
94
  );
94
95
  const [focusedId, setFocusedId] = React.useState(null);
96
+ const activeDescendantPrefix = React.useId();
95
97
  const isKeyboardRef = React.useRef(false);
96
98
  const [draggingId, setDraggingId] = React.useState(null);
97
99
  const [dropTarget, setDropTarget] = React.useState(null);
@@ -242,6 +244,7 @@ const TreeView = React.forwardRef(
242
244
  expandOnSelect,
243
245
  draggable,
244
246
  isKeyboardRef,
247
+ activeDescendantPrefix,
245
248
  draggingId,
246
249
  dropTarget,
247
250
  expandedIds,
@@ -261,6 +264,7 @@ const TreeView = React.forwardRef(
261
264
  expandOnSelect,
262
265
  draggable,
263
266
  isKeyboardRef,
267
+ activeDescendantPrefix,
264
268
  draggingId,
265
269
  dropTarget,
266
270
  expandedIds,
@@ -364,6 +368,7 @@ const TreeView = React.forwardRef(
364
368
  ref: treeRef,
365
369
  role: "tree",
366
370
  "aria-multiselectable": selectionMode === "multiple" || void 0,
371
+ "aria-activedescendant": focusedId ? `${activeDescendantPrefix}treeitem-${focusedId}` : void 0,
367
372
  className: cn(
368
373
  // TreeView root 不加任何 py——呼吸空間由外層容器負責:
369
374
  // - 在 SidebarGroup 內: SidebarGroup py-2 提供
@@ -451,7 +456,8 @@ const TreeItem = React.forwardRef(
451
456
  setFocusedId,
452
457
  registerNode,
453
458
  unregisterNode,
454
- isKeyboardRef
459
+ isKeyboardRef,
460
+ activeDescendantPrefix
455
461
  } = ctx;
456
462
  const hasChildren = React.Children.count(children) > 0;
457
463
  const isExpanded = expandedIds.has(id);
@@ -531,11 +537,13 @@ const TreeItem = React.forwardRef(
531
537
  if (typeof ref === "function") ref(node);
532
538
  else if (ref) ref.current = node;
533
539
  },
540
+ id: `${activeDescendantPrefix}treeitem-${id}`,
534
541
  role: "treeitem",
535
542
  "aria-expanded": hasChildren ? isExpanded : void 0,
536
543
  "aria-selected": selectionMode !== "none" ? isSelected : void 0,
537
544
  "aria-level": depth + 1,
538
545
  "aria-disabled": disabled || void 0,
546
+ "aria-roledescription": draggable && !disabled ? dragAttrs["aria-roledescription"] : void 0,
539
547
  "data-tree-id": id,
540
548
  "data-tree-parent-id": parentId ?? "",
541
549
  "data-tree-has-children": hasChildren,
@@ -560,11 +568,16 @@ const TreeItem = React.forwardRef(
560
568
  className: cn(
561
569
  "group/tree-item",
562
570
  treeItemVariants({ size }),
563
- // 預設文字色 neutral-8 (fg-secondary),選中後變 neutral-9 (foreground)
564
- // icon 透過 currentColor 繼承,不需要另外設
571
+ // 2026-05-26 SSOT lock(user explicit「multi 已有 checkbox 強信號,text 不該再變色」):
572
+ // ── Single mode ──
573
+ // - default text 預設 fg-secondary muted(hierarchy navigation 慣例,跟 Sidebar 一致)
574
+ // - selected → text-foreground emphasis + bg-neutral-selected(無 checkbox,需 text+bg 雙信號)
575
+ // ── Multi mode ──
576
+ // - default text 維持 fg-secondary muted(跟 single 對齊 hierarchy)
577
+ // - selected → 視覺信號只在 checkbox(auto-render below),text 不變、bg 不變
578
+ // - 對齊 SelectMenu multi pattern(menu-item.tsx:194-195 selected → bg only;multi → checkbox only)
565
579
  !disabled && !isSelected && "text-fg-secondary",
566
- !disabled && isSelected && "text-foreground",
567
- // inside: 資料夾背景高亮(Figma 風格),不用 ring/border
580
+ !disabled && isSelected && selectionMode === "single" && "text-foreground",
568
581
  isDropTarget && (dropTarget == null ? void 0 : dropTarget.position) === "inside" && dropIndicatorInside,
569
582
  !disabled && "hover:bg-neutral-hover hover:text-foreground",
570
583
  !disabled && isSelected && selectionMode === "single" && "bg-neutral-selected",
@@ -577,14 +590,14 @@ const TreeItem = React.forwardRef(
577
590
  paddingRight: "var(--tree-px)"
578
591
  },
579
592
  onClick: handleRowClick,
580
- ...draggable ? { ...dragListeners, ...dragAttrs } : {},
593
+ ...draggable ? dragListeners : {},
581
594
  ...props,
582
595
  children: [
583
596
  chevronSlot,
584
- checkbox && /* @__PURE__ */ jsx(ItemPrefix, { className: "pointer-events-none", children: checkbox }),
597
+ (checkbox || selectionMode === "multiple") && /* @__PURE__ */ jsx(ItemPrefix, { className: "pointer-events-none", children: checkbox || /* @__PURE__ */ jsx(Checkbox, { checked: isSelected, disabled, "aria-hidden": "true", tabIndex: -1 }) }),
585
598
  indicator ? /* @__PURE__ */ jsx(ItemPrefix, { style: { width: iconPx }, children: indicator }) : Icon ? /* @__PURE__ */ jsx(ItemIcon, { icon: Icon, className: disabled ? "text-fg-disabled" : void 0 }) : null,
586
599
  /* @__PURE__ */ jsx("span", { className: cn("flex-1 min-w-0 truncate", disabled && "text-fg-disabled"), children: label }),
587
- inlineActionsSlot ? /* @__PURE__ */ jsx(ItemSuffix, { hoverReveal: actionsReveal === "hover", hoverGroup: "tree-item", children: inlineActionsSlot }) : inlineActions && inlineActions.length > 0 ? /* @__PURE__ */ jsx(ItemSuffix, { hoverReveal: actionsReveal === "hover", hoverGroup: "tree-item", children: inlineActions.map((action, i) => /* @__PURE__ */ jsx(ItemInlineAction, { action }, action.label + i)) }) : null
600
+ disabled ? null : inlineActionsSlot ? /* @__PURE__ */ jsx(ItemSuffix, { hoverReveal: actionsReveal === "hover", hoverGroup: "tree-item", children: inlineActionsSlot }) : inlineActions && inlineActions.length > 0 ? /* @__PURE__ */ jsx(ItemSuffix, { hoverReveal: actionsReveal === "hover", hoverGroup: "tree-item", children: inlineActions.map((action, i) => /* @__PURE__ */ jsx(ItemInlineAction, { action }, action.label + i)) }) : null
588
601
  ]
589
602
  }
590
603
  ),
@@ -609,9 +622,24 @@ const TreeItem = React.forwardRef(
609
622
  );
610
623
  TreeItem.displayName = "TreeItem";
611
624
  const ParentIdContext = React.createContext(null);
625
+ const treeViewMeta = {
626
+ component: "TreeView",
627
+ family: 1,
628
+ // Family 1(Menu item layout)消費者 — 對齊 tree-view.spec.md frontmatter family: 1
629
+ variants: {},
630
+ sizes: {},
631
+ states: ["default", "hover", "active", "focus-visible", "disabled"],
632
+ tokens: {
633
+ bg: ["bg-neutral-hover", "bg-neutral-selected", "bg-surface"],
634
+ fg: ["text-fg-disabled", "text-fg-muted", "text-fg-secondary", "text-foreground"],
635
+ ring: ["ring-ring"]
636
+ },
637
+ defaultSize: "md"
638
+ };
612
639
  export {
613
640
  TreeItem,
614
641
  TreeView,
615
- treeItemVariants
642
+ treeItemVariants,
643
+ treeViewMeta
616
644
  };
617
645
  //# sourceMappingURL=tree-view.js.map