@uselets/ui 1.16.0 → 1.17.0

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 (845) hide show
  1. package/README.md +2 -1
  2. package/dist/accordion-BCo2odjy.js +2 -0
  3. package/dist/accordion-BCo2odjy.js.map +1 -0
  4. package/dist/accordion-DtSr3uiA.d.ts +15 -0
  5. package/dist/alert-CJRgRQVF.js +2 -0
  6. package/dist/alert-CJRgRQVF.js.map +1 -0
  7. package/dist/alert-dialog-B_nAiD4Y.js +2 -0
  8. package/dist/alert-dialog-B_nAiD4Y.js.map +1 -0
  9. package/dist/alert-dialog-Bf41-OnT.d.ts +34 -0
  10. package/dist/alert-eivgSC_S.d.ts +18 -0
  11. package/dist/anchor-DCOyn0Xa.d.ts +15 -0
  12. package/dist/anchor-srhmShjN.js +2 -0
  13. package/dist/anchor-srhmShjN.js.map +1 -0
  14. package/dist/area-chart-DdDy8Vm3.js +2 -0
  15. package/dist/area-chart-DdDy8Vm3.js.map +1 -0
  16. package/dist/area-chart-F_4ZL20j.d.ts +40 -0
  17. package/dist/avatar-2ZS3Tx76.d.ts +21 -0
  18. package/dist/avatar-CFUwrOwG.js +2 -0
  19. package/dist/avatar-CFUwrOwG.js.map +1 -0
  20. package/dist/badge-BqpQcDFd.d.ts +16 -0
  21. package/dist/badge-Cuq_DqRS.js +2 -0
  22. package/dist/badge-Cuq_DqRS.js.map +1 -0
  23. package/dist/badge-DEgLmZYC.js +2 -0
  24. package/dist/badge-DEgLmZYC.js.map +1 -0
  25. package/dist/badge-gkezuSZY.d.ts +19 -0
  26. package/dist/bar-chart-DIgSnh_j.js +2 -0
  27. package/dist/bar-chart-DIgSnh_j.js.map +1 -0
  28. package/dist/bar-chart-DRrrfMQR.d.ts +42 -0
  29. package/dist/breadcrumb-CqNDAI8V.js +2 -0
  30. package/dist/breadcrumb-CqNDAI8V.js.map +1 -0
  31. package/dist/breadcrumb-DZFS9htN.d.ts +22 -0
  32. package/dist/button-BNGy28pv.d.ts +17 -0
  33. package/dist/button-CQbH5Glc.d.ts +19 -0
  34. package/dist/button-DGewx2nE.js +2 -0
  35. package/dist/button-DGewx2nE.js.map +1 -0
  36. package/dist/button-group-DRgqsyjS.d.ts +18 -0
  37. package/dist/button-group-WJ5LeouK.js +2 -0
  38. package/dist/button-group-WJ5LeouK.js.map +1 -0
  39. package/dist/button-oI3hbOgp.js +2 -0
  40. package/dist/button-oI3hbOgp.js.map +1 -0
  41. package/dist/calendar-C1GgjzIA.d.ts +17 -0
  42. package/dist/calendar-CW1kGXom.js +2 -0
  43. package/dist/calendar-CW1kGXom.js.map +1 -0
  44. package/dist/card-Bx6iiocl.js +2 -0
  45. package/dist/card-Bx6iiocl.js.map +1 -0
  46. package/dist/card-pWjtkTKw.d.ts +22 -0
  47. package/dist/carousel-C6e4eRJD.d.ts +43 -0
  48. package/dist/carousel-D0OTImO7.js +2 -0
  49. package/dist/carousel-D0OTImO7.js.map +1 -0
  50. package/dist/center-CFQDr205.d.ts +13 -0
  51. package/dist/center-Dl1rnq7S.js +2 -0
  52. package/dist/center-Dl1rnq7S.js.map +1 -0
  53. package/dist/chart-Ci4V8B8v.js +8 -0
  54. package/dist/chart-Ci4V8B8v.js.map +1 -0
  55. package/dist/checkbox-DPvW_m7k.js +2 -0
  56. package/dist/checkbox-DPvW_m7k.js.map +1 -0
  57. package/dist/checkbox-y0XBdH4a.d.ts +21 -0
  58. package/dist/code-A6JERAsm.js +2 -0
  59. package/dist/code-A6JERAsm.js.map +1 -0
  60. package/dist/code-Cqoacc61.d.ts +8 -0
  61. package/dist/collapsible-BH8BqfTd.js +2 -0
  62. package/dist/collapsible-BH8BqfTd.js.map +1 -0
  63. package/dist/collapsible-CLSCZ630.d.ts +12 -0
  64. package/dist/color-DJvQFSl5.d.ts +19 -0
  65. package/dist/color-Don4qaht.js +2 -0
  66. package/dist/color-Don4qaht.js.map +1 -0
  67. package/dist/combobox-DkCRXUxd.d.ts +51 -0
  68. package/dist/combobox-fNAIovsN.js +2 -0
  69. package/dist/combobox-fNAIovsN.js.map +1 -0
  70. package/dist/command-0wTb46Ym.js +2 -0
  71. package/dist/command-0wTb46Ym.js.map +1 -0
  72. package/dist/command-D4pNOx0J.d.ts +31 -0
  73. package/dist/components/accordion.d.ts +2 -15
  74. package/dist/components/accordion.js +1 -2
  75. package/dist/components/accordion.spec.d.ts +1 -0
  76. package/dist/components/accordion.spec.js +2 -0
  77. package/dist/components/accordion.spec.js.map +1 -0
  78. package/dist/components/alert-dialog.d.ts +2 -34
  79. package/dist/components/alert-dialog.js +1 -2
  80. package/dist/components/alert-dialog.spec.d.ts +1 -0
  81. package/dist/components/alert-dialog.spec.js +2 -0
  82. package/dist/components/alert-dialog.spec.js.map +1 -0
  83. package/dist/components/alert.d.ts +2 -18
  84. package/dist/components/alert.js +1 -2
  85. package/dist/components/alert.spec.d.ts +1 -0
  86. package/dist/components/alert.spec.js +2 -0
  87. package/dist/components/alert.spec.js.map +1 -0
  88. package/dist/components/anchor.d.ts +2 -15
  89. package/dist/components/anchor.js +1 -2
  90. package/dist/components/anchor.spec.d.ts +1 -0
  91. package/dist/components/anchor.spec.js +2 -0
  92. package/dist/components/anchor.spec.js.map +1 -0
  93. package/dist/components/area-chart.d.ts +2 -40
  94. package/dist/components/area-chart.js +1 -2
  95. package/dist/components/area-chart.spec.d.ts +1 -0
  96. package/dist/components/area-chart.spec.js +2 -0
  97. package/dist/components/area-chart.spec.js.map +1 -0
  98. package/dist/components/avatar.d.ts +2 -21
  99. package/dist/components/avatar.js +1 -2
  100. package/dist/components/avatar.spec.d.ts +1 -0
  101. package/dist/components/avatar.spec.js +2 -0
  102. package/dist/components/avatar.spec.js.map +1 -0
  103. package/dist/components/badge.d.ts +2 -16
  104. package/dist/components/badge.js +1 -2
  105. package/dist/components/badge.spec.d.ts +1 -0
  106. package/dist/components/badge.spec.js +2 -0
  107. package/dist/components/badge.spec.js.map +1 -0
  108. package/dist/components/bar-chart.d.ts +2 -42
  109. package/dist/components/bar-chart.js +1 -2
  110. package/dist/components/bar-chart.spec.d.ts +1 -0
  111. package/dist/components/bar-chart.spec.js +2 -0
  112. package/dist/components/bar-chart.spec.js.map +1 -0
  113. package/dist/components/breadcrumb.d.ts +2 -22
  114. package/dist/components/breadcrumb.js +1 -2
  115. package/dist/components/breadcrumb.spec.d.ts +1 -0
  116. package/dist/components/breadcrumb.spec.js +2 -0
  117. package/dist/components/breadcrumb.spec.js.map +1 -0
  118. package/dist/components/button-group.d.ts +2 -18
  119. package/dist/components/button-group.js +1 -2
  120. package/dist/components/button-group.spec.d.ts +1 -0
  121. package/dist/components/button-group.spec.js +2 -0
  122. package/dist/components/button-group.spec.js.map +1 -0
  123. package/dist/components/button.d.ts +2 -17
  124. package/dist/components/button.js +1 -2
  125. package/dist/components/button.spec.d.ts +1 -0
  126. package/dist/components/button.spec.js +2 -0
  127. package/dist/components/button.spec.js.map +1 -0
  128. package/dist/components/calendar.d.ts +2 -17
  129. package/dist/components/calendar.js +1 -2
  130. package/dist/components/calendar.spec.d.ts +1 -0
  131. package/dist/components/calendar.spec.js +2 -0
  132. package/dist/components/calendar.spec.js.map +1 -0
  133. package/dist/components/card.d.ts +2 -22
  134. package/dist/components/card.js +1 -2
  135. package/dist/components/card.spec.d.ts +1 -0
  136. package/dist/components/card.spec.js +2 -0
  137. package/dist/components/card.spec.js.map +1 -0
  138. package/dist/components/carousel.d.ts +2 -43
  139. package/dist/components/carousel.js +1 -2
  140. package/dist/components/carousel.spec.js +1 -93
  141. package/dist/components/carousel.spec.js.map +1 -1
  142. package/dist/components/center.d.ts +2 -13
  143. package/dist/components/center.js +1 -2
  144. package/dist/components/center.spec.d.ts +1 -0
  145. package/dist/components/center.spec.js +2 -0
  146. package/dist/components/center.spec.js.map +1 -0
  147. package/dist/components/chart.js +1 -8
  148. package/dist/components/chart.spec.d.ts +1 -0
  149. package/dist/components/chart.spec.js +2 -0
  150. package/dist/components/chart.spec.js.map +1 -0
  151. package/dist/components/checkbox.d.ts +2 -21
  152. package/dist/components/checkbox.js +1 -2
  153. package/dist/components/checkbox.spec.d.ts +1 -0
  154. package/dist/components/checkbox.spec.js +2 -0
  155. package/dist/components/checkbox.spec.js.map +1 -0
  156. package/dist/components/code.d.ts +2 -8
  157. package/dist/components/code.js +1 -2
  158. package/dist/components/code.spec.d.ts +1 -0
  159. package/dist/components/code.spec.js +2 -0
  160. package/dist/components/code.spec.js.map +1 -0
  161. package/dist/components/collapsible.d.ts +2 -12
  162. package/dist/components/collapsible.js +1 -2
  163. package/dist/components/collapsible.spec.d.ts +1 -0
  164. package/dist/components/collapsible.spec.js +2 -0
  165. package/dist/components/collapsible.spec.js.map +1 -0
  166. package/dist/components/combobox.d.ts +2 -51
  167. package/dist/components/combobox.js +1 -2
  168. package/dist/components/combobox.spec.d.ts +1 -0
  169. package/dist/components/combobox.spec.js +2 -0
  170. package/dist/components/combobox.spec.js.map +1 -0
  171. package/dist/components/command.d.ts +2 -31
  172. package/dist/components/command.js +1 -2
  173. package/dist/components/command.spec.d.ts +1 -0
  174. package/dist/components/command.spec.js +2 -0
  175. package/dist/components/command.spec.js.map +1 -0
  176. package/dist/components/container.d.ts +2 -12
  177. package/dist/components/container.js +1 -2
  178. package/dist/components/container.spec.d.ts +1 -0
  179. package/dist/components/container.spec.js +2 -0
  180. package/dist/components/container.spec.js.map +1 -0
  181. package/dist/components/data-table.d.ts +2 -111
  182. package/dist/components/data-table.js +1 -2
  183. package/dist/components/data-table.spec.d.ts +1 -0
  184. package/dist/components/data-table.spec.js +2 -0
  185. package/dist/components/data-table.spec.js.map +1 -0
  186. package/dist/components/date-range-picker.d.ts +3 -55
  187. package/dist/components/date-range-picker.js +1 -2
  188. package/dist/components/date-range-picker.spec.d.ts +1 -0
  189. package/dist/components/date-range-picker.spec.js +2 -0
  190. package/dist/components/date-range-picker.spec.js.map +1 -0
  191. package/dist/components/dialog.d.ts +2 -42
  192. package/dist/components/dialog.js +1 -2
  193. package/dist/components/dialog.spec.d.ts +1 -0
  194. package/dist/components/dialog.spec.js +2 -0
  195. package/dist/components/dialog.spec.js.map +1 -0
  196. package/dist/components/donut-chart.d.ts +2 -13
  197. package/dist/components/donut-chart.js +1 -2
  198. package/dist/components/donut-chart.spec.d.ts +1 -0
  199. package/dist/components/donut-chart.spec.js +2 -0
  200. package/dist/components/donut-chart.spec.js.map +1 -0
  201. package/dist/components/drawer.d.ts +2 -43
  202. package/dist/components/drawer.js +1 -2
  203. package/dist/components/drawer.spec.d.ts +1 -0
  204. package/dist/components/drawer.spec.js +2 -0
  205. package/dist/components/drawer.spec.js.map +1 -0
  206. package/dist/components/dropdown-menu.d.ts +2 -48
  207. package/dist/components/dropdown-menu.js +1 -2
  208. package/dist/components/dropdown-menu.spec.d.ts +1 -0
  209. package/dist/components/dropdown-menu.spec.js +2 -0
  210. package/dist/components/dropdown-menu.spec.js.map +1 -0
  211. package/dist/components/dropzone.d.ts +2 -102
  212. package/dist/components/dropzone.js +1 -2
  213. package/dist/components/dropzone.spec.d.ts +1 -0
  214. package/dist/components/dropzone.spec.js +2 -0
  215. package/dist/components/dropzone.spec.js.map +1 -0
  216. package/dist/components/empty.d.ts +2 -21
  217. package/dist/components/empty.js +1 -2
  218. package/dist/components/empty.spec.d.ts +1 -0
  219. package/dist/components/empty.spec.js +2 -0
  220. package/dist/components/empty.spec.js.map +1 -0
  221. package/dist/components/field.d.ts +2 -39
  222. package/dist/components/field.js +1 -2
  223. package/dist/components/field.spec.js +1 -1
  224. package/dist/components/field.spec.js.map +1 -1
  225. package/dist/components/flex.d.ts +2 -16
  226. package/dist/components/flex.js +1 -2
  227. package/dist/components/flex.spec.d.ts +1 -0
  228. package/dist/components/flex.spec.js +2 -0
  229. package/dist/components/flex.spec.js.map +1 -0
  230. package/dist/components/grid.d.ts +2 -20
  231. package/dist/components/grid.js +1 -2
  232. package/dist/components/grid.spec.d.ts +1 -0
  233. package/dist/components/grid.spec.js +2 -0
  234. package/dist/components/grid.spec.js.map +1 -0
  235. package/dist/components/group.d.ts +2 -15
  236. package/dist/components/group.js +1 -2
  237. package/dist/components/group.spec.d.ts +1 -0
  238. package/dist/components/group.spec.js +2 -0
  239. package/dist/components/group.spec.js.map +1 -0
  240. package/dist/components/heading.d.ts +2 -14
  241. package/dist/components/heading.js +1 -2
  242. package/dist/components/heading.spec.d.ts +1 -0
  243. package/dist/components/heading.spec.js +2 -0
  244. package/dist/components/heading.spec.js.map +1 -0
  245. package/dist/components/hover-card.d.ts +2 -13
  246. package/dist/components/hover-card.js +1 -2
  247. package/dist/components/hover-card.spec.d.ts +1 -0
  248. package/dist/components/hover-card.spec.js +2 -0
  249. package/dist/components/hover-card.spec.js.map +1 -0
  250. package/dist/components/input-group.d.ts +2 -26
  251. package/dist/components/input-group.js +1 -2
  252. package/dist/components/input-group.spec.d.ts +1 -0
  253. package/dist/components/input-group.spec.js +2 -0
  254. package/dist/components/input-group.spec.js.map +1 -0
  255. package/dist/components/input-otp.d.ts +2 -19
  256. package/dist/components/input-otp.js +1 -2
  257. package/dist/components/input-otp.spec.d.ts +1 -0
  258. package/dist/components/input-otp.spec.js +2 -0
  259. package/dist/components/input-otp.spec.js.map +1 -0
  260. package/dist/components/input.d.ts +2 -8
  261. package/dist/components/input.js +1 -2
  262. package/dist/components/input.spec.d.ts +1 -0
  263. package/dist/components/input.spec.js +2 -0
  264. package/dist/components/input.spec.js.map +1 -0
  265. package/dist/components/kbd.d.ts +2 -10
  266. package/dist/components/kbd.js +1 -2
  267. package/dist/components/kbd.spec.d.ts +1 -0
  268. package/dist/components/kbd.spec.js +2 -0
  269. package/dist/components/kbd.spec.js.map +1 -0
  270. package/dist/components/label.d.ts +2 -9
  271. package/dist/components/label.js +1 -2
  272. package/dist/components/label.spec.d.ts +1 -0
  273. package/dist/components/label.spec.js +2 -0
  274. package/dist/components/label.spec.js.map +1 -0
  275. package/dist/components/list.d.ts +2 -25
  276. package/dist/components/list.js +1 -2
  277. package/dist/components/list.spec.d.ts +1 -0
  278. package/dist/components/list.spec.js +2 -0
  279. package/dist/components/list.spec.js.map +1 -0
  280. package/dist/components/logo.d.ts +2 -0
  281. package/dist/components/logo.js +1 -0
  282. package/dist/components/logo.spec.d.ts +1 -0
  283. package/dist/components/logo.spec.js +2 -0
  284. package/dist/components/logo.spec.js.map +1 -0
  285. package/dist/components/marker.d.ts +2 -18
  286. package/dist/components/marker.js +1 -2
  287. package/dist/components/marker.spec.d.ts +1 -0
  288. package/dist/components/marker.spec.js +2 -0
  289. package/dist/components/marker.spec.js.map +1 -0
  290. package/dist/components/mask-input.d.ts +2 -16
  291. package/dist/components/mask-input.js +1 -2
  292. package/dist/components/mask-input.spec.d.ts +1 -0
  293. package/dist/components/mask-input.spec.js +2 -0
  294. package/dist/components/mask-input.spec.js.map +1 -0
  295. package/dist/components/native-select.d.ts +2 -14
  296. package/dist/components/native-select.js +1 -2
  297. package/dist/components/native-select.spec.d.ts +1 -0
  298. package/dist/components/native-select.spec.js +2 -0
  299. package/dist/components/native-select.spec.js.map +1 -0
  300. package/dist/components/navigation-menu.d.ts +2 -26
  301. package/dist/components/navigation-menu.js +1 -2
  302. package/dist/components/navigation-menu.spec.d.ts +1 -0
  303. package/dist/components/navigation-menu.spec.js +2 -0
  304. package/dist/components/navigation-menu.spec.js.map +1 -0
  305. package/dist/components/number-field.d.ts +2 -35
  306. package/dist/components/number-field.js +1 -2
  307. package/dist/components/number-field.spec.d.ts +1 -0
  308. package/dist/components/number-field.spec.js +2 -0
  309. package/dist/components/number-field.spec.js.map +1 -0
  310. package/dist/components/pagination.d.ts +2 -27
  311. package/dist/components/pagination.js +1 -2
  312. package/dist/components/pagination.spec.d.ts +1 -0
  313. package/dist/components/pagination.spec.js +2 -0
  314. package/dist/components/pagination.spec.js.map +1 -0
  315. package/dist/components/phone-input.d.ts +2 -13
  316. package/dist/components/phone-input.js +1 -2
  317. package/dist/components/phone-input.spec.d.ts +1 -0
  318. package/dist/components/phone-input.spec.js +2 -0
  319. package/dist/components/phone-input.spec.js.map +1 -0
  320. package/dist/components/pie-chart.d.ts +2 -42
  321. package/dist/components/pie-chart.js +1 -2
  322. package/dist/components/pie-chart.spec.d.ts +1 -0
  323. package/dist/components/pie-chart.spec.js +2 -0
  324. package/dist/components/pie-chart.spec.js.map +1 -0
  325. package/dist/components/popover.d.ts +2 -21
  326. package/dist/components/popover.js +1 -2
  327. package/dist/components/popover.spec.d.ts +1 -0
  328. package/dist/components/popover.spec.js +2 -0
  329. package/dist/components/popover.spec.js.map +1 -0
  330. package/dist/components/progress.d.ts +2 -14
  331. package/dist/components/progress.js +1 -2
  332. package/dist/components/progress.spec.d.ts +1 -0
  333. package/dist/components/progress.spec.js +2 -0
  334. package/dist/components/progress.spec.js.map +1 -0
  335. package/dist/components/radio-group.d.ts +2 -25
  336. package/dist/components/radio-group.js +1 -2
  337. package/dist/components/radio-group.spec.d.ts +1 -0
  338. package/dist/components/radio-group.spec.js +2 -0
  339. package/dist/components/radio-group.spec.js.map +1 -0
  340. package/dist/components/resizable.d.ts +2 -14
  341. package/dist/components/resizable.js +1 -2
  342. package/dist/components/resizable.spec.d.ts +1 -0
  343. package/dist/components/resizable.spec.js +2 -0
  344. package/dist/components/resizable.spec.js.map +1 -0
  345. package/dist/components/ring-progress.d.ts +2 -17
  346. package/dist/components/ring-progress.js +1 -2
  347. package/dist/components/ring-progress.spec.d.ts +1 -0
  348. package/dist/components/ring-progress.spec.js +2 -0
  349. package/dist/components/ring-progress.spec.js.map +1 -0
  350. package/dist/components/scroll-area.d.ts +2 -11
  351. package/dist/components/scroll-area.js +1 -2
  352. package/dist/components/scroll-area.spec.d.ts +1 -0
  353. package/dist/components/scroll-area.spec.js +2 -0
  354. package/dist/components/scroll-area.spec.js.map +1 -0
  355. package/dist/components/select.d.ts +2 -29
  356. package/dist/components/select.js +1 -2
  357. package/dist/components/select.spec.d.ts +1 -0
  358. package/dist/components/select.spec.js +2 -0
  359. package/dist/components/select.spec.js.map +1 -0
  360. package/dist/components/separator.d.ts +2 -9
  361. package/dist/components/separator.js +1 -2
  362. package/dist/components/separator.spec.d.ts +1 -0
  363. package/dist/components/separator.spec.js +2 -0
  364. package/dist/components/separator.spec.js.map +1 -0
  365. package/dist/components/sidebar.d.ts +2 -96
  366. package/dist/components/sidebar.js +1 -2
  367. package/dist/components/sidebar.spec.d.ts +1 -0
  368. package/dist/components/sidebar.spec.js +2 -0
  369. package/dist/components/sidebar.spec.js.map +1 -0
  370. package/dist/components/simple-grid.d.ts +2 -14
  371. package/dist/components/simple-grid.js +1 -2
  372. package/dist/components/simple-grid.spec.d.ts +1 -0
  373. package/dist/components/simple-grid.spec.js +2 -0
  374. package/dist/components/simple-grid.spec.js.map +1 -0
  375. package/dist/components/skeleton.d.ts +2 -10
  376. package/dist/components/skeleton.js +1 -2
  377. package/dist/components/skeleton.spec.js +1 -1
  378. package/dist/components/skeleton.spec.js.map +1 -1
  379. package/dist/components/slider.d.ts +2 -9
  380. package/dist/components/slider.js +1 -2
  381. package/dist/components/slider.spec.d.ts +1 -0
  382. package/dist/components/slider.spec.js +2 -0
  383. package/dist/components/slider.spec.js.map +1 -0
  384. package/dist/components/sonner.d.ts +2 -8
  385. package/dist/components/sonner.js +1 -2
  386. package/dist/components/sonner.spec.d.ts +1 -0
  387. package/dist/components/sonner.spec.js +2 -0
  388. package/dist/components/sonner.spec.js.map +1 -0
  389. package/dist/components/spinner.d.ts +2 -12
  390. package/dist/components/spinner.js +1 -2
  391. package/dist/components/spinner.spec.d.ts +1 -0
  392. package/dist/components/spinner.spec.js +2 -0
  393. package/dist/components/spinner.spec.js.map +1 -0
  394. package/dist/components/stack.d.ts +2 -14
  395. package/dist/components/stack.js +1 -2
  396. package/dist/components/stack.spec.d.ts +1 -0
  397. package/dist/components/stack.spec.js +2 -0
  398. package/dist/components/stack.spec.js.map +1 -0
  399. package/dist/components/stepper.d.ts +2 -71
  400. package/dist/components/stepper.js +1 -2
  401. package/dist/components/stepper.spec.d.ts +1 -0
  402. package/dist/components/stepper.spec.js +2 -0
  403. package/dist/components/stepper.spec.js.map +1 -0
  404. package/dist/components/switch.d.ts +2 -17
  405. package/dist/components/switch.js +1 -2
  406. package/dist/components/switch.spec.d.ts +1 -0
  407. package/dist/components/switch.spec.js +2 -0
  408. package/dist/components/switch.spec.js.map +1 -0
  409. package/dist/components/table.d.ts +2 -33
  410. package/dist/components/table.js +1 -2
  411. package/dist/components/table.spec.d.ts +1 -0
  412. package/dist/components/table.spec.js +2 -0
  413. package/dist/components/table.spec.js.map +1 -0
  414. package/dist/components/tabs.d.ts +2 -21
  415. package/dist/components/tabs.js +1 -2
  416. package/dist/components/tabs.spec.d.ts +1 -0
  417. package/dist/components/tabs.spec.js +2 -0
  418. package/dist/components/tabs.spec.js.map +1 -0
  419. package/dist/components/text.d.ts +2 -14
  420. package/dist/components/text.js +1 -2
  421. package/dist/components/text.spec.d.ts +1 -0
  422. package/dist/components/text.spec.js +2 -0
  423. package/dist/components/text.spec.js.map +1 -0
  424. package/dist/components/textarea.d.ts +2 -8
  425. package/dist/components/textarea.js +1 -2
  426. package/dist/components/textarea.spec.d.ts +1 -0
  427. package/dist/components/textarea.spec.js +2 -0
  428. package/dist/components/textarea.spec.js.map +1 -0
  429. package/dist/components/theme.d.ts +2 -22
  430. package/dist/components/theme.js +1 -2
  431. package/dist/components/theme.spec.d.ts +1 -0
  432. package/dist/components/theme.spec.js +2 -0
  433. package/dist/components/theme.spec.js.map +1 -0
  434. package/dist/components/timeline.d.ts +2 -61
  435. package/dist/components/timeline.js +1 -2
  436. package/dist/components/timeline.spec.d.ts +1 -0
  437. package/dist/components/timeline.spec.js +2 -0
  438. package/dist/components/timeline.spec.js.map +1 -0
  439. package/dist/components/toggle-group.d.ts +2 -16
  440. package/dist/components/toggle-group.js +1 -2
  441. package/dist/components/toggle-group.spec.d.ts +1 -0
  442. package/dist/components/toggle-group.spec.js +2 -0
  443. package/dist/components/toggle-group.spec.js.map +1 -0
  444. package/dist/components/toggle.d.ts +2 -15
  445. package/dist/components/toggle.js +1 -2
  446. package/dist/components/toggle.spec.d.ts +1 -0
  447. package/dist/components/toggle.spec.js +2 -0
  448. package/dist/components/toggle.spec.js.map +1 -0
  449. package/dist/components/tooltip.d.ts +2 -21
  450. package/dist/components/tooltip.js +1 -2
  451. package/dist/components/tooltip.spec.d.ts +1 -0
  452. package/dist/components/tooltip.spec.js +2 -0
  453. package/dist/components/tooltip.spec.js.map +1 -0
  454. package/dist/components/unstyled-button.d.ts +2 -10
  455. package/dist/components/unstyled-button.js +1 -2
  456. package/dist/components/unstyled-button.spec.d.ts +1 -0
  457. package/dist/components/unstyled-button.spec.js +2 -0
  458. package/dist/components/unstyled-button.spec.js.map +1 -0
  459. package/dist/components/visibility.d.ts +2 -17
  460. package/dist/components/visibility.js +1 -2
  461. package/dist/components/visibility.spec.d.ts +1 -0
  462. package/dist/components/visibility.spec.js +2 -0
  463. package/dist/components/visibility.spec.js.map +1 -0
  464. package/dist/compose-refs-DUtp7lGn.js +2 -0
  465. package/dist/compose-refs-DUtp7lGn.js.map +1 -0
  466. package/dist/compose-refs-GP3zdokU.d.ts +8 -0
  467. package/dist/container-B8-lt-oX.d.ts +12 -0
  468. package/dist/container-CikeKdez.js +2 -0
  469. package/dist/container-CikeKdez.js.map +1 -0
  470. package/dist/data-table-BT75MSO9.d.ts +111 -0
  471. package/dist/data-table-DcyKClKz.js +2 -0
  472. package/dist/data-table-DcyKClKz.js.map +1 -0
  473. package/dist/date-range-picker-BngvCWcR.d.ts +55 -0
  474. package/dist/date-range-picker-CJVpTZdT.js +2 -0
  475. package/dist/date-range-picker-CJVpTZdT.js.map +1 -0
  476. package/dist/dialog-B7I4Ky1i.js +2 -0
  477. package/dist/dialog-B7I4Ky1i.js.map +1 -0
  478. package/dist/dialog-Ej7pnact.d.ts +42 -0
  479. package/dist/donut-chart-BDJR8TXh.d.ts +13 -0
  480. package/dist/donut-chart-BHU4kDE6.js +2 -0
  481. package/dist/donut-chart-BHU4kDE6.js.map +1 -0
  482. package/dist/drawer-BO4mP6y1.js +2 -0
  483. package/dist/drawer-BO4mP6y1.js.map +1 -0
  484. package/dist/drawer-DUfJzrKE.d.ts +43 -0
  485. package/dist/dropdown-menu-CVDIf0Rd.d.ts +48 -0
  486. package/dist/dropdown-menu-zRuQQS5S.js +2 -0
  487. package/dist/dropdown-menu-zRuQQS5S.js.map +1 -0
  488. package/dist/dropzone-43h3L9Ko.d.ts +102 -0
  489. package/dist/dropzone-BLZkZThJ.js +2 -0
  490. package/dist/dropzone-BLZkZThJ.js.map +1 -0
  491. package/dist/empty-BhKsDYZ5.js +2 -0
  492. package/dist/empty-BhKsDYZ5.js.map +1 -0
  493. package/dist/empty-D8ZiTCVK.d.ts +21 -0
  494. package/dist/field-C209yHO9.d.ts +39 -0
  495. package/dist/field-DzR-XrO7.js +2 -0
  496. package/dist/field-DzR-XrO7.js.map +1 -0
  497. package/dist/flex-BC4Diiy4.js +2 -0
  498. package/dist/flex-BC4Diiy4.js.map +1 -0
  499. package/dist/flex-aJXipTAz.d.ts +16 -0
  500. package/dist/grid-B3He1bGe.js +2 -0
  501. package/dist/grid-B3He1bGe.js.map +1 -0
  502. package/dist/grid-D_aEANA7.d.ts +20 -0
  503. package/dist/group-B6n_lMc4.js +2 -0
  504. package/dist/group-B6n_lMc4.js.map +1 -0
  505. package/dist/group-DBtx8eSe.d.ts +15 -0
  506. package/dist/heading-BTXl4JfI.d.ts +14 -0
  507. package/dist/heading-DaxKLVRm.js +2 -0
  508. package/dist/heading-DaxKLVRm.js.map +1 -0
  509. package/dist/hooks/use-breakpoint-value.d.ts +2 -8
  510. package/dist/hooks/use-breakpoint-value.js +1 -2
  511. package/dist/hooks/use-breakpoint-value.spec.js +34 -1
  512. package/dist/hooks/use-breakpoint-value.spec.js.map +1 -1
  513. package/dist/hooks/use-breakpoint.d.ts +2 -8
  514. package/dist/hooks/use-breakpoint.js +1 -2
  515. package/dist/hooks/use-breakpoint.spec.js +1 -1
  516. package/dist/hooks/use-breakpoint.spec.js.map +1 -1
  517. package/dist/hooks/use-disclosure.d.ts +2 -22
  518. package/dist/hooks/use-disclosure.js +1 -2
  519. package/dist/hooks/use-disclosure.spec.js +1 -1
  520. package/dist/hooks/use-disclosure.spec.js.map +1 -1
  521. package/dist/hooks/use-document-visibility.d.ts +2 -6
  522. package/dist/hooks/use-document-visibility.js +1 -2
  523. package/dist/hooks/use-document-visibility.spec.js +1 -1
  524. package/dist/hooks/use-document-visibility.spec.js.map +1 -1
  525. package/dist/hooks/use-hotkeys.spec.js +1 -1
  526. package/dist/hooks/use-idle.d.ts +2 -13
  527. package/dist/hooks/use-idle.js +1 -2
  528. package/dist/hooks/use-idle.spec.js +1 -1
  529. package/dist/hooks/use-idle.spec.js.map +1 -1
  530. package/dist/hooks/use-interval.d.ts +2 -24
  531. package/dist/hooks/use-interval.js +1 -2
  532. package/dist/hooks/use-interval.spec.js +1 -1
  533. package/dist/hooks/use-local-storage.d.ts +2 -16
  534. package/dist/hooks/use-local-storage.js +1 -2
  535. package/dist/hooks/use-local-storage.spec.js +1 -1
  536. package/dist/hooks/use-local-storage.spec.js.map +1 -1
  537. package/dist/hooks/use-mask.d.ts +2 -8
  538. package/dist/hooks/use-mask.js +1 -2
  539. package/dist/hooks/use-mask.spec.d.ts +1 -0
  540. package/dist/hooks/use-mask.spec.js +2 -0
  541. package/dist/hooks/use-mask.spec.js.map +1 -0
  542. package/dist/hooks/use-mobile.d.ts +2 -6
  543. package/dist/hooks/use-mobile.js +1 -2
  544. package/dist/hooks/use-mobile.spec.js +1 -1
  545. package/dist/hover-card-C3yz2zQi.d.ts +13 -0
  546. package/dist/hover-card-Dc8yLsm-.js +2 -0
  547. package/dist/hover-card-Dc8yLsm-.js.map +1 -0
  548. package/dist/index.d.ts +94 -93
  549. package/dist/index.js +1 -1
  550. package/dist/input-CI3RPXz0.d.ts +8 -0
  551. package/dist/input-Cmjl8YdK.js +2 -0
  552. package/dist/input-Cmjl8YdK.js.map +1 -0
  553. package/dist/input-group-CBn36aMg.d.ts +26 -0
  554. package/dist/input-group-DsO2W3Lw.js +2 -0
  555. package/dist/input-group-DsO2W3Lw.js.map +1 -0
  556. package/dist/input-otp-CzfRHf2V.js +2 -0
  557. package/dist/input-otp-CzfRHf2V.js.map +1 -0
  558. package/dist/input-otp-gIEkdiIC.d.ts +19 -0
  559. package/dist/kbd-BTl3AgkY.js +2 -0
  560. package/dist/kbd-BTl3AgkY.js.map +1 -0
  561. package/dist/kbd-DELCQBD0.d.ts +10 -0
  562. package/dist/label-BQDEej_c.js +2 -0
  563. package/dist/label-BQDEej_c.js.map +1 -0
  564. package/dist/label-KZl6I5Ey.d.ts +9 -0
  565. package/dist/lib/badge.d.ts +2 -19
  566. package/dist/lib/badge.js +1 -2
  567. package/dist/lib/badge.spec.d.ts +1 -0
  568. package/dist/lib/badge.spec.js +2 -0
  569. package/dist/lib/badge.spec.js.map +1 -0
  570. package/dist/lib/button.d.ts +2 -19
  571. package/dist/lib/button.js +1 -2
  572. package/dist/lib/button.spec.d.ts +1 -0
  573. package/dist/lib/button.spec.js +2 -0
  574. package/dist/lib/button.spec.js.map +1 -0
  575. package/dist/lib/color.d.ts +2 -19
  576. package/dist/lib/color.js +1 -2
  577. package/dist/lib/color.spec.d.ts +1 -0
  578. package/dist/lib/color.spec.js +2 -0
  579. package/dist/lib/color.spec.js.map +1 -0
  580. package/dist/lib/compose-refs.d.ts +2 -8
  581. package/dist/lib/compose-refs.js +1 -2
  582. package/dist/lib/compose-refs.spec.d.ts +1 -0
  583. package/dist/lib/compose-refs.spec.js +2 -0
  584. package/dist/lib/compose-refs.spec.js.map +1 -0
  585. package/dist/lib/progress.d.ts +2 -19
  586. package/dist/lib/progress.js +1 -2
  587. package/dist/lib/progress.spec.d.ts +1 -0
  588. package/dist/lib/progress.spec.js +2 -0
  589. package/dist/lib/progress.spec.js.map +1 -0
  590. package/dist/lib/utils.d.ts +2 -8
  591. package/dist/lib/utils.js +1 -2
  592. package/dist/lib/utils.spec.d.ts +1 -0
  593. package/dist/lib/utils.spec.js +2 -0
  594. package/dist/lib/utils.spec.js.map +1 -0
  595. package/dist/list-BbCg-ndB.js +2 -0
  596. package/dist/list-BbCg-ndB.js.map +1 -0
  597. package/dist/list-DMa2j1rk.d.ts +25 -0
  598. package/dist/logo-B0v9bNJH.js +2 -0
  599. package/dist/logo-B0v9bNJH.js.map +1 -0
  600. package/dist/logo-Buo7sqqn.d.ts +69 -0
  601. package/dist/marker-4_EnMIHk.js +2 -0
  602. package/dist/marker-4_EnMIHk.js.map +1 -0
  603. package/dist/marker-C4wLa1c0.d.ts +18 -0
  604. package/dist/mask-input-B4R5K1h6.d.ts +16 -0
  605. package/dist/mask-input-ssK7U_Pl.js +2 -0
  606. package/dist/mask-input-ssK7U_Pl.js.map +1 -0
  607. package/dist/native-select-BVmdMkHY.d.ts +14 -0
  608. package/dist/native-select-DZW3Y7nq.js +2 -0
  609. package/dist/native-select-DZW3Y7nq.js.map +1 -0
  610. package/dist/navigation-menu-B6drNL1-.js +2 -0
  611. package/dist/navigation-menu-B6drNL1-.js.map +1 -0
  612. package/dist/navigation-menu-siQVRMUF.d.ts +26 -0
  613. package/dist/number-field-IdgO_BUa.d.ts +35 -0
  614. package/dist/number-field-rEMfZa6A.js +2 -0
  615. package/dist/number-field-rEMfZa6A.js.map +1 -0
  616. package/dist/pagination-BZ3xMXsy.d.ts +27 -0
  617. package/dist/pagination-gnUKddCN.js +2 -0
  618. package/dist/pagination-gnUKddCN.js.map +1 -0
  619. package/dist/phone-input-By5lNF03.d.ts +13 -0
  620. package/dist/phone-input-D72tVPWH.js +2 -0
  621. package/dist/phone-input-D72tVPWH.js.map +1 -0
  622. package/dist/pie-chart-CvG27kFN.d.ts +42 -0
  623. package/dist/pie-chart-S4nMKbsW.js +2 -0
  624. package/dist/pie-chart-S4nMKbsW.js.map +1 -0
  625. package/dist/popover-BtX3tX8M.js +2 -0
  626. package/dist/popover-BtX3tX8M.js.map +1 -0
  627. package/dist/popover-DchAqyKn.d.ts +21 -0
  628. package/dist/progress-DeXRCHUw.d.ts +19 -0
  629. package/dist/progress-QvpY7tiy.js +2 -0
  630. package/dist/progress-QvpY7tiy.js.map +1 -0
  631. package/dist/progress-icFwrvnE.js +2 -0
  632. package/dist/progress-icFwrvnE.js.map +1 -0
  633. package/dist/progress-mEAw9ZhK.d.ts +14 -0
  634. package/dist/radio-group-BNbepK_U.d.ts +25 -0
  635. package/dist/radio-group-DM8n0XPS.js +2 -0
  636. package/dist/radio-group-DM8n0XPS.js.map +1 -0
  637. package/dist/{react.esm-D5AipFQb.js → react.esm-BkhVXJ8s.js} +2 -2
  638. package/dist/{react.esm-D5AipFQb.js.map → react.esm-BkhVXJ8s.js.map} +1 -1
  639. package/dist/resizable-DMQG3xF_.d.ts +14 -0
  640. package/dist/resizable-Dbg7r7nF.js +2 -0
  641. package/dist/resizable-Dbg7r7nF.js.map +1 -0
  642. package/dist/ring-progress-65ccdTQQ.d.ts +17 -0
  643. package/dist/ring-progress-Bfqq_HHA.js +2 -0
  644. package/dist/ring-progress-Bfqq_HHA.js.map +1 -0
  645. package/dist/scroll-area-DFcj5q66.d.ts +11 -0
  646. package/dist/scroll-area-DKS4QPHg.js +2 -0
  647. package/dist/scroll-area-DKS4QPHg.js.map +1 -0
  648. package/dist/select-BoYp-Xyc.d.ts +29 -0
  649. package/dist/select-C3QYNv4t.js +2 -0
  650. package/dist/select-C3QYNv4t.js.map +1 -0
  651. package/dist/separator-BsRLiqWE.d.ts +9 -0
  652. package/dist/separator-CCMmbXL0.js +2 -0
  653. package/dist/separator-CCMmbXL0.js.map +1 -0
  654. package/dist/sidebar-B5bEgDy5.js +2 -0
  655. package/dist/sidebar-B5bEgDy5.js.map +1 -0
  656. package/dist/sidebar-D7HQlj5O.d.ts +96 -0
  657. package/dist/simple-grid-9EryoUWI.js +2 -0
  658. package/dist/simple-grid-9EryoUWI.js.map +1 -0
  659. package/dist/simple-grid-B2zjpwZ3.d.ts +14 -0
  660. package/dist/skeleton-Cn3zBJRe.js +2 -0
  661. package/dist/skeleton-Cn3zBJRe.js.map +1 -0
  662. package/dist/skeleton-Co8pevj-.d.ts +10 -0
  663. package/dist/skills/uselets-ui/references/component-catalog.md +3 -0
  664. package/dist/skills/uselets-ui/references/package-guide.md +1 -1
  665. package/dist/slider-CC-gQawq.js +2 -0
  666. package/dist/slider-CC-gQawq.js.map +1 -0
  667. package/dist/slider-DmZ1YfLg.d.ts +9 -0
  668. package/dist/sonner-Binx8JJ2.d.ts +8 -0
  669. package/dist/sonner-DrKqhTDI.js +2 -0
  670. package/dist/sonner-DrKqhTDI.js.map +1 -0
  671. package/dist/spinner-Dz63Ltq-.d.ts +12 -0
  672. package/dist/spinner-ntLrcDLN.js +2 -0
  673. package/dist/spinner-ntLrcDLN.js.map +1 -0
  674. package/dist/stack-BbLllsqk.js +2 -0
  675. package/dist/stack-BbLllsqk.js.map +1 -0
  676. package/dist/stack-WiND8Dxq.d.ts +14 -0
  677. package/dist/stepper-BQ-59_UO.js +2 -0
  678. package/dist/stepper-BQ-59_UO.js.map +1 -0
  679. package/dist/stepper-DK5_o7RG.d.ts +71 -0
  680. package/dist/switch-DjdOGECT.js +2 -0
  681. package/dist/switch-DjdOGECT.js.map +1 -0
  682. package/dist/switch-OtBakZHc.d.ts +17 -0
  683. package/dist/table-CuE0Aenj.js +2 -0
  684. package/dist/table-CuE0Aenj.js.map +1 -0
  685. package/dist/table-qIAtG7Y5.d.ts +33 -0
  686. package/dist/tabs-BgWxTTah.d.ts +21 -0
  687. package/dist/tabs-DK9-RHkP.js +2 -0
  688. package/dist/tabs-DK9-RHkP.js.map +1 -0
  689. package/dist/text-CKFZ9Xsj.d.ts +14 -0
  690. package/dist/text-Kg1xuinT.js +2 -0
  691. package/dist/text-Kg1xuinT.js.map +1 -0
  692. package/dist/textarea-C8zrf9Rz.js +2 -0
  693. package/dist/textarea-C8zrf9Rz.js.map +1 -0
  694. package/dist/textarea-Cr9_P-bV.d.ts +8 -0
  695. package/dist/theme-BwEhfTyl.d.ts +22 -0
  696. package/dist/theme-DZJ_cJYp.js +2 -0
  697. package/dist/theme-DZJ_cJYp.js.map +1 -0
  698. package/dist/timeline-BDY3YzeJ.d.ts +61 -0
  699. package/dist/timeline-pBm0t1tb.js +2 -0
  700. package/dist/timeline-pBm0t1tb.js.map +1 -0
  701. package/dist/toggle-DJJkcqDy.js +2 -0
  702. package/dist/toggle-DJJkcqDy.js.map +1 -0
  703. package/dist/toggle-group-C3iNDYqI.d.ts +16 -0
  704. package/dist/toggle-group-D0OIpZN-.js +2 -0
  705. package/dist/toggle-group-D0OIpZN-.js.map +1 -0
  706. package/dist/toggle-jc8s_Z3T.d.ts +15 -0
  707. package/dist/tooltip-BZjnEqw5.d.ts +21 -0
  708. package/dist/tooltip-CNUNWZvs.js +2 -0
  709. package/dist/tooltip-CNUNWZvs.js.map +1 -0
  710. package/dist/unstyled-button-C-Zs4Qv2.d.ts +10 -0
  711. package/dist/unstyled-button-lGbDJA55.js +2 -0
  712. package/dist/unstyled-button-lGbDJA55.js.map +1 -0
  713. package/dist/use-breakpoint-D6YACz8C.js +2 -0
  714. package/dist/use-breakpoint-D6YACz8C.js.map +1 -0
  715. package/dist/use-breakpoint-DDuQFekj.d.ts +8 -0
  716. package/dist/use-breakpoint-value-BDjKflDX.js +2 -0
  717. package/dist/use-breakpoint-value-BDjKflDX.js.map +1 -0
  718. package/dist/use-breakpoint-value-CRbHqGAu.d.ts +8 -0
  719. package/dist/use-disclosure-CNaFpYFQ.d.ts +22 -0
  720. package/dist/use-disclosure-Cr405eRD.js +2 -0
  721. package/dist/use-disclosure-Cr405eRD.js.map +1 -0
  722. package/dist/use-document-visibility-CoWjCswu.js +2 -0
  723. package/dist/use-document-visibility-CoWjCswu.js.map +1 -0
  724. package/dist/use-document-visibility-DIzUN4tB.d.ts +6 -0
  725. package/dist/use-idle-Bsi10VE9.d.ts +13 -0
  726. package/dist/use-idle-DgheJlxd.js +2 -0
  727. package/dist/use-idle-DgheJlxd.js.map +1 -0
  728. package/dist/use-interval-B1aNo3tA.js +2 -0
  729. package/dist/use-interval-B1aNo3tA.js.map +1 -0
  730. package/dist/use-interval-CJVmE_lC.d.ts +24 -0
  731. package/dist/use-local-storage-CJBqB1GC.js +2 -0
  732. package/dist/use-local-storage-CJBqB1GC.js.map +1 -0
  733. package/dist/use-local-storage-Cmq4PWJc.d.ts +16 -0
  734. package/dist/use-mask-DBvFShXA.js +2 -0
  735. package/dist/use-mask-DBvFShXA.js.map +1 -0
  736. package/dist/use-mask-DRJVVcdh.d.ts +8 -0
  737. package/dist/use-mobile-BYwiljVq.d.ts +6 -0
  738. package/dist/use-mobile-OMmp56u2.js +2 -0
  739. package/dist/use-mobile-OMmp56u2.js.map +1 -0
  740. package/dist/utils-DGsdoA5l.d.ts +8 -0
  741. package/dist/utils-DP9KtG7I.js +2 -0
  742. package/dist/utils-DP9KtG7I.js.map +1 -0
  743. package/dist/visibility-_3zV3l-A.d.ts +17 -0
  744. package/dist/visibility-twHwe9Xp.js +2 -0
  745. package/dist/visibility-twHwe9Xp.js.map +1 -0
  746. package/package.json +10 -8
  747. package/skills/uselets-ui/references/component-catalog.md +3 -0
  748. package/skills/uselets-ui/references/package-guide.md +1 -1
  749. package/dist/components/accordion.js.map +0 -1
  750. package/dist/components/alert-dialog.js.map +0 -1
  751. package/dist/components/alert.js.map +0 -1
  752. package/dist/components/anchor.js.map +0 -1
  753. package/dist/components/area-chart.js.map +0 -1
  754. package/dist/components/avatar.js.map +0 -1
  755. package/dist/components/badge.js.map +0 -1
  756. package/dist/components/bar-chart.js.map +0 -1
  757. package/dist/components/breadcrumb.js.map +0 -1
  758. package/dist/components/button-group.js.map +0 -1
  759. package/dist/components/button.js.map +0 -1
  760. package/dist/components/calendar.js.map +0 -1
  761. package/dist/components/card.js.map +0 -1
  762. package/dist/components/carousel.js.map +0 -1
  763. package/dist/components/center.js.map +0 -1
  764. package/dist/components/chart.js.map +0 -1
  765. package/dist/components/checkbox.js.map +0 -1
  766. package/dist/components/code.js.map +0 -1
  767. package/dist/components/collapsible.js.map +0 -1
  768. package/dist/components/combobox.js.map +0 -1
  769. package/dist/components/command.js.map +0 -1
  770. package/dist/components/container.js.map +0 -1
  771. package/dist/components/data-table.js.map +0 -1
  772. package/dist/components/date-range-picker.js.map +0 -1
  773. package/dist/components/dialog.js.map +0 -1
  774. package/dist/components/donut-chart.js.map +0 -1
  775. package/dist/components/drawer.js.map +0 -1
  776. package/dist/components/dropdown-menu.js.map +0 -1
  777. package/dist/components/dropzone.js.map +0 -1
  778. package/dist/components/empty.js.map +0 -1
  779. package/dist/components/field.js.map +0 -1
  780. package/dist/components/flex.js.map +0 -1
  781. package/dist/components/grid.js.map +0 -1
  782. package/dist/components/group.js.map +0 -1
  783. package/dist/components/heading.js.map +0 -1
  784. package/dist/components/hover-card.js.map +0 -1
  785. package/dist/components/input-group.js.map +0 -1
  786. package/dist/components/input-otp.js.map +0 -1
  787. package/dist/components/input.js.map +0 -1
  788. package/dist/components/kbd.js.map +0 -1
  789. package/dist/components/label.js.map +0 -1
  790. package/dist/components/list.js.map +0 -1
  791. package/dist/components/marker.js.map +0 -1
  792. package/dist/components/mask-input.js.map +0 -1
  793. package/dist/components/native-select.js.map +0 -1
  794. package/dist/components/navigation-menu.js.map +0 -1
  795. package/dist/components/number-field.js.map +0 -1
  796. package/dist/components/pagination.js.map +0 -1
  797. package/dist/components/phone-input.js.map +0 -1
  798. package/dist/components/pie-chart.js.map +0 -1
  799. package/dist/components/popover.js.map +0 -1
  800. package/dist/components/progress.js.map +0 -1
  801. package/dist/components/radio-group.js.map +0 -1
  802. package/dist/components/resizable.js.map +0 -1
  803. package/dist/components/ring-progress.js.map +0 -1
  804. package/dist/components/scroll-area.js.map +0 -1
  805. package/dist/components/select.js.map +0 -1
  806. package/dist/components/separator.js.map +0 -1
  807. package/dist/components/sidebar.js.map +0 -1
  808. package/dist/components/simple-grid.js.map +0 -1
  809. package/dist/components/skeleton.js.map +0 -1
  810. package/dist/components/slider.js.map +0 -1
  811. package/dist/components/sonner.js.map +0 -1
  812. package/dist/components/spinner.js.map +0 -1
  813. package/dist/components/stack.js.map +0 -1
  814. package/dist/components/stepper.js.map +0 -1
  815. package/dist/components/switch.js.map +0 -1
  816. package/dist/components/table.js.map +0 -1
  817. package/dist/components/tabs.js.map +0 -1
  818. package/dist/components/text.js.map +0 -1
  819. package/dist/components/textarea.js.map +0 -1
  820. package/dist/components/theme.js.map +0 -1
  821. package/dist/components/timeline.js.map +0 -1
  822. package/dist/components/toggle-group.js.map +0 -1
  823. package/dist/components/toggle.js.map +0 -1
  824. package/dist/components/tooltip.js.map +0 -1
  825. package/dist/components/unstyled-button.js.map +0 -1
  826. package/dist/components/visibility.js.map +0 -1
  827. package/dist/hooks/use-breakpoint-value.js.map +0 -1
  828. package/dist/hooks/use-breakpoint.js.map +0 -1
  829. package/dist/hooks/use-disclosure.js.map +0 -1
  830. package/dist/hooks/use-document-visibility.js.map +0 -1
  831. package/dist/hooks/use-idle.js.map +0 -1
  832. package/dist/hooks/use-interval.js.map +0 -1
  833. package/dist/hooks/use-local-storage.js.map +0 -1
  834. package/dist/hooks/use-mask.js.map +0 -1
  835. package/dist/hooks/use-mobile.js.map +0 -1
  836. package/dist/lib/badge.js.map +0 -1
  837. package/dist/lib/button.js.map +0 -1
  838. package/dist/lib/color.js.map +0 -1
  839. package/dist/lib/compose-refs.js.map +0 -1
  840. package/dist/lib/progress.js.map +0 -1
  841. package/dist/lib/utils.js.map +0 -1
  842. package/dist/magic-string.es-oADFB1hu.js +0 -15
  843. package/dist/magic-string.es-oADFB1hu.js.map +0 -1
  844. package/dist/utils-Cj3IZeiu.js +0 -37
  845. package/dist/utils-Cj3IZeiu.js.map +0 -1
@@ -1,111 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { Button } from "./button.js";
3
- import { TableProps } from "./table.js";
4
- import * as React from "react";
5
- import { Column, Column as Column$1, ColumnDef, ColumnDef as ColumnDef$1, RowData, RowData as RowData$1, Table, Table as TanStackTable } from "@tanstack/react-table";
6
- //#region src/components/data-table.d.ts
7
- type DataTableToolbarActions<TData> = React.ReactNode | ((table: Table<TData>) => React.ReactNode);
8
- type DataTableLabels = {
9
- filterPlaceholder: string;
10
- filterColumnSelectorLabel: string;
11
- emptyMessage: React.ReactNode;
12
- columnsButton: string;
13
- rowsPerPage: string;
14
- pageOf: (current: number, total: number) => React.ReactNode;
15
- goToFirstPage: string;
16
- goToPreviousPage: string;
17
- goToNextPage: string;
18
- goToLastPage: string;
19
- selectAllRows: string;
20
- selectRow: string;
21
- };
22
- declare const defaultDataTableLabels: DataTableLabels;
23
- type DataTableProps<TData extends RowData$1, TValue = unknown> = {
24
- columns: ColumnDef$1<TData, TValue>[];
25
- data: TData[];
26
- getRowId?: (originalRow: TData, index: number, parent?: {
27
- id: string;
28
- }) => string;
29
- filterColumns?: string | string[];
30
- pageSize?: number;
31
- pageSizeOptions?: number[];
32
- enableRowSelection?: boolean;
33
- enableSorting?: boolean;
34
- showPagination?: boolean;
35
- showColumnVisibility?: boolean;
36
- toolbarActions?: DataTableToolbarActions<TData>;
37
- labels?: Partial<DataTableLabels>;
38
- className?: string;
39
- tableClassName?: string;
40
- variant?: TableProps['variant'];
41
- };
42
- type DataTableColumnHeaderProps<TData extends RowData$1, TValue> = React.ComponentProps<'div'> & {
43
- column: Column$1<TData, TValue>;
44
- title: React.ReactNode;
45
- };
46
- type DataTablePaginationProps<TData extends RowData$1> = React.ComponentProps<'div'> & {
47
- table?: Table<TData>;
48
- pageSizeOptions?: number[];
49
- labels?: Partial<DataTableLabels>;
50
- };
51
- type DataTableViewOptionsProps<TData extends RowData$1> = React.ComponentProps<typeof Button> & {
52
- table?: Table<TData>;
53
- label?: React.ReactNode;
54
- };
55
- type UseDataTableOptions<TData extends RowData$1, TValue = unknown> = {
56
- columns: ColumnDef$1<TData, TValue>[];
57
- data: TData[];
58
- getRowId?: (originalRow: TData, index: number, parent?: {
59
- id: string;
60
- }) => string;
61
- pageSize?: number;
62
- enableRowSelection?: boolean;
63
- enableSorting?: boolean;
64
- enablePagination?: boolean;
65
- labels?: Partial<DataTableLabels>;
66
- };
67
- type DataTableRootProps<TData extends RowData$1, TValue = unknown> = {
68
- labels?: Partial<DataTableLabels>;
69
- className?: string;
70
- children: React.ReactNode;
71
- } & ({
72
- table: Table<TData>;
73
- columns?: never;
74
- data?: never;
75
- } | (Omit<UseDataTableOptions<TData, TValue>, 'labels'> & {
76
- table?: never;
77
- }));
78
- type DataTableToolbarProps<TData extends RowData$1> = {
79
- filterColumns?: string | string[];
80
- showColumnVisibility?: boolean;
81
- toolbarActions?: DataTableToolbarActions<TData>;
82
- labels?: Partial<DataTableLabels>;
83
- className?: string;
84
- };
85
- type DataTableHeaderProps = {
86
- className?: string;
87
- };
88
- type DataTableBodyProps = {
89
- emptyMessage?: React.ReactNode;
90
- className?: string;
91
- };
92
- type DataTableContextValue<TData extends RowData$1> = {
93
- table: Table<TData>;
94
- labels: DataTableLabels;
95
- };
96
- declare function useDataTableContext<TData extends RowData$1>(): DataTableContextValue<TData>;
97
- declare function useDataTable<TData extends RowData$1, TValue = unknown>({ columns, data, getRowId, pageSize, enableRowSelection, enableSorting, enablePagination, labels }: UseDataTableOptions<TData, TValue>): Table<TData>;
98
- declare function DataTableRoot<TData extends RowData$1, TValue = unknown>(props: DataTableRootProps<TData, TValue>): React.JSX.Element;
99
- declare function DataTableColumnHeader<TData extends RowData$1, TValue>({ column, title, className, ...props }: DataTableColumnHeaderProps<TData, TValue>): React.JSX.Element;
100
- declare function DataTableViewOptions<TData extends RowData$1>({ table: tableProp, label, className, ...props }: DataTableViewOptionsProps<TData>): React.JSX.Element | null;
101
- declare function DataTableToolbar<TData extends RowData$1>({ filterColumns, showColumnVisibility, toolbarActions, labels: labelsOverride, className }: DataTableToolbarProps<TData>): React.JSX.Element | null;
102
- declare function DataTableHeader<TData extends RowData$1>({ className }?: DataTableHeaderProps): React.JSX.Element;
103
- declare function DataTableBody<TData extends RowData$1>({ emptyMessage, className }?: DataTableBodyProps): React.JSX.Element;
104
- declare function DataTablePagination<TData extends RowData$1>({ table: tableProp, pageSizeOptions, labels: labelsOverride, className, ...props }: DataTablePaginationProps<TData>): React.JSX.Element;
105
- declare function createDataTableSelectColumn<TData extends RowData$1>(options?: {
106
- labels?: Pick<Partial<DataTableLabels>, 'selectAllRows' | 'selectRow'>;
107
- }): ColumnDef$1<TData>;
108
- declare function DataTable<TData extends RowData$1, TValue = unknown>({ columns, data, getRowId, filterColumns, pageSize, pageSizeOptions, enableRowSelection, enableSorting, showPagination, showColumnVisibility, toolbarActions, labels, className, tableClassName, variant }: DataTableProps<TData, TValue>): React.JSX.Element;
109
- //#endregion
110
- export { type Column, type ColumnDef, DataTable, DataTableBody, DataTableBodyProps, DataTableColumnHeader, DataTableColumnHeaderProps, DataTableHeader, DataTableHeaderProps, DataTableLabels, DataTablePagination, DataTablePaginationProps, DataTableProps, DataTableRoot, DataTableRootProps, DataTableToolbar, DataTableToolbarProps, DataTableViewOptions, DataTableViewOptionsProps, type RowData, type TanStackTable, UseDataTableOptions, createDataTableSelectColumn, defaultDataTableLabels, useDataTable, useDataTableContext };
111
- //# sourceMappingURL=data-table.d.ts.map
1
+ import { C as createDataTableSelectColumn, E as useDataTableContext, S as UseDataTableOptions, T as useDataTable, _ as DataTableToolbarProps, a as DataTableBodyProps, b as RowData, c as DataTableHeader, d as DataTablePagination, f as DataTablePaginationProps, g as DataTableToolbar, h as DataTableRootProps, i as DataTableBody, l as DataTableHeaderProps, m as DataTableRoot, n as ColumnDef, o as DataTableColumnHeader, p as DataTableProps, r as DataTable, s as DataTableColumnHeaderProps, t as Column, u as DataTableLabels, v as DataTableViewOptions, w as defaultDataTableLabels, x as TanStackTable, y as DataTableViewOptionsProps } from "../data-table-BT75MSO9.js";
2
+ export { type Column, type ColumnDef, DataTable, DataTableBody, DataTableBodyProps, DataTableColumnHeader, DataTableColumnHeaderProps, DataTableHeader, DataTableHeaderProps, DataTableLabels, DataTablePagination, DataTablePaginationProps, DataTableProps, DataTableRoot, DataTableRootProps, DataTableToolbar, DataTableToolbarProps, DataTableViewOptions, DataTableViewOptionsProps, type RowData, type TanStackTable, UseDataTableOptions, createDataTableSelectColumn, defaultDataTableLabels, useDataTable, useDataTableContext };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{Checkbox as n}from"./checkbox.js";import{Input as r}from"./input.js";import{InputGroup as i,InputGroupAddon as a,InputGroupInput as o}from"./input-group.js";import{DropdownMenu as s,DropdownMenuCheckboxItem as c,DropdownMenuContent as l,DropdownMenuGroup as u,DropdownMenuTrigger as d}from"./dropdown-menu.js";import{Select as f,SelectContent as p,SelectGroup as m,SelectItem as h,SelectTrigger as g,SelectValue as _}from"./select.js";import{Table as v,TableBody as y,TableCell as b,TableContainer as x,TableHead as S,TableHeader as C,TableRow as w}from"./table.js";import{IconArrowsSort as T,IconChevronLeft as E,IconChevronRight as D,IconChevronsLeft as O,IconChevronsRight as k,IconColumns3 as A,IconSortAscending as j,IconSortDescending as M}from"@tabler/icons-react";import{jsx as N,jsxs as P}from"react/jsx-runtime";import*as F from"react";import{flexRender as I,getCoreRowModel as L,getFilteredRowModel as R,getPaginationRowModel as z,getSortedRowModel as B,useReactTable as V}from"@tanstack/react-table";const H={filterPlaceholder:`Filtrar linhas...`,filterColumnSelectorLabel:`Coluna para filtrar`,emptyMessage:`Nenhum resultado.`,columnsButton:`Colunas`,rowsPerPage:`Linhas por página`,pageOf:(e,t)=>`Página ${e} de ${t}`,goToFirstPage:`Ir para a primeira página`,goToPreviousPage:`Ir para a página anterior`,goToNextPage:`Ir para a próxima página`,goToLastPage:`Ir para a última página`,selectAllRows:`Selecionar todas as linhas`,selectRow:`Selecionar linha`},U=F.createContext(null);function useDataTableContext(){let e=F.useContext(U);if(!e)throw Error(`useDataTableContext must be used within <DataTableRoot>`);return e}function useOptionalDataTableContext(){return F.useContext(U)}function renderToolbarActions(e,t){return typeof e==`function`?e(t):e}function getColumnLabel(e){return e?e.columnDef.meta?.label??e.id:``}function useDataTable({columns:e,data:t,getRowId:n,pageSize:r=10,enableRowSelection:i=!1,enableSorting:a=!1,enablePagination:o=!1,labels:s}){let[c,l]=F.useState([]),[u,d]=F.useState([]),[f,p]=F.useState({}),[m,h]=F.useState({pageIndex:0,pageSize:r}),[g,_]=F.useState({}),v=F.useMemo(()=>({...H,...s}),[s]);return V({data:t,columns:F.useMemo(()=>!i||e.some(e=>e.id===`select`)?e:[createDataTableSelectColumn({labels:{selectAllRows:v.selectAllRows,selectRow:v.selectRow}}),...e],[e,i,v.selectAllRows,v.selectRow]),getRowId:n,enableRowSelection:i,enableSorting:a,state:{sorting:c,columnFilters:u,columnVisibility:f,rowSelection:g,pagination:m},onSortingChange:l,onColumnFiltersChange:d,onColumnVisibilityChange:p,onPaginationChange:h,onRowSelectionChange:_,getCoreRowModel:L(),getFilteredRowModel:R(),getPaginationRowModel:o?z():void 0,getSortedRowModel:a?B():void 0})}function DataTableRootControlled({table:t,labels:n,className:r,children:i}){let a={table:t,labels:F.useMemo(()=>({...H,...n}),[n])};return N(U.Provider,{value:a,children:N(`div`,{className:e(`flex w-full flex-col gap-4`,r),children:i})})}function DataTableRootUncontrolled({columns:e,data:t,getRowId:n,pageSize:r,enableRowSelection:i,enableSorting:a,enablePagination:o,labels:s,className:c,children:l}){return N(DataTableRootControlled,{table:useDataTable({columns:e,data:t,getRowId:n,pageSize:r,enableRowSelection:i,enableSorting:a,enablePagination:o,labels:s}),labels:s,className:c,children:l})}function DataTableRoot(e){if(`table`in e&&e.table!==void 0){let{table:t,labels:n,className:r,children:i}=e;return N(DataTableRootControlled,{table:t,labels:n,className:r,children:i})}let{columns:t,data:n,getRowId:r,pageSize:i,enableRowSelection:a,enableSorting:o,enablePagination:s,labels:c,className:l,children:u}=e;return N(DataTableRootUncontrolled,{columns:t,data:n,getRowId:r,pageSize:i,enableRowSelection:a,enableSorting:o,enablePagination:s,labels:c,className:l,children:u})}function DataTableColumnHeader({column:n,title:r,className:i,...a}){if(!n.getCanSort())return N(`div`,{className:e(`inline-flex items-center gap-1`,i),...a,children:r});let o=n.getIsSorted();return P(`div`,{className:e(`inline-flex items-center gap-1`,i),...a,children:[r,N(t,{variant:`ghost`,color:`zinc`,size:`icon-xs`,onClick:()=>{if(o===`desc`)return n.clearSorting();n.toggleSorting(o===`asc`)},children:N(o===`desc`?M:o===`asc`?j:T,{className:`size-4`,"data-icon":`inline-end`})})]})}function DataTableViewOptions({table:n,label:r,className:i,...a}){let o=useOptionalDataTableContext(),f=n??o?.table;if(!f)throw Error("DataTableViewOptions requires a `table` prop or to be rendered within <DataTableRoot>");let p=r??o?.labels.columnsButton??H.columnsButton,m=f.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide());return m.length===0?null:P(s,{children:[N(d,{asChild:!0,children:P(t,{type:`button`,variant:`outline`,color:`zinc`,size:`sm`,className:e(`ml-auto`,i),...a,children:[N(A,{"data-icon":`inline-start`}),p]})}),N(l,{align:`end`,className:`w-44`,children:N(u,{children:m.map(e=>N(c,{checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:e.id},e.id))})})]})}function DataTableToolbar({filterColumns:t,showColumnVisibility:n,toolbarActions:s,labels:c,className:l}){let{table:u,labels:d}=useDataTableContext(),f=F.useMemo(()=>c?{...d,...c}:d,[d,c]),p=F.useMemo(()=>t?Array.isArray(t)?t:[t]:[],[t]),m=renderToolbarActions(s,u),h=p.length>0,[g,_]=F.useState(p[0]);if(F.useEffect(()=>{if(p.length===0){_(void 0);return}_(e=>e&&p.includes(e)?e:p[0])},[p]),!h&&!n&&!m)return null;let v=g?u.getColumn(g):void 0,y=v?.getFilterValue()??``,handleColumnChange=e=>{e!==g&&(g&&u.getColumn(g)?.setFilterValue(void 0),_(e))};return P(`div`,{className:e(`flex flex-col gap-2 sm:flex-row sm:items-center`,l),children:[h&&v?p.length>1?P(i,{className:`h-8 w-full sm:max-w-md`,children:[N(a,{align:`inline-start`,className:`pr-0`,children:N(`select`,{"aria-label":f.filterColumnSelectorLabel,value:g,onChange:e=>handleColumnChange(e.target.value),className:`cursor-pointer appearance-none border-0 bg-transparent pr-1 text-sm font-medium text-foreground outline-none focus:outline-none`,children:p.map(e=>N(`option`,{value:e,children:getColumnLabel(u.getColumn(e))},e))})}),N(o,{placeholder:f.filterPlaceholder,value:y,onChange:e=>v.setFilterValue(e.target.value)})]}):N(r,{placeholder:f.filterPlaceholder,value:y,onChange:e=>v.setFilterValue(e.target.value),className:`h-8 w-full sm:max-w-xs`}):null,P(`div`,{className:`flex flex-1 items-center justify-end gap-2`,children:[m,n?N(DataTableViewOptions,{table:u,label:f.columnsButton}):null]})]})}function DataTableHeader({className:e}={}){let{table:t}=useDataTableContext();return N(C,{className:e,children:t.getHeaderGroups().map(e=>N(w,{children:e.headers.map(e=>N(S,{colSpan:e.colSpan,children:e.isPlaceholder?null:I(e.column.columnDef.header,e.getContext())},e.id))},e.id))})}function DataTableBody({emptyMessage:e,className:t}={}){let{table:n,labels:r}=useDataTableContext(),i=n.getRowModel().rows,a=n.getVisibleLeafColumns().length,o=e??r.emptyMessage;return N(y,{className:t,children:i.length===0?N(w,{children:N(b,{colSpan:a,className:`h-24 text-center`,children:o})}):i.map(e=>N(w,{"data-state":e.getIsSelected()?`selected`:void 0,children:e.getVisibleCells().map(e=>N(b,{children:I(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})}function DataTablePagination({table:n,pageSizeOptions:r=[10,20,30,40,50],labels:i,className:a,...o}){let s=useOptionalDataTableContext(),c=n??s?.table;if(!c)throw Error("DataTablePagination requires a `table` prop or to be rendered within <DataTableRoot>");let l=F.useMemo(()=>({...H,...s?.labels,...i}),[s?.labels,i]),u=c.getPageCount(),d=Math.max(u,1),v=c.getState().pagination.pageIndex;return N(`div`,{className:e(`flex items-center justify-end gap-4 px-2`,a),...o,children:P(`div`,{className:`flex items-center gap-6 lg:gap-8`,children:[P(`div`,{className:`hidden items-center gap-2 sm:flex`,children:[N(`p`,{className:`text-sm font-medium`,children:l.rowsPerPage}),P(f,{value:`${c.getState().pagination.pageSize}`,onValueChange:e=>c.setPageSize(Number(e)),children:[N(g,{size:`sm`,className:`h-8 w-20`,children:N(_,{})}),N(p,{side:`top`,children:N(m,{children:r.map(e=>N(h,{value:`${e}`,children:e},e))})})]})]}),N(`div`,{className:`text-sm font-medium`,children:l.pageOf(v+1,d)}),P(`div`,{className:`flex items-center gap-1`,children:[N(t,{type:`button`,variant:`outline`,color:`zinc`,size:`icon-sm`,className:`hidden lg:inline-flex`,onClick:()=>c.setPageIndex(0),disabled:!c.getCanPreviousPage(),"aria-label":l.goToFirstPage,children:N(O,{})}),N(t,{type:`button`,variant:`outline`,color:`zinc`,size:`icon-sm`,onClick:()=>c.previousPage(),disabled:!c.getCanPreviousPage(),"aria-label":l.goToPreviousPage,children:N(E,{})}),N(t,{type:`button`,variant:`outline`,color:`zinc`,size:`icon-sm`,onClick:()=>c.nextPage(),disabled:!c.getCanNextPage(),"aria-label":l.goToNextPage,children:N(D,{})}),N(t,{type:`button`,variant:`outline`,color:`zinc`,size:`icon-sm`,className:`hidden lg:inline-flex`,onClick:()=>c.setPageIndex(u-1),disabled:!c.getCanNextPage(),"aria-label":l.goToLastPage,children:N(k,{})})]})]})})}function createDataTableSelectColumn(e){let t=e?.labels?.selectAllRows??H.selectAllRows,r=e?.labels?.selectRow??H.selectRow;return{id:`select`,enableSorting:!1,enableHiding:!1,header:({table:e})=>N(n,{"aria-label":t,checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t)}),cell:({row:e})=>N(n,{"aria-label":r,checked:e.getIsSelected()||e.getIsSomeSelected()&&`indeterminate`,disabled:!e.getCanSelect(),onCheckedChange:t=>e.toggleSelected(!!t)})}}function DataTable({columns:e,data:t,getRowId:n,filterColumns:r,pageSize:i=10,pageSizeOptions:a,enableRowSelection:o=!1,enableSorting:s=!1,showPagination:c=!1,showColumnVisibility:l=!1,toolbarActions:u,labels:d,className:f,tableClassName:p,variant:m}){return P(DataTableRoot,{columns:e,data:t,getRowId:n,pageSize:i,enableRowSelection:o,enableSorting:s,labels:d,className:f,children:[N(DataTableToolbar,{filterColumns:r,showColumnVisibility:l,toolbarActions:u}),N(x,{children:P(v,{className:p,variant:m,children:[N(DataTableHeader,{}),N(DataTableBody,{})]})}),c?N(DataTablePagination,{pageSizeOptions:a}):null]})}export{DataTable,DataTableBody,DataTableColumnHeader,DataTableHeader,DataTablePagination,DataTableRoot,DataTableToolbar,DataTableViewOptions,createDataTableSelectColumn,H as defaultDataTableLabels,useDataTable,useDataTableContext};
2
- //# sourceMappingURL=data-table.js.map
1
+ import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,t as u,u as d}from"../data-table-DcyKClKz.js";export{u as DataTable,o as DataTableBody,c as DataTableColumnHeader,i as DataTableHeader,e as DataTablePagination,s as DataTableRoot,l as DataTableToolbar,t as DataTableViewOptions,a as createDataTableSelectColumn,d as defaultDataTableLabels,n as useDataTable,r as useDataTableContext};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../table-CuE0Aenj.js";import{a as t,c as n,d as r,f as i,i as a,l as o,n as s,o as c,r as l,t as u,u as d}from"../data-table-DcyKClKz.js";import{a as f,n as p,r as m}from"../react.esm-BkhVXJ8s.js";import{jsx as h,jsxs as g}from"react/jsx-runtime";const _=[{id:`1`,name:`Ada Lovelace`,email:`ada@example.com`,age:36},{id:`2`,name:`Grace Hopper`,email:`grace@example.com`,age:85},{id:`3`,name:`Alan Turing`,email:`alan@example.com`,age:41},{id:`4`,name:`Katherine Johnson`,email:`katherine@example.com`,age:101},{id:`5`,name:`Margaret Hamilton`,email:`margaret@example.com`,age:89}],v=[{accessorKey:`name`,header:({column:e})=>h(l,{column:e,title:`Name`}),cell:({row:e})=>e.getValue(`name`)},{accessorKey:`email`,header:`Email`,cell:({row:e})=>e.getValue(`email`)},{accessorKey:`age`,header:`Age`,cell:({row:e})=>e.getValue(`age`)}];function getBodyRowNames(e){return Array.from(e.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).map(e=>e.querySelector(`[data-slot="table-cell"]`)?.textContent)}describe(`DataTable`,()=>{it(`renders a header cell per column and a body row per data item`,()=>{let{container:e}=m(h(u,{columns:v,data:_}));expect(f.getByRole(`columnheader`,{name:`Email`})).not.toBeNull(),expect(f.getByRole(`columnheader`,{name:`Age`})).not.toBeNull(),expect(e.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).toHaveLength(_.length),expect(f.getByText(`Ada Lovelace`)).not.toBeNull(),expect(f.getByText(`katherine@example.com`)).not.toBeNull()}),it(`renders the default empty-state message spanning all columns when data is empty`,()=>{let{container:e}=m(h(u,{columns:v,data:[]})),t=e.querySelector(`[data-slot="table-body"] [data-slot="table-cell"]`);expect(f.getByText(d.emptyMessage)).not.toBeNull(),expect(t?.getAttribute(`colspan`)).toBe(String(v.length))}),it(`renders a custom empty message provided via labels`,()=>{m(h(u,{columns:v,data:[],labels:{emptyMessage:`No people found`}})),expect(f.getByText(`No people found`)).not.toBeNull(),expect(f.queryByText(d.emptyMessage)).toBeNull()}),it(`sorts rows ascending, then descending, then clears sorting on repeated header clicks`,()=>{let{container:e}=m(h(u,{columns:v,data:_,enableSorting:!0})),t=f.getByRole(`button`);p.click(t),expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`,`Alan Turing`,`Grace Hopper`,`Katherine Johnson`,`Margaret Hamilton`]),p.click(t),expect(getBodyRowNames(e)).toEqual([`Margaret Hamilton`,`Katherine Johnson`,`Grace Hopper`,`Alan Turing`,`Ada Lovelace`]),p.click(t),expect(getBodyRowNames(e)).toEqual(_.map(e=>e.name))}),it(`does not render a sort toggle when sorting is disabled at the table level`,()=>{m(h(u,{columns:v,data:_})),expect(f.queryByRole(`button`)).toBeNull()}),it(`supports row selection with header select-all and per-row checkboxes`,()=>{m(h(u,{columns:v,data:_,enableRowSelection:!0}));let e=f.getByRole(`checkbox`,{name:d.selectAllRows}),t=f.getAllByRole(`checkbox`,{name:d.selectRow});expect(t).toHaveLength(_.length),expect(e.getAttribute(`data-state`)).toBe(`unchecked`),p.click(t[0]),expect(t[0].getAttribute(`data-state`)).toBe(`checked`),expect(e.getAttribute(`data-state`)).toBe(`indeterminate`),p.click(e);for(let e of f.getAllByRole(`checkbox`,{name:d.selectRow}))expect(e.getAttribute(`data-state`)).toBe(`checked`);expect(e.getAttribute(`data-state`)).toBe(`checked`)}),it(`does not prepend a second select column when the columns already define one`,()=>{let e=[{id:`select`,header:()=>`S`,cell:()=>`x`},...v];m(h(u,{columns:e,data:_,enableRowSelection:!0})),expect(f.getAllByRole(`columnheader`)).toHaveLength(e.length)})}),describe(`DataTableToolbar`,()=>{it(`renders no toolbar content when there is no filter, no toolbarActions, and column visibility is off`,()=>{let{container:e}=m(h(u,{columns:v,data:_}));expect(e.querySelector(`[data-slot="input"]`)).toBeNull(),expect(f.queryByRole(`button`,{name:d.columnsButton})).toBeNull()}),it(`filters rows by a single column via the toolbar input`,()=>{let{container:e}=m(h(u,{columns:v,data:_,filterColumns:`name`})),t=f.getByPlaceholderText(d.filterPlaceholder);p.change(t,{target:{value:`ada`}}),expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`])}),it(`lets the active filter column be switched and resets the previous filter value`,()=>{let{container:e}=m(h(u,{columns:v,data:_,filterColumns:[`name`,`email`]})),t=f.getByLabelText(d.filterColumnSelectorLabel),n=f.getByPlaceholderText(d.filterPlaceholder);p.change(n,{target:{value:`ada`}}),expect(getBodyRowNames(e)).toEqual([`Ada Lovelace`]),p.change(t,{target:{value:`email`}}),expect(getBodyRowNames(e)).toEqual(_.map(e=>e.name)),p.change(n,{target:{value:`grace@`}}),expect(getBodyRowNames(e)).toEqual([`Grace Hopper`])}),it(`renders static toolbarActions content`,()=>{m(h(u,{columns:v,data:_,toolbarActions:h(`button`,{type:`button`,children:`Export`})})),expect(f.getByRole(`button`,{name:`Export`})).not.toBeNull()}),it(`renders function toolbarActions with access to the live table instance`,()=>{m(h(u,{columns:v,data:_,toolbarActions:e=>g(`span`,{children:[e.getRowModel().rows.length,` rows`]})})),expect(f.getByText(`${_.length} rows`)).not.toBeNull()}),it(`renders the column-visibility button when showColumnVisibility is set`,()=>{m(h(u,{columns:v,data:_,showColumnVisibility:!0})),expect(f.getByRole(`button`,{name:d.columnsButton})).not.toBeNull()})}),describe(`DataTableColumnHeader`,()=>{function fakeColumn(e){return{getCanSort:e.getCanSort??(()=>!0),getIsSorted:e.getIsSorted??(()=>!1),toggleSorting:e.toggleSorting??(()=>{}),clearSorting:e.clearSorting??(()=>{})}}it(`renders only the title, with no sort control, when the column cannot sort`,()=>{let{container:e}=m(h(l,{column:fakeColumn({getCanSort:()=>!1}),title:`Name`}));expect(f.getByText(`Name`)).not.toBeNull(),expect(e.querySelector(`button`)).toBeNull()}),it(`toggles to ascending sort when clicked while unsorted`,()=>{let e=vi.fn(),{container:t}=m(h(l,{column:fakeColumn({getIsSorted:()=>!1,toggleSorting:e}),title:`Name`}));p.click(t.querySelector(`button`)),expect(e).toHaveBeenCalledWith(!1)}),it(`toggles to descending sort when clicked while sorted ascending`,()=>{let e=vi.fn(),{container:t}=m(h(l,{column:fakeColumn({getIsSorted:()=>`asc`,toggleSorting:e}),title:`Name`}));p.click(t.querySelector(`button`)),expect(e).toHaveBeenCalledWith(!0)}),it(`clears sorting when clicked while sorted descending`,()=>{let e=vi.fn(),{container:t}=m(h(l,{column:fakeColumn({getIsSorted:()=>`desc`,clearSorting:e}),title:`Name`}));p.click(t.querySelector(`button`)),expect(e).toHaveBeenCalledTimes(1)})}),describe(`DataTablePagination`,()=>{it(`throws when rendered without a table prop or DataTableRoot context`,()=>{expect(()=>m(h(t,{}))).toThrow("DataTablePagination requires a `table` prop or to be rendered within <DataTableRoot>")}),it(`paginates rows and updates page/button state when navigating first/next/last/previous`,()=>{let{container:n}=m(g(c,{columns:v,data:_,enablePagination:!0,pageSize:2,children:[g(e,{children:[h(a,{}),h(s,{})]}),h(t,{})]}));expect(getBodyRowNames(n)).toEqual([`Ada Lovelace`,`Grace Hopper`]),expect(f.getByText(d.pageOf(1,3))).not.toBeNull(),expect(f.getByRole(`button`,{name:d.goToPreviousPage}).disabled).toBe(!0),p.click(f.getByRole(`button`,{name:d.goToNextPage})),expect(getBodyRowNames(n)).toEqual([`Alan Turing`,`Katherine Johnson`]),expect(f.getByText(d.pageOf(2,3))).not.toBeNull(),p.click(f.getByRole(`button`,{name:d.goToLastPage})),expect(getBodyRowNames(n)).toEqual([`Margaret Hamilton`]),expect(f.getByRole(`button`,{name:d.goToNextPage}).disabled).toBe(!0),p.click(f.getByRole(`button`,{name:d.goToFirstPage})),expect(getBodyRowNames(n)).toEqual([`Ada Lovelace`,`Grace Hopper`]),p.click(f.getByRole(`button`,{name:d.goToNextPage})),p.click(f.getByRole(`button`,{name:d.goToPreviousPage})),expect(getBodyRowNames(n)).toEqual([`Ada Lovelace`,`Grace Hopper`])})}),describe(`DataTableViewOptions`,()=>{it(`throws when rendered without a table prop or DataTableRoot context`,()=>{expect(()=>m(h(n,{}))).toThrow("DataTableViewOptions requires a `table` prop or to be rendered within <DataTableRoot>")}),it(`renders nothing when there are no hideable columns`,()=>{let{container:e}=m(h(n,{table:{getAllColumns:()=>[]}}));expect(e.firstChild).toBeNull()}),it(`opens the dropdown and hides a column when its checkbox item is toggled off`,()=>{let{container:e}=m(h(u,{columns:v,data:_,showColumnVisibility:!0})),t=f.getByRole(`button`,{name:d.columnsButton});p.pointerDown(t,{button:0,pointerId:1}),p.pointerUp(t,{button:0,pointerId:1});let n=f.getByRole(`menuitemcheckbox`,{name:`email`});p.pointerDown(n,{button:0,pointerId:1}),p.pointerUp(n,{button:0,pointerId:1}),p.click(n),expect(f.queryByRole(`columnheader`,{name:`Email`})).toBeNull(),expect(e.querySelector(`[data-slot="table-container"]`)).not.toBeNull()})}),describe(`createDataTableSelectColumn`,()=>{it(`returns a non-sortable, non-hideable select column definition`,()=>{let e=o();expect(e.id).toBe(`select`),expect(e.enableSorting).toBe(!1),expect(e.enableHiding).toBe(!1),expect(typeof e.header).toBe(`function`),expect(typeof e.cell).toBe(`function`)}),it(`uses custom select-all and select-row labels when the table provides them`,()=>{m(h(u,{columns:v,data:_,enableRowSelection:!0,labels:{selectAllRows:`Pick all`,selectRow:`Pick one`}})),expect(f.getByRole(`checkbox`,{name:`Pick all`})).not.toBeNull(),expect(f.getAllByRole(`checkbox`,{name:`Pick one`})).toHaveLength(_.length)})}),describe(`useDataTable`,()=>{function Harness(e){return h(`span`,{"data-testid":`column-count`,children:r(e).getAllColumns().length})}it(`does not add a select column when row selection is disabled`,()=>{m(h(Harness,{columns:v,data:_})),expect(f.getByTestId(`column-count`).textContent).toBe(String(v.length))}),it(`prepends a select column when row selection is enabled`,()=>{m(h(Harness,{columns:v,data:_,enableRowSelection:!0})),expect(f.getByTestId(`column-count`).textContent).toBe(String(v.length+1))})}),describe(`DataTableRoot`,()=>{it(`renders children within context when given an externally created table (controlled mode)`,()=>{function Wrapper(){return h(c,{table:r({columns:v,data:_}),children:g(e,{children:[h(a,{}),h(s,{})]})})}let{container:t}=m(h(Wrapper,{}));expect(t.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).toHaveLength(_.length)}),it(`builds its own table from columns and data when no table prop is given (uncontrolled mode)`,()=>{let{container:t}=m(h(c,{columns:v,data:_,children:g(e,{children:[h(a,{}),h(s,{})]})}));expect(t.querySelectorAll(`[data-slot="table-body"] [data-slot="table-row"]`)).toHaveLength(_.length)}),it(`applies the className to the wrapping element`,()=>{let{container:t}=m(h(c,{columns:v,data:_,className:`custom-root`,children:h(e,{children:h(a,{})})}));expect(t.firstChild.className).toContain(`custom-root`)})}),describe(`useDataTableContext`,()=>{it(`throws a descriptive error when called outside of DataTableRoot`,()=>{function Consumer(){return i(),null}expect(()=>m(h(Consumer,{}))).toThrow(`useDataTableContext must be used within <DataTableRoot>`)})});
2
+ //# sourceMappingURL=data-table.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.spec.js","names":[],"sources":["../../src/components/data-table.spec.tsx"],"sourcesContent":["import type { Column, ColumnDef } from '@tanstack/react-table'\nimport { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n createDataTableSelectColumn,\n DataTable,\n DataTableBody,\n DataTableColumnHeader,\n DataTableHeader,\n DataTablePagination,\n DataTableRoot,\n DataTableViewOptions,\n defaultDataTableLabels,\n type UseDataTableOptions,\n useDataTable,\n useDataTableContext\n} from './data-table'\nimport { Table } from './table'\n\ntype Person = {\n id: string\n name: string\n email: string\n age: number\n}\n\nconst people: Person[] = [\n { id: '1', name: 'Ada Lovelace', email: 'ada@example.com', age: 36 },\n { id: '2', name: 'Grace Hopper', email: 'grace@example.com', age: 85 },\n { id: '3', name: 'Alan Turing', email: 'alan@example.com', age: 41 },\n { id: '4', name: 'Katherine Johnson', email: 'katherine@example.com', age: 101 },\n { id: '5', name: 'Margaret Hamilton', email: 'margaret@example.com', age: 89 }\n]\n\nconst columns: ColumnDef<Person>[] = [\n {\n accessorKey: 'name',\n header: ({ column }) => <DataTableColumnHeader column={column} title=\"Name\" />,\n cell: ({ row }) => row.getValue('name')\n },\n {\n accessorKey: 'email',\n header: 'Email',\n cell: ({ row }) => row.getValue('email')\n },\n {\n accessorKey: 'age',\n header: 'Age',\n cell: ({ row }) => row.getValue('age')\n }\n]\n\nfunction getBodyRowNames(container: HTMLElement) {\n return Array.from(container.querySelectorAll('[data-slot=\"table-body\"] [data-slot=\"table-row\"]')).map(\n (row) => row.querySelector('[data-slot=\"table-cell\"]')?.textContent\n )\n}\n\ndescribe('DataTable', () => {\n it('renders a header cell per column and a body row per data item', () => {\n const { container } = render(<DataTable columns={columns} data={people} />)\n\n expect(screen.getByRole('columnheader', { name: 'Email' })).not.toBeNull()\n expect(screen.getByRole('columnheader', { name: 'Age' })).not.toBeNull()\n expect(container.querySelectorAll('[data-slot=\"table-body\"] [data-slot=\"table-row\"]')).toHaveLength(people.length)\n expect(screen.getByText('Ada Lovelace')).not.toBeNull()\n expect(screen.getByText('katherine@example.com')).not.toBeNull()\n })\n\n it('renders the default empty-state message spanning all columns when data is empty', () => {\n const { container } = render(<DataTable columns={columns} data={[]} />)\n\n const emptyCell = container.querySelector('[data-slot=\"table-body\"] [data-slot=\"table-cell\"]')\n\n expect(screen.getByText(defaultDataTableLabels.emptyMessage as string)).not.toBeNull()\n expect(emptyCell?.getAttribute('colspan')).toBe(String(columns.length))\n })\n\n it('renders a custom empty message provided via labels', () => {\n render(<DataTable columns={columns} data={[]} labels={{ emptyMessage: 'No people found' }} />)\n\n expect(screen.getByText('No people found')).not.toBeNull()\n expect(screen.queryByText(defaultDataTableLabels.emptyMessage as string)).toBeNull()\n })\n\n it('sorts rows ascending, then descending, then clears sorting on repeated header clicks', () => {\n const { container } = render(<DataTable columns={columns} data={people} enableSorting />)\n\n const sortButton = screen.getByRole('button')\n\n fireEvent.click(sortButton)\n expect(getBodyRowNames(container)).toEqual([\n 'Ada Lovelace',\n 'Alan Turing',\n 'Grace Hopper',\n 'Katherine Johnson',\n 'Margaret Hamilton'\n ])\n\n fireEvent.click(sortButton)\n expect(getBodyRowNames(container)).toEqual([\n 'Margaret Hamilton',\n 'Katherine Johnson',\n 'Grace Hopper',\n 'Alan Turing',\n 'Ada Lovelace'\n ])\n\n fireEvent.click(sortButton)\n expect(getBodyRowNames(container)).toEqual(people.map((person) => person.name))\n })\n\n it('does not render a sort toggle when sorting is disabled at the table level', () => {\n render(<DataTable columns={columns} data={people} />)\n\n expect(screen.queryByRole('button')).toBeNull()\n })\n\n it('supports row selection with header select-all and per-row checkboxes', () => {\n render(<DataTable columns={columns} data={people} enableRowSelection />)\n\n const selectAll = screen.getByRole('checkbox', { name: defaultDataTableLabels.selectAllRows })\n const rowCheckboxes = screen.getAllByRole('checkbox', { name: defaultDataTableLabels.selectRow })\n\n expect(rowCheckboxes).toHaveLength(people.length)\n expect(selectAll.getAttribute('data-state')).toBe('unchecked')\n\n fireEvent.click(rowCheckboxes[0]!)\n expect(rowCheckboxes[0]!.getAttribute('data-state')).toBe('checked')\n expect(selectAll.getAttribute('data-state')).toBe('indeterminate')\n\n fireEvent.click(selectAll)\n for (const checkbox of screen.getAllByRole('checkbox', { name: defaultDataTableLabels.selectRow })) {\n expect(checkbox.getAttribute('data-state')).toBe('checked')\n }\n expect(selectAll.getAttribute('data-state')).toBe('checked')\n })\n\n it('does not prepend a second select column when the columns already define one', () => {\n const columnsWithSelect: ColumnDef<Person>[] = [{ id: 'select', header: () => 'S', cell: () => 'x' }, ...columns]\n\n render(<DataTable columns={columnsWithSelect} data={people} enableRowSelection />)\n\n expect(screen.getAllByRole('columnheader')).toHaveLength(columnsWithSelect.length)\n })\n})\n\ndescribe('DataTableToolbar', () => {\n it('renders no toolbar content when there is no filter, no toolbarActions, and column visibility is off', () => {\n const { container } = render(<DataTable columns={columns} data={people} />)\n\n expect(container.querySelector('[data-slot=\"input\"]')).toBeNull()\n expect(screen.queryByRole('button', { name: defaultDataTableLabels.columnsButton })).toBeNull()\n })\n\n it('filters rows by a single column via the toolbar input', () => {\n const { container } = render(<DataTable columns={columns} data={people} filterColumns=\"name\" />)\n\n const filterInput = screen.getByPlaceholderText(defaultDataTableLabels.filterPlaceholder)\n fireEvent.change(filterInput, { target: { value: 'ada' } })\n\n expect(getBodyRowNames(container)).toEqual(['Ada Lovelace'])\n })\n\n it('lets the active filter column be switched and resets the previous filter value', () => {\n const { container } = render(<DataTable columns={columns} data={people} filterColumns={['name', 'email']} />)\n\n const columnSelect = screen.getByLabelText(defaultDataTableLabels.filterColumnSelectorLabel)\n const filterInput = screen.getByPlaceholderText(defaultDataTableLabels.filterPlaceholder)\n\n fireEvent.change(filterInput, { target: { value: 'ada' } })\n expect(getBodyRowNames(container)).toEqual(['Ada Lovelace'])\n\n fireEvent.change(columnSelect, { target: { value: 'email' } })\n expect(getBodyRowNames(container)).toEqual(people.map((person) => person.name))\n\n fireEvent.change(filterInput, { target: { value: 'grace@' } })\n expect(getBodyRowNames(container)).toEqual(['Grace Hopper'])\n })\n\n it('renders static toolbarActions content', () => {\n render(<DataTable columns={columns} data={people} toolbarActions={<button type=\"button\">Export</button>} />)\n\n expect(screen.getByRole('button', { name: 'Export' })).not.toBeNull()\n })\n\n it('renders function toolbarActions with access to the live table instance', () => {\n render(\n <DataTable\n columns={columns}\n data={people}\n toolbarActions={(table) => <span>{table.getRowModel().rows.length} rows</span>}\n />\n )\n\n expect(screen.getByText(`${people.length} rows`)).not.toBeNull()\n })\n\n it('renders the column-visibility button when showColumnVisibility is set', () => {\n render(<DataTable columns={columns} data={people} showColumnVisibility />)\n\n expect(screen.getByRole('button', { name: defaultDataTableLabels.columnsButton })).not.toBeNull()\n })\n})\n\ndescribe('DataTableColumnHeader', () => {\n function fakeColumn(overrides: {\n getCanSort?: () => boolean\n getIsSorted?: () => false | 'asc' | 'desc'\n toggleSorting?: (desc?: boolean) => void\n clearSorting?: () => void\n }) {\n return {\n getCanSort: overrides.getCanSort ?? (() => true),\n getIsSorted: overrides.getIsSorted ?? (() => false),\n toggleSorting: overrides.toggleSorting ?? (() => {}),\n clearSorting: overrides.clearSorting ?? (() => {})\n } as unknown as Column<Person, unknown>\n }\n\n it('renders only the title, with no sort control, when the column cannot sort', () => {\n const { container } = render(\n <DataTableColumnHeader column={fakeColumn({ getCanSort: () => false })} title=\"Name\" />\n )\n\n expect(screen.getByText('Name')).not.toBeNull()\n expect(container.querySelector('button')).toBeNull()\n })\n\n it('toggles to ascending sort when clicked while unsorted', () => {\n const toggleSorting = vi.fn()\n const { container } = render(\n <DataTableColumnHeader column={fakeColumn({ getIsSorted: () => false, toggleSorting })} title=\"Name\" />\n )\n\n fireEvent.click(container.querySelector('button')!)\n\n expect(toggleSorting).toHaveBeenCalledWith(false)\n })\n\n it('toggles to descending sort when clicked while sorted ascending', () => {\n const toggleSorting = vi.fn()\n const { container } = render(\n <DataTableColumnHeader column={fakeColumn({ getIsSorted: () => 'asc', toggleSorting })} title=\"Name\" />\n )\n\n fireEvent.click(container.querySelector('button')!)\n\n expect(toggleSorting).toHaveBeenCalledWith(true)\n })\n\n it('clears sorting when clicked while sorted descending', () => {\n const clearSorting = vi.fn()\n const { container } = render(\n <DataTableColumnHeader column={fakeColumn({ getIsSorted: () => 'desc', clearSorting })} title=\"Name\" />\n )\n\n fireEvent.click(container.querySelector('button')!)\n\n expect(clearSorting).toHaveBeenCalledTimes(1)\n })\n})\n\ndescribe('DataTablePagination', () => {\n it('throws when rendered without a table prop or DataTableRoot context', () => {\n expect(() => render(<DataTablePagination />)).toThrow(\n 'DataTablePagination requires a `table` prop or to be rendered within <DataTableRoot>'\n )\n })\n\n it('paginates rows and updates page/button state when navigating first/next/last/previous', () => {\n const { container } = render(\n <DataTableRoot columns={columns} data={people} enablePagination pageSize={2}>\n <Table>\n <DataTableHeader />\n <DataTableBody />\n </Table>\n <DataTablePagination />\n </DataTableRoot>\n )\n\n expect(getBodyRowNames(container)).toEqual(['Ada Lovelace', 'Grace Hopper'])\n expect(screen.getByText(defaultDataTableLabels.pageOf(1, 3) as string)).not.toBeNull()\n expect(\n (screen.getByRole('button', { name: defaultDataTableLabels.goToPreviousPage }) as HTMLButtonElement).disabled\n ).toBe(true)\n\n fireEvent.click(screen.getByRole('button', { name: defaultDataTableLabels.goToNextPage }))\n expect(getBodyRowNames(container)).toEqual(['Alan Turing', 'Katherine Johnson'])\n expect(screen.getByText(defaultDataTableLabels.pageOf(2, 3) as string)).not.toBeNull()\n\n fireEvent.click(screen.getByRole('button', { name: defaultDataTableLabels.goToLastPage }))\n expect(getBodyRowNames(container)).toEqual(['Margaret Hamilton'])\n expect(\n (screen.getByRole('button', { name: defaultDataTableLabels.goToNextPage }) as HTMLButtonElement).disabled\n ).toBe(true)\n\n fireEvent.click(screen.getByRole('button', { name: defaultDataTableLabels.goToFirstPage }))\n expect(getBodyRowNames(container)).toEqual(['Ada Lovelace', 'Grace Hopper'])\n\n fireEvent.click(screen.getByRole('button', { name: defaultDataTableLabels.goToNextPage }))\n fireEvent.click(screen.getByRole('button', { name: defaultDataTableLabels.goToPreviousPage }))\n expect(getBodyRowNames(container)).toEqual(['Ada Lovelace', 'Grace Hopper'])\n })\n})\n\ndescribe('DataTableViewOptions', () => {\n it('throws when rendered without a table prop or DataTableRoot context', () => {\n expect(() => render(<DataTableViewOptions />)).toThrow(\n 'DataTableViewOptions requires a `table` prop or to be rendered within <DataTableRoot>'\n )\n })\n\n it('renders nothing when there are no hideable columns', () => {\n const table = { getAllColumns: () => [] } as unknown as Parameters<typeof DataTableViewOptions>[0]['table']\n const { container } = render(<DataTableViewOptions table={table} />)\n\n expect(container.firstChild).toBeNull()\n })\n\n it('opens the dropdown and hides a column when its checkbox item is toggled off', () => {\n const { container } = render(<DataTable columns={columns} data={people} showColumnVisibility />)\n\n const trigger = screen.getByRole('button', { name: defaultDataTableLabels.columnsButton })\n // Radix opens the menu from pointerdown/pointerup, not a plain click event.\n fireEvent.pointerDown(trigger, { button: 0, pointerId: 1 })\n fireEvent.pointerUp(trigger, { button: 0, pointerId: 1 })\n\n const emailItem = screen.getByRole('menuitemcheckbox', { name: 'email' })\n fireEvent.pointerDown(emailItem, { button: 0, pointerId: 1 })\n fireEvent.pointerUp(emailItem, { button: 0, pointerId: 1 })\n fireEvent.click(emailItem)\n\n expect(screen.queryByRole('columnheader', { name: 'Email' })).toBeNull()\n expect(container.querySelector('[data-slot=\"table-container\"]')).not.toBeNull()\n })\n})\n\ndescribe('createDataTableSelectColumn', () => {\n it('returns a non-sortable, non-hideable select column definition', () => {\n const column = createDataTableSelectColumn<Person>()\n\n expect(column.id).toBe('select')\n expect(column.enableSorting).toBe(false)\n expect(column.enableHiding).toBe(false)\n expect(typeof column.header).toBe('function')\n expect(typeof column.cell).toBe('function')\n })\n\n it('uses custom select-all and select-row labels when the table provides them', () => {\n render(\n <DataTable\n columns={columns}\n data={people}\n enableRowSelection\n labels={{ selectAllRows: 'Pick all', selectRow: 'Pick one' }}\n />\n )\n\n expect(screen.getByRole('checkbox', { name: 'Pick all' })).not.toBeNull()\n expect(screen.getAllByRole('checkbox', { name: 'Pick one' })).toHaveLength(people.length)\n })\n})\n\ndescribe('useDataTable', () => {\n function Harness(props: UseDataTableOptions<Person>) {\n const table = useDataTable(props)\n return <span data-testid=\"column-count\">{table.getAllColumns().length}</span>\n }\n\n it('does not add a select column when row selection is disabled', () => {\n render(<Harness columns={columns} data={people} />)\n\n expect(screen.getByTestId('column-count').textContent).toBe(String(columns.length))\n })\n\n it('prepends a select column when row selection is enabled', () => {\n render(<Harness columns={columns} data={people} enableRowSelection />)\n\n expect(screen.getByTestId('column-count').textContent).toBe(String(columns.length + 1))\n })\n})\n\ndescribe('DataTableRoot', () => {\n it('renders children within context when given an externally created table (controlled mode)', () => {\n function Wrapper() {\n const table = useDataTable({ columns, data: people })\n return (\n <DataTableRoot table={table}>\n <Table>\n <DataTableHeader />\n <DataTableBody />\n </Table>\n </DataTableRoot>\n )\n }\n\n const { container } = render(<Wrapper />)\n\n expect(container.querySelectorAll('[data-slot=\"table-body\"] [data-slot=\"table-row\"]')).toHaveLength(people.length)\n })\n\n it('builds its own table from columns and data when no table prop is given (uncontrolled mode)', () => {\n const { container } = render(\n <DataTableRoot columns={columns} data={people}>\n <Table>\n <DataTableHeader />\n <DataTableBody />\n </Table>\n </DataTableRoot>\n )\n\n expect(container.querySelectorAll('[data-slot=\"table-body\"] [data-slot=\"table-row\"]')).toHaveLength(people.length)\n })\n\n it('applies the className to the wrapping element', () => {\n const { container } = render(\n <DataTableRoot columns={columns} data={people} className=\"custom-root\">\n <Table>\n <DataTableHeader />\n </Table>\n </DataTableRoot>\n )\n\n expect((container.firstChild as HTMLElement).className).toContain('custom-root')\n })\n})\n\ndescribe('useDataTableContext', () => {\n it('throws a descriptive error when called outside of DataTableRoot', () => {\n function Consumer() {\n useDataTableContext()\n return null\n }\n\n expect(() => render(<Consumer />)).toThrow('useDataTableContext must be used within <DataTableRoot>')\n })\n})\n"],"mappings":"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"}
@@ -1,55 +1,3 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { Button } from "./button.js";
3
- import { Calendar, DateRange } from "./calendar.js";
4
- import { Popover, PopoverContent } from "./popover.js";
5
- import * as React from "react";
6
- import { Locale } from "react-day-picker";
7
- //#region src/components/date-range-picker.d.ts
8
- type DateRangePickerPresetOption = {
9
- label: string;
10
- getRange: () => DateRange;
11
- };
12
- type DateRangePickerProps = Omit<React.ComponentProps<typeof Popover>, 'open' | 'defaultOpen' | 'onOpenChange'> & {
13
- value?: DateRange | null;
14
- defaultValue?: DateRange | null;
15
- onValueChange?: (range: DateRange | null) => void;
16
- onApply?: (range: DateRange | null) => void;
17
- onReset?: () => void;
18
- open?: boolean;
19
- defaultOpen?: boolean;
20
- onOpenChange?: (open: boolean) => void;
21
- locale?: Partial<Locale>;
22
- placeholder?: string;
23
- };
24
- type DateRangePickerTriggerProps = React.ComponentProps<typeof Button> & {
25
- asChild?: boolean;
26
- };
27
- type DateRangePickerValueProps = React.ComponentProps<'span'> & {
28
- placeholder?: string;
29
- };
30
- type DateRangePickerContentProps = React.ComponentProps<typeof PopoverContent>;
31
- type DateRangePickerPresetsProps = React.ComponentProps<'div'> & {
32
- presets?: DateRangePickerPresetOption[];
33
- };
34
- type DateRangePickerPresetProps = React.ComponentProps<'button'> & {
35
- selected?: boolean;
36
- };
37
- type DateRangePickerCalendarProps = Omit<React.ComponentProps<typeof Calendar>, 'mode' | 'numberOfMonths' | 'selected' | 'onSelect' | 'month' | 'defaultMonth'>;
38
- type DateRangePickerDateFieldsProps = React.ComponentProps<'div'>;
39
- type DateRangePickerActionsProps = React.ComponentProps<'div'>;
40
- type DateRangePickerApplyProps = React.ComponentProps<typeof Button>;
41
- type DateRangePickerResetProps = React.ComponentProps<typeof Button>;
42
- declare function DateRangePicker({ value: valueProp, defaultValue, onValueChange, onApply, onReset, open: openProp, defaultOpen, onOpenChange, locale, placeholder, children, ...props }: DateRangePickerProps): React.JSX.Element;
43
- declare function DateRangePickerTrigger({ className, children, asChild, variant, color, type, ...props }: DateRangePickerTriggerProps): React.JSX.Element;
44
- declare function DateRangePickerValue({ className, placeholder, ...props }: DateRangePickerValueProps): React.JSX.Element;
45
- declare function DateRangePickerContent({ className, align, sideOffset, children, ...props }: DateRangePickerContentProps): React.JSX.Element;
46
- declare function DateRangePickerPresets({ className, presets, ...props }: DateRangePickerPresetsProps): React.JSX.Element;
47
- declare function DateRangePickerPreset({ className, selected, ...props }: DateRangePickerPresetProps): React.JSX.Element;
48
- declare function DateRangePickerCalendar({ className, showOutsideDays, onMonthChange, ...props }: DateRangePickerCalendarProps): React.JSX.Element;
49
- declare function DateRangePickerDateFields({ className, ...props }: DateRangePickerDateFieldsProps): React.JSX.Element;
50
- declare function DateRangePickerActions({ className, children, ...props }: DateRangePickerActionsProps): React.JSX.Element;
51
- declare function DateRangePickerApply({ children, onClick, className, ...props }: DateRangePickerApplyProps): React.JSX.Element;
52
- declare function DateRangePickerReset({ children, onClick, variant, color, className, ...props }: DateRangePickerResetProps): React.JSX.Element;
53
- //#endregion
54
- export { type DateRange, DateRangePicker, DateRangePickerActions, DateRangePickerActionsProps, DateRangePickerApply, DateRangePickerApplyProps, DateRangePickerCalendar, DateRangePickerCalendarProps, DateRangePickerContent, DateRangePickerContentProps, DateRangePickerDateFields, DateRangePickerDateFieldsProps, DateRangePickerPreset, DateRangePickerPresetOption, DateRangePickerPresetProps, DateRangePickerPresets, DateRangePickerPresetsProps, DateRangePickerProps, DateRangePickerReset, DateRangePickerResetProps, DateRangePickerTrigger, DateRangePickerTriggerProps, DateRangePickerValue, DateRangePickerValueProps };
55
- //# sourceMappingURL=date-range-picker.d.ts.map
1
+ import { a as DateRange } from "../calendar-C1GgjzIA.js";
2
+ import { C as DateRangePickerValueProps, S as DateRangePickerValue, _ as DateRangePickerProps, a as DateRangePickerApplyProps, b as DateRangePickerTrigger, c as DateRangePickerContent, d as DateRangePickerDateFieldsProps, f as DateRangePickerPreset, g as DateRangePickerPresetsProps, h as DateRangePickerPresets, i as DateRangePickerApply, l as DateRangePickerContentProps, m as DateRangePickerPresetProps, n as DateRangePickerActions, o as DateRangePickerCalendar, p as DateRangePickerPresetOption, r as DateRangePickerActionsProps, s as DateRangePickerCalendarProps, t as DateRangePicker, u as DateRangePickerDateFields, v as DateRangePickerReset, x as DateRangePickerTriggerProps, y as DateRangePickerResetProps } from "../date-range-picker-BngvCWcR.js";
3
+ export { type DateRange, DateRangePicker, DateRangePickerActions, DateRangePickerActionsProps, DateRangePickerApply, DateRangePickerApplyProps, DateRangePickerCalendar, DateRangePickerCalendarProps, DateRangePickerContent, DateRangePickerContentProps, DateRangePickerDateFields, DateRangePickerDateFieldsProps, DateRangePickerPreset, DateRangePickerPresetOption, DateRangePickerPresetProps, DateRangePickerPresets, DateRangePickerPresetsProps, DateRangePickerProps, DateRangePickerReset, DateRangePickerResetProps, DateRangePickerTrigger, DateRangePickerTriggerProps, DateRangePickerValue, DateRangePickerValueProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{Calendar as n}from"./calendar.js";import{Input as r}from"./input.js";import{Popover as i,PopoverContent as a,PopoverTrigger as o}from"./popover.js";import{IconArrowRight as s,IconCalendar as c,IconChevronDown as l}from"@tabler/icons-react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";import*as p from"react";const m=p.createContext(null),h=[{label:`Hoje`,getRange:()=>{let e=startOfDay(new Date);return{from:e,to:e}}},{label:`Ontem`,getRange:()=>{let e=addDays(startOfDay(new Date),-1);return{from:e,to:e}}},{label:`Últimos 7 dias`,getRange:()=>{let e=startOfDay(new Date);return{from:addDays(e,-7),to:e}}},{label:`Últimos 15 dias`,getRange:()=>{let e=startOfDay(new Date);return{from:addDays(e,-15),to:e}}},{label:`Últimos 30 dias`,getRange:()=>{let e=startOfDay(new Date);return{from:addDays(e,-30),to:e}}},{label:`Últimos 60 dias`,getRange:()=>{let e=startOfDay(new Date);return{from:addDays(e,-60),to:e}}},{label:`Últimos 90 dias`,getRange:()=>{let e=startOfDay(new Date);return{from:addDays(e,-90),to:e}}},{label:`Semana passada`,getRange:()=>{let e=addDays(startOfWeek(new Date),-7);return{from:e,to:addDays(e,6)}}},{label:`Este mês`,getRange:()=>{let e=startOfDay(new Date);return{from:startOfMonth(e),to:e}}},{label:`Mês passado`,getRange:()=>{let e=new Date(new Date().getFullYear(),new Date().getMonth()-1,1);return{from:startOfMonth(e),to:endOfMonth(e)}}}];function DateRangePicker({value:e,defaultValue:t=null,onValueChange:n,onApply:r,onReset:a,open:o,defaultOpen:s=!1,onOpenChange:c,locale:l,placeholder:h=`Selecione um período`,children:g,..._}){let[v,y]=p.useState(t),[b,x]=p.useState(s),S=e!==void 0,C=o!==void 0,w=S?e??null:v,T=C?o:b,[E,D]=p.useState(()=>toDraft(w)),[O,k]=p.useState(()=>getRangeMonth(toDraft(w))),A=p.useCallback(e=>{let t=normalizeDraft(e);D(t);let n=getRangeMonth(t);n&&k(n)},[]),j=p.useCallback(e=>{S||y(e),n?.(e)},[S,n]),M=p.useCallback(e=>{if(e){let e=toDraft(w);D(e),k(getRangeMonth(e))}C||x(e),c?.(e)},[C,c,w]),N=p.useCallback(()=>{let e=toValue(E);j(e),r?.(e),M(!1)},[j,E,r,M]),P=p.useCallback(()=>{D(void 0),j(null),a?.(),M(!1)},[j,a,M]),F=p.useMemo(()=>({value:w,draft:E,month:O,locale:l,placeholder:h,setDraft:A,setMonth:k,apply:N,reset:P}),[N,E,l,O,h,P,A,w]);return d(m.Provider,{value:F,children:d(i,{open:T,onOpenChange:M,..._,children:g??f(u,{children:[d(DateRangePickerTrigger,{}),f(DateRangePickerContent,{children:[d(DateRangePickerPresets,{}),d(DateRangePickerDateFields,{}),d(DateRangePickerCalendar,{}),d(DateRangePickerActions,{})]})]})})})}function DateRangePickerTrigger({className:n,children:r,asChild:i=!1,variant:a=`outline`,color:s=`zinc`,type:p=`button`,...m}){return i?d(o,{asChild:!0,children:r}):d(o,{asChild:!0,children:d(t,{type:p,variant:a,color:s,className:e(`min-w-64 justify-between font-normal`,n),...m,children:r??f(u,{children:[d(c,{"data-icon":`inline-start`,className:`size-4 text-muted-foreground`}),d(DateRangePickerValue,{className:`flex-1 text-left`}),d(l,{"data-icon":`inline-end`,className:`size-4 text-muted-foreground`})]})})})}function DateRangePickerValue({className:t,placeholder:n,...r}){let{value:i,locale:a,placeholder:o}=useDateRangePicker();return d(`span`,{"data-slot":`date-range-picker-value`,className:e(`truncate`,t),...r,children:formatRange(i,a,n??o)})}function DateRangePickerContent({className:t,align:n=`start`,sideOffset:r=8,children:i,...o}){let s=p.Children.toArray(i),c=s.filter(isDateRangePickerPresetsElement),l=s.filter(e=>!isDateRangePickerPresetsElement(e));return d(a,{align:n,sideOffset:r,className:e(`w-[calc(100vw-(--spacing(4)))] max-w-2xl p-2`,t),...o,children:f(`div`,{"data-slot":`date-range-picker-content`,className:`grid gap-3 md:grid-cols-[10rem_minmax(0,1fr)]`,children:[c,d(`div`,{className:`flex min-w-0 flex-col gap-3`,children:l})]})})}function DateRangePickerPresets({className:t,presets:n=h,...r}){let{draft:i,setDraft:a}=useDateRangePicker(),o=getRelativeDaysValue(i,`today`),s=getRelativeDaysValue(i,`yesterday`);return f(`div`,{"data-slot":`date-range-picker-presets`,className:e(`hidden flex-col border-border pr-3 md:flex md:border-r`,t),...r,children:[n.map(e=>{let t=e.getRange();return d(DateRangePickerPreset,{type:`button`,selected:isSameRange(i,t),onClick:()=>a(t),children:e.label},e.label)}),f(`div`,{className:`my-3 flex flex-col gap-2`,children:[d(DateRangePickerRelativeField,{label:`Dias até hoje`,value:o,onValueChange:e=>a(getRelativeDaysRange(e,`today`))}),d(DateRangePickerRelativeField,{label:`Dias até ontem`,value:s,onValueChange:e=>a(getRelativeDaysRange(e,`yesterday`))})]})]})}function DateRangePickerPreset({className:t,selected:n=!1,...r}){return d(`button`,{"data-slot":`date-range-picker-preset`,"data-selected":n,className:e(`flex h-8.5 w-full items-center border-l-3 border-border bg-transparent px-2 text-left text-sm text-foreground transition-colors outline-none`,`hover:border-primary hover:bg-primary-50 hover:text-primary-700 dark:hover:bg-primary-950 dark:hover:text-primary-300`,`focus-visible:border-primary focus-visible:ring-3 focus-visible:ring-ring/50`,`data-[selected=true]:border-primary data-[selected=true]:bg-primary-50 data-[selected=true]:text-primary-700 dark:data-[selected=true]:bg-primary-950 dark:data-[selected=true]:text-primary-300`,t),"aria-pressed":n,...r})}function DateRangePickerRelativeField({label:e,value:t,onValueChange:n}){let i=p.useId(),[a,o]=p.useState(()=>formatRelativeInputValue(t));return p.useEffect(()=>{o(formatRelativeInputValue(t))},[t]),f(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[d(r,{id:i,type:`number`,name:e,min:1,step:1,value:a,className:`h-7 w-9 rounded-md px-1 text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,"aria-label":e,onChange:e=>{let t=e.target.value;if(o(t),t===``)return;let r=parsePositiveInteger(t);r&&n(r)}}),d(`label`,{htmlFor:i,children:e})]})}function DateRangePickerCalendar({className:t,showOutsideDays:r=!1,onMonthChange:i,...a}){let{draft:o,locale:s,month:c,setDraft:l,setMonth:u}=useDateRangePicker();return d(n,{mode:`range`,numberOfMonths:2,showOutsideDays:r,month:c,onMonthChange:e=>{u(e),i?.(e)},selected:o,onSelect:l,locale:s,className:e(`mx-auto bg-transparent p-0`,t),...a})}function DateRangePickerDateFields({className:t,...n}){let{draft:i,setDraft:a}=useDateRangePicker();return f(`div`,{"data-slot":`date-range-picker-date-fields`,className:e(`pb-2 border-b flex justify-between gap-2 flex-wrap flex-col sm:flex-row sm:items-center`,t),...n,children:[d(r,{type:`date`,value:formatInputDate(i?.from),className:`sm:w-max`,onChange:e=>{if(e.target.value===``){a(void 0);return}let t=parseInputDate(e.target.value);t&&a(normalizeDraft({from:t,to:i?.to}))}}),d(s,{className:`size-4 text-primary hidden sm:block`}),d(r,{type:`date`,value:formatInputDate(i?.to),className:`sm:w-max`,onChange:e=>{if(e.target.value===``){a(void 0);return}let t=parseInputDate(e.target.value);t&&a(normalizeDraft({from:i?.from,to:t}))}})]})}function DateRangePickerActions({className:t,children:n,...r}){return d(`div`,{"data-slot":`date-range-picker-actions`,className:e(`flex items-center gap-2 mt-auto`,t),...r,children:n??f(u,{children:[d(DateRangePickerReset,{}),d(DateRangePickerApply,{})]})})}function DateRangePickerApply({children:n=`Aplicar`,onClick:r,className:i,...a}){let{apply:o}=useDateRangePicker();return d(t,{size:`sm`,className:e(`flex-1`,i),onClick:e=>{r?.(e),e.defaultPrevented||o()},...a,children:n})}function DateRangePickerReset({children:n=`Resetar`,onClick:r,variant:i=`outline`,color:a=`zinc`,className:o,...s}){let{reset:c}=useDateRangePicker();return d(t,{size:`sm`,className:e(`flex-1`,o),variant:i,color:a,onClick:e=>{r?.(e),e.defaultPrevented||c()},...s,children:n})}function useDateRangePicker(){let e=p.useContext(m);if(!e)throw Error(`DateRangePicker components must be used within DateRangePicker.`);return e}function isDateRangePickerPresetsElement(e){return p.isValidElement(e)&&e.type===DateRangePickerPresets}function toDraft(e){return normalizeDraft(e??void 0)}function toValue(e){return normalizeDraft(e)??null}function getRangeMonth(e){return startOfDay(e?.from??e?.to??new Date)}function normalizeDraft(e){if(!(!e?.from&&!e?.to))return e.from&&e.to&&e.from>e.to?{from:startOfDay(e.to),to:startOfDay(e.from)}:{from:e.from?startOfDay(e.from):void 0,to:e.to?startOfDay(e.to):void 0}}function formatRange(e,t,n){return!e?.from&&!e?.to?n:e.from&&e.to?`${formatDisplayDate(e.from,t)} - ${formatDisplayDate(e.to,t)}`:formatDisplayDate(e.from??e.to,t)}function formatDisplayDate(e,t){return e?new Intl.DateTimeFormat(t?.code??`pt-BR`,{day:`2-digit`,month:`2-digit`,year:`numeric`}).format(e):``}function formatInputDate(e){return e?`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`:``}function parseInputDate(e){if(!e)return;let t=/^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/.exec(e);if(!t?.groups)return;let n=Number(t.groups.year),r=Number(t.groups.month),i=Number(t.groups.day),a=new Date(n,r-1,i);if(a.getFullYear()===n&&a.getMonth()===r-1&&a.getDate()===i)return a}function parsePositiveInteger(e){if(!e)return;let t=Number(e);if(!(!Number.isInteger(t)||t<1))return t}function formatRelativeInputValue(e){return e?String(e):``}function getRelativeDaysRange(e,t){let n=startOfDay(new Date),r=t===`today`?addDays(n,-1):addDays(n,-2);return{from:addDays(r,-e+1),to:r}}function getRelativeDaysValue(e,t){if(!e?.from||!e.to)return;let n=startOfDay(new Date),r=t===`today`?addDays(n,-1):addDays(n,-2);if(!isSameDay(e.to,r))return;let i=differenceInCalendarDays(r,startOfDay(e.from))+1;return i>0?i:void 0}function isSameRange(e,t){return isSameDay(e?.from,t?.from)&&isSameDay(e?.to,t?.to)}function isSameDay(e,t){return!e||!t?e===t:e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function startOfDay(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function startOfWeek(e){let t=startOfDay(e);return addDays(t,-t.getDay())}function startOfMonth(e){return new Date(e.getFullYear(),e.getMonth(),1)}function endOfMonth(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function differenceInCalendarDays(e,t){return Math.round((startOfDay(e).getTime()-startOfDay(t).getTime())/(1440*60*1e3))}function addDays(e,t){let n=startOfDay(e);return n.setDate(n.getDate()+t),n}export{DateRangePicker,DateRangePickerActions,DateRangePickerApply,DateRangePickerCalendar,DateRangePickerContent,DateRangePickerDateFields,DateRangePickerPreset,DateRangePickerPresets,DateRangePickerReset,DateRangePickerTrigger,DateRangePickerValue};
2
- //# sourceMappingURL=date-range-picker.js.map
1
+ import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"../date-range-picker-CJVpTZdT.js";export{l as DateRangePicker,a as DateRangePickerActions,s as DateRangePickerApply,r as DateRangePickerCalendar,e as DateRangePickerContent,o as DateRangePickerDateFields,c as DateRangePickerPreset,t as DateRangePickerPresets,i as DateRangePickerReset,u as DateRangePickerTrigger,n as DateRangePickerValue};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,d as t,i as n,t as r,u as i}from"../date-range-picker-CJVpTZdT.js";import{a,n as o,r as s}from"../react.esm-BkhVXJ8s.js";import{jsx as c,jsxs as l}from"react/jsx-runtime";function startOfDay(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function addDays(e,t){let n=startOfDay(e);return n.setDate(n.getDate()+t),n}function isoDate(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function formatPtBr(e){return new Intl.DateTimeFormat(`pt-BR`,{day:`2-digit`,month:`2-digit`,year:`numeric`}).format(e)}function getTriggerValueText(e){return e.querySelector(`[data-slot="date-range-picker-value"]`)?.textContent}function openPicker(e){let t=e.querySelector(`button`);o.click(t)}describe(`DateRangePicker`,()=>{it(`shows the default placeholder on the trigger when no range is selected`,()=>{let{container:e}=s(c(r,{}));expect(getTriggerValueText(e)).toBe(`Selecione um período`)}),it(`shows a custom placeholder on the trigger when provided`,()=>{let{container:e}=s(c(r,{placeholder:`Escolha o período`}));expect(getTriggerValueText(e)).toBe(`Escolha o período`)}),it(`opens the popover content when the trigger is clicked`,async()=>{let{container:e}=s(c(r,{}));expect(a.queryByRole(`grid`)).toBeNull(),openPicker(e),expect(await a.findAllByRole(`grid`)).toHaveLength(2),expect(a.getByRole(`button`,{name:`Aplicar`})).not.toBeNull(),expect(a.getByRole(`button`,{name:`Resetar`})).not.toBeNull()}),it(`selects a start and end date from the calendar and commits the range on apply`,async()=>{let e=vi.fn(),t=vi.fn(),{container:n}=s(c(r,{onValueChange:e,onApply:t}));openPicker(n),await a.findAllByRole(`grid`);let i=startOfDay(new Date),l=addDays(i,2),u=document.querySelector(`[data-day="${isoDate(i)}"] button`);expect(u).not.toBeNull(),o.click(u);let d=document.querySelector(`[data-day="${isoDate(l)}"] button`);expect(d).not.toBeNull(),o.click(d),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:i,to:l}),expect(t).toHaveBeenCalledWith({from:i,to:l}),expect(a.queryByRole(`grid`)).toBeNull(),expect(getTriggerValueText(n)).toBe(`${formatPtBr(i)} - ${formatPtBr(l)}`)}),it(`applies a preset range when a preset option is clicked`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=startOfDay(new Date),i=addDays(n,-7);o.click(a.getByRole(`button`,{name:`Últimos 7 dias`})),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:i,to:n}),expect(getTriggerValueText(t)).toBe(`${formatPtBr(i)} - ${formatPtBr(n)}`)}),it(`does not open the popover and stays inert when the trigger is disabled`,()=>{let e=vi.fn(),{container:t}=s(c(r,{onOpenChange:e,children:c(i,{disabled:!0})})),n=t.querySelector(`button`);expect(n.disabled).toBe(!0),o.click(n),expect(e).not.toHaveBeenCalled(),expect(a.queryByRole(`grid`)).toBeNull()}),it(`reflects a controlled value prop in the trigger label`,()=>{let e={from:new Date(2024,0,5),to:new Date(2024,0,20)},{container:t}=s(c(r,{value:e,onValueChange:vi.fn()}));expect(getTriggerValueText(t)).toBe(`${formatPtBr(e.from)} - ${formatPtBr(e.to)}`)}),it(`formats the controlled value using the provided locale`,()=>{let e={from:new Date(2024,0,5),to:new Date(2024,0,20)},{container:t}=s(c(r,{value:e,onValueChange:vi.fn(),locale:{code:`en-US`}})),n=new Intl.DateTimeFormat(`en-US`,{day:`2-digit`,month:`2-digit`,year:`numeric`});expect(getTriggerValueText(t)).toBe(`${n.format(e.from)} - ${n.format(e.to)}`)}),it(`resets the draft and commits a null value when reset is clicked`,async()=>{let e=vi.fn(),t=vi.fn(),{container:n}=s(c(r,{value:{from:new Date(2024,0,5),to:new Date(2024,0,20)},onValueChange:e,onReset:t}));openPicker(n),await a.findAllByRole(`grid`),o.click(a.getByRole(`button`,{name:`Resetar`})),expect(e).toHaveBeenCalledWith(null),expect(t).toHaveBeenCalledTimes(1),expect(a.queryByRole(`grid`)).toBeNull()}),it(`keeps the popover open when open is controlled and still notifies onOpenChange`,async()=>{let e=vi.fn();s(c(r,{open:!0,onOpenChange:e})),expect(await a.findAllByRole(`grid`)).toHaveLength(2),o.click(a.getByRole(`button`,{name:`Resetar`})),expect(e).toHaveBeenCalledWith(!1),expect(a.getAllByRole(`grid`)).toHaveLength(2)}),describe(`useDateRangePicker guard`,()=>{it(`throws when a subcomponent renders outside DateRangePicker`,()=>{expect(()=>s(c(t,{}))).toThrow(`DateRangePicker components must be used within DateRangePicker.`)})}),describe(`DateRangePickerTrigger asChild`,()=>{it(`renders the supplied child in place of the default markup, and it still opens the popover`,async()=>{let{container:t}=s(l(r,{children:[c(i,{asChild:!0,children:c(`button`,{type:`button`,children:`Abrir período`})}),c(e,{children:c(n,{})})]}));expect(t.querySelector(`[data-slot="date-range-picker-value"]`)).toBeNull(),o.click(a.getByRole(`button`,{name:`Abrir período`})),expect(await a.findAllByRole(`grid`)).toHaveLength(2)})}),describe(`DateRangePickerDateFields`,()=>{function getDateInputs(){return document.querySelectorAll(`input[type="date"]`)}it(`commits a range and shows a single formatted date when only the from field is filled`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=new Date(2024,0,10),[i]=getDateInputs();o.change(i,{target:{value:isoDate(n)}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:n,to:void 0}),expect(getTriggerValueText(t)).toBe(formatPtBr(n))}),it(`commits a range and shows a single formatted date when only the to field is filled`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=new Date(2024,0,10),[,i]=getDateInputs();o.change(i,{target:{value:isoDate(n)}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:void 0,to:n}),expect(getTriggerValueText(t)).toBe(formatPtBr(n))}),it(`clears the draft when a filled field is emptied`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let[n]=getDateInputs();o.change(n,{target:{value:isoDate(new Date(2024,0,10))}}),o.change(n,{target:{value:``}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith(null)}),it(`swaps from/to when a to-date earlier than the existing from-date is entered`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=new Date(2024,0,5),i=new Date(2024,0,20),[l,u]=getDateInputs();o.change(l,{target:{value:isoDate(i)}}),o.change(u,{target:{value:isoDate(n)}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:n,to:i})}),it(`swaps from/to when a from-date later than the existing to-date is entered`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=new Date(2024,0,5),i=new Date(2024,0,20),[l,u]=getDateInputs();o.change(u,{target:{value:isoDate(n)}}),o.change(l,{target:{value:isoDate(i)}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:n,to:i})})}),describe(`DateRangePickerPresets relative fields`,()=>{it(`commits a range ending yesterday when a day-count is entered into "Dias até hoje"`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=addDays(startOfDay(new Date),-1);o.change(a.getByLabelText(`Dias até hoje`),{target:{value:`7`}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith({from:addDays(n,-6),to:n})}),it(`derives its displayed value from the draft and clears itself once the draft no longer matches`,async()=>{let{container:e}=s(c(r,{onValueChange:vi.fn()}));openPicker(e),await a.findAllByRole(`grid`);let t=a.getByLabelText(`Dias até hoje`);o.change(t,{target:{value:`7`}}),expect(t.value).toBe(`7`),o.click(a.getByRole(`button`,{name:`Últimos 30 dias`})),expect(t.value).toBe(``)}),it(`ignores non-positive or non-numeric input without changing the draft`,async()=>{let e=vi.fn(),{container:t}=s(c(r,{onValueChange:e}));openPicker(t),await a.findAllByRole(`grid`);let n=a.getByLabelText(`Dias até hoje`);o.change(n,{target:{value:`0`}}),o.change(n,{target:{value:`abc`}}),o.click(a.getByRole(`button`,{name:`Aplicar`})),expect(e).toHaveBeenCalledWith(null)})}),describe(`DateRangePickerCalendar`,()=>{it(`fires onMonthChange and advances the shared month when navigating to the next month`,async()=>{let t=vi.fn(),{container:u}=s(l(r,{children:[c(i,{}),c(e,{children:c(n,{onMonthChange:t})})]}));openPicker(u),await a.findAllByRole(`grid`),o.click(a.getByRole(`button`,{name:`Go to the Next Month`})),expect(t).toHaveBeenCalledTimes(1),expect(t).toHaveBeenCalledWith(expect.any(Date))})})});
2
+ //# sourceMappingURL=date-range-picker.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.spec.js","names":[],"sources":["../../src/components/date-range-picker.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n type DateRange,\n DateRangePicker,\n DateRangePickerCalendar,\n DateRangePickerContent,\n DateRangePickerTrigger,\n DateRangePickerValue\n} from './date-range-picker'\n\nfunction startOfDay(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction addDays(date: Date, amount: number) {\n const next = startOfDay(date)\n next.setDate(next.getDate() + amount)\n return next\n}\n\nfunction isoDate(date: Date) {\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\nfunction formatPtBr(date: Date) {\n return new Intl.DateTimeFormat('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' }).format(date)\n}\n\nfunction getTriggerValueText(container: HTMLElement) {\n return container.querySelector('[data-slot=\"date-range-picker-value\"]')?.textContent\n}\n\nfunction openPicker(container: HTMLElement) {\n const trigger = container.querySelector('button') as HTMLButtonElement\n fireEvent.click(trigger)\n}\n\ndescribe('DateRangePicker', () => {\n it('shows the default placeholder on the trigger when no range is selected', () => {\n const { container } = render(<DateRangePicker />)\n\n expect(getTriggerValueText(container)).toBe('Selecione um período')\n })\n\n it('shows a custom placeholder on the trigger when provided', () => {\n const { container } = render(<DateRangePicker placeholder=\"Escolha o período\" />)\n\n expect(getTriggerValueText(container)).toBe('Escolha o período')\n })\n\n it('opens the popover content when the trigger is clicked', async () => {\n const { container } = render(<DateRangePicker />)\n\n expect(screen.queryByRole('grid')).toBeNull()\n\n openPicker(container)\n\n expect(await screen.findAllByRole('grid')).toHaveLength(2)\n expect(screen.getByRole('button', { name: 'Aplicar' })).not.toBeNull()\n expect(screen.getByRole('button', { name: 'Resetar' })).not.toBeNull()\n })\n\n it('selects a start and end date from the calendar and commits the range on apply', async () => {\n const onValueChange = vi.fn()\n const onApply = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} onApply={onApply} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const start = startOfDay(new Date())\n const end = addDays(start, 2)\n\n const startDayButton = document.querySelector(`[data-day=\"${isoDate(start)}\"] button`)\n expect(startDayButton).not.toBeNull()\n\n fireEvent.click(startDayButton as HTMLElement)\n\n // react-day-picker remounts day cells on every selection change (Calendar\n // re-creates its DayButton component factory each render), so the end-day\n // button must be re-queried after the first click rather than reused.\n const endDayButton = document.querySelector(`[data-day=\"${isoDate(end)}\"] button`)\n expect(endDayButton).not.toBeNull()\n\n fireEvent.click(endDayButton as HTMLElement)\n\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from: start, to: end })\n expect(onApply).toHaveBeenCalledWith({ from: start, to: end })\n\n expect(screen.queryByRole('grid')).toBeNull()\n expect(getTriggerValueText(container)).toBe(`${formatPtBr(start)} - ${formatPtBr(end)}`)\n })\n\n it('applies a preset range when a preset option is clicked', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const today = startOfDay(new Date())\n const expectedFrom = addDays(today, -7)\n\n fireEvent.click(screen.getByRole('button', { name: 'Últimos 7 dias' }))\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from: expectedFrom, to: today })\n expect(getTriggerValueText(container)).toBe(`${formatPtBr(expectedFrom)} - ${formatPtBr(today)}`)\n })\n\n it('does not open the popover and stays inert when the trigger is disabled', () => {\n const onOpenChange = vi.fn()\n const { container } = render(\n <DateRangePicker onOpenChange={onOpenChange}>\n <DateRangePickerTrigger disabled />\n </DateRangePicker>\n )\n\n const trigger = container.querySelector('button') as HTMLButtonElement\n expect(trigger.disabled).toBe(true)\n\n fireEvent.click(trigger)\n\n expect(onOpenChange).not.toHaveBeenCalled()\n expect(screen.queryByRole('grid')).toBeNull()\n })\n\n it('reflects a controlled value prop in the trigger label', () => {\n const value: DateRange = { from: new Date(2024, 0, 5), to: new Date(2024, 0, 20) }\n const { container } = render(<DateRangePicker value={value} onValueChange={vi.fn()} />)\n\n expect(getTriggerValueText(container)).toBe(`${formatPtBr(value.from as Date)} - ${formatPtBr(value.to as Date)}`)\n })\n\n it('formats the controlled value using the provided locale', () => {\n const value: DateRange = { from: new Date(2024, 0, 5), to: new Date(2024, 0, 20) }\n const { container } = render(<DateRangePicker value={value} onValueChange={vi.fn()} locale={{ code: 'en-US' }} />)\n\n const expected = new Intl.DateTimeFormat('en-US', { day: '2-digit', month: '2-digit', year: 'numeric' })\n expect(getTriggerValueText(container)).toBe(\n `${expected.format(value.from as Date)} - ${expected.format(value.to as Date)}`\n )\n })\n\n it('resets the draft and commits a null value when reset is clicked', async () => {\n const onValueChange = vi.fn()\n const onReset = vi.fn()\n const value: DateRange = { from: new Date(2024, 0, 5), to: new Date(2024, 0, 20) }\n const { container } = render(<DateRangePicker value={value} onValueChange={onValueChange} onReset={onReset} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n fireEvent.click(screen.getByRole('button', { name: 'Resetar' }))\n\n expect(onValueChange).toHaveBeenCalledWith(null)\n expect(onReset).toHaveBeenCalledTimes(1)\n expect(screen.queryByRole('grid')).toBeNull()\n })\n\n it('keeps the popover open when open is controlled and still notifies onOpenChange', async () => {\n const onOpenChange = vi.fn()\n render(<DateRangePicker open onOpenChange={onOpenChange} />)\n\n expect(await screen.findAllByRole('grid')).toHaveLength(2)\n\n fireEvent.click(screen.getByRole('button', { name: 'Resetar' }))\n\n expect(onOpenChange).toHaveBeenCalledWith(false)\n expect(screen.getAllByRole('grid')).toHaveLength(2)\n })\n\n describe('useDateRangePicker guard', () => {\n it('throws when a subcomponent renders outside DateRangePicker', () => {\n expect(() => render(<DateRangePickerValue />)).toThrow(\n 'DateRangePicker components must be used within DateRangePicker.'\n )\n })\n })\n\n describe('DateRangePickerTrigger asChild', () => {\n it('renders the supplied child in place of the default markup, and it still opens the popover', async () => {\n const { container } = render(\n <DateRangePicker>\n <DateRangePickerTrigger asChild>\n <button type=\"button\">Abrir período</button>\n </DateRangePickerTrigger>\n <DateRangePickerContent>\n <DateRangePickerCalendar />\n </DateRangePickerContent>\n </DateRangePicker>\n )\n\n expect(container.querySelector('[data-slot=\"date-range-picker-value\"]')).toBeNull()\n\n fireEvent.click(screen.getByRole('button', { name: 'Abrir período' }))\n\n expect(await screen.findAllByRole('grid')).toHaveLength(2)\n })\n })\n\n describe('DateRangePickerDateFields', () => {\n function getDateInputs() {\n return document.querySelectorAll('input[type=\"date\"]') as NodeListOf<HTMLInputElement>\n }\n\n it('commits a range and shows a single formatted date when only the from field is filled', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const from = new Date(2024, 0, 10)\n const [fromInput] = getDateInputs()\n fireEvent.change(fromInput!, { target: { value: isoDate(from) } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from, to: undefined })\n expect(getTriggerValueText(container)).toBe(formatPtBr(from))\n })\n\n it('commits a range and shows a single formatted date when only the to field is filled', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const to = new Date(2024, 0, 10)\n const [, toInput] = getDateInputs()\n fireEvent.change(toInput!, { target: { value: isoDate(to) } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from: undefined, to })\n expect(getTriggerValueText(container)).toBe(formatPtBr(to))\n })\n\n it('clears the draft when a filled field is emptied', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const [fromInput] = getDateInputs()\n fireEvent.change(fromInput!, { target: { value: isoDate(new Date(2024, 0, 10)) } })\n fireEvent.change(fromInput!, { target: { value: '' } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith(null)\n })\n\n it('swaps from/to when a to-date earlier than the existing from-date is entered', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const earlier = new Date(2024, 0, 5)\n const later = new Date(2024, 0, 20)\n const [fromInput, toInput] = getDateInputs()\n\n fireEvent.change(fromInput!, { target: { value: isoDate(later) } })\n fireEvent.change(toInput!, { target: { value: isoDate(earlier) } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from: earlier, to: later })\n })\n\n it('swaps from/to when a from-date later than the existing to-date is entered', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const earlier = new Date(2024, 0, 5)\n const later = new Date(2024, 0, 20)\n const [fromInput, toInput] = getDateInputs()\n\n fireEvent.change(toInput!, { target: { value: isoDate(earlier) } })\n fireEvent.change(fromInput!, { target: { value: isoDate(later) } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from: earlier, to: later })\n })\n })\n\n describe('DateRangePickerPresets relative fields', () => {\n it('commits a range ending yesterday when a day-count is entered into \"Dias até hoje\"', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const yesterday = addDays(startOfDay(new Date()), -1)\n fireEvent.change(screen.getByLabelText('Dias até hoje'), { target: { value: '7' } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith({ from: addDays(yesterday, -6), to: yesterday })\n })\n\n it('derives its displayed value from the draft and clears itself once the draft no longer matches', async () => {\n const { container } = render(<DateRangePicker onValueChange={vi.fn()} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const todayField = screen.getByLabelText('Dias até hoje') as HTMLInputElement\n\n fireEvent.change(todayField, { target: { value: '7' } })\n expect(todayField.value).toBe('7')\n\n fireEvent.click(screen.getByRole('button', { name: 'Últimos 30 dias' }))\n expect(todayField.value).toBe('')\n })\n\n it('ignores non-positive or non-numeric input without changing the draft', async () => {\n const onValueChange = vi.fn()\n const { container } = render(<DateRangePicker onValueChange={onValueChange} />)\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n const todayField = screen.getByLabelText('Dias até hoje')\n fireEvent.change(todayField, { target: { value: '0' } })\n fireEvent.change(todayField, { target: { value: 'abc' } })\n fireEvent.click(screen.getByRole('button', { name: 'Aplicar' }))\n\n expect(onValueChange).toHaveBeenCalledWith(null)\n })\n })\n\n describe('DateRangePickerCalendar', () => {\n it('fires onMonthChange and advances the shared month when navigating to the next month', async () => {\n const onMonthChange = vi.fn()\n const { container } = render(\n <DateRangePicker>\n <DateRangePickerTrigger />\n <DateRangePickerContent>\n <DateRangePickerCalendar onMonthChange={onMonthChange} />\n </DateRangePickerContent>\n </DateRangePicker>\n )\n\n openPicker(container)\n await screen.findAllByRole('grid')\n\n fireEvent.click(screen.getByRole('button', { name: 'Go to the Next Month' }))\n\n expect(onMonthChange).toHaveBeenCalledTimes(1)\n expect(onMonthChange).toHaveBeenCalledWith(expect.any(Date))\n })\n })\n})\n"],"mappings":"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"}
@@ -1,42 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { Dialog as Dialog$1 } from "radix-ui";
3
- import { VariantProps } from "class-variance-authority";
4
- import * as React from "react";
5
- //#region src/components/dialog.d.ts
6
- declare const dialogContentVariants: (props?: ({
7
- size?: "2xl" | "3xl" | "full" | "lg" | "md" | "sm" | "xl" | null | undefined;
8
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
- type DialogSize = NonNullable<VariantProps<typeof dialogContentVariants>['size']>;
10
- type DialogProps = React.ComponentProps<typeof Dialog$1.Root> & {
11
- size?: DialogSize;
12
- dismissible?: boolean;
13
- };
14
- type DialogTriggerProps = React.ComponentProps<typeof Dialog$1.Trigger>;
15
- type DialogPortalProps = React.ComponentProps<typeof Dialog$1.Portal>;
16
- type DialogCloseProps = React.ComponentProps<typeof Dialog$1.Close>;
17
- type DialogOverlayProps = React.ComponentProps<typeof Dialog$1.Overlay>;
18
- type DialogContentProps = React.ComponentProps<typeof Dialog$1.Content> & {
19
- showCloseButton?: boolean;
20
- overlayRef?: React.Ref<HTMLDivElement>;
21
- };
22
- type DialogHeaderProps = React.ComponentProps<'div'>;
23
- type DialogBodyProps = React.ComponentProps<'div'>;
24
- type DialogFooterProps = React.ComponentProps<'div'> & {
25
- showCloseButton?: boolean;
26
- };
27
- type DialogTitleProps = React.ComponentProps<typeof Dialog$1.Title>;
28
- type DialogDescriptionProps = React.ComponentProps<typeof Dialog$1.Description>;
29
- declare function Dialog({ size, dismissible, ...props }: DialogProps): React.JSX.Element;
30
- declare function DialogTrigger({ ...props }: React.ComponentProps<typeof Dialog$1.Trigger>): React.JSX.Element;
31
- declare function DialogPortal({ ...props }: DialogPortalProps): React.JSX.Element;
32
- declare function DialogClose({ ...props }: React.ComponentProps<typeof Dialog$1.Close>): React.JSX.Element;
33
- declare function DialogOverlay({ className, ...props }: DialogOverlayProps): React.JSX.Element;
34
- declare function DialogContent({ className, children, showCloseButton, overlayRef, ...props }: DialogContentProps): React.JSX.Element;
35
- declare function DialogHeader({ className, ...props }: DialogHeaderProps): React.JSX.Element;
36
- declare function DialogBody({ className, ...props }: DialogBodyProps): React.JSX.Element;
37
- declare function DialogFooter({ className, showCloseButton, children, ...props }: DialogFooterProps): React.JSX.Element;
38
- declare function DialogTitle({ className, ...props }: DialogTitleProps): React.JSX.Element;
39
- declare function DialogDescription({ className, ...props }: DialogDescriptionProps): React.JSX.Element;
40
- //#endregion
41
- export { Dialog, DialogBody, DialogBodyProps, DialogClose, DialogCloseProps, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogOverlay, DialogOverlayProps, DialogPortal, DialogPortalProps, DialogProps, DialogTitle, DialogTitleProps, DialogTrigger, DialogTriggerProps };
42
- //# sourceMappingURL=dialog.d.ts.map
1
+ import { S as DialogTriggerProps, _ as DialogPortalProps, a as DialogCloseProps, b as DialogTitleProps, c as DialogDescription, d as DialogFooterProps, f as DialogHeader, g as DialogPortal, h as DialogOverlayProps, i as DialogClose, l as DialogDescriptionProps, m as DialogOverlay, n as DialogBody, o as DialogContent, p as DialogHeaderProps, r as DialogBodyProps, s as DialogContentProps, t as Dialog, u as DialogFooter, v as DialogProps, x as DialogTrigger, y as DialogTitle } from "../dialog-Ej7pnact.js";
2
+ export { Dialog, DialogBody, DialogBodyProps, DialogClose, DialogCloseProps, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogOverlay, DialogOverlayProps, DialogPortal, DialogPortalProps, DialogProps, DialogTitle, DialogTitleProps, DialogTrigger, DialogTriggerProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{IconX as n}from"@tabler/icons-react";import{Dialog as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{cva as o}from"class-variance-authority";import*as s from"react";const c=o([`bg-background ring-foreground/10 fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none`,`flex flex-col gap-4 rounded-xl p-4 text-sm ring-1 duration-100`,`max-w-[calc(100%-2rem)] max-h-[calc(100dvh-2rem)] overflow-hidden`,`data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95`],{variants:{size:{sm:`sm:max-w-sm`,md:`sm:max-w-md`,lg:`sm:max-w-lg`,xl:`sm:max-w-xl`,"2xl":`sm:max-w-2xl`,"3xl":`sm:max-w-3xl`,full:`w-screen h-screen max-w-none max-h-screen rounded-none sm:max-w-none`}},defaultVariants:{size:`md`}}),l=s.createContext({size:`sm`,dismissible:!0});function Dialog({size:e=`sm`,dismissible:t=!0,...n}){let a=s.useMemo(()=>({size:e,dismissible:t}),[e,t]);return i(l.Provider,{value:a,children:i(r.Root,{"data-slot":`dialog`,...n})})}function DialogTrigger({...e}){return i(r.Trigger,{"data-slot":`dialog-trigger`,...e})}function DialogPortal({...e}){return i(r.Portal,{"data-slot":`dialog-portal`,...e})}function DialogClose({...e}){return i(r.Close,{"data-slot":`dialog-close`,...e})}function DialogOverlay({className:t,...n}){return i(r.Overlay,{"data-slot":`dialog-overlay`,className:e(`bg-black/10 fixed inset-0 isolate z-50`,`data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0`,`duration-100 supports-backdrop-filter:backdrop-blur-xs`,t),...n})}function DialogContent({className:o,children:u,showCloseButton:d=!0,overlayRef:f,...p}){let{size:m,dismissible:h}=s.useContext(l);return a(DialogPortal,{children:[i(DialogOverlay,{ref:f}),a(r.Content,{"data-slot":`dialog-content`,className:e(c({size:m}),o),...p,onEscapeKeyDown:e=>{h||e.preventDefault(),p.onEscapeKeyDown?.(e)},onInteractOutside:e=>{h||e.preventDefault(),p.onInteractOutside?.(e)},children:[u,d&&i(r.Close,{"data-slot":`dialog-close`,asChild:!0,children:a(t,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[i(n,{}),i(`span`,{className:`sr-only`,children:`Close`})]})})]})]})}function DialogHeader({className:t,...n}){return i(`div`,{"data-slot":`dialog-header`,className:e(`gap-2 flex flex-col shrink-0`,t),...n})}function DialogBody({className:t,...n}){return i(`div`,{"data-slot":`dialog-body`,className:e(`-mx-4 px-4 flex-1 overflow-y-auto`,t),...n})}function DialogFooter({className:n,showCloseButton:o=!1,children:s,...c}){return a(`div`,{"data-slot":`dialog-footer`,className:e(`bg-muted/50 -mx-4 -mb-4 rounded-b-xl border-t p-4 shrink-0`,`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,n),...c,children:[s,o&&i(r.Close,{asChild:!0,children:i(t,{variant:`outline`,children:`Close`})})]})}function DialogTitle({className:t,...n}){return i(r.Title,{"data-slot":`dialog-title`,className:e(`text-base leading-none font-medium`,t),...n})}function DialogDescription({className:t,...n}){return i(r.Description,{"data-slot":`dialog-description`,className:e(`text-muted-foreground text-sm`,`*:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,t),...n})}export{Dialog,DialogBody,DialogClose,DialogContent,DialogDescription,DialogFooter,DialogHeader,DialogOverlay,DialogPortal,DialogTitle,DialogTrigger};
2
- //# sourceMappingURL=dialog.js.map
1
+ import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"../dialog-B7I4Ky1i.js";export{l as Dialog,a as DialogBody,s as DialogClose,r as DialogContent,e as DialogDescription,o as DialogFooter,c as DialogHeader,t as DialogOverlay,i as DialogPortal,u as DialogTitle,n as DialogTrigger};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../button-oI3hbOgp.js";import{a as t,d as n,i as r,n as i,o as a,r as o,s,t as c,u as l}from"../dialog-B7I4Ky1i.js";import{a as u,n as d,o as f,r as p}from"../react.esm-BkhVXJ8s.js";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{createRef as g}from"react";describe(`Dialog`,()=>{it(`is closed until the trigger is clicked, then renders its content in a portal`,async()=>{p(h(c,{children:[m(n,{children:`Open settings`}),m(r,{children:h(s,{children:[m(l,{children:`Settings`}),m(t,{children:`Manage your preferences.`})]})})]})),expect(u.queryByRole(`dialog`)).toBeNull(),d.click(u.getByRole(`button`,{name:`Open settings`})),expect(await u.findByRole(`dialog`)).not.toBeNull(),expect(u.getByText(`Settings`)).not.toBeNull(),expect(u.getByText(`Manage your preferences.`)).not.toBeNull()}),it(`renders a close button by default and closes the dialog when it is clicked`,async()=>{p(h(c,{children:[m(n,{children:`Open settings`}),m(r,{children:m(l,{children:`Settings`})})]})),d.click(u.getByRole(`button`,{name:`Open settings`})),await u.findByRole(`dialog`),d.click(u.getByRole(`button`,{name:`Close`})),await f(()=>expect(u.queryByRole(`dialog`)).toBeNull())}),it(`hides the close button when showCloseButton is false`,async()=>{p(h(c,{children:[m(n,{children:`Open`}),m(r,{showCloseButton:!1,children:m(l,{children:`Settings`})})]})),d.click(u.getByRole(`button`,{name:`Open`})),await u.findByRole(`dialog`),expect(u.queryByRole(`button`,{name:`Close`})).toBeNull()}),it(`defaults to size "sm" and applies size-specific classes controlled by the parent Dialog`,async()=>{let{unmount:e}=p(m(c,{defaultOpen:!0,children:m(r,{children:m(l,{children:`Settings`})})})),t=await u.findByRole(`dialog`);expect(t.className).toContain(`sm:max-w-sm`),e(),p(m(c,{defaultOpen:!0,size:`full`,children:m(r,{children:m(l,{children:`Settings`})})})),t=await u.findByRole(`dialog`),expect(t.className).toContain(`w-screen`)}),it(`closes on Escape by default (dismissible)`,async()=>{p(m(c,{defaultOpen:!0,children:m(r,{children:m(l,{children:`Settings`})})})),await u.findByRole(`dialog`),d.keyDown(document,{key:`Escape`,code:`Escape`}),await f(()=>expect(u.queryByRole(`dialog`)).toBeNull())}),it(`prevents closing on Escape when dismissible is false`,async()=>{p(m(c,{defaultOpen:!0,dismissible:!1,children:m(r,{children:m(l,{children:`Settings`})})})),await u.findByRole(`dialog`),d.keyDown(document,{key:`Escape`,code:`Escape`}),expect(u.queryByRole(`dialog`)).not.toBeNull()}),describe(`DialogBody and DialogFooter`,()=>{it(`renders DialogBody content and closes via an extra Close action in DialogFooter`,async()=>{p(m(c,{defaultOpen:!0,children:h(r,{showCloseButton:!1,children:[m(l,{children:`Settings`}),m(i,{children:`Body content`}),m(a,{showCloseButton:!0,children:m(e,{children:`Save`})})]})}));let t=await u.findByRole(`dialog`);expect(t.querySelector(`[data-slot="dialog-body"]`)?.textContent).toBe(`Body content`);let n=t.querySelector(`[data-slot="dialog-footer"]`);expect(n?.textContent).toContain(`Save`),d.click(u.getByRole(`button`,{name:`Close`})),await f(()=>expect(u.queryByRole(`dialog`)).toBeNull())})}),describe(`DialogClose`,()=>{it(`closes the dialog when an explicit DialogClose element is clicked`,async()=>{p(m(c,{defaultOpen:!0,children:h(r,{showCloseButton:!1,children:[m(l,{children:`Settings`}),m(o,{children:`Dismiss`})]})})),await u.findByRole(`dialog`),d.click(u.getByRole(`button`,{name:`Dismiss`})),await f(()=>expect(u.queryByRole(`dialog`)).toBeNull())})}),it(`forwards overlayRef to the DialogOverlay element`,async()=>{let e=g();p(m(c,{defaultOpen:!0,children:m(r,{overlayRef:e,children:m(l,{children:`Settings`})})})),await u.findByRole(`dialog`),expect(e.current).not.toBeNull(),expect(e.current?.getAttribute(`data-slot`)).toBe(`dialog-overlay`)})});
2
+ //# sourceMappingURL=dialog.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.spec.js","names":["waitFor"],"sources":["../../src/components/dialog.spec.tsx"],"sourcesContent":["import { createRef } from 'react'\n\nimport { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport { Button } from './button'\nimport {\n Dialog,\n DialogBody,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger\n} from './dialog'\n\ndescribe('Dialog', () => {\n it('is closed until the trigger is clicked, then renders its content in a portal', async () => {\n render(\n <Dialog>\n <DialogTrigger>Open settings</DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Settings</DialogTitle>\n <DialogDescription>Manage your preferences.</DialogDescription>\n </DialogHeader>\n </DialogContent>\n </Dialog>\n )\n\n expect(screen.queryByRole('dialog')).toBeNull()\n\n fireEvent.click(screen.getByRole('button', { name: 'Open settings' }))\n\n expect(await screen.findByRole('dialog')).not.toBeNull()\n expect(screen.getByText('Settings')).not.toBeNull()\n expect(screen.getByText('Manage your preferences.')).not.toBeNull()\n })\n\n it('renders a close button by default and closes the dialog when it is clicked', async () => {\n render(\n <Dialog>\n <DialogTrigger>Open settings</DialogTrigger>\n <DialogContent>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n fireEvent.click(screen.getByRole('button', { name: 'Open settings' }))\n await screen.findByRole('dialog')\n\n fireEvent.click(screen.getByRole('button', { name: 'Close' }))\n\n await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull())\n })\n\n it('hides the close button when showCloseButton is false', async () => {\n render(\n <Dialog>\n <DialogTrigger>Open</DialogTrigger>\n <DialogContent showCloseButton={false}>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n fireEvent.click(screen.getByRole('button', { name: 'Open' }))\n await screen.findByRole('dialog')\n\n expect(screen.queryByRole('button', { name: 'Close' })).toBeNull()\n })\n\n it('defaults to size \"sm\" and applies size-specific classes controlled by the parent Dialog', async () => {\n const { unmount } = render(\n <Dialog defaultOpen>\n <DialogContent>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n let content = await screen.findByRole('dialog')\n expect(content.className).toContain('sm:max-w-sm')\n unmount()\n\n render(\n <Dialog defaultOpen size=\"full\">\n <DialogContent>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n content = await screen.findByRole('dialog')\n expect(content.className).toContain('w-screen')\n })\n\n it('closes on Escape by default (dismissible)', async () => {\n render(\n <Dialog defaultOpen>\n <DialogContent>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n await screen.findByRole('dialog')\n\n fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' })\n\n await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull())\n })\n\n it('prevents closing on Escape when dismissible is false', async () => {\n render(\n <Dialog defaultOpen dismissible={false}>\n <DialogContent>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n await screen.findByRole('dialog')\n\n fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' })\n\n expect(screen.queryByRole('dialog')).not.toBeNull()\n })\n\n describe('DialogBody and DialogFooter', () => {\n it('renders DialogBody content and closes via an extra Close action in DialogFooter', async () => {\n render(\n <Dialog defaultOpen>\n <DialogContent showCloseButton={false}>\n <DialogTitle>Settings</DialogTitle>\n <DialogBody>Body content</DialogBody>\n <DialogFooter showCloseButton>\n <Button>Save</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n\n const dialog = await screen.findByRole('dialog')\n expect(dialog.querySelector('[data-slot=\"dialog-body\"]')?.textContent).toBe('Body content')\n\n const footer = dialog.querySelector('[data-slot=\"dialog-footer\"]')\n expect(footer?.textContent).toContain('Save')\n\n fireEvent.click(screen.getByRole('button', { name: 'Close' }))\n await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull())\n })\n })\n\n describe('DialogClose', () => {\n it('closes the dialog when an explicit DialogClose element is clicked', async () => {\n render(\n <Dialog defaultOpen>\n <DialogContent showCloseButton={false}>\n <DialogTitle>Settings</DialogTitle>\n <DialogClose>Dismiss</DialogClose>\n </DialogContent>\n </Dialog>\n )\n\n await screen.findByRole('dialog')\n fireEvent.click(screen.getByRole('button', { name: 'Dismiss' }))\n\n await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull())\n })\n })\n\n it('forwards overlayRef to the DialogOverlay element', async () => {\n const overlayRef = createRef<HTMLDivElement>()\n\n render(\n <Dialog defaultOpen>\n <DialogContent overlayRef={overlayRef}>\n <DialogTitle>Settings</DialogTitle>\n </DialogContent>\n </Dialog>\n )\n\n await screen.findByRole('dialog')\n\n expect(overlayRef.current).not.toBeNull()\n expect(overlayRef.current?.getAttribute('data-slot')).toBe('dialog-overlay')\n })\n})\n"],"mappings":"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"}
@@ -1,13 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { PieChartProps } from "./pie-chart.js";
3
- import * as React from "react";
4
- //#region src/components/donut-chart.d.ts
5
- type DonutChartProps = PieChartProps & {
6
- thickness?: number;
7
- withTotal?: boolean;
8
- totalLabel?: React.ReactNode;
9
- };
10
- declare function DonutChart({ className, thickness, outerRadius, withTotal, totalLabel, data, ...props }: DonutChartProps): React.JSX.Element;
11
- //#endregion
12
- export { DonutChart, DonutChartProps };
13
- //# sourceMappingURL=donut-chart.d.ts.map
1
+ import { n as DonutChartProps, t as DonutChart } from "../donut-chart-BDJR8TXh.js";
2
+ export { DonutChart, DonutChartProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{PieChartBase as t}from"./pie-chart.js";import{jsx as n,jsxs as r}from"react/jsx-runtime";import*as i from"react";import{Label as a}from"recharts";function DonutChart({className:o,thickness:s=.35,outerRadius:c=`80%`,withTotal:l=!1,totalLabel:u=`Total`,data:d,...f}){let p=i.useMemo(()=>{let e=Math.min(Math.max(1-s,0),1);if(typeof c==`number`)return c*e;let t=/^(\d+(?:\.\d+)?)%$/.exec(c);return t?`${Number(t[1])*e}%`:c},[c,s]),m=i.useMemo(()=>d.reduce((e,t)=>e+t.value,0),[d]);return n(t,{dataSlot:`donut-chart`,className:e(o),data:d,outerRadius:c,innerRadius:p,centerSlot:l?n(a,{position:`center`,content:({viewBox:e})=>!e||!(`cx`in e)||!(`cy`in e)?null:r(`text`,{x:e.cx,y:e.cy,textAnchor:`middle`,dominantBaseline:`middle`,children:[n(`tspan`,{x:e.cx,y:e.cy,className:`fill-foreground font-medium text-2xl tabular-nums`,children:m.toLocaleString()}),n(`tspan`,{x:e.cx,y:(e.cy??0)+20,className:`fill-muted-foreground text-xs`,children:u})]})}):null,...f})}export{DonutChart};
2
- //# sourceMappingURL=donut-chart.js.map
1
+ import{t as e}from"../donut-chart-BHU4kDE6.js";export{e as DonutChart};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../donut-chart-BHU4kDE6.js";import{a as t,r as n}from"../react.esm-BkhVXJ8s.js";import{jsx as r}from"react/jsx-runtime";beforeAll(()=>{vi.stubGlobal(`ResizeObserver`,class{observe(){}unobserve(){}disconnect(){}}),Object.defineProperty(HTMLElement.prototype,"offsetWidth",{configurable:!0,value:500}),Object.defineProperty(HTMLElement.prototype,"offsetHeight",{configurable:!0,value:300}),HTMLElement.prototype.getBoundingClientRect=()=>({width:500,height:300,top:0,left:0,right:500,bottom:300,x:0,y:0,toJSON(){}})});const i=[{name:`chrome`,value:275},{name:`safari`,value:200},{name:`firefox`,value:187}];function sectorArcRadii(e){return[...(e.querySelector(`.recharts-sector`)?.getAttribute(`d`)??``).matchAll(/A\s*([\d.]+),/g)].map(e=>Number(e[1]))}describe(`DonutChart`,()=>{it(`renders with data-slot="donut-chart" on the chart wrapper`,()=>{let{container:t}=n(r(e,{data:i}));expect(t.querySelector(`[data-slot="donut-chart"]`)).not.toBeNull()}),it(`accepts a data array without throwing`,()=>{expect(()=>n(r(e,{data:i}))).not.toThrow()}),it(`renders one recharts pie sector per data entry`,()=>{let{container:t}=n(r(e,{data:i}));expect(t.querySelectorAll(`.recharts-pie-sector`).length).toBe(i.length)}),it(`carves out a hollow inner radius using the default thickness of 0.35`,()=>{let{container:t}=n(r(e,{data:i,outerRadius:100,animationDuration:0})),[a,o]=sectorArcRadii(t);expect(a).toBe(100),expect(o).toBeCloseTo(65)}),it.each([{thickness:0,expectedRatio:1},{thickness:.5,expectedRatio:.5},{thickness:.9,expectedRatio:.1}])(`derives innerRadius from a numeric outerRadius as outerRadius * (1 - thickness) (thickness=$thickness)`,({thickness:t,expectedRatio:a})=>{let{container:o}=n(r(e,{data:i,outerRadius:100,thickness:t,animationDuration:0})),[s,c]=sectorArcRadii(o);expect(s).toBe(100),expect(c).toBeCloseTo(100*a)}),it(`clamps a thickness below 0 to a ratio of 1 (fully hollow up to the outer radius)`,()=>{let{container:t}=n(r(e,{data:i,outerRadius:100,thickness:-1,animationDuration:0})),[a,o]=sectorArcRadii(t);expect(a).toBe(100),expect(o).toBeCloseTo(100)}),it.each([1,2])(`clamps a thickness of %d or more to a ratio of 0, collapsing the inner radius to a single arc`,t=>{let{container:a}=n(r(e,{data:i,outerRadius:100,thickness:t,animationDuration:0}));expect(sectorArcRadii(a)).toHaveLength(1)}),it(`derives a proportional innerRadius when outerRadius is a percentage string`,()=>{let{container:t}=n(r(e,{data:i,outerRadius:`50%`,thickness:.5,animationDuration:0})),[a,o]=sectorArcRadii(t);expect(o/a).toBeCloseTo(.5)}),it(`falls back to the raw outerRadius value when it does not match the percentage pattern`,()=>{expect(()=>n(r(e,{data:i,outerRadius:`fill`,animationDuration:0}))).not.toThrow()}),it(`renders a tooltip wrapper by default and omits it when withTooltip is false`,()=>{let{container:t}=n(r(e,{data:i}));expect(t.querySelectorAll(`.recharts-tooltip-wrapper`).length).toBe(1);let{container:a}=n(r(e,{data:i,withTooltip:!1}));expect(a.querySelectorAll(`.recharts-tooltip-wrapper`).length).toBe(0)}),it(`omits the legend by default and renders it when withLegend is true`,async()=>{let{container:a}=n(r(e,{data:i}));expect(a.querySelectorAll(`.recharts-legend-wrapper`).length).toBe(0);let{container:o}=n(r(e,{data:i,withLegend:!0}));expect(o.querySelectorAll(`.recharts-legend-wrapper`).length).toBe(1),expect((await t.findAllByText(`chrome`)).length).toBeGreaterThan(0)}),it(`omits slice labels by default and renders them when withLabels is true`,()=>{let{container:t}=n(r(e,{data:i,animationDuration:0}));expect(t.querySelectorAll(`.recharts-pie-label-text`).length).toBe(0);let{container:a}=n(r(e,{data:i,withLabels:!0,animationDuration:0}));expect(a.querySelectorAll(`.recharts-pie-label-text`).length).toBe(i.length)}),it(`does not throw when withTotal and a custom totalLabel are enabled`,()=>{expect(()=>n(r(e,{data:i,withTotal:!0,totalLabel:`Sum`}))).not.toThrow()})});
2
+ //# sourceMappingURL=donut-chart.spec.js.map