@duskmoon-dev/components 0.1.2

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 (482) hide show
  1. package/README.md +38 -0
  2. package/dist/chunk-r9wkv7xd.js +29 -0
  3. package/dist/classes/affix.d.ts +6 -0
  4. package/dist/classes/alert.d.ts +9 -0
  5. package/dist/classes/anchor.d.ts +19 -0
  6. package/dist/classes/app.d.ts +9 -0
  7. package/dist/classes/auto-complete.d.ts +34 -0
  8. package/dist/classes/avatar.d.ts +9 -0
  9. package/dist/classes/back-top.d.ts +6 -0
  10. package/dist/classes/badge.d.ts +11 -0
  11. package/dist/classes/breadcrumb.d.ts +23 -0
  12. package/dist/classes/button.d.ts +17 -0
  13. package/dist/classes/calendar.d.ts +25 -0
  14. package/dist/classes/card.d.ts +9 -0
  15. package/dist/classes/carousel.d.ts +25 -0
  16. package/dist/classes/cascader.d.ts +42 -0
  17. package/dist/classes/checkbox.d.ts +23 -0
  18. package/dist/classes/col.d.ts +4 -0
  19. package/dist/classes/collapse.d.ts +23 -0
  20. package/dist/classes/color-picker.d.ts +21 -0
  21. package/dist/classes/config-provider.d.ts +7 -0
  22. package/dist/classes/date-picker.d.ts +27 -0
  23. package/dist/classes/descriptions.d.ts +18 -0
  24. package/dist/classes/divider.d.ts +15 -0
  25. package/dist/classes/dm-auxiliary.d.ts +11 -0
  26. package/dist/classes/dm-breadcrumb.d.ts +9 -0
  27. package/dist/classes/dm-date-picker.d.ts +4 -0
  28. package/dist/classes/dm-drawer.d.ts +9 -0
  29. package/dist/classes/dm-infinite-scroll.d.ts +9 -0
  30. package/dist/classes/dm-layout.d.ts +11 -0
  31. package/dist/classes/dm-menu.d.ts +13 -0
  32. package/dist/classes/dm-message.d.ts +6 -0
  33. package/dist/classes/dm-page-header.d.ts +15 -0
  34. package/dist/classes/dm-pagination.d.ts +17 -0
  35. package/dist/classes/dm-pro-table-inner.d.ts +1 -0
  36. package/dist/classes/dm-pro-table.d.ts +8 -0
  37. package/dist/classes/dm-provider.d.ts +4 -0
  38. package/dist/classes/dm-query.d.ts +1 -0
  39. package/dist/classes/dm-search.d.ts +12 -0
  40. package/dist/classes/dm-splitter.d.ts +11 -0
  41. package/dist/classes/dm-status.d.ts +10 -0
  42. package/dist/classes/dm-table.d.ts +13 -0
  43. package/dist/classes/dm-tabs.d.ts +17 -0
  44. package/dist/classes/dm-toolbar.d.ts +12 -0
  45. package/dist/classes/dm-tree.d.ts +27 -0
  46. package/dist/classes/dm-truncate.d.ts +14 -0
  47. package/dist/classes/drawer.d.ts +16 -0
  48. package/dist/classes/dropdown.d.ts +14 -0
  49. package/dist/classes/empty.d.ts +7 -0
  50. package/dist/classes/flex.d.ts +8 -0
  51. package/dist/classes/float-button.d.ts +27 -0
  52. package/dist/classes/form.d.ts +20 -0
  53. package/dist/classes/grid.d.ts +9 -0
  54. package/dist/classes/image.d.ts +16 -0
  55. package/dist/classes/index.d.ts +93 -0
  56. package/dist/classes/index.js +3556 -0
  57. package/dist/classes/input-number.d.ts +14 -0
  58. package/dist/classes/input.d.ts +51 -0
  59. package/dist/classes/layout.d.ts +16 -0
  60. package/dist/classes/list.d.ts +22 -0
  61. package/dist/classes/mentions.d.ts +27 -0
  62. package/dist/classes/menu.d.ts +33 -0
  63. package/dist/classes/message.d.ts +16 -0
  64. package/dist/classes/modal.d.ts +17 -0
  65. package/dist/classes/notification.d.ts +22 -0
  66. package/dist/classes/pagination.d.ts +23 -0
  67. package/dist/classes/popconfirm.d.ts +19 -0
  68. package/dist/classes/popover.d.ts +13 -0
  69. package/dist/classes/progress.d.ts +11 -0
  70. package/dist/classes/qr-code.d.ts +19 -0
  71. package/dist/classes/radio.d.ts +23 -0
  72. package/dist/classes/rate.d.ts +23 -0
  73. package/dist/classes/result.d.ts +15 -0
  74. package/dist/classes/row.d.ts +11 -0
  75. package/dist/classes/segmented.d.ts +19 -0
  76. package/dist/classes/select.d.ts +39 -0
  77. package/dist/classes/skeleton.d.ts +16 -0
  78. package/dist/classes/slider.d.ts +30 -0
  79. package/dist/classes/space.d.ts +18 -0
  80. package/dist/classes/spin.d.ts +16 -0
  81. package/dist/classes/splitter.d.ts +19 -0
  82. package/dist/classes/statistic.d.ts +9 -0
  83. package/dist/classes/steps.d.ts +36 -0
  84. package/dist/classes/switch.d.ts +16 -0
  85. package/dist/classes/table.d.ts +36 -0
  86. package/dist/classes/tabs.d.ts +42 -0
  87. package/dist/classes/tag.d.ts +20 -0
  88. package/dist/classes/time-picker.d.ts +24 -0
  89. package/dist/classes/timeline.d.ts +20 -0
  90. package/dist/classes/tooltip.d.ts +15 -0
  91. package/dist/classes/tour.d.ts +34 -0
  92. package/dist/classes/transfer.d.ts +30 -0
  93. package/dist/classes/tree-select.d.ts +39 -0
  94. package/dist/classes/tree.d.ts +34 -0
  95. package/dist/classes/typography.d.ts +48 -0
  96. package/dist/classes/upload.d.ts +31 -0
  97. package/dist/classes/watermark.d.ts +5 -0
  98. package/dist/components/affix/Affix.d.ts +3 -0
  99. package/dist/components/affix/Affix.types.d.ts +8 -0
  100. package/dist/components/affix/index.d.ts +2 -0
  101. package/dist/components/affix/index.js +103 -0
  102. package/dist/components/alert/Alert.d.ts +3 -0
  103. package/dist/components/alert/Alert.types.d.ts +7 -0
  104. package/dist/components/alert/index.d.ts +2 -0
  105. package/dist/components/alert/index.js +65 -0
  106. package/dist/components/anchor/Anchor.d.ts +4 -0
  107. package/dist/components/anchor/Anchor.types.d.ts +34 -0
  108. package/dist/components/anchor/index.d.ts +2 -0
  109. package/dist/components/anchor/index.js +240 -0
  110. package/dist/components/app/App.d.ts +5 -0
  111. package/dist/components/app/App.types.d.ts +27 -0
  112. package/dist/components/app/index.d.ts +2 -0
  113. package/dist/components/app/index.js +890 -0
  114. package/dist/components/auto-complete/AutoComplete.d.ts +2 -0
  115. package/dist/components/auto-complete/AutoComplete.types.d.ts +34 -0
  116. package/dist/components/auto-complete/index.d.ts +2 -0
  117. package/dist/components/auto-complete/index.js +339 -0
  118. package/dist/components/avatar/Avatar.d.ts +3 -0
  119. package/dist/components/avatar/Avatar.types.d.ts +10 -0
  120. package/dist/components/avatar/index.d.ts +2 -0
  121. package/dist/components/avatar/index.js +81 -0
  122. package/dist/components/back-top/BackTop.d.ts +3 -0
  123. package/dist/components/back-top/BackTop.types.d.ts +6 -0
  124. package/dist/components/back-top/index.d.ts +2 -0
  125. package/dist/components/back-top/index.js +108 -0
  126. package/dist/components/badge/Badge.d.ts +3 -0
  127. package/dist/components/badge/Badge.types.d.ts +9 -0
  128. package/dist/components/badge/index.d.ts +2 -0
  129. package/dist/components/badge/index.js +84 -0
  130. package/dist/components/breadcrumb/Breadcrumb.d.ts +2 -0
  131. package/dist/components/breadcrumb/Breadcrumb.types.d.ts +53 -0
  132. package/dist/components/breadcrumb/index.d.ts +2 -0
  133. package/dist/components/breadcrumb/index.js +313 -0
  134. package/dist/components/button/Button.d.ts +3 -0
  135. package/dist/components/button/Button.types.d.ts +15 -0
  136. package/dist/components/button/index.d.ts +2 -0
  137. package/dist/components/button/index.js +125 -0
  138. package/dist/components/calendar/Calendar.d.ts +2 -0
  139. package/dist/components/calendar/Calendar.types.d.ts +39 -0
  140. package/dist/components/calendar/index.d.ts +2 -0
  141. package/dist/components/calendar/index.js +352 -0
  142. package/dist/components/card/Card.d.ts +3 -0
  143. package/dist/components/card/Card.types.d.ts +7 -0
  144. package/dist/components/card/index.d.ts +2 -0
  145. package/dist/components/card/index.js +73 -0
  146. package/dist/components/carousel/Carousel.d.ts +2 -0
  147. package/dist/components/carousel/Carousel.types.d.ts +26 -0
  148. package/dist/components/carousel/index.d.ts +2 -0
  149. package/dist/components/carousel/index.js +193 -0
  150. package/dist/components/cascader/Cascader.d.ts +2 -0
  151. package/dist/components/cascader/Cascader.types.d.ts +63 -0
  152. package/dist/components/cascader/index.d.ts +2 -0
  153. package/dist/components/cascader/index.js +509 -0
  154. package/dist/components/checkbox/Checkbox.d.ts +3 -0
  155. package/dist/components/checkbox/Checkbox.types.d.ts +15 -0
  156. package/dist/components/checkbox/index.d.ts +2 -0
  157. package/dist/components/checkbox/index.js +134 -0
  158. package/dist/components/col/Col.d.ts +3 -0
  159. package/dist/components/col/Col.types.d.ts +24 -0
  160. package/dist/components/col/index.d.ts +2 -0
  161. package/dist/components/col/index.js +100 -0
  162. package/dist/components/collapse/Collapse.d.ts +3 -0
  163. package/dist/components/collapse/Collapse.types.d.ts +21 -0
  164. package/dist/components/collapse/index.d.ts +2 -0
  165. package/dist/components/collapse/index.js +148 -0
  166. package/dist/components/color-picker/ColorPicker.d.ts +2 -0
  167. package/dist/components/color-picker/ColorPicker.types.d.ts +39 -0
  168. package/dist/components/color-picker/index.d.ts +2 -0
  169. package/dist/components/color-picker/index.js +282 -0
  170. package/dist/components/config-provider/ConfigProvider.d.ts +4 -0
  171. package/dist/components/config-provider/ConfigProvider.types.d.ts +39 -0
  172. package/dist/components/config-provider/index.d.ts +2 -0
  173. package/dist/components/config-provider/index.js +127 -0
  174. package/dist/components/date-picker/DatePicker.d.ts +2 -0
  175. package/dist/components/date-picker/DatePicker.types.d.ts +46 -0
  176. package/dist/components/date-picker/index.d.ts +2 -0
  177. package/dist/components/date-picker/index.js +319 -0
  178. package/dist/components/descriptions/Descriptions.d.ts +2 -0
  179. package/dist/components/descriptions/Descriptions.types.d.ts +39 -0
  180. package/dist/components/descriptions/index.d.ts +2 -0
  181. package/dist/components/descriptions/index.js +196 -0
  182. package/dist/components/divider/Divider.d.ts +3 -0
  183. package/dist/components/divider/Divider.types.d.ts +14 -0
  184. package/dist/components/divider/index.d.ts +2 -0
  185. package/dist/components/divider/index.js +108 -0
  186. package/dist/components/dm-auxiliary/DmAuxiliary.d.ts +4 -0
  187. package/dist/components/dm-auxiliary/DmAuxiliary.types.d.ts +15 -0
  188. package/dist/components/dm-auxiliary/index.d.ts +2 -0
  189. package/dist/components/dm-auxiliary/index.js +127 -0
  190. package/dist/components/dm-breadcrumb/DmBreadcrumb.d.ts +3 -0
  191. package/dist/components/dm-breadcrumb/DmBreadcrumb.types.d.ts +25 -0
  192. package/dist/components/dm-breadcrumb/index.d.ts +2 -0
  193. package/dist/components/dm-breadcrumb/index.js +460 -0
  194. package/dist/components/dm-date-picker/DmDatePicker.d.ts +4 -0
  195. package/dist/components/dm-date-picker/DmDatePicker.types.d.ts +11 -0
  196. package/dist/components/dm-date-picker/index.d.ts +2 -0
  197. package/dist/components/dm-date-picker/index.js +460 -0
  198. package/dist/components/dm-drawer/DmDrawer.d.ts +3 -0
  199. package/dist/components/dm-drawer/DmDrawer.types.d.ts +16 -0
  200. package/dist/components/dm-drawer/index.d.ts +2 -0
  201. package/dist/components/dm-drawer/index.js +309 -0
  202. package/dist/components/dm-infinite-scroll/DmInfiniteScroll.d.ts +3 -0
  203. package/dist/components/dm-infinite-scroll/DmInfiniteScroll.types.d.ts +18 -0
  204. package/dist/components/dm-infinite-scroll/index.d.ts +2 -0
  205. package/dist/components/dm-infinite-scroll/index.js +153 -0
  206. package/dist/components/dm-layout/DmLayout.d.ts +4 -0
  207. package/dist/components/dm-layout/DmLayout.types.d.ts +31 -0
  208. package/dist/components/dm-layout/index.d.ts +2 -0
  209. package/dist/components/dm-layout/index.js +1186 -0
  210. package/dist/components/dm-menu/DmMenu.d.ts +5 -0
  211. package/dist/components/dm-menu/DmMenu.types.d.ts +44 -0
  212. package/dist/components/dm-menu/index.d.ts +2 -0
  213. package/dist/components/dm-menu/index.js +444 -0
  214. package/dist/components/dm-message/DmMessage.d.ts +16 -0
  215. package/dist/components/dm-message/DmMessage.types.d.ts +24 -0
  216. package/dist/components/dm-message/index.d.ts +2 -0
  217. package/dist/components/dm-message/index.js +280 -0
  218. package/dist/components/dm-page-header/DmPageHeader.d.ts +6 -0
  219. package/dist/components/dm-page-header/DmPageHeader.types.d.ts +19 -0
  220. package/dist/components/dm-page-header/index.d.ts +2 -0
  221. package/dist/components/dm-page-header/index.js +925 -0
  222. package/dist/components/dm-pagination/DmPagination.d.ts +3 -0
  223. package/dist/components/dm-pagination/DmPagination.types.d.ts +22 -0
  224. package/dist/components/dm-pagination/index.d.ts +2 -0
  225. package/dist/components/dm-pagination/index.js +469 -0
  226. package/dist/components/dm-pro-table/DmProTable.d.ts +7 -0
  227. package/dist/components/dm-pro-table/DmProTable.types.d.ts +15 -0
  228. package/dist/components/dm-pro-table/index.d.ts +2 -0
  229. package/dist/components/dm-pro-table/index.js +3076 -0
  230. package/dist/components/dm-pro-table-inner/DmProTableInner.d.ts +7 -0
  231. package/dist/components/dm-pro-table-inner/DmProTableInner.types.d.ts +5 -0
  232. package/dist/components/dm-pro-table-inner/index.d.ts +2 -0
  233. package/dist/components/dm-pro-table-inner/index.js +2620 -0
  234. package/dist/components/dm-provider/DmProvider.d.ts +3 -0
  235. package/dist/components/dm-provider/DmProvider.types.d.ts +11 -0
  236. package/dist/components/dm-provider/index.d.ts +2 -0
  237. package/dist/components/dm-provider/index.js +255 -0
  238. package/dist/components/dm-query/DmQuery.d.ts +3 -0
  239. package/dist/components/dm-query/DmQuery.types.d.ts +20 -0
  240. package/dist/components/dm-query/index.d.ts +2 -0
  241. package/dist/components/dm-query/index.js +1319 -0
  242. package/dist/components/dm-search/DmSearch.d.ts +3 -0
  243. package/dist/components/dm-search/DmSearch.types.d.ts +38 -0
  244. package/dist/components/dm-search/index.d.ts +2 -0
  245. package/dist/components/dm-search/index.js +1264 -0
  246. package/dist/components/dm-splitter/DmSplitter.d.ts +3 -0
  247. package/dist/components/dm-splitter/DmSplitter.types.d.ts +32 -0
  248. package/dist/components/dm-splitter/index.d.ts +2 -0
  249. package/dist/components/dm-splitter/index.js +406 -0
  250. package/dist/components/dm-status/DmStatus.d.ts +4 -0
  251. package/dist/components/dm-status/DmStatus.types.d.ts +12 -0
  252. package/dist/components/dm-status/index.d.ts +2 -0
  253. package/dist/components/dm-status/index.js +369 -0
  254. package/dist/components/dm-table/DmTable.d.ts +8 -0
  255. package/dist/components/dm-table/DmTable.types.d.ts +28 -0
  256. package/dist/components/dm-table/index.d.ts +2 -0
  257. package/dist/components/dm-table/index.js +2607 -0
  258. package/dist/components/dm-tabs/DmTabs.d.ts +3 -0
  259. package/dist/components/dm-tabs/DmTabs.types.d.ts +10 -0
  260. package/dist/components/dm-tabs/index.d.ts +2 -0
  261. package/dist/components/dm-tabs/index.js +415 -0
  262. package/dist/components/dm-toolbar/DmToolbar.d.ts +6 -0
  263. package/dist/components/dm-toolbar/DmToolbar.types.d.ts +18 -0
  264. package/dist/components/dm-toolbar/index.d.ts +2 -0
  265. package/dist/components/dm-toolbar/index.js +520 -0
  266. package/dist/components/dm-tree/DmTree.d.ts +3 -0
  267. package/dist/components/dm-tree/DmTree.types.d.ts +70 -0
  268. package/dist/components/dm-tree/index.d.ts +2 -0
  269. package/dist/components/dm-tree/index.js +1852 -0
  270. package/dist/components/dm-truncate/DmTruncate.d.ts +3 -0
  271. package/dist/components/dm-truncate/DmTruncate.types.d.ts +17 -0
  272. package/dist/components/dm-truncate/index.d.ts +2 -0
  273. package/dist/components/dm-truncate/index.js +375 -0
  274. package/dist/components/drawer/Drawer.d.ts +3 -0
  275. package/dist/components/drawer/Drawer.types.d.ts +18 -0
  276. package/dist/components/drawer/index.d.ts +2 -0
  277. package/dist/components/drawer/index.js +132 -0
  278. package/dist/components/dropdown/Dropdown.d.ts +2 -0
  279. package/dist/components/dropdown/Dropdown.types.d.ts +44 -0
  280. package/dist/components/dropdown/index.d.ts +2 -0
  281. package/dist/components/dropdown/index.js +411 -0
  282. package/dist/components/empty/Empty.d.ts +2 -0
  283. package/dist/components/empty/Empty.types.d.ts +11 -0
  284. package/dist/components/empty/index.d.ts +2 -0
  285. package/dist/components/empty/index.js +116 -0
  286. package/dist/components/flex/Flex.d.ts +3 -0
  287. package/dist/components/flex/Flex.types.d.ts +13 -0
  288. package/dist/components/flex/index.d.ts +2 -0
  289. package/dist/components/flex/index.js +107 -0
  290. package/dist/components/float-button/FloatButton.d.ts +2 -0
  291. package/dist/components/float-button/FloatButton.types.d.ts +44 -0
  292. package/dist/components/float-button/index.d.ts +2 -0
  293. package/dist/components/float-button/index.js +308 -0
  294. package/dist/components/form/Form.d.ts +4 -0
  295. package/dist/components/form/Form.types.d.ts +107 -0
  296. package/dist/components/form/index.d.ts +2 -0
  297. package/dist/components/form/index.js +449 -0
  298. package/dist/components/grid/Grid.d.ts +8 -0
  299. package/dist/components/grid/Grid.types.d.ts +5 -0
  300. package/dist/components/grid/index.d.ts +2 -0
  301. package/dist/components/grid/index.js +104 -0
  302. package/dist/components/image/Image.d.ts +2 -0
  303. package/dist/components/image/Image.types.d.ts +25 -0
  304. package/dist/components/image/index.d.ts +2 -0
  305. package/dist/components/image/index.js +171 -0
  306. package/dist/components/input/Input.d.ts +8 -0
  307. package/dist/components/input/Input.types.d.ts +46 -0
  308. package/dist/components/input/index.d.ts +2 -0
  309. package/dist/components/input/index.js +352 -0
  310. package/dist/components/input-number/InputNumber.d.ts +3 -0
  311. package/dist/components/input-number/InputNumber.types.d.ts +23 -0
  312. package/dist/components/input-number/index.d.ts +2 -0
  313. package/dist/components/input-number/index.js +175 -0
  314. package/dist/components/layout/Layout.d.ts +2 -0
  315. package/dist/components/layout/Layout.types.d.ts +23 -0
  316. package/dist/components/layout/index.d.ts +2 -0
  317. package/dist/components/layout/index.js +142 -0
  318. package/dist/components/list/List.d.ts +2 -0
  319. package/dist/components/list/List.types.d.ts +27 -0
  320. package/dist/components/list/index.d.ts +2 -0
  321. package/dist/components/list/index.js +175 -0
  322. package/dist/components/mentions/Mentions.d.ts +2 -0
  323. package/dist/components/mentions/Mentions.types.d.ts +30 -0
  324. package/dist/components/mentions/index.d.ts +2 -0
  325. package/dist/components/mentions/index.js +321 -0
  326. package/dist/components/menu/Menu.d.ts +2 -0
  327. package/dist/components/menu/Menu.types.d.ts +58 -0
  328. package/dist/components/menu/index.d.ts +2 -0
  329. package/dist/components/menu/index.js +317 -0
  330. package/dist/components/message/Message.d.ts +6 -0
  331. package/dist/components/message/Message.types.d.ts +45 -0
  332. package/dist/components/message/index.d.ts +2 -0
  333. package/dist/components/message/index.js +205 -0
  334. package/dist/components/modal/Modal.d.ts +2 -0
  335. package/dist/components/modal/Modal.types.d.ts +43 -0
  336. package/dist/components/modal/index.d.ts +2 -0
  337. package/dist/components/modal/index.js +214 -0
  338. package/dist/components/notification/Notification.d.ts +4 -0
  339. package/dist/components/notification/Notification.types.d.ts +43 -0
  340. package/dist/components/notification/index.d.ts +2 -0
  341. package/dist/components/notification/index.js +420 -0
  342. package/dist/components/pagination/Pagination.d.ts +3 -0
  343. package/dist/components/pagination/Pagination.types.d.ts +17 -0
  344. package/dist/components/pagination/index.d.ts +2 -0
  345. package/dist/components/pagination/index.js +281 -0
  346. package/dist/components/popconfirm/Popconfirm.d.ts +3 -0
  347. package/dist/components/popconfirm/Popconfirm.types.d.ts +26 -0
  348. package/dist/components/popconfirm/index.d.ts +2 -0
  349. package/dist/components/popconfirm/index.js +364 -0
  350. package/dist/components/popover/Popover.d.ts +3 -0
  351. package/dist/components/popover/Popover.types.d.ts +15 -0
  352. package/dist/components/popover/index.d.ts +2 -0
  353. package/dist/components/popover/index.js +219 -0
  354. package/dist/components/progress/Progress.d.ts +3 -0
  355. package/dist/components/progress/Progress.types.d.ts +11 -0
  356. package/dist/components/progress/index.d.ts +2 -0
  357. package/dist/components/progress/index.js +106 -0
  358. package/dist/components/qr-code/QRCode.d.ts +3 -0
  359. package/dist/components/qr-code/QRCode.types.d.ts +17 -0
  360. package/dist/components/qr-code/index.d.ts +2 -0
  361. package/dist/components/qr-code/index.js +224 -0
  362. package/dist/components/radio/Radio.d.ts +3 -0
  363. package/dist/components/radio/Radio.types.d.ts +14 -0
  364. package/dist/components/radio/index.d.ts +2 -0
  365. package/dist/components/radio/index.js +118 -0
  366. package/dist/components/rate/Rate.d.ts +3 -0
  367. package/dist/components/rate/Rate.types.d.ts +23 -0
  368. package/dist/components/rate/index.d.ts +2 -0
  369. package/dist/components/rate/index.js +202 -0
  370. package/dist/components/result/Result.d.ts +3 -0
  371. package/dist/components/result/Result.types.d.ts +10 -0
  372. package/dist/components/result/index.d.ts +2 -0
  373. package/dist/components/result/index.js +205 -0
  374. package/dist/components/row/Row.d.ts +3 -0
  375. package/dist/components/row/Row.types.d.ts +11 -0
  376. package/dist/components/row/index.d.ts +2 -0
  377. package/dist/components/row/index.js +109 -0
  378. package/dist/components/segmented/Segmented.d.ts +3 -0
  379. package/dist/components/segmented/Segmented.types.d.ts +20 -0
  380. package/dist/components/segmented/index.d.ts +2 -0
  381. package/dist/components/segmented/index.js +130 -0
  382. package/dist/components/select/Select.d.ts +2 -0
  383. package/dist/components/select/Select.types.d.ts +47 -0
  384. package/dist/components/select/index.d.ts +2 -0
  385. package/dist/components/select/index.js +361 -0
  386. package/dist/components/skeleton/Skeleton.d.ts +15 -0
  387. package/dist/components/skeleton/Skeleton.types.d.ts +35 -0
  388. package/dist/components/skeleton/index.d.ts +2 -0
  389. package/dist/components/skeleton/index.js +238 -0
  390. package/dist/components/slider/Slider.d.ts +3 -0
  391. package/dist/components/slider/Slider.types.d.ts +38 -0
  392. package/dist/components/slider/index.d.ts +2 -0
  393. package/dist/components/slider/index.js +425 -0
  394. package/dist/components/space/Space.d.ts +2 -0
  395. package/dist/components/space/Space.types.d.ts +19 -0
  396. package/dist/components/space/index.d.ts +2 -0
  397. package/dist/components/space/index.js +144 -0
  398. package/dist/components/spin/Spin.d.ts +2 -0
  399. package/dist/components/spin/Spin.types.d.ts +15 -0
  400. package/dist/components/spin/index.d.ts +2 -0
  401. package/dist/components/spin/index.js +138 -0
  402. package/dist/components/splitter/Splitter.d.ts +2 -0
  403. package/dist/components/splitter/Splitter.types.d.ts +29 -0
  404. package/dist/components/splitter/index.d.ts +2 -0
  405. package/dist/components/splitter/index.js +227 -0
  406. package/dist/components/statistic/Statistic.d.ts +2 -0
  407. package/dist/components/statistic/Statistic.types.d.ts +22 -0
  408. package/dist/components/statistic/index.d.ts +2 -0
  409. package/dist/components/statistic/index.js +150 -0
  410. package/dist/components/steps/Steps.d.ts +4 -0
  411. package/dist/components/steps/Steps.types.d.ts +49 -0
  412. package/dist/components/steps/index.d.ts +2 -0
  413. package/dist/components/steps/index.js +311 -0
  414. package/dist/components/switch/Switch.d.ts +2 -0
  415. package/dist/components/switch/Switch.types.d.ts +16 -0
  416. package/dist/components/switch/index.d.ts +2 -0
  417. package/dist/components/switch/index.js +120 -0
  418. package/dist/components/table/Table.d.ts +2 -0
  419. package/dist/components/table/Table.types.d.ts +142 -0
  420. package/dist/components/table/index.d.ts +2 -0
  421. package/dist/components/table/index.js +721 -0
  422. package/dist/components/tabs/Tabs.d.ts +10 -0
  423. package/dist/components/tabs/Tabs.types.d.ts +48 -0
  424. package/dist/components/tabs/index.d.ts +2 -0
  425. package/dist/components/tabs/index.js +359 -0
  426. package/dist/components/tag/Tag.d.ts +5 -0
  427. package/dist/components/tag/Tag.types.d.ts +20 -0
  428. package/dist/components/tag/index.d.ts +2 -0
  429. package/dist/components/tag/index.js +151 -0
  430. package/dist/components/time-picker/TimePicker.d.ts +2 -0
  431. package/dist/components/time-picker/TimePicker.types.d.ts +43 -0
  432. package/dist/components/time-picker/index.d.ts +2 -0
  433. package/dist/components/time-picker/index.js +323 -0
  434. package/dist/components/timeline/Timeline.d.ts +3 -0
  435. package/dist/components/timeline/Timeline.types.d.ts +20 -0
  436. package/dist/components/timeline/index.d.ts +2 -0
  437. package/dist/components/timeline/index.js +130 -0
  438. package/dist/components/tooltip/Tooltip.d.ts +3 -0
  439. package/dist/components/tooltip/Tooltip.types.d.ts +12 -0
  440. package/dist/components/tooltip/index.d.ts +2 -0
  441. package/dist/components/tooltip/index.js +133 -0
  442. package/dist/components/tour/Tour.d.ts +3 -0
  443. package/dist/components/tour/Tour.types.d.ts +50 -0
  444. package/dist/components/tour/index.d.ts +2 -0
  445. package/dist/components/tour/index.js +507 -0
  446. package/dist/components/transfer/Transfer.d.ts +5 -0
  447. package/dist/components/transfer/Transfer.types.d.ts +88 -0
  448. package/dist/components/transfer/index.d.ts +2 -0
  449. package/dist/components/transfer/index.js +456 -0
  450. package/dist/components/tree/Tree.d.ts +2 -0
  451. package/dist/components/tree/Tree.types.d.ts +92 -0
  452. package/dist/components/tree/index.d.ts +2 -0
  453. package/dist/components/tree/index.js +439 -0
  454. package/dist/components/tree-select/TreeSelect.d.ts +2 -0
  455. package/dist/components/tree-select/TreeSelect.types.d.ts +70 -0
  456. package/dist/components/tree-select/index.d.ts +2 -0
  457. package/dist/components/tree-select/index.js +488 -0
  458. package/dist/components/typography/Typography.d.ts +8 -0
  459. package/dist/components/typography/Typography.types.d.ts +81 -0
  460. package/dist/components/typography/index.d.ts +2 -0
  461. package/dist/components/typography/index.js +689 -0
  462. package/dist/components/upload/Upload.d.ts +2 -0
  463. package/dist/components/upload/Upload.types.d.ts +55 -0
  464. package/dist/components/upload/index.d.ts +2 -0
  465. package/dist/components/upload/index.js +388 -0
  466. package/dist/components/watermark/Watermark.d.ts +3 -0
  467. package/dist/components/watermark/Watermark.types.d.ts +20 -0
  468. package/dist/components/watermark/index.d.ts +2 -0
  469. package/dist/components/watermark/index.js +109 -0
  470. package/dist/index.d.ts +100 -0
  471. package/dist/index.js +18027 -0
  472. package/dist/infrastructure.d.ts +124 -0
  473. package/dist/infrastructure.js +141 -0
  474. package/dist/styles.css +19312 -0
  475. package/dist/theme/ThemeProvider.d.ts +16 -0
  476. package/dist/theme/index.d.ts +2 -0
  477. package/dist/theme/index.js +83 -0
  478. package/dist/theme/theme-script.d.ts +8 -0
  479. package/dist/utils/cn.d.ts +13 -0
  480. package/dist/utils/index.d.ts +1 -0
  481. package/dist/utils/index.js +8 -0
  482. package/package.json +444 -0
@@ -0,0 +1,3076 @@
1
+ "use client";
2
+
3
+ // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
4
+ function r(e) {
5
+ var t, f, n = "";
6
+ if (typeof e == "string" || typeof e == "number")
7
+ n += e;
8
+ else if (typeof e == "object")
9
+ if (Array.isArray(e)) {
10
+ var o = e.length;
11
+ for (t = 0;t < o; t++)
12
+ e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
13
+ } else
14
+ for (f in e)
15
+ e[f] && (n && (n += " "), n += f);
16
+ return n;
17
+ }
18
+ function clsx() {
19
+ for (var e, t, f = 0, n = "", o = arguments.length;f < o; f++)
20
+ (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
21
+ return n;
22
+ }
23
+
24
+ // src/utils/cn.ts
25
+ function cn(...inputs) {
26
+ return clsx(inputs);
27
+ }
28
+ // src/classes/button.ts
29
+ var buttonBaseClass = "btn";
30
+ var buttonColorClasses = {
31
+ primary: "btn-primary",
32
+ secondary: "btn-secondary",
33
+ tertiary: "btn-tertiary",
34
+ info: "btn-info",
35
+ success: "btn-success",
36
+ warning: "btn-warning",
37
+ error: "btn-error"
38
+ };
39
+ var buttonAppearanceClasses = {
40
+ filled: "",
41
+ outline: "btn-outline",
42
+ tonal: "btn-tonal",
43
+ ghost: "btn-ghost",
44
+ text: "btn-text"
45
+ };
46
+ var buttonShapeClasses = {
47
+ rect: "",
48
+ circle: "btn-circle",
49
+ square: "btn-square"
50
+ };
51
+ var buttonSizeClasses = {
52
+ xs: "btn-xs",
53
+ sm: "btn-sm",
54
+ md: "btn-md",
55
+ lg: "btn-lg"
56
+ };
57
+ var buttonBlockClass = "btn-block";
58
+ var buttonIsLoadingClass = "btn-loading";
59
+ function getButtonClasses({
60
+ color = "primary",
61
+ appearance = "filled",
62
+ shape = "rect",
63
+ size = "md",
64
+ block,
65
+ isLoading,
66
+ className
67
+ }) {
68
+ return cn(buttonBaseClass, buttonColorClasses[color], buttonAppearanceClasses[appearance], buttonShapeClasses[shape], buttonSizeClasses[size], block && buttonBlockClass, isLoading && buttonIsLoadingClass, className);
69
+ }
70
+
71
+ // src/components/button/Button.tsx
72
+ import { jsx, jsxs } from "react/jsx-runtime";
73
+ function Button({
74
+ color = "primary",
75
+ appearance = "filled",
76
+ shape = "rect",
77
+ size = "md",
78
+ block,
79
+ isLoading,
80
+ leftIcon,
81
+ rightIcon,
82
+ className,
83
+ children,
84
+ disabled,
85
+ ref,
86
+ ...props
87
+ }) {
88
+ const classes = getButtonClasses({
89
+ color,
90
+ appearance,
91
+ shape,
92
+ size,
93
+ block,
94
+ isLoading,
95
+ className
96
+ });
97
+ return /* @__PURE__ */ jsxs("button", {
98
+ ref,
99
+ className: classes,
100
+ disabled: disabled || isLoading,
101
+ "aria-busy": isLoading,
102
+ "aria-disabled": disabled || isLoading,
103
+ ...props,
104
+ children: [
105
+ isLoading && /* @__PURE__ */ jsx("span", {
106
+ className: "btn-spinner"
107
+ }),
108
+ !isLoading && leftIcon && /* @__PURE__ */ jsx("span", {
109
+ className: "btn-icon-left",
110
+ children: leftIcon
111
+ }),
112
+ /* @__PURE__ */ jsx("span", {
113
+ className: "btn-content",
114
+ children
115
+ }),
116
+ !isLoading && rightIcon && /* @__PURE__ */ jsx("span", {
117
+ className: "btn-icon-right",
118
+ children: rightIcon
119
+ })
120
+ ]
121
+ });
122
+ }
123
+ // src/classes/card.ts
124
+ var cardBaseClass = "card";
125
+ var cardAppearanceClasses = {
126
+ elevated: "card-elevated",
127
+ outline: "card-outline",
128
+ filled: "card-filled"
129
+ };
130
+ var cardPaddingClasses = {
131
+ none: "card-padding-none",
132
+ sm: "card-padding-sm",
133
+ md: "card-padding-md",
134
+ lg: "card-padding-lg"
135
+ };
136
+ function getCardClasses({
137
+ appearance = "elevated",
138
+ padding = "md",
139
+ className
140
+ }) {
141
+ return cn(cardBaseClass, cardAppearanceClasses[appearance], cardPaddingClasses[padding], className);
142
+ }
143
+
144
+ // src/components/card/Card.tsx
145
+ import { jsx as jsx2 } from "react/jsx-runtime";
146
+ function Card({
147
+ appearance = "elevated",
148
+ padding = "md",
149
+ className,
150
+ children,
151
+ ref,
152
+ ...props
153
+ }) {
154
+ const classes = getCardClasses({
155
+ appearance,
156
+ padding,
157
+ className
158
+ });
159
+ return /* @__PURE__ */ jsx2("div", {
160
+ ref,
161
+ className: classes,
162
+ ...props,
163
+ children
164
+ });
165
+ }
166
+ // src/components/date-picker/DatePicker.tsx
167
+ import { forwardRef, useMemo, useState } from "react";
168
+
169
+ // src/classes/date-picker.ts
170
+ var datePickerBaseClass = "datepicker";
171
+ var datePickerInputClass = "datepicker-input";
172
+ var datePickerIconClass = "datepicker-icon";
173
+ var datePickerDropdownClass = "datepicker-dropdown";
174
+ var datePickerDropdownOpenClass = "datepicker-dropdown-open";
175
+ var datePickerFooterClass = "datepicker-footer";
176
+ var datePickerPresetClass = "datepicker-preset";
177
+ var datePickerRangeClass = "datepicker-range";
178
+ var datePickerSeparatorClass = "datepicker-range-separator";
179
+ var datePickerClearClass = "datepicker-clear";
180
+ var datePickerSizeClasses = {
181
+ sm: "datepicker-sm",
182
+ md: "",
183
+ lg: "datepicker-lg"
184
+ };
185
+ var datePickerStatusClasses = {
186
+ error: "datepicker-error",
187
+ success: "datepicker-success"
188
+ };
189
+ var datePickerPickerClasses = {
190
+ date: "",
191
+ week: "datepicker-week",
192
+ month: "datepicker-month-picker",
193
+ quarter: "datepicker-quarter-picker",
194
+ year: "datepicker-year-picker",
195
+ time: "datepicker-time-picker"
196
+ };
197
+ function getDatePickerClasses({
198
+ size = "md",
199
+ status,
200
+ picker = "date",
201
+ open,
202
+ disabled,
203
+ range,
204
+ className
205
+ }) {
206
+ return cn(datePickerBaseClass, datePickerSizeClasses[size], status && datePickerStatusClasses[status], datePickerPickerClasses[picker], open && "datepicker-open", disabled && "datepicker-disabled", range && datePickerRangeClass, className);
207
+ }
208
+ function getDatePickerDropdownClasses({
209
+ open,
210
+ className
211
+ }) {
212
+ return cn(datePickerDropdownClass, open && datePickerDropdownOpenClass, className);
213
+ }
214
+
215
+ // src/components/date-picker/DatePicker.tsx
216
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
217
+ function todayValue(picker) {
218
+ const today = new Date;
219
+ const year = today.getFullYear();
220
+ const month = String(today.getMonth() + 1).padStart(2, "0");
221
+ const day = String(today.getDate()).padStart(2, "0");
222
+ if (picker === "month")
223
+ return `${year}-${month}`;
224
+ if (picker === "year")
225
+ return String(year);
226
+ if (picker === "time")
227
+ return "00:00";
228
+ return `${year}-${month}-${day}`;
229
+ }
230
+ function inputTypeForPicker(picker) {
231
+ if (picker === "month")
232
+ return "month";
233
+ if (picker === "week")
234
+ return "week";
235
+ if (picker === "time")
236
+ return "time";
237
+ return picker === "year" || picker === "quarter" ? "text" : "date";
238
+ }
239
+ function placeholderForPicker(picker) {
240
+ if (picker === "month")
241
+ return "Select month";
242
+ if (picker === "week")
243
+ return "Select week";
244
+ if (picker === "quarter")
245
+ return "Select quarter";
246
+ if (picker === "year")
247
+ return "Select year";
248
+ if (picker === "time")
249
+ return "Select time";
250
+ return "Select date";
251
+ }
252
+ function normalizeDateValue(value) {
253
+ return typeof value === "string" && value.length > 0 ? value : undefined;
254
+ }
255
+ var DatePickerRoot = forwardRef(({
256
+ allowClear,
257
+ className,
258
+ defaultOpen,
259
+ defaultValue,
260
+ disabled,
261
+ disabledDate,
262
+ onBlur,
263
+ onChange,
264
+ onFocus,
265
+ onOpenChange,
266
+ open,
267
+ picker = "date",
268
+ placeholder,
269
+ presets,
270
+ showNow,
271
+ size = "md",
272
+ status,
273
+ value,
274
+ ...props
275
+ }, ref) => {
276
+ const isValueControlled = value !== undefined;
277
+ const isOpenControlled = open !== undefined;
278
+ const [innerValue, setInnerValue] = useState(() => normalizeDateValue(defaultValue));
279
+ const [innerOpen, setInnerOpen] = useState(Boolean(defaultOpen));
280
+ const currentValue = isValueControlled ? normalizeDateValue(value) : innerValue;
281
+ const visible = isOpenControlled ? Boolean(open) : innerOpen;
282
+ const inputType = inputTypeForPicker(picker);
283
+ function setVisible(nextOpen) {
284
+ if (!isOpenControlled) {
285
+ setInnerOpen(nextOpen);
286
+ }
287
+ onOpenChange?.(nextOpen);
288
+ }
289
+ function emitChange(nextValue) {
290
+ if (nextValue && disabledDate?.(nextValue)) {
291
+ return;
292
+ }
293
+ if (!isValueControlled) {
294
+ setInnerValue(nextValue);
295
+ }
296
+ onChange?.(nextValue, nextValue ?? "");
297
+ }
298
+ const presetItems = useMemo(() => presets ?? [], [presets]);
299
+ return /* @__PURE__ */ jsxs2("div", {
300
+ ...props,
301
+ ref,
302
+ className: getDatePickerClasses({
303
+ size,
304
+ status,
305
+ picker,
306
+ open: visible,
307
+ disabled,
308
+ className
309
+ }),
310
+ children: [
311
+ /* @__PURE__ */ jsx3("input", {
312
+ className: datePickerInputClass,
313
+ disabled,
314
+ type: inputType,
315
+ value: currentValue ?? "",
316
+ placeholder: placeholder ?? placeholderForPicker(picker),
317
+ onFocus: (event) => {
318
+ onFocus?.(event);
319
+ setVisible(true);
320
+ },
321
+ onBlur: (event) => {
322
+ onBlur?.(event);
323
+ setVisible(false);
324
+ },
325
+ onChange: (event) => emitChange(event.currentTarget.value || undefined)
326
+ }),
327
+ allowClear && currentValue && !disabled ? /* @__PURE__ */ jsx3("button", {
328
+ type: "button",
329
+ className: datePickerClearClass,
330
+ "aria-label": "Clear date",
331
+ onMouseDown: (event) => event.preventDefault(),
332
+ onClick: () => emitChange(undefined),
333
+ children: "x"
334
+ }) : null,
335
+ /* @__PURE__ */ jsx3("span", {
336
+ className: datePickerIconClass,
337
+ "aria-hidden": "true",
338
+ children: "calendar"
339
+ }),
340
+ (presetItems.length > 0 || showNow) && visible ? /* @__PURE__ */ jsxs2("div", {
341
+ className: getDatePickerDropdownClasses({ open: visible }),
342
+ children: [
343
+ presetItems.map((preset, index) => /* @__PURE__ */ jsx3("button", {
344
+ type: "button",
345
+ className: datePickerPresetClass,
346
+ onMouseDown: (event) => event.preventDefault(),
347
+ onClick: () => emitChange(preset.value),
348
+ children: preset.label
349
+ }, index)),
350
+ showNow ? /* @__PURE__ */ jsx3("div", {
351
+ className: datePickerFooterClass,
352
+ children: /* @__PURE__ */ jsx3("button", {
353
+ type: "button",
354
+ onMouseDown: (event) => event.preventDefault(),
355
+ onClick: () => emitChange(todayValue(picker)),
356
+ children: "Now"
357
+ })
358
+ }) : null
359
+ ]
360
+ }) : null
361
+ ]
362
+ });
363
+ });
364
+ DatePickerRoot.displayName = "DatePicker";
365
+ var RangePicker = forwardRef(({
366
+ allowClear,
367
+ className,
368
+ defaultValue,
369
+ disabled,
370
+ disabledDate,
371
+ onChange,
372
+ picker = "date",
373
+ placeholder,
374
+ separator = "-",
375
+ size = "md",
376
+ status,
377
+ value,
378
+ ...props
379
+ }, ref) => {
380
+ const isControlled = value !== undefined;
381
+ const [innerValue, setInnerValue] = useState(defaultValue ?? [undefined, undefined]);
382
+ const currentValue = isControlled ? value : innerValue;
383
+ const inputType = inputTypeForPicker(picker);
384
+ function emitChange(nextValue) {
385
+ if (nextValue.some((item) => item !== undefined && Boolean(disabledDate?.(item)))) {
386
+ return;
387
+ }
388
+ if (!isControlled) {
389
+ setInnerValue(nextValue);
390
+ }
391
+ onChange?.(nextValue, [nextValue[0] ?? "", nextValue[1] ?? ""]);
392
+ }
393
+ function updateIndex(index, nextItem) {
394
+ emitChange(index === 0 ? [nextItem, currentValue?.[1]] : [currentValue?.[0], nextItem]);
395
+ }
396
+ return /* @__PURE__ */ jsxs2("div", {
397
+ ...props,
398
+ ref,
399
+ className: getDatePickerClasses({
400
+ size,
401
+ status,
402
+ picker,
403
+ disabled,
404
+ range: true,
405
+ className
406
+ }),
407
+ children: [
408
+ /* @__PURE__ */ jsx3("input", {
409
+ className: datePickerInputClass,
410
+ disabled,
411
+ type: inputType,
412
+ value: currentValue?.[0] ?? "",
413
+ placeholder: Array.isArray(placeholder) ? placeholder[0] : "Start date",
414
+ onChange: (event) => updateIndex(0, event.currentTarget.value || undefined)
415
+ }),
416
+ /* @__PURE__ */ jsx3("span", {
417
+ className: datePickerSeparatorClass,
418
+ children: separator
419
+ }),
420
+ /* @__PURE__ */ jsx3("input", {
421
+ className: datePickerInputClass,
422
+ disabled,
423
+ type: inputType,
424
+ value: currentValue?.[1] ?? "",
425
+ placeholder: Array.isArray(placeholder) ? placeholder[1] : "End date",
426
+ onChange: (event) => updateIndex(1, event.currentTarget.value || undefined)
427
+ }),
428
+ allowClear && (currentValue?.[0] || currentValue?.[1]) && !disabled ? /* @__PURE__ */ jsx3("button", {
429
+ type: "button",
430
+ className: datePickerClearClass,
431
+ "aria-label": "Clear date range",
432
+ onClick: () => emitChange([undefined, undefined]),
433
+ children: "x"
434
+ }) : null
435
+ ]
436
+ });
437
+ });
438
+ RangePicker.displayName = "DatePicker.RangePicker";
439
+ function withPicker(picker, displayName) {
440
+ const Picker = forwardRef((props, ref) => /* @__PURE__ */ jsx3(DatePickerRoot, {
441
+ ...props,
442
+ ref,
443
+ picker
444
+ }));
445
+ Picker.displayName = displayName;
446
+ return Picker;
447
+ }
448
+ var DatePicker = Object.assign(DatePickerRoot, {
449
+ RangePicker,
450
+ WeekPicker: withPicker("week", "DatePicker.WeekPicker"),
451
+ MonthPicker: withPicker("month", "DatePicker.MonthPicker"),
452
+ QuarterPicker: withPicker("quarter", "DatePicker.QuarterPicker"),
453
+ YearPicker: withPicker("year", "DatePicker.YearPicker")
454
+ });
455
+ // src/components/dropdown/Dropdown.tsx
456
+ import {
457
+ cloneElement,
458
+ forwardRef as forwardRef2,
459
+ isValidElement,
460
+ useId,
461
+ useState as useState2
462
+ } from "react";
463
+
464
+ // src/classes/dropdown.ts
465
+ var dropdownWrapperClass = "dropdown-wrapper";
466
+ var dropdownBaseClass = "popover dropdown";
467
+ var dropdownOpenClass = "popover-show dropdown-open";
468
+ var dropdownArrowClass = "popover-arrow dropdown-arrow";
469
+ var dropdownMenuClass = "menu dropdown-menu";
470
+ var dropdownButtonClass = "dropdown-button";
471
+ var dropdownPlacementClasses = {
472
+ top: "popover-top dropdown-top",
473
+ bottom: "popover-bottom dropdown-bottom",
474
+ left: "popover-left dropdown-left",
475
+ right: "popover-right dropdown-right",
476
+ topLeft: "popover-top dropdown-top-left",
477
+ topRight: "popover-top dropdown-top-right",
478
+ bottomLeft: "popover-bottom dropdown-bottom-left",
479
+ bottomRight: "popover-bottom dropdown-bottom-right"
480
+ };
481
+ function getDropdownClasses({
482
+ placement = "bottomLeft",
483
+ open,
484
+ arrow,
485
+ className
486
+ }) {
487
+ return cn(dropdownBaseClass, dropdownPlacementClasses[placement], open && dropdownOpenClass, !arrow && "popover-no-arrow dropdown-no-arrow", className);
488
+ }
489
+
490
+ // src/classes/menu.ts
491
+ var menuBaseClass = "menu";
492
+ var menuShowClass = "menu-show";
493
+ var menuItemClass = "menu-item";
494
+ var menuItemActiveClass = "menu-item-active";
495
+ var menuItemDisabledClass = "menu-item-disabled";
496
+ var menuItemIconClass = "menu-item-icon";
497
+ var menuItemTrailingClass = "menu-item-trailing";
498
+ var menuItemSubmenuClass = "menu-item-submenu";
499
+ var menuDividerClass = "menu-divider";
500
+ var menuLabelClass = "menu-label";
501
+ var menuSubmenuClass = "menu-submenu";
502
+ var menuCompactClass = "menu-compact";
503
+ var menuWideClass = "menu-wide";
504
+ var menuModeClasses = {
505
+ vertical: "menu-vertical",
506
+ horizontal: "menu-horizontal",
507
+ inline: "menu-inline"
508
+ };
509
+ var menuThemeClasses = {
510
+ light: "",
511
+ dark: "menu-dark menu-surface-container-highest"
512
+ };
513
+ var menuSizeClasses = {
514
+ sm: menuCompactClass,
515
+ md: "",
516
+ lg: menuWideClass
517
+ };
518
+ function getMenuClasses({
519
+ mode = "vertical",
520
+ theme = "light",
521
+ size = "md",
522
+ inlineCollapsed,
523
+ disabled,
524
+ className
525
+ }) {
526
+ return cn(menuBaseClass, menuShowClass, menuModeClasses[mode], menuThemeClasses[theme], menuSizeClasses[size], inlineCollapsed && "menu-inline-collapsed", disabled && menuItemDisabledClass, className);
527
+ }
528
+ function getMenuItemClasses({
529
+ active,
530
+ disabled,
531
+ danger,
532
+ submenu,
533
+ className
534
+ }) {
535
+ return cn(menuItemClass, active && menuItemActiveClass, disabled && menuItemDisabledClass, danger && "menu-item-danger", submenu && menuItemSubmenuClass, className);
536
+ }
537
+
538
+ // src/components/dropdown/Dropdown.tsx
539
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
540
+ function hasTrigger(triggers, trigger) {
541
+ return (triggers ?? ["hover"]).includes(trigger);
542
+ }
543
+ function callHandler(handler, event) {
544
+ handler?.(event);
545
+ }
546
+ function renderMenuItem(item, onClick, close) {
547
+ if (item.type === "divider") {
548
+ return /* @__PURE__ */ jsx4("li", {
549
+ className: menuDividerClass
550
+ }, String(item.key));
551
+ }
552
+ return /* @__PURE__ */ jsx4("li", {
553
+ children: /* @__PURE__ */ jsxs3("button", {
554
+ type: "button",
555
+ className: cn(menuItemClass, item.danger && "menu-item-danger", item.className),
556
+ disabled: item.disabled,
557
+ onClick: (event) => {
558
+ onClick?.({ key: String(item.key), item, domEvent: event });
559
+ close();
560
+ },
561
+ children: [
562
+ item.icon ? /* @__PURE__ */ jsx4("span", {
563
+ className: "menu-item-icon",
564
+ children: item.icon
565
+ }) : null,
566
+ /* @__PURE__ */ jsx4("span", {
567
+ children: item.label
568
+ })
569
+ ]
570
+ })
571
+ }, String(item.key));
572
+ }
573
+ var DropdownRoot = forwardRef2(({
574
+ arrow,
575
+ children,
576
+ className,
577
+ defaultOpen,
578
+ destroyPopupOnHide,
579
+ disabled,
580
+ dropdownRender,
581
+ menu,
582
+ onContextMenu,
583
+ onClick,
584
+ onMouseEnter,
585
+ onMouseLeave,
586
+ onOpenChange,
587
+ open,
588
+ overlay,
589
+ placement = "bottomLeft",
590
+ trigger = ["hover"],
591
+ ...props
592
+ }, ref) => {
593
+ const [internalOpen, setInternalOpen] = useState2(Boolean(defaultOpen));
594
+ const isControlled = open !== undefined;
595
+ const visible = isControlled ? open : internalOpen;
596
+ const overlayId = useId();
597
+ function setVisible(nextOpen) {
598
+ if (disabled)
599
+ return;
600
+ if (!isControlled) {
601
+ setInternalOpen(nextOpen);
602
+ }
603
+ onOpenChange?.(nextOpen);
604
+ }
605
+ const close = () => setVisible(false);
606
+ const toggleVisible = () => setVisible(!visible);
607
+ const menuNode = overlay ?? (menu?.items ? /* @__PURE__ */ jsx4("ul", {
608
+ className: dropdownMenuClass,
609
+ children: menu.items.map((item) => renderMenuItem(item, menu.onClick, close))
610
+ }) : null);
611
+ const popup = dropdownRender ? dropdownRender(menuNode) : menuNode;
612
+ const shouldRenderPopup = !destroyPopupOnHide || visible;
613
+ const triggerProps = {
614
+ "aria-controls": visible ? overlayId : undefined,
615
+ "aria-expanded": visible || undefined,
616
+ onMouseEnter: hasTrigger(trigger, "hover") ? () => setVisible(true) : undefined,
617
+ onMouseLeave: hasTrigger(trigger, "hover") ? () => setVisible(false) : undefined,
618
+ onClick: hasTrigger(trigger, "click") ? toggleVisible : undefined,
619
+ onContextMenu: hasTrigger(trigger, "contextMenu") ? (event) => {
620
+ event.preventDefault();
621
+ toggleVisible();
622
+ } : undefined
623
+ };
624
+ const triggerNode = isValidElement(children) ? cloneElement(children, {
625
+ "aria-controls": triggerProps["aria-controls"] ?? children.props["aria-controls"],
626
+ "aria-expanded": triggerProps["aria-expanded"] ?? children.props["aria-expanded"],
627
+ onMouseEnter: (event) => {
628
+ callHandler(children.props.onMouseEnter, event);
629
+ triggerProps.onMouseEnter?.();
630
+ onMouseEnter?.(event);
631
+ },
632
+ onMouseLeave: (event) => {
633
+ callHandler(children.props.onMouseLeave, event);
634
+ triggerProps.onMouseLeave?.();
635
+ onMouseLeave?.(event);
636
+ },
637
+ onClick: (event) => {
638
+ callHandler(children.props.onClick, event);
639
+ triggerProps.onClick?.();
640
+ onClick?.(event);
641
+ },
642
+ onContextMenu: (event) => {
643
+ callHandler(children.props.onContextMenu, event);
644
+ triggerProps.onContextMenu?.(event);
645
+ onContextMenu?.(event);
646
+ }
647
+ }) : /* @__PURE__ */ jsx4("span", {
648
+ role: "button",
649
+ tabIndex: disabled ? -1 : 0,
650
+ "aria-disabled": disabled || undefined,
651
+ "aria-controls": triggerProps["aria-controls"],
652
+ "aria-expanded": triggerProps["aria-expanded"],
653
+ onMouseEnter: (event) => {
654
+ triggerProps.onMouseEnter?.();
655
+ onMouseEnter?.(event);
656
+ },
657
+ onMouseLeave: (event) => {
658
+ triggerProps.onMouseLeave?.();
659
+ onMouseLeave?.(event);
660
+ },
661
+ onClick: (event) => {
662
+ triggerProps.onClick?.();
663
+ onClick?.(event);
664
+ },
665
+ onKeyDown: (event) => {
666
+ if (event.key === "Enter" || event.key === " ") {
667
+ event.preventDefault();
668
+ triggerProps.onClick?.();
669
+ }
670
+ },
671
+ onContextMenu: (event) => {
672
+ triggerProps.onContextMenu?.(event);
673
+ onContextMenu?.(event);
674
+ },
675
+ children
676
+ });
677
+ return /* @__PURE__ */ jsxs3("span", {
678
+ ...props,
679
+ ref,
680
+ className: dropdownWrapperClass,
681
+ children: [
682
+ triggerNode,
683
+ shouldRenderPopup ? /* @__PURE__ */ jsxs3("span", {
684
+ id: overlayId,
685
+ role: "menu",
686
+ className: getDropdownClasses({
687
+ placement,
688
+ open: visible,
689
+ arrow,
690
+ className
691
+ }),
692
+ children: [
693
+ popup,
694
+ arrow ? /* @__PURE__ */ jsx4("span", {
695
+ className: dropdownArrowClass
696
+ }) : null
697
+ ]
698
+ }) : null
699
+ ]
700
+ });
701
+ });
702
+ DropdownRoot.displayName = "Dropdown";
703
+ var DropdownButton = forwardRef2(({
704
+ buttonsRender,
705
+ children,
706
+ disabled,
707
+ menu,
708
+ onClick,
709
+ trigger = ["click"],
710
+ ...props
711
+ }, ref) => {
712
+ const buttons = [
713
+ /* @__PURE__ */ jsx4(Button, {
714
+ disabled,
715
+ onClick,
716
+ children
717
+ }, "primary"),
718
+ /* @__PURE__ */ jsx4(Button, {
719
+ "aria-label": "Open dropdown",
720
+ disabled,
721
+ children: "v"
722
+ }, "trigger")
723
+ ];
724
+ const renderedButtons = buttonsRender ? buttonsRender(buttons) : buttons;
725
+ return /* @__PURE__ */ jsx4(DropdownRoot, {
726
+ ...props,
727
+ ref,
728
+ menu,
729
+ trigger,
730
+ disabled,
731
+ children: /* @__PURE__ */ jsx4("span", {
732
+ className: dropdownButtonClass,
733
+ children: renderedButtons
734
+ })
735
+ });
736
+ });
737
+ DropdownButton.displayName = "Dropdown.Button";
738
+ var Dropdown = Object.assign(DropdownRoot, {
739
+ Button: DropdownButton
740
+ });
741
+ // src/components/dm-toolbar/DmToolbar.tsx
742
+ import { useMemo as useMemo2 } from "react";
743
+
744
+ // src/classes/dm-toolbar.ts
745
+ var dmToolbarBaseClass = "dm-toolbar";
746
+ var dmToolbarItemClass = "dm-toolbar-item";
747
+ var dmToolbarPrimaryItemClass = "dm-toolbar-primary-item";
748
+ var dmToolbarSecondaryItemClass = "dm-toolbar-secondary-item";
749
+ var dmToolbarMoreClass = "dm-toolbar-more";
750
+ function getDmToolbarClasses({
751
+ className
752
+ }) {
753
+ return cn(dmToolbarBaseClass, className);
754
+ }
755
+ function getDmToolbarItemClasses({
756
+ primary,
757
+ className
758
+ }) {
759
+ return cn(dmToolbarItemClass, primary ? dmToolbarPrimaryItemClass : dmToolbarSecondaryItemClass, className);
760
+ }
761
+
762
+ // src/components/dm-toolbar/DmToolbar.tsx
763
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
764
+ function isPrimary(item) {
765
+ return item.type === "primary";
766
+ }
767
+ function renderToolbarItem(item, index) {
768
+ const {
769
+ title,
770
+ menu,
771
+ type,
772
+ htmlType = "button",
773
+ color,
774
+ appearance,
775
+ ...buttonPropsWithKey
776
+ } = item;
777
+ const buttonProps = { ...buttonPropsWithKey };
778
+ delete buttonProps.key;
779
+ const button = /* @__PURE__ */ jsx5(Button, {
780
+ ...buttonProps,
781
+ type: htmlType,
782
+ color: color ?? (type === "primary" ? "primary" : "secondary"),
783
+ appearance: appearance ?? (type === "primary" ? "filled" : "outline"),
784
+ children: title
785
+ });
786
+ if (!menu?.items?.length)
787
+ return button;
788
+ return /* @__PURE__ */ jsx5(Dropdown, {
789
+ trigger: ["click"],
790
+ menu,
791
+ children: button
792
+ }, `dropdown-${index}`);
793
+ }
794
+ function toOverflowMenu(items) {
795
+ return {
796
+ items: items.map((item, index) => ({
797
+ key: item.key ?? index,
798
+ label: item.title,
799
+ disabled: item.disabled
800
+ })),
801
+ onClick: ({ key, domEvent }) => {
802
+ const target = items.find((item, index) => String(item.key ?? index) === key);
803
+ target?.onClick?.(domEvent);
804
+ }
805
+ };
806
+ }
807
+ function DmToolbar({
808
+ items = [],
809
+ className,
810
+ style,
811
+ moreText = "More",
812
+ maxVisibleSecondaryItems
813
+ }) {
814
+ const { visibleSecondaryItems, overflowSecondaryItems, primaryItems } = useMemo2(() => {
815
+ const primaryItems2 = items.filter(isPrimary);
816
+ const secondaryItems = items.filter((item) => !isPrimary(item));
817
+ const visibleLimit = maxVisibleSecondaryItems === undefined ? secondaryItems.length : Math.max(0, maxVisibleSecondaryItems);
818
+ const visibleSecondaryItems2 = visibleLimit === 0 ? [] : secondaryItems.slice(-visibleLimit);
819
+ const overflowSecondaryItems2 = visibleLimit >= secondaryItems.length ? [] : secondaryItems.slice(0, secondaryItems.length - visibleLimit);
820
+ return { visibleSecondaryItems: visibleSecondaryItems2, overflowSecondaryItems: overflowSecondaryItems2, primaryItems: primaryItems2 };
821
+ }, [items, maxVisibleSecondaryItems]);
822
+ const showMore = overflowSecondaryItems.length > 0;
823
+ return /* @__PURE__ */ jsxs4("div", {
824
+ className: getDmToolbarClasses({ className }),
825
+ style,
826
+ children: [
827
+ visibleSecondaryItems.map((item, index) => /* @__PURE__ */ jsx5("span", {
828
+ className: getDmToolbarItemClasses({}),
829
+ children: renderToolbarItem(item, index)
830
+ }, item.key ?? `secondary-${index}`)),
831
+ showMore ? /* @__PURE__ */ jsx5(Dropdown, {
832
+ trigger: ["click"],
833
+ menu: toOverflowMenu(overflowSecondaryItems),
834
+ children: /* @__PURE__ */ jsx5(Button, {
835
+ type: "button",
836
+ className: dmToolbarMoreClass,
837
+ color: "secondary",
838
+ appearance: "outline",
839
+ children: moreText
840
+ })
841
+ }) : null,
842
+ primaryItems.map((item, index) => /* @__PURE__ */ jsx5("span", {
843
+ className: getDmToolbarItemClasses({ primary: true }),
844
+ children: renderToolbarItem(item, index)
845
+ }, item.key ?? `primary-${index}`))
846
+ ]
847
+ });
848
+ }
849
+ DmToolbar.displayName = "DmToolbar";
850
+ // src/components/pagination/Pagination.tsx
851
+ import {
852
+ forwardRef as forwardRef3,
853
+ useMemo as useMemo3,
854
+ useState as useState3
855
+ } from "react";
856
+
857
+ // src/classes/pagination.ts
858
+ var paginationBaseClass = "pagination";
859
+ var paginationItemClass = "pagination-item";
860
+ var paginationItemActiveClass = "pagination-item-active";
861
+ var paginationItemDisabledClass = "pagination-item-disabled";
862
+ var paginationPrevClass = "pagination-prev";
863
+ var paginationNextClass = "pagination-next";
864
+ var paginationEllipsisClass = "pagination-ellipsis";
865
+ var paginationCompactClass = "pagination-compact";
866
+ var paginationInfoClass = "pagination-info";
867
+ var paginationInfoTextClass = "pagination-info-text";
868
+ var paginationInputClass = "pagination-input";
869
+ var paginationResponsiveClass = "pagination-responsive";
870
+ var paginationSizeClasses = {
871
+ sm: "pagination-sm",
872
+ md: "",
873
+ lg: "pagination-lg"
874
+ };
875
+ function getPaginationClasses({
876
+ size = "md",
877
+ compact,
878
+ className
879
+ }) {
880
+ return cn(paginationBaseClass, paginationResponsiveClass, paginationSizeClasses[size], compact && paginationCompactClass, className);
881
+ }
882
+ function getPaginationItemClasses({
883
+ active,
884
+ disabled
885
+ }) {
886
+ return cn(paginationItemClass, active && paginationItemActiveClass, disabled && paginationItemDisabledClass);
887
+ }
888
+
889
+ // src/components/pagination/Pagination.tsx
890
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
891
+ var defaultPageSizeOptions = [10, 20, 50, 100];
892
+ function toPositiveInteger(value, fallback) {
893
+ if (!Number.isFinite(value) || value === undefined) {
894
+ return fallback;
895
+ }
896
+ return Math.max(1, Math.floor(value));
897
+ }
898
+ function clampPage(page, pageCount) {
899
+ return Math.min(pageCount, Math.max(1, Math.floor(page)));
900
+ }
901
+ function getPageCount(total, pageSize) {
902
+ return Math.max(1, Math.ceil(Math.max(0, total) / pageSize));
903
+ }
904
+ function getRange(current, pageSize, total) {
905
+ if (total <= 0) {
906
+ return [0, 0];
907
+ }
908
+ const start = (current - 1) * pageSize + 1;
909
+ const end = Math.min(total, current * pageSize);
910
+ return [start, end];
911
+ }
912
+ function getPageTokens(current, pageCount) {
913
+ if (pageCount <= 7) {
914
+ return Array.from({ length: pageCount }, (_, index) => index + 1);
915
+ }
916
+ const pages = new Set([1, pageCount, current - 1, current, current + 1]);
917
+ if (current <= 4) {
918
+ [2, 3, 4, 5].forEach((page) => pages.add(page));
919
+ }
920
+ if (current >= pageCount - 3) {
921
+ [pageCount - 4, pageCount - 3, pageCount - 2, pageCount - 1].forEach((page) => pages.add(page));
922
+ }
923
+ const sortedPages = Array.from(pages).filter((page) => page >= 1 && page <= pageCount).sort((first, second) => first - second);
924
+ return sortedPages.reduce((tokens, page) => {
925
+ const previous = tokens[tokens.length - 1];
926
+ if (typeof previous === "number") {
927
+ const gap = page - previous;
928
+ if (gap === 2) {
929
+ tokens.push(previous + 1);
930
+ } else if (gap > 2) {
931
+ tokens.push("ellipsis");
932
+ }
933
+ }
934
+ tokens.push(page);
935
+ return tokens;
936
+ }, []);
937
+ }
938
+ function getSizeOptions(pageSize) {
939
+ return Array.from(new Set([...defaultPageSizeOptions, pageSize])).sort((first, second) => first - second);
940
+ }
941
+ var Pagination = forwardRef3(({
942
+ current,
943
+ defaultCurrent = 1,
944
+ pageSize,
945
+ defaultPageSize = 10,
946
+ total = 0,
947
+ onChange,
948
+ disabled,
949
+ simple,
950
+ showSizeChanger,
951
+ showQuickJumper,
952
+ showTotal,
953
+ size = "md",
954
+ className,
955
+ ...props
956
+ }, ref) => {
957
+ const isCurrentControlled = current !== undefined;
958
+ const isPageSizeControlled = pageSize !== undefined;
959
+ const [internalCurrent, setInternalCurrent] = useState3(defaultCurrent);
960
+ const [internalPageSize, setInternalPageSize] = useState3(defaultPageSize);
961
+ const [quickJumpValue, setQuickJumpValue] = useState3("");
962
+ const mergedPageSize = toPositiveInteger(pageSize ?? internalPageSize, defaultPageSize);
963
+ const pageCount = getPageCount(total, mergedPageSize);
964
+ const mergedCurrent = clampPage(toPositiveInteger(current ?? internalCurrent, defaultCurrent), pageCount);
965
+ const pageTokens = useMemo3(() => getPageTokens(mergedCurrent, pageCount), [mergedCurrent, pageCount]);
966
+ const range = getRange(mergedCurrent, mergedPageSize, total);
967
+ function changePage(nextPage, nextPageSize = mergedPageSize) {
968
+ const nextPageCount = getPageCount(total, nextPageSize);
969
+ const normalizedPage = clampPage(nextPage, nextPageCount);
970
+ if (!isCurrentControlled) {
971
+ setInternalCurrent(normalizedPage);
972
+ }
973
+ if (!isPageSizeControlled) {
974
+ setInternalPageSize(nextPageSize);
975
+ }
976
+ onChange?.(normalizedPage, nextPageSize);
977
+ }
978
+ function handlePageSizeChange(event) {
979
+ const nextPageSize = toPositiveInteger(Number(event.currentTarget.value), mergedPageSize);
980
+ const nextPage = clampPage(mergedCurrent, getPageCount(total, nextPageSize));
981
+ changePage(nextPage, nextPageSize);
982
+ }
983
+ function jumpToInputPage(value) {
984
+ const nextPage = Number(value);
985
+ if (!Number.isFinite(nextPage)) {
986
+ return;
987
+ }
988
+ changePage(nextPage);
989
+ setQuickJumpValue("");
990
+ }
991
+ function handleQuickJumpKeyDown(event) {
992
+ if (event.key !== "Enter") {
993
+ return;
994
+ }
995
+ jumpToInputPage(event.currentTarget.value);
996
+ }
997
+ const previousDisabled = disabled || mergedCurrent <= 1;
998
+ const nextDisabled = disabled || mergedCurrent >= pageCount;
999
+ return /* @__PURE__ */ jsxs5("nav", {
1000
+ ...props,
1001
+ ref,
1002
+ className: getPaginationClasses({ size, compact: simple, className }),
1003
+ children: [
1004
+ showTotal ? /* @__PURE__ */ jsx6("div", {
1005
+ className: paginationInfoClass,
1006
+ children: /* @__PURE__ */ jsx6("span", {
1007
+ className: paginationInfoTextClass,
1008
+ children: showTotal(total, range)
1009
+ })
1010
+ }) : null,
1011
+ /* @__PURE__ */ jsx6("button", {
1012
+ type: "button",
1013
+ className: paginationPrevClass,
1014
+ disabled: previousDisabled,
1015
+ "aria-label": "Previous page",
1016
+ onClick: () => changePage(mergedCurrent - 1),
1017
+ children: "Prev"
1018
+ }),
1019
+ simple ? /* @__PURE__ */ jsxs5("div", {
1020
+ className: paginationInputClass,
1021
+ children: [
1022
+ /* @__PURE__ */ jsx6("input", {
1023
+ "aria-label": "Current page",
1024
+ type: "number",
1025
+ min: 1,
1026
+ max: pageCount,
1027
+ value: quickJumpValue || String(mergedCurrent),
1028
+ disabled,
1029
+ onChange: (event) => setQuickJumpValue(event.currentTarget.value),
1030
+ onKeyDown: handleQuickJumpKeyDown,
1031
+ onBlur: (event) => {
1032
+ if (event.currentTarget.value !== String(mergedCurrent)) {
1033
+ jumpToInputPage(event.currentTarget.value);
1034
+ }
1035
+ }
1036
+ }),
1037
+ /* @__PURE__ */ jsxs5("span", {
1038
+ className: paginationInfoTextClass,
1039
+ children: [
1040
+ "/ ",
1041
+ pageCount
1042
+ ]
1043
+ })
1044
+ ]
1045
+ }) : pageTokens.map((pageToken, index) => pageToken === "ellipsis" ? /* @__PURE__ */ jsx6("span", {
1046
+ "aria-hidden": "true",
1047
+ className: paginationEllipsisClass
1048
+ }, `ellipsis-${index}`) : /* @__PURE__ */ jsx6("button", {
1049
+ type: "button",
1050
+ className: getPaginationItemClasses({
1051
+ active: pageToken === mergedCurrent,
1052
+ disabled
1053
+ }),
1054
+ disabled,
1055
+ "aria-current": pageToken === mergedCurrent ? "page" : undefined,
1056
+ "aria-label": `Page ${pageToken}`,
1057
+ onClick: () => changePage(pageToken),
1058
+ children: pageToken
1059
+ }, pageToken)),
1060
+ /* @__PURE__ */ jsx6("button", {
1061
+ type: "button",
1062
+ className: paginationNextClass,
1063
+ disabled: nextDisabled,
1064
+ "aria-label": "Next page",
1065
+ onClick: () => changePage(mergedCurrent + 1),
1066
+ children: "Next"
1067
+ }),
1068
+ showSizeChanger ? /* @__PURE__ */ jsx6("div", {
1069
+ className: paginationInputClass,
1070
+ children: /* @__PURE__ */ jsx6("select", {
1071
+ "aria-label": "Page size",
1072
+ value: mergedPageSize,
1073
+ disabled,
1074
+ onChange: handlePageSizeChange,
1075
+ children: getSizeOptions(mergedPageSize).map((option) => /* @__PURE__ */ jsxs5("option", {
1076
+ value: option,
1077
+ children: [
1078
+ option,
1079
+ " / page"
1080
+ ]
1081
+ }, option))
1082
+ })
1083
+ }) : null,
1084
+ showQuickJumper && !simple ? /* @__PURE__ */ jsx6("div", {
1085
+ className: paginationInputClass,
1086
+ children: /* @__PURE__ */ jsx6("input", {
1087
+ "aria-label": "Jump to page",
1088
+ type: "number",
1089
+ min: 1,
1090
+ max: pageCount,
1091
+ value: quickJumpValue,
1092
+ disabled,
1093
+ onChange: (event) => setQuickJumpValue(event.currentTarget.value),
1094
+ onKeyDown: handleQuickJumpKeyDown
1095
+ })
1096
+ }) : null
1097
+ ]
1098
+ });
1099
+ });
1100
+ Pagination.displayName = "Pagination";
1101
+ // src/components/dm-pagination/DmPagination.tsx
1102
+ import {
1103
+ forwardRef as forwardRef4,
1104
+ useEffect,
1105
+ useMemo as useMemo4,
1106
+ useRef,
1107
+ useState as useState4
1108
+ } from "react";
1109
+
1110
+ // src/classes/dm-pagination.ts
1111
+ var dmPaginationBaseClass = "dm-pagination";
1112
+ var dmPaginationHiddenClass = "dm-pagination-hidden";
1113
+ var dmPaginationPagerClass = "dm-pagination-pager";
1114
+ var dmPaginationRefreshClass = "dm-pagination-refresh";
1115
+ var dmPaginationRefreshLoadingClass = "dm-pagination-refresh-loading";
1116
+ var dmPaginationSelectedClass = "dm-pagination-selected";
1117
+ var dmPaginationAlignClasses = {
1118
+ left: "dm-pagination-left",
1119
+ center: "dm-pagination-center",
1120
+ right: "dm-pagination-right"
1121
+ };
1122
+ function getDmPaginationClasses({
1123
+ align = "right",
1124
+ hidden,
1125
+ className
1126
+ }) {
1127
+ return cn(dmPaginationBaseClass, dmPaginationAlignClasses[align], hidden && dmPaginationHiddenClass, className);
1128
+ }
1129
+ function getDmPaginationRefreshClasses({
1130
+ loading,
1131
+ className
1132
+ }) {
1133
+ return cn(dmPaginationRefreshClass, loading && dmPaginationRefreshLoadingClass, className);
1134
+ }
1135
+
1136
+ // src/components/dm-pagination/DmPagination.tsx
1137
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1138
+ var defaultLocale = {
1139
+ refresh: "Refresh",
1140
+ showTotal: (total, range) => `${range[0]}-${range[1]} of ${total}`,
1141
+ showTotalSimple: (total, range) => `${range[0]}-${range[1]} / ${total}`,
1142
+ selected: (selectedTotal) => `, ${selectedTotal} selected`
1143
+ };
1144
+ function getResponsiveSimple({
1145
+ width,
1146
+ total,
1147
+ showRefresh,
1148
+ showSizeChanger
1149
+ }) {
1150
+ let reservedWidth = 0;
1151
+ if (!showRefresh)
1152
+ reservedWidth += 100;
1153
+ if (!showSizeChanger)
1154
+ reservedWidth += 100;
1155
+ if (width < 900 - reservedWidth)
1156
+ return total >= 100;
1157
+ if (width < 1100 - reservedWidth)
1158
+ return total >= 1000;
1159
+ if (width < 1220 - reservedWidth)
1160
+ return total >= 99999;
1161
+ if (width < 1300 - reservedWidth)
1162
+ return total >= 999999;
1163
+ if (width < 1450 - reservedWidth)
1164
+ return total >= 9999999;
1165
+ return false;
1166
+ }
1167
+ function useElementWidth() {
1168
+ const ref = useRef(null);
1169
+ const [width, setWidth] = useState4(1000);
1170
+ useEffect(() => {
1171
+ const element = ref.current;
1172
+ if (!element || typeof ResizeObserver === "undefined")
1173
+ return;
1174
+ const observer = new ResizeObserver(([entry]) => {
1175
+ setWidth(entry?.contentRect.width || element.getBoundingClientRect().width);
1176
+ });
1177
+ observer.observe(element);
1178
+ return () => observer.disconnect();
1179
+ }, []);
1180
+ return [ref, width];
1181
+ }
1182
+ function renderSelected(selectedTotal, locale) {
1183
+ if (!selectedTotal)
1184
+ return null;
1185
+ return /* @__PURE__ */ jsx7("span", {
1186
+ className: dmPaginationSelectedClass,
1187
+ children: locale.selected(selectedTotal)
1188
+ });
1189
+ }
1190
+ var DmPagination = forwardRef4(({
1191
+ selectedTotal = 0,
1192
+ loading = false,
1193
+ total = 0,
1194
+ showRefresh = true,
1195
+ showPagination = true,
1196
+ wrapperStyle,
1197
+ className,
1198
+ align = "right",
1199
+ showTotalFullMessage = false,
1200
+ showSizeChanger = true,
1201
+ responsiveSimple = true,
1202
+ refresh,
1203
+ simple,
1204
+ showQuickJumper,
1205
+ showTotal,
1206
+ locale,
1207
+ ...props
1208
+ }, ref) => {
1209
+ const [measureRef, width] = useElementWidth();
1210
+ const mergedLocale = useMemo4(() => ({ ...defaultLocale, ...locale }), [locale]);
1211
+ const isRefreshVisible = showRefresh && Boolean(refresh);
1212
+ const shouldRender = showPagination || isRefreshVisible;
1213
+ const responsiveSimpleMode = responsiveSimple ? getResponsiveSimple({
1214
+ width,
1215
+ total,
1216
+ showRefresh,
1217
+ showSizeChanger
1218
+ }) : false;
1219
+ const mergedSimple = simple ?? responsiveSimpleMode;
1220
+ const mergedShowQuickJumper = showQuickJumper ?? !mergedSimple;
1221
+ const totalRenderer = useMemo4(() => {
1222
+ if (showTotal)
1223
+ return showTotal;
1224
+ return (nextTotal, range) => {
1225
+ if (Number(nextTotal) === 0)
1226
+ return "";
1227
+ const selected = renderSelected(selectedTotal, mergedLocale);
1228
+ const message = mergedSimple && !showTotalFullMessage ? mergedLocale.showTotalSimple(nextTotal, range, selectedTotal) : mergedLocale.showTotal(nextTotal, range, selectedTotal);
1229
+ return /* @__PURE__ */ jsxs6("span", {
1230
+ title: `${mergedLocale.showTotal(nextTotal, range, selectedTotal)}${selectedTotal ? mergedLocale.selected(selectedTotal) : ""}`,
1231
+ children: [
1232
+ message,
1233
+ selected
1234
+ ]
1235
+ });
1236
+ };
1237
+ }, [
1238
+ mergedLocale,
1239
+ mergedSimple,
1240
+ selectedTotal,
1241
+ showTotal,
1242
+ showTotalFullMessage
1243
+ ]);
1244
+ if (!shouldRender)
1245
+ return null;
1246
+ return /* @__PURE__ */ jsxs6("div", {
1247
+ ref: (element) => {
1248
+ measureRef.current = element;
1249
+ if (typeof ref === "function") {
1250
+ ref(element);
1251
+ } else if (ref) {
1252
+ ref.current = element;
1253
+ }
1254
+ },
1255
+ className: getDmPaginationClasses({ align, className }),
1256
+ style: wrapperStyle,
1257
+ children: [
1258
+ showPagination ? /* @__PURE__ */ jsx7("div", {
1259
+ className: dmPaginationPagerClass,
1260
+ children: /* @__PURE__ */ jsx7(Pagination, {
1261
+ ...props,
1262
+ total,
1263
+ simple: mergedSimple,
1264
+ showQuickJumper: mergedShowQuickJumper,
1265
+ showSizeChanger,
1266
+ showTotal: totalRenderer
1267
+ })
1268
+ }) : null,
1269
+ isRefreshVisible ? /* @__PURE__ */ jsxs6("button", {
1270
+ type: "button",
1271
+ className: getDmPaginationRefreshClasses({ loading }),
1272
+ disabled: loading || props.disabled,
1273
+ "aria-busy": loading || undefined,
1274
+ onClick: refresh,
1275
+ children: [
1276
+ /* @__PURE__ */ jsx7("span", {
1277
+ "aria-hidden": "true",
1278
+ children: "Reload"
1279
+ }),
1280
+ /* @__PURE__ */ jsx7("span", {
1281
+ children: mergedLocale.refresh
1282
+ })
1283
+ ]
1284
+ }) : null
1285
+ ]
1286
+ });
1287
+ });
1288
+ DmPagination.displayName = "DmPagination";
1289
+ // src/components/input/Input.tsx
1290
+ import {
1291
+ forwardRef as forwardRef5,
1292
+ useImperativeHandle,
1293
+ useRef as useRef2,
1294
+ useState as useState5
1295
+ } from "react";
1296
+
1297
+ // src/classes/input.ts
1298
+ var inputBaseClass = "input";
1299
+ var inputWrapperClass = "input-wrapper";
1300
+ var inputAffixWrapperClass = "input-affix-wrapper";
1301
+ var inputPrefixClass = "input-prefix";
1302
+ var inputSuffixClass = "input-suffix";
1303
+ var inputClearClass = "input-clear";
1304
+ var inputSearchClass = "input-search";
1305
+ var inputSearchButtonClass = "input-search-button";
1306
+ var inputPasswordClass = "input-password";
1307
+ var inputPasswordToggleClass = "input-password-toggle";
1308
+ var inputGroupClass = "input-group";
1309
+ var textAreaBaseClass = "textarea";
1310
+ var textAreaWrapperClass = "textarea-wrapper";
1311
+ var textAreaCountClass = "textarea-counter";
1312
+ var textAreaCountExceededClass = "textarea-counter-exceeded";
1313
+ var textAreaAutoSizeClass = "textarea-auto-resize";
1314
+ var inputVariantClasses = {
1315
+ filled: "input-filled",
1316
+ outlined: "input-outlined"
1317
+ };
1318
+ var inputSizeClasses = {
1319
+ sm: "input-sm",
1320
+ md: "input-md",
1321
+ lg: "input-lg"
1322
+ };
1323
+ var inputStatusClasses = {
1324
+ error: "input-error",
1325
+ success: "input-success"
1326
+ };
1327
+ var textAreaVariantClasses = {
1328
+ filled: "textarea-filled",
1329
+ outlined: "textarea-outlined"
1330
+ };
1331
+ var textAreaSizeClasses = {
1332
+ sm: "textarea-sm",
1333
+ md: "",
1334
+ lg: "textarea-lg"
1335
+ };
1336
+ var textAreaStatusClasses = {
1337
+ error: "textarea-error",
1338
+ success: "textarea-success"
1339
+ };
1340
+ var textAreaResizeClasses = {
1341
+ none: "textarea-resize-none",
1342
+ both: "textarea-resize-both",
1343
+ horizontal: "textarea-resize-horizontal",
1344
+ vertical: "textarea-resize-vertical"
1345
+ };
1346
+ function getInputClasses({
1347
+ size = "md",
1348
+ status,
1349
+ variant = "outlined",
1350
+ className
1351
+ }) {
1352
+ return cn(inputBaseClass, inputVariantClasses[variant], inputSizeClasses[size], status && inputStatusClasses[status], className);
1353
+ }
1354
+ function getInputWrapperClasses({
1355
+ affixed,
1356
+ className
1357
+ }) {
1358
+ return cn(inputWrapperClass, affixed && inputAffixWrapperClass, className);
1359
+ }
1360
+ function getSearchWrapperClasses({ className }) {
1361
+ return cn(inputSearchClass, className);
1362
+ }
1363
+ function getPasswordWrapperClasses({
1364
+ className
1365
+ }) {
1366
+ return cn(inputPasswordClass, className);
1367
+ }
1368
+ function getTextAreaClasses({
1369
+ size = "md",
1370
+ status,
1371
+ variant = "outlined",
1372
+ resize = "vertical",
1373
+ autoSize,
1374
+ className
1375
+ }) {
1376
+ return cn(textAreaBaseClass, textAreaVariantClasses[variant], textAreaSizeClasses[size], status && textAreaStatusClasses[status], textAreaResizeClasses[resize], autoSize && textAreaAutoSizeClass, className);
1377
+ }
1378
+ function getTextAreaCountClasses({ exceeded }) {
1379
+ return cn(textAreaCountClass, exceeded && textAreaCountExceededClass);
1380
+ }
1381
+
1382
+ // src/components/input/Input.tsx
1383
+ import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
1384
+ function toTextValue(value) {
1385
+ if (Array.isArray(value)) {
1386
+ return value.join(",");
1387
+ }
1388
+ return value == null ? "" : String(value);
1389
+ }
1390
+ var InputRoot = forwardRef5(({
1391
+ allowClear,
1392
+ className,
1393
+ defaultValue,
1394
+ disabled,
1395
+ onChange,
1396
+ prefix,
1397
+ size = "md",
1398
+ status,
1399
+ suffix,
1400
+ type = "text",
1401
+ value,
1402
+ variant = "outlined",
1403
+ ...props
1404
+ }, ref) => {
1405
+ const inputRef = useRef2(null);
1406
+ const [internalValue, setInternalValue] = useState5(() => toTextValue(defaultValue));
1407
+ const isControlled = value !== undefined;
1408
+ const currentValue = isControlled ? toTextValue(value) : internalValue;
1409
+ const hasAffix = prefix != null || suffix != null || allowClear;
1410
+ useImperativeHandle(ref, () => inputRef.current);
1411
+ function handleChange(event) {
1412
+ if (!isControlled) {
1413
+ setInternalValue(event.currentTarget.value);
1414
+ }
1415
+ onChange?.(event);
1416
+ }
1417
+ function handleClear() {
1418
+ const input = inputRef.current;
1419
+ if (!input || disabled) {
1420
+ return;
1421
+ }
1422
+ input.value = "";
1423
+ if (!isControlled) {
1424
+ setInternalValue("");
1425
+ }
1426
+ onChange?.({
1427
+ currentTarget: input,
1428
+ target: input,
1429
+ type: "change"
1430
+ });
1431
+ input.focus();
1432
+ }
1433
+ const control = /* @__PURE__ */ jsx8("input", {
1434
+ ...props,
1435
+ ref: inputRef,
1436
+ type,
1437
+ className: getInputClasses({ size, status, variant, className }),
1438
+ disabled,
1439
+ value: currentValue,
1440
+ onChange: handleChange
1441
+ });
1442
+ if (!hasAffix) {
1443
+ return control;
1444
+ }
1445
+ const showClear = allowClear && !disabled && currentValue.length > 0;
1446
+ return /* @__PURE__ */ jsxs7("span", {
1447
+ className: getInputWrapperClasses({ affixed: hasAffix }),
1448
+ children: [
1449
+ prefix != null ? /* @__PURE__ */ jsx8("span", {
1450
+ className: inputPrefixClass,
1451
+ children: prefix
1452
+ }) : null,
1453
+ control,
1454
+ showClear ? /* @__PURE__ */ jsx8("button", {
1455
+ type: "button",
1456
+ className: inputClearClass,
1457
+ "aria-label": "Clear input",
1458
+ onClick: handleClear,
1459
+ children: "x"
1460
+ }) : null,
1461
+ suffix != null ? /* @__PURE__ */ jsx8("span", {
1462
+ className: inputSuffixClass,
1463
+ children: suffix
1464
+ }) : null
1465
+ ]
1466
+ });
1467
+ });
1468
+ InputRoot.displayName = "Input";
1469
+ var Search = forwardRef5(({
1470
+ className,
1471
+ disabled,
1472
+ enterButton,
1473
+ loading,
1474
+ onKeyDown,
1475
+ onSearch,
1476
+ ...props
1477
+ }, ref) => {
1478
+ const inputRef = useRef2(null);
1479
+ useImperativeHandle(ref, () => inputRef.current);
1480
+ function emitSearch(event) {
1481
+ onSearch?.(inputRef.current?.value ?? "", event);
1482
+ }
1483
+ function handleKeyDown(event) {
1484
+ onKeyDown?.(event);
1485
+ if (!event.defaultPrevented && event.key === "Enter") {
1486
+ emitSearch(event);
1487
+ }
1488
+ }
1489
+ const buttonContent = enterButton === true ? "Search" : enterButton ?? "Search";
1490
+ return /* @__PURE__ */ jsxs7("span", {
1491
+ className: getSearchWrapperClasses({ className }),
1492
+ children: [
1493
+ /* @__PURE__ */ jsx8(InputRoot, {
1494
+ ...props,
1495
+ ref: inputRef,
1496
+ disabled,
1497
+ onKeyDown: handleKeyDown
1498
+ }),
1499
+ enterButton || loading ? /* @__PURE__ */ jsx8("button", {
1500
+ type: "button",
1501
+ className: inputSearchButtonClass,
1502
+ disabled: disabled || loading,
1503
+ "aria-busy": loading || undefined,
1504
+ onClick: emitSearch,
1505
+ children: loading ? "Loading" : buttonContent
1506
+ }) : null
1507
+ ]
1508
+ });
1509
+ });
1510
+ Search.displayName = "Input.Search";
1511
+ var Password = forwardRef5(({ className, disabled, visibilityToggle = true, ...props }, ref) => {
1512
+ const [visible, setVisible] = useState5(false);
1513
+ const type = visible ? "text" : "password";
1514
+ const toggle = visibilityToggle ? /* @__PURE__ */ jsx8("button", {
1515
+ type: "button",
1516
+ className: inputPasswordToggleClass,
1517
+ disabled,
1518
+ "aria-label": visible ? "Hide password" : "Show password",
1519
+ onClick: () => {
1520
+ setVisible((current) => !current);
1521
+ },
1522
+ children: visible ? "Hide" : "Show"
1523
+ }) : undefined;
1524
+ return /* @__PURE__ */ jsx8("span", {
1525
+ className: getPasswordWrapperClasses({ className }),
1526
+ children: /* @__PURE__ */ jsx8(InputRoot, {
1527
+ ...props,
1528
+ ref,
1529
+ disabled,
1530
+ type,
1531
+ suffix: toggle
1532
+ })
1533
+ });
1534
+ });
1535
+ Password.displayName = "Input.Password";
1536
+ var TextArea = forwardRef5(({
1537
+ autoSize,
1538
+ className,
1539
+ defaultValue,
1540
+ maxLength,
1541
+ onChange,
1542
+ resize = "vertical",
1543
+ showCount,
1544
+ size = "md",
1545
+ status,
1546
+ value,
1547
+ variant = "outlined",
1548
+ ...props
1549
+ }, ref) => {
1550
+ const [internalValue, setInternalValue] = useState5(() => toTextValue(defaultValue));
1551
+ const isControlled = value !== undefined;
1552
+ const currentValue = isControlled ? toTextValue(value) : internalValue;
1553
+ const count = currentValue.length;
1554
+ const exceeded = maxLength !== undefined && count > maxLength;
1555
+ function handleChange(event) {
1556
+ if (!isControlled) {
1557
+ setInternalValue(event.currentTarget.value);
1558
+ }
1559
+ onChange?.(event);
1560
+ }
1561
+ const control = /* @__PURE__ */ jsx8("textarea", {
1562
+ ...props,
1563
+ ref,
1564
+ className: getTextAreaClasses({
1565
+ size,
1566
+ status,
1567
+ variant,
1568
+ resize,
1569
+ autoSize: Boolean(autoSize),
1570
+ className
1571
+ }),
1572
+ maxLength,
1573
+ value: currentValue,
1574
+ onChange: handleChange
1575
+ });
1576
+ if (!showCount) {
1577
+ return control;
1578
+ }
1579
+ return /* @__PURE__ */ jsxs7("span", {
1580
+ className: textAreaWrapperClass,
1581
+ children: [
1582
+ control,
1583
+ /* @__PURE__ */ jsxs7("span", {
1584
+ className: getTextAreaCountClasses({ exceeded }),
1585
+ children: [
1586
+ count,
1587
+ maxLength !== undefined ? ` / ${maxLength}` : null
1588
+ ]
1589
+ })
1590
+ ]
1591
+ });
1592
+ });
1593
+ TextArea.displayName = "Input.TextArea";
1594
+ var Group = forwardRef5(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx8("div", {
1595
+ ...props,
1596
+ ref,
1597
+ className: cn(inputGroupClass, className),
1598
+ children
1599
+ }));
1600
+ Group.displayName = "Input.Group";
1601
+ var Input = Object.assign(InputRoot, {
1602
+ Search,
1603
+ Password,
1604
+ TextArea,
1605
+ Group
1606
+ });
1607
+ // src/components/select/Select.tsx
1608
+ import React7, { forwardRef as forwardRef6, useMemo as useMemo5, useState as useState6 } from "react";
1609
+
1610
+ // src/classes/select.ts
1611
+ var selectContainerClass = "select-container";
1612
+ var selectBaseClass = "select";
1613
+ var selectIconClass = "select-icon";
1614
+ var selectOpenClass = "select-open";
1615
+ var selectLoadingClass = "select-loading";
1616
+ var selectFullClass = "select-full";
1617
+ var selectOptionClass = "select-option";
1618
+ var selectOptionSelectedClass = "select-option-selected";
1619
+ var selectOptionDisabledClass = "select-option-disabled";
1620
+ var selectDropdownClass = "select-dropdown";
1621
+ var selectSearchClass = "select-search";
1622
+ var selectSelectionClass = "select-selection";
1623
+ var selectTagClass = "select-tag";
1624
+ var selectClearClass = "select-clear";
1625
+ var selectPlaceholderClass = "select-placeholder";
1626
+ var selectEmptyClass = "select-empty";
1627
+ var selectGroupClass = "select-group";
1628
+ var selectGroupLabelClass = "select-group-label";
1629
+ var selectSizeClasses = {
1630
+ sm: "select-sm",
1631
+ md: "",
1632
+ lg: "select-lg"
1633
+ };
1634
+ var selectStatusClasses = {
1635
+ error: "select-error",
1636
+ success: "select-success"
1637
+ };
1638
+ function getSelectContainerClasses({
1639
+ open,
1640
+ loading,
1641
+ disabled,
1642
+ full,
1643
+ className
1644
+ }) {
1645
+ return cn(selectContainerClass, open && selectOpenClass, loading && selectLoadingClass, disabled && "select-disabled", full && selectFullClass, className);
1646
+ }
1647
+ function getSelectClasses({
1648
+ size = "md",
1649
+ status,
1650
+ disabled,
1651
+ className
1652
+ }) {
1653
+ return cn(selectBaseClass, selectSizeClasses[size], status && selectStatusClasses[status], disabled && "select-disabled", className);
1654
+ }
1655
+ function getSelectOptionClasses({
1656
+ selected,
1657
+ disabled,
1658
+ className
1659
+ }) {
1660
+ return cn(selectOptionClass, selected && selectOptionSelectedClass, disabled && selectOptionDisabledClass, className);
1661
+ }
1662
+
1663
+ // src/components/select/Select.tsx
1664
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
1665
+ function isGroup(option) {
1666
+ return "options" in option;
1667
+ }
1668
+ function optionLabel(option) {
1669
+ return option.label ?? option.value;
1670
+ }
1671
+ function valueKey(value) {
1672
+ return String(value);
1673
+ }
1674
+ function normalizeSingleValue(value) {
1675
+ if (Array.isArray(value)) {
1676
+ return value[0];
1677
+ }
1678
+ return typeof value === "string" || typeof value === "number" ? value : undefined;
1679
+ }
1680
+ function normalizeMultiValue(value) {
1681
+ if (Array.isArray(value)) {
1682
+ return value.filter((item) => typeof item === "string" || typeof item === "number");
1683
+ }
1684
+ const single = normalizeSingleValue(value);
1685
+ return single === undefined ? [] : [single];
1686
+ }
1687
+ function optionsFromChildren(children) {
1688
+ const result = [];
1689
+ React7.Children.forEach(children, (child) => {
1690
+ if (!React7.isValidElement(child)) {
1691
+ return;
1692
+ }
1693
+ if (child.type === Option) {
1694
+ const props = child.props;
1695
+ result.push({
1696
+ value: props.value,
1697
+ label: props.children,
1698
+ disabled: props.disabled,
1699
+ className: props.className
1700
+ });
1701
+ return;
1702
+ }
1703
+ if (child.type === OptGroup) {
1704
+ const props = child.props;
1705
+ result.push({
1706
+ label: props.label,
1707
+ className: props.className,
1708
+ options: optionsFromChildren(props.children).filter((option) => !isGroup(option))
1709
+ });
1710
+ }
1711
+ });
1712
+ return result;
1713
+ }
1714
+ function flattenOptions(options) {
1715
+ return options.flatMap((option) => isGroup(option) ? option.options : option);
1716
+ }
1717
+ function matchesOption(option, searchValue, filterOption) {
1718
+ if (!searchValue || filterOption === false) {
1719
+ return true;
1720
+ }
1721
+ if (typeof filterOption === "function") {
1722
+ return filterOption(searchValue, option);
1723
+ }
1724
+ const label = optionLabel(option);
1725
+ const text = typeof label === "string" || typeof label === "number" ? String(label) : String(option.value);
1726
+ return text.toLowerCase().includes(searchValue.toLowerCase());
1727
+ }
1728
+ function filterOptions(options, searchValue, filterOption) {
1729
+ return options.map((option) => {
1730
+ if (!isGroup(option)) {
1731
+ return matchesOption(option, searchValue, filterOption) ? option : null;
1732
+ }
1733
+ const groupOptions = option.options.filter((child) => matchesOption(child, searchValue, filterOption));
1734
+ return groupOptions.length > 0 ? { ...option, options: groupOptions } : null;
1735
+ }).filter((option) => option !== null);
1736
+ }
1737
+ function renderValue(option) {
1738
+ return option ? optionLabel(option) : null;
1739
+ }
1740
+ var Option = forwardRef6(({ children, ...props }, ref) => /* @__PURE__ */ jsx9("div", {
1741
+ ...props,
1742
+ ref,
1743
+ children
1744
+ }));
1745
+ Option.displayName = "Select.Option";
1746
+ var OptGroup = forwardRef6(({ children, ...props }, ref) => /* @__PURE__ */ jsx9("div", {
1747
+ ...props,
1748
+ ref,
1749
+ children
1750
+ }));
1751
+ OptGroup.displayName = "Select.OptGroup";
1752
+ var SelectRoot = forwardRef6(({
1753
+ allowClear,
1754
+ children,
1755
+ className,
1756
+ defaultValue,
1757
+ disabled,
1758
+ filterOption,
1759
+ loading,
1760
+ mode,
1761
+ onChange,
1762
+ options,
1763
+ placeholder,
1764
+ showSearch,
1765
+ size = "md",
1766
+ status,
1767
+ value,
1768
+ ...props
1769
+ }, ref) => {
1770
+ const multiple = mode === "multiple" || mode === "tags";
1771
+ const sourceOptions = useMemo5(() => options ?? optionsFromChildren(children), [children, options]);
1772
+ const flatOptions = useMemo5(() => flattenOptions(sourceOptions), [sourceOptions]);
1773
+ const [open, setOpen] = useState6(false);
1774
+ const [searchValue, setSearchValue] = useState6("");
1775
+ const [internalValue, setInternalValue] = useState6(multiple ? normalizeMultiValue(defaultValue) : normalizeSingleValue(defaultValue));
1776
+ const controlled = value !== undefined;
1777
+ const currentValue = controlled ? value : internalValue;
1778
+ const selectedValues = multiple ? normalizeMultiValue(currentValue) : normalizeSingleValue(currentValue) === undefined ? [] : [normalizeSingleValue(currentValue)];
1779
+ const selectedKeys = new Set(selectedValues.map(valueKey));
1780
+ const selectedOptions = selectedValues.map((selectedValue) => flatOptions.find((option) => option.value === selectedValue) ?? {
1781
+ value: selectedValue,
1782
+ label: selectedValue
1783
+ });
1784
+ const visibleOptions = filterOptions(sourceOptions, searchValue, filterOption);
1785
+ const hasValue = selectedValues.length > 0;
1786
+ const searchable = showSearch || mode === "tags";
1787
+ function emitChange(nextValue) {
1788
+ if (!controlled) {
1789
+ setInternalValue(nextValue);
1790
+ }
1791
+ const nextValues = Array.isArray(nextValue) ? nextValue : nextValue === undefined ? [] : [nextValue];
1792
+ const nextOptions = nextValues.map((next) => flatOptions.find((option) => option.value === next) ?? {
1793
+ value: next,
1794
+ label: next
1795
+ });
1796
+ onChange?.(nextValue, multiple ? nextOptions : nextOptions[0]);
1797
+ }
1798
+ function selectOption(option) {
1799
+ if (disabled || loading || option.disabled) {
1800
+ return;
1801
+ }
1802
+ if (multiple) {
1803
+ const optionKey = valueKey(option.value);
1804
+ const nextValues = selectedKeys.has(optionKey) ? selectedValues.filter((item) => valueKey(item) !== optionKey) : [...selectedValues, option.value];
1805
+ emitChange(nextValues);
1806
+ } else {
1807
+ emitChange(option.value);
1808
+ setOpen(false);
1809
+ }
1810
+ setSearchValue("");
1811
+ }
1812
+ function clearValue(event) {
1813
+ event.stopPropagation();
1814
+ if (disabled || loading) {
1815
+ return;
1816
+ }
1817
+ emitChange(multiple ? [] : undefined);
1818
+ setSearchValue("");
1819
+ }
1820
+ function addTag() {
1821
+ const tag = searchValue.trim();
1822
+ if (mode !== "tags" || tag.length === 0) {
1823
+ return;
1824
+ }
1825
+ if (!selectedKeys.has(tag)) {
1826
+ emitChange([...selectedValues, tag]);
1827
+ }
1828
+ setSearchValue("");
1829
+ }
1830
+ function renderOption(option) {
1831
+ const selected = selectedKeys.has(valueKey(option.value));
1832
+ return /* @__PURE__ */ jsx9("button", {
1833
+ type: "button",
1834
+ role: "option",
1835
+ "aria-selected": selected,
1836
+ disabled: disabled || option.disabled,
1837
+ className: getSelectOptionClasses({
1838
+ selected,
1839
+ disabled: disabled || option.disabled,
1840
+ className: option.className
1841
+ }),
1842
+ onClick: () => selectOption(option),
1843
+ children: optionLabel(option)
1844
+ }, valueKey(option.value));
1845
+ }
1846
+ function renderOptions(optionItems) {
1847
+ return optionItems.map((option, index) => {
1848
+ if (!isGroup(option)) {
1849
+ return renderOption(option);
1850
+ }
1851
+ return /* @__PURE__ */ jsxs8("div", {
1852
+ className: cn(selectGroupClass, option.className),
1853
+ role: "group",
1854
+ children: [
1855
+ /* @__PURE__ */ jsx9("div", {
1856
+ className: selectGroupLabelClass,
1857
+ children: option.label
1858
+ }),
1859
+ option.options.map(renderOption)
1860
+ ]
1861
+ }, `group-${index}`);
1862
+ });
1863
+ }
1864
+ const selection = multiple ? selectedOptions.map((option) => /* @__PURE__ */ jsx9("span", {
1865
+ className: selectTagClass,
1866
+ children: renderValue(option)
1867
+ }, valueKey(option.value))) : renderValue(selectedOptions[0]);
1868
+ return /* @__PURE__ */ jsxs8("div", {
1869
+ ...props,
1870
+ ref,
1871
+ className: getSelectContainerClasses({
1872
+ open,
1873
+ loading,
1874
+ disabled,
1875
+ full: true,
1876
+ className
1877
+ }),
1878
+ children: [
1879
+ /* @__PURE__ */ jsxs8("button", {
1880
+ type: "button",
1881
+ className: getSelectClasses({ size, status, disabled }),
1882
+ disabled: disabled || loading,
1883
+ "aria-haspopup": "listbox",
1884
+ "aria-expanded": open,
1885
+ onClick: () => setOpen((current) => !current),
1886
+ children: [
1887
+ /* @__PURE__ */ jsx9("span", {
1888
+ className: selectSelectionClass,
1889
+ children: hasValue ? selection : /* @__PURE__ */ jsx9("span", {
1890
+ className: selectPlaceholderClass,
1891
+ children: placeholder
1892
+ })
1893
+ }),
1894
+ /* @__PURE__ */ jsx9("span", {
1895
+ className: selectIconClass,
1896
+ "aria-hidden": "true",
1897
+ children: "v"
1898
+ })
1899
+ ]
1900
+ }),
1901
+ allowClear && hasValue && !disabled && !loading ? /* @__PURE__ */ jsx9("button", {
1902
+ type: "button",
1903
+ className: selectClearClass,
1904
+ "aria-label": "Clear selection",
1905
+ onClick: clearValue,
1906
+ children: "x"
1907
+ }) : null,
1908
+ open ? /* @__PURE__ */ jsxs8("div", {
1909
+ className: selectDropdownClass,
1910
+ role: "listbox",
1911
+ "aria-multiselectable": multiple || undefined,
1912
+ children: [
1913
+ searchable ? /* @__PURE__ */ jsx9("input", {
1914
+ className: selectSearchClass,
1915
+ value: searchValue,
1916
+ placeholder: typeof placeholder === "string" ? placeholder : undefined,
1917
+ onChange: (event) => setSearchValue(event.currentTarget.value),
1918
+ onKeyDown: (event) => {
1919
+ if (event.key === "Enter") {
1920
+ event.preventDefault();
1921
+ addTag();
1922
+ }
1923
+ }
1924
+ }) : null,
1925
+ visibleOptions.length > 0 ? renderOptions(visibleOptions) : /* @__PURE__ */ jsx9("div", {
1926
+ className: selectEmptyClass,
1927
+ children: "No data"
1928
+ })
1929
+ ]
1930
+ }) : null
1931
+ ]
1932
+ });
1933
+ });
1934
+ SelectRoot.displayName = "Select";
1935
+ var Select = SelectRoot;
1936
+ Select.Option = Option;
1937
+ Select.OptGroup = OptGroup;
1938
+ // src/components/dm-search/DmSearch.tsx
1939
+ import {
1940
+ forwardRef as forwardRef7,
1941
+ useEffect as useEffect2,
1942
+ useImperativeHandle as useImperativeHandle2,
1943
+ useMemo as useMemo6,
1944
+ useState as useState7
1945
+ } from "react";
1946
+
1947
+ // src/classes/dm-search.ts
1948
+ var dmSearchBaseClass = "dm-search";
1949
+ var dmSearchCompactClass = "dm-search-compact";
1950
+ var dmSearchCollapsedClass = "dm-search-collapsed";
1951
+ var dmSearchFieldsClass = "dm-search-fields";
1952
+ var dmSearchFieldClass = "dm-search-field";
1953
+ var dmSearchActionsClass = "dm-search-actions";
1954
+ var dmSearchFastFilterClass = "dm-search-fast-filter";
1955
+ function getDmSearchClasses({
1956
+ compact,
1957
+ collapsed,
1958
+ className
1959
+ }) {
1960
+ return cn(dmSearchBaseClass, compact && dmSearchCompactClass, collapsed && dmSearchCollapsedClass, className);
1961
+ }
1962
+
1963
+ // src/components/dm-search/DmSearch.tsx
1964
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
1965
+ function initialValues(items, searchParams, useSearchParams = true) {
1966
+ return items.reduce((acc, item) => {
1967
+ const defaultValue = item.search.extraProps?.value ?? item.search.formProps?.initialValue;
1968
+ acc[item.dataIndex] = useSearchParams && searchParams && item.dataIndex in searchParams ? searchParams[item.dataIndex] : defaultValue;
1969
+ return acc;
1970
+ }, {});
1971
+ }
1972
+ function optionList(extraProps) {
1973
+ return Array.isArray(extraProps?.options) ? extraProps.options : [];
1974
+ }
1975
+ function renderField({
1976
+ item,
1977
+ value,
1978
+ setValue,
1979
+ loading,
1980
+ enableDefaultPlaceHolder
1981
+ }) {
1982
+ const extraProps = item.search.extraProps ?? {};
1983
+ const placeholder = extraProps.placeholder ?? (enableDefaultPlaceHolder ? item.search.type === "select" ? "Please select" : "Please enter" : undefined);
1984
+ if (item.search.type === "custom") {
1985
+ return item.search.render?.(value, setValue, item) ?? null;
1986
+ }
1987
+ if (item.search.type === "select") {
1988
+ return /* @__PURE__ */ jsx10(Select, {
1989
+ ...extraProps,
1990
+ disabled: Boolean(loading || extraProps.disabled),
1991
+ value,
1992
+ placeholder,
1993
+ onChange: (nextValue) => setValue(nextValue)
1994
+ });
1995
+ }
1996
+ if (item.search.type === "dateRange") {
1997
+ return /* @__PURE__ */ jsx10(DatePicker.RangePicker, {
1998
+ ...extraProps,
1999
+ value,
2000
+ onChange: (nextValue) => setValue(nextValue)
2001
+ });
2002
+ }
2003
+ if (item.search.type === "date") {
2004
+ return /* @__PURE__ */ jsx10(DatePicker, {
2005
+ ...extraProps,
2006
+ value,
2007
+ onChange: (nextValue) => setValue(nextValue)
2008
+ });
2009
+ }
2010
+ if (item.search.type === "radio" || item.search.type === "checkbox") {
2011
+ return /* @__PURE__ */ jsx10("div", {
2012
+ role: item.search.type === "radio" ? "radiogroup" : "group",
2013
+ children: optionList(extraProps).map((option) => /* @__PURE__ */ jsxs9("label", {
2014
+ children: [
2015
+ /* @__PURE__ */ jsx10("input", {
2016
+ type: item.search.type,
2017
+ disabled: loading,
2018
+ checked: item.search.type === "checkbox" ? Array.isArray(value) && value.includes(option.value) : value === option.value,
2019
+ onChange: (event) => {
2020
+ if (item.search.type === "radio") {
2021
+ setValue(option.value);
2022
+ return;
2023
+ }
2024
+ const current = Array.isArray(value) ? value : [];
2025
+ setValue(event.currentTarget.checked ? [...current, option.value] : current.filter((entry) => entry !== option.value));
2026
+ }
2027
+ }),
2028
+ option.label ?? option.value
2029
+ ]
2030
+ }, String(option.value)))
2031
+ });
2032
+ }
2033
+ return /* @__PURE__ */ jsx10(Input, {
2034
+ ...extraProps,
2035
+ type: item.search.type === "input-number" ? "number" : "text",
2036
+ disabled: Boolean(loading || extraProps.disabled),
2037
+ placeholder,
2038
+ value: value == null ? "" : String(value),
2039
+ onChange: (event) => setValue(event.currentTarget.value),
2040
+ onKeyDown: (event) => {
2041
+ if (event.key === "Enter") {
2042
+ event.currentTarget.form?.requestSubmit();
2043
+ }
2044
+ }
2045
+ });
2046
+ }
2047
+ var DmSearch = forwardRef7(({
2048
+ items = [],
2049
+ onSearch,
2050
+ extra,
2051
+ fastFilterItem,
2052
+ defaultCollapsed = true,
2053
+ hideCollapseBtn = false,
2054
+ compact = false,
2055
+ searchParams,
2056
+ loading = false,
2057
+ enableDefaultPlaceHolder = false,
2058
+ className
2059
+ }, ref) => {
2060
+ const allItems = useMemo6(() => fastFilterItem ? [fastFilterItem, ...items] : items, [fastFilterItem, items]);
2061
+ const [collapsed, setCollapsed] = useState7(defaultCollapsed);
2062
+ const [values, setValues] = useState7(() => initialValues(allItems, searchParams));
2063
+ const visibleItems = collapsed ? allItems.slice(0, 1) : allItems;
2064
+ useEffect2(() => {
2065
+ setValues(initialValues(allItems, searchParams));
2066
+ }, [allItems, searchParams]);
2067
+ function reset(useSearchParams = false) {
2068
+ const nextValues = initialValues(allItems, searchParams, useSearchParams);
2069
+ setValues(nextValues);
2070
+ return nextValues;
2071
+ }
2072
+ useImperativeHandle2(ref, () => ({
2073
+ onReset: () => {
2074
+ reset(false);
2075
+ }
2076
+ }));
2077
+ return /* @__PURE__ */ jsxs9("form", {
2078
+ id: "searchForm",
2079
+ className: getDmSearchClasses({ compact, collapsed, className }),
2080
+ onSubmit: (event) => {
2081
+ event.preventDefault();
2082
+ onSearch?.(values);
2083
+ },
2084
+ children: [
2085
+ fastFilterItem ? /* @__PURE__ */ jsx10("div", {
2086
+ className: dmSearchFastFilterClass,
2087
+ children: fastFilterItem.title
2088
+ }) : null,
2089
+ /* @__PURE__ */ jsx10("div", {
2090
+ className: dmSearchFieldsClass,
2091
+ children: visibleItems.map((item) => /* @__PURE__ */ jsxs9("label", {
2092
+ className: dmSearchFieldClass,
2093
+ children: [
2094
+ compact ? null : /* @__PURE__ */ jsx10("span", {
2095
+ children: item.title
2096
+ }),
2097
+ renderField({
2098
+ item,
2099
+ value: values[item.dataIndex],
2100
+ loading,
2101
+ enableDefaultPlaceHolder,
2102
+ setValue: (value) => setValues((current) => ({ ...current, [item.dataIndex]: value }))
2103
+ })
2104
+ ]
2105
+ }, item.key))
2106
+ }),
2107
+ /* @__PURE__ */ jsxs9("div", {
2108
+ className: dmSearchActionsClass,
2109
+ children: [
2110
+ /* @__PURE__ */ jsx10(Button, {
2111
+ type: "submit",
2112
+ isLoading: loading,
2113
+ children: "Search"
2114
+ }),
2115
+ /* @__PURE__ */ jsx10(Button, {
2116
+ type: "button",
2117
+ color: "secondary",
2118
+ appearance: "outline",
2119
+ onClick: () => onSearch?.(reset(false)),
2120
+ children: "Reset"
2121
+ }),
2122
+ !hideCollapseBtn && allItems.length > 1 ? /* @__PURE__ */ jsx10(Button, {
2123
+ type: "button",
2124
+ color: "secondary",
2125
+ appearance: "text",
2126
+ onClick: () => {
2127
+ setCollapsed((current) => !current);
2128
+ setValues(initialValues(allItems, searchParams));
2129
+ },
2130
+ children: collapsed ? "Expand" : "Collapse"
2131
+ }) : null,
2132
+ extra
2133
+ ]
2134
+ })
2135
+ ]
2136
+ });
2137
+ });
2138
+ DmSearch.displayName = "DmSearch";
2139
+ // src/components/table/Table.tsx
2140
+ import React9, {
2141
+ forwardRef as forwardRef8,
2142
+ useMemo as useMemo7,
2143
+ useState as useState8
2144
+ } from "react";
2145
+
2146
+ // src/classes/table.ts
2147
+ var tableWrapperClass = "table-wrapper";
2148
+ var tableBaseClass = "table";
2149
+ var tableBorderedClass = "table-bordered";
2150
+ var tableLoadingClass = "table-loading";
2151
+ var tableSmallClass = "table-sm";
2152
+ var tableLargeClass = "table-lg";
2153
+ var tableHeaderCellClass = "table-header-cell";
2154
+ var tableCellClass = "table-cell";
2155
+ var tableRowClass = "table-row";
2156
+ var tableRowSelectedClass = "table-row-selected";
2157
+ var tableRowExpandedClass = "table-row-expanded";
2158
+ var tableEmptyClass = "table-empty";
2159
+ var tableLoadingIndicatorClass = "table-loading-indicator";
2160
+ var tableSorterClass = "table-sorter";
2161
+ var tableSorterActiveClass = "table-sorter-active";
2162
+ var tableFilterClass = "table-filter";
2163
+ var tableSelectionCellClass = "table-selection-cell";
2164
+ var tableExpandCellClass = "table-expand-cell";
2165
+ var tableExpandButtonClass = "table-expand-button";
2166
+ var tablePaginationClass = "table-pagination";
2167
+ var tablePaginationButtonClass = "table-pagination-button";
2168
+ var tablePaginationInfoClass = "table-pagination-info";
2169
+ function getTableWrapperClasses({
2170
+ loading,
2171
+ className
2172
+ }) {
2173
+ return cn(tableWrapperClass, loading && tableLoadingClass, className);
2174
+ }
2175
+ function getTableClasses({
2176
+ bordered,
2177
+ size
2178
+ }) {
2179
+ return cn(tableBaseClass, bordered && tableBorderedClass, size === "small" && tableSmallClass, size === "large" && tableLargeClass);
2180
+ }
2181
+ function getTableRowClasses({
2182
+ selected,
2183
+ expanded,
2184
+ className
2185
+ }) {
2186
+ return cn(tableRowClass, selected && tableRowSelectedClass, expanded && tableRowExpandedClass, className);
2187
+ }
2188
+ function getTableSorterClasses(active) {
2189
+ return cn(tableSorterClass, active && tableSorterActiveClass);
2190
+ }
2191
+
2192
+ // src/components/table/Table.tsx
2193
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
2194
+ import { createElement } from "react";
2195
+ var defaultPageSize = 10;
2196
+ var defaultSortDirections = ["ascend", "descend", null];
2197
+ function hasNode(node) {
2198
+ return node !== undefined && node !== null && node !== false;
2199
+ }
2200
+ function textFromNode(node, fallback) {
2201
+ return typeof node === "string" || typeof node === "number" ? String(node) : fallback;
2202
+ }
2203
+ function dataIndexKey(dataIndex) {
2204
+ if (dataIndex === undefined) {
2205
+ return;
2206
+ }
2207
+ return typeof dataIndex === "string" || typeof dataIndex === "number" ? dataIndex : Array.from(dataIndex).join(".");
2208
+ }
2209
+ function getValue(record, dataIndex) {
2210
+ if (dataIndex === undefined) {
2211
+ return;
2212
+ }
2213
+ const path = Array.isArray(dataIndex) ? dataIndex : [dataIndex];
2214
+ return path.reduce((current, key) => {
2215
+ if (current === null || current === undefined) {
2216
+ return;
2217
+ }
2218
+ return current[key];
2219
+ }, record);
2220
+ }
2221
+ function getRecordKey(record, index, rowKey) {
2222
+ if (typeof rowKey === "function") {
2223
+ return rowKey(record, index);
2224
+ }
2225
+ if (rowKey) {
2226
+ const key2 = record[rowKey];
2227
+ return typeof key2 === "string" || typeof key2 === "number" ? key2 : index;
2228
+ }
2229
+ const key = record.key;
2230
+ return typeof key === "string" || typeof key === "number" ? key : index;
2231
+ }
2232
+ function normalizeKeys(keys) {
2233
+ return keys?.map(String) ?? [];
2234
+ }
2235
+ function normalizeColumns(columns, prefix = "column") {
2236
+ return columns.map((column, index) => {
2237
+ const rawKey = column.key ?? dataIndexKey(column.dataIndex) ?? `${prefix}-${index}`;
2238
+ return {
2239
+ ...column,
2240
+ columnKey: rawKey,
2241
+ children: column.children ? normalizeColumns(column.children, String(rawKey)) : undefined
2242
+ };
2243
+ });
2244
+ }
2245
+ function leafColumns(columns) {
2246
+ return columns.flatMap((column) => column.children?.length ? leafColumns(column.children) : [column]);
2247
+ }
2248
+ function getDepth(columns) {
2249
+ if (columns.length === 0) {
2250
+ return 1;
2251
+ }
2252
+ return Math.max(...columns.map((column) => column.children?.length ? 1 + getDepth(column.children) : 1));
2253
+ }
2254
+ function getLeafCount(column) {
2255
+ return column.children?.length ? column.children.reduce((count, child) => count + getLeafCount(child), 0) : 1;
2256
+ }
2257
+ function buildHeaderRows(columns, depth, level = 0, rows = []) {
2258
+ rows[level] ??= [];
2259
+ columns.forEach((column) => {
2260
+ const grouped = Boolean(column.children?.length);
2261
+ rows[level].push({
2262
+ column,
2263
+ colSpan: grouped ? getLeafCount(column) : 1,
2264
+ rowSpan: grouped ? 1 : depth - level
2265
+ });
2266
+ if (column.children?.length) {
2267
+ buildHeaderRows(column.children, depth, level + 1, rows);
2268
+ }
2269
+ });
2270
+ return rows;
2271
+ }
2272
+ function optionValues(filters) {
2273
+ return (filters ?? []).flatMap((filter) => [
2274
+ filter,
2275
+ ...filter.children ?? []
2276
+ ]);
2277
+ }
2278
+ function sortCompare(sorter) {
2279
+ if (typeof sorter === "function") {
2280
+ return sorter;
2281
+ }
2282
+ if (typeof sorter === "object" && sorter.compare) {
2283
+ return sorter.compare;
2284
+ }
2285
+ return;
2286
+ }
2287
+ function sortOrderFor(column, sortStates) {
2288
+ if (column.sortOrder !== undefined) {
2289
+ return column.sortOrder;
2290
+ }
2291
+ return sortStates[String(column.columnKey)] ?? column.defaultSortOrder;
2292
+ }
2293
+ function filterValueFor(column, filterStates) {
2294
+ if (column.filteredValue !== undefined) {
2295
+ return column.filteredValue;
2296
+ }
2297
+ const state = filterStates[String(column.columnKey)];
2298
+ return state !== undefined ? state : column.defaultFilteredValue;
2299
+ }
2300
+ function nextSortOrder(column, current) {
2301
+ const directions = column.sortDirections ?? defaultSortDirections;
2302
+ const index = directions.findIndex((order) => order === (current ?? null));
2303
+ return directions[(index + 1) % directions.length] ?? null;
2304
+ }
2305
+ function selectedRowsForKeys(data, keys, rowKey) {
2306
+ const keySet = new Set(normalizeKeys(keys));
2307
+ return data.filter((record, index) => keySet.has(String(getRecordKey(record, index, rowKey))));
2308
+ }
2309
+ var Column = forwardRef8(() => null);
2310
+ Column.displayName = "Table.Column";
2311
+ var ColumnGroup = forwardRef8(() => null);
2312
+ ColumnGroup.displayName = "Table.ColumnGroup";
2313
+ var SummaryRow = forwardRef8((props, ref) => /* @__PURE__ */ jsx11("tr", {
2314
+ ...props,
2315
+ ref
2316
+ }));
2317
+ SummaryRow.displayName = "Table.Summary.Row";
2318
+ var SummaryCell = forwardRef8(({ index, ...props }, ref) => {
2319
+ return /* @__PURE__ */ jsx11("td", {
2320
+ ...props,
2321
+ ref
2322
+ });
2323
+ });
2324
+ SummaryCell.displayName = "Table.Summary.Cell";
2325
+ var Summary = Object.assign(forwardRef8(({ fixed, ...props }, ref) => {
2326
+ return /* @__PURE__ */ jsx11("tfoot", {
2327
+ ...props,
2328
+ ref
2329
+ });
2330
+ }), {
2331
+ Row: SummaryRow,
2332
+ Cell: SummaryCell
2333
+ });
2334
+ Summary.displayName = "Table.Summary";
2335
+ function columnsFromChildren(children) {
2336
+ return React9.Children.toArray(children).flatMap((child) => {
2337
+ if (!React9.isValidElement(child)) {
2338
+ return [];
2339
+ }
2340
+ if (child.type === Column) {
2341
+ const props = child.props;
2342
+ const { children: columnChildren, ...column } = props;
2343
+ return [column];
2344
+ }
2345
+ if (child.type === ColumnGroup) {
2346
+ const props = child.props;
2347
+ const { children: groupChildren, ...column } = props;
2348
+ return [
2349
+ {
2350
+ ...column,
2351
+ children: columnsFromChildren(groupChildren)
2352
+ }
2353
+ ];
2354
+ }
2355
+ return [];
2356
+ });
2357
+ }
2358
+ function renderSummary(summary, pageData, colSpan) {
2359
+ if (!summary) {
2360
+ return null;
2361
+ }
2362
+ const node = summary(pageData);
2363
+ if (React9.isValidElement(node) && node.type === Summary) {
2364
+ return node;
2365
+ }
2366
+ return /* @__PURE__ */ jsx11("tfoot", {
2367
+ children: /* @__PURE__ */ jsx11("tr", {
2368
+ children: /* @__PURE__ */ jsx11("td", {
2369
+ className: tableCellClass,
2370
+ colSpan,
2371
+ children: node
2372
+ })
2373
+ })
2374
+ });
2375
+ }
2376
+ function resolvePagination(pagination, total) {
2377
+ if (pagination === false) {
2378
+ return null;
2379
+ }
2380
+ const config = pagination ?? {};
2381
+ return {
2382
+ current: config.current,
2383
+ defaultCurrent: config.defaultCurrent ?? 1,
2384
+ pageSize: config.pageSize,
2385
+ defaultPageSize: config.defaultPageSize ?? defaultPageSize,
2386
+ total: config.total ?? total,
2387
+ disabled: config.disabled,
2388
+ hideOnSinglePage: config.hideOnSinglePage,
2389
+ showTotal: config.showTotal,
2390
+ onChange: config.onChange
2391
+ };
2392
+ }
2393
+ function TableRoot({
2394
+ columns,
2395
+ dataSource = [],
2396
+ rowKey,
2397
+ loading,
2398
+ bordered,
2399
+ size = "middle",
2400
+ pagination,
2401
+ rowSelection,
2402
+ expandable,
2403
+ summary,
2404
+ locale,
2405
+ tableLayout,
2406
+ scroll,
2407
+ onChange,
2408
+ children,
2409
+ className,
2410
+ ...props
2411
+ }, ref) {
2412
+ const childColumns = useMemo7(() => columnsFromChildren(children), [children]);
2413
+ const normalizedColumns = useMemo7(() => normalizeColumns(columns ?? childColumns), [childColumns, columns]);
2414
+ const leaves = useMemo7(() => leafColumns(normalizedColumns), [normalizedColumns]);
2415
+ const headerRows = useMemo7(() => buildHeaderRows(normalizedColumns, getDepth(normalizedColumns)), [normalizedColumns]);
2416
+ const [sortStates, setSortStates] = useState8({});
2417
+ const [filterStates, setFilterStates] = useState8({});
2418
+ const [internalCurrent, setInternalCurrent] = useState8(1);
2419
+ const [internalPageSize, setInternalPageSize] = useState8(defaultPageSize);
2420
+ const [internalSelectedKeys, setInternalSelectedKeys] = useState8(rowSelection?.defaultSelectedRowKeys ?? []);
2421
+ const [internalExpandedKeys, setInternalExpandedKeys] = useState8(expandable?.defaultExpandedRowKeys ?? []);
2422
+ const spinning = typeof loading === "object" ? loading.spinning : Boolean(loading);
2423
+ const activeFilters = useMemo7(() => {
2424
+ return leaves.reduce((result, column) => {
2425
+ const value = filterValueFor(column, filterStates) ?? null;
2426
+ if (value !== null) {
2427
+ result[String(column.columnKey)] = value;
2428
+ }
2429
+ return result;
2430
+ }, {});
2431
+ }, [filterStates, leaves]);
2432
+ const activeSorter = useMemo7(() => {
2433
+ const column = leaves.find((item) => sortOrderFor(item, sortStates));
2434
+ if (!column) {
2435
+ return {};
2436
+ }
2437
+ return {
2438
+ column,
2439
+ columnKey: column.columnKey,
2440
+ field: column.dataIndex,
2441
+ order: sortOrderFor(column, sortStates) ?? null
2442
+ };
2443
+ }, [leaves, sortStates]);
2444
+ const filteredData = useMemo7(() => {
2445
+ return leaves.reduce((records, column) => {
2446
+ const values = filterValueFor(column, filterStates);
2447
+ if (!values?.length || !column.onFilter) {
2448
+ return records;
2449
+ }
2450
+ return records.filter((record) => values.some((value) => column.onFilter?.(value, record)));
2451
+ }, dataSource);
2452
+ }, [dataSource, filterStates, leaves]);
2453
+ const sortedData = useMemo7(() => {
2454
+ const sorterColumn = leaves.find((column) => sortOrderFor(column, sortStates));
2455
+ const order = sorterColumn ? sortOrderFor(sorterColumn, sortStates) : null;
2456
+ const compare = sorterColumn ? sortCompare(sorterColumn.sorter) : undefined;
2457
+ if (!sorterColumn || !order || !compare) {
2458
+ return filteredData;
2459
+ }
2460
+ return [...filteredData].sort((first, second) => {
2461
+ const result = compare(first, second);
2462
+ return order === "descend" ? -result : result;
2463
+ });
2464
+ }, [filteredData, leaves, sortStates]);
2465
+ const paginationConfig = resolvePagination(pagination, sortedData.length);
2466
+ const pageSize = Math.max(1, Math.floor(paginationConfig?.pageSize ?? (internalPageSize === defaultPageSize ? paginationConfig?.defaultPageSize : internalPageSize) ?? defaultPageSize));
2467
+ const pageCount = paginationConfig ? Math.max(1, Math.ceil(Math.max(0, paginationConfig.total ?? sortedData.length) / pageSize)) : 1;
2468
+ const current = paginationConfig ? Math.min(pageCount, Math.max(1, Math.floor(paginationConfig.current ?? internalCurrent ?? paginationConfig.defaultCurrent ?? 1))) : 1;
2469
+ const pageData = paginationConfig ? sortedData.slice((current - 1) * pageSize, current * pageSize) : sortedData;
2470
+ const selectedKeys = rowSelection?.selectedRowKeys ?? internalSelectedKeys;
2471
+ const selectedKeySet = new Set(normalizeKeys(selectedKeys));
2472
+ const expandedKeys = expandable?.expandedRowKeys ?? internalExpandedKeys;
2473
+ const expandedKeySet = new Set(normalizeKeys(expandedKeys));
2474
+ const hasSelection = Boolean(rowSelection);
2475
+ const hasExpandable = Boolean(expandable?.expandedRowRender);
2476
+ const structuralColumnCount = leaves.length + (hasSelection ? 1 : 0) + (hasExpandable ? 1 : 0);
2477
+ const bodyEmpty = pageData.length === 0;
2478
+ function emitTableChange(nextPagination, nextFilters, nextSorter, action) {
2479
+ onChange?.(nextPagination, nextFilters, nextSorter, {
2480
+ currentDataSource: sortedData,
2481
+ action
2482
+ });
2483
+ }
2484
+ function changePage(nextPage, nextPageSize = pageSize) {
2485
+ if (!paginationConfig || paginationConfig.disabled) {
2486
+ return;
2487
+ }
2488
+ const nextPageCount = Math.max(1, Math.ceil((paginationConfig.total ?? sortedData.length) / nextPageSize));
2489
+ const normalizedPage = Math.min(nextPageCount, Math.max(1, nextPage));
2490
+ if (paginationConfig.current === undefined) {
2491
+ setInternalCurrent(normalizedPage);
2492
+ }
2493
+ if (paginationConfig.pageSize === undefined) {
2494
+ setInternalPageSize(nextPageSize);
2495
+ }
2496
+ paginationConfig.onChange?.(normalizedPage, nextPageSize);
2497
+ emitTableChange({ ...paginationConfig, current: normalizedPage, pageSize: nextPageSize }, activeFilters, activeSorter, "paginate");
2498
+ }
2499
+ function changeSorter(column) {
2500
+ if (!column.sorter) {
2501
+ return;
2502
+ }
2503
+ const nextOrder = nextSortOrder(column, sortOrderFor(column, sortStates));
2504
+ const nextSortStates = { [String(column.columnKey)]: nextOrder };
2505
+ const nextSorter = nextOrder ? {
2506
+ column,
2507
+ columnKey: column.columnKey,
2508
+ field: column.dataIndex,
2509
+ order: nextOrder
2510
+ } : {};
2511
+ setSortStates(nextSortStates);
2512
+ setInternalCurrent(1);
2513
+ emitTableChange({ ...paginationConfig ?? {}, current: 1, pageSize }, activeFilters, nextSorter, "sort");
2514
+ }
2515
+ function changeFilter(column, event) {
2516
+ const selected = Array.from(event.currentTarget.selectedOptions).map((option) => option.value).filter((value) => value !== "");
2517
+ const nextValue = selected.length > 0 ? selected : null;
2518
+ const nextFilters = {
2519
+ ...activeFilters,
2520
+ [String(column.columnKey)]: nextValue
2521
+ };
2522
+ if (nextValue === null) {
2523
+ delete nextFilters[String(column.columnKey)];
2524
+ }
2525
+ setFilterStates((currentFilters) => ({
2526
+ ...currentFilters,
2527
+ [String(column.columnKey)]: nextValue
2528
+ }));
2529
+ setInternalCurrent(1);
2530
+ emitTableChange({ ...paginationConfig ?? {}, current: 1, pageSize }, nextFilters, activeSorter, "filter");
2531
+ }
2532
+ function commitSelection(nextKeys, nativeEvent, changedRecord, selected, changedRows) {
2533
+ if (!rowSelection) {
2534
+ return;
2535
+ }
2536
+ const normalizedNextKeys = Array.from(new Set(nextKeys.map(String)));
2537
+ const originalKeys = normalizedNextKeys.map((key) => {
2538
+ const index = dataSource.findIndex((record, itemIndex) => String(getRecordKey(record, itemIndex, rowKey)) === key);
2539
+ return index >= 0 ? getRecordKey(dataSource[index], index, rowKey) : key;
2540
+ });
2541
+ const selectedRows = selectedRowsForKeys(dataSource, originalKeys, rowKey);
2542
+ if (rowSelection.selectedRowKeys === undefined) {
2543
+ setInternalSelectedKeys(originalKeys);
2544
+ }
2545
+ rowSelection.onChange?.(originalKeys, selectedRows);
2546
+ if (changedRecord && selected !== undefined) {
2547
+ rowSelection.onSelect?.(changedRecord, selected, selectedRows, nativeEvent);
2548
+ }
2549
+ if (changedRows) {
2550
+ rowSelection.onSelectAll?.(Boolean(selected), selectedRows, changedRows);
2551
+ }
2552
+ }
2553
+ function toggleRowSelection(record, index, event) {
2554
+ if (!rowSelection) {
2555
+ return;
2556
+ }
2557
+ const key = getRecordKey(record, index, rowKey);
2558
+ const keyString = String(key);
2559
+ const checked = event.currentTarget.checked;
2560
+ const nextKeys = rowSelection.type === "radio" ? checked ? [key] : [] : checked ? [...selectedKeys, key] : selectedKeys.filter((selectedKey) => String(selectedKey) !== keyString);
2561
+ commitSelection(nextKeys, event.nativeEvent, record, checked);
2562
+ }
2563
+ function toggleAllRows(event) {
2564
+ if (!rowSelection) {
2565
+ return;
2566
+ }
2567
+ const checked = event.currentTarget.checked;
2568
+ const selectableRows = pageData.filter((record, index) => {
2569
+ const checkboxProps = rowSelection.getCheckboxProps?.(record);
2570
+ return !checkboxProps?.disabled && getRecordKey(record, index, rowKey) !== undefined;
2571
+ });
2572
+ const pageKeys = selectableRows.map((record, index) => getRecordKey(record, index, rowKey));
2573
+ const pageKeySet = new Set(normalizeKeys(pageKeys));
2574
+ const nextKeys = checked ? [...selectedKeys, ...pageKeys] : selectedKeys.filter((key) => !pageKeySet.has(String(key)));
2575
+ commitSelection(nextKeys, event.nativeEvent, undefined, checked, selectableRows);
2576
+ }
2577
+ function toggleExpand(record, index) {
2578
+ if (!expandable?.expandedRowRender) {
2579
+ return;
2580
+ }
2581
+ const key = getRecordKey(record, index, rowKey);
2582
+ const keyString = String(key);
2583
+ const expanded = !expandedKeySet.has(keyString);
2584
+ const nextKeys = expanded ? [...expandedKeys, key] : expandedKeys.filter((expandedKey) => String(expandedKey) !== keyString);
2585
+ if (expandable.expandedRowKeys === undefined) {
2586
+ setInternalExpandedKeys(nextKeys);
2587
+ }
2588
+ expandable.onExpand?.(expanded, record);
2589
+ expandable.onExpandedRowsChange?.(nextKeys);
2590
+ }
2591
+ function renderSelectionHeader() {
2592
+ if (!rowSelection) {
2593
+ return null;
2594
+ }
2595
+ if (rowSelection.type === "radio" || rowSelection.hideSelectAll) {
2596
+ return /* @__PURE__ */ jsx11("th", {
2597
+ className: cn(tableHeaderCellClass, tableSelectionCellClass),
2598
+ children: rowSelection.columnTitle
2599
+ });
2600
+ }
2601
+ const pageKeys = pageData.map((record, index) => getRecordKey(record, index, rowKey));
2602
+ const allSelected = pageKeys.length > 0 && pageKeys.every((key) => selectedKeySet.has(String(key)));
2603
+ return /* @__PURE__ */ jsx11("th", {
2604
+ className: cn(tableHeaderCellClass, tableSelectionCellClass),
2605
+ children: /* @__PURE__ */ jsxs10("label", {
2606
+ children: [
2607
+ /* @__PURE__ */ jsx11("input", {
2608
+ type: "checkbox",
2609
+ "aria-label": "Select all rows",
2610
+ checked: allSelected,
2611
+ onChange: toggleAllRows
2612
+ }),
2613
+ hasNode(rowSelection.columnTitle) ? rowSelection.columnTitle : null
2614
+ ]
2615
+ })
2616
+ });
2617
+ }
2618
+ function renderHeaderCell(cell, index) {
2619
+ const { column } = cell;
2620
+ const title = column.title ?? dataIndexKey(column.dataIndex) ?? index + 1;
2621
+ const sortOrder = sortOrderFor(column, sortStates);
2622
+ const headerProps = column.onHeaderCell?.(column) ?? {};
2623
+ return /* @__PURE__ */ createElement("th", {
2624
+ ...headerProps,
2625
+ key: String(column.columnKey),
2626
+ className: cn(tableHeaderCellClass, column.className, headerProps.className),
2627
+ colSpan: cell.colSpan,
2628
+ rowSpan: cell.rowSpan,
2629
+ style: {
2630
+ width: column.width,
2631
+ textAlign: column.align,
2632
+ ...headerProps.style
2633
+ }
2634
+ }, /* @__PURE__ */ jsx11("span", {
2635
+ children: title
2636
+ }), column.sorter ? /* @__PURE__ */ jsx11("button", {
2637
+ type: "button",
2638
+ className: getTableSorterClasses(Boolean(sortOrder)),
2639
+ "aria-label": `Sort ${textFromNode(title, String(column.columnKey))}`,
2640
+ onClick: () => changeSorter(column),
2641
+ children: sortOrder === "ascend" ? "Asc" : sortOrder === "descend" ? "Desc" : "Sort"
2642
+ }) : null, column.filters?.length ? /* @__PURE__ */ jsxs10("select", {
2643
+ className: tableFilterClass,
2644
+ "aria-label": `Filter ${textFromNode(title, String(column.columnKey))}`,
2645
+ multiple: column.filterMultiple !== false,
2646
+ value: column.filterMultiple === false ? String((filterValueFor(column, filterStates) ?? [])[0] ?? "") : (filterValueFor(column, filterStates) ?? []).map(String),
2647
+ onChange: (event) => changeFilter(column, event),
2648
+ children: [
2649
+ column.filterMultiple === false ? /* @__PURE__ */ jsx11("option", {
2650
+ value: "",
2651
+ children: "All"
2652
+ }) : null,
2653
+ optionValues(column.filters).map((filter) => /* @__PURE__ */ jsx11("option", {
2654
+ value: String(filter.value),
2655
+ children: filter.text
2656
+ }, String(filter.value)))
2657
+ ]
2658
+ }) : null);
2659
+ }
2660
+ function renderCell(record, recordIndex, column) {
2661
+ const value = getValue(record, column.dataIndex);
2662
+ const rendered = column.render ? column.render(value, record, recordIndex) : value;
2663
+ const cellProps = column.onCell?.(record, recordIndex) ?? {};
2664
+ return /* @__PURE__ */ createElement("td", {
2665
+ ...cellProps,
2666
+ key: String(column.columnKey),
2667
+ className: cn(tableCellClass, column.className, cellProps.className),
2668
+ style: { textAlign: column.align, ...cellProps.style }
2669
+ }, hasNode(rendered) ? rendered : null);
2670
+ }
2671
+ function renderSelectionCell(record, index) {
2672
+ if (!rowSelection) {
2673
+ return null;
2674
+ }
2675
+ const key = getRecordKey(record, index, rowKey);
2676
+ const checked = selectedKeySet.has(String(key));
2677
+ const checkboxProps = rowSelection.getCheckboxProps?.(record) ?? {};
2678
+ const originNode = /* @__PURE__ */ jsx11("input", {
2679
+ ...checkboxProps,
2680
+ type: rowSelection.type === "radio" ? "radio" : "checkbox",
2681
+ "aria-label": `Select row ${index + 1}`,
2682
+ checked,
2683
+ onChange: (event) => toggleRowSelection(record, index, event)
2684
+ });
2685
+ return /* @__PURE__ */ jsx11("td", {
2686
+ className: cn(tableCellClass, tableSelectionCellClass),
2687
+ children: rowSelection.renderCell ? rowSelection.renderCell(checked, record, index, originNode) : originNode
2688
+ });
2689
+ }
2690
+ function renderExpandCell(record, index) {
2691
+ if (!expandable?.expandedRowRender) {
2692
+ return null;
2693
+ }
2694
+ const key = getRecordKey(record, index, rowKey);
2695
+ const expanded = expandedKeySet.has(String(key));
2696
+ const expandableRow = expandable.rowExpandable?.(record) ?? true;
2697
+ return /* @__PURE__ */ jsx11("td", {
2698
+ className: cn(tableCellClass, tableExpandCellClass),
2699
+ children: expandableRow ? /* @__PURE__ */ jsx11("button", {
2700
+ type: "button",
2701
+ className: tableExpandButtonClass,
2702
+ "aria-label": `${expanded ? "Collapse" : "Expand"} row ${index + 1}`,
2703
+ onClick: () => toggleExpand(record, index),
2704
+ children: expanded ? "-" : "+"
2705
+ }) : null
2706
+ });
2707
+ }
2708
+ function renderRow(record, index) {
2709
+ const key = getRecordKey(record, index, rowKey);
2710
+ const expanded = expandedKeySet.has(String(key));
2711
+ const selected = selectedKeySet.has(String(key));
2712
+ const row = /* @__PURE__ */ jsxs10("tr", {
2713
+ className: getTableRowClasses({ selected, expanded }),
2714
+ onClick: () => {
2715
+ if (expandable?.expandRowByClick) {
2716
+ toggleExpand(record, index);
2717
+ }
2718
+ },
2719
+ children: [
2720
+ renderSelectionCell(record, index),
2721
+ renderExpandCell(record, index),
2722
+ leaves.map((column) => renderCell(record, index, column))
2723
+ ]
2724
+ }, String(key));
2725
+ if (!expanded || !expandable?.expandedRowRender) {
2726
+ return row;
2727
+ }
2728
+ return /* @__PURE__ */ jsxs10(React9.Fragment, {
2729
+ children: [
2730
+ row,
2731
+ /* @__PURE__ */ jsx11("tr", {
2732
+ className: "table-expanded-row",
2733
+ children: /* @__PURE__ */ jsx11("td", {
2734
+ className: tableCellClass,
2735
+ colSpan: structuralColumnCount,
2736
+ children: expandable.expandedRowRender(record, index, 0, expanded)
2737
+ })
2738
+ })
2739
+ ]
2740
+ }, String(key));
2741
+ }
2742
+ const tableNode = /* @__PURE__ */ jsxs10("table", {
2743
+ className: getTableClasses({ bordered, size }),
2744
+ style: { tableLayout },
2745
+ children: [
2746
+ /* @__PURE__ */ jsx11("thead", {
2747
+ children: headerRows.map((row, rowIndex) => /* @__PURE__ */ jsxs10("tr", {
2748
+ children: [
2749
+ rowIndex === 0 ? renderSelectionHeader() : null,
2750
+ rowIndex === 0 && hasExpandable ? /* @__PURE__ */ jsx11("th", {
2751
+ className: cn(tableHeaderCellClass, tableExpandCellClass),
2752
+ children: expandable?.columnTitle
2753
+ }) : null,
2754
+ row.map(renderHeaderCell)
2755
+ ]
2756
+ }, rowIndex))
2757
+ }),
2758
+ /* @__PURE__ */ jsx11("tbody", {
2759
+ children: bodyEmpty ? /* @__PURE__ */ jsx11("tr", {
2760
+ children: /* @__PURE__ */ jsx11("td", {
2761
+ className: tableEmptyClass,
2762
+ colSpan: structuralColumnCount,
2763
+ children: locale?.emptyText ?? "No data"
2764
+ })
2765
+ }) : pageData.map(renderRow)
2766
+ }),
2767
+ renderSummary(summary, pageData, structuralColumnCount)
2768
+ ]
2769
+ });
2770
+ return /* @__PURE__ */ jsxs10("div", {
2771
+ ...props,
2772
+ ref,
2773
+ className: getTableWrapperClasses({ loading: spinning, className }),
2774
+ children: [
2775
+ scroll?.x || scroll?.y ? /* @__PURE__ */ jsx11("div", {
2776
+ style: {
2777
+ overflow: "auto",
2778
+ maxHeight: scroll.y,
2779
+ width: scroll.x === true ? "100%" : scroll.x
2780
+ },
2781
+ children: tableNode
2782
+ }) : tableNode,
2783
+ spinning ? /* @__PURE__ */ jsx11("div", {
2784
+ className: tableLoadingIndicatorClass,
2785
+ role: "status",
2786
+ children: typeof loading === "object" && loading.indicator ? loading.indicator : "Loading"
2787
+ }) : null,
2788
+ paginationConfig && !(paginationConfig.hideOnSinglePage && pageCount <= 1) ? /* @__PURE__ */ jsxs10("nav", {
2789
+ className: tablePaginationClass,
2790
+ "aria-label": "Table pagination",
2791
+ children: [
2792
+ /* @__PURE__ */ jsx11("button", {
2793
+ type: "button",
2794
+ className: tablePaginationButtonClass,
2795
+ disabled: paginationConfig.disabled || current <= 1,
2796
+ onClick: () => changePage(current - 1),
2797
+ children: "Previous"
2798
+ }),
2799
+ /* @__PURE__ */ jsx11("span", {
2800
+ className: tablePaginationInfoClass,
2801
+ children: paginationConfig.showTotal ? paginationConfig.showTotal(paginationConfig.total ?? sortedData.length, [
2802
+ bodyEmpty ? 0 : (current - 1) * pageSize + 1,
2803
+ Math.min(current * pageSize, sortedData.length)
2804
+ ]) : `${current} / ${pageCount}`
2805
+ }),
2806
+ /* @__PURE__ */ jsx11("button", {
2807
+ type: "button",
2808
+ className: tablePaginationButtonClass,
2809
+ disabled: paginationConfig.disabled || current >= pageCount,
2810
+ onClick: () => changePage(current + 1),
2811
+ children: "Next"
2812
+ })
2813
+ ]
2814
+ }) : null
2815
+ ]
2816
+ });
2817
+ }
2818
+ var TableWithRef = forwardRef8(TableRoot);
2819
+ var Table = Object.assign(TableWithRef, {
2820
+ Column,
2821
+ ColumnGroup,
2822
+ Summary,
2823
+ SELECTION_ALL: "SELECT_ALL",
2824
+ SELECTION_INVERT: "SELECT_INVERT",
2825
+ SELECTION_NONE: "SELECT_NONE",
2826
+ SELECTION_COLUMN: "SELECTION_COLUMN",
2827
+ EXPAND_COLUMN: "EXPAND_COLUMN"
2828
+ });
2829
+ Table.displayName = "Table";
2830
+ // src/components/dm-table/DmTable.tsx
2831
+ import { useMemo as useMemo8, useState as useState9 } from "react";
2832
+
2833
+ // src/classes/dm-table.ts
2834
+ var dmTableBaseClass = "dm-table";
2835
+ var dmTableSearchClass = "dm-table-search";
2836
+ var dmTableCardClass = "dm-table-card";
2837
+ var dmTableHeaderClass = "dm-table-header";
2838
+ var dmTableTitleClass = "dm-table-title";
2839
+ var dmTableExtraClass = "dm-table-extra";
2840
+ var dmTableIndicatorsClass = "dm-table-indicators";
2841
+ var dmTableTableExtraClass = "dm-table-table-extra";
2842
+ var dmTableColumnSettingClass = "dm-table-column-setting";
2843
+ var dmTablePaginationClass = "dm-table-pagination";
2844
+ function getDmTableClasses({ className }) {
2845
+ return cn(dmTableBaseClass, className);
2846
+ }
2847
+
2848
+ // src/components/dm-table/DmTable.tsx
2849
+ import { jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
2850
+ function mapAndFilter(list, mapper) {
2851
+ return list.map(mapper).filter((item) => item !== false && item != null);
2852
+ }
2853
+ function filterDmTableColumn(column) {
2854
+ if (column.onlySearch || column.hideInTable)
2855
+ return false;
2856
+ if (Array.isArray(column.children)) {
2857
+ const children = mapAndFilter(column.children, filterDmTableColumn);
2858
+ return children.length > 0 ? { ...column, children } : null;
2859
+ }
2860
+ return column;
2861
+ }
2862
+ function filterSearchColumn(column) {
2863
+ if (Array.isArray(column.children)) {
2864
+ const children = mapAndFilter(column.children, filterSearchColumn);
2865
+ return children.length > 0 ? { ...column, children } : null;
2866
+ }
2867
+ return column.search ? column : false;
2868
+ }
2869
+ function flattenSearchColumns(column) {
2870
+ return Array.isArray(column.children) ? column.children.flatMap(flattenSearchColumns) : [column];
2871
+ }
2872
+ function searchItems(columns) {
2873
+ return mapAndFilter(columns, filterSearchColumn).flatMap(flattenSearchColumns).map((column) => ({
2874
+ key: String(column.key ?? column.dataIndex),
2875
+ title: column.title,
2876
+ dataIndex: String(column.dataIndex ?? column.key),
2877
+ search: column.search || {
2878
+ type: "input",
2879
+ extraProps: {},
2880
+ formProps: {}
2881
+ }
2882
+ }));
2883
+ }
2884
+ function DmTable({
2885
+ name,
2886
+ extra,
2887
+ indicators,
2888
+ pagination,
2889
+ columns: inputColumns,
2890
+ columnSettingVisible = true,
2891
+ onColumnsChange,
2892
+ columnState,
2893
+ searchProps,
2894
+ tableExtra,
2895
+ className,
2896
+ dataSource,
2897
+ rowSelection,
2898
+ ...props
2899
+ }) {
2900
+ const tableColumns = useMemo8(() => mapAndFilter(inputColumns, filterDmTableColumn), [inputColumns]);
2901
+ const [columns, setColumns] = useState9(tableColumns);
2902
+ const [columnSettingsOpen, setColumnSettingsOpen] = useState9(false);
2903
+ const items = searchProps?.items?.length ? searchProps.items : searchItems(inputColumns);
2904
+ const paginationObj = typeof pagination === "object" ? pagination : undefined;
2905
+ const paginationProps = paginationObj ? Object.fromEntries(Object.entries(paginationObj).filter(([key]) => key !== "ref")) : {};
2906
+ const total = paginationObj?.total ?? dataSource?.length ?? 0;
2907
+ const selectedTotal = rowSelection?.selectedRowKeys?.length ?? 0;
2908
+ function resetColumns() {
2909
+ setColumns(tableColumns);
2910
+ onColumnsChange?.(tableColumns);
2911
+ if (columnState?.persistenceKey) {
2912
+ globalThis.localStorage?.removeItem(columnState.persistenceKey);
2913
+ }
2914
+ }
2915
+ return /* @__PURE__ */ jsxs11("div", {
2916
+ className: getDmTableClasses({ className }),
2917
+ children: [
2918
+ items.length > 0 || searchProps?.fastFilterItem ? /* @__PURE__ */ jsx12(Card, {
2919
+ className: dmTableSearchClass,
2920
+ padding: "md",
2921
+ children: /* @__PURE__ */ jsx12(DmSearch, {
2922
+ ...searchProps,
2923
+ items
2924
+ })
2925
+ }) : null,
2926
+ indicators ? /* @__PURE__ */ jsx12("div", {
2927
+ className: dmTableIndicatorsClass,
2928
+ children: indicators
2929
+ }) : null,
2930
+ /* @__PURE__ */ jsxs11(Card, {
2931
+ className: dmTableCardClass,
2932
+ padding: "md",
2933
+ children: [
2934
+ name || extra || columnSettingVisible ? /* @__PURE__ */ jsxs11("div", {
2935
+ className: dmTableHeaderClass,
2936
+ children: [
2937
+ /* @__PURE__ */ jsx12("div", {
2938
+ className: dmTableTitleClass,
2939
+ children: name
2940
+ }),
2941
+ /* @__PURE__ */ jsxs11("div", {
2942
+ className: dmTableExtraClass,
2943
+ children: [
2944
+ extra,
2945
+ columnSettingVisible ? /* @__PURE__ */ jsx12(Button, {
2946
+ type: "button",
2947
+ color: "secondary",
2948
+ appearance: "outline",
2949
+ className: dmTableColumnSettingClass,
2950
+ onClick: () => setColumnSettingsOpen((open) => !open),
2951
+ children: "Columns"
2952
+ }) : null
2953
+ ]
2954
+ })
2955
+ ]
2956
+ }) : null,
2957
+ columnSettingsOpen ? /* @__PURE__ */ jsx12("div", {
2958
+ role: "dialog",
2959
+ "aria-label": "Column settings",
2960
+ children: /* @__PURE__ */ jsx12(Button, {
2961
+ type: "button",
2962
+ onClick: resetColumns,
2963
+ children: "Reset columns"
2964
+ })
2965
+ }) : null,
2966
+ tableExtra ? /* @__PURE__ */ jsx12("div", {
2967
+ className: dmTableTableExtraClass,
2968
+ children: tableExtra
2969
+ }) : null,
2970
+ /* @__PURE__ */ jsx12(Table, {
2971
+ ...props,
2972
+ dataSource,
2973
+ rowSelection,
2974
+ size: props.size ?? "small",
2975
+ scroll: props.scroll ?? { x: 680 },
2976
+ columns,
2977
+ pagination: pagination ? {
2978
+ current: paginationObj?.current,
2979
+ defaultCurrent: paginationObj?.defaultCurrent,
2980
+ pageSize: paginationObj?.pageSize,
2981
+ defaultPageSize: paginationObj?.defaultPageSize,
2982
+ total,
2983
+ onChange: paginationObj?.onChange
2984
+ } : false
2985
+ }),
2986
+ pagination ? /* @__PURE__ */ jsx12(DmPagination, {
2987
+ ...paginationProps,
2988
+ className: dmTablePaginationClass,
2989
+ total,
2990
+ selectedTotal,
2991
+ showSizeChanger: true
2992
+ }) : null
2993
+ ]
2994
+ })
2995
+ ]
2996
+ });
2997
+ }
2998
+ DmTable.displayName = "DmTable";
2999
+ // src/components/dm-pro-table-inner/DmProTableInner.tsx
3000
+ import { jsx as jsx13 } from "react/jsx-runtime";
3001
+ function DmProTableInner({
3002
+ rowData,
3003
+ className,
3004
+ ...props
3005
+ }) {
3006
+ return /* @__PURE__ */ jsx13(DmTable, {
3007
+ ...props,
3008
+ className: getDmTableClasses({ className }),
3009
+ dataSource: rowData
3010
+ });
3011
+ }
3012
+ DmProTableInner.displayName = "DmProTableInner";
3013
+ // src/classes/dm-pro-table.ts
3014
+ var dmProTableBaseClass = "dm-pro-table";
3015
+ var dmProTableHeaderClass = "dm-pro-table-header";
3016
+ var dmProTableTitleClass = "dm-pro-table-title";
3017
+ var dmProTableToolbarClass = "dm-pro-table-toolbar";
3018
+ var dmProTableColumnSettingClass = "dm-pro-table-column-setting";
3019
+ function getDmProTableClasses({ className }) {
3020
+ return cn(dmProTableBaseClass, className);
3021
+ }
3022
+
3023
+ // src/components/dm-pro-table/DmProTable.tsx
3024
+ import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
3025
+ function renderToolbar(toolBarRender) {
3026
+ if (typeof toolBarRender === "function")
3027
+ return toolBarRender();
3028
+ return toolBarRender;
3029
+ }
3030
+ function DmProTable({
3031
+ headerTitle,
3032
+ toolBarRender,
3033
+ toolbarItems,
3034
+ showTitleBar = true,
3035
+ columnSettingVisible,
3036
+ className,
3037
+ ...props
3038
+ }) {
3039
+ return /* @__PURE__ */ jsxs12("div", {
3040
+ className: getDmProTableClasses({ className }),
3041
+ children: [
3042
+ showTitleBar ? /* @__PURE__ */ jsxs12("div", {
3043
+ className: dmProTableHeaderClass,
3044
+ children: [
3045
+ /* @__PURE__ */ jsx14("div", {
3046
+ className: dmProTableTitleClass,
3047
+ children: headerTitle
3048
+ }),
3049
+ /* @__PURE__ */ jsxs12("div", {
3050
+ className: dmProTableToolbarClass,
3051
+ children: [
3052
+ toolbarItems?.length ? /* @__PURE__ */ jsx14(DmToolbar, {
3053
+ items: toolbarItems
3054
+ }) : renderToolbar(toolBarRender),
3055
+ columnSettingVisible ? /* @__PURE__ */ jsx14(Button, {
3056
+ type: "button",
3057
+ color: "secondary",
3058
+ appearance: "outline",
3059
+ className: dmProTableColumnSettingClass,
3060
+ children: "Columns"
3061
+ }) : null
3062
+ ]
3063
+ })
3064
+ ]
3065
+ }) : null,
3066
+ /* @__PURE__ */ jsx14(DmProTableInner, {
3067
+ ...props,
3068
+ columnSettingVisible: showTitleBar ? false : columnSettingVisible
3069
+ })
3070
+ ]
3071
+ });
3072
+ }
3073
+ DmProTable.displayName = "DmProTable";
3074
+ export {
3075
+ DmProTable
3076
+ };