@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
@@ -2,8 +2,18 @@ import * as React from "react";
2
2
  import classNames from "classnames";
3
3
  import { extractProps } from "../../_internal/helpers/extractProps.js";
4
4
  import { Button } from "../button/Button.js";
5
+ import { Badge } from "../badge/Badge.js";
6
+ import { Icon } from "../icon/Icon.js";
7
+ import { IconButton } from "../iconButton/IconButton.js";
8
+ import { Input } from "../input/Input.js";
9
+ import { NumberInput } from "../numberInput/NumberInput.js";
10
+ import { Pill, Pills } from "../pills/Pills.js";
11
+ import { Popover } from "../popover/Popover.js";
12
+ import { SelectContent, SelectItem, SelectRoot, SelectTrigger, SelectValue } from "../select/Select.js";
13
+ import { Slider } from "../slider/Slider.js";
14
+ import { TagsInput } from "../tagsInput/TagsInput.js";
5
15
  import { filterBarPropDefs } from "./filterBar.props.js";
6
- import { jsx } from "react/jsx-runtime";
16
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
17
  const FilterBarContext = React.createContext(void 0);
8
18
  const FilterBarRoot = React.forwardRef((props, forwardedRef) => {
9
19
  const { activeCount, children, className, size = "md", ...rootProps } = extractProps(props, filterBarPropDefs);
@@ -69,22 +79,641 @@ const FilterBarClear = React.forwardRef(
69
79
  }
70
80
  );
71
81
  FilterBarClear.displayName = "FilterBarClear";
82
+ const FilterBarSearch = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ...props, ref, className: classNames("dsx-filter-bar__search", className) }));
83
+ FilterBarSearch.displayName = "FilterBarSearch";
84
+ const FilterBarRules = React.forwardRef(
85
+ ({
86
+ children,
87
+ className,
88
+ clearAllLabel = "Clear",
89
+ defaultExpanded = false,
90
+ expanded: expandedProp,
91
+ maxVisible,
92
+ onClearAll,
93
+ onExpandedChange,
94
+ showLessLabel = "Show less",
95
+ showMoreLabel = (hiddenCount) => `+${hiddenCount} more`,
96
+ size = "md",
97
+ ...props
98
+ }, forwardedRef) => {
99
+ const items = React.Children.toArray(children);
100
+ const [uncontrolledExpanded, setUncontrolledExpanded] = React.useState(defaultExpanded);
101
+ const expanded = expandedProp ?? uncontrolledExpanded;
102
+ function setExpanded(next) {
103
+ if (expandedProp === void 0) setUncontrolledExpanded(next);
104
+ onExpandedChange?.(next);
105
+ }
106
+ const collapsible = maxVisible !== void 0 && items.length > maxVisible;
107
+ const visibleItems = collapsible && !expanded ? items.slice(0, maxVisible) : items;
108
+ const hiddenCount = items.length - visibleItems.length;
109
+ return /* @__PURE__ */ jsxs(Pills, { ...props, ref: forwardedRef, size, className: classNames("dsx-filter-bar__rules", className), children: [
110
+ visibleItems,
111
+ collapsible || onClearAll !== void 0 ? /* @__PURE__ */ jsxs("li", { className: "dsx-filter-bar__rules-overflow", children: [
112
+ collapsible && !expanded ? /* @__PURE__ */ jsx(
113
+ Button,
114
+ {
115
+ type: "button",
116
+ variant: "ghost",
117
+ size: "sm",
118
+ "aria-expanded": false,
119
+ "aria-label": `Show ${hiddenCount} more filters`,
120
+ onClick: () => {
121
+ setExpanded(true);
122
+ },
123
+ children: showMoreLabel(hiddenCount)
124
+ }
125
+ ) : null,
126
+ collapsible && expanded ? /* @__PURE__ */ jsx(
127
+ Button,
128
+ {
129
+ type: "button",
130
+ variant: "ghost",
131
+ size: "sm",
132
+ "aria-expanded": true,
133
+ onClick: () => {
134
+ setExpanded(false);
135
+ },
136
+ children: showLessLabel
137
+ }
138
+ ) : null,
139
+ onClearAll !== void 0 ? /* @__PURE__ */ jsx(
140
+ Button,
141
+ {
142
+ type: "button",
143
+ variant: "ghost",
144
+ size: "sm",
145
+ "aria-label": "Clear all filters",
146
+ onClick: onClearAll,
147
+ children: clearAllLabel
148
+ }
149
+ ) : null
150
+ ] }) : null
151
+ ] });
152
+ }
153
+ );
154
+ FilterBarRules.displayName = "FilterBarRules";
155
+ function describeRulePart(part) {
156
+ return typeof part === "string" || typeof part === "number" ? String(part) : void 0;
157
+ }
158
+ function describeRuleEditLabel(field, operator, value) {
159
+ const fieldText = describeRulePart(field);
160
+ const operatorText = describeRulePart(operator);
161
+ const valueText = describeRulePart(value);
162
+ return fieldText !== void 0 && operatorText !== void 0 && valueText !== void 0 ? `Edit filter: ${fieldText} ${operatorText} ${valueText}` : "Edit filter";
163
+ }
164
+ const FilterBarRule = React.forwardRef(
165
+ ({ active = false, children, className, count, field, onEdit, onRemove, operator, size = "md", value, ...props }, forwardedRef) => {
166
+ const editLabel = describeRuleEditLabel(field, operator, value);
167
+ return /* @__PURE__ */ jsxs(
168
+ Pill,
169
+ {
170
+ ...props,
171
+ ref: forwardedRef,
172
+ size,
173
+ removable: onRemove !== void 0,
174
+ onRemove,
175
+ className: classNames("dsx-filter-bar__rule", className),
176
+ "data-active": active ? "true" : void 0,
177
+ children: [
178
+ onEdit !== void 0 ? /* @__PURE__ */ jsxs("button", { type: "button", className: "dsx-filter-bar__rule-label", onClick: onEdit, "aria-label": editLabel, children: [
179
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-field", children: field }),
180
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-operator", children: operator }),
181
+ value === "" ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", "data-empty": "true", children: "empty" }) : /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", children: value }),
182
+ count !== void 0 ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-count", children: count }) : null
183
+ ] }) : /* @__PURE__ */ jsxs("span", { className: "dsx-filter-bar__rule-label", "aria-hidden": false, children: [
184
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-field", children: field }),
185
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-operator", children: operator }),
186
+ value === "" ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", "data-empty": "true", children: "empty" }) : /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", children: value }),
187
+ count !== void 0 ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-count", children: count }) : null
188
+ ] }),
189
+ children
190
+ ]
191
+ }
192
+ );
193
+ }
194
+ );
195
+ FilterBarRule.displayName = "FilterBarRule";
196
+ const FILTER_BAR_BUILDER_DEFAULT_OPERATORS = ["is", "is not", "contains", "does not contain"];
197
+ const FILTER_BAR_BUILDER_EMPTY_RULE = { field: "", operator: "", value: "" };
198
+ function parseRangeValue(raw, min, max) {
199
+ const [lo, hi] = raw.split("..").map((part) => Number(part));
200
+ const safeLo = Number.isFinite(lo) ? Math.min(Math.max(lo, min), max) : min;
201
+ const safeHi = Number.isFinite(hi) ? Math.min(Math.max(hi, safeLo), max) : max;
202
+ return [safeLo, safeHi];
203
+ }
204
+ function FilterBarDraftFields({
205
+ compact = false,
206
+ draft,
207
+ fields,
208
+ fieldClassName,
209
+ labelClassName,
210
+ onPatch,
211
+ operators: operatorsProp,
212
+ operatorLabelId,
213
+ valueClassName,
214
+ valueInputId,
215
+ valueLabelId
216
+ }) {
217
+ const selectedField = fields.find((field) => field.value === draft.field);
218
+ const operatorOptions = selectedField?.operators ?? operatorsProp ?? [...FILTER_BAR_BUILDER_DEFAULT_OPERATORS];
219
+ const valueOptions = selectedField?.options;
220
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
221
+ /* @__PURE__ */ jsxs("div", { className: fieldClassName, children: [
222
+ compact ? null : /* @__PURE__ */ jsx("span", { className: labelClassName, id: operatorLabelId, children: "Operator" }),
223
+ /* @__PURE__ */ jsxs(SelectRoot, { value: draft.operator, onValueChange: (nextOperator) => {
224
+ onPatch({ operator: nextOperator });
225
+ }, children: [
226
+ compact ? /* @__PURE__ */ jsx(SelectTrigger, { "aria-label": "Operator", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Choose operator" }) }) : /* @__PURE__ */ jsx(SelectTrigger, { "aria-labelledby": operatorLabelId, children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Choose operator" }) }),
227
+ /* @__PURE__ */ jsx(SelectContent, { children: operatorOptions.map((operator) => /* @__PURE__ */ jsx(SelectItem, { value: operator, children: operator }, operator)) })
228
+ ] })
229
+ ] }),
230
+ /* @__PURE__ */ jsx("div", { className: valueClassName ?? fieldClassName, children: selectedField?.renderValue !== void 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
231
+ compact ? null : /* @__PURE__ */ jsx("span", { className: labelClassName, id: valueLabelId, children: "Value" }),
232
+ selectedField.renderValue({
233
+ value: draft.value,
234
+ onChange: (nextValue) => {
235
+ onPatch({ value: nextValue });
236
+ },
237
+ id: valueInputId
238
+ })
239
+ ] }) : valueOptions !== void 0 || selectedField?.type === "enum" ? /* @__PURE__ */ jsxs(Fragment, { children: [
240
+ compact ? null : /* @__PURE__ */ jsx("span", { className: labelClassName, id: valueLabelId, children: "Value" }),
241
+ /* @__PURE__ */ jsxs(SelectRoot, { value: draft.value, onValueChange: (nextValue) => {
242
+ onPatch({ value: nextValue });
243
+ }, children: [
244
+ compact ? /* @__PURE__ */ jsx(SelectTrigger, { "aria-label": "Value", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Choose value" }) }) : /* @__PURE__ */ jsx(SelectTrigger, { "aria-labelledby": valueLabelId, children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Choose value" }) }),
245
+ /* @__PURE__ */ jsx(SelectContent, { children: (valueOptions ?? []).map((option) => /* @__PURE__ */ jsx(SelectItem, { value: option.value, children: option.label ?? option.value }, option.value)) })
246
+ ] })
247
+ ] }) : selectedField?.type === "number" ? /* @__PURE__ */ jsxs(Fragment, { children: [
248
+ compact ? null : /* @__PURE__ */ jsx("label", { className: labelClassName, htmlFor: valueInputId, children: "Value" }),
249
+ /* @__PURE__ */ jsx(
250
+ NumberInput,
251
+ {
252
+ id: valueInputId,
253
+ "aria-label": "Filter value",
254
+ value: draft.value === "" ? void 0 : Number(draft.value),
255
+ onChange: (nextValue) => {
256
+ onPatch({ value: nextValue === void 0 ? "" : String(nextValue) });
257
+ }
258
+ }
259
+ )
260
+ ] }) : selectedField?.type === "multi" ? /* @__PURE__ */ jsxs(Fragment, { children: [
261
+ compact ? null : /* @__PURE__ */ jsx("span", { className: labelClassName, id: valueLabelId, children: "Value" }),
262
+ compact ? /* @__PURE__ */ jsx(
263
+ TagsInput,
264
+ {
265
+ "aria-label": "Filter value",
266
+ value: draft.value === "" ? [] : draft.value.split(","),
267
+ onChange: (nextTags) => {
268
+ onPatch({ value: nextTags.join(",") });
269
+ }
270
+ }
271
+ ) : /* @__PURE__ */ jsx(
272
+ TagsInput,
273
+ {
274
+ "aria-labelledby": valueLabelId,
275
+ value: draft.value === "" ? [] : draft.value.split(","),
276
+ onChange: (nextTags) => {
277
+ onPatch({ value: nextTags.join(",") });
278
+ }
279
+ }
280
+ )
281
+ ] }) : selectedField?.type === "range" ? /* @__PURE__ */ jsxs(Fragment, { children: [
282
+ compact ? null : /* @__PURE__ */ jsxs("span", { className: labelClassName, id: valueLabelId, children: [
283
+ "Value",
284
+ draft.value !== "" ? ` (${draft.value})` : ""
285
+ ] }),
286
+ compact ? /* @__PURE__ */ jsx(
287
+ Slider,
288
+ {
289
+ "aria-label": "Filter value",
290
+ min: selectedField.min ?? 0,
291
+ max: selectedField.max ?? 100,
292
+ step: selectedField.step ?? 1,
293
+ value: parseRangeValue(draft.value, selectedField.min ?? 0, selectedField.max ?? 100),
294
+ onValueChange: (nextRange) => {
295
+ const lo = nextRange[0] ?? selectedField.min ?? 0;
296
+ const hi = nextRange[1] ?? selectedField.max ?? 100;
297
+ onPatch({ value: `${lo}..${hi}` });
298
+ }
299
+ }
300
+ ) : /* @__PURE__ */ jsx(
301
+ Slider,
302
+ {
303
+ "aria-labelledby": valueLabelId,
304
+ min: selectedField.min ?? 0,
305
+ max: selectedField.max ?? 100,
306
+ step: selectedField.step ?? 1,
307
+ value: parseRangeValue(draft.value, selectedField.min ?? 0, selectedField.max ?? 100),
308
+ onValueChange: (nextRange) => {
309
+ const lo = nextRange[0] ?? selectedField.min ?? 0;
310
+ const hi = nextRange[1] ?? selectedField.max ?? 100;
311
+ onPatch({ value: `${lo}..${hi}` });
312
+ }
313
+ }
314
+ )
315
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
316
+ compact ? null : /* @__PURE__ */ jsx("label", { className: labelClassName, htmlFor: valueInputId, children: "Value" }),
317
+ /* @__PURE__ */ jsx(
318
+ Input,
319
+ {
320
+ id: valueInputId,
321
+ "aria-label": "Filter value",
322
+ placeholder: selectedField?.type === "date" ? "YYYY-MM-DD" : selectedField?.type === "person" ? "Enter name" : "Enter value",
323
+ value: draft.value,
324
+ onChange: (event) => {
325
+ const nextValue = event.currentTarget.value;
326
+ onPatch({ value: nextValue });
327
+ }
328
+ }
329
+ )
330
+ ] }) })
331
+ ] });
332
+ }
333
+ function FilterBarBuilder({
334
+ cancelLabel = "Cancel",
335
+ className,
336
+ count,
337
+ defaultOpen = false,
338
+ fields,
339
+ initialRule = null,
340
+ onApply,
341
+ onCancel,
342
+ onOpenChange,
343
+ open: openProp,
344
+ operators: operatorsProp,
345
+ submitLabel = "Apply",
346
+ title = "Add filter",
347
+ trigger
348
+ }) {
349
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
350
+ const open = openProp ?? uncontrolledOpen;
351
+ const [draft, setDraft] = React.useState(initialRule ?? FILTER_BAR_BUILDER_EMPTY_RULE);
352
+ const wasOpenRef = React.useRef(open);
353
+ React.useEffect(() => {
354
+ if (open && !wasOpenRef.current) {
355
+ setDraft(initialRule ?? FILTER_BAR_BUILDER_EMPTY_RULE);
356
+ }
357
+ wasOpenRef.current = open;
358
+ }, [open, initialRule]);
359
+ const fieldLabelId = React.useId();
360
+ const operatorLabelId = React.useId();
361
+ const valueLabelId = React.useId();
362
+ const valueInputId = React.useId();
363
+ function handleOpenChange(nextOpen) {
364
+ if (nextOpen) {
365
+ setDraft(initialRule ?? FILTER_BAR_BUILDER_EMPTY_RULE);
366
+ }
367
+ if (openProp === void 0) {
368
+ setUncontrolledOpen(nextOpen);
369
+ }
370
+ onOpenChange?.(nextOpen);
371
+ }
372
+ function close(nextOpen) {
373
+ if (openProp === void 0) {
374
+ setUncontrolledOpen(nextOpen);
375
+ }
376
+ onOpenChange?.(nextOpen);
377
+ }
378
+ function handleFieldChange(nextField) {
379
+ const nextFieldDef = fields.find((field) => field.value === nextField);
380
+ const nextOperators = nextFieldDef?.operators ?? operatorsProp ?? [...FILTER_BAR_BUILDER_DEFAULT_OPERATORS];
381
+ const nextValue = nextFieldDef?.type === "range" ? `${nextFieldDef.min ?? 0}..${nextFieldDef.max ?? 100}` : "";
382
+ setDraft({ field: nextField, operator: nextOperators[0] ?? "", value: nextValue });
383
+ }
384
+ const canApply = draft.field !== "" && draft.operator !== "";
385
+ function handleApply() {
386
+ if (!canApply) return;
387
+ onApply?.({ ...draft });
388
+ close(false);
389
+ }
390
+ function handleCancel() {
391
+ onCancel?.();
392
+ close(false);
393
+ }
394
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
395
+ trigger !== null ? /* @__PURE__ */ jsx(Popover.Trigger, { asChild: true, children: trigger ?? /* @__PURE__ */ jsxs(Button, { type: "button", variant: "outline", size: "sm", children: [
396
+ "+ Add filter",
397
+ count !== void 0 ? /* @__PURE__ */ jsx(Badge, { size: "sm", variant: "primary", style: { marginLeft: "var(--dsx-space-xs)" }, children: count }) : null
398
+ ] }) }) : /* @__PURE__ */ jsx(Popover.Anchor, { asChild: true, children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "dsx-filter-bar__builder-anchor" }) }),
399
+ /* @__PURE__ */ jsxs(Popover.Content, { className: classNames("dsx-filter-bar__builder", className), align: "start", children: [
400
+ /* @__PURE__ */ jsx(Popover.Title, { children: title }),
401
+ /* @__PURE__ */ jsxs("div", { className: "dsx-filter-bar__builder-field", children: [
402
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__builder-label", id: fieldLabelId, children: "Field" }),
403
+ /* @__PURE__ */ jsxs(SelectRoot, { value: draft.field, onValueChange: handleFieldChange, children: [
404
+ /* @__PURE__ */ jsx(SelectTrigger, { "aria-labelledby": fieldLabelId, children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Choose field" }) }),
405
+ /* @__PURE__ */ jsx(SelectContent, { children: fields.map((field) => /* @__PURE__ */ jsx(SelectItem, { value: field.value, children: field.label ?? field.value }, field.value)) })
406
+ ] })
407
+ ] }),
408
+ /* @__PURE__ */ jsx(
409
+ FilterBarDraftFields,
410
+ {
411
+ draft,
412
+ fields,
413
+ fieldClassName: "dsx-filter-bar__builder-field",
414
+ labelClassName: "dsx-filter-bar__builder-label",
415
+ onPatch: (patch) => {
416
+ setDraft((prev) => ({ ...prev, ...patch }));
417
+ },
418
+ operators: operatorsProp,
419
+ operatorLabelId,
420
+ valueInputId,
421
+ valueLabelId
422
+ }
423
+ ),
424
+ /* @__PURE__ */ jsxs("div", { className: "dsx-filter-bar__builder-actions", children: [
425
+ /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: handleCancel, children: cancelLabel }),
426
+ /* @__PURE__ */ jsx(Button, { type: "button", variant: "primary", size: "sm", onClick: handleApply, disabled: !canApply, children: submitLabel })
427
+ ] })
428
+ ] })
429
+ ] });
430
+ }
431
+ FilterBarBuilder.displayName = "FilterBarBuilder";
432
+ function FilterBarConditionEditor({
433
+ className,
434
+ draft,
435
+ fields,
436
+ newLabel = "New",
437
+ onApply,
438
+ onDraftChange,
439
+ onNew,
440
+ operators: operatorsProp,
441
+ submitLabel = "Apply",
442
+ title = "Condition editor"
443
+ }) {
444
+ const operatorLabelId = React.useId();
445
+ const valueInputId = React.useId();
446
+ const valueLabelId = React.useId();
447
+ const canApply = draft.field !== "" && draft.operator !== "";
448
+ function handleRailField(nextField) {
449
+ const nextFieldDef = fields.find((field) => field.value === nextField);
450
+ const nextOperators = nextFieldDef?.operators ?? operatorsProp ?? [...FILTER_BAR_BUILDER_DEFAULT_OPERATORS];
451
+ const nextValue = nextFieldDef?.type === "range" ? `${nextFieldDef.min ?? 0}..${nextFieldDef.max ?? 100}` : "";
452
+ onDraftChange({ field: nextField, operator: nextOperators[0] ?? "", value: nextValue });
453
+ }
454
+ return /* @__PURE__ */ jsxs(
455
+ "div",
456
+ {
457
+ className: classNames("dsx-filter-bar__condition-editor", className),
458
+ role: "group",
459
+ "aria-label": typeof title === "string" ? title : "Condition editor",
460
+ children: [
461
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__condition-editor-title", children: title }),
462
+ /* @__PURE__ */ jsxs("div", { className: "dsx-filter-bar__condition-editor-body", children: [
463
+ /* @__PURE__ */ jsx("div", { className: "dsx-filter-bar__condition-editor-fields", role: "group", "aria-label": "Fields", children: fields.map((field) => /* @__PURE__ */ jsx(
464
+ Button,
465
+ {
466
+ type: "button",
467
+ variant: draft.field === field.value ? "primary" : "outline",
468
+ size: "sm",
469
+ "aria-pressed": draft.field === field.value,
470
+ onClick: () => {
471
+ handleRailField(field.value);
472
+ },
473
+ children: field.label ?? field.value
474
+ },
475
+ field.value
476
+ )) }),
477
+ /* @__PURE__ */ jsx("div", { className: "dsx-filter-bar__condition-editor-config", children: /* @__PURE__ */ jsx(
478
+ FilterBarDraftFields,
479
+ {
480
+ draft,
481
+ fields,
482
+ fieldClassName: "dsx-filter-bar__condition-editor-field",
483
+ labelClassName: "dsx-filter-bar__condition-editor-label",
484
+ onPatch: (patch) => {
485
+ onDraftChange({ ...draft, ...patch });
486
+ },
487
+ operators: operatorsProp,
488
+ operatorLabelId,
489
+ valueInputId,
490
+ valueLabelId
491
+ }
492
+ ) })
493
+ ] }),
494
+ /* @__PURE__ */ jsxs("div", { className: "dsx-filter-bar__condition-editor-actions", children: [
495
+ /* @__PURE__ */ jsx(Button, { type: "button", variant: "primary", size: "sm", onClick: onApply, disabled: !canApply, children: submitLabel }),
496
+ onNew !== void 0 ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onNew, children: newLabel }) : null
497
+ ] })
498
+ ]
499
+ }
500
+ );
501
+ }
502
+ FilterBarConditionEditor.displayName = "FilterBarConditionEditor";
503
+ const FILTER_BAR_COMBINATORS = ["and", "or"];
504
+ const FilterBarConditionGroup = React.forwardRef(
505
+ ({
506
+ addConditionLabel = "Add condition",
507
+ addSubgroupLabel = "Add subgroup",
508
+ allLabel = null,
509
+ anyLabel = null,
510
+ children,
511
+ className,
512
+ clearAllLabel = "Clear all",
513
+ combinator = "and",
514
+ combinatorLabel = "Match",
515
+ editor = null,
516
+ emptyHint = "No conditions yet \u2014 add one below.",
517
+ rowsLabel = null,
518
+ gapCombinators,
519
+ onGapCombinatorChange,
520
+ onAddCondition,
521
+ onAddSubgroup,
522
+ onClearAll,
523
+ onCombinatorChange,
524
+ ...props
525
+ }, forwardedRef) => /* @__PURE__ */ jsxs(
526
+ "div",
527
+ {
528
+ ...props,
529
+ ref: forwardedRef,
530
+ role: props["aria-label"] !== void 0 ? "group" : void 0,
531
+ className: classNames("dsx-filter-bar__condition-group", className),
532
+ "data-empty": React.Children.count(children) === 0 ? "true" : void 0,
533
+ children: [
534
+ onCombinatorChange !== void 0 && gapCombinators === void 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
535
+ allLabel !== null || anyLabel !== null ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__condition-match-label", children: combinator === "and" ? allLabel ?? "Match all" : anyLabel ?? "Match any" }) : null,
536
+ /* @__PURE__ */ jsx("div", { className: "dsx-filter-bar__condition-combinator", role: "group", "aria-label": combinatorLabel, children: FILTER_BAR_COMBINATORS.map((option) => /* @__PURE__ */ jsx(
537
+ Button,
538
+ {
539
+ type: "button",
540
+ size: "sm",
541
+ variant: combinator === option ? "primary" : "ghost",
542
+ "aria-pressed": combinator === option,
543
+ onClick: () => {
544
+ onCombinatorChange(option);
545
+ },
546
+ children: option === "and" ? "AND" : "OR"
547
+ },
548
+ option
549
+ )) })
550
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
551
+ allLabel !== null || anyLabel !== null ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__condition-match-label", children: combinator === "and" ? allLabel ?? "Match all" : anyLabel ?? "Match any" }) : null,
552
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__condition-combinator-label", children: combinator === "and" ? "AND" : "OR" })
553
+ ] }),
554
+ editor,
555
+ rowsLabel !== null ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__condition-rows-label", children: rowsLabel }) : null,
556
+ /* @__PURE__ */ jsx("div", { className: "dsx-filter-bar__condition-children", children: React.Children.count(children) === 0 ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__condition-empty", children: emptyHint }) : gapCombinators !== void 0 && onGapCombinatorChange !== void 0 ? React.Children.toArray(children).map((child, index) => {
557
+ const key = React.isValidElement(child) && child.key !== null ? child.key : index;
558
+ const gap = gapCombinators[index] ?? "and";
559
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [
560
+ index > 0 ? /* @__PURE__ */ jsx("div", { className: "dsx-filter-bar__condition-gap", role: "group", "aria-label": `Logic before item ${index + 1}`, children: FILTER_BAR_COMBINATORS.map((option) => /* @__PURE__ */ jsx(
561
+ Button,
562
+ {
563
+ type: "button",
564
+ size: "sm",
565
+ variant: gap === option ? "primary" : "ghost",
566
+ "aria-pressed": gap === option,
567
+ onClick: () => {
568
+ onGapCombinatorChange(index, option);
569
+ },
570
+ children: option === "and" ? "And" : "Or"
571
+ },
572
+ option
573
+ )) }) : null,
574
+ child
575
+ ] }, key);
576
+ }) : children }),
577
+ onAddCondition !== void 0 || onAddSubgroup !== void 0 || onClearAll !== void 0 ? /* @__PURE__ */ jsxs("div", { className: "dsx-filter-bar__condition-actions", children: [
578
+ onAddCondition !== void 0 ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onAddCondition, children: addConditionLabel }) : null,
579
+ onAddSubgroup !== void 0 ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onAddSubgroup, children: addSubgroupLabel }) : null,
580
+ onClearAll !== void 0 ? /* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: onClearAll, children: clearAllLabel }) : null
581
+ ] }) : null
582
+ ]
583
+ }
584
+ )
585
+ );
586
+ FilterBarConditionGroup.displayName = "FilterBarConditionGroup";
587
+ function FilterBarEditableRow({
588
+ field,
589
+ fields,
590
+ onFieldChange,
591
+ onOperatorChange,
592
+ onValueChange,
593
+ operator,
594
+ operators,
595
+ value
596
+ }) {
597
+ const operatorLabelId = React.useId();
598
+ const valueInputId = React.useId();
599
+ const valueLabelId = React.useId();
600
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
601
+ /* @__PURE__ */ jsx("div", { className: "dsx-filter-bar__condition-field", children: /* @__PURE__ */ jsxs(SelectRoot, { value: field, onValueChange: (nextField) => {
602
+ onFieldChange?.(nextField);
603
+ }, children: [
604
+ /* @__PURE__ */ jsx(SelectTrigger, { "aria-label": "Field", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Choose field" }) }),
605
+ /* @__PURE__ */ jsx(SelectContent, { children: fields.map((option) => /* @__PURE__ */ jsx(SelectItem, { value: option.value, children: option.label ?? option.value }, option.value)) })
606
+ ] }) }),
607
+ /* @__PURE__ */ jsx(
608
+ FilterBarDraftFields,
609
+ {
610
+ compact: true,
611
+ draft: { field, operator, value },
612
+ fields,
613
+ fieldClassName: "dsx-filter-bar__condition-operator",
614
+ valueClassName: "dsx-filter-bar__condition-value",
615
+ labelClassName: "dsx-filter-bar__condition-operator",
616
+ onPatch: (patch) => {
617
+ if (patch.operator !== void 0) onOperatorChange?.(patch.operator);
618
+ if (patch.value !== void 0) onValueChange?.(patch.value);
619
+ },
620
+ operators,
621
+ operatorLabelId,
622
+ valueInputId,
623
+ valueLabelId
624
+ }
625
+ )
626
+ ] });
627
+ }
628
+ const FilterBarCondition = React.forwardRef(
629
+ ({
630
+ children,
631
+ className,
632
+ count,
633
+ dragProps,
634
+ editLabel,
635
+ field,
636
+ fields,
637
+ onEdit,
638
+ onFieldChange,
639
+ onOperatorChange,
640
+ onRemove,
641
+ onValueChange,
642
+ operator,
643
+ operators,
644
+ removeLabel = "Remove condition",
645
+ value,
646
+ ...props
647
+ }, forwardedRef) => /* @__PURE__ */ jsxs("div", { ...props, ...dragProps, ref: forwardedRef, className: classNames("dsx-filter-bar__condition", className), children: [
648
+ dragProps !== void 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "dsx-filter-bar__condition-grip", children: /* @__PURE__ */ jsx(Icon, { name: "grip-vertical", size: "sm" }) }) : null,
649
+ fields !== void 0 ? /* @__PURE__ */ jsx(
650
+ FilterBarEditableRow,
651
+ {
652
+ fields,
653
+ field: String(field),
654
+ operator: String(operator),
655
+ value: typeof value === "string" ? value : "",
656
+ operators,
657
+ onFieldChange,
658
+ onOperatorChange,
659
+ onValueChange
660
+ }
661
+ ) : null,
662
+ fields === void 0 && onEdit !== void 0 ? /* @__PURE__ */ jsxs(
663
+ "button",
664
+ {
665
+ type: "button",
666
+ className: "dsx-filter-bar__condition-label",
667
+ onClick: onEdit,
668
+ "aria-label": editLabel ?? describeRuleEditLabel(field, operator, value),
669
+ children: [
670
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-field", children: field }),
671
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-operator", children: operator }),
672
+ value === "" ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", "data-empty": "true", children: "empty" }) : /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", children: value }),
673
+ count !== void 0 ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-count", children: count }) : null
674
+ ]
675
+ }
676
+ ) : fields === void 0 ? /* @__PURE__ */ jsxs("span", { className: "dsx-filter-bar__condition-label", "aria-hidden": false, children: [
677
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-field", children: field }),
678
+ /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-operator", children: operator }),
679
+ value === "" ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", "data-empty": "true", children: "empty" }) : /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-value", children: value }),
680
+ count !== void 0 ? /* @__PURE__ */ jsx("span", { className: "dsx-filter-bar__rule-count", children: count }) : null
681
+ ] }) : null,
682
+ onRemove !== void 0 ? /* @__PURE__ */ jsx(IconButton, { type: "button", size: "sm", variant: "ghost", "aria-label": removeLabel, onClick: onRemove, children: /* @__PURE__ */ jsx(Icon, { name: "trash", size: "sm" }) }) : null,
683
+ children
684
+ ] })
685
+ );
686
+ FilterBarCondition.displayName = "FilterBarCondition";
72
687
  const FilterBar = Object.assign(FilterBarRoot, {
73
688
  Group: FilterBarGroup,
74
689
  Summary: FilterBarSummary,
75
690
  Actions: FilterBarActions,
76
691
  Clear: FilterBarClear,
77
692
  Control: FilterBarControl,
78
- Count: FilterBarCount
693
+ Count: FilterBarCount,
694
+ Search: FilterBarSearch,
695
+ Rules: FilterBarRules,
696
+ Rule: FilterBarRule,
697
+ ConditionGroup: FilterBarConditionGroup,
698
+ Condition: FilterBarCondition,
699
+ ConditionEditor: FilterBarConditionEditor,
700
+ Builder: FilterBarBuilder
79
701
  });
80
702
  export {
81
703
  FilterBar,
82
704
  FilterBarActions,
705
+ FilterBarBuilder,
83
706
  FilterBarClear,
707
+ FilterBarCondition,
708
+ FilterBarConditionEditor,
709
+ FilterBarConditionGroup,
84
710
  FilterBarControl,
85
711
  FilterBarCount,
86
712
  FilterBarGroup,
87
713
  FilterBarRoot,
714
+ FilterBarRule,
715
+ FilterBarRules,
716
+ FilterBarSearch,
88
717
  FilterBarSummary
89
718
  };
90
719
  //# sourceMappingURL=FilterBar.js.map