@work-rjkashyap/unified-ui 0.3.4 → 0.3.6

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 -1957
  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-AAEWG5VR.mjs → tokens/colors.cjs} +94 -94
  372. package/dist/{z-index-DmLl6FUD.d.ts → tokens/colors.d.cts} +118 -72
  373. package/dist/{z-index-DmLl6FUD.d.cts → tokens/colors.d.ts} +118 -72
  374. package/dist/{chunk-6ZZZBOCH.cjs → tokens/colors.mjs} +47 -121
  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-A2DGHQL2.cjs +0 -21808
  428. package/dist/chunk-BJ55D5IK.mjs +0 -2433
  429. package/dist/chunk-F4JJFWWU.cjs +0 -604
  430. package/dist/chunk-FUWXGHWQ.cjs +0 -468
  431. package/dist/chunk-MBYCK2JJ.mjs +0 -37
  432. package/dist/chunk-OHEH57BV.mjs +0 -455
  433. package/dist/chunk-RUG3BW2B.cjs +0 -2471
  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 -159
  446. package/dist/theme.d.cts +0 -440
  447. package/dist/theme.d.ts +0 -440
  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,349 @@
1
+ import { ColumnDef, SortingState, OnChangeFn, ColumnFiltersState, PaginationState, RowSelectionState, Row, VisibilityState, ColumnPinningState, Table } from '@tanstack/react-table';
2
+ export { ColumnDef, ColumnFiltersState, PaginationState, Row, RowSelectionState, SortingState, VisibilityState, createColumnHelper } from '@tanstack/react-table';
3
+ import { ReactNode } from 'react';
4
+ import { TableDensity, TableAlign } from './table.cjs';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+
8
+ /**
9
+ * Extend TanStack Table's ColumnMeta with Unified UI specific properties.
10
+ * Consumers can use these in their ColumnDef `meta` field.
11
+ */
12
+ interface DataTableColumnMeta {
13
+ /** Text alignment for the column header and cells. */
14
+ align?: TableAlign;
15
+ /** Whether this column should have a sticky header. */
16
+ sticky?: boolean;
17
+ /** Custom CSS class for header cells. */
18
+ headerClassName?: string;
19
+ /** Custom CSS class for body cells. */
20
+ cellClassName?: string;
21
+ /** Whether to show a filter input for this column. */
22
+ filterable?: boolean;
23
+ /** Placeholder text for the column filter input. */
24
+ filterPlaceholder?: string;
25
+ /**
26
+ * Enable a dropdown header menu (Asc / Desc / Hide) on this column.
27
+ * When `true`, clicking the column header opens a dropdown instead of
28
+ * directly toggling the sort direction.
29
+ * @default false
30
+ */
31
+ enableHeaderMenu?: boolean;
32
+ }
33
+ /**
34
+ * Configuration for a faceted filter button shown in the toolbar.
35
+ * Each entry creates a pill-style button that opens a popover with
36
+ * checkbox options derived from the column's unique values.
37
+ */
38
+ interface DataTableFacetedFilter {
39
+ /** The column ID to filter on (must match a `ColumnDef` accessorKey or id). */
40
+ columnId: string;
41
+ /** Display label for the filter button. */
42
+ title: string;
43
+ /**
44
+ * Optional icon rendered before the title.
45
+ * Pass a React element (e.g. a Lucide icon).
46
+ */
47
+ icon?: ReactNode;
48
+ /**
49
+ * Explicit list of filter options. If omitted the component will
50
+ * derive options from the column's unique faceted values.
51
+ */
52
+ options?: {
53
+ label: string;
54
+ value: string;
55
+ icon?: ReactNode;
56
+ }[];
57
+ }
58
+ interface DataTableProps<TData> {
59
+ /** The data array to render. Each item becomes a row. */
60
+ data: TData[];
61
+ /**
62
+ * TanStack Table column definitions.
63
+ * @see https://tanstack.com/table/latest/docs/guide/column-defs
64
+ */
65
+ columns: ColumnDef<TData, any>[];
66
+ /**
67
+ * Faceted filter buttons rendered in the toolbar.
68
+ * Each entry creates a pill-style button that opens a checkbox popover
69
+ * filtered by that column's unique values.
70
+ */
71
+ facetedFilters?: DataTableFacetedFilter[];
72
+ /**
73
+ * Enable client-side sorting.
74
+ * @default false
75
+ */
76
+ sorting?: boolean;
77
+ /**
78
+ * Controlled sorting state. When provided, sorting becomes controlled.
79
+ * Use with `onSortingChange`.
80
+ */
81
+ sortingState?: SortingState;
82
+ /** Callback for controlled sorting state changes. */
83
+ onSortingChange?: OnChangeFn<SortingState>;
84
+ /**
85
+ * Enable multi-column sorting (hold Shift to sort by multiple columns).
86
+ * @default false
87
+ */
88
+ multiSort?: boolean;
89
+ /**
90
+ * Enable client-side filtering (global + per-column).
91
+ * @default false
92
+ */
93
+ filtering?: boolean;
94
+ /**
95
+ * Controlled global filter value.
96
+ */
97
+ globalFilter?: string;
98
+ /** Callback for controlled global filter changes. */
99
+ onGlobalFilterChange?: OnChangeFn<string>;
100
+ /**
101
+ * Controlled column filters state.
102
+ */
103
+ columnFilters?: ColumnFiltersState;
104
+ /** Callback for controlled column filter changes. */
105
+ onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
106
+ /**
107
+ * Show a global search input above the table.
108
+ * Requires `filtering` to be enabled.
109
+ * @default false
110
+ */
111
+ showGlobalFilter?: boolean;
112
+ /** Placeholder for the global search input. */
113
+ globalFilterPlaceholder?: string;
114
+ /**
115
+ * Enable client-side pagination.
116
+ * @default false
117
+ */
118
+ pagination?: boolean;
119
+ /**
120
+ * Number of rows per page.
121
+ * @default 10
122
+ */
123
+ pageSize?: number;
124
+ /**
125
+ * Controlled pagination state.
126
+ */
127
+ paginationState?: PaginationState;
128
+ /** Callback for controlled pagination changes. */
129
+ onPaginationChange?: OnChangeFn<PaginationState>;
130
+ /**
131
+ * Available page size options for the page-size selector.
132
+ * Set to `false` to hide the selector.
133
+ * @default [10, 20, 30, 50, 100]
134
+ */
135
+ pageSizeOptions?: number[] | false;
136
+ /**
137
+ * Enable row selection.
138
+ * - `"single"` — only one row at a time
139
+ * - `"multi"` — multiple rows via checkboxes
140
+ * - `false` — disabled
141
+ * @default false
142
+ */
143
+ rowSelection?: "single" | "multi" | false;
144
+ /**
145
+ * Controlled row selection state.
146
+ * Keys are row IDs (by default the row index).
147
+ */
148
+ rowSelectionState?: RowSelectionState;
149
+ /** Callback for controlled row selection changes. */
150
+ onRowSelectionChange?: OnChangeFn<RowSelectionState>;
151
+ /**
152
+ * Callback when selected rows change. Receives the full Row objects.
153
+ * Convenience wrapper around `onRowSelectionChange`.
154
+ */
155
+ onSelectedRowsChange?: (rows: Row<TData>[]) => void;
156
+ /**
157
+ * Function to determine if a row can be selected.
158
+ */
159
+ enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
160
+ /**
161
+ * Custom row ID accessor. By default, the row index is used.
162
+ */
163
+ getRowId?: (originalRow: TData, index: number) => string;
164
+ /**
165
+ * Enable column visibility toggling.
166
+ * @default false
167
+ */
168
+ columnVisibility?: boolean;
169
+ /**
170
+ * Controlled column visibility state.
171
+ */
172
+ columnVisibilityState?: VisibilityState;
173
+ /** Callback for controlled column visibility changes. */
174
+ onColumnVisibilityChange?: OnChangeFn<VisibilityState>;
175
+ /**
176
+ * Controlled column pinning state.
177
+ */
178
+ columnPinning?: ColumnPinningState;
179
+ /** Callback for controlled column pinning changes. */
180
+ onColumnPinningChange?: OnChangeFn<ColumnPinningState>;
181
+ /**
182
+ * Row height density.
183
+ * @default "comfortable"
184
+ */
185
+ density?: TableDensity;
186
+ /**
187
+ * Alternate row background color for readability.
188
+ * @default false
189
+ */
190
+ striped?: boolean;
191
+ /**
192
+ * Highlight rows on hover.
193
+ * @default true
194
+ */
195
+ hoverable?: boolean;
196
+ /**
197
+ * Add borders between cells.
198
+ * @default false
199
+ */
200
+ bordered?: boolean;
201
+ /**
202
+ * Wrap the table in a horizontally-scrollable container.
203
+ * @default true
204
+ */
205
+ responsive?: boolean;
206
+ /**
207
+ * Show a loading skeleton overlay.
208
+ * @default false
209
+ */
210
+ loading?: boolean;
211
+ /**
212
+ * Custom content to show when data is empty.
213
+ */
214
+ emptyState?: ReactNode;
215
+ /**
216
+ * Table caption (accessibility).
217
+ */
218
+ caption?: ReactNode;
219
+ /**
220
+ * Render a footer row. If true, column footers from ColumnDef are rendered.
221
+ * @default false
222
+ */
223
+ showFooter?: boolean;
224
+ /**
225
+ * Content rendered above the table (e.g., filters, actions toolbar).
226
+ * Receives the table instance for advanced usage.
227
+ */
228
+ toolbar?: ReactNode | ((table: Table<TData>) => ReactNode);
229
+ /**
230
+ * Content rendered below the table (e.g., custom pagination, summary).
231
+ * Receives the table instance for advanced usage.
232
+ */
233
+ footer?: ReactNode | ((table: Table<TData>) => ReactNode);
234
+ /** Additional CSS classes for the outermost wrapper. */
235
+ className?: string;
236
+ /** Additional CSS classes for the table element. */
237
+ tableClassName?: string;
238
+ /** Additional CSS classes for the responsive wrapper. */
239
+ wrapperClassName?: string;
240
+ /**
241
+ * Callback when a row is clicked.
242
+ */
243
+ onRowClick?: (row: Row<TData>, event: React.MouseEvent) => void;
244
+ /**
245
+ * Expose the table instance to the parent via ref callback.
246
+ */
247
+ onTableInstance?: (table: Table<TData>) => void;
248
+ }
249
+ /**
250
+ * DataTable — a feature-rich data table powered by TanStack Table,
251
+ * rendered with Unified UI's styled Table primitives.
252
+ *
253
+ * Supports sorting, filtering, pagination, row selection, column visibility,
254
+ * loading/empty states, and custom toolbar/footer slots.
255
+ *
256
+ * @example
257
+ * ```tsx
258
+ * import { DataTable, type ColumnDef } from "@work-rjkashyap/unified-ui";
259
+ *
260
+ * type Person = { name: string; email: string; age: number };
261
+ *
262
+ * const columns: ColumnDef<Person>[] = [
263
+ * { accessorKey: "name", header: "Name" },
264
+ * { accessorKey: "email", header: "Email" },
265
+ * { accessorKey: "age", header: "Age" },
266
+ * ];
267
+ *
268
+ * <DataTable
269
+ * data={people}
270
+ * columns={columns}
271
+ * sorting
272
+ * pagination
273
+ * pageSize={20}
274
+ * striped
275
+ * hoverable
276
+ * />
277
+ * ```
278
+ */
279
+ declare const DataTable: <TData>(props: DataTableProps<TData> & {
280
+ ref?: React.Ref<HTMLDivElement>;
281
+ }) => React.ReactElement;
282
+ interface UseDataTableOptions<TData> {
283
+ data: TData[];
284
+ columns: ColumnDef<TData, any>[];
285
+ initialSorting?: SortingState;
286
+ initialPagination?: Partial<PaginationState>;
287
+ initialColumnFilters?: ColumnFiltersState;
288
+ initialRowSelection?: RowSelectionState;
289
+ initialColumnVisibility?: VisibilityState;
290
+ initialGlobalFilter?: string;
291
+ }
292
+ interface UseDataTableReturn<_TData> {
293
+ sorting: SortingState;
294
+ onSortingChange: OnChangeFn<SortingState>;
295
+ globalFilter: string;
296
+ onGlobalFilterChange: OnChangeFn<string>;
297
+ columnFilters: ColumnFiltersState;
298
+ onColumnFiltersChange: OnChangeFn<ColumnFiltersState>;
299
+ pagination: PaginationState;
300
+ onPaginationChange: OnChangeFn<PaginationState>;
301
+ rowSelection: RowSelectionState;
302
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
303
+ columnVisibility: VisibilityState;
304
+ onColumnVisibilityChange: OnChangeFn<VisibilityState>;
305
+ /** Spread these into <DataTable /> for full controlled mode. */
306
+ tableProps: {
307
+ sortingState: SortingState;
308
+ onSortingChange: OnChangeFn<SortingState>;
309
+ globalFilter: string;
310
+ onGlobalFilterChange: OnChangeFn<string>;
311
+ columnFilters: ColumnFiltersState;
312
+ onColumnFiltersChange: OnChangeFn<ColumnFiltersState>;
313
+ paginationState: PaginationState;
314
+ onPaginationChange: OnChangeFn<PaginationState>;
315
+ rowSelectionState: RowSelectionState;
316
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
317
+ columnVisibilityState: VisibilityState;
318
+ onColumnVisibilityChange: OnChangeFn<VisibilityState>;
319
+ };
320
+ /** Reset all state back to initial values. */
321
+ reset: () => void;
322
+ }
323
+ /**
324
+ * useDataTable — a convenience hook that manages all table state in one place.
325
+ *
326
+ * Spread `tableProps` into `<DataTable />` for fully controlled usage:
327
+ *
328
+ * @example
329
+ * ```tsx
330
+ * const { tableProps, sorting, rowSelection, reset } = useDataTable({
331
+ * data,
332
+ * columns,
333
+ * initialSorting: [{ id: "name", desc: false }],
334
+ * initialPagination: { pageSize: 20 },
335
+ * });
336
+ *
337
+ * <DataTable
338
+ * data={data}
339
+ * columns={columns}
340
+ * sorting
341
+ * pagination
342
+ * rowSelection="multi"
343
+ * {...tableProps}
344
+ * />
345
+ * ```
346
+ */
347
+ declare function useDataTable<TData>(options: UseDataTableOptions<TData>): UseDataTableReturn<TData>;
348
+
349
+ export { DataTable, type DataTableColumnMeta, type DataTableFacetedFilter, type DataTableProps, type UseDataTableOptions, type UseDataTableReturn, useDataTable };
@@ -0,0 +1,349 @@
1
+ import { ColumnDef, SortingState, OnChangeFn, ColumnFiltersState, PaginationState, RowSelectionState, Row, VisibilityState, ColumnPinningState, Table } from '@tanstack/react-table';
2
+ export { ColumnDef, ColumnFiltersState, PaginationState, Row, RowSelectionState, SortingState, VisibilityState, createColumnHelper } from '@tanstack/react-table';
3
+ import { ReactNode } from 'react';
4
+ import { TableDensity, TableAlign } from './table.js';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+
8
+ /**
9
+ * Extend TanStack Table's ColumnMeta with Unified UI specific properties.
10
+ * Consumers can use these in their ColumnDef `meta` field.
11
+ */
12
+ interface DataTableColumnMeta {
13
+ /** Text alignment for the column header and cells. */
14
+ align?: TableAlign;
15
+ /** Whether this column should have a sticky header. */
16
+ sticky?: boolean;
17
+ /** Custom CSS class for header cells. */
18
+ headerClassName?: string;
19
+ /** Custom CSS class for body cells. */
20
+ cellClassName?: string;
21
+ /** Whether to show a filter input for this column. */
22
+ filterable?: boolean;
23
+ /** Placeholder text for the column filter input. */
24
+ filterPlaceholder?: string;
25
+ /**
26
+ * Enable a dropdown header menu (Asc / Desc / Hide) on this column.
27
+ * When `true`, clicking the column header opens a dropdown instead of
28
+ * directly toggling the sort direction.
29
+ * @default false
30
+ */
31
+ enableHeaderMenu?: boolean;
32
+ }
33
+ /**
34
+ * Configuration for a faceted filter button shown in the toolbar.
35
+ * Each entry creates a pill-style button that opens a popover with
36
+ * checkbox options derived from the column's unique values.
37
+ */
38
+ interface DataTableFacetedFilter {
39
+ /** The column ID to filter on (must match a `ColumnDef` accessorKey or id). */
40
+ columnId: string;
41
+ /** Display label for the filter button. */
42
+ title: string;
43
+ /**
44
+ * Optional icon rendered before the title.
45
+ * Pass a React element (e.g. a Lucide icon).
46
+ */
47
+ icon?: ReactNode;
48
+ /**
49
+ * Explicit list of filter options. If omitted the component will
50
+ * derive options from the column's unique faceted values.
51
+ */
52
+ options?: {
53
+ label: string;
54
+ value: string;
55
+ icon?: ReactNode;
56
+ }[];
57
+ }
58
+ interface DataTableProps<TData> {
59
+ /** The data array to render. Each item becomes a row. */
60
+ data: TData[];
61
+ /**
62
+ * TanStack Table column definitions.
63
+ * @see https://tanstack.com/table/latest/docs/guide/column-defs
64
+ */
65
+ columns: ColumnDef<TData, any>[];
66
+ /**
67
+ * Faceted filter buttons rendered in the toolbar.
68
+ * Each entry creates a pill-style button that opens a checkbox popover
69
+ * filtered by that column's unique values.
70
+ */
71
+ facetedFilters?: DataTableFacetedFilter[];
72
+ /**
73
+ * Enable client-side sorting.
74
+ * @default false
75
+ */
76
+ sorting?: boolean;
77
+ /**
78
+ * Controlled sorting state. When provided, sorting becomes controlled.
79
+ * Use with `onSortingChange`.
80
+ */
81
+ sortingState?: SortingState;
82
+ /** Callback for controlled sorting state changes. */
83
+ onSortingChange?: OnChangeFn<SortingState>;
84
+ /**
85
+ * Enable multi-column sorting (hold Shift to sort by multiple columns).
86
+ * @default false
87
+ */
88
+ multiSort?: boolean;
89
+ /**
90
+ * Enable client-side filtering (global + per-column).
91
+ * @default false
92
+ */
93
+ filtering?: boolean;
94
+ /**
95
+ * Controlled global filter value.
96
+ */
97
+ globalFilter?: string;
98
+ /** Callback for controlled global filter changes. */
99
+ onGlobalFilterChange?: OnChangeFn<string>;
100
+ /**
101
+ * Controlled column filters state.
102
+ */
103
+ columnFilters?: ColumnFiltersState;
104
+ /** Callback for controlled column filter changes. */
105
+ onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;
106
+ /**
107
+ * Show a global search input above the table.
108
+ * Requires `filtering` to be enabled.
109
+ * @default false
110
+ */
111
+ showGlobalFilter?: boolean;
112
+ /** Placeholder for the global search input. */
113
+ globalFilterPlaceholder?: string;
114
+ /**
115
+ * Enable client-side pagination.
116
+ * @default false
117
+ */
118
+ pagination?: boolean;
119
+ /**
120
+ * Number of rows per page.
121
+ * @default 10
122
+ */
123
+ pageSize?: number;
124
+ /**
125
+ * Controlled pagination state.
126
+ */
127
+ paginationState?: PaginationState;
128
+ /** Callback for controlled pagination changes. */
129
+ onPaginationChange?: OnChangeFn<PaginationState>;
130
+ /**
131
+ * Available page size options for the page-size selector.
132
+ * Set to `false` to hide the selector.
133
+ * @default [10, 20, 30, 50, 100]
134
+ */
135
+ pageSizeOptions?: number[] | false;
136
+ /**
137
+ * Enable row selection.
138
+ * - `"single"` — only one row at a time
139
+ * - `"multi"` — multiple rows via checkboxes
140
+ * - `false` — disabled
141
+ * @default false
142
+ */
143
+ rowSelection?: "single" | "multi" | false;
144
+ /**
145
+ * Controlled row selection state.
146
+ * Keys are row IDs (by default the row index).
147
+ */
148
+ rowSelectionState?: RowSelectionState;
149
+ /** Callback for controlled row selection changes. */
150
+ onRowSelectionChange?: OnChangeFn<RowSelectionState>;
151
+ /**
152
+ * Callback when selected rows change. Receives the full Row objects.
153
+ * Convenience wrapper around `onRowSelectionChange`.
154
+ */
155
+ onSelectedRowsChange?: (rows: Row<TData>[]) => void;
156
+ /**
157
+ * Function to determine if a row can be selected.
158
+ */
159
+ enableRowSelection?: boolean | ((row: Row<TData>) => boolean);
160
+ /**
161
+ * Custom row ID accessor. By default, the row index is used.
162
+ */
163
+ getRowId?: (originalRow: TData, index: number) => string;
164
+ /**
165
+ * Enable column visibility toggling.
166
+ * @default false
167
+ */
168
+ columnVisibility?: boolean;
169
+ /**
170
+ * Controlled column visibility state.
171
+ */
172
+ columnVisibilityState?: VisibilityState;
173
+ /** Callback for controlled column visibility changes. */
174
+ onColumnVisibilityChange?: OnChangeFn<VisibilityState>;
175
+ /**
176
+ * Controlled column pinning state.
177
+ */
178
+ columnPinning?: ColumnPinningState;
179
+ /** Callback for controlled column pinning changes. */
180
+ onColumnPinningChange?: OnChangeFn<ColumnPinningState>;
181
+ /**
182
+ * Row height density.
183
+ * @default "comfortable"
184
+ */
185
+ density?: TableDensity;
186
+ /**
187
+ * Alternate row background color for readability.
188
+ * @default false
189
+ */
190
+ striped?: boolean;
191
+ /**
192
+ * Highlight rows on hover.
193
+ * @default true
194
+ */
195
+ hoverable?: boolean;
196
+ /**
197
+ * Add borders between cells.
198
+ * @default false
199
+ */
200
+ bordered?: boolean;
201
+ /**
202
+ * Wrap the table in a horizontally-scrollable container.
203
+ * @default true
204
+ */
205
+ responsive?: boolean;
206
+ /**
207
+ * Show a loading skeleton overlay.
208
+ * @default false
209
+ */
210
+ loading?: boolean;
211
+ /**
212
+ * Custom content to show when data is empty.
213
+ */
214
+ emptyState?: ReactNode;
215
+ /**
216
+ * Table caption (accessibility).
217
+ */
218
+ caption?: ReactNode;
219
+ /**
220
+ * Render a footer row. If true, column footers from ColumnDef are rendered.
221
+ * @default false
222
+ */
223
+ showFooter?: boolean;
224
+ /**
225
+ * Content rendered above the table (e.g., filters, actions toolbar).
226
+ * Receives the table instance for advanced usage.
227
+ */
228
+ toolbar?: ReactNode | ((table: Table<TData>) => ReactNode);
229
+ /**
230
+ * Content rendered below the table (e.g., custom pagination, summary).
231
+ * Receives the table instance for advanced usage.
232
+ */
233
+ footer?: ReactNode | ((table: Table<TData>) => ReactNode);
234
+ /** Additional CSS classes for the outermost wrapper. */
235
+ className?: string;
236
+ /** Additional CSS classes for the table element. */
237
+ tableClassName?: string;
238
+ /** Additional CSS classes for the responsive wrapper. */
239
+ wrapperClassName?: string;
240
+ /**
241
+ * Callback when a row is clicked.
242
+ */
243
+ onRowClick?: (row: Row<TData>, event: React.MouseEvent) => void;
244
+ /**
245
+ * Expose the table instance to the parent via ref callback.
246
+ */
247
+ onTableInstance?: (table: Table<TData>) => void;
248
+ }
249
+ /**
250
+ * DataTable — a feature-rich data table powered by TanStack Table,
251
+ * rendered with Unified UI's styled Table primitives.
252
+ *
253
+ * Supports sorting, filtering, pagination, row selection, column visibility,
254
+ * loading/empty states, and custom toolbar/footer slots.
255
+ *
256
+ * @example
257
+ * ```tsx
258
+ * import { DataTable, type ColumnDef } from "@work-rjkashyap/unified-ui";
259
+ *
260
+ * type Person = { name: string; email: string; age: number };
261
+ *
262
+ * const columns: ColumnDef<Person>[] = [
263
+ * { accessorKey: "name", header: "Name" },
264
+ * { accessorKey: "email", header: "Email" },
265
+ * { accessorKey: "age", header: "Age" },
266
+ * ];
267
+ *
268
+ * <DataTable
269
+ * data={people}
270
+ * columns={columns}
271
+ * sorting
272
+ * pagination
273
+ * pageSize={20}
274
+ * striped
275
+ * hoverable
276
+ * />
277
+ * ```
278
+ */
279
+ declare const DataTable: <TData>(props: DataTableProps<TData> & {
280
+ ref?: React.Ref<HTMLDivElement>;
281
+ }) => React.ReactElement;
282
+ interface UseDataTableOptions<TData> {
283
+ data: TData[];
284
+ columns: ColumnDef<TData, any>[];
285
+ initialSorting?: SortingState;
286
+ initialPagination?: Partial<PaginationState>;
287
+ initialColumnFilters?: ColumnFiltersState;
288
+ initialRowSelection?: RowSelectionState;
289
+ initialColumnVisibility?: VisibilityState;
290
+ initialGlobalFilter?: string;
291
+ }
292
+ interface UseDataTableReturn<_TData> {
293
+ sorting: SortingState;
294
+ onSortingChange: OnChangeFn<SortingState>;
295
+ globalFilter: string;
296
+ onGlobalFilterChange: OnChangeFn<string>;
297
+ columnFilters: ColumnFiltersState;
298
+ onColumnFiltersChange: OnChangeFn<ColumnFiltersState>;
299
+ pagination: PaginationState;
300
+ onPaginationChange: OnChangeFn<PaginationState>;
301
+ rowSelection: RowSelectionState;
302
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
303
+ columnVisibility: VisibilityState;
304
+ onColumnVisibilityChange: OnChangeFn<VisibilityState>;
305
+ /** Spread these into <DataTable /> for full controlled mode. */
306
+ tableProps: {
307
+ sortingState: SortingState;
308
+ onSortingChange: OnChangeFn<SortingState>;
309
+ globalFilter: string;
310
+ onGlobalFilterChange: OnChangeFn<string>;
311
+ columnFilters: ColumnFiltersState;
312
+ onColumnFiltersChange: OnChangeFn<ColumnFiltersState>;
313
+ paginationState: PaginationState;
314
+ onPaginationChange: OnChangeFn<PaginationState>;
315
+ rowSelectionState: RowSelectionState;
316
+ onRowSelectionChange: OnChangeFn<RowSelectionState>;
317
+ columnVisibilityState: VisibilityState;
318
+ onColumnVisibilityChange: OnChangeFn<VisibilityState>;
319
+ };
320
+ /** Reset all state back to initial values. */
321
+ reset: () => void;
322
+ }
323
+ /**
324
+ * useDataTable — a convenience hook that manages all table state in one place.
325
+ *
326
+ * Spread `tableProps` into `<DataTable />` for fully controlled usage:
327
+ *
328
+ * @example
329
+ * ```tsx
330
+ * const { tableProps, sorting, rowSelection, reset } = useDataTable({
331
+ * data,
332
+ * columns,
333
+ * initialSorting: [{ id: "name", desc: false }],
334
+ * initialPagination: { pageSize: 20 },
335
+ * });
336
+ *
337
+ * <DataTable
338
+ * data={data}
339
+ * columns={columns}
340
+ * sorting
341
+ * pagination
342
+ * rowSelection="multi"
343
+ * {...tableProps}
344
+ * />
345
+ * ```
346
+ */
347
+ declare function useDataTable<TData>(options: UseDataTableOptions<TData>): UseDataTableReturn<TData>;
348
+
349
+ export { DataTable, type DataTableColumnMeta, type DataTableFacetedFilter, type DataTableProps, type UseDataTableOptions, type UseDataTableReturn, useDataTable };