@uselets/ui 1.18.4 → 1.18.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (872) hide show
  1. package/README.md +1 -1
  2. package/dist/{chart-CVe5-EWS.d.ts → chart-B_6nC_ih.d.ts} +2 -2
  3. package/dist/cli/uselets.mjs.map +1 -1
  4. package/dist/components/accordion.d.ts +15 -2
  5. package/dist/components/accordion.js +2 -1
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/alert-dialog.d.ts +34 -2
  8. package/dist/components/alert-dialog.js +2 -1
  9. package/dist/components/alert-dialog.js.map +1 -0
  10. package/dist/components/alert.d.ts +18 -2
  11. package/dist/components/alert.js +2 -1
  12. package/dist/components/alert.js.map +1 -0
  13. package/dist/components/anchor.d.ts +15 -2
  14. package/dist/components/anchor.js +2 -1
  15. package/dist/components/anchor.js.map +1 -0
  16. package/dist/components/area-chart.d.ts +40 -2
  17. package/dist/components/area-chart.js +2 -1
  18. package/dist/components/area-chart.js.map +1 -0
  19. package/dist/components/avatar.d.ts +21 -2
  20. package/dist/components/avatar.js +2 -1
  21. package/dist/components/avatar.js.map +1 -0
  22. package/dist/components/badge.d.ts +16 -2
  23. package/dist/components/badge.js +2 -1
  24. package/dist/components/badge.js.map +1 -0
  25. package/dist/components/bar-chart.d.ts +42 -2
  26. package/dist/components/bar-chart.js +2 -1
  27. package/dist/components/bar-chart.js.map +1 -0
  28. package/dist/components/breadcrumb.d.ts +22 -2
  29. package/dist/components/breadcrumb.js +2 -1
  30. package/dist/components/breadcrumb.js.map +1 -0
  31. package/dist/components/button-group.d.ts +18 -2
  32. package/dist/components/button-group.js +2 -1
  33. package/dist/components/button-group.js.map +1 -0
  34. package/dist/components/button.d.ts +17 -2
  35. package/dist/components/button.js +2 -1
  36. package/dist/components/button.js.map +1 -0
  37. package/dist/components/calendar.d.ts +17 -2
  38. package/dist/components/calendar.js +2 -1
  39. package/dist/components/calendar.js.map +1 -0
  40. package/dist/components/card.d.ts +22 -2
  41. package/dist/components/card.js +2 -1
  42. package/dist/components/card.js.map +1 -0
  43. package/dist/components/carousel.d.ts +43 -2
  44. package/dist/components/carousel.js +2 -1
  45. package/dist/components/carousel.js.map +1 -0
  46. package/dist/components/center.d.ts +13 -2
  47. package/dist/components/center.js +2 -1
  48. package/dist/components/center.js.map +1 -0
  49. package/dist/components/chart.d.ts +1 -1
  50. package/dist/components/chart.js +8 -1
  51. package/dist/components/chart.js.map +1 -0
  52. package/dist/components/checkbox.d.ts +21 -2
  53. package/dist/components/checkbox.js +2 -1
  54. package/dist/components/checkbox.js.map +1 -0
  55. package/dist/components/code.d.ts +8 -2
  56. package/dist/components/code.js +2 -1
  57. package/dist/components/code.js.map +1 -0
  58. package/dist/components/collapsible.d.ts +12 -2
  59. package/dist/components/collapsible.js +2 -1
  60. package/dist/components/collapsible.js.map +1 -0
  61. package/dist/components/combobox.d.ts +51 -2
  62. package/dist/components/combobox.js +2 -1
  63. package/dist/components/combobox.js.map +1 -0
  64. package/dist/components/command.d.ts +31 -2
  65. package/dist/components/command.js +2 -1
  66. package/dist/components/command.js.map +1 -0
  67. package/dist/components/container.d.ts +12 -2
  68. package/dist/components/container.js +2 -1
  69. package/dist/components/container.js.map +1 -0
  70. package/dist/components/data-table.d.ts +1 -1
  71. package/dist/components/data-table.js +2 -1
  72. package/dist/components/data-table.js.map +1 -0
  73. package/dist/components/date-range-picker.d.ts +55 -3
  74. package/dist/components/date-range-picker.js +2 -1
  75. package/dist/components/date-range-picker.js.map +1 -0
  76. package/dist/components/dialog.d.ts +42 -2
  77. package/dist/components/dialog.js +2 -1
  78. package/dist/components/dialog.js.map +1 -0
  79. package/dist/components/donut-chart.d.ts +13 -2
  80. package/dist/components/donut-chart.js +2 -1
  81. package/dist/components/donut-chart.js.map +1 -0
  82. package/dist/components/drawer.d.ts +43 -2
  83. package/dist/components/drawer.js +2 -1
  84. package/dist/components/drawer.js.map +1 -0
  85. package/dist/components/dropdown-menu.d.ts +48 -2
  86. package/dist/components/dropdown-menu.js +2 -1
  87. package/dist/components/dropdown-menu.js.map +1 -0
  88. package/dist/components/dropzone.d.ts +102 -2
  89. package/dist/components/dropzone.js +2 -1
  90. package/dist/components/dropzone.js.map +1 -0
  91. package/dist/components/empty.d.ts +21 -2
  92. package/dist/components/empty.js +2 -1
  93. package/dist/components/empty.js.map +1 -0
  94. package/dist/components/field.d.ts +39 -2
  95. package/dist/components/field.js +2 -1
  96. package/dist/components/field.js.map +1 -0
  97. package/dist/components/flex.d.ts +16 -2
  98. package/dist/components/flex.js +2 -1
  99. package/dist/components/flex.js.map +1 -0
  100. package/dist/components/grid.d.ts +20 -2
  101. package/dist/components/grid.js +2 -1
  102. package/dist/components/grid.js.map +1 -0
  103. package/dist/components/group.d.ts +15 -2
  104. package/dist/components/group.js +2 -1
  105. package/dist/components/group.js.map +1 -0
  106. package/dist/components/heading.d.ts +14 -2
  107. package/dist/components/heading.js +2 -1
  108. package/dist/components/heading.js.map +1 -0
  109. package/dist/components/hover-card.d.ts +13 -2
  110. package/dist/components/hover-card.js +2 -1
  111. package/dist/components/hover-card.js.map +1 -0
  112. package/dist/components/input-group.d.ts +26 -2
  113. package/dist/components/input-group.js +2 -1
  114. package/dist/components/input-group.js.map +1 -0
  115. package/dist/components/input-otp.d.ts +19 -2
  116. package/dist/components/input-otp.js +2 -1
  117. package/dist/components/input-otp.js.map +1 -0
  118. package/dist/components/input.d.ts +8 -2
  119. package/dist/components/input.js +2 -1
  120. package/dist/components/input.js.map +1 -0
  121. package/dist/components/kbd.d.ts +10 -2
  122. package/dist/components/kbd.js +2 -1
  123. package/dist/components/kbd.js.map +1 -0
  124. package/dist/components/label.d.ts +9 -2
  125. package/dist/components/label.js +2 -1
  126. package/dist/components/label.js.map +1 -0
  127. package/dist/components/list.d.ts +25 -2
  128. package/dist/components/list.js +2 -1
  129. package/dist/components/list.js.map +1 -0
  130. package/dist/components/logo.d.ts +69 -2
  131. package/dist/components/logo.js +1 -1
  132. package/dist/components/marker.d.ts +18 -2
  133. package/dist/components/marker.js +2 -1
  134. package/dist/components/marker.js.map +1 -0
  135. package/dist/components/mask-input.d.ts +16 -2
  136. package/dist/components/mask-input.js +2 -1
  137. package/dist/components/mask-input.js.map +1 -0
  138. package/dist/components/native-select.d.ts +14 -2
  139. package/dist/components/native-select.js +2 -1
  140. package/dist/components/native-select.js.map +1 -0
  141. package/dist/components/navigation-menu.d.ts +26 -2
  142. package/dist/components/navigation-menu.js +2 -1
  143. package/dist/components/navigation-menu.js.map +1 -0
  144. package/dist/components/number-field.d.ts +35 -2
  145. package/dist/components/number-field.js +2 -1
  146. package/dist/components/number-field.js.map +1 -0
  147. package/dist/components/pagination.d.ts +27 -2
  148. package/dist/components/pagination.js +2 -1
  149. package/dist/components/pagination.js.map +1 -0
  150. package/dist/components/phone-input.d.ts +13 -2
  151. package/dist/components/phone-input.js +2 -1
  152. package/dist/components/phone-input.js.map +1 -0
  153. package/dist/components/pie-chart.d.ts +42 -2
  154. package/dist/components/pie-chart.js +2 -1
  155. package/dist/components/pie-chart.js.map +1 -0
  156. package/dist/components/popover.d.ts +21 -2
  157. package/dist/components/popover.js +2 -1
  158. package/dist/components/popover.js.map +1 -0
  159. package/dist/components/progress.d.ts +14 -2
  160. package/dist/components/progress.js +2 -1
  161. package/dist/components/progress.js.map +1 -0
  162. package/dist/components/radio-group.d.ts +25 -2
  163. package/dist/components/radio-group.js +2 -1
  164. package/dist/components/radio-group.js.map +1 -0
  165. package/dist/components/resizable.d.ts +14 -2
  166. package/dist/components/resizable.js +2 -1
  167. package/dist/components/resizable.js.map +1 -0
  168. package/dist/components/ring-progress.d.ts +17 -2
  169. package/dist/components/ring-progress.js +2 -1
  170. package/dist/components/ring-progress.js.map +1 -0
  171. package/dist/components/scroll-area.d.ts +11 -2
  172. package/dist/components/scroll-area.js +2 -1
  173. package/dist/components/scroll-area.js.map +1 -0
  174. package/dist/components/select.d.ts +29 -2
  175. package/dist/components/select.js +2 -1
  176. package/dist/components/select.js.map +1 -0
  177. package/dist/components/separator.d.ts +9 -2
  178. package/dist/components/separator.js +2 -1
  179. package/dist/components/separator.js.map +1 -0
  180. package/dist/components/sidebar.d.ts +96 -2
  181. package/dist/components/sidebar.js +2 -1
  182. package/dist/components/sidebar.js.map +1 -0
  183. package/dist/components/simple-grid.d.ts +14 -2
  184. package/dist/components/simple-grid.js +2 -1
  185. package/dist/components/simple-grid.js.map +1 -0
  186. package/dist/components/skeleton.d.ts +10 -2
  187. package/dist/components/skeleton.js +2 -1
  188. package/dist/components/skeleton.js.map +1 -0
  189. package/dist/components/slider.d.ts +9 -2
  190. package/dist/components/slider.js +2 -1
  191. package/dist/components/slider.js.map +1 -0
  192. package/dist/components/sonner.d.ts +8 -2
  193. package/dist/components/sonner.js +2 -1
  194. package/dist/components/sonner.js.map +1 -0
  195. package/dist/components/spinner.d.ts +12 -2
  196. package/dist/components/spinner.js +2 -1
  197. package/dist/components/spinner.js.map +1 -0
  198. package/dist/components/stack.d.ts +14 -2
  199. package/dist/components/stack.js +2 -1
  200. package/dist/components/stack.js.map +1 -0
  201. package/dist/components/stepper.d.ts +71 -2
  202. package/dist/components/stepper.js +2 -1
  203. package/dist/components/stepper.js.map +1 -0
  204. package/dist/components/switch.d.ts +17 -2
  205. package/dist/components/switch.js +2 -1
  206. package/dist/components/switch.js.map +1 -0
  207. package/dist/components/table.d.ts +33 -2
  208. package/dist/components/table.js +2 -1
  209. package/dist/components/table.js.map +1 -0
  210. package/dist/components/tabs.d.ts +21 -2
  211. package/dist/components/tabs.js +2 -1
  212. package/dist/components/tabs.js.map +1 -0
  213. package/dist/components/text.d.ts +14 -2
  214. package/dist/components/text.js +2 -1
  215. package/dist/components/text.js.map +1 -0
  216. package/dist/components/textarea.d.ts +8 -2
  217. package/dist/components/textarea.js +2 -1
  218. package/dist/components/textarea.js.map +1 -0
  219. package/dist/components/theme.d.ts +22 -2
  220. package/dist/components/theme.js +2 -1
  221. package/dist/components/theme.js.map +1 -0
  222. package/dist/components/timeline.d.ts +61 -2
  223. package/dist/components/timeline.js +2 -1
  224. package/dist/components/timeline.js.map +1 -0
  225. package/dist/components/toggle-group.d.ts +16 -2
  226. package/dist/components/toggle-group.js +2 -1
  227. package/dist/components/toggle-group.js.map +1 -0
  228. package/dist/components/toggle.d.ts +15 -2
  229. package/dist/components/toggle.js +2 -1
  230. package/dist/components/toggle.js.map +1 -0
  231. package/dist/components/tooltip.d.ts +21 -2
  232. package/dist/components/tooltip.js +2 -1
  233. package/dist/components/tooltip.js.map +1 -0
  234. package/dist/components/unstyled-button.d.ts +10 -2
  235. package/dist/components/unstyled-button.js +2 -1
  236. package/dist/components/unstyled-button.js.map +1 -0
  237. package/dist/components/visibility.d.ts +17 -2
  238. package/dist/components/visibility.js +2 -1
  239. package/dist/components/visibility.js.map +1 -0
  240. package/dist/{data-table-DXNWHN9R.d.ts → data-table-DWWVGWbU.d.ts} +4 -4
  241. package/dist/hooks/use-breakpoint-value.d.ts +8 -2
  242. package/dist/hooks/use-breakpoint-value.js +2 -1
  243. package/dist/hooks/use-breakpoint-value.js.map +1 -0
  244. package/dist/hooks/use-breakpoint.d.ts +8 -2
  245. package/dist/hooks/use-breakpoint.js +2 -1
  246. package/dist/hooks/use-breakpoint.js.map +1 -0
  247. package/dist/hooks/use-disclosure.d.ts +22 -2
  248. package/dist/hooks/use-disclosure.js +2 -1
  249. package/dist/hooks/use-disclosure.js.map +1 -0
  250. package/dist/hooks/use-document-visibility.d.ts +6 -2
  251. package/dist/hooks/use-document-visibility.js +2 -1
  252. package/dist/hooks/use-document-visibility.js.map +1 -0
  253. package/dist/hooks/use-hotkeys.d.ts +1 -1
  254. package/dist/hooks/use-hotkeys.js +1 -1
  255. package/dist/hooks/use-idle.d.ts +13 -2
  256. package/dist/hooks/use-idle.js +2 -1
  257. package/dist/hooks/use-idle.js.map +1 -0
  258. package/dist/hooks/use-interval.d.ts +24 -2
  259. package/dist/hooks/use-interval.js +2 -1
  260. package/dist/hooks/use-interval.js.map +1 -0
  261. package/dist/hooks/use-local-storage.d.ts +16 -2
  262. package/dist/hooks/use-local-storage.js +2 -1
  263. package/dist/hooks/use-local-storage.js.map +1 -0
  264. package/dist/hooks/use-mask.d.ts +8 -2
  265. package/dist/hooks/use-mask.js +2 -1
  266. package/dist/hooks/use-mask.js.map +1 -0
  267. package/dist/hooks/use-mobile.d.ts +6 -2
  268. package/dist/hooks/use-mobile.js +2 -1
  269. package/dist/hooks/use-mobile.js.map +1 -0
  270. package/dist/index.d.ts +95 -95
  271. package/dist/index.js +1 -1
  272. package/dist/lib/badge.d.ts +19 -2
  273. package/dist/lib/badge.js +2 -1
  274. package/dist/lib/badge.js.map +1 -0
  275. package/dist/lib/button.d.ts +19 -2
  276. package/dist/lib/button.js +2 -1
  277. package/dist/lib/button.js.map +1 -0
  278. package/dist/lib/color.d.ts +19 -2
  279. package/dist/lib/color.js +2 -1
  280. package/dist/lib/color.js.map +1 -0
  281. package/dist/lib/compose-refs.d.ts +8 -2
  282. package/dist/lib/compose-refs.js +2 -1
  283. package/dist/lib/compose-refs.js.map +1 -0
  284. package/dist/lib/progress.d.ts +19 -2
  285. package/dist/lib/progress.js +2 -1
  286. package/dist/lib/progress.js.map +1 -0
  287. package/dist/lib/utils.d.ts +7 -2
  288. package/dist/lib/utils.js +2 -1
  289. package/dist/lib/utils.js.map +1 -0
  290. package/dist/logo-B0thHtTS.js +2 -0
  291. package/dist/{logo-BkwNxZNw.js.map → logo-B0thHtTS.js.map} +1 -1
  292. package/dist/rolldown-runtime-BhWHdk3m.js +1 -0
  293. package/dist/skills/uselets-ui/references/package-guide.md +1 -1
  294. package/dist/styles/base.css +1 -19
  295. package/dist/styles/globals.css +1 -2
  296. package/dist/themes/gomax.css +1 -2
  297. package/dist/themes/max.css +1 -2
  298. package/dist/{use-hotkeys-DloZH-B4.d.ts → use-hotkeys-DOjcX9Tt.d.ts} +2 -2
  299. package/dist/{use-hotkeys-C0d5t4yo.js → use-hotkeys-YDJmGWX6.js} +2 -2
  300. package/dist/{use-hotkeys-C0d5t4yo.js.map → use-hotkeys-YDJmGWX6.js.map} +1 -1
  301. package/package.json +17 -18
  302. package/skills/uselets-ui/references/package-guide.md +1 -1
  303. package/dist/accordion-BCo2odjy.js +0 -2
  304. package/dist/accordion-BCo2odjy.js.map +0 -1
  305. package/dist/accordion-DtSr3uiA.d.ts +0 -15
  306. package/dist/alert-CJRgRQVF.js +0 -2
  307. package/dist/alert-CJRgRQVF.js.map +0 -1
  308. package/dist/alert-dialog-B_nAiD4Y.js +0 -2
  309. package/dist/alert-dialog-B_nAiD4Y.js.map +0 -1
  310. package/dist/alert-dialog-Bf41-OnT.d.ts +0 -34
  311. package/dist/alert-eivgSC_S.d.ts +0 -18
  312. package/dist/anchor-DCOyn0Xa.d.ts +0 -15
  313. package/dist/anchor-srhmShjN.js +0 -2
  314. package/dist/anchor-srhmShjN.js.map +0 -1
  315. package/dist/area-chart-DdDy8Vm3.js +0 -2
  316. package/dist/area-chart-DdDy8Vm3.js.map +0 -1
  317. package/dist/area-chart-F_4ZL20j.d.ts +0 -40
  318. package/dist/avatar-2ZS3Tx76.d.ts +0 -21
  319. package/dist/avatar-CFUwrOwG.js +0 -2
  320. package/dist/avatar-CFUwrOwG.js.map +0 -1
  321. package/dist/badge-BqpQcDFd.d.ts +0 -16
  322. package/dist/badge-Cuq_DqRS.js +0 -2
  323. package/dist/badge-Cuq_DqRS.js.map +0 -1
  324. package/dist/badge-DEgLmZYC.js +0 -2
  325. package/dist/badge-DEgLmZYC.js.map +0 -1
  326. package/dist/badge-gkezuSZY.d.ts +0 -19
  327. package/dist/bar-chart-DIgSnh_j.js +0 -2
  328. package/dist/bar-chart-DIgSnh_j.js.map +0 -1
  329. package/dist/bar-chart-DRrrfMQR.d.ts +0 -42
  330. package/dist/breadcrumb-CqNDAI8V.js +0 -2
  331. package/dist/breadcrumb-CqNDAI8V.js.map +0 -1
  332. package/dist/breadcrumb-DZFS9htN.d.ts +0 -22
  333. package/dist/button-BNGy28pv.d.ts +0 -17
  334. package/dist/button-CQbH5Glc.d.ts +0 -19
  335. package/dist/button-DGewx2nE.js +0 -2
  336. package/dist/button-DGewx2nE.js.map +0 -1
  337. package/dist/button-group-DRgqsyjS.d.ts +0 -18
  338. package/dist/button-group-WJ5LeouK.js +0 -2
  339. package/dist/button-group-WJ5LeouK.js.map +0 -1
  340. package/dist/button-oI3hbOgp.js +0 -2
  341. package/dist/button-oI3hbOgp.js.map +0 -1
  342. package/dist/calendar-C1GgjzIA.d.ts +0 -17
  343. package/dist/calendar-CW1kGXom.js +0 -2
  344. package/dist/calendar-CW1kGXom.js.map +0 -1
  345. package/dist/card-Bx6iiocl.js +0 -2
  346. package/dist/card-Bx6iiocl.js.map +0 -1
  347. package/dist/card-pWjtkTKw.d.ts +0 -22
  348. package/dist/carousel-C6e4eRJD.d.ts +0 -43
  349. package/dist/carousel-D0OTImO7.js +0 -2
  350. package/dist/carousel-D0OTImO7.js.map +0 -1
  351. package/dist/center-CFQDr205.d.ts +0 -13
  352. package/dist/center-Dl1rnq7S.js +0 -2
  353. package/dist/center-Dl1rnq7S.js.map +0 -1
  354. package/dist/chart-Ci4V8B8v.js +0 -8
  355. package/dist/chart-Ci4V8B8v.js.map +0 -1
  356. package/dist/checkbox-DPvW_m7k.js +0 -2
  357. package/dist/checkbox-DPvW_m7k.js.map +0 -1
  358. package/dist/checkbox-y0XBdH4a.d.ts +0 -21
  359. package/dist/code-A6JERAsm.js +0 -2
  360. package/dist/code-A6JERAsm.js.map +0 -1
  361. package/dist/code-Cqoacc61.d.ts +0 -8
  362. package/dist/collapsible-BH8BqfTd.js +0 -2
  363. package/dist/collapsible-BH8BqfTd.js.map +0 -1
  364. package/dist/collapsible-CLSCZ630.d.ts +0 -12
  365. package/dist/color-DJvQFSl5.d.ts +0 -19
  366. package/dist/color-Don4qaht.js +0 -2
  367. package/dist/color-Don4qaht.js.map +0 -1
  368. package/dist/combobox-D-WRdpkq.js +0 -2
  369. package/dist/combobox-D-WRdpkq.js.map +0 -1
  370. package/dist/combobox-DkCRXUxd.d.ts +0 -51
  371. package/dist/command-BjWXeORj.js +0 -2
  372. package/dist/command-BjWXeORj.js.map +0 -1
  373. package/dist/command-D4pNOx0J.d.ts +0 -31
  374. package/dist/components/accordion.spec.d.ts +0 -1
  375. package/dist/components/accordion.spec.js +0 -2
  376. package/dist/components/accordion.spec.js.map +0 -1
  377. package/dist/components/alert-dialog.spec.d.ts +0 -1
  378. package/dist/components/alert-dialog.spec.js +0 -2
  379. package/dist/components/alert-dialog.spec.js.map +0 -1
  380. package/dist/components/alert.spec.d.ts +0 -1
  381. package/dist/components/alert.spec.js +0 -2
  382. package/dist/components/alert.spec.js.map +0 -1
  383. package/dist/components/anchor.spec.d.ts +0 -1
  384. package/dist/components/anchor.spec.js +0 -2
  385. package/dist/components/anchor.spec.js.map +0 -1
  386. package/dist/components/area-chart.spec.d.ts +0 -1
  387. package/dist/components/area-chart.spec.js +0 -2
  388. package/dist/components/area-chart.spec.js.map +0 -1
  389. package/dist/components/avatar.spec.d.ts +0 -1
  390. package/dist/components/avatar.spec.js +0 -2
  391. package/dist/components/avatar.spec.js.map +0 -1
  392. package/dist/components/badge.spec.d.ts +0 -1
  393. package/dist/components/badge.spec.js +0 -2
  394. package/dist/components/badge.spec.js.map +0 -1
  395. package/dist/components/bar-chart.spec.d.ts +0 -1
  396. package/dist/components/bar-chart.spec.js +0 -2
  397. package/dist/components/bar-chart.spec.js.map +0 -1
  398. package/dist/components/breadcrumb.spec.d.ts +0 -1
  399. package/dist/components/breadcrumb.spec.js +0 -2
  400. package/dist/components/breadcrumb.spec.js.map +0 -1
  401. package/dist/components/button-group.spec.d.ts +0 -1
  402. package/dist/components/button-group.spec.js +0 -2
  403. package/dist/components/button-group.spec.js.map +0 -1
  404. package/dist/components/button.spec.d.ts +0 -1
  405. package/dist/components/button.spec.js +0 -2
  406. package/dist/components/button.spec.js.map +0 -1
  407. package/dist/components/calendar.spec.d.ts +0 -1
  408. package/dist/components/calendar.spec.js +0 -2
  409. package/dist/components/calendar.spec.js.map +0 -1
  410. package/dist/components/card.spec.d.ts +0 -1
  411. package/dist/components/card.spec.js +0 -2
  412. package/dist/components/card.spec.js.map +0 -1
  413. package/dist/components/carousel.spec.d.ts +0 -1
  414. package/dist/components/carousel.spec.js +0 -2
  415. package/dist/components/carousel.spec.js.map +0 -1
  416. package/dist/components/center.spec.d.ts +0 -1
  417. package/dist/components/center.spec.js +0 -2
  418. package/dist/components/center.spec.js.map +0 -1
  419. package/dist/components/chart.spec.d.ts +0 -1
  420. package/dist/components/chart.spec.js +0 -2
  421. package/dist/components/chart.spec.js.map +0 -1
  422. package/dist/components/checkbox.spec.d.ts +0 -1
  423. package/dist/components/checkbox.spec.js +0 -2
  424. package/dist/components/checkbox.spec.js.map +0 -1
  425. package/dist/components/code.spec.d.ts +0 -1
  426. package/dist/components/code.spec.js +0 -2
  427. package/dist/components/code.spec.js.map +0 -1
  428. package/dist/components/collapsible.spec.d.ts +0 -1
  429. package/dist/components/collapsible.spec.js +0 -2
  430. package/dist/components/collapsible.spec.js.map +0 -1
  431. package/dist/components/combobox.spec.d.ts +0 -1
  432. package/dist/components/combobox.spec.js +0 -2
  433. package/dist/components/combobox.spec.js.map +0 -1
  434. package/dist/components/command.spec.d.ts +0 -1
  435. package/dist/components/command.spec.js +0 -2
  436. package/dist/components/command.spec.js.map +0 -1
  437. package/dist/components/container.spec.d.ts +0 -1
  438. package/dist/components/container.spec.js +0 -2
  439. package/dist/components/container.spec.js.map +0 -1
  440. package/dist/components/data-table.spec.d.ts +0 -1
  441. package/dist/components/data-table.spec.js +0 -2
  442. package/dist/components/data-table.spec.js.map +0 -1
  443. package/dist/components/date-range-picker.spec.d.ts +0 -1
  444. package/dist/components/date-range-picker.spec.js +0 -2
  445. package/dist/components/date-range-picker.spec.js.map +0 -1
  446. package/dist/components/dialog.spec.d.ts +0 -1
  447. package/dist/components/dialog.spec.js +0 -2
  448. package/dist/components/dialog.spec.js.map +0 -1
  449. package/dist/components/donut-chart.spec.d.ts +0 -1
  450. package/dist/components/donut-chart.spec.js +0 -2
  451. package/dist/components/donut-chart.spec.js.map +0 -1
  452. package/dist/components/drawer.spec.d.ts +0 -1
  453. package/dist/components/drawer.spec.js +0 -2
  454. package/dist/components/drawer.spec.js.map +0 -1
  455. package/dist/components/dropdown-menu.spec.d.ts +0 -1
  456. package/dist/components/dropdown-menu.spec.js +0 -2
  457. package/dist/components/dropdown-menu.spec.js.map +0 -1
  458. package/dist/components/dropzone.spec.d.ts +0 -1
  459. package/dist/components/dropzone.spec.js +0 -2
  460. package/dist/components/dropzone.spec.js.map +0 -1
  461. package/dist/components/empty.spec.d.ts +0 -1
  462. package/dist/components/empty.spec.js +0 -2
  463. package/dist/components/empty.spec.js.map +0 -1
  464. package/dist/components/field.spec.d.ts +0 -1
  465. package/dist/components/field.spec.js +0 -2
  466. package/dist/components/field.spec.js.map +0 -1
  467. package/dist/components/flex.spec.d.ts +0 -1
  468. package/dist/components/flex.spec.js +0 -2
  469. package/dist/components/flex.spec.js.map +0 -1
  470. package/dist/components/grid.spec.d.ts +0 -1
  471. package/dist/components/grid.spec.js +0 -2
  472. package/dist/components/grid.spec.js.map +0 -1
  473. package/dist/components/group.spec.d.ts +0 -1
  474. package/dist/components/group.spec.js +0 -2
  475. package/dist/components/group.spec.js.map +0 -1
  476. package/dist/components/heading.spec.d.ts +0 -1
  477. package/dist/components/heading.spec.js +0 -2
  478. package/dist/components/heading.spec.js.map +0 -1
  479. package/dist/components/hover-card.spec.d.ts +0 -1
  480. package/dist/components/hover-card.spec.js +0 -2
  481. package/dist/components/hover-card.spec.js.map +0 -1
  482. package/dist/components/input-group.spec.d.ts +0 -1
  483. package/dist/components/input-group.spec.js +0 -2
  484. package/dist/components/input-group.spec.js.map +0 -1
  485. package/dist/components/input-otp.spec.d.ts +0 -1
  486. package/dist/components/input-otp.spec.js +0 -2
  487. package/dist/components/input-otp.spec.js.map +0 -1
  488. package/dist/components/input.spec.d.ts +0 -1
  489. package/dist/components/input.spec.js +0 -2
  490. package/dist/components/input.spec.js.map +0 -1
  491. package/dist/components/kbd.spec.d.ts +0 -1
  492. package/dist/components/kbd.spec.js +0 -2
  493. package/dist/components/kbd.spec.js.map +0 -1
  494. package/dist/components/label.spec.d.ts +0 -1
  495. package/dist/components/label.spec.js +0 -2
  496. package/dist/components/label.spec.js.map +0 -1
  497. package/dist/components/list.spec.d.ts +0 -1
  498. package/dist/components/list.spec.js +0 -2
  499. package/dist/components/list.spec.js.map +0 -1
  500. package/dist/components/logo.spec.d.ts +0 -1
  501. package/dist/components/logo.spec.js +0 -2
  502. package/dist/components/logo.spec.js.map +0 -1
  503. package/dist/components/marker.spec.d.ts +0 -1
  504. package/dist/components/marker.spec.js +0 -2
  505. package/dist/components/marker.spec.js.map +0 -1
  506. package/dist/components/mask-input.spec.d.ts +0 -1
  507. package/dist/components/mask-input.spec.js +0 -2
  508. package/dist/components/mask-input.spec.js.map +0 -1
  509. package/dist/components/native-select.spec.d.ts +0 -1
  510. package/dist/components/native-select.spec.js +0 -2
  511. package/dist/components/native-select.spec.js.map +0 -1
  512. package/dist/components/navigation-menu.spec.d.ts +0 -1
  513. package/dist/components/navigation-menu.spec.js +0 -2
  514. package/dist/components/navigation-menu.spec.js.map +0 -1
  515. package/dist/components/number-field.spec.d.ts +0 -1
  516. package/dist/components/number-field.spec.js +0 -2
  517. package/dist/components/number-field.spec.js.map +0 -1
  518. package/dist/components/pagination.spec.d.ts +0 -1
  519. package/dist/components/pagination.spec.js +0 -2
  520. package/dist/components/pagination.spec.js.map +0 -1
  521. package/dist/components/phone-input.spec.d.ts +0 -1
  522. package/dist/components/phone-input.spec.js +0 -2
  523. package/dist/components/phone-input.spec.js.map +0 -1
  524. package/dist/components/pie-chart.spec.d.ts +0 -1
  525. package/dist/components/pie-chart.spec.js +0 -2
  526. package/dist/components/pie-chart.spec.js.map +0 -1
  527. package/dist/components/popover.spec.d.ts +0 -1
  528. package/dist/components/popover.spec.js +0 -2
  529. package/dist/components/popover.spec.js.map +0 -1
  530. package/dist/components/progress.spec.d.ts +0 -1
  531. package/dist/components/progress.spec.js +0 -2
  532. package/dist/components/progress.spec.js.map +0 -1
  533. package/dist/components/radio-group.spec.d.ts +0 -1
  534. package/dist/components/radio-group.spec.js +0 -2
  535. package/dist/components/radio-group.spec.js.map +0 -1
  536. package/dist/components/resizable.spec.d.ts +0 -1
  537. package/dist/components/resizable.spec.js +0 -2
  538. package/dist/components/resizable.spec.js.map +0 -1
  539. package/dist/components/ring-progress.spec.d.ts +0 -1
  540. package/dist/components/ring-progress.spec.js +0 -2
  541. package/dist/components/ring-progress.spec.js.map +0 -1
  542. package/dist/components/scroll-area.spec.d.ts +0 -1
  543. package/dist/components/scroll-area.spec.js +0 -2
  544. package/dist/components/scroll-area.spec.js.map +0 -1
  545. package/dist/components/select.spec.d.ts +0 -1
  546. package/dist/components/select.spec.js +0 -2
  547. package/dist/components/select.spec.js.map +0 -1
  548. package/dist/components/separator.spec.d.ts +0 -1
  549. package/dist/components/separator.spec.js +0 -2
  550. package/dist/components/separator.spec.js.map +0 -1
  551. package/dist/components/sidebar.spec.d.ts +0 -1
  552. package/dist/components/sidebar.spec.js +0 -2
  553. package/dist/components/sidebar.spec.js.map +0 -1
  554. package/dist/components/simple-grid.spec.d.ts +0 -1
  555. package/dist/components/simple-grid.spec.js +0 -2
  556. package/dist/components/simple-grid.spec.js.map +0 -1
  557. package/dist/components/skeleton.spec.d.ts +0 -1
  558. package/dist/components/skeleton.spec.js +0 -2
  559. package/dist/components/skeleton.spec.js.map +0 -1
  560. package/dist/components/slider.spec.d.ts +0 -1
  561. package/dist/components/slider.spec.js +0 -2
  562. package/dist/components/slider.spec.js.map +0 -1
  563. package/dist/components/sonner.spec.d.ts +0 -1
  564. package/dist/components/sonner.spec.js +0 -2
  565. package/dist/components/sonner.spec.js.map +0 -1
  566. package/dist/components/spinner.spec.d.ts +0 -1
  567. package/dist/components/spinner.spec.js +0 -2
  568. package/dist/components/spinner.spec.js.map +0 -1
  569. package/dist/components/stack.spec.d.ts +0 -1
  570. package/dist/components/stack.spec.js +0 -2
  571. package/dist/components/stack.spec.js.map +0 -1
  572. package/dist/components/stepper.spec.d.ts +0 -1
  573. package/dist/components/stepper.spec.js +0 -2
  574. package/dist/components/stepper.spec.js.map +0 -1
  575. package/dist/components/switch.spec.d.ts +0 -1
  576. package/dist/components/switch.spec.js +0 -2
  577. package/dist/components/switch.spec.js.map +0 -1
  578. package/dist/components/table.spec.d.ts +0 -1
  579. package/dist/components/table.spec.js +0 -2
  580. package/dist/components/table.spec.js.map +0 -1
  581. package/dist/components/tabs.spec.d.ts +0 -1
  582. package/dist/components/tabs.spec.js +0 -2
  583. package/dist/components/tabs.spec.js.map +0 -1
  584. package/dist/components/text.spec.d.ts +0 -1
  585. package/dist/components/text.spec.js +0 -2
  586. package/dist/components/text.spec.js.map +0 -1
  587. package/dist/components/textarea.spec.d.ts +0 -1
  588. package/dist/components/textarea.spec.js +0 -2
  589. package/dist/components/textarea.spec.js.map +0 -1
  590. package/dist/components/theme.spec.d.ts +0 -1
  591. package/dist/components/theme.spec.js +0 -2
  592. package/dist/components/theme.spec.js.map +0 -1
  593. package/dist/components/timeline.spec.d.ts +0 -1
  594. package/dist/components/timeline.spec.js +0 -2
  595. package/dist/components/timeline.spec.js.map +0 -1
  596. package/dist/components/toggle-group.spec.d.ts +0 -1
  597. package/dist/components/toggle-group.spec.js +0 -2
  598. package/dist/components/toggle-group.spec.js.map +0 -1
  599. package/dist/components/toggle.spec.d.ts +0 -1
  600. package/dist/components/toggle.spec.js +0 -2
  601. package/dist/components/toggle.spec.js.map +0 -1
  602. package/dist/components/tooltip.spec.d.ts +0 -1
  603. package/dist/components/tooltip.spec.js +0 -2
  604. package/dist/components/tooltip.spec.js.map +0 -1
  605. package/dist/components/unstyled-button.spec.d.ts +0 -1
  606. package/dist/components/unstyled-button.spec.js +0 -2
  607. package/dist/components/unstyled-button.spec.js.map +0 -1
  608. package/dist/components/visibility.spec.d.ts +0 -1
  609. package/dist/components/visibility.spec.js +0 -2
  610. package/dist/components/visibility.spec.js.map +0 -1
  611. package/dist/compose-refs-DUtp7lGn.js +0 -2
  612. package/dist/compose-refs-DUtp7lGn.js.map +0 -1
  613. package/dist/compose-refs-GP3zdokU.d.ts +0 -8
  614. package/dist/container-B8-lt-oX.d.ts +0 -12
  615. package/dist/container-CikeKdez.js +0 -2
  616. package/dist/container-CikeKdez.js.map +0 -1
  617. package/dist/data-table-D-ce4ZKz.js +0 -2
  618. package/dist/data-table-D-ce4ZKz.js.map +0 -1
  619. package/dist/date-range-picker-BnRt_P9y.js +0 -2
  620. package/dist/date-range-picker-BnRt_P9y.js.map +0 -1
  621. package/dist/date-range-picker-BngvCWcR.d.ts +0 -55
  622. package/dist/dialog-B7I4Ky1i.js +0 -2
  623. package/dist/dialog-B7I4Ky1i.js.map +0 -1
  624. package/dist/dialog-Ej7pnact.d.ts +0 -42
  625. package/dist/donut-chart-BDJR8TXh.d.ts +0 -13
  626. package/dist/donut-chart-BHU4kDE6.js +0 -2
  627. package/dist/donut-chart-BHU4kDE6.js.map +0 -1
  628. package/dist/drawer-BO4mP6y1.js +0 -2
  629. package/dist/drawer-BO4mP6y1.js.map +0 -1
  630. package/dist/drawer-DUfJzrKE.d.ts +0 -43
  631. package/dist/dropdown-menu-CVDIf0Rd.d.ts +0 -48
  632. package/dist/dropdown-menu-zRuQQS5S.js +0 -2
  633. package/dist/dropdown-menu-zRuQQS5S.js.map +0 -1
  634. package/dist/dropzone-43h3L9Ko.d.ts +0 -102
  635. package/dist/dropzone-BLZkZThJ.js +0 -2
  636. package/dist/dropzone-BLZkZThJ.js.map +0 -1
  637. package/dist/empty-BhKsDYZ5.js +0 -2
  638. package/dist/empty-BhKsDYZ5.js.map +0 -1
  639. package/dist/empty-D8ZiTCVK.d.ts +0 -21
  640. package/dist/field-C209yHO9.d.ts +0 -39
  641. package/dist/field-DzR-XrO7.js +0 -2
  642. package/dist/field-DzR-XrO7.js.map +0 -1
  643. package/dist/flex-BC4Diiy4.js +0 -2
  644. package/dist/flex-BC4Diiy4.js.map +0 -1
  645. package/dist/flex-aJXipTAz.d.ts +0 -16
  646. package/dist/grid-B3He1bGe.js +0 -2
  647. package/dist/grid-B3He1bGe.js.map +0 -1
  648. package/dist/grid-D_aEANA7.d.ts +0 -20
  649. package/dist/group-B6n_lMc4.js +0 -2
  650. package/dist/group-B6n_lMc4.js.map +0 -1
  651. package/dist/group-DBtx8eSe.d.ts +0 -15
  652. package/dist/heading-BTXl4JfI.d.ts +0 -14
  653. package/dist/heading-DaxKLVRm.js +0 -2
  654. package/dist/heading-DaxKLVRm.js.map +0 -1
  655. package/dist/hooks/use-breakpoint-value.spec.d.ts +0 -1
  656. package/dist/hooks/use-breakpoint-value.spec.js +0 -35
  657. package/dist/hooks/use-breakpoint-value.spec.js.map +0 -1
  658. package/dist/hooks/use-breakpoint.spec.d.ts +0 -1
  659. package/dist/hooks/use-breakpoint.spec.js +0 -2
  660. package/dist/hooks/use-breakpoint.spec.js.map +0 -1
  661. package/dist/hooks/use-disclosure.spec.d.ts +0 -1
  662. package/dist/hooks/use-disclosure.spec.js +0 -2
  663. package/dist/hooks/use-disclosure.spec.js.map +0 -1
  664. package/dist/hooks/use-document-visibility.spec.d.ts +0 -1
  665. package/dist/hooks/use-document-visibility.spec.js +0 -2
  666. package/dist/hooks/use-document-visibility.spec.js.map +0 -1
  667. package/dist/hooks/use-hotkeys.spec.d.ts +0 -1
  668. package/dist/hooks/use-hotkeys.spec.js +0 -2
  669. package/dist/hooks/use-hotkeys.spec.js.map +0 -1
  670. package/dist/hooks/use-idle.spec.d.ts +0 -1
  671. package/dist/hooks/use-idle.spec.js +0 -2
  672. package/dist/hooks/use-idle.spec.js.map +0 -1
  673. package/dist/hooks/use-interval.spec.d.ts +0 -1
  674. package/dist/hooks/use-interval.spec.js +0 -2
  675. package/dist/hooks/use-interval.spec.js.map +0 -1
  676. package/dist/hooks/use-local-storage.spec.d.ts +0 -1
  677. package/dist/hooks/use-local-storage.spec.js +0 -2
  678. package/dist/hooks/use-local-storage.spec.js.map +0 -1
  679. package/dist/hooks/use-mask.spec.d.ts +0 -1
  680. package/dist/hooks/use-mask.spec.js +0 -2
  681. package/dist/hooks/use-mask.spec.js.map +0 -1
  682. package/dist/hooks/use-mobile.spec.d.ts +0 -1
  683. package/dist/hooks/use-mobile.spec.js +0 -2
  684. package/dist/hooks/use-mobile.spec.js.map +0 -1
  685. package/dist/hover-card-C3yz2zQi.d.ts +0 -13
  686. package/dist/hover-card-Dc8yLsm-.js +0 -2
  687. package/dist/hover-card-Dc8yLsm-.js.map +0 -1
  688. package/dist/input-BgjvSP_s.js +0 -2
  689. package/dist/input-BgjvSP_s.js.map +0 -1
  690. package/dist/input-CI3RPXz0.d.ts +0 -8
  691. package/dist/input-group-CBn36aMg.d.ts +0 -26
  692. package/dist/input-group-Dx06pcPt.js +0 -2
  693. package/dist/input-group-Dx06pcPt.js.map +0 -1
  694. package/dist/input-otp-CzfRHf2V.js +0 -2
  695. package/dist/input-otp-CzfRHf2V.js.map +0 -1
  696. package/dist/input-otp-gIEkdiIC.d.ts +0 -19
  697. package/dist/kbd-BTl3AgkY.js +0 -2
  698. package/dist/kbd-BTl3AgkY.js.map +0 -1
  699. package/dist/kbd-DELCQBD0.d.ts +0 -10
  700. package/dist/label-BQDEej_c.js +0 -2
  701. package/dist/label-BQDEej_c.js.map +0 -1
  702. package/dist/label-KZl6I5Ey.d.ts +0 -9
  703. package/dist/lib/badge.spec.d.ts +0 -1
  704. package/dist/lib/badge.spec.js +0 -2
  705. package/dist/lib/badge.spec.js.map +0 -1
  706. package/dist/lib/button.spec.d.ts +0 -1
  707. package/dist/lib/button.spec.js +0 -2
  708. package/dist/lib/button.spec.js.map +0 -1
  709. package/dist/lib/color.spec.d.ts +0 -1
  710. package/dist/lib/color.spec.js +0 -2
  711. package/dist/lib/color.spec.js.map +0 -1
  712. package/dist/lib/compose-refs.spec.d.ts +0 -1
  713. package/dist/lib/compose-refs.spec.js +0 -2
  714. package/dist/lib/compose-refs.spec.js.map +0 -1
  715. package/dist/lib/progress.spec.d.ts +0 -1
  716. package/dist/lib/progress.spec.js +0 -2
  717. package/dist/lib/progress.spec.js.map +0 -1
  718. package/dist/lib/utils.spec.d.ts +0 -1
  719. package/dist/lib/utils.spec.js +0 -2
  720. package/dist/lib/utils.spec.js.map +0 -1
  721. package/dist/list-BbCg-ndB.js +0 -2
  722. package/dist/list-BbCg-ndB.js.map +0 -1
  723. package/dist/list-DMa2j1rk.d.ts +0 -25
  724. package/dist/logo-BkwNxZNw.js +0 -2
  725. package/dist/logo-Buo7sqqn.d.ts +0 -69
  726. package/dist/marker-4_EnMIHk.js +0 -2
  727. package/dist/marker-4_EnMIHk.js.map +0 -1
  728. package/dist/marker-C4wLa1c0.d.ts +0 -18
  729. package/dist/mask-input-B4R5K1h6.d.ts +0 -16
  730. package/dist/mask-input-D66mRep_.js +0 -2
  731. package/dist/mask-input-D66mRep_.js.map +0 -1
  732. package/dist/native-select-BVmdMkHY.d.ts +0 -14
  733. package/dist/native-select-DZW3Y7nq.js +0 -2
  734. package/dist/native-select-DZW3Y7nq.js.map +0 -1
  735. package/dist/navigation-menu-B6drNL1-.js +0 -2
  736. package/dist/navigation-menu-B6drNL1-.js.map +0 -1
  737. package/dist/navigation-menu-siQVRMUF.d.ts +0 -26
  738. package/dist/number-field-IdgO_BUa.d.ts +0 -35
  739. package/dist/number-field-rEMfZa6A.js +0 -2
  740. package/dist/number-field-rEMfZa6A.js.map +0 -1
  741. package/dist/pagination-BZ3xMXsy.d.ts +0 -27
  742. package/dist/pagination-gnUKddCN.js +0 -2
  743. package/dist/pagination-gnUKddCN.js.map +0 -1
  744. package/dist/phone-input-By5lNF03.d.ts +0 -13
  745. package/dist/phone-input-DUubOpNH.js +0 -2
  746. package/dist/phone-input-DUubOpNH.js.map +0 -1
  747. package/dist/pie-chart-CvG27kFN.d.ts +0 -42
  748. package/dist/pie-chart-S4nMKbsW.js +0 -2
  749. package/dist/pie-chart-S4nMKbsW.js.map +0 -1
  750. package/dist/popover-BtX3tX8M.js +0 -2
  751. package/dist/popover-BtX3tX8M.js.map +0 -1
  752. package/dist/popover-DchAqyKn.d.ts +0 -21
  753. package/dist/progress-DeXRCHUw.d.ts +0 -19
  754. package/dist/progress-QvpY7tiy.js +0 -2
  755. package/dist/progress-QvpY7tiy.js.map +0 -1
  756. package/dist/progress-icFwrvnE.js +0 -2
  757. package/dist/progress-icFwrvnE.js.map +0 -1
  758. package/dist/progress-mEAw9ZhK.d.ts +0 -14
  759. package/dist/radio-group-BNbepK_U.d.ts +0 -25
  760. package/dist/radio-group-DM8n0XPS.js +0 -2
  761. package/dist/radio-group-DM8n0XPS.js.map +0 -1
  762. package/dist/react.esm-BkhVXJ8s.js +0 -68
  763. package/dist/react.esm-BkhVXJ8s.js.map +0 -1
  764. package/dist/resizable-DMQG3xF_.d.ts +0 -14
  765. package/dist/resizable-Dbg7r7nF.js +0 -2
  766. package/dist/resizable-Dbg7r7nF.js.map +0 -1
  767. package/dist/ring-progress-65ccdTQQ.d.ts +0 -17
  768. package/dist/ring-progress-Bfqq_HHA.js +0 -2
  769. package/dist/ring-progress-Bfqq_HHA.js.map +0 -1
  770. package/dist/rolldown-runtime-Bdj-bS2b.js +0 -1
  771. package/dist/scroll-area-DFcj5q66.d.ts +0 -11
  772. package/dist/scroll-area-DKS4QPHg.js +0 -2
  773. package/dist/scroll-area-DKS4QPHg.js.map +0 -1
  774. package/dist/select-BoYp-Xyc.d.ts +0 -29
  775. package/dist/select-C3QYNv4t.js +0 -2
  776. package/dist/select-C3QYNv4t.js.map +0 -1
  777. package/dist/separator-BsRLiqWE.d.ts +0 -9
  778. package/dist/separator-CCMmbXL0.js +0 -2
  779. package/dist/separator-CCMmbXL0.js.map +0 -1
  780. package/dist/sidebar-D7HQlj5O.d.ts +0 -96
  781. package/dist/sidebar-DemayEyw.js +0 -2
  782. package/dist/sidebar-DemayEyw.js.map +0 -1
  783. package/dist/simple-grid-9EryoUWI.js +0 -2
  784. package/dist/simple-grid-9EryoUWI.js.map +0 -1
  785. package/dist/simple-grid-B2zjpwZ3.d.ts +0 -14
  786. package/dist/skeleton-Cn3zBJRe.js +0 -2
  787. package/dist/skeleton-Cn3zBJRe.js.map +0 -1
  788. package/dist/skeleton-Co8pevj-.d.ts +0 -10
  789. package/dist/slider-CC-gQawq.js +0 -2
  790. package/dist/slider-CC-gQawq.js.map +0 -1
  791. package/dist/slider-DmZ1YfLg.d.ts +0 -9
  792. package/dist/sonner-Binx8JJ2.d.ts +0 -8
  793. package/dist/sonner-DrKqhTDI.js +0 -2
  794. package/dist/sonner-DrKqhTDI.js.map +0 -1
  795. package/dist/spinner-Dz63Ltq-.d.ts +0 -12
  796. package/dist/spinner-ntLrcDLN.js +0 -2
  797. package/dist/spinner-ntLrcDLN.js.map +0 -1
  798. package/dist/stack-BbLllsqk.js +0 -2
  799. package/dist/stack-BbLllsqk.js.map +0 -1
  800. package/dist/stack-WiND8Dxq.d.ts +0 -14
  801. package/dist/stepper-BQ-59_UO.js +0 -2
  802. package/dist/stepper-BQ-59_UO.js.map +0 -1
  803. package/dist/stepper-DK5_o7RG.d.ts +0 -71
  804. package/dist/styles/gomax.css +0 -222
  805. package/dist/styles/max.css +0 -223
  806. package/dist/styles/theme.css +0 -213
  807. package/dist/switch-DjdOGECT.js +0 -2
  808. package/dist/switch-DjdOGECT.js.map +0 -1
  809. package/dist/switch-OtBakZHc.d.ts +0 -17
  810. package/dist/table-CuE0Aenj.js +0 -2
  811. package/dist/table-CuE0Aenj.js.map +0 -1
  812. package/dist/table-qIAtG7Y5.d.ts +0 -33
  813. package/dist/tabs-BgWxTTah.d.ts +0 -21
  814. package/dist/tabs-DK9-RHkP.js +0 -2
  815. package/dist/tabs-DK9-RHkP.js.map +0 -1
  816. package/dist/text-CKFZ9Xsj.d.ts +0 -14
  817. package/dist/text-Kg1xuinT.js +0 -2
  818. package/dist/text-Kg1xuinT.js.map +0 -1
  819. package/dist/textarea-C8zrf9Rz.js +0 -2
  820. package/dist/textarea-C8zrf9Rz.js.map +0 -1
  821. package/dist/textarea-Cr9_P-bV.d.ts +0 -8
  822. package/dist/theme-BwEhfTyl.d.ts +0 -22
  823. package/dist/theme-DZJ_cJYp.js +0 -2
  824. package/dist/theme-DZJ_cJYp.js.map +0 -1
  825. package/dist/timeline-BDY3YzeJ.d.ts +0 -61
  826. package/dist/timeline-pBm0t1tb.js +0 -2
  827. package/dist/timeline-pBm0t1tb.js.map +0 -1
  828. package/dist/toggle-DJJkcqDy.js +0 -2
  829. package/dist/toggle-DJJkcqDy.js.map +0 -1
  830. package/dist/toggle-group-C3iNDYqI.d.ts +0 -16
  831. package/dist/toggle-group-D0OIpZN-.js +0 -2
  832. package/dist/toggle-group-D0OIpZN-.js.map +0 -1
  833. package/dist/toggle-jc8s_Z3T.d.ts +0 -15
  834. package/dist/tooltip-BZjnEqw5.d.ts +0 -21
  835. package/dist/tooltip-CNUNWZvs.js +0 -2
  836. package/dist/tooltip-CNUNWZvs.js.map +0 -1
  837. package/dist/unstyled-button-C-Zs4Qv2.d.ts +0 -10
  838. package/dist/unstyled-button-lGbDJA55.js +0 -2
  839. package/dist/unstyled-button-lGbDJA55.js.map +0 -1
  840. package/dist/use-breakpoint-D6YACz8C.js +0 -2
  841. package/dist/use-breakpoint-D6YACz8C.js.map +0 -1
  842. package/dist/use-breakpoint-DDuQFekj.d.ts +0 -8
  843. package/dist/use-breakpoint-value-BDjKflDX.js +0 -2
  844. package/dist/use-breakpoint-value-BDjKflDX.js.map +0 -1
  845. package/dist/use-breakpoint-value-CRbHqGAu.d.ts +0 -8
  846. package/dist/use-disclosure-CNaFpYFQ.d.ts +0 -22
  847. package/dist/use-disclosure-Cr405eRD.js +0 -2
  848. package/dist/use-disclosure-Cr405eRD.js.map +0 -1
  849. package/dist/use-document-visibility-CoWjCswu.js +0 -2
  850. package/dist/use-document-visibility-CoWjCswu.js.map +0 -1
  851. package/dist/use-document-visibility-DIzUN4tB.d.ts +0 -6
  852. package/dist/use-idle-Bsi10VE9.d.ts +0 -13
  853. package/dist/use-idle-DgheJlxd.js +0 -2
  854. package/dist/use-idle-DgheJlxd.js.map +0 -1
  855. package/dist/use-interval-B1aNo3tA.js +0 -2
  856. package/dist/use-interval-B1aNo3tA.js.map +0 -1
  857. package/dist/use-interval-CJVmE_lC.d.ts +0 -24
  858. package/dist/use-local-storage-CJBqB1GC.js +0 -2
  859. package/dist/use-local-storage-CJBqB1GC.js.map +0 -1
  860. package/dist/use-local-storage-Cmq4PWJc.d.ts +0 -16
  861. package/dist/use-mask-DBvFShXA.js +0 -2
  862. package/dist/use-mask-DBvFShXA.js.map +0 -1
  863. package/dist/use-mask-DRJVVcdh.d.ts +0 -8
  864. package/dist/use-mobile-BYwiljVq.d.ts +0 -6
  865. package/dist/use-mobile-OMmp56u2.js +0 -2
  866. package/dist/use-mobile-OMmp56u2.js.map +0 -1
  867. package/dist/utils-DGsdoA5l.d.ts +0 -8
  868. package/dist/utils-DP9KtG7I.js +0 -2
  869. package/dist/utils-DP9KtG7I.js.map +0 -1
  870. package/dist/visibility-_3zV3l-A.d.ts +0 -17
  871. package/dist/visibility-twHwe9Xp.js +0 -2
  872. package/dist/visibility-twHwe9Xp.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-table.spec.js","names":[],"sources":["../../src/components/data-table.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport {\n type Column,\n type ColumnDef,\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 it('actually paginates rows when showPagination is set', () => {\n const { container } = render(<DataTable columns={columns} data={people} showPagination pageSize={2} />)\n\n expect(getBodyRowNames(container)).toEqual(['Ada Lovelace', 'Grace Hopper'])\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 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
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-BnRt_P9y.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
@@ -1 +0,0 @@
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 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
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
@@ -1 +0,0 @@
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":"qUAiBA,SAAS,aAAgB,CACvB,GAAG,+EAAgF,SAAY,CAC7F,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAe,eAA4B,CAAA,EAC3C,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,EAClC,EAAC,EAAD,CAAA,SAAmB,0BAA2C,CAAA,CAClD,CAAA,CAAA,CACD,CAAA,CACT,CAAA,CAAA,CACV,EAEA,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,EAE9C,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,eAAgB,CAAC,CAAC,EAErE,OAAO,MAAM,EAAO,WAAW,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,EACvD,OAAO,EAAO,UAAU,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,EAClD,OAAO,EAAO,UAAU,0BAA0B,CAAC,CAAC,CAAC,IAAI,SAAS,CACpE,CAAC,EAED,GAAG,6EAA8E,SAAY,CAC3F,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAe,eAA4B,CAAA,EAC3C,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CAAA,CACV,EAEA,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,eAAgB,CAAC,CAAC,EACrE,MAAM,EAAO,WAAW,QAAQ,EAEhC,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,OAAQ,CAAC,CAAC,EAE7D,MAAMA,MAAc,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACrE,CAAC,EAED,GAAG,uDAAwD,SAAY,CACrE,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAe,MAAmB,CAAA,EAClC,EAAC,EAAD,CAAe,gBAAiB,GAC9B,SAAA,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CAAA,CACV,EAEA,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,MAAO,CAAC,CAAC,EAC5D,MAAM,EAAO,WAAW,QAAQ,EAEhC,OAAO,EAAO,YAAY,SAAU,CAAE,KAAM,OAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CACnE,CAAC,EAED,GAAG,0FAA2F,SAAY,CACxG,GAAM,CAAE,WAAY,EAClB,EAAC,EAAD,CAAQ,YAAA,GACN,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CACV,EAEI,EAAU,MAAM,EAAO,WAAW,QAAQ,EAC9C,OAAO,EAAQ,SAAS,CAAC,CAAC,UAAU,aAAa,EACjD,EAAQ,EAER,EACE,EAAC,EAAD,CAAQ,YAAA,GAAY,KAAK,OACvB,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CACV,EAEA,EAAU,MAAM,EAAO,WAAW,QAAQ,EAC1C,OAAO,EAAQ,SAAS,CAAC,CAAC,UAAU,UAAU,CAChD,CAAC,EAED,GAAG,4CAA6C,SAAY,CAC1D,EACE,EAAC,EAAD,CAAQ,YAAA,GACN,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CACV,EAEA,MAAM,EAAO,WAAW,QAAQ,EAEhC,EAAU,QAAQ,SAAU,CAAE,IAAK,SAAU,KAAM,QAAS,CAAC,EAE7D,MAAMA,MAAc,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACrE,CAAC,EAED,GAAG,uDAAwD,SAAY,CACrE,EACE,EAAC,EAAD,CAAQ,YAAA,GAAY,YAAa,GAC/B,SAAA,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CACV,EAEA,MAAM,EAAO,WAAW,QAAQ,EAEhC,EAAU,QAAQ,SAAU,CAAE,IAAK,SAAU,KAAM,QAAS,CAAC,EAE7D,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CACpD,CAAC,EAED,SAAS,kCAAqC,CAC5C,GAAG,kFAAmF,SAAY,CAChG,EACE,EAAC,EAAD,CAAQ,YAAA,GACN,SAAA,EAAC,EAAD,CAAe,gBAAiB,GAAhC,SAAA,CACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,EAClC,EAAC,EAAD,CAAA,SAAY,cAAwB,CAAA,EACpC,EAAC,EAAD,CAAc,gBAAA,GACZ,SAAA,EAAC,EAAD,CAAA,SAAQ,MAAY,CAAA,CACR,CAAA,CACD,GACT,CAAA,CACV,EAEA,IAAM,EAAS,MAAM,EAAO,WAAW,QAAQ,EAC/C,OAAO,EAAO,cAAc,2BAA2B,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,cAAc,EAE1F,IAAM,EAAS,EAAO,cAAc,6BAA6B,EACjE,OAAO,GAAQ,WAAW,CAAC,CAAC,UAAU,MAAM,EAE5C,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,OAAQ,CAAC,CAAC,EAC7D,MAAMA,MAAc,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACrE,CAAC,CACH,CAAC,EAED,SAAS,kBAAqB,CAC5B,GAAG,oEAAqE,SAAY,CAClF,EACE,EAAC,EAAD,CAAQ,YAAA,GACN,SAAA,EAAC,EAAD,CAAe,gBAAiB,GAAhC,SAAA,CACE,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,EAClC,EAAC,EAAD,CAAA,SAAa,SAAoB,CAAA,CACpB,GACT,CAAA,CACV,EAEA,MAAM,EAAO,WAAW,QAAQ,EAChC,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,SAAU,CAAC,CAAC,EAE/D,MAAMA,MAAc,OAAO,EAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACrE,CAAC,CACH,CAAC,EAED,GAAG,mDAAoD,SAAY,CACjE,IAAM,EAAa,EAA0B,EAE7C,EACE,EAAC,EAAD,CAAQ,YAAA,GACN,SAAA,EAAC,EAAD,CAA2B,aACzB,SAAA,EAAC,EAAD,CAAA,SAAa,UAAqB,CAAA,CACrB,CAAA,CACT,CAAA,CACV,EAEA,MAAM,EAAO,WAAW,QAAQ,EAEhC,OAAO,EAAW,OAAO,CAAC,CAAC,IAAI,SAAS,EACxC,OAAO,EAAW,SAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAC7E,CAAC,CACH,CAAC"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"donut-chart.spec.js","names":[],"sources":["../../src/components/donut-chart.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { DonutChart } from './donut-chart'\nimport type { PieChartDatum } from './pie-chart'\n\nbeforeAll(() => {\n vi.stubGlobal(\n 'ResizeObserver',\n class {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n )\n Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { configurable: true, value: 500 })\n Object.defineProperty(HTMLElement.prototype, 'offsetHeight', { configurable: true, value: 300 })\n // jsdom's getBoundingClientRect always returns zeros, which leaves recharts' ResponsiveContainer\n // stuck reporting a non-positive size and refusing to render its children (the actual chart SVG).\n // Stubbing it to match offsetWidth/offsetHeight above lets the real recharts markup mount.\n HTMLElement.prototype.getBoundingClientRect = () =>\n ({\n width: 500,\n height: 300,\n top: 0,\n left: 0,\n right: 500,\n bottom: 300,\n x: 0,\n y: 0,\n toJSON() {}\n }) as DOMRect\n})\n\nconst data: PieChartDatum[] = [\n { name: 'chrome', value: 275 },\n { name: 'safari', value: 200 },\n { name: 'firefox', value: 187 }\n]\n\n// The rendered <path class=\"recharts-sector\"> draws its outer and (when present) inner arc as\n// two \"A radius,radius,...\" commands in its `d` attribute, in that order. Reading them back out\n// lets us verify DonutChart's thickness -> innerRadius math against what recharts actually drew,\n// instead of duplicating (and risking drifting from) the component's own calculation.\nfunction sectorArcRadii(container: HTMLElement) {\n const d = container.querySelector('.recharts-sector')?.getAttribute('d') ?? ''\n return [...d.matchAll(/A\\s*([\\d.]+),/g)].map((match) => Number(match[1]))\n}\n\ndescribe('DonutChart', () => {\n it('renders with data-slot=\"donut-chart\" on the chart wrapper', () => {\n const { container } = render(<DonutChart data={data} />)\n\n expect(container.querySelector('[data-slot=\"donut-chart\"]')).not.toBeNull()\n })\n\n it('accepts a data array without throwing', () => {\n expect(() => render(<DonutChart data={data} />)).not.toThrow()\n })\n\n it('renders one recharts pie sector per data entry', () => {\n const { container } = render(<DonutChart data={data} />)\n\n expect(container.querySelectorAll('.recharts-pie-sector').length).toBe(data.length)\n })\n\n it('carves out a hollow inner radius using the default thickness of 0.35', () => {\n // animationDuration=0 disables the entrance animation so recharts paints the sector's full\n // <path> geometry on the very first (synchronous) render instead of an empty starting frame.\n const { container } = render(<DonutChart data={data} outerRadius={100} animationDuration={0} />)\n\n const [outerRadius, innerRadius] = sectorArcRadii(container) as [number, number]\n expect(outerRadius).toBe(100)\n expect(innerRadius).toBeCloseTo(65)\n })\n\n it.each([\n { thickness: 0, expectedRatio: 1 },\n { thickness: 0.5, expectedRatio: 0.5 },\n { thickness: 0.9, expectedRatio: 0.1 }\n ])(\n 'derives innerRadius from a numeric outerRadius as outerRadius * (1 - thickness) (thickness=$thickness)',\n ({ thickness, expectedRatio }) => {\n const { container } = render(\n <DonutChart data={data} outerRadius={100} thickness={thickness} animationDuration={0} />\n )\n\n const [outerRadius, innerRadius] = sectorArcRadii(container) as [number, number]\n expect(outerRadius).toBe(100)\n expect(innerRadius).toBeCloseTo(100 * expectedRatio)\n }\n )\n\n it('clamps a thickness below 0 to a ratio of 1 (fully hollow up to the outer radius)', () => {\n const { container } = render(<DonutChart data={data} outerRadius={100} thickness={-1} animationDuration={0} />)\n\n const [outerRadius, innerRadius] = sectorArcRadii(container) as [number, number]\n expect(outerRadius).toBe(100)\n expect(innerRadius).toBeCloseTo(100)\n })\n\n it.each([1, 2])(\n 'clamps a thickness of %d or more to a ratio of 0, collapsing the inner radius to a single arc',\n (thickness) => {\n const { container } = render(\n <DonutChart data={data} outerRadius={100} thickness={thickness} animationDuration={0} />\n )\n\n // A ring with innerRadius 0 is a plain pie slice: only the outer arc is drawn.\n expect(sectorArcRadii(container)).toHaveLength(1)\n }\n )\n\n it('derives a proportional innerRadius when outerRadius is a percentage string', () => {\n const { container } = render(<DonutChart data={data} outerRadius=\"50%\" thickness={0.5} animationDuration={0} />)\n\n const [outerRadius, innerRadius] = sectorArcRadii(container) as [number, number]\n expect(innerRadius / outerRadius).toBeCloseTo(0.5)\n })\n\n it('falls back to the raw outerRadius value when it does not match the percentage pattern', () => {\n expect(() => render(<DonutChart data={data} outerRadius=\"fill\" animationDuration={0} />)).not.toThrow()\n })\n\n it('renders a tooltip wrapper by default and omits it when withTooltip is false', () => {\n const { container: withTooltip } = render(<DonutChart data={data} />)\n expect(withTooltip.querySelectorAll('.recharts-tooltip-wrapper').length).toBe(1)\n\n const { container: withoutTooltip } = render(<DonutChart data={data} withTooltip={false} />)\n expect(withoutTooltip.querySelectorAll('.recharts-tooltip-wrapper').length).toBe(0)\n })\n\n it('omits the legend by default and renders it when withLegend is true', async () => {\n const { container: withoutLegend } = render(<DonutChart data={data} />)\n expect(withoutLegend.querySelectorAll('.recharts-legend-wrapper').length).toBe(0)\n\n const { container: withLegend } = render(<DonutChart data={data} withLegend />)\n expect(withLegend.querySelectorAll('.recharts-legend-wrapper').length).toBe(1)\n // Recharts registers a pie's legend payload through an internal store update that lands\n // a render pass after the initial mount, so the item labels need an async query to appear.\n expect((await screen.findAllByText('chrome')).length).toBeGreaterThan(0)\n })\n\n it('omits slice labels by default and renders them when withLabels is true', () => {\n // See the animationDuration note above: labels are also withheld while a pie is animating in.\n const { container: withoutLabels } = render(<DonutChart data={data} animationDuration={0} />)\n expect(withoutLabels.querySelectorAll('.recharts-pie-label-text').length).toBe(0)\n\n const { container: withLabels } = render(<DonutChart data={data} withLabels animationDuration={0} />)\n expect(withLabels.querySelectorAll('.recharts-pie-label-text').length).toBe(data.length)\n })\n\n it('does not throw when withTotal and a custom totalLabel are enabled', () => {\n expect(() => render(<DonutChart data={data} withTotal totalLabel=\"Sum\" />)).not.toThrow()\n })\n})\n"],"mappings":"mLAKA,cAAgB,CACd,GAAG,WACD,iBACA,KAAM,CACJ,SAAU,CAAC,CACX,WAAY,CAAC,CACb,YAAa,CAAC,CAChB,CACF,EACA,OAAO,eAAe,YAAY,UAAW,cAAe,CAAE,aAAc,GAAM,MAAO,GAAI,CAAC,EAC9F,OAAO,eAAe,YAAY,UAAW,eAAgB,CAAE,aAAc,GAAM,MAAO,GAAI,CAAC,EAI/F,YAAY,UAAU,2BACnB,CACC,MAAO,IACP,OAAQ,IACR,IAAK,EACL,KAAM,EACN,MAAO,IACP,OAAQ,IACR,EAAG,EACH,EAAG,EACH,QAAS,CAAC,CACZ,EACJ,CAAC,EAED,MAAM,EAAwB,CAC5B,CAAE,KAAM,SAAU,MAAO,GAAI,EAC7B,CAAE,KAAM,SAAU,MAAO,GAAI,EAC7B,CAAE,KAAM,UAAW,MAAO,GAAI,CAChC,EAMA,SAAS,eAAe,EAAwB,CAE9C,MAAO,CAAC,IADE,EAAU,cAAc,kBAAkB,CAAC,EAAE,aAAa,GAAG,GAAK,GAAA,CAC/D,SAAS,gBAAgB,CAAC,CAAC,CAAC,IAAK,GAAU,OAAO,EAAM,EAAE,CAAC,CAC1E,CAEA,SAAS,iBAAoB,CAC3B,GAAG,gEAAmE,CACpE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAkB,MAAO,CAAA,CAAC,EAEvD,OAAO,EAAU,cAAc,2BAA2B,CAAC,CAAC,CAAC,IAAI,SAAS,CAC5E,CAAC,EAED,GAAG,4CAA+C,CAChD,WAAa,EAAO,EAAC,EAAD,CAAkB,MAAO,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAC/D,CAAC,EAED,GAAG,qDAAwD,CACzD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAkB,MAAO,CAAA,CAAC,EAEvD,OAAO,EAAU,iBAAiB,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAK,MAAM,CACpF,CAAC,EAED,GAAG,2EAA8E,CAG/E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAkB,OAAM,YAAa,IAAK,kBAAmB,CAAI,CAAA,CAAC,EAEzF,CAAC,EAAa,GAAe,eAAe,CAAS,EAC3D,OAAO,CAAW,CAAC,CAAC,KAAK,GAAG,EAC5B,OAAO,CAAW,CAAC,CAAC,YAAY,EAAE,CACpC,CAAC,EAED,GAAG,KAAK,CACN,CAAE,UAAW,EAAG,cAAe,CAAE,EACjC,CAAE,UAAW,GAAK,cAAe,EAAI,EACrC,CAAE,UAAW,GAAK,cAAe,EAAI,CACvC,CAAC,CAAC,CACA,0GACC,CAAE,YAAW,mBAAoB,CAChC,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAkB,OAAM,YAAa,IAAgB,YAAW,kBAAmB,CAAI,CAAA,CACzF,EAEM,CAAC,EAAa,GAAe,eAAe,CAAS,EAC3D,OAAO,CAAW,CAAC,CAAC,KAAK,GAAG,EAC5B,OAAO,CAAW,CAAC,CAAC,YAAY,IAAM,CAAa,CACrD,CACF,EAEA,GAAG,uFAA0F,CAC3F,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAkB,OAAM,YAAa,IAAK,UAAW,GAAI,kBAAmB,CAAI,CAAA,CAAC,EAExG,CAAC,EAAa,GAAe,eAAe,CAAS,EAC3D,OAAO,CAAW,CAAC,CAAC,KAAK,GAAG,EAC5B,OAAO,CAAW,CAAC,CAAC,YAAY,GAAG,CACrC,CAAC,EAED,GAAG,KAAK,CAAC,EAAG,CAAC,CAAC,CAAC,CACb,gGACC,GAAc,CACb,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAkB,OAAM,YAAa,IAAgB,YAAW,kBAAmB,CAAI,CAAA,CACzF,EAGA,OAAO,eAAe,CAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAClD,CACF,EAEA,GAAG,iFAAoF,CACrF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAkB,OAAM,YAAY,MAAM,UAAW,GAAK,kBAAmB,CAAI,CAAA,CAAC,EAEzG,CAAC,EAAa,GAAe,eAAe,CAAS,EAC3D,OAAO,EAAc,CAAW,CAAC,CAAC,YAAY,EAAG,CACnD,CAAC,EAED,GAAG,4FAA+F,CAChG,WAAa,EAAO,EAAC,EAAD,CAAkB,OAAM,YAAY,OAAO,kBAAmB,CAAI,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CACxG,CAAC,EAED,GAAG,kFAAqF,CACtF,GAAM,CAAE,UAAW,GAAgB,EAAO,EAAC,EAAD,CAAkB,MAAO,CAAA,CAAC,EACpE,OAAO,EAAY,iBAAiB,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAE/E,GAAM,CAAE,UAAW,GAAmB,EAAO,EAAC,EAAD,CAAkB,OAAM,YAAa,EAAQ,CAAA,CAAC,EAC3F,OAAO,EAAe,iBAAiB,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CACpF,CAAC,EAED,GAAG,qEAAsE,SAAY,CACnF,GAAM,CAAE,UAAW,GAAkB,EAAO,EAAC,EAAD,CAAkB,MAAO,CAAA,CAAC,EACtE,OAAO,EAAc,iBAAiB,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAEhF,GAAM,CAAE,UAAW,GAAe,EAAO,EAAC,EAAD,CAAkB,OAAM,WAAA,EAAY,CAAA,CAAC,EAC9E,OAAO,EAAW,iBAAiB,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAG7E,QAAQ,MAAM,EAAO,cAAc,QAAQ,EAAA,CAAG,MAAM,CAAC,CAAC,gBAAgB,CAAC,CACzE,CAAC,EAED,GAAG,6EAAgF,CAEjF,GAAM,CAAE,UAAW,GAAkB,EAAO,EAAC,EAAD,CAAkB,OAAM,kBAAmB,CAAI,CAAA,CAAC,EAC5F,OAAO,EAAc,iBAAiB,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAEhF,GAAM,CAAE,UAAW,GAAe,EAAO,EAAC,EAAD,CAAkB,OAAM,WAAA,GAAW,kBAAmB,CAAI,CAAA,CAAC,EACpG,OAAO,EAAW,iBAAiB,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAK,MAAM,CACzF,CAAC,EAED,GAAG,wEAA2E,CAC5E,WAAa,EAAO,EAAC,EAAD,CAAkB,OAAM,UAAA,GAAU,WAAW,KAAO,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAC1F,CAAC,CACH,CAAC"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,d as t,i as n,n as r,o as i,r as a,s as o,t as s,u as c}from"../drawer-BO4mP6y1.js";import{a as l,n as u,o as d,r as f}from"../react.esm-BkhVXJ8s.js";import{jsx as p,jsxs as m}from"react/jsx-runtime";function renderBasicDrawer(l={}){return f(m(s,{children:[p(t,{children:`Open drawer`}),m(n,{...l,children:[m(o,{children:[p(c,{children:`Settings`}),p(e,{children:`Manage your preferences`})]}),p(r,{children:`Body content`}),p(i,{children:p(a,{children:`Cancel`})})]})]}))}describe(`Drawer`,()=>{it(`is closed until the trigger is activated, then opens the dialog`,async()=>{renderBasicDrawer(),expect(l.queryByRole(`dialog`)).toBeNull(),u.click(l.getByText(`Open drawer`));let e=await l.findByRole(`dialog`);expect(e.getAttribute(`data-slot`)).toBe(`drawer-content`)}),it(`closes when the built-in close button is clicked`,async()=>{renderBasicDrawer(),u.click(l.getByText(`Open drawer`)),await l.findByRole(`dialog`),u.click(l.getByRole(`button`,{name:`Close`})),await d(()=>expect(l.queryByRole(`dialog`)).toBeNull())}),it(`hides the close button when showCloseButton is false`,async()=>{renderBasicDrawer({showCloseButton:!1}),u.click(l.getByText(`Open drawer`)),await l.findByRole(`dialog`),expect(l.queryByRole(`button`,{name:`Close`})).toBeNull()}),it(`renders the title and description with their data-slot and default classes`,async()=>{renderBasicDrawer(),u.click(l.getByText(`Open drawer`));let e=await l.findByText(`Settings`),t=l.getByText(`Manage your preferences`);expect(e.getAttribute(`data-slot`)).toBe(`drawer-title`),expect(e.className).toContain(`text-base`),expect(t.getAttribute(`data-slot`)).toBe(`drawer-description`),expect(t.className).toContain(`text-muted-foreground`)}),it(`renders the body and footer with their data-slot`,async()=>{renderBasicDrawer(),u.click(l.getByText(`Open drawer`));let e=await l.findByText(`Body content`);expect(e.getAttribute(`data-slot`)).toBe(`drawer-body`),expect(l.getByText(`Cancel`).closest(`[data-slot="drawer-footer"]`)).not.toBeNull()}),it(`applies the default right/md direction and size classes to the content`,async()=>{renderBasicDrawer(),u.click(l.getByText(`Open drawer`));let e=await l.findByRole(`dialog`);expect(e.className).toContain(`inset-y-0`),expect(e.className).toContain(`right-0`),expect(e.className).toContain(`w-4/5`),expect(e.className).toContain(`sm:max-w-md`)}),it(`applies compound variant classes for a non-default direction and size`,async()=>{f(m(s,{direction:`top`,size:`lg`,children:[p(t,{children:`Open`}),p(n,{children:p(c,{children:`Top drawer`})})]})),u.click(l.getByText(`Open`));let e=await l.findByRole(`dialog`);expect(e.className).toContain(`inset-x-0`),expect(e.className).toContain(`top-0`),expect(e.className).toContain(`mb-12`),expect(e.className).toContain(`max-h-128`)}),it(`applies text-center classes to the header for horizontal (top/bottom) directions`,async()=>{f(m(s,{direction:`bottom`,children:[p(t,{children:`Open`}),p(n,{children:p(o,{children:`Header content`})})]})),u.click(l.getByText(`Open`));let e=await l.findByText(`Header content`);expect(e.getAttribute(`data-slot`)).toBe(`drawer-header`),expect(e.className).toContain(`text-center`)}),it(`does not apply text-center classes to the header for left/right directions`,async()=>{renderBasicDrawer(),u.click(l.getByText(`Open drawer`));let e=(await l.findByText(`Settings`)).closest(`[data-slot="drawer-header"]`);expect(e.className).not.toContain(`text-center`)}),it(`renders the overlay with its data-slot and forwards overlayProps`,async()=>{let{container:e}=renderBasicDrawer({overlayProps:{"data-testid":`custom-overlay`}});u.click(l.getByText(`Open drawer`)),await l.findByRole(`dialog`);let t=e.ownerDocument.querySelector(`[data-slot="drawer-overlay"]`);expect(t).not.toBeNull(),expect(t?.className).toContain(`fixed`),expect(l.getByTestId(`custom-overlay`)).toBe(t)}),it(`closes on Escape when dismissible (the default)`,async()=>{f(m(s,{children:[p(t,{children:`Open`}),p(n,{children:p(c,{children:`Dismissible`})})]})),u.click(l.getByText(`Open`));let e=await l.findByRole(`dialog`);u.keyDown(e,{key:`Escape`,code:`Escape`}),await d(()=>expect(l.queryByRole(`dialog`)).toBeNull())}),it(`ignores Escape when dismissible is false`,async()=>{f(m(s,{dismissible:!1,children:[p(t,{children:`Open`}),p(n,{children:p(c,{children:`Non dismissible`})})]})),u.click(l.getByText(`Open`));let e=await l.findByRole(`dialog`);u.keyDown(e,{key:`Escape`,code:`Escape`}),expect(l.getByRole(`dialog`)).not.toBeNull()})});
2
- //# sourceMappingURL=drawer.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drawer.spec.js","names":["waitFor"],"sources":["../../src/components/drawer.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport {\n Drawer,\n DrawerBody,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger\n} from './drawer'\n\nfunction renderBasicDrawer(contentProps: Partial<React.ComponentProps<typeof DrawerContent>> = {}) {\n return render(\n <Drawer>\n <DrawerTrigger>Open drawer</DrawerTrigger>\n <DrawerContent {...contentProps}>\n <DrawerHeader>\n <DrawerTitle>Settings</DrawerTitle>\n <DrawerDescription>Manage your preferences</DrawerDescription>\n </DrawerHeader>\n <DrawerBody>Body content</DrawerBody>\n <DrawerFooter>\n <DrawerClose>Cancel</DrawerClose>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n )\n}\n\ndescribe('Drawer', () => {\n it('is closed until the trigger is activated, then opens the dialog', async () => {\n renderBasicDrawer()\n\n expect(screen.queryByRole('dialog')).toBeNull()\n\n fireEvent.click(screen.getByText('Open drawer'))\n\n const dialog = await screen.findByRole('dialog')\n expect(dialog.getAttribute('data-slot')).toBe('drawer-content')\n })\n\n it('closes when the built-in close button is clicked', async () => {\n renderBasicDrawer()\n fireEvent.click(screen.getByText('Open drawer'))\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 renderBasicDrawer({ showCloseButton: false })\n fireEvent.click(screen.getByText('Open drawer'))\n\n await screen.findByRole('dialog')\n expect(screen.queryByRole('button', { name: 'Close' })).toBeNull()\n })\n\n it('renders the title and description with their data-slot and default classes', async () => {\n renderBasicDrawer()\n fireEvent.click(screen.getByText('Open drawer'))\n\n const title = await screen.findByText('Settings')\n const description = screen.getByText('Manage your preferences')\n\n expect(title.getAttribute('data-slot')).toBe('drawer-title')\n expect(title.className).toContain('text-base')\n expect(description.getAttribute('data-slot')).toBe('drawer-description')\n expect(description.className).toContain('text-muted-foreground')\n })\n\n it('renders the body and footer with their data-slot', async () => {\n renderBasicDrawer()\n fireEvent.click(screen.getByText('Open drawer'))\n\n const body = await screen.findByText('Body content')\n expect(body.getAttribute('data-slot')).toBe('drawer-body')\n expect(screen.getByText('Cancel').closest('[data-slot=\"drawer-footer\"]')).not.toBeNull()\n })\n\n it('applies the default right/md direction and size classes to the content', async () => {\n renderBasicDrawer()\n fireEvent.click(screen.getByText('Open drawer'))\n\n const dialog = await screen.findByRole('dialog')\n expect(dialog.className).toContain('inset-y-0')\n expect(dialog.className).toContain('right-0')\n expect(dialog.className).toContain('w-4/5')\n expect(dialog.className).toContain('sm:max-w-md')\n })\n\n it('applies compound variant classes for a non-default direction and size', async () => {\n render(\n <Drawer direction=\"top\" size=\"lg\">\n <DrawerTrigger>Open</DrawerTrigger>\n <DrawerContent>\n <DrawerTitle>Top drawer</DrawerTitle>\n </DrawerContent>\n </Drawer>\n )\n fireEvent.click(screen.getByText('Open'))\n\n const dialog = await screen.findByRole('dialog')\n expect(dialog.className).toContain('inset-x-0')\n expect(dialog.className).toContain('top-0')\n expect(dialog.className).toContain('mb-12')\n expect(dialog.className).toContain('max-h-128')\n })\n\n it('applies text-center classes to the header for horizontal (top/bottom) directions', async () => {\n render(\n <Drawer direction=\"bottom\">\n <DrawerTrigger>Open</DrawerTrigger>\n <DrawerContent>\n <DrawerHeader>Header content</DrawerHeader>\n </DrawerContent>\n </Drawer>\n )\n fireEvent.click(screen.getByText('Open'))\n\n const header = await screen.findByText('Header content')\n expect(header.getAttribute('data-slot')).toBe('drawer-header')\n expect(header.className).toContain('text-center')\n })\n\n it('does not apply text-center classes to the header for left/right directions', async () => {\n renderBasicDrawer()\n fireEvent.click(screen.getByText('Open drawer'))\n\n const title = await screen.findByText('Settings')\n const header = title.closest('[data-slot=\"drawer-header\"]') as HTMLElement\n expect(header.className).not.toContain('text-center')\n })\n\n it('renders the overlay with its data-slot and forwards overlayProps', async () => {\n const { container } = renderBasicDrawer({ overlayProps: { 'data-testid': 'custom-overlay' } as never })\n fireEvent.click(screen.getByText('Open drawer'))\n\n await screen.findByRole('dialog')\n const overlay = container.ownerDocument.querySelector('[data-slot=\"drawer-overlay\"]')\n expect(overlay).not.toBeNull()\n expect(overlay?.className).toContain('fixed')\n expect(screen.getByTestId('custom-overlay')).toBe(overlay)\n })\n\n it('closes on Escape when dismissible (the default)', async () => {\n render(\n <Drawer>\n <DrawerTrigger>Open</DrawerTrigger>\n <DrawerContent>\n <DrawerTitle>Dismissible</DrawerTitle>\n </DrawerContent>\n </Drawer>\n )\n fireEvent.click(screen.getByText('Open'))\n const dialog = await screen.findByRole('dialog')\n\n fireEvent.keyDown(dialog, { key: 'Escape', code: 'Escape' })\n\n await waitFor(() => expect(screen.queryByRole('dialog')).toBeNull())\n })\n\n it('ignores Escape when dismissible is false', async () => {\n render(\n <Drawer dismissible={false}>\n <DrawerTrigger>Open</DrawerTrigger>\n <DrawerContent>\n <DrawerTitle>Non dismissible</DrawerTitle>\n </DrawerContent>\n </Drawer>\n )\n fireEvent.click(screen.getByText('Open'))\n const dialog = await screen.findByRole('dialog')\n\n fireEvent.keyDown(dialog, { key: 'Escape', code: 'Escape' })\n\n expect(screen.getByRole('dialog')).not.toBeNull()\n })\n})\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,m as s,n as c,o as l,p as u,r as d,t as f,u as p}from"../dropdown-menu-zRuQQS5S.js";import{a as m,n as h,o as g,r as _}from"../react.esm-BkhVXJ8s.js";import{jsx as v,jsxs as y}from"react/jsx-runtime";function openMenu(e){h.pointerDown(e,{button:0,ctrlKey:!1})}describe(`DropdownMenu`,()=>{it(`is closed until the trigger is activated`,async()=>{_(y(f,{children:[v(i,{children:`Open menu`}),v(d,{children:v(e,{children:`Profile`})})]})),expect(m.queryByRole(`menu`)).toBeNull(),openMenu(m.getByText(`Open menu`));let t=await m.findByRole(`menu`);expect(t.getAttribute(`data-slot`)).toBe(`dropdown-menu-content`)}),describe(`DropdownMenuItem`,()=>{it(`calls onSelect and closes the menu when an item is chosen`,async()=>{let t=vi.fn();_(y(f,{children:[v(i,{children:`Open`}),v(d,{children:v(e,{onSelect:t,children:`Profile`})})]})),openMenu(m.getByText(`Open`));let n=await m.findByRole(`menuitem`,{name:`Profile`});h.click(n),expect(t).toHaveBeenCalledTimes(1),await g(()=>expect(m.queryByRole(`menu`)).toBeNull())}),it(`does not call onSelect for a disabled item`,async()=>{let t=vi.fn();_(y(f,{defaultOpen:!0,children:[v(i,{children:`Open`}),v(d,{children:v(e,{disabled:!0,onSelect:t,children:`Disabled`})})]}));let n=await m.findByRole(`menuitem`,{name:`Disabled`});expect(n.getAttribute(`data-disabled`)).not.toBeNull(),h.click(n),expect(t).not.toHaveBeenCalled()}),it(`exposes inset and destructive variant as data attributes`,async()=>{_(y(f,{defaultOpen:!0,children:[v(i,{children:`Open`}),v(d,{children:v(e,{inset:!0,variant:`destructive`,children:`Delete`})})]}));let t=await m.findByRole(`menuitem`,{name:`Delete`});expect(t.getAttribute(`data-inset`)).toBe(`true`),expect(t.getAttribute(`data-variant`)).toBe(`destructive`)})}),describe(`DropdownMenuCheckboxItem`,()=>{it(`reports the toggled checked state when clicked`,async()=>{let e=vi.fn();_(y(f,{defaultOpen:!0,children:[v(i,{children:`Open`}),v(d,{children:v(c,{checked:!1,onCheckedChange:e,children:`Show sidebar`})})]}));let t=await m.findByRole(`menuitemcheckbox`,{name:`Show sidebar`});expect(t.getAttribute(`aria-checked`)).toBe(`false`),h.click(t),expect(e).toHaveBeenCalledWith(!0)})}),describe(`DropdownMenuRadioGroup`,()=>{it(`reports the selected value when a different radio item is chosen`,async()=>{let e=vi.fn();_(y(f,{defaultOpen:!0,children:[v(i,{children:`Open`}),v(d,{children:y(t,{value:`list`,onValueChange:e,children:[v(o,{value:`list`,children:`List`}),v(o,{value:`grid`,children:`Grid`})]})})]}));let n=await m.findByRole(`menuitemradio`,{name:`List`}),r=m.getByRole(`menuitemradio`,{name:`Grid`});expect(n.getAttribute(`aria-checked`)).toBe(`true`),expect(r.getAttribute(`aria-checked`)).toBe(`false`),h.click(r),expect(e).toHaveBeenCalledWith(`grid`)})}),describe(`DropdownMenuSub`,()=>{it(`opens the submenu and selects an item within it`,async()=>{let t=vi.fn();_(y(f,{defaultOpen:!0,children:[v(i,{children:`Open`}),v(d,{children:y(r,{children:[v(s,{children:`More tools`}),v(u,{children:v(e,{onSelect:t,children:`Extensions`})})]})})]}));let n=await m.findByRole(`menuitem`,{name:`More tools`});h.click(n);let a=await m.findByRole(`menuitem`,{name:`Extensions`});h.click(a),expect(t).toHaveBeenCalledTimes(1)})}),it(`renders a group, label, separator and shortcut with their data-slots`,async()=>{_(y(f,{defaultOpen:!0,children:[v(i,{children:`Open`}),v(d,{children:y(a,{children:[v(l,{inset:!0,children:`Actions`}),v(p,{}),y(e,{children:[`Copy`,v(n,{children:`⌘C`})]})]})})]})),await m.findByText(`Actions`),expect(document.querySelector(`[data-slot="dropdown-menu-group"]`)).not.toBeNull();let t=document.querySelector(`[data-slot="dropdown-menu-label"]`);expect(t?.getAttribute(`data-inset`)).toBe(`true`),expect(document.querySelector(`[data-slot="dropdown-menu-separator"]`)).not.toBeNull();let r=m.getByText(`⌘C`);expect(r.getAttribute(`data-slot`)).toBe(`dropdown-menu-shortcut`)})});
2
- //# sourceMappingURL=dropdown-menu.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu.spec.js","names":["waitFor"],"sources":["../../src/components/dropdown-menu.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger\n} from './dropdown-menu'\n\nfunction openMenu(trigger: HTMLElement) {\n fireEvent.pointerDown(trigger, { button: 0, ctrlKey: false })\n}\n\ndescribe('DropdownMenu', () => {\n it('is closed until the trigger is activated', async () => {\n render(\n <DropdownMenu>\n <DropdownMenuTrigger>Open menu</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuItem>Profile</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n expect(screen.queryByRole('menu')).toBeNull()\n\n openMenu(screen.getByText('Open menu'))\n\n const menu = await screen.findByRole('menu')\n expect(menu.getAttribute('data-slot')).toBe('dropdown-menu-content')\n })\n\n describe('DropdownMenuItem', () => {\n it('calls onSelect and closes the menu when an item is chosen', async () => {\n const handleSelect = vi.fn()\n render(\n <DropdownMenu>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuItem onSelect={handleSelect}>Profile</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n openMenu(screen.getByText('Open'))\n const item = await screen.findByRole('menuitem', { name: 'Profile' })\n\n fireEvent.click(item)\n\n expect(handleSelect).toHaveBeenCalledTimes(1)\n await waitFor(() => expect(screen.queryByRole('menu')).toBeNull())\n })\n\n it('does not call onSelect for a disabled item', async () => {\n const handleSelect = vi.fn()\n render(\n <DropdownMenu defaultOpen>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuItem disabled onSelect={handleSelect}>\n Disabled\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n const item = await screen.findByRole('menuitem', { name: 'Disabled' })\n expect(item.getAttribute('data-disabled')).not.toBeNull()\n\n fireEvent.click(item)\n\n expect(handleSelect).not.toHaveBeenCalled()\n })\n\n it('exposes inset and destructive variant as data attributes', async () => {\n render(\n <DropdownMenu defaultOpen>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuItem inset variant=\"destructive\">\n Delete\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n const item = await screen.findByRole('menuitem', { name: 'Delete' })\n expect(item.getAttribute('data-inset')).toBe('true')\n expect(item.getAttribute('data-variant')).toBe('destructive')\n })\n })\n\n describe('DropdownMenuCheckboxItem', () => {\n it('reports the toggled checked state when clicked', async () => {\n const handleCheckedChange = vi.fn()\n render(\n <DropdownMenu defaultOpen>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuCheckboxItem checked={false} onCheckedChange={handleCheckedChange}>\n Show sidebar\n </DropdownMenuCheckboxItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n const checkboxItem = await screen.findByRole('menuitemcheckbox', { name: 'Show sidebar' })\n expect(checkboxItem.getAttribute('aria-checked')).toBe('false')\n\n fireEvent.click(checkboxItem)\n\n expect(handleCheckedChange).toHaveBeenCalledWith(true)\n })\n })\n\n describe('DropdownMenuRadioGroup', () => {\n it('reports the selected value when a different radio item is chosen', async () => {\n const handleValueChange = vi.fn()\n render(\n <DropdownMenu defaultOpen>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuRadioGroup value=\"list\" onValueChange={handleValueChange}>\n <DropdownMenuRadioItem value=\"list\">List</DropdownMenuRadioItem>\n <DropdownMenuRadioItem value=\"grid\">Grid</DropdownMenuRadioItem>\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n const listItem = await screen.findByRole('menuitemradio', { name: 'List' })\n const gridItem = screen.getByRole('menuitemradio', { name: 'Grid' })\n expect(listItem.getAttribute('aria-checked')).toBe('true')\n expect(gridItem.getAttribute('aria-checked')).toBe('false')\n\n fireEvent.click(gridItem)\n\n expect(handleValueChange).toHaveBeenCalledWith('grid')\n })\n })\n\n describe('DropdownMenuSub', () => {\n it('opens the submenu and selects an item within it', async () => {\n const handleSelect = vi.fn()\n render(\n <DropdownMenu defaultOpen>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>More tools</DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem onSelect={handleSelect}>Extensions</DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n const subTrigger = await screen.findByRole('menuitem', { name: 'More tools' })\n fireEvent.click(subTrigger)\n\n const subItem = await screen.findByRole('menuitem', { name: 'Extensions' })\n fireEvent.click(subItem)\n\n expect(handleSelect).toHaveBeenCalledTimes(1)\n })\n })\n\n it('renders a group, label, separator and shortcut with their data-slots', async () => {\n render(\n <DropdownMenu defaultOpen>\n <DropdownMenuTrigger>Open</DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuGroup>\n <DropdownMenuLabel inset>Actions</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuItem>\n Copy\n <DropdownMenuShortcut>⌘C</DropdownMenuShortcut>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n\n await screen.findByText('Actions')\n\n // DropdownMenuContent renders into a portal (document.body), not into the local render\n // container, so query the document directly for these slots.\n expect(document.querySelector('[data-slot=\"dropdown-menu-group\"]')).not.toBeNull()\n const label = document.querySelector('[data-slot=\"dropdown-menu-label\"]')\n expect(label?.getAttribute('data-inset')).toBe('true')\n expect(document.querySelector('[data-slot=\"dropdown-menu-separator\"]')).not.toBeNull()\n\n const shortcut = screen.getByText('⌘C')\n expect(shortcut.getAttribute('data-slot')).toBe('dropdown-menu-shortcut')\n })\n})\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,f as n,i as r,l as i,n as a,o,p as s,r as c,s as l,t as u,u as d}from"../dropzone-BLZkZThJ.js";import{a as f,n as p,o as m,r as h}from"../react.esm-BkhVXJ8s.js";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{createRef as v}from"react";function defaultOnDropFile(e){return Promise.resolve({status:`success`,result:e.name})}function DropzoneHarness(n){let f=s(n);return _(u,{...f,children:[_(a,{"data-testid":`dropzone-area`,children:[g(d,{children:`Upload files`}),g(c,{children:`PNG files up to 5MB`})]}),g(l,{}),g(r,{children:f.fileStatuses.map(n=>_(e,{file:n,children:[g(`span`,{children:n.fileName}),g(o,{}),g(i,{children:`Retry`}),g(t,{children:`Remove`})]},n.id))})]})}function renderDropzone(e={}){return h(g(DropzoneHarness,{onDropFile:defaultOnDropFile,...e}))}function getFileInput(e){return e.querySelector(`input[type="file"]`)}describe(`Dropzone`,()=>{it(`renders the trigger, description, and a hidden file input wired to the dropzone`,()=>{let{container:e}=renderDropzone();expect(f.getByRole(`button`,{name:`Upload files`})).toBeTruthy(),expect(f.getByText(`PNG files up to 5MB`)).toBeTruthy();let t=getFileInput(e);expect(t).not.toBeNull(),expect(t.className).toContain(`sr-only`)}),it(`forwards the ref on DropzoneArea to the underlying DOM node`,()=>{let e=v();function Harness(){return g(u,{...s({onDropFile:defaultOnDropFile}),children:g(a,{ref:e,"data-testid":`dropzone-area`})})}h(g(Harness,{})),expect(e.current).toBeInstanceOf(HTMLDivElement),expect(e.current).toBe(f.getByTestId(`dropzone-area`))}),it(`throws when a Dropzone subcomponent is rendered outside a Dropzone provider`,()=>{expect(()=>h(g(a,{}))).toThrow(`Dropzone components must be used within a Dropzone.`)}),it(`throws when a file-item action is rendered outside a DropzoneFileListItem`,()=>{function Harness(){return g(u,{...s({onDropFile:defaultOnDropFile}),children:g(t,{})})}expect(()=>h(g(Harness,{}))).toThrow(`Dropzone file actions must be used within a DropzoneFileListItem.`)}),describe(`accepted files`,()=>{it(`adds an accepted file and reports success through onFileUploaded`,async()=>{let e=vi.fn(),{container:t}=renderDropzone({onFileUploaded:e}),n=getFileInput(t),r=new File([`content`],`photo.png`,{type:`image/png`});p.change(n,{target:{files:[r]}}),await f.findByText(`photo.png`),await m(()=>expect(e).toHaveBeenCalledWith(`photo.png`));let i=t.querySelector(`[data-slot="dropzone-file-item"]`);expect(i?.getAttribute(`data-status`)).toBe(`success`)})}),describe(`rejected files`,()=>{it(`rejects a file with an invalid type without crashing and surfaces the allowed types`,async()=>{let e=vi.fn(),{container:t}=renderDropzone({validation:{accept:{"image/png":[`.png`]}},onRootError:e}),n=getFileInput(t),r=new File([`not an image`],`notes.txt`,{type:`text/plain`});p.change(n,{target:{files:[r]}}),await m(()=>expect(e).toHaveBeenCalled()),expect(await f.findByText(/only \.png files are allowed/i)).toBeTruthy();let i=t.querySelector(`[data-slot="dropzone-area"]`);expect(i?.getAttribute(`aria-invalid`)).toBe(`true`)}),it(`rejects a file exceeding maxSize without crashing and surfaces the size limit`,async()=>{let e=vi.fn(),{container:t}=renderDropzone({validation:{maxSize:10},onRootError:e}),n=getFileInput(t),r=new File([new Uint8Array(1024)],`large.png`,{type:`image/png`});p.change(n,{target:{files:[r]}}),await m(()=>expect(e).toHaveBeenCalled()),expect(await f.findByText(/max size is 0\.00 MB/i)).toBeTruthy()})}),describe(`DropzoneTrigger`,()=>{it(`opens the native file picker when clicked`,()=>{let e=vi.spyOn(HTMLInputElement.prototype,`click`);renderDropzone(),p.click(f.getByRole(`button`,{name:`Upload files`})),expect(e).toHaveBeenCalled(),e.mockRestore()}),it(`does not open the file picker when the click is prevented`,()=>{let e=vi.spyOn(HTMLInputElement.prototype,`click`);function Harness(){return _(u,{...s({onDropFile:defaultOnDropFile}),children:[g(a,{}),g(d,{onClick:e=>e.preventDefault(),children:`Upload`})]})}h(g(Harness,{})),p.click(f.getByRole(`button`,{name:`Upload`})),expect(e).not.toHaveBeenCalled(),e.mockRestore()})}),describe(`DropzoneRetryFile and DropzoneRemoveFile`,()=>{it(`retries an errored upload and eventually reports success`,async()=>{let e=0,t=vi.fn(async t=>(e+=1,e===1?{status:`error`,error:`network-error`}:{status:`success`,result:t.name})),n=vi.fn(),{container:r}=renderDropzone({onDropFile:t,onFileUploaded:n}),i=getFileInput(r),a=new File([`data`],`report.pdf`,{type:`application/pdf`});p.change(i,{target:{files:[a]}}),await f.findByText(`report.pdf`),expect(await f.findByText(`network-error`)).toBeTruthy(),p.click(f.getByRole(`button`,{name:`Retry`})),await m(()=>{let e=r.querySelector(`[data-slot="dropzone-file-item"]`);expect(e?.getAttribute(`data-status`)).toBe(`success`)}),expect(n).toHaveBeenCalledWith(`report.pdf`),expect(f.getByRole(`button`,{name:`Retry`}).hasAttribute(`disabled`)).toBe(!0)}),it(`removes a file from the list when the remove button is clicked`,async()=>{let e=vi.fn(),{container:t}=renderDropzone({onRemoveFile:e}),n=getFileInput(t),r=new File([`data`],`image.png`,{type:`image/png`});p.change(n,{target:{files:[r]}}),await f.findByText(`image.png`),p.click(f.getByRole(`button`,{name:`Remove`})),await m(()=>expect(f.queryByText(`image.png`)).toBeNull()),expect(e).toHaveBeenCalledTimes(1)})}),describe(`InfiniteProgress`,()=>{it(`reflects the pending, error, and success statuses on the progressbar`,()=>{let{rerender:e}=h(g(n,{status:`pending`})),t=f.getByRole(`progressbar`);expect(t.getAttribute(`aria-valuetext`)).toBe(`indeterminate`),expect(t.getAttribute(`data-status`)).toBe(`pending`),e(g(n,{status:`error`})),expect(f.getByRole(`progressbar`).getAttribute(`aria-valuetext`)).toBe(`error`),e(g(n,{status:`success`})),expect(f.getByRole(`progressbar`).getAttribute(`aria-valuetext`)).toBe(`100%`)}),it(`forwards the ref to the progressbar element`,()=>{let e=v();h(g(n,{ref:e,status:`pending`})),expect(e.current).toBe(f.getByRole(`progressbar`))})})});
2
- //# sourceMappingURL=dropzone.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropzone.spec.js","names":["waitFor"],"sources":["../../src/components/dropzone.spec.tsx"],"sourcesContent":["import { createRef } from 'react'\n\nimport { fireEvent, render, screen, waitFor } from '@testing-library/react'\n\nimport {\n Dropzone,\n DropzoneArea,\n DropzoneDescription,\n DropzoneFileList,\n DropzoneFileListItem,\n DropzoneFileMessage,\n DropzoneMessage,\n DropzoneRemoveFile,\n DropzoneRetryFile,\n DropzoneTrigger,\n InfiniteProgress,\n type UseDropzoneProps,\n useDropzone\n} from './dropzone'\n\ntype HarnessResult = string\ntype HarnessError = string\n\nfunction defaultOnDropFile(file: File) {\n return Promise.resolve({ status: 'success' as const, result: file.name })\n}\n\nfunction DropzoneHarness(props: UseDropzoneProps<HarnessResult, HarnessError>) {\n const dropzone = useDropzone<HarnessResult, HarnessError>(props)\n\n return (\n <Dropzone {...dropzone}>\n <DropzoneArea data-testid=\"dropzone-area\">\n <DropzoneTrigger>Upload files</DropzoneTrigger>\n <DropzoneDescription>PNG files up to 5MB</DropzoneDescription>\n </DropzoneArea>\n <DropzoneMessage />\n <DropzoneFileList>\n {dropzone.fileStatuses.map((file) => (\n <DropzoneFileListItem key={file.id} file={file}>\n <span>{file.fileName}</span>\n <DropzoneFileMessage />\n <DropzoneRetryFile>Retry</DropzoneRetryFile>\n <DropzoneRemoveFile>Remove</DropzoneRemoveFile>\n </DropzoneFileListItem>\n ))}\n </DropzoneFileList>\n </Dropzone>\n )\n}\n\nfunction renderDropzone(props: Partial<UseDropzoneProps<HarnessResult, HarnessError>> = {}) {\n return render(<DropzoneHarness onDropFile={defaultOnDropFile} {...props} />)\n}\n\nfunction getFileInput(container: HTMLElement) {\n return container.querySelector('input[type=\"file\"]') as HTMLInputElement\n}\n\ndescribe('Dropzone', () => {\n it('renders the trigger, description, and a hidden file input wired to the dropzone', () => {\n const { container } = renderDropzone()\n\n expect(screen.getByRole('button', { name: 'Upload files' })).toBeTruthy()\n expect(screen.getByText('PNG files up to 5MB')).toBeTruthy()\n\n const input = getFileInput(container)\n expect(input).not.toBeNull()\n expect(input.className).toContain('sr-only')\n })\n\n it('forwards the ref on DropzoneArea to the underlying DOM node', () => {\n const ref = createRef<HTMLDivElement>()\n\n function Harness() {\n const dropzone = useDropzone<HarnessResult, HarnessError>({ onDropFile: defaultOnDropFile })\n return (\n <Dropzone {...dropzone}>\n <DropzoneArea ref={ref} data-testid=\"dropzone-area\" />\n </Dropzone>\n )\n }\n\n render(<Harness />)\n\n expect(ref.current).toBeInstanceOf(HTMLDivElement)\n expect(ref.current).toBe(screen.getByTestId('dropzone-area'))\n })\n\n it('throws when a Dropzone subcomponent is rendered outside a Dropzone provider', () => {\n expect(() => render(<DropzoneArea />)).toThrow('Dropzone components must be used within a Dropzone.')\n })\n\n it('throws when a file-item action is rendered outside a DropzoneFileListItem', () => {\n function Harness() {\n const dropzone = useDropzone<HarnessResult, HarnessError>({ onDropFile: defaultOnDropFile })\n return (\n <Dropzone {...dropzone}>\n <DropzoneRemoveFile />\n </Dropzone>\n )\n }\n\n expect(() => render(<Harness />)).toThrow('Dropzone file actions must be used within a DropzoneFileListItem.')\n })\n\n describe('accepted files', () => {\n it('adds an accepted file and reports success through onFileUploaded', async () => {\n const onFileUploaded = vi.fn()\n const { container } = renderDropzone({ onFileUploaded })\n\n const input = getFileInput(container)\n const file = new File(['content'], 'photo.png', { type: 'image/png' })\n\n fireEvent.change(input, { target: { files: [file] } })\n\n await screen.findByText('photo.png')\n\n await waitFor(() => expect(onFileUploaded).toHaveBeenCalledWith('photo.png'))\n\n const fileItem = container.querySelector('[data-slot=\"dropzone-file-item\"]')\n expect(fileItem?.getAttribute('data-status')).toBe('success')\n })\n })\n\n describe('rejected files', () => {\n it('rejects a file with an invalid type without crashing and surfaces the allowed types', async () => {\n const onRootError = vi.fn()\n const { container } = renderDropzone({\n validation: { accept: { 'image/png': ['.png'] } },\n onRootError\n })\n\n const input = getFileInput(container)\n const invalidFile = new File(['not an image'], 'notes.txt', { type: 'text/plain' })\n\n fireEvent.change(input, { target: { files: [invalidFile] } })\n\n await waitFor(() => expect(onRootError).toHaveBeenCalled())\n expect(await screen.findByText(/only \\.png files are allowed/i)).toBeTruthy()\n\n const area = container.querySelector('[data-slot=\"dropzone-area\"]')\n expect(area?.getAttribute('aria-invalid')).toBe('true')\n })\n\n it('rejects a file exceeding maxSize without crashing and surfaces the size limit', async () => {\n const onRootError = vi.fn()\n const { container } = renderDropzone({\n validation: { maxSize: 10 },\n onRootError\n })\n\n const input = getFileInput(container)\n const largeFile = new File([new Uint8Array(1024)], 'large.png', { type: 'image/png' })\n\n fireEvent.change(input, { target: { files: [largeFile] } })\n\n await waitFor(() => expect(onRootError).toHaveBeenCalled())\n expect(await screen.findByText(/max size is 0\\.00 MB/i)).toBeTruthy()\n })\n })\n\n describe('DropzoneTrigger', () => {\n it('opens the native file picker when clicked', () => {\n const clickSpy = vi.spyOn(HTMLInputElement.prototype, 'click')\n renderDropzone()\n\n fireEvent.click(screen.getByRole('button', { name: 'Upload files' }))\n\n expect(clickSpy).toHaveBeenCalled()\n clickSpy.mockRestore()\n })\n\n it('does not open the file picker when the click is prevented', () => {\n const clickSpy = vi.spyOn(HTMLInputElement.prototype, 'click')\n\n function Harness() {\n const dropzone = useDropzone<HarnessResult, HarnessError>({ onDropFile: defaultOnDropFile })\n return (\n <Dropzone {...dropzone}>\n <DropzoneArea />\n <DropzoneTrigger onClick={(event) => event.preventDefault()}>Upload</DropzoneTrigger>\n </Dropzone>\n )\n }\n\n render(<Harness />)\n fireEvent.click(screen.getByRole('button', { name: 'Upload' }))\n\n expect(clickSpy).not.toHaveBeenCalled()\n clickSpy.mockRestore()\n })\n })\n\n describe('DropzoneRetryFile and DropzoneRemoveFile', () => {\n it('retries an errored upload and eventually reports success', async () => {\n let callCount = 0\n const onDropFile = vi.fn(async (file: File) => {\n callCount += 1\n if (callCount === 1) {\n return { status: 'error' as const, error: 'network-error' }\n }\n return { status: 'success' as const, result: file.name }\n })\n const onFileUploaded = vi.fn()\n\n const { container } = renderDropzone({ onDropFile, onFileUploaded })\n const input = getFileInput(container)\n const file = new File(['data'], 'report.pdf', { type: 'application/pdf' })\n\n fireEvent.change(input, { target: { files: [file] } })\n\n await screen.findByText('report.pdf')\n expect(await screen.findByText('network-error')).toBeTruthy()\n\n fireEvent.click(screen.getByRole('button', { name: 'Retry' }))\n\n await waitFor(() => {\n const fileItem = container.querySelector('[data-slot=\"dropzone-file-item\"]')\n expect(fileItem?.getAttribute('data-status')).toBe('success')\n })\n\n expect(onFileUploaded).toHaveBeenCalledWith('report.pdf')\n expect(screen.getByRole('button', { name: 'Retry' }).hasAttribute('disabled')).toBe(true)\n })\n\n it('removes a file from the list when the remove button is clicked', async () => {\n const onRemoveFile = vi.fn()\n const { container } = renderDropzone({ onRemoveFile })\n\n const input = getFileInput(container)\n const file = new File(['data'], 'image.png', { type: 'image/png' })\n\n fireEvent.change(input, { target: { files: [file] } })\n await screen.findByText('image.png')\n\n fireEvent.click(screen.getByRole('button', { name: 'Remove' }))\n\n await waitFor(() => expect(screen.queryByText('image.png')).toBeNull())\n expect(onRemoveFile).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('InfiniteProgress', () => {\n it('reflects the pending, error, and success statuses on the progressbar', () => {\n const { rerender } = render(<InfiniteProgress status=\"pending\" />)\n\n const progress = screen.getByRole('progressbar')\n expect(progress.getAttribute('aria-valuetext')).toBe('indeterminate')\n expect(progress.getAttribute('data-status')).toBe('pending')\n\n rerender(<InfiniteProgress status=\"error\" />)\n expect(screen.getByRole('progressbar').getAttribute('aria-valuetext')).toBe('error')\n\n rerender(<InfiniteProgress status=\"success\" />)\n expect(screen.getByRole('progressbar').getAttribute('aria-valuetext')).toBe('100%')\n })\n\n it('forwards the ref to the progressbar element', () => {\n const ref = createRef<HTMLDivElement>()\n render(<InfiniteProgress ref={ref} status=\"pending\" />)\n\n expect(ref.current).toBe(screen.getByRole('progressbar'))\n })\n })\n})\n"],"mappings":"kTAuBA,SAAS,kBAAkB,EAAY,CACrC,OAAO,QAAQ,QAAQ,CAAE,OAAQ,UAAoB,OAAQ,EAAK,IAAK,CAAC,CAC1E,CAEA,SAAS,gBAAgB,EAAsD,CAC7E,IAAM,EAAW,EAAyC,CAAK,EAE/D,OACE,EAAC,EAAD,CAAU,GAAI,EAAd,SAAA,CACE,EAAC,EAAD,CAAc,cAAY,gBAA1B,SAAA,CACE,EAAC,EAAD,CAAA,SAAiB,cAA6B,CAAA,EAC9C,EAAC,EAAD,CAAA,SAAqB,qBAAwC,CAAA,CACjD,IACd,EAAC,EAAD,CAAkB,CAAA,EAClB,EAAC,EAAD,CAAA,SACG,EAAS,aAAa,IAAK,GAC1B,EAAC,EAAD,CAA0C,OAA1C,SAAA,CACE,EAAC,OAAD,CAAA,SAAO,EAAK,QAAe,CAAA,EAC3B,EAAC,EAAD,CAAsB,CAAA,EACtB,EAAC,EAAD,CAAA,SAAmB,OAAwB,CAAA,EAC3C,EAAC,EAAD,CAAA,SAAoB,QAA0B,CAAA,CAC1B,CALK,EAAA,EAAK,EAKV,CACvB,CACe,CAAA,CACV,GAEd,CAEA,SAAS,eAAe,EAAgE,CAAC,EAAG,CAC1F,OAAO,EAAO,EAAC,gBAAD,CAAiB,WAAY,kBAAmB,GAAI,CAAQ,CAAA,CAAC,CAC7E,CAEA,SAAS,aAAa,EAAwB,CAC5C,OAAO,EAAU,cAAc,oBAAoB,CACrD,CAEA,SAAS,eAAkB,CACzB,GAAG,sFAAyF,CAC1F,GAAM,CAAE,aAAc,eAAe,EAErC,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,cAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EACxE,OAAO,EAAO,UAAU,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAE3D,IAAM,EAAQ,aAAa,CAAS,EACpC,OAAO,CAAK,CAAC,CAAC,IAAI,SAAS,EAC3B,OAAO,EAAM,SAAS,CAAC,CAAC,UAAU,SAAS,CAC7C,CAAC,EAED,GAAG,kEAAqE,CACtE,IAAM,EAAM,EAA0B,EAEtC,SAAS,SAAU,CAEjB,OACE,EAAC,EAAD,CAAU,GAFK,EAAyC,CAAE,WAAY,iBAAkB,CAEnE,EACnB,SAAA,EAAC,EAAD,CAAmB,MAAK,cAAY,eAAiB,CAAA,CAC7C,CAAA,CAEd,CAEA,EAAO,EAAC,QAAD,CAAU,CAAA,CAAC,EAElB,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,cAAc,EACjD,OAAO,EAAI,OAAO,CAAC,CAAC,KAAK,EAAO,YAAY,eAAe,CAAC,CAC9D,CAAC,EAED,GAAG,kFAAqF,CACtF,WAAa,EAAO,EAAC,EAAD,CAAe,CAAA,CAAC,CAAC,CAAC,CAAC,QAAQ,qDAAqD,CACtG,CAAC,EAED,GAAG,gFAAmF,CACpF,SAAS,SAAU,CAEjB,OACE,EAAC,EAAD,CAAU,GAFK,EAAyC,CAAE,WAAY,iBAAkB,CAEnE,EACnB,SAAA,EAAC,EAAD,CAAqB,CAAA,CACb,CAAA,CAEd,CAEA,WAAa,EAAO,EAAC,QAAD,CAAU,CAAA,CAAC,CAAC,CAAC,CAAC,QAAQ,mEAAmE,CAC/G,CAAC,EAED,SAAS,qBAAwB,CAC/B,GAAG,mEAAoE,SAAY,CACjF,IAAM,EAAiB,GAAG,GAAG,EACvB,CAAE,aAAc,eAAe,CAAE,gBAAe,CAAC,EAEjD,EAAQ,aAAa,CAAS,EAC9B,EAAO,IAAI,KAAK,CAAC,SAAS,EAAG,YAAa,CAAE,KAAM,WAAY,CAAC,EAErE,EAAU,OAAO,EAAO,CAAE,OAAQ,CAAE,MAAO,CAAC,CAAI,CAAE,CAAE,CAAC,EAErD,MAAM,EAAO,WAAW,WAAW,EAEnC,MAAMA,MAAc,OAAO,CAAc,CAAC,CAAC,qBAAqB,WAAW,CAAC,EAE5E,IAAM,EAAW,EAAU,cAAc,kCAAkC,EAC3E,OAAO,GAAU,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,CAC9D,CAAC,CACH,CAAC,EAED,SAAS,qBAAwB,CAC/B,GAAG,sFAAuF,SAAY,CACpG,IAAM,EAAc,GAAG,GAAG,EACpB,CAAE,aAAc,eAAe,CACnC,WAAY,CAAE,OAAQ,CAAE,YAAa,CAAC,MAAM,CAAE,CAAE,EAChD,aACF,CAAC,EAEK,EAAQ,aAAa,CAAS,EAC9B,EAAc,IAAI,KAAK,CAAC,cAAc,EAAG,YAAa,CAAE,KAAM,YAAa,CAAC,EAElF,EAAU,OAAO,EAAO,CAAE,OAAQ,CAAE,MAAO,CAAC,CAAW,CAAE,CAAE,CAAC,EAE5D,MAAMA,MAAc,OAAO,CAAW,CAAC,CAAC,iBAAiB,CAAC,EAC1D,OAAO,MAAM,EAAO,WAAW,+BAA+B,CAAC,CAAC,CAAC,WAAW,EAE5E,IAAM,EAAO,EAAU,cAAc,6BAA6B,EAClE,OAAO,GAAM,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,CACxD,CAAC,EAED,GAAG,gFAAiF,SAAY,CAC9F,IAAM,EAAc,GAAG,GAAG,EACpB,CAAE,aAAc,eAAe,CACnC,WAAY,CAAE,QAAS,EAAG,EAC1B,aACF,CAAC,EAEK,EAAQ,aAAa,CAAS,EAC9B,EAAY,IAAI,KAAK,CAAC,IAAI,WAAW,IAAI,CAAC,EAAG,YAAa,CAAE,KAAM,WAAY,CAAC,EAErF,EAAU,OAAO,EAAO,CAAE,OAAQ,CAAE,MAAO,CAAC,CAAS,CAAE,CAAE,CAAC,EAE1D,MAAMA,MAAc,OAAO,CAAW,CAAC,CAAC,iBAAiB,CAAC,EAC1D,OAAO,MAAM,EAAO,WAAW,uBAAuB,CAAC,CAAC,CAAC,WAAW,CACtE,CAAC,CACH,CAAC,EAED,SAAS,sBAAyB,CAChC,GAAG,gDAAmD,CACpD,IAAM,EAAW,GAAG,MAAM,iBAAiB,UAAW,OAAO,EAC7D,eAAe,EAEf,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,cAAe,CAAC,CAAC,EAEpE,OAAO,CAAQ,CAAC,CAAC,iBAAiB,EAClC,EAAS,YAAY,CACvB,CAAC,EAED,GAAG,gEAAmE,CACpE,IAAM,EAAW,GAAG,MAAM,iBAAiB,UAAW,OAAO,EAE7D,SAAS,SAAU,CAEjB,OACE,EAAC,EAAD,CAAU,GAFK,EAAyC,CAAE,WAAY,iBAAkB,CAEnE,EAArB,SAAA,CACE,EAAC,EAAD,CAAe,CAAA,EACf,EAAC,EAAD,CAAiB,QAAU,GAAU,EAAM,eAAe,EAAG,SAAA,QAAuB,CAAA,CAC5E,GAEd,CAEA,EAAO,EAAC,QAAD,CAAU,CAAA,CAAC,EAClB,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,CAAC,EAE9D,OAAO,CAAQ,CAAC,CAAC,IAAI,iBAAiB,EACtC,EAAS,YAAY,CACvB,CAAC,CACH,CAAC,EAED,SAAS,+CAAkD,CACzD,GAAG,2DAA4D,SAAY,CACzE,IAAI,EAAY,EACV,EAAa,GAAG,GAAG,KAAO,KAC9B,GAAa,EACT,IAAc,EACT,CAAE,OAAQ,QAAkB,MAAO,eAAgB,EAErD,CAAE,OAAQ,UAAoB,OAAQ,EAAK,IAAK,EACxD,EACK,EAAiB,GAAG,GAAG,EAEvB,CAAE,aAAc,eAAe,CAAE,aAAY,gBAAe,CAAC,EAC7D,EAAQ,aAAa,CAAS,EAC9B,EAAO,IAAI,KAAK,CAAC,MAAM,EAAG,aAAc,CAAE,KAAM,iBAAkB,CAAC,EAEzE,EAAU,OAAO,EAAO,CAAE,OAAQ,CAAE,MAAO,CAAC,CAAI,CAAE,CAAE,CAAC,EAErD,MAAM,EAAO,WAAW,YAAY,EACpC,OAAO,MAAM,EAAO,WAAW,eAAe,CAAC,CAAC,CAAC,WAAW,EAE5D,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,OAAQ,CAAC,CAAC,EAE7D,MAAMA,MAAc,CAClB,IAAM,EAAW,EAAU,cAAc,kCAAkC,EAC3E,OAAO,GAAU,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,CAC9D,CAAC,EAED,OAAO,CAAc,CAAC,CAAC,qBAAqB,YAAY,EACxD,OAAO,EAAO,UAAU,SAAU,CAAE,KAAM,OAAQ,CAAC,CAAC,CAAC,aAAa,UAAU,CAAC,CAAC,CAAC,KAAK,EAAI,CAC1F,CAAC,EAED,GAAG,iEAAkE,SAAY,CAC/E,IAAM,EAAe,GAAG,GAAG,EACrB,CAAE,aAAc,eAAe,CAAE,cAAa,CAAC,EAE/C,EAAQ,aAAa,CAAS,EAC9B,EAAO,IAAI,KAAK,CAAC,MAAM,EAAG,YAAa,CAAE,KAAM,WAAY,CAAC,EAElE,EAAU,OAAO,EAAO,CAAE,OAAQ,CAAE,MAAO,CAAC,CAAI,CAAE,CAAE,CAAC,EACrD,MAAM,EAAO,WAAW,WAAW,EAEnC,EAAU,MAAM,EAAO,UAAU,SAAU,CAAE,KAAM,QAAS,CAAC,CAAC,EAE9D,MAAMA,MAAc,OAAO,EAAO,YAAY,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,EACtE,OAAO,CAAY,CAAC,CAAC,sBAAsB,CAAC,CAC9C,CAAC,CACH,CAAC,EAED,SAAS,uBAA0B,CACjC,GAAG,2EAA8E,CAC/E,GAAM,CAAE,YAAa,EAAO,EAAC,EAAD,CAAkB,OAAO,SAAW,CAAA,CAAC,EAE3D,EAAW,EAAO,UAAU,aAAa,EAC/C,OAAO,EAAS,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,eAAe,EACpE,OAAO,EAAS,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,EAE3D,EAAS,EAAC,EAAD,CAAkB,OAAO,OAAS,CAAA,CAAC,EAC5C,OAAO,EAAO,UAAU,aAAa,CAAC,CAAC,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,OAAO,EAEnF,EAAS,EAAC,EAAD,CAAkB,OAAO,SAAW,CAAA,CAAC,EAC9C,OAAO,EAAO,UAAU,aAAa,CAAC,CAAC,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,MAAM,CACpF,CAAC,EAED,GAAG,kDAAqD,CACtD,IAAM,EAAM,EAA0B,EACtC,EAAO,EAAC,EAAD,CAAuB,MAAK,OAAO,SAAW,CAAA,CAAC,EAEtD,OAAO,EAAI,OAAO,CAAC,CAAC,KAAK,EAAO,UAAU,aAAa,CAAC,CAC1D,CAAC,CACH,CAAC,CACH,CAAC"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,i as t,n,o as r,r as i,t as a}from"../empty-BhKsDYZ5.js";import{a as o,r as s}from"../react.esm-BkhVXJ8s.js";import{jsx as c,jsxs as l}from"react/jsx-runtime";describe(`Empty`,()=>{it(`renders the root container with its data-slot and base classes`,()=>{let{container:e}=s(c(a,{children:`No results`})),t=e.querySelector(`[data-slot="empty"]`);expect(t).not.toBeNull(),expect(t?.className).toContain(`flex`),expect(t?.className).toContain(`rounded-xl`),expect(t?.textContent).toBe(`No results`)}),it(`renders EmptyHeader with its data-slot`,()=>{let{container:e}=s(c(t,{children:`Header`})),n=e.querySelector(`[data-slot="empty-header"]`);expect(n).not.toBeNull(),expect(n?.className).toContain(`flex-col`)}),it(`renders EmptyMedia with the default variant`,()=>{let{container:t}=s(c(e,{children:`icon`})),n=t.querySelector(`[data-slot="empty-icon"]`);expect(n?.getAttribute(`data-variant`)).toBe(`default`),expect(n?.className).toContain(`bg-transparent`)}),it(`renders EmptyMedia with the icon variant classes`,()=>{let{container:t}=s(c(e,{variant:`icon`,children:`icon`})),n=t.querySelector(`[data-slot="empty-icon"]`);expect(n?.getAttribute(`data-variant`)).toBe(`icon`),expect(n?.className).toContain(`bg-muted`),expect(n?.className).toContain(`rounded-lg`)}),it(`renders EmptyTitle with its data-slot`,()=>{s(c(r,{children:`Nothing here`}));let e=o.getByText(`Nothing here`);expect(e.getAttribute(`data-slot`)).toBe(`empty-title`),expect(e.className).toContain(`font-medium`)}),it(`renders EmptyDescription with its data-slot`,()=>{s(c(i,{children:`Try adjusting your filters`}));let e=o.getByText(`Try adjusting your filters`);expect(e.getAttribute(`data-slot`)).toBe(`empty-description`),expect(e.className).toContain(`text-muted-foreground`)}),it(`renders EmptyContent with its data-slot`,()=>{let{container:e}=s(c(n,{children:c(`button`,{type:`button`,children:`Retry`})})),t=e.querySelector(`[data-slot="empty-content"]`);expect(t).not.toBeNull(),expect(o.getByRole(`button`,{name:`Retry`})).not.toBeNull()}),it(`composes a full empty state with header, media, title, description and content`,()=>{let{container:u}=s(l(a,{children:[l(t,{children:[c(e,{variant:`icon`,children:`*`}),c(r,{children:`No projects`}),c(i,{children:`Create your first project to get started`})]}),c(n,{children:c(`button`,{type:`button`,children:`Create project`})})]})),d=u.querySelector(`[data-slot="empty"]`);expect(d?.querySelector(`[data-slot="empty-header"]`)).not.toBeNull(),expect(d?.querySelector(`[data-slot="empty-icon"]`)).not.toBeNull(),expect(o.getByText(`No projects`)).not.toBeNull(),expect(o.getByText(`Create your first project to get started`)).not.toBeNull(),expect(d?.querySelector(`[data-slot="empty-content"]`)).not.toBeNull()}),it(`merges custom className with the base classes`,()=>{let{container:e}=s(c(a,{className:`my-custom-class`,children:`Content`})),t=e.querySelector(`[data-slot="empty"]`);expect(t?.className).toContain(`my-custom-class`),expect(t?.className).toContain(`flex`)})});
2
- //# sourceMappingURL=empty.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"empty.spec.js","names":[],"sources":["../../src/components/empty.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from './empty'\n\ndescribe('Empty', () => {\n it('renders the root container with its data-slot and base classes', () => {\n const { container } = render(<Empty>No results</Empty>)\n\n const empty = container.querySelector('[data-slot=\"empty\"]')\n expect(empty).not.toBeNull()\n expect(empty?.className).toContain('flex')\n expect(empty?.className).toContain('rounded-xl')\n expect(empty?.textContent).toBe('No results')\n })\n\n it('renders EmptyHeader with its data-slot', () => {\n const { container } = render(<EmptyHeader>Header</EmptyHeader>)\n const header = container.querySelector('[data-slot=\"empty-header\"]')\n\n expect(header).not.toBeNull()\n expect(header?.className).toContain('flex-col')\n })\n\n it('renders EmptyMedia with the default variant', () => {\n const { container } = render(<EmptyMedia>icon</EmptyMedia>)\n const media = container.querySelector('[data-slot=\"empty-icon\"]')\n\n expect(media?.getAttribute('data-variant')).toBe('default')\n expect(media?.className).toContain('bg-transparent')\n })\n\n it('renders EmptyMedia with the icon variant classes', () => {\n const { container } = render(<EmptyMedia variant=\"icon\">icon</EmptyMedia>)\n const media = container.querySelector('[data-slot=\"empty-icon\"]')\n\n expect(media?.getAttribute('data-variant')).toBe('icon')\n expect(media?.className).toContain('bg-muted')\n expect(media?.className).toContain('rounded-lg')\n })\n\n it('renders EmptyTitle with its data-slot', () => {\n render(<EmptyTitle>Nothing here</EmptyTitle>)\n const title = screen.getByText('Nothing here')\n\n expect(title.getAttribute('data-slot')).toBe('empty-title')\n expect(title.className).toContain('font-medium')\n })\n\n it('renders EmptyDescription with its data-slot', () => {\n render(<EmptyDescription>Try adjusting your filters</EmptyDescription>)\n const description = screen.getByText('Try adjusting your filters')\n\n expect(description.getAttribute('data-slot')).toBe('empty-description')\n expect(description.className).toContain('text-muted-foreground')\n })\n\n it('renders EmptyContent with its data-slot', () => {\n const { container } = render(\n <EmptyContent>\n <button type=\"button\">Retry</button>\n </EmptyContent>\n )\n const content = container.querySelector('[data-slot=\"empty-content\"]')\n\n expect(content).not.toBeNull()\n expect(screen.getByRole('button', { name: 'Retry' })).not.toBeNull()\n })\n\n it('composes a full empty state with header, media, title, description and content', () => {\n const { container } = render(\n <Empty>\n <EmptyHeader>\n <EmptyMedia variant=\"icon\">*</EmptyMedia>\n <EmptyTitle>No projects</EmptyTitle>\n <EmptyDescription>Create your first project to get started</EmptyDescription>\n </EmptyHeader>\n <EmptyContent>\n <button type=\"button\">Create project</button>\n </EmptyContent>\n </Empty>\n )\n\n const root = container.querySelector('[data-slot=\"empty\"]')\n expect(root?.querySelector('[data-slot=\"empty-header\"]')).not.toBeNull()\n expect(root?.querySelector('[data-slot=\"empty-icon\"]')).not.toBeNull()\n expect(screen.getByText('No projects')).not.toBeNull()\n expect(screen.getByText('Create your first project to get started')).not.toBeNull()\n expect(root?.querySelector('[data-slot=\"empty-content\"]')).not.toBeNull()\n })\n\n it('merges custom className with the base classes', () => {\n const { container } = render(<Empty className=\"my-custom-class\">Content</Empty>)\n const empty = container.querySelector('[data-slot=\"empty\"]')\n\n expect(empty?.className).toContain('my-custom-class')\n expect(empty?.className).toContain('flex')\n })\n})\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"../field-DzR-XrO7.js";import{t as u}from"../checkbox-DPvW_m7k.js";import{t as d}from"../input-BgjvSP_s.js";import{t as f}from"../textarea-C8zrf9Rz.js";import{l as p,t as m,u as h}from"../select-C3QYNv4t.js";import{r as g,t as _}from"../native-select-DZW3Y7nq.js";import{a as v,r as y}from"../react.esm-BkhVXJ8s.js";import{Fragment as b,jsx as x,jsxs as S}from"react/jsx-runtime";describe(`Field`,()=>{it(`renders with the default vertical orientation`,()=>{let{container:e}=y(x(c,{children:`content`})),t=e.querySelector(`[data-slot="field"]`);expect(t.getAttribute(`data-orientation`)).toBe(`vertical`),expect(t.className).toContain(`flex-col`)}),it(`renders horizontal and responsive orientations`,()=>{let{container:e}=y(x(c,{orientation:`horizontal`,children:`content`})),{container:t}=y(x(c,{orientation:`responsive`,children:`content`})),n=e.querySelector(`[data-slot="field"]`),r=t.querySelector(`[data-slot="field"]`);expect(n.getAttribute(`data-orientation`)).toBe(`horizontal`),expect(n.className).toContain(`flex-row`),expect(r.getAttribute(`data-orientation`)).toBe(`responsive`),expect(r.className).toContain(`@md/field-group:flex-row`)}),it(`merges a custom className with its variant classes`,()=>{let{container:e}=y(x(c,{className:`custom-field`,children:`content`}));expect(e.querySelector(`[data-slot="field"]`)?.className).toContain(`custom-field`)}),describe(`automatic control id wiring`,()=>{it(`wires FieldLabel and Input with a generated id when ids are omitted`,()=>{y(S(c,{children:[x(a,{children:`Email`}),x(d,{})]}));let e=v.getByLabelText(`Email`),t=v.getByText(`Email`);expect(e.getAttribute(`id`)).toBeTruthy(),expect(t.getAttribute(`for`)).toBe(e.getAttribute(`id`))}),it(`preserves explicit input ids and label htmlFor values`,()=>{y(S(c,{children:[x(a,{htmlFor:`explicit-label-target`,children:`Email`}),x(d,{id:`explicit-input`})]})),expect(v.getByText(`Email`).getAttribute(`for`)).toBe(`explicit-label-target`),expect(document.getElementById(`explicit-input`)).not.toBeNull()}),it(`does not assign ids or throw outside Field`,()=>{let{container:e}=y(S(b,{children:[x(a,{children:`Email`}),x(d,{})]}));expect(e.querySelector(`[data-slot="field-label"]`)?.getAttribute(`for`)).toBeNull(),expect(e.querySelector(`[data-slot="input"]`)?.getAttribute(`id`)).toBeNull()}),it(`wires representative controls to the generated Field id`,()=>{y(S(b,{children:[S(c,{children:[x(a,{children:`Message`}),x(f,{})]}),S(c,{children:[x(a,{children:`Framework`}),x(_,{children:x(g,{value:`react`,children:`React`})})]}),S(c,{children:[x(a,{children:`Category`}),x(m,{children:x(p,{children:x(h,{placeholder:`Select a category`})})})]}),S(c,{children:[x(a,{children:`Terms`}),x(u,{})]})]}));for(let e of[`Message`,`Framework`,`Category`,`Terms`]){let t=v.getByText(e).getAttribute(`for`);expect(t).toBeTruthy(),expect(document.getElementById(t??``)).not.toBeNull()}})}),describe(`FieldSet`,()=>{it(`renders a fieldset with the expected data-slot and base classes`,()=>{let{container:e}=y(x(r,{children:`content`})),t=e.querySelector(`[data-slot="field-set"]`);expect(t?.tagName).toBe(`FIELDSET`),expect(t?.className).toContain(`flex-col`)})}),describe(`FieldLegend`,()=>{it(`defaults to the legend variant`,()=>{let{container:e}=y(x(s,{children:`Legend`})),t=e.querySelector(`[data-slot="field-legend"]`);expect(t?.getAttribute(`data-variant`)).toBe(`legend`)}),it(`supports the label variant`,()=>{let{container:e}=y(x(s,{variant:`label`,children:`Legend`}));expect(e.querySelector(`[data-slot="field-legend"]`)?.getAttribute(`data-variant`)).toBe(`label`)})}),describe(`FieldGroup`,()=>{it(`renders with the group data-slot and base classes`,()=>{let{container:t}=y(x(e,{children:`content`}));expect(t.querySelector(`[data-slot="field-group"]`)?.className).toContain(`flex-col`)})}),describe(`FieldContent`,()=>{it(`renders with the field-content data-slot`,()=>{let{container:e}=y(x(i,{children:`content`}));expect(e.querySelector(`[data-slot="field-content"]`)).not.toBeNull()})}),describe(`FieldTitle`,()=>{it(`renders as a div with the field-label data-slot`,()=>{let{container:e}=y(x(l,{children:`Title`})),t=e.querySelector(`[data-slot="field-label"]`);expect(t?.tagName).toBe(`DIV`),expect(t?.textContent).toBe(`Title`)})}),describe(`FieldDescription`,()=>{it(`renders as a paragraph with the field-description data-slot`,()=>{let{container:e}=y(x(o,{children:`Helper text`})),t=e.querySelector(`[data-slot="field-description"]`);expect(t?.tagName).toBe(`P`),expect(t?.textContent).toBe(`Helper text`)})}),describe(`FieldSeparator`,()=>{it(`marks data-content as false and renders no content span when childless`,()=>{let{container:e}=y(x(t,{})),n=e.querySelector(`[data-slot="field-separator"]`);expect(n?.getAttribute(`data-content`)).toBe(`false`),expect(e.querySelector(`[data-slot="field-separator-content"]`)).toBeNull()}),it(`marks data-content as true and renders the children in a content span`,()=>{let{container:e}=y(x(t,{children:`or`})),n=e.querySelector(`[data-slot="field-separator"]`),r=e.querySelector(`[data-slot="field-separator-content"]`);expect(n?.getAttribute(`data-content`)).toBe(`true`),expect(r?.textContent).toBe(`or`)})}),describe(`FieldError`,()=>{it(`renders nothing when there are no children and no errors`,()=>{let{container:e}=y(x(n,{}));expect(e.querySelector(`[data-slot="field-error"]`)).toBeNull()}),it(`renders explicit children even when errors are also provided`,()=>{y(x(n,{errors:[{message:`Ignored`}],children:`Custom message`})),expect(v.getByRole(`alert`).textContent).toBe(`Custom message`)}),it(`renders a single error message directly`,()=>{y(x(n,{errors:[{message:`Required`}]})),expect(v.getByRole(`alert`).textContent).toBe(`Required`)}),it(`renders multiple unique error messages as a list`,()=>{y(x(n,{errors:[{message:`Required`},{message:`Too short`}]}));let e=v.getByRole(`alert`).querySelectorAll(`li`);expect(e).toHaveLength(2),expect(e[0]?.textContent).toBe(`Required`),expect(e[1]?.textContent).toBe(`Too short`)}),it(`deduplicates errors sharing the same message`,()=>{y(x(n,{errors:[{message:`Required`},{message:`Required`}]}));let e=v.getByRole(`alert`);expect(e.querySelectorAll(`li`)).toHaveLength(0),expect(e.textContent).toBe(`Required`)}),it(`ignores errors without a message and undefined entries`,()=>{y(x(n,{errors:[void 0,{message:void 0}]})),expect(v.queryByRole(`alert`)).toBeNull()})})});
2
- //# sourceMappingURL=field.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field.spec.js","names":[],"sources":["../../src/components/field.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Checkbox } from './checkbox'\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldTitle\n} from './field'\nimport { Input } from './input'\nimport { NativeSelect, NativeSelectOption } from './native-select'\nimport { Select, SelectTrigger, SelectValue } from './select'\nimport { Textarea } from './textarea'\n\ndescribe('Field', () => {\n it('renders with the default vertical orientation', () => {\n const { container } = render(<Field>content</Field>)\n\n const field = container.querySelector('[data-slot=\"field\"]') as HTMLElement\n\n expect(field.getAttribute('data-orientation')).toBe('vertical')\n expect(field.className).toContain('flex-col')\n })\n\n it('renders horizontal and responsive orientations', () => {\n const { container: horizontal } = render(<Field orientation=\"horizontal\">content</Field>)\n const { container: responsive } = render(<Field orientation=\"responsive\">content</Field>)\n\n const horizontalField = horizontal.querySelector('[data-slot=\"field\"]') as HTMLElement\n const responsiveField = responsive.querySelector('[data-slot=\"field\"]') as HTMLElement\n\n expect(horizontalField.getAttribute('data-orientation')).toBe('horizontal')\n expect(horizontalField.className).toContain('flex-row')\n expect(responsiveField.getAttribute('data-orientation')).toBe('responsive')\n expect(responsiveField.className).toContain('@md/field-group:flex-row')\n })\n\n it('merges a custom className with its variant classes', () => {\n const { container } = render(<Field className=\"custom-field\">content</Field>)\n\n expect(container.querySelector('[data-slot=\"field\"]')?.className).toContain('custom-field')\n })\n\n describe('automatic control id wiring', () => {\n it('wires FieldLabel and Input with a generated id when ids are omitted', () => {\n render(\n <Field>\n <FieldLabel>Email</FieldLabel>\n <Input />\n </Field>\n )\n\n const input = screen.getByLabelText('Email')\n const label = screen.getByText('Email')\n\n expect(input.getAttribute('id')).toBeTruthy()\n expect(label.getAttribute('for')).toBe(input.getAttribute('id'))\n })\n\n it('preserves explicit input ids and label htmlFor values', () => {\n render(\n <Field>\n <FieldLabel htmlFor=\"explicit-label-target\">Email</FieldLabel>\n <Input id=\"explicit-input\" />\n </Field>\n )\n\n expect(screen.getByText('Email').getAttribute('for')).toBe('explicit-label-target')\n expect(document.getElementById('explicit-input')).not.toBeNull()\n })\n\n it('does not assign ids or throw outside Field', () => {\n const { container } = render(\n <>\n <FieldLabel>Email</FieldLabel>\n <Input />\n </>\n )\n\n expect(container.querySelector('[data-slot=\"field-label\"]')?.getAttribute('for')).toBeNull()\n expect(container.querySelector('[data-slot=\"input\"]')?.getAttribute('id')).toBeNull()\n })\n\n it('wires representative controls to the generated Field id', () => {\n render(\n <>\n <Field>\n <FieldLabel>Message</FieldLabel>\n <Textarea />\n </Field>\n\n <Field>\n <FieldLabel>Framework</FieldLabel>\n <NativeSelect>\n <NativeSelectOption value=\"react\">React</NativeSelectOption>\n </NativeSelect>\n </Field>\n\n <Field>\n <FieldLabel>Category</FieldLabel>\n <Select>\n <SelectTrigger>\n <SelectValue placeholder=\"Select a category\" />\n </SelectTrigger>\n </Select>\n </Field>\n\n <Field>\n <FieldLabel>Terms</FieldLabel>\n <Checkbox />\n </Field>\n </>\n )\n\n for (const label of ['Message', 'Framework', 'Category', 'Terms']) {\n const labelElement = screen.getByText(label)\n const controlId = labelElement.getAttribute('for')\n\n expect(controlId).toBeTruthy()\n expect(document.getElementById(controlId ?? '')).not.toBeNull()\n }\n })\n })\n\n describe('FieldSet', () => {\n it('renders a fieldset with the expected data-slot and base classes', () => {\n const { container } = render(<FieldSet>content</FieldSet>)\n\n const fieldset = container.querySelector('[data-slot=\"field-set\"]')\n\n expect(fieldset?.tagName).toBe('FIELDSET')\n expect(fieldset?.className).toContain('flex-col')\n })\n })\n\n describe('FieldLegend', () => {\n it('defaults to the legend variant', () => {\n const { container } = render(<FieldLegend>Legend</FieldLegend>)\n\n const legend = container.querySelector('[data-slot=\"field-legend\"]')\n\n expect(legend?.getAttribute('data-variant')).toBe('legend')\n })\n\n it('supports the label variant', () => {\n const { container } = render(<FieldLegend variant=\"label\">Legend</FieldLegend>)\n\n expect(container.querySelector('[data-slot=\"field-legend\"]')?.getAttribute('data-variant')).toBe('label')\n })\n })\n\n describe('FieldGroup', () => {\n it('renders with the group data-slot and base classes', () => {\n const { container } = render(<FieldGroup>content</FieldGroup>)\n\n expect(container.querySelector('[data-slot=\"field-group\"]')?.className).toContain('flex-col')\n })\n })\n\n describe('FieldContent', () => {\n it('renders with the field-content data-slot', () => {\n const { container } = render(<FieldContent>content</FieldContent>)\n\n expect(container.querySelector('[data-slot=\"field-content\"]')).not.toBeNull()\n })\n })\n\n describe('FieldTitle', () => {\n it('renders as a div with the field-label data-slot', () => {\n const { container } = render(<FieldTitle>Title</FieldTitle>)\n\n const title = container.querySelector('[data-slot=\"field-label\"]')\n\n expect(title?.tagName).toBe('DIV')\n expect(title?.textContent).toBe('Title')\n })\n })\n\n describe('FieldDescription', () => {\n it('renders as a paragraph with the field-description data-slot', () => {\n const { container } = render(<FieldDescription>Helper text</FieldDescription>)\n\n const description = container.querySelector('[data-slot=\"field-description\"]')\n\n expect(description?.tagName).toBe('P')\n expect(description?.textContent).toBe('Helper text')\n })\n })\n\n describe('FieldSeparator', () => {\n it('marks data-content as false and renders no content span when childless', () => {\n const { container } = render(<FieldSeparator />)\n\n const separator = container.querySelector('[data-slot=\"field-separator\"]')\n\n expect(separator?.getAttribute('data-content')).toBe('false')\n expect(container.querySelector('[data-slot=\"field-separator-content\"]')).toBeNull()\n })\n\n it('marks data-content as true and renders the children in a content span', () => {\n const { container } = render(<FieldSeparator>or</FieldSeparator>)\n\n const separator = container.querySelector('[data-slot=\"field-separator\"]')\n const content = container.querySelector('[data-slot=\"field-separator-content\"]')\n\n expect(separator?.getAttribute('data-content')).toBe('true')\n expect(content?.textContent).toBe('or')\n })\n })\n\n describe('FieldError', () => {\n it('renders nothing when there are no children and no errors', () => {\n const { container } = render(<FieldError />)\n\n expect(container.querySelector('[data-slot=\"field-error\"]')).toBeNull()\n })\n\n it('renders explicit children even when errors are also provided', () => {\n render(<FieldError errors={[{ message: 'Ignored' }]}>Custom message</FieldError>)\n\n expect(screen.getByRole('alert').textContent).toBe('Custom message')\n })\n\n it('renders a single error message directly', () => {\n render(<FieldError errors={[{ message: 'Required' }]} />)\n\n expect(screen.getByRole('alert').textContent).toBe('Required')\n })\n\n it('renders multiple unique error messages as a list', () => {\n render(<FieldError errors={[{ message: 'Required' }, { message: 'Too short' }]} />)\n\n const alert = screen.getByRole('alert')\n const items = alert.querySelectorAll('li')\n\n expect(items).toHaveLength(2)\n expect(items[0]?.textContent).toBe('Required')\n expect(items[1]?.textContent).toBe('Too short')\n })\n\n it('deduplicates errors sharing the same message', () => {\n render(<FieldError errors={[{ message: 'Required' }, { message: 'Required' }]} />)\n\n const alert = screen.getByRole('alert')\n\n expect(alert.querySelectorAll('li')).toHaveLength(0)\n expect(alert.textContent).toBe('Required')\n })\n\n it('ignores errors without a message and undefined entries', () => {\n render(<FieldError errors={[undefined, { message: undefined }]} />)\n\n expect(screen.queryByRole('alert')).toBeNull()\n })\n })\n})\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../flex-BC4Diiy4.js";import{r as t}from"../react.esm-BkhVXJ8s.js";import{jsx as n}from"react/jsx-runtime";describe(`Flex`,()=>{it(`renders a div with default direction and wrap, and data-slot`,()=>{let{container:r}=t(n(e,{children:`Content`})),i=r.querySelector(`[data-slot="flex"]`);expect(i).not.toBeNull(),expect(i?.tagName).toBe(`DIV`),expect(i?.getAttribute(`data-direction`)).toBe(`row`),expect(i?.getAttribute(`data-wrap`)).toBe(`false`),expect(i?.getAttribute(`data-align`)).toBeNull(),expect(i?.getAttribute(`data-justify`)).toBeNull(),expect(i?.className).toContain(`flex-row`),expect(i?.className).toContain(`flex-nowrap`)}),it(`applies the column-reverse direction variant`,()=>{let{container:r}=t(n(e,{direction:`column-reverse`,children:`Content`})),i=r.querySelector(`[data-slot="flex"]`);expect(i?.getAttribute(`data-direction`)).toBe(`column-reverse`),expect(i?.className).toContain(`flex-col-reverse`)}),it(`applies align, justify, gap and wrap variants together`,()=>{let{container:r}=t(n(e,{align:`center`,justify:`between`,gap:`lg`,wrap:!0,children:`Content`})),i=r.querySelector(`[data-slot="flex"]`);expect(i?.getAttribute(`data-align`)).toBe(`center`),expect(i?.getAttribute(`data-justify`)).toBe(`between`),expect(i?.getAttribute(`data-wrap`)).toBe(`true`),expect(i?.className).toContain(`items-center`),expect(i?.className).toContain(`justify-between`),expect(i?.className).toContain(`gap-6`),expect(i?.className).toContain(`flex-wrap`)}),it(`merges a custom className with the base styling`,()=>{let{container:r}=t(n(e,{className:`custom-flex`,children:`Content`})),i=r.querySelector(`[data-slot="flex"]`);expect(i?.className).toContain(`custom-flex`),expect(i?.className).toContain(`min-w-0`)}),it(`forwards the ref to the underlying div element`,()=>{let r={current:null};t(n(e,{ref:r,children:`Content`})),expect(r.current).not.toBeNull(),expect(r.current?.getAttribute(`data-slot`)).toBe(`flex`)})});
2
- //# sourceMappingURL=flex.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flex.spec.js","names":[],"sources":["../../src/components/flex.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Flex } from './flex'\n\ndescribe('Flex', () => {\n it('renders a div with default direction and wrap, and data-slot', () => {\n const { container } = render(<Flex>Content</Flex>)\n\n const flex = container.querySelector('[data-slot=\"flex\"]')\n\n expect(flex).not.toBeNull()\n expect(flex?.tagName).toBe('DIV')\n expect(flex?.getAttribute('data-direction')).toBe('row')\n expect(flex?.getAttribute('data-wrap')).toBe('false')\n expect(flex?.getAttribute('data-align')).toBeNull()\n expect(flex?.getAttribute('data-justify')).toBeNull()\n expect(flex?.className).toContain('flex-row')\n expect(flex?.className).toContain('flex-nowrap')\n })\n\n it('applies the column-reverse direction variant', () => {\n const { container } = render(<Flex direction=\"column-reverse\">Content</Flex>)\n\n const flex = container.querySelector('[data-slot=\"flex\"]')\n\n expect(flex?.getAttribute('data-direction')).toBe('column-reverse')\n expect(flex?.className).toContain('flex-col-reverse')\n })\n\n it('applies align, justify, gap and wrap variants together', () => {\n const { container } = render(\n <Flex align=\"center\" justify=\"between\" gap=\"lg\" wrap>\n Content\n </Flex>\n )\n\n const flex = container.querySelector('[data-slot=\"flex\"]')\n\n expect(flex?.getAttribute('data-align')).toBe('center')\n expect(flex?.getAttribute('data-justify')).toBe('between')\n expect(flex?.getAttribute('data-wrap')).toBe('true')\n expect(flex?.className).toContain('items-center')\n expect(flex?.className).toContain('justify-between')\n expect(flex?.className).toContain('gap-6')\n expect(flex?.className).toContain('flex-wrap')\n })\n\n it('merges a custom className with the base styling', () => {\n const { container } = render(<Flex className=\"custom-flex\">Content</Flex>)\n\n const flex = container.querySelector('[data-slot=\"flex\"]')\n\n expect(flex?.className).toContain('custom-flex')\n expect(flex?.className).toContain('min-w-0')\n })\n\n it('forwards the ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Flex ref={ref}>Content</Flex>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.getAttribute('data-slot')).toBe('flex')\n })\n})\n"],"mappings":"qKAIA,SAAS,WAAc,CACrB,GAAG,mEAAsE,CACvE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAM,SAAa,CAAA,CAAC,EAE3C,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,CAAI,CAAC,CAAC,IAAI,SAAS,EAC1B,OAAO,GAAM,OAAO,CAAC,CAAC,KAAK,KAAK,EAChC,OAAO,GAAM,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,EACvD,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,EACpD,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,SAAS,EAClD,OAAO,GAAM,aAAa,cAAc,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,UAAU,EAC5C,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,aAAa,CACjD,CAAC,EAED,GAAG,mDAAsD,CACvD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAM,UAAU,iBAAiB,SAAA,SAAa,CAAA,CAAC,EAEtE,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,aAAa,gBAAgB,CAAC,CAAC,CAAC,KAAK,gBAAgB,EAClE,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,kBAAkB,CACtD,CAAC,EAED,GAAG,6DAAgE,CACjE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAM,MAAM,SAAS,QAAQ,UAAU,IAAI,KAAK,KAAA,GAAK,SAAA,SAE/C,CAAA,CACR,EAEM,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EACtD,OAAO,GAAM,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,EACzD,OAAO,GAAM,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,EACnD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,cAAc,EAChD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,iBAAiB,EACnD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,OAAO,EACzC,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,WAAW,CAC/C,CAAC,EAED,GAAG,sDAAyD,CAC1D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAM,UAAU,cAAc,SAAA,SAAa,CAAA,CAAC,EAEnE,EAAO,EAAU,cAAc,oBAAoB,EAEzD,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,aAAa,EAC/C,OAAO,GAAM,SAAS,CAAC,CAAC,UAAU,SAAS,CAC7C,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAW,MAAK,SAAA,SAAa,CAAA,CAAC,EAErC,OAAO,EAAI,OAAO,CAAC,CAAC,IAAI,SAAS,EACjC,OAAO,EAAI,SAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAC5D,CAAC,CACH,CAAC"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,t}from"../grid-B3He1bGe.js";import{r as n}from"../react.esm-BkhVXJ8s.js";import{jsx as r}from"react/jsx-runtime";describe(`Grid`,()=>{it(`renders a div with data-slot and the default 12-column template`,()=>{let{container:e}=n(r(t,{children:`Content`})),i=e.querySelector(`[data-slot="grid"]`);expect(i).not.toBeNull(),expect(i?.tagName).toBe(`DIV`),expect(i?.className).toContain(`grid`),expect(i.style.getPropertyValue(`--grid-template-columns`)).toBe(`repeat(12, minmax(0, 1fr))`),expect(i.style.getPropertyValue(`--grid-gap`)).toBe(`0px`)}),it(`applies a custom templateRows and templateColumns`,()=>{let{container:e}=n(r(t,{templateColumns:`repeat(4, 1fr)`,templateRows:`repeat(2, 1fr)`,children:`Content`})),i=e.querySelector(`[data-slot="grid"]`);expect(i.style.getPropertyValue(`--grid-template-columns`)).toBe(`repeat(4, 1fr)`),expect(i.style.getPropertyValue(`--grid-template-rows`)).toBe(`repeat(2, 1fr)`)}),it(`converts the gap prop into a spacing calc value shared by row and column gap`,()=>{let{container:e}=n(r(t,{gap:`md`,children:`Content`})),i=e.querySelector(`[data-slot="grid"]`);expect(i.style.getPropertyValue(`--grid-gap`)).toBe(`calc(var(--spacing) * 4)`),expect(i.style.getPropertyValue(`--grid-row-gap`)).toBe(`var(--grid-gap)`),expect(i.style.getPropertyValue(`--grid-column-gap`)).toBe(`var(--grid-gap)`)}),it(`allows rowGap and columnGap to override the shared gap`,()=>{let{container:e}=n(r(t,{rowGap:`sm`,columnGap:`xl`,children:`Content`})),i=e.querySelector(`[data-slot="grid"]`);expect(i.style.getPropertyValue(`--grid-row-gap`)).toBe(`calc(var(--spacing) * 2)`),expect(i.style.getPropertyValue(`--grid-column-gap`)).toBe(`calc(var(--spacing) * 8)`)}),it(`forwards the ref to the underlying div element`,()=>{let e={current:null};n(r(t,{ref:e,children:`Content`})),expect(e.current).not.toBeNull(),expect(e.current?.getAttribute(`data-slot`)).toBe(`grid`)})}),describe(`GridItem`,()=>{it(`renders a div with data-slot and a default 12-column span`,()=>{let{container:t}=n(r(e,{children:`Content`})),i=t.querySelector(`[data-slot="grid-item"]`);expect(i).not.toBeNull(),expect(i.style.getPropertyValue(`--grid-item-col-span`)).toBe(`12`),expect(i.className).toContain(`min-w-0`)}),it(`applies a custom colSpan and rowSpan`,()=>{let{container:t}=n(r(e,{colSpan:4,rowSpan:2,children:`Content`})),i=t.querySelector(`[data-slot="grid-item"]`);expect(i.style.getPropertyValue(`--grid-item-col-span`)).toBe(`4`),expect(i.style.getPropertyValue(`--grid-item-row-span`)).toBe(`2`)}),it(`forwards the ref to the underlying div element`,()=>{let t={current:null};n(r(e,{ref:t,children:`Content`})),expect(t.current).not.toBeNull(),expect(t.current?.getAttribute(`data-slot`)).toBe(`grid-item`)})});
2
- //# sourceMappingURL=grid.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid.spec.js","names":[],"sources":["../../src/components/grid.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Grid, GridItem } from './grid'\n\ndescribe('Grid', () => {\n it('renders a div with data-slot and the default 12-column template', () => {\n const { container } = render(<Grid>Content</Grid>)\n\n const grid = container.querySelector('[data-slot=\"grid\"]')\n\n expect(grid).not.toBeNull()\n expect(grid?.tagName).toBe('DIV')\n expect(grid?.className).toContain('grid')\n expect((grid as HTMLElement).style.getPropertyValue('--grid-template-columns')).toBe('repeat(12, minmax(0, 1fr))')\n expect((grid as HTMLElement).style.getPropertyValue('--grid-gap')).toBe('0px')\n })\n\n it('applies a custom templateRows and templateColumns', () => {\n const { container } = render(\n <Grid templateColumns=\"repeat(4, 1fr)\" templateRows=\"repeat(2, 1fr)\">\n Content\n </Grid>\n )\n\n const grid = container.querySelector('[data-slot=\"grid\"]') as HTMLElement\n\n expect(grid.style.getPropertyValue('--grid-template-columns')).toBe('repeat(4, 1fr)')\n expect(grid.style.getPropertyValue('--grid-template-rows')).toBe('repeat(2, 1fr)')\n })\n\n it('converts the gap prop into a spacing calc value shared by row and column gap', () => {\n const { container } = render(<Grid gap=\"md\">Content</Grid>)\n\n const grid = container.querySelector('[data-slot=\"grid\"]') as HTMLElement\n\n expect(grid.style.getPropertyValue('--grid-gap')).toBe('calc(var(--spacing) * 4)')\n expect(grid.style.getPropertyValue('--grid-row-gap')).toBe('var(--grid-gap)')\n expect(grid.style.getPropertyValue('--grid-column-gap')).toBe('var(--grid-gap)')\n })\n\n it('allows rowGap and columnGap to override the shared gap', () => {\n const { container } = render(\n <Grid rowGap=\"sm\" columnGap=\"xl\">\n Content\n </Grid>\n )\n\n const grid = container.querySelector('[data-slot=\"grid\"]') as HTMLElement\n\n expect(grid.style.getPropertyValue('--grid-row-gap')).toBe('calc(var(--spacing) * 2)')\n expect(grid.style.getPropertyValue('--grid-column-gap')).toBe('calc(var(--spacing) * 8)')\n })\n\n it('forwards the ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Grid ref={ref}>Content</Grid>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.getAttribute('data-slot')).toBe('grid')\n })\n})\n\ndescribe('GridItem', () => {\n it('renders a div with data-slot and a default 12-column span', () => {\n const { container } = render(<GridItem>Content</GridItem>)\n\n const item = container.querySelector('[data-slot=\"grid-item\"]') as HTMLElement\n\n expect(item).not.toBeNull()\n expect(item.style.getPropertyValue('--grid-item-col-span')).toBe('12')\n expect(item.className).toContain('min-w-0')\n })\n\n it('applies a custom colSpan and rowSpan', () => {\n const { container } = render(\n <GridItem colSpan={4} rowSpan={2}>\n Content\n </GridItem>\n )\n\n const item = container.querySelector('[data-slot=\"grid-item\"]') as HTMLElement\n\n expect(item.style.getPropertyValue('--grid-item-col-span')).toBe('4')\n expect(item.style.getPropertyValue('--grid-item-row-span')).toBe('2')\n })\n\n it('forwards the ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<GridItem ref={ref}>Content</GridItem>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.getAttribute('data-slot')).toBe('grid-item')\n })\n})\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {}
@@ -1,2 +0,0 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../group-B6n_lMc4.js";import{r as t}from"../react.esm-BkhVXJ8s.js";import{jsx as n}from"react/jsx-runtime";describe(`Group`,()=>{it(`renders a div with default variants and data-slot`,()=>{let{container:r}=t(n(e,{children:`Content`})),i=r.querySelector(`[data-slot="group"]`);expect(i).not.toBeNull(),expect(i?.tagName).toBe(`DIV`),expect(i?.getAttribute(`data-align`)).toBe(`center`),expect(i?.getAttribute(`data-gap`)).toBe(`md`),expect(i?.getAttribute(`data-wrap`)).toBe(`true`),expect(i?.getAttribute(`data-justify`)).toBeNull(),expect(i?.className).toContain(`items-center`),expect(i?.className).toContain(`gap-4`),expect(i?.className).toContain(`flex-wrap`)}),it(`applies the requested justify variant`,()=>{let{container:r}=t(n(e,{justify:`around`,children:`Content`})),i=r.querySelector(`[data-slot="group"]`);expect(i?.getAttribute(`data-justify`)).toBe(`around`),expect(i?.className).toContain(`justify-around`)}),it(`disables wrapping when wrap is false`,()=>{let{container:r}=t(n(e,{wrap:!1,children:`Content`})),i=r.querySelector(`[data-slot="group"]`);expect(i?.getAttribute(`data-wrap`)).toBe(`false`),expect(i?.className).toContain(`flex-nowrap`)}),it(`applies align and gap variant combinations`,()=>{let{container:r}=t(n(e,{align:`stretch`,gap:`xl`,children:`Content`})),i=r.querySelector(`[data-slot="group"]`);expect(i?.getAttribute(`data-align`)).toBe(`stretch`),expect(i?.className).toContain(`items-stretch`),expect(i?.className).toContain(`gap-8`)}),it(`forwards the ref to the underlying div element`,()=>{let r={current:null};t(n(e,{ref:r,children:`Content`})),expect(r.current).not.toBeNull(),expect(r.current?.getAttribute(`data-slot`)).toBe(`group`)})});
2
- //# sourceMappingURL=group.spec.js.map