@d4gger/design-system 3.0.0 → 3.0.1

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 (403) hide show
  1. package/dist/{components/controlGroup/ControlGroup.cjs → _internal/floatingLayer.cjs} +11 -26
  2. package/dist/_internal/floatingLayer.cjs.map +7 -0
  3. package/dist/_internal/floatingLayer.d.cts +28 -0
  4. package/dist/_internal/floatingLayer.d.cts.map +1 -0
  5. package/dist/_internal/floatingLayer.d.mts +28 -0
  6. package/dist/_internal/floatingLayer.d.mts.map +1 -0
  7. package/dist/_internal/floatingLayer.d.ts +28 -0
  8. package/dist/_internal/floatingLayer.d.ts.map +1 -0
  9. package/dist/_internal/floatingLayer.js +11 -0
  10. package/dist/_internal/floatingLayer.js.map +7 -0
  11. package/dist/components/banner/Banner.cjs +105 -0
  12. package/dist/components/banner/Banner.cjs.map +7 -0
  13. package/dist/components/banner/Banner.d.cts +27 -0
  14. package/dist/components/banner/Banner.d.cts.map +1 -0
  15. package/dist/components/banner/Banner.d.mts +27 -0
  16. package/dist/components/banner/Banner.d.mts.map +1 -0
  17. package/dist/components/banner/Banner.d.ts +27 -0
  18. package/dist/components/banner/Banner.d.ts.map +1 -0
  19. package/dist/components/banner/Banner.js +80 -0
  20. package/dist/components/banner/Banner.js.map +7 -0
  21. package/dist/components/{controlGroup/controlGroup.props.cjs → banner/banner.props.cjs} +23 -16
  22. package/dist/components/banner/banner.props.cjs.map +7 -0
  23. package/dist/components/banner/banner.props.d.cts +32 -0
  24. package/dist/components/banner/banner.props.d.cts.map +1 -0
  25. package/dist/components/banner/banner.props.d.mts +32 -0
  26. package/dist/components/banner/banner.props.d.mts.map +1 -0
  27. package/dist/components/banner/banner.props.d.ts +32 -0
  28. package/dist/components/banner/banner.props.d.ts.map +1 -0
  29. package/dist/components/banner/banner.props.js +27 -0
  30. package/dist/components/banner/banner.props.js.map +7 -0
  31. package/dist/components/banner.css +60 -0
  32. package/dist/components/button-group.css +25 -0
  33. package/dist/components/button.css +9 -0
  34. package/dist/components/card.css +3 -0
  35. package/dist/components/carousel/Carousel.cjs +109 -39
  36. package/dist/components/carousel/Carousel.cjs.map +3 -3
  37. package/dist/components/carousel/Carousel.d.cts.map +1 -1
  38. package/dist/components/carousel/Carousel.d.mts.map +1 -1
  39. package/dist/components/carousel/Carousel.d.ts.map +1 -1
  40. package/dist/components/carousel/Carousel.js +111 -41
  41. package/dist/components/carousel/Carousel.js.map +3 -3
  42. package/dist/components/carousel.css +93 -26
  43. package/dist/components/chart/Chart.cjs +61 -11
  44. package/dist/components/chart/Chart.cjs.map +2 -2
  45. package/dist/components/chart/Chart.d.cts.map +1 -1
  46. package/dist/components/chart/Chart.d.mts.map +1 -1
  47. package/dist/components/chart/Chart.d.ts.map +1 -1
  48. package/dist/components/chart/Chart.js +62 -11
  49. package/dist/components/chart/Chart.js.map +2 -2
  50. package/dist/components/chart.css +10 -1
  51. package/dist/components/checkbox.css +14 -0
  52. package/dist/components/combobox/Combobox.cjs +3 -1
  53. package/dist/components/combobox/Combobox.cjs.map +2 -2
  54. package/dist/components/combobox/Combobox.d.cts.map +1 -1
  55. package/dist/components/combobox/Combobox.d.mts.map +1 -1
  56. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  57. package/dist/components/combobox/Combobox.js +3 -1
  58. package/dist/components/combobox/Combobox.js.map +2 -2
  59. package/dist/components/combobox.css +5 -1
  60. package/dist/components/command/Command.cjs +1 -1
  61. package/dist/components/command/Command.cjs.map +2 -2
  62. package/dist/components/command/Command.js +1 -1
  63. package/dist/components/command/Command.js.map +2 -2
  64. package/dist/components/context-menu.css +1 -1
  65. package/dist/components/copy-field.css +18 -0
  66. package/dist/components/copyField/CopyField.cjs +3 -3
  67. package/dist/components/copyField/CopyField.cjs.map +2 -2
  68. package/dist/components/copyField/CopyField.d.cts.map +1 -1
  69. package/dist/components/copyField/CopyField.d.mts.map +1 -1
  70. package/dist/components/copyField/CopyField.d.ts.map +1 -1
  71. package/dist/components/copyField/CopyField.js +3 -3
  72. package/dist/components/copyField/CopyField.js.map +2 -2
  73. package/dist/components/data-list.css +19 -4
  74. package/dist/components/data-table.css +190 -0
  75. package/dist/components/dataTable/DataTable.cjs +193 -68
  76. package/dist/components/dataTable/DataTable.cjs.map +3 -3
  77. package/dist/components/dataTable/DataTable.d.cts +29 -1
  78. package/dist/components/dataTable/DataTable.d.cts.map +1 -1
  79. package/dist/components/dataTable/DataTable.d.mts +29 -1
  80. package/dist/components/dataTable/DataTable.d.mts.map +1 -1
  81. package/dist/components/dataTable/DataTable.d.ts +29 -1
  82. package/dist/components/dataTable/DataTable.d.ts.map +1 -1
  83. package/dist/components/dataTable/DataTable.js +193 -68
  84. package/dist/components/dataTable/DataTable.js.map +2 -2
  85. package/dist/components/dataTable/DataTableContext.cjs +41 -0
  86. package/dist/components/dataTable/DataTableContext.cjs.map +7 -0
  87. package/dist/components/dataTable/DataTableContext.d.cts +23 -0
  88. package/dist/components/dataTable/DataTableContext.d.cts.map +1 -0
  89. package/dist/components/dataTable/DataTableContext.d.mts +23 -0
  90. package/dist/components/dataTable/DataTableContext.d.mts.map +1 -0
  91. package/dist/components/dataTable/DataTableContext.d.ts +23 -0
  92. package/dist/components/dataTable/DataTableContext.d.ts.map +1 -0
  93. package/dist/components/dataTable/DataTableContext.js +11 -0
  94. package/dist/components/dataTable/DataTableContext.js.map +7 -0
  95. package/dist/components/dataTable/DataTablePagination.cjs +72 -47
  96. package/dist/components/dataTable/DataTablePagination.cjs.map +2 -2
  97. package/dist/components/dataTable/DataTablePagination.d.cts +5 -1
  98. package/dist/components/dataTable/DataTablePagination.d.cts.map +1 -1
  99. package/dist/components/dataTable/DataTablePagination.d.mts +5 -1
  100. package/dist/components/dataTable/DataTablePagination.d.mts.map +1 -1
  101. package/dist/components/dataTable/DataTablePagination.d.ts +5 -1
  102. package/dist/components/dataTable/DataTablePagination.d.ts.map +1 -1
  103. package/dist/components/dataTable/DataTablePagination.js +75 -47
  104. package/dist/components/dataTable/DataTablePagination.js.map +2 -2
  105. package/dist/components/dataTable/DataTableToolbar.cjs +122 -93
  106. package/dist/components/dataTable/DataTableToolbar.cjs.map +2 -2
  107. package/dist/components/dataTable/DataTableToolbar.d.cts +6 -5
  108. package/dist/components/dataTable/DataTableToolbar.d.cts.map +1 -1
  109. package/dist/components/dataTable/DataTableToolbar.d.mts +6 -5
  110. package/dist/components/dataTable/DataTableToolbar.d.mts.map +1 -1
  111. package/dist/components/dataTable/DataTableToolbar.d.ts +6 -5
  112. package/dist/components/dataTable/DataTableToolbar.d.ts.map +1 -1
  113. package/dist/components/dataTable/DataTableToolbar.js +123 -94
  114. package/dist/components/dataTable/DataTableToolbar.js.map +2 -2
  115. package/dist/components/dataTable/dataTable.export.cjs +83 -0
  116. package/dist/components/dataTable/dataTable.export.cjs.map +7 -0
  117. package/dist/components/dataTable/dataTable.export.d.cts +11 -0
  118. package/dist/components/dataTable/dataTable.export.d.cts.map +1 -0
  119. package/dist/components/dataTable/dataTable.export.d.mts +11 -0
  120. package/dist/components/dataTable/dataTable.export.d.mts.map +1 -0
  121. package/dist/components/dataTable/dataTable.export.d.ts +11 -0
  122. package/dist/components/dataTable/dataTable.export.d.ts.map +1 -0
  123. package/dist/components/dataTable/dataTable.export.js +63 -0
  124. package/dist/components/dataTable/dataTable.export.js.map +7 -0
  125. package/dist/components/dataTable/dataTable.props.cjs +23 -1
  126. package/dist/components/dataTable/dataTable.props.cjs.map +2 -2
  127. package/dist/components/dataTable/dataTable.props.d.cts +21 -1
  128. package/dist/components/dataTable/dataTable.props.d.cts.map +1 -1
  129. package/dist/components/dataTable/dataTable.props.d.mts +21 -1
  130. package/dist/components/dataTable/dataTable.props.d.mts.map +1 -1
  131. package/dist/components/dataTable/dataTable.props.d.ts +21 -1
  132. package/dist/components/dataTable/dataTable.props.d.ts.map +1 -1
  133. package/dist/components/dataTable/dataTable.props.js +23 -1
  134. package/dist/components/dataTable/dataTable.props.js.map +2 -2
  135. package/dist/components/dialog/Dialog.cjs +2 -1
  136. package/dist/components/dialog/Dialog.cjs.map +2 -2
  137. package/dist/components/dialog/Dialog.d.cts.map +1 -1
  138. package/dist/components/dialog/Dialog.d.mts.map +1 -1
  139. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  140. package/dist/components/dialog/Dialog.js +2 -1
  141. package/dist/components/dialog/Dialog.js.map +2 -2
  142. package/dist/components/dropdown-menu.css +1 -1
  143. package/dist/components/empty-state.css +5 -0
  144. package/dist/components/fileUpload/FileUpload.cjs +10 -1
  145. package/dist/components/fileUpload/FileUpload.cjs.map +2 -2
  146. package/dist/components/fileUpload/FileUpload.d.cts +1 -0
  147. package/dist/components/fileUpload/FileUpload.d.cts.map +1 -1
  148. package/dist/components/fileUpload/FileUpload.d.mts +1 -0
  149. package/dist/components/fileUpload/FileUpload.d.mts.map +1 -1
  150. package/dist/components/fileUpload/FileUpload.d.ts +1 -0
  151. package/dist/components/fileUpload/FileUpload.d.ts.map +1 -1
  152. package/dist/components/fileUpload/FileUpload.js +10 -1
  153. package/dist/components/fileUpload/FileUpload.js.map +2 -2
  154. package/dist/components/filter-bar.css +380 -8
  155. package/dist/components/filterBar/FilterBar.cjs +630 -1
  156. package/dist/components/filterBar/FilterBar.cjs.map +2 -2
  157. package/dist/components/filterBar/FilterBar.d.cts +132 -2
  158. package/dist/components/filterBar/FilterBar.d.cts.map +1 -1
  159. package/dist/components/filterBar/FilterBar.d.mts +132 -2
  160. package/dist/components/filterBar/FilterBar.d.mts.map +1 -1
  161. package/dist/components/filterBar/FilterBar.d.ts +132 -2
  162. package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
  163. package/dist/components/filterBar/FilterBar.js +631 -2
  164. package/dist/components/filterBar/FilterBar.js.map +2 -2
  165. package/dist/components/floating-panel.css +1 -1
  166. package/dist/components/fontProvider/FontProvider.cjs +1 -1
  167. package/dist/components/fontProvider/FontProvider.cjs.map +1 -1
  168. package/dist/components/fontProvider/FontProvider.js +1 -1
  169. package/dist/components/fontProvider/FontProvider.js.map +1 -1
  170. package/dist/components/icon/Icon.cjs +25 -2
  171. package/dist/components/icon/Icon.cjs.map +2 -2
  172. package/dist/components/icon/Icon.d.cts +29 -1
  173. package/dist/components/icon/Icon.d.cts.map +1 -1
  174. package/dist/components/icon/Icon.d.mts +29 -1
  175. package/dist/components/icon/Icon.d.mts.map +1 -1
  176. package/dist/components/icon/Icon.d.ts +29 -1
  177. package/dist/components/icon/Icon.d.ts.map +1 -1
  178. package/dist/components/icon/Icon.js +33 -2
  179. package/dist/components/icon/Icon.js.map +2 -2
  180. package/dist/components/icon/icons.cjs +16 -0
  181. package/dist/components/icon/icons.cjs.map +2 -2
  182. package/dist/components/icon/icons.d.cts +40 -0
  183. package/dist/components/icon/icons.d.cts.map +1 -1
  184. package/dist/components/icon/icons.d.mts +40 -0
  185. package/dist/components/icon/icons.d.mts.map +1 -1
  186. package/dist/components/icon/icons.d.ts +40 -0
  187. package/dist/components/icon/icons.d.ts.map +1 -1
  188. package/dist/components/icon/icons.js +16 -0
  189. package/dist/components/icon/icons.js.map +2 -2
  190. package/dist/components/icon-button.css +29 -0
  191. package/dist/components/index.cjs +1 -1
  192. package/dist/components/index.cjs.map +2 -2
  193. package/dist/components/index.d.cts +1 -1
  194. package/dist/components/index.d.cts.map +1 -1
  195. package/dist/components/index.d.mts +1 -1
  196. package/dist/components/index.d.mts.map +1 -1
  197. package/dist/components/index.d.ts +1 -1
  198. package/dist/components/index.d.ts.map +1 -1
  199. package/dist/components/index.js +1 -1
  200. package/dist/components/index.js.map +1 -1
  201. package/dist/components/item/Item.cjs +1 -1
  202. package/dist/components/item/Item.cjs.map +2 -2
  203. package/dist/components/item/Item.js +1 -1
  204. package/dist/components/item/Item.js.map +2 -2
  205. package/dist/components/item.css +12 -1
  206. package/dist/components/marquee/Marquee.cjs +1 -1
  207. package/dist/components/marquee/Marquee.cjs.map +2 -2
  208. package/dist/components/marquee/Marquee.js +1 -1
  209. package/dist/components/marquee/Marquee.js.map +2 -2
  210. package/dist/components/marquee.css +6 -0
  211. package/dist/components/menu/Menu.cjs +3 -1
  212. package/dist/components/menu/Menu.cjs.map +2 -2
  213. package/dist/components/menu/Menu.d.cts.map +1 -1
  214. package/dist/components/menu/Menu.d.mts.map +1 -1
  215. package/dist/components/menu/Menu.d.ts.map +1 -1
  216. package/dist/components/menu/Menu.js +3 -1
  217. package/dist/components/menu/Menu.js.map +2 -2
  218. package/dist/components/menubar.css +1 -1
  219. package/dist/components/metric.css +5 -0
  220. package/dist/components/pagination/Pagination.cjs +143 -17
  221. package/dist/components/pagination/Pagination.cjs.map +2 -2
  222. package/dist/components/pagination/Pagination.d.cts +64 -4
  223. package/dist/components/pagination/Pagination.d.cts.map +1 -1
  224. package/dist/components/pagination/Pagination.d.mts +64 -4
  225. package/dist/components/pagination/Pagination.d.mts.map +1 -1
  226. package/dist/components/pagination/Pagination.d.ts +64 -4
  227. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  228. package/dist/components/pagination/Pagination.js +143 -17
  229. package/dist/components/pagination/Pagination.js.map +2 -2
  230. package/dist/components/pagination.css +50 -8
  231. package/dist/components/phoneInput/PhoneInput.cjs +18 -13
  232. package/dist/components/phoneInput/PhoneInput.cjs.map +2 -2
  233. package/dist/components/phoneInput/PhoneInput.d.cts.map +1 -1
  234. package/dist/components/phoneInput/PhoneInput.d.mts.map +1 -1
  235. package/dist/components/phoneInput/PhoneInput.d.ts.map +1 -1
  236. package/dist/components/phoneInput/PhoneInput.js +19 -14
  237. package/dist/components/phoneInput/PhoneInput.js.map +2 -2
  238. package/dist/components/popover/Popover.cjs +2 -1
  239. package/dist/components/popover/Popover.cjs.map +2 -2
  240. package/dist/components/popover/Popover.d.cts.map +1 -1
  241. package/dist/components/popover/Popover.d.mts.map +1 -1
  242. package/dist/components/popover/Popover.d.ts.map +1 -1
  243. package/dist/components/popover/Popover.js +2 -1
  244. package/dist/components/popover/Popover.js.map +2 -2
  245. package/dist/components/prose.css +1 -1
  246. package/dist/components/qr-code.css +5 -15
  247. package/dist/components/radio-group.css +19 -0
  248. package/dist/components/radioGroup/RadioGroup.cjs +3 -2
  249. package/dist/components/radioGroup/RadioGroup.cjs.map +2 -2
  250. package/dist/components/radioGroup/RadioGroup.d.cts.map +1 -1
  251. package/dist/components/radioGroup/RadioGroup.d.mts.map +1 -1
  252. package/dist/components/radioGroup/RadioGroup.d.ts.map +1 -1
  253. package/dist/components/radioGroup/RadioGroup.js +3 -2
  254. package/dist/components/radioGroup/RadioGroup.js.map +2 -2
  255. package/dist/components/radioGroup/radioGroup.props.cjs +1 -1
  256. package/dist/components/radioGroup/radioGroup.props.cjs.map +2 -2
  257. package/dist/components/radioGroup/radioGroup.props.d.cts +1 -1
  258. package/dist/components/radioGroup/radioGroup.props.d.mts +1 -1
  259. package/dist/components/radioGroup/radioGroup.props.d.ts +1 -1
  260. package/dist/components/radioGroup/radioGroup.props.js +1 -1
  261. package/dist/components/radioGroup/radioGroup.props.js.map +2 -2
  262. package/dist/components/rating.css +12 -0
  263. package/dist/components/result.css +2 -1
  264. package/dist/components/richTextEditor/RichTextEditor.cjs +11 -3
  265. package/dist/components/richTextEditor/RichTextEditor.cjs.map +2 -2
  266. package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
  267. package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
  268. package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
  269. package/dist/components/richTextEditor/RichTextEditor.js +11 -3
  270. package/dist/components/richTextEditor/RichTextEditor.js.map +2 -2
  271. package/dist/components/segmented-control.css +80 -4
  272. package/dist/components/segmentedControl/SegmentedControl.cjs +18 -5
  273. package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
  274. package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
  275. package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
  276. package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
  277. package/dist/components/segmentedControl/SegmentedControl.js +18 -5
  278. package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
  279. package/dist/components/segmentedControl/segmentedControl.props.cjs +10 -0
  280. package/dist/components/segmentedControl/segmentedControl.props.cjs.map +2 -2
  281. package/dist/components/segmentedControl/segmentedControl.props.d.cts +9 -0
  282. package/dist/components/segmentedControl/segmentedControl.props.d.cts.map +1 -1
  283. package/dist/components/segmentedControl/segmentedControl.props.d.mts +9 -0
  284. package/dist/components/segmentedControl/segmentedControl.props.d.mts.map +1 -1
  285. package/dist/components/segmentedControl/segmentedControl.props.d.ts +9 -0
  286. package/dist/components/segmentedControl/segmentedControl.props.d.ts.map +1 -1
  287. package/dist/components/segmentedControl/segmentedControl.props.js +10 -0
  288. package/dist/components/segmentedControl/segmentedControl.props.js.map +2 -2
  289. package/dist/components/select/Select.cjs +3 -1
  290. package/dist/components/select/Select.cjs.map +2 -2
  291. package/dist/components/select/Select.d.cts.map +1 -1
  292. package/dist/components/select/Select.d.mts.map +1 -1
  293. package/dist/components/select/Select.d.ts.map +1 -1
  294. package/dist/components/select/Select.js +3 -1
  295. package/dist/components/select/Select.js.map +2 -2
  296. package/dist/components/select.css +1 -1
  297. package/dist/components/sonner.css +1 -1
  298. package/dist/components/sortableList/SortableList.cjs +8 -2
  299. package/dist/components/sortableList/SortableList.cjs.map +2 -2
  300. package/dist/components/sortableList/SortableList.d.cts.map +1 -1
  301. package/dist/components/sortableList/SortableList.d.mts.map +1 -1
  302. package/dist/components/sortableList/SortableList.d.ts.map +1 -1
  303. package/dist/components/sortableList/SortableList.js +8 -2
  304. package/dist/components/sortableList/SortableList.js.map +2 -2
  305. package/dist/components/stat-card.css +2 -0
  306. package/dist/components/table/Table.cjs +3 -2
  307. package/dist/components/table/Table.cjs.map +2 -2
  308. package/dist/components/table/Table.d.cts.map +1 -1
  309. package/dist/components/table/Table.d.mts.map +1 -1
  310. package/dist/components/table/Table.d.ts.map +1 -1
  311. package/dist/components/table/Table.js +3 -2
  312. package/dist/components/table/Table.js.map +2 -2
  313. package/dist/components/table/table.props.cjs +6 -0
  314. package/dist/components/table/table.props.cjs.map +2 -2
  315. package/dist/components/table/table.props.d.cts +5 -0
  316. package/dist/components/table/table.props.d.cts.map +1 -1
  317. package/dist/components/table/table.props.d.mts +5 -0
  318. package/dist/components/table/table.props.d.mts.map +1 -1
  319. package/dist/components/table/table.props.d.ts +5 -0
  320. package/dist/components/table/table.props.d.ts.map +1 -1
  321. package/dist/components/table/table.props.js +6 -0
  322. package/dist/components/table/table.props.js.map +2 -2
  323. package/dist/components/table.css +20 -13
  324. package/dist/components/tabs.css +10 -0
  325. package/dist/components/timeline.css +54 -18
  326. package/dist/components/toast.css +33 -1
  327. package/dist/components/toggle-group.css +5 -0
  328. package/dist/components.css +1 -2
  329. package/dist/docs/README.md +1 -1
  330. package/dist/docs/component-contract.md +4 -4
  331. package/dist/docs/component-index.json +9 -9
  332. package/dist/docs/components/banner.md +152 -0
  333. package/dist/docs/components/button-group.md +4 -3
  334. package/dist/docs/components/button.md +2 -2
  335. package/dist/docs/components/card.md +1 -0
  336. package/dist/docs/components/carousel.md +55 -32
  337. package/dist/docs/components/chart.md +25 -7
  338. package/dist/docs/components/checkbox.md +4 -0
  339. package/dist/docs/components/combobox.md +3 -1
  340. package/dist/docs/components/command.md +2 -2
  341. package/dist/docs/components/copy-field.md +2 -2
  342. package/dist/docs/components/data-list.md +15 -3
  343. package/dist/docs/components/data-table.md +98 -17
  344. package/dist/docs/components/dialog.md +4 -0
  345. package/dist/docs/components/dropdown-menu.md +2 -1
  346. package/dist/docs/components/empty-state.md +3 -1
  347. package/dist/docs/components/file-upload.md +1 -0
  348. package/dist/docs/components/filter-bar.md +193 -8
  349. package/dist/docs/components/floating-panel.md +8 -8
  350. package/dist/docs/components/icon-button.md +4 -1
  351. package/dist/docs/components/item.md +18 -13
  352. package/dist/docs/components/marquee.md +2 -2
  353. package/dist/docs/components/menu.md +4 -1
  354. package/dist/docs/components/metric.md +4 -1
  355. package/dist/docs/components/pagination.md +88 -17
  356. package/dist/docs/components/pills.md +1 -1
  357. package/dist/docs/components/popover.md +2 -0
  358. package/dist/docs/components/prose.md +5 -1
  359. package/dist/docs/components/qr-code.md +14 -13
  360. package/dist/docs/components/radio-group.md +5 -2
  361. package/dist/docs/components/rating.md +2 -0
  362. package/dist/docs/components/result.md +6 -0
  363. package/dist/docs/components/segmented-control.md +7 -2
  364. package/dist/docs/components/select.md +3 -2
  365. package/dist/docs/components/sidebar.md +3 -1
  366. package/dist/docs/components/sonner.md +1 -1
  367. package/dist/docs/components/sortable-list.md +2 -0
  368. package/dist/docs/components/stat-card.md +5 -4
  369. package/dist/docs/components/stepper.md +1 -0
  370. package/dist/docs/components/table.md +14 -5
  371. package/dist/docs/components/tag.md +4 -2
  372. package/dist/docs/components/timeline.md +9 -5
  373. package/dist/docs/components/toast.md +1 -1
  374. package/dist/docs/components/toggle-group.md +2 -1
  375. package/dist/fonts.css +1 -1
  376. package/dist/generated/tokens.cjs +1 -1
  377. package/dist/generated/tokens.cjs.map +1 -1
  378. package/dist/generated/tokens.js +1 -1
  379. package/dist/generated/tokens.js.map +1 -1
  380. package/dist/motion.css +18 -3
  381. package/dist/styles.css +1249 -292
  382. package/dist/tokens.css +21 -15
  383. package/package.json +1 -1
  384. package/dist/components/control-group.css +0 -142
  385. package/dist/components/controlGroup/ControlGroup.cjs.map +0 -7
  386. package/dist/components/controlGroup/ControlGroup.d.cts +0 -16
  387. package/dist/components/controlGroup/ControlGroup.d.cts.map +0 -1
  388. package/dist/components/controlGroup/ControlGroup.d.mts +0 -16
  389. package/dist/components/controlGroup/ControlGroup.d.mts.map +0 -1
  390. package/dist/components/controlGroup/ControlGroup.d.ts +0 -16
  391. package/dist/components/controlGroup/ControlGroup.d.ts.map +0 -1
  392. package/dist/components/controlGroup/ControlGroup.js +0 -26
  393. package/dist/components/controlGroup/ControlGroup.js.map +0 -7
  394. package/dist/components/controlGroup/controlGroup.props.cjs.map +0 -7
  395. package/dist/components/controlGroup/controlGroup.props.d.cts +0 -18
  396. package/dist/components/controlGroup/controlGroup.props.d.cts.map +0 -1
  397. package/dist/components/controlGroup/controlGroup.props.d.mts +0 -18
  398. package/dist/components/controlGroup/controlGroup.props.d.mts.map +0 -1
  399. package/dist/components/controlGroup/controlGroup.props.d.ts +0 -18
  400. package/dist/components/controlGroup/controlGroup.props.d.ts.map +0 -1
  401. package/dist/components/controlGroup/controlGroup.props.js +0 -20
  402. package/dist/components/controlGroup/controlGroup.props.js.map +0 -7
  403. package/dist/docs/components/control-group.md +0 -261
@@ -9,8 +9,12 @@ type DataTablePaginationProps = {
9
9
  onPageSizeChange?: (pageSize: number) => void;
10
10
  className?: string;
11
11
  siblingCount?: number;
12
+ align?: 'start' | 'center' | 'end';
13
+ showFirstLast?: boolean;
14
+ showPageInput?: boolean;
15
+ dense?: boolean;
12
16
  };
13
- declare function DataTablePagination({ page: controlledPage, defaultPage, pageSize: controlledPageSize, defaultPageSize, pageSizeOptions, total, onPageChange, onPageSizeChange, className, }: DataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
17
+ declare function DataTablePagination({ page: controlledPage, defaultPage, pageSize: controlledPageSize, defaultPageSize, pageSizeOptions, total, onPageChange, onPageSizeChange, className, align, showFirstLast, showPageInput, dense, }: DataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
14
18
  declare namespace DataTablePagination {
15
19
  var displayName: string;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataTablePagination.d.mts","sourceRoot":"","sources":["../../../src/components/dataTable/DataTablePagination.tsx"],"names":[],"mappings":"AAwCA,KAAK,wBAAwB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,iBAAS,mBAAmB,CAAC,EAC3B,IAAI,EAAE,cAAc,EACpB,WAAe,EACf,QAAQ,EAAE,kBAAkB,EAC5B,eAAoB,EACpB,eAAiC,EACjC,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,EAAE,wBAAwB,2CA0G1B;kBApHQ,mBAAmB;;;AAuH5B,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC9B,YAAY,EAAE,wBAAwB,EAAE,CAAA"}
1
+ {"version":3,"file":"DataTablePagination.d.mts","sourceRoot":"","sources":["../../../src/components/dataTable/DataTablePagination.tsx"],"names":[],"mappings":"AA6BA,KAAK,wBAAwB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAQD,iBAAS,mBAAmB,CAAC,EAC3B,IAAI,EAAE,cAAc,EACpB,WAAe,EACf,QAAQ,EAAE,kBAAkB,EAC5B,eAAoB,EACpB,eAAmC,EACnC,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,aAAqB,EACrB,aAAqB,EACrB,KAAa,GACd,EAAE,wBAAwB,2CAqI1B;kBAnJQ,mBAAmB;;;AAsJ5B,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC9B,YAAY,EAAE,wBAAwB,EAAE,CAAA"}
@@ -9,8 +9,12 @@ type DataTablePaginationProps = {
9
9
  onPageSizeChange?: (pageSize: number) => void;
10
10
  className?: string;
11
11
  siblingCount?: number;
12
+ align?: 'start' | 'center' | 'end';
13
+ showFirstLast?: boolean;
14
+ showPageInput?: boolean;
15
+ dense?: boolean;
12
16
  };
13
- declare function DataTablePagination({ page: controlledPage, defaultPage, pageSize: controlledPageSize, defaultPageSize, pageSizeOptions, total, onPageChange, onPageSizeChange, className, }: DataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
17
+ declare function DataTablePagination({ page: controlledPage, defaultPage, pageSize: controlledPageSize, defaultPageSize, pageSizeOptions, total, onPageChange, onPageSizeChange, className, align, showFirstLast, showPageInput, dense, }: DataTablePaginationProps): import("react/jsx-runtime").JSX.Element;
14
18
  declare namespace DataTablePagination {
15
19
  var displayName: string;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataTablePagination.d.ts","sourceRoot":"","sources":["../../../src/components/dataTable/DataTablePagination.tsx"],"names":[],"mappings":"AAwCA,KAAK,wBAAwB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,iBAAS,mBAAmB,CAAC,EAC3B,IAAI,EAAE,cAAc,EACpB,WAAe,EACf,QAAQ,EAAE,kBAAkB,EAC5B,eAAoB,EACpB,eAAiC,EACjC,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,EAAE,wBAAwB,2CA0G1B;kBApHQ,mBAAmB;;;AAuH5B,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC9B,YAAY,EAAE,wBAAwB,EAAE,CAAA"}
1
+ {"version":3,"file":"DataTablePagination.d.ts","sourceRoot":"","sources":["../../../src/components/dataTable/DataTablePagination.tsx"],"names":[],"mappings":"AA6BA,KAAK,wBAAwB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAQD,iBAAS,mBAAmB,CAAC,EAC3B,IAAI,EAAE,cAAc,EACpB,WAAe,EACf,QAAQ,EAAE,kBAAkB,EAC5B,eAAoB,EACpB,eAAmC,EACnC,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,aAAqB,EACrB,aAAqB,EACrB,KAAa,GACd,EAAE,wBAAwB,2CAqI1B;kBAnJQ,mBAAmB;;;AAsJ5B,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC9B,YAAY,EAAE,wBAAwB,EAAE,CAAA"}
@@ -6,9 +6,12 @@ import {
6
6
  Pagination,
7
7
  PaginationContent,
8
8
  PaginationEllipsis,
9
+ PaginationFirst,
9
10
  PaginationItem,
11
+ PaginationLast,
10
12
  PaginationLink,
11
13
  PaginationNext,
14
+ PaginationPageInput,
12
15
  PaginationPageSize,
13
16
  PaginationPrevious
14
17
  } from "../pagination/Pagination.js";
@@ -17,32 +20,29 @@ const DATA_TABLE_PAGINATION_STYLE = {
17
20
  display: "flex",
18
21
  alignItems: "center",
19
22
  justifyContent: "space-between",
23
+ flexWrap: "wrap",
20
24
  padding: "var(--dsx-space-sm) var(--dsx-space-md)",
21
25
  gap: "var(--dsx-space-sm)"
22
26
  };
23
- const DATA_TABLE_PAGINATION_INFO_STYLE = {
24
- display: "flex",
25
- alignItems: "center",
26
- gap: "var(--dsx-space-xs)",
27
- fontSize: "var(--dsx-font-size-xs)",
28
- color: "var(--dsx-color-on-surface-variant)",
29
- whiteSpace: "nowrap"
30
- };
31
- const DATA_TABLE_PAGINATION_CONTROLS_STYLE = {
32
- display: "flex",
33
- alignItems: "center",
34
- gap: "var(--dsx-space-xs)"
27
+ const DATA_TABLE_PAGINATION_JUSTIFY_BY_ALIGN = {
28
+ start: "flex-start",
29
+ center: "center",
30
+ end: "flex-end"
35
31
  };
36
32
  function DataTablePagination({
37
33
  page: controlledPage,
38
34
  defaultPage = 1,
39
35
  pageSize: controlledPageSize,
40
36
  defaultPageSize = 10,
41
- pageSizeOptions = [5, 10, 20, 50],
37
+ pageSizeOptions = [10, 25, 50, 100],
42
38
  total,
43
39
  onPageChange,
44
40
  onPageSizeChange,
45
- className
41
+ className,
42
+ align,
43
+ showFirstLast = false,
44
+ showPageInput = false,
45
+ dense = false
46
46
  }) {
47
47
  const [internalPage, setInternalPage] = React.useState(defaultPage);
48
48
  const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize);
@@ -79,18 +79,73 @@ function DataTablePagination({
79
79
  setInternalPage(newPage);
80
80
  }
81
81
  onPageSizeChange?.(newPageSize);
82
- onPageChange?.(newPage);
83
82
  }
84
83
  const pageNumbers = buildPageNumbers(safePage, totalPages);
85
84
  return /* @__PURE__ */ jsxs(
86
85
  "div",
87
86
  {
88
87
  className: classNames("dsx-data-table-pagination", className),
89
- style: DATA_TABLE_PAGINATION_STYLE,
88
+ style: align ? { ...DATA_TABLE_PAGINATION_STYLE, justifyContent: DATA_TABLE_PAGINATION_JUSTIFY_BY_ALIGN[align] } : DATA_TABLE_PAGINATION_STYLE,
90
89
  children: [
91
- /* @__PURE__ */ jsxs("div", { style: DATA_TABLE_PAGINATION_INFO_STYLE, children: [
92
- /* @__PURE__ */ jsx("span", { children: total > 0 ? `${startRow}\u2013${endRow} of ${total}` : "0 rows" }),
93
- /* @__PURE__ */ jsx("span", { style: { margin: "0 var(--dsx-space-xs)", color: "var(--dsx-color-outline)" }, children: "|" }),
90
+ /* @__PURE__ */ jsx("div", { className: "dsx-data-table-pagination__info", role: "status", "aria-live": "polite", children: total > 0 ? `${startRow}\u2013${endRow} of ${total}` : "0 rows" }),
91
+ /* @__PURE__ */ jsxs("div", { className: "dsx-data-table-pagination__navigation", children: [
92
+ /* @__PURE__ */ jsx(Pagination, { "aria-label": "Table pagination", children: /* @__PURE__ */ jsxs(PaginationContent, { children: [
93
+ showFirstLast ? /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
94
+ PaginationFirst,
95
+ {
96
+ disabled: safePage <= 1,
97
+ onClick: () => handlePageChange(1)
98
+ }
99
+ ) }) : null,
100
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
101
+ PaginationPrevious,
102
+ {
103
+ disabled: safePage <= 1,
104
+ onClick: () => handlePageChange(safePage - 1)
105
+ }
106
+ ) }),
107
+ pageNumbers.map(
108
+ (pageOrEllipsis, index) => pageOrEllipsis === "ellipsis" ? /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }, `ellipsis-${index}`) : /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
109
+ PaginationLink,
110
+ {
111
+ active: safePage === pageOrEllipsis,
112
+ onClick: () => handlePageChange(pageOrEllipsis),
113
+ "aria-label": `Page ${pageOrEllipsis}`,
114
+ children: pageOrEllipsis
115
+ }
116
+ ) }, pageOrEllipsis)
117
+ ),
118
+ /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
119
+ PaginationNext,
120
+ {
121
+ disabled: safePage >= totalPages,
122
+ onClick: () => handlePageChange(safePage + 1)
123
+ }
124
+ ) }),
125
+ showFirstLast ? /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
126
+ PaginationLast,
127
+ {
128
+ disabled: safePage >= totalPages,
129
+ onClick: () => handlePageChange(totalPages)
130
+ }
131
+ ) }) : null
132
+ ] }) }),
133
+ !showPageInput && !dense ? /* @__PURE__ */ jsxs("span", { className: "dsx-data-table-pagination__page-status", children: [
134
+ "Page ",
135
+ safePage,
136
+ " of ",
137
+ totalPages
138
+ ] }) : null,
139
+ showPageInput ? /* @__PURE__ */ jsx(
140
+ PaginationPageInput,
141
+ {
142
+ page: safePage,
143
+ totalPages,
144
+ onPageChange: handlePageChange
145
+ }
146
+ ) : null
147
+ ] }),
148
+ !dense ? /* @__PURE__ */ jsxs("div", { className: "dsx-data-table-pagination__page-size", children: [
94
149
  /* @__PURE__ */ jsx("span", { children: "Rows per page:" }),
95
150
  /* @__PURE__ */ jsx(
96
151
  PaginationPageSize,
@@ -101,34 +156,7 @@ function DataTablePagination({
101
156
  "aria-label": "Rows per page"
102
157
  }
103
158
  )
104
- ] }),
105
- /* @__PURE__ */ jsx("div", { style: DATA_TABLE_PAGINATION_CONTROLS_STYLE, children: /* @__PURE__ */ jsx(Pagination, { children: /* @__PURE__ */ jsxs(PaginationContent, { children: [
106
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
107
- PaginationPrevious,
108
- {
109
- disabled: safePage <= 1,
110
- onClick: () => handlePageChange(safePage - 1)
111
- }
112
- ) }),
113
- pageNumbers.map(
114
- (pageOrEllipsis, index) => pageOrEllipsis === "ellipsis" ? /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(PaginationEllipsis, {}) }, `ellipsis-${index}`) : /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
115
- PaginationLink,
116
- {
117
- active: safePage === pageOrEllipsis,
118
- onClick: () => handlePageChange(pageOrEllipsis),
119
- "aria-label": `Page ${pageOrEllipsis}`,
120
- children: pageOrEllipsis
121
- }
122
- ) }, pageOrEllipsis)
123
- ),
124
- /* @__PURE__ */ jsx(PaginationItem, { children: /* @__PURE__ */ jsx(
125
- PaginationNext,
126
- {
127
- disabled: safePage >= totalPages,
128
- onClick: () => handlePageChange(safePage + 1)
129
- }
130
- ) })
131
- ] }) }) })
159
+ ] }) : null
132
160
  ]
133
161
  }
134
162
  );
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/dataTable/DataTablePagination.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport classNames from 'classnames'\n\nimport {\n buildPageNumbers,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPageSize,\n PaginationPrevious,\n} from '../pagination/Pagination'\n\nconst DATA_TABLE_PAGINATION_STYLE: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 'var(--dsx-space-sm) var(--dsx-space-md)',\n gap: 'var(--dsx-space-sm)',\n}\n\nconst DATA_TABLE_PAGINATION_INFO_STYLE: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--dsx-space-xs)',\n fontSize: 'var(--dsx-font-size-xs)',\n color: 'var(--dsx-color-on-surface-variant)',\n whiteSpace: 'nowrap',\n}\n\nconst DATA_TABLE_PAGINATION_CONTROLS_STYLE: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--dsx-space-xs)',\n}\n\ntype DataTablePaginationProps = {\n page?: number\n defaultPage?: number\n pageSize?: number\n defaultPageSize?: number\n pageSizeOptions?: number[]\n total: number\n onPageChange?: (page: number) => void\n onPageSizeChange?: (pageSize: number) => void\n className?: string\n siblingCount?: number\n}\n\nfunction DataTablePagination({\n page: controlledPage,\n defaultPage = 1,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n pageSizeOptions = [5, 10, 20, 50],\n total,\n onPageChange,\n onPageSizeChange,\n className,\n}: DataTablePaginationProps) {\n const [internalPage, setInternalPage] = React.useState(defaultPage)\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize)\n\n const isPageControlled = controlledPage !== undefined\n const isPageSizeControlled = controlledPageSize !== undefined\n\n const currentPage = isPageControlled ? controlledPage : internalPage\n const currentPageSize = isPageSizeControlled ? controlledPageSize : internalPageSize\n\n const totalPages = Math.max(1, Math.ceil(total / currentPageSize))\n const safePage = Math.min(currentPage, totalPages)\n\n const startRow = (safePage - 1) * currentPageSize + 1\n const endRow = Math.min(safePage * currentPageSize, total)\n\n React.useEffect(() => {\n if (safePage !== currentPage) {\n if (!isPageControlled) {\n setInternalPage(safePage)\n }\n onPageChange?.(safePage)\n }\n }, [totalPages, safePage, currentPage, isPageControlled, onPageChange])\n\n function handlePageChange(newPage: number) {\n const clampedPage = Math.max(1, Math.min(newPage, totalPages))\n if (!isPageControlled) {\n setInternalPage(clampedPage)\n }\n onPageChange?.(clampedPage)\n }\n\n function handlePageSizeChange(newPageSize: number) {\n if (!isPageSizeControlled) {\n setInternalPageSize(newPageSize)\n }\n const newTotalPages = Math.max(1, Math.ceil(total / newPageSize))\n const newPage = Math.min(safePage, newTotalPages)\n if (!isPageControlled) {\n setInternalPage(newPage)\n }\n onPageSizeChange?.(newPageSize)\n onPageChange?.(newPage)\n }\n\n const pageNumbers = buildPageNumbers(safePage, totalPages)\n\n return (\n <div\n className={classNames('dsx-data-table-pagination', className)}\n style={DATA_TABLE_PAGINATION_STYLE}\n >\n <div style={DATA_TABLE_PAGINATION_INFO_STYLE}>\n <span>\n {total > 0 ? `${startRow}\u2013${endRow} of ${total}` : '0 rows'}\n </span>\n <span style={{ margin: '0 var(--dsx-space-xs)', color: 'var(--dsx-color-outline)' }}>|</span>\n <span>Rows per page:</span>\n <PaginationPageSize\n value={currentPageSize}\n options={pageSizeOptions}\n onChange={handlePageSizeChange}\n aria-label=\"Rows per page\"\n />\n </div>\n\n <div style={DATA_TABLE_PAGINATION_CONTROLS_STYLE}>\n <Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious\n disabled={safePage <= 1}\n onClick={() => handlePageChange(safePage - 1)}\n />\n </PaginationItem>\n\n {pageNumbers.map((pageOrEllipsis, index) =>\n pageOrEllipsis === 'ellipsis' ? (\n <PaginationItem key={`ellipsis-${index}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={pageOrEllipsis}>\n <PaginationLink\n active={safePage === pageOrEllipsis}\n onClick={() => handlePageChange(pageOrEllipsis)}\n aria-label={`Page ${pageOrEllipsis}`}\n >\n {pageOrEllipsis}\n </PaginationLink>\n </PaginationItem>\n ),\n )}\n\n <PaginationItem>\n <PaginationNext\n disabled={safePage >= totalPages}\n onClick={() => handlePageChange(safePage + 1)}\n />\n </PaginationItem>\n </PaginationContent>\n </Pagination>\n </div>\n </div>\n )\n}\nDataTablePagination.displayName = 'DataTablePagination'\n\nexport { DataTablePagination }\nexport type { DataTablePaginationProps }\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport classNames from 'classnames'\n\nimport {\n buildPageNumbers,\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPageInput,\n PaginationPageSize,\n PaginationPrevious,\n} from '../pagination/Pagination'\n\nconst DATA_TABLE_PAGINATION_STYLE: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n padding: 'var(--dsx-space-sm) var(--dsx-space-md)',\n gap: 'var(--dsx-space-sm)',\n}\n\ntype DataTablePaginationProps = {\n page?: number\n defaultPage?: number\n pageSize?: number\n defaultPageSize?: number\n pageSizeOptions?: number[]\n total: number\n onPageChange?: (page: number) => void\n onPageSizeChange?: (pageSize: number) => void\n className?: string\n siblingCount?: number\n align?: 'start' | 'center' | 'end'\n showFirstLast?: boolean\n showPageInput?: boolean\n dense?: boolean\n}\n\nconst DATA_TABLE_PAGINATION_JUSTIFY_BY_ALIGN = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n} as const\n\nfunction DataTablePagination({\n page: controlledPage,\n defaultPage = 1,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n pageSizeOptions = [10, 25, 50, 100],\n total,\n onPageChange,\n onPageSizeChange,\n className,\n align,\n showFirstLast = false,\n showPageInput = false,\n dense = false,\n}: DataTablePaginationProps) {\n const [internalPage, setInternalPage] = React.useState(defaultPage)\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize)\n\n const isPageControlled = controlledPage !== undefined\n const isPageSizeControlled = controlledPageSize !== undefined\n\n const currentPage = isPageControlled ? controlledPage : internalPage\n const currentPageSize = isPageSizeControlled ? controlledPageSize : internalPageSize\n\n const totalPages = Math.max(1, Math.ceil(total / currentPageSize))\n const safePage = Math.min(currentPage, totalPages)\n\n const startRow = (safePage - 1) * currentPageSize + 1\n const endRow = Math.min(safePage * currentPageSize, total)\n\n React.useEffect(() => {\n if (safePage !== currentPage) {\n if (!isPageControlled) {\n setInternalPage(safePage)\n }\n onPageChange?.(safePage)\n }\n }, [totalPages, safePage, currentPage, isPageControlled, onPageChange])\n\n function handlePageChange(newPage: number) {\n const clampedPage = Math.max(1, Math.min(newPage, totalPages))\n if (!isPageControlled) {\n setInternalPage(clampedPage)\n }\n onPageChange?.(clampedPage)\n }\n\n function handlePageSizeChange(newPageSize: number) {\n if (!isPageSizeControlled) {\n setInternalPageSize(newPageSize)\n }\n const newTotalPages = Math.max(1, Math.ceil(total / newPageSize))\n const newPage = Math.min(safePage, newTotalPages)\n if (!isPageControlled) {\n setInternalPage(newPage)\n }\n onPageSizeChange?.(newPageSize)\n }\n\n const pageNumbers = buildPageNumbers(safePage, totalPages)\n\n return (\n <div\n className={classNames('dsx-data-table-pagination', className)}\n style={align ? { ...DATA_TABLE_PAGINATION_STYLE, justifyContent: DATA_TABLE_PAGINATION_JUSTIFY_BY_ALIGN[align] } : DATA_TABLE_PAGINATION_STYLE}\n >\n <div className=\"dsx-data-table-pagination__info\" role=\"status\" aria-live=\"polite\">\n {total > 0 ? `${startRow}\u2013${endRow} of ${total}` : '0 rows'}\n </div>\n\n <div className=\"dsx-data-table-pagination__navigation\">\n <Pagination aria-label=\"Table pagination\">\n <PaginationContent>\n {showFirstLast ? (\n <PaginationItem>\n <PaginationFirst\n disabled={safePage <= 1}\n onClick={() => handlePageChange(1)}\n />\n </PaginationItem>\n ) : null}\n <PaginationItem>\n <PaginationPrevious\n disabled={safePage <= 1}\n onClick={() => handlePageChange(safePage - 1)}\n />\n </PaginationItem>\n\n {pageNumbers.map((pageOrEllipsis, index) =>\n pageOrEllipsis === 'ellipsis' ? (\n <PaginationItem key={`ellipsis-${index}`}>\n <PaginationEllipsis />\n </PaginationItem>\n ) : (\n <PaginationItem key={pageOrEllipsis}>\n <PaginationLink\n active={safePage === pageOrEllipsis}\n onClick={() => handlePageChange(pageOrEllipsis)}\n aria-label={`Page ${pageOrEllipsis}`}\n >\n {pageOrEllipsis}\n </PaginationLink>\n </PaginationItem>\n ),\n )}\n\n <PaginationItem>\n <PaginationNext\n disabled={safePage >= totalPages}\n onClick={() => handlePageChange(safePage + 1)}\n />\n </PaginationItem>\n {showFirstLast ? (\n <PaginationItem>\n <PaginationLast\n disabled={safePage >= totalPages}\n onClick={() => handlePageChange(totalPages)}\n />\n </PaginationItem>\n ) : null}\n </PaginationContent>\n </Pagination>\n {!showPageInput && !dense ? (\n <span className=\"dsx-data-table-pagination__page-status\">Page {safePage} of {totalPages}</span>\n ) : null}\n {showPageInput ? (\n <PaginationPageInput\n page={safePage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n ) : null}\n </div>\n\n {!dense ? (\n <div className=\"dsx-data-table-pagination__page-size\">\n <span>Rows per page:</span>\n <PaginationPageSize\n value={currentPageSize}\n options={pageSizeOptions}\n onChange={handlePageSizeChange}\n aria-label=\"Rows per page\"\n />\n </div>\n ) : null}\n </div>\n )\n}\nDataTablePagination.displayName = 'DataTablePagination'\n\nexport { DataTablePagination }\nexport type { DataTablePaginationProps }\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -41,31 +41,30 @@ var import_classnames = __toESM(require("classnames"), 1);
41
41
  var import_Badge = require("../badge/Badge");
42
42
  var import_Button = require("../button/Button");
43
43
  var import_DropdownMenu = require("../dropdownMenu/DropdownMenu");
44
+ var import_Icon = require("../icon/Icon");
44
45
  var import_Input = require("../input/Input");
46
+ var import_DataTableContext = require("./DataTableContext");
47
+ var import_dataTable = require("./dataTable.export");
45
48
  var import_jsx_runtime = require("react/jsx-runtime");
46
- const DATA_TABLE_TOOLBAR_STYLE = {
47
- display: "flex",
48
- alignItems: "center",
49
- flexWrap: "wrap",
50
- gap: "var(--dsx-space-sm)",
51
- padding: "var(--dsx-space-md)"
52
- };
53
49
  const DATA_TABLE_TOOLBAR_SEARCH_STYLE = {
54
- flex: "1 1 200px",
55
- minWidth: "160px"
50
+ width: "100%"
56
51
  };
57
52
  function DataTableToolbarSearch({
58
53
  value,
59
- defaultValue = "",
54
+ defaultValue,
60
55
  placeholder = "Search rows",
61
56
  onChange
62
57
  }) {
63
- const [internalValue, setInternalValue] = React.useState(defaultValue);
58
+ const table = (0, import_DataTableContext.useDataTableToolbarContext)();
59
+ const [internalValue, setInternalValue] = React.useState(defaultValue ?? "");
64
60
  const isControlled = value !== void 0;
65
- const currentValue = isControlled ? value : internalValue;
61
+ const usesTableState = !isControlled && defaultValue === void 0 && table !== null;
62
+ const currentValue = isControlled ? value : usesTableState ? table.query : internalValue;
66
63
  function handleChange(event) {
67
64
  const nextValue = event.currentTarget.value;
68
- if (!isControlled) {
65
+ if (usesTableState) {
66
+ table.onQueryChange(nextValue);
67
+ } else if (!isControlled) {
69
68
  setInternalValue(nextValue);
70
69
  }
71
70
  onChange?.(nextValue);
@@ -74,6 +73,7 @@ function DataTableToolbarSearch({
74
73
  import_Input.Input,
75
74
  {
76
75
  "aria-label": "Search table rows",
76
+ className: "dsx-data-table-toolbar__search",
77
77
  density: "sm",
78
78
  onChange: handleChange,
79
79
  placeholder,
@@ -90,12 +90,24 @@ function DataTableToolbarColumnVisibility({
90
90
  defaultVisibleColumnIds,
91
91
  onVisibleColumnIdsChange
92
92
  }) {
93
- const allColumnIds = React.useMemo(() => new Set(columns.map((col) => col.id)), [columns]);
93
+ const table = (0, import_DataTableContext.useDataTableToolbarContext)();
94
+ const resolvedColumns = React.useMemo(
95
+ () => columns?.map((column) => ({ id: column.id, header: column.header })) ?? table?.columns.map((column) => ({ id: column.id, header: column.label })) ?? null,
96
+ [columns, table?.columns]
97
+ );
98
+ const allColumnIds = React.useMemo(
99
+ () => new Set(resolvedColumns?.map((column) => column.id) ?? []),
100
+ [resolvedColumns]
101
+ );
94
102
  const [internalVisibleIds, setInternalVisibleIds] = React.useState(
95
103
  () => defaultVisibleColumnIds ?? allColumnIds
96
104
  );
97
- const isControlled = visibleColumnIds !== void 0;
98
- const currentVisibleIds = isControlled ? visibleColumnIds : internalVisibleIds;
105
+ if (!resolvedColumns) {
106
+ throw new Error("DataTable.Toolbar.ColumnVisibility requires columns or a parent DataTable.");
107
+ }
108
+ const usesTableState = visibleColumnIds === void 0 && defaultVisibleColumnIds === void 0 && table !== null;
109
+ const isControlled = visibleColumnIds !== void 0 || usesTableState;
110
+ const currentVisibleIds = visibleColumnIds ?? (usesTableState ? table.visibleColumnIds : internalVisibleIds);
99
111
  const visibleCount = currentVisibleIds.size;
100
112
  const totalCount = allColumnIds.size;
101
113
  function handleToggle(columnId, checked) {
@@ -108,25 +120,40 @@ function DataTableToolbarColumnVisibility({
108
120
  if (!isControlled) {
109
121
  setInternalVisibleIds(nextIds);
110
122
  }
123
+ if (usesTableState) {
124
+ table.onVisibleColumnIdsChange(nextIds);
125
+ }
111
126
  onVisibleColumnIdsChange?.(nextIds);
112
127
  }
113
128
  function handleShowAll() {
114
129
  if (!isControlled) {
115
130
  setInternalVisibleIds(allColumnIds);
116
131
  }
132
+ if (usesTableState) {
133
+ table.onVisibleColumnIdsChange(allColumnIds);
134
+ }
117
135
  onVisibleColumnIdsChange?.(allColumnIds);
118
136
  }
119
137
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenu, { children: [
120
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DropdownMenu.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Button.Button, { size: "sm", variant: "outline", trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "aria-hidden": "true", children: "\u25BE" }), children: [
121
- "Columns",
122
- visibleCount < totalCount && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Badge.Badge, { size: "sm", variant: "primary", style: { marginLeft: "var(--dsx-space-xs)" }, children: [
123
- visibleCount,
124
- "/",
125
- totalCount
126
- ] })
127
- ] }) }),
138
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DropdownMenu.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
139
+ import_Button.Button,
140
+ {
141
+ leadingIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Icon.Icon, { "aria-hidden": "true", name: "list", size: "sm" }),
142
+ size: "sm",
143
+ trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Icon.Icon, { "aria-hidden": "true", name: "chevron-down", size: "sm" }),
144
+ variant: "outline",
145
+ children: [
146
+ "Columns",
147
+ visibleCount < totalCount && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Badge.Badge, { size: "sm", variant: "primary", style: { marginLeft: "var(--dsx-space-xs)" }, children: [
148
+ visibleCount,
149
+ "/",
150
+ totalCount
151
+ ] })
152
+ ]
153
+ }
154
+ ) }),
128
155
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenuContent, { align: "end", style: { minWidth: "200px", maxHeight: "320px", overflow: "auto" }, children: [
129
- columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
156
+ resolvedColumns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
130
157
  import_DropdownMenu.DropdownMenuCheckboxItem,
131
158
  {
132
159
  checked: currentVisibleIds.has(column.id),
@@ -143,41 +170,6 @@ function DataTableToolbarColumnVisibility({
143
170
  ] });
144
171
  }
145
172
  DataTableToolbarColumnVisibility.displayName = "DataTableToolbarColumnVisibility";
146
- function stringifyCellValue(value) {
147
- if (value == null) return "";
148
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return String(value);
149
- if (value instanceof Date) return value.toISOString();
150
- if (Array.isArray(value)) return value.map(stringifyCellValue).join(" ");
151
- if (typeof value === "object") return JSON.stringify(value);
152
- return String(value);
153
- }
154
- function escapeCsvCell(value) {
155
- if (value.includes(",") || value.includes('"') || value.includes("\n") || value.includes("\r")) {
156
- return `"${value.replace(/"/g, '""')}"`;
157
- }
158
- return value;
159
- }
160
- function exportAsCsv(data, columns) {
161
- const headers = columns.map((col) => escapeCsvCell(String(col.header)));
162
- const rows = data.map(
163
- (row) => columns.map((col) => {
164
- const value = col.accessorKey ? row[col.accessorKey] : void 0;
165
- return escapeCsvCell(stringifyCellValue(value));
166
- }).join(",")
167
- );
168
- return [headers.join(","), ...rows].join("\n");
169
- }
170
- function exportAsJson(data, columns) {
171
- const keys = columns.map((col) => col.accessorKey).filter((key) => key !== void 0);
172
- const projected = data.map((row) => {
173
- const result = {};
174
- for (const key of keys) {
175
- result[key] = row[key];
176
- }
177
- return result;
178
- });
179
- return JSON.stringify(projected, null, 2);
180
- }
181
173
  function DataTableToolbarExport({
182
174
  data,
183
175
  columns,
@@ -185,9 +177,10 @@ function DataTableToolbarExport({
185
177
  filename = "table-export",
186
178
  onExport
187
179
  }) {
188
- const [selectedFormat, setSelectedFormat] = React.useState(format);
189
- function handleExport(exportFormat) {
190
- const exportData = exportFormat === "csv" ? exportAsCsv(data, columns) : exportAsJson(data, columns);
180
+ const table = (0, import_DataTableContext.useDataTableToolbarContext)();
181
+ const [progress, setProgress] = React.useState(null);
182
+ const rowCount = table?.filteredRowCount ?? data?.length;
183
+ function download(exportFormat, exportData) {
191
184
  onExport?.(exportFormat, exportData);
192
185
  const blob = new Blob([exportData], { type: exportFormat === "csv" ? "text/csv" : "application/json" });
193
186
  const url = URL.createObjectURL(blob);
@@ -199,45 +192,81 @@ function DataTableToolbarExport({
199
192
  document.body.removeChild(link);
200
193
  URL.revokeObjectURL(url);
201
194
  }
202
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenu, { children: [
203
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DropdownMenu.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.Button, { size: "sm", variant: "outline", trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "aria-hidden": "true", children: "\u25BE" }), children: "Export" }) }),
204
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenuContent, { align: "end", children: [
205
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
206
- import_DropdownMenu.DropdownMenuCheckboxItem,
207
- {
208
- checked: selectedFormat === "csv",
209
- onCheckedChange: () => {
210
- setSelectedFormat("csv");
211
- handleExport("csv");
212
- },
213
- children: "CSV"
195
+ async function handleExport(exportFormat) {
196
+ if (progress !== null) return;
197
+ if (data && columns) {
198
+ if (data.length > import_dataTable.EXPORT_PROGRESS_ROW_THRESHOLD) {
199
+ setProgress(0);
200
+ try {
201
+ download(exportFormat, await (0, import_dataTable.exportDataTableRowsProgressive)(exportFormat, data, columns, setProgress));
202
+ } finally {
203
+ setProgress(null);
214
204
  }
215
- ),
216
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
217
- import_DropdownMenu.DropdownMenuCheckboxItem,
218
- {
219
- checked: selectedFormat === "json",
220
- onCheckedChange: () => {
221
- setSelectedFormat("json");
222
- handleExport("json");
223
- },
224
- children: "JSON"
205
+ } else {
206
+ download(exportFormat, (0, import_dataTable.exportDataTableRows)(exportFormat, data, columns));
207
+ }
208
+ } else if (table) {
209
+ if (table.filteredRowCount > import_dataTable.EXPORT_PROGRESS_ROW_THRESHOLD) {
210
+ setProgress(0);
211
+ try {
212
+ download(exportFormat, await table.exportRowsProgressive(exportFormat, setProgress));
213
+ } finally {
214
+ setProgress(null);
225
215
  }
226
- )
216
+ } else {
217
+ download(exportFormat, table.exportRows(exportFormat));
218
+ }
219
+ } else {
220
+ throw new Error("DataTable.Toolbar.Export requires data and columns or a parent DataTable.");
221
+ }
222
+ }
223
+ function formatLabel(exportFormat) {
224
+ const base = exportFormat === "json" ? "JSON file" : "CSV file";
225
+ return rowCount === void 0 ? base : `${base} \xB7 ${rowCount} rows`;
226
+ }
227
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenu, { children: [
228
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DropdownMenu.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
229
+ import_Button.Button,
230
+ {
231
+ leadingIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Icon.Icon, { "aria-hidden": "true", name: "download", size: "sm" }),
232
+ size: "sm",
233
+ trailingIcon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Icon.Icon, { "aria-hidden": "true", name: "chevron-down", size: "sm" }),
234
+ variant: "outline",
235
+ disabled: progress !== null,
236
+ "aria-live": "polite",
237
+ children: progress !== null ? `Exporting ${progress}%` : "Export"
238
+ }
239
+ ) }),
240
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenuContent, { align: "end", "aria-label": "Export format", children: [
241
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenuItem, { onSelect: () => void handleExport(format === "json" ? "json" : "csv"), children: [
242
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Icon.Icon, { "aria-hidden": "true", name: "download", size: "sm" }),
243
+ formatLabel(format === "json" ? "json" : "csv")
244
+ ] }),
245
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DropdownMenu.DropdownMenuItem, { onSelect: () => void handleExport(format === "json" ? "csv" : "json"), children: [
246
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Icon.Icon, { "aria-hidden": "true", name: "download", size: "sm" }),
247
+ formatLabel(format === "json" ? "csv" : "json")
248
+ ] })
227
249
  ] })
228
250
  ] });
229
251
  }
230
252
  DataTableToolbarExport.displayName = "DataTableToolbarExport";
231
253
  function DataTableToolbarRowCount({ total, filtered, selected }) {
232
- const showFiltered = filtered !== void 0 && filtered !== total;
233
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "var(--dsx-space-xs)", fontSize: "var(--dsx-font-size-xs)", color: "var(--dsx-color-on-surface-variant)" }, children: [
254
+ const table = (0, import_DataTableContext.useDataTableToolbarContext)();
255
+ const resolvedTotal = total ?? table?.totalRowCount;
256
+ const resolvedFiltered = filtered ?? table?.filteredRowCount;
257
+ const resolvedSelected = selected ?? table?.selectedRowCount;
258
+ if (resolvedTotal === void 0) {
259
+ throw new Error("DataTable.Toolbar.RowCount requires total or a parent DataTable.");
260
+ }
261
+ const showFiltered = resolvedFiltered !== void 0 && resolvedFiltered !== resolvedTotal;
262
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "dsx-data-table-toolbar__row-count", children: [
234
263
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
235
- showFiltered ? `${filtered} of ${total}` : `${total}`,
264
+ showFiltered ? `${resolvedFiltered} of ${resolvedTotal}` : `${resolvedTotal}`,
236
265
  " row",
237
- total !== 1 ? "s" : ""
266
+ resolvedTotal !== 1 ? "s" : ""
238
267
  ] }),
239
- selected !== void 0 && selected > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Badge.Badge, { size: "sm", variant: "primary", children: [
240
- selected,
268
+ resolvedSelected !== void 0 && resolvedSelected > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Badge.Badge, { size: "sm", variant: "primary", children: [
269
+ resolvedSelected,
241
270
  " selected"
242
271
  ] })
243
272
  ] });
@@ -249,7 +278,7 @@ function DataTableToolbar({ className, children, style, ...restProps }) {
249
278
  {
250
279
  ...restProps,
251
280
  className: (0, import_classnames.default)("dsx-data-table-toolbar", className),
252
- style: { ...DATA_TABLE_TOOLBAR_STYLE, ...style },
281
+ style,
253
282
  children
254
283
  }
255
284
  );