@qijenchen/design-system 0.1.0-beta.10

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 (507) hide show
  1. package/README.md +163 -0
  2. package/dist/components/Accordion/accordion.d.ts +37 -0
  3. package/dist/components/Accordion/accordion.d.ts.map +1 -0
  4. package/dist/components/Accordion/accordion.js +78 -0
  5. package/dist/components/Accordion/accordion.js.map +1 -0
  6. package/dist/components/Alert/alert.d.ts +47 -0
  7. package/dist/components/Alert/alert.d.ts.map +1 -0
  8. package/dist/components/Alert/alert.js +132 -0
  9. package/dist/components/Alert/alert.js.map +1 -0
  10. package/dist/components/AppShell/_demo-helpers.d.ts +49 -0
  11. package/dist/components/AppShell/_demo-helpers.d.ts.map +1 -0
  12. package/dist/components/AppShell/app-shell.d.ts +76 -0
  13. package/dist/components/AppShell/app-shell.d.ts.map +1 -0
  14. package/dist/components/AppShell/app-shell.js +214 -0
  15. package/dist/components/AppShell/app-shell.js.map +1 -0
  16. package/dist/components/AspectRatio/aspect-ratio.d.ts +40 -0
  17. package/dist/components/AspectRatio/aspect-ratio.d.ts.map +1 -0
  18. package/dist/components/AspectRatio/aspect-ratio.js +23 -0
  19. package/dist/components/AspectRatio/aspect-ratio.js.map +1 -0
  20. package/dist/components/Avatar/avatar.d.ts +85 -0
  21. package/dist/components/Avatar/avatar.d.ts.map +1 -0
  22. package/dist/components/Avatar/avatar.js +195 -0
  23. package/dist/components/Avatar/avatar.js.map +1 -0
  24. package/dist/components/Badge/badge.d.ts +43 -0
  25. package/dist/components/Badge/badge.d.ts.map +1 -0
  26. package/dist/components/Badge/badge.js +69 -0
  27. package/dist/components/Badge/badge.js.map +1 -0
  28. package/dist/components/Breadcrumb/breadcrumb.d.ts +163 -0
  29. package/dist/components/Breadcrumb/breadcrumb.d.ts.map +1 -0
  30. package/dist/components/Breadcrumb/breadcrumb.js +300 -0
  31. package/dist/components/Breadcrumb/breadcrumb.js.map +1 -0
  32. package/dist/components/BulkActionBar/bulk-action-bar.d.ts +46 -0
  33. package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -0
  34. package/dist/components/BulkActionBar/bulk-action-bar.js +78 -0
  35. package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -0
  36. package/dist/components/Button/button-group.d.ts +49 -0
  37. package/dist/components/Button/button-group.d.ts.map +1 -0
  38. package/dist/components/Button/button-group.js +46 -0
  39. package/dist/components/Button/button-group.js.map +1 -0
  40. package/dist/components/Button/button.d.ts +203 -0
  41. package/dist/components/Button/button.d.ts.map +1 -0
  42. package/dist/components/Button/button.js +309 -0
  43. package/dist/components/Button/button.js.map +1 -0
  44. package/dist/components/Calendar/calendar.d.ts +81 -0
  45. package/dist/components/Calendar/calendar.d.ts.map +1 -0
  46. package/dist/components/Calendar/calendar.js +282 -0
  47. package/dist/components/Calendar/calendar.js.map +1 -0
  48. package/dist/components/Carousel/carousel.d.ts +61 -0
  49. package/dist/components/Carousel/carousel.d.ts.map +1 -0
  50. package/dist/components/Carousel/carousel.js +276 -0
  51. package/dist/components/Carousel/carousel.js.map +1 -0
  52. package/dist/components/Chart/chart.d.ts +94 -0
  53. package/dist/components/Chart/chart.d.ts.map +1 -0
  54. package/dist/components/Chart/chart.js +233 -0
  55. package/dist/components/Chart/chart.js.map +1 -0
  56. package/dist/components/Checkbox/checkbox-group.d.ts +58 -0
  57. package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -0
  58. package/dist/components/Checkbox/checkbox-group.js +28 -0
  59. package/dist/components/Checkbox/checkbox-group.js.map +1 -0
  60. package/dist/components/Checkbox/checkbox.d.ts +73 -0
  61. package/dist/components/Checkbox/checkbox.d.ts.map +1 -0
  62. package/dist/components/Checkbox/checkbox.js +125 -0
  63. package/dist/components/Checkbox/checkbox.js.map +1 -0
  64. package/dist/components/Chip/chip.d.ts +54 -0
  65. package/dist/components/Chip/chip.d.ts.map +1 -0
  66. package/dist/components/Chip/chip.js +224 -0
  67. package/dist/components/Chip/chip.js.map +1 -0
  68. package/dist/components/CircularProgress/circular-progress.d.ts +40 -0
  69. package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -0
  70. package/dist/components/CircularProgress/circular-progress.js +118 -0
  71. package/dist/components/CircularProgress/circular-progress.js.map +1 -0
  72. package/dist/components/Coachmark/coachmark.d.ts +100 -0
  73. package/dist/components/Coachmark/coachmark.d.ts.map +1 -0
  74. package/dist/components/Coachmark/coachmark.js +107 -0
  75. package/dist/components/Coachmark/coachmark.js.map +1 -0
  76. package/dist/components/Combobox/combobox.d.ts +150 -0
  77. package/dist/components/Combobox/combobox.d.ts.map +1 -0
  78. package/dist/components/Combobox/combobox.js +595 -0
  79. package/dist/components/Combobox/combobox.js.map +1 -0
  80. package/dist/components/Command/command.d.ts +106 -0
  81. package/dist/components/Command/command.d.ts.map +1 -0
  82. package/dist/components/Command/command.js +123 -0
  83. package/dist/components/Command/command.js.map +1 -0
  84. package/dist/components/DataTable/active-editor-controller.d.ts +66 -0
  85. package/dist/components/DataTable/active-editor-controller.d.ts.map +1 -0
  86. package/dist/components/DataTable/cell-registry.d.ts +37 -0
  87. package/dist/components/DataTable/cell-registry.d.ts.map +1 -0
  88. package/dist/components/DataTable/cell-registry.js +377 -0
  89. package/dist/components/DataTable/cell-registry.js.map +1 -0
  90. package/dist/components/DataTable/column-types.d.ts +145 -0
  91. package/dist/components/DataTable/column-types.d.ts.map +1 -0
  92. package/dist/components/DataTable/column-types.js +17 -0
  93. package/dist/components/DataTable/column-types.js.map +1 -0
  94. package/dist/components/DataTable/data-table-column-visibility-panel.d.ts +49 -0
  95. package/dist/components/DataTable/data-table-column-visibility-panel.d.ts.map +1 -0
  96. package/dist/components/DataTable/data-table-filter-panel.d.ts +30 -0
  97. package/dist/components/DataTable/data-table-filter-panel.d.ts.map +1 -0
  98. package/dist/components/DataTable/data-table-interaction-layer.d.ts +78 -0
  99. package/dist/components/DataTable/data-table-interaction-layer.d.ts.map +1 -0
  100. package/dist/components/DataTable/data-table-interaction-layer.js +220 -0
  101. package/dist/components/DataTable/data-table-interaction-layer.js.map +1 -0
  102. package/dist/components/DataTable/data-table-sort-manager.d.ts +19 -0
  103. package/dist/components/DataTable/data-table-sort-manager.d.ts.map +1 -0
  104. package/dist/components/DataTable/data-table.d.ts +181 -0
  105. package/dist/components/DataTable/data-table.d.ts.map +1 -0
  106. package/dist/components/DataTable/data-table.js +1851 -0
  107. package/dist/components/DataTable/data-table.js.map +1 -0
  108. package/dist/components/DataTable/filter-operators.d.ts +116 -0
  109. package/dist/components/DataTable/filter-operators.d.ts.map +1 -0
  110. package/dist/components/DataTable/filter-tree.d.ts +66 -0
  111. package/dist/components/DataTable/filter-tree.d.ts.map +1 -0
  112. package/dist/components/DataTable/lib/column-meta.d.ts +49 -0
  113. package/dist/components/DataTable/lib/column-meta.d.ts.map +1 -0
  114. package/dist/components/DateGrid/date-grid.d.ts +61 -0
  115. package/dist/components/DateGrid/date-grid.d.ts.map +1 -0
  116. package/dist/components/DateGrid/date-grid.js +168 -0
  117. package/dist/components/DateGrid/date-grid.js.map +1 -0
  118. package/dist/components/DatePicker/date-picker.d.ts +119 -0
  119. package/dist/components/DatePicker/date-picker.d.ts.map +1 -0
  120. package/dist/components/DatePicker/date-picker.js +743 -0
  121. package/dist/components/DatePicker/date-picker.js.map +1 -0
  122. package/dist/components/DescriptionList/description-list.d.ts +60 -0
  123. package/dist/components/DescriptionList/description-list.d.ts.map +1 -0
  124. package/dist/components/DescriptionList/description-list.js +77 -0
  125. package/dist/components/DescriptionList/description-list.js.map +1 -0
  126. package/dist/components/Dialog/dialog.d.ts +54 -0
  127. package/dist/components/Dialog/dialog.d.ts.map +1 -0
  128. package/dist/components/Dialog/dialog.js +151 -0
  129. package/dist/components/Dialog/dialog.js.map +1 -0
  130. package/dist/components/DropdownMenu/dropdown-menu.d.ts +111 -0
  131. package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -0
  132. package/dist/components/DropdownMenu/dropdown-menu.js +288 -0
  133. package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -0
  134. package/dist/components/Empty/empty.d.ts +40 -0
  135. package/dist/components/Empty/empty.d.ts.map +1 -0
  136. package/dist/components/Empty/empty.js +66 -0
  137. package/dist/components/Empty/empty.js.map +1 -0
  138. package/dist/components/Field/field-context.d.ts +77 -0
  139. package/dist/components/Field/field-context.d.ts.map +1 -0
  140. package/dist/components/Field/field-context.js +37 -0
  141. package/dist/components/Field/field-context.js.map +1 -0
  142. package/dist/components/Field/field-types.d.ts +5 -0
  143. package/dist/components/Field/field-types.d.ts.map +1 -0
  144. package/dist/components/Field/field-types.js +13 -0
  145. package/dist/components/Field/field-types.js.map +1 -0
  146. package/dist/components/Field/field-wrapper.d.ts +17 -0
  147. package/dist/components/Field/field-wrapper.d.ts.map +1 -0
  148. package/dist/components/Field/field-wrapper.js +252 -0
  149. package/dist/components/Field/field-wrapper.js.map +1 -0
  150. package/dist/components/Field/field.d.ts +127 -0
  151. package/dist/components/Field/field.d.ts.map +1 -0
  152. package/dist/components/Field/field.js +295 -0
  153. package/dist/components/Field/field.js.map +1 -0
  154. package/dist/components/FieldControlGroup/field-control-group.d.ts +74 -0
  155. package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -0
  156. package/dist/components/FieldControlGroup/field-control-group.js +62 -0
  157. package/dist/components/FieldControlGroup/field-control-group.js.map +1 -0
  158. package/dist/components/FileItem/file-item.d.ts +44 -0
  159. package/dist/components/FileItem/file-item.d.ts.map +1 -0
  160. package/dist/components/FileItem/file-item.js +202 -0
  161. package/dist/components/FileItem/file-item.js.map +1 -0
  162. package/dist/components/FileUpload/file-upload.d.ts +97 -0
  163. package/dist/components/FileUpload/file-upload.d.ts.map +1 -0
  164. package/dist/components/FileUpload/file-upload.js +231 -0
  165. package/dist/components/FileUpload/file-upload.js.map +1 -0
  166. package/dist/components/FileViewer/file-viewer-types.d.ts +73 -0
  167. package/dist/components/FileViewer/file-viewer-types.d.ts.map +1 -0
  168. package/dist/components/FileViewer/file-viewer.d.ts +82 -0
  169. package/dist/components/FileViewer/file-viewer.d.ts.map +1 -0
  170. package/dist/components/FileViewer/file-viewer.js +752 -0
  171. package/dist/components/FileViewer/file-viewer.js.map +1 -0
  172. package/dist/components/FileViewer/image-renderer.d.ts +9 -0
  173. package/dist/components/FileViewer/image-renderer.d.ts.map +1 -0
  174. package/dist/components/FileViewer/image-renderer.js +165 -0
  175. package/dist/components/FileViewer/image-renderer.js.map +1 -0
  176. package/dist/components/HoverCard/hover-card.d.ts +30 -0
  177. package/dist/components/HoverCard/hover-card.d.ts.map +1 -0
  178. package/dist/components/HoverCard/hover-card.js +61 -0
  179. package/dist/components/HoverCard/hover-card.js.map +1 -0
  180. package/dist/components/Input/input.d.ts +72 -0
  181. package/dist/components/Input/input.d.ts.map +1 -0
  182. package/dist/components/Input/input.js +148 -0
  183. package/dist/components/Input/input.js.map +1 -0
  184. package/dist/components/LinkInput/link-input.d.ts +46 -0
  185. package/dist/components/LinkInput/link-input.d.ts.map +1 -0
  186. package/dist/components/LinkInput/link-input.js +215 -0
  187. package/dist/components/LinkInput/link-input.js.map +1 -0
  188. package/dist/components/Menu/menu-item.d.ts +83 -0
  189. package/dist/components/Menu/menu-item.d.ts.map +1 -0
  190. package/dist/components/Menu/menu-item.js +209 -0
  191. package/dist/components/Menu/menu-item.js.map +1 -0
  192. package/dist/components/NameCard/name-card.d.ts +85 -0
  193. package/dist/components/NameCard/name-card.d.ts.map +1 -0
  194. package/dist/components/NameCard/name-card.js +153 -0
  195. package/dist/components/NameCard/name-card.js.map +1 -0
  196. package/dist/components/Notice/notice.d.ts +69 -0
  197. package/dist/components/Notice/notice.d.ts.map +1 -0
  198. package/dist/components/Notice/notice.js +121 -0
  199. package/dist/components/Notice/notice.js.map +1 -0
  200. package/dist/components/NumberInput/number-input.d.ts +57 -0
  201. package/dist/components/NumberInput/number-input.d.ts.map +1 -0
  202. package/dist/components/NumberInput/number-input.js +131 -0
  203. package/dist/components/NumberInput/number-input.js.map +1 -0
  204. package/dist/components/OverflowIndicator/overflow-indicator.d.ts +23 -0
  205. package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -0
  206. package/dist/components/OverflowIndicator/overflow-indicator.js +111 -0
  207. package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -0
  208. package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts +57 -0
  209. package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts.map +1 -0
  210. package/dist/components/PeoplePicker/avatar-stack-overflow.js +35 -0
  211. package/dist/components/PeoplePicker/avatar-stack-overflow.js.map +1 -0
  212. package/dist/components/PeoplePicker/people-picker-helpers.d.ts +7 -0
  213. package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -0
  214. package/dist/components/PeoplePicker/people-picker-helpers.js +25 -0
  215. package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -0
  216. package/dist/components/PeoplePicker/people-picker.d.ts +77 -0
  217. package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -0
  218. package/dist/components/PeoplePicker/people-picker.js +263 -0
  219. package/dist/components/PeoplePicker/people-picker.js.map +1 -0
  220. package/dist/components/PeoplePicker/person-display.d.ts +66 -0
  221. package/dist/components/PeoplePicker/person-display.d.ts.map +1 -0
  222. package/dist/components/PeoplePicker/person-display.js +203 -0
  223. package/dist/components/PeoplePicker/person-display.js.map +1 -0
  224. package/dist/components/Popover/popover.d.ts +50 -0
  225. package/dist/components/Popover/popover.d.ts.map +1 -0
  226. package/dist/components/Popover/popover.js +113 -0
  227. package/dist/components/Popover/popover.js.map +1 -0
  228. package/dist/components/ProgressBar/progress-bar.d.ts +37 -0
  229. package/dist/components/ProgressBar/progress-bar.d.ts.map +1 -0
  230. package/dist/components/ProgressBar/progress-bar.js +86 -0
  231. package/dist/components/ProgressBar/progress-bar.js.map +1 -0
  232. package/dist/components/RadioGroup/radio-group.d.ts +78 -0
  233. package/dist/components/RadioGroup/radio-group.d.ts.map +1 -0
  234. package/dist/components/RadioGroup/radio-group.js +153 -0
  235. package/dist/components/RadioGroup/radio-group.js.map +1 -0
  236. package/dist/components/Rating/rating.d.ts +46 -0
  237. package/dist/components/Rating/rating.d.ts.map +1 -0
  238. package/dist/components/Rating/rating.js +179 -0
  239. package/dist/components/Rating/rating.js.map +1 -0
  240. package/dist/components/ScrollArea/scroll-area.d.ts +45 -0
  241. package/dist/components/ScrollArea/scroll-area.d.ts.map +1 -0
  242. package/dist/components/ScrollArea/scroll-area.js +65 -0
  243. package/dist/components/ScrollArea/scroll-area.js.map +1 -0
  244. package/dist/components/SegmentedControl/segmented-control.d.ts +102 -0
  245. package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -0
  246. package/dist/components/SegmentedControl/segmented-control.js +171 -0
  247. package/dist/components/SegmentedControl/segmented-control.js.map +1 -0
  248. package/dist/components/Select/select.d.ts +102 -0
  249. package/dist/components/Select/select.d.ts.map +1 -0
  250. package/dist/components/Select/select.js +435 -0
  251. package/dist/components/Select/select.js.map +1 -0
  252. package/dist/components/SelectMenu/select-menu.d.ts +103 -0
  253. package/dist/components/SelectMenu/select-menu.d.ts.map +1 -0
  254. package/dist/components/SelectMenu/select-menu.js +239 -0
  255. package/dist/components/SelectMenu/select-menu.js.map +1 -0
  256. package/dist/components/SelectionControl/selection-item.d.ts +69 -0
  257. package/dist/components/SelectionControl/selection-item.d.ts.map +1 -0
  258. package/dist/components/SelectionControl/selection-item.js +142 -0
  259. package/dist/components/SelectionControl/selection-item.js.map +1 -0
  260. package/dist/components/Separator/separator.d.ts +17 -0
  261. package/dist/components/Separator/separator.d.ts.map +1 -0
  262. package/dist/components/Separator/separator.js +39 -0
  263. package/dist/components/Separator/separator.js.map +1 -0
  264. package/dist/components/Sheet/sheet.d.ts +56 -0
  265. package/dist/components/Sheet/sheet.d.ts.map +1 -0
  266. package/dist/components/Sheet/sheet.js +145 -0
  267. package/dist/components/Sheet/sheet.js.map +1 -0
  268. package/dist/components/Sidebar/sidebar.d.ts +195 -0
  269. package/dist/components/Sidebar/sidebar.d.ts.map +1 -0
  270. package/dist/components/Sidebar/sidebar.js +826 -0
  271. package/dist/components/Sidebar/sidebar.js.map +1 -0
  272. package/dist/components/Skeleton/skeleton.d.ts +16 -0
  273. package/dist/components/Skeleton/skeleton.d.ts.map +1 -0
  274. package/dist/components/Skeleton/skeleton.js +30 -0
  275. package/dist/components/Skeleton/skeleton.js.map +1 -0
  276. package/dist/components/Slider/slider.d.ts +48 -0
  277. package/dist/components/Slider/slider.d.ts.map +1 -0
  278. package/dist/components/Slider/slider.js +108 -0
  279. package/dist/components/Slider/slider.js.map +1 -0
  280. package/dist/components/Steps/steps.d.ts +71 -0
  281. package/dist/components/Steps/steps.d.ts.map +1 -0
  282. package/dist/components/Steps/steps.js +583 -0
  283. package/dist/components/Steps/steps.js.map +1 -0
  284. package/dist/components/Switch/switch.d.ts +112 -0
  285. package/dist/components/Switch/switch.d.ts.map +1 -0
  286. package/dist/components/Switch/switch.js +179 -0
  287. package/dist/components/Switch/switch.js.map +1 -0
  288. package/dist/components/Tabs/tabs.d.ts +104 -0
  289. package/dist/components/Tabs/tabs.d.ts.map +1 -0
  290. package/dist/components/Tabs/tabs.js +316 -0
  291. package/dist/components/Tabs/tabs.js.map +1 -0
  292. package/dist/components/Tag/tag.d.ts +86 -0
  293. package/dist/components/Tag/tag.d.ts.map +1 -0
  294. package/dist/components/Tag/tag.js +172 -0
  295. package/dist/components/Tag/tag.js.map +1 -0
  296. package/dist/components/Textarea/textarea.d.ts +74 -0
  297. package/dist/components/Textarea/textarea.d.ts.map +1 -0
  298. package/dist/components/Textarea/textarea.js +224 -0
  299. package/dist/components/Textarea/textarea.js.map +1 -0
  300. package/dist/components/TimePicker/time-columns.d.ts +46 -0
  301. package/dist/components/TimePicker/time-columns.d.ts.map +1 -0
  302. package/dist/components/TimePicker/time-columns.js +173 -0
  303. package/dist/components/TimePicker/time-columns.js.map +1 -0
  304. package/dist/components/TimePicker/time-picker.d.ts +94 -0
  305. package/dist/components/TimePicker/time-picker.d.ts.map +1 -0
  306. package/dist/components/TimePicker/time-picker.js +253 -0
  307. package/dist/components/TimePicker/time-picker.js.map +1 -0
  308. package/dist/components/Toast/toast.d.ts +61 -0
  309. package/dist/components/Toast/toast.d.ts.map +1 -0
  310. package/dist/components/Toast/toast.js +76 -0
  311. package/dist/components/Toast/toast.js.map +1 -0
  312. package/dist/components/Tooltip/tooltip.d.ts +20 -0
  313. package/dist/components/Tooltip/tooltip.d.ts.map +1 -0
  314. package/dist/components/Tooltip/tooltip.js +53 -0
  315. package/dist/components/Tooltip/tooltip.js.map +1 -0
  316. package/dist/components/TreeView/tree-view.d.ts +166 -0
  317. package/dist/components/TreeView/tree-view.d.ts.map +1 -0
  318. package/dist/components/TreeView/tree-view.js +617 -0
  319. package/dist/components/TreeView/tree-view.js.map +1 -0
  320. package/dist/hooks/use-controllable.d.ts +16 -0
  321. package/dist/hooks/use-controllable.d.ts.map +1 -0
  322. package/dist/hooks/use-controllable.js +26 -0
  323. package/dist/hooks/use-controllable.js.map +1 -0
  324. package/dist/hooks/use-is-narrow-viewport.d.ts +2 -0
  325. package/dist/hooks/use-is-narrow-viewport.d.ts.map +1 -0
  326. package/dist/hooks/use-is-narrow-viewport.js +19 -0
  327. package/dist/hooks/use-is-narrow-viewport.js.map +1 -0
  328. package/dist/hooks/use-is-touch-device.d.ts +8 -0
  329. package/dist/hooks/use-is-touch-device.d.ts.map +1 -0
  330. package/dist/hooks/use-is-touch-device.js +16 -0
  331. package/dist/hooks/use-is-touch-device.js.map +1 -0
  332. package/dist/hooks/use-overflow-items.d.ts +124 -0
  333. package/dist/hooks/use-overflow-items.d.ts.map +1 -0
  334. package/dist/hooks/use-overflow-items.js +97 -0
  335. package/dist/hooks/use-overflow-items.js.map +1 -0
  336. package/dist/index.d.ts +74 -0
  337. package/dist/index.d.ts.map +1 -0
  338. package/dist/index.js +371 -0
  339. package/dist/index.js.map +1 -0
  340. package/dist/lib/drag-visual.d.ts +158 -0
  341. package/dist/lib/drag-visual.d.ts.map +1 -0
  342. package/dist/lib/drag-visual.js +96 -0
  343. package/dist/lib/drag-visual.js.map +1 -0
  344. package/dist/lib/i18n/i18n-context.d.ts +105 -0
  345. package/dist/lib/i18n/i18n-context.d.ts.map +1 -0
  346. package/dist/lib/multi-select-ordering.d.ts +54 -0
  347. package/dist/lib/multi-select-ordering.d.ts.map +1 -0
  348. package/dist/lib/multi-select-ordering.js +13 -0
  349. package/dist/lib/multi-select-ordering.js.map +1 -0
  350. package/dist/lib/utils.d.ts +12 -0
  351. package/dist/lib/utils.d.ts.map +1 -0
  352. package/dist/lib/utils.js +79 -0
  353. package/dist/lib/utils.js.map +1 -0
  354. package/dist/patterns/element-anatomy/item-anatomy.d.ts +370 -0
  355. package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -0
  356. package/dist/patterns/element-anatomy/item-anatomy.js +272 -0
  357. package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -0
  358. package/dist/patterns/header-canonical/chrome-header.d.ts +80 -0
  359. package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -0
  360. package/dist/patterns/header-canonical/chrome-header.js +75 -0
  361. package/dist/patterns/header-canonical/chrome-header.js.map +1 -0
  362. package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts +101 -0
  363. package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts.map +1 -0
  364. package/dist/patterns/horizontal-overflow/horizontal-overflow.js +105 -0
  365. package/dist/patterns/horizontal-overflow/horizontal-overflow.js.map +1 -0
  366. package/dist/patterns/overlay-surface/overlay-surface.d.ts +28 -0
  367. package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -0
  368. package/dist/patterns/overlay-surface/overlay-surface.js +85 -0
  369. package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -0
  370. package/dist/patterns/resize-handle/resize-handle.d.ts +102 -0
  371. package/dist/patterns/resize-handle/resize-handle.d.ts.map +1 -0
  372. package/dist/patterns/resize-handle/resize-handle.js +74 -0
  373. package/dist/patterns/resize-handle/resize-handle.js.map +1 -0
  374. package/dist/react-day-picker.css +457 -0
  375. package/dist/stories-helpers/anatomy/anatomy-utils.d.ts +40 -0
  376. package/dist/stories-helpers/anatomy/anatomy-utils.d.ts.map +1 -0
  377. package/dist/tokens/elevation/overlay-geometry.d.ts +12 -0
  378. package/dist/tokens/elevation/overlay-geometry.d.ts.map +1 -0
  379. package/dist/tokens/elevation/overlay-geometry.js +7 -0
  380. package/dist/tokens/elevation/overlay-geometry.js.map +1 -0
  381. package/dist/tokens/motion/motion.d.ts +15 -0
  382. package/dist/tokens/motion/motion.d.ts.map +1 -0
  383. package/dist/tokens/motion/motion.js +9 -0
  384. package/dist/tokens/motion/motion.js.map +1 -0
  385. package/dist/tokens/uiSize/icon-size.d.ts +53 -0
  386. package/dist/tokens/uiSize/icon-size.d.ts.map +1 -0
  387. package/package.json +92 -0
  388. package/src/README.md +32 -0
  389. package/src/components/Accordion/accordion.tsx +104 -0
  390. package/src/components/Alert/alert.tsx +188 -0
  391. package/src/components/AppShell/_demo-helpers.tsx +198 -0
  392. package/src/components/AppShell/app-shell.tsx +364 -0
  393. package/src/components/AspectRatio/aspect-ratio.tsx +58 -0
  394. package/src/components/Avatar/avatar.tsx +368 -0
  395. package/src/components/Badge/badge.tsx +104 -0
  396. package/src/components/Breadcrumb/breadcrumb.tsx +619 -0
  397. package/src/components/BulkActionBar/bulk-action-bar.tsx +156 -0
  398. package/src/components/Button/button-group.tsx +96 -0
  399. package/src/components/Button/button.tsx +539 -0
  400. package/src/components/Calendar/calendar.tsx +411 -0
  401. package/src/components/Carousel/carousel.tsx +371 -0
  402. package/src/components/Chart/chart.tsx +376 -0
  403. package/src/components/Checkbox/checkbox-group.tsx +94 -0
  404. package/src/components/Checkbox/checkbox.tsx +237 -0
  405. package/src/components/Chip/chip.tsx +359 -0
  406. package/src/components/CircularProgress/circular-progress.tsx +204 -0
  407. package/src/components/Coachmark/coachmark.tsx +255 -0
  408. package/src/components/Combobox/combobox.tsx +826 -0
  409. package/src/components/Command/command.tsx +187 -0
  410. package/src/components/DataTable/active-editor-controller.ts +72 -0
  411. package/src/components/DataTable/cell-registry.tsx +520 -0
  412. package/src/components/DataTable/column-types.ts +180 -0
  413. package/src/components/DataTable/data-table-column-visibility-panel.tsx +261 -0
  414. package/src/components/DataTable/data-table-filter-panel.tsx +813 -0
  415. package/src/components/DataTable/data-table-interaction-layer.tsx +483 -0
  416. package/src/components/DataTable/data-table-sort-manager.tsx +210 -0
  417. package/src/components/DataTable/data-table.css +165 -0
  418. package/src/components/DataTable/data-table.tsx +2924 -0
  419. package/src/components/DataTable/filter-operators.ts +225 -0
  420. package/src/components/DataTable/filter-tree.ts +313 -0
  421. package/src/components/DataTable/lib/column-meta.ts +79 -0
  422. package/src/components/DateGrid/date-grid.tsx +209 -0
  423. package/src/components/DatePicker/date-picker.tsx +1114 -0
  424. package/src/components/DescriptionList/description-list.tsx +141 -0
  425. package/src/components/Dialog/dialog.tsx +267 -0
  426. package/src/components/DropdownMenu/dropdown-menu.tsx +475 -0
  427. package/src/components/Empty/empty.tsx +108 -0
  428. package/src/components/Field/field-context.ts +136 -0
  429. package/src/components/Field/field-types.ts +52 -0
  430. package/src/components/Field/field-wrapper.tsx +348 -0
  431. package/src/components/Field/field.tsx +535 -0
  432. package/src/components/FieldControlGroup/field-control-group.tsx +136 -0
  433. package/src/components/FileItem/file-item.tsx +322 -0
  434. package/src/components/FileUpload/file-upload.tsx +326 -0
  435. package/src/components/FileViewer/file-viewer-types.ts +76 -0
  436. package/src/components/FileViewer/file-viewer.tsx +1065 -0
  437. package/src/components/FileViewer/image-renderer.tsx +256 -0
  438. package/src/components/HoverCard/hover-card.tsx +79 -0
  439. package/src/components/Input/input.tsx +233 -0
  440. package/src/components/LinkInput/link-input.tsx +304 -0
  441. package/src/components/Menu/menu-item.tsx +334 -0
  442. package/src/components/NameCard/name-card.tsx +319 -0
  443. package/src/components/Notice/notice.tsx +196 -0
  444. package/src/components/NumberInput/number-input.tsx +203 -0
  445. package/src/components/OverflowIndicator/overflow-indicator.tsx +156 -0
  446. package/src/components/PeoplePicker/avatar-stack-overflow.ts +100 -0
  447. package/src/components/PeoplePicker/people-picker-helpers.ts +76 -0
  448. package/src/components/PeoplePicker/people-picker.tsx +455 -0
  449. package/src/components/PeoplePicker/person-display.tsx +358 -0
  450. package/src/components/Popover/popover.tsx +183 -0
  451. package/src/components/ProgressBar/progress-bar.tsx +157 -0
  452. package/src/components/README.md +58 -0
  453. package/src/components/RadioGroup/radio-group.tsx +261 -0
  454. package/src/components/Rating/rating.tsx +295 -0
  455. package/src/components/ScrollArea/scroll-area.tsx +110 -0
  456. package/src/components/SegmentedControl/segmented-control.tsx +304 -0
  457. package/src/components/Select/select.tsx +658 -0
  458. package/src/components/SelectMenu/select-menu.tsx +430 -0
  459. package/src/components/SelectionControl/selection-item.tsx +261 -0
  460. package/src/components/Separator/separator.tsx +48 -0
  461. package/src/components/Sheet/sheet.tsx +240 -0
  462. package/src/components/Sidebar/sidebar.tsx +1280 -0
  463. package/src/components/Skeleton/skeleton.tsx +35 -0
  464. package/src/components/Slider/slider.tsx +158 -0
  465. package/src/components/Steps/steps.tsx +850 -0
  466. package/src/components/Switch/switch.tsx +285 -0
  467. package/src/components/Tabs/tabs.tsx +515 -0
  468. package/src/components/Tag/tag.tsx +246 -0
  469. package/src/components/Textarea/textarea.tsx +280 -0
  470. package/src/components/TimePicker/time-columns.tsx +260 -0
  471. package/src/components/TimePicker/time-picker.tsx +419 -0
  472. package/src/components/Toast/toast.tsx +129 -0
  473. package/src/components/Tooltip/tooltip.tsx +68 -0
  474. package/src/components/TreeView/tree-view.tsx +1031 -0
  475. package/src/hooks/use-controllable.ts +40 -0
  476. package/src/hooks/use-is-narrow-viewport.ts +19 -0
  477. package/src/hooks/use-is-touch-device.ts +21 -0
  478. package/src/hooks/use-overflow-items.ts +256 -0
  479. package/src/index.ts +85 -0
  480. package/src/lib/README.md +82 -0
  481. package/src/lib/drag-visual.ts +272 -0
  482. package/src/lib/i18n/README.md +60 -0
  483. package/src/lib/i18n/i18n-context.tsx +129 -0
  484. package/src/lib/multi-select-ordering.ts +61 -0
  485. package/src/lib/utils.ts +93 -0
  486. package/src/patterns/README.md +67 -0
  487. package/src/patterns/element-anatomy/item-anatomy.tsx +744 -0
  488. package/src/patterns/header-canonical/chrome-header.tsx +175 -0
  489. package/src/patterns/header-canonical/header-canonical.css +27 -0
  490. package/src/patterns/horizontal-overflow/horizontal-overflow.tsx +217 -0
  491. package/src/patterns/overlay-surface/overlay-surface.tsx +191 -0
  492. package/src/patterns/resize-handle/resize-handle.tsx +188 -0
  493. package/src/stories-helpers/anatomy/anatomy-utils.tsx +64 -0
  494. package/src/styles/preset.css +31 -0
  495. package/src/styles/tokens.css +35 -0
  496. package/src/tokens/README.md +53 -0
  497. package/src/tokens/color/primitives.css +429 -0
  498. package/src/tokens/color/semantic.css +539 -0
  499. package/src/tokens/elevation/overlay-geometry.ts +13 -0
  500. package/src/tokens/layoutSpace/layoutSpace.css +36 -0
  501. package/src/tokens/motion/motion.css +30 -0
  502. package/src/tokens/motion/motion.ts +17 -0
  503. package/src/tokens/opacity/opacity.css +23 -0
  504. package/src/tokens/radius/radius.css +19 -0
  505. package/src/tokens/typography/typography.css +118 -0
  506. package/src/tokens/uiSize/icon-size.ts +52 -0
  507. package/src/tokens/uiSize/uiSize.css +125 -0
@@ -0,0 +1,105 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * DS i18n Route B — additive I18nProvider + useI18n hook
4
+ *
5
+ * ── 背景 ──
6
+ * Route A(2026-04-24 shipped)= individual prop override(Notice dismissAriaLabel /
7
+ * FileViewer labels / etc)+ `// i18n-allow` marker。
8
+ *
9
+ * Route B(本 module)= opt-in context provider,consumer 傳 labels catalog 一次性
10
+ * 注入全 DS,個別 prop 不需每個 call site 傳。**完全 backward compatible** — 沒
11
+ * 包 provider 不影響既有 prop-based 行為。
12
+ *
13
+ * ── Fallback chain(每個 label resolution)──
14
+ * 1. Consumer 傳的 prop(e.g. `<Notice dismissAriaLabel="X" />`)
15
+ * 2. Context labels(useI18n().t('notice', 'dismiss', default))
16
+ * 3. DS default(CJK `i18n-allow` rationale)
17
+ *
18
+ * ── Usage ──
19
+ *
20
+ * ```tsx
21
+ * // Consumer app root
22
+ * import { I18nProvider } from '../../lib/i18n/i18n-context'
23
+ *
24
+ * const labels = {
25
+ * notice: { dismiss: 'Dismiss' },
26
+ * fileViewer: { close: 'Close viewer', download: 'Download' },
27
+ * // ... 覆寫需要的項
28
+ * }
29
+ *
30
+ * <I18nProvider labels={labels}>
31
+ * <App />
32
+ * </I18nProvider>
33
+ * ```
34
+ *
35
+ * ```tsx
36
+ * // DS component internal(opt-in migration)
37
+ * import { useI18n } from '../../lib/i18n/i18n-context'
38
+ *
39
+ * const { t } = useI18n()
40
+ * <button aria-label={props.dismissAriaLabel ?? t('notice', 'dismiss', '關閉通知')}>
41
+ * ```
42
+ *
43
+ * ── 為什麼 opt-in(不強制)──
44
+ * DS 目前大半 component 都走 prop override,強制 all-or-nothing migration 需要
45
+ * 17 files × multi-location refactor 的協調成本。Route B 讓既有 prop API 繼續
46
+ * 工作,同時開放 context-based i18n 給想統一管理的 consumer。
47
+ *
48
+ * ── 為什麼 hierarchical key(component, label)而非 flat key ──
49
+ * Flat key(e.g. 'notice.dismiss')需要命名 convention + grep-based validation;
50
+ * hierarchical object 天然分 namespace + TypeScript 可做 discriminated union。
51
+ */
52
+ /**
53
+ * Labels catalog 結構:`{ [componentKey]: { [labelKey]: translatedString } }`
54
+ *
55
+ * Consumer 可透過 module augmentation 擴充 type safety:
56
+ *
57
+ * ```ts
58
+ * declare module '../../lib/i18n/i18n-context' {
59
+ * interface I18nLabels {
60
+ * notice?: { dismiss?: string }
61
+ * fileViewer?: { close?: string; download?: string }
62
+ * }
63
+ * }
64
+ * ```
65
+ */
66
+ export interface I18nLabels {
67
+ [componentKey: string]: Record<string, string | undefined> | undefined;
68
+ }
69
+ export interface I18nProviderProps {
70
+ /** Labels catalog。空 object OK(代表用 all defaults)。Partial 覆寫 OK(只填需要翻的)。 */
71
+ labels: I18nLabels;
72
+ children: React.ReactNode;
73
+ }
74
+ /**
75
+ * I18nProvider — consumer-optional wrapper 注入 labels catalog。
76
+ *
77
+ * 沒包 → `useI18n().t()` 每次返 fallback(= DS CJK defaults)。
78
+ * 包 → 該 labels 取代對應 DS defaults;未填的 key 仍 fallback。
79
+ */
80
+ export declare function I18nProvider({ labels, children }: I18nProviderProps): import("react/jsx-runtime").JSX.Element;
81
+ export interface I18nHookResult {
82
+ /**
83
+ * Translate:return labels[componentKey]?.[labelKey] ?? fallback。
84
+ *
85
+ * @param componentKey - 元件 namespace(kebab-case,e.g. 'notice' / 'file-viewer')
86
+ * @param labelKey - 該元件內的 label 名(camelCase,e.g. 'dismiss' / 'close')
87
+ * @param fallback - DS default(無 context / no key 時用)
88
+ */
89
+ t: (componentKey: string, labelKey: string, fallback: string) => string;
90
+ /** 當前 labels catalog(null = 無 provider)。Debug / advanced use */
91
+ labels: I18nLabels | null;
92
+ }
93
+ /**
94
+ * useI18n — DS 元件內消費 labels catalog。
95
+ *
96
+ * **Fallback chain**(每 label resolution):
97
+ * 1. Consumer 傳的 prop(call site 最優先)
98
+ * 2. Context `labels[componentKey][labelKey]`
99
+ * 3. DS default(fallback 參數,i18n-allow 的 CJK)
100
+ *
101
+ * 無 I18nProvider 環境:`labels` = null,`t()` 每次直接返 fallback。**不拋 error**
102
+ *(跟 Field context 等 DS 其他 optional context 同 pattern)。
103
+ */
104
+ export declare function useI18n(): I18nHookResult;
105
+ //# sourceMappingURL=i18n-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-context.d.ts","sourceRoot":"","sources":["../../../src/lib/i18n/i18n-context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,UAAU;IACzB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;CACvE;AAID,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;GAKG;AAEH,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAInE;AAGD,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACvE,gEAAgE;IAChE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;CAC1B;AAED;;;;;;;;;;GAUG;AAEH,wBAAgB,OAAO,IAAI,cAAc,CASxC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * multi-select-ordering — SSOT primitive for "Select All" / bulk-select value ordering
3
+ *
4
+ * **Canonical**:Path A(preserve existing user click order + append unselected options
5
+ * in source/canonical order,with dedup)。
6
+ *
7
+ * **Source basis(Layer A + Codex M31 Round 4 共識,2026-05-16 user verbatim approve「就照
8
+ * 你們的共識做到完美確保有 SSOT」)**:
9
+ *
10
+ * Ant Design 跨元件「Select All」 bulk-select canonical 證據:
11
+ * - **Transfer**(`components/transfer/index.tsx`): `Array.from(new Set([...prevKeys, ...keys]))`
12
+ * — preserve previous selection order + append new bulk keys with dedup
13
+ * - **Table rowSelection selectAll**(`components/table/hooks/useSelection.tsx`): existing keySet
14
+ * + flattened source-order append via `Array.from(keySet)`
15
+ * - **Checkbox.Group**(`components/checkbox/Group.tsx`): 強制 sort source order(更嚴格 B 變體,
16
+ * 但只用於 onChange callback,非 bulk-select 動作)
17
+ *
18
+ * **PeoplePicker / SelectMenu「全部」 footer 場景對應**:
19
+ * - 動作語意 = Transfer / Table rowSelection 的「Select All」(bulk 選 remaining items)
20
+ * - 跟 Checkbox.Group 不同(後者沒 Select All button,只是 onChange 回 sort)
21
+ * - **採 path A**(preserve+append)為 ordering canonical
22
+ *
23
+ * **為何 SSOT(per user「以後遇到此類設計都有相同邏輯不會偏移」)**:
24
+ * 1. 集中 ordering logic 一處,future 改 ordering policy 只改本檔
25
+ * 2. Future consumers(e.g. DataTable filter checkAll / 任何新 multi-select 元件 with Select All
26
+ * footer)必 import 本 primitive,hook `check_select_all_canonical.sh` 機械強制
27
+ * 3. 對齊 mindset #2「優先消費既有」+ M17「SSOT 必可傳播」+ M23「DS internal canonical 優先」
28
+ *
29
+ * **世界級對照**:Ant Transfer + Table rowSelection canonical(2026-05-16 Round 4 grep verify)。
30
+ * 非「跟世界級對齊」一句空話 — 直接 codify Ant 兩個 bulk-select 元件的 implementation 行為。
31
+ */
32
+ /**
33
+ * Apply "Select All" canonical:preserve existing selection order + append unselected options
34
+ * in source order(with dedup)。
35
+ *
36
+ * @param existing — 既有 selection array(user click 累積順序)
37
+ * @param all — 所有可選 options 值 array(source / canonical order — 通常 = `options.filter(!disabled).map(v)`)
38
+ * @returns 新 selection array,既有部分維持原順序在前,新加入部分按 source order append 在後
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * applySelectAll(['c', 'a'], ['a', 'b', 'c', 'd']) // => ['c', 'a', 'b', 'd']
43
+ * applySelectAll([], ['a', 'b', 'c']) // => ['a', 'b', 'c']
44
+ * applySelectAll(['a', 'b', 'c'], ['a', 'b', 'c']) // => ['a', 'b', 'c']
45
+ * ```
46
+ */
47
+ export declare function applySelectAll<T>(existing: readonly T[], all: readonly T[]): T[];
48
+ /**
49
+ * Companion:clear all selection。
50
+ * Trivial wrapper for symmetry(consumer 用 `applySelectAll` ↔ `clearSelection` pair 達成
51
+ * 「全選 → 取消全選」 toggle canonical)。
52
+ */
53
+ export declare function clearSelection<T>(): T[];
54
+ //# sourceMappingURL=multi-select-ordering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-select-ordering.d.ts","sourceRoot":"","sources":["../../src/lib/multi-select-ordering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAIhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE,CAEvC"}
@@ -0,0 +1,13 @@
1
+ function applySelectAll(existing, all) {
2
+ const existingSet = new Set(existing);
3
+ const unselected = all.filter((v) => !existingSet.has(v));
4
+ return [...existing, ...unselected];
5
+ }
6
+ function clearSelection() {
7
+ return [];
8
+ }
9
+ export {
10
+ applySelectAll,
11
+ clearSelection
12
+ };
13
+ //# sourceMappingURL=multi-select-ordering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-select-ordering.js","sources":["../../src/lib/multi-select-ordering.ts"],"sourcesContent":["/**\n * multi-select-ordering — SSOT primitive for \"Select All\" / bulk-select value ordering\n *\n * **Canonical**:Path A(preserve existing user click order + append unselected options\n * in source/canonical order,with dedup)。\n *\n * **Source basis(Layer A + Codex M31 Round 4 共識,2026-05-16 user verbatim approve「就照\n * 你們的共識做到完美確保有 SSOT」)**:\n *\n * Ant Design 跨元件「Select All」 bulk-select canonical 證據:\n * - **Transfer**(`components/transfer/index.tsx`): `Array.from(new Set([...prevKeys, ...keys]))`\n * — preserve previous selection order + append new bulk keys with dedup\n * - **Table rowSelection selectAll**(`components/table/hooks/useSelection.tsx`): existing keySet\n * + flattened source-order append via `Array.from(keySet)`\n * - **Checkbox.Group**(`components/checkbox/Group.tsx`): 強制 sort source order(更嚴格 B 變體,\n * 但只用於 onChange callback,非 bulk-select 動作)\n *\n * **PeoplePicker / SelectMenu「全部」 footer 場景對應**:\n * - 動作語意 = Transfer / Table rowSelection 的「Select All」(bulk 選 remaining items)\n * - 跟 Checkbox.Group 不同(後者沒 Select All button,只是 onChange 回 sort)\n * - **採 path A**(preserve+append)為 ordering canonical\n *\n * **為何 SSOT(per user「以後遇到此類設計都有相同邏輯不會偏移」)**:\n * 1. 集中 ordering logic 一處,future 改 ordering policy 只改本檔\n * 2. Future consumers(e.g. DataTable filter checkAll / 任何新 multi-select 元件 with Select All\n * footer)必 import 本 primitive,hook `check_select_all_canonical.sh` 機械強制\n * 3. 對齊 mindset #2「優先消費既有」+ M17「SSOT 必可傳播」+ M23「DS internal canonical 優先」\n *\n * **世界級對照**:Ant Transfer + Table rowSelection canonical(2026-05-16 Round 4 grep verify)。\n * 非「跟世界級對齊」一句空話 — 直接 codify Ant 兩個 bulk-select 元件的 implementation 行為。\n */\n\n/**\n * Apply \"Select All\" canonical:preserve existing selection order + append unselected options\n * in source order(with dedup)。\n *\n * @param existing — 既有 selection array(user click 累積順序)\n * @param all — 所有可選 options 值 array(source / canonical order — 通常 = `options.filter(!disabled).map(v)`)\n * @returns 新 selection array,既有部分維持原順序在前,新加入部分按 source order append 在後\n *\n * @example\n * ```ts\n * applySelectAll(['c', 'a'], ['a', 'b', 'c', 'd']) // => ['c', 'a', 'b', 'd']\n * applySelectAll([], ['a', 'b', 'c']) // => ['a', 'b', 'c']\n * applySelectAll(['a', 'b', 'c'], ['a', 'b', 'c']) // => ['a', 'b', 'c']\n * ```\n */\nexport function applySelectAll<T>(existing: readonly T[], all: readonly T[]): T[] {\n const existingSet = new Set(existing)\n const unselected = all.filter((v) => !existingSet.has(v))\n return [...existing, ...unselected]\n}\n\n/**\n * Companion:clear all selection。\n * Trivial wrapper for symmetry(consumer 用 `applySelectAll` ↔ `clearSelection` pair 達成\n * 「全選 → 取消全選」 toggle canonical)。\n */\nexport function clearSelection<T>(): T[] {\n return []\n}\n"],"names":[],"mappings":"AA+CO,SAAS,eAAkB,UAAwB,KAAwB;AAChF,QAAM,cAAc,IAAI,IAAI,QAAQ;AACpC,QAAM,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;AACxD,SAAO,CAAC,GAAG,UAAU,GAAG,UAAU;AACpC;AAOO,SAAS,iBAAyB;AACvC,SAAO,CAAA;AACT;"}
@@ -0,0 +1,12 @@
1
+ import { type ClassValue } from 'clsx';
2
+ /**
3
+ * cn() — Tailwind class 合併工具
4
+ *
5
+ * 用法:
6
+ * cn("px-4 py-2", isActive && "bg-primary", className)
7
+ *
8
+ * 原理:clsx 處理條件式 class,twMerge 解決 Tailwind class 衝突
9
+ * 例如 cn("px-4", "px-2") → "px-2"(後者優先)
10
+ */
11
+ export declare function cn(...inputs: ClassValue[]): string;
12
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAiF5C;;;;;;;;GAQG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,79 @@
1
+ import { clsx } from "clsx";
2
+ import { extendTailwindMerge } from "tailwind-merge";
3
+ const twMerge = extendTailwindMerge({
4
+ extend: {
5
+ classGroups: {
6
+ "font-size": [
7
+ "text-h1",
8
+ "text-h2",
9
+ "text-h3",
10
+ "text-h4",
11
+ "text-h5",
12
+ "text-h6",
13
+ "text-body-lg",
14
+ "text-body",
15
+ "text-caption",
16
+ "text-footnote"
17
+ ],
18
+ // 自訂 text-color utilities(對應 semantic.css 的 `@theme inline --color-*` bridge)。
19
+ //
20
+ // 任何新增的 text-{semantic-name} color utility 都必須在這裡登記,否則
21
+ // tailwind-merge 會誤判成 font-size 與 typography 衝突(歷史 bug:
22
+ // text-body + text-fg-secondary 被 strip)。
23
+ //
24
+ // 完整家族對齊 semantic.css: 5 狀態色(primary/error/success/warning/info)
25
+ // × 3 互動階(base/hover/active)+ text(on-subtle-bg)+ subtle(含 primary)
26
+ // + notification(紅 badge)+ neutral foreground 四階。
27
+ "text-color": [
28
+ // Neutral foreground 家族
29
+ "text-foreground",
30
+ "text-fg-secondary",
31
+ "text-fg-muted",
32
+ "text-fg-disabled",
33
+ "text-inverse-fg",
34
+ "text-on-emphasis",
35
+ // 白字於飽和色底(Avatar color variants / Steps filled indicator)
36
+ // Status 基色(base)
37
+ "text-primary",
38
+ "text-error",
39
+ "text-success",
40
+ "text-warning",
41
+ "text-info",
42
+ "text-notification",
43
+ // Status 互動階(hover / active)
44
+ "text-primary-hover",
45
+ "text-primary-active",
46
+ "text-error-hover",
47
+ "text-error-active",
48
+ "text-success-hover",
49
+ "text-success-active",
50
+ "text-warning-hover",
51
+ "text-warning-active",
52
+ "text-info-hover",
53
+ "text-info-active",
54
+ // on-subtle-bg 版本(深色文字配淺色底)
55
+ "text-primary-text",
56
+ "text-error-text",
57
+ "text-success-text",
58
+ "text-warning-text",
59
+ "text-info-text",
60
+ // Subtle 文字(少用,保持完整家族一致)
61
+ "text-primary-subtle",
62
+ "text-error-subtle",
63
+ "text-success-subtle",
64
+ "text-warning-subtle",
65
+ "text-info-subtle"
66
+ ],
67
+ // Custom opacity utility(對應 tokens/opacity/opacity.css `@utility opacity-disabled`)。
68
+ // 不註冊 group → tailwind-merge 用 default opacity-N heuristic,可能誤判 class 衝突。
69
+ "opacity": ["opacity-disabled"]
70
+ }
71
+ }
72
+ });
73
+ function cn(...inputs) {
74
+ return twMerge(clsx(inputs));
75
+ }
76
+ export {
77
+ cn
78
+ };
79
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { extendTailwindMerge } from 'tailwind-merge'\n\n/**\n * 擴充 tailwind-merge,讓它認識設計系統的自訂 typography 與 text-color utilities。\n *\n * 預設 tailwind-merge 看到 `text-{xxx}` 自訂 class 會用 heuristic 猜它是 font-size\n * 還是 color——猜錯就會把不該放在同一組的 class 誤判為衝突,然後 strip 掉其中一個。\n *\n * 實際發生過的 bug:`text-body`(font-size 14px)和 `text-fg-secondary`(color)\n * 被同時放進 font-size group,tailwind-merge 把 `text-body` 吃掉,導致元件\n * inherit 父層 16px,description 永遠跟 label 同字級。\n *\n * 修法:**font-size group 和 text-color group 都明確列舉**,不留猜測空間。\n */\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n 'font-size': [\n 'text-h1', 'text-h2', 'text-h3', 'text-h4', 'text-h5', 'text-h6',\n 'text-body-lg', 'text-body', 'text-caption', 'text-footnote',\n ],\n // 自訂 text-color utilities(對應 semantic.css 的 `@theme inline --color-*` bridge)。\n //\n // 任何新增的 text-{semantic-name} color utility 都必須在這裡登記,否則\n // tailwind-merge 會誤判成 font-size 與 typography 衝突(歷史 bug:\n // text-body + text-fg-secondary 被 strip)。\n //\n // 完整家族對齊 semantic.css: 5 狀態色(primary/error/success/warning/info)\n // × 3 互動階(base/hover/active)+ text(on-subtle-bg)+ subtle(含 primary)\n // + notification(紅 badge)+ neutral foreground 四階。\n 'text-color': [\n // Neutral foreground 家族\n 'text-foreground',\n 'text-fg-secondary',\n 'text-fg-muted',\n 'text-fg-disabled',\n 'text-inverse-fg',\n 'text-on-emphasis', // 白字於飽和色底(Avatar color variants / Steps filled indicator)\n\n // Status 基色(base)\n 'text-primary',\n 'text-error',\n 'text-success',\n 'text-warning',\n 'text-info',\n 'text-notification',\n\n // Status 互動階(hover / active)\n 'text-primary-hover',\n 'text-primary-active',\n 'text-error-hover',\n 'text-error-active',\n 'text-success-hover',\n 'text-success-active',\n 'text-warning-hover',\n 'text-warning-active',\n 'text-info-hover',\n 'text-info-active',\n\n // on-subtle-bg 版本(深色文字配淺色底)\n 'text-primary-text',\n 'text-error-text',\n 'text-success-text',\n 'text-warning-text',\n 'text-info-text',\n\n // Subtle 文字(少用,保持完整家族一致)\n 'text-primary-subtle',\n 'text-error-subtle',\n 'text-success-subtle',\n 'text-warning-subtle',\n 'text-info-subtle',\n ],\n // Custom opacity utility(對應 tokens/opacity/opacity.css `@utility opacity-disabled`)。\n // 不註冊 group → tailwind-merge 用 default opacity-N heuristic,可能誤判 class 衝突。\n 'opacity': ['opacity-disabled'],\n },\n },\n})\n\n/**\n * cn() — Tailwind class 合併工具\n *\n * 用法:\n * cn(\"px-4 py-2\", isActive && \"bg-primary\", className)\n *\n * 原理:clsx 處理條件式 class,twMerge 解決 Tailwind class 衝突\n * 例如 cn(\"px-4\", \"px-2\") → \"px-2\"(後者優先)\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n"],"names":[],"mappings":";;AAeA,MAAM,UAAU,oBAAoB;AAAA,EAClC,QAAQ;AAAA,IACN,aAAa;AAAA,MACX,aAAa;AAAA,QACX;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QACvD;AAAA,QAAgB;AAAA,QAAa;AAAA,QAAgB;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAW/C,cAAc;AAAA;AAAA,QAEZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA;AAAA;AAAA,MAIF,WAAW,CAAC,kBAAkB;AAAA,IAAA;AAAA,EAChC;AAEJ,CAAC;AAWM,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;"}