@spark-ui/components 13.1.3 → 13.1.4

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 (826) hide show
  1. package/dist/Input-N8AWWSmt.d.mts +41 -0
  2. package/dist/Input-N8AWWSmt.d.ts +41 -0
  3. package/dist/InputTrailingIcon-BBp7sE6D.d.mts +20 -0
  4. package/dist/InputTrailingIcon-ZZx8PoJy.d.ts +20 -0
  5. package/dist/LabelRequiredIndicator-DRnCzHMU.d.mts +19 -0
  6. package/dist/LabelRequiredIndicator-DRnCzHMU.d.ts +19 -0
  7. package/dist/accordion/index.d.mts +73 -0
  8. package/dist/accordion/index.d.ts +68 -10
  9. package/dist/accordion/index.js +325 -2
  10. package/dist/accordion/index.js.map +1 -1
  11. package/dist/accordion/index.mjs +154 -632
  12. package/dist/accordion/index.mjs.map +1 -1
  13. package/dist/alert-dialog/index.d.mts +159 -0
  14. package/dist/alert-dialog/index.d.ts +147 -26
  15. package/dist/alert-dialog/index.js +405 -35
  16. package/dist/alert-dialog/index.js.map +1 -1
  17. package/dist/alert-dialog/index.mjs +258 -2513
  18. package/dist/alert-dialog/index.mjs.map +1 -1
  19. package/dist/avatar/index.d.mts +66 -0
  20. package/dist/avatar/index.d.ts +59 -8
  21. package/dist/avatar/index.js +1323 -2
  22. package/dist/avatar/index.js.map +1 -1
  23. package/dist/avatar/index.mjs +207 -149
  24. package/dist/avatar/index.mjs.map +1 -1
  25. package/dist/badge/index.d.mts +47 -0
  26. package/dist/badge/index.d.ts +47 -1
  27. package/dist/badge/index.js +122 -2
  28. package/dist/badge/index.js.map +1 -1
  29. package/dist/badge/index.mjs +44 -32
  30. package/dist/badge/index.mjs.map +1 -1
  31. package/dist/breadcrumb/index.d.mts +64 -0
  32. package/dist/breadcrumb/index.d.ts +59 -7
  33. package/dist/breadcrumb/index.js +327 -2
  34. package/dist/breadcrumb/index.js.map +1 -1
  35. package/dist/breadcrumb/index.mjs +146 -106
  36. package/dist/breadcrumb/index.mjs.map +1 -1
  37. package/dist/button/index.d.mts +41 -0
  38. package/dist/button/index.d.ts +41 -1
  39. package/dist/button/index.js +935 -2
  40. package/dist/button/index.js.map +1 -1
  41. package/dist/button/index.mjs +8 -3
  42. package/dist/button/index.mjs.map +1 -1
  43. package/dist/card/index.d.mts +61 -0
  44. package/dist/card/index.d.ts +58 -5
  45. package/dist/card/index.js +502 -2
  46. package/dist/card/index.js.map +1 -1
  47. package/dist/card/index.mjs +178 -125
  48. package/dist/card/index.mjs.map +1 -1
  49. package/dist/carousel/{types.d.ts → index.d.mts} +112 -13
  50. package/dist/carousel/index.d.ts +263 -18
  51. package/dist/carousel/index.js +1882 -2
  52. package/dist/carousel/index.js.map +1 -1
  53. package/dist/carousel/index.mjs +650 -428
  54. package/dist/carousel/index.mjs.map +1 -1
  55. package/dist/checkbox/index.d.mts +120 -0
  56. package/dist/checkbox/index.d.ts +120 -2
  57. package/dist/checkbox/index.js +511 -2
  58. package/dist/checkbox/index.js.map +1 -1
  59. package/dist/checkbox/index.mjs +226 -371
  60. package/dist/checkbox/index.mjs.map +1 -1
  61. package/dist/chip/index.d.mts +97 -0
  62. package/dist/chip/index.d.ts +92 -10
  63. package/dist/chip/index.js +908 -2
  64. package/dist/chip/index.js.map +1 -1
  65. package/dist/chip/index.mjs +322 -390
  66. package/dist/chip/index.mjs.map +1 -1
  67. package/dist/{Button-D32Avk2j.mjs → chunk-2YM6GKWW.mjs} +173 -130
  68. package/dist/chunk-2YM6GKWW.mjs.map +1 -0
  69. package/dist/chunk-6QCEPQ3U.mjs +26 -0
  70. package/dist/chunk-6QCEPQ3U.mjs.map +1 -0
  71. package/dist/chunk-7EWSMIZU.mjs +214 -0
  72. package/dist/chunk-7EWSMIZU.mjs.map +1 -0
  73. package/dist/chunk-DCXWGQVZ.mjs +53 -0
  74. package/dist/chunk-DCXWGQVZ.mjs.map +1 -0
  75. package/dist/{Spinner-CYL5kyzM.mjs → chunk-GAK4SC2F.mjs} +40 -29
  76. package/dist/chunk-GAK4SC2F.mjs.map +1 -0
  77. package/dist/chunk-GPJMLIHC.mjs +308 -0
  78. package/dist/chunk-GPJMLIHC.mjs.map +1 -0
  79. package/dist/chunk-HLXYG643.mjs +52 -0
  80. package/dist/chunk-HLXYG643.mjs.map +1 -0
  81. package/dist/chunk-KEGAAGJW.mjs +36 -0
  82. package/dist/chunk-KEGAAGJW.mjs.map +1 -0
  83. package/dist/{TextLink-3MEVs3No.mjs → chunk-RKPP7ZOK.mjs} +36 -27
  84. package/dist/chunk-RKPP7ZOK.mjs.map +1 -0
  85. package/dist/chunk-UMUMFMFB.mjs +68 -0
  86. package/dist/chunk-UMUMFMFB.mjs.map +1 -0
  87. package/dist/chunk-VBX7BTNU.mjs +614 -0
  88. package/dist/chunk-VBX7BTNU.mjs.map +1 -0
  89. package/dist/{DialogContent.styles-WGWJS9dj.mjs → chunk-XZ47F6TP.mjs} +8 -6
  90. package/dist/chunk-XZ47F6TP.mjs.map +1 -0
  91. package/dist/collapsible/index.d.mts +43 -0
  92. package/dist/collapsible/index.d.ts +40 -4
  93. package/dist/collapsible/index.js +109 -2
  94. package/dist/collapsible/index.js.map +1 -1
  95. package/dist/collapsible/index.mjs +58 -214
  96. package/dist/collapsible/index.mjs.map +1 -1
  97. package/dist/combobox/index.d.mts +287 -0
  98. package/dist/combobox/index.d.ts +271 -19
  99. package/dist/combobox/index.js +2588 -2
  100. package/dist/combobox/index.js.map +1 -1
  101. package/dist/combobox/index.mjs +1017 -623
  102. package/dist/combobox/index.mjs.map +1 -1
  103. package/dist/dialog/index.d.mts +166 -0
  104. package/dist/dialog/index.d.ts +154 -25
  105. package/dist/dialog/index.js +1389 -2
  106. package/dist/dialog/index.js.map +1 -1
  107. package/dist/dialog/index.mjs +258 -163
  108. package/dist/dialog/index.mjs.map +1 -1
  109. package/dist/divider/index.d.mts +61 -0
  110. package/dist/divider/index.d.ts +59 -4
  111. package/dist/divider/index.js +224 -2
  112. package/dist/divider/index.js.map +1 -1
  113. package/dist/divider/index.mjs +100 -97
  114. package/dist/divider/index.mjs.map +1 -1
  115. package/dist/drawer/index.d.mts +152 -0
  116. package/dist/drawer/index.d.ts +141 -24
  117. package/dist/drawer/index.js +1400 -2
  118. package/dist/drawer/index.js.map +1 -1
  119. package/dist/drawer/index.mjs +230 -141
  120. package/dist/drawer/index.mjs.map +1 -1
  121. package/dist/dropdown/index.d.mts +233 -0
  122. package/dist/dropdown/index.d.ts +220 -16
  123. package/dist/dropdown/index.js +2051 -2
  124. package/dist/dropdown/index.js.map +1 -1
  125. package/dist/dropdown/index.mjs +584 -352
  126. package/dist/dropdown/index.mjs.map +1 -1
  127. package/dist/file-upload/index.d.mts +270 -0
  128. package/dist/file-upload/index.d.ts +262 -14
  129. package/dist/file-upload/index.js +2255 -2
  130. package/dist/file-upload/index.js.map +1 -1
  131. package/dist/file-upload/index.mjs +834 -506
  132. package/dist/file-upload/index.mjs.map +1 -1
  133. package/dist/form-field/index.d.mts +186 -0
  134. package/dist/form-field/index.d.ts +176 -21
  135. package/dist/form-field/index.js +553 -2
  136. package/dist/form-field/index.js.map +1 -1
  137. package/dist/form-field/index.mjs +349 -246
  138. package/dist/form-field/index.mjs.map +1 -1
  139. package/dist/icon/index.d.mts +28 -0
  140. package/dist/icon/index.d.ts +28 -1
  141. package/dist/icon/index.js +127 -2
  142. package/dist/icon/index.js.map +1 -1
  143. package/dist/icon/index.mjs +7 -3
  144. package/dist/icon/index.mjs.map +1 -1
  145. package/dist/icon-button/index.d.mts +16 -0
  146. package/dist/icon-button/index.d.ts +16 -1
  147. package/dist/icon-button/index.js +980 -2
  148. package/dist/icon-button/index.js.map +1 -1
  149. package/dist/icon-button/index.mjs +9 -3
  150. package/dist/icon-button/index.mjs.map +1 -1
  151. package/dist/index-Cno_GFuW.d.mts +93 -0
  152. package/dist/index-Cno_GFuW.d.ts +93 -0
  153. package/dist/input/index.d.mts +78 -0
  154. package/dist/input/index.d.ts +72 -15
  155. package/dist/input/index.js +724 -2
  156. package/dist/input/index.js.map +1 -1
  157. package/dist/input/index.mjs +12 -453
  158. package/dist/input/index.mjs.map +1 -1
  159. package/dist/input-otp/{InputOTP.d.ts → index.d.mts} +50 -3
  160. package/dist/input-otp/index.d.ts +128 -10
  161. package/dist/input-otp/index.js +668 -2
  162. package/dist/input-otp/index.js.map +1 -1
  163. package/dist/input-otp/index.mjs +463 -294
  164. package/dist/input-otp/index.mjs.map +1 -1
  165. package/dist/kbd/index.d.mts +9 -0
  166. package/dist/kbd/index.d.ts +9 -1
  167. package/dist/kbd/index.js +47 -2
  168. package/dist/kbd/index.js.map +1 -1
  169. package/dist/kbd/index.mjs +18 -15
  170. package/dist/kbd/index.mjs.map +1 -1
  171. package/dist/label/index.d.mts +11 -0
  172. package/dist/label/index.d.ts +9 -5
  173. package/dist/label/index.js +78 -2
  174. package/dist/label/index.js.map +1 -1
  175. package/dist/label/index.mjs +5 -3
  176. package/dist/label/index.mjs.map +1 -1
  177. package/dist/link-box/index.d.mts +34 -0
  178. package/dist/link-box/index.d.ts +31 -6
  179. package/dist/link-box/index.js +92 -2
  180. package/dist/link-box/index.js.map +1 -1
  181. package/dist/link-box/index.mjs +56 -34
  182. package/dist/link-box/index.mjs.map +1 -1
  183. package/dist/pagination/index.d.mts +143 -0
  184. package/dist/pagination/index.d.ts +135 -10
  185. package/dist/pagination/index.js +1353 -2
  186. package/dist/pagination/index.js.map +1 -1
  187. package/dist/pagination/index.mjs +268 -833
  188. package/dist/pagination/index.mjs.map +1 -1
  189. package/dist/popover/index.d.mts +6 -0
  190. package/dist/popover/index.d.ts +6 -17
  191. package/dist/popover/index.js +1339 -2
  192. package/dist/popover/index.js.map +1 -1
  193. package/dist/popover/index.mjs +11 -1868
  194. package/dist/popover/index.mjs.map +1 -1
  195. package/dist/portal/{Portal.d.ts → index.d.mts} +5 -2
  196. package/dist/portal/index.d.ts +13 -1
  197. package/dist/portal/index.js +37 -2
  198. package/dist/portal/index.js.map +1 -1
  199. package/dist/portal/index.mjs +8 -5
  200. package/dist/portal/index.mjs.map +1 -1
  201. package/dist/progress/index.d.mts +52 -0
  202. package/dist/progress/index.d.ts +48 -9
  203. package/dist/progress/index.js +239 -6
  204. package/dist/progress/index.js.map +1 -1
  205. package/dist/progress/index.mjs +5 -241
  206. package/dist/progress/index.mjs.map +1 -1
  207. package/dist/progress-tracker/index.d.mts +80 -0
  208. package/dist/progress-tracker/index.d.ts +80 -10
  209. package/dist/progress-tracker/index.js +571 -2
  210. package/dist/progress-tracker/index.js.map +1 -1
  211. package/dist/progress-tracker/index.mjs +183 -115
  212. package/dist/progress-tracker/index.mjs.map +1 -1
  213. package/dist/radio-group/index.d.mts +100 -0
  214. package/dist/radio-group/index.d.ts +98 -5
  215. package/dist/radio-group/index.js +318 -2
  216. package/dist/radio-group/index.js.map +1 -1
  217. package/dist/radio-group/index.mjs +174 -332
  218. package/dist/radio-group/index.mjs.map +1 -1
  219. package/dist/rating/index.d.mts +78 -0
  220. package/dist/rating/index.d.ts +78 -1
  221. package/dist/rating/index.js +363 -2
  222. package/dist/rating/index.js.map +1 -1
  223. package/dist/rating/index.mjs +170 -125
  224. package/dist/rating/index.mjs.map +1 -1
  225. package/dist/scrolling-list/index.d.mts +118 -0
  226. package/dist/scrolling-list/index.d.ts +117 -14
  227. package/dist/scrolling-list/index.js +1428 -2
  228. package/dist/scrolling-list/index.js.map +1 -1
  229. package/dist/scrolling-list/index.mjs +325 -358
  230. package/dist/scrolling-list/index.mjs.map +1 -1
  231. package/dist/segmented-gauge/{SegmentedGauge.d.ts → index.d.mts} +43 -4
  232. package/dist/segmented-gauge/index.d.ts +101 -9
  233. package/dist/segmented-gauge/index.js +274 -2
  234. package/dist/segmented-gauge/index.js.map +1 -1
  235. package/dist/segmented-gauge/index.mjs +178 -132
  236. package/dist/segmented-gauge/index.mjs.map +1 -1
  237. package/dist/select/index.d.mts +167 -0
  238. package/dist/select/index.d.ts +158 -12
  239. package/dist/select/index.js +581 -2
  240. package/dist/select/index.js.map +1 -1
  241. package/dist/select/index.mjs +339 -207
  242. package/dist/select/index.mjs.map +1 -1
  243. package/dist/skeleton/index.d.mts +67 -0
  244. package/dist/skeleton/index.d.ts +67 -8
  245. package/dist/skeleton/index.js +206 -2
  246. package/dist/skeleton/index.js.map +1 -1
  247. package/dist/skeleton/index.mjs +96 -64
  248. package/dist/skeleton/index.mjs.map +1 -1
  249. package/dist/slider/index.d.mts +97 -0
  250. package/dist/slider/index.d.ts +97 -8
  251. package/dist/slider/index.js +220 -2
  252. package/dist/slider/index.js.map +1 -1
  253. package/dist/slider/index.mjs +107 -490
  254. package/dist/slider/index.mjs.map +1 -1
  255. package/dist/slot/index.d.mts +16 -0
  256. package/dist/slot/index.d.ts +16 -1
  257. package/dist/slot/index.js +51 -2
  258. package/dist/slot/index.js.map +1 -1
  259. package/dist/slot/index.mjs +9 -5
  260. package/dist/slot/index.mjs.map +1 -1
  261. package/dist/snackbar/index.d.mts +158 -0
  262. package/dist/snackbar/index.d.ts +158 -13
  263. package/dist/snackbar/index.js +1756 -2
  264. package/dist/snackbar/index.js.map +1 -1
  265. package/dist/snackbar/index.mjs +429 -1153
  266. package/dist/snackbar/index.mjs.map +1 -1
  267. package/dist/spinner/index.d.mts +21 -0
  268. package/dist/spinner/index.d.ts +21 -1
  269. package/dist/spinner/index.js +139 -2
  270. package/dist/spinner/index.js.map +1 -1
  271. package/dist/spinner/index.mjs +7 -3
  272. package/dist/spinner/index.mjs.map +1 -1
  273. package/dist/stepper/index.d.mts +81 -0
  274. package/dist/stepper/index.d.ts +81 -9
  275. package/dist/stepper/index.js +1847 -8
  276. package/dist/stepper/index.js.map +1 -1
  277. package/dist/stepper/index.mjs +197 -2325
  278. package/dist/stepper/index.mjs.map +1 -1
  279. package/dist/switch/{SwitchInput.d.ts → index.d.mts} +17 -4
  280. package/dist/switch/index.d.ts +64 -1
  281. package/dist/switch/index.js +327 -2
  282. package/dist/switch/index.js.map +1 -1
  283. package/dist/switch/index.mjs +130 -213
  284. package/dist/switch/index.mjs.map +1 -1
  285. package/dist/tabs/index.d.mts +137 -0
  286. package/dist/tabs/index.d.ts +137 -13
  287. package/dist/tabs/index.js +1830 -2
  288. package/dist/tabs/index.js.map +1 -1
  289. package/dist/tabs/index.mjs +350 -374
  290. package/dist/tabs/index.mjs.map +1 -1
  291. package/dist/tag/index.d.mts +29 -0
  292. package/dist/tag/index.d.ts +29 -1
  293. package/dist/tag/index.js +283 -2
  294. package/dist/tag/index.js.map +1 -1
  295. package/dist/tag/index.mjs +90 -66
  296. package/dist/tag/index.mjs.map +1 -1
  297. package/dist/text-link/index.d.mts +20 -0
  298. package/dist/text-link/index.d.ts +20 -1
  299. package/dist/text-link/index.js +100 -2
  300. package/dist/text-link/index.js.map +1 -1
  301. package/dist/text-link/index.mjs +6 -3
  302. package/dist/text-link/index.mjs.map +1 -1
  303. package/dist/textarea/index.d.mts +57 -0
  304. package/dist/textarea/index.d.ts +53 -10
  305. package/dist/textarea/index.js +797 -2
  306. package/dist/textarea/index.js.map +1 -1
  307. package/dist/textarea/index.mjs +83 -50
  308. package/dist/textarea/index.mjs.map +1 -1
  309. package/dist/toast/index.d.mts +63 -0
  310. package/dist/toast/index.d.ts +53 -10
  311. package/dist/toast/index.js +1454 -2
  312. package/dist/toast/index.js.map +1 -1
  313. package/dist/toast/index.mjs +208 -1016
  314. package/dist/toast/index.mjs.map +1 -1
  315. package/dist/visually-hidden/index.d.mts +16 -0
  316. package/dist/visually-hidden/index.d.ts +16 -1
  317. package/dist/visually-hidden/index.js +67 -2
  318. package/dist/visually-hidden/index.js.map +1 -1
  319. package/dist/visually-hidden/index.mjs +6 -3
  320. package/dist/visually-hidden/index.mjs.map +1 -1
  321. package/package.json +6 -5
  322. package/dist/Button-C3xHNaGl.js +0 -2
  323. package/dist/Button-C3xHNaGl.js.map +0 -1
  324. package/dist/Button-D32Avk2j.mjs.map +0 -1
  325. package/dist/DialogContent.styles-BrhKaHc_.js +0 -2
  326. package/dist/DialogContent.styles-BrhKaHc_.js.map +0 -1
  327. package/dist/DialogContent.styles-WGWJS9dj.mjs.map +0 -1
  328. package/dist/Icon-Bf0XrmiR.js +0 -2
  329. package/dist/Icon-Bf0XrmiR.js.map +0 -1
  330. package/dist/Icon-D1RueiPY.mjs +0 -58
  331. package/dist/Icon-D1RueiPY.mjs.map +0 -1
  332. package/dist/IconButton-BY3gYXtU.mjs +0 -43
  333. package/dist/IconButton-BY3gYXtU.mjs.map +0 -1
  334. package/dist/IconButton-Bf-EDzpI.js +0 -2
  335. package/dist/IconButton-Bf-EDzpI.js.map +0 -1
  336. package/dist/Slot-C98rL4yy.mjs +0 -14
  337. package/dist/Slot-C98rL4yy.mjs.map +0 -1
  338. package/dist/Slot-ghrohQLA.js +0 -2
  339. package/dist/Slot-ghrohQLA.js.map +0 -1
  340. package/dist/Spinner-CYL5kyzM.mjs.map +0 -1
  341. package/dist/Spinner-DK8VEsaR.js +0 -2
  342. package/dist/Spinner-DK8VEsaR.js.map +0 -1
  343. package/dist/TextLink-3MEVs3No.mjs.map +0 -1
  344. package/dist/TextLink-DD0VO37q.js +0 -2
  345. package/dist/TextLink-DD0VO37q.js.map +0 -1
  346. package/dist/VisuallyHidden-AoRh4WRK.js +0 -2
  347. package/dist/VisuallyHidden-AoRh4WRK.js.map +0 -1
  348. package/dist/VisuallyHidden-ByNP7ZUI.mjs +0 -28
  349. package/dist/VisuallyHidden-ByNP7ZUI.mjs.map +0 -1
  350. package/dist/accordion/Accordion.d.ts +0 -27
  351. package/dist/accordion/AccordionItem.d.ts +0 -12
  352. package/dist/accordion/AccordionItemContent.d.ts +0 -12
  353. package/dist/accordion/AccordionItemHeader.d.ts +0 -9
  354. package/dist/accordion/AccordionItemTrigger.d.ts +0 -12
  355. package/dist/accordion/useRenderSlot.d.ts +0 -3
  356. package/dist/alert-dialog/AlertDialog.d.ts +0 -29
  357. package/dist/alert-dialog/AlertDialogAction.d.ts +0 -13
  358. package/dist/alert-dialog/AlertDialogBody.d.ts +0 -12
  359. package/dist/alert-dialog/AlertDialogCancel.d.ts +0 -13
  360. package/dist/alert-dialog/AlertDialogContent.d.ts +0 -9
  361. package/dist/alert-dialog/AlertDialogContext.d.ts +0 -12
  362. package/dist/alert-dialog/AlertDialogDescription.d.ts +0 -9
  363. package/dist/alert-dialog/AlertDialogFooter.d.ts +0 -10
  364. package/dist/alert-dialog/AlertDialogHeader.d.ts +0 -10
  365. package/dist/alert-dialog/AlertDialogOverlay.d.ts +0 -9
  366. package/dist/alert-dialog/AlertDialogPortal.d.ts +0 -7
  367. package/dist/alert-dialog/AlertDialogTitle.d.ts +0 -9
  368. package/dist/alert-dialog/AlertDialogTrigger.d.ts +0 -13
  369. package/dist/alert-dialog/useRenderSlot.d.ts +0 -3
  370. package/dist/avatar/Avatar.d.ts +0 -3
  371. package/dist/avatar/AvatarAction.d.ts +0 -9
  372. package/dist/avatar/AvatarImage.d.ts +0 -7
  373. package/dist/avatar/AvatarOnlineBadge.d.ts +0 -9
  374. package/dist/avatar/AvatarPlaceholder.d.ts +0 -8
  375. package/dist/avatar/AvatarUser.d.ts +0 -7
  376. package/dist/avatar/context.d.ts +0 -5
  377. package/dist/avatar/types.d.ts +0 -24
  378. package/dist/badge/Badge.d.ts +0 -9
  379. package/dist/badge/BadgeItem.d.ts +0 -31
  380. package/dist/badge/BadgeItem.styles.d.ts +0 -7
  381. package/dist/breadcrumb/Breadcrumb.d.ts +0 -10
  382. package/dist/breadcrumb/Breadcrumb.styles.d.ts +0 -0
  383. package/dist/breadcrumb/BreadcrumbCurrentPage.d.ts +0 -11
  384. package/dist/breadcrumb/BreadcrumbItem.d.ts +0 -9
  385. package/dist/breadcrumb/BreadcrumbLink.d.ts +0 -12
  386. package/dist/breadcrumb/BreadcrumbSeparator.d.ts +0 -10
  387. package/dist/button/Button.d.ts +0 -26
  388. package/dist/button/Button.styles.d.ts +0 -10
  389. package/dist/button/variants/contrast.d.ts +0 -45
  390. package/dist/button/variants/filled.d.ts +0 -45
  391. package/dist/button/variants/ghost.d.ts +0 -45
  392. package/dist/button/variants/index.d.ts +0 -5
  393. package/dist/button/variants/outlined.d.ts +0 -45
  394. package/dist/button/variants/tinted.d.ts +0 -45
  395. package/dist/card/Backdrop.d.ts +0 -14
  396. package/dist/card/Card.d.ts +0 -16
  397. package/dist/card/Card.styles.d.ts +0 -7
  398. package/dist/card/Content.d.ts +0 -15
  399. package/dist/card/Content.styles.d.ts +0 -8
  400. package/dist/card/context.d.ts +0 -11
  401. package/dist/card/utils.d.ts +0 -3
  402. package/dist/carousel/Carousel.d.ts +0 -12
  403. package/dist/carousel/CarouselControls.d.ts +0 -9
  404. package/dist/carousel/CarouselNextButton.d.ts +0 -5
  405. package/dist/carousel/CarouselPageIndicator.d.ts +0 -14
  406. package/dist/carousel/CarouselPagePicker.d.ts +0 -14
  407. package/dist/carousel/CarouselPrevButton.d.ts +0 -5
  408. package/dist/carousel/CarouselSlide.d.ts +0 -12
  409. package/dist/carousel/CarouselSlides.d.ts +0 -10
  410. package/dist/carousel/CarouselViewport.d.ts +0 -9
  411. package/dist/carousel/useCarousel.d.ts +0 -2
  412. package/dist/carousel/useCarouselVisibility.d.ts +0 -13
  413. package/dist/carousel/useEvent.d.ts +0 -7
  414. package/dist/carousel/useIsMounted.d.ts +0 -1
  415. package/dist/carousel/useIsVisible.d.ts +0 -6
  416. package/dist/carousel/useResizeObserver.d.ts +0 -2
  417. package/dist/carousel/useScrollEnd.d.ts +0 -3
  418. package/dist/carousel/useSnapPoints.d.ts +0 -10
  419. package/dist/carousel/utils.d.ts +0 -24
  420. package/dist/checkbox/Checkbox.d.ts +0 -10
  421. package/dist/checkbox/CheckboxGroup.d.ts +0 -18
  422. package/dist/checkbox/CheckboxGroup.styles.d.ts +0 -5
  423. package/dist/checkbox/CheckboxGroupContext.d.ts +0 -41
  424. package/dist/checkbox/CheckboxIndicator.d.ts +0 -9
  425. package/dist/checkbox/CheckboxInput.d.ts +0 -47
  426. package/dist/checkbox/CheckboxInput.styles.d.ts +0 -5
  427. package/dist/checkbox/CheckboxLabel.d.ts +0 -12
  428. package/dist/checkbox/CheckboxLabel.styles.d.ts +0 -5
  429. package/dist/chip/Chip.d.ts +0 -34
  430. package/dist/chip/Chip.styles.d.ts +0 -8
  431. package/dist/chip/ChipClearButton.d.ts +0 -10
  432. package/dist/chip/ChipClearButton.styles.d.ts +0 -10
  433. package/dist/chip/ChipContent.d.ts +0 -8
  434. package/dist/chip/ChipIcon.d.ts +0 -8
  435. package/dist/chip/ChipLeadingIcon.d.ts +0 -9
  436. package/dist/chip/ChipTrailingIcon.d.ts +0 -9
  437. package/dist/chip/useChipContext.d.ts +0 -4
  438. package/dist/chip/useChipElement.d.ts +0 -41
  439. package/dist/chip/variants/dashed.d.ts +0 -49
  440. package/dist/chip/variants/index.d.ts +0 -3
  441. package/dist/chip/variants/outlined.d.ts +0 -49
  442. package/dist/chip/variants/tinted.d.ts +0 -49
  443. package/dist/collapsible/Content.d.ts +0 -12
  444. package/dist/collapsible/Root.d.ts +0 -12
  445. package/dist/collapsible/Trigger.d.ts +0 -11
  446. package/dist/collapsible/useRenderSlot.d.ts +0 -3
  447. package/dist/combobox/Combobox.d.ts +0 -6
  448. package/dist/combobox/ComboboxClearButton.d.ts +0 -9
  449. package/dist/combobox/ComboboxContext.d.ts +0 -108
  450. package/dist/combobox/ComboboxDisclosure.d.ts +0 -13
  451. package/dist/combobox/ComboboxEmpty.d.ts +0 -11
  452. package/dist/combobox/ComboboxGroup.d.ts +0 -11
  453. package/dist/combobox/ComboboxInput.d.ts +0 -15
  454. package/dist/combobox/ComboboxItem.d.ts +0 -12
  455. package/dist/combobox/ComboboxItemContext.d.ts +0 -17
  456. package/dist/combobox/ComboboxItemIndicator.d.ts +0 -11
  457. package/dist/combobox/ComboboxItemText.d.ts +0 -10
  458. package/dist/combobox/ComboboxItems.d.ts +0 -11
  459. package/dist/combobox/ComboboxItemsGroupContext.d.ts +0 -8
  460. package/dist/combobox/ComboboxLabel.d.ts +0 -11
  461. package/dist/combobox/ComboboxLeadingIcon.d.ts +0 -7
  462. package/dist/combobox/ComboboxPopover.d.ts +0 -10
  463. package/dist/combobox/ComboboxPortal.d.ts +0 -2
  464. package/dist/combobox/ComboboxSelectedItems.d.ts +0 -4
  465. package/dist/combobox/ComboboxTrigger.d.ts +0 -11
  466. package/dist/combobox/ComboboxTrigger.styles.d.ts +0 -6
  467. package/dist/combobox/tests/test-utils.d.ts +0 -8
  468. package/dist/combobox/types.d.ts +0 -8
  469. package/dist/combobox/useCombobox/multipleSelectionReducer.d.ts +0 -13
  470. package/dist/combobox/useCombobox/singleSelectionReducer.d.ts +0 -8
  471. package/dist/combobox/utils/index.d.ts +0 -14
  472. package/dist/combobox/utils/useWidthIncreaseCallback.d.ts +0 -2
  473. package/dist/composite-Br3kM5N9.mjs +0 -40
  474. package/dist/composite-Br3kM5N9.mjs.map +0 -1
  475. package/dist/composite-fJD9R7R0.js +0 -2
  476. package/dist/composite-fJD9R7R0.js.map +0 -1
  477. package/dist/detectBrowser-Bc7rk5fI.mjs +0 -44
  478. package/dist/detectBrowser-Bc7rk5fI.mjs.map +0 -1
  479. package/dist/detectBrowser-DTbs_30X.js +0 -2
  480. package/dist/detectBrowser-DTbs_30X.js.map +0 -1
  481. package/dist/dialog/Dialog.d.ts +0 -32
  482. package/dist/dialog/DialogBody.d.ts +0 -12
  483. package/dist/dialog/DialogClose.d.ts +0 -9
  484. package/dist/dialog/DialogCloseButton.d.ts +0 -9
  485. package/dist/dialog/DialogContent.d.ts +0 -14
  486. package/dist/dialog/DialogContent.styles.d.ts +0 -6
  487. package/dist/dialog/DialogContext.d.ts +0 -11
  488. package/dist/dialog/DialogDescription.d.ts +0 -9
  489. package/dist/dialog/DialogFooter.d.ts +0 -10
  490. package/dist/dialog/DialogHeader.d.ts +0 -10
  491. package/dist/dialog/DialogOverlay.d.ts +0 -9
  492. package/dist/dialog/DialogPortal.d.ts +0 -7
  493. package/dist/dialog/DialogTitle.d.ts +0 -9
  494. package/dist/dialog/DialogTrigger.d.ts +0 -17
  495. package/dist/divider/Divider.d.ts +0 -30
  496. package/dist/divider/Divider.styles.d.ts +0 -9
  497. package/dist/divider/DividerContent.d.ts +0 -13
  498. package/dist/divider/variants/intents.d.ts +0 -17
  499. package/dist/downshift.esm-Ncwetv0s.mjs +0 -3038
  500. package/dist/downshift.esm-Ncwetv0s.mjs.map +0 -1
  501. package/dist/downshift.esm-PfCOUbxq.js +0 -37
  502. package/dist/downshift.esm-PfCOUbxq.js.map +0 -1
  503. package/dist/drawer/Drawer.d.ts +0 -39
  504. package/dist/drawer/DrawerBody.d.ts +0 -11
  505. package/dist/drawer/DrawerBody.styles.d.ts +0 -5
  506. package/dist/drawer/DrawerClose.d.ts +0 -9
  507. package/dist/drawer/DrawerCloseButton.d.ts +0 -7
  508. package/dist/drawer/DrawerContent.d.ts +0 -10
  509. package/dist/drawer/DrawerContent.styles.d.ts +0 -6
  510. package/dist/drawer/DrawerContext.d.ts +0 -9
  511. package/dist/drawer/DrawerDescription.d.ts +0 -9
  512. package/dist/drawer/DrawerFooter.d.ts +0 -8
  513. package/dist/drawer/DrawerHeader.d.ts +0 -10
  514. package/dist/drawer/DrawerOverlay.d.ts +0 -9
  515. package/dist/drawer/DrawerPortal.d.ts +0 -7
  516. package/dist/drawer/DrawerTitle.d.ts +0 -9
  517. package/dist/drawer/DrawerTrigger.d.ts +0 -13
  518. package/dist/dropdown/Dropdown.d.ts +0 -6
  519. package/dist/dropdown/DropdownContext.d.ts +0 -81
  520. package/dist/dropdown/DropdownDivider.d.ts +0 -10
  521. package/dist/dropdown/DropdownGroup.d.ts +0 -11
  522. package/dist/dropdown/DropdownItem.d.ts +0 -12
  523. package/dist/dropdown/DropdownItemContext.d.ts +0 -17
  524. package/dist/dropdown/DropdownItemIndicator.d.ts +0 -11
  525. package/dist/dropdown/DropdownItemText.d.ts +0 -9
  526. package/dist/dropdown/DropdownItems.d.ts +0 -21
  527. package/dist/dropdown/DropdownItemsGroupContext.d.ts +0 -8
  528. package/dist/dropdown/DropdownLabel.d.ts +0 -11
  529. package/dist/dropdown/DropdownLeadingIcon.d.ts +0 -7
  530. package/dist/dropdown/DropdownPopover.d.ts +0 -6
  531. package/dist/dropdown/DropdownPortal.d.ts +0 -2
  532. package/dist/dropdown/DropdownTrigger.d.ts +0 -12
  533. package/dist/dropdown/DropdownTrigger.styles.d.ts +0 -5
  534. package/dist/dropdown/DropdownValue.d.ts +0 -11
  535. package/dist/dropdown/types.d.ts +0 -8
  536. package/dist/dropdown/useDropdown.d.ts +0 -41
  537. package/dist/dropdown/utils.d.ts +0 -13
  538. package/dist/file-upload/FileUpload.d.ts +0 -130
  539. package/dist/file-upload/FileUploadAcceptedFile.d.ts +0 -25
  540. package/dist/file-upload/FileUploadContext.d.ts +0 -17
  541. package/dist/file-upload/FileUploadDropzone.d.ts +0 -10
  542. package/dist/file-upload/FileUploadItemDeleteTrigger.d.ts +0 -11
  543. package/dist/file-upload/FileUploadPreviewImage.d.ts +0 -17
  544. package/dist/file-upload/FileUploadRejectedFile.d.ts +0 -24
  545. package/dist/file-upload/FileUploadRejectedFileDeleteTrigger.d.ts +0 -12
  546. package/dist/file-upload/FileUploadTrigger.d.ts +0 -12
  547. package/dist/file-upload/constants.d.ts +0 -29
  548. package/dist/file-upload/test-utils.d.ts +0 -9
  549. package/dist/file-upload/useFileUploadState.d.ts +0 -88
  550. package/dist/file-upload/utils.d.ts +0 -40
  551. package/dist/floating-ui.utils.dom-CCN4I08l.js +0 -2
  552. package/dist/floating-ui.utils.dom-CCN4I08l.js.map +0 -1
  553. package/dist/floating-ui.utils.dom-uiDUZc_y.mjs +0 -136
  554. package/dist/floating-ui.utils.dom-uiDUZc_y.mjs.map +0 -1
  555. package/dist/form-field/FormField.d.ts +0 -21
  556. package/dist/form-field/FormFieldAlertMessage.d.ts +0 -9
  557. package/dist/form-field/FormFieldCharactersCount.d.ts +0 -26
  558. package/dist/form-field/FormFieldContext.d.ts +0 -49
  559. package/dist/form-field/FormFieldControl.d.ts +0 -12
  560. package/dist/form-field/FormFieldErrorMessage.d.ts +0 -9
  561. package/dist/form-field/FormFieldHelperMessage.d.ts +0 -9
  562. package/dist/form-field/FormFieldLabel.d.ts +0 -13
  563. package/dist/form-field/FormFieldMessage.d.ts +0 -8
  564. package/dist/form-field/FormFieldProvider.d.ts +0 -9
  565. package/dist/form-field/FormFieldRequiredIndicator.d.ts +0 -9
  566. package/dist/form-field/FormFieldStateMessage.d.ts +0 -10
  567. package/dist/form-field/FormFieldSuccessMessage.d.ts +0 -9
  568. package/dist/icon/Icon.d.ts +0 -17
  569. package/dist/icon/Icon.styles.d.ts +0 -6
  570. package/dist/icon-button/IconButton.d.ts +0 -10
  571. package/dist/icon-button/IconButton.styles.d.ts +0 -5
  572. package/dist/index-0KYGKeVg.js +0 -2
  573. package/dist/index-0KYGKeVg.js.map +0 -1
  574. package/dist/index-1WIgmEZh.js +0 -2
  575. package/dist/index-1WIgmEZh.js.map +0 -1
  576. package/dist/index-BRi38DTc.mjs +0 -21
  577. package/dist/index-BRi38DTc.mjs.map +0 -1
  578. package/dist/index-BZAtNKwE.mjs +0 -71
  579. package/dist/index-BZAtNKwE.mjs.map +0 -1
  580. package/dist/index-BZPx6jYI.mjs +0 -9
  581. package/dist/index-BZPx6jYI.mjs.map +0 -1
  582. package/dist/index-BlkdpEIe.mjs +0 -55
  583. package/dist/index-BlkdpEIe.mjs.map +0 -1
  584. package/dist/index-BmAFn37q.mjs +0 -49
  585. package/dist/index-BmAFn37q.mjs.map +0 -1
  586. package/dist/index-C-J_tHdS.js +0 -6
  587. package/dist/index-C-J_tHdS.js.map +0 -1
  588. package/dist/index-C1qb0595.mjs +0 -28
  589. package/dist/index-C1qb0595.mjs.map +0 -1
  590. package/dist/index-C34GgsKQ.mjs +0 -54
  591. package/dist/index-C34GgsKQ.mjs.map +0 -1
  592. package/dist/index-CCKe-Mpx.mjs +0 -7
  593. package/dist/index-CCKe-Mpx.mjs.map +0 -1
  594. package/dist/index-CDBBjNXc.js +0 -2
  595. package/dist/index-CDBBjNXc.js.map +0 -1
  596. package/dist/index-CYjGhVvU.mjs +0 -243
  597. package/dist/index-CYjGhVvU.mjs.map +0 -1
  598. package/dist/index-ChLwd62c.js +0 -2
  599. package/dist/index-ChLwd62c.js.map +0 -1
  600. package/dist/index-Cjj_rUPu.js +0 -2
  601. package/dist/index-Cjj_rUPu.js.map +0 -1
  602. package/dist/index-CyMbLkj0.js +0 -2
  603. package/dist/index-CyMbLkj0.js.map +0 -1
  604. package/dist/index-DFZozV_h.mjs +0 -69
  605. package/dist/index-DFZozV_h.mjs.map +0 -1
  606. package/dist/index-DKuHkHFX.js +0 -2
  607. package/dist/index-DKuHkHFX.js.map +0 -1
  608. package/dist/index-DLHLIYPI.mjs +0 -16
  609. package/dist/index-DLHLIYPI.mjs.map +0 -1
  610. package/dist/index-DO-atGp-.js +0 -2
  611. package/dist/index-DO-atGp-.js.map +0 -1
  612. package/dist/index-DWlg8lkk.mjs +0 -179
  613. package/dist/index-DWlg8lkk.mjs.map +0 -1
  614. package/dist/index-DYxWvftI.js +0 -2
  615. package/dist/index-DYxWvftI.js.map +0 -1
  616. package/dist/index-D_lWkK39.mjs +0 -803
  617. package/dist/index-D_lWkK39.mjs.map +0 -1
  618. package/dist/index-DdkVj7D0.js +0 -18
  619. package/dist/index-DdkVj7D0.js.map +0 -1
  620. package/dist/index-De-6atSi.js +0 -2
  621. package/dist/index-De-6atSi.js.map +0 -1
  622. package/dist/index-DhGWNzsz.mjs +0 -83
  623. package/dist/index-DhGWNzsz.mjs.map +0 -1
  624. package/dist/index-Dkj4QRX8.js +0 -2
  625. package/dist/index-Dkj4QRX8.js.map +0 -1
  626. package/dist/index-DlIFg0Eu.mjs +0 -60
  627. package/dist/index-DlIFg0Eu.mjs.map +0 -1
  628. package/dist/index-DnaHaH_0.js +0 -2
  629. package/dist/index-DnaHaH_0.js.map +0 -1
  630. package/dist/index-MHF2-CYX.js +0 -2
  631. package/dist/index-MHF2-CYX.js.map +0 -1
  632. package/dist/index-MQ0c3ZX_.js +0 -2
  633. package/dist/index-MQ0c3ZX_.js.map +0 -1
  634. package/dist/index-MSR-vgWR.mjs +0 -37
  635. package/dist/index-MSR-vgWR.mjs.map +0 -1
  636. package/dist/index-VL0YEmOW.mjs +0 -125
  637. package/dist/index-VL0YEmOW.mjs.map +0 -1
  638. package/dist/index-tXqxYME3.js +0 -42
  639. package/dist/index-tXqxYME3.js.map +0 -1
  640. package/dist/inertValue-Bif5Sqs6.mjs +0 -522
  641. package/dist/inertValue-Bif5Sqs6.mjs.map +0 -1
  642. package/dist/inertValue-ShwihJSN.js +0 -5
  643. package/dist/inertValue-ShwihJSN.js.map +0 -1
  644. package/dist/input/Input.d.ts +0 -14
  645. package/dist/input/Input.styles.d.ts +0 -11
  646. package/dist/input/InputAddon.d.ts +0 -9
  647. package/dist/input/InputAddon.styles.d.ts +0 -9
  648. package/dist/input/InputClearButton.d.ts +0 -12
  649. package/dist/input/InputGroup.d.ts +0 -17
  650. package/dist/input/InputGroup.styles.d.ts +0 -6
  651. package/dist/input/InputGroupContext.d.ts +0 -14
  652. package/dist/input/InputIcon.d.ts +0 -6
  653. package/dist/input/InputLeadingAddon.d.ts +0 -11
  654. package/dist/input/InputLeadingIcon.d.ts +0 -7
  655. package/dist/input/InputTrailingAddon.d.ts +0 -11
  656. package/dist/input/InputTrailingIcon.d.ts +0 -7
  657. package/dist/input-otp/InputOTP.styles.d.ts +0 -10
  658. package/dist/input-otp/InputOTPContext.d.ts +0 -16
  659. package/dist/input-otp/InputOTPGroup.d.ts +0 -7
  660. package/dist/input-otp/InputOTPSeparator.d.ts +0 -7
  661. package/dist/input-otp/InputOTPSlot.d.ts +0 -12
  662. package/dist/input-otp/useInputOTP.d.ts +0 -45
  663. package/dist/kbd/Kbd.d.ts +0 -5
  664. package/dist/label/Label.d.ts +0 -9
  665. package/dist/label/LabelRequiredIndicator.d.ts +0 -6
  666. package/dist/link-box/LinkBox.d.ts +0 -8
  667. package/dist/link-box/LinkBoxLink.d.ts +0 -8
  668. package/dist/link-box/LinkBoxRaised.d.ts +0 -9
  669. package/dist/pagination/Pagination.d.ts +0 -8
  670. package/dist/pagination/PaginationContext.d.ts +0 -43
  671. package/dist/pagination/PaginationEllipsis.d.ts +0 -9
  672. package/dist/pagination/PaginationFirstPageTrigger.d.ts +0 -16
  673. package/dist/pagination/PaginationItem.d.ts +0 -17
  674. package/dist/pagination/PaginationLastPageTrigger.d.ts +0 -16
  675. package/dist/pagination/PaginationNextTrigger.d.ts +0 -16
  676. package/dist/pagination/PaginationPages.d.ts +0 -16
  677. package/dist/pagination/PaginationPrevTrigger.d.ts +0 -16
  678. package/dist/pagination/utils.d.ts +0 -1
  679. package/dist/popover/Popover.d.ts +0 -9
  680. package/dist/popover/PopoverAnchor.d.ts +0 -9
  681. package/dist/popover/PopoverArrow.d.ts +0 -9
  682. package/dist/popover/PopoverCloseButton.d.ts +0 -10
  683. package/dist/popover/PopoverContent.d.ts +0 -10
  684. package/dist/popover/PopoverContent.styles.d.ts +0 -9
  685. package/dist/popover/PopoverContext.d.ts +0 -15
  686. package/dist/popover/PopoverHeader.d.ts +0 -10
  687. package/dist/popover/PopoverPortal.d.ts +0 -7
  688. package/dist/popover/PopoverTrigger.d.ts +0 -9
  689. package/dist/progress/Progress.d.ts +0 -16
  690. package/dist/progress/ProgressBar.d.ts +0 -6
  691. package/dist/progress/ProgressBar.styles.d.ts +0 -5
  692. package/dist/progress/ProgressContext.d.ts +0 -13
  693. package/dist/progress/ProgressIndicator.d.ts +0 -6
  694. package/dist/progress/ProgressIndicator.styles.d.ts +0 -7
  695. package/dist/progress/ProgressLabel.d.ts +0 -6
  696. package/dist/progress-tracker/ProgressTracker.d.ts +0 -27
  697. package/dist/progress-tracker/ProgressTracker.styles.d.ts +0 -1
  698. package/dist/progress-tracker/ProgressTrackerContext.d.ts +0 -15
  699. package/dist/progress-tracker/ProgressTrackerStep.d.ts +0 -12
  700. package/dist/progress-tracker/ProgressTrackerStep.styles.d.ts +0 -10
  701. package/dist/progress-tracker/ProgressTrackerStepIndicator.d.ts +0 -15
  702. package/dist/progress-tracker/ProgressTrackerStepIndicator.styles.d.ts +0 -7
  703. package/dist/progress-tracker/ProgressTrackerStepLabel.d.ts +0 -9
  704. package/dist/radio-group/Radio.d.ts +0 -9
  705. package/dist/radio-group/RadioGroup.d.ts +0 -54
  706. package/dist/radio-group/RadioGroup.styles.d.ts +0 -5
  707. package/dist/radio-group/RadioGroupContext.d.ts +0 -5
  708. package/dist/radio-group/RadioGroupProvider.d.ts +0 -7
  709. package/dist/radio-group/RadioIndicator.d.ts +0 -18
  710. package/dist/radio-group/RadioIndicator.styles.d.ts +0 -5
  711. package/dist/radio-group/RadioInput.d.ts +0 -25
  712. package/dist/radio-group/RadioInput.styles.d.ts +0 -5
  713. package/dist/radio-group/RadioLabel.d.ts +0 -20
  714. package/dist/radio-group/RadioLabel.styles.d.ts +0 -5
  715. package/dist/rating/Rating.d.ts +0 -52
  716. package/dist/rating/RatingStar.d.ts +0 -10
  717. package/dist/rating/RatingStar.styles.d.ts +0 -14
  718. package/dist/rating/types.d.ts +0 -1
  719. package/dist/rating/utils.d.ts +0 -8
  720. package/dist/scrolling-list/ScrollingList.d.ts +0 -57
  721. package/dist/scrolling-list/ScrollingListControls.d.ts +0 -18
  722. package/dist/scrolling-list/ScrollingListItem.d.ts +0 -17
  723. package/dist/scrolling-list/ScrollingListItems.d.ts +0 -11
  724. package/dist/scrolling-list/ScrollingListNextButton.d.ts +0 -5
  725. package/dist/scrolling-list/ScrollingListPrevButton.d.ts +0 -5
  726. package/dist/scrolling-list/ScrollingListSkipButton.d.ts +0 -9
  727. package/dist/scrolling-list/useFocusWithinScroll.d.ts +0 -3
  728. package/dist/segmented-gauge/SegmentedGaugeContext.d.ts +0 -14
  729. package/dist/segmented-gauge/SegmentedGaugeLabel.d.ts +0 -9
  730. package/dist/segmented-gauge/SegmentedGaugeSegment.d.ts +0 -12
  731. package/dist/segmented-gauge/SegmentedGaugeTrack.d.ts +0 -8
  732. package/dist/select/Select.d.ts +0 -6
  733. package/dist/select/SelectContext.d.ts +0 -59
  734. package/dist/select/SelectGroup.d.ts +0 -11
  735. package/dist/select/SelectItem.d.ts +0 -11
  736. package/dist/select/SelectItems.d.ts +0 -10
  737. package/dist/select/SelectItemsGroupContext.d.ts +0 -9
  738. package/dist/select/SelectLabel.d.ts +0 -8
  739. package/dist/select/SelectLeadingIcon.d.ts +0 -7
  740. package/dist/select/SelectPlaceholder.d.ts +0 -10
  741. package/dist/select/SelectTrigger.d.ts +0 -16
  742. package/dist/select/SelectTrigger.styles.d.ts +0 -5
  743. package/dist/select/SelectValue.d.ts +0 -15
  744. package/dist/select/types.d.ts +0 -6
  745. package/dist/select/utils.d.ts +0 -4
  746. package/dist/skeleton/Skeleton.d.ts +0 -17
  747. package/dist/skeleton/Skeleton.styles.d.ts +0 -5
  748. package/dist/skeleton/SkeletonItem.d.ts +0 -31
  749. package/dist/skeleton/SkeletonItem.styles.d.ts +0 -8
  750. package/dist/slider/Slider.d.ts +0 -55
  751. package/dist/slider/Slider.styles.d.ts +0 -1
  752. package/dist/slider/SliderContext.d.ts +0 -4
  753. package/dist/slider/SliderThumb.d.ts +0 -14
  754. package/dist/slider/SliderThumb.styles.d.ts +0 -5
  755. package/dist/slider/SliderTrack.d.ts +0 -14
  756. package/dist/slider/SliderTrack.styles.d.ts +0 -9
  757. package/dist/slot/Slot.d.ts +0 -12
  758. package/dist/snackbar/Snackbar.d.ts +0 -29
  759. package/dist/snackbar/SnackbarItem.d.ts +0 -49
  760. package/dist/snackbar/SnackbarItem.styles.d.ts +0 -10
  761. package/dist/snackbar/SnackbarItemAction.d.ts +0 -10
  762. package/dist/snackbar/SnackbarItemClose.d.ts +0 -9
  763. package/dist/snackbar/SnackbarItemContext.d.ts +0 -8
  764. package/dist/snackbar/SnackbarItemIcon.d.ts +0 -7
  765. package/dist/snackbar/SnackbarRegion.d.ts +0 -30
  766. package/dist/snackbar/SnackbarRegion.styles.d.ts +0 -5
  767. package/dist/snackbar/snackbarVariants.d.ts +0 -82
  768. package/dist/snackbar/useSnackbarGlobalStore.d.ts +0 -18
  769. package/dist/snackbar/useSwipe.d.ts +0 -15
  770. package/dist/spinner/Spinner.d.ts +0 -9
  771. package/dist/spinner/Spinner.styles.d.ts +0 -7
  772. package/dist/stepper/Stepper.d.ts +0 -9
  773. package/dist/stepper/StepperButton.d.ts +0 -14
  774. package/dist/stepper/StepperInput.d.ts +0 -7
  775. package/dist/stepper/types.d.ts +0 -46
  776. package/dist/stepper/useStepper.d.ts +0 -2
  777. package/dist/switch/Switch.d.ts +0 -6
  778. package/dist/switch/SwitchInput.styles.d.ts +0 -16
  779. package/dist/switch/SwitchLabel.d.ts +0 -17
  780. package/dist/switch/SwitchLabel.styles.d.ts +0 -5
  781. package/dist/tabs/Tabs.d.ts +0 -24
  782. package/dist/tabs/TabsContent.d.ts +0 -22
  783. package/dist/tabs/TabsContent.styles.d.ts +0 -3
  784. package/dist/tabs/TabsContext.d.ts +0 -7
  785. package/dist/tabs/TabsList.d.ts +0 -20
  786. package/dist/tabs/TabsList.styles.d.ts +0 -3
  787. package/dist/tabs/TabsPopover.d.ts +0 -29
  788. package/dist/tabs/TabsPopoverAbstraction.d.ts +0 -27
  789. package/dist/tabs/TabsRoot.styles.d.ts +0 -1
  790. package/dist/tabs/TabsTrigger.d.ts +0 -41
  791. package/dist/tabs/TabsTrigger.styles.d.ts +0 -8
  792. package/dist/tabs/useResizeObserver.d.ts +0 -8
  793. package/dist/tag/Tag.d.ts +0 -17
  794. package/dist/tag/Tag.styles.d.ts +0 -8
  795. package/dist/tag/variants/filled.d.ts +0 -41
  796. package/dist/tag/variants/index.d.ts +0 -3
  797. package/dist/tag/variants/outlined.d.ts +0 -37
  798. package/dist/tag/variants/tinted.d.ts +0 -37
  799. package/dist/text-link/TextLink.d.ts +0 -16
  800. package/dist/textarea/Textarea.d.ts +0 -14
  801. package/dist/textarea/TextareaClearButton.d.ts +0 -10
  802. package/dist/textarea/TextareaGroup.d.ts +0 -6
  803. package/dist/textarea/TextareaLeadingIcon.d.ts +0 -7
  804. package/dist/textarea/TextareaTrailingIcon.d.ts +0 -7
  805. package/dist/toast/Toast.d.ts +0 -4
  806. package/dist/toast/Toast.styles.d.ts +0 -10
  807. package/dist/toast/types.d.ts +0 -41
  808. package/dist/toast/useRenderSlot.d.ts +0 -3
  809. package/dist/toast/useToastManager.d.ts +0 -2
  810. package/dist/useCollapsiblePanel-D1dCo0lf.js +0 -4
  811. package/dist/useCollapsiblePanel-D1dCo0lf.js.map +0 -1
  812. package/dist/useCollapsiblePanel-kbMNl4Z4.mjs +0 -287
  813. package/dist/useCollapsiblePanel-kbMNl4Z4.mjs.map +0 -1
  814. package/dist/useFocusWithin-CFNEka2I.js +0 -2
  815. package/dist/useFocusWithin-CFNEka2I.js.map +0 -1
  816. package/dist/useFocusWithin-CoL4390f.mjs +0 -796
  817. package/dist/useFocusWithin-CoL4390f.mjs.map +0 -1
  818. package/dist/useOpenChangeComplete-Dk-u_f2y.js +0 -2
  819. package/dist/useOpenChangeComplete-Dk-u_f2y.js.map +0 -1
  820. package/dist/useOpenChangeComplete-RUbg6RBw.mjs +0 -582
  821. package/dist/useOpenChangeComplete-RUbg6RBw.mjs.map +0 -1
  822. package/dist/useTransitionStatus-CktVVKxz.mjs +0 -46
  823. package/dist/useTransitionStatus-CktVVKxz.mjs.map +0 -1
  824. package/dist/useTransitionStatus-CqbEyvIj.js +0 -2
  825. package/dist/useTransitionStatus-CqbEyvIj.js.map +0 -1
  826. package/dist/visually-hidden/VisuallyHidden.d.ts +0 -12
@@ -1,20 +1,32 @@
1
- import { jsx as s, jsxs as M, Fragment as Fe } from "react/jsx-runtime";
2
- import { useFormFieldControl as be } from "../form-field/index.mjs";
3
- import { createElement as X, useState as G, createContext as se, useId as he, useRef as z, useContext as le, useEffect as de, useCallback as ye } from "react";
4
- import { useCombinedState as Ie } from "@spark-ui/hooks/use-combined-state";
5
- import { CvOutline as Re } from "@spark-ui/icons/CvOutline";
6
- import { FilePdfOutline as Le } from "@spark-ui/icons/FilePdfOutline";
7
- import { ImageOutline as Ne } from "@spark-ui/icons/ImageOutline";
8
- import { PlayOutline as xe } from "@spark-ui/icons/PlayOutline";
9
- import { a as _ } from "../index-BmAFn37q.mjs";
10
- import { I as K } from "../Icon-D1RueiPY.mjs";
11
- import { Progress as Ee } from "../progress/index.mjs";
12
- import { Close as ce } from "@spark-ui/icons/Close";
13
- import { I as ue } from "../IconButton-BY3gYXtU.mjs";
14
- import { WarningOutline as je } from "@spark-ui/icons/WarningOutline";
15
- import { b as Te, B as De } from "../Button-D32Avk2j.mjs";
16
- import { a as Oe } from "../Slot-C98rL4yy.mjs";
17
- const O = {
1
+ import {
2
+ Progress
3
+ } from "../chunk-7EWSMIZU.mjs";
4
+ import {
5
+ IconButton
6
+ } from "../chunk-DCXWGQVZ.mjs";
7
+ import {
8
+ Icon
9
+ } from "../chunk-UMUMFMFB.mjs";
10
+ import {
11
+ Button,
12
+ buttonStyles
13
+ } from "../chunk-2YM6GKWW.mjs";
14
+ import "../chunk-GAK4SC2F.mjs";
15
+ import "../chunk-KEGAAGJW.mjs";
16
+ import {
17
+ Slot
18
+ } from "../chunk-6QCEPQ3U.mjs";
19
+
20
+ // src/file-upload/FileUpload.tsx
21
+ import { useFormFieldControl } from "@spark-ui/components/form-field";
22
+ import { createContext, useContext, useId, useRef } from "react";
23
+
24
+ // src/file-upload/useFileUploadState.tsx
25
+ import { useCombinedState } from "@spark-ui/hooks/use-combined-state";
26
+ import { useState } from "react";
27
+
28
+ // src/file-upload/constants.ts
29
+ var FILE_UPLOAD_ERRORS = {
18
30
  /**
19
31
  * Exceeds the maxFiles limit
20
32
  */
@@ -40,256 +52,425 @@ const O = {
40
52
  */
41
53
  FILE_EXISTS: "FILE_EXISTS"
42
54
  };
43
- function oe(t, r) {
44
- return r ? r.split(",").map((e) => e.trim()).some((e) => {
45
- if (e.includes("/")) {
46
- if (e.endsWith("/*")) {
47
- const d = e.slice(0, -2);
48
- return t.type.startsWith(d + "/");
55
+
56
+ // src/file-upload/utils.ts
57
+ import { CvOutline } from "@spark-ui/icons/CvOutline";
58
+ import { FilePdfOutline } from "@spark-ui/icons/FilePdfOutline";
59
+ import { ImageOutline } from "@spark-ui/icons/ImageOutline";
60
+ import { PlayOutline } from "@spark-ui/icons/PlayOutline";
61
+ import { createElement } from "react";
62
+ function validateFileAccept(file, accept) {
63
+ if (!accept) {
64
+ return true;
65
+ }
66
+ const patterns = accept.split(",").map((pattern) => pattern.trim());
67
+ return patterns.some((pattern) => {
68
+ if (pattern.includes("/")) {
69
+ if (pattern.endsWith("/*")) {
70
+ const baseType = pattern.slice(0, -2);
71
+ return file.type.startsWith(baseType + "/");
49
72
  }
50
- return t.type === e;
73
+ return file.type === pattern;
51
74
  }
52
- if (e.startsWith(".")) {
53
- const d = e.toLowerCase();
54
- return t.name.toLowerCase().endsWith(d);
75
+ if (pattern.startsWith(".")) {
76
+ const extension2 = pattern.toLowerCase();
77
+ const fileName2 = file.name.toLowerCase();
78
+ return fileName2.endsWith(extension2);
55
79
  }
56
- const o = "." + e.toLowerCase();
57
- return t.name.toLowerCase().endsWith(o);
58
- }) : !0;
80
+ const extension = "." + pattern.toLowerCase();
81
+ const fileName = file.name.toLowerCase();
82
+ return fileName.endsWith(extension);
83
+ });
59
84
  }
60
- function _e(t, r, i, e) {
61
- const o = e || fe();
62
- return r !== void 0 && t.size < r ? {
63
- valid: !1,
64
- error: `File "${t.name}" is too small. Minimum size is ${W(r, o)}.`
65
- } : i !== void 0 && t.size > i ? {
66
- valid: !1,
67
- error: `File "${t.name}" is too large. Maximum size is ${W(i, o)}.`
68
- } : { valid: !0 };
85
+ function validateFileSize(file, minFileSize, maxFileSize, locale) {
86
+ const defaultLocale = locale || getDefaultLocale();
87
+ if (minFileSize !== void 0 && file.size < minFileSize) {
88
+ const errorMessage = `File "${file.name}" is too small. Minimum size is ${formatFileSize(minFileSize, defaultLocale)}.`;
89
+ return {
90
+ valid: false,
91
+ error: errorMessage
92
+ };
93
+ }
94
+ if (maxFileSize !== void 0 && file.size > maxFileSize) {
95
+ const errorMessage = `File "${file.name}" is too large. Maximum size is ${formatFileSize(maxFileSize, defaultLocale)}.`;
96
+ return {
97
+ valid: false,
98
+ error: errorMessage
99
+ };
100
+ }
101
+ return { valid: true };
69
102
  }
70
- function fe() {
71
- return typeof navigator < "u" && navigator.language ? navigator.language : "en";
103
+ function getDefaultLocale() {
104
+ if (typeof navigator !== "undefined" && navigator.language) {
105
+ return navigator.language;
106
+ }
107
+ return "en";
72
108
  }
73
- function W(t, r) {
74
- const i = r || fe();
75
- let e = i;
76
- if (i.length === 2 && (e = i === "fr" ? "fr-FR" : "en-US"), t === 0)
77
- return new Intl.NumberFormat(e, {
109
+ function formatFileSize(bytes, locale) {
110
+ const defaultLocale = locale || getDefaultLocale();
111
+ let normalizedLocale = defaultLocale;
112
+ if (defaultLocale.length === 2) {
113
+ normalizedLocale = defaultLocale === "fr" ? "fr-FR" : "en-US";
114
+ }
115
+ if (bytes === 0) {
116
+ const formatter2 = new Intl.NumberFormat(normalizedLocale, {
78
117
  style: "unit",
79
118
  unit: "byte",
80
119
  unitDisplay: "long",
81
120
  minimumFractionDigits: 0,
82
121
  maximumFractionDigits: 0
83
- }).format(0);
84
- const o = 1024, c = Math.floor(Math.log(t) / Math.log(o)), a = ["byte", "kilobyte", "megabyte", "gigabyte"][c] || "byte", l = t / Math.pow(o, c), n = c === 0 ? "long" : "short";
85
- return new Intl.NumberFormat(e, {
122
+ });
123
+ return formatter2.format(0);
124
+ }
125
+ const k = 1024;
126
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
127
+ const units = ["byte", "kilobyte", "megabyte", "gigabyte"];
128
+ const unit = units[i] || "byte";
129
+ const size = bytes / Math.pow(k, i);
130
+ const unitDisplay = i === 0 ? "long" : "short";
131
+ const formatter = new Intl.NumberFormat(normalizedLocale, {
86
132
  style: "unit",
87
- unit: a,
88
- unitDisplay: n,
133
+ unit,
134
+ unitDisplay,
89
135
  minimumFractionDigits: 0,
90
136
  maximumFractionDigits: 2
91
- }).format(l);
137
+ });
138
+ return formatter.format(size);
92
139
  }
93
- function we(t) {
94
- const r = t.type.toLowerCase(), i = t.name.toLowerCase();
95
- return r.startsWith("image/") || /\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)$/i.test(i) ? X(Ne) : r === "application/pdf" || i.endsWith(".pdf") ? X(Le) : r.startsWith("video/") || /\.(mp4|avi|mov|wmv|flv|webm|mkv)$/i.test(i) ? X(xe) : X(Re);
140
+ function getFileIcon(file) {
141
+ const fileType = file.type.toLowerCase();
142
+ const fileName = file.name.toLowerCase();
143
+ if (fileType.startsWith("image/") || /\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)$/i.test(fileName)) {
144
+ return createElement(ImageOutline);
145
+ }
146
+ if (fileType === "application/pdf" || fileName.endsWith(".pdf")) {
147
+ return createElement(FilePdfOutline);
148
+ }
149
+ if (fileType.startsWith("video/") || /\.(mp4|avi|mov|wmv|flv|webm|mkv)$/i.test(fileName)) {
150
+ return createElement(PlayOutline);
151
+ }
152
+ return createElement(CvOutline);
96
153
  }
97
- function Ae(t) {
98
- if (!t)
99
- return !1;
100
- if (t.tabIndex >= 0)
101
- return !0;
102
- const i = String(t.contentEditable) === "true";
103
- return t instanceof HTMLInputElement || t instanceof HTMLButtonElement || t instanceof HTMLSelectElement || t instanceof HTMLTextAreaElement || t instanceof HTMLAnchorElement && !!t.href || i;
154
+ function isFocusable(element) {
155
+ if (!element) {
156
+ return false;
157
+ }
158
+ const tabIndex = element.tabIndex;
159
+ if (tabIndex >= 0) {
160
+ return true;
161
+ }
162
+ const isContentEditable = String(element.contentEditable) === "true";
163
+ const naturallyFocusable = element instanceof HTMLInputElement || element instanceof HTMLButtonElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement || element instanceof HTMLAnchorElement && Boolean(element.href) || isContentEditable;
164
+ return naturallyFocusable;
104
165
  }
105
- function me(t, r) {
106
- for (const i of t)
107
- if (Ae(i))
108
- return i;
109
- return r.current ? r.current : null;
166
+ function findFocusableElement(candidates, inputRef) {
167
+ for (const candidate of candidates) {
168
+ if (isFocusable(candidate)) {
169
+ return candidate;
170
+ }
171
+ }
172
+ if (inputRef.current) {
173
+ return inputRef.current;
174
+ }
175
+ return null;
110
176
  }
111
- function ze({
112
- defaultValue: t = [],
113
- value: r,
114
- onFileAccept: i,
115
- onFileReject: e,
116
- onFileChange: o,
117
- multiple: c = !0,
118
- accept: d,
119
- maxFiles: a,
120
- maxFileSize: l,
121
- minFileSize: n,
122
- disabled: m = !1,
123
- readOnly: p = !1,
124
- locale: x
177
+
178
+ // src/file-upload/useFileUploadState.tsx
179
+ function useFileUploadState({
180
+ defaultValue = [],
181
+ value: controlledValue,
182
+ onFileAccept,
183
+ onFileReject,
184
+ onFileChange,
185
+ multiple = true,
186
+ accept,
187
+ maxFiles,
188
+ maxFileSize,
189
+ minFileSize,
190
+ disabled = false,
191
+ readOnly = false,
192
+ locale
125
193
  }) {
126
- const f = x || (typeof navigator < "u" && navigator.language ? navigator.language : "en"), [E, F] = Ie(r, t), u = E ?? [], I = F, [b, g] = G([]), U = (j) => {
127
- if (m || p)
194
+ const defaultLocale = locale || (typeof navigator !== "undefined" && navigator.language ? navigator.language : "en");
195
+ const [filesState, setFilesState] = useCombinedState(controlledValue, defaultValue);
196
+ const files = filesState ?? [];
197
+ const setFiles = setFilesState;
198
+ const [rejectedFiles, setRejectedFiles] = useState([]);
199
+ const addFiles = (newFiles) => {
200
+ if (disabled || readOnly) {
128
201
  return;
129
- g([]);
130
- const T = [], P = (L, N) => N.some(
131
- (y) => y.name === L.name && y.size === L.size
132
- ), h = (L, N) => {
133
- const y = T.find(
134
- (w) => w.file.name === L.name && w.file.size === L.size
202
+ }
203
+ setRejectedFiles([]);
204
+ const newRejectedFiles = [];
205
+ const fileExists = (file, existingFiles) => {
206
+ return existingFiles.some(
207
+ (existingFile) => existingFile.name === file.name && existingFile.size === file.size
135
208
  );
136
- y ? y.errors.includes(N) || y.errors.push(N) : T.push({
137
- file: L,
138
- errors: [N]
139
- });
140
209
  };
141
- I((L) => {
142
- const N = L ?? [], y = a !== void 0 ? a - N.length : void 0;
143
- y !== void 0 && y <= 0 && j.forEach((v) => {
144
- h(v, O.TOO_MANY_FILES);
145
- });
146
- let w = j;
147
- d && (j.filter((D) => !oe(D, d)).forEach((D) => {
148
- h(D, O.FILE_INVALID_TYPE);
149
- }), w = j.filter((D) => oe(D, d)));
150
- let Y = w;
151
- (n !== void 0 || l !== void 0) && (Y = w.filter((v) => _e(v, n, l, f).valid ? !0 : (l !== void 0 && v.size > l ? h(v, O.FILE_TOO_LARGE) : n !== void 0 && v.size < n ? h(v, O.FILE_TOO_SMALL) : h(v, O.FILE_INVALID), !1)));
152
- const H = /* @__PURE__ */ new Map(), q = Y.filter((v) => {
153
- const D = `${v.name}-${v.size}`;
154
- return P(v, N) || H.has(D) ? (h(v, O.FILE_EXISTS), !1) : (H.set(D, v), !0);
210
+ const addRejectedFile = (file, error) => {
211
+ const existingRejection = newRejectedFiles.find(
212
+ (rejected) => rejected.file.name === file.name && rejected.file.size === file.size
213
+ );
214
+ if (existingRejection) {
215
+ if (!existingRejection.errors.includes(error)) {
216
+ existingRejection.errors.push(error);
217
+ }
218
+ } else {
219
+ newRejectedFiles.push({
220
+ file,
221
+ errors: [error]
222
+ });
223
+ }
224
+ };
225
+ setFiles((prev) => {
226
+ const currentFiles = prev ?? [];
227
+ const remainingSlots = maxFiles !== void 0 ? maxFiles - currentFiles.length : void 0;
228
+ if (remainingSlots !== void 0 && remainingSlots <= 0) {
229
+ newFiles.forEach((file) => {
230
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.TOO_MANY_FILES);
231
+ });
232
+ }
233
+ let filteredFiles = newFiles;
234
+ if (accept) {
235
+ const rejectedByAccept = newFiles.filter((file) => !validateFileAccept(file, accept));
236
+ rejectedByAccept.forEach((file) => {
237
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_INVALID_TYPE);
238
+ });
239
+ filteredFiles = newFiles.filter((file) => validateFileAccept(file, accept));
240
+ }
241
+ let validSizeFiles = filteredFiles;
242
+ if (minFileSize !== void 0 || maxFileSize !== void 0) {
243
+ validSizeFiles = filteredFiles.filter((file) => {
244
+ const validation = validateFileSize(file, minFileSize, maxFileSize, defaultLocale);
245
+ if (!validation.valid) {
246
+ if (maxFileSize !== void 0 && file.size > maxFileSize) {
247
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_TOO_LARGE);
248
+ } else if (minFileSize !== void 0 && file.size < minFileSize) {
249
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_TOO_SMALL);
250
+ } else {
251
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_INVALID);
252
+ }
253
+ return false;
254
+ }
255
+ return true;
256
+ });
257
+ }
258
+ const seenFiles = /* @__PURE__ */ new Map();
259
+ const uniqueFiles = validSizeFiles.filter((file) => {
260
+ const fileKey = `${file.name}-${file.size}`;
261
+ const existsInPrev = fileExists(file, currentFiles);
262
+ if (existsInPrev) {
263
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_EXISTS);
264
+ return false;
265
+ }
266
+ if (seenFiles.has(fileKey)) {
267
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_EXISTS);
268
+ return false;
269
+ }
270
+ seenFiles.set(fileKey, file);
271
+ return true;
155
272
  });
156
- let A = c ? q : q.slice(0, 1);
157
- y !== void 0 && (y <= 0 ? A = [] : A.length > y && (A.forEach((v) => {
158
- h(v, O.TOO_MANY_FILES);
159
- }), A = []));
160
- const ae = c ? [...N, ...A] : A, V = [...T];
161
- return g(V), A.length > 0 && i && i({ files: A }), V.length > 0 && e && e({ files: V }), o && o({
162
- acceptedFiles: ae,
163
- rejectedFiles: V
164
- }), ae;
273
+ let filesToAdd = multiple ? uniqueFiles : uniqueFiles.slice(0, 1);
274
+ if (remainingSlots !== void 0) {
275
+ if (remainingSlots <= 0) {
276
+ filesToAdd = [];
277
+ } else if (filesToAdd.length > remainingSlots) {
278
+ filesToAdd.forEach((file) => {
279
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.TOO_MANY_FILES);
280
+ });
281
+ filesToAdd = [];
282
+ }
283
+ }
284
+ const updated = multiple ? [...currentFiles, ...filesToAdd] : filesToAdd;
285
+ const rejectedFilesToAdd = [...newRejectedFiles];
286
+ setRejectedFiles(rejectedFilesToAdd);
287
+ if (filesToAdd.length > 0 && onFileAccept) {
288
+ onFileAccept({ files: filesToAdd });
289
+ }
290
+ if (rejectedFilesToAdd.length > 0 && onFileReject) {
291
+ onFileReject({ files: rejectedFilesToAdd });
292
+ }
293
+ if (onFileChange) {
294
+ onFileChange({
295
+ acceptedFiles: updated,
296
+ rejectedFiles: rejectedFilesToAdd
297
+ });
298
+ }
299
+ return updated;
165
300
  });
166
- }, C = (j) => {
167
- m || p || I((T) => {
168
- const h = (T ?? []).filter((N, y) => y !== j);
169
- let L = b;
170
- return a !== void 0 && h.length < a && (L = b.filter(
171
- (N) => !N.errors.includes(O.TOO_MANY_FILES)
172
- ), g(L)), o && o({
173
- acceptedFiles: h,
174
- rejectedFiles: L
175
- }), h;
301
+ };
302
+ const removeFile = (index) => {
303
+ if (disabled || readOnly) {
304
+ return;
305
+ }
306
+ setFiles((prev) => {
307
+ const currentFiles = prev ?? [];
308
+ const updated = currentFiles.filter((_, i) => i !== index);
309
+ let updatedRejectedFiles = rejectedFiles;
310
+ if (maxFiles !== void 0 && updated.length < maxFiles) {
311
+ updatedRejectedFiles = rejectedFiles.filter(
312
+ (rejected) => !rejected.errors.includes(FILE_UPLOAD_ERRORS.TOO_MANY_FILES)
313
+ );
314
+ setRejectedFiles(updatedRejectedFiles);
315
+ }
316
+ if (onFileChange) {
317
+ onFileChange({
318
+ acceptedFiles: updated,
319
+ rejectedFiles: updatedRejectedFiles
320
+ });
321
+ }
322
+ return updated;
176
323
  });
177
- }, R = () => {
178
- m || p || (I([]), g([]), o && o({
179
- acceptedFiles: [],
180
- rejectedFiles: []
181
- }));
182
- }, $ = (j) => {
183
- m || p || g((T) => T.filter((P, h) => h !== j));
184
- }, k = () => {
185
- g([]);
186
- }, B = a !== void 0 && u.length >= a;
324
+ };
325
+ const clearFiles = () => {
326
+ if (disabled || readOnly) {
327
+ return;
328
+ }
329
+ setFiles([]);
330
+ setRejectedFiles([]);
331
+ if (onFileChange) {
332
+ onFileChange({
333
+ acceptedFiles: [],
334
+ rejectedFiles: []
335
+ });
336
+ }
337
+ };
338
+ const removeRejectedFile = (index) => {
339
+ if (disabled || readOnly) {
340
+ return;
341
+ }
342
+ setRejectedFiles((prev) => prev.filter((_, i) => i !== index));
343
+ };
344
+ const clearRejectedFiles = () => {
345
+ setRejectedFiles([]);
346
+ };
347
+ const maxFilesReached = maxFiles !== void 0 && files.length >= maxFiles;
187
348
  return {
188
- files: u,
189
- rejectedFiles: b,
190
- addFiles: U,
191
- removeFile: C,
192
- removeRejectedFile: $,
193
- clearFiles: R,
194
- clearRejectedFiles: k,
195
- maxFilesReached: B
349
+ files,
350
+ rejectedFiles,
351
+ addFiles,
352
+ removeFile,
353
+ removeRejectedFile,
354
+ clearFiles,
355
+ clearRejectedFiles,
356
+ maxFilesReached
196
357
  };
197
358
  }
198
- const pe = se(null), Ue = ":file-upload", ge = ({
199
- asChild: t = !1,
200
- children: r,
201
- defaultValue: i = [],
202
- value: e,
203
- onFileAccept: o,
204
- onFileReject: c,
205
- onFileChange: d,
206
- multiple: a = !0,
207
- accept: l,
208
- maxFiles: n,
209
- maxFileSize: m,
210
- minFileSize: p,
211
- disabled: x = !1,
212
- readOnly: f = !1,
213
- locale: E
359
+
360
+ // src/file-upload/FileUpload.tsx
361
+ import { jsx, jsxs } from "react/jsx-runtime";
362
+ var FileUploadContext = createContext(null);
363
+ var ID_PREFIX = ":file-upload";
364
+ var FileUpload = ({
365
+ asChild: _asChild = false,
366
+ children,
367
+ defaultValue = [],
368
+ value: controlledValue,
369
+ onFileAccept,
370
+ onFileReject,
371
+ onFileChange,
372
+ multiple = true,
373
+ accept,
374
+ maxFiles,
375
+ maxFileSize,
376
+ minFileSize,
377
+ disabled: disabledProp = false,
378
+ readOnly: readOnlyProp = false,
379
+ locale
214
380
  }) => {
215
- const F = be(), u = he(), I = F.id || `${Ue}-${u}`, b = F.name, g = z(null), U = z(null), C = z(null), R = z([]), $ = z([]), k = F.disabled ?? x, B = F.readOnly ?? f, {
216
- files: j,
217
- rejectedFiles: T,
218
- addFiles: P,
219
- removeFile: h,
220
- removeRejectedFile: L,
221
- clearFiles: N,
222
- clearRejectedFiles: y,
223
- maxFilesReached: w
224
- } = ze({
225
- defaultValue: i,
226
- value: e,
227
- onFileAccept: o,
228
- onFileReject: c,
229
- onFileChange: d,
230
- multiple: a,
231
- accept: l,
232
- maxFiles: n,
233
- maxFileSize: m,
234
- minFileSize: p,
235
- disabled: k,
236
- readOnly: B,
237
- locale: E
238
- }), Y = () => {
239
- N(), R.current = [];
240
- }, H = () => {
241
- y(), $.current = [];
381
+ const field = useFormFieldControl();
382
+ const internalId = useId();
383
+ const inputId = field.id || `${ID_PREFIX}-${internalId}`;
384
+ const inputName = field.name;
385
+ const inputRef = useRef(null);
386
+ const triggerRef = useRef(null);
387
+ const dropzoneRef = useRef(null);
388
+ const deleteButtonRefs = useRef([]);
389
+ const rejectedFileDeleteButtonRefs = useRef([]);
390
+ const disabled = field.disabled ?? disabledProp;
391
+ const readOnly = field.readOnly ?? readOnlyProp;
392
+ const {
393
+ files,
394
+ rejectedFiles,
395
+ addFiles,
396
+ removeFile,
397
+ removeRejectedFile,
398
+ clearFiles: clearFilesFromHook,
399
+ clearRejectedFiles,
400
+ maxFilesReached
401
+ } = useFileUploadState({
402
+ defaultValue,
403
+ value: controlledValue,
404
+ onFileAccept,
405
+ onFileReject,
406
+ onFileChange,
407
+ multiple,
408
+ accept,
409
+ maxFiles,
410
+ maxFileSize,
411
+ minFileSize,
412
+ disabled,
413
+ readOnly,
414
+ locale
415
+ });
416
+ const clearFiles = () => {
417
+ clearFilesFromHook();
418
+ deleteButtonRefs.current = [];
419
+ };
420
+ const clearRejectedFilesWithRefs = () => {
421
+ clearRejectedFiles();
422
+ rejectedFileDeleteButtonRefs.current = [];
242
423
  };
243
- return /* @__PURE__ */ s(
244
- pe.Provider,
424
+ return /* @__PURE__ */ jsx(
425
+ FileUploadContext.Provider,
245
426
  {
246
427
  value: {
247
- inputRef: g,
248
- files: j,
249
- rejectedFiles: T,
250
- addFiles: P,
251
- removeFile: h,
252
- removeRejectedFile: L,
253
- clearFiles: Y,
254
- clearRejectedFiles: H,
255
- triggerRef: U,
256
- dropzoneRef: C,
257
- deleteButtonRefs: R,
258
- rejectedFileDeleteButtonRefs: $,
259
- multiple: a,
260
- maxFiles: n,
261
- maxFilesReached: w,
262
- disabled: k,
263
- readOnly: B,
264
- locale: E || (typeof navigator < "u" && navigator.language ? navigator.language : "en"),
265
- description: F.description,
266
- isInvalid: F.isInvalid,
267
- isRequired: F.isRequired
428
+ inputRef,
429
+ files,
430
+ rejectedFiles,
431
+ addFiles,
432
+ removeFile,
433
+ removeRejectedFile,
434
+ clearFiles,
435
+ clearRejectedFiles: clearRejectedFilesWithRefs,
436
+ triggerRef,
437
+ dropzoneRef,
438
+ deleteButtonRefs,
439
+ rejectedFileDeleteButtonRefs,
440
+ multiple,
441
+ maxFiles,
442
+ maxFilesReached,
443
+ disabled,
444
+ readOnly,
445
+ locale: locale || (typeof navigator !== "undefined" && navigator.language ? navigator.language : "en"),
446
+ description: field.description,
447
+ isInvalid: field.isInvalid,
448
+ isRequired: field.isRequired
268
449
  },
269
- children: /* @__PURE__ */ M("div", { className: "relative", children: [
270
- r,
271
- /* @__PURE__ */ s(
450
+ children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
451
+ children,
452
+ /* @__PURE__ */ jsx(
272
453
  "input",
273
454
  {
274
- ref: g,
455
+ ref: inputRef,
275
456
  type: "file",
276
457
  tabIndex: -1,
277
- id: I,
278
- multiple: a,
279
- name: b,
280
- accept: l,
281
- disabled: k,
282
- readOnly: B && !k,
283
- required: F.isRequired,
284
- "aria-invalid": F.isInvalid,
285
- "aria-describedby": F.description,
286
- "aria-label": F.labelId ? void 0 : "Upload files",
458
+ id: inputId,
459
+ multiple,
460
+ name: inputName,
461
+ accept,
462
+ disabled,
463
+ readOnly: readOnly && !disabled,
464
+ required: field.isRequired,
465
+ "aria-invalid": field.isInvalid,
466
+ "aria-describedby": field.description,
467
+ "aria-label": !field.labelId ? "Upload files" : void 0,
287
468
  className: "sr-only",
288
- onChange: (q) => {
289
- if (q.target.files && !k && !B) {
290
- P(Array.from(q.target.files));
469
+ onChange: (e) => {
470
+ if (e.target.files && !disabled && !readOnly) {
471
+ addFiles(Array.from(e.target.files));
291
472
  try {
292
- q.target.value = "";
473
+ e.target.value = "";
293
474
  } catch {
294
475
  }
295
476
  }
@@ -300,397 +481,544 @@ const pe = se(null), Ue = ":file-upload", ge = ({
300
481
  }
301
482
  );
302
483
  };
303
- ge.displayName = "FileUpload";
304
- const S = () => {
305
- const t = le(pe);
306
- if (!t)
484
+ FileUpload.displayName = "FileUpload";
485
+ var useFileUploadContext = () => {
486
+ const context = useContext(FileUploadContext);
487
+ if (!context) {
307
488
  throw Error("useFileUploadContext must be used within a FileUpload provider");
308
- return t;
309
- }, J = ({
310
- className: t,
311
- file: r,
312
- onClick: i,
313
- ...e
489
+ }
490
+ return context;
491
+ };
492
+
493
+ // src/file-upload/FileUploadAcceptedFile.tsx
494
+ import { cx as cx2 } from "class-variance-authority";
495
+ import { useCallback, useEffect, useState as useState2 } from "react";
496
+
497
+ // src/file-upload/FileUploadItemDeleteTrigger.tsx
498
+ import { Close } from "@spark-ui/icons/Close";
499
+ import { cx } from "class-variance-authority";
500
+ import { useRef as useRef2 } from "react";
501
+ import { jsx as jsx2 } from "react/jsx-runtime";
502
+ var ItemDeleteTrigger = ({
503
+ className,
504
+ file,
505
+ onClick,
506
+ ...props
314
507
  }) => {
315
508
  const {
316
- removeFile: o,
317
- triggerRef: c,
318
- dropzoneRef: d,
319
- deleteButtonRefs: a,
320
- inputRef: l,
321
- disabled: n,
322
- readOnly: m,
323
- files: p
324
- } = S(), x = z(null), f = p.findIndex((u) => u.name === r.name && u.size === r.size), E = (u) => {
325
- n || m || (o(f), requestAnimationFrame(() => {
326
- const I = a.current.filter(Boolean);
327
- if (I.length > 0) {
328
- const b = Math.min(f, I.length - 1), g = I[b];
329
- g && g.focus();
509
+ removeFile,
510
+ triggerRef,
511
+ dropzoneRef,
512
+ deleteButtonRefs,
513
+ inputRef,
514
+ disabled,
515
+ readOnly,
516
+ files
517
+ } = useFileUploadContext();
518
+ const buttonRef = useRef2(null);
519
+ const fileIndex = files.findIndex((f) => f.name === file.name && f.size === file.size);
520
+ const handleClick = (e) => {
521
+ if (disabled || readOnly) {
522
+ return;
523
+ }
524
+ removeFile(fileIndex);
525
+ requestAnimationFrame(() => {
526
+ const remainingButtons = deleteButtonRefs.current.filter(Boolean);
527
+ if (remainingButtons.length > 0) {
528
+ const targetIndex = Math.min(fileIndex, remainingButtons.length - 1);
529
+ const nextButton = remainingButtons[targetIndex];
530
+ if (nextButton) {
531
+ nextButton.focus();
532
+ }
330
533
  } else {
331
- const b = me(
332
- [c.current, d.current],
333
- l
534
+ const focusTarget = findFocusableElement(
535
+ [triggerRef.current, dropzoneRef.current],
536
+ inputRef
334
537
  );
335
- b && b.focus();
538
+ if (focusTarget) {
539
+ focusTarget.focus();
540
+ }
336
541
  }
337
- }), i?.(u));
542
+ });
543
+ onClick?.(e);
544
+ };
545
+ const setRef = (node) => {
546
+ buttonRef.current = node;
547
+ if (node) {
548
+ while (deleteButtonRefs.current.length <= fileIndex) {
549
+ deleteButtonRefs.current.push(null);
550
+ }
551
+ deleteButtonRefs.current[fileIndex] = node;
552
+ } else {
553
+ if (deleteButtonRefs.current[fileIndex]) {
554
+ deleteButtonRefs.current[fileIndex] = null;
555
+ }
556
+ }
338
557
  };
339
- return /* @__PURE__ */ s(
340
- ue,
558
+ return /* @__PURE__ */ jsx2(
559
+ IconButton,
341
560
  {
342
- ref: (u) => {
343
- if (x.current = u, u) {
344
- for (; a.current.length <= f; )
345
- a.current.push(null);
346
- a.current[f] = u;
347
- } else
348
- a.current[f] && (a.current[f] = null);
349
- },
561
+ ref: setRef,
350
562
  "data-spark-component": "file-upload-item-delete-trigger",
351
- className: _(t),
352
- onClick: E,
353
- disabled: n || m,
563
+ className: cx(className),
564
+ onClick: handleClick,
565
+ disabled: disabled || readOnly,
354
566
  size: "sm",
355
567
  design: "contrast",
356
568
  intent: "surface",
357
- ...e,
358
- children: /* @__PURE__ */ s(K, { size: "sm", children: /* @__PURE__ */ s(ce, {}) })
569
+ ...props,
570
+ children: /* @__PURE__ */ jsx2(Icon, { size: "sm", children: /* @__PURE__ */ jsx2(Close, {}) })
359
571
  }
360
572
  );
361
573
  };
362
- J.displayName = "FileUpload.ItemDeleteTrigger";
363
- const Z = ({
364
- className: t,
365
- file: r,
366
- uploadProgress: i,
367
- deleteButtonAriaLabel: e,
368
- progressAriaLabel: o,
369
- ...c
574
+ ItemDeleteTrigger.displayName = "FileUpload.ItemDeleteTrigger";
575
+
576
+ // src/file-upload/FileUploadAcceptedFile.tsx
577
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
578
+ var AcceptedFile = ({
579
+ className,
580
+ file,
581
+ uploadProgress,
582
+ deleteButtonAriaLabel,
583
+ progressAriaLabel,
584
+ ...props
370
585
  }) => {
371
- const { locale: d } = S(), [a, l] = G(i !== void 0);
372
- de(() => {
373
- l(i !== void 0);
374
- }, [i]);
375
- const n = ye(() => {
376
- l(!1);
586
+ const { locale } = useFileUploadContext();
587
+ const [showProgress, setShowProgress] = useState2(uploadProgress !== void 0);
588
+ useEffect(() => {
589
+ if (uploadProgress !== void 0) {
590
+ setShowProgress(true);
591
+ } else {
592
+ setShowProgress(false);
593
+ }
594
+ }, [uploadProgress]);
595
+ const handleProgressComplete = useCallback(() => {
596
+ setShowProgress(false);
377
597
  }, []);
378
- return /* @__PURE__ */ M(
598
+ return /* @__PURE__ */ jsxs2(
379
599
  "li",
380
600
  {
381
601
  "data-spark-component": "file-upload-accepted-file",
382
- className: _(
602
+ className: cx2(
383
603
  "relative",
384
604
  "default:bg-surface default:border-sm default:border-outline default:p-md default:rounded-md",
385
605
  "gap-md flex items-center justify-between default:w-full",
386
- t
606
+ className
387
607
  ),
388
- ...c,
608
+ ...props,
389
609
  children: [
390
- /* @__PURE__ */ s("div", { className: "size-sz-36 bg-support-container flex items-center justify-center rounded-md", children: /* @__PURE__ */ s(K, { size: "md", children: we(r) }) }),
391
- /* @__PURE__ */ M("div", { className: "gap-md relative flex min-w-0 flex-1 flex-row items-center justify-between self-stretch", children: [
392
- /* @__PURE__ */ s("p", { className: "text-body-2 truncate font-medium", children: r.name }),
393
- /* @__PURE__ */ s("p", { className: "text-caption opacity-dim-1", children: W(r.size, d) }),
394
- a && i !== void 0 && /* @__PURE__ */ s("div", { className: "absolute bottom-0 left-0 w-full", children: /* @__PURE__ */ s(
395
- Ee,
610
+ /* @__PURE__ */ jsx3("div", { className: "size-sz-36 bg-support-container flex items-center justify-center rounded-md", children: /* @__PURE__ */ jsx3(Icon, { size: "md", children: getFileIcon(file) }) }),
611
+ /* @__PURE__ */ jsxs2("div", { className: "gap-md relative flex min-w-0 flex-1 flex-row items-center justify-between self-stretch", children: [
612
+ /* @__PURE__ */ jsx3("p", { className: "text-body-2 truncate font-medium", children: file.name }),
613
+ /* @__PURE__ */ jsx3("p", { className: "text-caption opacity-dim-1", children: formatFileSize(file.size, locale) }),
614
+ showProgress && uploadProgress !== void 0 && /* @__PURE__ */ jsx3("div", { className: "absolute bottom-0 left-0 w-full", children: /* @__PURE__ */ jsx3(
615
+ Progress,
396
616
  {
397
- value: i,
617
+ value: uploadProgress,
398
618
  max: 100,
399
- "aria-label": o,
400
- onComplete: n
619
+ "aria-label": progressAriaLabel,
620
+ onComplete: handleProgressComplete
401
621
  }
402
622
  ) })
403
623
  ] }),
404
- /* @__PURE__ */ s(J, { "aria-label": e, file: r })
624
+ /* @__PURE__ */ jsx3(ItemDeleteTrigger, { "aria-label": deleteButtonAriaLabel, file })
405
625
  ]
406
626
  }
407
627
  );
408
628
  };
409
- Z.displayName = "FileUpload.AcceptedFile";
410
- const ee = ({ children: t }) => {
411
- const { files: r = [], rejectedFiles: i = [], locale: e } = S();
412
- return /* @__PURE__ */ s(Fe, { children: t({
413
- acceptedFiles: r,
414
- rejectedFiles: i,
415
- formatFileSize: W,
416
- locale: e
629
+ AcceptedFile.displayName = "FileUpload.AcceptedFile";
630
+
631
+ // src/file-upload/FileUploadContext.tsx
632
+ import { Fragment, jsx as jsx4 } from "react/jsx-runtime";
633
+ var Context = ({ children }) => {
634
+ const { files = [], rejectedFiles = [], locale } = useFileUploadContext();
635
+ return /* @__PURE__ */ jsx4(Fragment, { children: children({
636
+ acceptedFiles: files,
637
+ rejectedFiles,
638
+ formatFileSize,
639
+ locale
417
640
  }) });
418
641
  };
419
- ee.displayName = "FileUpload.Context";
420
- const ve = se(!1), Ce = () => le(ve);
421
- function te({
422
- children: t,
423
- className: r,
424
- unstyled: i = !1
642
+ Context.displayName = "FileUpload.Context";
643
+
644
+ // src/file-upload/FileUploadDropzone.tsx
645
+ import { cx as cx3 } from "class-variance-authority";
646
+ import { createContext as createContext2, useContext as useContext2, useRef as useRef3 } from "react";
647
+ import { jsx as jsx5 } from "react/jsx-runtime";
648
+ var DropzoneContext = createContext2(false);
649
+ var useDropzoneContext = () => useContext2(DropzoneContext);
650
+ function Dropzone({
651
+ children,
652
+ className,
653
+ unstyled = false
425
654
  }) {
426
- const e = S(), o = z(null);
427
- if (!e) throw new Error("FileUploadDropzone must be used inside <FileUpload>");
428
- const c = (n) => {
429
- if (n.preventDefault(), n.stopPropagation(), n.currentTarget.setAttribute("data-drag-over", "false"), e.disabled || e.readOnly)
655
+ const ctx = useFileUploadContext();
656
+ const dropzoneRef = useRef3(null);
657
+ if (!ctx) throw new Error("FileUploadDropzone must be used inside <FileUpload>");
658
+ const handleDrop = (e) => {
659
+ e.preventDefault();
660
+ e.stopPropagation();
661
+ e.currentTarget.setAttribute("data-drag-over", "false");
662
+ if (ctx.disabled || ctx.readOnly) {
430
663
  return;
431
- const m = n.dataTransfer.files;
432
- let p = [];
433
- m && (p = Array.isArray(m) ? [...m] : Array.from(m)), p.length > 0 && e.addFiles(p);
434
- }, d = () => {
435
- !e.disabled && !e.readOnly && e.inputRef.current?.click();
436
- }, a = (n) => {
437
- (n.key === "Enter" || n.key === " ") && (n.preventDefault(), !e.disabled && !e.readOnly && e.inputRef.current?.click());
438
- }, l = e.disabled || e.readOnly;
439
- return /* @__PURE__ */ s(ve.Provider, { value: !0, children: /* @__PURE__ */ s(
664
+ }
665
+ const files = e.dataTransfer.files;
666
+ let filesArray = [];
667
+ if (files) {
668
+ filesArray = Array.isArray(files) ? [...files] : Array.from(files);
669
+ }
670
+ if (filesArray.length > 0) {
671
+ ctx.addFiles(filesArray);
672
+ }
673
+ };
674
+ const handleClick = () => {
675
+ if (!ctx.disabled && !ctx.readOnly) {
676
+ ctx.inputRef.current?.click();
677
+ }
678
+ };
679
+ const handleKeyDown = (e) => {
680
+ if (e.key === "Enter" || e.key === " ") {
681
+ e.preventDefault();
682
+ if (!ctx.disabled && !ctx.readOnly) {
683
+ ctx.inputRef.current?.click();
684
+ }
685
+ }
686
+ };
687
+ const isDisabled = ctx.disabled || ctx.readOnly;
688
+ return /* @__PURE__ */ jsx5(DropzoneContext.Provider, { value: true, children: /* @__PURE__ */ jsx5(
440
689
  "div",
441
690
  {
442
- ref: (n) => {
443
- o.current = n, e.dropzoneRef && (e.dropzoneRef.current = n);
691
+ ref: (node) => {
692
+ dropzoneRef.current = node;
693
+ if (ctx.dropzoneRef) {
694
+ ctx.dropzoneRef.current = node;
695
+ }
444
696
  },
445
697
  role: "button",
446
- tabIndex: l ? -1 : 0,
447
- "aria-disabled": e.disabled ? !0 : void 0,
448
- "aria-describedby": e.description,
449
- "aria-invalid": e.isInvalid,
450
- "aria-required": e.isRequired,
451
- onClick: d,
452
- onKeyDown: a,
453
- onDrop: c,
454
- onDragOver: (n) => {
455
- n.preventDefault();
698
+ tabIndex: isDisabled ? -1 : 0,
699
+ "aria-disabled": ctx.disabled ? true : void 0,
700
+ "aria-describedby": ctx.description,
701
+ "aria-invalid": ctx.isInvalid,
702
+ "aria-required": ctx.isRequired,
703
+ onClick: handleClick,
704
+ onKeyDown: handleKeyDown,
705
+ onDrop: handleDrop,
706
+ onDragOver: (e) => {
707
+ e.preventDefault();
456
708
  },
457
- className: i ? r : _(
709
+ className: unstyled ? className : cx3(
458
710
  "default:bg-surface default:border-sm default:border-outline default:relative default:rounded-lg default:border-dashed",
459
711
  "gap-lg flex flex-col items-center justify-center text-center",
460
712
  "default:p-xl",
461
713
  "transition-colors duration-200",
462
- !l && "default:hover:bg-surface-hovered",
714
+ !isDisabled && "default:hover:bg-surface-hovered",
463
715
  "data-[drag-over=true]:border-outline-high data-[drag-over=true]:bg-surface-hovered data-[drag-over=true]:border-solid",
464
716
  // Disabled: more visually disabled (opacity + cursor)
465
- e.disabled && "cursor-not-allowed opacity-50",
717
+ ctx.disabled && "cursor-not-allowed opacity-50",
466
718
  // ReadOnly: less visually disabled (just cursor, no opacity)
467
- e.readOnly && !e.disabled && "cursor-default",
468
- r
719
+ ctx.readOnly && !ctx.disabled && "cursor-default",
720
+ className
469
721
  ),
470
- onDragEnter: (n) => {
471
- l || n.currentTarget.setAttribute("data-drag-over", "true");
722
+ onDragEnter: (e) => {
723
+ if (!isDisabled) {
724
+ e.currentTarget.setAttribute("data-drag-over", "true");
725
+ }
472
726
  },
473
- onDragLeave: (n) => {
474
- n.currentTarget.setAttribute("data-drag-over", "false");
727
+ onDragLeave: (e) => {
728
+ e.currentTarget.setAttribute("data-drag-over", "false");
475
729
  },
476
- children: t
730
+ children
477
731
  }
478
732
  ) });
479
733
  }
480
- te.displayName = "FileUploadDropzone";
481
- const re = ({
482
- className: t,
483
- file: r,
484
- fallback: i = "📄",
485
- ...e
734
+ Dropzone.displayName = "FileUploadDropzone";
735
+
736
+ // src/file-upload/FileUploadPreviewImage.tsx
737
+ import { cx as cx4 } from "class-variance-authority";
738
+ import { useEffect as useEffect2, useState as useState3 } from "react";
739
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
740
+ var PreviewImage = ({
741
+ className,
742
+ file,
743
+ fallback = "\u{1F4C4}",
744
+ ...props
486
745
  }) => {
487
- const [o, c] = G(!1), [d, a] = G(!1), l = r.type.startsWith("image/"), n = l ? URL.createObjectURL(r) : null;
488
- return de(() => () => {
489
- n && URL.revokeObjectURL(n);
490
- }, [n]), !l || o ? /* @__PURE__ */ s(
491
- "div",
492
- {
493
- "data-spark-component": "file-upload-preview-image",
494
- className: _(
495
- "bg-neutral-container flex items-center justify-center rounded-md",
496
- t
497
- ),
498
- ...e,
499
- children: i
500
- }
501
- ) : /* @__PURE__ */ M(
746
+ const [imageError, setImageError] = useState3(false);
747
+ const [imageLoaded, setImageLoaded] = useState3(false);
748
+ const isImage = file.type.startsWith("image/");
749
+ const imageUrl = isImage ? URL.createObjectURL(file) : null;
750
+ useEffect2(() => {
751
+ return () => {
752
+ if (imageUrl) {
753
+ URL.revokeObjectURL(imageUrl);
754
+ }
755
+ };
756
+ }, [imageUrl]);
757
+ if (!isImage || imageError) {
758
+ return /* @__PURE__ */ jsx6(
759
+ "div",
760
+ {
761
+ "data-spark-component": "file-upload-preview-image",
762
+ className: cx4(
763
+ "bg-neutral-container flex items-center justify-center rounded-md",
764
+ className
765
+ ),
766
+ ...props,
767
+ children: fallback
768
+ }
769
+ );
770
+ }
771
+ return /* @__PURE__ */ jsxs3(
502
772
  "div",
503
773
  {
504
774
  "data-spark-component": "file-upload-preview-image",
505
- className: _("bg-neutral-container overflow-hidden", t),
506
- ...e,
775
+ className: cx4("bg-neutral-container overflow-hidden", className),
776
+ ...props,
507
777
  children: [
508
- /* @__PURE__ */ s(
778
+ /* @__PURE__ */ jsx6(
509
779
  "img",
510
780
  {
511
- src: n,
512
- alt: r.name,
513
- className: _("size-full object-cover", !d && "opacity-0"),
514
- onLoad: () => a(!0),
515
- onError: () => c(!0)
781
+ src: imageUrl,
782
+ alt: file.name,
783
+ className: cx4("size-full object-cover", !imageLoaded && "opacity-0"),
784
+ onLoad: () => setImageLoaded(true),
785
+ onError: () => setImageError(true)
516
786
  }
517
787
  ),
518
- !d && /* @__PURE__ */ s("div", { className: "absolute inset-0 flex items-center justify-center", children: i })
788
+ !imageLoaded && /* @__PURE__ */ jsx6("div", { className: "absolute inset-0 flex items-center justify-center", children: fallback })
519
789
  ]
520
790
  }
521
791
  );
522
792
  };
523
- re.displayName = "FileUpload.PreviewImage";
524
- const Q = ({
525
- className: t,
526
- rejectedFile: r,
527
- onClick: i,
528
- ...e
793
+ PreviewImage.displayName = "FileUpload.PreviewImage";
794
+
795
+ // src/file-upload/FileUploadRejectedFile.tsx
796
+ import { WarningOutline } from "@spark-ui/icons/WarningOutline";
797
+ import { cx as cx6 } from "class-variance-authority";
798
+
799
+ // src/file-upload/FileUploadRejectedFileDeleteTrigger.tsx
800
+ import { Close as Close2 } from "@spark-ui/icons/Close";
801
+ import { cx as cx5 } from "class-variance-authority";
802
+ import { useRef as useRef4 } from "react";
803
+ import { jsx as jsx7 } from "react/jsx-runtime";
804
+ var RejectedFileDeleteTrigger = ({
805
+ className,
806
+ rejectedFile,
807
+ onClick,
808
+ ...props
529
809
  }) => {
530
810
  const {
531
- removeRejectedFile: o,
532
- triggerRef: c,
533
- dropzoneRef: d,
534
- rejectedFileDeleteButtonRefs: a,
535
- inputRef: l,
536
- disabled: n,
537
- readOnly: m,
538
- rejectedFiles: p
539
- } = S(), x = z(null), f = p.findIndex(
540
- (u) => u.file.name === r.file.name && u.file.size === r.file.size
541
- ), E = (u) => {
542
- n || m || (o(f), requestAnimationFrame(() => {
543
- const I = a.current.filter(Boolean);
544
- if (I.length > 0) {
545
- const b = Math.min(f, I.length - 1), g = I[b];
546
- g && g.focus();
811
+ removeRejectedFile,
812
+ triggerRef,
813
+ dropzoneRef,
814
+ rejectedFileDeleteButtonRefs,
815
+ inputRef,
816
+ disabled,
817
+ readOnly,
818
+ rejectedFiles
819
+ } = useFileUploadContext();
820
+ const buttonRef = useRef4(null);
821
+ const rejectedFileIndex = rejectedFiles.findIndex(
822
+ (rf) => rf.file.name === rejectedFile.file.name && rf.file.size === rejectedFile.file.size
823
+ );
824
+ const handleClick = (e) => {
825
+ if (disabled || readOnly) {
826
+ return;
827
+ }
828
+ removeRejectedFile(rejectedFileIndex);
829
+ requestAnimationFrame(() => {
830
+ const remainingButtons = rejectedFileDeleteButtonRefs.current.filter(Boolean);
831
+ if (remainingButtons.length > 0) {
832
+ const targetIndex = Math.min(rejectedFileIndex, remainingButtons.length - 1);
833
+ const nextButton = remainingButtons[targetIndex];
834
+ if (nextButton) {
835
+ nextButton.focus();
836
+ }
547
837
  } else {
548
- const b = me(
549
- [c.current, d.current],
550
- l
838
+ const focusTarget = findFocusableElement(
839
+ [triggerRef.current, dropzoneRef.current],
840
+ inputRef
551
841
  );
552
- b && b.focus();
842
+ if (focusTarget) {
843
+ focusTarget.focus();
844
+ }
845
+ }
846
+ });
847
+ onClick?.(e);
848
+ };
849
+ const setRef = (node) => {
850
+ buttonRef.current = node;
851
+ if (node) {
852
+ while (rejectedFileDeleteButtonRefs.current.length <= rejectedFileIndex) {
853
+ rejectedFileDeleteButtonRefs.current.push(null);
854
+ }
855
+ rejectedFileDeleteButtonRefs.current[rejectedFileIndex] = node;
856
+ } else {
857
+ if (rejectedFileDeleteButtonRefs.current[rejectedFileIndex]) {
858
+ rejectedFileDeleteButtonRefs.current[rejectedFileIndex] = null;
553
859
  }
554
- }), i?.(u));
860
+ }
555
861
  };
556
- return /* @__PURE__ */ s(
557
- ue,
862
+ return /* @__PURE__ */ jsx7(
863
+ IconButton,
558
864
  {
559
- ref: (u) => {
560
- if (x.current = u, u) {
561
- for (; a.current.length <= f; )
562
- a.current.push(null);
563
- a.current[f] = u;
564
- } else
565
- a.current[f] && (a.current[f] = null);
566
- },
865
+ ref: setRef,
567
866
  "data-spark-component": "file-upload-rejected-file-delete-trigger",
568
- className: _(t),
569
- onClick: E,
570
- disabled: n || m,
867
+ className: cx5(className),
868
+ onClick: handleClick,
869
+ disabled: disabled || readOnly,
571
870
  size: "sm",
572
871
  design: "contrast",
573
872
  intent: "surface",
574
- ...e,
575
- children: /* @__PURE__ */ s(K, { size: "sm", children: /* @__PURE__ */ s(ce, {}) })
873
+ ...props,
874
+ children: /* @__PURE__ */ jsx7(Icon, { size: "sm", children: /* @__PURE__ */ jsx7(Close2, {}) })
576
875
  }
577
876
  );
578
877
  };
579
- Q.displayName = "FileUpload.RejectedFileDeleteTrigger";
580
- const ie = ({
581
- className: t,
582
- rejectedFile: r,
583
- renderError: i,
584
- deleteButtonAriaLabel: e,
585
- ...o
878
+ RejectedFileDeleteTrigger.displayName = "FileUpload.RejectedFileDeleteTrigger";
879
+
880
+ // src/file-upload/FileUploadRejectedFile.tsx
881
+ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
882
+ var RejectedFile = ({
883
+ className,
884
+ rejectedFile,
885
+ renderError,
886
+ deleteButtonAriaLabel,
887
+ ...props
586
888
  }) => {
587
- const { locale: c } = S();
588
- return /* @__PURE__ */ M(
889
+ const { locale } = useFileUploadContext();
890
+ return /* @__PURE__ */ jsxs4(
589
891
  "li",
590
892
  {
591
893
  "data-spark-component": "file-upload-rejected-file",
592
- className: _(
894
+ className: cx6(
593
895
  "relative",
594
896
  "default:bg-surface default:border-sm default:border-outline default:p-md default:rounded-md",
595
897
  "gap-md flex items-center justify-between default:w-full",
596
898
  "border-error border-md",
597
- t
899
+ className
598
900
  ),
599
- ...o,
901
+ ...props,
600
902
  children: [
601
- /* @__PURE__ */ s("div", { className: "size-sz-36 bg-error-container flex items-center justify-center rounded-md", children: /* @__PURE__ */ s(K, { size: "md", className: "text-error", children: /* @__PURE__ */ s(je, {}) }) }),
602
- /* @__PURE__ */ s("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ M("div", { className: "gap-md flex flex-col", children: [
603
- /* @__PURE__ */ M("div", { className: "gap-md flex flex-row items-center justify-between", children: [
604
- /* @__PURE__ */ s("p", { className: "text-body-2 truncate font-medium", children: r.file.name }),
605
- /* @__PURE__ */ s("p", { className: "text-caption opacity-dim-1", children: W(r.file.size, c) })
903
+ /* @__PURE__ */ jsx8("div", { className: "size-sz-36 bg-error-container flex items-center justify-center rounded-md", children: /* @__PURE__ */ jsx8(Icon, { size: "md", className: "text-error", children: /* @__PURE__ */ jsx8(WarningOutline, {}) }) }),
904
+ /* @__PURE__ */ jsx8("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxs4("div", { className: "gap-md flex flex-col", children: [
905
+ /* @__PURE__ */ jsxs4("div", { className: "gap-md flex flex-row items-center justify-between", children: [
906
+ /* @__PURE__ */ jsx8("p", { className: "text-body-2 truncate font-medium", children: rejectedFile.file.name }),
907
+ /* @__PURE__ */ jsx8("p", { className: "text-caption opacity-dim-1", children: formatFileSize(rejectedFile.file.size, locale) })
606
908
  ] }),
607
- /* @__PURE__ */ s("div", { className: "gap-xs flex flex-col", children: r.errors.map((d, a) => /* @__PURE__ */ s("div", { className: "text-caption text-error", "data-error-code": d, children: i(d) }, a)) })
909
+ /* @__PURE__ */ jsx8("div", { className: "gap-xs flex flex-col", children: rejectedFile.errors.map((error, errorIndex) => /* @__PURE__ */ jsx8("div", { className: "text-caption text-error", "data-error-code": error, children: renderError(error) }, errorIndex)) })
608
910
  ] }) }),
609
- /* @__PURE__ */ s(Q, { "aria-label": e, rejectedFile: r })
911
+ /* @__PURE__ */ jsx8(RejectedFileDeleteTrigger, { "aria-label": deleteButtonAriaLabel, rejectedFile })
610
912
  ]
611
913
  }
612
914
  );
613
915
  };
614
- ie.displayName = "FileUpload.RejectedFile";
615
- const ne = ({
616
- className: t,
617
- children: r,
618
- asChild: i = !1,
619
- unstyled: e = !1,
620
- design: o = "filled",
621
- intent: c = "basic",
622
- size: d = "md",
623
- shape: a = "rounded",
624
- ref: l,
625
- ...n
916
+ RejectedFile.displayName = "FileUpload.RejectedFile";
917
+
918
+ // src/file-upload/FileUploadTrigger.tsx
919
+ import { cx as cx7 } from "class-variance-authority";
920
+ import { jsx as jsx9 } from "react/jsx-runtime";
921
+ var Trigger = ({
922
+ className,
923
+ children,
924
+ asChild = false,
925
+ unstyled = false,
926
+ design = "filled",
927
+ intent = "basic",
928
+ size = "md",
929
+ shape = "rounded",
930
+ ref,
931
+ ...props
626
932
  }) => {
627
- const { inputRef: m, triggerRef: p, disabled: x, readOnly: f, description: E, isInvalid: F, isRequired: u } = S(), I = Ce(), b = (R) => {
628
- R.stopPropagation(), R.preventDefault(), !x && !f && m.current?.click();
629
- }, g = (R) => {
630
- p && (p.current = R), l && (typeof l == "function" ? l(R) : l.current = R);
933
+ const { inputRef, triggerRef, disabled, readOnly, description, isInvalid, isRequired } = useFileUploadContext();
934
+ const isInsideDropzone = useDropzoneContext();
935
+ const handleClick = (e) => {
936
+ e.stopPropagation();
937
+ e.preventDefault();
938
+ if (!disabled && !readOnly) {
939
+ inputRef.current?.click();
940
+ }
941
+ };
942
+ const handleRef = (node) => {
943
+ if (triggerRef) {
944
+ triggerRef.current = node;
945
+ }
946
+ if (ref) {
947
+ if (typeof ref === "function") {
948
+ ref(node);
949
+ } else {
950
+ ref.current = node;
951
+ }
952
+ }
631
953
  };
632
- let U, C;
633
- if (I) {
634
- U = "span";
635
- const R = e ? t : Te({
636
- design: o,
637
- intent: c,
638
- size: d,
639
- shape: a,
640
- disabled: x || f,
641
- className: t
954
+ let Component;
955
+ let componentProps;
956
+ if (isInsideDropzone) {
957
+ Component = "span";
958
+ const spanStyles = unstyled ? className : buttonStyles({
959
+ design,
960
+ intent,
961
+ size,
962
+ shape,
963
+ disabled: disabled || readOnly,
964
+ className
642
965
  });
643
- C = {
644
- ref: g,
966
+ componentProps = {
967
+ ref: handleRef,
645
968
  "data-spark-component": "file-upload-trigger",
646
- className: R
969
+ className: spanStyles
647
970
  // No onClick, no role, no tabIndex - Dropzone handles interaction
648
971
  // No aria attributes here - they're on the Dropzone
649
972
  };
650
- } else
651
- U = i ? Oe : e ? "button" : De, C = {
652
- ref: g,
973
+ } else {
974
+ const buttonComponent = unstyled ? "button" : Button;
975
+ Component = asChild ? Slot : buttonComponent;
976
+ componentProps = {
977
+ ref: handleRef,
653
978
  type: "button",
654
- design: o,
655
- intent: c,
656
- size: d,
657
- shape: a,
979
+ design,
980
+ intent,
981
+ size,
982
+ shape,
658
983
  "data-spark-component": "file-upload-trigger",
659
- className: _(t),
660
- disabled: x || f,
661
- onClick: b,
662
- "aria-describedby": E,
663
- "aria-invalid": F,
664
- "aria-required": u,
665
- ...n
984
+ className: cx7(className),
985
+ disabled: disabled || readOnly,
986
+ onClick: handleClick,
987
+ "aria-describedby": description,
988
+ "aria-invalid": isInvalid,
989
+ "aria-required": isRequired,
990
+ ...props
666
991
  };
667
- return /* @__PURE__ */ s(U, { ...C, children: r });
992
+ }
993
+ return /* @__PURE__ */ jsx9(Component, { ...componentProps, children });
668
994
  };
669
- ne.displayName = "FileUpload.Trigger";
670
- const ke = Object.assign(ge, {
995
+ Trigger.displayName = "FileUpload.Trigger";
996
+
997
+ // src/file-upload/index.ts
998
+ var FileUpload2 = Object.assign(FileUpload, {
671
999
  // Main input components
672
- Trigger: ne,
673
- Dropzone: te,
1000
+ Trigger,
1001
+ Dropzone,
674
1002
  // Context components
675
- Context: ee,
676
- AcceptedFile: Z,
677
- RejectedFile: ie,
1003
+ Context,
1004
+ AcceptedFile,
1005
+ RejectedFile,
678
1006
  // Helpers for custom renders
679
- PreviewImage: re,
680
- ItemDeleteTrigger: J,
681
- RejectedFileDeleteTrigger: Q
1007
+ PreviewImage,
1008
+ ItemDeleteTrigger,
1009
+ RejectedFileDeleteTrigger
682
1010
  });
683
- ke.displayName = "FileUpload";
684
- ne.displayName = "FileUpload.Trigger";
685
- te.displayName = "FileUpload.Dropzone";
686
- ee.displayName = "FileUpload.Context";
687
- J.displayName = "FileUpload.ItemDeleteTrigger";
688
- re.displayName = "FileUpload.PreviewImage";
689
- Z.displayName = "FileUpload.AcceptedFile";
690
- ie.displayName = "FileUpload.RejectedFile";
691
- Q.displayName = "FileUpload.RejectedFileDeleteTrigger";
1011
+ FileUpload2.displayName = "FileUpload";
1012
+ Trigger.displayName = "FileUpload.Trigger";
1013
+ Dropzone.displayName = "FileUpload.Dropzone";
1014
+ Context.displayName = "FileUpload.Context";
1015
+ ItemDeleteTrigger.displayName = "FileUpload.ItemDeleteTrigger";
1016
+ PreviewImage.displayName = "FileUpload.PreviewImage";
1017
+ AcceptedFile.displayName = "FileUpload.AcceptedFile";
1018
+ RejectedFile.displayName = "FileUpload.RejectedFile";
1019
+ RejectedFileDeleteTrigger.displayName = "FileUpload.RejectedFileDeleteTrigger";
692
1020
  export {
693
- O as FILE_UPLOAD_ERRORS,
694
- ke as FileUpload
1021
+ FILE_UPLOAD_ERRORS,
1022
+ FileUpload2 as FileUpload
695
1023
  };
696
- //# sourceMappingURL=index.mjs.map
1024
+ //# sourceMappingURL=index.mjs.map