@work-rjkashyap/unified-ui 0.3.3 → 0.3.5

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 (456) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +21 -0
  3. package/dist/components/accordion.cjs +225 -0
  4. package/dist/components/accordion.d.cts +157 -0
  5. package/dist/components/accordion.d.ts +157 -0
  6. package/dist/components/accordion.mjs +199 -0
  7. package/dist/components/alert-dialog.cjs +246 -0
  8. package/dist/components/alert-dialog.d.cts +61 -0
  9. package/dist/components/alert-dialog.d.ts +61 -0
  10. package/dist/components/alert-dialog.mjs +218 -0
  11. package/dist/components/alert.cjs +401 -0
  12. package/dist/components/alert.d.cts +217 -0
  13. package/dist/components/alert.d.ts +217 -0
  14. package/dist/components/alert.mjs +374 -0
  15. package/dist/components/aspect-ratio.cjs +45 -0
  16. package/dist/components/aspect-ratio.d.cts +10 -0
  17. package/dist/components/aspect-ratio.d.ts +10 -0
  18. package/dist/components/aspect-ratio.mjs +23 -0
  19. package/dist/components/avatar.cjs +348 -0
  20. package/dist/components/avatar.d.cts +198 -0
  21. package/dist/components/avatar.d.ts +198 -0
  22. package/dist/components/avatar.mjs +329 -0
  23. package/dist/components/badge.cjs +325 -0
  24. package/dist/components/badge.d.cts +259 -0
  25. package/dist/components/badge.d.ts +259 -0
  26. package/dist/components/badge.mjs +298 -0
  27. package/dist/components/banner.cjs +147 -0
  28. package/dist/components/banner.d.cts +31 -0
  29. package/dist/components/banner.d.ts +31 -0
  30. package/dist/components/banner.mjs +122 -0
  31. package/dist/components/breadcrumb.cjs +266 -0
  32. package/dist/components/breadcrumb.d.cts +159 -0
  33. package/dist/components/breadcrumb.d.ts +159 -0
  34. package/dist/components/breadcrumb.mjs +235 -0
  35. package/dist/components/button.cjs +254 -0
  36. package/dist/components/button.d.cts +126 -0
  37. package/dist/components/button.d.ts +126 -0
  38. package/dist/components/button.mjs +229 -0
  39. package/dist/components/calendar.cjs +511 -0
  40. package/dist/components/calendar.d.cts +94 -0
  41. package/dist/components/calendar.d.ts +94 -0
  42. package/dist/components/calendar.mjs +492 -0
  43. package/dist/components/card.cjs +234 -0
  44. package/dist/components/card.d.cts +190 -0
  45. package/dist/components/card.d.ts +190 -0
  46. package/dist/components/card.mjs +210 -0
  47. package/dist/components/carousel.cjs +234 -0
  48. package/dist/components/carousel.d.cts +30 -0
  49. package/dist/components/carousel.d.ts +30 -0
  50. package/dist/components/carousel.mjs +217 -0
  51. package/dist/components/chart.cjs +122 -0
  52. package/dist/components/chart.d.cts +103 -0
  53. package/dist/components/chart.d.ts +103 -0
  54. package/dist/components/chart.mjs +96 -0
  55. package/dist/components/checkbox.cjs +318 -0
  56. package/dist/components/checkbox.d.cts +182 -0
  57. package/dist/components/checkbox.d.ts +182 -0
  58. package/dist/components/checkbox.mjs +296 -0
  59. package/dist/components/code-highlight.cjs +335 -0
  60. package/dist/components/code-highlight.d.cts +18 -0
  61. package/dist/components/code-highlight.d.ts +18 -0
  62. package/dist/components/code-highlight.mjs +308 -0
  63. package/dist/components/code.cjs +265 -0
  64. package/dist/components/code.d.cts +40 -0
  65. package/dist/components/code.d.ts +40 -0
  66. package/dist/components/code.mjs +243 -0
  67. package/dist/components/collapsible.cjs +143 -0
  68. package/dist/components/collapsible.d.cts +159 -0
  69. package/dist/components/collapsible.d.ts +159 -0
  70. package/dist/components/collapsible.mjs +123 -0
  71. package/dist/components/color-picker.cjs +348 -0
  72. package/dist/components/color-picker.d.cts +35 -0
  73. package/dist/components/color-picker.d.ts +35 -0
  74. package/dist/components/color-picker.mjs +331 -0
  75. package/dist/components/combobox.cjs +584 -0
  76. package/dist/components/combobox.d.cts +183 -0
  77. package/dist/components/combobox.d.ts +183 -0
  78. package/dist/components/combobox.mjs +571 -0
  79. package/dist/components/command.cjs +329 -0
  80. package/dist/components/command.d.cts +97 -0
  81. package/dist/components/command.d.ts +97 -0
  82. package/dist/components/command.mjs +311 -0
  83. package/dist/components/confirm-dialog.cjs +100 -0
  84. package/dist/components/confirm-dialog.d.cts +25 -0
  85. package/dist/components/confirm-dialog.d.ts +25 -0
  86. package/dist/components/confirm-dialog.mjs +86 -0
  87. package/dist/components/context-menu.cjs +325 -0
  88. package/dist/components/context-menu.d.cts +259 -0
  89. package/dist/components/context-menu.d.ts +259 -0
  90. package/dist/components/context-menu.mjs +290 -0
  91. package/dist/components/copy-button.cjs +203 -0
  92. package/dist/components/copy-button.d.cts +22 -0
  93. package/dist/components/copy-button.d.ts +22 -0
  94. package/dist/components/copy-button.mjs +178 -0
  95. package/dist/components/data-list.cjs +140 -0
  96. package/dist/components/data-list.d.cts +36 -0
  97. package/dist/components/data-list.d.ts +36 -0
  98. package/dist/components/data-list.mjs +113 -0
  99. package/dist/components/data-table-toolbar.cjs +338 -0
  100. package/dist/components/data-table-toolbar.d.cts +84 -0
  101. package/dist/components/data-table-toolbar.d.ts +84 -0
  102. package/dist/components/data-table-toolbar.mjs +320 -0
  103. package/dist/components/data-table.cjs +1324 -0
  104. package/dist/components/data-table.d.cts +349 -0
  105. package/dist/components/data-table.d.ts +349 -0
  106. package/dist/components/data-table.mjs +1323 -0
  107. package/dist/components/date-picker.cjs +282 -0
  108. package/dist/components/date-picker.d.cts +97 -0
  109. package/dist/components/date-picker.d.ts +97 -0
  110. package/dist/components/date-picker.mjs +258 -0
  111. package/dist/components/dialog.cjs +319 -0
  112. package/dist/components/dialog.d.cts +74 -0
  113. package/dist/components/dialog.d.ts +74 -0
  114. package/dist/components/dialog.mjs +292 -0
  115. package/dist/components/drawer.cjs +262 -0
  116. package/dist/components/drawer.d.cts +113 -0
  117. package/dist/components/drawer.d.ts +113 -0
  118. package/dist/components/drawer.mjs +230 -0
  119. package/dist/components/dropdown-menu.cjs +328 -0
  120. package/dist/components/dropdown-menu.d.cts +95 -0
  121. package/dist/components/dropdown-menu.d.ts +95 -0
  122. package/dist/components/dropdown-menu.mjs +293 -0
  123. package/dist/components/empty-state.cjs +123 -0
  124. package/dist/components/empty-state.d.cts +15 -0
  125. package/dist/components/empty-state.d.ts +15 -0
  126. package/dist/components/empty-state.mjs +99 -0
  127. package/dist/components/file-upload.cjs +442 -0
  128. package/dist/components/file-upload.d.cts +35 -0
  129. package/dist/components/file-upload.d.ts +35 -0
  130. package/dist/components/file-upload.mjs +423 -0
  131. package/dist/components/form-field.cjs +191 -0
  132. package/dist/components/form-field.d.cts +163 -0
  133. package/dist/components/form-field.d.ts +163 -0
  134. package/dist/components/form-field.mjs +167 -0
  135. package/dist/components/hover-card.cjs +99 -0
  136. package/dist/components/hover-card.d.cts +28 -0
  137. package/dist/components/hover-card.d.ts +28 -0
  138. package/dist/components/hover-card.mjs +75 -0
  139. package/dist/components/image-gallery.cjs +359 -0
  140. package/dist/components/image-gallery.d.cts +46 -0
  141. package/dist/components/image-gallery.d.ts +46 -0
  142. package/dist/components/image-gallery.mjs +340 -0
  143. package/dist/components/index.cjs +719 -0
  144. package/dist/components/index.d.cts +84 -0
  145. package/dist/components/index.d.ts +84 -0
  146. package/dist/components/index.mjs +771 -0
  147. package/dist/components/infinite-scroll.cjs +95 -0
  148. package/dist/components/infinite-scroll.d.cts +54 -0
  149. package/dist/components/infinite-scroll.d.ts +54 -0
  150. package/dist/components/infinite-scroll.mjs +71 -0
  151. package/dist/components/input-group.cjs +202 -0
  152. package/dist/components/input-group.d.cts +22 -0
  153. package/dist/components/input-group.d.ts +22 -0
  154. package/dist/components/input-group.mjs +178 -0
  155. package/dist/components/input.cjs +318 -0
  156. package/dist/components/input.d.cts +99 -0
  157. package/dist/components/input.d.ts +99 -0
  158. package/dist/components/input.mjs +296 -0
  159. package/dist/components/kbd.cjs +69 -0
  160. package/dist/components/kbd.d.cts +25 -0
  161. package/dist/components/kbd.d.ts +25 -0
  162. package/dist/components/kbd.mjs +44 -0
  163. package/dist/components/label.cjs +138 -0
  164. package/dist/components/label.d.cts +91 -0
  165. package/dist/components/label.d.ts +91 -0
  166. package/dist/components/label.mjs +113 -0
  167. package/dist/components/markdown.cjs +179 -0
  168. package/dist/components/markdown.d.cts +41 -0
  169. package/dist/components/markdown.d.ts +41 -0
  170. package/dist/components/markdown.mjs +155 -0
  171. package/dist/components/menubar.cjs +365 -0
  172. package/dist/components/menubar.d.cts +88 -0
  173. package/dist/components/menubar.d.ts +88 -0
  174. package/dist/components/menubar.mjs +329 -0
  175. package/dist/components/navigation-menu.cjs +280 -0
  176. package/dist/components/navigation-menu.d.cts +123 -0
  177. package/dist/components/navigation-menu.d.ts +123 -0
  178. package/dist/components/navigation-menu.mjs +250 -0
  179. package/dist/components/number-input.cjs +419 -0
  180. package/dist/components/number-input.d.cts +111 -0
  181. package/dist/components/number-input.d.ts +111 -0
  182. package/dist/components/number-input.mjs +400 -0
  183. package/dist/components/pagination.cjs +322 -0
  184. package/dist/components/pagination.d.cts +119 -0
  185. package/dist/components/pagination.d.ts +119 -0
  186. package/dist/components/pagination.mjs +297 -0
  187. package/dist/components/pin-input.cjs +321 -0
  188. package/dist/components/pin-input.d.cts +112 -0
  189. package/dist/components/pin-input.d.ts +112 -0
  190. package/dist/components/pin-input.mjs +303 -0
  191. package/dist/components/popover.cjs +194 -0
  192. package/dist/components/popover.d.cts +108 -0
  193. package/dist/components/popover.d.ts +108 -0
  194. package/dist/components/popover.mjs +168 -0
  195. package/dist/components/progress.cjs +237 -0
  196. package/dist/components/progress.d.cts +137 -0
  197. package/dist/components/progress.d.ts +137 -0
  198. package/dist/components/progress.mjs +211 -0
  199. package/dist/components/radio.cjs +344 -0
  200. package/dist/components/radio.d.cts +145 -0
  201. package/dist/components/radio.d.ts +145 -0
  202. package/dist/components/radio.mjs +320 -0
  203. package/dist/components/resizable.cjs +121 -0
  204. package/dist/components/resizable.d.cts +23 -0
  205. package/dist/components/resizable.d.ts +23 -0
  206. package/dist/components/resizable.mjs +99 -0
  207. package/dist/components/scroll-area.cjs +168 -0
  208. package/dist/components/scroll-area.d.cts +131 -0
  209. package/dist/components/scroll-area.d.ts +131 -0
  210. package/dist/components/scroll-area.mjs +143 -0
  211. package/dist/components/search-input.cjs +261 -0
  212. package/dist/components/search-input.d.cts +26 -0
  213. package/dist/components/search-input.d.ts +26 -0
  214. package/dist/components/search-input.mjs +243 -0
  215. package/dist/components/select.cjs +320 -0
  216. package/dist/components/select.d.cts +55 -0
  217. package/dist/components/select.d.ts +55 -0
  218. package/dist/components/select.mjs +288 -0
  219. package/dist/components/separator.cjs +193 -0
  220. package/dist/components/separator.d.cts +92 -0
  221. package/dist/components/separator.d.ts +92 -0
  222. package/dist/components/separator.mjs +170 -0
  223. package/dist/components/sheet.cjs +399 -0
  224. package/dist/components/sheet.d.cts +219 -0
  225. package/dist/components/sheet.d.ts +219 -0
  226. package/dist/components/sheet.mjs +379 -0
  227. package/dist/components/sidebar.cjs +1077 -0
  228. package/dist/components/sidebar.d.cts +733 -0
  229. package/dist/components/sidebar.d.ts +733 -0
  230. package/dist/components/sidebar.mjs +1033 -0
  231. package/dist/components/skeleton.cjs +210 -0
  232. package/dist/components/skeleton.d.cts +202 -0
  233. package/dist/components/skeleton.d.ts +202 -0
  234. package/dist/components/skeleton.mjs +182 -0
  235. package/dist/components/slider.cjs +319 -0
  236. package/dist/components/slider.d.cts +82 -0
  237. package/dist/components/slider.d.ts +82 -0
  238. package/dist/components/slider.mjs +296 -0
  239. package/dist/components/sonner.cjs +119 -0
  240. package/dist/components/sonner.d.cts +60 -0
  241. package/dist/components/sonner.d.ts +60 -0
  242. package/dist/components/sonner.mjs +94 -0
  243. package/dist/components/spinner.cjs +238 -0
  244. package/dist/components/spinner.d.cts +101 -0
  245. package/dist/components/spinner.d.ts +101 -0
  246. package/dist/components/spinner.mjs +213 -0
  247. package/dist/components/stat.cjs +180 -0
  248. package/dist/components/stat.d.cts +21 -0
  249. package/dist/components/stat.d.ts +21 -0
  250. package/dist/components/stat.mjs +161 -0
  251. package/dist/components/steps.cjs +228 -0
  252. package/dist/components/steps.d.cts +76 -0
  253. package/dist/components/steps.d.ts +76 -0
  254. package/dist/components/steps.mjs +207 -0
  255. package/dist/components/switch.cjs +243 -0
  256. package/dist/components/switch.d.cts +90 -0
  257. package/dist/components/switch.d.ts +90 -0
  258. package/dist/components/switch.mjs +228 -0
  259. package/dist/components/table.cjs +381 -0
  260. package/dist/components/table.d.cts +181 -0
  261. package/dist/components/table.d.ts +181 -0
  262. package/dist/components/table.mjs +349 -0
  263. package/dist/components/tabs.cjs +326 -0
  264. package/dist/components/tabs.d.cts +154 -0
  265. package/dist/components/tabs.d.ts +154 -0
  266. package/dist/components/tabs.mjs +304 -0
  267. package/dist/components/textarea.cjs +258 -0
  268. package/dist/components/textarea.d.cts +112 -0
  269. package/dist/components/textarea.d.ts +112 -0
  270. package/dist/components/textarea.mjs +233 -0
  271. package/dist/components/theme-toggle.cjs +282 -0
  272. package/dist/components/theme-toggle.d.cts +58 -0
  273. package/dist/components/theme-toggle.d.ts +58 -0
  274. package/dist/components/theme-toggle.mjs +258 -0
  275. package/dist/components/timeline.cjs +178 -0
  276. package/dist/components/timeline.d.cts +41 -0
  277. package/dist/components/timeline.d.ts +41 -0
  278. package/dist/components/timeline.mjs +157 -0
  279. package/dist/components/toast.cjs +546 -0
  280. package/dist/components/toast.d.cts +169 -0
  281. package/dist/components/toast.d.ts +169 -0
  282. package/dist/components/toast.mjs +528 -0
  283. package/dist/components/toggle-group.cjs +204 -0
  284. package/dist/components/toggle-group.d.cts +215 -0
  285. package/dist/components/toggle-group.d.ts +215 -0
  286. package/dist/components/toggle-group.mjs +180 -0
  287. package/dist/components/toggle.cjs +155 -0
  288. package/dist/components/toggle.d.cts +100 -0
  289. package/dist/components/toggle.d.ts +100 -0
  290. package/dist/components/toggle.mjs +130 -0
  291. package/dist/components/tooltip.cjs +155 -0
  292. package/dist/components/tooltip.d.cts +129 -0
  293. package/dist/components/tooltip.d.ts +129 -0
  294. package/dist/components/tooltip.mjs +132 -0
  295. package/dist/components/tree-view.cjs +450 -0
  296. package/dist/components/tree-view.d.cts +67 -0
  297. package/dist/components/tree-view.d.ts +67 -0
  298. package/dist/components/tree-view.mjs +433 -0
  299. package/dist/components/video-player.cjs +344 -0
  300. package/dist/components/video-player.d.cts +34 -0
  301. package/dist/components/video-player.d.ts +34 -0
  302. package/dist/components/video-player.mjs +320 -0
  303. package/dist/components/virtual-list.cjs +153 -0
  304. package/dist/components/virtual-list.d.cts +53 -0
  305. package/dist/components/virtual-list.d.ts +53 -0
  306. package/dist/components/virtual-list.mjs +136 -0
  307. package/dist/components/visually-hidden.cjs +43 -0
  308. package/dist/components/visually-hidden.d.cts +9 -0
  309. package/dist/components/visually-hidden.d.ts +9 -0
  310. package/dist/components/visually-hidden.mjs +21 -0
  311. package/dist/index.cjs +1081 -1933
  312. package/dist/index.d.cts +99 -11
  313. package/dist/index.d.ts +99 -11
  314. package/dist/index.mjs +1138 -16
  315. package/dist/motion/hooks.cjs +98 -0
  316. package/dist/motion/hooks.d.cts +32 -0
  317. package/dist/motion/hooks.d.ts +32 -0
  318. package/dist/motion/hooks.mjs +70 -0
  319. package/dist/motion/index.cjs +157 -0
  320. package/dist/motion/index.d.cts +5 -0
  321. package/dist/motion/index.d.ts +5 -0
  322. package/dist/motion/index.mjs +137 -0
  323. package/dist/motion/presets.cjs +609 -0
  324. package/dist/{motion.d.ts → motion/presets.d.cts} +1 -30
  325. package/dist/{motion.d.cts → motion/presets.d.ts} +1 -30
  326. package/dist/{chunk-PLRSH37T.mjs → motion/presets.mjs} +119 -126
  327. package/dist/primitives/container.cjs +88 -0
  328. package/dist/primitives/container.d.cts +82 -0
  329. package/dist/primitives/container.d.ts +82 -0
  330. package/dist/primitives/container.mjs +64 -0
  331. package/dist/primitives/divider.cjs +74 -0
  332. package/dist/primitives/divider.d.cts +30 -0
  333. package/dist/primitives/divider.d.ts +30 -0
  334. package/dist/primitives/divider.mjs +50 -0
  335. package/dist/primitives/index.cjs +54 -0
  336. package/dist/primitives/index.d.cts +6 -0
  337. package/dist/primitives/index.d.ts +6 -0
  338. package/dist/primitives/index.mjs +33 -0
  339. package/dist/primitives/stack.cjs +167 -0
  340. package/dist/primitives/stack.d.cts +132 -0
  341. package/dist/primitives/stack.d.ts +132 -0
  342. package/dist/primitives/stack.mjs +142 -0
  343. package/dist/primitives/typography.cjs +260 -0
  344. package/dist/primitives/typography.d.cts +157 -0
  345. package/dist/primitives/typography.d.ts +157 -0
  346. package/dist/primitives/typography.mjs +229 -0
  347. package/dist/theme/contract.cjs +246 -0
  348. package/dist/theme/contract.d.cts +76 -0
  349. package/dist/theme/contract.d.ts +76 -0
  350. package/dist/theme/contract.mjs +221 -0
  351. package/dist/theme/customizer-store.cjs +266 -0
  352. package/dist/theme/customizer-store.d.cts +76 -0
  353. package/dist/theme/customizer-store.d.ts +76 -0
  354. package/dist/theme/customizer-store.mjs +261 -0
  355. package/dist/theme/customizer.cjs +812 -0
  356. package/dist/theme/customizer.d.cts +13 -0
  357. package/dist/theme/customizer.d.ts +13 -0
  358. package/dist/theme/customizer.mjs +803 -0
  359. package/dist/theme/index.cjs +105 -0
  360. package/dist/theme/index.d.cts +13 -0
  361. package/dist/theme/index.d.ts +13 -0
  362. package/dist/theme/index.mjs +87 -0
  363. package/dist/theme/presets.cjs +1205 -0
  364. package/dist/theme/presets.d.cts +232 -0
  365. package/dist/theme/presets.d.ts +232 -0
  366. package/dist/theme/presets.mjs +1175 -0
  367. package/dist/theme/provider.cjs +122 -0
  368. package/dist/theme/provider.d.cts +57 -0
  369. package/dist/theme/provider.d.ts +57 -0
  370. package/dist/theme/provider.mjs +104 -0
  371. package/dist/{chunk-IVZAB7BV.mjs → tokens/colors.cjs} +212 -86
  372. package/dist/{z-index-Dd8IllRx.d.cts → tokens/colors.d.cts} +235 -72
  373. package/dist/{z-index-Dd8IllRx.d.ts → tokens/colors.d.ts} +235 -72
  374. package/dist/{chunk-ZBGR7MUW.cjs → tokens/colors.mjs} +165 -104
  375. package/dist/tokens/index.cjs +96 -0
  376. package/dist/tokens/index.d.cts +7 -0
  377. package/dist/tokens/index.d.ts +7 -0
  378. package/dist/tokens/index.mjs +71 -0
  379. package/dist/{chunk-XCKK6P46.cjs → tokens/motion.cjs} +46 -18
  380. package/dist/{motion-D9wQbcKL.d.cts → tokens/motion.d.cts} +1 -1
  381. package/dist/{motion-D9wQbcKL.d.ts → tokens/motion.d.ts} +1 -1
  382. package/dist/{chunk-EZ2L3XPS.mjs → tokens/motion.mjs} +16 -10
  383. package/dist/tokens/radius.cjs +41 -0
  384. package/dist/tokens/radius.d.cts +18 -0
  385. package/dist/tokens/radius.d.ts +18 -0
  386. package/dist/tokens/radius.mjs +17 -0
  387. package/dist/tokens/shadows.cjs +57 -0
  388. package/dist/tokens/shadows.d.cts +32 -0
  389. package/dist/tokens/shadows.d.ts +32 -0
  390. package/dist/tokens/shadows.mjs +32 -0
  391. package/dist/tokens/spacing.cjs +51 -0
  392. package/dist/tokens/spacing.d.cts +26 -0
  393. package/dist/tokens/spacing.d.ts +26 -0
  394. package/dist/{chunk-NMPHV6ZD.mjs → tokens/spacing.mjs} +4 -4
  395. package/dist/{chunk-ECIGDEAH.cjs → tokens/typography.cjs} +43 -16
  396. package/dist/{typography-DlvVjEdE.d.ts → tokens/typography.d.cts} +1 -1
  397. package/dist/{typography-DlvVjEdE.d.cts → tokens/typography.d.ts} +1 -1
  398. package/dist/{chunk-ITBG42M5.mjs → tokens/typography.mjs} +14 -9
  399. package/dist/tokens/z-index.cjs +47 -0
  400. package/dist/tokens/z-index.d.cts +24 -0
  401. package/dist/tokens/z-index.d.ts +24 -0
  402. package/dist/tokens/z-index.mjs +23 -0
  403. package/dist/utils/cn.cjs +102 -0
  404. package/dist/utils/cn.d.cts +84 -0
  405. package/dist/utils/cn.d.ts +84 -0
  406. package/dist/{chunk-ZT3PCXDF.mjs → utils/cn.mjs} +14 -7
  407. package/dist/{chunk-33QEKXRQ.cjs → utils/contrast.cjs} +68 -38
  408. package/dist/utils/contrast.d.cts +209 -0
  409. package/dist/utils/contrast.d.ts +209 -0
  410. package/dist/{chunk-5NZDQWRV.mjs → utils/contrast.mjs} +27 -18
  411. package/dist/utils/focus-ring.cjs +81 -0
  412. package/dist/utils/focus-ring.d.cts +80 -0
  413. package/dist/utils/focus-ring.d.ts +80 -0
  414. package/dist/utils/focus-ring.mjs +47 -0
  415. package/dist/utils/index.cjs +107 -0
  416. package/dist/utils/index.d.cts +6 -0
  417. package/dist/utils/index.d.ts +6 -0
  418. package/dist/utils/index.mjs +88 -0
  419. package/dist/utils/types.cjs +38 -0
  420. package/dist/utils/types.d.cts +187 -0
  421. package/dist/utils/types.d.ts +187 -0
  422. package/dist/utils/types.mjs +13 -0
  423. package/package.json +191 -191
  424. package/dist/chunk-2JFREULQ.cjs +0 -29
  425. package/dist/chunk-3EHT6IOA.cjs +0 -49
  426. package/dist/chunk-4ON3M3OM.cjs +0 -73
  427. package/dist/chunk-5TP7J7T4.cjs +0 -1766
  428. package/dist/chunk-A2DGHQL2.cjs +0 -21808
  429. package/dist/chunk-EQWESXRH.mjs +0 -1735
  430. package/dist/chunk-F4JJFWWU.cjs +0 -604
  431. package/dist/chunk-FUWXGHWQ.cjs +0 -468
  432. package/dist/chunk-MBYCK2JJ.mjs +0 -37
  433. package/dist/chunk-OHEH57BV.mjs +0 -455
  434. package/dist/chunk-XAIUX2YS.mjs +0 -21477
  435. package/dist/components.cjs +0 -1247
  436. package/dist/components.d.cts +0 -7881
  437. package/dist/components.d.ts +0 -7881
  438. package/dist/components.mjs +0 -6
  439. package/dist/motion.cjs +0 -264
  440. package/dist/motion.mjs +0 -3
  441. package/dist/primitives.cjs +0 -57
  442. package/dist/primitives.d.cts +0 -390
  443. package/dist/primitives.d.ts +0 -390
  444. package/dist/primitives.mjs +0 -4
  445. package/dist/theme.cjs +0 -131
  446. package/dist/theme.d.cts +0 -414
  447. package/dist/theme.d.ts +0 -414
  448. package/dist/theme.mjs +0 -6
  449. package/dist/tokens.cjs +0 -137
  450. package/dist/tokens.d.cts +0 -30
  451. package/dist/tokens.d.ts +0 -30
  452. package/dist/tokens.mjs +0 -4
  453. package/dist/utils.cjs +0 -164
  454. package/dist/utils.d.cts +0 -525
  455. package/dist/utils.d.ts +0 -525
  456. package/dist/utils.mjs +0 -3
@@ -0,0 +1,113 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { fadeIn, staggerContainer } from "../motion/index";
4
+ import { cn } from "../utils/cn";
5
+ import { cva } from "class-variance-authority";
6
+ import { motion, useReducedMotion } from "framer-motion";
7
+ import { forwardRef } from "react";
8
+ const dataListVariants = cva(["w-full"], {
9
+ variants: {
10
+ orientation: {
11
+ horizontal: "grid grid-cols-[auto_1fr] items-baseline gap-x-6",
12
+ vertical: "flex flex-col gap-2"
13
+ },
14
+ size: {
15
+ sm: "text-xs",
16
+ md: "text-sm",
17
+ lg: "text-base"
18
+ }
19
+ },
20
+ defaultVariants: { orientation: "horizontal", size: "md" }
21
+ });
22
+ const DataListTerm = forwardRef(
23
+ function DataListTerm2({ className, children, ...rest }, ref) {
24
+ return /* @__PURE__ */ jsx(
25
+ "dt",
26
+ {
27
+ ref,
28
+ className: cn("font-medium text-muted-foreground shrink-0", className),
29
+ ...rest,
30
+ children
31
+ }
32
+ );
33
+ }
34
+ );
35
+ DataListTerm.displayName = "DataListTerm";
36
+ const DataListDetail = forwardRef(
37
+ function DataListDetail2({ className, children, ...rest }, ref) {
38
+ return /* @__PURE__ */ jsx("dd", { ref, className: cn("text-foreground m-0", className), ...rest, children });
39
+ }
40
+ );
41
+ DataListDetail.displayName = "DataListDetail";
42
+ const DataList = forwardRef(
43
+ function DataList2({
44
+ items,
45
+ orientation = "horizontal",
46
+ size = "md",
47
+ dividers = false,
48
+ animated = true,
49
+ className
50
+ }, ref) {
51
+ const shouldReduce = useReducedMotion();
52
+ const isHorizontal = orientation === "horizontal";
53
+ const horizontalCellPadding = "py-2";
54
+ return /* @__PURE__ */ jsx(
55
+ motion.dl,
56
+ {
57
+ ref,
58
+ className: cn(dataListVariants({ orientation, size }), className),
59
+ variants: animated && !shouldReduce ? staggerContainer.variants : void 0,
60
+ initial: animated && !shouldReduce ? "initial" : void 0,
61
+ animate: animated && !shouldReduce ? "animate" : void 0,
62
+ "data-ds": "",
63
+ "data-ds-component": "data-list",
64
+ "data-ds-orientation": orientation,
65
+ "data-ds-animated": animated ? "" : void 0,
66
+ children: items.map((item, i) => /* @__PURE__ */ jsx(
67
+ motion.div,
68
+ {
69
+ className: cn(
70
+ isHorizontal ? "contents" : "flex flex-col gap-1",
71
+ dividers && i > 0 && !isHorizontal && "pt-3 border-t border-border"
72
+ ),
73
+ variants: animated && !shouldReduce ? fadeIn.variants : void 0,
74
+ transition: animated && !shouldReduce ? fadeIn.transition : void 0,
75
+ children: isHorizontal ? /* @__PURE__ */ jsxs(Fragment, { children: [
76
+ /* @__PURE__ */ jsx(
77
+ DataListTerm,
78
+ {
79
+ className: cn(
80
+ horizontalCellPadding,
81
+ dividers && i > 0 && "border-t border-border"
82
+ ),
83
+ children: item.term
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(
87
+ DataListDetail,
88
+ {
89
+ className: cn(
90
+ horizontalCellPadding,
91
+ dividers && i > 0 && "border-t border-border"
92
+ ),
93
+ children: item.detail
94
+ }
95
+ )
96
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
97
+ /* @__PURE__ */ jsx(DataListTerm, { children: item.term }),
98
+ /* @__PURE__ */ jsx(DataListDetail, { children: item.detail })
99
+ ] })
100
+ },
101
+ item.key ?? i
102
+ ))
103
+ }
104
+ );
105
+ }
106
+ );
107
+ DataList.displayName = "DataList";
108
+ export {
109
+ DataList,
110
+ DataListDetail,
111
+ DataListTerm,
112
+ dataListVariants
113
+ };
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var data_table_toolbar_exports = {};
21
+ __export(data_table_toolbar_exports, {
22
+ DataTableToolbar: () => DataTableToolbar
23
+ });
24
+ module.exports = __toCommonJS(data_table_toolbar_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_cn = require("../utils/cn");
27
+ var import_focus_ring = require("../utils/focus-ring");
28
+ var import_react = require("react");
29
+ function SearchIcon({ className }) {
30
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
31
+ "svg",
32
+ {
33
+ className,
34
+ xmlns: "http://www.w3.org/2000/svg",
35
+ viewBox: "0 0 24 24",
36
+ fill: "none",
37
+ stroke: "currentColor",
38
+ strokeWidth: "2",
39
+ strokeLinecap: "round",
40
+ strokeLinejoin: "round",
41
+ "aria-hidden": "true",
42
+ children: [
43
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
44
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m21 21-4.3-4.3" })
45
+ ]
46
+ }
47
+ );
48
+ }
49
+ function XIcon({ className }) {
50
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
51
+ "svg",
52
+ {
53
+ className,
54
+ xmlns: "http://www.w3.org/2000/svg",
55
+ viewBox: "0 0 24 24",
56
+ fill: "none",
57
+ stroke: "currentColor",
58
+ strokeWidth: "2",
59
+ strokeLinecap: "round",
60
+ strokeLinejoin: "round",
61
+ "aria-hidden": "true",
62
+ children: [
63
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18 6 6 18" }),
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m6 6 12 12" })
65
+ ]
66
+ }
67
+ );
68
+ }
69
+ function ColumnsIcon({ className }) {
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
71
+ "svg",
72
+ {
73
+ className,
74
+ xmlns: "http://www.w3.org/2000/svg",
75
+ viewBox: "0 0 24 24",
76
+ fill: "none",
77
+ stroke: "currentColor",
78
+ strokeWidth: "2",
79
+ strokeLinecap: "round",
80
+ strokeLinejoin: "round",
81
+ "aria-hidden": "true",
82
+ children: [
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2" }),
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "21" }),
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "3", x2: "21", y1: "12", y2: "12" })
86
+ ]
87
+ }
88
+ );
89
+ }
90
+ function FilterIcon({ className }) {
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
92
+ "svg",
93
+ {
94
+ className,
95
+ xmlns: "http://www.w3.org/2000/svg",
96
+ viewBox: "0 0 24 24",
97
+ fill: "none",
98
+ stroke: "currentColor",
99
+ strokeWidth: "2",
100
+ strokeLinecap: "round",
101
+ strokeLinejoin: "round",
102
+ "aria-hidden": "true",
103
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", { points: "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" })
104
+ }
105
+ );
106
+ }
107
+ const DataTableToolbar = (0, import_react.forwardRef)(function DataTableToolbar2({
108
+ searchValue = "",
109
+ onSearchChange,
110
+ searchPlaceholder = "Search...",
111
+ searchDebounce = 300,
112
+ filters,
113
+ onFilterChange,
114
+ onClearFilters,
115
+ columns,
116
+ onColumnVisibilityChange,
117
+ viewMode,
118
+ viewModes,
119
+ onViewModeChange,
120
+ actions,
121
+ className
122
+ }, ref) {
123
+ const [localSearch, setLocalSearch] = (0, import_react.useState)(searchValue);
124
+ const [prevSearchValue, setPrevSearchValue] = (0, import_react.useState)(searchValue);
125
+ if (searchValue !== prevSearchValue) {
126
+ setPrevSearchValue(searchValue);
127
+ setLocalSearch(searchValue);
128
+ }
129
+ const debounceTimer = (0, import_react.useRef)(null);
130
+ const handleSearchChange = (0, import_react.useCallback)(
131
+ (value) => {
132
+ setLocalSearch(value);
133
+ if (debounceTimer.current) clearTimeout(debounceTimer.current);
134
+ debounceTimer.current = setTimeout(() => {
135
+ onSearchChange?.(value);
136
+ }, searchDebounce);
137
+ },
138
+ [onSearchChange, searchDebounce]
139
+ );
140
+ (0, import_react.useEffect)(() => {
141
+ return () => {
142
+ if (debounceTimer.current) clearTimeout(debounceTimer.current);
143
+ };
144
+ }, []);
145
+ const [openFilter, setOpenFilter] = (0, import_react.useState)(null);
146
+ const [showColumns, setShowColumns] = (0, import_react.useState)(false);
147
+ const hasActiveFilters = filters?.some((f) => f.selected.length > 0) ?? false;
148
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
149
+ "div",
150
+ {
151
+ ref,
152
+ className: (0, import_cn.cn)("flex flex-wrap items-center gap-2", className),
153
+ "data-ds": "",
154
+ "data-ds-component": "data-table-toolbar",
155
+ children: [
156
+ onSearchChange && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative flex-1 min-w-[200px] max-w-sm", children: [
157
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SearchIcon, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none" }),
158
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
159
+ "input",
160
+ {
161
+ type: "text",
162
+ value: localSearch,
163
+ onChange: (e) => handleSearchChange(e.target.value),
164
+ placeholder: searchPlaceholder,
165
+ className: (0, import_cn.cn)(
166
+ "h-9 w-full rounded-md border border-border bg-background pl-9 pr-8 text-sm",
167
+ "text-foreground placeholder:text-muted-foreground",
168
+ "transition-colors duration-fast",
169
+ import_focus_ring.focusRingClasses
170
+ ),
171
+ "aria-label": "Search table"
172
+ }
173
+ ),
174
+ localSearch && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
175
+ "button",
176
+ {
177
+ type: "button",
178
+ onClick: () => handleSearchChange(""),
179
+ className: "absolute right-2 top-1/2 -translate-y-1/2 inline-flex size-5 items-center justify-center rounded text-muted-foreground hover:text-foreground",
180
+ "aria-label": "Clear search",
181
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(XIcon, { className: "size-3.5" })
182
+ }
183
+ )
184
+ ] }),
185
+ filters?.map((filter) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
186
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
187
+ "button",
188
+ {
189
+ type: "button",
190
+ onClick: () => setOpenFilter(openFilter === filter.id ? null : filter.id),
191
+ className: (0, import_cn.cn)(
192
+ "inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-sm transition-colors",
193
+ filter.selected.length > 0 ? "border-primary/30 bg-primary/5 text-foreground" : "border-border bg-background text-muted-foreground hover:text-foreground hover:bg-muted",
194
+ import_focus_ring.focusRingClasses
195
+ ),
196
+ children: [
197
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterIcon, { className: "size-3.5" }),
198
+ filter.label,
199
+ filter.selected.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ml-1 inline-flex size-5 items-center justify-center rounded-full bg-primary text-primary-foreground text-[11px] font-medium", children: filter.selected.length })
200
+ ]
201
+ }
202
+ ),
203
+ openFilter === filter.id && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute top-full left-0 z-50 mt-1 w-52 rounded-lg border border-border bg-background p-1 shadow-lg", children: filter.options.map((opt) => {
204
+ const isSelected = filter.selected.includes(opt.value);
205
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
206
+ "button",
207
+ {
208
+ type: "button",
209
+ onClick: () => {
210
+ const next = isSelected ? filter.selected.filter((v) => v !== opt.value) : [...filter.selected, opt.value];
211
+ onFilterChange?.(filter.id, next);
212
+ },
213
+ className: (0, import_cn.cn)(
214
+ "flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-sm transition-colors",
215
+ "hover:bg-muted text-foreground"
216
+ ),
217
+ children: [
218
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
219
+ "div",
220
+ {
221
+ className: (0, import_cn.cn)(
222
+ "size-4 rounded border flex items-center justify-center shrink-0",
223
+ isSelected ? "bg-primary border-primary text-primary-foreground" : "border-border"
224
+ ),
225
+ children: isSelected && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
226
+ "svg",
227
+ {
228
+ className: "size-3",
229
+ viewBox: "0 0 24 24",
230
+ fill: "none",
231
+ stroke: "currentColor",
232
+ strokeWidth: "3",
233
+ strokeLinecap: "round",
234
+ strokeLinejoin: "round",
235
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M20 6 9 17l-5-5" })
236
+ }
237
+ )
238
+ }
239
+ ),
240
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "flex-1 text-left", children: opt.label }),
241
+ opt.count !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs text-muted-foreground tabular-nums", children: opt.count })
242
+ ]
243
+ },
244
+ opt.value
245
+ );
246
+ }) })
247
+ ] }, filter.id)),
248
+ hasActiveFilters && onClearFilters && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
249
+ "button",
250
+ {
251
+ type: "button",
252
+ onClick: onClearFilters,
253
+ className: "inline-flex h-9 items-center gap-1 rounded-md px-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors",
254
+ children: [
255
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(XIcon, { className: "size-3.5" }),
256
+ "Clear"
257
+ ]
258
+ }
259
+ ),
260
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1" }),
261
+ columns && onColumnVisibilityChange && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
262
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
263
+ "button",
264
+ {
265
+ type: "button",
266
+ onClick: () => setShowColumns(!showColumns),
267
+ className: (0, import_cn.cn)(
268
+ "inline-flex h-9 items-center gap-1.5 rounded-md border border-border bg-background px-3 text-sm text-muted-foreground",
269
+ "hover:text-foreground hover:bg-muted transition-colors",
270
+ import_focus_ring.focusRingClasses
271
+ ),
272
+ "aria-label": "Toggle column visibility",
273
+ children: [
274
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ColumnsIcon, { className: "size-3.5" }),
275
+ "Columns"
276
+ ]
277
+ }
278
+ ),
279
+ showColumns && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute top-full right-0 z-50 mt-1 w-48 rounded-lg border border-border bg-background p-1 shadow-lg", children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
280
+ "button",
281
+ {
282
+ type: "button",
283
+ onClick: () => onColumnVisibilityChange(col.id, !col.visible),
284
+ className: "flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-sm hover:bg-muted text-foreground transition-colors",
285
+ children: [
286
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
287
+ "div",
288
+ {
289
+ className: (0, import_cn.cn)(
290
+ "size-4 rounded border flex items-center justify-center shrink-0",
291
+ col.visible ? "bg-primary border-primary text-primary-foreground" : "border-border"
292
+ ),
293
+ children: col.visible && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
294
+ "svg",
295
+ {
296
+ className: "size-3",
297
+ viewBox: "0 0 24 24",
298
+ fill: "none",
299
+ stroke: "currentColor",
300
+ strokeWidth: "3",
301
+ strokeLinecap: "round",
302
+ strokeLinejoin: "round",
303
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M20 6 9 17l-5-5" })
304
+ }
305
+ )
306
+ }
307
+ ),
308
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: col.label })
309
+ ]
310
+ },
311
+ col.id
312
+ )) })
313
+ ] }),
314
+ viewModes && viewMode && onViewModeChange && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "inline-flex h-9 items-center rounded-md border border-border bg-background p-0.5", children: viewModes.map((mode) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
315
+ "button",
316
+ {
317
+ type: "button",
318
+ onClick: () => onViewModeChange(mode),
319
+ className: (0, import_cn.cn)(
320
+ "inline-flex h-7 items-center justify-center rounded-[5px] px-2.5 text-xs font-medium capitalize transition-colors",
321
+ viewMode === mode ? "bg-muted text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
322
+ ),
323
+ "aria-label": `${mode} view`,
324
+ "aria-pressed": viewMode === mode,
325
+ children: mode
326
+ },
327
+ mode
328
+ )) }),
329
+ actions
330
+ ]
331
+ }
332
+ );
333
+ });
334
+ DataTableToolbar.displayName = "DataTableToolbar";
335
+ // Annotate the CommonJS export names for ESM import in node:
336
+ 0 && (module.exports = {
337
+ DataTableToolbar
338
+ });
@@ -0,0 +1,84 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface DataTableFilter {
5
+ /** Unique identifier for this filter. */
6
+ id: string;
7
+ /** Display label. */
8
+ label: string;
9
+ /** Available options for this filter. */
10
+ options: Array<{
11
+ label: string;
12
+ value: string;
13
+ count?: number;
14
+ }>;
15
+ /** Currently selected values. */
16
+ selected: string[];
17
+ }
18
+ interface ColumnVisibility {
19
+ /** Column identifier. */
20
+ id: string;
21
+ /** Display label. */
22
+ label: string;
23
+ /** Whether the column is visible. */
24
+ visible: boolean;
25
+ }
26
+ type ViewMode = "table" | "grid" | "list";
27
+ interface DataTableToolbarProps {
28
+ /** Current search value. */
29
+ searchValue?: string;
30
+ /** Callback when search value changes. */
31
+ onSearchChange?: (value: string) => void;
32
+ /** Search placeholder text. @default "Search..." */
33
+ searchPlaceholder?: string;
34
+ /** Debounce delay for search in ms. @default 300 */
35
+ searchDebounce?: number;
36
+ /** Filter definitions and their current state. */
37
+ filters?: DataTableFilter[];
38
+ /** Callback when a filter's selected values change. */
39
+ onFilterChange?: (filterId: string, selected: string[]) => void;
40
+ /** Callback to clear all filters. */
41
+ onClearFilters?: () => void;
42
+ /** Column visibility state. */
43
+ columns?: ColumnVisibility[];
44
+ /** Callback when column visibility changes. */
45
+ onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;
46
+ /** Current view mode. */
47
+ viewMode?: ViewMode;
48
+ /** Available view modes. */
49
+ viewModes?: ViewMode[];
50
+ /** Callback when view mode changes. */
51
+ onViewModeChange?: (mode: ViewMode) => void;
52
+ /** Extra actions to render on the right side of the toolbar. */
53
+ actions?: ReactNode;
54
+ /** Additional CSS classes. */
55
+ className?: string;
56
+ }
57
+ /**
58
+ * `DataTableToolbar` — a composable toolbar for DataTable with search,
59
+ * filters, column visibility, and view mode controls.
60
+ *
61
+ * @example
62
+ * ```tsx
63
+ * <DataTableToolbar
64
+ * searchValue={search}
65
+ * onSearchChange={setSearch}
66
+ * filters={[
67
+ * {
68
+ * id: "status",
69
+ * label: "Status",
70
+ * options: [
71
+ * { label: "Active", value: "active", count: 12 },
72
+ * { label: "Inactive", value: "inactive", count: 5 },
73
+ * ],
74
+ * selected: selectedStatuses,
75
+ * },
76
+ * ]}
77
+ * onFilterChange={handleFilter}
78
+ * onClearFilters={() => setFilters({})}
79
+ * />
80
+ * ```
81
+ */
82
+ declare const DataTableToolbar: react.ForwardRefExoticComponent<DataTableToolbarProps & react.RefAttributes<HTMLDivElement>>;
83
+
84
+ export { type ColumnVisibility, type DataTableFilter, DataTableToolbar, type DataTableToolbarProps, type ViewMode };
@@ -0,0 +1,84 @@
1
+ import * as react from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface DataTableFilter {
5
+ /** Unique identifier for this filter. */
6
+ id: string;
7
+ /** Display label. */
8
+ label: string;
9
+ /** Available options for this filter. */
10
+ options: Array<{
11
+ label: string;
12
+ value: string;
13
+ count?: number;
14
+ }>;
15
+ /** Currently selected values. */
16
+ selected: string[];
17
+ }
18
+ interface ColumnVisibility {
19
+ /** Column identifier. */
20
+ id: string;
21
+ /** Display label. */
22
+ label: string;
23
+ /** Whether the column is visible. */
24
+ visible: boolean;
25
+ }
26
+ type ViewMode = "table" | "grid" | "list";
27
+ interface DataTableToolbarProps {
28
+ /** Current search value. */
29
+ searchValue?: string;
30
+ /** Callback when search value changes. */
31
+ onSearchChange?: (value: string) => void;
32
+ /** Search placeholder text. @default "Search..." */
33
+ searchPlaceholder?: string;
34
+ /** Debounce delay for search in ms. @default 300 */
35
+ searchDebounce?: number;
36
+ /** Filter definitions and their current state. */
37
+ filters?: DataTableFilter[];
38
+ /** Callback when a filter's selected values change. */
39
+ onFilterChange?: (filterId: string, selected: string[]) => void;
40
+ /** Callback to clear all filters. */
41
+ onClearFilters?: () => void;
42
+ /** Column visibility state. */
43
+ columns?: ColumnVisibility[];
44
+ /** Callback when column visibility changes. */
45
+ onColumnVisibilityChange?: (columnId: string, visible: boolean) => void;
46
+ /** Current view mode. */
47
+ viewMode?: ViewMode;
48
+ /** Available view modes. */
49
+ viewModes?: ViewMode[];
50
+ /** Callback when view mode changes. */
51
+ onViewModeChange?: (mode: ViewMode) => void;
52
+ /** Extra actions to render on the right side of the toolbar. */
53
+ actions?: ReactNode;
54
+ /** Additional CSS classes. */
55
+ className?: string;
56
+ }
57
+ /**
58
+ * `DataTableToolbar` — a composable toolbar for DataTable with search,
59
+ * filters, column visibility, and view mode controls.
60
+ *
61
+ * @example
62
+ * ```tsx
63
+ * <DataTableToolbar
64
+ * searchValue={search}
65
+ * onSearchChange={setSearch}
66
+ * filters={[
67
+ * {
68
+ * id: "status",
69
+ * label: "Status",
70
+ * options: [
71
+ * { label: "Active", value: "active", count: 12 },
72
+ * { label: "Inactive", value: "inactive", count: 5 },
73
+ * ],
74
+ * selected: selectedStatuses,
75
+ * },
76
+ * ]}
77
+ * onFilterChange={handleFilter}
78
+ * onClearFilters={() => setFilters({})}
79
+ * />
80
+ * ```
81
+ */
82
+ declare const DataTableToolbar: react.ForwardRefExoticComponent<DataTableToolbarProps & react.RefAttributes<HTMLDivElement>>;
83
+
84
+ export { type ColumnVisibility, type DataTableFilter, DataTableToolbar, type DataTableToolbarProps, type ViewMode };