@docyrus/shadcn 1.0.0 → 1.2.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 (767) hide show
  1. package/README.md +12 -3
  2. package/dist/base-lyra/accordion.js.map +1 -1
  3. package/dist/base-lyra/alert-dialog.js.map +1 -1
  4. package/dist/base-lyra/alert.js.map +1 -1
  5. package/dist/base-lyra/aspect-ratio.js.map +1 -1
  6. package/dist/base-lyra/avatar.js.map +1 -1
  7. package/dist/base-lyra/badge.js.map +1 -1
  8. package/dist/base-lyra/breadcrumb.js.map +1 -1
  9. package/dist/base-lyra/button-group.js.map +1 -1
  10. package/dist/base-lyra/button.js.map +1 -1
  11. package/dist/base-lyra/calendar.js.map +1 -1
  12. package/dist/base-lyra/card.js.map +1 -1
  13. package/dist/base-lyra/carousel.js.map +1 -1
  14. package/dist/base-lyra/chart.js.map +1 -1
  15. package/dist/base-lyra/checkbox.js.map +1 -1
  16. package/dist/base-lyra/combobox.js.map +1 -1
  17. package/dist/base-lyra/command.js.map +1 -1
  18. package/dist/base-lyra/context-menu.js.map +1 -1
  19. package/dist/base-lyra/dialog.js.map +1 -1
  20. package/dist/base-lyra/drawer.js.map +1 -1
  21. package/dist/base-lyra/dropdown-menu.js.map +1 -1
  22. package/dist/base-lyra/empty.js.map +1 -1
  23. package/dist/base-lyra/field.js.map +1 -1
  24. package/dist/base-lyra/hover-card.js.map +1 -1
  25. package/dist/base-lyra/index.js +8 -6
  26. package/dist/base-lyra/index.js.map +1 -1
  27. package/dist/base-lyra/input-group.js.map +1 -1
  28. package/dist/base-lyra/input-otp.js.map +1 -1
  29. package/dist/base-lyra/input.js.map +1 -1
  30. package/dist/base-lyra/item.js.map +1 -1
  31. package/dist/base-lyra/kbd.js.map +1 -1
  32. package/dist/base-lyra/label.js.map +1 -1
  33. package/dist/base-lyra/menubar.js.map +1 -1
  34. package/dist/base-lyra/native-select.js.map +1 -1
  35. package/dist/base-lyra/navigation-menu.js.map +1 -1
  36. package/dist/base-lyra/pagination.js.map +1 -1
  37. package/dist/base-lyra/popover.js.map +1 -1
  38. package/dist/base-lyra/progress.js.map +1 -1
  39. package/dist/base-lyra/radio-group.js.map +1 -1
  40. package/dist/base-lyra/resizable.js.map +1 -1
  41. package/dist/base-lyra/scroll-area.js.map +1 -1
  42. package/dist/base-lyra/select.js.map +1 -1
  43. package/dist/base-lyra/separator.js.map +1 -1
  44. package/dist/base-lyra/sheet.js.map +1 -1
  45. package/dist/base-lyra/sidebar.js +8 -6
  46. package/dist/base-lyra/sidebar.js.map +1 -1
  47. package/dist/base-lyra/skeleton.js.map +1 -1
  48. package/dist/base-lyra/slider.js.map +1 -1
  49. package/dist/base-lyra/spinner.js.map +1 -1
  50. package/dist/base-lyra/switch.js.map +1 -1
  51. package/dist/base-lyra/table.js.map +1 -1
  52. package/dist/base-lyra/tabs.js.map +1 -1
  53. package/dist/base-lyra/textarea.js.map +1 -1
  54. package/dist/base-lyra/toggle-group.js.map +1 -1
  55. package/dist/base-lyra/toggle.js.map +1 -1
  56. package/dist/base-lyra/tooltip.js.map +1 -1
  57. package/dist/base-maia/accordion.js.map +1 -1
  58. package/dist/base-maia/alert-dialog.js.map +1 -1
  59. package/dist/base-maia/alert.js.map +1 -1
  60. package/dist/base-maia/aspect-ratio.js.map +1 -1
  61. package/dist/base-maia/avatar.js.map +1 -1
  62. package/dist/base-maia/badge.js.map +1 -1
  63. package/dist/base-maia/breadcrumb.js.map +1 -1
  64. package/dist/base-maia/button-group.js.map +1 -1
  65. package/dist/base-maia/button.js.map +1 -1
  66. package/dist/base-maia/calendar.js.map +1 -1
  67. package/dist/base-maia/card.js.map +1 -1
  68. package/dist/base-maia/carousel.js.map +1 -1
  69. package/dist/base-maia/chart.js.map +1 -1
  70. package/dist/base-maia/checkbox.js.map +1 -1
  71. package/dist/base-maia/combobox.js.map +1 -1
  72. package/dist/base-maia/command.js.map +1 -1
  73. package/dist/base-maia/context-menu.js.map +1 -1
  74. package/dist/base-maia/dialog.js.map +1 -1
  75. package/dist/base-maia/drawer.js.map +1 -1
  76. package/dist/base-maia/dropdown-menu.js.map +1 -1
  77. package/dist/base-maia/empty.js.map +1 -1
  78. package/dist/base-maia/field.js.map +1 -1
  79. package/dist/base-maia/hover-card.js.map +1 -1
  80. package/dist/base-maia/index.js +8 -6
  81. package/dist/base-maia/index.js.map +1 -1
  82. package/dist/base-maia/input-group.js.map +1 -1
  83. package/dist/base-maia/input-otp.js.map +1 -1
  84. package/dist/base-maia/input.js.map +1 -1
  85. package/dist/base-maia/item.js.map +1 -1
  86. package/dist/base-maia/kbd.js.map +1 -1
  87. package/dist/base-maia/label.js.map +1 -1
  88. package/dist/base-maia/menubar.js.map +1 -1
  89. package/dist/base-maia/native-select.js.map +1 -1
  90. package/dist/base-maia/navigation-menu.js.map +1 -1
  91. package/dist/base-maia/pagination.js.map +1 -1
  92. package/dist/base-maia/popover.js.map +1 -1
  93. package/dist/base-maia/progress.js.map +1 -1
  94. package/dist/base-maia/radio-group.js.map +1 -1
  95. package/dist/base-maia/resizable.js.map +1 -1
  96. package/dist/base-maia/scroll-area.js.map +1 -1
  97. package/dist/base-maia/select.js.map +1 -1
  98. package/dist/base-maia/separator.js.map +1 -1
  99. package/dist/base-maia/sheet.js.map +1 -1
  100. package/dist/base-maia/sidebar.js +8 -6
  101. package/dist/base-maia/sidebar.js.map +1 -1
  102. package/dist/base-maia/skeleton.js.map +1 -1
  103. package/dist/base-maia/slider.js.map +1 -1
  104. package/dist/base-maia/spinner.js.map +1 -1
  105. package/dist/base-maia/switch.js.map +1 -1
  106. package/dist/base-maia/table.js.map +1 -1
  107. package/dist/base-maia/tabs.js.map +1 -1
  108. package/dist/base-maia/textarea.js.map +1 -1
  109. package/dist/base-maia/toggle-group.js.map +1 -1
  110. package/dist/base-maia/toggle.js.map +1 -1
  111. package/dist/base-maia/tooltip.js.map +1 -1
  112. package/dist/base-mira/accordion.js.map +1 -1
  113. package/dist/base-mira/alert-dialog.js.map +1 -1
  114. package/dist/base-mira/alert.js.map +1 -1
  115. package/dist/base-mira/aspect-ratio.js.map +1 -1
  116. package/dist/base-mira/avatar.js.map +1 -1
  117. package/dist/base-mira/badge.js.map +1 -1
  118. package/dist/base-mira/breadcrumb.js.map +1 -1
  119. package/dist/base-mira/button-group.js.map +1 -1
  120. package/dist/base-mira/button.js.map +1 -1
  121. package/dist/base-mira/calendar.js.map +1 -1
  122. package/dist/base-mira/card.js.map +1 -1
  123. package/dist/base-mira/carousel.js.map +1 -1
  124. package/dist/base-mira/chart.js.map +1 -1
  125. package/dist/base-mira/checkbox.js.map +1 -1
  126. package/dist/base-mira/combobox.js.map +1 -1
  127. package/dist/base-mira/command.js.map +1 -1
  128. package/dist/base-mira/context-menu.js.map +1 -1
  129. package/dist/base-mira/dialog.js.map +1 -1
  130. package/dist/base-mira/drawer.js.map +1 -1
  131. package/dist/base-mira/dropdown-menu.js.map +1 -1
  132. package/dist/base-mira/empty.js.map +1 -1
  133. package/dist/base-mira/field.js.map +1 -1
  134. package/dist/base-mira/hover-card.js.map +1 -1
  135. package/dist/base-mira/index.js +8 -6
  136. package/dist/base-mira/index.js.map +1 -1
  137. package/dist/base-mira/input-group.js.map +1 -1
  138. package/dist/base-mira/input-otp.js.map +1 -1
  139. package/dist/base-mira/input.js.map +1 -1
  140. package/dist/base-mira/item.js.map +1 -1
  141. package/dist/base-mira/kbd.js.map +1 -1
  142. package/dist/base-mira/label.js.map +1 -1
  143. package/dist/base-mira/menubar.js.map +1 -1
  144. package/dist/base-mira/native-select.js.map +1 -1
  145. package/dist/base-mira/navigation-menu.js.map +1 -1
  146. package/dist/base-mira/pagination.js.map +1 -1
  147. package/dist/base-mira/popover.js.map +1 -1
  148. package/dist/base-mira/progress.js.map +1 -1
  149. package/dist/base-mira/radio-group.js.map +1 -1
  150. package/dist/base-mira/resizable.js.map +1 -1
  151. package/dist/base-mira/scroll-area.js.map +1 -1
  152. package/dist/base-mira/select.js.map +1 -1
  153. package/dist/base-mira/separator.js.map +1 -1
  154. package/dist/base-mira/sheet.js.map +1 -1
  155. package/dist/base-mira/sidebar.js +8 -6
  156. package/dist/base-mira/sidebar.js.map +1 -1
  157. package/dist/base-mira/skeleton.js.map +1 -1
  158. package/dist/base-mira/slider.js.map +1 -1
  159. package/dist/base-mira/spinner.js.map +1 -1
  160. package/dist/base-mira/switch.js.map +1 -1
  161. package/dist/base-mira/table.js.map +1 -1
  162. package/dist/base-mira/tabs.js.map +1 -1
  163. package/dist/base-mira/textarea.js.map +1 -1
  164. package/dist/base-mira/toggle-group.js.map +1 -1
  165. package/dist/base-mira/toggle.js.map +1 -1
  166. package/dist/base-mira/tooltip.js.map +1 -1
  167. package/dist/base-nova/accordion.js.map +1 -1
  168. package/dist/base-nova/alert-dialog.js.map +1 -1
  169. package/dist/base-nova/alert.js.map +1 -1
  170. package/dist/base-nova/aspect-ratio.js.map +1 -1
  171. package/dist/base-nova/avatar.js.map +1 -1
  172. package/dist/base-nova/badge.js.map +1 -1
  173. package/dist/base-nova/breadcrumb.js.map +1 -1
  174. package/dist/base-nova/button-group.js.map +1 -1
  175. package/dist/base-nova/button.js.map +1 -1
  176. package/dist/base-nova/calendar.js.map +1 -1
  177. package/dist/base-nova/card.js.map +1 -1
  178. package/dist/base-nova/carousel.js.map +1 -1
  179. package/dist/base-nova/chart.js.map +1 -1
  180. package/dist/base-nova/checkbox.js.map +1 -1
  181. package/dist/base-nova/combobox.js.map +1 -1
  182. package/dist/base-nova/command.js.map +1 -1
  183. package/dist/base-nova/context-menu.js.map +1 -1
  184. package/dist/base-nova/dialog.js.map +1 -1
  185. package/dist/base-nova/drawer.js.map +1 -1
  186. package/dist/base-nova/dropdown-menu.js.map +1 -1
  187. package/dist/base-nova/empty.js.map +1 -1
  188. package/dist/base-nova/field.js.map +1 -1
  189. package/dist/base-nova/hover-card.js.map +1 -1
  190. package/dist/base-nova/index.js +8 -6
  191. package/dist/base-nova/index.js.map +1 -1
  192. package/dist/base-nova/input-group.js.map +1 -1
  193. package/dist/base-nova/input-otp.js.map +1 -1
  194. package/dist/base-nova/input.js.map +1 -1
  195. package/dist/base-nova/item.js.map +1 -1
  196. package/dist/base-nova/kbd.js.map +1 -1
  197. package/dist/base-nova/label.js.map +1 -1
  198. package/dist/base-nova/menubar.js.map +1 -1
  199. package/dist/base-nova/native-select.js.map +1 -1
  200. package/dist/base-nova/navigation-menu.js.map +1 -1
  201. package/dist/base-nova/pagination.js.map +1 -1
  202. package/dist/base-nova/popover.js.map +1 -1
  203. package/dist/base-nova/progress.js.map +1 -1
  204. package/dist/base-nova/radio-group.js.map +1 -1
  205. package/dist/base-nova/resizable.js.map +1 -1
  206. package/dist/base-nova/scroll-area.js.map +1 -1
  207. package/dist/base-nova/select.js.map +1 -1
  208. package/dist/base-nova/separator.js.map +1 -1
  209. package/dist/base-nova/sheet.js.map +1 -1
  210. package/dist/base-nova/sidebar.js +8 -6
  211. package/dist/base-nova/sidebar.js.map +1 -1
  212. package/dist/base-nova/skeleton.js.map +1 -1
  213. package/dist/base-nova/slider.js.map +1 -1
  214. package/dist/base-nova/spinner.js.map +1 -1
  215. package/dist/base-nova/switch.js.map +1 -1
  216. package/dist/base-nova/table.js.map +1 -1
  217. package/dist/base-nova/tabs.js.map +1 -1
  218. package/dist/base-nova/textarea.js.map +1 -1
  219. package/dist/base-nova/toggle-group.js.map +1 -1
  220. package/dist/base-nova/toggle.js.map +1 -1
  221. package/dist/base-nova/tooltip.js.map +1 -1
  222. package/dist/base-vega/accordion.js.map +1 -1
  223. package/dist/base-vega/alert-dialog.js.map +1 -1
  224. package/dist/base-vega/alert.js.map +1 -1
  225. package/dist/base-vega/aspect-ratio.js.map +1 -1
  226. package/dist/base-vega/avatar.js.map +1 -1
  227. package/dist/base-vega/badge.js.map +1 -1
  228. package/dist/base-vega/breadcrumb.js.map +1 -1
  229. package/dist/base-vega/button-group.js.map +1 -1
  230. package/dist/base-vega/button.js.map +1 -1
  231. package/dist/base-vega/calendar.js.map +1 -1
  232. package/dist/base-vega/card.js.map +1 -1
  233. package/dist/base-vega/carousel.js.map +1 -1
  234. package/dist/base-vega/chart.js.map +1 -1
  235. package/dist/base-vega/checkbox.js.map +1 -1
  236. package/dist/base-vega/combobox.js.map +1 -1
  237. package/dist/base-vega/command.js.map +1 -1
  238. package/dist/base-vega/context-menu.js.map +1 -1
  239. package/dist/base-vega/dialog.js.map +1 -1
  240. package/dist/base-vega/drawer.js.map +1 -1
  241. package/dist/base-vega/dropdown-menu.js.map +1 -1
  242. package/dist/base-vega/empty.js.map +1 -1
  243. package/dist/base-vega/field.js.map +1 -1
  244. package/dist/base-vega/hover-card.js.map +1 -1
  245. package/dist/base-vega/index.js +8 -6
  246. package/dist/base-vega/index.js.map +1 -1
  247. package/dist/base-vega/input-group.js.map +1 -1
  248. package/dist/base-vega/input-otp.js.map +1 -1
  249. package/dist/base-vega/input.js.map +1 -1
  250. package/dist/base-vega/item.js.map +1 -1
  251. package/dist/base-vega/kbd.js.map +1 -1
  252. package/dist/base-vega/label.js.map +1 -1
  253. package/dist/base-vega/menubar.js.map +1 -1
  254. package/dist/base-vega/native-select.js.map +1 -1
  255. package/dist/base-vega/navigation-menu.js.map +1 -1
  256. package/dist/base-vega/pagination.js.map +1 -1
  257. package/dist/base-vega/popover.js.map +1 -1
  258. package/dist/base-vega/progress.js.map +1 -1
  259. package/dist/base-vega/radio-group.js.map +1 -1
  260. package/dist/base-vega/resizable.js.map +1 -1
  261. package/dist/base-vega/scroll-area.js.map +1 -1
  262. package/dist/base-vega/select.js.map +1 -1
  263. package/dist/base-vega/separator.js.map +1 -1
  264. package/dist/base-vega/sheet.js.map +1 -1
  265. package/dist/base-vega/sidebar.js +8 -6
  266. package/dist/base-vega/sidebar.js.map +1 -1
  267. package/dist/base-vega/skeleton.js.map +1 -1
  268. package/dist/base-vega/slider.js.map +1 -1
  269. package/dist/base-vega/spinner.js.map +1 -1
  270. package/dist/base-vega/switch.js.map +1 -1
  271. package/dist/base-vega/table.js.map +1 -1
  272. package/dist/base-vega/tabs.js.map +1 -1
  273. package/dist/base-vega/textarea.js.map +1 -1
  274. package/dist/base-vega/toggle-group.js.map +1 -1
  275. package/dist/base-vega/toggle.js.map +1 -1
  276. package/dist/base-vega/tooltip.js.map +1 -1
  277. package/dist/hooks/index.d.ts +7 -0
  278. package/dist/hooks/index.js +181 -10
  279. package/dist/hooks/index.js.map +1 -1
  280. package/dist/hooks/use-as-ref.d.ts +5 -0
  281. package/dist/hooks/use-as-ref.js +17 -0
  282. package/dist/hooks/use-as-ref.js.map +1 -0
  283. package/dist/hooks/use-badge-overflow.d.ts +24 -0
  284. package/dist/hooks/use-badge-overflow.js +130 -0
  285. package/dist/hooks/use-badge-overflow.js.map +1 -0
  286. package/dist/hooks/use-callback-ref.d.ts +10 -0
  287. package/dist/hooks/use-callback-ref.js +17 -0
  288. package/dist/hooks/use-callback-ref.js.map +1 -0
  289. package/dist/hooks/use-debounced-callback.d.ts +3 -0
  290. package/dist/hooks/use-debounced-callback.js +38 -0
  291. package/dist/hooks/use-debounced-callback.js.map +1 -0
  292. package/dist/hooks/use-file-upload.d.ts +48 -0
  293. package/dist/hooks/use-file-upload.js +279 -0
  294. package/dist/hooks/use-file-upload.js.map +1 -0
  295. package/dist/hooks/use-isomorphic-layout-effect.d.ts +5 -0
  296. package/dist/hooks/use-isomorphic-layout-effect.js +8 -0
  297. package/dist/hooks/use-isomorphic-layout-effect.js.map +1 -0
  298. package/dist/hooks/use-lazy-ref.d.ts +5 -0
  299. package/dist/hooks/use-lazy-ref.js +14 -0
  300. package/dist/hooks/use-lazy-ref.js.map +1 -0
  301. package/dist/hooks/use-mobile.d.ts +1 -1
  302. package/dist/hooks/use-mobile.js +8 -6
  303. package/dist/hooks/use-mobile.js.map +1 -1
  304. package/dist/index.d.ts +1622 -106
  305. package/dist/index.js +23260 -2932
  306. package/dist/index.js.map +1 -1
  307. package/dist/lib/compose-refs.d.ts +15 -0
  308. package/dist/lib/compose-refs.js +42 -0
  309. package/dist/lib/compose-refs.js.map +1 -0
  310. package/dist/lib/format.d.ts +3 -0
  311. package/dist/lib/format.js +18 -0
  312. package/dist/lib/format.js.map +1 -0
  313. package/dist/lib/index.d.ts +3 -0
  314. package/dist/lib/index.js +53 -2
  315. package/dist/lib/index.js.map +1 -1
  316. package/dist/lib/utils.d.ts +6 -0
  317. package/dist/lib/utils.js.map +1 -1
  318. package/dist/new-york/accordion.js.map +1 -1
  319. package/dist/new-york/alert-dialog.js.map +1 -1
  320. package/dist/new-york/alert.js.map +1 -1
  321. package/dist/new-york/avatar.js.map +1 -1
  322. package/dist/new-york/badge.js.map +1 -1
  323. package/dist/new-york/breadcrumb.js.map +1 -1
  324. package/dist/new-york/button-group.js.map +1 -1
  325. package/dist/new-york/button.js.map +1 -1
  326. package/dist/new-york/calendar.js.map +1 -1
  327. package/dist/new-york/card.js.map +1 -1
  328. package/dist/new-york/carousel.js.map +1 -1
  329. package/dist/new-york/chart.js.map +1 -1
  330. package/dist/new-york/checkbox.js.map +1 -1
  331. package/dist/new-york/combobox.js.map +1 -1
  332. package/dist/new-york/command.js.map +1 -1
  333. package/dist/new-york/context-menu.js.map +1 -1
  334. package/dist/new-york/dialog.js.map +1 -1
  335. package/dist/new-york/drawer.js.map +1 -1
  336. package/dist/new-york/dropdown-menu.js.map +1 -1
  337. package/dist/new-york/empty.js.map +1 -1
  338. package/dist/new-york/field.js.map +1 -1
  339. package/dist/new-york/form.js.map +1 -1
  340. package/dist/new-york/hover-card.js.map +1 -1
  341. package/dist/new-york/index.js +8 -6
  342. package/dist/new-york/index.js.map +1 -1
  343. package/dist/new-york/input-group.js.map +1 -1
  344. package/dist/new-york/input-otp.js.map +1 -1
  345. package/dist/new-york/input.js.map +1 -1
  346. package/dist/new-york/item.js.map +1 -1
  347. package/dist/new-york/kbd.js.map +1 -1
  348. package/dist/new-york/label.js.map +1 -1
  349. package/dist/new-york/menubar.js.map +1 -1
  350. package/dist/new-york/native-select.js.map +1 -1
  351. package/dist/new-york/navigation-menu.js.map +1 -1
  352. package/dist/new-york/pagination.js.map +1 -1
  353. package/dist/new-york/popover.js.map +1 -1
  354. package/dist/new-york/progress.js.map +1 -1
  355. package/dist/new-york/radio-group.js.map +1 -1
  356. package/dist/new-york/resizable.js.map +1 -1
  357. package/dist/new-york/scroll-area.js.map +1 -1
  358. package/dist/new-york/select.js.map +1 -1
  359. package/dist/new-york/separator.js.map +1 -1
  360. package/dist/new-york/sheet.js.map +1 -1
  361. package/dist/new-york/sidebar.js +8 -6
  362. package/dist/new-york/sidebar.js.map +1 -1
  363. package/dist/new-york/skeleton.js.map +1 -1
  364. package/dist/new-york/slider.js.map +1 -1
  365. package/dist/new-york/spinner.js.map +1 -1
  366. package/dist/new-york/switch.js.map +1 -1
  367. package/dist/new-york/table.js.map +1 -1
  368. package/dist/new-york/tabs.js.map +1 -1
  369. package/dist/new-york/textarea.js.map +1 -1
  370. package/dist/new-york/toggle-group.js.map +1 -1
  371. package/dist/new-york/toggle.js.map +1 -1
  372. package/dist/new-york/tooltip.js.map +1 -1
  373. package/dist/radix-lyra/accordion.js.map +1 -1
  374. package/dist/radix-lyra/alert-dialog.js.map +1 -1
  375. package/dist/radix-lyra/alert.js.map +1 -1
  376. package/dist/radix-lyra/avatar.js.map +1 -1
  377. package/dist/radix-lyra/badge.js.map +1 -1
  378. package/dist/radix-lyra/breadcrumb.js.map +1 -1
  379. package/dist/radix-lyra/button-group.js.map +1 -1
  380. package/dist/radix-lyra/button.js.map +1 -1
  381. package/dist/radix-lyra/calendar.js.map +1 -1
  382. package/dist/radix-lyra/card.js.map +1 -1
  383. package/dist/radix-lyra/carousel.js.map +1 -1
  384. package/dist/radix-lyra/chart.js.map +1 -1
  385. package/dist/radix-lyra/checkbox.js.map +1 -1
  386. package/dist/radix-lyra/combobox.js.map +1 -1
  387. package/dist/radix-lyra/command.js.map +1 -1
  388. package/dist/radix-lyra/context-menu.js.map +1 -1
  389. package/dist/radix-lyra/dialog.js.map +1 -1
  390. package/dist/radix-lyra/drawer.js.map +1 -1
  391. package/dist/radix-lyra/dropdown-menu.js.map +1 -1
  392. package/dist/radix-lyra/empty.js.map +1 -1
  393. package/dist/radix-lyra/field.js.map +1 -1
  394. package/dist/radix-lyra/hover-card.js.map +1 -1
  395. package/dist/radix-lyra/index.js +8 -6
  396. package/dist/radix-lyra/index.js.map +1 -1
  397. package/dist/radix-lyra/input-group.js.map +1 -1
  398. package/dist/radix-lyra/input-otp.js.map +1 -1
  399. package/dist/radix-lyra/input.js.map +1 -1
  400. package/dist/radix-lyra/item.js.map +1 -1
  401. package/dist/radix-lyra/kbd.js.map +1 -1
  402. package/dist/radix-lyra/label.js.map +1 -1
  403. package/dist/radix-lyra/menubar.js.map +1 -1
  404. package/dist/radix-lyra/native-select.js.map +1 -1
  405. package/dist/radix-lyra/navigation-menu.js.map +1 -1
  406. package/dist/radix-lyra/pagination.js.map +1 -1
  407. package/dist/radix-lyra/popover.js.map +1 -1
  408. package/dist/radix-lyra/progress.js.map +1 -1
  409. package/dist/radix-lyra/radio-group.js.map +1 -1
  410. package/dist/radix-lyra/resizable.js.map +1 -1
  411. package/dist/radix-lyra/scroll-area.js.map +1 -1
  412. package/dist/radix-lyra/select.js.map +1 -1
  413. package/dist/radix-lyra/separator.js.map +1 -1
  414. package/dist/radix-lyra/sheet.js.map +1 -1
  415. package/dist/radix-lyra/sidebar.js +8 -6
  416. package/dist/radix-lyra/sidebar.js.map +1 -1
  417. package/dist/radix-lyra/skeleton.js.map +1 -1
  418. package/dist/radix-lyra/slider.js.map +1 -1
  419. package/dist/radix-lyra/spinner.js.map +1 -1
  420. package/dist/radix-lyra/switch.js.map +1 -1
  421. package/dist/radix-lyra/table.js.map +1 -1
  422. package/dist/radix-lyra/tabs.js.map +1 -1
  423. package/dist/radix-lyra/textarea.js.map +1 -1
  424. package/dist/radix-lyra/toggle-group.js.map +1 -1
  425. package/dist/radix-lyra/toggle.js.map +1 -1
  426. package/dist/radix-lyra/tooltip.js.map +1 -1
  427. package/dist/radix-maia/accordion.js.map +1 -1
  428. package/dist/radix-maia/alert-dialog.js.map +1 -1
  429. package/dist/radix-maia/alert.js.map +1 -1
  430. package/dist/radix-maia/avatar.js.map +1 -1
  431. package/dist/radix-maia/badge.js.map +1 -1
  432. package/dist/radix-maia/breadcrumb.js.map +1 -1
  433. package/dist/radix-maia/button-group.js.map +1 -1
  434. package/dist/radix-maia/button.js.map +1 -1
  435. package/dist/radix-maia/calendar.js.map +1 -1
  436. package/dist/radix-maia/card.js.map +1 -1
  437. package/dist/radix-maia/carousel.js.map +1 -1
  438. package/dist/radix-maia/chart.js.map +1 -1
  439. package/dist/radix-maia/checkbox.js.map +1 -1
  440. package/dist/radix-maia/combobox.js.map +1 -1
  441. package/dist/radix-maia/command.js.map +1 -1
  442. package/dist/radix-maia/context-menu.js.map +1 -1
  443. package/dist/radix-maia/dialog.js.map +1 -1
  444. package/dist/radix-maia/drawer.js.map +1 -1
  445. package/dist/radix-maia/dropdown-menu.js.map +1 -1
  446. package/dist/radix-maia/empty.js.map +1 -1
  447. package/dist/radix-maia/field.js.map +1 -1
  448. package/dist/radix-maia/hover-card.js.map +1 -1
  449. package/dist/radix-maia/index.js +8 -6
  450. package/dist/radix-maia/index.js.map +1 -1
  451. package/dist/radix-maia/input-group.js.map +1 -1
  452. package/dist/radix-maia/input-otp.js.map +1 -1
  453. package/dist/radix-maia/input.js.map +1 -1
  454. package/dist/radix-maia/item.js.map +1 -1
  455. package/dist/radix-maia/kbd.js.map +1 -1
  456. package/dist/radix-maia/label.js.map +1 -1
  457. package/dist/radix-maia/menubar.js.map +1 -1
  458. package/dist/radix-maia/native-select.js.map +1 -1
  459. package/dist/radix-maia/navigation-menu.js.map +1 -1
  460. package/dist/radix-maia/pagination.js.map +1 -1
  461. package/dist/radix-maia/popover.js.map +1 -1
  462. package/dist/radix-maia/progress.js.map +1 -1
  463. package/dist/radix-maia/radio-group.js.map +1 -1
  464. package/dist/radix-maia/resizable.js.map +1 -1
  465. package/dist/radix-maia/scroll-area.js.map +1 -1
  466. package/dist/radix-maia/select.js.map +1 -1
  467. package/dist/radix-maia/separator.js.map +1 -1
  468. package/dist/radix-maia/sheet.js.map +1 -1
  469. package/dist/radix-maia/sidebar.js +8 -6
  470. package/dist/radix-maia/sidebar.js.map +1 -1
  471. package/dist/radix-maia/skeleton.js.map +1 -1
  472. package/dist/radix-maia/slider.js.map +1 -1
  473. package/dist/radix-maia/spinner.js.map +1 -1
  474. package/dist/radix-maia/switch.js.map +1 -1
  475. package/dist/radix-maia/table.js.map +1 -1
  476. package/dist/radix-maia/tabs.js.map +1 -1
  477. package/dist/radix-maia/textarea.js.map +1 -1
  478. package/dist/radix-maia/toggle-group.js.map +1 -1
  479. package/dist/radix-maia/toggle.js.map +1 -1
  480. package/dist/radix-maia/tooltip.js.map +1 -1
  481. package/dist/radix-mira/accordion.js.map +1 -1
  482. package/dist/radix-mira/alert-dialog.js.map +1 -1
  483. package/dist/radix-mira/alert.js.map +1 -1
  484. package/dist/radix-mira/avatar.js.map +1 -1
  485. package/dist/radix-mira/badge.js.map +1 -1
  486. package/dist/radix-mira/breadcrumb.js.map +1 -1
  487. package/dist/radix-mira/button-group.js.map +1 -1
  488. package/dist/radix-mira/button.js.map +1 -1
  489. package/dist/radix-mira/calendar.js.map +1 -1
  490. package/dist/radix-mira/card.js.map +1 -1
  491. package/dist/radix-mira/carousel.js.map +1 -1
  492. package/dist/radix-mira/chart.js.map +1 -1
  493. package/dist/radix-mira/checkbox.js.map +1 -1
  494. package/dist/radix-mira/combobox.js.map +1 -1
  495. package/dist/radix-mira/command.js.map +1 -1
  496. package/dist/radix-mira/context-menu.js.map +1 -1
  497. package/dist/radix-mira/dialog.js.map +1 -1
  498. package/dist/radix-mira/drawer.js.map +1 -1
  499. package/dist/radix-mira/dropdown-menu.js.map +1 -1
  500. package/dist/radix-mira/empty.js.map +1 -1
  501. package/dist/radix-mira/field.js.map +1 -1
  502. package/dist/radix-mira/hover-card.js.map +1 -1
  503. package/dist/radix-mira/index.js +8 -6
  504. package/dist/radix-mira/index.js.map +1 -1
  505. package/dist/radix-mira/input-group.js.map +1 -1
  506. package/dist/radix-mira/input-otp.js.map +1 -1
  507. package/dist/radix-mira/input.js.map +1 -1
  508. package/dist/radix-mira/item.js.map +1 -1
  509. package/dist/radix-mira/kbd.js.map +1 -1
  510. package/dist/radix-mira/label.js.map +1 -1
  511. package/dist/radix-mira/menubar.js.map +1 -1
  512. package/dist/radix-mira/native-select.js.map +1 -1
  513. package/dist/radix-mira/navigation-menu.js.map +1 -1
  514. package/dist/radix-mira/pagination.js.map +1 -1
  515. package/dist/radix-mira/popover.js.map +1 -1
  516. package/dist/radix-mira/progress.js.map +1 -1
  517. package/dist/radix-mira/radio-group.js.map +1 -1
  518. package/dist/radix-mira/resizable.js.map +1 -1
  519. package/dist/radix-mira/scroll-area.js.map +1 -1
  520. package/dist/radix-mira/select.js.map +1 -1
  521. package/dist/radix-mira/separator.js.map +1 -1
  522. package/dist/radix-mira/sheet.js.map +1 -1
  523. package/dist/radix-mira/sidebar.js +8 -6
  524. package/dist/radix-mira/sidebar.js.map +1 -1
  525. package/dist/radix-mira/skeleton.js.map +1 -1
  526. package/dist/radix-mira/slider.js.map +1 -1
  527. package/dist/radix-mira/spinner.js.map +1 -1
  528. package/dist/radix-mira/switch.js.map +1 -1
  529. package/dist/radix-mira/table.js.map +1 -1
  530. package/dist/radix-mira/tabs.js.map +1 -1
  531. package/dist/radix-mira/textarea.js.map +1 -1
  532. package/dist/radix-mira/toggle-group.js.map +1 -1
  533. package/dist/radix-mira/toggle.js.map +1 -1
  534. package/dist/radix-mira/tooltip.js.map +1 -1
  535. package/dist/radix-nova/accordion.js.map +1 -1
  536. package/dist/radix-nova/alert-dialog.js.map +1 -1
  537. package/dist/radix-nova/alert.js.map +1 -1
  538. package/dist/radix-nova/avatar.js.map +1 -1
  539. package/dist/radix-nova/badge.js.map +1 -1
  540. package/dist/radix-nova/breadcrumb.js.map +1 -1
  541. package/dist/radix-nova/button-group.js.map +1 -1
  542. package/dist/radix-nova/button.js.map +1 -1
  543. package/dist/radix-nova/calendar.js.map +1 -1
  544. package/dist/radix-nova/card.js.map +1 -1
  545. package/dist/radix-nova/carousel.js.map +1 -1
  546. package/dist/radix-nova/chart.js.map +1 -1
  547. package/dist/radix-nova/checkbox.js.map +1 -1
  548. package/dist/radix-nova/combobox.js.map +1 -1
  549. package/dist/radix-nova/command.js.map +1 -1
  550. package/dist/radix-nova/context-menu.js.map +1 -1
  551. package/dist/radix-nova/dialog.js.map +1 -1
  552. package/dist/radix-nova/drawer.js.map +1 -1
  553. package/dist/radix-nova/dropdown-menu.js.map +1 -1
  554. package/dist/radix-nova/empty.js.map +1 -1
  555. package/dist/radix-nova/field.js.map +1 -1
  556. package/dist/radix-nova/hover-card.js.map +1 -1
  557. package/dist/radix-nova/index.js +8 -6
  558. package/dist/radix-nova/index.js.map +1 -1
  559. package/dist/radix-nova/input-group.js.map +1 -1
  560. package/dist/radix-nova/input-otp.js.map +1 -1
  561. package/dist/radix-nova/input.js.map +1 -1
  562. package/dist/radix-nova/item.js.map +1 -1
  563. package/dist/radix-nova/kbd.js.map +1 -1
  564. package/dist/radix-nova/label.js.map +1 -1
  565. package/dist/radix-nova/menubar.js.map +1 -1
  566. package/dist/radix-nova/native-select.js.map +1 -1
  567. package/dist/radix-nova/navigation-menu.js.map +1 -1
  568. package/dist/radix-nova/pagination.js.map +1 -1
  569. package/dist/radix-nova/popover.js.map +1 -1
  570. package/dist/radix-nova/progress.js.map +1 -1
  571. package/dist/radix-nova/radio-group.js.map +1 -1
  572. package/dist/radix-nova/resizable.js.map +1 -1
  573. package/dist/radix-nova/scroll-area.js.map +1 -1
  574. package/dist/radix-nova/select.js.map +1 -1
  575. package/dist/radix-nova/separator.js.map +1 -1
  576. package/dist/radix-nova/sheet.js.map +1 -1
  577. package/dist/radix-nova/sidebar.js +8 -6
  578. package/dist/radix-nova/sidebar.js.map +1 -1
  579. package/dist/radix-nova/skeleton.js.map +1 -1
  580. package/dist/radix-nova/slider.js.map +1 -1
  581. package/dist/radix-nova/spinner.js.map +1 -1
  582. package/dist/radix-nova/switch.js.map +1 -1
  583. package/dist/radix-nova/table.js.map +1 -1
  584. package/dist/radix-nova/tabs.js.map +1 -1
  585. package/dist/radix-nova/textarea.js.map +1 -1
  586. package/dist/radix-nova/toggle-group.js.map +1 -1
  587. package/dist/radix-nova/toggle.js.map +1 -1
  588. package/dist/radix-nova/tooltip.js.map +1 -1
  589. package/dist/radix-vega/accordion.js.map +1 -1
  590. package/dist/radix-vega/action-bar.d.ts +41 -0
  591. package/dist/radix-vega/action-bar.js +589 -0
  592. package/dist/radix-vega/action-bar.js.map +1 -0
  593. package/dist/radix-vega/alert-dialog.js.map +1 -1
  594. package/dist/radix-vega/alert.js.map +1 -1
  595. package/dist/radix-vega/avatar-group.d.ts +19 -0
  596. package/dist/radix-vega/avatar-group.js +193 -0
  597. package/dist/radix-vega/avatar-group.js.map +1 -0
  598. package/dist/radix-vega/avatar.d.ts +1 -3
  599. package/dist/radix-vega/avatar.js +1 -27
  600. package/dist/radix-vega/avatar.js.map +1 -1
  601. package/dist/radix-vega/badge-overflow.d.ts +21 -0
  602. package/dist/radix-vega/badge-overflow.js +223 -0
  603. package/dist/radix-vega/badge-overflow.js.map +1 -0
  604. package/dist/radix-vega/badge.d.ts +1 -1
  605. package/dist/radix-vega/badge.js.map +1 -1
  606. package/dist/radix-vega/breadcrumb.js.map +1 -1
  607. package/dist/radix-vega/button-group.js.map +1 -1
  608. package/dist/radix-vega/button.d.ts +2 -2
  609. package/dist/radix-vega/button.js.map +1 -1
  610. package/dist/radix-vega/calendar.js.map +1 -1
  611. package/dist/radix-vega/card.js.map +1 -1
  612. package/dist/radix-vega/carousel.js.map +1 -1
  613. package/dist/radix-vega/chart.js.map +1 -1
  614. package/dist/radix-vega/checkbox-group.d.ts +12 -0
  615. package/dist/radix-vega/checkbox-group.js +119 -0
  616. package/dist/radix-vega/checkbox-group.js.map +1 -0
  617. package/dist/radix-vega/checkbox.js.map +1 -1
  618. package/dist/radix-vega/circular-progress.d.ts +27 -0
  619. package/dist/radix-vega/circular-progress.js +252 -0
  620. package/dist/radix-vega/circular-progress.js.map +1 -0
  621. package/dist/radix-vega/color-picker.d.ts +85 -0
  622. package/dist/radix-vega/color-picker.js +1683 -0
  623. package/dist/radix-vega/color-picker.js.map +1 -0
  624. package/dist/radix-vega/color-swatch.d.ts +17 -0
  625. package/dist/radix-vega/color-swatch.js +95 -0
  626. package/dist/radix-vega/color-swatch.js.map +1 -0
  627. package/dist/radix-vega/combobox.d.ts +18 -22
  628. package/dist/radix-vega/combobox.js +118 -276
  629. package/dist/radix-vega/combobox.js.map +1 -1
  630. package/dist/radix-vega/command.js.map +1 -1
  631. package/dist/radix-vega/compare-slider.d.ts +32 -0
  632. package/dist/radix-vega/compare-slider.js +393 -0
  633. package/dist/radix-vega/compare-slider.js.map +1 -0
  634. package/dist/radix-vega/context-menu.js.map +1 -1
  635. package/dist/radix-vega/cropper.d.ts +89 -0
  636. package/dist/radix-vega/cropper.js +1396 -0
  637. package/dist/radix-vega/cropper.js.map +1 -0
  638. package/dist/radix-vega/dialog.js.map +1 -1
  639. package/dist/radix-vega/drawer.js.map +1 -1
  640. package/dist/radix-vega/dropdown-menu.js.map +1 -1
  641. package/dist/radix-vega/editable.d.ts +100 -0
  642. package/dist/radix-vega/editable.js +684 -0
  643. package/dist/radix-vega/editable.js.map +1 -0
  644. package/dist/radix-vega/empty.js.map +1 -1
  645. package/dist/radix-vega/field.js.map +1 -1
  646. package/dist/radix-vega/file-upload.d.ts +89 -0
  647. package/dist/radix-vega/file-upload.js +1089 -0
  648. package/dist/radix-vega/file-upload.js.map +1 -0
  649. package/dist/radix-vega/gauge.d.ts +27 -0
  650. package/dist/radix-vega/gauge.js +359 -0
  651. package/dist/radix-vega/gauge.js.map +1 -0
  652. package/dist/radix-vega/hover-card.js.map +1 -1
  653. package/dist/radix-vega/index.d.ts +50 -3
  654. package/dist/radix-vega/index.js +23001 -2667
  655. package/dist/radix-vega/index.js.map +1 -1
  656. package/dist/radix-vega/input-group.d.ts +1 -1
  657. package/dist/radix-vega/input-group.js.map +1 -1
  658. package/dist/radix-vega/input-otp.js.map +1 -1
  659. package/dist/radix-vega/input.js.map +1 -1
  660. package/dist/radix-vega/item.d.ts +2 -2
  661. package/dist/radix-vega/item.js.map +1 -1
  662. package/dist/radix-vega/kanban.d.ts +62 -0
  663. package/dist/radix-vega/kanban.js +831 -0
  664. package/dist/radix-vega/kanban.js.map +1 -0
  665. package/dist/radix-vega/kbd.js.map +1 -1
  666. package/dist/radix-vega/key-value.d.ts +82 -0
  667. package/dist/radix-vega/key-value.js +765 -0
  668. package/dist/radix-vega/key-value.js.map +1 -0
  669. package/dist/radix-vega/label.js.map +1 -1
  670. package/dist/radix-vega/listbox.d.ts +11 -0
  671. package/dist/radix-vega/listbox.js +90 -0
  672. package/dist/radix-vega/listbox.js.map +1 -0
  673. package/dist/radix-vega/mask-input.d.ts +64 -0
  674. package/dist/radix-vega/mask-input.js +1186 -0
  675. package/dist/radix-vega/mask-input.js.map +1 -0
  676. package/dist/radix-vega/media-player.d.ts +127 -0
  677. package/dist/radix-vega/media-player.js +2696 -0
  678. package/dist/radix-vega/media-player.js.map +1 -0
  679. package/dist/radix-vega/mention.d.ts +11 -0
  680. package/dist/radix-vega/mention.js +94 -0
  681. package/dist/radix-vega/mention.js.map +1 -0
  682. package/dist/radix-vega/menubar.js.map +1 -1
  683. package/dist/radix-vega/native-select.js.map +1 -1
  684. package/dist/radix-vega/navigation-menu.js.map +1 -1
  685. package/dist/radix-vega/pagination.js.map +1 -1
  686. package/dist/radix-vega/phone-input.d.ts +48 -0
  687. package/dist/radix-vega/phone-input.js +957 -0
  688. package/dist/radix-vega/phone-input.js.map +1 -0
  689. package/dist/radix-vega/popover.js.map +1 -1
  690. package/dist/radix-vega/progress.js.map +1 -1
  691. package/dist/radix-vega/qr-code.d.ts +53 -0
  692. package/dist/radix-vega/qr-code.js +396 -0
  693. package/dist/radix-vega/qr-code.js.map +1 -0
  694. package/dist/radix-vega/radio-group.js.map +1 -1
  695. package/dist/radix-vega/rating.d.ts +47 -0
  696. package/dist/radix-vega/rating.js +749 -0
  697. package/dist/radix-vega/rating.js.map +1 -0
  698. package/dist/radix-vega/relative-time-card.d.ts +22 -0
  699. package/dist/radix-vega/relative-time-card.js +236 -0
  700. package/dist/radix-vega/relative-time-card.js.map +1 -0
  701. package/dist/radix-vega/resizable.js.map +1 -1
  702. package/dist/radix-vega/responsive-dialog.d.ts +20 -0
  703. package/dist/radix-vega/responsive-dialog.js +483 -0
  704. package/dist/radix-vega/responsive-dialog.js.map +1 -0
  705. package/dist/radix-vega/scroll-area.js.map +1 -1
  706. package/dist/radix-vega/scroll-spy.d.ts +39 -0
  707. package/dist/radix-vega/scroll-spy.js +372 -0
  708. package/dist/radix-vega/scroll-spy.js.map +1 -0
  709. package/dist/radix-vega/scroller.d.ts +20 -0
  710. package/dist/radix-vega/scroller.js +352 -0
  711. package/dist/radix-vega/scroller.js.map +1 -0
  712. package/dist/radix-vega/segmented-input.d.ts +29 -0
  713. package/dist/radix-vega/segmented-input.js +178 -0
  714. package/dist/radix-vega/segmented-input.js.map +1 -0
  715. package/dist/radix-vega/select.js.map +1 -1
  716. package/dist/radix-vega/separator.js.map +1 -1
  717. package/dist/radix-vega/sheet.js.map +1 -1
  718. package/dist/radix-vega/sidebar.js +8 -6
  719. package/dist/radix-vega/sidebar.js.map +1 -1
  720. package/dist/radix-vega/skeleton.js.map +1 -1
  721. package/dist/radix-vega/slider.js.map +1 -1
  722. package/dist/radix-vega/sortable.d.ts +51 -0
  723. package/dist/radix-vega/sortable.js +444 -0
  724. package/dist/radix-vega/sortable.js.map +1 -0
  725. package/dist/radix-vega/speed-dial.d.ts +46 -0
  726. package/dist/radix-vega/speed-dial.js +898 -0
  727. package/dist/radix-vega/speed-dial.js.map +1 -0
  728. package/dist/radix-vega/spinner.js.map +1 -1
  729. package/dist/radix-vega/stack.d.ts +21 -0
  730. package/dist/radix-vega/stack.js +268 -0
  731. package/dist/radix-vega/stack.js.map +1 -0
  732. package/dist/radix-vega/stat.d.ts +24 -0
  733. package/dist/radix-vega/stat.js +147 -0
  734. package/dist/radix-vega/stat.js.map +1 -0
  735. package/dist/radix-vega/status.d.ts +18 -0
  736. package/dist/radix-vega/status.js +71 -0
  737. package/dist/radix-vega/status.js.map +1 -0
  738. package/dist/radix-vega/stepper.d.ts +73 -0
  739. package/dist/radix-vega/stepper.js +973 -0
  740. package/dist/radix-vega/stepper.js.map +1 -0
  741. package/dist/radix-vega/swap.d.ts +29 -0
  742. package/dist/radix-vega/swap.js +214 -0
  743. package/dist/radix-vega/swap.js.map +1 -0
  744. package/dist/radix-vega/switch.js.map +1 -1
  745. package/dist/radix-vega/table.js.map +1 -1
  746. package/dist/radix-vega/tabs.d.ts +1 -1
  747. package/dist/radix-vega/tabs.js.map +1 -1
  748. package/dist/radix-vega/tags-input.d.ts +12 -0
  749. package/dist/radix-vega/tags-input.js +98 -0
  750. package/dist/radix-vega/tags-input.js.map +1 -0
  751. package/dist/radix-vega/textarea.js.map +1 -1
  752. package/dist/radix-vega/time-picker.d.ts +88 -0
  753. package/dist/radix-vega/time-picker.js +1750 -0
  754. package/dist/radix-vega/time-picker.js.map +1 -0
  755. package/dist/radix-vega/timeline.d.ts +32 -0
  756. package/dist/radix-vega/timeline.js +611 -0
  757. package/dist/radix-vega/timeline.js.map +1 -0
  758. package/dist/radix-vega/toggle-group.js.map +1 -1
  759. package/dist/radix-vega/toggle.js.map +1 -1
  760. package/dist/radix-vega/tooltip.js.map +1 -1
  761. package/dist/radix-vega/tour.d.ts +109 -0
  762. package/dist/radix-vega/tour.js +1314 -0
  763. package/dist/radix-vega/tour.js.map +1 -0
  764. package/dist/radix-vega/visually-hidden-input.d.ts +8 -0
  765. package/dist/radix-vega/visually-hidden-input.js +33 -0
  766. package/dist/radix-vega/visually-hidden-input.js.map +1 -0
  767. package/package.json +53 -14
@@ -0,0 +1,765 @@
1
+ import { Slot } from '@radix-ui/react-slot';
2
+ import { XIcon, PlusIcon } from 'lucide-react';
3
+ import * as React6 from 'react';
4
+ import { cva } from 'class-variance-authority';
5
+ import { Slot as Slot$1 } from 'radix-ui';
6
+ import { clsx } from 'clsx';
7
+ import { twMerge } from 'tailwind-merge';
8
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
+ import * as ReactDOM from 'react-dom';
10
+
11
+ function cn(...inputs) {
12
+ return twMerge(clsx(inputs));
13
+ }
14
+ var buttonVariants = cva(
15
+ "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",
16
+ {
17
+ variants: {
18
+ variant: {
19
+ default: "bg-primary text-primary-foreground hover:bg-primary/80",
20
+ outline: "border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs",
21
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
22
+ ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
23
+ destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
24
+ link: "text-primary underline-offset-4 hover:underline"
25
+ },
26
+ size: {
27
+ default: "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
28
+ xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
29
+ sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
30
+ lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
31
+ icon: "size-9",
32
+ "icon-xs": "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
33
+ "icon-sm": "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md",
34
+ "icon-lg": "size-10"
35
+ }
36
+ },
37
+ defaultVariants: {
38
+ variant: "default",
39
+ size: "default"
40
+ }
41
+ }
42
+ );
43
+ function Button({
44
+ className,
45
+ variant = "default",
46
+ size = "default",
47
+ asChild = false,
48
+ ...props
49
+ }) {
50
+ const Comp = asChild ? Slot$1.Root : "button";
51
+ return /* @__PURE__ */ jsx(
52
+ Comp,
53
+ {
54
+ "data-slot": "button",
55
+ "data-variant": variant,
56
+ "data-size": size,
57
+ className: cn(buttonVariants({ variant, size, className })),
58
+ ...props
59
+ }
60
+ );
61
+ }
62
+ function Input({ className, type, ...props }) {
63
+ return /* @__PURE__ */ jsx(
64
+ "input",
65
+ {
66
+ type,
67
+ "data-slot": "input",
68
+ className: cn(
69
+ "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
70
+ className
71
+ ),
72
+ ...props
73
+ }
74
+ );
75
+ }
76
+ function Textarea({ className, ...props }) {
77
+ return /* @__PURE__ */ jsx(
78
+ "textarea",
79
+ {
80
+ "data-slot": "textarea",
81
+ className: cn(
82
+ "border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50",
83
+ className
84
+ ),
85
+ ...props
86
+ }
87
+ );
88
+ }
89
+ function setRef(ref, value) {
90
+ if (typeof ref === "function") {
91
+ return ref(value);
92
+ }
93
+ if (ref !== null && ref !== void 0) {
94
+ ref.current = value;
95
+ }
96
+ }
97
+ function composeRefs(...refs) {
98
+ return (node) => {
99
+ let hasCleanup = false;
100
+ const cleanups = refs.map((ref) => {
101
+ const cleanup = setRef(ref, node);
102
+ if (!hasCleanup && typeof cleanup === "function") {
103
+ hasCleanup = true;
104
+ }
105
+ return cleanup;
106
+ });
107
+ if (hasCleanup) {
108
+ return () => {
109
+ for (let i = 0; i < cleanups.length; i++) {
110
+ const cleanup = cleanups[i];
111
+ if (typeof cleanup === "function") {
112
+ cleanup();
113
+ } else {
114
+ setRef(refs[i], null);
115
+ }
116
+ }
117
+ };
118
+ }
119
+ };
120
+ }
121
+ function useComposedRefs(...refs) {
122
+ return React6.useCallback(composeRefs(...refs), refs);
123
+ }
124
+ var VisuallyHiddenInput = React6.forwardRef(({ className, control, ...props }, ref) => {
125
+ const input = /* @__PURE__ */ jsx(
126
+ "input",
127
+ {
128
+ ref,
129
+ className: cn(
130
+ "absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0",
131
+ "[clip:rect(0,0,0,0)]",
132
+ className
133
+ ),
134
+ ...props
135
+ }
136
+ );
137
+ if (control) {
138
+ return ReactDOM.createPortal(input, control);
139
+ }
140
+ return input;
141
+ });
142
+ VisuallyHiddenInput.displayName = "VisuallyHiddenInput";
143
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React6.useLayoutEffect : React6.useEffect;
144
+
145
+ // src/hooks/use-as-ref.ts
146
+ function useAsRef(props) {
147
+ const ref = React6.useRef(props);
148
+ useIsomorphicLayoutEffect(() => {
149
+ ref.current = props;
150
+ });
151
+ return ref;
152
+ }
153
+ function useLazyRef(fn) {
154
+ const ref = React6.useRef(null);
155
+ if (ref.current === null) {
156
+ ref.current = fn();
157
+ }
158
+ return ref;
159
+ }
160
+ var ROOT_NAME = "KeyValue";
161
+ var LIST_NAME = "KeyValueList";
162
+ var ITEM_NAME = "KeyValueItem";
163
+ var KEY_INPUT_NAME = "KeyValueKeyInput";
164
+ var VALUE_INPUT_NAME = "KeyValueValueInput";
165
+ var REMOVE_NAME = "KeyValueRemove";
166
+ var ADD_NAME = "KeyValueAdd";
167
+ var ERROR_NAME = "KeyValueError";
168
+ function getErrorId(rootId, itemId, field) {
169
+ return `${rootId}-${itemId}-${field}-error`;
170
+ }
171
+ function removeQuotes(string, shouldStrip) {
172
+ if (!shouldStrip) return string;
173
+ const trimmed = string.trim();
174
+ if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) {
175
+ return trimmed.slice(1, -1);
176
+ }
177
+ return trimmed;
178
+ }
179
+ function useStore(selector, ogStore) {
180
+ const contextStore = React6.useContext(StoreContext);
181
+ const store = ogStore ?? contextStore;
182
+ if (!store) {
183
+ throw new Error(`\`useStore\` must be used within \`${ROOT_NAME}\``);
184
+ }
185
+ const getSnapshot = React6.useCallback(
186
+ () => selector(store.getState()),
187
+ [store, selector]
188
+ );
189
+ return React6.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
190
+ }
191
+ var StoreContext = React6.createContext(null);
192
+ function useStoreContext(consumerName) {
193
+ const context = React6.useContext(StoreContext);
194
+ if (!context) {
195
+ throw new Error(`\`${consumerName}\` must be used within \`${ROOT_NAME}\``);
196
+ }
197
+ return context;
198
+ }
199
+ var KeyValueContext = React6.createContext(null);
200
+ function useKeyValueContext(consumerName) {
201
+ const context = React6.useContext(KeyValueContext);
202
+ if (!context) {
203
+ throw new Error(`\`${consumerName}\` must be used within \`${ROOT_NAME}\``);
204
+ }
205
+ return context;
206
+ }
207
+ function KeyValue(props) {
208
+ const {
209
+ value: valueProp,
210
+ defaultValue,
211
+ onValueChange,
212
+ onPaste,
213
+ onAdd,
214
+ onRemove,
215
+ onKeyValidate,
216
+ onValueValidate,
217
+ maxItems,
218
+ minItems = 0,
219
+ keyPlaceholder = "Key",
220
+ valuePlaceholder = "Value",
221
+ allowDuplicateKeys = false,
222
+ asChild,
223
+ enablePaste = true,
224
+ trim = true,
225
+ stripQuotes = true,
226
+ disabled = false,
227
+ readOnly = false,
228
+ required = false,
229
+ className,
230
+ id,
231
+ name,
232
+ ref,
233
+ ...rootProps
234
+ } = props;
235
+ const instanceId = React6.useId();
236
+ const rootId = id ?? instanceId;
237
+ const [formTrigger, setFormTrigger] = React6.useState(
238
+ null
239
+ );
240
+ const composedRef = useComposedRefs(ref, (node) => setFormTrigger(node));
241
+ const isFormControl = formTrigger ? !!formTrigger.closest("form") : true;
242
+ const listenersRef = useLazyRef(() => /* @__PURE__ */ new Set());
243
+ const stateRef = useLazyRef(() => ({
244
+ value: valueProp ?? defaultValue ?? [{ id: crypto.randomUUID(), key: "", value: "" }],
245
+ focusedId: null,
246
+ errors: {}
247
+ }));
248
+ const propsRef = useAsRef({ onValueChange });
249
+ const store = React6.useMemo(() => {
250
+ return {
251
+ subscribe: (cb) => {
252
+ listenersRef.current.add(cb);
253
+ return () => listenersRef.current.delete(cb);
254
+ },
255
+ getState: () => stateRef.current,
256
+ setState: (key, val) => {
257
+ if (Object.is(stateRef.current[key], val)) return;
258
+ if (key === "value" && Array.isArray(val)) {
259
+ stateRef.current.value = val;
260
+ propsRef.current.onValueChange?.(val);
261
+ } else {
262
+ stateRef.current[key] = val;
263
+ }
264
+ store.notify();
265
+ },
266
+ notify: () => {
267
+ for (const cb of listenersRef.current) {
268
+ cb();
269
+ }
270
+ }
271
+ };
272
+ }, [listenersRef, stateRef, propsRef]);
273
+ const value = useStore((state) => state.value, store);
274
+ const errors = useStore((state) => state.errors, store);
275
+ const isInvalid = Object.keys(errors).length > 0;
276
+ useIsomorphicLayoutEffect(() => {
277
+ if (valueProp !== void 0) {
278
+ store.setState("value", valueProp);
279
+ }
280
+ }, [valueProp]);
281
+ const contextValue = React6.useMemo(
282
+ () => ({
283
+ onPaste,
284
+ onAdd,
285
+ onRemove,
286
+ onKeyValidate,
287
+ onValueValidate,
288
+ rootId,
289
+ maxItems,
290
+ minItems,
291
+ keyPlaceholder,
292
+ valuePlaceholder,
293
+ allowDuplicateKeys,
294
+ enablePaste,
295
+ trim,
296
+ stripQuotes,
297
+ disabled,
298
+ readOnly,
299
+ required
300
+ }),
301
+ [
302
+ onPaste,
303
+ onAdd,
304
+ onRemove,
305
+ onKeyValidate,
306
+ onValueValidate,
307
+ rootId,
308
+ disabled,
309
+ readOnly,
310
+ required,
311
+ maxItems,
312
+ minItems,
313
+ keyPlaceholder,
314
+ valuePlaceholder,
315
+ allowDuplicateKeys,
316
+ enablePaste,
317
+ trim,
318
+ stripQuotes
319
+ ]
320
+ );
321
+ const RootPrimitive = asChild ? Slot : "div";
322
+ return /* @__PURE__ */ jsx(StoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxs(KeyValueContext.Provider, { value: contextValue, children: [
323
+ /* @__PURE__ */ jsx(
324
+ RootPrimitive,
325
+ {
326
+ id,
327
+ "data-slot": "key-value",
328
+ "data-disabled": disabled ? "" : void 0,
329
+ "data-invalid": isInvalid ? "" : void 0,
330
+ "data-readonly": readOnly ? "" : void 0,
331
+ ...rootProps,
332
+ ref: composedRef,
333
+ className: cn("flex flex-col gap-2", className)
334
+ }
335
+ ),
336
+ isFormControl && /* @__PURE__ */ jsx(
337
+ VisuallyHiddenInput,
338
+ {
339
+ type: "hidden",
340
+ control: formTrigger,
341
+ name,
342
+ value: JSON.stringify(value),
343
+ disabled,
344
+ readOnly,
345
+ required
346
+ }
347
+ )
348
+ ] }) });
349
+ }
350
+ function KeyValueList(props) {
351
+ const { orientation = "vertical", asChild, className, ...listProps } = props;
352
+ const value = useStore((state) => state.value);
353
+ const ListPrimitive = asChild ? Slot : "div";
354
+ return /* @__PURE__ */ jsx(
355
+ ListPrimitive,
356
+ {
357
+ role: "list",
358
+ "aria-orientation": orientation,
359
+ "data-slot": "key-value-list",
360
+ "data-orientation": orientation,
361
+ ...listProps,
362
+ className: cn(
363
+ "flex",
364
+ orientation === "vertical" ? "flex-col gap-2" : "flex-row gap-2",
365
+ className
366
+ ),
367
+ children: value.map((item) => {
368
+ const children = React6.Children.toArray(props.children);
369
+ return /* @__PURE__ */ jsx(KeyValueItemContext.Provider, { value: item, children }, item.id);
370
+ })
371
+ }
372
+ );
373
+ }
374
+ var KeyValueItemContext = React6.createContext(null);
375
+ function useKeyValueItemContext(consumerName) {
376
+ const context = React6.useContext(KeyValueItemContext);
377
+ if (!context) {
378
+ throw new Error(`\`${consumerName}\` must be used within \`${LIST_NAME}\``);
379
+ }
380
+ return context;
381
+ }
382
+ function KeyValueItem(props) {
383
+ const { asChild, className, ...itemProps } = props;
384
+ const itemData = useKeyValueItemContext(ITEM_NAME);
385
+ const focusedId = useStore((state) => state.focusedId);
386
+ const ItemPrimitive = asChild ? Slot : "div";
387
+ return /* @__PURE__ */ jsx(
388
+ ItemPrimitive,
389
+ {
390
+ role: "listitem",
391
+ "data-slot": "key-value-item",
392
+ "data-highlighted": focusedId === itemData.id ? "" : void 0,
393
+ ...itemProps,
394
+ className: cn("flex items-start gap-2", className)
395
+ }
396
+ );
397
+ }
398
+ function KeyValueKeyInput(props) {
399
+ const {
400
+ onChange: onChangeProp,
401
+ onPaste: onPasteProp,
402
+ asChild,
403
+ disabled,
404
+ readOnly,
405
+ required,
406
+ ...keyInputProps
407
+ } = props;
408
+ const context = useKeyValueContext(KEY_INPUT_NAME);
409
+ const itemData = useKeyValueItemContext(KEY_INPUT_NAME);
410
+ const store = useStoreContext(KEY_INPUT_NAME);
411
+ const errors = useStore((state) => state.errors);
412
+ const propsRef = useAsRef({
413
+ onChange: onChangeProp,
414
+ onPaste: onPasteProp
415
+ });
416
+ const isDisabled = disabled || context.disabled;
417
+ const isReadOnly = readOnly || context.readOnly;
418
+ const isRequired = required || context.required;
419
+ const isInvalid = errors[itemData.id]?.key !== void 0;
420
+ const onChange = React6.useCallback(
421
+ (event) => {
422
+ const state = store.getState();
423
+ const newValue = state.value.map((item) => {
424
+ if (item.id !== itemData.id) return item;
425
+ const updated = { ...item, key: event.target.value };
426
+ if (context.trim) updated.key = updated.key.trim();
427
+ return updated;
428
+ });
429
+ store.setState("value", newValue);
430
+ const updatedItemData = newValue.find((item) => item.id === itemData.id);
431
+ if (updatedItemData) {
432
+ const errors2 = {};
433
+ if (context.onKeyValidate) {
434
+ const keyError = context.onKeyValidate(updatedItemData.key, newValue);
435
+ if (keyError) errors2.key = keyError;
436
+ }
437
+ if (!context.allowDuplicateKeys) {
438
+ const duplicateKey = newValue.find(
439
+ (item) => item.id !== updatedItemData.id && item.key === updatedItemData.key && updatedItemData.key !== ""
440
+ );
441
+ if (duplicateKey) {
442
+ errors2.key = "Duplicate key";
443
+ }
444
+ }
445
+ if (context.onValueValidate) {
446
+ const valueError = context.onValueValidate(
447
+ updatedItemData.value,
448
+ updatedItemData.key,
449
+ newValue
450
+ );
451
+ if (valueError) errors2.value = valueError;
452
+ }
453
+ const newErrorsState = { ...state.errors };
454
+ if (Object.keys(errors2).length > 0) {
455
+ newErrorsState[itemData.id] = errors2;
456
+ } else {
457
+ delete newErrorsState[itemData.id];
458
+ }
459
+ store.setState("errors", newErrorsState);
460
+ }
461
+ propsRef.current.onChange?.(event);
462
+ },
463
+ [store, itemData.id, context, propsRef]
464
+ );
465
+ const onPaste = React6.useCallback(
466
+ (event) => {
467
+ if (!context.enablePaste) return;
468
+ propsRef.current.onPaste?.(event);
469
+ if (event.defaultPrevented) return;
470
+ const content = event.clipboardData.getData("text");
471
+ const lines = content.split(/\r?\n/).filter((line) => line.trim());
472
+ if (lines.length > 1) {
473
+ event.preventDefault();
474
+ const parsed = [];
475
+ for (const line of lines) {
476
+ let key = "";
477
+ let value = "";
478
+ if (line.includes("=")) {
479
+ const parts = line.split("=");
480
+ key = parts[0]?.trim() ?? "";
481
+ value = removeQuotes(
482
+ parts.slice(1).join("=").trim(),
483
+ context.stripQuotes
484
+ );
485
+ } else if (line.includes(":")) {
486
+ const parts = line.split(":");
487
+ key = parts[0]?.trim() ?? "";
488
+ value = removeQuotes(
489
+ parts.slice(1).join(":").trim(),
490
+ context.stripQuotes
491
+ );
492
+ } else if (/\s{2,}|\t/.test(line)) {
493
+ const parts = line.split(/\s{2,}|\t/);
494
+ key = parts[0]?.trim() ?? "";
495
+ value = removeQuotes(
496
+ parts.slice(1).join(" ").trim(),
497
+ context.stripQuotes
498
+ );
499
+ }
500
+ if (key) {
501
+ parsed.push({ id: crypto.randomUUID(), key, value });
502
+ }
503
+ }
504
+ if (parsed.length > 0) {
505
+ const state = store.getState();
506
+ const currentIndex = state.value.findIndex(
507
+ (item) => item.id === itemData.id
508
+ );
509
+ let newValue;
510
+ if (itemData.key === "" && itemData.value === "") {
511
+ newValue = [
512
+ ...state.value.slice(0, currentIndex),
513
+ ...parsed,
514
+ ...state.value.slice(currentIndex + 1)
515
+ ];
516
+ } else {
517
+ newValue = [
518
+ ...state.value.slice(0, currentIndex + 1),
519
+ ...parsed,
520
+ ...state.value.slice(currentIndex + 1)
521
+ ];
522
+ }
523
+ if (context.maxItems !== void 0) {
524
+ newValue = newValue.slice(0, context.maxItems);
525
+ }
526
+ store.setState("value", newValue);
527
+ if (context.onPaste) {
528
+ context.onPaste(
529
+ event.nativeEvent,
530
+ parsed
531
+ );
532
+ }
533
+ }
534
+ }
535
+ },
536
+ [context, store, itemData, propsRef]
537
+ );
538
+ const KeyInputPrimitive = asChild ? Slot : Input;
539
+ return /* @__PURE__ */ jsx(
540
+ KeyInputPrimitive,
541
+ {
542
+ "aria-invalid": isInvalid,
543
+ "aria-describedby": isInvalid ? getErrorId(context.rootId, itemData.id, "key") : void 0,
544
+ "data-slot": "key-value-key-input",
545
+ autoCapitalize: "off",
546
+ autoComplete: "off",
547
+ autoCorrect: "off",
548
+ spellCheck: "false",
549
+ disabled: isDisabled,
550
+ readOnly: isReadOnly,
551
+ required: isRequired,
552
+ placeholder: context.keyPlaceholder,
553
+ ...keyInputProps,
554
+ value: itemData.key,
555
+ onChange,
556
+ onPaste
557
+ }
558
+ );
559
+ }
560
+ function KeyValueValueInput(props) {
561
+ const {
562
+ onChange: onChangeProp,
563
+ asChild,
564
+ disabled,
565
+ readOnly,
566
+ required,
567
+ className,
568
+ maxRows,
569
+ style,
570
+ ...valueInputProps
571
+ } = props;
572
+ const context = useKeyValueContext(VALUE_INPUT_NAME);
573
+ const itemData = useKeyValueItemContext(VALUE_INPUT_NAME);
574
+ const store = useStoreContext(VALUE_INPUT_NAME);
575
+ const errors = useStore((state) => state.errors);
576
+ const propsRef = useAsRef({
577
+ onChange: onChangeProp
578
+ });
579
+ const isDisabled = disabled || context.disabled;
580
+ const isReadOnly = readOnly || context.readOnly;
581
+ const isRequired = required || context.required;
582
+ const isInvalid = errors[itemData.id]?.value !== void 0;
583
+ const maxHeight = maxRows ? `calc(${maxRows} * 1.5em + 1rem)` : void 0;
584
+ const onChange = React6.useCallback(
585
+ (event) => {
586
+ propsRef.current.onChange?.(event);
587
+ const state = store.getState();
588
+ const newValue = state.value.map((item) => {
589
+ if (item.id !== itemData.id) return item;
590
+ const updated = { ...item, value: event.target.value };
591
+ if (context.trim) updated.value = updated.value.trim();
592
+ return updated;
593
+ });
594
+ store.setState("value", newValue);
595
+ const updatedItemData = newValue.find((item) => item.id === itemData.id);
596
+ if (updatedItemData) {
597
+ const errors2 = {};
598
+ if (context.onKeyValidate) {
599
+ const keyError = context.onKeyValidate(updatedItemData.key, newValue);
600
+ if (keyError) errors2.key = keyError;
601
+ }
602
+ if (!context.allowDuplicateKeys) {
603
+ const duplicateKey = newValue.find(
604
+ (item) => item.id !== updatedItemData.id && item.key === updatedItemData.key && updatedItemData.key !== ""
605
+ );
606
+ if (duplicateKey) {
607
+ errors2.key = "Duplicate key";
608
+ }
609
+ }
610
+ if (context.onValueValidate) {
611
+ const valueError = context.onValueValidate(
612
+ updatedItemData.value,
613
+ updatedItemData.key,
614
+ newValue
615
+ );
616
+ if (valueError) errors2.value = valueError;
617
+ }
618
+ const newErrorsState = { ...state.errors };
619
+ if (Object.keys(errors2).length > 0) {
620
+ newErrorsState[itemData.id] = errors2;
621
+ } else {
622
+ delete newErrorsState[itemData.id];
623
+ }
624
+ store.setState("errors", newErrorsState);
625
+ }
626
+ },
627
+ [store, itemData.id, context, propsRef]
628
+ );
629
+ const ValueInputPrimitive = asChild ? Slot : Textarea;
630
+ return /* @__PURE__ */ jsx(
631
+ ValueInputPrimitive,
632
+ {
633
+ "aria-invalid": isInvalid,
634
+ "aria-describedby": isInvalid ? getErrorId(context.rootId, itemData.id, "value") : void 0,
635
+ "data-slot": "key-value-value-input",
636
+ autoCapitalize: "off",
637
+ autoComplete: "off",
638
+ autoCorrect: "off",
639
+ spellCheck: "false",
640
+ disabled: isDisabled,
641
+ readOnly: isReadOnly,
642
+ required: isRequired,
643
+ placeholder: context.valuePlaceholder,
644
+ ...valueInputProps,
645
+ className: cn(
646
+ "field-sizing-content min-h-9 resize-none",
647
+ maxRows && "overflow-y-auto",
648
+ className
649
+ ),
650
+ style: {
651
+ ...style,
652
+ ...maxHeight && { maxHeight }
653
+ },
654
+ value: itemData.value,
655
+ onChange
656
+ }
657
+ );
658
+ }
659
+ function KeyValueRemove(props) {
660
+ const { onClick: onClickProp, children, ...removeProps } = props;
661
+ const context = useKeyValueContext(REMOVE_NAME);
662
+ const itemData = useKeyValueItemContext(REMOVE_NAME);
663
+ const store = useStoreContext(REMOVE_NAME);
664
+ const propsRef = useAsRef({
665
+ onClick: onClickProp
666
+ });
667
+ const value = useStore((state) => state.value);
668
+ const isDisabled = context.disabled || value.length <= context.minItems;
669
+ const onClick = React6.useCallback(
670
+ (event) => {
671
+ propsRef.current.onClick?.(event);
672
+ const state = store.getState();
673
+ if (state.value.length <= context.minItems) return;
674
+ const itemToRemove = state.value.find((item) => item.id === itemData.id);
675
+ if (!itemToRemove) return;
676
+ const newValue = state.value.filter((item) => item.id !== itemData.id);
677
+ const newErrors = { ...state.errors };
678
+ delete newErrors[itemData.id];
679
+ store.setState("value", newValue);
680
+ store.setState("errors", newErrors);
681
+ context.onRemove?.(itemToRemove);
682
+ },
683
+ [store, context, itemData.id, propsRef]
684
+ );
685
+ return /* @__PURE__ */ jsx(
686
+ Button,
687
+ {
688
+ type: "button",
689
+ "data-slot": "key-value-remove",
690
+ variant: "outline",
691
+ size: "icon",
692
+ disabled: isDisabled,
693
+ ...removeProps,
694
+ onClick,
695
+ children: children ?? /* @__PURE__ */ jsx(XIcon, {})
696
+ }
697
+ );
698
+ }
699
+ function KeyValueAdd(props) {
700
+ const { onClick: onClickProp, children, ...addProps } = props;
701
+ const context = useKeyValueContext(ADD_NAME);
702
+ const store = useStoreContext(ADD_NAME);
703
+ const propsRef = useAsRef({
704
+ onClick: onClickProp
705
+ });
706
+ const value = useStore((state) => state.value);
707
+ const isDisabled = context.disabled || context.maxItems !== void 0 && value.length >= context.maxItems;
708
+ const onClick = React6.useCallback(
709
+ (event) => {
710
+ propsRef.current.onClick?.(event);
711
+ const state = store.getState();
712
+ if (context.maxItems !== void 0 && state.value.length >= context.maxItems) {
713
+ return;
714
+ }
715
+ const newItem = {
716
+ id: crypto.randomUUID(),
717
+ key: "",
718
+ value: ""
719
+ };
720
+ const newValue = [...state.value, newItem];
721
+ store.setState("value", newValue);
722
+ store.setState("focusedId", newItem.id);
723
+ context.onAdd?.(newItem);
724
+ },
725
+ [store, context, propsRef]
726
+ );
727
+ return /* @__PURE__ */ jsx(
728
+ Button,
729
+ {
730
+ type: "button",
731
+ "data-slot": "key-value-add",
732
+ variant: "outline",
733
+ disabled: isDisabled,
734
+ ...addProps,
735
+ onClick,
736
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
737
+ /* @__PURE__ */ jsx(PlusIcon, {}),
738
+ "Add"
739
+ ] })
740
+ }
741
+ );
742
+ }
743
+ function KeyValueError(props) {
744
+ const { field, asChild, className, ...errorProps } = props;
745
+ const context = useKeyValueContext(ERROR_NAME);
746
+ const itemData = useKeyValueItemContext(ERROR_NAME);
747
+ const errors = useStore((state) => state.errors);
748
+ const error = errors[itemData.id]?.[field];
749
+ if (!error) return null;
750
+ const ErrorPrimitive = asChild ? Slot : "span";
751
+ return /* @__PURE__ */ jsx(
752
+ ErrorPrimitive,
753
+ {
754
+ id: getErrorId(context.rootId, itemData.id, field),
755
+ role: "alert",
756
+ ...errorProps,
757
+ className: cn("font-medium text-destructive text-sm", className),
758
+ children: error
759
+ }
760
+ );
761
+ }
762
+
763
+ export { KeyValue, KeyValueAdd, KeyValueError, KeyValueItem, KeyValueKeyInput, KeyValueList, KeyValueRemove, KeyValueValueInput, useStore as useKeyValueStore };
764
+ //# sourceMappingURL=key-value.js.map
765
+ //# sourceMappingURL=key-value.js.map