@spark-ui/components 13.1.2 → 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 -893
  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 +8 -7
  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,2 +1,2255 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),me=require("../form-field/index.js"),f=require("react"),pe=require("@spark-ui/hooks/use-combined-state"),ge=require("@spark-ui/icons/CvOutline"),ve=require("@spark-ui/icons/FilePdfOutline"),xe=require("@spark-ui/icons/ImageOutline"),Fe=require("@spark-ui/icons/PlayOutline"),w=require("../index-DnaHaH_0.js"),V=require("../Icon-Bf0XrmiR.js"),be=require("../progress/index.js"),se=require("@spark-ui/icons/Close"),ae=require("../IconButton-Bf-EDzpI.js"),he=require("@spark-ui/icons/WarningOutline"),ne=require("../Button-C3xHNaGl.js"),Ie=require("../Slot-ghrohQLA.js"),T={TOO_MANY_FILES:"TOO_MANY_FILES",FILE_INVALID_TYPE:"FILE_INVALID_TYPE",FILE_TOO_LARGE:"FILE_TOO_LARGE",FILE_TOO_SMALL:"FILE_TOO_SMALL",FILE_INVALID:"FILE_INVALID",FILE_EXISTS:"FILE_EXISTS"};function ie(t,r){return r?r.split(",").map(e=>e.trim()).some(e=>{if(e.includes("/")){if(e.endsWith("/*")){const c=e.slice(0,-2);return t.type.startsWith(c+"/")}return t.type===e}if(e.startsWith(".")){const c=e.toLowerCase();return t.name.toLowerCase().endsWith(c)}const l="."+e.toLowerCase();return t.name.toLowerCase().endsWith(l)}):!0}function ye(t,r,n,e){const l=e||le();return r!==void 0&&t.size<r?{valid:!1,error:`File "${t.name}" is too small. Minimum size is ${B(r,l)}.`}:n!==void 0&&t.size>n?{valid:!1,error:`File "${t.name}" is too large. Maximum size is ${B(n,l)}.`}:{valid:!0}}function le(){return typeof navigator<"u"&&navigator.language?navigator.language:"en"}function B(t,r){const n=r||le();let e=n;if(n.length===2&&(e=n==="fr"?"fr-FR":"en-US"),t===0)return new Intl.NumberFormat(e,{style:"unit",unit:"byte",unitDisplay:"long",minimumFractionDigits:0,maximumFractionDigits:0}).format(0);const l=1024,d=Math.floor(Math.log(t)/Math.log(l)),a=["byte","kilobyte","megabyte","gigabyte"][d]||"byte",o=t/Math.pow(l,d),i=d===0?"long":"short";return new Intl.NumberFormat(e,{style:"unit",unit:a,unitDisplay:i,minimumFractionDigits:0,maximumFractionDigits:2}).format(o)}function je(t){const r=t.type.toLowerCase(),n=t.name.toLowerCase();return r.startsWith("image/")||/\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)$/i.test(n)?f.createElement(xe.ImageOutline):r==="application/pdf"||n.endsWith(".pdf")?f.createElement(ve.FilePdfOutline):r.startsWith("video/")||/\.(mp4|avi|mov|wmv|flv|webm|mkv)$/i.test(n)?f.createElement(Fe.PlayOutline):f.createElement(ge.CvOutline)}function Re(t){if(!t)return!1;if(t.tabIndex>=0)return!0;const n=String(t.contentEditable)==="true";return t instanceof HTMLInputElement||t instanceof HTMLButtonElement||t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement||t instanceof HTMLAnchorElement&&!!t.href||n}function oe(t,r){for(const n of t)if(Re(n))return n;return r.current?r.current:null}function Le({defaultValue:t=[],value:r,onFileAccept:n,onFileReject:e,onFileChange:l,multiple:d=!0,accept:c,maxFiles:a,maxFileSize:o,minFileSize:i,disabled:p=!1,readOnly:v=!1,locale:E}){const m=E||(typeof navigator<"u"&&navigator.language?navigator.language:"en"),[N,g]=pe.useCombinedState(r,t),u=N??[],y=g,[b,x]=f.useState([]),U=O=>{if(p||v)return;x([]);const D=[],k=(R,L)=>L.some(I=>I.name===R.name&&I.size===R.size),h=(R,L)=>{const I=D.find(A=>A.file.name===R.name&&A.file.size===R.size);I?I.errors.includes(L)||I.errors.push(L):D.push({file:R,errors:[L]})};y(R=>{const L=R??[],I=a!==void 0?a-L.length:void 0;I!==void 0&&I<=0&&O.forEach(F=>{h(F,T.TOO_MANY_FILES)});let A=O;c&&(O.filter(_=>!ie(_,c)).forEach(_=>{h(_,T.FILE_INVALID_TYPE)}),A=O.filter(_=>ie(_,c)));let $=A;(i!==void 0||o!==void 0)&&($=A.filter(F=>ye(F,i,o,m).valid?!0:(o!==void 0&&F.size>o?h(F,T.FILE_TOO_LARGE):i!==void 0&&F.size<i?h(F,T.FILE_TOO_SMALL):h(F,T.FILE_INVALID),!1)));const Y=new Map,P=$.filter(F=>{const _=`${F.name}-${F.size}`;return k(F,L)||Y.has(_)?(h(F,T.FILE_EXISTS),!1):(Y.set(_,F),!0)});let C=d?P:P.slice(0,1);I!==void 0&&(I<=0?C=[]:C.length>I&&(C.forEach(F=>{h(F,T.TOO_MANY_FILES)}),C=[]));const re=d?[...L,...C]:C,H=[...D];return x(H),C.length>0&&n&&n({files:C}),H.length>0&&e&&e({files:H}),l&&l({acceptedFiles:re,rejectedFiles:H}),re})},z=O=>{p||v||y(D=>{const h=(D??[]).filter((L,I)=>I!==O);let R=b;return a!==void 0&&h.length<a&&(R=b.filter(L=>!L.errors.includes(T.TOO_MANY_FILES)),x(R)),l&&l({acceptedFiles:h,rejectedFiles:R}),h})},j=()=>{p||v||(y([]),x([]),l&&l({acceptedFiles:[],rejectedFiles:[]}))},W=O=>{p||v||x(D=>D.filter((k,h)=>h!==O))},S=()=>{x([])},M=a!==void 0&&u.length>=a;return{files:u,rejectedFiles:b,addFiles:U,removeFile:z,removeRejectedFile:W,clearFiles:j,clearRejectedFiles:S,maxFilesReached:M}}const ce=f.createContext(null),Ee=":file-upload",de=({asChild:t=!1,children:r,defaultValue:n=[],value:e,onFileAccept:l,onFileReject:d,onFileChange:c,multiple:a=!0,accept:o,maxFiles:i,maxFileSize:p,minFileSize:v,disabled:E=!1,readOnly:m=!1,locale:N})=>{const g=me.useFormFieldControl(),u=f.useId(),y=g.id||`${Ee}-${u}`,b=g.name,x=f.useRef(null),U=f.useRef(null),z=f.useRef(null),j=f.useRef([]),W=f.useRef([]),S=g.disabled??E,M=g.readOnly??m,{files:O,rejectedFiles:D,addFiles:k,removeFile:h,removeRejectedFile:R,clearFiles:L,clearRejectedFiles:I,maxFilesReached:A}=Le({defaultValue:n,value:e,onFileAccept:l,onFileReject:d,onFileChange:c,multiple:a,accept:o,maxFiles:i,maxFileSize:p,minFileSize:v,disabled:S,readOnly:M,locale:N}),$=()=>{L(),j.current=[]},Y=()=>{I(),W.current=[]};return s.jsx(ce.Provider,{value:{inputRef:x,files:O,rejectedFiles:D,addFiles:k,removeFile:h,removeRejectedFile:R,clearFiles:$,clearRejectedFiles:Y,triggerRef:U,dropzoneRef:z,deleteButtonRefs:j,rejectedFileDeleteButtonRefs:W,multiple:a,maxFiles:i,maxFilesReached:A,disabled:S,readOnly:M,locale:N||(typeof navigator<"u"&&navigator.language?navigator.language:"en"),description:g.description,isInvalid:g.isInvalid,isRequired:g.isRequired},children:s.jsxs("div",{className:"relative",children:[r,s.jsx("input",{ref:x,type:"file",tabIndex:-1,id:y,multiple:a,name:b,accept:o,disabled:S,readOnly:M&&!S,required:g.isRequired,"aria-invalid":g.isInvalid,"aria-describedby":g.description,"aria-label":g.labelId?void 0:"Upload files",className:"sr-only",onChange:P=>{if(P.target.files&&!S&&!M){k(Array.from(P.target.files));try{P.target.value=""}catch{}}}})]})})};de.displayName="FileUpload";const q=()=>{const t=f.useContext(ce);if(!t)throw Error("useFileUploadContext must be used within a FileUpload provider");return t},X=({className:t,file:r,onClick:n,...e})=>{const{removeFile:l,triggerRef:d,dropzoneRef:c,deleteButtonRefs:a,inputRef:o,disabled:i,readOnly:p,files:v}=q(),E=f.useRef(null),m=v.findIndex(u=>u.name===r.name&&u.size===r.size),N=u=>{i||p||(l(m),requestAnimationFrame(()=>{const y=a.current.filter(Boolean);if(y.length>0){const b=Math.min(m,y.length-1),x=y[b];x&&x.focus()}else{const b=oe([d.current,c.current],o);b&&b.focus()}}),n?.(u))},g=u=>{if(E.current=u,u){for(;a.current.length<=m;)a.current.push(null);a.current[m]=u}else a.current[m]&&(a.current[m]=null)};return s.jsx(ae.IconButton,{ref:g,"data-spark-component":"file-upload-item-delete-trigger",className:w.cx(t),onClick:N,disabled:i||p,size:"sm",design:"contrast",intent:"surface",...e,children:s.jsx(V.Icon,{size:"sm",children:s.jsx(se.Close,{})})})};X.displayName="FileUpload.ItemDeleteTrigger";const K=({className:t,file:r,uploadProgress:n,deleteButtonAriaLabel:e,progressAriaLabel:l,...d})=>{const{locale:c}=q(),[a,o]=f.useState(n!==void 0);f.useEffect(()=>{o(n!==void 0)},[n]);const i=f.useCallback(()=>{o(!1)},[]);return s.jsxs("li",{"data-spark-component":"file-upload-accepted-file",className:w.cx("relative","default:bg-surface default:border-sm default:border-outline default:p-md default:rounded-md","gap-md flex items-center justify-between default:w-full",t),...d,children:[s.jsx("div",{className:"size-sz-36 bg-support-container flex items-center justify-center rounded-md",children:s.jsx(V.Icon,{size:"md",children:je(r)})}),s.jsxs("div",{className:"gap-md relative flex min-w-0 flex-1 flex-row items-center justify-between self-stretch",children:[s.jsx("p",{className:"text-body-2 truncate font-medium",children:r.name}),s.jsx("p",{className:"text-caption opacity-dim-1",children:B(r.size,c)}),a&&n!==void 0&&s.jsx("div",{className:"absolute bottom-0 left-0 w-full",children:s.jsx(be.Progress,{value:n,max:100,"aria-label":l,onComplete:i})})]}),s.jsx(X,{"aria-label":e,file:r})]})};K.displayName="FileUpload.AcceptedFile";const J=({children:t})=>{const{files:r=[],rejectedFiles:n=[],locale:e}=q();return s.jsx(s.Fragment,{children:t({acceptedFiles:r,rejectedFiles:n,formatFileSize:B,locale:e})})};J.displayName="FileUpload.Context";const ue=f.createContext(!1),Ne=()=>f.useContext(ue);function Q({children:t,className:r,unstyled:n=!1}){const e=q(),l=f.useRef(null);if(!e)throw new Error("FileUploadDropzone must be used inside <FileUpload>");const d=i=>{if(i.preventDefault(),i.stopPropagation(),i.currentTarget.setAttribute("data-drag-over","false"),e.disabled||e.readOnly)return;const p=i.dataTransfer.files;let v=[];p&&(v=Array.isArray(p)?[...p]:Array.from(p)),v.length>0&&e.addFiles(v)},c=()=>{!e.disabled&&!e.readOnly&&e.inputRef.current?.click()},a=i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),!e.disabled&&!e.readOnly&&e.inputRef.current?.click())},o=e.disabled||e.readOnly;return s.jsx(ue.Provider,{value:!0,children:s.jsx("div",{ref:i=>{l.current=i,e.dropzoneRef&&(e.dropzoneRef.current=i)},role:"button",tabIndex:o?-1:0,"aria-disabled":e.disabled?!0:void 0,"aria-describedby":e.description,"aria-invalid":e.isInvalid,"aria-required":e.isRequired,onClick:c,onKeyDown:a,onDrop:d,onDragOver:i=>{i.preventDefault()},className:n?r:w.cx("default:bg-surface default:border-sm default:border-outline default:relative default:rounded-lg default:border-dashed","gap-lg flex flex-col items-center justify-center text-center","default:p-xl","transition-colors duration-200",!o&&"default:hover:bg-surface-hovered","data-[drag-over=true]:border-outline-high data-[drag-over=true]:bg-surface-hovered data-[drag-over=true]:border-solid",e.disabled&&"cursor-not-allowed opacity-50",e.readOnly&&!e.disabled&&"cursor-default",r),onDragEnter:i=>{o||i.currentTarget.setAttribute("data-drag-over","true")},onDragLeave:i=>{i.currentTarget.setAttribute("data-drag-over","false")},children:t})})}Q.displayName="FileUploadDropzone";const Z=({className:t,file:r,fallback:n="📄",...e})=>{const[l,d]=f.useState(!1),[c,a]=f.useState(!1),o=r.type.startsWith("image/"),i=o?URL.createObjectURL(r):null;return f.useEffect(()=>()=>{i&&URL.revokeObjectURL(i)},[i]),!o||l?s.jsx("div",{"data-spark-component":"file-upload-preview-image",className:w.cx("bg-neutral-container flex items-center justify-center rounded-md",t),...e,children:n}):s.jsxs("div",{"data-spark-component":"file-upload-preview-image",className:w.cx("bg-neutral-container overflow-hidden",t),...e,children:[s.jsx("img",{src:i,alt:r.name,className:w.cx("size-full object-cover",!c&&"opacity-0"),onLoad:()=>a(!0),onError:()=>d(!0)}),!c&&s.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:n})]})};Z.displayName="FileUpload.PreviewImage";const G=({className:t,rejectedFile:r,onClick:n,...e})=>{const{removeRejectedFile:l,triggerRef:d,dropzoneRef:c,rejectedFileDeleteButtonRefs:a,inputRef:o,disabled:i,readOnly:p,rejectedFiles:v}=q(),E=f.useRef(null),m=v.findIndex(u=>u.file.name===r.file.name&&u.file.size===r.file.size),N=u=>{i||p||(l(m),requestAnimationFrame(()=>{const y=a.current.filter(Boolean);if(y.length>0){const b=Math.min(m,y.length-1),x=y[b];x&&x.focus()}else{const b=oe([d.current,c.current],o);b&&b.focus()}}),n?.(u))},g=u=>{if(E.current=u,u){for(;a.current.length<=m;)a.current.push(null);a.current[m]=u}else a.current[m]&&(a.current[m]=null)};return s.jsx(ae.IconButton,{ref:g,"data-spark-component":"file-upload-rejected-file-delete-trigger",className:w.cx(t),onClick:N,disabled:i||p,size:"sm",design:"contrast",intent:"surface",...e,children:s.jsx(V.Icon,{size:"sm",children:s.jsx(se.Close,{})})})};G.displayName="FileUpload.RejectedFileDeleteTrigger";const ee=({className:t,rejectedFile:r,renderError:n,deleteButtonAriaLabel:e,...l})=>{const{locale:d}=q();return s.jsxs("li",{"data-spark-component":"file-upload-rejected-file",className:w.cx("relative","default:bg-surface default:border-sm default:border-outline default:p-md default:rounded-md","gap-md flex items-center justify-between default:w-full","border-error border-md",t),...l,children:[s.jsx("div",{className:"size-sz-36 bg-error-container flex items-center justify-center rounded-md",children:s.jsx(V.Icon,{size:"md",className:"text-error",children:s.jsx(he.WarningOutline,{})})}),s.jsx("div",{className:"min-w-0 flex-1",children:s.jsxs("div",{className:"gap-md flex flex-col",children:[s.jsxs("div",{className:"gap-md flex flex-row items-center justify-between",children:[s.jsx("p",{className:"text-body-2 truncate font-medium",children:r.file.name}),s.jsx("p",{className:"text-caption opacity-dim-1",children:B(r.file.size,d)})]}),s.jsx("div",{className:"gap-xs flex flex-col",children:r.errors.map((c,a)=>s.jsx("div",{className:"text-caption text-error","data-error-code":c,children:n(c)},a))})]})}),s.jsx(G,{"aria-label":e,rejectedFile:r})]})};ee.displayName="FileUpload.RejectedFile";const te=({className:t,children:r,asChild:n=!1,unstyled:e=!1,design:l="filled",intent:d="basic",size:c="md",shape:a="rounded",ref:o,...i})=>{const{inputRef:p,triggerRef:v,disabled:E,readOnly:m,description:N,isInvalid:g,isRequired:u}=q(),y=Ne(),b=j=>{j.stopPropagation(),j.preventDefault(),!E&&!m&&p.current?.click()},x=j=>{v&&(v.current=j),o&&(typeof o=="function"?o(j):o.current=j)};let U,z;if(y){U="span";const j=e?t:ne.buttonStyles({design:l,intent:d,size:c,shape:a,disabled:E||m,className:t});z={ref:x,"data-spark-component":"file-upload-trigger",className:j}}else{const j=e?"button":ne.Button;U=n?Ie.Slot:j,z={ref:x,type:"button",design:l,intent:d,size:c,shape:a,"data-spark-component":"file-upload-trigger",className:w.cx(t),disabled:E||m,onClick:b,"aria-describedby":N,"aria-invalid":g,"aria-required":u,...i}}return s.jsx(U,{...z,children:r})};te.displayName="FileUpload.Trigger";const fe=Object.assign(de,{Trigger:te,Dropzone:Q,Context:J,AcceptedFile:K,RejectedFile:ee,PreviewImage:Z,ItemDeleteTrigger:X,RejectedFileDeleteTrigger:G});fe.displayName="FileUpload";te.displayName="FileUpload.Trigger";Q.displayName="FileUpload.Dropzone";J.displayName="FileUpload.Context";X.displayName="FileUpload.ItemDeleteTrigger";Z.displayName="FileUpload.PreviewImage";K.displayName="FileUpload.AcceptedFile";ee.displayName="FileUpload.RejectedFile";G.displayName="FileUpload.RejectedFileDeleteTrigger";exports.FILE_UPLOAD_ERRORS=T;exports.FileUpload=fe;
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/file-upload/index.ts
21
+ var file_upload_exports = {};
22
+ __export(file_upload_exports, {
23
+ FILE_UPLOAD_ERRORS: () => FILE_UPLOAD_ERRORS,
24
+ FileUpload: () => FileUpload2
25
+ });
26
+ module.exports = __toCommonJS(file_upload_exports);
27
+
28
+ // src/file-upload/FileUpload.tsx
29
+ var import_form_field = require("@spark-ui/components/form-field");
30
+ var import_react3 = require("react");
31
+
32
+ // src/file-upload/useFileUploadState.tsx
33
+ var import_use_combined_state = require("@spark-ui/hooks/use-combined-state");
34
+ var import_react2 = require("react");
35
+
36
+ // src/file-upload/constants.ts
37
+ var FILE_UPLOAD_ERRORS = {
38
+ /**
39
+ * Exceeds the maxFiles limit
40
+ */
41
+ TOO_MANY_FILES: "TOO_MANY_FILES",
42
+ /**
43
+ * File type not in the accept list
44
+ */
45
+ FILE_INVALID_TYPE: "FILE_INVALID_TYPE",
46
+ /**
47
+ * File size exceeds maxFileSize
48
+ */
49
+ FILE_TOO_LARGE: "FILE_TOO_LARGE",
50
+ /**
51
+ * File size below minFileSize
52
+ */
53
+ FILE_TOO_SMALL: "FILE_TOO_SMALL",
54
+ /**
55
+ * Generic validation failure
56
+ */
57
+ FILE_INVALID: "FILE_INVALID",
58
+ /**
59
+ * Duplicate file detected
60
+ */
61
+ FILE_EXISTS: "FILE_EXISTS"
62
+ };
63
+
64
+ // src/file-upload/utils.ts
65
+ var import_CvOutline = require("@spark-ui/icons/CvOutline");
66
+ var import_FilePdfOutline = require("@spark-ui/icons/FilePdfOutline");
67
+ var import_ImageOutline = require("@spark-ui/icons/ImageOutline");
68
+ var import_PlayOutline = require("@spark-ui/icons/PlayOutline");
69
+ var import_react = require("react");
70
+ function validateFileAccept(file, accept) {
71
+ if (!accept) {
72
+ return true;
73
+ }
74
+ const patterns = accept.split(",").map((pattern) => pattern.trim());
75
+ return patterns.some((pattern) => {
76
+ if (pattern.includes("/")) {
77
+ if (pattern.endsWith("/*")) {
78
+ const baseType = pattern.slice(0, -2);
79
+ return file.type.startsWith(baseType + "/");
80
+ }
81
+ return file.type === pattern;
82
+ }
83
+ if (pattern.startsWith(".")) {
84
+ const extension2 = pattern.toLowerCase();
85
+ const fileName2 = file.name.toLowerCase();
86
+ return fileName2.endsWith(extension2);
87
+ }
88
+ const extension = "." + pattern.toLowerCase();
89
+ const fileName = file.name.toLowerCase();
90
+ return fileName.endsWith(extension);
91
+ });
92
+ }
93
+ function validateFileSize(file, minFileSize, maxFileSize, locale) {
94
+ const defaultLocale = locale || getDefaultLocale();
95
+ if (minFileSize !== void 0 && file.size < minFileSize) {
96
+ const errorMessage = `File "${file.name}" is too small. Minimum size is ${formatFileSize(minFileSize, defaultLocale)}.`;
97
+ return {
98
+ valid: false,
99
+ error: errorMessage
100
+ };
101
+ }
102
+ if (maxFileSize !== void 0 && file.size > maxFileSize) {
103
+ const errorMessage = `File "${file.name}" is too large. Maximum size is ${formatFileSize(maxFileSize, defaultLocale)}.`;
104
+ return {
105
+ valid: false,
106
+ error: errorMessage
107
+ };
108
+ }
109
+ return { valid: true };
110
+ }
111
+ function getDefaultLocale() {
112
+ if (typeof navigator !== "undefined" && navigator.language) {
113
+ return navigator.language;
114
+ }
115
+ return "en";
116
+ }
117
+ function formatFileSize(bytes, locale) {
118
+ const defaultLocale = locale || getDefaultLocale();
119
+ let normalizedLocale = defaultLocale;
120
+ if (defaultLocale.length === 2) {
121
+ normalizedLocale = defaultLocale === "fr" ? "fr-FR" : "en-US";
122
+ }
123
+ if (bytes === 0) {
124
+ const formatter2 = new Intl.NumberFormat(normalizedLocale, {
125
+ style: "unit",
126
+ unit: "byte",
127
+ unitDisplay: "long",
128
+ minimumFractionDigits: 0,
129
+ maximumFractionDigits: 0
130
+ });
131
+ return formatter2.format(0);
132
+ }
133
+ const k = 1024;
134
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
135
+ const units = ["byte", "kilobyte", "megabyte", "gigabyte"];
136
+ const unit = units[i] || "byte";
137
+ const size = bytes / Math.pow(k, i);
138
+ const unitDisplay = i === 0 ? "long" : "short";
139
+ const formatter = new Intl.NumberFormat(normalizedLocale, {
140
+ style: "unit",
141
+ unit,
142
+ unitDisplay,
143
+ minimumFractionDigits: 0,
144
+ maximumFractionDigits: 2
145
+ });
146
+ return formatter.format(size);
147
+ }
148
+ function getFileIcon(file) {
149
+ const fileType = file.type.toLowerCase();
150
+ const fileName = file.name.toLowerCase();
151
+ if (fileType.startsWith("image/") || /\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)$/i.test(fileName)) {
152
+ return (0, import_react.createElement)(import_ImageOutline.ImageOutline);
153
+ }
154
+ if (fileType === "application/pdf" || fileName.endsWith(".pdf")) {
155
+ return (0, import_react.createElement)(import_FilePdfOutline.FilePdfOutline);
156
+ }
157
+ if (fileType.startsWith("video/") || /\.(mp4|avi|mov|wmv|flv|webm|mkv)$/i.test(fileName)) {
158
+ return (0, import_react.createElement)(import_PlayOutline.PlayOutline);
159
+ }
160
+ return (0, import_react.createElement)(import_CvOutline.CvOutline);
161
+ }
162
+ function isFocusable(element) {
163
+ if (!element) {
164
+ return false;
165
+ }
166
+ const tabIndex = element.tabIndex;
167
+ if (tabIndex >= 0) {
168
+ return true;
169
+ }
170
+ const isContentEditable = String(element.contentEditable) === "true";
171
+ const naturallyFocusable = element instanceof HTMLInputElement || element instanceof HTMLButtonElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement || element instanceof HTMLAnchorElement && Boolean(element.href) || isContentEditable;
172
+ return naturallyFocusable;
173
+ }
174
+ function findFocusableElement(candidates, inputRef) {
175
+ for (const candidate of candidates) {
176
+ if (isFocusable(candidate)) {
177
+ return candidate;
178
+ }
179
+ }
180
+ if (inputRef.current) {
181
+ return inputRef.current;
182
+ }
183
+ return null;
184
+ }
185
+
186
+ // src/file-upload/useFileUploadState.tsx
187
+ function useFileUploadState({
188
+ defaultValue = [],
189
+ value: controlledValue,
190
+ onFileAccept,
191
+ onFileReject,
192
+ onFileChange,
193
+ multiple = true,
194
+ accept,
195
+ maxFiles,
196
+ maxFileSize,
197
+ minFileSize,
198
+ disabled = false,
199
+ readOnly = false,
200
+ locale
201
+ }) {
202
+ const defaultLocale = locale || (typeof navigator !== "undefined" && navigator.language ? navigator.language : "en");
203
+ const [filesState, setFilesState] = (0, import_use_combined_state.useCombinedState)(controlledValue, defaultValue);
204
+ const files = filesState ?? [];
205
+ const setFiles = setFilesState;
206
+ const [rejectedFiles, setRejectedFiles] = (0, import_react2.useState)([]);
207
+ const addFiles = (newFiles) => {
208
+ if (disabled || readOnly) {
209
+ return;
210
+ }
211
+ setRejectedFiles([]);
212
+ const newRejectedFiles = [];
213
+ const fileExists = (file, existingFiles) => {
214
+ return existingFiles.some(
215
+ (existingFile) => existingFile.name === file.name && existingFile.size === file.size
216
+ );
217
+ };
218
+ const addRejectedFile = (file, error) => {
219
+ const existingRejection = newRejectedFiles.find(
220
+ (rejected) => rejected.file.name === file.name && rejected.file.size === file.size
221
+ );
222
+ if (existingRejection) {
223
+ if (!existingRejection.errors.includes(error)) {
224
+ existingRejection.errors.push(error);
225
+ }
226
+ } else {
227
+ newRejectedFiles.push({
228
+ file,
229
+ errors: [error]
230
+ });
231
+ }
232
+ };
233
+ setFiles((prev) => {
234
+ const currentFiles = prev ?? [];
235
+ const remainingSlots = maxFiles !== void 0 ? maxFiles - currentFiles.length : void 0;
236
+ if (remainingSlots !== void 0 && remainingSlots <= 0) {
237
+ newFiles.forEach((file) => {
238
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.TOO_MANY_FILES);
239
+ });
240
+ }
241
+ let filteredFiles = newFiles;
242
+ if (accept) {
243
+ const rejectedByAccept = newFiles.filter((file) => !validateFileAccept(file, accept));
244
+ rejectedByAccept.forEach((file) => {
245
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_INVALID_TYPE);
246
+ });
247
+ filteredFiles = newFiles.filter((file) => validateFileAccept(file, accept));
248
+ }
249
+ let validSizeFiles = filteredFiles;
250
+ if (minFileSize !== void 0 || maxFileSize !== void 0) {
251
+ validSizeFiles = filteredFiles.filter((file) => {
252
+ const validation = validateFileSize(file, minFileSize, maxFileSize, defaultLocale);
253
+ if (!validation.valid) {
254
+ if (maxFileSize !== void 0 && file.size > maxFileSize) {
255
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_TOO_LARGE);
256
+ } else if (minFileSize !== void 0 && file.size < minFileSize) {
257
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_TOO_SMALL);
258
+ } else {
259
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_INVALID);
260
+ }
261
+ return false;
262
+ }
263
+ return true;
264
+ });
265
+ }
266
+ const seenFiles = /* @__PURE__ */ new Map();
267
+ const uniqueFiles = validSizeFiles.filter((file) => {
268
+ const fileKey = `${file.name}-${file.size}`;
269
+ const existsInPrev = fileExists(file, currentFiles);
270
+ if (existsInPrev) {
271
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_EXISTS);
272
+ return false;
273
+ }
274
+ if (seenFiles.has(fileKey)) {
275
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.FILE_EXISTS);
276
+ return false;
277
+ }
278
+ seenFiles.set(fileKey, file);
279
+ return true;
280
+ });
281
+ let filesToAdd = multiple ? uniqueFiles : uniqueFiles.slice(0, 1);
282
+ if (remainingSlots !== void 0) {
283
+ if (remainingSlots <= 0) {
284
+ filesToAdd = [];
285
+ } else if (filesToAdd.length > remainingSlots) {
286
+ filesToAdd.forEach((file) => {
287
+ addRejectedFile(file, FILE_UPLOAD_ERRORS.TOO_MANY_FILES);
288
+ });
289
+ filesToAdd = [];
290
+ }
291
+ }
292
+ const updated = multiple ? [...currentFiles, ...filesToAdd] : filesToAdd;
293
+ const rejectedFilesToAdd = [...newRejectedFiles];
294
+ setRejectedFiles(rejectedFilesToAdd);
295
+ if (filesToAdd.length > 0 && onFileAccept) {
296
+ onFileAccept({ files: filesToAdd });
297
+ }
298
+ if (rejectedFilesToAdd.length > 0 && onFileReject) {
299
+ onFileReject({ files: rejectedFilesToAdd });
300
+ }
301
+ if (onFileChange) {
302
+ onFileChange({
303
+ acceptedFiles: updated,
304
+ rejectedFiles: rejectedFilesToAdd
305
+ });
306
+ }
307
+ return updated;
308
+ });
309
+ };
310
+ const removeFile = (index) => {
311
+ if (disabled || readOnly) {
312
+ return;
313
+ }
314
+ setFiles((prev) => {
315
+ const currentFiles = prev ?? [];
316
+ const updated = currentFiles.filter((_, i) => i !== index);
317
+ let updatedRejectedFiles = rejectedFiles;
318
+ if (maxFiles !== void 0 && updated.length < maxFiles) {
319
+ updatedRejectedFiles = rejectedFiles.filter(
320
+ (rejected) => !rejected.errors.includes(FILE_UPLOAD_ERRORS.TOO_MANY_FILES)
321
+ );
322
+ setRejectedFiles(updatedRejectedFiles);
323
+ }
324
+ if (onFileChange) {
325
+ onFileChange({
326
+ acceptedFiles: updated,
327
+ rejectedFiles: updatedRejectedFiles
328
+ });
329
+ }
330
+ return updated;
331
+ });
332
+ };
333
+ const clearFiles = () => {
334
+ if (disabled || readOnly) {
335
+ return;
336
+ }
337
+ setFiles([]);
338
+ setRejectedFiles([]);
339
+ if (onFileChange) {
340
+ onFileChange({
341
+ acceptedFiles: [],
342
+ rejectedFiles: []
343
+ });
344
+ }
345
+ };
346
+ const removeRejectedFile = (index) => {
347
+ if (disabled || readOnly) {
348
+ return;
349
+ }
350
+ setRejectedFiles((prev) => prev.filter((_, i) => i !== index));
351
+ };
352
+ const clearRejectedFiles = () => {
353
+ setRejectedFiles([]);
354
+ };
355
+ const maxFilesReached = maxFiles !== void 0 && files.length >= maxFiles;
356
+ return {
357
+ files,
358
+ rejectedFiles,
359
+ addFiles,
360
+ removeFile,
361
+ removeRejectedFile,
362
+ clearFiles,
363
+ clearRejectedFiles,
364
+ maxFilesReached
365
+ };
366
+ }
367
+
368
+ // src/file-upload/FileUpload.tsx
369
+ var import_jsx_runtime = require("react/jsx-runtime");
370
+ var FileUploadContext = (0, import_react3.createContext)(null);
371
+ var ID_PREFIX = ":file-upload";
372
+ var FileUpload = ({
373
+ asChild: _asChild = false,
374
+ children,
375
+ defaultValue = [],
376
+ value: controlledValue,
377
+ onFileAccept,
378
+ onFileReject,
379
+ onFileChange,
380
+ multiple = true,
381
+ accept,
382
+ maxFiles,
383
+ maxFileSize,
384
+ minFileSize,
385
+ disabled: disabledProp = false,
386
+ readOnly: readOnlyProp = false,
387
+ locale
388
+ }) => {
389
+ const field = (0, import_form_field.useFormFieldControl)();
390
+ const internalId = (0, import_react3.useId)();
391
+ const inputId = field.id || `${ID_PREFIX}-${internalId}`;
392
+ const inputName = field.name;
393
+ const inputRef = (0, import_react3.useRef)(null);
394
+ const triggerRef = (0, import_react3.useRef)(null);
395
+ const dropzoneRef = (0, import_react3.useRef)(null);
396
+ const deleteButtonRefs = (0, import_react3.useRef)([]);
397
+ const rejectedFileDeleteButtonRefs = (0, import_react3.useRef)([]);
398
+ const disabled = field.disabled ?? disabledProp;
399
+ const readOnly = field.readOnly ?? readOnlyProp;
400
+ const {
401
+ files,
402
+ rejectedFiles,
403
+ addFiles,
404
+ removeFile,
405
+ removeRejectedFile,
406
+ clearFiles: clearFilesFromHook,
407
+ clearRejectedFiles,
408
+ maxFilesReached
409
+ } = useFileUploadState({
410
+ defaultValue,
411
+ value: controlledValue,
412
+ onFileAccept,
413
+ onFileReject,
414
+ onFileChange,
415
+ multiple,
416
+ accept,
417
+ maxFiles,
418
+ maxFileSize,
419
+ minFileSize,
420
+ disabled,
421
+ readOnly,
422
+ locale
423
+ });
424
+ const clearFiles = () => {
425
+ clearFilesFromHook();
426
+ deleteButtonRefs.current = [];
427
+ };
428
+ const clearRejectedFilesWithRefs = () => {
429
+ clearRejectedFiles();
430
+ rejectedFileDeleteButtonRefs.current = [];
431
+ };
432
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
433
+ FileUploadContext.Provider,
434
+ {
435
+ value: {
436
+ inputRef,
437
+ files,
438
+ rejectedFiles,
439
+ addFiles,
440
+ removeFile,
441
+ removeRejectedFile,
442
+ clearFiles,
443
+ clearRejectedFiles: clearRejectedFilesWithRefs,
444
+ triggerRef,
445
+ dropzoneRef,
446
+ deleteButtonRefs,
447
+ rejectedFileDeleteButtonRefs,
448
+ multiple,
449
+ maxFiles,
450
+ maxFilesReached,
451
+ disabled,
452
+ readOnly,
453
+ locale: locale || (typeof navigator !== "undefined" && navigator.language ? navigator.language : "en"),
454
+ description: field.description,
455
+ isInvalid: field.isInvalid,
456
+ isRequired: field.isRequired
457
+ },
458
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
459
+ children,
460
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
461
+ "input",
462
+ {
463
+ ref: inputRef,
464
+ type: "file",
465
+ tabIndex: -1,
466
+ id: inputId,
467
+ multiple,
468
+ name: inputName,
469
+ accept,
470
+ disabled,
471
+ readOnly: readOnly && !disabled,
472
+ required: field.isRequired,
473
+ "aria-invalid": field.isInvalid,
474
+ "aria-describedby": field.description,
475
+ "aria-label": !field.labelId ? "Upload files" : void 0,
476
+ className: "sr-only",
477
+ onChange: (e) => {
478
+ if (e.target.files && !disabled && !readOnly) {
479
+ addFiles(Array.from(e.target.files));
480
+ try {
481
+ e.target.value = "";
482
+ } catch {
483
+ }
484
+ }
485
+ }
486
+ }
487
+ )
488
+ ] })
489
+ }
490
+ );
491
+ };
492
+ FileUpload.displayName = "FileUpload";
493
+ var useFileUploadContext = () => {
494
+ const context = (0, import_react3.useContext)(FileUploadContext);
495
+ if (!context) {
496
+ throw Error("useFileUploadContext must be used within a FileUpload provider");
497
+ }
498
+ return context;
499
+ };
500
+
501
+ // src/file-upload/FileUploadAcceptedFile.tsx
502
+ var import_class_variance_authority10 = require("class-variance-authority");
503
+ var import_react11 = require("react");
504
+
505
+ // src/icon/Icon.tsx
506
+ var import_react5 = require("react");
507
+
508
+ // src/slot/Slot.tsx
509
+ var import_radix_ui = require("radix-ui");
510
+ var import_react4 = require("react");
511
+ var import_jsx_runtime2 = require("react/jsx-runtime");
512
+ var Slottable = import_radix_ui.Slot.Slottable;
513
+ var Slot = ({ ref, ...props }) => {
514
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_radix_ui.Slot.Root, { ref, ...props });
515
+ };
516
+ var wrapPolymorphicSlot = (asChild, children, callback) => {
517
+ if (!asChild) return callback(children);
518
+ return (0, import_react4.isValidElement)(children) ? (0, import_react4.cloneElement)(
519
+ children,
520
+ void 0,
521
+ callback(children.props.children)
522
+ ) : null;
523
+ };
524
+
525
+ // src/visually-hidden/VisuallyHidden.tsx
526
+ var import_jsx_runtime3 = require("react/jsx-runtime");
527
+ var VisuallyHidden = ({ asChild = false, ref, ...props }) => {
528
+ const Component = asChild ? Slot : "span";
529
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
530
+ Component,
531
+ {
532
+ ...props,
533
+ ref,
534
+ style: {
535
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
536
+ position: "absolute",
537
+ border: 0,
538
+ width: 1,
539
+ height: 1,
540
+ padding: 0,
541
+ margin: -1,
542
+ overflow: "hidden",
543
+ clip: "rect(0, 0, 0, 0)",
544
+ whiteSpace: "nowrap",
545
+ wordWrap: "normal",
546
+ ...props.style
547
+ }
548
+ }
549
+ );
550
+ };
551
+ VisuallyHidden.displayName = "VisuallyHidden";
552
+
553
+ // src/icon/Icon.styles.tsx
554
+ var import_internal_utils = require("@spark-ui/internal-utils");
555
+ var import_class_variance_authority = require("class-variance-authority");
556
+ var iconStyles = (0, import_class_variance_authority.cva)(["fill-current shrink-0"], {
557
+ variants: {
558
+ /**
559
+ * Color scheme of the icon.
560
+ */
561
+ intent: (0, import_internal_utils.makeVariants)({
562
+ current: ["text-current"],
563
+ main: ["text-main"],
564
+ support: ["text-support"],
565
+ accent: ["text-accent"],
566
+ basic: ["text-basic"],
567
+ success: ["text-success"],
568
+ alert: ["text-alert"],
569
+ error: ["text-error"],
570
+ info: ["text-info"],
571
+ neutral: ["text-neutral"]
572
+ }),
573
+ /**
574
+ * Sets the size of the icon.
575
+ */
576
+ size: (0, import_internal_utils.makeVariants)({
577
+ current: ["u-current-font-size"],
578
+ sm: ["w-sz-16", "h-sz-16"],
579
+ md: ["w-sz-24", "h-sz-24"],
580
+ lg: ["w-sz-32", "h-sz-32"],
581
+ xl: ["w-sz-40", "h-sz-40"]
582
+ })
583
+ }
584
+ });
585
+
586
+ // src/icon/Icon.tsx
587
+ var import_jsx_runtime4 = require("react/jsx-runtime");
588
+ var Icon = ({
589
+ label,
590
+ className,
591
+ size = "current",
592
+ intent = "current",
593
+ children,
594
+ ...others
595
+ }) => {
596
+ const child = import_react5.Children.only(children);
597
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
598
+ (0, import_react5.cloneElement)(child, {
599
+ className: iconStyles({ className, size, intent }),
600
+ "data-spark-component": "icon",
601
+ "aria-hidden": "true",
602
+ focusable: "false",
603
+ ...others
604
+ }),
605
+ label && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(VisuallyHidden, { children: label })
606
+ ] });
607
+ };
608
+ Icon.displayName = "Icon";
609
+
610
+ // src/progress/Progress.tsx
611
+ var import_class_variance_authority4 = require("class-variance-authority");
612
+ var import_radix_ui3 = require("radix-ui");
613
+ var import_react7 = require("react");
614
+
615
+ // src/progress/ProgressBar.styles.ts
616
+ var import_class_variance_authority2 = require("class-variance-authority");
617
+ var progressBarStyles = (0, import_class_variance_authority2.cva)(
618
+ ["relative", "h-sz-4 w-full", "transform-gpu overflow-hidden", "bg-on-background/dim-4"],
619
+ {
620
+ variants: {
621
+ shape: {
622
+ square: [],
623
+ rounded: ["rounded-sm"]
624
+ }
625
+ }
626
+ }
627
+ );
628
+
629
+ // src/progress/ProgressContext.tsx
630
+ var import_react6 = require("react");
631
+ var ProgressContext = (0, import_react6.createContext)(null);
632
+ var ID_PREFIX2 = ":progress";
633
+ var useProgress = () => {
634
+ const context = (0, import_react6.useContext)(ProgressContext);
635
+ if (!context) {
636
+ throw new Error("useProgress must be used within a Progress provider");
637
+ }
638
+ return context;
639
+ };
640
+
641
+ // src/progress/ProgressIndicator.tsx
642
+ var import_radix_ui2 = require("radix-ui");
643
+
644
+ // src/progress/ProgressIndicator.styles.ts
645
+ var import_class_variance_authority3 = require("class-variance-authority");
646
+ var progressIndicatorStyles = (0, import_class_variance_authority3.cva)(["h-full w-full", "transition-transform duration-400"], {
647
+ variants: {
648
+ /**
649
+ * Color scheme of the progress component.
650
+ */
651
+ intent: {
652
+ basic: ["bg-basic"],
653
+ main: ["bg-main"],
654
+ support: ["bg-support"],
655
+ accent: ["bg-accent"],
656
+ success: ["bg-success"],
657
+ alert: ["bg-alert"],
658
+ danger: ["bg-error"],
659
+ info: ["bg-info"],
660
+ neutral: ["bg-neutral"]
661
+ },
662
+ /**
663
+ * Shape of the progress component.
664
+ */
665
+ shape: {
666
+ square: [],
667
+ rounded: ["rounded-sm"]
668
+ },
669
+ /**
670
+ * Sets if the progress value is not determinated.
671
+ */
672
+ isIndeterminate: {
673
+ true: ["absolute", "-translate-x-1/2", "animate-standalone-indeterminate-bar"],
674
+ false: []
675
+ }
676
+ }
677
+ });
678
+
679
+ // src/progress/ProgressIndicator.tsx
680
+ var import_jsx_runtime5 = require("react/jsx-runtime");
681
+ var ProgressIndicator = ({
682
+ className,
683
+ style,
684
+ ref,
685
+ onTransitionEnd,
686
+ ...others
687
+ }) => {
688
+ const { value, max, intent, shape, isIndeterminate, onComplete } = useProgress();
689
+ const x = (max - value) / max * 100;
690
+ const handleTransitionEnd = (event) => {
691
+ onTransitionEnd?.(event);
692
+ if (value >= max && onComplete && !isIndeterminate) {
693
+ onComplete();
694
+ }
695
+ };
696
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
697
+ import_radix_ui2.Progress.ProgressIndicator,
698
+ {
699
+ "data-spark-component": "progress-indicator",
700
+ className: progressIndicatorStyles({ className, intent, shape, isIndeterminate }),
701
+ style: { ...style, ...!isIndeterminate && { transform: `translateX(-${x}%)` } },
702
+ ref,
703
+ onTransitionEnd: handleTransitionEnd,
704
+ ...others
705
+ }
706
+ );
707
+ };
708
+ ProgressIndicator.displayName = "Progress.Indicator";
709
+
710
+ // src/progress/ProgressBar.tsx
711
+ var import_jsx_runtime6 = require("react/jsx-runtime");
712
+ var ProgressBar = ({
713
+ className,
714
+ children = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ProgressIndicator, {}),
715
+ ref,
716
+ ...others
717
+ }) => {
718
+ const { shape } = useProgress();
719
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
720
+ "div",
721
+ {
722
+ "data-spark-component": "progress-bar",
723
+ className: progressBarStyles({ className, shape }),
724
+ ref,
725
+ ...others,
726
+ children
727
+ }
728
+ );
729
+ };
730
+ ProgressBar.displayName = "Progress.Bar";
731
+
732
+ // src/progress/Progress.tsx
733
+ var import_jsx_runtime7 = require("react/jsx-runtime");
734
+ var Progress = ({
735
+ className,
736
+ value: valueProp,
737
+ max = 100,
738
+ shape = "square",
739
+ intent = "basic",
740
+ isIndeterminate = false,
741
+ onComplete,
742
+ children = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ProgressBar, {}),
743
+ ref,
744
+ ...others
745
+ }) => {
746
+ const [labelId, setLabelId] = (0, import_react7.useState)();
747
+ const value = (0, import_react7.useMemo)(() => {
748
+ return {
749
+ value: valueProp ?? 0,
750
+ max,
751
+ intent,
752
+ shape,
753
+ isIndeterminate,
754
+ onLabelId: setLabelId,
755
+ onComplete
756
+ };
757
+ }, [max, valueProp, intent, shape, isIndeterminate, setLabelId, onComplete]);
758
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ProgressContext.Provider, { "data-spark-component": "progress", value, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
759
+ import_radix_ui3.Progress.Progress,
760
+ {
761
+ "data-spark-component": "progress",
762
+ ref,
763
+ className: (0, import_class_variance_authority4.cx)("gap-sm focus-visible:u-outline flex flex-col", className),
764
+ value: valueProp,
765
+ "aria-labelledby": labelId,
766
+ max,
767
+ tabIndex: -1,
768
+ ...others,
769
+ children
770
+ }
771
+ ) });
772
+ };
773
+ Progress.displayName = "Progress";
774
+
775
+ // src/progress/ProgressLabel.tsx
776
+ var import_use_merge_refs = require("@spark-ui/hooks/use-merge-refs");
777
+ var import_react8 = require("react");
778
+ var import_jsx_runtime8 = require("react/jsx-runtime");
779
+ var ProgressLabel = ({
780
+ id: idProp,
781
+ children,
782
+ ref: forwardedRef,
783
+ ...others
784
+ }) => {
785
+ const internalID = `${ID_PREFIX2}-label-${(0, import_react8.useId)()}`;
786
+ const id = idProp || internalID;
787
+ const { onLabelId } = useProgress();
788
+ const rootRef = (0, import_react8.useCallback)(
789
+ (el) => {
790
+ onLabelId(el ? id : void 0);
791
+ },
792
+ [id, onLabelId]
793
+ );
794
+ const ref = (0, import_use_merge_refs.useMergeRefs)(forwardedRef, rootRef);
795
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
796
+ "span",
797
+ {
798
+ "data-spark-component": "progress-label",
799
+ id,
800
+ className: "text-body-2 text-on-surface",
801
+ ref,
802
+ ...others,
803
+ children
804
+ }
805
+ );
806
+ };
807
+ ProgressLabel.displayName = "Progress.Label";
808
+
809
+ // src/progress/index.ts
810
+ var Progress2 = Object.assign(Progress, {
811
+ Label: ProgressLabel,
812
+ Bar: ProgressBar,
813
+ Indicator: ProgressIndicator
814
+ });
815
+ Progress2.displayName = "Progress";
816
+ ProgressBar.displayName = "Progress.Bar";
817
+ ProgressIndicator.displayName = "Progress.Indicator";
818
+ ProgressLabel.displayName = "Progress.Label";
819
+
820
+ // src/file-upload/FileUploadItemDeleteTrigger.tsx
821
+ var import_Close = require("@spark-ui/icons/Close");
822
+ var import_class_variance_authority9 = require("class-variance-authority");
823
+ var import_react10 = require("react");
824
+
825
+ // src/button/Button.tsx
826
+ var import_class_variance_authority7 = require("class-variance-authority");
827
+ var import_react9 = require("react");
828
+
829
+ // src/spinner/Spinner.styles.tsx
830
+ var import_internal_utils2 = require("@spark-ui/internal-utils");
831
+ var import_class_variance_authority5 = require("class-variance-authority");
832
+ var defaultVariants = {
833
+ intent: "current",
834
+ size: "current",
835
+ isBackgroundVisible: false
836
+ };
837
+ var spinnerStyles = (0, import_class_variance_authority5.cva)(
838
+ ["inline-block", "border-solid", "rounded-full", "border-md", "animate-spin"],
839
+ {
840
+ variants: {
841
+ /**
842
+ * Use `size` prop to set the size of the spinner. If you want to set the full size for the spinner, don't forget to add a wrapping container with its own size.
843
+ */
844
+ size: {
845
+ current: ["u-current-font-size"],
846
+ sm: ["w-sz-20", "h-sz-20"],
847
+ md: ["w-sz-28", "h-sz-28"],
848
+ full: ["w-full", "h-full"]
849
+ },
850
+ /**
851
+ * Color scheme of the spinner.
852
+ */
853
+ intent: (0, import_internal_utils2.makeVariants)({
854
+ current: ["border-current"],
855
+ main: ["border-main"],
856
+ support: ["border-support"],
857
+ accent: ["border-accent"],
858
+ basic: ["border-basic"],
859
+ success: ["border-success"],
860
+ alert: ["border-alert"],
861
+ error: ["border-error"],
862
+ info: ["border-info"],
863
+ neutral: ["border-neutral"]
864
+ }),
865
+ /**
866
+ * Size of the button.
867
+ */
868
+ isBackgroundVisible: {
869
+ true: ["border-b-neutral-container", "border-l-neutral-container"],
870
+ false: ["border-b-transparent", "border-l-transparent"]
871
+ }
872
+ },
873
+ defaultVariants
874
+ }
875
+ );
876
+
877
+ // src/spinner/Spinner.tsx
878
+ var import_jsx_runtime9 = require("react/jsx-runtime");
879
+ var Spinner = ({
880
+ className,
881
+ size = "current",
882
+ intent = "current",
883
+ label,
884
+ isBackgroundVisible,
885
+ ref,
886
+ ...others
887
+ }) => {
888
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
889
+ "span",
890
+ {
891
+ role: "status",
892
+ "data-spark-component": "spinner",
893
+ ref,
894
+ className: spinnerStyles({ className, size, intent, isBackgroundVisible }),
895
+ ...others,
896
+ children: label && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(VisuallyHidden, { children: label })
897
+ }
898
+ );
899
+ };
900
+
901
+ // src/button/Button.styles.tsx
902
+ var import_internal_utils8 = require("@spark-ui/internal-utils");
903
+ var import_class_variance_authority6 = require("class-variance-authority");
904
+
905
+ // src/button/variants/filled.ts
906
+ var import_internal_utils3 = require("@spark-ui/internal-utils");
907
+ var filledVariants = [
908
+ // Main
909
+ {
910
+ intent: "main",
911
+ design: "filled",
912
+ class: (0, import_internal_utils3.tw)([
913
+ "bg-main",
914
+ "text-on-main",
915
+ "hover:bg-main-hovered",
916
+ "enabled:active:bg-main-hovered",
917
+ "focus-visible:bg-main-hovered"
918
+ ])
919
+ },
920
+ // Support
921
+ {
922
+ intent: "support",
923
+ design: "filled",
924
+ class: (0, import_internal_utils3.tw)([
925
+ "bg-support",
926
+ "text-on-support",
927
+ "hover:bg-support-hovered",
928
+ "enabled:active:bg-support-hovered",
929
+ "focus-visible:bg-support-hovered"
930
+ ])
931
+ },
932
+ // Accent
933
+ {
934
+ intent: "accent",
935
+ design: "filled",
936
+ class: (0, import_internal_utils3.tw)([
937
+ "bg-accent",
938
+ "text-on-accent",
939
+ "hover:bg-accent-hovered",
940
+ "enabled:active:bg-accent-hovered",
941
+ "focus-visible:bg-accent-hovered"
942
+ ])
943
+ },
944
+ // Basic
945
+ {
946
+ intent: "basic",
947
+ design: "filled",
948
+ class: (0, import_internal_utils3.tw)([
949
+ "bg-basic",
950
+ "text-on-basic",
951
+ "hover:bg-basic-hovered",
952
+ "enabled:active:bg-basic-hovered",
953
+ "focus-visible:bg-basic-hovered"
954
+ ])
955
+ },
956
+ // Success
957
+ {
958
+ intent: "success",
959
+ design: "filled",
960
+ class: (0, import_internal_utils3.tw)([
961
+ "bg-success",
962
+ "text-on-success",
963
+ "hover:bg-success-hovered",
964
+ "enabled:active:bg-success-hovered",
965
+ "focus-visible:bg-success-hovered"
966
+ ])
967
+ },
968
+ // Alert
969
+ {
970
+ intent: "alert",
971
+ design: "filled",
972
+ class: (0, import_internal_utils3.tw)([
973
+ "bg-alert",
974
+ "text-on-alert",
975
+ "hover:bg-alert-hovered",
976
+ "enabled:active:bg-alert-hovered",
977
+ "focus-visible:bg-alert-hovered"
978
+ ])
979
+ },
980
+ // Danger
981
+ {
982
+ intent: "danger",
983
+ design: "filled",
984
+ class: (0, import_internal_utils3.tw)([
985
+ "text-on-error bg-error",
986
+ "hover:bg-error-hovered enabled:active:bg-error-hovered",
987
+ "focus-visible:bg-error-hovered"
988
+ ])
989
+ },
990
+ // Info
991
+ {
992
+ intent: "info",
993
+ design: "filled",
994
+ class: (0, import_internal_utils3.tw)([
995
+ "text-on-error bg-info",
996
+ "hover:bg-info-hovered enabled:active:bg-info-hovered",
997
+ "focus-visible:bg-info-hovered"
998
+ ])
999
+ },
1000
+ // Neutral
1001
+ {
1002
+ intent: "neutral",
1003
+ design: "filled",
1004
+ class: (0, import_internal_utils3.tw)([
1005
+ "bg-neutral",
1006
+ "text-on-neutral",
1007
+ "hover:bg-neutral-hovered",
1008
+ "enabled:active:bg-neutral-hovered",
1009
+ "focus-visible:bg-neutral-hovered"
1010
+ ])
1011
+ },
1012
+ // Surface
1013
+ {
1014
+ intent: "surface",
1015
+ design: "filled",
1016
+ class: (0, import_internal_utils3.tw)([
1017
+ "bg-surface",
1018
+ "text-on-surface",
1019
+ "hover:bg-surface-hovered",
1020
+ "enabled:active:bg-surface-hovered",
1021
+ "focus-visible:bg-surface-hovered"
1022
+ ])
1023
+ },
1024
+ {
1025
+ intent: "surfaceInverse",
1026
+ design: "filled",
1027
+ class: (0, import_internal_utils3.tw)([
1028
+ "bg-surface-inverse",
1029
+ "text-on-surface-inverse",
1030
+ "hover:bg-surface-inverse-hovered",
1031
+ "enabled:active:bg-surface-inverse-hovered",
1032
+ "focus-visible:bg-surface-inverse-hovered"
1033
+ ])
1034
+ }
1035
+ ];
1036
+
1037
+ // src/button/variants/ghost.ts
1038
+ var import_internal_utils4 = require("@spark-ui/internal-utils");
1039
+ var ghostVariants = [
1040
+ {
1041
+ intent: "main",
1042
+ design: "ghost",
1043
+ class: (0, import_internal_utils4.tw)([
1044
+ "text-on-main-container",
1045
+ "hover:bg-main/dim-5",
1046
+ "enabled:active:bg-main/dim-5",
1047
+ "focus-visible:bg-main/dim-5"
1048
+ ])
1049
+ },
1050
+ {
1051
+ intent: "support",
1052
+ design: "ghost",
1053
+ class: (0, import_internal_utils4.tw)([
1054
+ "text-on-support-container",
1055
+ "hover:bg-support/dim-5",
1056
+ "enabled:active:bg-support/dim-5",
1057
+ "focus-visible:bg-support/dim-5"
1058
+ ])
1059
+ },
1060
+ {
1061
+ intent: "accent",
1062
+ design: "ghost",
1063
+ class: (0, import_internal_utils4.tw)([
1064
+ "text-on-accent-container",
1065
+ "hover:bg-accent/dim-5",
1066
+ "enabled:active:bg-accent/dim-5",
1067
+ "focus-visible:bg-accent/dim-5"
1068
+ ])
1069
+ },
1070
+ {
1071
+ intent: "basic",
1072
+ design: "ghost",
1073
+ class: (0, import_internal_utils4.tw)([
1074
+ "text-on-basic-container",
1075
+ "hover:bg-basic/dim-5",
1076
+ "enabled:active:bg-basic/dim-5",
1077
+ "focus-visible:bg-basic/dim-5"
1078
+ ])
1079
+ },
1080
+ {
1081
+ intent: "success",
1082
+ design: "ghost",
1083
+ class: (0, import_internal_utils4.tw)([
1084
+ "text-on-success-container",
1085
+ "hover:bg-success/dim-5",
1086
+ "enabled:active:bg-success/dim-5",
1087
+ "focus-visible:bg-success/dim-5"
1088
+ ])
1089
+ },
1090
+ {
1091
+ intent: "alert",
1092
+ design: "ghost",
1093
+ class: (0, import_internal_utils4.tw)([
1094
+ "text-on-alert-container",
1095
+ "hover:bg-alert/dim-5",
1096
+ "enabled:active:bg-alert/dim-5",
1097
+ "focus-visible:bg-alert/dim-5"
1098
+ ])
1099
+ },
1100
+ {
1101
+ intent: "danger",
1102
+ design: "ghost",
1103
+ class: (0, import_internal_utils4.tw)([
1104
+ "text-on-error-container",
1105
+ "hover:bg-error/dim-5",
1106
+ "enabled:active:bg-error/dim-5",
1107
+ "focus-visible:bg-error/dim-5"
1108
+ ])
1109
+ },
1110
+ {
1111
+ intent: "info",
1112
+ design: "ghost",
1113
+ class: (0, import_internal_utils4.tw)([
1114
+ "text-on-info-container",
1115
+ "hover:bg-info/dim-5",
1116
+ "enabled:active:bg-info/dim-5",
1117
+ "focus-visible:bg-info/dim-5"
1118
+ ])
1119
+ },
1120
+ {
1121
+ intent: "neutral",
1122
+ design: "ghost",
1123
+ class: (0, import_internal_utils4.tw)([
1124
+ "text-on-neutral-container",
1125
+ "hover:bg-neutral/dim-5",
1126
+ "enabled:active:bg-neutral/dim-5",
1127
+ "focus-visible:bg-neutral/dim-5"
1128
+ ])
1129
+ },
1130
+ {
1131
+ intent: "surface",
1132
+ design: "ghost",
1133
+ class: (0, import_internal_utils4.tw)([
1134
+ "text-surface",
1135
+ "hover:bg-surface/dim-5",
1136
+ "enabled:active:bg-surface/dim-5",
1137
+ "focus-visible:bg-surface/dim-5"
1138
+ ])
1139
+ },
1140
+ {
1141
+ intent: "surfaceInverse",
1142
+ design: "ghost",
1143
+ class: (0, import_internal_utils4.tw)([
1144
+ "text-surface-inverse",
1145
+ "hover:bg-surface-inverse/dim-5",
1146
+ "enabled:active:bg-surface-inverse/dim-5",
1147
+ "focus-visible:bg-surface-inverse/dim-5"
1148
+ ])
1149
+ }
1150
+ ];
1151
+
1152
+ // src/button/variants/outlined.ts
1153
+ var import_internal_utils5 = require("@spark-ui/internal-utils");
1154
+ var outlinedVariants = [
1155
+ {
1156
+ intent: "main",
1157
+ design: "outlined",
1158
+ class: (0, import_internal_utils5.tw)([
1159
+ "hover:bg-main/dim-5",
1160
+ "enabled:active:bg-main/dim-5",
1161
+ "focus-visible:bg-main/dim-5",
1162
+ "text-main"
1163
+ ])
1164
+ },
1165
+ {
1166
+ intent: "support",
1167
+ design: "outlined",
1168
+ class: (0, import_internal_utils5.tw)([
1169
+ "hover:bg-support/dim-5",
1170
+ "enabled:active:bg-support/dim-5",
1171
+ "focus-visible:bg-support/dim-5",
1172
+ "text-support"
1173
+ ])
1174
+ },
1175
+ {
1176
+ intent: "accent",
1177
+ design: "outlined",
1178
+ class: (0, import_internal_utils5.tw)([
1179
+ "hover:bg-accent/dim-5",
1180
+ "enabled:active:bg-accent/dim-5",
1181
+ "focus-visible:bg-accent/dim-5",
1182
+ "text-accent"
1183
+ ])
1184
+ },
1185
+ {
1186
+ intent: "basic",
1187
+ design: "outlined",
1188
+ class: (0, import_internal_utils5.tw)([
1189
+ "hover:bg-basic/dim-5",
1190
+ "enabled:active:bg-basic/dim-5",
1191
+ "focus-visible:bg-basic/dim-5",
1192
+ "text-basic"
1193
+ ])
1194
+ },
1195
+ {
1196
+ intent: "success",
1197
+ design: "outlined",
1198
+ class: (0, import_internal_utils5.tw)([
1199
+ "hover:bg-success/dim-5",
1200
+ "enabled:active:bg-success/dim-5",
1201
+ "focus-visible:bg-success/dim-5",
1202
+ "text-success"
1203
+ ])
1204
+ },
1205
+ {
1206
+ intent: "alert",
1207
+ design: "outlined",
1208
+ class: (0, import_internal_utils5.tw)([
1209
+ "hover:bg-alert/dim-5",
1210
+ "enabled:active:bg-alert/dim-5",
1211
+ "focus-visible:bg-alert/dim-5",
1212
+ "text-alert"
1213
+ ])
1214
+ },
1215
+ {
1216
+ intent: "danger",
1217
+ design: "outlined",
1218
+ class: (0, import_internal_utils5.tw)([
1219
+ "hover:bg-error/dim-5",
1220
+ "enabled:active:bg-error/dim-5",
1221
+ "focus-visible:bg-error/dim-5",
1222
+ "text-error"
1223
+ ])
1224
+ },
1225
+ {
1226
+ intent: "info",
1227
+ design: "outlined",
1228
+ class: (0, import_internal_utils5.tw)([
1229
+ "hover:bg-info/dim-5",
1230
+ "enabled:active:bg-info/dim-5",
1231
+ "focus-visible:bg-info/dim-5",
1232
+ "text-info"
1233
+ ])
1234
+ },
1235
+ {
1236
+ intent: "neutral",
1237
+ design: "outlined",
1238
+ class: (0, import_internal_utils5.tw)([
1239
+ "hover:bg-neutral/dim-5",
1240
+ "enabled:active:bg-neutral/dim-5",
1241
+ "focus-visible:bg-neutral/dim-5",
1242
+ "text-neutral"
1243
+ ])
1244
+ },
1245
+ {
1246
+ intent: "surface",
1247
+ design: "outlined",
1248
+ class: (0, import_internal_utils5.tw)([
1249
+ "hover:bg-surface/dim-5",
1250
+ "enabled:active:bg-surface/dim-5",
1251
+ "focus-visible:bg-surface/dim-5",
1252
+ "text-surface"
1253
+ ])
1254
+ },
1255
+ {
1256
+ intent: "surfaceInverse",
1257
+ design: "outlined",
1258
+ class: (0, import_internal_utils5.tw)([
1259
+ "hover:bg-surface-inverse/dim-5",
1260
+ "enabled:active:bg-surface-inverse/dim-5",
1261
+ "focus-visible:bg-surface-inverse/dim-5",
1262
+ "text-surface-inverse"
1263
+ ])
1264
+ }
1265
+ ];
1266
+
1267
+ // src/button/variants/tinted.ts
1268
+ var import_internal_utils6 = require("@spark-ui/internal-utils");
1269
+ var tintedVariants = [
1270
+ {
1271
+ intent: "main",
1272
+ design: "tinted",
1273
+ class: (0, import_internal_utils6.tw)([
1274
+ "bg-main-container",
1275
+ "text-on-main-container",
1276
+ "hover:bg-main-container-hovered",
1277
+ "enabled:active:bg-main-container-hovered",
1278
+ "focus-visible:bg-main-container-hovered"
1279
+ ])
1280
+ },
1281
+ {
1282
+ intent: "support",
1283
+ design: "tinted",
1284
+ class: (0, import_internal_utils6.tw)([
1285
+ "bg-support-container",
1286
+ "text-on-support-container",
1287
+ "hover:bg-support-container-hovered",
1288
+ "enabled:active:bg-support-container-hovered",
1289
+ "focus-visible:bg-support-container-hovered"
1290
+ ])
1291
+ },
1292
+ {
1293
+ intent: "accent",
1294
+ design: "tinted",
1295
+ class: (0, import_internal_utils6.tw)([
1296
+ "bg-accent-container",
1297
+ "text-on-accent-container",
1298
+ "hover:bg-accent-container-hovered",
1299
+ "enabled:active:bg-accent-container-hovered",
1300
+ "focus-visible:bg-accent-container-hovered"
1301
+ ])
1302
+ },
1303
+ {
1304
+ intent: "basic",
1305
+ design: "tinted",
1306
+ class: (0, import_internal_utils6.tw)([
1307
+ "bg-basic-container",
1308
+ "text-on-basic-container",
1309
+ "hover:bg-basic-container-hovered",
1310
+ "enabled:active:bg-basic-container-hovered",
1311
+ "focus-visible:bg-basic-container-hovered"
1312
+ ])
1313
+ },
1314
+ {
1315
+ intent: "success",
1316
+ design: "tinted",
1317
+ class: (0, import_internal_utils6.tw)([
1318
+ "bg-success-container",
1319
+ "text-on-success-container",
1320
+ "hover:bg-success-container-hovered",
1321
+ "enabled:active:bg-success-container-hovered",
1322
+ "focus-visible:bg-success-container-hovered"
1323
+ ])
1324
+ },
1325
+ {
1326
+ intent: "alert",
1327
+ design: "tinted",
1328
+ class: (0, import_internal_utils6.tw)([
1329
+ "bg-alert-container",
1330
+ "text-on-alert-container",
1331
+ "hover:bg-alert-container-hovered",
1332
+ "enabled:active:bg-alert-container-hovered",
1333
+ "focus-visible:bg-alert-container-hovered"
1334
+ ])
1335
+ },
1336
+ {
1337
+ intent: "danger",
1338
+ design: "tinted",
1339
+ class: (0, import_internal_utils6.tw)([
1340
+ "bg-error-container",
1341
+ "text-on-error-container",
1342
+ "hover:bg-error-container-hovered",
1343
+ "enabled:active:bg-error-container-hovered",
1344
+ "focus-visible:bg-error-container-hovered"
1345
+ ])
1346
+ },
1347
+ {
1348
+ intent: "info",
1349
+ design: "tinted",
1350
+ class: (0, import_internal_utils6.tw)([
1351
+ "bg-info-container",
1352
+ "text-on-info-container",
1353
+ "hover:bg-info-container-hovered",
1354
+ "enabled:active:bg-info-container-hovered",
1355
+ "focus-visible:bg-info-container-hovered"
1356
+ ])
1357
+ },
1358
+ {
1359
+ intent: "neutral",
1360
+ design: "tinted",
1361
+ class: (0, import_internal_utils6.tw)([
1362
+ "bg-neutral-container",
1363
+ "text-on-neutral-container",
1364
+ "hover:bg-neutral-container-hovered",
1365
+ "enabled:active:bg-neutral-container-hovered",
1366
+ "focus-visible:bg-neutral-container-hovered"
1367
+ ])
1368
+ },
1369
+ {
1370
+ intent: "surface",
1371
+ design: "tinted",
1372
+ class: (0, import_internal_utils6.tw)([
1373
+ "bg-surface",
1374
+ "text-on-surface",
1375
+ "hover:bg-surface-hovered",
1376
+ "enabled:active:bg-surface-hovered",
1377
+ "focus-visible:bg-surface-hovered"
1378
+ ])
1379
+ },
1380
+ {
1381
+ intent: "surfaceInverse",
1382
+ design: "tinted",
1383
+ class: (0, import_internal_utils6.tw)([
1384
+ "bg-surface-inverse",
1385
+ "text-on-surface-inverse",
1386
+ "hover:bg-surface-inverse-hovered",
1387
+ "enabled:active:bg-surface-inverse-hovered",
1388
+ "focus-visible:bg-surface-inverse-hovered"
1389
+ ])
1390
+ }
1391
+ ];
1392
+
1393
+ // src/button/variants/contrast.ts
1394
+ var import_internal_utils7 = require("@spark-ui/internal-utils");
1395
+ var contrastVariants = [
1396
+ {
1397
+ intent: "main",
1398
+ design: "contrast",
1399
+ class: (0, import_internal_utils7.tw)([
1400
+ "text-on-main-contaier bg-surface",
1401
+ "hover:bg-main-container-hovered",
1402
+ "enabled:active:bg-main-container-hovered",
1403
+ "focus-visible:bg-main-container-hovered"
1404
+ ])
1405
+ },
1406
+ {
1407
+ intent: "support",
1408
+ design: "contrast",
1409
+ class: (0, import_internal_utils7.tw)([
1410
+ "text-on-support-container bg-surface",
1411
+ "hover:bg-support-container-hovered",
1412
+ "enabled:active:bg-support-container-hovered",
1413
+ "focus-visible:bg-support-container-hovered"
1414
+ ])
1415
+ },
1416
+ {
1417
+ intent: "accent",
1418
+ design: "contrast",
1419
+ class: (0, import_internal_utils7.tw)([
1420
+ "text-on-accent-container bg-surface",
1421
+ "hover:bg-accent-container-hovered",
1422
+ "enabled:active:bg-accent-container-hovered",
1423
+ "focus-visible:bg-accent-container-hovered"
1424
+ ])
1425
+ },
1426
+ {
1427
+ intent: "basic",
1428
+ design: "contrast",
1429
+ class: (0, import_internal_utils7.tw)([
1430
+ "text-on-basic-container bg-surface",
1431
+ "hover:bg-basic-container-hovered",
1432
+ "enabled:active:bg-basic-container-hovered",
1433
+ "focus-visible:bg-basic-container-hovered"
1434
+ ])
1435
+ },
1436
+ {
1437
+ intent: "success",
1438
+ design: "contrast",
1439
+ class: (0, import_internal_utils7.tw)([
1440
+ "text-on-success-container bg-surface",
1441
+ "hover:bg-success-container-hovered",
1442
+ "enabled:active:bg-success-container-hovered",
1443
+ "focus-visible:bg-success-container-hovered"
1444
+ ])
1445
+ },
1446
+ {
1447
+ intent: "alert",
1448
+ design: "contrast",
1449
+ class: (0, import_internal_utils7.tw)([
1450
+ "text-on-alert-container bg-surface",
1451
+ "hover:bg-alert-container-hovered",
1452
+ "enabled:active:bg-alert-container-hovered",
1453
+ "focus-visible:bg-alert-container-hovered"
1454
+ ])
1455
+ },
1456
+ {
1457
+ intent: "danger",
1458
+ design: "contrast",
1459
+ class: (0, import_internal_utils7.tw)([
1460
+ "text-on-error-container bg-surface",
1461
+ "hover:bg-error-container-hovered",
1462
+ "enabled:active:bg-error-container-hovered",
1463
+ "focus-visible:bg-error-container-hovered"
1464
+ ])
1465
+ },
1466
+ {
1467
+ intent: "info",
1468
+ design: "contrast",
1469
+ class: (0, import_internal_utils7.tw)([
1470
+ "text-on-info-container bg-surface",
1471
+ "hover:bg-info-container-hovered",
1472
+ "enabled:active:bg-info-container-hovered",
1473
+ "focus-visible:bg-info-container-hovered"
1474
+ ])
1475
+ },
1476
+ {
1477
+ intent: "neutral",
1478
+ design: "contrast",
1479
+ class: (0, import_internal_utils7.tw)([
1480
+ "text-on-neutral-container bg-surface",
1481
+ "hover:bg-neutral-container-hovered",
1482
+ "enabled:active:bg-neutral-container-hovered",
1483
+ "focus-visible:bg-neutral-container-hovered"
1484
+ ])
1485
+ },
1486
+ {
1487
+ intent: "surface",
1488
+ design: "contrast",
1489
+ class: (0, import_internal_utils7.tw)([
1490
+ "text-on-surface bg-surface",
1491
+ "hover:bg-surface-hovered",
1492
+ "enabled:active:bg-surface-hovered",
1493
+ "focus-visible:bg-surface-hovered"
1494
+ ])
1495
+ },
1496
+ {
1497
+ intent: "surfaceInverse",
1498
+ design: "contrast",
1499
+ class: (0, import_internal_utils7.tw)([
1500
+ "text-on-surface-inverse bg-surface-inverse",
1501
+ "hover:bg-surface-inverse-hovered",
1502
+ "enabled:active:bg-surface-inverse-hovered",
1503
+ "focus-visible:bg-surface-inverse-hovered"
1504
+ ])
1505
+ }
1506
+ ];
1507
+
1508
+ // src/button/Button.styles.tsx
1509
+ var buttonStyles = (0, import_class_variance_authority6.cva)(
1510
+ [
1511
+ "u-shadow-border-transition",
1512
+ "box-border inline-flex items-center justify-center gap-md whitespace-nowrap",
1513
+ "default:px-lg",
1514
+ "text-body-1 font-bold",
1515
+ "focus-visible:u-outline"
1516
+ ],
1517
+ {
1518
+ variants: {
1519
+ /**
1520
+ * Main style of the button.
1521
+ *
1522
+ * - `filled`: Button will be plain.
1523
+ *
1524
+ * - `outlined`: Button will be transparent with an outline.
1525
+ *
1526
+ * - `tinted`: Button will be filled but using a lighter color scheme.
1527
+ *
1528
+ * - `ghost`: Button will look like a link. No borders, plain text.
1529
+ *
1530
+ * - `contrast`: Button will be surface filled. No borders, plain text.
1531
+ *
1532
+ */
1533
+ design: (0, import_internal_utils8.makeVariants)({
1534
+ filled: [],
1535
+ outlined: ["bg-transparent", "border-sm", "border-current"],
1536
+ tinted: [],
1537
+ ghost: ["default:-mx-md px-md hover:bg-main/dim-5"],
1538
+ contrast: []
1539
+ }),
1540
+ underline: {
1541
+ true: ["underline"]
1542
+ },
1543
+ /**
1544
+ * Color scheme of the button.
1545
+ */
1546
+ intent: (0, import_internal_utils8.makeVariants)({
1547
+ main: [],
1548
+ support: [],
1549
+ accent: [],
1550
+ basic: [],
1551
+ success: [],
1552
+ alert: [],
1553
+ danger: [],
1554
+ info: [],
1555
+ neutral: [],
1556
+ surface: [],
1557
+ surfaceInverse: []
1558
+ }),
1559
+ /**
1560
+ * Size of the button.
1561
+ */
1562
+ size: (0, import_internal_utils8.makeVariants)({
1563
+ sm: ["min-w-sz-32", "h-sz-32"],
1564
+ md: ["min-w-sz-44", "h-sz-44"],
1565
+ lg: ["min-w-sz-56", "h-sz-56"]
1566
+ }),
1567
+ /**
1568
+ * Shape of the button.
1569
+ */
1570
+ shape: (0, import_internal_utils8.makeVariants)({
1571
+ rounded: ["rounded-lg"],
1572
+ square: ["rounded-0"],
1573
+ pill: ["rounded-full"]
1574
+ }),
1575
+ /**
1576
+ * Disable the button, preventing user interaction and adding opacity.
1577
+ */
1578
+ disabled: {
1579
+ true: ["cursor-not-allowed", "opacity-dim-3"],
1580
+ false: ["cursor-pointer"]
1581
+ }
1582
+ },
1583
+ compoundVariants: [
1584
+ ...filledVariants,
1585
+ ...outlinedVariants,
1586
+ ...tintedVariants,
1587
+ ...ghostVariants,
1588
+ ...contrastVariants
1589
+ ],
1590
+ defaultVariants: {
1591
+ design: "filled",
1592
+ intent: "main",
1593
+ size: "md",
1594
+ shape: "rounded"
1595
+ }
1596
+ }
1597
+ );
1598
+
1599
+ // src/button/Button.tsx
1600
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1601
+ var blockedEventHandlers = [
1602
+ "onClick",
1603
+ "onMouseDown",
1604
+ "onMouseUp",
1605
+ "onMouseEnter",
1606
+ "onMouseLeave",
1607
+ "onMouseOver",
1608
+ "onMouseOut",
1609
+ "onKeyDown",
1610
+ "onKeyPress",
1611
+ "onKeyUp",
1612
+ "onSubmit"
1613
+ ];
1614
+ var Button = ({
1615
+ children,
1616
+ design = "filled",
1617
+ disabled = false,
1618
+ intent = "main",
1619
+ isLoading = false,
1620
+ loadingLabel,
1621
+ loadingText,
1622
+ shape = "rounded",
1623
+ size = "md",
1624
+ asChild,
1625
+ className,
1626
+ underline = false,
1627
+ ref,
1628
+ ...others
1629
+ }) => {
1630
+ const Component = asChild ? Slot : "button";
1631
+ const shouldNotInteract = !!disabled || isLoading;
1632
+ const disabledEventHandlers = (0, import_react9.useMemo)(() => {
1633
+ const result = {};
1634
+ if (shouldNotInteract) {
1635
+ blockedEventHandlers.forEach((eventHandler) => result[eventHandler] = void 0);
1636
+ }
1637
+ return result;
1638
+ }, [shouldNotInteract]);
1639
+ const spinnerProps = {
1640
+ size: "current",
1641
+ className: loadingText ? "inline-block" : "absolute",
1642
+ ...loadingLabel && { "aria-label": loadingLabel }
1643
+ };
1644
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1645
+ Component,
1646
+ {
1647
+ "data-spark-component": "button",
1648
+ ...Component === "button" && { type: "button" },
1649
+ ref,
1650
+ className: buttonStyles({
1651
+ className,
1652
+ design,
1653
+ disabled: shouldNotInteract,
1654
+ intent,
1655
+ shape,
1656
+ size,
1657
+ underline
1658
+ }),
1659
+ disabled: !!disabled,
1660
+ "aria-busy": isLoading,
1661
+ "aria-live": isLoading ? "assertive" : "off",
1662
+ ...others,
1663
+ ...disabledEventHandlers,
1664
+ children: wrapPolymorphicSlot(
1665
+ asChild,
1666
+ children,
1667
+ (slotted) => isLoading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1668
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Spinner, { ...spinnerProps }),
1669
+ loadingText && loadingText,
1670
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1671
+ "div",
1672
+ {
1673
+ "aria-hidden": true,
1674
+ className: (0, import_class_variance_authority7.cx)("gap-md", loadingText ? "hidden" : "inline-flex opacity-0"),
1675
+ children: slotted
1676
+ }
1677
+ )
1678
+ ] }) : slotted
1679
+ )
1680
+ }
1681
+ );
1682
+ };
1683
+ Button.displayName = "Button";
1684
+
1685
+ // src/icon-button/IconButton.styles.tsx
1686
+ var import_internal_utils9 = require("@spark-ui/internal-utils");
1687
+ var import_class_variance_authority8 = require("class-variance-authority");
1688
+ var iconButtonStyles = (0, import_class_variance_authority8.cva)(["pl-0 pr-0"], {
1689
+ variants: {
1690
+ /**
1691
+ * Sets the size of the icon.
1692
+ */
1693
+ size: (0, import_internal_utils9.makeVariants)({
1694
+ sm: ["text-body-1"],
1695
+ md: ["text-body-1"],
1696
+ lg: ["text-display-3"]
1697
+ })
1698
+ }
1699
+ });
1700
+
1701
+ // src/icon-button/IconButton.tsx
1702
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1703
+ var IconButton = ({
1704
+ design = "filled",
1705
+ disabled = false,
1706
+ intent = "main",
1707
+ shape = "rounded",
1708
+ size = "md",
1709
+ className,
1710
+ ref,
1711
+ ...others
1712
+ }) => {
1713
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1714
+ Button,
1715
+ {
1716
+ "data-spark-component": "icon-button",
1717
+ ref,
1718
+ className: iconButtonStyles({ size, className }),
1719
+ design,
1720
+ disabled,
1721
+ intent,
1722
+ shape,
1723
+ size,
1724
+ ...others
1725
+ }
1726
+ );
1727
+ };
1728
+ IconButton.displayName = "IconButton";
1729
+
1730
+ // src/file-upload/FileUploadItemDeleteTrigger.tsx
1731
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1732
+ var ItemDeleteTrigger = ({
1733
+ className,
1734
+ file,
1735
+ onClick,
1736
+ ...props
1737
+ }) => {
1738
+ const {
1739
+ removeFile,
1740
+ triggerRef,
1741
+ dropzoneRef,
1742
+ deleteButtonRefs,
1743
+ inputRef,
1744
+ disabled,
1745
+ readOnly,
1746
+ files
1747
+ } = useFileUploadContext();
1748
+ const buttonRef = (0, import_react10.useRef)(null);
1749
+ const fileIndex = files.findIndex((f) => f.name === file.name && f.size === file.size);
1750
+ const handleClick = (e) => {
1751
+ if (disabled || readOnly) {
1752
+ return;
1753
+ }
1754
+ removeFile(fileIndex);
1755
+ requestAnimationFrame(() => {
1756
+ const remainingButtons = deleteButtonRefs.current.filter(Boolean);
1757
+ if (remainingButtons.length > 0) {
1758
+ const targetIndex = Math.min(fileIndex, remainingButtons.length - 1);
1759
+ const nextButton = remainingButtons[targetIndex];
1760
+ if (nextButton) {
1761
+ nextButton.focus();
1762
+ }
1763
+ } else {
1764
+ const focusTarget = findFocusableElement(
1765
+ [triggerRef.current, dropzoneRef.current],
1766
+ inputRef
1767
+ );
1768
+ if (focusTarget) {
1769
+ focusTarget.focus();
1770
+ }
1771
+ }
1772
+ });
1773
+ onClick?.(e);
1774
+ };
1775
+ const setRef = (node) => {
1776
+ buttonRef.current = node;
1777
+ if (node) {
1778
+ while (deleteButtonRefs.current.length <= fileIndex) {
1779
+ deleteButtonRefs.current.push(null);
1780
+ }
1781
+ deleteButtonRefs.current[fileIndex] = node;
1782
+ } else {
1783
+ if (deleteButtonRefs.current[fileIndex]) {
1784
+ deleteButtonRefs.current[fileIndex] = null;
1785
+ }
1786
+ }
1787
+ };
1788
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1789
+ IconButton,
1790
+ {
1791
+ ref: setRef,
1792
+ "data-spark-component": "file-upload-item-delete-trigger",
1793
+ className: (0, import_class_variance_authority9.cx)(className),
1794
+ onClick: handleClick,
1795
+ disabled: disabled || readOnly,
1796
+ size: "sm",
1797
+ design: "contrast",
1798
+ intent: "surface",
1799
+ ...props,
1800
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_Close.Close, {}) })
1801
+ }
1802
+ );
1803
+ };
1804
+ ItemDeleteTrigger.displayName = "FileUpload.ItemDeleteTrigger";
1805
+
1806
+ // src/file-upload/FileUploadAcceptedFile.tsx
1807
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1808
+ var AcceptedFile = ({
1809
+ className,
1810
+ file,
1811
+ uploadProgress,
1812
+ deleteButtonAriaLabel,
1813
+ progressAriaLabel,
1814
+ ...props
1815
+ }) => {
1816
+ const { locale } = useFileUploadContext();
1817
+ const [showProgress, setShowProgress] = (0, import_react11.useState)(uploadProgress !== void 0);
1818
+ (0, import_react11.useEffect)(() => {
1819
+ if (uploadProgress !== void 0) {
1820
+ setShowProgress(true);
1821
+ } else {
1822
+ setShowProgress(false);
1823
+ }
1824
+ }, [uploadProgress]);
1825
+ const handleProgressComplete = (0, import_react11.useCallback)(() => {
1826
+ setShowProgress(false);
1827
+ }, []);
1828
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1829
+ "li",
1830
+ {
1831
+ "data-spark-component": "file-upload-accepted-file",
1832
+ className: (0, import_class_variance_authority10.cx)(
1833
+ "relative",
1834
+ "default:bg-surface default:border-sm default:border-outline default:p-md default:rounded-md",
1835
+ "gap-md flex items-center justify-between default:w-full",
1836
+ className
1837
+ ),
1838
+ ...props,
1839
+ children: [
1840
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "size-sz-36 bg-support-container flex items-center justify-center rounded-md", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { size: "md", children: getFileIcon(file) }) }),
1841
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "gap-md relative flex min-w-0 flex-1 flex-row items-center justify-between self-stretch", children: [
1842
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-body-2 truncate font-medium", children: file.name }),
1843
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-caption opacity-dim-1", children: formatFileSize(file.size, locale) }),
1844
+ showProgress && uploadProgress !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "absolute bottom-0 left-0 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1845
+ Progress2,
1846
+ {
1847
+ value: uploadProgress,
1848
+ max: 100,
1849
+ "aria-label": progressAriaLabel,
1850
+ onComplete: handleProgressComplete
1851
+ }
1852
+ ) })
1853
+ ] }),
1854
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ItemDeleteTrigger, { "aria-label": deleteButtonAriaLabel, file })
1855
+ ]
1856
+ }
1857
+ );
1858
+ };
1859
+ AcceptedFile.displayName = "FileUpload.AcceptedFile";
1860
+
1861
+ // src/file-upload/FileUploadContext.tsx
1862
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1863
+ var Context = ({ children }) => {
1864
+ const { files = [], rejectedFiles = [], locale } = useFileUploadContext();
1865
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: children({
1866
+ acceptedFiles: files,
1867
+ rejectedFiles,
1868
+ formatFileSize,
1869
+ locale
1870
+ }) });
1871
+ };
1872
+ Context.displayName = "FileUpload.Context";
1873
+
1874
+ // src/file-upload/FileUploadDropzone.tsx
1875
+ var import_class_variance_authority11 = require("class-variance-authority");
1876
+ var import_react12 = require("react");
1877
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1878
+ var DropzoneContext = (0, import_react12.createContext)(false);
1879
+ var useDropzoneContext = () => (0, import_react12.useContext)(DropzoneContext);
1880
+ function Dropzone({
1881
+ children,
1882
+ className,
1883
+ unstyled = false
1884
+ }) {
1885
+ const ctx = useFileUploadContext();
1886
+ const dropzoneRef = (0, import_react12.useRef)(null);
1887
+ if (!ctx) throw new Error("FileUploadDropzone must be used inside <FileUpload>");
1888
+ const handleDrop = (e) => {
1889
+ e.preventDefault();
1890
+ e.stopPropagation();
1891
+ e.currentTarget.setAttribute("data-drag-over", "false");
1892
+ if (ctx.disabled || ctx.readOnly) {
1893
+ return;
1894
+ }
1895
+ const files = e.dataTransfer.files;
1896
+ let filesArray = [];
1897
+ if (files) {
1898
+ filesArray = Array.isArray(files) ? [...files] : Array.from(files);
1899
+ }
1900
+ if (filesArray.length > 0) {
1901
+ ctx.addFiles(filesArray);
1902
+ }
1903
+ };
1904
+ const handleClick = () => {
1905
+ if (!ctx.disabled && !ctx.readOnly) {
1906
+ ctx.inputRef.current?.click();
1907
+ }
1908
+ };
1909
+ const handleKeyDown = (e) => {
1910
+ if (e.key === "Enter" || e.key === " ") {
1911
+ e.preventDefault();
1912
+ if (!ctx.disabled && !ctx.readOnly) {
1913
+ ctx.inputRef.current?.click();
1914
+ }
1915
+ }
1916
+ };
1917
+ const isDisabled = ctx.disabled || ctx.readOnly;
1918
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DropzoneContext.Provider, { value: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1919
+ "div",
1920
+ {
1921
+ ref: (node) => {
1922
+ dropzoneRef.current = node;
1923
+ if (ctx.dropzoneRef) {
1924
+ ctx.dropzoneRef.current = node;
1925
+ }
1926
+ },
1927
+ role: "button",
1928
+ tabIndex: isDisabled ? -1 : 0,
1929
+ "aria-disabled": ctx.disabled ? true : void 0,
1930
+ "aria-describedby": ctx.description,
1931
+ "aria-invalid": ctx.isInvalid,
1932
+ "aria-required": ctx.isRequired,
1933
+ onClick: handleClick,
1934
+ onKeyDown: handleKeyDown,
1935
+ onDrop: handleDrop,
1936
+ onDragOver: (e) => {
1937
+ e.preventDefault();
1938
+ },
1939
+ className: unstyled ? className : (0, import_class_variance_authority11.cx)(
1940
+ "default:bg-surface default:border-sm default:border-outline default:relative default:rounded-lg default:border-dashed",
1941
+ "gap-lg flex flex-col items-center justify-center text-center",
1942
+ "default:p-xl",
1943
+ "transition-colors duration-200",
1944
+ !isDisabled && "default:hover:bg-surface-hovered",
1945
+ "data-[drag-over=true]:border-outline-high data-[drag-over=true]:bg-surface-hovered data-[drag-over=true]:border-solid",
1946
+ // Disabled: more visually disabled (opacity + cursor)
1947
+ ctx.disabled && "cursor-not-allowed opacity-50",
1948
+ // ReadOnly: less visually disabled (just cursor, no opacity)
1949
+ ctx.readOnly && !ctx.disabled && "cursor-default",
1950
+ className
1951
+ ),
1952
+ onDragEnter: (e) => {
1953
+ if (!isDisabled) {
1954
+ e.currentTarget.setAttribute("data-drag-over", "true");
1955
+ }
1956
+ },
1957
+ onDragLeave: (e) => {
1958
+ e.currentTarget.setAttribute("data-drag-over", "false");
1959
+ },
1960
+ children
1961
+ }
1962
+ ) });
1963
+ }
1964
+ Dropzone.displayName = "FileUploadDropzone";
1965
+
1966
+ // src/file-upload/FileUploadPreviewImage.tsx
1967
+ var import_class_variance_authority12 = require("class-variance-authority");
1968
+ var import_react13 = require("react");
1969
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1970
+ var PreviewImage = ({
1971
+ className,
1972
+ file,
1973
+ fallback = "\u{1F4C4}",
1974
+ ...props
1975
+ }) => {
1976
+ const [imageError, setImageError] = (0, import_react13.useState)(false);
1977
+ const [imageLoaded, setImageLoaded] = (0, import_react13.useState)(false);
1978
+ const isImage = file.type.startsWith("image/");
1979
+ const imageUrl = isImage ? URL.createObjectURL(file) : null;
1980
+ (0, import_react13.useEffect)(() => {
1981
+ return () => {
1982
+ if (imageUrl) {
1983
+ URL.revokeObjectURL(imageUrl);
1984
+ }
1985
+ };
1986
+ }, [imageUrl]);
1987
+ if (!isImage || imageError) {
1988
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1989
+ "div",
1990
+ {
1991
+ "data-spark-component": "file-upload-preview-image",
1992
+ className: (0, import_class_variance_authority12.cx)(
1993
+ "bg-neutral-container flex items-center justify-center rounded-md",
1994
+ className
1995
+ ),
1996
+ ...props,
1997
+ children: fallback
1998
+ }
1999
+ );
2000
+ }
2001
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2002
+ "div",
2003
+ {
2004
+ "data-spark-component": "file-upload-preview-image",
2005
+ className: (0, import_class_variance_authority12.cx)("bg-neutral-container overflow-hidden", className),
2006
+ ...props,
2007
+ children: [
2008
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2009
+ "img",
2010
+ {
2011
+ src: imageUrl,
2012
+ alt: file.name,
2013
+ className: (0, import_class_variance_authority12.cx)("size-full object-cover", !imageLoaded && "opacity-0"),
2014
+ onLoad: () => setImageLoaded(true),
2015
+ onError: () => setImageError(true)
2016
+ }
2017
+ ),
2018
+ !imageLoaded && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "absolute inset-0 flex items-center justify-center", children: fallback })
2019
+ ]
2020
+ }
2021
+ );
2022
+ };
2023
+ PreviewImage.displayName = "FileUpload.PreviewImage";
2024
+
2025
+ // src/file-upload/FileUploadRejectedFile.tsx
2026
+ var import_WarningOutline = require("@spark-ui/icons/WarningOutline");
2027
+ var import_class_variance_authority14 = require("class-variance-authority");
2028
+
2029
+ // src/file-upload/FileUploadRejectedFileDeleteTrigger.tsx
2030
+ var import_Close2 = require("@spark-ui/icons/Close");
2031
+ var import_class_variance_authority13 = require("class-variance-authority");
2032
+ var import_react14 = require("react");
2033
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2034
+ var RejectedFileDeleteTrigger = ({
2035
+ className,
2036
+ rejectedFile,
2037
+ onClick,
2038
+ ...props
2039
+ }) => {
2040
+ const {
2041
+ removeRejectedFile,
2042
+ triggerRef,
2043
+ dropzoneRef,
2044
+ rejectedFileDeleteButtonRefs,
2045
+ inputRef,
2046
+ disabled,
2047
+ readOnly,
2048
+ rejectedFiles
2049
+ } = useFileUploadContext();
2050
+ const buttonRef = (0, import_react14.useRef)(null);
2051
+ const rejectedFileIndex = rejectedFiles.findIndex(
2052
+ (rf) => rf.file.name === rejectedFile.file.name && rf.file.size === rejectedFile.file.size
2053
+ );
2054
+ const handleClick = (e) => {
2055
+ if (disabled || readOnly) {
2056
+ return;
2057
+ }
2058
+ removeRejectedFile(rejectedFileIndex);
2059
+ requestAnimationFrame(() => {
2060
+ const remainingButtons = rejectedFileDeleteButtonRefs.current.filter(Boolean);
2061
+ if (remainingButtons.length > 0) {
2062
+ const targetIndex = Math.min(rejectedFileIndex, remainingButtons.length - 1);
2063
+ const nextButton = remainingButtons[targetIndex];
2064
+ if (nextButton) {
2065
+ nextButton.focus();
2066
+ }
2067
+ } else {
2068
+ const focusTarget = findFocusableElement(
2069
+ [triggerRef.current, dropzoneRef.current],
2070
+ inputRef
2071
+ );
2072
+ if (focusTarget) {
2073
+ focusTarget.focus();
2074
+ }
2075
+ }
2076
+ });
2077
+ onClick?.(e);
2078
+ };
2079
+ const setRef = (node) => {
2080
+ buttonRef.current = node;
2081
+ if (node) {
2082
+ while (rejectedFileDeleteButtonRefs.current.length <= rejectedFileIndex) {
2083
+ rejectedFileDeleteButtonRefs.current.push(null);
2084
+ }
2085
+ rejectedFileDeleteButtonRefs.current[rejectedFileIndex] = node;
2086
+ } else {
2087
+ if (rejectedFileDeleteButtonRefs.current[rejectedFileIndex]) {
2088
+ rejectedFileDeleteButtonRefs.current[rejectedFileIndex] = null;
2089
+ }
2090
+ }
2091
+ };
2092
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2093
+ IconButton,
2094
+ {
2095
+ ref: setRef,
2096
+ "data-spark-component": "file-upload-rejected-file-delete-trigger",
2097
+ className: (0, import_class_variance_authority13.cx)(className),
2098
+ onClick: handleClick,
2099
+ disabled: disabled || readOnly,
2100
+ size: "sm",
2101
+ design: "contrast",
2102
+ intent: "surface",
2103
+ ...props,
2104
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Icon, { size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_Close2.Close, {}) })
2105
+ }
2106
+ );
2107
+ };
2108
+ RejectedFileDeleteTrigger.displayName = "FileUpload.RejectedFileDeleteTrigger";
2109
+
2110
+ // src/file-upload/FileUploadRejectedFile.tsx
2111
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2112
+ var RejectedFile = ({
2113
+ className,
2114
+ rejectedFile,
2115
+ renderError,
2116
+ deleteButtonAriaLabel,
2117
+ ...props
2118
+ }) => {
2119
+ const { locale } = useFileUploadContext();
2120
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
2121
+ "li",
2122
+ {
2123
+ "data-spark-component": "file-upload-rejected-file",
2124
+ className: (0, import_class_variance_authority14.cx)(
2125
+ "relative",
2126
+ "default:bg-surface default:border-sm default:border-outline default:p-md default:rounded-md",
2127
+ "gap-md flex items-center justify-between default:w-full",
2128
+ "border-error border-md",
2129
+ className
2130
+ ),
2131
+ ...props,
2132
+ children: [
2133
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "size-sz-36 bg-error-container flex items-center justify-center rounded-md", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icon, { size: "md", className: "text-error", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_WarningOutline.WarningOutline, {}) }) }),
2134
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gap-md flex flex-col", children: [
2135
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gap-md flex flex-row items-center justify-between", children: [
2136
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-body-2 truncate font-medium", children: rejectedFile.file.name }),
2137
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-caption opacity-dim-1", children: formatFileSize(rejectedFile.file.size, locale) })
2138
+ ] }),
2139
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gap-xs flex flex-col", children: rejectedFile.errors.map((error, errorIndex) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-caption text-error", "data-error-code": error, children: renderError(error) }, errorIndex)) })
2140
+ ] }) }),
2141
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RejectedFileDeleteTrigger, { "aria-label": deleteButtonAriaLabel, rejectedFile })
2142
+ ]
2143
+ }
2144
+ );
2145
+ };
2146
+ RejectedFile.displayName = "FileUpload.RejectedFile";
2147
+
2148
+ // src/file-upload/FileUploadTrigger.tsx
2149
+ var import_class_variance_authority15 = require("class-variance-authority");
2150
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2151
+ var Trigger = ({
2152
+ className,
2153
+ children,
2154
+ asChild = false,
2155
+ unstyled = false,
2156
+ design = "filled",
2157
+ intent = "basic",
2158
+ size = "md",
2159
+ shape = "rounded",
2160
+ ref,
2161
+ ...props
2162
+ }) => {
2163
+ const { inputRef, triggerRef, disabled, readOnly, description, isInvalid, isRequired } = useFileUploadContext();
2164
+ const isInsideDropzone = useDropzoneContext();
2165
+ const handleClick = (e) => {
2166
+ e.stopPropagation();
2167
+ e.preventDefault();
2168
+ if (!disabled && !readOnly) {
2169
+ inputRef.current?.click();
2170
+ }
2171
+ };
2172
+ const handleRef = (node) => {
2173
+ if (triggerRef) {
2174
+ triggerRef.current = node;
2175
+ }
2176
+ if (ref) {
2177
+ if (typeof ref === "function") {
2178
+ ref(node);
2179
+ } else {
2180
+ ref.current = node;
2181
+ }
2182
+ }
2183
+ };
2184
+ let Component;
2185
+ let componentProps;
2186
+ if (isInsideDropzone) {
2187
+ Component = "span";
2188
+ const spanStyles = unstyled ? className : buttonStyles({
2189
+ design,
2190
+ intent,
2191
+ size,
2192
+ shape,
2193
+ disabled: disabled || readOnly,
2194
+ className
2195
+ });
2196
+ componentProps = {
2197
+ ref: handleRef,
2198
+ "data-spark-component": "file-upload-trigger",
2199
+ className: spanStyles
2200
+ // No onClick, no role, no tabIndex - Dropzone handles interaction
2201
+ // No aria attributes here - they're on the Dropzone
2202
+ };
2203
+ } else {
2204
+ const buttonComponent = unstyled ? "button" : Button;
2205
+ Component = asChild ? Slot : buttonComponent;
2206
+ componentProps = {
2207
+ ref: handleRef,
2208
+ type: "button",
2209
+ design,
2210
+ intent,
2211
+ size,
2212
+ shape,
2213
+ "data-spark-component": "file-upload-trigger",
2214
+ className: (0, import_class_variance_authority15.cx)(className),
2215
+ disabled: disabled || readOnly,
2216
+ onClick: handleClick,
2217
+ "aria-describedby": description,
2218
+ "aria-invalid": isInvalid,
2219
+ "aria-required": isRequired,
2220
+ ...props
2221
+ };
2222
+ }
2223
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Component, { ...componentProps, children });
2224
+ };
2225
+ Trigger.displayName = "FileUpload.Trigger";
2226
+
2227
+ // src/file-upload/index.ts
2228
+ var FileUpload2 = Object.assign(FileUpload, {
2229
+ // Main input components
2230
+ Trigger,
2231
+ Dropzone,
2232
+ // Context components
2233
+ Context,
2234
+ AcceptedFile,
2235
+ RejectedFile,
2236
+ // Helpers for custom renders
2237
+ PreviewImage,
2238
+ ItemDeleteTrigger,
2239
+ RejectedFileDeleteTrigger
2240
+ });
2241
+ FileUpload2.displayName = "FileUpload";
2242
+ Trigger.displayName = "FileUpload.Trigger";
2243
+ Dropzone.displayName = "FileUpload.Dropzone";
2244
+ Context.displayName = "FileUpload.Context";
2245
+ ItemDeleteTrigger.displayName = "FileUpload.ItemDeleteTrigger";
2246
+ PreviewImage.displayName = "FileUpload.PreviewImage";
2247
+ AcceptedFile.displayName = "FileUpload.AcceptedFile";
2248
+ RejectedFile.displayName = "FileUpload.RejectedFile";
2249
+ RejectedFileDeleteTrigger.displayName = "FileUpload.RejectedFileDeleteTrigger";
2250
+ // Annotate the CommonJS export names for ESM import in node:
2251
+ 0 && (module.exports = {
2252
+ FILE_UPLOAD_ERRORS,
2253
+ FileUpload
2254
+ });
2255
+ //# sourceMappingURL=index.js.map