@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 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/hooks/use-as-ref.ts","../../src/hooks/use-lazy-ref.ts","../../src/radix-vega/file-upload.tsx"],"names":["React","React2","React3","state","files","invalid","rejectedFiles"],"mappings":"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","file":"file-upload.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind class names, resolving any conflicts.\n *\n * @param inputs - An array of class names to merge.\n * @returns A string of merged and optimized class names.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import * as React from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"@/hooks/use-isomorphic-layout-effect\";\n\nfunction useAsRef<T>(props: T) {\n const ref = React.useRef<T>(props);\n\n useIsomorphicLayoutEffect(() => {\n ref.current = props;\n });\n\n return ref;\n}\n\nexport { useAsRef };\n","import * as React from \"react\";\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null);\n\n if (ref.current === null) {\n ref.current = fn();\n }\n\n return ref as React.RefObject<T>;\n}\n\nexport { useLazyRef };\n","\"use client\";\n\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n FileArchiveIcon,\n FileAudioIcon,\n FileCodeIcon,\n FileCogIcon,\n FileIcon,\n FileTextIcon,\n FileVideoIcon,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { useAsRef } from \"@/hooks/use-as-ref\";\nimport { useLazyRef } from \"@/hooks/use-lazy-ref\";\n\nconst ROOT_NAME = \"FileUpload\";\nconst DROPZONE_NAME = \"FileUploadDropzone\";\nconst TRIGGER_NAME = \"FileUploadTrigger\";\nconst LIST_NAME = \"FileUploadList\";\nconst ITEM_NAME = \"FileUploadItem\";\nconst ITEM_PREVIEW_NAME = \"FileUploadItemPreview\";\nconst ITEM_METADATA_NAME = \"FileUploadItemMetadata\";\nconst ITEM_PROGRESS_NAME = \"FileUploadItemProgress\";\nconst ITEM_DELETE_NAME = \"FileUploadItemDelete\";\nconst CLEAR_NAME = \"FileUploadClear\";\n\nfunction formatBytes(bytes: number) {\n if (bytes === 0) return \"0 B\";\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / 1024 ** i).toFixed(i ? 1 : 0)} ${sizes[i]}`;\n}\n\nfunction getFileIcon(file: File) {\n const type = file.type;\n const extension = file.name.split(\".\").pop()?.toLowerCase() ?? \"\";\n\n if (type.startsWith(\"video/\")) {\n return <FileVideoIcon />;\n }\n\n if (type.startsWith(\"audio/\")) {\n return <FileAudioIcon />;\n }\n\n if (\n type.startsWith(\"text/\") ||\n [\"txt\", \"md\", \"rtf\", \"pdf\"].includes(extension)\n ) {\n return <FileTextIcon />;\n }\n\n if (\n [\n \"html\",\n \"css\",\n \"js\",\n \"jsx\",\n \"ts\",\n \"tsx\",\n \"json\",\n \"xml\",\n \"php\",\n \"py\",\n \"rb\",\n \"java\",\n \"c\",\n \"cpp\",\n \"cs\",\n ].includes(extension)\n ) {\n return <FileCodeIcon />;\n }\n\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\", \"bz2\"].includes(extension)) {\n return <FileArchiveIcon />;\n }\n\n if (\n [\"exe\", \"msi\", \"app\", \"apk\", \"deb\", \"rpm\"].includes(extension) ||\n type.startsWith(\"application/\")\n ) {\n return <FileCogIcon />;\n }\n\n return <FileIcon />;\n}\n\ntype Direction = \"ltr\" | \"rtl\";\n\ninterface FileState {\n file: File;\n progress: number;\n error?: string;\n status: \"idle\" | \"uploading\" | \"error\" | \"success\";\n}\n\ninterface StoreState {\n files: Map<File, FileState>;\n dragOver: boolean;\n invalid: boolean;\n}\n\ntype StoreAction =\n | { type: \"ADD_FILES\"; files: File[] }\n | { type: \"SET_FILES\"; files: File[] }\n | { type: \"SET_PROGRESS\"; file: File; progress: number }\n | { type: \"SET_SUCCESS\"; file: File }\n | { type: \"SET_ERROR\"; file: File; error: string }\n | { type: \"REMOVE_FILE\"; file: File }\n | { type: \"SET_DRAG_OVER\"; dragOver: boolean }\n | { type: \"SET_INVALID\"; invalid: boolean }\n | { type: \"CLEAR\" };\n\ntype Store = {\n getState: () => StoreState;\n dispatch: (action: StoreAction) => void;\n subscribe: (listener: () => void) => () => void;\n};\n\nconst StoreContext = React.createContext<Store | null>(null);\n\nfunction useStoreContext(consumerName: string) {\n const context = React.useContext(StoreContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\nfunction useStore<T>(selector: (state: StoreState) => T): T {\n const store = useStoreContext(\"useStore\");\n\n const lastValueRef = useLazyRef<{ value: T; state: StoreState } | null>(\n () => null,\n );\n\n const getSnapshot = React.useCallback(() => {\n const state = store.getState();\n const prevValue = lastValueRef.current;\n\n if (prevValue && prevValue.state === state) {\n return prevValue.value;\n }\n\n const nextValue = selector(state);\n lastValueRef.current = { value: nextValue, state };\n return nextValue;\n }, [store, selector, lastValueRef]);\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\ninterface FileUploadContextValue {\n inputId: string;\n dropzoneId: string;\n listId: string;\n labelId: string;\n disabled: boolean;\n dir: Direction;\n inputRef: React.RefObject<HTMLInputElement | null>;\n urlCache: WeakMap<File, string>;\n}\n\nconst FileUploadContext = React.createContext<FileUploadContextValue | null>(\n null,\n);\n\nfunction useFileUploadContext(consumerName: string) {\n const context = React.useContext(FileUploadContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface FileUploadProps\n extends Omit<React.ComponentProps<\"div\">, \"defaultValue\" | \"onChange\"> {\n value?: File[];\n defaultValue?: File[];\n onValueChange?: (files: File[]) => void;\n onAccept?: (files: File[]) => void;\n onFileAccept?: (file: File) => void;\n onFileReject?: (file: File, message: string) => void;\n onFileValidate?: (file: File) => string | null | undefined;\n onUpload?: (\n files: File[],\n options: {\n onProgress: (file: File, progress: number) => void;\n onSuccess: (file: File) => void;\n onError: (file: File, error: Error) => void;\n },\n ) => Promise<void> | void;\n accept?: string;\n maxFiles?: number;\n maxSize?: number;\n dir?: Direction;\n label?: string;\n name?: string;\n asChild?: boolean;\n disabled?: boolean;\n invalid?: boolean;\n multiple?: boolean;\n required?: boolean;\n}\n\nfunction FileUpload(props: FileUploadProps) {\n const {\n value,\n defaultValue,\n onValueChange,\n onAccept,\n onFileAccept,\n onFileReject,\n onFileValidate,\n onUpload,\n accept,\n maxFiles,\n maxSize,\n dir: dirProp,\n label,\n name,\n asChild,\n disabled = false,\n invalid = false,\n multiple = false,\n required = false,\n children,\n className,\n ...rootProps\n } = props;\n\n const inputId = React.useId();\n const dropzoneId = React.useId();\n const listId = React.useId();\n const labelId = React.useId();\n\n const dir = useDirection(dirProp);\n const listeners = useLazyRef(() => new Set<() => void>()).current;\n const files = useLazyRef<Map<File, FileState>>(() => new Map()).current;\n const urlCache = useLazyRef(() => new WeakMap<File, string>()).current;\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isControlled = value !== undefined;\n\n const propsRef = useAsRef({\n onValueChange,\n onAccept,\n onFileAccept,\n onFileReject,\n onFileValidate,\n onUpload,\n });\n\n const store = React.useMemo<Store>(() => {\n let state: StoreState = {\n files,\n dragOver: false,\n invalid: invalid,\n };\n\n function reducer(state: StoreState, action: StoreAction): StoreState {\n switch (action.type) {\n case \"ADD_FILES\": {\n for (const file of action.files) {\n files.set(file, {\n file,\n progress: 0,\n status: \"idle\",\n });\n }\n\n if (propsRef.current.onValueChange) {\n const fileList = Array.from(files.values()).map(\n (fileState) => fileState.file,\n );\n propsRef.current.onValueChange(fileList);\n }\n return { ...state, files };\n }\n\n case \"SET_FILES\": {\n const newFileSet = new Set(action.files);\n for (const existingFile of files.keys()) {\n if (!newFileSet.has(existingFile)) {\n files.delete(existingFile);\n }\n }\n\n for (const file of action.files) {\n const existingState = files.get(file);\n if (!existingState) {\n files.set(file, {\n file,\n progress: 0,\n status: \"idle\",\n });\n }\n }\n return { ...state, files };\n }\n\n case \"SET_PROGRESS\": {\n const fileState = files.get(action.file);\n if (fileState) {\n files.set(action.file, {\n ...fileState,\n progress: action.progress,\n status: \"uploading\",\n });\n }\n return { ...state, files };\n }\n\n case \"SET_SUCCESS\": {\n const fileState = files.get(action.file);\n if (fileState) {\n files.set(action.file, {\n ...fileState,\n progress: 100,\n status: \"success\",\n });\n }\n return { ...state, files };\n }\n\n case \"SET_ERROR\": {\n const fileState = files.get(action.file);\n if (fileState) {\n files.set(action.file, {\n ...fileState,\n error: action.error,\n status: \"error\",\n });\n }\n return { ...state, files };\n }\n\n case \"REMOVE_FILE\": {\n const cachedUrl = urlCache.get(action.file);\n if (cachedUrl) {\n URL.revokeObjectURL(cachedUrl);\n urlCache.delete(action.file);\n }\n\n files.delete(action.file);\n\n if (propsRef.current.onValueChange) {\n const fileList = Array.from(files.values()).map(\n (fileState) => fileState.file,\n );\n propsRef.current.onValueChange(fileList);\n }\n return { ...state, files };\n }\n\n case \"SET_DRAG_OVER\": {\n return { ...state, dragOver: action.dragOver };\n }\n\n case \"SET_INVALID\": {\n return { ...state, invalid: action.invalid };\n }\n\n case \"CLEAR\": {\n for (const file of files.keys()) {\n const cachedUrl = urlCache.get(file);\n if (cachedUrl) {\n URL.revokeObjectURL(cachedUrl);\n urlCache.delete(file);\n }\n }\n\n files.clear();\n if (propsRef.current.onValueChange) {\n propsRef.current.onValueChange([]);\n }\n return { ...state, files, invalid: false };\n }\n\n default:\n return state;\n }\n }\n\n return {\n getState: () => state,\n dispatch: (action) => {\n state = reducer(state, action);\n for (const listener of listeners) {\n listener();\n }\n },\n subscribe: (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n };\n }, [listeners, files, invalid, propsRef, urlCache]);\n\n const acceptTypes = React.useMemo(\n () => accept?.split(\",\").map((t) => t.trim()) ?? null,\n [accept],\n );\n\n const onProgress = useLazyRef(() => {\n let frame = 0;\n return (file: File, progress: number) => {\n if (frame) return;\n frame = requestAnimationFrame(() => {\n frame = 0;\n store.dispatch({\n type: \"SET_PROGRESS\",\n file,\n progress: Math.min(Math.max(0, progress), 100),\n });\n });\n };\n }).current;\n\n React.useEffect(() => {\n if (isControlled) {\n store.dispatch({ type: \"SET_FILES\", files: value });\n } else if (\n defaultValue &&\n defaultValue.length > 0 &&\n !store.getState().files.size\n ) {\n store.dispatch({ type: \"SET_FILES\", files: defaultValue });\n }\n }, [value, defaultValue, isControlled, store]);\n\n React.useEffect(() => {\n return () => {\n for (const file of files.keys()) {\n const cachedUrl = urlCache.get(file);\n if (cachedUrl) {\n URL.revokeObjectURL(cachedUrl);\n }\n }\n };\n }, [files, urlCache]);\n\n const onFilesUpload = React.useCallback(\n async (files: File[]) => {\n try {\n for (const file of files) {\n store.dispatch({ type: \"SET_PROGRESS\", file, progress: 0 });\n }\n\n if (propsRef.current.onUpload) {\n await propsRef.current.onUpload(files, {\n onProgress,\n onSuccess: (file) => {\n store.dispatch({ type: \"SET_SUCCESS\", file });\n },\n onError: (file, error) => {\n store.dispatch({\n type: \"SET_ERROR\",\n file,\n error: error.message ?? \"Upload failed\",\n });\n },\n });\n } else {\n for (const file of files) {\n store.dispatch({ type: \"SET_SUCCESS\", file });\n }\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Upload failed\";\n for (const file of files) {\n store.dispatch({\n type: \"SET_ERROR\",\n file,\n error: errorMessage,\n });\n }\n }\n },\n [store, propsRef, onProgress],\n );\n\n const onFilesChange = React.useCallback(\n (originalFiles: File[]) => {\n if (disabled) return;\n\n let filesToProcess = [...originalFiles];\n let invalid = false;\n\n if (maxFiles) {\n const currentCount = store.getState().files.size;\n const remainingSlotCount = Math.max(0, maxFiles - currentCount);\n\n if (remainingSlotCount < filesToProcess.length) {\n const rejectedFiles = filesToProcess.slice(remainingSlotCount);\n invalid = true;\n\n filesToProcess = filesToProcess.slice(0, remainingSlotCount);\n\n for (const file of rejectedFiles) {\n let rejectionMessage = `Maximum ${maxFiles} files allowed`;\n\n if (propsRef.current.onFileValidate) {\n const validationMessage = propsRef.current.onFileValidate(file);\n if (validationMessage) {\n rejectionMessage = validationMessage;\n }\n }\n\n propsRef.current.onFileReject?.(file, rejectionMessage);\n }\n }\n }\n\n const acceptedFiles: File[] = [];\n const rejectedFiles: { file: File; message: string }[] = [];\n\n for (const file of filesToProcess) {\n let rejected = false;\n let rejectionMessage = \"\";\n\n if (propsRef.current.onFileValidate) {\n const validationMessage = propsRef.current.onFileValidate(file);\n if (validationMessage) {\n rejectionMessage = validationMessage;\n propsRef.current.onFileReject?.(file, rejectionMessage);\n rejected = true;\n invalid = true;\n continue;\n }\n }\n\n if (acceptTypes) {\n const fileType = file.type;\n const fileExtension = `.${file.name.split(\".\").pop()}`;\n\n if (\n !acceptTypes.some(\n (type) =>\n type === fileType ||\n type === fileExtension ||\n (type.includes(\"/*\") &&\n fileType.startsWith(type.replace(\"/*\", \"/\"))),\n )\n ) {\n rejectionMessage = \"File type not accepted\";\n propsRef.current.onFileReject?.(file, rejectionMessage);\n rejected = true;\n invalid = true;\n }\n }\n\n if (maxSize && file.size > maxSize) {\n rejectionMessage = \"File too large\";\n propsRef.current.onFileReject?.(file, rejectionMessage);\n rejected = true;\n invalid = true;\n }\n\n if (!rejected) {\n acceptedFiles.push(file);\n } else {\n rejectedFiles.push({ file, message: rejectionMessage });\n }\n }\n\n if (invalid) {\n store.dispatch({ type: \"SET_INVALID\", invalid });\n setTimeout(() => {\n store.dispatch({ type: \"SET_INVALID\", invalid: false });\n }, 2000);\n }\n\n if (acceptedFiles.length > 0) {\n store.dispatch({ type: \"ADD_FILES\", files: acceptedFiles });\n\n if (isControlled && propsRef.current.onValueChange) {\n const currentFiles = Array.from(store.getState().files.values()).map(\n (f) => f.file,\n );\n propsRef.current.onValueChange([...currentFiles]);\n }\n\n if (propsRef.current.onAccept) {\n propsRef.current.onAccept(acceptedFiles);\n }\n\n for (const file of acceptedFiles) {\n propsRef.current.onFileAccept?.(file);\n }\n\n if (propsRef.current.onUpload) {\n requestAnimationFrame(() => {\n onFilesUpload(acceptedFiles);\n });\n }\n }\n },\n [\n store,\n isControlled,\n propsRef,\n onFilesUpload,\n maxFiles,\n acceptTypes,\n maxSize,\n disabled,\n ],\n );\n\n const onInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(event.target.files ?? []);\n onFilesChange(files);\n event.target.value = \"\";\n },\n [onFilesChange],\n );\n\n const contextValue = React.useMemo<FileUploadContextValue>(\n () => ({\n dropzoneId,\n inputId,\n listId,\n labelId,\n dir,\n disabled,\n inputRef,\n urlCache,\n }),\n [dropzoneId, inputId, listId, labelId, dir, disabled, urlCache],\n );\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <StoreContext.Provider value={store}>\n <FileUploadContext.Provider value={contextValue}>\n <RootPrimitive\n data-disabled={disabled ? \"\" : undefined}\n data-slot=\"file-upload\"\n dir={dir}\n {...rootProps}\n className={cn(\"relative flex flex-col gap-2\", className)}\n >\n {children}\n <input\n type=\"file\"\n id={inputId}\n aria-labelledby={labelId}\n aria-describedby={dropzoneId}\n ref={inputRef}\n tabIndex={-1}\n accept={accept}\n name={name}\n className=\"sr-only\"\n disabled={disabled}\n multiple={multiple}\n required={required}\n onChange={onInputChange}\n />\n <div id={labelId} className=\"sr-only\">\n {label ?? \"File upload\"}\n </div>\n </RootPrimitive>\n </FileUploadContext.Provider>\n </StoreContext.Provider>\n );\n}\n\ninterface FileUploadDropzoneProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nfunction FileUploadDropzone(props: FileUploadDropzoneProps) {\n const {\n asChild,\n className,\n onClick: onClickProp,\n onDragOver: onDragOverProp,\n onDragEnter: onDragEnterProp,\n onDragLeave: onDragLeaveProp,\n onDrop: onDropProp,\n onPaste: onPasteProp,\n onKeyDown: onKeyDownProp,\n ...dropzoneProps\n } = props;\n\n const context = useFileUploadContext(DROPZONE_NAME);\n const store = useStoreContext(DROPZONE_NAME);\n const dragOver = useStore((state) => state.dragOver);\n const invalid = useStore((state) => state.invalid);\n\n const propsRef = useAsRef({\n onClick: onClickProp,\n onDragOver: onDragOverProp,\n onDragEnter: onDragEnterProp,\n onDragLeave: onDragLeaveProp,\n onDrop: onDropProp,\n onPaste: onPasteProp,\n onKeyDown: onKeyDownProp,\n });\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n propsRef.current.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n const target = event.target;\n\n const isFromTrigger =\n target instanceof HTMLElement &&\n target.closest('[data-slot=\"file-upload-trigger\"]');\n\n if (!isFromTrigger) {\n context.inputRef.current?.click();\n }\n },\n [context.inputRef, propsRef],\n );\n\n const onDragOver = React.useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n propsRef.current.onDragOver?.(event);\n\n if (event.defaultPrevented) return;\n\n event.preventDefault();\n store.dispatch({ type: \"SET_DRAG_OVER\", dragOver: true });\n },\n [store, propsRef],\n );\n\n const onDragEnter = React.useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n propsRef.current.onDragEnter?.(event);\n\n if (event.defaultPrevented) return;\n\n event.preventDefault();\n store.dispatch({ type: \"SET_DRAG_OVER\", dragOver: true });\n },\n [store, propsRef],\n );\n\n const onDragLeave = React.useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n propsRef.current.onDragLeave?.(event);\n\n if (event.defaultPrevented) return;\n\n const relatedTarget = event.relatedTarget;\n if (\n relatedTarget &&\n relatedTarget instanceof Node &&\n event.currentTarget.contains(relatedTarget)\n ) {\n return;\n }\n\n event.preventDefault();\n store.dispatch({ type: \"SET_DRAG_OVER\", dragOver: false });\n },\n [store, propsRef],\n );\n\n const onDrop = React.useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n propsRef.current.onDrop?.(event);\n\n if (event.defaultPrevented) return;\n\n event.preventDefault();\n store.dispatch({ type: \"SET_DRAG_OVER\", dragOver: false });\n\n const files = Array.from(event.dataTransfer.files);\n const inputElement = context.inputRef.current;\n if (!inputElement) return;\n\n const dataTransfer = new DataTransfer();\n for (const file of files) {\n dataTransfer.items.add(file);\n }\n\n inputElement.files = dataTransfer.files;\n inputElement.dispatchEvent(new Event(\"change\", { bubbles: true }));\n },\n [store, context.inputRef, propsRef],\n );\n\n const onPaste = React.useCallback(\n (event: React.ClipboardEvent<HTMLDivElement>) => {\n propsRef.current.onPaste?.(event);\n\n if (event.defaultPrevented) return;\n\n event.preventDefault();\n store.dispatch({ type: \"SET_DRAG_OVER\", dragOver: false });\n\n const items = event.clipboardData?.items;\n if (!items) return;\n\n const files: File[] = [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item?.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length === 0) return;\n\n const inputElement = context.inputRef.current;\n if (!inputElement) return;\n\n const dataTransfer = new DataTransfer();\n for (const file of files) {\n dataTransfer.items.add(file);\n }\n\n inputElement.files = dataTransfer.files;\n inputElement.dispatchEvent(new Event(\"change\", { bubbles: true }));\n },\n [store, context.inputRef, propsRef],\n );\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n propsRef.current.onKeyDown?.(event);\n\n if (\n !event.defaultPrevented &&\n (event.key === \"Enter\" || event.key === \" \")\n ) {\n event.preventDefault();\n context.inputRef.current?.click();\n }\n },\n [context.inputRef, propsRef],\n );\n\n const DropzonePrimitive = asChild ? Slot : \"div\";\n\n return (\n <DropzonePrimitive\n role=\"region\"\n id={context.dropzoneId}\n aria-controls={`${context.inputId} ${context.listId}`}\n aria-disabled={context.disabled}\n aria-invalid={invalid}\n data-disabled={context.disabled ? \"\" : undefined}\n data-dragging={dragOver ? \"\" : undefined}\n data-invalid={invalid ? \"\" : undefined}\n data-slot=\"file-upload-dropzone\"\n dir={context.dir}\n tabIndex={context.disabled ? undefined : 0}\n {...dropzoneProps}\n className={cn(\n \"relative flex select-none flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed p-6 outline-none transition-colors hover:bg-accent/30 focus-visible:border-ring/50 data-disabled:pointer-events-none data-dragging:border-primary/30 data-invalid:border-destructive data-dragging:bg-accent/30 data-invalid:ring-destructive/20\",\n className,\n )}\n onClick={onClick}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n onDragOver={onDragOver}\n onDrop={onDrop}\n onKeyDown={onKeyDown}\n onPaste={onPaste}\n />\n );\n}\n\ninterface FileUploadTriggerProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean;\n}\n\nfunction FileUploadTrigger(props: FileUploadTriggerProps) {\n const { asChild, onClick: onClickProp, ...triggerProps } = props;\n\n const context = useFileUploadContext(TRIGGER_NAME);\n\n const propsRef = useAsRef({\n onClick: onClickProp,\n });\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n propsRef.current.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n context.inputRef.current?.click();\n },\n [context.inputRef, propsRef],\n );\n\n const TriggerPrimitive = asChild ? Slot : \"button\";\n\n return (\n <TriggerPrimitive\n type=\"button\"\n aria-controls={context.inputId}\n data-disabled={context.disabled ? \"\" : undefined}\n data-slot=\"file-upload-trigger\"\n {...triggerProps}\n disabled={context.disabled}\n onClick={onClick}\n />\n );\n}\n\ninterface FileUploadListProps extends React.ComponentProps<\"div\"> {\n orientation?: \"horizontal\" | \"vertical\";\n asChild?: boolean;\n forceMount?: boolean;\n}\n\nfunction FileUploadList(props: FileUploadListProps) {\n const {\n className,\n orientation = \"vertical\",\n asChild,\n forceMount,\n ...listProps\n } = props;\n\n const context = useFileUploadContext(LIST_NAME);\n const fileCount = useStore((state) => state.files.size);\n const shouldRender = forceMount || fileCount > 0;\n\n if (!shouldRender) return null;\n\n const ListPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ListPrimitive\n role=\"list\"\n id={context.listId}\n aria-orientation={orientation}\n data-orientation={orientation}\n data-slot=\"file-upload-list\"\n data-state={shouldRender ? \"active\" : \"inactive\"}\n dir={context.dir}\n {...listProps}\n className={cn(\n \"data-[state=inactive]:fade-out-0 data-[state=active]:fade-in-0 data-[state=inactive]:slide-out-to-top-2 data-[state=active]:slide-in-from-top-2 flex flex-col gap-2 data-[state=active]:animate-in data-[state=inactive]:animate-out\",\n orientation === \"horizontal\" && \"flex-row overflow-x-auto p-1.5\",\n className,\n )}\n />\n );\n}\n\ninterface FileUploadItemContextValue {\n id: string;\n fileState: FileState | undefined;\n nameId: string;\n sizeId: string;\n statusId: string;\n messageId: string;\n}\n\nconst FileUploadItemContext =\n React.createContext<FileUploadItemContextValue | null>(null);\n\nfunction useFileUploadItemContext(consumerName: string) {\n const context = React.useContext(FileUploadItemContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ITEM_NAME}\\``);\n }\n return context;\n}\n\ninterface FileUploadItemProps extends React.ComponentProps<\"div\"> {\n value: File;\n asChild?: boolean;\n}\n\nfunction FileUploadItem(props: FileUploadItemProps) {\n const { value, asChild, className, ...itemProps } = props;\n\n const id = React.useId();\n const statusId = `${id}-status`;\n const nameId = `${id}-name`;\n const sizeId = `${id}-size`;\n const messageId = `${id}-message`;\n\n const context = useFileUploadContext(ITEM_NAME);\n const fileState = useStore((state) => state.files.get(value));\n const fileCount = useStore((state) => state.files.size);\n const fileIndex = useStore((state) => {\n const files = Array.from(state.files.keys());\n return files.indexOf(value) + 1;\n });\n\n const itemContext = React.useMemo(\n () => ({\n id,\n fileState,\n nameId,\n sizeId,\n statusId,\n messageId,\n }),\n [id, fileState, statusId, nameId, sizeId, messageId],\n );\n\n if (!fileState) return null;\n\n const statusText = fileState.error\n ? `Error: ${fileState.error}`\n : fileState.status === \"uploading\"\n ? `Uploading: ${fileState.progress}% complete`\n : fileState.status === \"success\"\n ? \"Upload complete\"\n : \"Ready to upload\";\n\n const ItemPrimitive = asChild ? Slot : \"div\";\n\n return (\n <FileUploadItemContext.Provider value={itemContext}>\n <ItemPrimitive\n role=\"listitem\"\n id={id}\n aria-setsize={fileCount}\n aria-posinset={fileIndex}\n aria-describedby={`${nameId} ${sizeId} ${statusId} ${\n fileState.error ? messageId : \"\"\n }`}\n aria-labelledby={nameId}\n data-slot=\"file-upload-item\"\n dir={context.dir}\n {...itemProps}\n className={cn(\n \"relative flex items-center gap-2.5 rounded-md border p-3\",\n className,\n )}\n >\n {props.children}\n <span id={statusId} className=\"sr-only\">\n {statusText}\n </span>\n </ItemPrimitive>\n </FileUploadItemContext.Provider>\n );\n}\n\ninterface FileUploadItemPreviewProps extends React.ComponentProps<\"div\"> {\n render?: (file: File, fallback: () => React.ReactNode) => React.ReactNode;\n asChild?: boolean;\n}\n\nfunction FileUploadItemPreview(props: FileUploadItemPreviewProps) {\n const { render, asChild, children, className, ...previewProps } = props;\n\n const itemContext = useFileUploadItemContext(ITEM_PREVIEW_NAME);\n const context = useFileUploadContext(ITEM_PREVIEW_NAME);\n\n const getDefaultRender = React.useCallback(\n (file: File) => {\n if (itemContext.fileState?.file.type.startsWith(\"image/\")) {\n let url = context.urlCache.get(file);\n if (!url) {\n url = URL.createObjectURL(file);\n context.urlCache.set(file, url);\n }\n\n return (\n // biome-ignore lint/performance/noImgElement: dynamic file URLs from user uploads don't work well with Next.js Image optimization\n <img src={url} alt={file.name} className=\"size-full object-cover\" />\n );\n }\n\n return getFileIcon(file);\n },\n [itemContext.fileState?.file.type, context.urlCache],\n );\n\n const onPreviewRender = React.useCallback(\n (file: File) => {\n if (render) {\n return render(file, () => getDefaultRender(file));\n }\n\n return getDefaultRender(file);\n },\n [render, getDefaultRender],\n );\n\n if (!itemContext.fileState) return null;\n\n const ItemPreviewPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ItemPreviewPrimitive\n aria-labelledby={itemContext.nameId}\n data-slot=\"file-upload-preview\"\n {...previewProps}\n className={cn(\n \"relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded border bg-accent/50 [&>svg]:size-10\",\n className,\n )}\n >\n {onPreviewRender(itemContext.fileState.file)}\n {children}\n </ItemPreviewPrimitive>\n );\n}\n\ninterface FileUploadItemMetadataProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n size?: \"default\" | \"sm\";\n}\n\nfunction FileUploadItemMetadata(props: FileUploadItemMetadataProps) {\n const {\n asChild,\n size = \"default\",\n children,\n className,\n ...metadataProps\n } = props;\n\n const context = useFileUploadContext(ITEM_METADATA_NAME);\n const itemContext = useFileUploadItemContext(ITEM_METADATA_NAME);\n\n if (!itemContext.fileState) return null;\n\n const ItemMetadataPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ItemMetadataPrimitive\n data-slot=\"file-upload-metadata\"\n dir={context.dir}\n {...metadataProps}\n className={cn(\"flex min-w-0 flex-1 flex-col\", className)}\n >\n {children ?? (\n <>\n <span\n id={itemContext.nameId}\n className={cn(\n \"truncate font-medium text-sm\",\n size === \"sm\" && \"font-normal text-[13px] leading-snug\",\n )}\n >\n {itemContext.fileState.file.name}\n </span>\n <span\n id={itemContext.sizeId}\n className={cn(\n \"truncate text-muted-foreground text-xs\",\n size === \"sm\" && \"text-[11px] leading-snug\",\n )}\n >\n {formatBytes(itemContext.fileState.file.size)}\n </span>\n {itemContext.fileState.error && (\n <span\n id={itemContext.messageId}\n className=\"text-destructive text-xs\"\n >\n {itemContext.fileState.error}\n </span>\n )}\n </>\n )}\n </ItemMetadataPrimitive>\n );\n}\ninterface FileUploadItemProgressProps extends React.ComponentProps<\"div\"> {\n variant?: \"linear\" | \"circular\" | \"fill\";\n size?: number;\n asChild?: boolean;\n forceMount?: boolean;\n}\n\nfunction FileUploadItemProgress(props: FileUploadItemProgressProps) {\n const {\n variant = \"linear\",\n size = 40,\n asChild,\n forceMount,\n className,\n ...progressProps\n } = props;\n\n const itemContext = useFileUploadItemContext(ITEM_PROGRESS_NAME);\n\n if (!itemContext.fileState) return null;\n\n const shouldRender = forceMount || itemContext.fileState.progress !== 100;\n\n if (!shouldRender) return null;\n\n const ItemProgressPrimitive = asChild ? Slot : \"div\";\n\n switch (variant) {\n case \"circular\": {\n const circumference = 2 * Math.PI * ((size - 4) / 2);\n const strokeDashoffset =\n circumference - (itemContext.fileState.progress / 100) * circumference;\n\n return (\n <ItemProgressPrimitive\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={itemContext.fileState.progress}\n aria-valuetext={`${itemContext.fileState.progress}%`}\n aria-labelledby={itemContext.nameId}\n data-slot=\"file-upload-progress\"\n {...progressProps}\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n className,\n )}\n >\n <svg\n className=\"-rotate-90 transform\"\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n stroke=\"currentColor\"\n >\n <circle\n className=\"text-primary/20\"\n strokeWidth=\"2\"\n cx={size / 2}\n cy={size / 2}\n r={(size - 4) / 2}\n />\n <circle\n className=\"text-primary transition-[stroke-dashoffset] duration-300 ease-linear\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n cx={size / 2}\n cy={size / 2}\n r={(size - 4) / 2}\n />\n </svg>\n </ItemProgressPrimitive>\n );\n }\n\n case \"fill\": {\n const progressPercentage = itemContext.fileState.progress;\n const topInset = 100 - progressPercentage;\n\n return (\n <ItemProgressPrimitive\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={progressPercentage}\n aria-valuetext={`${progressPercentage}%`}\n aria-labelledby={itemContext.nameId}\n data-slot=\"file-upload-progress\"\n {...progressProps}\n className={cn(\n \"absolute inset-0 bg-primary/50 transition-[clip-path] duration-300 ease-linear\",\n className,\n )}\n style={{\n clipPath: `inset(${topInset}% 0% 0% 0%)`,\n }}\n />\n );\n }\n\n default:\n return (\n <ItemProgressPrimitive\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={itemContext.fileState.progress}\n aria-valuetext={`${itemContext.fileState.progress}%`}\n aria-labelledby={itemContext.nameId}\n data-slot=\"file-upload-progress\"\n {...progressProps}\n className={cn(\n \"relative h-1.5 w-full overflow-hidden rounded-full bg-primary/20\",\n className,\n )}\n >\n <div\n className=\"h-full w-full flex-1 bg-primary transition-transform duration-300 ease-linear\"\n style={{\n transform: `translateX(-${100 - itemContext.fileState.progress}%)`,\n }}\n />\n </ItemProgressPrimitive>\n );\n }\n}\n\ninterface FileUploadItemDeleteProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean;\n}\n\nfunction FileUploadItemDelete(props: FileUploadItemDeleteProps) {\n const { asChild, onClick: onClickProp, ...deleteProps } = props;\n\n const store = useStoreContext(ITEM_DELETE_NAME);\n const itemContext = useFileUploadItemContext(ITEM_DELETE_NAME);\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClickProp?.(event);\n\n if (!itemContext.fileState || event.defaultPrevented) return;\n\n store.dispatch({\n type: \"REMOVE_FILE\",\n file: itemContext.fileState.file,\n });\n },\n [store, itemContext.fileState, onClickProp],\n );\n\n if (!itemContext.fileState) return null;\n\n const ItemDeletePrimitive = asChild ? Slot : \"button\";\n\n return (\n <ItemDeletePrimitive\n type=\"button\"\n aria-controls={itemContext.id}\n aria-describedby={itemContext.nameId}\n data-slot=\"file-upload-item-delete\"\n {...deleteProps}\n onClick={onClick}\n />\n );\n}\n\ninterface FileUploadClearProps extends React.ComponentProps<\"button\"> {\n forceMount?: boolean;\n asChild?: boolean;\n}\n\nfunction FileUploadClear(props: FileUploadClearProps) {\n const {\n asChild,\n forceMount,\n disabled,\n onClick: onClickProp,\n ...clearProps\n } = props;\n\n const context = useFileUploadContext(CLEAR_NAME);\n const store = useStoreContext(CLEAR_NAME);\n const fileCount = useStore((state) => state.files.size);\n\n const isDisabled = disabled || context.disabled;\n\n const onClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClickProp?.(event);\n\n if (event.defaultPrevented) return;\n\n store.dispatch({ type: \"CLEAR\" });\n },\n [store, onClickProp],\n );\n\n const shouldRender = forceMount || fileCount > 0;\n\n if (!shouldRender) return null;\n\n const ClearPrimitive = asChild ? Slot : \"button\";\n\n return (\n <ClearPrimitive\n type=\"button\"\n aria-controls={context.listId}\n data-slot=\"file-upload-clear\"\n data-disabled={isDisabled ? \"\" : undefined}\n {...clearProps}\n disabled={isDisabled}\n onClick={onClick}\n />\n );\n}\n\nexport {\n FileUpload,\n FileUploadDropzone,\n FileUploadTrigger,\n FileUploadList,\n FileUploadItem,\n FileUploadItemPreview,\n FileUploadItemMetadata,\n FileUploadItemProgress,\n FileUploadItemDelete,\n FileUploadClear,\n //\n useStore as useFileUpload,\n //\n type FileUploadProps,\n};\n"]}
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ interface DivProps extends React.ComponentProps<"div"> {
5
+ asChild?: boolean;
6
+ }
7
+ interface PathProps extends React.ComponentProps<"path"> {
8
+ }
9
+ interface GaugeProps extends DivProps {
10
+ value?: number | null | undefined;
11
+ getValueText?(value: number, min: number, max: number): string;
12
+ min?: number;
13
+ max?: number;
14
+ size?: number;
15
+ thickness?: number;
16
+ startAngle?: number;
17
+ endAngle?: number;
18
+ }
19
+ declare function Gauge(props: GaugeProps): react_jsx_runtime.JSX.Element;
20
+ declare function GaugeIndicator(props: React.ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
21
+ declare function GaugeTrack(props: PathProps): react_jsx_runtime.JSX.Element;
22
+ declare function GaugeRange(props: PathProps): react_jsx_runtime.JSX.Element;
23
+ declare function GaugeValueText(props: DivProps): react_jsx_runtime.JSX.Element;
24
+ declare function GaugeLabel(props: DivProps): react_jsx_runtime.JSX.Element;
25
+ declare function GaugeCombined(props: GaugeProps): react_jsx_runtime.JSX.Element;
26
+
27
+ export { Gauge, GaugeCombined, GaugeIndicator, GaugeLabel, type GaugeProps, GaugeRange, GaugeTrack, GaugeValueText };
@@ -0,0 +1,359 @@
1
+ import { Slot } from '@radix-ui/react-slot';
2
+ import * as React from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ var GAUGE_NAME = "Gauge";
11
+ var INDICATOR_NAME = "GaugeIndicator";
12
+ var TRACK_NAME = "GaugeTrack";
13
+ var RANGE_NAME = "GaugeRange";
14
+ var VALUE_TEXT_NAME = "GaugeValueText";
15
+ var LABEL_NAME = "GaugeLabel";
16
+ var DEFAULT_MAX = 100;
17
+ var DEFAULT_START_ANGLE = 0;
18
+ var DEFAULT_END_ANGLE = 360;
19
+ function getGaugeState(value, maxValue) {
20
+ return value == null ? "indeterminate" : value === maxValue ? "complete" : "loading";
21
+ }
22
+ function getIsValidNumber(value) {
23
+ return typeof value === "number" && Number.isFinite(value);
24
+ }
25
+ function getIsValidMaxNumber(max) {
26
+ return getIsValidNumber(max) && max > 0;
27
+ }
28
+ function getIsValidValueNumber(value, min, max) {
29
+ return getIsValidNumber(value) && value <= max && value >= min;
30
+ }
31
+ function getDefaultValueText(value, min, max) {
32
+ const percentage = max === min ? 100 : (value - min) / (max - min) * 100;
33
+ return Math.round(percentage).toString();
34
+ }
35
+ function getInvalidValueError(propValue, componentName) {
36
+ return `Invalid prop \`value\` of value \`${propValue}\` supplied to \`${componentName}\`. The \`value\` prop must be a number between \`min\` and \`max\` (inclusive), or \`null\`/\`undefined\` for indeterminate state. The value will be clamped to the valid range.`;
37
+ }
38
+ function getInvalidMaxError(propValue, componentName) {
39
+ return `Invalid prop \`max\` of value \`${propValue}\` supplied to \`${componentName}\`. Only numbers greater than 0 are valid. Defaulting to ${DEFAULT_MAX}.`;
40
+ }
41
+ function getNormalizedAngle(angle) {
42
+ return (angle % 360 + 360) % 360;
43
+ }
44
+ function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
45
+ const angleInRadians = (angleInDegrees - 90) * Math.PI / 180;
46
+ return {
47
+ x: centerX + radius * Math.cos(angleInRadians),
48
+ y: centerY + radius * Math.sin(angleInRadians)
49
+ };
50
+ }
51
+ function describeArc(x, y, radius, startAngle, endAngle) {
52
+ const angleDiff = endAngle - startAngle;
53
+ if (Math.abs(angleDiff) >= 360) {
54
+ const start2 = polarToCartesian(x, y, radius, startAngle);
55
+ const mid = polarToCartesian(x, y, radius, startAngle + 180);
56
+ return [
57
+ "M",
58
+ start2.x,
59
+ start2.y,
60
+ "A",
61
+ radius,
62
+ radius,
63
+ 0,
64
+ 0,
65
+ 1,
66
+ mid.x,
67
+ mid.y,
68
+ "A",
69
+ radius,
70
+ radius,
71
+ 0,
72
+ 0,
73
+ 1,
74
+ start2.x,
75
+ start2.y
76
+ ].join(" ");
77
+ }
78
+ const start = polarToCartesian(x, y, radius, startAngle);
79
+ const end = polarToCartesian(x, y, radius, endAngle);
80
+ const largeArcFlag = angleDiff <= 180 ? "0" : "1";
81
+ return [
82
+ "M",
83
+ start.x,
84
+ start.y,
85
+ "A",
86
+ radius,
87
+ radius,
88
+ 0,
89
+ largeArcFlag,
90
+ 1,
91
+ end.x,
92
+ end.y
93
+ ].join(" ");
94
+ }
95
+ var GaugeContext = React.createContext(null);
96
+ function useGaugeContext(consumerName) {
97
+ const context = React.useContext(GaugeContext);
98
+ if (!context) {
99
+ throw new Error(
100
+ `\`${consumerName}\` must be used within \`${GAUGE_NAME}\``
101
+ );
102
+ }
103
+ return context;
104
+ }
105
+ function Gauge(props) {
106
+ const {
107
+ value: valueProp = null,
108
+ getValueText = getDefaultValueText,
109
+ min: minProp = 0,
110
+ max: maxProp,
111
+ size = 120,
112
+ thickness = 8,
113
+ startAngle = DEFAULT_START_ANGLE,
114
+ endAngle = DEFAULT_END_ANGLE,
115
+ asChild,
116
+ className,
117
+ ...rootProps
118
+ } = props;
119
+ if ((maxProp || maxProp === 0) && !getIsValidMaxNumber(maxProp)) {
120
+ if (process.env.NODE_ENV !== "production") {
121
+ console.error(getInvalidMaxError(`${maxProp}`, GAUGE_NAME));
122
+ }
123
+ }
124
+ const rawMax = getIsValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;
125
+ const min = getIsValidNumber(minProp) ? minProp : 0;
126
+ const max = rawMax <= min ? min + 1 : rawMax;
127
+ if (process.env.NODE_ENV !== "production" && thickness >= size) {
128
+ console.warn(
129
+ `Gauge: thickness (${thickness}) should be less than size (${size}) for proper rendering.`
130
+ );
131
+ }
132
+ if (valueProp !== null && !getIsValidValueNumber(valueProp, min, max)) {
133
+ if (process.env.NODE_ENV !== "production") {
134
+ console.error(getInvalidValueError(`${valueProp}`, GAUGE_NAME));
135
+ }
136
+ }
137
+ const value = getIsValidValueNumber(valueProp, min, max) ? valueProp : getIsValidNumber(valueProp) && valueProp > max ? max : getIsValidNumber(valueProp) && valueProp < min ? min : null;
138
+ const valueText = getIsValidNumber(value) ? getValueText(value, min, max) : void 0;
139
+ const state = getGaugeState(value, max);
140
+ const radius = Math.max(0, (size - thickness) / 2);
141
+ const center = size / 2;
142
+ const angleDiff = Math.abs(endAngle - startAngle);
143
+ const arcLength = Math.min(angleDiff, 360) / 360 * (2 * Math.PI * radius);
144
+ const percentage = getIsValidNumber(value) ? max === min ? 1 : (value - min) / (max - min) : null;
145
+ const angleDiffDeg = Math.abs(endAngle - startAngle);
146
+ const isFullCircle = angleDiffDeg >= 360;
147
+ let arcCenterY = center;
148
+ if (!isFullCircle) {
149
+ const startRad = startAngle * Math.PI / 180;
150
+ const endRad = endAngle * Math.PI / 180;
151
+ const startY = center - radius * Math.cos(startRad);
152
+ const endY = center - radius * Math.cos(endRad);
153
+ let minY = Math.min(startY, endY);
154
+ let maxY = Math.max(startY, endY);
155
+ const normStart = getNormalizedAngle(startAngle);
156
+ const normEnd = getNormalizedAngle(endAngle);
157
+ const includesTop = normStart > normEnd ? normStart <= 270 || normEnd >= 270 : normStart <= 270 && normEnd >= 270;
158
+ const includesBottom = normStart > normEnd ? normStart <= 90 || normEnd >= 90 : normStart <= 90 && normEnd >= 90;
159
+ if (includesTop) minY = Math.min(minY, center - radius);
160
+ if (includesBottom) maxY = Math.max(maxY, center + radius);
161
+ arcCenterY = (minY + maxY) / 2;
162
+ }
163
+ const labelId = React.useId();
164
+ const valueTextId = React.useId();
165
+ const contextValue = React.useMemo(
166
+ () => ({
167
+ value,
168
+ valueText,
169
+ max,
170
+ min,
171
+ state,
172
+ radius,
173
+ thickness,
174
+ size,
175
+ center,
176
+ percentage,
177
+ startAngle,
178
+ endAngle,
179
+ arcLength,
180
+ arcCenterY,
181
+ valueTextId,
182
+ labelId
183
+ }),
184
+ [
185
+ value,
186
+ valueText,
187
+ max,
188
+ min,
189
+ state,
190
+ radius,
191
+ thickness,
192
+ size,
193
+ center,
194
+ percentage,
195
+ startAngle,
196
+ endAngle,
197
+ arcLength,
198
+ arcCenterY,
199
+ valueTextId,
200
+ labelId
201
+ ]
202
+ );
203
+ const RootPrimitive = asChild ? Slot : "div";
204
+ return /* @__PURE__ */ jsx(GaugeContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
205
+ RootPrimitive,
206
+ {
207
+ role: "meter",
208
+ "aria-describedby": valueText ? valueTextId : void 0,
209
+ "aria-labelledby": labelId,
210
+ "aria-valuemax": max,
211
+ "aria-valuemin": min,
212
+ "aria-valuenow": getIsValidNumber(value) ? value : void 0,
213
+ "aria-valuetext": valueText,
214
+ "data-state": state,
215
+ "data-value": value ?? void 0,
216
+ "data-max": max,
217
+ "data-min": min,
218
+ "data-percentage": percentage,
219
+ ...rootProps,
220
+ className: cn(
221
+ "relative inline-flex w-fit flex-col items-center justify-center",
222
+ className
223
+ )
224
+ }
225
+ ) });
226
+ }
227
+ function GaugeIndicator(props) {
228
+ const { className, ...indicatorProps } = props;
229
+ const { size, state, value, max, min, percentage } = useGaugeContext(INDICATOR_NAME);
230
+ return /* @__PURE__ */ jsx(
231
+ "svg",
232
+ {
233
+ "aria-hidden": "true",
234
+ focusable: "false",
235
+ viewBox: `0 0 ${size} ${size}`,
236
+ "data-state": state,
237
+ "data-value": value ?? void 0,
238
+ "data-max": max,
239
+ "data-min": min,
240
+ "data-percentage": percentage,
241
+ width: size,
242
+ height: size,
243
+ ...indicatorProps,
244
+ className: cn("transform", className)
245
+ }
246
+ );
247
+ }
248
+ function GaugeTrack(props) {
249
+ const { className, ...trackProps } = props;
250
+ const { center, radius, startAngle, endAngle, thickness, state } = useGaugeContext(TRACK_NAME);
251
+ const pathData = describeArc(center, center, radius, startAngle, endAngle);
252
+ return /* @__PURE__ */ jsx(
253
+ "path",
254
+ {
255
+ "data-state": state,
256
+ d: pathData,
257
+ fill: "none",
258
+ stroke: "currentColor",
259
+ strokeWidth: thickness,
260
+ strokeLinecap: "round",
261
+ vectorEffect: "non-scaling-stroke",
262
+ ...trackProps,
263
+ className: cn("text-muted-foreground/20", className)
264
+ }
265
+ );
266
+ }
267
+ function GaugeRange(props) {
268
+ const { className, ...rangeProps } = props;
269
+ const {
270
+ center,
271
+ radius,
272
+ startAngle,
273
+ endAngle,
274
+ value,
275
+ max,
276
+ min,
277
+ state,
278
+ thickness,
279
+ arcLength,
280
+ percentage
281
+ } = useGaugeContext(RANGE_NAME);
282
+ const pathData = describeArc(center, center, radius, startAngle, endAngle);
283
+ const strokeDasharray = arcLength;
284
+ const strokeDashoffset = state === "indeterminate" ? 0 : percentage !== null ? arcLength - percentage * arcLength : arcLength;
285
+ return /* @__PURE__ */ jsx(
286
+ "path",
287
+ {
288
+ "data-state": state,
289
+ "data-value": value ?? void 0,
290
+ "data-max": max,
291
+ "data-min": min,
292
+ d: pathData,
293
+ fill: "none",
294
+ stroke: "currentColor",
295
+ strokeWidth: thickness,
296
+ strokeLinecap: "round",
297
+ strokeDasharray,
298
+ strokeDashoffset,
299
+ vectorEffect: "non-scaling-stroke",
300
+ ...rangeProps,
301
+ className: cn(
302
+ "text-primary transition-[stroke-dashoffset] duration-700 ease-out",
303
+ className
304
+ )
305
+ }
306
+ );
307
+ }
308
+ function GaugeValueText(props) {
309
+ const { asChild, className, children, style, ...valueTextProps } = props;
310
+ const { valueTextId, state, arcCenterY, valueText } = useGaugeContext(VALUE_TEXT_NAME);
311
+ const ValueTextPrimitive = asChild ? Slot : "div";
312
+ return /* @__PURE__ */ jsx(
313
+ ValueTextPrimitive,
314
+ {
315
+ id: valueTextId,
316
+ "data-state": state,
317
+ ...valueTextProps,
318
+ style: {
319
+ top: `${arcCenterY}px`,
320
+ ...style
321
+ },
322
+ className: cn(
323
+ "absolute right-0 left-0 flex -translate-y-1/2 items-center justify-center font-semibold text-2xl",
324
+ className
325
+ ),
326
+ children: children ?? valueText
327
+ }
328
+ );
329
+ }
330
+ function GaugeLabel(props) {
331
+ const { asChild, className, ...labelProps } = props;
332
+ const { labelId, state } = useGaugeContext(LABEL_NAME);
333
+ const LabelPrimitive = asChild ? Slot : "div";
334
+ return /* @__PURE__ */ jsx(
335
+ LabelPrimitive,
336
+ {
337
+ id: labelId,
338
+ "data-state": state,
339
+ ...labelProps,
340
+ className: cn(
341
+ "mt-2 font-medium text-muted-foreground text-sm",
342
+ className
343
+ )
344
+ }
345
+ );
346
+ }
347
+ function GaugeCombined(props) {
348
+ return /* @__PURE__ */ jsxs(Gauge, { ...props, children: [
349
+ /* @__PURE__ */ jsxs(GaugeIndicator, { children: [
350
+ /* @__PURE__ */ jsx(GaugeTrack, {}),
351
+ /* @__PURE__ */ jsx(GaugeRange, {})
352
+ ] }),
353
+ /* @__PURE__ */ jsx(GaugeValueText, {})
354
+ ] });
355
+ }
356
+
357
+ export { Gauge, GaugeCombined, GaugeIndicator, GaugeLabel, GaugeRange, GaugeTrack, GaugeValueText };
358
+ //# sourceMappingURL=gauge.js.map
359
+ //# sourceMappingURL=gauge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/radix-vega/gauge.tsx"],"names":["start"],"mappings":"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","file":"gauge.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind class names, resolving any conflicts.\n *\n * @param inputs - An array of class names to merge.\n * @returns A string of merged and optimized class names.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nconst GAUGE_NAME = \"Gauge\";\nconst INDICATOR_NAME = \"GaugeIndicator\";\nconst TRACK_NAME = \"GaugeTrack\";\nconst RANGE_NAME = \"GaugeRange\";\nconst VALUE_TEXT_NAME = \"GaugeValueText\";\nconst LABEL_NAME = \"GaugeLabel\";\n\nconst DEFAULT_MAX = 100;\nconst DEFAULT_START_ANGLE = 0;\nconst DEFAULT_END_ANGLE = 360;\n\ntype GaugeState = \"indeterminate\" | \"complete\" | \"loading\";\n\ninterface DivProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\ninterface PathProps extends React.ComponentProps<\"path\"> {}\n\nfunction getGaugeState(\n value: number | undefined | null,\n maxValue: number,\n): GaugeState {\n return value == null\n ? \"indeterminate\"\n : value === maxValue\n ? \"complete\"\n : \"loading\";\n}\n\nfunction getIsValidNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction getIsValidMaxNumber(max: unknown): max is number {\n return getIsValidNumber(max) && max > 0;\n}\n\nfunction getIsValidValueNumber(\n value: unknown,\n min: number,\n max: number,\n): value is number {\n return getIsValidNumber(value) && value <= max && value >= min;\n}\n\nfunction getDefaultValueText(value: number, min: number, max: number): string {\n const percentage = max === min ? 100 : ((value - min) / (max - min)) * 100;\n return Math.round(percentage).toString();\n}\n\nfunction getInvalidValueError(\n propValue: string,\n componentName: string,\n): string {\n return `Invalid prop \\`value\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. The \\`value\\` prop must be a number between \\`min\\` and \\`max\\` (inclusive), or \\`null\\`/\\`undefined\\` for indeterminate state. The value will be clamped to the valid range.`;\n}\n\nfunction getInvalidMaxError(propValue: string, componentName: string): string {\n return `Invalid prop \\`max\\` of value \\`${propValue}\\` supplied to \\`${componentName}\\`. Only numbers greater than 0 are valid. Defaulting to ${DEFAULT_MAX}.`;\n}\n\nfunction getNormalizedAngle(angle: number) {\n return ((angle % 360) + 360) % 360;\n}\n\nfunction polarToCartesian(\n centerX: number,\n centerY: number,\n radius: number,\n angleInDegrees: number,\n) {\n const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n}\n\nfunction describeArc(\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number,\n) {\n const angleDiff = endAngle - startAngle;\n\n // For full circles (360 degrees), draw as two semi-circles\n if (Math.abs(angleDiff) >= 360) {\n const start = polarToCartesian(x, y, radius, startAngle);\n const mid = polarToCartesian(x, y, radius, startAngle + 180);\n return [\n \"M\",\n start.x,\n start.y,\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n mid.x,\n mid.y,\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n start.x,\n start.y,\n ].join(\" \");\n }\n\n const start = polarToCartesian(x, y, radius, startAngle);\n const end = polarToCartesian(x, y, radius, endAngle);\n const largeArcFlag = angleDiff <= 180 ? \"0\" : \"1\";\n\n return [\n \"M\",\n start.x,\n start.y,\n \"A\",\n radius,\n radius,\n 0,\n largeArcFlag,\n 1,\n end.x,\n end.y,\n ].join(\" \");\n}\n\ninterface GaugeContextValue {\n value: number | null;\n valueText: string | undefined;\n max: number;\n min: number;\n state: GaugeState;\n radius: number;\n thickness: number;\n size: number;\n center: number;\n percentage: number | null;\n startAngle: number;\n endAngle: number;\n arcLength: number;\n arcCenterY: number;\n valueTextId?: string;\n labelId?: string;\n}\n\nconst GaugeContext = React.createContext<GaugeContextValue | null>(null);\n\nfunction useGaugeContext(consumerName: string) {\n const context = React.useContext(GaugeContext);\n if (!context) {\n throw new Error(\n `\\`${consumerName}\\` must be used within \\`${GAUGE_NAME}\\``,\n );\n }\n return context;\n}\n\ninterface GaugeProps extends DivProps {\n value?: number | null | undefined;\n getValueText?(value: number, min: number, max: number): string;\n min?: number;\n max?: number;\n size?: number;\n thickness?: number;\n startAngle?: number;\n endAngle?: number;\n}\n\nfunction Gauge(props: GaugeProps) {\n const {\n value: valueProp = null,\n getValueText = getDefaultValueText,\n min: minProp = 0,\n max: maxProp,\n size = 120,\n thickness = 8,\n startAngle = DEFAULT_START_ANGLE,\n endAngle = DEFAULT_END_ANGLE,\n asChild,\n className,\n ...rootProps\n } = props;\n\n if ((maxProp || maxProp === 0) && !getIsValidMaxNumber(maxProp)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(getInvalidMaxError(`${maxProp}`, GAUGE_NAME));\n }\n }\n\n const rawMax = getIsValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;\n const min = getIsValidNumber(minProp) ? minProp : 0;\n const max = rawMax <= min ? min + 1 : rawMax;\n\n if (process.env.NODE_ENV !== \"production\" && thickness >= size) {\n console.warn(\n `Gauge: thickness (${thickness}) should be less than size (${size}) for proper rendering.`,\n );\n }\n\n if (valueProp !== null && !getIsValidValueNumber(valueProp, min, max)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(getInvalidValueError(`${valueProp}`, GAUGE_NAME));\n }\n }\n\n const value = getIsValidValueNumber(valueProp, min, max)\n ? valueProp\n : getIsValidNumber(valueProp) && valueProp > max\n ? max\n : getIsValidNumber(valueProp) && valueProp < min\n ? min\n : null;\n\n const valueText = getIsValidNumber(value)\n ? getValueText(value, min, max)\n : undefined;\n const state = getGaugeState(value, max);\n const radius = Math.max(0, (size - thickness) / 2);\n const center = size / 2;\n\n const angleDiff = Math.abs(endAngle - startAngle);\n const arcLength = (Math.min(angleDiff, 360) / 360) * (2 * Math.PI * radius);\n\n const percentage = getIsValidNumber(value)\n ? max === min\n ? 1\n : (value - min) / (max - min)\n : null;\n\n // Calculate the visual center Y of the arc for text positioning\n // For full circles, use geometric center. For partial arcs, calculate based on bounding box\n const angleDiffDeg = Math.abs(endAngle - startAngle);\n const isFullCircle = angleDiffDeg >= 360;\n\n let arcCenterY = center;\n if (!isFullCircle) {\n const startRad = (startAngle * Math.PI) / 180;\n const endRad = (endAngle * Math.PI) / 180;\n\n const startY = center - radius * Math.cos(startRad);\n const endY = center - radius * Math.cos(endRad);\n\n let minY = Math.min(startY, endY);\n let maxY = Math.max(startY, endY);\n\n const normStart = getNormalizedAngle(startAngle);\n const normEnd = getNormalizedAngle(endAngle);\n\n const includesTop =\n normStart > normEnd\n ? normStart <= 270 || normEnd >= 270\n : normStart <= 270 && normEnd >= 270;\n const includesBottom =\n normStart > normEnd\n ? normStart <= 90 || normEnd >= 90\n : normStart <= 90 && normEnd >= 90;\n\n if (includesTop) minY = Math.min(minY, center - radius);\n if (includesBottom) maxY = Math.max(maxY, center + radius);\n\n arcCenterY = (minY + maxY) / 2;\n }\n\n const labelId = React.useId();\n const valueTextId = React.useId();\n\n const contextValue = React.useMemo<GaugeContextValue>(\n () => ({\n value,\n valueText,\n max,\n min,\n state,\n radius,\n thickness,\n size,\n center,\n percentage,\n startAngle,\n endAngle,\n arcLength,\n arcCenterY,\n valueTextId,\n labelId,\n }),\n [\n value,\n valueText,\n max,\n min,\n state,\n radius,\n thickness,\n size,\n center,\n percentage,\n startAngle,\n endAngle,\n arcLength,\n arcCenterY,\n valueTextId,\n labelId,\n ],\n );\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <GaugeContext.Provider value={contextValue}>\n <RootPrimitive\n role=\"meter\"\n aria-describedby={valueText ? valueTextId : undefined}\n aria-labelledby={labelId}\n aria-valuemax={max}\n aria-valuemin={min}\n aria-valuenow={getIsValidNumber(value) ? value : undefined}\n aria-valuetext={valueText}\n data-state={state}\n data-value={value ?? undefined}\n data-max={max}\n data-min={min}\n data-percentage={percentage}\n {...rootProps}\n className={cn(\n \"relative inline-flex w-fit flex-col items-center justify-center\",\n className,\n )}\n />\n </GaugeContext.Provider>\n );\n}\n\nfunction GaugeIndicator(props: React.ComponentProps<\"svg\">) {\n const { className, ...indicatorProps } = props;\n\n const { size, state, value, max, min, percentage } =\n useGaugeContext(INDICATOR_NAME);\n\n return (\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox={`0 0 ${size} ${size}`}\n data-state={state}\n data-value={value ?? undefined}\n data-max={max}\n data-min={min}\n data-percentage={percentage}\n width={size}\n height={size}\n {...indicatorProps}\n className={cn(\"transform\", className)}\n />\n );\n}\n\nfunction GaugeTrack(props: PathProps) {\n const { className, ...trackProps } = props;\n\n const { center, radius, startAngle, endAngle, thickness, state } =\n useGaugeContext(TRACK_NAME);\n\n const pathData = describeArc(center, center, radius, startAngle, endAngle);\n\n return (\n <path\n data-state={state}\n d={pathData}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n {...trackProps}\n className={cn(\"text-muted-foreground/20\", className)}\n />\n );\n}\n\nfunction GaugeRange(props: PathProps) {\n const { className, ...rangeProps } = props;\n\n const {\n center,\n radius,\n startAngle,\n endAngle,\n value,\n max,\n min,\n state,\n thickness,\n arcLength,\n percentage,\n } = useGaugeContext(RANGE_NAME);\n\n const pathData = describeArc(center, center, radius, startAngle, endAngle);\n\n const strokeDasharray = arcLength;\n const strokeDashoffset =\n state === \"indeterminate\"\n ? 0\n : percentage !== null\n ? arcLength - percentage * arcLength\n : arcLength;\n\n return (\n <path\n data-state={state}\n data-value={value ?? undefined}\n data-max={max}\n data-min={min}\n d={pathData}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n strokeDasharray={strokeDasharray}\n strokeDashoffset={strokeDashoffset}\n vectorEffect=\"non-scaling-stroke\"\n {...rangeProps}\n className={cn(\n \"text-primary transition-[stroke-dashoffset] duration-700 ease-out\",\n className,\n )}\n />\n );\n}\n\nfunction GaugeValueText(props: DivProps) {\n const { asChild, className, children, style, ...valueTextProps } = props;\n\n const { valueTextId, state, arcCenterY, valueText } =\n useGaugeContext(VALUE_TEXT_NAME);\n\n const ValueTextPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ValueTextPrimitive\n id={valueTextId}\n data-state={state}\n {...valueTextProps}\n style={{\n top: `${arcCenterY}px`,\n ...style,\n }}\n className={cn(\n \"absolute right-0 left-0 flex -translate-y-1/2 items-center justify-center font-semibold text-2xl\",\n className,\n )}\n >\n {children ?? valueText}\n </ValueTextPrimitive>\n );\n}\n\nfunction GaugeLabel(props: DivProps) {\n const { asChild, className, ...labelProps } = props;\n\n const { labelId, state } = useGaugeContext(LABEL_NAME);\n\n const LabelPrimitive = asChild ? Slot : \"div\";\n\n return (\n <LabelPrimitive\n id={labelId}\n data-state={state}\n {...labelProps}\n className={cn(\n \"mt-2 font-medium text-muted-foreground text-sm\",\n className,\n )}\n />\n );\n}\n\nfunction GaugeCombined(props: GaugeProps) {\n return (\n <Gauge {...props}>\n <GaugeIndicator>\n <GaugeTrack />\n <GaugeRange />\n </GaugeIndicator>\n <GaugeValueText />\n </Gauge>\n );\n}\n\nexport {\n Gauge,\n GaugeIndicator,\n GaugeTrack,\n GaugeRange,\n GaugeValueText,\n GaugeLabel,\n GaugeCombined,\n //\n type GaugeProps,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/utils.ts","../../src/radix-vega/hover-card.tsx"],"names":["HoverCardPrimitive"],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACAA,SAAS,SAAA,CAAU;AAAA,EACjB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAAQA,WAAA,CAAmB,IAAA,EAAnB,EAAwB,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,2BACGA,WAAA,CAAmB,OAAA,EAAnB,EAA2B,WAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EAAO,CAAA;AAE1E;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA,CAACA,WAAA,CAAmB,MAAA,EAAnB,EAA0B,aAAU,mBAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,IAACA,WAAA,CAAmB,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,2dAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ","file":"hover-card.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 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 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-lg p-4 text-sm shadow-md ring-1 duration-100 z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"]}
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/radix-vega/hover-card.tsx"],"names":["HoverCardPrimitive"],"mappings":";;;;;;AASO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACNA,SAAS,SAAA,CAAU;AAAA,EACjB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAAQA,WAAA,CAAmB,IAAA,EAAnB,EAAwB,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,2BACGA,WAAA,CAAmB,OAAA,EAAnB,EAA2B,WAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EAAO,CAAA;AAE1E;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA,CAACA,WAAA,CAAmB,MAAA,EAAnB,EAA0B,aAAU,mBAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,IAACA,WAAA,CAAmB,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,2dAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ","file":"hover-card.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind class names, resolving any conflicts.\n *\n * @param inputs - An array of class names to merge.\n * @returns A string of merged and optimized class names.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 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 ring-foreground/10 bg-popover text-popover-foreground w-64 rounded-lg p-4 text-sm shadow-md ring-1 duration-100 z-50 origin-(--radix-hover-card-content-transform-origin) outline-hidden\",\n className\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"]}