@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,40 @@
1
+ import React from 'react';
2
+ /**
3
+ * Shared helper components for all `*.anatomy.stories.tsx` files.
4
+ *
5
+ * Canonical definitions picked from Button/button.anatomy.stories.tsx and
6
+ * Slider/slider.anatomy.stories.tsx. Before duplicating these helpers locally,
7
+ * consider whether the shared version meets your need — visual consistency
8
+ * across anatomy stories is intentional.
9
+ *
10
+ * If you must diverge locally, add a comment explaining why.
11
+ */
12
+ export declare const H3: ({ children }: {
13
+ children: React.ReactNode;
14
+ }) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const Desc: ({ children }: {
16
+ children: React.ReactNode;
17
+ }) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const Td: ({ children, mono, className }: {
19
+ children: React.ReactNode;
20
+ mono?: boolean;
21
+ className?: string;
22
+ }) => import("react/jsx-runtime").JSX.Element;
23
+ export declare const Th: ({ children }: {
24
+ children?: React.ReactNode;
25
+ }) => import("react/jsx-runtime").JSX.Element;
26
+ /**
27
+ * Token color preview swatch.
28
+ * - `transparent` / `none` / `—` → checkerboard pattern (communicates "no color")
29
+ * - `white` → literal #fff (CSS var won't resolve to white in all themes)
30
+ * - otherwise → `var(--token-name)` via backgroundColor
31
+ */
32
+ export declare const Swatch: ({ value, size }: {
33
+ value: string;
34
+ size?: "sm" | "md";
35
+ }) => import("react/jsx-runtime").JSX.Element;
36
+ export declare const TokenCell: ({ token, display }: {
37
+ token: string;
38
+ display?: string;
39
+ }) => import("react/jsx-runtime").JSX.Element;
40
+ //# sourceMappingURL=anatomy-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anatomy-utils.d.ts","sourceRoot":"","sources":["../../../src/stories-helpers/anatomy/anatomy-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;;;;;GASG;AAEH,eAAO,MAAM,EAAE,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAE7D,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAE/D,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,+BAA+B;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,4CAElH,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,cAAc;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,4CAE9D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,iBAAwB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,4CAqBnF,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,oBAAoB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,4CAKhF,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Overlay geometry SSOT — Radix prop number constants(non-CSS-var,JS-side single source).
3
+ *
4
+ * Why JS const not CSS var:Radix `sideOffset` / `collisionPadding` 接 number prop,
5
+ * 不接 `var(--...)`。改值要動 5+ primitive default = 假 SSOT。本檔抽 const,
6
+ * primitive default 統一 import → 改值只動一處全部聯動。
7
+ *
8
+ * Canonical source:`elevation.spec.md` § 浮層間距 sideOffset。
9
+ */
10
+ export declare const OVERLAY_SIDE_OFFSET = 8;
11
+ export declare const OVERLAY_COLLISION_PADDING = 8;
12
+ //# sourceMappingURL=overlay-geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-geometry.d.ts","sourceRoot":"","sources":["../../../src/tokens/elevation/overlay-geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,eAAO,MAAM,yBAAyB,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ const OVERLAY_SIDE_OFFSET = 8;
2
+ const OVERLAY_COLLISION_PADDING = 8;
3
+ export {
4
+ OVERLAY_COLLISION_PADDING,
5
+ OVERLAY_SIDE_OFFSET
6
+ };
7
+ //# sourceMappingURL=overlay-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-geometry.js","sources":["../../../src/tokens/elevation/overlay-geometry.ts"],"sourcesContent":["/**\n * Overlay geometry SSOT — Radix prop number constants(non-CSS-var,JS-side single source).\n *\n * Why JS const not CSS var:Radix `sideOffset` / `collisionPadding` 接 number prop,\n * 不接 `var(--...)`。改值要動 5+ primitive default = 假 SSOT。本檔抽 const,\n * primitive default 統一 import → 改值只動一處全部聯動。\n *\n * Canonical source:`elevation.spec.md` § 浮層間距 sideOffset。\n */\n\nexport const OVERLAY_SIDE_OFFSET = 8\n\nexport const OVERLAY_COLLISION_PADDING = 8\n"],"names":[],"mappings":"AAUO,MAAM,sBAAsB;AAE5B,MAAM,4BAA4B;"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Motion tokens — JS mirror of `motion.css` for Radix/JS API consumers.
3
+ *
4
+ * Radix primitive props(`delayDuration` / `openDelay` / `closeDelay`)期望 number ms,
5
+ * 不認 CSS var。本 file 是 motion.css 對應 number value 鏡像;改值必同步兩處(或加 lint)。
6
+ *
7
+ * SSOT: `motion.css` + `motion.spec.md`。
8
+ */
9
+ /** 純文字提示(Tooltip)— passive hint。2026-05-20 200→500ms 對齊 Material 3 / Apple HIG / shadcn-Radix 主流 */
10
+ export declare const HOVER_DELAY_PLAIN_MS = 500;
11
+ /** 內容預覽(HoverCard / NameCard)— rich preview。2026-05-20 300→700ms 避免列表掃視誤觸發 fetch */
12
+ export declare const HOVER_DELAY_RICH_MS = 700;
13
+ /** 通用關閉延遲(所有 hover overlay)— accidental-hover 容錯 */
14
+ export declare const HOVER_DELAY_CLOSE_MS = 200;
15
+ //# sourceMappingURL=motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../../src/tokens/motion/motion.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oGAAoG;AACpG,eAAO,MAAM,oBAAoB,MAAM,CAAA;AAEvC,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,MAAM,CAAA"}
@@ -0,0 +1,9 @@
1
+ const HOVER_DELAY_PLAIN_MS = 500;
2
+ const HOVER_DELAY_RICH_MS = 700;
3
+ const HOVER_DELAY_CLOSE_MS = 200;
4
+ export {
5
+ HOVER_DELAY_CLOSE_MS,
6
+ HOVER_DELAY_PLAIN_MS,
7
+ HOVER_DELAY_RICH_MS
8
+ };
9
+ //# sourceMappingURL=motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.js","sources":["../../../src/tokens/motion/motion.ts"],"sourcesContent":["/**\n * Motion tokens — JS mirror of `motion.css` for Radix/JS API consumers.\n *\n * Radix primitive props(`delayDuration` / `openDelay` / `closeDelay`)期望 number ms,\n * 不認 CSS var。本 file 是 motion.css 對應 number value 鏡像;改值必同步兩處(或加 lint)。\n *\n * SSOT: `motion.css` + `motion.spec.md`。\n */\n\n/** 純文字提示(Tooltip)— passive hint。2026-05-20 200→500ms 對齊 Material 3 / Apple HIG / shadcn-Radix 主流 */\nexport const HOVER_DELAY_PLAIN_MS = 500\n\n/** 內容預覽(HoverCard / NameCard)— rich preview。2026-05-20 300→700ms 避免列表掃視誤觸發 fetch */\nexport const HOVER_DELAY_RICH_MS = 700\n\n/** 通用關閉延遲(所有 hover overlay)— accidental-hover 容錯 */\nexport const HOVER_DELAY_CLOSE_MS = 200\n"],"names":[],"mappings":"AAUO,MAAM,uBAAuB;AAG7B,MAAM,sBAAsB;AAG5B,MAAM,uBAAuB;"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Icon Size SSOT — cross-domain re-export entry
3
+ *
4
+ * Owner:`packages/design-system/src/patterns/element-anatomy/item-anatomy.tsx:66` `ICON_SIZE`
5
+ * Spec:`packages/design-system/src/tokens/uiSize/uiSize.spec.md` 「Icon Size Tier」段
6
+ *
7
+ * ── 為什麼 re-export 不直接動 owner ──
8
+ * `ICON_SIZE` const codified in `item-anatomy.tsx` 是 row primitive SSOT(MenuItem / TreeView /
9
+ * Sidebar / DropdownMenu / SelectionItem / Item-anatomy 等 row-based primitives 消費)。
10
+ *
11
+ * Form control(Button / Input / Combobox / DatePicker / Tabs / Select / SegmentedControl 等)
12
+ * 不該 cross-domain import patterns/element-anatomy(會造成 components→patterns 反向 dependency
13
+ * 增加 cycle 風險)。透過 `tokens/uiSize/` 作 token home 是 cross-domain SSOT 的慣例(token 是 DS
14
+ * 內最底層,所有 layer 都可 consume 不違反 dependency direction)。
15
+ *
16
+ * ── Tier ──
17
+ * `field-height-xs / sm / md` → icon **16px**
18
+ * `field-height-lg` → icon **20px**
19
+ *
20
+ * 詳 spec L132+ Icon Size Tier 段(stroke 下限 12px / Tag-Field 配對 / etc.)
21
+ *
22
+ * ── Consumer 用法 ──
23
+ * ```tsx
24
+ * import { ICON_SIZE } from '../../tokens/uiSize/icon-size'
25
+ *
26
+ * // sm/md → 16, lg → 20
27
+ * <LucideIcon size={ICON_SIZE[size]} />
28
+ *
29
+ * // form control xs(field-height-xs 24)用 ICON_SIZE.sm(同 16,per spec L132 Tier)
30
+ * <LucideIcon size={size === 'xs' ? ICON_SIZE.sm : ICON_SIZE[size]} />
31
+ * ```
32
+ *
33
+ * ── 防漂移 ──
34
+ * 1. uiSize.spec.md「Icon Size Tier」段 codify 16/16/16/20 tier(text-based canonical)
35
+ * 2. 本 const 程式化 SSOT(type-safe Record<RowSize, number>)
36
+ * 3. Hook `check_icon_size_literal.sh`(write-time regex 攔非標準 literal)
37
+ * 4. Audit Dim「Icon size literal compliance」DS-wide audit-time scan
38
+ *
39
+ * ── Carve-out(不適用本 SSOT)──
40
+ * - `rating.spec.md` Rating star 20/24/24(identity scale,cite Ant/Material/Airbnb)
41
+ * - `avatar.spec.md` Avatar 內 icon `round_even(size × 0.6)`(Material/Apple HIG)
42
+ * - `empty.tsx` Empty 用 Avatar 48 wrap → icon 28(Avatar formula derived)
43
+ * - `file-viewer.tsx` thumb 64 → icon 20(thumbnail file-type indicator,hardcode 無公式)
44
+ * - `circular-progress.tsx` `strokeWidth = max(2, size/10)`(stroke ring 厚度公式,非 icon)
45
+ * - `steps.tsx` INDICATOR_ICON_SIZE `{sm:0, md:16, lg:20}`(部分對齊 tier,sm 因圓圈 8px 太小)
46
+ * - `slider.tsx` thumb 固定不隨 size 變(視覺 single tier)
47
+ * - `checkbox.tsx` + `switch.tsx` check `{sm:12, md:12, lg:16}`(form-control internal,stroke 下限)
48
+ *
49
+ * 詳 uiSize.spec.md「跨 regime pointer index」段。
50
+ */
51
+ export { ICON_SIZE } from '../../patterns/element-anatomy/item-anatomy';
52
+ export type { RowSize } from '../../patterns/element-anatomy/item-anatomy';
53
+ //# sourceMappingURL=icon-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-size.d.ts","sourceRoot":"","sources":["../../../src/tokens/uiSize/icon-size.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,uDAAuD,CAAA;AACjF,YAAY,EAAE,OAAO,EAAE,MAAM,uDAAuD,CAAA"}
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@qijenchen/design-system",
3
+ "version": "0.1.0-beta.10",
4
+ "private": false,
5
+ "description": "World-class design system — components, patterns, tokens, hooks (single source of truth for team distribution).",
6
+ "type": "module",
7
+ "license": "UNLICENSED",
8
+ "files": [
9
+ "dist",
10
+ "src/**/*.{tsx,ts,css}",
11
+ "!src/**/*.stories.tsx",
12
+ "!src/**/*.anatomy.stories.tsx",
13
+ "!src/**/*.principles.stories.tsx",
14
+ "!src/**/*.spec.md",
15
+ "!src/**/*.spec.ts",
16
+ "!src/**/*.test.ts",
17
+ "README.md",
18
+ "scripts"
19
+ ],
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js"
24
+ },
25
+ "./tokens/*": "./src/tokens/*",
26
+ "./hooks/*": {
27
+ "types": "./dist/hooks/*.d.ts",
28
+ "import": "./dist/hooks/*.js"
29
+ },
30
+ "./styles/tokens.css": "./src/styles/tokens.css",
31
+ "./styles/tokens": "./src/styles/tokens.css",
32
+ "./styles/preset.css": "./src/styles/preset.css",
33
+ "./styles/preset": "./src/styles/preset.css",
34
+ "./package.json": "./package.json"
35
+ },
36
+ "main": "./dist/index.js",
37
+ "module": "./dist/index.js",
38
+ "types": "./dist/index.d.ts",
39
+ "sideEffects": [
40
+ "**/*.css"
41
+ ],
42
+ "scripts": {
43
+ "build": "vite build",
44
+ "build:dts": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",
45
+ "typecheck": "tsc -p tsconfig.json --noEmit"
46
+ },
47
+ "dependencies": {
48
+ "@dnd-kit/core": "^6.3.1",
49
+ "@dnd-kit/sortable": "^10.0.0",
50
+ "@dnd-kit/utilities": "^3.2.2",
51
+ "@radix-ui/react-accordion": "^1.2.12",
52
+ "@radix-ui/react-aspect-ratio": "^1.1.8",
53
+ "@radix-ui/react-checkbox": "^1.3.3",
54
+ "@radix-ui/react-collapsible": "^1.1.12",
55
+ "@radix-ui/react-dialog": "^1.1.15",
56
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
57
+ "@radix-ui/react-hover-card": "^1.1.15",
58
+ "@radix-ui/react-popover": "^1.1.15",
59
+ "@radix-ui/react-progress": "^1.1.8",
60
+ "@radix-ui/react-radio-group": "^1.3.8",
61
+ "@radix-ui/react-scroll-area": "^1.2.10",
62
+ "@radix-ui/react-separator": "^1.1.8",
63
+ "@radix-ui/react-slider": "^1.3.6",
64
+ "@radix-ui/react-slot": "^1.2.4",
65
+ "@radix-ui/react-switch": "^1.2.6",
66
+ "@radix-ui/react-tabs": "^1.1.13",
67
+ "@radix-ui/react-toggle": "^1.1.10",
68
+ "@radix-ui/react-toggle-group": "^1.1.11",
69
+ "@radix-ui/react-tooltip": "^1.2.8",
70
+ "@tanstack/react-table": "^8.21.3",
71
+ "@tanstack/react-virtual": "^3.13.23",
72
+ "class-variance-authority": "^0.7.1",
73
+ "clsx": "^2.1.1",
74
+ "cmdk": "^1.1.1",
75
+ "date-fns": "^4.1.0",
76
+ "embla-carousel-react": "^8.6.0",
77
+ "lucide-react": "^0.577.0",
78
+ "react-day-picker": "^9.14.0",
79
+ "react-zoom-pan-pinch": "^4.0.3",
80
+ "recharts": "^3.8.1",
81
+ "sonner": "^2.0.7",
82
+ "tailwind-merge": "^3.5.0"
83
+ },
84
+ "peerDependencies": {
85
+ "react": ">=18.0.0",
86
+ "react-dom": ">=18.0.0",
87
+ "tailwindcss": ">=4.0.0"
88
+ },
89
+ "devDependencies": {
90
+ "tsc-alias": "^1.8.17"
91
+ }
92
+ }
package/src/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # Design System Home
2
+
3
+ 本資料夾是 design system 的原始碼 + 設計規格 SSOT。
4
+
5
+ ## 子資料夾 charter(建立新檔案前必讀對應子 dir 的 README)
6
+
7
+ | 子 dir | 收什麼 | 不收什麼 | Charter |
8
+ |--------|-------|---------|---------|
9
+ | `tokens/` | CSS 變數定義 + token spec + token stories | 元件 code、文件撰寫指南 | `tokens/README.md` |
10
+ | `components/` | 每個元件一個 PascalCase folder(內含 tsx / spec / stories) | 平坦 `.md` 檔、cross-cutting rule | `components/README.md` |
11
+ | `patterns/` | runtime UI 佈局 / 互動 primitive(.tsx + .spec.md),多元件 consume | 文件撰寫指南、governance meta rule、taxonomy | `patterns/README.md` |
12
+ | `hooks/` | React hooks(跨 DS 元件共用的 `use-*.ts`) | Claude Code hooks(那屬 `.claude/hooks/`) | N/A |
13
+ | `stories-helpers/` | Storybook 共用 helper(非 runtime,僅 `.stories.tsx` / `.anatomy.stories.tsx` 消費的 anatomy 排版 util 等) | 任何 runtime consume(應用 / 元件 / pattern code 不得 import);runtime primitive 應住 `patterns/` | N/A |
14
+
15
+ ## 本層級(`packages/design-system/src/` 根)只收 `README.md`
16
+
17
+ 所有 DS 內容必屬於某個子 dir(tokens / components / patterns / hooks / stories-helpers)。即使跨 pattern 的 taxonomy(如 4-Family Model)也住在最相關的 pattern topic 資料夾內(`patterns/element-anatomy/element-anatomy.spec.md`)—— 這樣 folder = topic home,不需要頂層 flat 檔案。
18
+
19
+ 若未來真有 scope 橫跨 3+ 子 dir 且不屬任一 topic 的純 meta doc,才重新評估是否加頂層檔(屆時更新本 charter)。
20
+
21
+ ## 不屬於本資料夾的 DS 相關內容
22
+
23
+ | 內容類型 | 實際位置 |
24
+ |---------|---------|
25
+ | AI 工作流 / workflow guide(寫 story / 做 prototype / audit) | `.claude/skills/<skill>/` |
26
+ | AI 每 session 需要的 signal rule | `CLAUDE.md` |
27
+ | AI session 狀態(audit progress / tech debt) | `~/.claude/projects/.../memory/` |
28
+ | Tool-level 機械檢查 | `.claude/hooks/` |
29
+
30
+ ## 建立新檔案決策
31
+
32
+ 不確定檔案放這裡還是別處 → **先 Read 該目標 dir 的 README.md 再 Write**。這是 CLAUDE.md 的硬規則。
@@ -0,0 +1,104 @@
1
+ import * as React from 'react'
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion'
3
+ import { ChevronDown } from 'lucide-react'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ /**
7
+ * Accordion — Radix Accordion + 本 DS token
8
+ *
9
+ * 結構對齊 shadcn/ui accordion(Accordion / AccordionItem / AccordionTrigger /
10
+ * AccordionContent),但視覺全改本 DS token。
11
+ *
12
+ * ── 視覺差異 vs shadcn 預設 ──
13
+ * Shadcn 預設 hover 加底線(web 早期 link style),本 DS 改為文字色 tint
14
+ * (`hover:text-fg-secondary`)——維持現代 SaaS 質感(Notion / Linear / Stripe 皆不用
15
+ * 底線),但保留 hover 顏色變化作為可點擊提示(user 決策 2026-04-20)。
16
+ * Chevron 用 Lucide + 本 DS icon size(16px),rotate 動畫 200ms。
17
+ *
18
+ * ── 使用情境 ──
19
+ * FAQ / settings section 收合 / 多區塊表單分組 / 進階選項可隱藏。
20
+ * 不用於「單純顯示 / 隱藏單一區塊」(那是 Collapsible,本 DS 尚未建立;用 details 或
21
+ * 自組 toggle),Accordion 是「多個 item 可互斥或獨立收合」的 pattern。
22
+ */
23
+
24
+ const Accordion = AccordionPrimitive.Root
25
+
26
+ const AccordionItem = React.forwardRef<
27
+ React.ElementRef<typeof AccordionPrimitive.Item>,
28
+ React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
29
+ >(({ className, ...props }, ref) => (
30
+ <AccordionPrimitive.Item
31
+ ref={ref}
32
+ className={cn('border-b border-divider', className)}
33
+ {...props}
34
+ />
35
+ ))
36
+ AccordionItem.displayName = 'AccordionItem'
37
+
38
+ const AccordionTrigger = React.forwardRef<
39
+ React.ElementRef<typeof AccordionPrimitive.Trigger>,
40
+ React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>
41
+ >(({ className, children, ...props }, ref) => (
42
+ <AccordionPrimitive.Header className="flex">
43
+ <AccordionPrimitive.Trigger
44
+ ref={ref}
45
+ className={cn(
46
+ 'flex flex-1 items-center justify-between gap-2',
47
+ 'py-4 text-body font-medium text-foreground text-left',
48
+ 'transition-colors hover:text-fg-secondary',
49
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
50
+ // AccordionTrigger 單一 text-style 列 → semantic `text-fg-disabled`(非 opacity);Button canonical 對齊
51
+ 'disabled:text-fg-disabled disabled:pointer-events-none',
52
+ "[&[data-state=open]>svg]:rotate-180",
53
+ className,
54
+ )}
55
+ {...props}
56
+ >
57
+ {children}
58
+ <ChevronDown
59
+ size={16}
60
+ className="shrink-0 text-fg-muted transition-transform duration-200"
61
+ aria-hidden
62
+ />
63
+ </AccordionPrimitive.Trigger>
64
+ </AccordionPrimitive.Header>
65
+ ))
66
+ AccordionTrigger.displayName = 'AccordionTrigger'
67
+
68
+ const AccordionContent = React.forwardRef<
69
+ React.ElementRef<typeof AccordionPrimitive.Content>,
70
+ React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
71
+ >(({ className, children, ...props }, ref) => (
72
+ <AccordionPrimitive.Content
73
+ ref={ref}
74
+ className={cn(
75
+ 'overflow-hidden text-body text-fg-secondary',
76
+ 'data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down',
77
+ )}
78
+ {...props}
79
+ >
80
+ <div className={cn('pb-4', className)}>{children}</div>
81
+ </AccordionPrimitive.Content>
82
+ ))
83
+ AccordionContent.displayName = 'AccordionContent'
84
+
85
+ // Story auto-compile metadata — Phase 1 mechanical migration(2026-04-24)
86
+ // Phase 2 fill needed: purpose descriptions + when rationale + world-class refs
87
+ export const accordionMeta = {
88
+ component: 'Accordion',
89
+ family: null, // non-family composite / overlay / layout
90
+ variants: {
91
+
92
+ },
93
+ sizes: {
94
+
95
+ },
96
+ states: ['default', 'hover', 'active', 'focus-visible', 'disabled'],
97
+ tokens: {
98
+ bg: [],
99
+ fg: ['text-fg-disabled', 'text-fg-muted', 'text-fg-secondary', 'text-foreground'],
100
+ ring: ['ring-ring'],
101
+ },
102
+ } as const
103
+
104
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
@@ -0,0 +1,188 @@
1
+ // @benchmark-unverified-blanket: file-level retraction per M22 (d) — claims herein not individually URL-cited; treat as unverified visual/usage rumor unless retrofit per-claim. Hook escape preserved.
2
+ import * as React from 'react'
3
+ import { cva, type VariantProps } from 'class-variance-authority'
4
+ import { cn } from '@/lib/utils'
5
+ import { Notice, useInverseTheme, SUBTLE_ICON_COLOR, type NoticeVariant } from '@/design-system/components/Notice/notice'
6
+
7
+ /**
8
+ * Alert — inline / fixed 通知
9
+ *
10
+ * ── data-theme 必須搭配 text-foreground ──
11
+ * CSS color 從 body 繼承已解析值,data-theme 只改 --foreground 不改 color。
12
+ * 在 theme boundary 設 text-foreground 強制 re-resolve。
13
+ *
14
+ * ── Appearance ──
15
+ * subtle: 淺底色 + 四邊 1px border(色相 hover 色)。不設 data-theme,跟隨頁面。
16
+ * solid: 跟 Toast 對齊:
17
+ * neutral → data-theme={inverse} + bg-surface-raised(同層翻轉)
18
+ * info/success/error → bg on outer, data-theme="dark" on inner
19
+ * warning → bg on outer, data-theme="light" on inner
20
+ *
21
+ * ── Placement ──
22
+ * inline: rounded-md(card-level 圓角,非 overlay — 因 Alert 在頁面流內,非 floating)
23
+ * fixed: 無圓角,full-width,無 border
24
+ */
25
+
26
+ const SUBTLE_CONTAINER: Record<NoticeVariant, string> = {
27
+ neutral: 'bg-muted border border-border',
28
+ info: 'bg-info-subtle border border-[var(--info-hover)]',
29
+ success: 'bg-success-subtle border border-[var(--success-hover)]',
30
+ warning: 'bg-warning-subtle border border-[var(--warning-hover)]',
31
+ error: 'bg-error-subtle border border-[var(--error-hover)]',
32
+ }
33
+
34
+ const SOLID_HUE_BG: Record<string, string> = {
35
+ info: 'bg-info',
36
+ success: 'bg-success',
37
+ warning: 'bg-warning',
38
+ error: 'bg-error',
39
+ }
40
+
41
+ const SOLID_HUE_THEME: Record<string, string> = {
42
+ info: 'dark',
43
+ success: 'dark',
44
+ warning: 'light',
45
+ error: 'dark',
46
+ }
47
+
48
+ const alertVariants = cva('w-full overflow-hidden', {
49
+ variants: {
50
+ placement: {
51
+ inline: 'rounded-md',
52
+ fixed: 'rounded-none border-none',
53
+ },
54
+ },
55
+ defaultVariants: { placement: 'inline' },
56
+ })
57
+
58
+ export interface AlertProps
59
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,
60
+ VariantProps<typeof alertVariants> {
61
+ variant?: NoticeVariant
62
+ appearance?: 'subtle' | 'solid'
63
+ title: React.ReactNode
64
+ description?: React.ReactNode
65
+ endContent?: React.ReactNode
66
+ dismissible?: boolean
67
+ onDismiss?: () => void
68
+ }
69
+
70
+ // code-quality-allow: long-function — foundational composite main body — 拆 sub-fn 會複雜化 local state / ref / context binding
71
+ const Alert = React.forwardRef<HTMLDivElement, AlertProps>(
72
+ (
73
+ {
74
+ variant = 'neutral',
75
+ appearance = 'subtle',
76
+ placement,
77
+ title,
78
+ description,
79
+ endContent,
80
+ dismissible = true,
81
+ onDismiss,
82
+ className,
83
+ ...props
84
+ },
85
+ ref,
86
+ ) => {
87
+ const inverseTheme = useInverseTheme()
88
+ const isSolid = appearance === 'solid'
89
+ const iconClassName = !isSolid ? SUBTLE_ICON_COLOR[variant] : undefined
90
+
91
+ // ── Live region 由 wrapping consumer 擁有(WAI-ARIA + Atlassian / Polaris / Material 共識) ──
92
+ // Alert 是 outer host —— 自己擁有 role + aria-live;Notice(inner layout)不再帶 role,
93
+ // 避免 nested live region 造成 screen reader 重複朗讀。
94
+ // - error / warning → role="alert" + aria-live="assertive"(中斷,使用者必須立刻知道)
95
+ // - info / success / neutral → role="status" + aria-live="polite"(空閒朗讀,不打斷)
96
+ const isCritical = variant === 'error' || variant === 'warning'
97
+ const liveRole = isCritical ? 'alert' : 'status'
98
+ const liveLevel = isCritical ? 'assertive' : 'polite'
99
+
100
+ // placement="fixed" 用 loose px(density-aware)讓 Alert 嵌在更大佈局內時跟周圍
101
+ // loose-padding 元素(Toolbar / BulkActionBar / DataTable 等)左右對齊。
102
+ // py 維持 py-3 fixed(notification banner family canonical,垂直不隨 density)。
103
+ const noticeEl = (
104
+ <Notice
105
+ variant={variant}
106
+ title={title}
107
+ description={description}
108
+ endContent={endContent}
109
+ dismissible={dismissible}
110
+ onDismiss={onDismiss}
111
+ iconClassName={iconClassName}
112
+ className={placement === 'fixed' ? 'px-[var(--layout-space-loose)]' : undefined}
113
+ />
114
+ )
115
+
116
+ // ── Subtle ──
117
+ if (!isSolid) {
118
+ return (
119
+ <div
120
+ ref={ref}
121
+ role={liveRole}
122
+ aria-live={liveLevel}
123
+ className={cn(alertVariants({ placement }), SUBTLE_CONTAINER[variant], className)}
124
+ {...props}
125
+ >
126
+ {noticeEl}
127
+ </div>
128
+ )
129
+ }
130
+
131
+ // ── Solid neutral (inverse: bg + theme 同層) ──
132
+ if (variant === 'neutral') {
133
+ return (
134
+ <div
135
+ ref={ref}
136
+ role={liveRole}
137
+ aria-live={liveLevel}
138
+ data-theme={inverseTheme}
139
+ className={cn(alertVariants({ placement }), 'bg-surface-raised text-foreground', className)}
140
+ {...props}
141
+ >
142
+ {noticeEl}
143
+ </div>
144
+ )
145
+ }
146
+
147
+ // ── Solid 有色相: bg outer + data-theme inner ──
148
+ return (
149
+ <div
150
+ ref={ref}
151
+ role={liveRole}
152
+ aria-live={liveLevel}
153
+ className={cn(alertVariants({ placement }), SOLID_HUE_BG[variant], className)}
154
+ {...props}
155
+ >
156
+ <div data-theme={SOLID_HUE_THEME[variant]} className="text-foreground">
157
+ {noticeEl}
158
+ </div>
159
+ </div>
160
+ )
161
+ },
162
+ )
163
+ Alert.displayName = 'Alert'
164
+
165
+ // Story auto-compile metadata — Phase 2 fill(2026-05-15)
166
+ // Variants = NoticeVariant 5 hues(prop name `variant`,cva 內僅 placement,色相由 SUBTLE_CONTAINER / SOLID_HUE_BG map 控)
167
+ // Sizes = none(Alert 視覺尺寸繼承 Notice primitive,不隨 size 變;見 spec「為何無 SizeMatrix」)
168
+ export const alertMeta = {
169
+ component: 'Alert',
170
+ family: null, // non-family composite / overlay / layout
171
+ variants: {
172
+ neutral: { purpose: '中性提示(系統公告、非緊急說明);無情緒色' },
173
+ info: { purpose: '資訊性提示(版本更新、流程說明);藍色 hue' },
174
+ success: { purpose: '成功狀態的持久性宣告(綁定生效、付款完成需保留確認)' },
175
+ warning: { purpose: '警告但非阻斷(方案到期、需更新付款方式);最高頻' },
176
+ error: { purpose: '錯誤但非阻斷(系統錯誤可重試、API 失敗摘要);aria-live=assertive' },
177
+ },
178
+ sizes: {},
179
+ states: ['default', 'hover', 'active', 'focus-visible', 'disabled'],
180
+ tokens: {
181
+ bg: ['bg-error', 'bg-error-subtle', 'bg-info', 'bg-info-subtle', 'bg-muted', 'bg-success', 'bg-success-subtle', 'bg-surface-raised', 'bg-warning', 'bg-warning-subtle'],
182
+ fg: ['text-foreground'],
183
+ ring: [],
184
+ },
185
+ defaultVariant: 'neutral',
186
+ } as const
187
+
188
+ export { Alert, alertVariants }