@uselets/ui 1.16.1 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (844) hide show
  1. package/README.md +2 -1
  2. package/dist/accordion-BCo2odjy.js +2 -0
  3. package/dist/accordion-BCo2odjy.js.map +1 -0
  4. package/dist/accordion-DtSr3uiA.d.ts +15 -0
  5. package/dist/alert-CJRgRQVF.js +2 -0
  6. package/dist/alert-CJRgRQVF.js.map +1 -0
  7. package/dist/alert-dialog-B_nAiD4Y.js +2 -0
  8. package/dist/alert-dialog-B_nAiD4Y.js.map +1 -0
  9. package/dist/alert-dialog-Bf41-OnT.d.ts +34 -0
  10. package/dist/alert-eivgSC_S.d.ts +18 -0
  11. package/dist/anchor-DCOyn0Xa.d.ts +15 -0
  12. package/dist/anchor-srhmShjN.js +2 -0
  13. package/dist/anchor-srhmShjN.js.map +1 -0
  14. package/dist/area-chart-DdDy8Vm3.js +2 -0
  15. package/dist/area-chart-DdDy8Vm3.js.map +1 -0
  16. package/dist/area-chart-F_4ZL20j.d.ts +40 -0
  17. package/dist/avatar-2ZS3Tx76.d.ts +21 -0
  18. package/dist/avatar-CFUwrOwG.js +2 -0
  19. package/dist/avatar-CFUwrOwG.js.map +1 -0
  20. package/dist/badge-BqpQcDFd.d.ts +16 -0
  21. package/dist/badge-Cuq_DqRS.js +2 -0
  22. package/dist/badge-Cuq_DqRS.js.map +1 -0
  23. package/dist/badge-DEgLmZYC.js +2 -0
  24. package/dist/badge-DEgLmZYC.js.map +1 -0
  25. package/dist/badge-gkezuSZY.d.ts +19 -0
  26. package/dist/bar-chart-DIgSnh_j.js +2 -0
  27. package/dist/bar-chart-DIgSnh_j.js.map +1 -0
  28. package/dist/bar-chart-DRrrfMQR.d.ts +42 -0
  29. package/dist/breadcrumb-CqNDAI8V.js +2 -0
  30. package/dist/breadcrumb-CqNDAI8V.js.map +1 -0
  31. package/dist/breadcrumb-DZFS9htN.d.ts +22 -0
  32. package/dist/button-BNGy28pv.d.ts +17 -0
  33. package/dist/button-CQbH5Glc.d.ts +19 -0
  34. package/dist/button-DGewx2nE.js +2 -0
  35. package/dist/button-DGewx2nE.js.map +1 -0
  36. package/dist/button-group-DRgqsyjS.d.ts +18 -0
  37. package/dist/button-group-WJ5LeouK.js +2 -0
  38. package/dist/button-group-WJ5LeouK.js.map +1 -0
  39. package/dist/button-oI3hbOgp.js +2 -0
  40. package/dist/button-oI3hbOgp.js.map +1 -0
  41. package/dist/calendar-C1GgjzIA.d.ts +17 -0
  42. package/dist/calendar-CW1kGXom.js +2 -0
  43. package/dist/calendar-CW1kGXom.js.map +1 -0
  44. package/dist/card-Bx6iiocl.js +2 -0
  45. package/dist/card-Bx6iiocl.js.map +1 -0
  46. package/dist/card-pWjtkTKw.d.ts +22 -0
  47. package/dist/carousel-C6e4eRJD.d.ts +43 -0
  48. package/dist/carousel-D0OTImO7.js +2 -0
  49. package/dist/carousel-D0OTImO7.js.map +1 -0
  50. package/dist/center-CFQDr205.d.ts +13 -0
  51. package/dist/center-Dl1rnq7S.js +2 -0
  52. package/dist/center-Dl1rnq7S.js.map +1 -0
  53. package/dist/chart-Ci4V8B8v.js +8 -0
  54. package/dist/chart-Ci4V8B8v.js.map +1 -0
  55. package/dist/checkbox-DPvW_m7k.js +2 -0
  56. package/dist/checkbox-DPvW_m7k.js.map +1 -0
  57. package/dist/checkbox-y0XBdH4a.d.ts +21 -0
  58. package/dist/code-A6JERAsm.js +2 -0
  59. package/dist/code-A6JERAsm.js.map +1 -0
  60. package/dist/code-Cqoacc61.d.ts +8 -0
  61. package/dist/collapsible-BH8BqfTd.js +2 -0
  62. package/dist/collapsible-BH8BqfTd.js.map +1 -0
  63. package/dist/collapsible-CLSCZ630.d.ts +12 -0
  64. package/dist/color-DJvQFSl5.d.ts +19 -0
  65. package/dist/color-Don4qaht.js +2 -0
  66. package/dist/color-Don4qaht.js.map +1 -0
  67. package/dist/combobox-DkCRXUxd.d.ts +51 -0
  68. package/dist/combobox-fNAIovsN.js +2 -0
  69. package/dist/combobox-fNAIovsN.js.map +1 -0
  70. package/dist/command-0wTb46Ym.js +2 -0
  71. package/dist/command-0wTb46Ym.js.map +1 -0
  72. package/dist/command-D4pNOx0J.d.ts +31 -0
  73. package/dist/components/accordion.d.ts +2 -15
  74. package/dist/components/accordion.js +1 -2
  75. package/dist/components/accordion.spec.d.ts +1 -0
  76. package/dist/components/accordion.spec.js +2 -0
  77. package/dist/components/accordion.spec.js.map +1 -0
  78. package/dist/components/alert-dialog.d.ts +2 -34
  79. package/dist/components/alert-dialog.js +1 -2
  80. package/dist/components/alert-dialog.spec.d.ts +1 -0
  81. package/dist/components/alert-dialog.spec.js +2 -0
  82. package/dist/components/alert-dialog.spec.js.map +1 -0
  83. package/dist/components/alert.d.ts +2 -18
  84. package/dist/components/alert.js +1 -2
  85. package/dist/components/alert.spec.d.ts +1 -0
  86. package/dist/components/alert.spec.js +2 -0
  87. package/dist/components/alert.spec.js.map +1 -0
  88. package/dist/components/anchor.d.ts +2 -15
  89. package/dist/components/anchor.js +1 -2
  90. package/dist/components/anchor.spec.d.ts +1 -0
  91. package/dist/components/anchor.spec.js +2 -0
  92. package/dist/components/anchor.spec.js.map +1 -0
  93. package/dist/components/area-chart.d.ts +2 -40
  94. package/dist/components/area-chart.js +1 -2
  95. package/dist/components/area-chart.spec.d.ts +1 -0
  96. package/dist/components/area-chart.spec.js +2 -0
  97. package/dist/components/area-chart.spec.js.map +1 -0
  98. package/dist/components/avatar.d.ts +2 -21
  99. package/dist/components/avatar.js +1 -2
  100. package/dist/components/avatar.spec.d.ts +1 -0
  101. package/dist/components/avatar.spec.js +2 -0
  102. package/dist/components/avatar.spec.js.map +1 -0
  103. package/dist/components/badge.d.ts +2 -16
  104. package/dist/components/badge.js +1 -2
  105. package/dist/components/badge.spec.d.ts +1 -0
  106. package/dist/components/badge.spec.js +2 -0
  107. package/dist/components/badge.spec.js.map +1 -0
  108. package/dist/components/bar-chart.d.ts +2 -42
  109. package/dist/components/bar-chart.js +1 -2
  110. package/dist/components/bar-chart.spec.d.ts +1 -0
  111. package/dist/components/bar-chart.spec.js +2 -0
  112. package/dist/components/bar-chart.spec.js.map +1 -0
  113. package/dist/components/breadcrumb.d.ts +2 -22
  114. package/dist/components/breadcrumb.js +1 -2
  115. package/dist/components/breadcrumb.spec.d.ts +1 -0
  116. package/dist/components/breadcrumb.spec.js +2 -0
  117. package/dist/components/breadcrumb.spec.js.map +1 -0
  118. package/dist/components/button-group.d.ts +2 -18
  119. package/dist/components/button-group.js +1 -2
  120. package/dist/components/button-group.spec.d.ts +1 -0
  121. package/dist/components/button-group.spec.js +2 -0
  122. package/dist/components/button-group.spec.js.map +1 -0
  123. package/dist/components/button.d.ts +2 -17
  124. package/dist/components/button.js +1 -2
  125. package/dist/components/button.spec.d.ts +1 -0
  126. package/dist/components/button.spec.js +2 -0
  127. package/dist/components/button.spec.js.map +1 -0
  128. package/dist/components/calendar.d.ts +2 -17
  129. package/dist/components/calendar.js +1 -2
  130. package/dist/components/calendar.spec.d.ts +1 -0
  131. package/dist/components/calendar.spec.js +2 -0
  132. package/dist/components/calendar.spec.js.map +1 -0
  133. package/dist/components/card.d.ts +2 -22
  134. package/dist/components/card.js +1 -2
  135. package/dist/components/card.spec.d.ts +1 -0
  136. package/dist/components/card.spec.js +2 -0
  137. package/dist/components/card.spec.js.map +1 -0
  138. package/dist/components/carousel.d.ts +2 -43
  139. package/dist/components/carousel.js +1 -2
  140. package/dist/components/carousel.spec.js +1 -93
  141. package/dist/components/carousel.spec.js.map +1 -1
  142. package/dist/components/center.d.ts +2 -13
  143. package/dist/components/center.js +1 -2
  144. package/dist/components/center.spec.d.ts +1 -0
  145. package/dist/components/center.spec.js +2 -0
  146. package/dist/components/center.spec.js.map +1 -0
  147. package/dist/components/chart.js +1 -8
  148. package/dist/components/chart.spec.d.ts +1 -0
  149. package/dist/components/chart.spec.js +2 -0
  150. package/dist/components/chart.spec.js.map +1 -0
  151. package/dist/components/checkbox.d.ts +2 -21
  152. package/dist/components/checkbox.js +1 -2
  153. package/dist/components/checkbox.spec.d.ts +1 -0
  154. package/dist/components/checkbox.spec.js +2 -0
  155. package/dist/components/checkbox.spec.js.map +1 -0
  156. package/dist/components/code.d.ts +2 -8
  157. package/dist/components/code.js +1 -2
  158. package/dist/components/code.spec.d.ts +1 -0
  159. package/dist/components/code.spec.js +2 -0
  160. package/dist/components/code.spec.js.map +1 -0
  161. package/dist/components/collapsible.d.ts +2 -12
  162. package/dist/components/collapsible.js +1 -2
  163. package/dist/components/collapsible.spec.d.ts +1 -0
  164. package/dist/components/collapsible.spec.js +2 -0
  165. package/dist/components/collapsible.spec.js.map +1 -0
  166. package/dist/components/combobox.d.ts +2 -51
  167. package/dist/components/combobox.js +1 -2
  168. package/dist/components/combobox.spec.d.ts +1 -0
  169. package/dist/components/combobox.spec.js +2 -0
  170. package/dist/components/combobox.spec.js.map +1 -0
  171. package/dist/components/command.d.ts +2 -31
  172. package/dist/components/command.js +1 -2
  173. package/dist/components/command.spec.d.ts +1 -0
  174. package/dist/components/command.spec.js +2 -0
  175. package/dist/components/command.spec.js.map +1 -0
  176. package/dist/components/container.d.ts +2 -12
  177. package/dist/components/container.js +1 -2
  178. package/dist/components/container.spec.d.ts +1 -0
  179. package/dist/components/container.spec.js +2 -0
  180. package/dist/components/container.spec.js.map +1 -0
  181. package/dist/components/data-table.d.ts +2 -111
  182. package/dist/components/data-table.js +1 -2
  183. package/dist/components/data-table.spec.d.ts +1 -0
  184. package/dist/components/data-table.spec.js +2 -0
  185. package/dist/components/data-table.spec.js.map +1 -0
  186. package/dist/components/date-range-picker.d.ts +3 -55
  187. package/dist/components/date-range-picker.js +1 -2
  188. package/dist/components/date-range-picker.spec.d.ts +1 -0
  189. package/dist/components/date-range-picker.spec.js +2 -0
  190. package/dist/components/date-range-picker.spec.js.map +1 -0
  191. package/dist/components/dialog.d.ts +2 -42
  192. package/dist/components/dialog.js +1 -2
  193. package/dist/components/dialog.spec.d.ts +1 -0
  194. package/dist/components/dialog.spec.js +2 -0
  195. package/dist/components/dialog.spec.js.map +1 -0
  196. package/dist/components/donut-chart.d.ts +2 -13
  197. package/dist/components/donut-chart.js +1 -2
  198. package/dist/components/donut-chart.spec.d.ts +1 -0
  199. package/dist/components/donut-chart.spec.js +2 -0
  200. package/dist/components/donut-chart.spec.js.map +1 -0
  201. package/dist/components/drawer.d.ts +2 -43
  202. package/dist/components/drawer.js +1 -2
  203. package/dist/components/drawer.spec.d.ts +1 -0
  204. package/dist/components/drawer.spec.js +2 -0
  205. package/dist/components/drawer.spec.js.map +1 -0
  206. package/dist/components/dropdown-menu.d.ts +2 -48
  207. package/dist/components/dropdown-menu.js +1 -2
  208. package/dist/components/dropdown-menu.spec.d.ts +1 -0
  209. package/dist/components/dropdown-menu.spec.js +2 -0
  210. package/dist/components/dropdown-menu.spec.js.map +1 -0
  211. package/dist/components/dropzone.d.ts +2 -102
  212. package/dist/components/dropzone.js +1 -2
  213. package/dist/components/dropzone.spec.d.ts +1 -0
  214. package/dist/components/dropzone.spec.js +2 -0
  215. package/dist/components/dropzone.spec.js.map +1 -0
  216. package/dist/components/empty.d.ts +2 -21
  217. package/dist/components/empty.js +1 -2
  218. package/dist/components/empty.spec.d.ts +1 -0
  219. package/dist/components/empty.spec.js +2 -0
  220. package/dist/components/empty.spec.js.map +1 -0
  221. package/dist/components/field.d.ts +2 -39
  222. package/dist/components/field.js +1 -2
  223. package/dist/components/field.spec.js +1 -1
  224. package/dist/components/field.spec.js.map +1 -1
  225. package/dist/components/flex.d.ts +2 -16
  226. package/dist/components/flex.js +1 -2
  227. package/dist/components/flex.spec.d.ts +1 -0
  228. package/dist/components/flex.spec.js +2 -0
  229. package/dist/components/flex.spec.js.map +1 -0
  230. package/dist/components/grid.d.ts +2 -20
  231. package/dist/components/grid.js +1 -2
  232. package/dist/components/grid.spec.d.ts +1 -0
  233. package/dist/components/grid.spec.js +2 -0
  234. package/dist/components/grid.spec.js.map +1 -0
  235. package/dist/components/group.d.ts +2 -15
  236. package/dist/components/group.js +1 -2
  237. package/dist/components/group.spec.d.ts +1 -0
  238. package/dist/components/group.spec.js +2 -0
  239. package/dist/components/group.spec.js.map +1 -0
  240. package/dist/components/heading.d.ts +2 -14
  241. package/dist/components/heading.js +1 -2
  242. package/dist/components/heading.spec.d.ts +1 -0
  243. package/dist/components/heading.spec.js +2 -0
  244. package/dist/components/heading.spec.js.map +1 -0
  245. package/dist/components/hover-card.d.ts +2 -13
  246. package/dist/components/hover-card.js +1 -2
  247. package/dist/components/hover-card.spec.d.ts +1 -0
  248. package/dist/components/hover-card.spec.js +2 -0
  249. package/dist/components/hover-card.spec.js.map +1 -0
  250. package/dist/components/input-group.d.ts +2 -26
  251. package/dist/components/input-group.js +1 -2
  252. package/dist/components/input-group.spec.d.ts +1 -0
  253. package/dist/components/input-group.spec.js +2 -0
  254. package/dist/components/input-group.spec.js.map +1 -0
  255. package/dist/components/input-otp.d.ts +2 -19
  256. package/dist/components/input-otp.js +1 -2
  257. package/dist/components/input-otp.spec.d.ts +1 -0
  258. package/dist/components/input-otp.spec.js +2 -0
  259. package/dist/components/input-otp.spec.js.map +1 -0
  260. package/dist/components/input.d.ts +2 -8
  261. package/dist/components/input.js +1 -2
  262. package/dist/components/input.spec.d.ts +1 -0
  263. package/dist/components/input.spec.js +2 -0
  264. package/dist/components/input.spec.js.map +1 -0
  265. package/dist/components/kbd.d.ts +2 -10
  266. package/dist/components/kbd.js +1 -2
  267. package/dist/components/kbd.spec.d.ts +1 -0
  268. package/dist/components/kbd.spec.js +2 -0
  269. package/dist/components/kbd.spec.js.map +1 -0
  270. package/dist/components/label.d.ts +2 -9
  271. package/dist/components/label.js +1 -2
  272. package/dist/components/label.spec.d.ts +1 -0
  273. package/dist/components/label.spec.js +2 -0
  274. package/dist/components/label.spec.js.map +1 -0
  275. package/dist/components/list.d.ts +2 -25
  276. package/dist/components/list.js +1 -2
  277. package/dist/components/list.spec.d.ts +1 -0
  278. package/dist/components/list.spec.js +2 -0
  279. package/dist/components/list.spec.js.map +1 -0
  280. package/dist/components/logo.d.ts +2 -0
  281. package/dist/components/logo.js +1 -0
  282. package/dist/components/logo.spec.d.ts +1 -0
  283. package/dist/components/logo.spec.js +2 -0
  284. package/dist/components/logo.spec.js.map +1 -0
  285. package/dist/components/marker.d.ts +2 -18
  286. package/dist/components/marker.js +1 -2
  287. package/dist/components/marker.spec.d.ts +1 -0
  288. package/dist/components/marker.spec.js +2 -0
  289. package/dist/components/marker.spec.js.map +1 -0
  290. package/dist/components/mask-input.d.ts +2 -16
  291. package/dist/components/mask-input.js +1 -2
  292. package/dist/components/mask-input.spec.d.ts +1 -0
  293. package/dist/components/mask-input.spec.js +2 -0
  294. package/dist/components/mask-input.spec.js.map +1 -0
  295. package/dist/components/native-select.d.ts +2 -14
  296. package/dist/components/native-select.js +1 -2
  297. package/dist/components/native-select.spec.d.ts +1 -0
  298. package/dist/components/native-select.spec.js +2 -0
  299. package/dist/components/native-select.spec.js.map +1 -0
  300. package/dist/components/navigation-menu.d.ts +2 -26
  301. package/dist/components/navigation-menu.js +1 -2
  302. package/dist/components/navigation-menu.spec.d.ts +1 -0
  303. package/dist/components/navigation-menu.spec.js +2 -0
  304. package/dist/components/navigation-menu.spec.js.map +1 -0
  305. package/dist/components/number-field.d.ts +2 -35
  306. package/dist/components/number-field.js +1 -2
  307. package/dist/components/number-field.spec.d.ts +1 -0
  308. package/dist/components/number-field.spec.js +2 -0
  309. package/dist/components/number-field.spec.js.map +1 -0
  310. package/dist/components/pagination.d.ts +2 -27
  311. package/dist/components/pagination.js +1 -2
  312. package/dist/components/pagination.spec.d.ts +1 -0
  313. package/dist/components/pagination.spec.js +2 -0
  314. package/dist/components/pagination.spec.js.map +1 -0
  315. package/dist/components/phone-input.d.ts +2 -13
  316. package/dist/components/phone-input.js +1 -2
  317. package/dist/components/phone-input.spec.d.ts +1 -0
  318. package/dist/components/phone-input.spec.js +2 -0
  319. package/dist/components/phone-input.spec.js.map +1 -0
  320. package/dist/components/pie-chart.d.ts +2 -42
  321. package/dist/components/pie-chart.js +1 -2
  322. package/dist/components/pie-chart.spec.d.ts +1 -0
  323. package/dist/components/pie-chart.spec.js +2 -0
  324. package/dist/components/pie-chart.spec.js.map +1 -0
  325. package/dist/components/popover.d.ts +2 -21
  326. package/dist/components/popover.js +1 -2
  327. package/dist/components/popover.spec.d.ts +1 -0
  328. package/dist/components/popover.spec.js +2 -0
  329. package/dist/components/popover.spec.js.map +1 -0
  330. package/dist/components/progress.d.ts +2 -14
  331. package/dist/components/progress.js +1 -2
  332. package/dist/components/progress.spec.d.ts +1 -0
  333. package/dist/components/progress.spec.js +2 -0
  334. package/dist/components/progress.spec.js.map +1 -0
  335. package/dist/components/radio-group.d.ts +2 -25
  336. package/dist/components/radio-group.js +1 -2
  337. package/dist/components/radio-group.spec.d.ts +1 -0
  338. package/dist/components/radio-group.spec.js +2 -0
  339. package/dist/components/radio-group.spec.js.map +1 -0
  340. package/dist/components/resizable.d.ts +2 -14
  341. package/dist/components/resizable.js +1 -2
  342. package/dist/components/resizable.spec.d.ts +1 -0
  343. package/dist/components/resizable.spec.js +2 -0
  344. package/dist/components/resizable.spec.js.map +1 -0
  345. package/dist/components/ring-progress.d.ts +2 -17
  346. package/dist/components/ring-progress.js +1 -2
  347. package/dist/components/ring-progress.spec.d.ts +1 -0
  348. package/dist/components/ring-progress.spec.js +2 -0
  349. package/dist/components/ring-progress.spec.js.map +1 -0
  350. package/dist/components/scroll-area.d.ts +2 -11
  351. package/dist/components/scroll-area.js +1 -2
  352. package/dist/components/scroll-area.spec.d.ts +1 -0
  353. package/dist/components/scroll-area.spec.js +2 -0
  354. package/dist/components/scroll-area.spec.js.map +1 -0
  355. package/dist/components/select.d.ts +2 -29
  356. package/dist/components/select.js +1 -2
  357. package/dist/components/select.spec.d.ts +1 -0
  358. package/dist/components/select.spec.js +2 -0
  359. package/dist/components/select.spec.js.map +1 -0
  360. package/dist/components/separator.d.ts +2 -9
  361. package/dist/components/separator.js +1 -2
  362. package/dist/components/separator.spec.d.ts +1 -0
  363. package/dist/components/separator.spec.js +2 -0
  364. package/dist/components/separator.spec.js.map +1 -0
  365. package/dist/components/sidebar.d.ts +2 -96
  366. package/dist/components/sidebar.js +1 -2
  367. package/dist/components/sidebar.spec.d.ts +1 -0
  368. package/dist/components/sidebar.spec.js +2 -0
  369. package/dist/components/sidebar.spec.js.map +1 -0
  370. package/dist/components/simple-grid.d.ts +2 -14
  371. package/dist/components/simple-grid.js +1 -2
  372. package/dist/components/simple-grid.spec.d.ts +1 -0
  373. package/dist/components/simple-grid.spec.js +2 -0
  374. package/dist/components/simple-grid.spec.js.map +1 -0
  375. package/dist/components/skeleton.d.ts +2 -10
  376. package/dist/components/skeleton.js +1 -2
  377. package/dist/components/skeleton.spec.js +1 -1
  378. package/dist/components/skeleton.spec.js.map +1 -1
  379. package/dist/components/slider.d.ts +2 -9
  380. package/dist/components/slider.js +1 -2
  381. package/dist/components/slider.spec.d.ts +1 -0
  382. package/dist/components/slider.spec.js +2 -0
  383. package/dist/components/slider.spec.js.map +1 -0
  384. package/dist/components/sonner.d.ts +2 -8
  385. package/dist/components/sonner.js +1 -2
  386. package/dist/components/sonner.spec.d.ts +1 -0
  387. package/dist/components/sonner.spec.js +2 -0
  388. package/dist/components/sonner.spec.js.map +1 -0
  389. package/dist/components/spinner.d.ts +2 -12
  390. package/dist/components/spinner.js +1 -2
  391. package/dist/components/spinner.spec.d.ts +1 -0
  392. package/dist/components/spinner.spec.js +2 -0
  393. package/dist/components/spinner.spec.js.map +1 -0
  394. package/dist/components/stack.d.ts +2 -14
  395. package/dist/components/stack.js +1 -2
  396. package/dist/components/stack.spec.d.ts +1 -0
  397. package/dist/components/stack.spec.js +2 -0
  398. package/dist/components/stack.spec.js.map +1 -0
  399. package/dist/components/stepper.d.ts +2 -71
  400. package/dist/components/stepper.js +1 -2
  401. package/dist/components/stepper.spec.d.ts +1 -0
  402. package/dist/components/stepper.spec.js +2 -0
  403. package/dist/components/stepper.spec.js.map +1 -0
  404. package/dist/components/switch.d.ts +2 -17
  405. package/dist/components/switch.js +1 -2
  406. package/dist/components/switch.spec.d.ts +1 -0
  407. package/dist/components/switch.spec.js +2 -0
  408. package/dist/components/switch.spec.js.map +1 -0
  409. package/dist/components/table.d.ts +2 -33
  410. package/dist/components/table.js +1 -2
  411. package/dist/components/table.spec.d.ts +1 -0
  412. package/dist/components/table.spec.js +2 -0
  413. package/dist/components/table.spec.js.map +1 -0
  414. package/dist/components/tabs.d.ts +2 -21
  415. package/dist/components/tabs.js +1 -2
  416. package/dist/components/tabs.spec.d.ts +1 -0
  417. package/dist/components/tabs.spec.js +2 -0
  418. package/dist/components/tabs.spec.js.map +1 -0
  419. package/dist/components/text.d.ts +2 -14
  420. package/dist/components/text.js +1 -2
  421. package/dist/components/text.spec.d.ts +1 -0
  422. package/dist/components/text.spec.js +2 -0
  423. package/dist/components/text.spec.js.map +1 -0
  424. package/dist/components/textarea.d.ts +2 -8
  425. package/dist/components/textarea.js +1 -2
  426. package/dist/components/textarea.spec.d.ts +1 -0
  427. package/dist/components/textarea.spec.js +2 -0
  428. package/dist/components/textarea.spec.js.map +1 -0
  429. package/dist/components/theme.d.ts +2 -22
  430. package/dist/components/theme.js +1 -2
  431. package/dist/components/theme.spec.d.ts +1 -0
  432. package/dist/components/theme.spec.js +2 -0
  433. package/dist/components/theme.spec.js.map +1 -0
  434. package/dist/components/timeline.d.ts +2 -61
  435. package/dist/components/timeline.js +1 -2
  436. package/dist/components/timeline.spec.d.ts +1 -0
  437. package/dist/components/timeline.spec.js +2 -0
  438. package/dist/components/timeline.spec.js.map +1 -0
  439. package/dist/components/toggle-group.d.ts +2 -16
  440. package/dist/components/toggle-group.js +1 -2
  441. package/dist/components/toggle-group.spec.d.ts +1 -0
  442. package/dist/components/toggle-group.spec.js +2 -0
  443. package/dist/components/toggle-group.spec.js.map +1 -0
  444. package/dist/components/toggle.d.ts +2 -15
  445. package/dist/components/toggle.js +1 -2
  446. package/dist/components/toggle.spec.d.ts +1 -0
  447. package/dist/components/toggle.spec.js +2 -0
  448. package/dist/components/toggle.spec.js.map +1 -0
  449. package/dist/components/tooltip.d.ts +2 -21
  450. package/dist/components/tooltip.js +1 -2
  451. package/dist/components/tooltip.spec.d.ts +1 -0
  452. package/dist/components/tooltip.spec.js +2 -0
  453. package/dist/components/tooltip.spec.js.map +1 -0
  454. package/dist/components/unstyled-button.d.ts +2 -10
  455. package/dist/components/unstyled-button.js +1 -2
  456. package/dist/components/unstyled-button.spec.d.ts +1 -0
  457. package/dist/components/unstyled-button.spec.js +2 -0
  458. package/dist/components/unstyled-button.spec.js.map +1 -0
  459. package/dist/components/visibility.d.ts +2 -17
  460. package/dist/components/visibility.js +1 -2
  461. package/dist/components/visibility.spec.d.ts +1 -0
  462. package/dist/components/visibility.spec.js +2 -0
  463. package/dist/components/visibility.spec.js.map +1 -0
  464. package/dist/compose-refs-DUtp7lGn.js +2 -0
  465. package/dist/compose-refs-DUtp7lGn.js.map +1 -0
  466. package/dist/compose-refs-GP3zdokU.d.ts +8 -0
  467. package/dist/container-B8-lt-oX.d.ts +12 -0
  468. package/dist/container-CikeKdez.js +2 -0
  469. package/dist/container-CikeKdez.js.map +1 -0
  470. package/dist/data-table-BT75MSO9.d.ts +111 -0
  471. package/dist/data-table-DcyKClKz.js +2 -0
  472. package/dist/data-table-DcyKClKz.js.map +1 -0
  473. package/dist/date-range-picker-BngvCWcR.d.ts +55 -0
  474. package/dist/date-range-picker-CJVpTZdT.js +2 -0
  475. package/dist/date-range-picker-CJVpTZdT.js.map +1 -0
  476. package/dist/dialog-B7I4Ky1i.js +2 -0
  477. package/dist/dialog-B7I4Ky1i.js.map +1 -0
  478. package/dist/dialog-Ej7pnact.d.ts +42 -0
  479. package/dist/donut-chart-BDJR8TXh.d.ts +13 -0
  480. package/dist/donut-chart-BHU4kDE6.js +2 -0
  481. package/dist/donut-chart-BHU4kDE6.js.map +1 -0
  482. package/dist/drawer-BO4mP6y1.js +2 -0
  483. package/dist/drawer-BO4mP6y1.js.map +1 -0
  484. package/dist/drawer-DUfJzrKE.d.ts +43 -0
  485. package/dist/dropdown-menu-CVDIf0Rd.d.ts +48 -0
  486. package/dist/dropdown-menu-zRuQQS5S.js +2 -0
  487. package/dist/dropdown-menu-zRuQQS5S.js.map +1 -0
  488. package/dist/dropzone-43h3L9Ko.d.ts +102 -0
  489. package/dist/dropzone-BLZkZThJ.js +2 -0
  490. package/dist/dropzone-BLZkZThJ.js.map +1 -0
  491. package/dist/empty-BhKsDYZ5.js +2 -0
  492. package/dist/empty-BhKsDYZ5.js.map +1 -0
  493. package/dist/empty-D8ZiTCVK.d.ts +21 -0
  494. package/dist/field-C209yHO9.d.ts +39 -0
  495. package/dist/field-DzR-XrO7.js +2 -0
  496. package/dist/field-DzR-XrO7.js.map +1 -0
  497. package/dist/flex-BC4Diiy4.js +2 -0
  498. package/dist/flex-BC4Diiy4.js.map +1 -0
  499. package/dist/flex-aJXipTAz.d.ts +16 -0
  500. package/dist/grid-B3He1bGe.js +2 -0
  501. package/dist/grid-B3He1bGe.js.map +1 -0
  502. package/dist/grid-D_aEANA7.d.ts +20 -0
  503. package/dist/group-B6n_lMc4.js +2 -0
  504. package/dist/group-B6n_lMc4.js.map +1 -0
  505. package/dist/group-DBtx8eSe.d.ts +15 -0
  506. package/dist/heading-BTXl4JfI.d.ts +14 -0
  507. package/dist/heading-DaxKLVRm.js +2 -0
  508. package/dist/heading-DaxKLVRm.js.map +1 -0
  509. package/dist/hooks/use-breakpoint-value.d.ts +2 -8
  510. package/dist/hooks/use-breakpoint-value.js +1 -2
  511. package/dist/hooks/use-breakpoint-value.spec.js +34 -1
  512. package/dist/hooks/use-breakpoint-value.spec.js.map +1 -1
  513. package/dist/hooks/use-breakpoint.d.ts +2 -8
  514. package/dist/hooks/use-breakpoint.js +1 -2
  515. package/dist/hooks/use-breakpoint.spec.js +1 -1
  516. package/dist/hooks/use-breakpoint.spec.js.map +1 -1
  517. package/dist/hooks/use-disclosure.d.ts +2 -22
  518. package/dist/hooks/use-disclosure.js +1 -2
  519. package/dist/hooks/use-disclosure.spec.js +1 -1
  520. package/dist/hooks/use-disclosure.spec.js.map +1 -1
  521. package/dist/hooks/use-document-visibility.d.ts +2 -6
  522. package/dist/hooks/use-document-visibility.js +1 -2
  523. package/dist/hooks/use-document-visibility.spec.js +1 -1
  524. package/dist/hooks/use-document-visibility.spec.js.map +1 -1
  525. package/dist/hooks/use-hotkeys.spec.js +1 -1
  526. package/dist/hooks/use-idle.d.ts +2 -13
  527. package/dist/hooks/use-idle.js +1 -2
  528. package/dist/hooks/use-idle.spec.js +1 -1
  529. package/dist/hooks/use-idle.spec.js.map +1 -1
  530. package/dist/hooks/use-interval.d.ts +2 -24
  531. package/dist/hooks/use-interval.js +1 -2
  532. package/dist/hooks/use-interval.spec.js +1 -1
  533. package/dist/hooks/use-local-storage.d.ts +2 -16
  534. package/dist/hooks/use-local-storage.js +1 -2
  535. package/dist/hooks/use-local-storage.spec.js +1 -1
  536. package/dist/hooks/use-local-storage.spec.js.map +1 -1
  537. package/dist/hooks/use-mask.d.ts +2 -8
  538. package/dist/hooks/use-mask.js +1 -2
  539. package/dist/hooks/use-mask.spec.d.ts +1 -0
  540. package/dist/hooks/use-mask.spec.js +2 -0
  541. package/dist/hooks/use-mask.spec.js.map +1 -0
  542. package/dist/hooks/use-mobile.d.ts +2 -6
  543. package/dist/hooks/use-mobile.js +1 -2
  544. package/dist/hooks/use-mobile.spec.js +1 -1
  545. package/dist/hover-card-C3yz2zQi.d.ts +13 -0
  546. package/dist/hover-card-Dc8yLsm-.js +2 -0
  547. package/dist/hover-card-Dc8yLsm-.js.map +1 -0
  548. package/dist/index.d.ts +94 -93
  549. package/dist/index.js +1 -1
  550. package/dist/input-CI3RPXz0.d.ts +8 -0
  551. package/dist/input-Cmjl8YdK.js +2 -0
  552. package/dist/input-Cmjl8YdK.js.map +1 -0
  553. package/dist/input-group-CBn36aMg.d.ts +26 -0
  554. package/dist/input-group-DsO2W3Lw.js +2 -0
  555. package/dist/input-group-DsO2W3Lw.js.map +1 -0
  556. package/dist/input-otp-CzfRHf2V.js +2 -0
  557. package/dist/input-otp-CzfRHf2V.js.map +1 -0
  558. package/dist/input-otp-gIEkdiIC.d.ts +19 -0
  559. package/dist/kbd-BTl3AgkY.js +2 -0
  560. package/dist/kbd-BTl3AgkY.js.map +1 -0
  561. package/dist/kbd-DELCQBD0.d.ts +10 -0
  562. package/dist/label-BQDEej_c.js +2 -0
  563. package/dist/label-BQDEej_c.js.map +1 -0
  564. package/dist/label-KZl6I5Ey.d.ts +9 -0
  565. package/dist/lib/badge.d.ts +2 -19
  566. package/dist/lib/badge.js +1 -2
  567. package/dist/lib/badge.spec.d.ts +1 -0
  568. package/dist/lib/badge.spec.js +2 -0
  569. package/dist/lib/badge.spec.js.map +1 -0
  570. package/dist/lib/button.d.ts +2 -19
  571. package/dist/lib/button.js +1 -2
  572. package/dist/lib/button.spec.d.ts +1 -0
  573. package/dist/lib/button.spec.js +2 -0
  574. package/dist/lib/button.spec.js.map +1 -0
  575. package/dist/lib/color.d.ts +2 -19
  576. package/dist/lib/color.js +1 -2
  577. package/dist/lib/color.spec.d.ts +1 -0
  578. package/dist/lib/color.spec.js +2 -0
  579. package/dist/lib/color.spec.js.map +1 -0
  580. package/dist/lib/compose-refs.d.ts +2 -8
  581. package/dist/lib/compose-refs.js +1 -2
  582. package/dist/lib/compose-refs.spec.d.ts +1 -0
  583. package/dist/lib/compose-refs.spec.js +2 -0
  584. package/dist/lib/compose-refs.spec.js.map +1 -0
  585. package/dist/lib/progress.d.ts +2 -19
  586. package/dist/lib/progress.js +1 -2
  587. package/dist/lib/progress.spec.d.ts +1 -0
  588. package/dist/lib/progress.spec.js +2 -0
  589. package/dist/lib/progress.spec.js.map +1 -0
  590. package/dist/lib/utils.d.ts +2 -8
  591. package/dist/lib/utils.js +1 -2
  592. package/dist/lib/utils.spec.d.ts +1 -0
  593. package/dist/lib/utils.spec.js +2 -0
  594. package/dist/lib/utils.spec.js.map +1 -0
  595. package/dist/list-BbCg-ndB.js +2 -0
  596. package/dist/list-BbCg-ndB.js.map +1 -0
  597. package/dist/list-DMa2j1rk.d.ts +25 -0
  598. package/dist/logo-B0v9bNJH.js +2 -0
  599. package/dist/logo-B0v9bNJH.js.map +1 -0
  600. package/dist/logo-Buo7sqqn.d.ts +69 -0
  601. package/dist/marker-4_EnMIHk.js +2 -0
  602. package/dist/marker-4_EnMIHk.js.map +1 -0
  603. package/dist/marker-C4wLa1c0.d.ts +18 -0
  604. package/dist/mask-input-B4R5K1h6.d.ts +16 -0
  605. package/dist/mask-input-ssK7U_Pl.js +2 -0
  606. package/dist/mask-input-ssK7U_Pl.js.map +1 -0
  607. package/dist/native-select-BVmdMkHY.d.ts +14 -0
  608. package/dist/native-select-DZW3Y7nq.js +2 -0
  609. package/dist/native-select-DZW3Y7nq.js.map +1 -0
  610. package/dist/navigation-menu-B6drNL1-.js +2 -0
  611. package/dist/navigation-menu-B6drNL1-.js.map +1 -0
  612. package/dist/navigation-menu-siQVRMUF.d.ts +26 -0
  613. package/dist/number-field-IdgO_BUa.d.ts +35 -0
  614. package/dist/number-field-rEMfZa6A.js +2 -0
  615. package/dist/number-field-rEMfZa6A.js.map +1 -0
  616. package/dist/pagination-BZ3xMXsy.d.ts +27 -0
  617. package/dist/pagination-gnUKddCN.js +2 -0
  618. package/dist/pagination-gnUKddCN.js.map +1 -0
  619. package/dist/phone-input-By5lNF03.d.ts +13 -0
  620. package/dist/phone-input-D72tVPWH.js +2 -0
  621. package/dist/phone-input-D72tVPWH.js.map +1 -0
  622. package/dist/pie-chart-CvG27kFN.d.ts +42 -0
  623. package/dist/pie-chart-S4nMKbsW.js +2 -0
  624. package/dist/pie-chart-S4nMKbsW.js.map +1 -0
  625. package/dist/popover-BtX3tX8M.js +2 -0
  626. package/dist/popover-BtX3tX8M.js.map +1 -0
  627. package/dist/popover-DchAqyKn.d.ts +21 -0
  628. package/dist/progress-DeXRCHUw.d.ts +19 -0
  629. package/dist/progress-QvpY7tiy.js +2 -0
  630. package/dist/progress-QvpY7tiy.js.map +1 -0
  631. package/dist/progress-icFwrvnE.js +2 -0
  632. package/dist/progress-icFwrvnE.js.map +1 -0
  633. package/dist/progress-mEAw9ZhK.d.ts +14 -0
  634. package/dist/radio-group-BNbepK_U.d.ts +25 -0
  635. package/dist/radio-group-DM8n0XPS.js +2 -0
  636. package/dist/radio-group-DM8n0XPS.js.map +1 -0
  637. package/dist/{react.esm-D5AipFQb.js → react.esm-BkhVXJ8s.js} +2 -2
  638. package/dist/{react.esm-D5AipFQb.js.map → react.esm-BkhVXJ8s.js.map} +1 -1
  639. package/dist/resizable-DMQG3xF_.d.ts +14 -0
  640. package/dist/resizable-Dbg7r7nF.js +2 -0
  641. package/dist/resizable-Dbg7r7nF.js.map +1 -0
  642. package/dist/ring-progress-65ccdTQQ.d.ts +17 -0
  643. package/dist/ring-progress-Bfqq_HHA.js +2 -0
  644. package/dist/ring-progress-Bfqq_HHA.js.map +1 -0
  645. package/dist/scroll-area-DFcj5q66.d.ts +11 -0
  646. package/dist/scroll-area-DKS4QPHg.js +2 -0
  647. package/dist/scroll-area-DKS4QPHg.js.map +1 -0
  648. package/dist/select-BoYp-Xyc.d.ts +29 -0
  649. package/dist/select-C3QYNv4t.js +2 -0
  650. package/dist/select-C3QYNv4t.js.map +1 -0
  651. package/dist/separator-BsRLiqWE.d.ts +9 -0
  652. package/dist/separator-CCMmbXL0.js +2 -0
  653. package/dist/separator-CCMmbXL0.js.map +1 -0
  654. package/dist/sidebar-B5bEgDy5.js +2 -0
  655. package/dist/sidebar-B5bEgDy5.js.map +1 -0
  656. package/dist/sidebar-D7HQlj5O.d.ts +96 -0
  657. package/dist/simple-grid-9EryoUWI.js +2 -0
  658. package/dist/simple-grid-9EryoUWI.js.map +1 -0
  659. package/dist/simple-grid-B2zjpwZ3.d.ts +14 -0
  660. package/dist/skeleton-Cn3zBJRe.js +2 -0
  661. package/dist/skeleton-Cn3zBJRe.js.map +1 -0
  662. package/dist/skeleton-Co8pevj-.d.ts +10 -0
  663. package/dist/skills/uselets-ui/references/component-catalog.md +3 -0
  664. package/dist/slider-CC-gQawq.js +2 -0
  665. package/dist/slider-CC-gQawq.js.map +1 -0
  666. package/dist/slider-DmZ1YfLg.d.ts +9 -0
  667. package/dist/sonner-Binx8JJ2.d.ts +8 -0
  668. package/dist/sonner-DrKqhTDI.js +2 -0
  669. package/dist/sonner-DrKqhTDI.js.map +1 -0
  670. package/dist/spinner-Dz63Ltq-.d.ts +12 -0
  671. package/dist/spinner-ntLrcDLN.js +2 -0
  672. package/dist/spinner-ntLrcDLN.js.map +1 -0
  673. package/dist/stack-BbLllsqk.js +2 -0
  674. package/dist/stack-BbLllsqk.js.map +1 -0
  675. package/dist/stack-WiND8Dxq.d.ts +14 -0
  676. package/dist/stepper-BQ-59_UO.js +2 -0
  677. package/dist/stepper-BQ-59_UO.js.map +1 -0
  678. package/dist/stepper-DK5_o7RG.d.ts +71 -0
  679. package/dist/styles/max.css +11 -11
  680. package/dist/switch-DjdOGECT.js +2 -0
  681. package/dist/switch-DjdOGECT.js.map +1 -0
  682. package/dist/switch-OtBakZHc.d.ts +17 -0
  683. package/dist/table-CuE0Aenj.js +2 -0
  684. package/dist/table-CuE0Aenj.js.map +1 -0
  685. package/dist/table-qIAtG7Y5.d.ts +33 -0
  686. package/dist/tabs-BgWxTTah.d.ts +21 -0
  687. package/dist/tabs-DK9-RHkP.js +2 -0
  688. package/dist/tabs-DK9-RHkP.js.map +1 -0
  689. package/dist/text-CKFZ9Xsj.d.ts +14 -0
  690. package/dist/text-Kg1xuinT.js +2 -0
  691. package/dist/text-Kg1xuinT.js.map +1 -0
  692. package/dist/textarea-C8zrf9Rz.js +2 -0
  693. package/dist/textarea-C8zrf9Rz.js.map +1 -0
  694. package/dist/textarea-Cr9_P-bV.d.ts +8 -0
  695. package/dist/theme-BwEhfTyl.d.ts +22 -0
  696. package/dist/theme-DZJ_cJYp.js +2 -0
  697. package/dist/theme-DZJ_cJYp.js.map +1 -0
  698. package/dist/timeline-BDY3YzeJ.d.ts +61 -0
  699. package/dist/timeline-pBm0t1tb.js +2 -0
  700. package/dist/timeline-pBm0t1tb.js.map +1 -0
  701. package/dist/toggle-DJJkcqDy.js +2 -0
  702. package/dist/toggle-DJJkcqDy.js.map +1 -0
  703. package/dist/toggle-group-C3iNDYqI.d.ts +16 -0
  704. package/dist/toggle-group-D0OIpZN-.js +2 -0
  705. package/dist/toggle-group-D0OIpZN-.js.map +1 -0
  706. package/dist/toggle-jc8s_Z3T.d.ts +15 -0
  707. package/dist/tooltip-BZjnEqw5.d.ts +21 -0
  708. package/dist/tooltip-CNUNWZvs.js +2 -0
  709. package/dist/tooltip-CNUNWZvs.js.map +1 -0
  710. package/dist/unstyled-button-C-Zs4Qv2.d.ts +10 -0
  711. package/dist/unstyled-button-lGbDJA55.js +2 -0
  712. package/dist/unstyled-button-lGbDJA55.js.map +1 -0
  713. package/dist/use-breakpoint-D6YACz8C.js +2 -0
  714. package/dist/use-breakpoint-D6YACz8C.js.map +1 -0
  715. package/dist/use-breakpoint-DDuQFekj.d.ts +8 -0
  716. package/dist/use-breakpoint-value-BDjKflDX.js +2 -0
  717. package/dist/use-breakpoint-value-BDjKflDX.js.map +1 -0
  718. package/dist/use-breakpoint-value-CRbHqGAu.d.ts +8 -0
  719. package/dist/use-disclosure-CNaFpYFQ.d.ts +22 -0
  720. package/dist/use-disclosure-Cr405eRD.js +2 -0
  721. package/dist/use-disclosure-Cr405eRD.js.map +1 -0
  722. package/dist/use-document-visibility-CoWjCswu.js +2 -0
  723. package/dist/use-document-visibility-CoWjCswu.js.map +1 -0
  724. package/dist/use-document-visibility-DIzUN4tB.d.ts +6 -0
  725. package/dist/use-idle-Bsi10VE9.d.ts +13 -0
  726. package/dist/use-idle-DgheJlxd.js +2 -0
  727. package/dist/use-idle-DgheJlxd.js.map +1 -0
  728. package/dist/use-interval-B1aNo3tA.js +2 -0
  729. package/dist/use-interval-B1aNo3tA.js.map +1 -0
  730. package/dist/use-interval-CJVmE_lC.d.ts +24 -0
  731. package/dist/use-local-storage-CJBqB1GC.js +2 -0
  732. package/dist/use-local-storage-CJBqB1GC.js.map +1 -0
  733. package/dist/use-local-storage-Cmq4PWJc.d.ts +16 -0
  734. package/dist/use-mask-DBvFShXA.js +2 -0
  735. package/dist/use-mask-DBvFShXA.js.map +1 -0
  736. package/dist/use-mask-DRJVVcdh.d.ts +8 -0
  737. package/dist/use-mobile-BYwiljVq.d.ts +6 -0
  738. package/dist/use-mobile-OMmp56u2.js +2 -0
  739. package/dist/use-mobile-OMmp56u2.js.map +1 -0
  740. package/dist/utils-DGsdoA5l.d.ts +8 -0
  741. package/dist/utils-DP9KtG7I.js +2 -0
  742. package/dist/utils-DP9KtG7I.js.map +1 -0
  743. package/dist/visibility-_3zV3l-A.d.ts +17 -0
  744. package/dist/visibility-twHwe9Xp.js +2 -0
  745. package/dist/visibility-twHwe9Xp.js.map +1 -0
  746. package/package.json +10 -8
  747. package/skills/uselets-ui/references/component-catalog.md +3 -0
  748. package/dist/components/accordion.js.map +0 -1
  749. package/dist/components/alert-dialog.js.map +0 -1
  750. package/dist/components/alert.js.map +0 -1
  751. package/dist/components/anchor.js.map +0 -1
  752. package/dist/components/area-chart.js.map +0 -1
  753. package/dist/components/avatar.js.map +0 -1
  754. package/dist/components/badge.js.map +0 -1
  755. package/dist/components/bar-chart.js.map +0 -1
  756. package/dist/components/breadcrumb.js.map +0 -1
  757. package/dist/components/button-group.js.map +0 -1
  758. package/dist/components/button.js.map +0 -1
  759. package/dist/components/calendar.js.map +0 -1
  760. package/dist/components/card.js.map +0 -1
  761. package/dist/components/carousel.js.map +0 -1
  762. package/dist/components/center.js.map +0 -1
  763. package/dist/components/chart.js.map +0 -1
  764. package/dist/components/checkbox.js.map +0 -1
  765. package/dist/components/code.js.map +0 -1
  766. package/dist/components/collapsible.js.map +0 -1
  767. package/dist/components/combobox.js.map +0 -1
  768. package/dist/components/command.js.map +0 -1
  769. package/dist/components/container.js.map +0 -1
  770. package/dist/components/data-table.js.map +0 -1
  771. package/dist/components/date-range-picker.js.map +0 -1
  772. package/dist/components/dialog.js.map +0 -1
  773. package/dist/components/donut-chart.js.map +0 -1
  774. package/dist/components/drawer.js.map +0 -1
  775. package/dist/components/dropdown-menu.js.map +0 -1
  776. package/dist/components/dropzone.js.map +0 -1
  777. package/dist/components/empty.js.map +0 -1
  778. package/dist/components/field.js.map +0 -1
  779. package/dist/components/flex.js.map +0 -1
  780. package/dist/components/grid.js.map +0 -1
  781. package/dist/components/group.js.map +0 -1
  782. package/dist/components/heading.js.map +0 -1
  783. package/dist/components/hover-card.js.map +0 -1
  784. package/dist/components/input-group.js.map +0 -1
  785. package/dist/components/input-otp.js.map +0 -1
  786. package/dist/components/input.js.map +0 -1
  787. package/dist/components/kbd.js.map +0 -1
  788. package/dist/components/label.js.map +0 -1
  789. package/dist/components/list.js.map +0 -1
  790. package/dist/components/marker.js.map +0 -1
  791. package/dist/components/mask-input.js.map +0 -1
  792. package/dist/components/native-select.js.map +0 -1
  793. package/dist/components/navigation-menu.js.map +0 -1
  794. package/dist/components/number-field.js.map +0 -1
  795. package/dist/components/pagination.js.map +0 -1
  796. package/dist/components/phone-input.js.map +0 -1
  797. package/dist/components/pie-chart.js.map +0 -1
  798. package/dist/components/popover.js.map +0 -1
  799. package/dist/components/progress.js.map +0 -1
  800. package/dist/components/radio-group.js.map +0 -1
  801. package/dist/components/resizable.js.map +0 -1
  802. package/dist/components/ring-progress.js.map +0 -1
  803. package/dist/components/scroll-area.js.map +0 -1
  804. package/dist/components/select.js.map +0 -1
  805. package/dist/components/separator.js.map +0 -1
  806. package/dist/components/sidebar.js.map +0 -1
  807. package/dist/components/simple-grid.js.map +0 -1
  808. package/dist/components/skeleton.js.map +0 -1
  809. package/dist/components/slider.js.map +0 -1
  810. package/dist/components/sonner.js.map +0 -1
  811. package/dist/components/spinner.js.map +0 -1
  812. package/dist/components/stack.js.map +0 -1
  813. package/dist/components/stepper.js.map +0 -1
  814. package/dist/components/switch.js.map +0 -1
  815. package/dist/components/table.js.map +0 -1
  816. package/dist/components/tabs.js.map +0 -1
  817. package/dist/components/text.js.map +0 -1
  818. package/dist/components/textarea.js.map +0 -1
  819. package/dist/components/theme.js.map +0 -1
  820. package/dist/components/timeline.js.map +0 -1
  821. package/dist/components/toggle-group.js.map +0 -1
  822. package/dist/components/toggle.js.map +0 -1
  823. package/dist/components/tooltip.js.map +0 -1
  824. package/dist/components/unstyled-button.js.map +0 -1
  825. package/dist/components/visibility.js.map +0 -1
  826. package/dist/hooks/use-breakpoint-value.js.map +0 -1
  827. package/dist/hooks/use-breakpoint.js.map +0 -1
  828. package/dist/hooks/use-disclosure.js.map +0 -1
  829. package/dist/hooks/use-document-visibility.js.map +0 -1
  830. package/dist/hooks/use-idle.js.map +0 -1
  831. package/dist/hooks/use-interval.js.map +0 -1
  832. package/dist/hooks/use-local-storage.js.map +0 -1
  833. package/dist/hooks/use-mask.js.map +0 -1
  834. package/dist/hooks/use-mobile.js.map +0 -1
  835. package/dist/lib/badge.js.map +0 -1
  836. package/dist/lib/button.js.map +0 -1
  837. package/dist/lib/color.js.map +0 -1
  838. package/dist/lib/compose-refs.js.map +0 -1
  839. package/dist/lib/progress.js.map +0 -1
  840. package/dist/lib/utils.js.map +0 -1
  841. package/dist/magic-string.es-oADFB1hu.js +0 -15
  842. package/dist/magic-string.es-oADFB1hu.js.map +0 -1
  843. package/dist/utils-Cj3IZeiu.js +0 -37
  844. package/dist/utils-Cj3IZeiu.js.map +0 -1
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Separator as t}from"./separator.js";import{Label as n}from"./label.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";import{cva as a}from"class-variance-authority";import{createContext as o,useContext as s,useId as c,useMemo as l}from"react";const u=o(null);function useFieldControlId(e){let t=s(u);return e??t?.controlId}function FieldSet({className:t,...n}){return r(`fieldset`,{"data-slot":`field-set`,className:e(`flex flex-col gap-4`,`has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3`,t),...n})}function FieldLegend({className:t,variant:n=`legend`,...i}){return r(`legend`,{"data-slot":`field-legend`,"data-variant":n,className:e(`mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base`,t),...i})}function FieldGroup({className:t,...n}){return r(`div`,{"data-slot":`field-group`,className:e(`group/field-group @container/field-group flex w-full flex-col gap-5`,`data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4`,t),...n})}const d=a(`data-[invalid=true]:text-destructive gap-1 group/field flex w-full`,{variants:{orientation:{vertical:`flex-col *:w-full [&>.sr-only]:w-auto`,horizontal:`flex-row items-center *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`,responsive:`flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`}},defaultVariants:{orientation:`vertical`}});function Field({className:t,orientation:n=`vertical`,...i}){let a=c(),o=l(()=>({controlId:a}),[a]);return r(u.Provider,{value:o,children:r(`div`,{"data-slot":`field`,"data-orientation":n,className:e(d({orientation:n}),t),...i})})}function FieldContent({className:t,...n}){return r(`div`,{"data-slot":`field-content`,className:e(`gap-0.5 group/field-content flex flex-1 flex-col leading-snug`,t),...n})}function FieldLabel({className:t,htmlFor:i,...a}){return r(n,{"data-slot":`field-label`,htmlFor:useFieldControlId(i),className:e(`group/field-label peer/field-label flex w-fit gap-2 leading-snug`,`has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10`,`has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5`,`group-data-[disabled=true]/field:opacity-50`,t),...a})}function FieldTitle({className:t,...n}){return r(`div`,{"data-slot":`field-label`,className:e(`gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug`,t),...n})}function FieldDescription({className:t,...n}){return r(`p`,{"data-slot":`field-description`,className:e(`text-muted-foreground text-left text-xs leading-normal font-normal`,`[[data-variant=legend]+&]:-mt-1.5 group-has-data-horizontal/field:text-balance last:mt-0 nth-last-2:-mt-1`,`[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,t),...n})}function FieldSeparator({children:n,className:a,...o}){return i(`div`,{"data-slot":`field-separator`,"data-content":!!n,className:e(`-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative`,a),...o,children:[r(t,{className:`absolute inset-0 top-1/2`}),n&&r(`span`,{className:`text-muted-foreground px-2 bg-background relative mx-auto block w-fit`,"data-slot":`field-separator-content`,children:n})]})}function FieldError({className:t,children:n,errors:i,...a}){let o=l(()=>{if(n)return n;if(!i?.length)return null;let e=[...new Map(i.map(e=>[e?.message,e])).values()];return e?.length===1?e[0]?.message:r(`ul`,{className:`ml-4 flex list-disc flex-col gap-1`,children:e.map(e=>e?.message&&r(`li`,{children:e.message},e.message))})},[n,i]);return o?r(`div`,{role:`alert`,"data-slot":`field-error`,className:e(`text-destructive text-sm font-normal`,t),...a,children:o}):null}export{Field,FieldContent,FieldDescription,FieldError,FieldGroup,FieldLabel,FieldLegend,FieldSeparator,FieldSet,FieldTitle,useFieldControlId};
2
- //# sourceMappingURL=field.js.map
1
+ import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"../field-DzR-XrO7.js";export{l as Field,a as FieldContent,s as FieldDescription,r as FieldError,e as FieldGroup,o as FieldLabel,c as FieldLegend,t as FieldSeparator,i as FieldSet,u as FieldTitle,n as useFieldControlId};
@@ -1,2 +1,2 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{Field as e,FieldLabel as t}from"./field.js";import{Checkbox as n}from"./checkbox.js";import{Input as r}from"./input.js";import{Textarea as i}from"./textarea.js";import{Select as a,SelectTrigger as o,SelectValue as s}from"./select.js";import{NativeSelect as c,NativeSelectOption as l}from"./native-select.js";import{a as u,r as d}from"../react.esm-D5AipFQb.js";import{Fragment as f,jsx as p,jsxs as m}from"react/jsx-runtime";describe(`Field automatic control ids`,()=>{it(`wires FieldLabel and Input with a generated id when ids are omitted`,()=>{d(m(e,{children:[p(t,{children:`Email`}),p(r,{})]}));let n=u.getByLabelText(`Email`),i=u.getByText(`Email`);expect(n.getAttribute(`id`)).toBeTruthy(),expect(i.getAttribute(`for`)).toBe(n.getAttribute(`id`))}),it(`preserves explicit input ids and label htmlFor values`,()=>{d(m(e,{children:[p(t,{htmlFor:`explicit-label-target`,children:`Email`}),p(r,{id:`explicit-input`})]})),expect(u.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}=d(m(f,{children:[p(t,{children:`Email`}),p(r,{})]}));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`,()=>{d(m(f,{children:[m(e,{children:[p(t,{children:`Message`}),p(i,{})]}),m(e,{children:[p(t,{children:`Framework`}),p(c,{children:p(l,{value:`react`,children:`React`})})]}),m(e,{children:[p(t,{children:`Category`}),p(a,{children:p(o,{children:p(s,{placeholder:`Select a category`})})})]}),m(e,{children:[p(t,{children:`Terms`}),p(n,{})]})]}));for(let e of[`Message`,`Framework`,`Category`,`Terms`]){let t=u.getByText(e).getAttribute(`for`);expect(t).toBeTruthy(),expect(document.getElementById(t??``)).not.toBeNull()}})});
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-Cmjl8YdK.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
2
  //# sourceMappingURL=field.spec.js.map
@@ -1 +1 @@
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 { Field, FieldLabel } 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 automatic control ids', () => {\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"],"mappings":"udASA,SAAS,kCAAqC,CAC5C,GAAG,0EAA6E,CAC9E,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,OAAiB,CAAA,EAC7B,EAAC,EAAD,CAAQ,CAAA,CACH,CAAA,CAAA,CACT,EAEA,IAAM,EAAQ,EAAO,eAAe,OAAO,EACrC,EAAQ,EAAO,UAAU,OAAO,EAEtC,OAAO,EAAM,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,EAC5C,OAAO,EAAM,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,EAAM,aAAa,IAAI,CAAC,CACjE,CAAC,EAED,GAAG,4DAA+D,CAChE,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAY,QAAQ,wBAAwB,SAAA,OAAiB,CAAA,EAC7D,EAAC,EAAD,CAAO,GAAG,gBAAkB,CAAA,CACvB,CAAA,CAAA,CACT,EAEA,OAAO,EAAO,UAAU,OAAO,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,uBAAuB,EAClF,OAAO,SAAS,eAAe,gBAAgB,CAAC,CAAC,CAAC,IAAI,SAAS,CACjE,CAAC,EAED,GAAG,iDAAoD,CACrD,GAAM,CAAE,aAAc,EACpB,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,OAAiB,CAAA,EAC7B,EAAC,EAAD,CAAQ,CAAA,CACR,CAAA,CAAA,CACJ,EAEA,OAAO,EAAU,cAAc,2BAA2B,CAAC,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,SAAS,EAC3F,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC,EAED,GAAG,8DAAiE,CAClE,EACE,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,SAAmB,CAAA,EAC/B,EAAC,EAAD,CAAW,CAAA,CACN,CAAA,CAAA,EAEP,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,WAAqB,CAAA,EACjC,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAoB,MAAM,QAAQ,SAAA,OAAyB,CAAA,CAC/C,CAAA,CACT,CAAA,CAAA,EAEP,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,UAAoB,CAAA,EAChC,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAa,YAAY,mBAAqB,CAAA,CACjC,CAAA,CACT,CAAA,CACH,CAAA,CAAA,EAEP,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,OAAiB,CAAA,EAC7B,EAAC,EAAD,CAAW,CAAA,CACN,CAAA,CAAA,CACP,CAAA,CAAA,CACJ,EAEA,IAAK,IAAM,IAAS,CAAC,UAAW,YAAa,WAAY,OAAO,EAAG,CAEjE,IAAM,EADe,EAAO,UAAU,CACT,CAAC,CAAC,aAAa,KAAK,EAEjD,OAAO,CAAS,CAAC,CAAC,WAAW,EAC7B,OAAO,SAAS,eAAe,GAAa,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAChE,CACF,CAAC,CACH,CAAC"}
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,16 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { VariantProps } from "class-variance-authority";
3
- import * as React from "react";
4
- //#region src/components/flex.d.ts
5
- declare const flexVariants: (props?: ({
6
- direction?: "column" | "column-reverse" | "row" | "row-reverse" | null | undefined;
7
- align?: "baseline" | "center" | "end" | "start" | "stretch" | null | undefined;
8
- justify?: "around" | "between" | "center" | "end" | "evenly" | "start" | null | undefined;
9
- wrap?: boolean | null | undefined;
10
- gap?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
11
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
- type FlexProps = React.ComponentProps<'div'> & VariantProps<typeof flexVariants>;
13
- declare function Flex({ className, direction, align, justify, wrap, gap, ...props }: FlexProps): React.JSX.Element;
14
- //#endregion
15
- export { Flex, FlexProps, flexVariants };
16
- //# sourceMappingURL=flex.d.ts.map
1
+ import { n as FlexProps, r as flexVariants, t as Flex } from "../flex-aJXipTAz.js";
2
+ export { Flex, FlexProps, flexVariants };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{jsx as t}from"react/jsx-runtime";import{cva as n}from"class-variance-authority";const r=n(`flex min-w-0`,{variants:{direction:{row:`flex-row`,"row-reverse":`flex-row-reverse`,column:`flex-col`,"column-reverse":`flex-col-reverse`},align:{start:`items-start`,end:`items-end`,center:`items-center`,baseline:`items-baseline`,stretch:`items-stretch`},justify:{start:`justify-start`,end:`justify-end`,center:`justify-center`,between:`justify-between`,around:`justify-around`,evenly:`justify-evenly`},wrap:{true:`flex-wrap`,false:`flex-nowrap`},gap:{xs:`gap-1`,sm:`gap-2`,md:`gap-4`,lg:`gap-6`,xl:`gap-8`}},defaultVariants:{direction:`row`,wrap:!1}});function Flex({className:n,direction:i=`row`,align:a,justify:o,wrap:s=!1,gap:c,...l}){return t(`div`,{"data-slot":`flex`,"data-direction":i,"data-align":a,"data-justify":o,"data-wrap":s?`true`:`false`,"data-gap":c,className:e(r({direction:i,align:a,justify:o,wrap:s,gap:c}),n),...l})}export{Flex,r as flexVariants};
2
- //# sourceMappingURL=flex.js.map
1
+ import{n as e,t}from"../flex-BC4Diiy4.js";export{t as Flex,e as flexVariants};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
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,20 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import * as React from "react";
3
- //#region src/components/grid.d.ts
4
- type GridSpacing = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
- type GridProps = React.ComponentProps<'div'> & {
6
- gap?: GridSpacing;
7
- rowGap?: GridSpacing;
8
- columnGap?: GridSpacing;
9
- templateRows?: string;
10
- templateColumns?: string;
11
- };
12
- declare function Grid({ className, gap, rowGap, columnGap, templateRows, templateColumns, style, ...props }: GridProps): React.JSX.Element;
13
- type GridItemProps = React.ComponentProps<'div'> & {
14
- rowSpan?: number;
15
- colSpan?: number;
16
- };
17
- declare function GridItem({ className, rowSpan, colSpan, style, ...props }: GridItemProps): React.JSX.Element;
18
- //#endregion
19
- export { Grid, GridItem, GridItemProps, GridProps };
20
- //# sourceMappingURL=grid.d.ts.map
1
+ import { i as GridProps, n as GridItem, r as GridItemProps, t as Grid } from "../grid-D_aEANA7.js";
2
+ export { Grid, GridItem, GridItemProps, GridProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{jsx as t}from"react/jsx-runtime";const n={xs:1,sm:2,md:4,lg:6,xl:8};function toSpacingValue(e){return`calc(var(--spacing) * ${n[e]})`}function Grid({className:n,gap:r,rowGap:i,columnGap:a,templateRows:o,templateColumns:s=`repeat(12, minmax(0, 1fr))`,style:c,...l}){return t(`div`,{"data-slot":`grid`,className:e(`grid min-w-0`,`grid-cols-(--grid-template-columns) grid-rows-(--grid-template-rows)`,`gap-(--grid-gap) gap-y-(--grid-row-gap) gap-x-(--grid-column-gap)`,n),style:{"--grid-template-columns":s,"--grid-template-rows":o,"--grid-gap":r?toSpacingValue(r):`0px`,"--grid-row-gap":i?toSpacingValue(i):`var(--grid-gap)`,"--grid-column-gap":a?toSpacingValue(a):`var(--grid-gap)`,...c},...l})}function GridItem({className:n,rowSpan:r,colSpan:i=12,style:a,...o}){return t(`div`,{"data-slot":`grid-item`,className:e(`min-w-0`,`col-[span_var(--grid-item-col-span)/span_var(--grid-item-col-span)]`,`row-[span_var(--grid-item-row-span)/span_var(--grid-item-row-span)]`,n),style:{"--grid-item-col-span":i,"--grid-item-row-span":r,...a},...o})}export{Grid,GridItem};
2
- //# sourceMappingURL=grid.js.map
1
+ import{n as e,t}from"../grid-B3He1bGe.js";export{t as Grid,e as GridItem};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
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,15 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { VariantProps } from "class-variance-authority";
3
- import * as React from "react";
4
- //#region src/components/group.d.ts
5
- declare const groupVariants: (props?: ({
6
- align?: "baseline" | "center" | "end" | "start" | "stretch" | null | undefined;
7
- justify?: "around" | "between" | "center" | "end" | "evenly" | "start" | null | undefined;
8
- gap?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
9
- wrap?: boolean | null | undefined;
10
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
- type GroupProps = React.ComponentProps<'div'> & VariantProps<typeof groupVariants>;
12
- declare function Group({ className, align, justify, gap, wrap, ...props }: GroupProps): React.JSX.Element;
13
- //#endregion
14
- export { Group, GroupProps, groupVariants };
15
- //# sourceMappingURL=group.d.ts.map
1
+ import { n as GroupProps, r as groupVariants, t as Group } from "../group-DBtx8eSe.js";
2
+ export { Group, GroupProps, groupVariants };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{jsx as t}from"react/jsx-runtime";import{cva as n}from"class-variance-authority";const r=n(`flex flex-row`,{variants:{align:{start:`items-start`,end:`items-end`,center:`items-center`,baseline:`items-baseline`,stretch:`items-stretch`},justify:{start:`justify-start`,end:`justify-end`,center:`justify-center`,between:`justify-between`,around:`justify-around`,evenly:`justify-evenly`},gap:{xs:`gap-1`,sm:`gap-2`,md:`gap-4`,lg:`gap-6`,xl:`gap-8`},wrap:{true:`flex-wrap`,false:`flex-nowrap`}},defaultVariants:{align:`center`,gap:`md`,wrap:!1}});function Group({className:n,align:i=`center`,justify:a,gap:o=`md`,wrap:s=!0,...c}){return t(`div`,{"data-slot":`group`,"data-align":i,"data-justify":a,"data-gap":o,"data-wrap":s?`true`:`false`,className:e(r({align:i,justify:a,gap:o,wrap:s}),n),...c})}export{Group,r as groupVariants};
2
- //# sourceMappingURL=group.js.map
1
+ import{n as e,t}from"../group-B6n_lMc4.js";export{t as Group,e as groupVariants};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.spec.js","names":[],"sources":["../../src/components/group.spec.tsx"],"sourcesContent":["import { render } from '@testing-library/react'\n\nimport { Group } from './group'\n\ndescribe('Group', () => {\n it('renders a div with default variants and data-slot', () => {\n const { container } = render(<Group>Content</Group>)\n\n const group = container.querySelector('[data-slot=\"group\"]')\n\n expect(group).not.toBeNull()\n expect(group?.tagName).toBe('DIV')\n expect(group?.getAttribute('data-align')).toBe('center')\n expect(group?.getAttribute('data-gap')).toBe('md')\n expect(group?.getAttribute('data-wrap')).toBe('true')\n expect(group?.getAttribute('data-justify')).toBeNull()\n expect(group?.className).toContain('items-center')\n expect(group?.className).toContain('gap-4')\n expect(group?.className).toContain('flex-wrap')\n })\n\n it('applies the requested justify variant', () => {\n const { container } = render(<Group justify=\"around\">Content</Group>)\n\n const group = container.querySelector('[data-slot=\"group\"]')\n\n expect(group?.getAttribute('data-justify')).toBe('around')\n expect(group?.className).toContain('justify-around')\n })\n\n it('disables wrapping when wrap is false', () => {\n const { container } = render(<Group wrap={false}>Content</Group>)\n\n const group = container.querySelector('[data-slot=\"group\"]')\n\n expect(group?.getAttribute('data-wrap')).toBe('false')\n expect(group?.className).toContain('flex-nowrap')\n })\n\n it('applies align and gap variant combinations', () => {\n const { container } = render(\n <Group align=\"stretch\" gap=\"xl\">\n Content\n </Group>\n )\n\n const group = container.querySelector('[data-slot=\"group\"]')\n\n expect(group?.getAttribute('data-align')).toBe('stretch')\n expect(group?.className).toContain('items-stretch')\n expect(group?.className).toContain('gap-8')\n })\n\n it('forwards the ref to the underlying div element', () => {\n const ref = { current: null as HTMLDivElement | null }\n\n render(<Group ref={ref}>Content</Group>)\n\n expect(ref.current).not.toBeNull()\n expect(ref.current?.getAttribute('data-slot')).toBe('group')\n })\n})\n"],"mappings":"sKAIA,SAAS,YAAe,CACtB,GAAG,wDAA2D,CAC5D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAO,SAAc,CAAA,CAAC,EAE7C,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,CAAK,CAAC,CAAC,IAAI,SAAS,EAC3B,OAAO,GAAO,OAAO,CAAC,CAAC,KAAK,KAAK,EACjC,OAAO,GAAO,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EACvD,OAAO,GAAO,aAAa,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,GAAO,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,EACpD,OAAO,GAAO,aAAa,cAAc,CAAC,CAAC,CAAC,SAAS,EACrD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,cAAc,EACjD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,OAAO,EAC1C,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,WAAW,CAChD,CAAC,EAED,GAAG,4CAA+C,CAChD,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,QAAQ,SAAS,SAAA,SAAc,CAAA,CAAC,EAE9D,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,QAAQ,EACzD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,gBAAgB,CACrD,CAAC,EAED,GAAG,2CAA8C,CAC/C,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,KAAM,GAAO,SAAA,SAAc,CAAA,CAAC,EAE1D,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,EACrD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,aAAa,CAClD,CAAC,EAED,GAAG,iDAAoD,CACrD,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAO,MAAM,UAAU,IAAI,KAAK,SAAA,SAEzB,CAAA,CACT,EAEM,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EACxD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,eAAe,EAClD,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,OAAO,CAC5C,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAA8B,EAErD,EAAO,EAAC,EAAD,CAAY,MAAK,SAAA,SAAc,CAAA,CAAC,EAEvC,OAAO,EAAI,OAAO,CAAC,CAAC,IAAI,SAAS,EACjC,OAAO,EAAI,SAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAC7D,CAAC,CACH,CAAC"}
@@ -1,14 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { VariantProps } from "class-variance-authority";
3
- import * as React from "react";
4
- //#region src/components/heading.d.ts
5
- declare const headingVariants: (props?: ({
6
- size?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
7
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
- type HeadingProps = React.ComponentProps<'h2'> & VariantProps<typeof headingVariants> & {
9
- asChild?: boolean;
10
- };
11
- declare function Heading({ className, size, asChild, ...props }: HeadingProps): React.JSX.Element;
12
- //#endregion
13
- export { Heading, HeadingProps, headingVariants };
14
- //# sourceMappingURL=heading.d.ts.map
1
+ import { n as HeadingProps, r as headingVariants, t as Heading } from "../heading-BTXl4JfI.js";
2
+ export { Heading, HeadingProps, headingVariants };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Slot as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`text-foreground font-semibold tracking-tight`,{variants:{size:{xs:`text-lg`,sm:`text-xl`,md:`text-2xl`,lg:`text-3xl`,xl:`text-4xl`}},defaultVariants:{size:`md`}});function Heading({className:r,size:a=`md`,asChild:o=!1,...s}){return n(o?t.Root:`h2`,{"data-slot":`heading`,"data-size":a,className:e(i({size:a}),r),...s})}export{Heading,i as headingVariants};
2
- //# sourceMappingURL=heading.js.map
1
+ import{n as e,t}from"../heading-DaxKLVRm.js";export{t as Heading,e as headingVariants};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{t as e}from"../heading-DaxKLVRm.js";import{a as t,r as n}from"../react.esm-BkhVXJ8s.js";import{jsx as r}from"react/jsx-runtime";describe(`Heading`,()=>{it(`renders an h2 with the default size and data-slot`,()=>{let{container:t}=n(r(e,{children:`Title`})),i=t.querySelector(`[data-slot="heading"]`);expect(i?.tagName).toBe(`H2`),expect(i?.getAttribute(`data-size`)).toBe(`md`),expect(i?.className).toContain(`text-2xl`)}),it(`applies size variant classes and the matching data-size attribute`,()=>{let{container:t}=n(r(e,{size:`xl`,children:`Title`})),i=t.querySelector(`[data-slot="heading"]`);expect(i?.getAttribute(`data-size`)).toBe(`xl`),expect(i?.className).toContain(`text-4xl`)}),it(`merges a custom className with the variant classes`,()=>{let{container:t}=n(r(e,{className:`custom-class`,children:`Title`})),i=t.querySelector(`[data-slot="heading"]`);expect(i?.className).toContain(`custom-class`),expect(i?.className).toContain(`font-semibold`)}),it(`renders as the provided child element when asChild is set`,()=>{n(r(e,{asChild:!0,children:r(`a`,{href:`/target`,children:`Link heading`})}));let i=t.getByRole(`link`,{name:`Link heading`});expect(i.tagName).toBe(`A`),expect(i.getAttribute(`data-slot`)).toBe(`heading`),expect(i.className).toContain(`font-semibold`)}),it(`forwards a ref to the underlying heading element`,()=>{let t={current:null};n(r(e,{ref:t,children:`Title`})),expect(t.current).toBeInstanceOf(HTMLHeadingElement),expect(t.current?.textContent).toBe(`Title`)})});
2
+ //# sourceMappingURL=heading.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.spec.js","names":[],"sources":["../../src/components/heading.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { Heading } from './heading'\n\ndescribe('Heading', () => {\n it('renders an h2 with the default size and data-slot', () => {\n const { container } = render(<Heading>Title</Heading>)\n\n const heading = container.querySelector('[data-slot=\"heading\"]')\n\n expect(heading?.tagName).toBe('H2')\n expect(heading?.getAttribute('data-size')).toBe('md')\n expect(heading?.className).toContain('text-2xl')\n })\n\n it('applies size variant classes and the matching data-size attribute', () => {\n const { container } = render(<Heading size=\"xl\">Title</Heading>)\n\n const heading = container.querySelector('[data-slot=\"heading\"]')\n\n expect(heading?.getAttribute('data-size')).toBe('xl')\n expect(heading?.className).toContain('text-4xl')\n })\n\n it('merges a custom className with the variant classes', () => {\n const { container } = render(<Heading className=\"custom-class\">Title</Heading>)\n\n const heading = container.querySelector('[data-slot=\"heading\"]')\n\n expect(heading?.className).toContain('custom-class')\n expect(heading?.className).toContain('font-semibold')\n })\n\n it('renders as the provided child element when asChild is set', () => {\n render(\n <Heading asChild>\n <a href=\"/target\">Link heading</a>\n </Heading>\n )\n\n const link = screen.getByRole('link', { name: 'Link heading' })\n\n expect(link.tagName).toBe('A')\n expect(link.getAttribute('data-slot')).toBe('heading')\n expect(link.className).toContain('font-semibold')\n })\n\n it('forwards a ref to the underlying heading element', () => {\n const ref = { current: null as HTMLHeadingElement | null }\n\n render(<Heading ref={ref}>Title</Heading>)\n\n expect(ref.current).toBeInstanceOf(HTMLHeadingElement)\n expect(ref.current?.textContent).toBe('Title')\n })\n})\n"],"mappings":"+KAIA,SAAS,cAAiB,CACxB,GAAG,wDAA2D,CAC5D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAA,SAAS,OAAc,CAAA,CAAC,EAE/C,EAAU,EAAU,cAAc,uBAAuB,EAE/D,OAAO,GAAS,OAAO,CAAC,CAAC,KAAK,IAAI,EAClC,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,UAAU,CACjD,CAAC,EAED,GAAG,wEAA2E,CAC5E,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAS,KAAK,KAAK,SAAA,OAAc,CAAA,CAAC,EAEzD,EAAU,EAAU,cAAc,uBAAuB,EAE/D,OAAO,GAAS,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EACpD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,UAAU,CACjD,CAAC,EAED,GAAG,yDAA4D,CAC7D,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAS,UAAU,eAAe,SAAA,OAAc,CAAA,CAAC,EAExE,EAAU,EAAU,cAAc,uBAAuB,EAE/D,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,cAAc,EACnD,OAAO,GAAS,SAAS,CAAC,CAAC,UAAU,eAAe,CACtD,CAAC,EAED,GAAG,gEAAmE,CACpE,EACE,EAAC,EAAD,CAAS,QAAA,GACP,SAAA,EAAC,IAAD,CAAG,KAAK,UAAU,SAAA,cAAe,CAAA,CAC1B,CAAA,CACX,EAEA,IAAM,EAAO,EAAO,UAAU,OAAQ,CAAE,KAAM,cAAe,CAAC,EAE9D,OAAO,EAAK,OAAO,CAAC,CAAC,KAAK,GAAG,EAC7B,OAAO,EAAK,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EACrD,OAAO,EAAK,SAAS,CAAC,CAAC,UAAU,eAAe,CAClD,CAAC,EAED,GAAG,uDAA0D,CAC3D,IAAM,EAAM,CAAE,QAAS,IAAkC,EAEzD,EAAO,EAAC,EAAD,CAAc,MAAK,SAAA,OAAc,CAAA,CAAC,EAEzC,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,kBAAkB,EACrD,OAAO,EAAI,SAAS,WAAW,CAAC,CAAC,KAAK,OAAO,CAC/C,CAAC,CACH,CAAC"}
@@ -1,13 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { HoverCard as HoverCard$1 } from "radix-ui";
3
- import * as React from "react";
4
- //#region src/components/hover-card.d.ts
5
- type HoverCardProps = React.ComponentProps<typeof HoverCard$1.Root>;
6
- type HoverCardTriggerProps = React.ComponentProps<typeof HoverCard$1.Trigger>;
7
- type HoverCardContentProps = React.ComponentProps<typeof HoverCard$1.Content>;
8
- declare function HoverCard({ ...props }: HoverCardProps): React.JSX.Element;
9
- declare function HoverCardTrigger({ ...props }: HoverCardTriggerProps): React.JSX.Element;
10
- declare function HoverCardContent({ className, align, sideOffset, ...props }: HoverCardContentProps): React.JSX.Element;
11
- //#endregion
12
- export { HoverCard, HoverCardContent, HoverCardContentProps, HoverCardProps, HoverCardTrigger, HoverCardTriggerProps };
13
- //# sourceMappingURL=hover-card.d.ts.map
1
+ import { a as HoverCardTrigger, i as HoverCardProps, n as HoverCardContent, o as HoverCardTriggerProps, r as HoverCardContentProps, t as HoverCard } from "../hover-card-C3yz2zQi.js";
2
+ export { HoverCard, HoverCardContent, HoverCardContentProps, HoverCardProps, HoverCardTrigger, HoverCardTriggerProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{HoverCard as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function HoverCard({...e}){return n(t.Root,{"data-slot":`hover-card`,...e})}function HoverCardTrigger({...e}){return n(t.Trigger,{"data-slot":`hover-card-trigger`,...e})}function HoverCardContent({className:r,align:i=`center`,sideOffset:a=4,...o}){return n(t.Portal,{"data-slot":`hover-card-portal`,children:n(t.Content,{"data-slot":`hover-card-content`,align:i,sideOffset:a,className:e(`z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),...o})})}export{HoverCard,HoverCardContent,HoverCardTrigger};
2
- //# sourceMappingURL=hover-card.js.map
1
+ import{n as e,r as t,t as n}from"../hover-card-Dc8yLsm-.js";export{n as HoverCard,e as HoverCardContent,t as HoverCardTrigger};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{n as e,r as t,t as n}from"../hover-card-Dc8yLsm-.js";import{a as r,r as i}from"../react.esm-BkhVXJ8s.js";import{jsx as a,jsxs as o}from"react/jsx-runtime";describe(`HoverCard`,()=>{it(`renders the trigger with its data-slot and keeps the content out of the DOM when closed`,()=>{i(o(n,{children:[a(t,{children:`Hover me`}),a(e,{children:`Card content`})]}));let s=r.getByText(`Hover me`);expect(s.getAttribute(`data-slot`)).toBe(`hover-card-trigger`),expect(s.getAttribute(`data-state`)).toBe(`closed`),expect(r.queryByText(`Card content`)).toBeNull()}),it(`renders the content with its data-slot when open is controlled to true`,()=>{i(o(n,{open:!0,children:[a(t,{children:`Hover me`}),a(e,{children:`Card content`})]}));let s=r.getByText(`Card content`);expect(s.getAttribute(`data-slot`)).toBe(`hover-card-content`),expect(s.getAttribute(`data-state`)).toBe(`open`),expect(s.className).toContain(`rounded-lg`)}),it(`merges a custom className onto the content`,()=>{i(o(n,{open:!0,children:[a(t,{children:`Hover me`}),a(e,{className:`custom-class`,children:`Card content`})]})),expect(r.getByText(`Card content`).className).toContain(`custom-class`)}),it(`accepts custom align and sideOffset props without breaking rendering`,()=>{i(o(n,{open:!0,children:[a(t,{children:`Hover me`}),a(e,{align:`start`,sideOffset:12,children:`Card content`})]})),expect(r.getByText(`Card content`)).not.toBeNull()})});
2
+ //# sourceMappingURL=hover-card.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-card.spec.js","names":[],"sources":["../../src/components/hover-card.spec.tsx"],"sourcesContent":["import { render, screen } from '@testing-library/react'\n\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from './hover-card'\n\ndescribe('HoverCard', () => {\n it('renders the trigger with its data-slot and keeps the content out of the DOM when closed', () => {\n render(\n <HoverCard>\n <HoverCardTrigger>Hover me</HoverCardTrigger>\n <HoverCardContent>Card content</HoverCardContent>\n </HoverCard>\n )\n\n const trigger = screen.getByText('Hover me')\n\n expect(trigger.getAttribute('data-slot')).toBe('hover-card-trigger')\n expect(trigger.getAttribute('data-state')).toBe('closed')\n expect(screen.queryByText('Card content')).toBeNull()\n })\n\n it('renders the content with its data-slot when open is controlled to true', () => {\n render(\n <HoverCard open>\n <HoverCardTrigger>Hover me</HoverCardTrigger>\n <HoverCardContent>Card content</HoverCardContent>\n </HoverCard>\n )\n\n const content = screen.getByText('Card content')\n\n expect(content.getAttribute('data-slot')).toBe('hover-card-content')\n expect(content.getAttribute('data-state')).toBe('open')\n expect(content.className).toContain('rounded-lg')\n })\n\n it('merges a custom className onto the content', () => {\n render(\n <HoverCard open>\n <HoverCardTrigger>Hover me</HoverCardTrigger>\n <HoverCardContent className=\"custom-class\">Card content</HoverCardContent>\n </HoverCard>\n )\n\n expect(screen.getByText('Card content').className).toContain('custom-class')\n })\n\n it('accepts custom align and sideOffset props without breaking rendering', () => {\n render(\n <HoverCard open>\n <HoverCardTrigger>Hover me</HoverCardTrigger>\n <HoverCardContent align=\"start\" sideOffset={12}>\n Card content\n </HoverCardContent>\n </HoverCard>\n )\n\n expect(screen.getByText('Card content')).not.toBeNull()\n })\n})\n"],"mappings":"0MAIA,SAAS,gBAAmB,CAC1B,GAAG,8FAAiG,CAClG,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAkB,UAA0B,CAAA,EAC5C,EAAC,EAAD,CAAA,SAAkB,cAA8B,CAAA,CACvC,CAAA,CAAA,CACb,EAEA,IAAM,EAAU,EAAO,UAAU,UAAU,EAE3C,OAAO,EAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,oBAAoB,EACnE,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EACxD,OAAO,EAAO,YAAY,cAAc,CAAC,CAAC,CAAC,SAAS,CACtD,CAAC,EAED,GAAG,6EAAgF,CACjF,EACE,EAAC,EAAD,CAAW,KAAA,GAAX,SAAA,CACE,EAAC,EAAD,CAAA,SAAkB,UAA0B,CAAA,EAC5C,EAAC,EAAD,CAAA,SAAkB,cAA8B,CAAA,CACvC,CACb,CAAA,CAAA,EAEA,IAAM,EAAU,EAAO,UAAU,cAAc,EAE/C,OAAO,EAAQ,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,oBAAoB,EACnE,OAAO,EAAQ,aAAa,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EACtD,OAAO,EAAQ,SAAS,CAAC,CAAC,UAAU,YAAY,CAClD,CAAC,EAED,GAAG,iDAAoD,CACrD,EACE,EAAC,EAAD,CAAW,KAAA,GAAX,SAAA,CACE,EAAC,EAAD,CAAA,SAAkB,UAA0B,CAAA,EAC5C,EAAC,EAAD,CAAkB,UAAU,eAAe,SAAA,cAA8B,CAAA,CAChE,CACb,CAAA,CAAA,EAEA,OAAO,EAAO,UAAU,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,cAAc,CAC7E,CAAC,EAED,GAAG,2EAA8E,CAC/E,EACE,EAAC,EAAD,CAAW,KAAA,GAAX,SAAA,CACE,EAAC,EAAD,CAAA,SAAkB,UAA0B,CAAA,EAC5C,EAAC,EAAD,CAAkB,MAAM,QAAQ,WAAY,GAAI,SAAA,cAE9B,CAAA,CACT,CACb,CAAA,CAAA,EAEA,OAAO,EAAO,UAAU,cAAc,CAAC,CAAC,CAAC,IAAI,SAAS,CACxD,CAAC,CACH,CAAC"}
@@ -1,26 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import { Button } from "./button.js";
3
- import { VariantProps } from "class-variance-authority";
4
- import * as React from "react";
5
- //#region src/components/input-group.d.ts
6
- type InputGroupProps = React.ComponentProps<'div'>;
7
- type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;
8
- type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size'> & VariantProps<typeof inputGroupButtonVariants>;
9
- type InputGroupTextProps = React.ComponentProps<'span'>;
10
- type InputGroupInputProps = React.ComponentProps<'input'>;
11
- type InputGroupTextareaProps = React.ComponentProps<'textarea'>;
12
- declare function InputGroup({ className, ...props }: InputGroupProps): React.JSX.Element;
13
- declare const inputGroupAddonVariants: (props?: ({
14
- align?: "block-end" | "block-start" | "inline-end" | "inline-start" | null | undefined;
15
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
- declare function InputGroupAddon({ className, align, ...props }: InputGroupAddonProps): React.JSX.Element;
17
- declare const inputGroupButtonVariants: (props?: ({
18
- size?: "icon-sm" | "icon-xs" | "sm" | "xs" | null | undefined;
19
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
20
- declare function InputGroupButton({ className, type, variant, size, color, ...props }: InputGroupButtonProps): React.JSX.Element;
21
- declare function InputGroupText({ className, ...props }: InputGroupTextProps): React.JSX.Element;
22
- declare function InputGroupInput({ className, ...props }: InputGroupInputProps): React.JSX.Element;
23
- declare function InputGroupTextarea({ className, ...props }: InputGroupTextareaProps): React.JSX.Element;
24
- //#endregion
25
- export { InputGroup, InputGroupAddon, InputGroupAddonProps, InputGroupButton, InputGroupButtonProps, InputGroupInput, InputGroupInputProps, InputGroupProps, InputGroupText, InputGroupTextProps, InputGroupTextarea, InputGroupTextareaProps };
26
- //# sourceMappingURL=input-group.d.ts.map
1
+ import { a as InputGroupButtonProps, c as InputGroupProps, d as InputGroupTextarea, f as InputGroupTextareaProps, i as InputGroupButton, l as InputGroupText, n as InputGroupAddon, o as InputGroupInput, r as InputGroupAddonProps, s as InputGroupInputProps, t as InputGroup, u as InputGroupTextProps } from "../input-group-CBn36aMg.js";
2
+ export { InputGroup, InputGroupAddon, InputGroupAddonProps, InputGroupButton, InputGroupButtonProps, InputGroupInput, InputGroupInputProps, InputGroupProps, InputGroupText, InputGroupTextProps, InputGroupTextarea, InputGroupTextareaProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{Input as n}from"./input.js";import{Textarea as r}from"./textarea.js";import{jsx as i}from"react/jsx-runtime";import{cva as a}from"class-variance-authority";function InputGroup({className:t,...n}){return i(`div`,{"data-slot":`input-group`,className:e(`group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5`,t),...n})}const o=a(`flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]`,"inline-end":`order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]`,"block-start":`order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2`,"block-end":`order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2`}},defaultVariants:{align:`inline-start`}});function InputGroupAddon({className:t,align:n=`inline-start`,...r}){return i(`div`,{"data-slot":`input-group-addon`,"data-align":n,className:e(o({align:n}),t),...r})}const s=a(`flex items-center gap-2 text-sm shadow-none`,{variants:{size:{xs:`h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5`,sm:``,"icon-xs":`size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0`,"icon-sm":`size-8 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}});function InputGroupButton({className:n,type:r=`button`,variant:a=`ghost`,size:o=`xs`,color:c=`zinc`,...l}){return i(t,{type:r,"data-size":o,variant:a,color:c,className:e(s({size:o}),n),...l})}function InputGroupText({className:t,...n}){return i(`span`,{className:e(`flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4`,t),...n})}function InputGroupInput({className:t,...r}){return i(n,{"data-slot":`input-group-control`,className:e(`flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent`,t),...r})}function InputGroupTextarea({className:t,...n}){return i(r,{"data-slot":`input-group-control`,className:e(`flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent`,t),...n})}export{InputGroup,InputGroupAddon,InputGroupButton,InputGroupInput,InputGroupText,InputGroupTextarea};
2
- //# sourceMappingURL=input-group.js.map
1
+ import{a as e,i as t,n,o as r,r as i,t as a}from"../input-group-DsO2W3Lw.js";export{a as InputGroup,n as InputGroupAddon,i as InputGroupButton,t as InputGroupInput,e as InputGroupText,r as InputGroupTextarea};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{a as n,i as r,n as i,o as a,r as o,t as s}from"../input-group-DsO2W3Lw.js";import{a as c,n as l,r as u}from"../react.esm-BkhVXJ8s.js";import{jsx as d,jsxs as f}from"react/jsx-runtime";describe(`InputGroup`,()=>{it(`renders the root container with its data-slot and base classes`,()=>{let{container:e}=u(d(s,{children:`content`})),t=e.querySelector(`[data-slot="input-group"]`);expect(t).not.toBeNull(),expect(t?.className).toContain(`rounded-lg`),expect(t?.className).toContain(`border`)}),describe(`InputGroupAddon`,()=>{it(`defaults to the inline-start alignment`,()=>{let{container:e}=u(d(i,{children:`$`})),t=e.querySelector(`[data-slot="input-group-addon"]`);expect(t?.getAttribute(`data-align`)).toBe(`inline-start`),expect(t?.className).toContain(`order-first`)}),it(`applies the inline-end alignment classes`,()=>{let{container:e}=u(d(i,{align:`inline-end`,children:`USD`})),t=e.querySelector(`[data-slot="input-group-addon"]`);expect(t?.getAttribute(`data-align`)).toBe(`inline-end`),expect(t?.className).toContain(`order-last`)})}),describe(`InputGroupButton`,()=>{it(`renders as a button with the forwarded variant, color and custom size attributes`,()=>{let e=vi.fn();u(d(o,{size:`icon-sm`,color:`primary`,onClick:e,children:`Action`}));let t=c.getByRole(`button`,{name:`Action`});expect(t.getAttribute(`type`)).toBe(`button`),expect(t.getAttribute(`data-variant`)).toBe(`ghost`),expect(t.getAttribute(`data-color`)).toBe(`primary`),expect(t.getAttribute(`data-size`)).toBe(`icon-sm`),expect(t.className).toContain(`size-8`),l.click(t),expect(e).toHaveBeenCalledTimes(1)}),it(`defaults to the xs size classes`,()=>{u(d(o,{children:`Small`}));let e=c.getByRole(`button`,{name:`Small`});expect(e.getAttribute(`data-size`)).toBe(`xs`),expect(e.className).toContain(`h-6`)})}),it(`renders InputGroupText with its icon-adjacent typography classes`,()=>{u(d(n,{children:`Hint`}));let e=c.getByText(`Hint`);expect(e.tagName).toBe(`SPAN`),expect(e.className).toContain(`text-muted-foreground`)}),describe(`InputGroupInput`,()=>{it(`renders with the input-group-control data-slot and accepts typed input`,()=>{let{container:e}=u(d(r,{placeholder:`Email`})),t=e.querySelector(`[data-slot="input-group-control"]`);expect(t).not.toBeNull(),expect(t.tagName).toBe(`INPUT`),expect(t.className).toContain(`border-0`),l.change(t,{target:{value:`hello@example.com`}}),expect(t.value).toBe(`hello@example.com`)}),it(`reads the Field control id when rendered inside a Field`,()=>{u(f(t,{children:[d(e,{children:`Email`}),d(s,{children:d(r,{})})]}));let n=c.getByLabelText(`Email`),i=c.getByText(`Email`);expect(n.getAttribute(`id`)).toBeTruthy(),expect(i.getAttribute(`for`)).toBe(n.getAttribute(`id`))})}),describe(`InputGroupTextarea`,()=>{it(`renders with the input-group-control data-slot and accepts typed input`,()=>{let{container:e}=u(d(a,{placeholder:`Message`})),t=e.querySelector(`[data-slot="input-group-control"]`);expect(t).not.toBeNull(),expect(t.tagName).toBe(`TEXTAREA`),expect(t.className).toContain(`resize-none`),l.change(t,{target:{value:`Hello there`}}),expect(t.value).toBe(`Hello there`)})}),it(`composes an addon, input and button together`,()=>{let{container:e}=u(f(s,{children:[d(i,{children:d(n,{children:`$`})}),d(r,{placeholder:`Amount`}),d(i,{align:`inline-end`,children:d(o,{children:`Clear`})})]})),t=e.querySelector(`[data-slot="input-group"]`);expect(t?.querySelector(`[data-slot="input-group-addon"]`)).not.toBeNull(),expect(t?.querySelector(`[data-slot="input-group-control"]`)).not.toBeNull(),expect(c.getByRole(`button`,{name:`Clear`})).not.toBeNull()})});
2
+ //# sourceMappingURL=input-group.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-group.spec.js","names":[],"sources":["../../src/components/input-group.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea\n} from './input-group'\n\ndescribe('InputGroup', () => {\n it('renders the root container with its data-slot and base classes', () => {\n const { container } = render(<InputGroup>content</InputGroup>)\n const group = container.querySelector('[data-slot=\"input-group\"]')\n\n expect(group).not.toBeNull()\n expect(group?.className).toContain('rounded-lg')\n expect(group?.className).toContain('border')\n })\n\n describe('InputGroupAddon', () => {\n it('defaults to the inline-start alignment', () => {\n const { container } = render(<InputGroupAddon>$</InputGroupAddon>)\n const addon = container.querySelector('[data-slot=\"input-group-addon\"]')\n\n expect(addon?.getAttribute('data-align')).toBe('inline-start')\n expect(addon?.className).toContain('order-first')\n })\n\n it('applies the inline-end alignment classes', () => {\n const { container } = render(<InputGroupAddon align=\"inline-end\">USD</InputGroupAddon>)\n const addon = container.querySelector('[data-slot=\"input-group-addon\"]')\n\n expect(addon?.getAttribute('data-align')).toBe('inline-end')\n expect(addon?.className).toContain('order-last')\n })\n })\n\n describe('InputGroupButton', () => {\n it('renders as a button with the forwarded variant, color and custom size attributes', () => {\n const handleClick = vi.fn()\n render(\n <InputGroupButton size=\"icon-sm\" color=\"primary\" onClick={handleClick}>\n Action\n </InputGroupButton>\n )\n const button = screen.getByRole('button', { name: 'Action' })\n\n expect(button.getAttribute('type')).toBe('button')\n expect(button.getAttribute('data-variant')).toBe('ghost')\n expect(button.getAttribute('data-color')).toBe('primary')\n expect(button.getAttribute('data-size')).toBe('icon-sm')\n expect(button.className).toContain('size-8')\n\n fireEvent.click(button)\n expect(handleClick).toHaveBeenCalledTimes(1)\n })\n\n it('defaults to the xs size classes', () => {\n render(<InputGroupButton>Small</InputGroupButton>)\n const button = screen.getByRole('button', { name: 'Small' })\n\n expect(button.getAttribute('data-size')).toBe('xs')\n expect(button.className).toContain('h-6')\n })\n })\n\n it('renders InputGroupText with its icon-adjacent typography classes', () => {\n render(<InputGroupText>Hint</InputGroupText>)\n const text = screen.getByText('Hint')\n\n expect(text.tagName).toBe('SPAN')\n expect(text.className).toContain('text-muted-foreground')\n })\n\n describe('InputGroupInput', () => {\n it('renders with the input-group-control data-slot and accepts typed input', () => {\n const { container } = render(<InputGroupInput placeholder=\"Email\" />)\n const input = container.querySelector('[data-slot=\"input-group-control\"]') as HTMLInputElement\n\n expect(input).not.toBeNull()\n expect(input.tagName).toBe('INPUT')\n expect(input.className).toContain('border-0')\n\n fireEvent.change(input, { target: { value: 'hello@example.com' } })\n expect(input.value).toBe('hello@example.com')\n })\n\n it('reads the Field control id when rendered inside a Field', () => {\n render(\n <Field>\n <FieldLabel>Email</FieldLabel>\n <InputGroup>\n <InputGroupInput />\n </InputGroup>\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\n describe('InputGroupTextarea', () => {\n it('renders with the input-group-control data-slot and accepts typed input', () => {\n const { container } = render(<InputGroupTextarea placeholder=\"Message\" />)\n const textarea = container.querySelector('[data-slot=\"input-group-control\"]') as HTMLTextAreaElement\n\n expect(textarea).not.toBeNull()\n expect(textarea.tagName).toBe('TEXTAREA')\n expect(textarea.className).toContain('resize-none')\n\n fireEvent.change(textarea, { target: { value: 'Hello there' } })\n expect(textarea.value).toBe('Hello there')\n })\n })\n\n it('composes an addon, input and button together', () => {\n const { container } = render(\n <InputGroup>\n <InputGroupAddon>\n <InputGroupText>$</InputGroupText>\n </InputGroupAddon>\n <InputGroupInput placeholder=\"Amount\" />\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton>Clear</InputGroupButton>\n </InputGroupAddon>\n </InputGroup>\n )\n\n const group = container.querySelector('[data-slot=\"input-group\"]')\n expect(group?.querySelector('[data-slot=\"input-group-addon\"]')).not.toBeNull()\n expect(group?.querySelector('[data-slot=\"input-group-control\"]')).not.toBeNull()\n expect(screen.getByRole('button', { name: 'Clear' })).not.toBeNull()\n })\n})\n"],"mappings":"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"}
@@ -1,19 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import * as React from "react";
3
- import { OTPInput, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "input-otp";
4
- //#region src/components/input-otp.d.ts
5
- type InputOTPProps = React.ComponentProps<typeof OTPInput> & {
6
- containerClassName?: string;
7
- };
8
- type InputOTPGroupProps = React.ComponentProps<'div'>;
9
- type InputOTPSlotProps = React.ComponentProps<'div'> & {
10
- index: number;
11
- };
12
- type InputOTPSeparatorProps = React.ComponentProps<'div'>;
13
- declare function InputOTP({ className, containerClassName, id, ...props }: InputOTPProps): React.JSX.Element;
14
- declare function InputOTPGroup({ className, ...props }: InputOTPGroupProps): React.JSX.Element;
15
- declare function InputOTPSlot({ index, className, ...props }: InputOTPSlotProps): React.JSX.Element;
16
- declare function InputOTPSeparator({ ...props }: InputOTPSeparatorProps): React.JSX.Element;
17
- //#endregion
18
- export { InputOTP, InputOTPGroup, InputOTPGroupProps, InputOTPProps, InputOTPSeparator, InputOTPSeparatorProps, InputOTPSlot, InputOTPSlotProps, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS };
19
- //# sourceMappingURL=input-otp.d.ts.map
1
+ import { a as InputOTPSeparator, c as InputOTPSlotProps, d as REGEXP_ONLY_DIGITS_AND_CHARS, i as InputOTPProps, l as REGEXP_ONLY_CHARS, n as InputOTPGroup, o as InputOTPSeparatorProps, r as InputOTPGroupProps, s as InputOTPSlot, t as InputOTP, u as REGEXP_ONLY_DIGITS } from "../input-otp-gIEkdiIC.js";
2
+ export { InputOTP, InputOTPGroup, InputOTPGroupProps, InputOTPProps, InputOTPSeparator, InputOTPSeparatorProps, InputOTPSlot, InputOTPSlotProps, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{useFieldControlId as t}from"./field.js";import{IconMinus as n}from"@tabler/icons-react";import{jsx as r,jsxs as i}from"react/jsx-runtime";import*as a from"react";import{OTPInput as o,OTPInputContext as s,REGEXP_ONLY_CHARS as c,REGEXP_ONLY_DIGITS as l,REGEXP_ONLY_DIGITS_AND_CHARS as u}from"input-otp";function InputOTP({className:n,containerClassName:i,id:a,...s}){return r(o,{id:t(a),"data-slot":`input-otp`,containerClassName:e(`cn-input-otp flex items-center has-disabled:opacity-50`,i),spellCheck:!1,className:e(`disabled:cursor-not-allowed`,n),...s})}function InputOTPGroup({className:t,...n}){return r(`div`,{"data-slot":`input-otp-group`,className:e(`flex items-center rounded-lg`,`has-aria-invalid:border-destructive has-aria-invalid:ring-destructive/20 has-aria-invalid:ring-3 dark:has-aria-invalid:ring-destructive/40`,t),...n})}function InputOTPSlot({index:t,className:n,...o}){let{char:c,hasFakeCaret:l,isActive:u}=a.useContext(s)?.slots[t]??{};return i(`div`,{"data-slot":`input-otp-slot`,"data-active":u,className:e(`dark:bg-input/30 border-input relative flex size-8 items-center justify-center border-y border-r text-sm transition-all outline-none`,`first:rounded-l-lg first:border-l last:rounded-r-lg`,`aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive`,`data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:ring-3 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40`,n),...o,children:[c,l&&r(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:r(`div`,{className:`animate-caret-blink bg-foreground h-4 w-px duration-1000`})})]})}function InputOTPSeparator({...e}){return r(`div`,{"data-slot":`input-otp-separator`,className:`[&_svg:not([class*='size-'])]:size-4 flex items-center`,...e,children:r(n,{})})}export{InputOTP,InputOTPGroup,InputOTPSeparator,InputOTPSlot,c as REGEXP_ONLY_CHARS,l as REGEXP_ONLY_DIGITS,u as REGEXP_ONLY_DIGITS_AND_CHARS};
2
- //# sourceMappingURL=input-otp.js.map
1
+ import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"../input-otp-CzfRHf2V.js";export{o as InputOTP,n as InputOTPGroup,i as InputOTPSeparator,t as InputOTPSlot,e as REGEXP_ONLY_CHARS,r as REGEXP_ONLY_DIGITS,a as REGEXP_ONLY_DIGITS_AND_CHARS};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{i as n,n as r,o as i,r as a,t as o}from"../input-otp-CzfRHf2V.js";import{n as s,r as c}from"../react.esm-BkhVXJ8s.js";import{jsx as l,jsxs as u}from"react/jsx-runtime";if(globalThis.ResizeObserver===void 0){class ResizeObserverStub{observe(){}unobserve(){}disconnect(){}}globalThis.ResizeObserver=ResizeObserverStub}function renderOtp(e={}){return c(l(o,{maxLength:4,pushPasswordManagerStrategy:`none`,...e,children:u(r,{children:[l(n,{index:0}),l(n,{index:1}),l(n,{index:2}),l(n,{index:3})]})}))}describe(`InputOTP`,()=>{it(`renders the underlying input and one slot per index`,()=>{let{container:e}=renderOtp(),t=e.querySelector(`input[data-slot="input-otp"]`),n=e.querySelectorAll(`[data-slot="input-otp-slot"]`);expect(t).not.toBeNull(),expect(n).toHaveLength(4)}),it(`reflects typed digits into the corresponding slots`,()=>{let{container:e}=renderOtp(),t=e.querySelector(`input[data-slot="input-otp"]`);s.change(t,{target:{value:`1234`}});let n=e.querySelectorAll(`[data-slot="input-otp-slot"]`);expect(n[0]?.textContent).toBe(`1`),expect(n[1]?.textContent).toBe(`2`),expect(n[2]?.textContent).toBe(`3`),expect(n[3]?.textContent).toBe(`4`)}),it(`calls onChange as digits are entered and onComplete once the value is full`,()=>{let e=vi.fn(),t=vi.fn(),{container:n}=renderOtp({onChange:e,onComplete:t}),r=n.querySelector(`input[data-slot="input-otp"]`);s.change(r,{target:{value:`12`}}),expect(e).toHaveBeenLastCalledWith(`12`),expect(t).not.toHaveBeenCalled(),s.change(r,{target:{value:`1234`}}),expect(t).toHaveBeenCalledWith(`1234`)}),it(`rejects input that does not match the provided pattern`,()=>{let e=vi.fn(),{container:t}=renderOtp({pattern:i,onChange:e}),n=t.querySelector(`input[data-slot="input-otp"]`);s.change(n,{target:{value:`ab`}}),expect(e).not.toHaveBeenCalled()}),it(`applies the has-disabled opacity class at the container level`,()=>{let{container:e}=renderOtp({disabled:!0}),t=e.querySelector(`[data-input-otp-container]`);expect(t?.className).toContain(`has-disabled:opacity-50`);let n=e.querySelector(`input[data-slot="input-otp"]`);expect(n).toHaveProperty(`disabled`,!0)}),it(`renders a separator with its icon between two groups`,()=>{let{container:e}=c(u(o,{maxLength:6,pushPasswordManagerStrategy:`none`,children:[u(r,{children:[l(n,{index:0}),l(n,{index:1}),l(n,{index:2})]}),l(a,{}),u(r,{children:[l(n,{index:3}),l(n,{index:4}),l(n,{index:5})]})]})),t=e.querySelector(`[data-slot="input-otp-separator"]`);expect(t).not.toBeNull(),expect(t?.querySelector(`svg`)).not.toBeNull()}),it(`wires the generated Field control id onto the underlying input when used inside a Field`,()=>{let{container:i}=c(u(t,{children:[l(e,{children:`One-time code`}),l(o,{maxLength:4,pushPasswordManagerStrategy:`none`,children:l(r,{children:l(n,{index:0})})})]})),a=i.querySelector(`input[data-slot="input-otp"]`),s=i.querySelector(`[data-slot="field-label"]`);expect(a?.getAttribute(`id`)).toBeTruthy(),expect(s?.getAttribute(`for`)).toBe(a?.getAttribute(`id`))})});
2
+ //# sourceMappingURL=input-otp.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-otp.spec.js","names":[],"sources":["../../src/components/input-otp.spec.tsx"],"sourcesContent":["import { fireEvent, render } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_DIGITS } from './input-otp'\n\n// input-otp observes its container with a native ResizeObserver to size the fake caret. jsdom\n// does not implement ResizeObserver, so every mount needs a harmless stand-in.\nif (typeof globalThis.ResizeObserver === 'undefined') {\n class ResizeObserverStub {\n observe() {}\n unobserve() {}\n disconnect() {}\n }\n\n globalThis.ResizeObserver = ResizeObserverStub\n}\n\ntype RenderOtpProps = Partial<Omit<Extract<React.ComponentProps<typeof InputOTP>, { render?: never }>, 'children'>>\n\nfunction renderOtp(props: RenderOtpProps = {}) {\n return render(\n // Disables input-otp's internal password-manager-badge detection, which schedules several\n // timers up to 6s out (see node_modules/input-otp/dist/index.mjs) that can otherwise survive\n // past this test file's teardown and fire against an already-torn-down jsdom environment.\n <InputOTP maxLength={4} pushPasswordManagerStrategy=\"none\" {...props}>\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n <InputOTPSlot index={1} />\n <InputOTPSlot index={2} />\n <InputOTPSlot index={3} />\n </InputOTPGroup>\n </InputOTP>\n )\n}\n\ndescribe('InputOTP', () => {\n it('renders the underlying input and one slot per index', () => {\n const { container } = renderOtp()\n\n const input = container.querySelector('input[data-slot=\"input-otp\"]')\n const slots = container.querySelectorAll('[data-slot=\"input-otp-slot\"]')\n\n expect(input).not.toBeNull()\n expect(slots).toHaveLength(4)\n })\n\n it('reflects typed digits into the corresponding slots', () => {\n const { container } = renderOtp()\n const input = container.querySelector('input[data-slot=\"input-otp\"]') as HTMLInputElement\n\n fireEvent.change(input, { target: { value: '1234' } })\n\n const slots = container.querySelectorAll('[data-slot=\"input-otp-slot\"]')\n expect(slots[0]?.textContent).toBe('1')\n expect(slots[1]?.textContent).toBe('2')\n expect(slots[2]?.textContent).toBe('3')\n expect(slots[3]?.textContent).toBe('4')\n })\n\n it('calls onChange as digits are entered and onComplete once the value is full', () => {\n const handleChange = vi.fn()\n const handleComplete = vi.fn()\n const { container } = renderOtp({ onChange: handleChange, onComplete: handleComplete })\n const input = container.querySelector('input[data-slot=\"input-otp\"]') as HTMLInputElement\n\n fireEvent.change(input, { target: { value: '12' } })\n expect(handleChange).toHaveBeenLastCalledWith('12')\n expect(handleComplete).not.toHaveBeenCalled()\n\n fireEvent.change(input, { target: { value: '1234' } })\n expect(handleComplete).toHaveBeenCalledWith('1234')\n })\n\n it('rejects input that does not match the provided pattern', () => {\n const handleChange = vi.fn()\n const { container } = renderOtp({ pattern: REGEXP_ONLY_DIGITS, onChange: handleChange })\n const input = container.querySelector('input[data-slot=\"input-otp\"]') as HTMLInputElement\n\n fireEvent.change(input, { target: { value: 'ab' } })\n\n expect(handleChange).not.toHaveBeenCalled()\n })\n\n it('applies the has-disabled opacity class at the container level', () => {\n const { container } = renderOtp({ disabled: true })\n const otpContainer = container.querySelector('[data-input-otp-container]')\n\n expect(otpContainer?.className).toContain('has-disabled:opacity-50')\n const input = container.querySelector('input[data-slot=\"input-otp\"]')\n expect(input).toHaveProperty('disabled', true)\n })\n\n it('renders a separator with its icon between two groups', () => {\n const { container } = render(\n <InputOTP maxLength={6} pushPasswordManagerStrategy=\"none\">\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n <InputOTPSlot index={1} />\n <InputOTPSlot index={2} />\n </InputOTPGroup>\n <InputOTPSeparator />\n <InputOTPGroup>\n <InputOTPSlot index={3} />\n <InputOTPSlot index={4} />\n <InputOTPSlot index={5} />\n </InputOTPGroup>\n </InputOTP>\n )\n\n const separator = container.querySelector('[data-slot=\"input-otp-separator\"]')\n expect(separator).not.toBeNull()\n expect(separator?.querySelector('svg')).not.toBeNull()\n })\n\n it('wires the generated Field control id onto the underlying input when used inside a Field', () => {\n const { container } = render(\n <Field>\n <FieldLabel>One-time code</FieldLabel>\n <InputOTP maxLength={4} pushPasswordManagerStrategy=\"none\">\n <InputOTPGroup>\n <InputOTPSlot index={0} />\n </InputOTPGroup>\n </InputOTP>\n </Field>\n )\n\n const input = container.querySelector('input[data-slot=\"input-otp\"]')\n const label = container.querySelector('[data-slot=\"field-label\"]')\n\n expect(input?.getAttribute('id')).toBeTruthy()\n expect(label?.getAttribute('for')).toBe(input?.getAttribute('id'))\n })\n})\n"],"mappings":"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"}
@@ -1,8 +1,2 @@
1
- import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
- import * as React from "react";
3
- //#region src/components/input.d.ts
4
- type InputProps = React.ComponentProps<'input'>;
5
- declare function Input({ className, id, type, ...props }: InputProps): React.JSX.Element;
6
- //#endregion
7
- export { Input, InputProps };
8
- //# sourceMappingURL=input.d.ts.map
1
+ import { n as InputProps, t as Input } from "../input-CI3RPXz0.js";
2
+ export { Input, InputProps };
@@ -1,2 +1 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{useFieldControlId as t}from"./field.js";import{jsx as n}from"react/jsx-runtime";function Input({className:r,id:i,type:a,...o}){return n(`input`,{id:t(i),type:a,"data-slot":`input`,className:e(`border-input dark:bg-input/30 h-8 w-full min-w-0 rounded-lg border bg-transparent px-2.5 py-1 text-base md:text-sm transition-colors`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3`,`aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:ring-3 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,`placeholder:text-muted-foreground`,`file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground`,`outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-input/50 dark:disabled:bg-input/80`,r),...o})}export{Input};
2
- //# sourceMappingURL=input.js.map
1
+ import{t as e}from"../input-Cmjl8YdK.js";export{e as Input};
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,2 @@
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{o as e,t}from"../field-DzR-XrO7.js";import{t as n}from"../input-Cmjl8YdK.js";import{a as r,n as i,r as a}from"../react.esm-BkhVXJ8s.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";describe(`Input`,()=>{it(`renders an input with the input data-slot and base classes`,()=>{let{container:e}=a(o(n,{placeholder:`Email`})),t=e.querySelector(`[data-slot="input"]`);expect(t?.tagName).toBe(`INPUT`),expect(t?.className).toContain(`rounded-lg`),expect(t?.getAttribute(`placeholder`)).toBe(`Email`)}),it(`does not assign an id when rendered outside a Field and no id is given`,()=>{let{container:e}=a(o(n,{}));expect(e.querySelector(`[data-slot="input"]`)?.getAttribute(`id`)).toBeNull()}),it(`adopts the Field generated control id when no explicit id is provided`,()=>{a(s(t,{children:[o(e,{children:`Email`}),o(n,{})]}));let i=r.getByLabelText(`Email`);expect(i.getAttribute(`id`)).toBeTruthy()}),it(`keeps an explicit id even when rendered inside a Field`,()=>{let{container:e}=a(o(t,{children:o(n,{id:`explicit-input`})}));expect(e.querySelector(`[data-slot="input"]`)?.getAttribute(`id`)).toBe(`explicit-input`)}),it(`fires onChange with the typed value`,()=>{let e=vi.fn();a(o(n,{onChange:e})),i.change(r.getByRole(`textbox`),{target:{value:`hello`}}),expect(e).toHaveBeenCalledTimes(1),expect(r.getByRole(`textbox`).value).toBe(`hello`)}),it(`forwards a ref to the underlying input element`,()=>{let e={current:null};a(o(n,{ref:e})),expect(e.current).toBeInstanceOf(HTMLInputElement)})});
2
+ //# sourceMappingURL=input.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.spec.js","names":[],"sources":["../../src/components/input.spec.tsx"],"sourcesContent":["import { fireEvent, render, screen } from '@testing-library/react'\n\nimport { Field, FieldLabel } from './field'\nimport { Input } from './input'\n\ndescribe('Input', () => {\n it('renders an input with the input data-slot and base classes', () => {\n const { container } = render(<Input placeholder=\"Email\" />)\n\n const input = container.querySelector('[data-slot=\"input\"]')\n\n expect(input?.tagName).toBe('INPUT')\n expect(input?.className).toContain('rounded-lg')\n expect(input?.getAttribute('placeholder')).toBe('Email')\n })\n\n it('does not assign an id when rendered outside a Field and no id is given', () => {\n const { container } = render(<Input />)\n\n expect(container.querySelector('[data-slot=\"input\"]')?.getAttribute('id')).toBeNull()\n })\n\n it('adopts the Field generated control id when no explicit id is provided', () => {\n render(\n <Field>\n <FieldLabel>Email</FieldLabel>\n <Input />\n </Field>\n )\n\n const input = screen.getByLabelText('Email')\n\n expect(input.getAttribute('id')).toBeTruthy()\n })\n\n it('keeps an explicit id even when rendered inside a Field', () => {\n const { container } = render(\n <Field>\n <Input id=\"explicit-input\" />\n </Field>\n )\n\n expect(container.querySelector('[data-slot=\"input\"]')?.getAttribute('id')).toBe('explicit-input')\n })\n\n it('fires onChange with the typed value', () => {\n const handleChange = vi.fn()\n\n render(<Input onChange={handleChange} />)\n\n fireEvent.change(screen.getByRole('textbox'), { target: { value: 'hello' } })\n\n expect(handleChange).toHaveBeenCalledTimes(1)\n expect((screen.getByRole('textbox') as HTMLInputElement).value).toBe('hello')\n })\n\n it('forwards a ref to the underlying input element', () => {\n const ref = { current: null as HTMLInputElement | null }\n\n render(<Input ref={ref} />)\n\n expect(ref.current).toBeInstanceOf(HTMLInputElement)\n })\n})\n"],"mappings":"yOAKA,SAAS,YAAe,CACtB,GAAG,iEAAoE,CACrE,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAO,YAAY,OAAS,CAAA,CAAC,EAEpD,EAAQ,EAAU,cAAc,qBAAqB,EAE3D,OAAO,GAAO,OAAO,CAAC,CAAC,KAAK,OAAO,EACnC,OAAO,GAAO,SAAS,CAAC,CAAC,UAAU,YAAY,EAC/C,OAAO,GAAO,aAAa,aAAa,CAAC,CAAC,CAAC,KAAK,OAAO,CACzD,CAAC,EAED,GAAG,6EAAgF,CACjF,GAAM,CAAE,aAAc,EAAO,EAAC,EAAD,CAAQ,CAAA,CAAC,EAEtC,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC,EAED,GAAG,4EAA+E,CAChF,EACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAA,SAAY,OAAiB,CAAA,EAC7B,EAAC,EAAD,CAAQ,CAAA,CACH,CAAA,CAAA,CACT,EAEA,IAAM,EAAQ,EAAO,eAAe,OAAO,EAE3C,OAAO,EAAM,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CAC9C,CAAC,EAED,GAAG,6DAAgE,CACjE,GAAM,CAAE,aAAc,EACpB,EAAC,EAAD,CAAA,SACE,EAAC,EAAD,CAAO,GAAG,gBAAkB,CAAA,CACvB,CAAA,CACT,EAEA,OAAO,EAAU,cAAc,qBAAqB,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAClG,CAAC,EAED,GAAG,0CAA6C,CAC9C,IAAM,EAAe,GAAG,GAAG,EAE3B,EAAO,EAAC,EAAD,CAAO,SAAU,CAAe,CAAA,CAAC,EAExC,EAAU,OAAO,EAAO,UAAU,SAAS,EAAG,CAAE,OAAQ,CAAE,MAAO,OAAQ,CAAE,CAAC,EAE5E,OAAO,CAAY,CAAC,CAAC,sBAAsB,CAAC,EAC5C,OAAQ,EAAO,UAAU,SAAS,CAAC,CAAsB,KAAK,CAAC,CAAC,KAAK,OAAO,CAC9E,CAAC,EAED,GAAG,qDAAwD,CACzD,IAAM,EAAM,CAAE,QAAS,IAAgC,EAEvD,EAAO,EAAC,EAAD,CAAY,KAAM,CAAA,CAAC,EAE1B,OAAO,EAAI,OAAO,CAAC,CAAC,eAAe,gBAAgB,CACrD,CAAC,CACH,CAAC"}