@qijenchen/design-system 0.1.0-beta.4 → 0.1.0-beta.43

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 (1343) hide show
  1. package/CLAUDE.md +199 -0
  2. package/README.md +155 -0
  3. package/cli-init.mjs +90 -0
  4. package/dist/components/Accordion/accordion.d.ts +37 -0
  5. package/dist/components/Accordion/accordion.d.ts.map +1 -0
  6. package/dist/components/Accordion/accordion.js +81 -0
  7. package/dist/components/Accordion/accordion.js.map +1 -0
  8. package/dist/components/Accordion/index.d.ts +2 -0
  9. package/dist/components/Accordion/index.d.ts.map +1 -0
  10. package/dist/components/Accordion/index.js +9 -0
  11. package/dist/components/Accordion/index.js.map +1 -0
  12. package/dist/components/Alert/alert.d.ts +47 -0
  13. package/dist/components/Alert/alert.d.ts.map +1 -0
  14. package/dist/components/Alert/alert.js +132 -0
  15. package/dist/components/Alert/alert.js.map +1 -0
  16. package/dist/components/Alert/index.d.ts +2 -0
  17. package/dist/components/Alert/index.d.ts.map +1 -0
  18. package/dist/components/Alert/index.js +7 -0
  19. package/dist/components/Alert/index.js.map +1 -0
  20. package/dist/components/AppShell/_demo-helpers.d.ts +49 -0
  21. package/dist/components/AppShell/_demo-helpers.d.ts.map +1 -0
  22. package/dist/components/AppShell/app-shell.d.ts +76 -0
  23. package/dist/components/AppShell/app-shell.d.ts.map +1 -0
  24. package/dist/components/AppShell/app-shell.js +214 -0
  25. package/dist/components/AppShell/app-shell.js.map +1 -0
  26. package/dist/components/AppShell/index.d.ts +2 -0
  27. package/dist/components/AppShell/index.d.ts.map +1 -0
  28. package/dist/components/AppShell/index.js +7 -0
  29. package/dist/components/AppShell/index.js.map +1 -0
  30. package/dist/components/AspectRatio/aspect-ratio.d.ts +40 -0
  31. package/dist/components/AspectRatio/aspect-ratio.d.ts.map +1 -0
  32. package/dist/components/AspectRatio/aspect-ratio.js +23 -0
  33. package/dist/components/AspectRatio/aspect-ratio.js.map +1 -0
  34. package/dist/components/AspectRatio/index.d.ts +2 -0
  35. package/dist/components/AspectRatio/index.d.ts.map +1 -0
  36. package/dist/components/AspectRatio/index.js +6 -0
  37. package/dist/components/AspectRatio/index.js.map +1 -0
  38. package/dist/components/Avatar/avatar.d.ts +85 -0
  39. package/dist/components/Avatar/avatar.d.ts.map +1 -0
  40. package/dist/components/Avatar/avatar.js +197 -0
  41. package/dist/components/Avatar/avatar.js.map +1 -0
  42. package/dist/components/Avatar/index.d.ts +2 -0
  43. package/dist/components/Avatar/index.d.ts.map +1 -0
  44. package/dist/components/Avatar/index.js +6 -0
  45. package/dist/components/Avatar/index.js.map +1 -0
  46. package/dist/components/Badge/badge.d.ts +43 -0
  47. package/dist/components/Badge/badge.d.ts.map +1 -0
  48. package/dist/components/Badge/badge.js +69 -0
  49. package/dist/components/Badge/badge.js.map +1 -0
  50. package/dist/components/Badge/index.d.ts +2 -0
  51. package/dist/components/Badge/index.d.ts.map +1 -0
  52. package/dist/components/Badge/index.js +7 -0
  53. package/dist/components/Badge/index.js.map +1 -0
  54. package/dist/components/Breadcrumb/breadcrumb.d.ts +163 -0
  55. package/dist/components/Breadcrumb/breadcrumb.d.ts.map +1 -0
  56. package/dist/components/Breadcrumb/breadcrumb.js +300 -0
  57. package/dist/components/Breadcrumb/breadcrumb.js.map +1 -0
  58. package/dist/components/Breadcrumb/index.d.ts +2 -0
  59. package/dist/components/Breadcrumb/index.d.ts.map +1 -0
  60. package/dist/components/Breadcrumb/index.js +12 -0
  61. package/dist/components/Breadcrumb/index.js.map +1 -0
  62. package/dist/components/BulkActionBar/bulk-action-bar.d.ts +46 -0
  63. package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -0
  64. package/dist/components/BulkActionBar/bulk-action-bar.js +78 -0
  65. package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -0
  66. package/dist/components/BulkActionBar/index.d.ts +2 -0
  67. package/dist/components/BulkActionBar/index.d.ts.map +1 -0
  68. package/dist/components/BulkActionBar/index.js +7 -0
  69. package/dist/components/BulkActionBar/index.js.map +1 -0
  70. package/dist/components/Button/button-group.d.ts +49 -0
  71. package/dist/components/Button/button-group.d.ts.map +1 -0
  72. package/dist/components/Button/button-group.js +46 -0
  73. package/dist/components/Button/button-group.js.map +1 -0
  74. package/dist/components/Button/button.d.ts +203 -0
  75. package/dist/components/Button/button.d.ts.map +1 -0
  76. package/dist/components/Button/button.js +309 -0
  77. package/dist/components/Button/button.js.map +1 -0
  78. package/dist/components/Button/index.d.ts +2 -0
  79. package/dist/components/Button/index.d.ts.map +1 -0
  80. package/dist/components/Button/index.js +8 -0
  81. package/dist/components/Button/index.js.map +1 -0
  82. package/dist/components/Calendar/calendar.d.ts +81 -0
  83. package/dist/components/Calendar/calendar.d.ts.map +1 -0
  84. package/dist/components/Calendar/calendar.js +294 -0
  85. package/dist/components/Calendar/calendar.js.map +1 -0
  86. package/dist/components/Calendar/index.d.ts +2 -0
  87. package/dist/components/Calendar/index.d.ts.map +1 -0
  88. package/dist/components/Calendar/index.js +6 -0
  89. package/dist/components/Calendar/index.js.map +1 -0
  90. package/dist/components/Carousel/carousel.d.ts +61 -0
  91. package/dist/components/Carousel/carousel.d.ts.map +1 -0
  92. package/dist/components/Carousel/carousel.js +279 -0
  93. package/dist/components/Carousel/carousel.js.map +1 -0
  94. package/dist/components/Carousel/index.d.ts +2 -0
  95. package/dist/components/Carousel/index.d.ts.map +1 -0
  96. package/dist/components/Carousel/index.js +11 -0
  97. package/dist/components/Carousel/index.js.map +1 -0
  98. package/dist/components/Chart/chart.d.ts +94 -0
  99. package/dist/components/Chart/chart.d.ts.map +1 -0
  100. package/dist/components/Chart/chart.js +235 -0
  101. package/dist/components/Chart/chart.js.map +1 -0
  102. package/dist/components/Chart/index.d.ts +2 -0
  103. package/dist/components/Chart/index.d.ts.map +1 -0
  104. package/dist/components/Chart/index.js +11 -0
  105. package/dist/components/Chart/index.js.map +1 -0
  106. package/dist/components/Checkbox/checkbox-group.d.ts +58 -0
  107. package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -0
  108. package/dist/components/Checkbox/checkbox-group.js +28 -0
  109. package/dist/components/Checkbox/checkbox-group.js.map +1 -0
  110. package/dist/components/Checkbox/checkbox.d.ts +73 -0
  111. package/dist/components/Checkbox/checkbox.d.ts.map +1 -0
  112. package/dist/components/Checkbox/checkbox.js +126 -0
  113. package/dist/components/Checkbox/checkbox.js.map +1 -0
  114. package/dist/components/Checkbox/index.d.ts +2 -0
  115. package/dist/components/Checkbox/index.d.ts.map +1 -0
  116. package/dist/components/Checkbox/index.js +7 -0
  117. package/dist/components/Checkbox/index.js.map +1 -0
  118. package/dist/components/Chip/chip.d.ts +54 -0
  119. package/dist/components/Chip/chip.d.ts.map +1 -0
  120. package/dist/components/Chip/chip.js +224 -0
  121. package/dist/components/Chip/chip.js.map +1 -0
  122. package/dist/components/Chip/index.d.ts +2 -0
  123. package/dist/components/Chip/index.d.ts.map +1 -0
  124. package/dist/components/Chip/index.js +8 -0
  125. package/dist/components/Chip/index.js.map +1 -0
  126. package/dist/components/CircularProgress/circular-progress.d.ts +40 -0
  127. package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -0
  128. package/dist/components/CircularProgress/circular-progress.js +118 -0
  129. package/dist/components/CircularProgress/circular-progress.js.map +1 -0
  130. package/dist/components/CircularProgress/index.d.ts +2 -0
  131. package/dist/components/CircularProgress/index.d.ts.map +1 -0
  132. package/dist/components/CircularProgress/index.js +6 -0
  133. package/dist/components/CircularProgress/index.js.map +1 -0
  134. package/dist/components/Coachmark/coachmark-story-helpers.d.ts +22 -0
  135. package/dist/components/Coachmark/coachmark-story-helpers.d.ts.map +1 -0
  136. package/dist/components/Coachmark/coachmark.d.ts +100 -0
  137. package/dist/components/Coachmark/coachmark.d.ts.map +1 -0
  138. package/dist/components/Coachmark/coachmark.js +111 -0
  139. package/dist/components/Coachmark/coachmark.js.map +1 -0
  140. package/dist/components/Coachmark/index.d.ts +2 -0
  141. package/dist/components/Coachmark/index.d.ts.map +1 -0
  142. package/dist/components/Coachmark/index.js +6 -0
  143. package/dist/components/Coachmark/index.js.map +1 -0
  144. package/dist/components/Combobox/combobox.d.ts +150 -0
  145. package/dist/components/Combobox/combobox.d.ts.map +1 -0
  146. package/dist/components/Combobox/combobox.js +622 -0
  147. package/dist/components/Combobox/combobox.js.map +1 -0
  148. package/dist/components/Combobox/index.d.ts +2 -0
  149. package/dist/components/Combobox/index.d.ts.map +1 -0
  150. package/dist/components/Combobox/index.js +6 -0
  151. package/dist/components/Combobox/index.js.map +1 -0
  152. package/dist/components/Command/command.d.ts +106 -0
  153. package/dist/components/Command/command.d.ts.map +1 -0
  154. package/dist/components/Command/command.js +123 -0
  155. package/dist/components/Command/command.js.map +1 -0
  156. package/dist/components/Command/index.d.ts +2 -0
  157. package/dist/components/Command/index.d.ts.map +1 -0
  158. package/dist/components/Command/index.js +14 -0
  159. package/dist/components/Command/index.js.map +1 -0
  160. package/dist/components/DataTable/active-editor-controller.d.ts +66 -0
  161. package/dist/components/DataTable/active-editor-controller.d.ts.map +1 -0
  162. package/dist/components/DataTable/cell-registry.d.ts +37 -0
  163. package/dist/components/DataTable/cell-registry.d.ts.map +1 -0
  164. package/dist/components/DataTable/cell-registry.js +377 -0
  165. package/dist/components/DataTable/cell-registry.js.map +1 -0
  166. package/dist/components/DataTable/column-types.d.ts +145 -0
  167. package/dist/components/DataTable/column-types.d.ts.map +1 -0
  168. package/dist/components/DataTable/column-types.js +17 -0
  169. package/dist/components/DataTable/column-types.js.map +1 -0
  170. package/dist/components/DataTable/data-table-column-visibility-panel.d.ts +49 -0
  171. package/dist/components/DataTable/data-table-column-visibility-panel.d.ts.map +1 -0
  172. package/dist/components/DataTable/data-table-filter-panel.d.ts +30 -0
  173. package/dist/components/DataTable/data-table-filter-panel.d.ts.map +1 -0
  174. package/dist/components/DataTable/data-table-interaction-layer.d.ts +78 -0
  175. package/dist/components/DataTable/data-table-interaction-layer.d.ts.map +1 -0
  176. package/dist/components/DataTable/data-table-interaction-layer.js +220 -0
  177. package/dist/components/DataTable/data-table-interaction-layer.js.map +1 -0
  178. package/dist/components/DataTable/data-table-sort-manager.d.ts +19 -0
  179. package/dist/components/DataTable/data-table-sort-manager.d.ts.map +1 -0
  180. package/dist/components/DataTable/data-table.d.ts +181 -0
  181. package/dist/components/DataTable/data-table.d.ts.map +1 -0
  182. package/dist/components/DataTable/data-table.js +1851 -0
  183. package/dist/components/DataTable/data-table.js.map +1 -0
  184. package/dist/components/DataTable/filter-operators.d.ts +116 -0
  185. package/dist/components/DataTable/filter-operators.d.ts.map +1 -0
  186. package/dist/components/DataTable/filter-tree.d.ts +66 -0
  187. package/dist/components/DataTable/filter-tree.d.ts.map +1 -0
  188. package/dist/components/DataTable/index.d.ts +2 -0
  189. package/dist/components/DataTable/index.d.ts.map +1 -0
  190. package/dist/components/DataTable/index.js +8 -0
  191. package/dist/components/DataTable/index.js.map +1 -0
  192. package/dist/components/DataTable/lib/column-meta.d.ts +49 -0
  193. package/dist/components/DataTable/lib/column-meta.d.ts.map +1 -0
  194. package/dist/components/DateGrid/date-grid.d.ts +61 -0
  195. package/dist/components/DateGrid/date-grid.d.ts.map +1 -0
  196. package/dist/components/DateGrid/date-grid.js +168 -0
  197. package/dist/components/DateGrid/date-grid.js.map +1 -0
  198. package/dist/components/DateGrid/index.d.ts +2 -0
  199. package/dist/components/DateGrid/index.d.ts.map +1 -0
  200. package/dist/components/DateGrid/index.js +6 -0
  201. package/dist/components/DateGrid/index.js.map +1 -0
  202. package/dist/components/DatePicker/date-picker.d.ts +119 -0
  203. package/dist/components/DatePicker/date-picker.d.ts.map +1 -0
  204. package/dist/components/DatePicker/date-picker.js +750 -0
  205. package/dist/components/DatePicker/date-picker.js.map +1 -0
  206. package/dist/components/DatePicker/index.d.ts +2 -0
  207. package/dist/components/DatePicker/index.d.ts.map +1 -0
  208. package/dist/components/DatePicker/index.js +8 -0
  209. package/dist/components/DatePicker/index.js.map +1 -0
  210. package/dist/components/DescriptionList/description-list.d.ts +60 -0
  211. package/dist/components/DescriptionList/description-list.d.ts.map +1 -0
  212. package/dist/components/DescriptionList/description-list.js +78 -0
  213. package/dist/components/DescriptionList/description-list.js.map +1 -0
  214. package/dist/components/DescriptionList/index.d.ts +2 -0
  215. package/dist/components/DescriptionList/index.d.ts.map +1 -0
  216. package/dist/components/DescriptionList/index.js +7 -0
  217. package/dist/components/DescriptionList/index.js.map +1 -0
  218. package/dist/components/Dialog/dialog.d.ts +54 -0
  219. package/dist/components/Dialog/dialog.d.ts.map +1 -0
  220. package/dist/components/Dialog/dialog.js +151 -0
  221. package/dist/components/Dialog/dialog.js.map +1 -0
  222. package/dist/components/Dialog/index.d.ts +2 -0
  223. package/dist/components/Dialog/index.d.ts.map +1 -0
  224. package/dist/components/Dialog/index.js +16 -0
  225. package/dist/components/Dialog/index.js.map +1 -0
  226. package/dist/components/DropdownMenu/dropdown-menu.d.ts +112 -0
  227. package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -0
  228. package/dist/components/DropdownMenu/dropdown-menu.js +288 -0
  229. package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -0
  230. package/dist/components/DropdownMenu/index.d.ts +2 -0
  231. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  232. package/dist/components/DropdownMenu/index.js +21 -0
  233. package/dist/components/DropdownMenu/index.js.map +1 -0
  234. package/dist/components/Empty/empty.d.ts +40 -0
  235. package/dist/components/Empty/empty.d.ts.map +1 -0
  236. package/dist/components/Empty/empty.js +66 -0
  237. package/dist/components/Empty/empty.js.map +1 -0
  238. package/dist/components/Empty/index.d.ts +2 -0
  239. package/dist/components/Empty/index.d.ts.map +1 -0
  240. package/dist/components/Empty/index.js +6 -0
  241. package/dist/components/Empty/index.js.map +1 -0
  242. package/dist/components/Field/field-context.d.ts +77 -0
  243. package/dist/components/Field/field-context.d.ts.map +1 -0
  244. package/dist/components/Field/field-context.js +37 -0
  245. package/dist/components/Field/field-context.js.map +1 -0
  246. package/dist/components/Field/field-types.d.ts +5 -0
  247. package/dist/components/Field/field-types.d.ts.map +1 -0
  248. package/dist/components/Field/field-types.js +13 -0
  249. package/dist/components/Field/field-types.js.map +1 -0
  250. package/dist/components/Field/field-wrapper.d.ts +17 -0
  251. package/dist/components/Field/field-wrapper.d.ts.map +1 -0
  252. package/dist/components/Field/field-wrapper.js +252 -0
  253. package/dist/components/Field/field-wrapper.js.map +1 -0
  254. package/dist/components/Field/field.d.ts +127 -0
  255. package/dist/components/Field/field.d.ts.map +1 -0
  256. package/dist/components/Field/field.js +295 -0
  257. package/dist/components/Field/field.js.map +1 -0
  258. package/dist/components/Field/index.d.ts +2 -0
  259. package/dist/components/Field/index.d.ts.map +1 -0
  260. package/dist/components/Field/index.js +10 -0
  261. package/dist/components/Field/index.js.map +1 -0
  262. package/dist/components/FieldControlGroup/field-control-group.d.ts +74 -0
  263. package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -0
  264. package/dist/components/FieldControlGroup/field-control-group.js +62 -0
  265. package/dist/components/FieldControlGroup/field-control-group.js.map +1 -0
  266. package/dist/components/FieldControlGroup/index.d.ts +2 -0
  267. package/dist/components/FieldControlGroup/index.d.ts.map +1 -0
  268. package/dist/components/FieldControlGroup/index.js +6 -0
  269. package/dist/components/FieldControlGroup/index.js.map +1 -0
  270. package/dist/components/FileItem/file-item.d.ts +44 -0
  271. package/dist/components/FileItem/file-item.d.ts.map +1 -0
  272. package/dist/components/FileItem/file-item.js +202 -0
  273. package/dist/components/FileItem/file-item.js.map +1 -0
  274. package/dist/components/FileItem/index.d.ts +2 -0
  275. package/dist/components/FileItem/index.d.ts.map +1 -0
  276. package/dist/components/FileItem/index.js +6 -0
  277. package/dist/components/FileItem/index.js.map +1 -0
  278. package/dist/components/FileUpload/file-upload.d.ts +97 -0
  279. package/dist/components/FileUpload/file-upload.d.ts.map +1 -0
  280. package/dist/components/FileUpload/file-upload.js +231 -0
  281. package/dist/components/FileUpload/file-upload.js.map +1 -0
  282. package/dist/components/FileUpload/index.d.ts +2 -0
  283. package/dist/components/FileUpload/index.d.ts.map +1 -0
  284. package/dist/components/FileUpload/index.js +6 -0
  285. package/dist/components/FileUpload/index.js.map +1 -0
  286. package/dist/components/FileViewer/file-viewer-types.d.ts +73 -0
  287. package/dist/components/FileViewer/file-viewer-types.d.ts.map +1 -0
  288. package/dist/components/FileViewer/file-viewer.d.ts +82 -0
  289. package/dist/components/FileViewer/file-viewer.d.ts.map +1 -0
  290. package/dist/components/FileViewer/file-viewer.js +751 -0
  291. package/dist/components/FileViewer/file-viewer.js.map +1 -0
  292. package/dist/components/FileViewer/image-renderer.d.ts +9 -0
  293. package/dist/components/FileViewer/image-renderer.d.ts.map +1 -0
  294. package/dist/components/FileViewer/image-renderer.js +165 -0
  295. package/dist/components/FileViewer/image-renderer.js.map +1 -0
  296. package/dist/components/FileViewer/index.d.ts +2 -0
  297. package/dist/components/FileViewer/index.d.ts.map +1 -0
  298. package/dist/components/FileViewer/index.js +7 -0
  299. package/dist/components/FileViewer/index.js.map +1 -0
  300. package/dist/components/HoverCard/hover-card.d.ts +30 -0
  301. package/dist/components/HoverCard/hover-card.d.ts.map +1 -0
  302. package/dist/components/HoverCard/hover-card.js +61 -0
  303. package/dist/components/HoverCard/hover-card.js.map +1 -0
  304. package/dist/components/HoverCard/index.d.ts +2 -0
  305. package/dist/components/HoverCard/index.d.ts.map +1 -0
  306. package/dist/components/HoverCard/index.js +8 -0
  307. package/dist/components/HoverCard/index.js.map +1 -0
  308. package/dist/components/Input/index.d.ts +2 -0
  309. package/dist/components/Input/index.d.ts.map +1 -0
  310. package/dist/components/Input/index.js +6 -0
  311. package/dist/components/Input/index.js.map +1 -0
  312. package/dist/components/Input/input.d.ts +75 -0
  313. package/dist/components/Input/input.d.ts.map +1 -0
  314. package/dist/components/Input/input.js +150 -0
  315. package/dist/components/Input/input.js.map +1 -0
  316. package/dist/components/LinkInput/index.d.ts +2 -0
  317. package/dist/components/LinkInput/index.d.ts.map +1 -0
  318. package/dist/components/LinkInput/index.js +6 -0
  319. package/dist/components/LinkInput/index.js.map +1 -0
  320. package/dist/components/LinkInput/link-input.d.ts +46 -0
  321. package/dist/components/LinkInput/link-input.d.ts.map +1 -0
  322. package/dist/components/LinkInput/link-input.js +215 -0
  323. package/dist/components/LinkInput/link-input.js.map +1 -0
  324. package/dist/components/Menu/index.d.ts +2 -0
  325. package/dist/components/Menu/index.d.ts.map +1 -0
  326. package/dist/components/Menu/index.js +9 -0
  327. package/dist/components/Menu/index.js.map +1 -0
  328. package/dist/components/Menu/menu-item.d.ts +83 -0
  329. package/dist/components/Menu/menu-item.d.ts.map +1 -0
  330. package/dist/components/Menu/menu-item.js +210 -0
  331. package/dist/components/Menu/menu-item.js.map +1 -0
  332. package/dist/components/Notice/index.d.ts +2 -0
  333. package/dist/components/Notice/index.d.ts.map +1 -0
  334. package/dist/components/Notice/index.js +8 -0
  335. package/dist/components/Notice/index.js.map +1 -0
  336. package/dist/components/Notice/notice.d.ts +69 -0
  337. package/dist/components/Notice/notice.d.ts.map +1 -0
  338. package/dist/components/Notice/notice.js +122 -0
  339. package/dist/components/Notice/notice.js.map +1 -0
  340. package/dist/components/NumberInput/index.d.ts +2 -0
  341. package/dist/components/NumberInput/index.d.ts.map +1 -0
  342. package/dist/components/NumberInput/index.js +7 -0
  343. package/dist/components/NumberInput/index.js.map +1 -0
  344. package/dist/components/NumberInput/number-input.d.ts +57 -0
  345. package/dist/components/NumberInput/number-input.d.ts.map +1 -0
  346. package/dist/components/NumberInput/number-input.js +132 -0
  347. package/dist/components/NumberInput/number-input.js.map +1 -0
  348. package/dist/components/OverflowIndicator/index.d.ts +2 -0
  349. package/dist/components/OverflowIndicator/index.d.ts.map +1 -0
  350. package/dist/components/OverflowIndicator/index.js +6 -0
  351. package/dist/components/OverflowIndicator/index.js.map +1 -0
  352. package/dist/components/OverflowIndicator/overflow-indicator.d.ts +23 -0
  353. package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -0
  354. package/dist/components/OverflowIndicator/overflow-indicator.js +118 -0
  355. package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -0
  356. package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts +57 -0
  357. package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts.map +1 -0
  358. package/dist/components/PeoplePicker/avatar-stack-overflow.js +35 -0
  359. package/dist/components/PeoplePicker/avatar-stack-overflow.js.map +1 -0
  360. package/dist/components/PeoplePicker/index.d.ts +2 -0
  361. package/dist/components/PeoplePicker/index.d.ts.map +1 -0
  362. package/dist/components/PeoplePicker/index.js +9 -0
  363. package/dist/components/PeoplePicker/index.js.map +1 -0
  364. package/dist/components/PeoplePicker/people-picker-helpers.d.ts +7 -0
  365. package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -0
  366. package/dist/components/PeoplePicker/people-picker-helpers.js +25 -0
  367. package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -0
  368. package/dist/components/PeoplePicker/people-picker.d.ts +77 -0
  369. package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -0
  370. package/dist/components/PeoplePicker/people-picker.js +263 -0
  371. package/dist/components/PeoplePicker/people-picker.js.map +1 -0
  372. package/dist/components/PeoplePicker/person-display.d.ts +66 -0
  373. package/dist/components/PeoplePicker/person-display.d.ts.map +1 -0
  374. package/dist/components/PeoplePicker/person-display.js +203 -0
  375. package/dist/components/PeoplePicker/person-display.js.map +1 -0
  376. package/dist/components/Popover/index.d.ts +2 -0
  377. package/dist/components/Popover/index.d.ts.map +1 -0
  378. package/dist/components/Popover/index.js +14 -0
  379. package/dist/components/Popover/index.js.map +1 -0
  380. package/dist/components/Popover/popover.d.ts +50 -0
  381. package/dist/components/Popover/popover.d.ts.map +1 -0
  382. package/dist/components/Popover/popover.js +113 -0
  383. package/dist/components/Popover/popover.js.map +1 -0
  384. package/dist/components/ProfileCard/index.d.ts +2 -0
  385. package/dist/components/ProfileCard/index.d.ts.map +1 -0
  386. package/dist/components/ProfileCard/index.js +8 -0
  387. package/dist/components/ProfileCard/index.js.map +1 -0
  388. package/dist/components/ProfileCard/profile-card.d.ts +85 -0
  389. package/dist/components/ProfileCard/profile-card.d.ts.map +1 -0
  390. package/dist/components/ProfileCard/profile-card.js +153 -0
  391. package/dist/components/ProfileCard/profile-card.js.map +1 -0
  392. package/dist/components/ProgressBar/index.d.ts +2 -0
  393. package/dist/components/ProgressBar/index.d.ts.map +1 -0
  394. package/dist/components/ProgressBar/index.js +6 -0
  395. package/dist/components/ProgressBar/index.js.map +1 -0
  396. package/dist/components/ProgressBar/progress-bar.d.ts +37 -0
  397. package/dist/components/ProgressBar/progress-bar.d.ts.map +1 -0
  398. package/dist/components/ProgressBar/progress-bar.js +86 -0
  399. package/dist/components/ProgressBar/progress-bar.js.map +1 -0
  400. package/dist/components/RadioGroup/index.d.ts +2 -0
  401. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  402. package/dist/components/RadioGroup/index.js +8 -0
  403. package/dist/components/RadioGroup/index.js.map +1 -0
  404. package/dist/components/RadioGroup/radio-group.d.ts +78 -0
  405. package/dist/components/RadioGroup/radio-group.d.ts.map +1 -0
  406. package/dist/components/RadioGroup/radio-group.js +148 -0
  407. package/dist/components/RadioGroup/radio-group.js.map +1 -0
  408. package/dist/components/Rating/index.d.ts +2 -0
  409. package/dist/components/Rating/index.d.ts.map +1 -0
  410. package/dist/components/Rating/index.js +6 -0
  411. package/dist/components/Rating/index.js.map +1 -0
  412. package/dist/components/Rating/rating.d.ts +50 -0
  413. package/dist/components/Rating/rating.d.ts.map +1 -0
  414. package/dist/components/Rating/rating.js +179 -0
  415. package/dist/components/Rating/rating.js.map +1 -0
  416. package/dist/components/ScrollArea/index.d.ts +2 -0
  417. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  418. package/dist/components/ScrollArea/index.js +7 -0
  419. package/dist/components/ScrollArea/index.js.map +1 -0
  420. package/dist/components/ScrollArea/scroll-area.d.ts +45 -0
  421. package/dist/components/ScrollArea/scroll-area.d.ts.map +1 -0
  422. package/dist/components/ScrollArea/scroll-area.js +65 -0
  423. package/dist/components/ScrollArea/scroll-area.js.map +1 -0
  424. package/dist/components/SegmentedControl/index.d.ts +2 -0
  425. package/dist/components/SegmentedControl/index.d.ts.map +1 -0
  426. package/dist/components/SegmentedControl/index.js +9 -0
  427. package/dist/components/SegmentedControl/index.js.map +1 -0
  428. package/dist/components/SegmentedControl/segmented-control.d.ts +102 -0
  429. package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -0
  430. package/dist/components/SegmentedControl/segmented-control.js +171 -0
  431. package/dist/components/SegmentedControl/segmented-control.js.map +1 -0
  432. package/dist/components/Select/index.d.ts +2 -0
  433. package/dist/components/Select/index.d.ts.map +1 -0
  434. package/dist/components/Select/index.js +6 -0
  435. package/dist/components/Select/index.js.map +1 -0
  436. package/dist/components/Select/select.d.ts +102 -0
  437. package/dist/components/Select/select.d.ts.map +1 -0
  438. package/dist/components/Select/select.js +437 -0
  439. package/dist/components/Select/select.js.map +1 -0
  440. package/dist/components/SelectMenu/index.d.ts +2 -0
  441. package/dist/components/SelectMenu/index.d.ts.map +1 -0
  442. package/dist/components/SelectMenu/index.js +6 -0
  443. package/dist/components/SelectMenu/index.js.map +1 -0
  444. package/dist/components/SelectMenu/select-menu.d.ts +104 -0
  445. package/dist/components/SelectMenu/select-menu.d.ts.map +1 -0
  446. package/dist/components/SelectMenu/select-menu.js +244 -0
  447. package/dist/components/SelectMenu/select-menu.js.map +1 -0
  448. package/dist/components/SelectionControl/index.d.ts +2 -0
  449. package/dist/components/SelectionControl/index.d.ts.map +1 -0
  450. package/dist/components/SelectionControl/index.js +7 -0
  451. package/dist/components/SelectionControl/index.js.map +1 -0
  452. package/dist/components/SelectionControl/selection-item.d.ts +69 -0
  453. package/dist/components/SelectionControl/selection-item.d.ts.map +1 -0
  454. package/dist/components/SelectionControl/selection-item.js +142 -0
  455. package/dist/components/SelectionControl/selection-item.js.map +1 -0
  456. package/dist/components/Separator/index.d.ts +2 -0
  457. package/dist/components/Separator/index.d.ts.map +1 -0
  458. package/dist/components/Separator/index.js +6 -0
  459. package/dist/components/Separator/index.js.map +1 -0
  460. package/dist/components/Separator/separator.d.ts +17 -0
  461. package/dist/components/Separator/separator.d.ts.map +1 -0
  462. package/dist/components/Separator/separator.js +39 -0
  463. package/dist/components/Separator/separator.js.map +1 -0
  464. package/dist/components/Sheet/index.d.ts +2 -0
  465. package/dist/components/Sheet/index.d.ts.map +1 -0
  466. package/dist/components/Sheet/index.js +17 -0
  467. package/dist/components/Sheet/index.js.map +1 -0
  468. package/dist/components/Sheet/sheet.d.ts +56 -0
  469. package/dist/components/Sheet/sheet.d.ts.map +1 -0
  470. package/dist/components/Sheet/sheet.js +145 -0
  471. package/dist/components/Sheet/sheet.js.map +1 -0
  472. package/dist/components/Sidebar/index.d.ts +2 -0
  473. package/dist/components/Sidebar/index.d.ts.map +1 -0
  474. package/dist/components/Sidebar/index.js +24 -0
  475. package/dist/components/Sidebar/index.js.map +1 -0
  476. package/dist/components/Sidebar/sidebar.d.ts +195 -0
  477. package/dist/components/Sidebar/sidebar.d.ts.map +1 -0
  478. package/dist/components/Sidebar/sidebar.js +829 -0
  479. package/dist/components/Sidebar/sidebar.js.map +1 -0
  480. package/dist/components/Skeleton/index.d.ts +2 -0
  481. package/dist/components/Skeleton/index.d.ts.map +1 -0
  482. package/dist/components/Skeleton/index.js +6 -0
  483. package/dist/components/Skeleton/index.js.map +1 -0
  484. package/dist/components/Skeleton/skeleton.d.ts +16 -0
  485. package/dist/components/Skeleton/skeleton.d.ts.map +1 -0
  486. package/dist/components/Skeleton/skeleton.js +30 -0
  487. package/dist/components/Skeleton/skeleton.js.map +1 -0
  488. package/dist/components/Slider/index.d.ts +2 -0
  489. package/dist/components/Slider/index.d.ts.map +1 -0
  490. package/dist/components/Slider/index.js +7 -0
  491. package/dist/components/Slider/index.js.map +1 -0
  492. package/dist/components/Slider/slider.d.ts +48 -0
  493. package/dist/components/Slider/slider.d.ts.map +1 -0
  494. package/dist/components/Slider/slider.js +111 -0
  495. package/dist/components/Slider/slider.js.map +1 -0
  496. package/dist/components/Steps/index.d.ts +2 -0
  497. package/dist/components/Steps/index.d.ts.map +1 -0
  498. package/dist/components/Steps/index.js +12 -0
  499. package/dist/components/Steps/index.js.map +1 -0
  500. package/dist/components/Steps/steps.d.ts +71 -0
  501. package/dist/components/Steps/steps.d.ts.map +1 -0
  502. package/dist/components/Steps/steps.js +597 -0
  503. package/dist/components/Steps/steps.js.map +1 -0
  504. package/dist/components/Switch/index.d.ts +2 -0
  505. package/dist/components/Switch/index.d.ts.map +1 -0
  506. package/dist/components/Switch/index.js +7 -0
  507. package/dist/components/Switch/index.js.map +1 -0
  508. package/dist/components/Switch/switch.d.ts +112 -0
  509. package/dist/components/Switch/switch.d.ts.map +1 -0
  510. package/dist/components/Switch/switch.js +180 -0
  511. package/dist/components/Switch/switch.js.map +1 -0
  512. package/dist/components/Tabs/index.d.ts +2 -0
  513. package/dist/components/Tabs/index.d.ts.map +1 -0
  514. package/dist/components/Tabs/index.js +10 -0
  515. package/dist/components/Tabs/index.js.map +1 -0
  516. package/dist/components/Tabs/tabs.d.ts +104 -0
  517. package/dist/components/Tabs/tabs.d.ts.map +1 -0
  518. package/dist/components/Tabs/tabs.js +317 -0
  519. package/dist/components/Tabs/tabs.js.map +1 -0
  520. package/dist/components/Tag/index.d.ts +2 -0
  521. package/dist/components/Tag/index.d.ts.map +1 -0
  522. package/dist/components/Tag/index.js +7 -0
  523. package/dist/components/Tag/index.js.map +1 -0
  524. package/dist/components/Tag/tag.d.ts +86 -0
  525. package/dist/components/Tag/tag.d.ts.map +1 -0
  526. package/dist/components/Tag/tag.js +177 -0
  527. package/dist/components/Tag/tag.js.map +1 -0
  528. package/dist/components/Textarea/index.d.ts +2 -0
  529. package/dist/components/Textarea/index.d.ts.map +1 -0
  530. package/dist/components/Textarea/index.js +7 -0
  531. package/dist/components/Textarea/index.js.map +1 -0
  532. package/dist/components/Textarea/textarea.d.ts +69 -0
  533. package/dist/components/Textarea/textarea.d.ts.map +1 -0
  534. package/dist/components/Textarea/textarea.js +226 -0
  535. package/dist/components/Textarea/textarea.js.map +1 -0
  536. package/dist/components/TimePicker/index.d.ts +2 -0
  537. package/dist/components/TimePicker/index.d.ts.map +1 -0
  538. package/dist/components/TimePicker/index.js +6 -0
  539. package/dist/components/TimePicker/index.js.map +1 -0
  540. package/dist/components/TimePicker/time-columns.d.ts +46 -0
  541. package/dist/components/TimePicker/time-columns.d.ts.map +1 -0
  542. package/dist/components/TimePicker/time-columns.js +173 -0
  543. package/dist/components/TimePicker/time-columns.js.map +1 -0
  544. package/dist/components/TimePicker/time-picker.d.ts +95 -0
  545. package/dist/components/TimePicker/time-picker.d.ts.map +1 -0
  546. package/dist/components/TimePicker/time-picker.js +261 -0
  547. package/dist/components/TimePicker/time-picker.js.map +1 -0
  548. package/dist/components/Toast/index.d.ts +2 -0
  549. package/dist/components/Toast/index.d.ts.map +1 -0
  550. package/dist/components/Toast/index.js +7 -0
  551. package/dist/components/Toast/index.js.map +1 -0
  552. package/dist/components/Toast/toast.d.ts +61 -0
  553. package/dist/components/Toast/toast.d.ts.map +1 -0
  554. package/dist/components/Toast/toast.js +76 -0
  555. package/dist/components/Toast/toast.js.map +1 -0
  556. package/dist/components/Tooltip/index.d.ts +2 -0
  557. package/dist/components/Tooltip/index.d.ts.map +1 -0
  558. package/dist/components/Tooltip/index.js +9 -0
  559. package/dist/components/Tooltip/index.js.map +1 -0
  560. package/dist/components/Tooltip/tooltip.d.ts +20 -0
  561. package/dist/components/Tooltip/tooltip.d.ts.map +1 -0
  562. package/dist/components/Tooltip/tooltip.js +53 -0
  563. package/dist/components/Tooltip/tooltip.js.map +1 -0
  564. package/dist/components/TreeView/index.d.ts +2 -0
  565. package/dist/components/TreeView/index.d.ts.map +1 -0
  566. package/dist/components/TreeView/index.js +8 -0
  567. package/dist/components/TreeView/index.js.map +1 -0
  568. package/dist/components/TreeView/tree-view.d.ts +166 -0
  569. package/dist/components/TreeView/tree-view.d.ts.map +1 -0
  570. package/dist/components/TreeView/tree-view.js +644 -0
  571. package/dist/components/TreeView/tree-view.js.map +1 -0
  572. package/dist/hooks/use-controllable.d.ts +16 -0
  573. package/dist/hooks/use-controllable.d.ts.map +1 -0
  574. package/dist/hooks/use-controllable.js +26 -0
  575. package/dist/hooks/use-controllable.js.map +1 -0
  576. package/dist/hooks/use-is-narrow-viewport.d.ts +2 -0
  577. package/dist/hooks/use-is-narrow-viewport.d.ts.map +1 -0
  578. package/dist/hooks/use-is-narrow-viewport.js +19 -0
  579. package/dist/hooks/use-is-narrow-viewport.js.map +1 -0
  580. package/dist/hooks/use-is-touch-device.d.ts +8 -0
  581. package/dist/hooks/use-is-touch-device.d.ts.map +1 -0
  582. package/dist/hooks/use-is-touch-device.js +16 -0
  583. package/dist/hooks/use-is-touch-device.js.map +1 -0
  584. package/dist/hooks/use-overflow-items.d.ts +128 -0
  585. package/dist/hooks/use-overflow-items.d.ts.map +1 -0
  586. package/dist/hooks/use-overflow-items.js +97 -0
  587. package/dist/hooks/use-overflow-items.js.map +1 -0
  588. package/dist/index.d.ts +75 -0
  589. package/dist/index.d.ts.map +1 -0
  590. package/dist/index.js +395 -0
  591. package/dist/index.js.map +1 -0
  592. package/dist/lib/drag-visual.d.ts +158 -0
  593. package/dist/lib/drag-visual.d.ts.map +1 -0
  594. package/dist/lib/drag-visual.js +96 -0
  595. package/dist/lib/drag-visual.js.map +1 -0
  596. package/dist/lib/i18n/i18n-context.d.ts +105 -0
  597. package/dist/lib/i18n/i18n-context.d.ts.map +1 -0
  598. package/dist/lib/multi-select-ordering.d.ts +54 -0
  599. package/dist/lib/multi-select-ordering.d.ts.map +1 -0
  600. package/dist/lib/multi-select-ordering.js +13 -0
  601. package/dist/lib/multi-select-ordering.js.map +1 -0
  602. package/dist/lib/utils.d.ts +12 -0
  603. package/dist/lib/utils.d.ts.map +1 -0
  604. package/dist/lib/utils.js +79 -0
  605. package/dist/lib/utils.js.map +1 -0
  606. package/dist/patterns/element-anatomy/index.d.ts +2 -0
  607. package/dist/patterns/element-anatomy/index.d.ts.map +1 -0
  608. package/dist/patterns/element-anatomy/index.js +20 -0
  609. package/dist/patterns/element-anatomy/index.js.map +1 -0
  610. package/dist/patterns/element-anatomy/item-anatomy.d.ts +371 -0
  611. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -0
  612. package/dist/patterns/element-anatomy/item-anatomy.js +272 -0
  613. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -0
  614. package/dist/patterns/header-canonical/chrome-header.d.ts +80 -0
  615. package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -0
  616. package/dist/patterns/header-canonical/chrome-header.js +75 -0
  617. package/dist/patterns/header-canonical/chrome-header.js.map +1 -0
  618. package/dist/patterns/header-canonical/index.d.ts +2 -0
  619. package/dist/patterns/header-canonical/index.d.ts.map +1 -0
  620. package/dist/patterns/header-canonical/index.js +5 -0
  621. package/dist/patterns/header-canonical/index.js.map +1 -0
  622. package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts +101 -0
  623. package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts.map +1 -0
  624. package/dist/patterns/horizontal-overflow/horizontal-overflow.js +105 -0
  625. package/dist/patterns/horizontal-overflow/horizontal-overflow.js.map +1 -0
  626. package/dist/patterns/horizontal-overflow/index.d.ts +2 -0
  627. package/dist/patterns/horizontal-overflow/index.d.ts.map +1 -0
  628. package/dist/patterns/horizontal-overflow/index.js +14 -0
  629. package/dist/patterns/horizontal-overflow/index.js.map +1 -0
  630. package/dist/patterns/overlay-surface/index.d.ts +2 -0
  631. package/dist/patterns/overlay-surface/index.d.ts.map +1 -0
  632. package/dist/patterns/overlay-surface/index.js +7 -0
  633. package/dist/patterns/overlay-surface/index.js.map +1 -0
  634. package/dist/patterns/overlay-surface/overlay-surface.d.ts +28 -0
  635. package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -0
  636. package/dist/patterns/overlay-surface/overlay-surface.js +85 -0
  637. package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -0
  638. package/dist/patterns/resize-handle/index.d.ts +2 -0
  639. package/dist/patterns/resize-handle/index.d.ts.map +1 -0
  640. package/dist/patterns/resize-handle/index.js +5 -0
  641. package/dist/patterns/resize-handle/index.js.map +1 -0
  642. package/dist/patterns/resize-handle/resize-handle.d.ts +102 -0
  643. package/dist/patterns/resize-handle/resize-handle.d.ts.map +1 -0
  644. package/dist/patterns/resize-handle/resize-handle.js +74 -0
  645. package/dist/patterns/resize-handle/resize-handle.js.map +1 -0
  646. package/dist/react-day-picker.css +457 -0
  647. package/dist/stories-helpers/anatomy/anatomy-utils.d.ts +40 -0
  648. package/dist/stories-helpers/anatomy/anatomy-utils.d.ts.map +1 -0
  649. package/dist/tokens/elevation/overlay-geometry.d.ts +12 -0
  650. package/dist/tokens/elevation/overlay-geometry.d.ts.map +1 -0
  651. package/dist/tokens/elevation/overlay-geometry.js +7 -0
  652. package/dist/tokens/elevation/overlay-geometry.js.map +1 -0
  653. package/dist/tokens/motion/motion.d.ts +15 -0
  654. package/dist/tokens/motion/motion.d.ts.map +1 -0
  655. package/dist/tokens/motion/motion.js +9 -0
  656. package/dist/tokens/motion/motion.js.map +1 -0
  657. package/dist/tokens/uiSize/icon-size.d.ts +52 -0
  658. package/dist/tokens/uiSize/icon-size.d.ts.map +1 -0
  659. package/ds-canonical/commands/README.md +26 -0
  660. package/ds-canonical/commands/gov-status.md +79 -0
  661. package/ds-canonical/hooks/README.md +145 -0
  662. package/ds-canonical/hooks/_log-fire.sh +44 -0
  663. package/ds-canonical/hooks/auto_regen_ds_barrel.sh +58 -0
  664. package/ds-canonical/hooks/block_prototype_imports.py +111 -0
  665. package/ds-canonical/hooks/check_addon_subdir_ship.sh +76 -0
  666. package/ds-canonical/hooks/check_audit_post_report_validator.sh +136 -0
  667. package/ds-canonical/hooks/check_audit_sample_escape.sh +73 -0
  668. package/ds-canonical/hooks/check_benchmark_citation.sh +106 -0
  669. package/ds-canonical/hooks/check_canonical_propagation.sh +189 -0
  670. package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +87 -0
  671. package/ds-canonical/hooks/check_codex_brief_invariants.sh +115 -0
  672. package/ds-canonical/hooks/check_codex_collab_5step.sh +108 -0
  673. package/ds-canonical/hooks/check_consumer_app_story_title.sh +81 -0
  674. package/ds-canonical/hooks/check_consumer_ds_primitive_misuse.sh +106 -0
  675. package/ds-canonical/hooks/check_consumer_no_ds_catalog.sh +98 -0
  676. package/ds-canonical/hooks/check_consumer_story_baseline.sh +76 -0
  677. package/ds-canonical/hooks/check_data_table_size_num_to_meta_width.sh +68 -0
  678. package/ds-canonical/hooks/check_datatable_invariants.sh +117 -0
  679. package/ds-canonical/hooks/check_dim_count_drift.sh +72 -0
  680. package/ds-canonical/hooks/check_ds_anchor_preflight.sh +132 -0
  681. package/ds-canonical/hooks/check_escape_marker_abuse.sh +126 -0
  682. package/ds-canonical/hooks/check_field_controls_contracts.sh +110 -0
  683. package/ds-canonical/hooks/check_field_family_invariants.sh +240 -0
  684. package/ds-canonical/hooks/check_file_size_budget.sh +60 -0
  685. package/ds-canonical/hooks/check_fork_user_plugin_install.sh +79 -0
  686. package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +71 -0
  687. package/ds-canonical/hooks/check_item_list_gap.sh +54 -0
  688. package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +84 -0
  689. package/ds-canonical/hooks/check_main_branch_workbench.sh +93 -0
  690. package/ds-canonical/hooks/check_naming_and_abstraction.sh +165 -0
  691. package/ds-canonical/hooks/check_opacity_token_usage.sh +149 -0
  692. package/ds-canonical/hooks/check_orphan_ds_css.sh +66 -0
  693. package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +75 -0
  694. package/ds-canonical/hooks/check_pattern_invariants.sh +196 -0
  695. package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +56 -0
  696. package/ds-canonical/hooks/check_pixel_quantified_audit.sh +53 -0
  697. package/ds-canonical/hooks/check_plugin_freshness.sh +68 -0
  698. package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +88 -0
  699. package/ds-canonical/hooks/check_propose_cite_required.sh +88 -0
  700. package/ds-canonical/hooks/check_propose_plain_chinese.sh +74 -0
  701. package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +70 -0
  702. package/ds-canonical/hooks/check_propose_without_benchmark.sh +63 -0
  703. package/ds-canonical/hooks/check_select_all_canonical.sh +58 -0
  704. package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +86 -0
  705. package/ds-canonical/hooks/check_solo_workflow.sh +258 -0
  706. package/ds-canonical/hooks/check_spec_class_drift.sh +88 -0
  707. package/ds-canonical/hooks/check_story_invariants.sh +612 -0
  708. package/ds-canonical/hooks/check_storybook_addon_preset_cjs.sh +87 -0
  709. package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +110 -0
  710. package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +73 -0
  711. package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +104 -0
  712. package/ds-canonical/hooks/chrome_header_dispatcher.sh +53 -0
  713. package/ds-canonical/hooks/enforce_home_charter.sh +44 -0
  714. package/ds-canonical/hooks/inject_deploy_url_after_push.sh +182 -0
  715. package/ds-canonical/hooks/inject_pending_self_audit.sh +248 -0
  716. package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +70 -0
  717. package/ds-canonical/hooks/lib/_approval_re.sh +33 -0
  718. package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +70 -0
  719. package/ds-canonical/hooks/lib/_code_quality.sh +73 -0
  720. package/ds-canonical/hooks/lib/_cva_default_sync.sh +69 -0
  721. package/ds-canonical/hooks/lib/_governance_coverage_check.sh +49 -0
  722. package/ds-canonical/hooks/lib/_hardcoded_strings.sh +163 -0
  723. package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +87 -0
  724. package/ds-canonical/hooks/lib/_layout_space_canonical.sh +56 -0
  725. package/ds-canonical/hooks/lib/_overlay_handcraft.sh +141 -0
  726. package/ds-canonical/hooks/lib/_person_data_richness.sh +42 -0
  727. package/ds-canonical/hooks/lib/_story_compile_drift.sh +48 -0
  728. package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +70 -0
  729. package/ds-canonical/hooks/lib/_token_hygiene.sh +96 -0
  730. package/ds-canonical/hooks/log_governance_fires.sh +50 -0
  731. package/ds-canonical/hooks/log_skill_invokes.sh +41 -0
  732. package/ds-canonical/hooks/post_edit_dispatcher.sh +62 -0
  733. package/ds-canonical/hooks/retired/check_anatomy_section_numbering.sh +106 -0
  734. package/ds-canonical/hooks/retired/check_avatar_hovercard.sh +90 -0
  735. package/ds-canonical/hooks/retired/check_button_icon_literal.sh.retired-2026-04-28 +38 -0
  736. package/ds-canonical/hooks/retired/check_container_breathing.sh +142 -0
  737. package/ds-canonical/hooks/retired/check_governance_compliance.sh +61 -0
  738. package/ds-canonical/hooks/retired/check_icon_only_padding_formula.sh +104 -0
  739. package/ds-canonical/hooks/retired/check_item_content_primitive.sh +150 -0
  740. package/ds-canonical/hooks/retired/check_item_list_gap.sh +153 -0
  741. package/ds-canonical/hooks/retired/check_sideoffset_canonical.sh +65 -0
  742. package/ds-canonical/hooks/retired/check_spec_iteration_tag.sh +87 -0
  743. package/ds-canonical/hooks/retired/check_ssot_consultation.sh +88 -0
  744. package/ds-canonical/hooks/retired/check_sync_update.sh +20 -0
  745. package/ds-canonical/hooks/retired/check_third_party_dom_verified.sh +95 -0
  746. package/ds-canonical/hooks/retired/enforce_home_charter.sh +125 -0
  747. package/ds-canonical/hooks/retired/post_edit_canonical_interrogate.sh +109 -0
  748. package/ds-canonical/hooks/retired/pre_edit_spec_check.sh +68 -0
  749. package/ds-canonical/hooks/retired/pre_new_component_spec.sh +39 -0
  750. package/ds-canonical/hooks/retired/pre_write_subsumption_check.sh +112 -0
  751. package/ds-canonical/hooks/retired/stop_meta_self_audit.sh.retired-2026-05-13 +76 -0
  752. package/ds-canonical/hooks/retired/tests/test_check_anatomy_section_numbering.sh +14 -0
  753. package/ds-canonical/hooks/retired/tests/test_check_avatar_hovercard.sh +15 -0
  754. package/ds-canonical/hooks/retired/tests/test_check_container_breathing.sh +15 -0
  755. package/ds-canonical/hooks/retired/tests/test_check_governance_compliance.sh +15 -0
  756. package/ds-canonical/hooks/retired/tests/test_check_icon_only_padding_formula.sh +79 -0
  757. package/ds-canonical/hooks/retired/tests/test_check_item_content_primitive.sh +15 -0
  758. package/ds-canonical/hooks/retired/tests/test_check_item_list_gap.sh +163 -0
  759. package/ds-canonical/hooks/retired/tests/test_check_sideoffset_canonical.sh +15 -0
  760. package/ds-canonical/hooks/retired/tests/test_check_spec_iteration_tag.sh +15 -0
  761. package/ds-canonical/hooks/retired/tests/test_check_ssot_consultation.sh +15 -0
  762. package/ds-canonical/hooks/retired/tests/test_check_sync_update.sh +14 -0
  763. package/ds-canonical/hooks/retired/tests/test_check_third_party_dom_verified.sh +15 -0
  764. package/ds-canonical/hooks/retired/tests/test_enforce_home_charter.sh +15 -0
  765. package/ds-canonical/hooks/retired/tests/test_pre_edit_spec_check.sh +15 -0
  766. package/ds-canonical/hooks/retired/tests/test_pre_new_component_spec.sh +15 -0
  767. package/ds-canonical/hooks/retired/tests/test_pre_write_subsumption_check.sh +63 -0
  768. package/ds-canonical/hooks/session_start_governance_check.sh +305 -0
  769. package/ds-canonical/hooks/stop_passive_logging.sh +322 -0
  770. package/ds-canonical/hooks/stop_self_audit.sh +475 -0
  771. package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +15 -0
  772. package/ds-canonical/hooks/tests/run-all.sh +76 -0
  773. package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +180 -0
  774. package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +143 -0
  775. package/ds-canonical/hooks/tests/test_check_addon_subdir_ship.sh +170 -0
  776. package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +140 -0
  777. package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +127 -0
  778. package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +93 -0
  779. package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +115 -0
  780. package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +133 -0
  781. package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +198 -0
  782. package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +123 -0
  783. package/ds-canonical/hooks/tests/test_check_code_quality.sh +15 -0
  784. package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +208 -0
  785. package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +96 -0
  786. package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +163 -0
  787. package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +202 -0
  788. package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +201 -0
  789. package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +200 -0
  790. package/ds-canonical/hooks/tests/test_check_cva_default_sync.sh +15 -0
  791. package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +52 -0
  792. package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +122 -0
  793. package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +98 -0
  794. package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +104 -0
  795. package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +192 -0
  796. package/ds-canonical/hooks/tests/test_check_field_controls_contracts.sh +126 -0
  797. package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +194 -0
  798. package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +32 -0
  799. package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +45 -0
  800. package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +190 -0
  801. package/ds-canonical/hooks/tests/test_check_hardcoded_strings.sh +14 -0
  802. package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +110 -0
  803. package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +44 -0
  804. package/ds-canonical/hooks/tests/test_check_layout_space_canonical.sh +73 -0
  805. package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +196 -0
  806. package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +147 -0
  807. package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +136 -0
  808. package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +110 -0
  809. package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +212 -0
  810. package/ds-canonical/hooks/tests/test_check_overlay_handcraft.sh +126 -0
  811. package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +191 -0
  812. package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +148 -0
  813. package/ds-canonical/hooks/tests/test_check_peoplepicker_ssot_drift.sh +108 -0
  814. package/ds-canonical/hooks/tests/test_check_person_data_richness.sh +58 -0
  815. package/ds-canonical/hooks/tests/test_check_pixel_quantified_audit.sh +142 -0
  816. package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +180 -0
  817. package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +126 -0
  818. package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +117 -0
  819. package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +55 -0
  820. package/ds-canonical/hooks/tests/test_check_select_all_canonical.sh +125 -0
  821. package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +224 -0
  822. package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +201 -0
  823. package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +135 -0
  824. package/ds-canonical/hooks/tests/test_check_story_anatomy.sh.broken +197 -0
  825. package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +187 -0
  826. package/ds-canonical/hooks/tests/test_check_story_compile_drift.sh +15 -0
  827. package/ds-canonical/hooks/tests/test_check_story_invariants.sh +209 -0
  828. package/ds-canonical/hooks/tests/test_check_story_name_jargon.sh.broken +53 -0
  829. package/ds-canonical/hooks/tests/test_check_story_slot_split.sh +156 -0
  830. package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +199 -0
  831. package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +176 -0
  832. package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +138 -0
  833. package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +182 -0
  834. package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +21 -0
  835. package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +169 -0
  836. package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +77 -0
  837. package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +125 -0
  838. package/ds-canonical/hooks/tests/test_log_governance_fires.sh +10 -0
  839. package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +7 -0
  840. package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +108 -0
  841. package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +154 -0
  842. package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +95 -0
  843. package/ds-canonical/hooks/tests/test_stop_governance_drift_check.sh.broken +125 -0
  844. package/ds-canonical/hooks/tests/test_stop_harvest_corrections.sh +10 -0
  845. package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +100 -0
  846. package/ds-canonical/hooks/tests/test_stop_self_audit.sh +76 -0
  847. package/ds-canonical/hooks/tests/test_stop_tsc_sanity.sh +10 -0
  848. package/ds-canonical/references/README.md +46 -0
  849. package/ds-canonical/references/audit-coverage-vs-24-checklist.md +74 -0
  850. package/ds-canonical/references/build-ui-canonicals.md +69 -0
  851. package/ds-canonical/references/composition-fidelity.md +101 -0
  852. package/ds-canonical/references/cva-patterns.md +41 -0
  853. package/ds-canonical/references/drag-canonical.md +331 -0
  854. package/ds-canonical/references/item-anatomy-recipe.md +225 -0
  855. package/ds-canonical/references/naming-conventions.md +56 -0
  856. package/ds-canonical/references/principle-dim-map.json +513 -0
  857. package/ds-canonical/references/props-naming.md +45 -0
  858. package/ds-canonical/references/scenario-definition.md +146 -0
  859. package/ds-canonical/references/spec-rules.md +58 -0
  860. package/ds-canonical/references/ssot-consultation.md +63 -0
  861. package/ds-canonical/references/ssot-index.md +40 -0
  862. package/ds-canonical/references/story-baseline-registry.json +79 -0
  863. package/ds-canonical/references/structural-token-retention.md +42 -0
  864. package/ds-canonical/references/tailwind-gotchas.md +87 -0
  865. package/ds-canonical/references/ui-dev-rules.md +60 -0
  866. package/ds-canonical/rules/README.md +34 -0
  867. package/ds-canonical/rules/meta-patterns.md +87 -0
  868. package/ds-canonical/rules/self-verify.md +53 -0
  869. package/ds-canonical/rules/spec-rules.md +25 -0
  870. package/ds-canonical/rules/story-rules.md +65 -0
  871. package/ds-canonical/rules/ui-development.md +87 -0
  872. package/ds-canonical/skills/README.md +88 -0
  873. package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +181 -0
  874. package/ds-canonical/skills/code-quality-audit/SKILL.md +63 -0
  875. package/ds-canonical/skills/codex-collab/SKILL.md +249 -0
  876. package/ds-canonical/skills/codex-collab/references/brief-template.md +48 -0
  877. package/ds-canonical/skills/codex-collab/references/transport.md +58 -0
  878. package/ds-canonical/skills/codify-corrections/SKILL.md +184 -0
  879. package/ds-canonical/skills/codify-principle/SKILL.md +151 -0
  880. package/ds-canonical/skills/component-quality-gate/SKILL.md +102 -0
  881. package/ds-canonical/skills/component-quality-gate/references/checklist.md +79 -0
  882. package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +267 -0
  883. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +123 -0
  884. package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +186 -0
  885. package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +30 -0
  886. package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +91 -0
  887. package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +33 -0
  888. package/ds-canonical/skills/delivery-handoff/SKILL.md +229 -0
  889. package/ds-canonical/skills/delivery-handoff/references/flow-diagram.md +180 -0
  890. package/ds-canonical/skills/delivery-handoff/references/handoff-template.md +177 -0
  891. package/ds-canonical/skills/delivery-handoff/references/inventory-checklist.md +196 -0
  892. package/ds-canonical/skills/design-system-audit/SKILL.md +384 -0
  893. package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +1317 -0
  894. package/ds-canonical/skills/design-system-audit/references/checkpoints.md +240 -0
  895. package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +240 -0
  896. package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +378 -0
  897. package/ds-canonical/skills/design-system-audit/references/rule-placement.md +175 -0
  898. package/ds-canonical/skills/ensure-canonical/SKILL.md +196 -0
  899. package/ds-canonical/skills/governance-health/SKILL.md +147 -0
  900. package/ds-canonical/skills/knowledge-prune/SKILL.md +248 -0
  901. package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +11 -0
  902. package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +55 -0
  903. package/ds-canonical/skills/knowledge-prune/references/world-class-prune-alignment.md +7 -0
  904. package/ds-canonical/skills/new-component/SKILL.md +170 -0
  905. package/ds-canonical/skills/new-component/references/new-component-checklist.md +85 -0
  906. package/ds-canonical/skills/performance-audit/SKILL.md +107 -0
  907. package/ds-canonical/skills/product-ui-audit/SKILL.md +230 -0
  908. package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +246 -0
  909. package/ds-canonical/skills/product-ui-audit/references/common-misuses.md +329 -0
  910. package/ds-canonical/skills/product-ui-audit/references/report-template.md +159 -0
  911. package/ds-canonical/skills/propose-options/SKILL.md +177 -0
  912. package/ds-canonical/skills/prototype/SKILL.md +244 -0
  913. package/ds-canonical/skills/prototype/references/audit-checks.md +37 -0
  914. package/ds-canonical/skills/prototype/references/benchmark-sources.md +94 -0
  915. package/ds-canonical/skills/prototype/references/checkpoints.md +191 -0
  916. package/ds-canonical/skills/prototype/references/evaluation-matrix.md +141 -0
  917. package/ds-canonical/skills/prototype/references/ooux-template.md +198 -0
  918. package/ds-canonical/skills/prototype/references/proposal-template.md +229 -0
  919. package/ds-canonical/skills/scan-similar-bugs/SKILL.md +198 -0
  920. package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +159 -0
  921. package/ds-canonical/skills/story-writing/SKILL.md +122 -0
  922. package/ds-canonical/skills/story-writing/references/anatomy-standard.md +217 -0
  923. package/ds-canonical/skills/story-writing/references/category-templates.md +174 -0
  924. package/ds-canonical/skills/story-writing/references/example-selection.md +70 -0
  925. package/ds-canonical/skills/story-writing/references/self-check.md +20 -0
  926. package/ds-canonical/skills/ux-audit/SKILL.md +130 -0
  927. package/ds-canonical/skills/visual-audit/SKILL.md +245 -0
  928. package/ds-canonical/skills/visual-audit/output/.gitkeep +0 -0
  929. package/ds-canonical/skills/visual-audit/references/audit-architecture.md +100 -0
  930. package/ds-canonical/skills/visual-audit/references/visual-checklist.md +297 -0
  931. package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +198 -0
  932. package/ds-canonical/templates/_README.md +23 -0
  933. package/ds-canonical/templates/dashboard-app.tsx +145 -0
  934. package/ds-story-manifest.json +1685 -0
  935. package/package.json +22 -13
  936. package/src/components/Accordion/accordion.anatomy.stories.tsx +496 -0
  937. package/src/components/Accordion/accordion.principles.stories.tsx +360 -0
  938. package/src/components/Accordion/accordion.spec.md +114 -0
  939. package/src/components/Accordion/accordion.stories.tsx +190 -0
  940. package/src/components/Accordion/accordion.tsx +3 -0
  941. package/src/components/Accordion/index.ts +5 -0
  942. package/src/components/Alert/alert.anatomy.stories.tsx +238 -0
  943. package/src/components/Alert/alert.principles.stories.tsx +220 -0
  944. package/src/components/Alert/alert.spec.md +197 -0
  945. package/src/components/Alert/alert.stories.tsx +139 -0
  946. package/src/components/Alert/index.ts +5 -0
  947. package/src/components/AppShell/_demo-helpers.tsx +5 -5
  948. package/src/components/AppShell/app-shell.anatomy.stories.tsx +176 -0
  949. package/src/components/AppShell/app-shell.principles.stories.tsx +81 -0
  950. package/src/components/AppShell/app-shell.spec.md +330 -0
  951. package/src/components/AppShell/app-shell.stories.tsx +435 -0
  952. package/src/components/AppShell/index.ts +5 -0
  953. package/src/components/AspectRatio/aspect-ratio.anatomy.stories.tsx +208 -0
  954. package/src/components/AspectRatio/aspect-ratio.principles.stories.tsx +303 -0
  955. package/src/components/AspectRatio/aspect-ratio.spec.md +134 -0
  956. package/src/components/AspectRatio/aspect-ratio.stories.tsx +170 -0
  957. package/src/components/AspectRatio/index.ts +5 -0
  958. package/src/components/Avatar/avatar.anatomy.stories.tsx +700 -0
  959. package/src/components/Avatar/avatar.principles.stories.tsx +245 -0
  960. package/src/components/Avatar/avatar.spec.md +331 -0
  961. package/src/components/Avatar/avatar.stories.tsx +135 -0
  962. package/src/components/Avatar/avatar.tsx +21 -16
  963. package/src/components/Avatar/index.ts +5 -0
  964. package/src/components/Badge/badge.anatomy.stories.tsx +588 -0
  965. package/src/components/Badge/badge.principles.stories.tsx +393 -0
  966. package/src/components/Badge/badge.spec.md +380 -0
  967. package/src/components/Badge/badge.stories.tsx +82 -0
  968. package/src/components/Badge/index.ts +5 -0
  969. package/src/components/Breadcrumb/breadcrumb.anatomy.stories.tsx +458 -0
  970. package/src/components/Breadcrumb/breadcrumb.principles.stories.tsx +340 -0
  971. package/src/components/Breadcrumb/breadcrumb.spec.md +258 -0
  972. package/src/components/Breadcrumb/breadcrumb.stories.tsx +332 -0
  973. package/src/components/Breadcrumb/breadcrumb.tsx +27 -17
  974. package/src/components/Breadcrumb/index.ts +5 -0
  975. package/src/components/BulkActionBar/bulk-action-bar.anatomy.stories.tsx +224 -0
  976. package/src/components/BulkActionBar/bulk-action-bar.principles.stories.tsx +242 -0
  977. package/src/components/BulkActionBar/bulk-action-bar.spec.md +210 -0
  978. package/src/components/BulkActionBar/bulk-action-bar.stories.tsx +136 -0
  979. package/src/components/BulkActionBar/bulk-action-bar.tsx +2 -1
  980. package/src/components/BulkActionBar/index.ts +5 -0
  981. package/src/components/Button/button.anatomy.stories.tsx +710 -0
  982. package/src/components/Button/button.principles.stories.tsx +370 -0
  983. package/src/components/Button/button.spec.md +461 -0
  984. package/src/components/Button/button.stories.tsx +362 -0
  985. package/src/components/Button/index.ts +5 -0
  986. package/src/components/Calendar/calendar.anatomy.stories.tsx +218 -0
  987. package/src/components/Calendar/calendar.principles.stories.tsx +143 -0
  988. package/src/components/Calendar/calendar.spec.md +244 -0
  989. package/src/components/Calendar/calendar.stories.tsx +88 -0
  990. package/src/components/Calendar/calendar.tsx +22 -2
  991. package/src/components/Calendar/index.ts +5 -0
  992. package/src/components/Carousel/carousel.anatomy.stories.tsx +516 -0
  993. package/src/components/Carousel/carousel.principles.stories.tsx +330 -0
  994. package/src/components/Carousel/carousel.spec.md +253 -0
  995. package/src/components/Carousel/carousel.stories.tsx +121 -0
  996. package/src/components/Carousel/carousel.tsx +7 -3
  997. package/src/components/Carousel/index.ts +5 -0
  998. package/src/components/Chart/chart.anatomy.stories.tsx +307 -0
  999. package/src/components/Chart/chart.principles.stories.tsx +436 -0
  1000. package/src/components/Chart/chart.spec.md +155 -0
  1001. package/src/components/Chart/chart.stories.tsx +268 -0
  1002. package/src/components/Chart/chart.tsx +3 -0
  1003. package/src/components/Chart/index.ts +5 -0
  1004. package/src/components/Checkbox/checkbox.anatomy.stories.tsx +626 -0
  1005. package/src/components/Checkbox/checkbox.principles.stories.tsx +213 -0
  1006. package/src/components/Checkbox/checkbox.spec.md +344 -0
  1007. package/src/components/Checkbox/checkbox.stories.tsx +114 -0
  1008. package/src/components/Checkbox/checkbox.tsx +12 -12
  1009. package/src/components/Checkbox/index.ts +5 -0
  1010. package/src/components/Chip/chip.anatomy.stories.tsx +422 -0
  1011. package/src/components/Chip/chip.principles.stories.tsx +222 -0
  1012. package/src/components/Chip/chip.spec.md +238 -0
  1013. package/src/components/Chip/chip.stories.tsx +88 -0
  1014. package/src/components/Chip/chip.tsx +4 -4
  1015. package/src/components/Chip/index.ts +5 -0
  1016. package/src/components/CircularProgress/circular-progress.anatomy.stories.tsx +176 -0
  1017. package/src/components/CircularProgress/circular-progress.principles.stories.tsx +258 -0
  1018. package/src/components/CircularProgress/circular-progress.spec.md +268 -0
  1019. package/src/components/CircularProgress/circular-progress.stories.tsx +160 -0
  1020. package/src/components/CircularProgress/index.ts +5 -0
  1021. package/src/components/Coachmark/coachmark-story-helpers.tsx +39 -0
  1022. package/src/components/Coachmark/coachmark.anatomy.stories.tsx +356 -0
  1023. package/src/components/Coachmark/coachmark.principles.stories.tsx +369 -0
  1024. package/src/components/Coachmark/coachmark.spec.md +230 -0
  1025. package/src/components/Coachmark/coachmark.stories.tsx +214 -0
  1026. package/src/components/Coachmark/coachmark.tsx +12 -3
  1027. package/src/components/Coachmark/index.ts +5 -0
  1028. package/src/components/Combobox/combobox.anatomy.stories.tsx +918 -0
  1029. package/src/components/Combobox/combobox.principles.stories.tsx +239 -0
  1030. package/src/components/Combobox/combobox.spec.md +182 -0
  1031. package/src/components/Combobox/combobox.stories.tsx +184 -0
  1032. package/src/components/Combobox/combobox.tsx +21 -8
  1033. package/src/components/Combobox/index.ts +5 -0
  1034. package/src/components/Command/command.anatomy.stories.tsx +105 -0
  1035. package/src/components/Command/command.principles.stories.tsx +88 -0
  1036. package/src/components/Command/command.spec.md +171 -0
  1037. package/src/components/Command/command.stories.tsx +280 -0
  1038. package/src/components/Command/index.ts +5 -0
  1039. package/src/components/DataTable/data-table-filter-panel.tsx +1 -1
  1040. package/src/components/DataTable/data-table.anatomy.stories.tsx +523 -0
  1041. package/src/components/DataTable/data-table.principles.stories.tsx +265 -0
  1042. package/src/components/DataTable/data-table.spec.md +526 -0
  1043. package/src/components/DataTable/data-table.stories.tsx +1892 -0
  1044. package/src/components/DataTable/data-table.tsx +4 -4
  1045. package/src/components/DataTable/index.ts +5 -0
  1046. package/src/components/DateGrid/date-grid.anatomy.stories.tsx +583 -0
  1047. package/src/components/DateGrid/date-grid.principles.stories.tsx +338 -0
  1048. package/src/components/DateGrid/date-grid.spec.md +215 -0
  1049. package/src/components/DateGrid/date-grid.stories.tsx +195 -0
  1050. package/src/components/DateGrid/date-grid.tsx +13 -13
  1051. package/src/components/DateGrid/index.ts +5 -0
  1052. package/src/components/DatePicker/date-picker.anatomy.stories.tsx +952 -0
  1053. package/src/components/DatePicker/date-picker.principles.stories.tsx +205 -0
  1054. package/src/components/DatePicker/date-picker.spec.md +333 -0
  1055. package/src/components/DatePicker/date-picker.stories.tsx +353 -0
  1056. package/src/components/DatePicker/date-picker.tsx +12 -1
  1057. package/src/components/DatePicker/index.ts +5 -0
  1058. package/src/components/DescriptionList/description-list.anatomy.stories.tsx +252 -0
  1059. package/src/components/DescriptionList/description-list.principles.stories.tsx +323 -0
  1060. package/src/components/DescriptionList/description-list.spec.md +214 -0
  1061. package/src/components/DescriptionList/description-list.stories.tsx +128 -0
  1062. package/src/components/DescriptionList/description-list.tsx +2 -2
  1063. package/src/components/DescriptionList/index.ts +5 -0
  1064. package/src/components/Dialog/dialog.anatomy.stories.tsx +484 -0
  1065. package/src/components/Dialog/dialog.principles.stories.tsx +313 -0
  1066. package/src/components/Dialog/dialog.spec.md +201 -0
  1067. package/src/components/Dialog/dialog.stories.tsx +500 -0
  1068. package/src/components/Dialog/dialog.tsx +4 -4
  1069. package/src/components/Dialog/index.ts +5 -0
  1070. package/src/components/DropdownMenu/dropdown-menu.anatomy.stories.tsx +969 -0
  1071. package/src/components/DropdownMenu/dropdown-menu.principles.stories.tsx +340 -0
  1072. package/src/components/DropdownMenu/dropdown-menu.spec.md +259 -0
  1073. package/src/components/DropdownMenu/dropdown-menu.stories.tsx +288 -0
  1074. package/src/components/DropdownMenu/dropdown-menu.tsx +13 -5
  1075. package/src/components/DropdownMenu/index.ts +5 -0
  1076. package/src/components/Empty/empty.anatomy.stories.tsx +272 -0
  1077. package/src/components/Empty/empty.principles.stories.tsx +314 -0
  1078. package/src/components/Empty/empty.spec.md +215 -0
  1079. package/src/components/Empty/empty.stories.tsx +80 -0
  1080. package/src/components/Empty/index.ts +5 -0
  1081. package/src/components/Field/field-controls.spec.md +338 -0
  1082. package/src/components/Field/field-types.ts +1 -1
  1083. package/src/components/Field/field.anatomy.stories.tsx +541 -0
  1084. package/src/components/Field/field.principles.stories.tsx +277 -0
  1085. package/src/components/Field/field.spec.md +438 -0
  1086. package/src/components/Field/field.stories.tsx +552 -0
  1087. package/src/components/Field/form-validation.spec.md +150 -0
  1088. package/src/components/Field/index.ts +5 -0
  1089. package/src/components/FieldControlGroup/field-control-group.anatomy.stories.tsx +117 -0
  1090. package/src/components/FieldControlGroup/field-control-group.principles.stories.tsx +117 -0
  1091. package/src/components/FieldControlGroup/field-control-group.spec.md +179 -0
  1092. package/src/components/FieldControlGroup/field-control-group.stories.tsx +161 -0
  1093. package/src/components/FieldControlGroup/index.ts +5 -0
  1094. package/src/components/FileItem/file-item.anatomy.stories.tsx +354 -0
  1095. package/src/components/FileItem/file-item.principles.stories.tsx +275 -0
  1096. package/src/components/FileItem/file-item.spec.md +461 -0
  1097. package/src/components/FileItem/file-item.stories.tsx +204 -0
  1098. package/src/components/FileItem/index.ts +5 -0
  1099. package/src/components/FileUpload/file-upload.anatomy.stories.tsx +457 -0
  1100. package/src/components/FileUpload/file-upload.principles.stories.tsx +314 -0
  1101. package/src/components/FileUpload/file-upload.spec.md +123 -0
  1102. package/src/components/FileUpload/file-upload.stories.tsx +134 -0
  1103. package/src/components/FileUpload/file-upload.tsx +4 -4
  1104. package/src/components/FileUpload/index.ts +5 -0
  1105. package/src/components/FileViewer/file-viewer.anatomy.stories.tsx +1122 -0
  1106. package/src/components/FileViewer/file-viewer.principles.stories.tsx +636 -0
  1107. package/src/components/FileViewer/file-viewer.spec.md +374 -0
  1108. package/src/components/FileViewer/file-viewer.stories.tsx +407 -0
  1109. package/src/components/FileViewer/file-viewer.tsx +10 -9
  1110. package/src/components/FileViewer/index.ts +5 -0
  1111. package/src/components/HoverCard/hover-card.anatomy.stories.tsx +145 -0
  1112. package/src/components/HoverCard/hover-card.principles.stories.tsx +222 -0
  1113. package/src/components/HoverCard/hover-card.spec.md +157 -0
  1114. package/src/components/HoverCard/hover-card.stories.tsx +304 -0
  1115. package/src/components/HoverCard/hover-card.tsx +2 -2
  1116. package/src/components/HoverCard/index.ts +5 -0
  1117. package/src/components/Input/index.ts +5 -0
  1118. package/src/components/Input/input.anatomy.stories.tsx +763 -0
  1119. package/src/components/Input/input.principles.stories.tsx +292 -0
  1120. package/src/components/Input/input.spec.md +195 -0
  1121. package/src/components/Input/input.stories.tsx +133 -0
  1122. package/src/components/Input/input.tsx +11 -4
  1123. package/src/components/LinkInput/index.ts +5 -0
  1124. package/src/components/LinkInput/link-input.anatomy.stories.tsx +746 -0
  1125. package/src/components/LinkInput/link-input.principles.stories.tsx +182 -0
  1126. package/src/components/LinkInput/link-input.spec.md +131 -0
  1127. package/src/components/LinkInput/link-input.stories.tsx +132 -0
  1128. package/src/components/Menu/index.ts +5 -0
  1129. package/src/components/Menu/menu-item.anatomy.stories.tsx +780 -0
  1130. package/src/components/Menu/menu-item.principles.stories.tsx +81 -0
  1131. package/src/components/Menu/menu-item.spec.md +292 -0
  1132. package/src/components/Menu/menu-item.stories.tsx +214 -0
  1133. package/src/components/Menu/menu-item.tsx +1 -0
  1134. package/src/components/Notice/index.ts +5 -0
  1135. package/src/components/Notice/notice.anatomy.stories.tsx +610 -0
  1136. package/src/components/Notice/notice.principles.stories.tsx +102 -0
  1137. package/src/components/Notice/notice.spec.md +151 -0
  1138. package/src/components/Notice/notice.stories.tsx +257 -0
  1139. package/src/components/Notice/notice.tsx +1 -0
  1140. package/src/components/NumberInput/index.ts +5 -0
  1141. package/src/components/NumberInput/number-input.anatomy.stories.tsx +786 -0
  1142. package/src/components/NumberInput/number-input.principles.stories.tsx +221 -0
  1143. package/src/components/NumberInput/number-input.spec.md +125 -0
  1144. package/src/components/NumberInput/number-input.stories.tsx +142 -0
  1145. package/src/components/NumberInput/number-input.tsx +2 -1
  1146. package/src/components/OverflowIndicator/index.ts +5 -0
  1147. package/src/components/OverflowIndicator/overflow-indicator.anatomy.stories.tsx +548 -0
  1148. package/src/components/OverflowIndicator/overflow-indicator.principles.stories.tsx +80 -0
  1149. package/src/components/OverflowIndicator/overflow-indicator.spec.md +119 -0
  1150. package/src/components/OverflowIndicator/overflow-indicator.stories.tsx +274 -0
  1151. package/src/components/OverflowIndicator/overflow-indicator.tsx +9 -2
  1152. package/src/components/PeoplePicker/index.ts +5 -0
  1153. package/src/components/PeoplePicker/people-picker-helpers.ts +5 -5
  1154. package/src/components/PeoplePicker/people-picker.anatomy.stories.tsx +418 -0
  1155. package/src/components/PeoplePicker/people-picker.principles.stories.tsx +192 -0
  1156. package/src/components/PeoplePicker/people-picker.spec.md +278 -0
  1157. package/src/components/PeoplePicker/people-picker.stories.tsx +162 -0
  1158. package/src/components/PeoplePicker/people-picker.tsx +3 -3
  1159. package/src/components/PeoplePicker/person-display.tsx +25 -25
  1160. package/src/components/Popover/index.ts +5 -0
  1161. package/src/components/Popover/popover.anatomy.stories.tsx +277 -0
  1162. package/src/components/Popover/popover.principles.stories.tsx +293 -0
  1163. package/src/components/Popover/popover.spec.md +200 -0
  1164. package/src/components/Popover/popover.stories.tsx +116 -0
  1165. package/src/components/Popover/popover.tsx +2 -2
  1166. package/src/components/ProfileCard/index.ts +5 -0
  1167. package/src/components/ProfileCard/profile-card.anatomy.stories.tsx +504 -0
  1168. package/src/components/ProfileCard/profile-card.principles.stories.tsx +221 -0
  1169. package/src/components/ProfileCard/profile-card.spec.md +171 -0
  1170. package/src/components/ProfileCard/profile-card.stories.tsx +53 -0
  1171. package/src/components/{NameCard/name-card.tsx → ProfileCard/profile-card.tsx} +23 -23
  1172. package/src/components/ProgressBar/index.ts +5 -0
  1173. package/src/components/ProgressBar/progress-bar.anatomy.stories.tsx +438 -0
  1174. package/src/components/ProgressBar/progress-bar.principles.stories.tsx +337 -0
  1175. package/src/components/ProgressBar/progress-bar.spec.md +232 -0
  1176. package/src/components/ProgressBar/progress-bar.stories.tsx +119 -0
  1177. package/src/components/RadioGroup/index.ts +5 -0
  1178. package/src/components/RadioGroup/radio-group.anatomy.stories.tsx +678 -0
  1179. package/src/components/RadioGroup/radio-group.principles.stories.tsx +170 -0
  1180. package/src/components/RadioGroup/radio-group.spec.md +141 -0
  1181. package/src/components/RadioGroup/radio-group.stories.tsx +101 -0
  1182. package/src/components/RadioGroup/radio-group.tsx +11 -22
  1183. package/src/components/Rating/index.ts +5 -0
  1184. package/src/components/Rating/rating.anatomy.stories.tsx +494 -0
  1185. package/src/components/Rating/rating.principles.stories.tsx +293 -0
  1186. package/src/components/Rating/rating.spec.md +208 -0
  1187. package/src/components/Rating/rating.stories.tsx +133 -0
  1188. package/src/components/Rating/rating.tsx +16 -5
  1189. package/src/components/ScrollArea/index.ts +5 -0
  1190. package/src/components/ScrollArea/scroll-area.anatomy.stories.tsx +431 -0
  1191. package/src/components/ScrollArea/scroll-area.principles.stories.tsx +337 -0
  1192. package/src/components/ScrollArea/scroll-area.spec.md +145 -0
  1193. package/src/components/ScrollArea/scroll-area.stories.tsx +193 -0
  1194. package/src/components/SegmentedControl/index.ts +5 -0
  1195. package/src/components/SegmentedControl/segmented-control.anatomy.stories.tsx +295 -0
  1196. package/src/components/SegmentedControl/segmented-control.principles.stories.tsx +281 -0
  1197. package/src/components/SegmentedControl/segmented-control.spec.md +296 -0
  1198. package/src/components/SegmentedControl/segmented-control.stories.tsx +33 -0
  1199. package/src/components/SegmentedControl/segmented-control.tsx +3 -2
  1200. package/src/components/Select/index.ts +5 -0
  1201. package/src/components/Select/select.anatomy.stories.tsx +827 -0
  1202. package/src/components/Select/select.principles.stories.tsx +311 -0
  1203. package/src/components/Select/select.spec.md +311 -0
  1204. package/src/components/Select/select.stories.tsx +198 -0
  1205. package/src/components/Select/select.tsx +6 -2
  1206. package/src/components/SelectMenu/index.ts +5 -0
  1207. package/src/components/SelectMenu/select-menu.anatomy.stories.tsx +811 -0
  1208. package/src/components/SelectMenu/select-menu.principles.stories.tsx +107 -0
  1209. package/src/components/SelectMenu/select-menu.spec.md +222 -0
  1210. package/src/components/SelectMenu/select-menu.stories.tsx +148 -0
  1211. package/src/components/SelectMenu/select-menu.tsx +20 -6
  1212. package/src/components/SelectionControl/index.ts +5 -0
  1213. package/src/components/SelectionControl/selection-item.anatomy.stories.tsx +571 -0
  1214. package/src/components/SelectionControl/selection-item.principles.stories.tsx +77 -0
  1215. package/src/components/SelectionControl/selection-item.spec.md +130 -0
  1216. package/src/components/SelectionControl/selection-item.stories.tsx +137 -0
  1217. package/src/components/Separator/index.ts +5 -0
  1218. package/src/components/Separator/separator.anatomy.stories.tsx +125 -0
  1219. package/src/components/Separator/separator.principles.stories.tsx +141 -0
  1220. package/src/components/Separator/separator.spec.md +109 -0
  1221. package/src/components/Separator/separator.stories.tsx +127 -0
  1222. package/src/components/Sheet/index.ts +5 -0
  1223. package/src/components/Sheet/sheet.anatomy.stories.tsx +268 -0
  1224. package/src/components/Sheet/sheet.principles.stories.tsx +370 -0
  1225. package/src/components/Sheet/sheet.spec.md +148 -0
  1226. package/src/components/Sheet/sheet.stories.tsx +168 -0
  1227. package/src/components/Sheet/sheet.tsx +1 -1
  1228. package/src/components/Sidebar/index.ts +5 -0
  1229. package/src/components/Sidebar/sidebar.anatomy.stories.tsx +769 -0
  1230. package/src/components/Sidebar/sidebar.principles.stories.tsx +506 -0
  1231. package/src/components/Sidebar/sidebar.spec.md +711 -0
  1232. package/src/components/Sidebar/sidebar.stories.tsx +481 -0
  1233. package/src/components/Sidebar/sidebar.tsx +5 -2
  1234. package/src/components/Skeleton/index.ts +5 -0
  1235. package/src/components/Skeleton/skeleton.anatomy.stories.tsx +145 -0
  1236. package/src/components/Skeleton/skeleton.principles.stories.tsx +221 -0
  1237. package/src/components/Skeleton/skeleton.spec.md +104 -0
  1238. package/src/components/Skeleton/skeleton.stories.tsx +129 -0
  1239. package/src/components/Slider/index.ts +5 -0
  1240. package/src/components/Slider/slider.anatomy.stories.tsx +235 -0
  1241. package/src/components/Slider/slider.principles.stories.tsx +250 -0
  1242. package/src/components/Slider/slider.spec.md +353 -0
  1243. package/src/components/Slider/slider.stories.tsx +115 -0
  1244. package/src/components/Slider/slider.tsx +18 -4
  1245. package/src/components/Steps/index.ts +5 -0
  1246. package/src/components/Steps/steps.anatomy.stories.tsx +448 -0
  1247. package/src/components/Steps/steps.principles.stories.tsx +303 -0
  1248. package/src/components/Steps/steps.spec.md +473 -0
  1249. package/src/components/Steps/steps.stories.tsx +370 -0
  1250. package/src/components/Steps/steps.tsx +19 -2
  1251. package/src/components/Switch/index.ts +5 -0
  1252. package/src/components/Switch/switch.anatomy.stories.tsx +227 -0
  1253. package/src/components/Switch/switch.principles.stories.tsx +174 -0
  1254. package/src/components/Switch/switch.spec.md +221 -0
  1255. package/src/components/Switch/switch.stories.tsx +107 -0
  1256. package/src/components/Switch/switch.tsx +13 -13
  1257. package/src/components/Tabs/index.ts +5 -0
  1258. package/src/components/Tabs/tabs.anatomy.stories.tsx +414 -0
  1259. package/src/components/Tabs/tabs.principles.stories.tsx +257 -0
  1260. package/src/components/Tabs/tabs.spec.md +316 -0
  1261. package/src/components/Tabs/tabs.stories.tsx +155 -0
  1262. package/src/components/Tabs/tabs.tsx +4 -3
  1263. package/src/components/Tag/index.ts +5 -0
  1264. package/src/components/Tag/tag.anatomy.stories.tsx +656 -0
  1265. package/src/components/Tag/tag.principles.stories.tsx +270 -0
  1266. package/src/components/Tag/tag.spec.md +281 -0
  1267. package/src/components/Tag/tag.stories.tsx +69 -0
  1268. package/src/components/Tag/tag.tsx +9 -4
  1269. package/src/components/Textarea/index.ts +5 -0
  1270. package/src/components/Textarea/textarea.anatomy.stories.tsx +304 -0
  1271. package/src/components/Textarea/textarea.principles.stories.tsx +175 -0
  1272. package/src/components/Textarea/textarea.spec.md +151 -0
  1273. package/src/components/Textarea/textarea.stories.tsx +53 -0
  1274. package/src/components/Textarea/textarea.tsx +10 -6
  1275. package/src/components/TimePicker/index.ts +5 -0
  1276. package/src/components/TimePicker/time-picker.anatomy.stories.tsx +275 -0
  1277. package/src/components/TimePicker/time-picker.principles.stories.tsx +140 -0
  1278. package/src/components/TimePicker/time-picker.spec.md +270 -0
  1279. package/src/components/TimePicker/time-picker.stories.tsx +193 -0
  1280. package/src/components/TimePicker/time-picker.tsx +20 -5
  1281. package/src/components/Toast/index.ts +5 -0
  1282. package/src/components/Toast/toast.anatomy.stories.tsx +324 -0
  1283. package/src/components/Toast/toast.principles.stories.tsx +217 -0
  1284. package/src/components/Toast/toast.spec.md +178 -0
  1285. package/src/components/Toast/toast.stories.tsx +119 -0
  1286. package/src/components/Tooltip/index.ts +5 -0
  1287. package/src/components/Tooltip/tooltip.anatomy.stories.tsx +413 -0
  1288. package/src/components/Tooltip/tooltip.principles.stories.tsx +204 -0
  1289. package/src/components/Tooltip/tooltip.spec.md +139 -0
  1290. package/src/components/Tooltip/tooltip.stories.tsx +116 -0
  1291. package/src/components/TreeView/index.ts +5 -0
  1292. package/src/components/TreeView/tree-view.anatomy.stories.tsx +410 -0
  1293. package/src/components/TreeView/tree-view.principles.stories.tsx +190 -0
  1294. package/src/components/TreeView/tree-view.spec.md +388 -0
  1295. package/src/components/TreeView/tree-view.stories.tsx +297 -0
  1296. package/src/components/TreeView/tree-view.tsx +46 -13
  1297. package/src/hooks/use-overflow-items.ts +10 -6
  1298. package/src/index.ts +68 -69
  1299. package/src/patterns/action-bar/action-bar.spec.md +458 -0
  1300. package/src/patterns/action-bar/action-bar.stories.tsx +612 -0
  1301. package/src/patterns/element-anatomy/element-anatomy.spec.md +215 -0
  1302. package/src/patterns/element-anatomy/index.ts +5 -0
  1303. package/src/patterns/element-anatomy/inline-action.spec.md +320 -0
  1304. package/src/patterns/element-anatomy/item-anatomy.spec.md +1042 -0
  1305. package/src/patterns/element-anatomy/item-anatomy.stories.tsx +1622 -0
  1306. package/src/patterns/element-anatomy/item-anatomy.tsx +3 -2
  1307. package/src/patterns/header-canonical/header-canonical.css +2 -2
  1308. package/src/patterns/header-canonical/header-canonical.spec.md +291 -0
  1309. package/src/patterns/header-canonical/index.ts +5 -0
  1310. package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +195 -0
  1311. package/src/patterns/horizontal-overflow/index.ts +5 -0
  1312. package/src/patterns/overlay-surface/index.ts +5 -0
  1313. package/src/patterns/overlay-surface/overlay-surface.spec.md +429 -0
  1314. package/src/patterns/resize-handle/index.ts +5 -0
  1315. package/src/patterns/resize-handle/resize-handle.spec.md +111 -0
  1316. package/src/patterns/resize-handle/resize-handle.stories.tsx +71 -0
  1317. package/src/styles/base.css +85 -0
  1318. package/src/styles/tokens.css +11 -0
  1319. package/src/tokens/README.md +2 -0
  1320. package/src/tokens/color/color.spec.md +785 -0
  1321. package/src/tokens/color/color.stories.tsx +363 -0
  1322. package/src/tokens/color/primitives.css +7 -0
  1323. package/src/tokens/density/density.spec.md +127 -0
  1324. package/src/tokens/density/density.stories.tsx +240 -0
  1325. package/src/tokens/elevation/elevation.spec.md +79 -0
  1326. package/src/tokens/elevation/elevation.stories.tsx +98 -0
  1327. package/src/tokens/layoutSpace/layoutSpace.css +1 -1
  1328. package/src/tokens/layoutSpace/layoutSpace.spec.md +313 -0
  1329. package/src/tokens/layoutSpace/layoutSpace.stories.tsx +75 -0
  1330. package/src/tokens/motion/motion.css +2 -2
  1331. package/src/tokens/motion/motion.spec.md +97 -0
  1332. package/src/tokens/motion/motion.ts +1 -1
  1333. package/src/tokens/opacity/opacity.spec.md +84 -0
  1334. package/src/tokens/opacity/opacity.stories.tsx +69 -0
  1335. package/src/tokens/orphan-tokens.spec.md +117 -0
  1336. package/src/tokens/radius/radius.spec.md +128 -0
  1337. package/src/tokens/radius/radius.stories.tsx +86 -0
  1338. package/src/tokens/token-system.spec.md +243 -0
  1339. package/src/tokens/typography/typography.spec.md +208 -0
  1340. package/src/tokens/typography/typography.stories.tsx +133 -0
  1341. package/src/tokens/uiSize/icon-size.ts +1 -2
  1342. package/src/tokens/uiSize/uiSize.css +16 -0
  1343. package/src/tokens/uiSize/uiSize.spec.md +439 -0
@@ -0,0 +1,785 @@
1
+ <!-- @benchmark-cited: D5 retrofit 2026-05-18 — body claims marked per-claim @benchmark-unverified inline; canonical source URLs in frontmatter benchmark list. -->
2
+
3
+ # Color 設計原則
4
+
5
+ > **Foundational SSOT rationale**(2026-04-24 approved,cap 1000 — 2026-05-22 raised 800→1000 per /knowledge-prune deep audit + CLAUDE.md「foundational SSOT 例外 ≤ 800-1200」range):
6
+ > Token 系統 SSOT,涵蓋 primitive / semantic 兩層色彩架構、disabled 兩策略、Hover/Active 公式推導、新增語意色相 4-step 流程、neutral interaction 雙 family、nested theme。跨 30+ 元件消費,改一 token 影響全 DS。218 行語義色定義是純 token structural canonical 無法 reference out;不可拆不失原則。
7
+
8
+ ## 架構流派定位
9
+
10
+ 業界四大世界級色彩 token 流派各有取捨。我們選擇 **Atlassian 流派**(semantic state token),並有意識地拒絕其他三個。理解這個選擇對日後維護至關重要。
11
+
12
+ | 流派 | 代表系統 | 互動狀態怎麼處理 | 為何不選 |
13
+ |------|---------|---------------|---------|
14
+ | **Numbered Role Scale** | Radix Colors | 12 step scale,每個 step 號碼本身就是 role(step-9=solid bg、step-10=solid hover),light/dark scale 各自獨立定義值 | 工程量極大——需要重新設計每個色相 × 12 step × 2 mode = 192 個值,且全部 consumer 改 step 號 |
15
+ | **Semantic State Token**(**我們**) | Atlassian DS、GitHub Primer | 互動狀態用 semantic token (`--{hue}-hover` / `--{hue}-active`),每個 mode 預先計算值 | ✓ 選這個 |
16
+ | **State Layer Overlay** | Material Design 3 | 互動狀態用透明 overlay(state layer),不改變底色 | 跟 Button 用 solid shade change 的視覺語言不一致——同設計系統內互動回饋會分裂成兩種風格 |
17
+ | **Consumer-side Mode Handling** | Tailwind CSS | 由 consumer 自己處理 dark mode 變體 (`hover:bg-blue-600 dark:hover:bg-blue-400`) | Token 系統的價值就是封裝 mode 知識,把它推給 consumer 等於放棄抽象化 |
18
+
19
+ ### 為什麼選 Atlassian 流派
20
+
21
+ 1. **跟 Button 視覺語言一致**——Button 用 solid shade change(從 step-6 到 step-5/-7),其他飽和色 bg 互動也應該用 solid shade,而不是 overlay
22
+ 2. **務實的工程量**——不需要重構整套 primitives
23
+ 3. **封裝 mode 知識**——把 dark mode 翻轉的 swap 邏輯關進 semantic 層,consumer 不需知道
24
+ 4. **跟 `--primary-hover/active` 同模式**——`--blue-hover/active` 是同一個概念延伸到所有作為 bg 的色相
25
+
26
+ ### Tag 為什麼是「primitive 靜態 + semantic 互動」混合存取
27
+
28
+ 這**不是 code smell,是有意的職責分離**:
29
+
30
+ | 概念 | 是否需要 mode 知識 | 該住哪一層 |
31
+ |------|------------------|----------|
32
+ | **靜態色值**(subtle bg、text、solid bg) | ❌ Primitives 公式翻轉已自動處理 | **Primitive**——直接 `--color-blue-1`、`--color-blue-7`、`--color-blue-6` |
33
+ | **互動狀態**(hover、active) | ✅ 需要保證「hover 永遠較亮、active 永遠較暗」 | **Semantic**——`--blue-hover`、`--blue-active` 內含 dark mode swap |
34
+
35
+ 兩個概念**本來就不該綁在同一層**。Tailwind 也這樣分離:`bg-blue-500`(靜態,scale step)vs `hover:bg-blue-600 dark:hover:bg-blue-400`(互動,需要 consumer 處理 mode)。差別只在於 Atlassian 流派把 mode swap 封裝進 token 裡,consumer 不需要寫 dark variant。
36
+
37
+ ---
38
+
39
+ ## 系統架構
40
+
41
+ 色彩分兩層定義:
42
+
43
+ | 層 | 檔案 | 用途 | 範例 |
44
+ |---|---|---|---|
45
+ | **Primitive** | `primitives.css` | 原始色票,Tag / Avatar 直接消費 | `--color-blue-6`、`--color-blue-1` |
46
+ | **Semantic** | `semantic.css` | 語義 token,用於表達意圖(操作、狀態) | `--primary`、`--error`、`--info` |
47
+
48
+ ```
49
+ Primitive Semantic
50
+ ────────── ──────────
51
+ --color-blue-6 → --primary(互動入口)
52
+ → --info(資訊狀態)
53
+ --color-deep-orange-6 → --error(錯誤狀態)
54
+ --color-green-6 → --success(成功狀態)
55
+ --color-yellow-6 → --warning(警告狀態)
56
+ ```
57
+
58
+ Semantic token 直接指向 primitive(無中間層)。
59
+
60
+ **消費規則**:
61
+
62
+ | 場景 | 使用層級 | 原因 |
63
+ |---|---|---|
64
+ | Tag、Avatar 的色彩 variant | **Primitive**(`--color-blue-1`、`--color-blue-6`、`--color-blue-7`) | 色名是顏色本身,不代表語義 |
65
+ | Tag、Avatar 的文字色(subtle 模式) | **Primitive step-7**(`--color-blue-7`、`--color-red-7`) | 小面積色塊文字需要更高對比,primitives 的相對色階公式在 dark mode 自動把 step-7 解析為高對比方向 |
66
+ | Button、Checkbox、Switch、Focus ring | **Semantic**(`--primary`) | 代表「使用者可以執行的操作」 |
67
+ | Badge 層級(high/medium) | **Semantic**(`--info`、`--info-subtle`、`--info-text`) | 代表「資訊狀態」,不是操作 |
68
+ | 錯誤訊息、驗證錯誤 | **Semantic**(`--error`) | 代表「系統出了問題」 |
69
+
70
+ **注意**:「red」語義色(`--error`)實際對應的 primitive 色相是 `deep-orange`。Tag / Avatar 的 `red` variant 使用 `--color-deep-orange-*` primitive。
71
+
72
+ Tailwind utility 透過 `@theme inline` 橋接 semantic token,元件寫 `bg-primary` 或 `bg-error` 即可。Tag / Avatar 使用 CSS 變數任意值(`bg-[var(--color-blue-6)]`)。
73
+
74
+ ## Surface 分層(非常重要)
75
+
76
+ | Token / Utility | 用途 | 說明 |
77
+ |---------------------|------|------|
78
+ | `bg-canvas` | 頁面最底層背景 | HTML body 背景色 |
79
+ | `bg-surface` | 非遮蓋型容器 | card、sidebar、table,dark mode 半透明 |
80
+ | `bg-surface-raised` | 遮蓋型浮層 | modal、popover、dropdown,必須不透明 |
81
+
82
+ `bg-surface-raised` 必須不透明,避免底層內容透出。
83
+
84
+ ## 文字 / Icon 層級
85
+
86
+ | Utility | 用途 |
87
+ |--------------------|------|
88
+ | `text-foreground` | 主要文字(一般資訊)|
89
+ | `text-fg-secondary`| 次要資訊、helper text |
90
+ | `text-fg-muted` | placeholder、caption、弱化 icon(**non-disabled only**)|
91
+ | `text-fg-disabled` | disabled 文字 + **disabled 元件內所有文字 / placeholder / icon**(state 勝 emphasis,M24)|
92
+
93
+ 文字色一律使用 neutral alpha token,疊加在任何背景都能維持對比。
94
+ 弱化 icon hover 後變 `text-fg-secondary`。
95
+
96
+ ## Disabled 狀態
97
+
98
+ disabled 元件內的所有子元素必須呈現 disabled 狀態:
99
+
100
+ | 元素類型 | Disabled 處理 |
101
+ |---|---|
102
+ | 文字 / placeholder / Icon stroke | `text-fg-disabled`(state 勝 emphasis,M24)|
103
+ | 圖片 / Avatar | `opacity-disabled`——圖片無法套用語義色,用透明度弱化 |
104
+ | Checkbox / Radio | 元件自身的 disabled 樣式 |
105
+ | 背景色 | `bg-disabled`(如適用) |
106
+
107
+ **判斷標準**:disabled 元件內不應有任何元素呈現可互動 affordance。
108
+
109
+ **State precedence(M24,2026-05-04 升 SSOT)**:disabled 是 state,muted 是 emphasis decoration。disabled element 內 placeholder 用 muted = state 弱於 decoration → 違反語意層級。實作:`field-wrapper.tsx bareInputStyles` 加 `group-data-[field-mode=disabled]/field:placeholder:text-fg-disabled`,Select 等 ReadonlyDisplay 看 `resolvedMode === 'disabled'` 決定。詳 M24 + `.claude/memory/feedback_disabled_state_overlay_scroll_chain.md`。
110
+
111
+ ### 兩種 disabled 策略:何時用哪個
112
+
113
+ 系統有**兩種** disabled 視覺處理方式,判準是「**顏色是否是 semantic state 的唯一視覺載體**」:
114
+
115
+ | 策略 | 何時用 | 消費者 | 做法 |
116
+ |---|---|---|---|
117
+ | **灰階 token swap** | State 由形狀 / 位置 / icon / 文字 等**非顏色載體**承載,顏色只是美學 | Button、Checkbox、Input、Slider、Tag | 每個元素換到 disabled 對應的灰階 token(`bg-disabled` / `text-fg-disabled` / `border-fg-disabled` 等) |
118
+ | **`opacity-disabled`** | State **完全只靠顏色區分**(形狀在 on/off 之間沒有差異),灰階化會丟失 state 辨識 | **Switch** | Root 層套 `opacity-disabled`,保留原有顏色身分,透過透明度均勻降級 |
119
+
120
+ **具體判準(寫新元件時問自己)**:
121
+ 1. 在 disabled 狀態下,使用者需要辨識的 state 資訊是什麼?
122
+ 2. 這些資訊**沒有顏色**仍然能看出來嗎?
123
+ 3. 能 → 灰階 swap;不能 → opacity
124
+
125
+ **範例**:
126
+ - Checkbox 的 checked:checkmark **形狀**是 state 載體 → 灰階 swap OK
127
+ - Slider 的 value:thumb **位置** + range **長度**是 state 載體 → 灰階 swap OK
128
+ - Radio 的 selected:內圓點 **形狀**是 state 載體 → 灰階 swap OK
129
+ - Switch 的 on/off:track 在 on/off 之間**形狀相同**,只有**顏色**差別 → 必須 opacity
130
+
131
+ ### Disabled 視覺階層公式(多元素元件參考)
132
+
133
+ 多元素互動元件(Slider、Progress、複合 Input 等)在 disabled 狀態常需要 3–4 階灰階深度來分層:
134
+
135
+ ```
136
+ 底層背景 (n-2) < 中層填充 (n-5) < 輪廓邊框 (n-6) < 文字 (n-7+)
137
+ bg-muted bg-border border-fg-disabled text-fg-disabled
138
+ ```
139
+
140
+ 每階至少差 1 個 primitive step,使用者掃視時才能分清四個層。Slider 的 disabled 就是這個公式:track(底)< range(填充)< thumb border(輪廓)< label(文字)。
141
+
142
+ ### ⚠️ fg token 不可當 bg 用(跨 family 借用是 smell)
143
+
144
+ Semantic token 按**載體類型**分成四個 family,**family 之間的 token 不能互借**:
145
+
146
+ | Family | 前綴 | 語意 | 範例 |
147
+ |---|---|---|---|
148
+ | **Foreground**(前景) | `--fg-*` / `--foreground` | 文字 / icon stroke 的前景色 | `--foreground`, `--fg-secondary`, `--fg-muted`, `--fg-disabled` |
149
+ | **Background**(背景) | `--bg-*` / `--surface` / `--muted` / 色相 subtle | 填充色 | `--surface`, `--muted`, `--bg-disabled`, `--primary-subtle` |
150
+ | **Border**(邊框 / 分隔)| `--border`, `--border-hover`, `--divider` | 視覺分隔線、容器邊框 | `--border`, `--border-hover` |
151
+ | **Ring**(聚焦環)| `--ring` | `focus-visible` 的聚焦環 | `--ring` |
152
+
153
+ **跨 family 借用是 smell**,即使「剛好是我想要的顏色」。曾經踩過的例子:
154
+
155
+ > **Case**:Slider disabled 的 Range(填充段)一開始寫成 `bg-fg-disabled`。理由:`--fg-disabled`(neutral-6)剛好是我想要的「比 track 深但比文字淺」的灰度。但 `--fg-disabled` 語意是「**disabled 文字的前景色**」,拿來當 bg 等於借 fg token 當 bg 用。
156
+ >
157
+ > **問題**:
158
+ > 1. **語意矛盾**:consumer 讀 code 時 `bg-fg-disabled` 會困惑「這到底是 bg 還是 fg」
159
+ > 2. **耦合未來變動**:未來若微調 `--fg-disabled`(例如從 n-6 改成 n-7 讓 disabled 文字更可讀),Slider range 會被迫一起變,但它不是文字、不需要文字可讀性的約束
160
+ > 3. **缺乏單一來源的 bg token**:應該存在一個「disabled 狀態的中層填充色」的 bg token(如果沒有,要新增一個 semantic alias,而不是借 fg)
161
+ >
162
+ > **修正**:改用 `bg-border`(neutral-5)。`--border` 屬於 Border family,語意是「視覺分隔線 / 容器邊框 / 階層分隔的視覺元件」——跟 range 的「填充視覺指示器」角色接近,且 family 對得上(非文字的視覺填充類)。
163
+
164
+ **規則**:
165
+
166
+ 1. **新元件寫新樣式前,先確認 class 的 family 語意跟實際用途對齊**——`bg-*` 一律從 bg/surface family 選,`text-*` 一律從 fg family 選,`border-*` 一律從 border family 選
167
+ 2. **沒有合適 token 時,新增 semantic alias,不要借** family——例如若 bg family 沒有「中層填充」token,在 semantic.css 開 `--fill-muted` 或類似名稱,不要借 `--fg-disabled`
168
+ 3. **Code review 檢查**:看到 `bg-fg-*` / `bg-foreground` / `text-surface` / `border-fg-*` 這類命名組合,立刻質疑是否 family 借用
169
+
170
+ **唯一合法例外**:`--foreground` 偶爾用在 `bg-foreground`(暗色填充)表達「inverse surface」(例如 Tooltip 深底)——但這是 inverse namespace 的設計意圖,有專門的 `--inverse-*` token family 處理,不是隨便借。一般元件不該 `bg-foreground`。
171
+
172
+ ## Icon 色彩原則
173
+
174
+ ## 語義色
175
+
176
+ ### Action — Primary
177
+
178
+ `--primary` 只用於互動入口,代表「使用者可以執行的操作」。
179
+
180
+ | 用途 | 範例 |
181
+ |------|------|
182
+ | 主要按鈕 | `bg-primary` |
183
+ | 文字連結 | `text-primary` |
184
+ | Focus ring | `ring-ring` |
185
+
186
+ ```tsx
187
+ <Button variant="primary">確認</Button>
188
+ <a className="text-primary hover:text-primary-hover">查看詳情</a>
189
+ ```
190
+
191
+ ### Status
192
+
193
+ 狀態色表達系統回饋,代表「系統在告訴你什麼」,不用於互動操作。
194
+
195
+ | Token | 色相 | 用途 |
196
+ |-------|------|------|
197
+ | `--info` | blue | 資訊提示、進行中(in-progress)、active 指示、step indicator |
198
+ | `--error` | deep-orange | 錯誤 / 危險 |
199
+ | `--success` | green | 成功 |
200
+ | `--warning` | yellow | 警告 |
201
+
202
+ 雖然 `--info` 與 `--primary` 目前同色(blue),**語義截然不同,不可混用**:
203
+
204
+ > 只要是「呈現狀態」就用 `--info`,只要是「互動入口」就用 `--primary`。
205
+ > 尤其在同一個 UI 脈絡中可能出現多種 status 色時(如任務列表、step indicator),一律使用 status 色系,絕不混入 `--primary`,否則使用者無法建立一致的色彩解讀框架。
206
+
207
+ ```tsx
208
+ // ✅ 正確
209
+ <Progress className="bg-info" value={60} />
210
+ <Tag className="bg-info-subtle text-info-text">進行中</Tag>
211
+ <p className="text-error">此操作無法復原</p>
212
+
213
+ // ❌ 錯誤——progress bar 不是互動操作
214
+ <Progress className="bg-primary" value={60} />
215
+ ```
216
+
217
+ 每個語義色的 bridge 同時產出 `bg-xxx`、`text-xxx`、`border-xxx` 三組 utility,視場景選用。
218
+
219
+ - warning 的文字色取決於底色:
220
+
221
+ | 底色 | 文字色 | 原因 |
222
+ |------|--------|------|
223
+ | `bg-warning`(yellow-6,滿版) | `text-warning-foreground`(`black-a85`,深色) | 黃色亮度高,白字對比不足,必須用深色 |
224
+ | `bg-warning-subtle`(淡黃) | `text-[yellow-7]`(step-7) | subtle 底色夠淺,深一階的黃色文字可辨識(見「文字色 Step 原則」) |
225
+
226
+ ### Indicator — Notification
227
+
228
+ | Token | Utility | 色相 | 用途 |
229
+ |-------|---------|------|------|
230
+ | `--notification` | `bg-notification` | deep-orange | 未讀計數 badge、通知紅點 |
231
+
232
+ `--notification` 目前與 `--error` 使用同色(deep-orange-6),但語義獨立——`--error` 表示「系統出了問題」,`--notification` 表示「有待處理的項目」。兩者保持分離的 token,未來可單獨調整顏色。
233
+
234
+ ```tsx
235
+ <span className="bg-notification text-white">3</span> // badge 計數
236
+ ```
237
+
238
+ ### Identity — 品牌
239
+
240
+ | Token | 用途 |
241
+ |-------|------|
242
+ | `--brand` | 品牌色,固定色 #DF3232,兩主題相同 |
243
+
244
+ ### Primitive 色票與 Tag / Avatar 的消費
245
+
246
+ Tag、Avatar 等需要多色區分的場景(專案標籤、團隊分類等)直接消費 primitive token。消費端自行決定色彩用途。
247
+
248
+ 每個色相的 primitive 包含完整的 step 序列,Tag / Avatar 主要消費以下 step:
249
+
250
+ | Step | 用途 | 範例 |
251
+ |------|------|------|
252
+ | step-1 | subtle 背景(淡色填充) | `--color-blue-1` |
253
+ | step-5 | dismiss hover(solid 模式) | `--color-blue-5` |
254
+ | step-6 | solid 背景(全色填充) | `--color-blue-6` |
255
+ | step-7 | subtle 文字、dismiss active(solid 模式) | `--color-blue-7` |
256
+
257
+ 可用色相:blue、deep-orange、green、yellow、turquoise、purple、magenta、indigo。
258
+
259
+ **注意**:Tag / Avatar 的 `red` variant 使用 primitive `deep-orange`(`--color-deep-orange-*`)。
260
+
261
+ **與 semantic 色的差別**:semantic 色(primary/info/error/success/warning)有固定語義,primitive 色沒有。Tag / Avatar 使用 primitive 是因為「blue」代表顏色本身,不代表「主要操作」或「資訊狀態」。
262
+
263
+ ### `--on-emphasis` token:飽和色底的對比文字
264
+
265
+ `--on-emphasis = oklch(1 0 0)`(純白,dark mode 不反轉)。用途:繪製在**飽和色底**(primitive 6 階色 / `--primary` / `--success` / `--error` 等)上的文字 / icon stroke,確保對比度。
266
+
267
+ **為什麼獨立於 `--foreground` / `--warning-foreground` 存在**:
268
+ - `--foreground` = neutral-9 文字色(淺色底的主文字),語義是「neutral 表面的前景」。
269
+ - `--warning-foreground` = `--black-a85`,僅用於 warning 子場景(amber 底),非通用。
270
+ - `--on-emphasis` = 純白(不隨 dark 反轉),語義是「任何飽和色底上都能對比出文字」,是通用 emphasis 對比。
271
+
272
+ **世界級對照**:Material `on-primary` / `on-secondary` family(`md.sys.color.on-primary = #fff`),Polaris `text-onEmphasis`,MUI `palette.primary.contrastText`。我們用 `--on-emphasis` 表達「不綁定到特定 emphasis 色,凡是飽和填色底都用這一個」。
273
+
274
+ **消費者**(目前):
275
+ - Avatar color variants — blue/red/green/... 飽和底的 initials 字色
276
+ - Steps 的 filled indicator — `completed` / `active` 狀態內的 icon 色
277
+
278
+ **不該消費的情境**:
279
+ - ❌ 淺色底(subtle bg)用 `--on-emphasis` — 淺色底請用 `--foreground` / `--fg-secondary` 等 neutral family,對比反而不足
280
+ - ❌ 把 `--on-emphasis` 當 bg 用 — 它是文字 token,作 bg 屬跨 family 借用
281
+
282
+ **數值規則**:永遠 `oklch(1 0 0)`(純白)。Dark mode 的 `--foreground` 反轉為白,跟 `--on-emphasis` 數值相同但**語義獨立**——不要因數值巧合相同就合併用 `--foreground`,因為 light mode 的 `--foreground` 是深色,混用會 break 飽和底文字。
283
+
284
+ ### `--inverse-*` namespace:inverse surface 上的內容色
285
+
286
+ `--inverse-*` 是一組 namespace,用來表達「繪製在 inverse surface(= solid `--color-neutral-9`,在 dark mode 自動反轉)上的內容」。Tag / Avatar 的 neutral solid variant 使用 neutral-9 作為底色,因此需要一組與 `--foreground` 家族對應、但方向相反的 token。
287
+
288
+ | Token | 對應的正常態 token | 用途 |
289
+ |-------|------------------|------|
290
+ | `--inverse-fg` | `--foreground` | inverse surface 上的文字色(Tag/Avatar neutral solid 的 label) |
291
+ | `--inverse-neutral-hover` | `--neutral-hover` | inverse surface 上的 hover overlay(如 dismiss hover) |
292
+ | `--inverse-neutral-active` | `--neutral-active` | inverse surface 上的 active overlay(如 dismiss active) |
293
+
294
+ **命名原則**:
295
+ - base 文字 token 命名為 `--inverse-fg`(對齊 `--foreground`),而不是 `--neutral-inverse`。原因是本 token 系統沒有 `--neutral` 這個 semantic base(只有 primitives `--color-neutral-1` ~ `--color-neutral-9`),若命名為 `--neutral-inverse-*` 會讓讀者誤以為存在 `--neutral` base,造成誤導。
296
+ - 互動 overlay token 命名為 `--inverse-neutral-hover` / `--inverse-neutral-active`,明確指出鏡射的是 `--neutral-hover` / `--neutral-active`。`fg` 自帶語意所以單獨用,但 `hover` / `active` 太籠統需要 `neutral-` 限定詞表明角色。
297
+ - 以 `--inverse-*` 為 namespace 則意義清晰:「inverse surface 上的 foreground / neutral-hover / neutral-active」。
298
+
299
+ **數值規則(嚴格對稱)**:`--inverse-neutral-*` 在某 mode 的值 = `--neutral-*` 在「另一 mode」的值。即 inverse 是 neutral 的 mode 鏡射。
300
+
301
+ | Token | Light | Dark |
302
+ |-------|-------|------|
303
+ | `--neutral-hover` | black @ 2% | white @ 4% |
304
+ | `--neutral-active` | black @ 4% | white @ 8% |
305
+ | `--inverse-neutral-hover` | white @ 4% (= dark neutral-1) | black @ 2% (= light neutral-1) |
306
+ | `--inverse-neutral-active` | white @ 8% (= dark neutral-2) | black @ 4% (= light neutral-2) |
307
+
308
+ 好處:完全對稱、重用既有 tuned values、自動繼承感知補償(dark mode 4% 補償白色透明在深底較弱的視覺感受),未來改 neutral 強度時 inverse 自動同步。
309
+
310
+ **未來擴展**:當需要在 inverse surface 上表達文字層級時,可平行新增以下 token,對應 `--fg-*` 家族:
311
+
312
+ | 未來 token | 對應的正常態 token |
313
+ |-----------|------------------|
314
+ | `--inverse-fg-secondary` | `--fg-secondary` |
315
+ | `--inverse-fg-muted` | `--fg-muted` |
316
+ | `--inverse-fg-disabled` | `--fg-disabled` |
317
+
318
+ 目前僅 `--inverse-fg` 有實際消費需求,其他層級在有明確使用情境時再加入,避免過度設計。
319
+
320
+ ### 文字色 Step 原則
321
+
322
+ 色彩用於文字時,step 的選擇取決於文字的**角色**——是「資訊呈現」還是「互動入口」?這兩種角色的視覺需求完全不同。
323
+
324
+ | 角色 | 例子 | Token | 為什麼這個 step |
325
+ |------|------|-------|---------------|
326
+ | **資訊呈現**(不強調互動,以表達資訊為主的有色文字) | Tag label、Avatar fallback、Badge medium 計數、status indicator | primitive step-7(`--color-{hue}-7`)<br>或 semantic `--{status}-text`(`--info-text`、`--error-text`) | **辨識度優先**——小面積色塊文字疊在 step-1 subtle 底色上,需要更高對比才能舒適閱讀。step-7 在 light mode 是「比 step-6 暗」,在 dark mode 透過 primitives 公式翻轉自動變成「比 step-6 亮」,**兩個 mode 都是離 step-1 subtle 背景最遠的高對比方向**。 |
327
+ | **互動入口**(吸引點擊,鼓勵操作) | Button label、Link、可點擊的 status text | semantic base(`--primary`、`--error`、`--info` 等)= step-6 | **鮮豔度優先**——step-6 是色相的飽和最高點,吸引注意力引導使用者操作。互動元素本身有 hover/active 回饋,不靠文字色階暗示。 |
328
+ | **互動 hover / active** | Button hover、Tag dismiss icon hover | semantic hover/active(`--primary-hover` 等)= step-5 / step-7 + dark mode swap | **回饋使用者操作**——hover lift / active press 方向跨 mode 一致 |
329
+
330
+ #### `--{hue}-text` 的角色
331
+
332
+ **`--{hue}-text` 專門用於「不強調互動、以表達資訊為主的有色相文字」**。它的存在是為了區分兩種完全不同的有色文字:
333
+
334
+ - **資訊呈現**用 `--{hue}-text` / `--color-{hue}-7` → 小面積色塊文字,最大對比,靜態閱讀
335
+ - **互動入口**用 `--primary` 等 semantic base = step-6 → 鮮豔,吸引點擊
336
+
337
+ **典型 `--{hue}-text` 消費者**:
338
+ | 元件 | 用法 | 為什麼是「資訊呈現」 |
339
+ |------|------|------------------|
340
+ | Tag subtle | label 文字 | Tag 是分類標籤,不可點擊(dismiss 是 inline action 不算 Tag 本體) |
341
+ | Avatar subtle | fallback 字 | 文字 fallback 是身份標識,不是按鈕 |
342
+ | Badge medium | 通知計數 | 計數是資訊指示器,本身不可點擊 |
343
+ | Status text | 「進行中」「已完成」等 | 狀態描述,不引導動作 |
344
+
345
+ **不該用 `--{hue}-text` 的場景**:
346
+ - ❌ Button label(用 `text-white` on primary bg)
347
+ - ❌ Link(用 `text-primary` = step-6,鮮豔度優先)
348
+ - ❌ 任何 hover/active 互動回饋
349
+
350
+ #### 為什麼 step-7 在兩個 mode 都對
351
+
352
+ Primitives 的相對色階公式在 dark mode 把 step-5 / step-7 公式互換:
353
+ - Light mode:step-7 = `l * 0.82`(較暗)→ 對白色 subtle 是暗色高對比 ✓
354
+ - Dark mode:step-7 = `l + (1-l) * 0.20`(較亮)→ 對深色 subtle 是亮色高對比 ✓
355
+
356
+ **step-7 永遠是「離 subtle 背景最遠的方向」**,與 mode 無關。這就是為什麼資訊文字可以直接用 primitive,不需要 semantic 層 swap。
357
+
358
+ Badge 使用語義色的 text token(`--info-text`、`--error-text`),不直接消費 primitive。
359
+
360
+ **step-7 vs semantic active 的區別**:兩者在 light mode 都指向 step-7,但 dark mode 行為不同。semantic active(如 `--primary-active`)在 dark mode 反轉為 step-5(壓暗模擬按壓感),而 primitive step-7 在 dark mode 仍維持高對比方向。簡言之:active 服務於互動回饋,step-7 服務於閱讀對比,兩者目的不同,dark mode 方向相反。
361
+
362
+ **例外:step-6 滿版底色(如 yellow solid)上的文字用 `--warning-foreground`(`black-a85`)**——黃色亮度極高,step-7 仍不足以提供對比,必須使用深色文字。此例外只在底色是 step-6 時觸發,step-1 subtle 底色上仍用 step-7。
363
+
364
+ ### Subtle 背景(淡色填充)
365
+
366
+ 所有語義色都有 `-subtle` 變體。Tag / Avatar 直接使用 primitive step-1(`--color-{hue}-1`):
367
+
368
+ ```tsx
369
+ // Semantic subtle
370
+ <div className="bg-primary-subtle" />
371
+ <div className="bg-error-subtle" />
372
+ <div className="bg-success-subtle" />
373
+ <div className="bg-warning-subtle" />
374
+
375
+ // Tag / Avatar 直接用 primitive step-1
376
+ <div style={{ backgroundColor: 'var(--color-blue-1)' }} />
377
+ <div style={{ backgroundColor: 'var(--color-purple-1)' }} />
378
+ ```
379
+
380
+ #### Dark mode subtle
381
+
382
+ Light mode 的 step-1 使用不透明色票。Dark mode 的 step-1 在 primitives 中使用 alpha 公式自動計算:
383
+
384
+ ```css
385
+ /* primitives.css dark mode */
386
+ --color-{hue}-1: oklch(from var(--color-{hue}-6) l c h / calc(0.12 / l));
387
+ ```
388
+
389
+ `α = 0.12 / l`:亮度越高的色相 alpha 越低,在 dark canvas 上感知亮度自動統一。所有色相用同一套公式,無需在 semantic 層額外覆寫。
390
+
391
+ ## 互動狀態推導(Hover / Active)
392
+
393
+ ### 公式
394
+
395
+ Hover / active **直接引用色盤 step**,不使用獨立公式:
396
+
397
+ | | Hover(較亮) | Active(較暗) |
398
+ |---|---|---|
399
+ | Light | step **-5** | step **-7** |
400
+ | Dark | step **-7** | step **-5** |
401
+
402
+ 相對色階公式保證 step -5 永遠比 base 亮、step -7 永遠比 base 暗,
403
+ 所有色相適用同一規則,無例外。
404
+
405
+ 高亮度色相(yellow 等)的 hover gap 較小(ΔL ≈ 0.03),
406
+ 這是物理事實——亮色的淺色方向空間窄。
407
+ cursor 變化 + 細微色移疊加仍提供足夠互動回饋。
408
+
409
+ ```tsx
410
+ <button className="bg-primary hover:bg-primary-hover active:bg-primary-active" />
411
+ ```
412
+
413
+ ### Semantic token 直接指向 primitive
414
+
415
+ | Token | 指向 primitive |
416
+ |-------|----------------|
417
+ | --primary / --primary-hover / --primary-active / --primary-subtle | → blue-6 / blue-5 / blue-7 / blue-1 |
418
+ | --info / --info-hover / --info-active / --info-subtle / --info-text | → blue-6 / blue-5 / blue-7 / blue-1 / blue-7 |
419
+ | --error / --error-hover / --error-active / --error-subtle / --error-text | → deep-orange-6 / deep-orange-5 / deep-orange-7 / deep-orange-1 / deep-orange-7 |
420
+ | --success / --success-hover / --success-active / --success-subtle / --success-text | → green-6 / green-5 / green-7 / green-1 / green-7 |
421
+ | --warning / --warning-hover / --warning-active / --warning-subtle / --warning-text | → yellow-6 / yellow-5 / yellow-7 / yellow-1 / yellow-7 |
422
+
423
+ 每個色相使用色盤的 4 個 step:-1(subtle)、-5(hover)、-6(base)、-7(active / text)。
424
+
425
+ Dark mode 覆寫:hover/active 方向反轉(hover → step-7,active → step-5),subtle 使用 alpha 公式。text 不需覆寫——primitives 的相對色階公式已處理 dark mode 方向。
426
+
427
+ ### `--{hue}-hover/active` — 非語意色相的互動 token
428
+
429
+ 除了 semantic 色相(primary、info、error、success、warning)有完整 5 件套(base/hover/active/subtle/text)外,**作為 bg 使用的非語意色相**還有獨立的 hover/active 互動 token:
430
+
431
+ | Token | 指向 primitive | dark mode swap |
432
+ |-------|--------------|--------------|
433
+ | `--blue-hover` / `--blue-active` | blue-5 / blue-7 | blue-7 / blue-5 |
434
+ | `--red-hover` / `--red-active` | red-5 / red-7 | red-7 / red-5 |
435
+ | `--deep-orange-hover` / `--deep-orange-active` | deep-orange-5 / deep-orange-7 | deep-orange-7 / deep-orange-5 |
436
+ | `--orange-hover` / `--orange-active` | orange-5 / orange-7 | orange-7 / orange-5 |
437
+ | `--amber-hover` / `--amber-active` | amber-5 / amber-7 | amber-7 / amber-5 |
438
+ | `--lime-hover` / `--lime-active` | lime-5 / lime-7 | lime-7 / lime-5 |
439
+ | `--green-hover` / `--green-active` | green-5 / green-7 | green-7 / green-5 |
440
+ | `--yellow-hover` / `--yellow-active` | yellow-5 / yellow-7 | yellow-7 / yellow-5 |
441
+ | `--turquoise-hover` / `--turquoise-active` | turquoise-5 / turquoise-7 | turquoise-7 / turquoise-5 |
442
+ | `--purple-hover` / `--purple-active` | purple-5 / purple-7 | purple-7 / purple-5 |
443
+ | `--magenta-hover` / `--magenta-active` | magenta-5 / magenta-7 | magenta-7 / magenta-5 |
444
+ | `--indigo-hover` / `--indigo-active` | indigo-5 / indigo-7 | indigo-7 / indigo-5 |
445
+
446
+ #### 為什麼存在這組 token
447
+
448
+ **Tag/Avatar 的 solid 色相 dismiss 互動需要**:
449
+ - 跟 Button 同樣的 solid color shade change(hover 較亮、active 較暗)
450
+ - 跨 mode 一致的方向(dark mode 必須 swap step 號)
451
+ - 但 Tag 的「藍」≠ semantic primary(解耦:改 primary 不應影響 Tag)
452
+
453
+ 直接用 primitive `--color-blue-5/-7` 不行——dark mode 公式互換會方向顛倒。所以擴展 semantic 互動 token 模式到所有 8 個非語意色相。
454
+
455
+ #### 嚴格限制
456
+
457
+ **只有 hover/active 兩個 token**——**沒有** `--blue` base、`--blue-subtle`、`--blue-text`:
458
+
459
+ | 用途 | 該用什麼 |
460
+ |------|---------|
461
+ | Tag/Avatar 的 base bg(solid) | primitive `--color-blue-6` |
462
+ | Tag/Avatar 的 subtle bg | primitive `--color-blue-1` |
463
+ | Tag/Avatar 的 text on subtle | primitive `--color-blue-7` |
464
+ | Tag/Avatar 的 dismiss hover bg | semantic `--blue-hover` |
465
+ | Tag/Avatar 的 dismiss active bg | semantic `--blue-active` |
466
+
467
+ **為什麼故意不加 base/subtle/text?** 那些不需要 mode 翻轉知識(primitives 已處理),加 semantic alias 只會污染命名空間、讓 semantic 層重新引入色相維度(backslide 到廢除的 categorical token layer)。只有 hover/active 真的需要 semantic 層處理 mode swap。
468
+
469
+ #### 新增非語意色相 hue 互動 token 的步驟
470
+
471
+ 當需要在 Tag/Avatar 加入新色相 variant(例:lime):
472
+
473
+ 1. **確認 primitive 已存在**:`--color-lime-6` 等(primitives.css 應該已定義)
474
+ 2. **在 semantic.css 加 hover/active**(light + dark):
475
+ ```css
476
+ /* :root, [data-theme] */
477
+ --lime-hover: var(--color-lime-5);
478
+ --lime-active: var(--color-lime-7);
479
+
480
+ /* [data-theme="dark"] */
481
+ --lime-hover: var(--color-lime-7);
482
+ --lime-active: var(--color-lime-5);
483
+ ```
484
+ 3. **更新 Tag/Avatar 元件**:variant cva 加 lime 條目,SOLID_DISMISS_HOVER 加 lime hover/active
485
+ 4. **不要加** `--lime`、`--lime-subtle`、`--lime-text`(這些用 primitive 直接消費)
486
+
487
+ ### 新增語意色相的標準流程
488
+
489
+ 每次新增 semantic 色相(例:新增 `--accent` 指向 turquoise)必須**完整執行**這 4 步,不可省略——確保所有 semantic 色相結構一致。
490
+
491
+ #### Step 1: Primitive(如該色相不存在)
492
+
493
+ 在 `primitives.css` 定義 base-6 值(只需指定 L、C、H),相對公式自動推導 1-10 階。如已存在則跳過。
494
+
495
+ ```css
496
+ --color-turquoise-6: oklch(0.57 0.10 225);
497
+ /* 1-5 / 7-10 自動由公式推導 */
498
+ ```
499
+
500
+ #### Step 2: Semantic 五件套(必填)
501
+
502
+ 在 `semantic.css` 的 `:root, [data-theme]` 區塊新增 5 個 token,**不可缺任何一個**:
503
+
504
+ ```css
505
+ --accent: var(--color-turquoise-6); /* base */
506
+ --accent-hover: var(--color-turquoise-5); /* hover */
507
+ --accent-active: var(--color-turquoise-7); /* active */
508
+ --accent-subtle: var(--color-turquoise-1); /* subtle bg */
509
+ --accent-text: var(--color-turquoise-7); /* text on subtle bg */
510
+ ```
511
+
512
+ **對應規則**(不可亂改):
513
+ | Semantic role | Primitive step | 為什麼 |
514
+ |---|---|---|
515
+ | base | -6 | 主色 |
516
+ | hover | -5 | 輕微變亮 |
517
+ | active | -7 | 輕微變暗(pressed feel) |
518
+ | subtle | -1 | 弱化背景(dark mode 自動 alpha) |
519
+ | text | -7 | 高對比文字(dark mode 自動反轉方向) |
520
+
521
+ #### Step 3: Dark mode 反轉(必填)
522
+
523
+ 在 `[data-theme="dark"]` 區塊新增 hover/active 方向反轉:
524
+
525
+ ```css
526
+ [data-theme="dark"] {
527
+ --accent-hover: var(--color-turquoise-7); /* dark: 仍是較亮 */
528
+ --accent-active: var(--color-turquoise-5); /* dark: 仍是較暗 */
529
+ /* subtle、text 不需覆寫 — primitives 已處理 */
530
+ }
531
+ ```
532
+
533
+ **為什麼只反轉 hover/active?** Primitives 在 dark mode 已經:
534
+ - 把 step-1 改為 alpha 公式(subtle 自動正確)
535
+ - 把 step-5/-7 公式互換(step-7 在 dark mode 仍是高對比方向,所以 text 自動正確)
536
+
537
+ 但 semantic token 直接 reference step number,所以 hover→step-5 在 dark mode 會變成 darker(錯方向)。必須在 semantic 層手動 swap。
538
+
539
+ #### Step 4: Tailwind Bridge(必填)
540
+
541
+ 在 `semantic.css` 的 `@theme inline` 區塊加入:
542
+
543
+ ```css
544
+ --color-accent: var(--accent);
545
+ --color-accent-hover: var(--accent-hover);
546
+ --color-accent-active: var(--accent-active);
547
+ --color-accent-subtle: var(--accent-subtle);
548
+ --color-accent-text: var(--accent-text);
549
+ ```
550
+
551
+ 讓 `bg-accent`、`text-accent-text`、`hover:bg-accent-hover` 等 Tailwind utility 可用。
552
+
553
+ ---
554
+
555
+ ### 檢查清單
556
+
557
+ 新增完一個語意色相,逐項對照:
558
+
559
+ - [ ] Primitive base-6 已定義(或已存在)
560
+ - [ ] Semantic 五件套全部寫齊(base / hover / active / subtle / text)
561
+ - [ ] Dark mode `hover` / `active` 方向反轉已加
562
+ - [ ] Dark mode `subtle` / `text` 沒亂加(primitives 已處理)
563
+ - [ ] Tailwind bridge 五件套全部加齊
564
+ - [ ] 命名遵循 `--{name}` / `--{name}-{role}` 模式(不混色相名)
565
+ - [ ] 用 `npx tsc --noEmit` 檢查零錯誤
566
+
567
+ ## Neutral Interaction
568
+
569
+ 中性互動背景分成**兩個獨立的 family**,對應兩種本質不同的狀態。
570
+
571
+ ### active vs selected
572
+
573
+ **語意獨立,不可互用**。`--neutral-active` 和 `--neutral-selected` 目前**數值相同**(都是 neutral-2),但語意承載不同的「態」:
574
+
575
+ | Token | 語意 | 生命週期 | 典型場景 |
576
+ |---|---|---|---|
577
+ | `--neutral-active` | `:active` 瞬間 click 回饋 | **Transient**(按下去那一瞬間,放開就消失) | Button `:active`、list row 點擊回饋、inline action 按下瞬間 |
578
+ | `--neutral-selected` | 持續 toggle on / 長時間選中狀態 | **Persistent**(一直維持直到使用者切換) | Button text pressed、DropdownMenu 單選項目、SelectMenu 單選項目、Tab active、selected menu item |
579
+
580
+ **判斷法**:「這個狀態在使用者放開滑鼠後還存在嗎?」
581
+ - 不存在 → `active`(瞬間回饋)
582
+ - 存在 → `selected`(持續狀態)
583
+
584
+ ### 為什麼同值仍分兩個 token
585
+
586
+ 這是 token 層存在的核心價值:**把「值」和「用途」解耦**。
587
+
588
+ 1. **讀 code 的語意清晰**:`bg-neutral-selected` 比 `bg-neutral-active` 更精準表達「這個 element 處於選中狀態」,不需要讀者在腦裡轉換語意
589
+ 2. **未來演化的安全界線**:若未來要把 click 回饋加強(例:`--neutral-active` 改成 neutral-3),selected 狀態視覺不會被意外牽動
590
+ 3. **對齊流派原則**:本系統選 Atlassian 流派(Semantic State Token),把互動狀態封裝進 semantic 層——active 和 selected 本來就是兩個語意 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
591
+
592
+ 此原則對齊 Carbon Design System 的 `$layer-*` 族命名(`$layer-active` vs `$layer-selected`),是世界級系統處理「同值不同語意」的標準做法。 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
593
+
594
+ ### Default state family
595
+
596
+ 用於 non-selected element 的互動回饋:
597
+
598
+ | Utility | Token | 用途 |
599
+ |---|---|---|
600
+ | `bg-neutral-hover` | neutral-1 | hover 回饋 |
601
+ | `bg-neutral-active` | neutral-2 | `:active` 瞬間 click 回饋 |
602
+
603
+ ```tsx
604
+ <div className="hover:bg-neutral-hover active:bg-neutral-active">list row</div>
605
+ ```
606
+
607
+ ### Selected state family
608
+
609
+ 用於持續 toggle on / 選中 element 的互動回饋。**三件成套,對應 rest / hover / :active 三種互動態**:
610
+
611
+ | Utility | Token | 用途 |
612
+ |---|---|---|
613
+ | `bg-neutral-selected` | neutral-2 | 持續 selected rest |
614
+ | `bg-neutral-selected-hover` | neutral-1 | selected 上 hover(反向變淺,暗示「可取消」) |
615
+ | `bg-neutral-selected-active` | neutral-3 | selected 上 `:active` 深一階 click 回饋 |
616
+
617
+ ```tsx
618
+ // toggle button pressed 狀態
619
+ <button
620
+ data-state="on"
621
+ className="data-[state=on]:bg-neutral-selected data-[state=on]:hover:bg-neutral-selected-hover data-[state=on]:active:bg-neutral-selected-active"
622
+ >
623
+ 釘選
624
+ </button>
625
+
626
+ // 列表單選項目
627
+ <div className={cn(selected && 'bg-neutral-selected')}>選項 A</div>
628
+ ```
629
+
630
+ ### 禁止事項
631
+
632
+ - ❌ 不得用 `bg-neutral-active` 表達持續選中狀態——會造成 class name 語意與視覺行為不符
633
+ - ❌ 不得用 `bg-neutral-selected` 作為 `:active` 瞬間回饋——selected 是 persistent,不是 transient
634
+ - ❌ 不得因為目前同值就合併為一個 token——語意獨立就該獨立存在
635
+
636
+ ## Static Subtle Background — `bg-muted` vs `bg-secondary` 使用原則(SSOT)
637
+
638
+ > **2026-05-20 v3 consolidation**(per user directive「全盤查 spec 是否曾寫過具體舉一反三 + 是否有矛盾」):原 L647-678 重複 3 處場景列表 + 「status indicator drift」已移除,本段為**單一 SSOT**。
639
+
640
+ 兩者都是靜態中性背景,但傳達的**元素狀態**不同。**核心問句**:「這個元素是『還沒準備好 / 不可操作 / placeholder』嗎?」
641
+
642
+ | Token | 答 | 語意 | 典型場景(real consumer grep verified 2026-05-20) |
643
+ |---|---|---|---|
644
+ | `bg-muted`(neutral-2) | **是** | **靜態非互動 surface** — 退化 / placeholder / locked 視覺 | Skeleton(`skeleton.tsx:10`) / DataTable table header(`data-table.tsx:255 HEADER_BG`) / Calendar 非當月日格(`calendar.tsx:312`)/ Alert neutral(`alert.tsx:27`)/ DataTable filter-panel inner group container(`data-table-filter-panel.tsx:780`)/ tab 容器 / code block / scrollbar track(`semantic.css:353`)/ anatomy `<th>` |
645
+ | `bg-secondary`(neutral-3) | **否,只是視覺退後一級** | **存在且微淡可辨** — 元素是正常狀態,但需要退後一級 | Tag neutral(`tag.tsx`)/ Slider rest track(`slider.tsx`)/ FileItem compact-B progress track(`file-item.tsx`)/ Badge low(`badge.tsx:28`)/ CircularProgress track(`circular-progress.tsx:151`)/ Steps fillBg(`steps.tsx:688,701`)/ ProgressBar track(`progress-bar.tsx`)|
646
+
647
+ **判斷法**:「這個元素是『還沒準備好 / 不可操作』嗎?」
648
+ - 是 → `bg-muted`(退化、placeholder 語意)
649
+ - 不是,只是視覺上需要退後 → `bg-secondary`(微淡但正常存在)
650
+
651
+ **為什麼不能反過來**:Skeleton 用 `bg-secondary` 會太深,搶走真正內容出現時的視覺落差;Tag neutral 用 `bg-muted` 會太淡,小面積元素辨識度不足。深淺差一階(neutral-2 vs neutral-3)在小元素上的感知差異比大面積更明顯。
652
+
653
+ **跟 `bg-neutral-hover` / `bg-neutral-active` 的區別**:neutral 系列表達**互動**狀態(hover / 選中);muted / secondary 表達**結構性的靜態層級** — 即使沒有互動,它永遠是這個顏色。
654
+
655
+ **邊界 — component disabled bg 不走 muted**:Button / Input / Checkbox 等元件 disabled state 走 `--bg-disabled` semantic,不是 `--muted`(同值 neutral-2 但不同 owner — `--bg-disabled` 是 component-state token,`--muted` 是 surface-non-interactive token,per L169「同值不同語意拆 token」rule)。
656
+
657
+ ```tsx
658
+ <Skeleton className="h-4 w-32" /> {/* bg-muted — placeholder 語意 */}
659
+ <div className="bg-muted">table header</div> {/* bg-muted — 靜態 surface 退化 */}
660
+ <Tag color="neutral">Status</Tag> {/* bg-secondary — 正常存在但退後 */}
661
+ <Badge variant="low">5</Badge> {/* bg-secondary — 小元素需更明顯底色 */}
662
+ ```
663
+
664
+ ## 邊框 / 分隔
665
+
666
+ | Utility | Token | 用途 |
667
+ |---------|-------|------|
668
+ | `border-border` | neutral-5 alpha 15% | 元件標準邊框(input / Field family / standalone control)|
669
+ | `border-border-hover` | neutral-6 alpha 25% | input、checkbox、radio 的 hover 邊框 |
670
+ | `border-divider` | neutral-4 alpha 9% | 分隔線(比 border 更淡)/ **table 外框 + row divider 同色**(T-junction connectivity)|
671
+ | `border-[var(--border-opaque)]` | neutral-5 opaque | alpha-immune 變體;cell bg 非白(disabled 灰底 / nested surface)時用 |
672
+
673
+ 選中狀態的邊框或文字使用 hover token:
674
+
675
+ ```tsx
676
+ <div className="border-primary-hover text-primary-hover" />
677
+ ```
678
+
679
+ ### T-junction connectivity 原則(2026-05-04 升 SSOT)
680
+
681
+ **問題**:Table row divider(horizontal)在 row 兩端 meet table outer border(vertical)。若 outer border 跟 divider **不同色** → 交匯處視覺斷層,user 感「不連續」。
682
+
683
+ **為什麼不能加重 divider**:divider 是密集分隔 N rows,加重 → 過搶眼,reading flow 被打斷。
684
+
685
+ **解法**:**淡化 outer border 至 divider 同色**(從 `border-border` 降到 `border-divider`)。交匯處 seamless,divider 視覺重量不變。
686
+
687
+ **實作**:DataTable outer 用 `border-divider`(對齊 row 內 dividers)。對齊 Ant Design `colorBorderSecondary` idiom — Ant table 外框 + row divider 同 token。 <!-- @benchmark-unverified: see frontmatter benchmark list for canonical DS source URL -->
688
+
689
+ **何時 outer = `--border` vs `--divider`**:
690
+ - 元件**無 inner divider**(input / Field / Card / Dialog)→ 用 `--border`(獨立邊框,標準視覺重量)
691
+ - 元件**有 inner divider**(Table / List with dividers)→ outer 用 `--divider`(同色,T-junction seamless)
692
+ - 元件 cell bg **非白底**(FCG disabled cell)→ 用 `--border-opaque`(alpha-immune 變體)
693
+
694
+ ## Utility Tokens
695
+
696
+ | Token | 用途 |
697
+ |-------|------|
698
+ | `--overlay` | dialog backdrop 遮罩 |
699
+ | `--tooltip` | tooltip 深色底(不透明)|
700
+ | `--chart-1` ~ `--chart-5` | 5 色類別標記(Chart 元件 data viz 用;固定到 primitive 而非 semantic — 避免 brand swap 污染 data viz 色義;light step-6 / dark step-5 / yellow 用 step-7 提對比)。**Numbered naming = industry canonical**(Material Data Viz palette / Polaris ChartPalette / Carbon Charts colors-N / IBM data-viz / D3 schemeCategory10)— categorical color 本質無 inherent priority,只能 by-index;**1→5 順序 ≠ priority**,只是 consumer 取色 idx convention。色相選擇 rationale:blue(冷靜入門)→ purple(分類二)→ green(成長 / 正面)→ yellow(警戒對比)→ deep-orange(暖色平衡)。Brand swap 不影響 data viz(`--chart-*` 直連 primitive,跳過 `--primary` 等 semantic 中間層)。<!-- @benchmark-cited: Material Data Viz https://m3.material.io/styles/color/the-color-system/color-roles + Polaris https://polaris.shopify.com/tokens/color + Carbon https://carbondesignsystem.com/data-visualization/color-palettes/ + D3 https://d3js.org/d3-scale-chromatic/categorical --> |
701
+ | `opacity-disabled` | disabled 元件整體透明度(0.45),用於無法改寫內部色彩的第三方元件 |
702
+
703
+ `opacity-disabled` 適用場景:包裝第三方元件(如圖表、地圖)的 disabled 狀態,無法逐一替換內部顏色時,直接對容器套用透明度:
704
+
705
+ ```tsx
706
+ <div className={disabled ? 'opacity-disabled pointer-events-none' : undefined}>
707
+ <ThirdPartyChart />
708
+ </div>
709
+ ```
710
+
711
+ 自己寫的元件優先用具體的 disabled 色彩(如 `text-fg-disabled`、`bg-[var(--bg-disabled)]`)。`opacity-disabled` 僅作為逃生艙,適用於無法逐一替換內部顏色的場景(第三方元件、複雜多層結構如 Switch)。
712
+
713
+ ## shadcn Compat Aliases(已清除,2026-04-18)
714
+
715
+ shadcn compat aliases(`bg-background` / `bg-card` / `bg-popover` / `bg-destructive` / `bg-accent` / `border-input` / `*-foreground` 等)2026-04-18 全數移除。新 code 一律用 direct token(`bg-canvas` / `bg-surface` / `bg-surface-raised` / `bg-error` / `bg-neutral-hover` / `border-border`)。`bg-secondary` + `bg-muted` 已升正式語義 token(見 Static Subtle)。
716
+
717
+ ## Nested Theme
718
+
719
+ 任何容器都可以透過 `data-theme="dark"` 或 `data-theme="light"` 切換子元素的色彩語境。最常見的場景是 **Tooltip**——底色是深色,子元素需要 dark token 才可讀。
720
+
721
+ ### 運作原理
722
+
723
+ CSS 變數在定義元素上解析。`:root` 的 `--foreground: var(--color-neutral-9)` 在 `:root` 就解析成 light 值,子孫繼承的是結果,不是 `var()` 表達式。
724
+
725
+ 為了讓 nested theme 正確重新解析,`semantic.css` 的所有語義 token 定義在 `:root, [data-theme]`。任何帶 `data-theme` 的元素都會重新解析所有語義 token,子元素自動跟隨。
726
+
727
+ ### CSS 結構
728
+
729
+ ```
730
+ ① :root — 固定值(--brand,不隨 theme 變)
731
+ ② :root, [data-theme] — 所有語義 token(default = light 值)
732
+ ③ [data-theme="dark"] — 只覆寫跟 light 不同的值
733
+ ```
734
+
735
+ 判斷標準:「這個 token 在 dark 要不要變?」要 → ③ 覆寫。不要 → 只寫在 ②。
736
+
737
+ ### 使用方式
738
+
739
+ ```tsx
740
+ // Tooltip:子元素永遠 dark token
741
+ <TooltipContent>
742
+ <div data-theme="dark" className="contents">{children}</div>
743
+ </TooltipContent>
744
+
745
+ // 任何容器都可以局部切換 theme
746
+ <div data-theme="dark">
747
+ <Tag>dark mode tag</Tag>
748
+ </div>
749
+ ```
750
+
751
+ 容器自身的樣式(如 tooltip 的 `bg-tooltip`)不受子 div 的 `data-theme` 影響——`data-theme` 在子 div 上,只影響子元素。
752
+
753
+ ## 禁止事項
754
+
755
+ ```tsx
756
+ // ❌ 原始色 / 硬碼 → ✅ semantic / primitive
757
+ <div className="bg-blue-500" /> <div className="bg-canvas" />
758
+ <div className="bg-[#1677FF]" /> <div className="bg-primary hover:bg-primary-hover" />
759
+ <div className="bg-[var(--color-blue-6)]" /> // ❌ semantic 場景用 primitive(Tag/Avatar 例外)
760
+ // ❌ 深色硬寫 text-white → ✅ <div data-theme="dark"><Tag /></div>
761
+ ```
762
+
763
+ ## 結構性保留 token canonical
764
+ SSOT → `.claude/references/structural-token-retention.md`(6 類保留 + sub-agent triple-verify 流程)
765
+
766
+ ---
767
+
768
+ ## 被引用(auto-maintained,Dim 3 reciprocal audit)
769
+
770
+ > 本節由 `scripts/add-reciprocal-pointers.mjs` 自動維護,列出在 SSOT 語境下指向本 spec 的其他 spec。若要手動補充,寫在本節之前。
771
+
772
+ - `opacity.spec.md`
773
+
774
+ ## 被引用(auto-maintained,Dim 3 reciprocal audit)
775
+
776
+ > 本節由 `scripts/add-reciprocal-pointers.mjs` 自動維護,列出在 SSOT 語境下指向本 spec 的其他 spec。若要手動補充,寫在本節之前。
777
+
778
+ - `chart.spec.md`
779
+ - `date-grid.spec.md`
780
+ - `file-item.spec.md`
781
+ - `notice.spec.md`
782
+ - `progress-bar.spec.md`
783
+ - `separator.spec.md`
784
+ - `skeleton.spec.md`
785
+ - `token-system.spec.md`