@xjur-ui/react 2.2.4 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/chunk-26RT6WUU.js +2 -0
  3. package/dist/chunk-26RT6WUU.js.map +1 -0
  4. package/dist/chunk-2TVBY4IY.js +2 -0
  5. package/dist/chunk-2TVBY4IY.js.map +1 -0
  6. package/dist/chunk-3DZWZLV3.js +2 -0
  7. package/dist/chunk-3DZWZLV3.js.map +1 -0
  8. package/dist/chunk-3LWJK7RE.js +2 -0
  9. package/dist/chunk-3LWJK7RE.js.map +1 -0
  10. package/dist/chunk-3QA5HU4T.js +2 -0
  11. package/dist/chunk-3QA5HU4T.js.map +1 -0
  12. package/dist/chunk-3RD2PGPH.js +2 -0
  13. package/dist/chunk-3RD2PGPH.js.map +1 -0
  14. package/dist/chunk-4GDW5WIQ.js +2 -0
  15. package/dist/chunk-4GDW5WIQ.js.map +1 -0
  16. package/dist/{chunk-TTKENFBF.js → chunk-4NBJXNQ7.js} +2 -2
  17. package/dist/{chunk-TTKENFBF.js.map → chunk-4NBJXNQ7.js.map} +1 -1
  18. package/dist/chunk-4ZEXJODE.js +2 -0
  19. package/dist/chunk-4ZEXJODE.js.map +1 -0
  20. package/dist/chunk-5CA552M6.js +2 -0
  21. package/dist/chunk-5CA552M6.js.map +1 -0
  22. package/dist/chunk-6EDRVSCQ.js +2 -0
  23. package/dist/{chunk-6PHXO2YA.js.map → chunk-6EDRVSCQ.js.map} +1 -1
  24. package/dist/chunk-6KKZP5G3.js +2 -0
  25. package/dist/chunk-6KKZP5G3.js.map +1 -0
  26. package/dist/chunk-7DGDSULM.js +2 -0
  27. package/dist/chunk-7DGDSULM.js.map +1 -0
  28. package/dist/chunk-7EEEHHLL.js +2 -0
  29. package/dist/chunk-7EEEHHLL.js.map +1 -0
  30. package/dist/{chunk-SLMHDBWO.js → chunk-AGO3UKJY.js} +2 -2
  31. package/dist/{chunk-SLMHDBWO.js.map → chunk-AGO3UKJY.js.map} +1 -1
  32. package/dist/chunk-AIQVBX52.js +2 -0
  33. package/dist/chunk-AIQVBX52.js.map +1 -0
  34. package/dist/{chunk-HLWHETF5.js → chunk-BIPU447J.js} +2 -2
  35. package/dist/{chunk-HLWHETF5.js.map → chunk-BIPU447J.js.map} +1 -1
  36. package/dist/chunk-BXWTGQRV.js +2 -0
  37. package/dist/{chunk-XC6SVYAS.js.map → chunk-BXWTGQRV.js.map} +1 -1
  38. package/dist/chunk-C4YYI53B.js +2 -0
  39. package/dist/chunk-C4YYI53B.js.map +1 -0
  40. package/dist/chunk-CCSIBUKX.js +2 -0
  41. package/dist/chunk-CCSIBUKX.js.map +1 -0
  42. package/dist/chunk-CTBO27FM.js +2 -0
  43. package/dist/chunk-CTBO27FM.js.map +1 -0
  44. package/dist/chunk-DZSAQN5T.js +2 -0
  45. package/dist/chunk-DZSAQN5T.js.map +1 -0
  46. package/dist/chunk-EDVE3ICB.js +2 -0
  47. package/dist/chunk-EDVE3ICB.js.map +1 -0
  48. package/dist/chunk-EOKFSNH5.js +2 -0
  49. package/dist/chunk-EOKFSNH5.js.map +1 -0
  50. package/dist/chunk-FOY43MIQ.js +2 -0
  51. package/dist/chunk-FOY43MIQ.js.map +1 -0
  52. package/dist/chunk-FU4H45BR.js +2 -0
  53. package/dist/chunk-FU4H45BR.js.map +1 -0
  54. package/dist/chunk-H4XO5KQZ.js +2 -0
  55. package/dist/chunk-H4XO5KQZ.js.map +1 -0
  56. package/dist/chunk-HIT33DXM.js +2 -0
  57. package/dist/chunk-HIT33DXM.js.map +1 -0
  58. package/dist/chunk-HRG3L64O.js +2 -0
  59. package/dist/chunk-HRG3L64O.js.map +1 -0
  60. package/dist/chunk-IQKIIIQ3.js +2 -0
  61. package/dist/chunk-IQKIIIQ3.js.map +1 -0
  62. package/dist/chunk-JHRYQ25B.js +2 -0
  63. package/dist/chunk-JHRYQ25B.js.map +1 -0
  64. package/dist/chunk-LA22O6VE.js +2 -0
  65. package/dist/chunk-LA22O6VE.js.map +1 -0
  66. package/dist/{chunk-BYXTOSM6.js → chunk-LWBGC4MI.js} +2 -2
  67. package/dist/{chunk-BYXTOSM6.js.map → chunk-LWBGC4MI.js.map} +1 -1
  68. package/dist/chunk-NDXYABGR.js +2 -0
  69. package/dist/chunk-NDXYABGR.js.map +1 -0
  70. package/dist/chunk-NQFPNHFQ.js +2 -0
  71. package/dist/chunk-NQFPNHFQ.js.map +1 -0
  72. package/dist/chunk-NRQWDEPL.js +2 -0
  73. package/dist/chunk-NRQWDEPL.js.map +1 -0
  74. package/dist/chunk-OGRUMTZC.js +2 -0
  75. package/dist/chunk-OGRUMTZC.js.map +1 -0
  76. package/dist/{chunk-OKSGVAQQ.js → chunk-OWFC7RTB.js} +2 -2
  77. package/dist/{chunk-OKSGVAQQ.js.map → chunk-OWFC7RTB.js.map} +1 -1
  78. package/dist/chunk-OZ7TAILP.js +2 -0
  79. package/dist/chunk-OZ7TAILP.js.map +1 -0
  80. package/dist/chunk-PN2PHVKQ.js +2 -0
  81. package/dist/chunk-PN2PHVKQ.js.map +1 -0
  82. package/dist/chunk-QBBE3G4O.js +2 -0
  83. package/dist/chunk-QBBE3G4O.js.map +1 -0
  84. package/dist/{chunk-4M3WR2KJ.js → chunk-RAW5SN5A.js} +2 -2
  85. package/dist/{chunk-4M3WR2KJ.js.map → chunk-RAW5SN5A.js.map} +1 -1
  86. package/dist/chunk-RCP3J3FN.js +2 -0
  87. package/dist/chunk-RCP3J3FN.js.map +1 -0
  88. package/dist/chunk-RSILFO3M.js +2 -0
  89. package/dist/chunk-RSILFO3M.js.map +1 -0
  90. package/dist/chunk-RZQ2HH5A.js +2 -0
  91. package/dist/chunk-RZQ2HH5A.js.map +1 -0
  92. package/dist/chunk-SLQNE7TL.js +2 -0
  93. package/dist/chunk-SLQNE7TL.js.map +1 -0
  94. package/dist/chunk-TVYYMHLA.js +2 -0
  95. package/dist/chunk-TVYYMHLA.js.map +1 -0
  96. package/dist/chunk-UDJUMHNY.js +2 -0
  97. package/dist/chunk-UDJUMHNY.js.map +1 -0
  98. package/dist/chunk-VWS2FZKZ.js +2 -0
  99. package/dist/chunk-VWS2FZKZ.js.map +1 -0
  100. package/dist/chunk-WFZACDDH.js +2 -0
  101. package/dist/chunk-WFZACDDH.js.map +1 -0
  102. package/dist/chunk-WOVO46OF.js +2 -0
  103. package/dist/chunk-WOVO46OF.js.map +1 -0
  104. package/dist/chunk-WUHYNXHE.js +2 -0
  105. package/dist/chunk-WUHYNXHE.js.map +1 -0
  106. package/dist/chunk-WW4B3LUO.js +2 -0
  107. package/dist/chunk-WW4B3LUO.js.map +1 -0
  108. package/dist/chunk-XJFPH3IG.js +2 -0
  109. package/dist/chunk-XJFPH3IG.js.map +1 -0
  110. package/dist/chunk-XPC3GTK7.js +2 -0
  111. package/dist/chunk-XPC3GTK7.js.map +1 -0
  112. package/dist/chunk-XU7DDF5D.js +2 -0
  113. package/dist/chunk-XU7DDF5D.js.map +1 -0
  114. package/dist/chunk-YDRZPQ3J.js +2 -0
  115. package/dist/chunk-YDRZPQ3J.js.map +1 -0
  116. package/dist/chunk-YHG3FCHM.js +2 -0
  117. package/dist/chunk-YHG3FCHM.js.map +1 -0
  118. package/dist/chunk-ZHLE6XEC.js +2 -0
  119. package/dist/chunk-ZHLE6XEC.js.map +1 -0
  120. package/dist/components/carousel/carousel-action.d.ts +8 -0
  121. package/dist/components/carousel/carousel-action.js +2 -0
  122. package/dist/components/carousel/carousel-action.js.map +1 -0
  123. package/dist/components/carousel/carousel-content.d.ts +6 -0
  124. package/dist/components/carousel/carousel-content.js +2 -0
  125. package/dist/components/carousel/carousel-content.js.map +1 -0
  126. package/dist/components/carousel/carousel-item.d.ts +6 -0
  127. package/dist/components/carousel/carousel-item.js +2 -0
  128. package/dist/components/carousel/carousel-item.js.map +1 -0
  129. package/dist/components/carousel/carousel-root.d.ts +13 -0
  130. package/dist/components/carousel/carousel-root.js +2 -0
  131. package/dist/components/carousel/carousel-root.js.map +1 -0
  132. package/dist/components/carousel/index.d.ts +6 -0
  133. package/dist/components/carousel/index.js +2 -0
  134. package/dist/components/carousel/index.js.map +1 -0
  135. package/dist/components/chip.d.ts +1 -1
  136. package/dist/components/chip.js +1 -1
  137. package/dist/components/chip.js.map +1 -1
  138. package/dist/components/controls/date-picker/date-picker-caption.d.ts +6 -0
  139. package/dist/components/controls/date-picker/date-picker-caption.js +2 -0
  140. package/dist/components/controls/date-picker/date-picker-caption.js.map +1 -0
  141. package/dist/components/controls/date-picker/date-picker-content.d.ts +7 -0
  142. package/dist/components/controls/date-picker/date-picker-content.js +2 -0
  143. package/dist/components/controls/date-picker/date-picker-content.js.map +1 -0
  144. package/dist/components/controls/date-picker/date-picker-icon.d.ts +10 -0
  145. package/dist/components/controls/date-picker/date-picker-icon.js +2 -0
  146. package/dist/components/controls/date-picker/date-picker-icon.js.map +1 -0
  147. package/dist/components/controls/date-picker/date-picker-label.d.ts +7 -0
  148. package/dist/components/controls/date-picker/date-picker-label.js +2 -0
  149. package/dist/components/controls/date-picker/date-picker-label.js.map +1 -0
  150. package/dist/components/controls/date-picker/date-picker-root.d.ts +10 -0
  151. package/dist/components/controls/date-picker/date-picker-root.js +2 -0
  152. package/dist/components/controls/date-picker/date-picker-root.js.map +1 -0
  153. package/dist/components/controls/date-picker/date-picker-slot.d.ts +6 -0
  154. package/dist/components/controls/date-picker/date-picker-slot.js +2 -0
  155. package/dist/components/controls/date-picker/date-picker-slot.js.map +1 -0
  156. package/dist/components/controls/date-picker/date-picker-styles.d.ts +65 -0
  157. package/dist/components/controls/date-picker/date-picker-styles.js +2 -0
  158. package/dist/components/controls/date-picker/date-picker-styles.js.map +1 -0
  159. package/dist/components/controls/date-picker/date-picker-trigger.d.ts +7 -0
  160. package/dist/components/controls/date-picker/date-picker-trigger.js +2 -0
  161. package/dist/components/controls/date-picker/date-picker-trigger.js.map +1 -0
  162. package/dist/components/controls/date-picker/date-picker-value.d.ts +8 -0
  163. package/dist/components/controls/date-picker/date-picker-value.js +2 -0
  164. package/dist/components/controls/date-picker/date-picker-value.js.map +1 -0
  165. package/dist/components/controls/date-picker/index.d.ts +16 -0
  166. package/dist/components/controls/date-picker/index.js +2 -0
  167. package/dist/components/controls/date-picker/index.js.map +1 -0
  168. package/dist/components/controls/input/index.d.ts +21 -0
  169. package/dist/components/controls/input/index.js +2 -0
  170. package/dist/components/controls/input/index.js.map +1 -0
  171. package/dist/components/controls/input/input-action.d.ts +6 -0
  172. package/dist/components/controls/input/input-action.js +2 -0
  173. package/dist/components/controls/input/input-action.js.map +1 -0
  174. package/dist/components/controls/input/input-caption.d.ts +6 -0
  175. package/dist/components/controls/input/input-caption.js +2 -0
  176. package/dist/components/controls/input/input-caption.js.map +1 -0
  177. package/dist/components/controls/input/input-content.d.ts +6 -0
  178. package/dist/components/controls/input/input-content.js +2 -0
  179. package/dist/components/controls/input/input-content.js.map +1 -0
  180. package/dist/components/controls/input/input-currency.d.ts +13 -0
  181. package/dist/components/controls/input/input-currency.js +2 -0
  182. package/dist/components/controls/input/input-currency.js.map +1 -0
  183. package/dist/components/controls/input/input-icon.d.ts +10 -0
  184. package/dist/components/controls/input/input-icon.js +2 -0
  185. package/dist/components/controls/{input.js.map → input/input-icon.js.map} +1 -1
  186. package/dist/components/controls/input/input-label.d.ts +7 -0
  187. package/dist/components/controls/input/input-label.js +2 -0
  188. package/dist/components/controls/input/input-label.js.map +1 -0
  189. package/dist/components/controls/input/input-mask.d.ts +6 -0
  190. package/dist/components/controls/input/input-mask.js +2 -0
  191. package/dist/components/controls/input/input-mask.js.map +1 -0
  192. package/dist/components/controls/input/input-number.d.ts +8 -0
  193. package/dist/components/controls/input/input-number.js +2 -0
  194. package/dist/components/controls/input/input-number.js.map +1 -0
  195. package/dist/components/controls/input/input-numeric-stepper.d.ts +8 -0
  196. package/dist/components/controls/input/input-numeric-stepper.js +2 -0
  197. package/dist/components/controls/input/input-numeric-stepper.js.map +1 -0
  198. package/dist/components/controls/input/input-root.d.ts +9 -0
  199. package/dist/components/controls/input/input-root.js +2 -0
  200. package/dist/components/controls/input/input-root.js.map +1 -0
  201. package/dist/components/controls/input/input-slot.d.ts +6 -0
  202. package/dist/components/controls/input/input-slot.js +2 -0
  203. package/dist/components/controls/input/input-slot.js.map +1 -0
  204. package/dist/components/controls/input/input-styles.d.ts +71 -0
  205. package/dist/components/controls/input/input-styles.js +2 -0
  206. package/dist/components/controls/input/input-styles.js.map +1 -0
  207. package/dist/components/controls/input/input-text.d.ts +6 -0
  208. package/dist/components/controls/input/input-text.js +2 -0
  209. package/dist/components/controls/input/input-text.js.map +1 -0
  210. package/dist/components/controls/input/input-trigger.d.ts +6 -0
  211. package/dist/components/controls/input/input-trigger.js +2 -0
  212. package/dist/components/controls/input/input-trigger.js.map +1 -0
  213. package/dist/components/controls/rich-editor.js +1 -1
  214. package/dist/components/controls/rich-editor.js.map +1 -1
  215. package/dist/components/controls/search-input.d.ts +2 -2
  216. package/dist/components/controls/search-input.js +1 -1
  217. package/dist/components/controls/search-selector.js +1 -1
  218. package/dist/components/controls/search-selector.js.map +1 -1
  219. package/dist/components/controls/select/index.d.ts +27 -0
  220. package/dist/components/controls/select/index.js +2 -0
  221. package/dist/components/controls/select/index.js.map +1 -0
  222. package/dist/components/controls/select/select-caption.d.ts +6 -0
  223. package/dist/components/controls/select/select-caption.js +2 -0
  224. package/dist/components/controls/select/select-caption.js.map +1 -0
  225. package/dist/components/controls/select/select-content.d.ts +7 -0
  226. package/dist/components/controls/select/select-content.js +2 -0
  227. package/dist/components/controls/select/select-content.js.map +1 -0
  228. package/dist/components/controls/select/select-header-title.d.ts +10 -0
  229. package/dist/components/controls/select/select-header-title.js +2 -0
  230. package/dist/components/controls/select/select-header-title.js.map +1 -0
  231. package/dist/components/controls/select/select-header.d.ts +7 -0
  232. package/dist/components/controls/select/select-header.js +2 -0
  233. package/dist/components/controls/select/select-header.js.map +1 -0
  234. package/dist/components/controls/select/select-icon.d.ts +10 -0
  235. package/dist/components/controls/select/select-icon.js +2 -0
  236. package/dist/components/controls/{select.js.map → select/select-icon.js.map} +1 -1
  237. package/dist/components/controls/select/select-multi-value.d.ts +16 -0
  238. package/dist/components/controls/select/select-multi-value.js +2 -0
  239. package/dist/components/controls/select/select-multi-value.js.map +1 -0
  240. package/dist/components/controls/select/select-option-text.d.ts +9 -0
  241. package/dist/components/controls/select/select-option-text.js +2 -0
  242. package/dist/components/controls/select/select-option-text.js.map +1 -0
  243. package/dist/components/controls/select/select-option.d.ts +9 -0
  244. package/dist/components/controls/select/select-option.js +2 -0
  245. package/dist/components/controls/select/select-option.js.map +1 -0
  246. package/dist/components/controls/select/select-options.d.ts +7 -0
  247. package/dist/components/controls/select/select-options.js +2 -0
  248. package/dist/components/controls/select/select-options.js.map +1 -0
  249. package/dist/components/controls/select/select-root.d.ts +10 -0
  250. package/dist/components/controls/select/select-root.js +2 -0
  251. package/dist/components/controls/select/select-root.js.map +1 -0
  252. package/dist/components/controls/select/select-slot.d.ts +6 -0
  253. package/dist/components/controls/select/select-slot.js +2 -0
  254. package/dist/components/controls/select/select-slot.js.map +1 -0
  255. package/dist/components/controls/select/select-styles.d.ts +65 -0
  256. package/dist/components/controls/select/select-styles.js +2 -0
  257. package/dist/components/controls/select/select-styles.js.map +1 -0
  258. package/dist/components/controls/select/select-trigger.d.ts +7 -0
  259. package/dist/components/controls/select/select-trigger.js +2 -0
  260. package/dist/components/controls/select/select-trigger.js.map +1 -0
  261. package/dist/components/controls/select/select-value.d.ts +8 -0
  262. package/dist/components/controls/select/select-value.js +2 -0
  263. package/dist/components/controls/select/select-value.js.map +1 -0
  264. package/dist/components/custom/pessoa/index.js +1 -1
  265. package/dist/components/dropdown-menu.d.ts +4 -1
  266. package/dist/components/dropdown-menu.js +1 -1
  267. package/dist/components/full-calendar/calendar-cell.js +1 -1
  268. package/dist/components/full-calendar/calendar-day-view.js +1 -1
  269. package/dist/components/full-calendar/calendar-month-view.js +1 -1
  270. package/dist/components/full-calendar/calendar-more-events-dropdown.js +1 -1
  271. package/dist/components/full-calendar/calendar-toggle-view.js +1 -1
  272. package/dist/components/full-calendar/calendar-view-renderer.js +1 -1
  273. package/dist/components/full-calendar/calendar-week-view.js +1 -1
  274. package/dist/components/full-calendar/index.js +1 -1
  275. package/dist/components/list/context/list-context.d.ts +10 -0
  276. package/dist/components/list/context/list-context.js +2 -0
  277. package/dist/components/list/context/list-context.js.map +1 -0
  278. package/dist/components/list/index.d.ts +12 -0
  279. package/dist/components/list/index.js +2 -0
  280. package/dist/components/list/index.js.map +1 -0
  281. package/dist/components/list/list-content.d.ts +9 -0
  282. package/dist/components/list/list-content.js +2 -0
  283. package/dist/components/list/list-content.js.map +1 -0
  284. package/dist/components/list/list-header-title.d.ts +9 -0
  285. package/dist/components/list/list-header-title.js +2 -0
  286. package/dist/components/list/list-header-title.js.map +1 -0
  287. package/dist/components/list/list-header.d.ts +8 -0
  288. package/dist/components/list/list-header.js +2 -0
  289. package/dist/components/list/list-header.js.map +1 -0
  290. package/dist/components/list/list-item.d.ts +14 -0
  291. package/dist/components/list/list-item.js +2 -0
  292. package/dist/components/list/list-item.js.map +1 -0
  293. package/dist/components/list/list-root.d.ts +12 -0
  294. package/dist/components/list/list-root.js +2 -0
  295. package/dist/components/list/list-root.js.map +1 -0
  296. package/dist/components/steps/index.js +1 -1
  297. package/dist/components/table/index.js +1 -1
  298. package/dist/components/typography.d.ts +1 -1
  299. package/dist/components/upload.js +1 -1
  300. package/dist/components/upload.js.map +1 -1
  301. package/dist/index.css +1 -1
  302. package/dist/index.css.map +1 -1
  303. package/package.json +10 -8
  304. package/dist/chunk-6PHXO2YA.js +0 -2
  305. package/dist/chunk-PBI3K7KX.js +0 -2
  306. package/dist/chunk-PBI3K7KX.js.map +0 -1
  307. package/dist/chunk-SYECSMYR.js +0 -2
  308. package/dist/chunk-SYECSMYR.js.map +0 -1
  309. package/dist/chunk-XC6SVYAS.js +0 -2
  310. package/dist/chunk-XGPKBYDY.js +0 -2
  311. package/dist/chunk-XGPKBYDY.js.map +0 -1
  312. package/dist/chunk-YOLTIAFT.js +0 -2
  313. package/dist/chunk-YOLTIAFT.js.map +0 -1
  314. package/dist/components/controls/input.d.ts +0 -97
  315. package/dist/components/controls/input.js +0 -2
  316. package/dist/components/controls/select.d.ts +0 -94
  317. package/dist/components/controls/select.js +0 -2
  318. package/dist/components/horizontal-scroll.d.ts +0 -11
  319. package/dist/components/horizontal-scroll.js +0 -2
  320. package/dist/components/horizontal-scroll.js.map +0 -1
  321. package/dist/components/list.d.ts +0 -25
  322. package/dist/components/list.js +0 -2
  323. package/dist/components/list.js.map +0 -1
@@ -1,2 +1,2 @@
1
- export{a as CalendarToggleView}from'../../chunk-XC6SVYAS.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-SYECSMYR.js';import'../../chunk-5Z3AIBBS.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-toggle-view.js.map
1
+ export{a as CalendarToggleView}from'../../chunk-BXWTGQRV.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-3QA5HU4T.js';import'../../chunk-RSILFO3M.js';import'../../chunk-EDVE3ICB.js';import'../../chunk-VWS2FZKZ.js';import'../../chunk-WOVO46OF.js';import'../../chunk-3RD2PGPH.js';import'../../chunk-TVYYMHLA.js';import'../../chunk-H4XO5KQZ.js';import'../../chunk-CCSIBUKX.js';import'../../chunk-JHRYQ25B.js';import'../../chunk-XJFPH3IG.js';import'../../chunk-SLQNE7TL.js';import'../../chunk-26RT6WUU.js';import'../../chunk-3LWJK7RE.js';import'../../chunk-LA22O6VE.js';import'../../chunk-5Z3AIBBS.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-HRG3L64O.js';import'../../chunk-XPC3GTK7.js';import'../../chunk-5CA552M6.js';import'../../chunk-4ZEXJODE.js';import'../../chunk-NQFPNHFQ.js';import'../../chunk-PN2PHVKQ.js';import'../../chunk-WW4B3LUO.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-toggle-view.js.map
2
2
  //# sourceMappingURL=calendar-toggle-view.js.map
@@ -1,2 +1,2 @@
1
- export{a as CalendarViewRenderer}from'../../chunk-HLWHETF5.js';import'../../chunk-4M3WR2KJ.js';import'../../chunk-SLMHDBWO.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';import'../../chunk-BYXTOSM6.js';import'../../chunk-TTKENFBF.js';import'../../chunk-OKSGVAQQ.js';import'../../chunk-EXC2XOL6.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-6PHXO2YA.js';import'../../chunk-CBFC4QME.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-view-renderer.js.map
1
+ export{a as CalendarViewRenderer}from'../../chunk-BIPU447J.js';import'../../chunk-RAW5SN5A.js';import'../../chunk-AGO3UKJY.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';import'../../chunk-LWBGC4MI.js';import'../../chunk-4NBJXNQ7.js';import'../../chunk-OWFC7RTB.js';import'../../chunk-EXC2XOL6.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-6EDRVSCQ.js';import'../../chunk-HRG3L64O.js';import'../../chunk-XPC3GTK7.js';import'../../chunk-5CA552M6.js';import'../../chunk-4ZEXJODE.js';import'../../chunk-NQFPNHFQ.js';import'../../chunk-PN2PHVKQ.js';import'../../chunk-WW4B3LUO.js';import'../../chunk-CBFC4QME.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-view-renderer.js.map
2
2
  //# sourceMappingURL=calendar-view-renderer.js.map
@@ -1,2 +1,2 @@
1
- export{a as CalendarWeekView}from'../../chunk-4M3WR2KJ.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';import'../../chunk-TTKENFBF.js';import'../../chunk-OKSGVAQQ.js';import'../../chunk-EXC2XOL6.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-6PHXO2YA.js';import'../../chunk-CBFC4QME.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-week-view.js.map
1
+ export{a as CalendarWeekView}from'../../chunk-RAW5SN5A.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';import'../../chunk-4NBJXNQ7.js';import'../../chunk-OWFC7RTB.js';import'../../chunk-EXC2XOL6.js';import'../../chunk-SXGSWVMZ.js';import'../../chunk-6EDRVSCQ.js';import'../../chunk-HRG3L64O.js';import'../../chunk-XPC3GTK7.js';import'../../chunk-5CA552M6.js';import'../../chunk-4ZEXJODE.js';import'../../chunk-NQFPNHFQ.js';import'../../chunk-PN2PHVKQ.js';import'../../chunk-WW4B3LUO.js';import'../../chunk-CBFC4QME.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=calendar-week-view.js.map
2
2
  //# sourceMappingURL=calendar-week-view.js.map
@@ -1,2 +1,2 @@
1
- export{a as CalendarTodayButton}from'../../chunk-GKILN5HI.js';export{a as CalendarToggleView}from'../../chunk-XC6SVYAS.js';export{a as CalendarViewRenderer}from'../../chunk-HLWHETF5.js';export{a as CalendarWeekView}from'../../chunk-4M3WR2KJ.js';import'../../chunk-SLMHDBWO.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';export{a as CalendarEvent,c as CalendarEventDescription,d as CalendarEventStatus,b as CalendarEventTitle}from'../../chunk-F4DYKYWJ.js';export{a as CalendarHeader}from'../../chunk-4BGTC333.js';export{a as CalendarMonthView}from'../../chunk-BYXTOSM6.js';import'../../chunk-TTKENFBF.js';import'../../chunk-OKSGVAQQ.js';export{a as CalendarNavigator}from'../../chunk-RGKXZJJS.js';import'../../chunk-EXC2XOL6.js';export{a as CalendarRoot,b as useFullCalendar}from'../../chunk-SXGSWVMZ.js';export{a as CalendarBody}from'../../chunk-J4X5RQTR.js';import'../../chunk-SYECSMYR.js';import'../../chunk-SLAAEXWI.js';import'../../chunk-5Z3AIBBS.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-NELCN6E2.js';import'../../chunk-6PHXO2YA.js';import'../../chunk-CBFC4QME.js';import'../../chunk-YOLTIAFT.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=index.js.map
1
+ export{a as CalendarTodayButton}from'../../chunk-GKILN5HI.js';export{a as CalendarToggleView}from'../../chunk-BXWTGQRV.js';export{a as CalendarViewRenderer}from'../../chunk-BIPU447J.js';export{a as CalendarWeekView}from'../../chunk-RAW5SN5A.js';export{a as CalendarBody}from'../../chunk-J4X5RQTR.js';import'../../chunk-AGO3UKJY.js';import'../../chunk-ZVVPUP7V.js';import'../../chunk-MZSV4LNY.js';export{a as CalendarEvent,c as CalendarEventDescription,d as CalendarEventStatus,b as CalendarEventTitle}from'../../chunk-F4DYKYWJ.js';export{a as CalendarHeader}from'../../chunk-4BGTC333.js';export{a as CalendarMonthView}from'../../chunk-LWBGC4MI.js';import'../../chunk-4NBJXNQ7.js';import'../../chunk-OWFC7RTB.js';export{a as CalendarNavigator}from'../../chunk-RGKXZJJS.js';import'../../chunk-EXC2XOL6.js';export{a as CalendarRoot,b as useFullCalendar}from'../../chunk-SXGSWVMZ.js';import'../../chunk-SLAAEXWI.js';import'../../chunk-NELCN6E2.js';import'../../chunk-3QA5HU4T.js';import'../../chunk-RSILFO3M.js';import'../../chunk-EDVE3ICB.js';import'../../chunk-VWS2FZKZ.js';import'../../chunk-WOVO46OF.js';import'../../chunk-3RD2PGPH.js';import'../../chunk-TVYYMHLA.js';import'../../chunk-H4XO5KQZ.js';import'../../chunk-CCSIBUKX.js';import'../../chunk-JHRYQ25B.js';import'../../chunk-XJFPH3IG.js';import'../../chunk-SLQNE7TL.js';import'../../chunk-26RT6WUU.js';import'../../chunk-3LWJK7RE.js';import'../../chunk-LA22O6VE.js';import'../../chunk-5Z3AIBBS.js';import'../../chunk-2JQVYVAT.js';import'../../chunk-6EDRVSCQ.js';import'../../chunk-HRG3L64O.js';import'../../chunk-XPC3GTK7.js';import'../../chunk-5CA552M6.js';import'../../chunk-4ZEXJODE.js';import'../../chunk-NQFPNHFQ.js';import'../../chunk-PN2PHVKQ.js';import'../../chunk-WW4B3LUO.js';import'../../chunk-CBFC4QME.js';import'../../chunk-M6ZI7M3R.js';import'../../chunk-DVDHTP4C.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { Virtualizer } from '@tanstack/react-virtual';
3
+
4
+ type VirtualizerContextValue = {
5
+ virtualizer: Virtualizer<HTMLDivElement, Element> | null;
6
+ enabled: boolean;
7
+ };
8
+ declare const VirtualizerContext: React.Context<VirtualizerContextValue>;
9
+
10
+ export { VirtualizerContext, type VirtualizerContextValue };
@@ -0,0 +1,2 @@
1
+ export{a as VirtualizerContext}from'../../../chunk-WW4B3LUO.js';//# sourceMappingURL=list-context.js.map
2
+ //# sourceMappingURL=list-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-context.js"}
@@ -0,0 +1,12 @@
1
+ export { ListRoot } from './list-root.js';
2
+ export { ListHeader } from './list-header.js';
3
+ export { ListHeaderTitle } from './list-header-title.js';
4
+ export { ListContent } from './list-content.js';
5
+ export { ListItem } from './list-item.js';
6
+ export { VirtualizerContext, VirtualizerContextValue } from './context/list-context.js';
7
+ import 'react/jsx-runtime';
8
+ import 'react';
9
+ import '../typography.js';
10
+ import 'class-variance-authority/types';
11
+ import '@xjur-ui/util';
12
+ import '@tanstack/react-virtual';
@@ -0,0 +1,2 @@
1
+ import'../../chunk-HRG3L64O.js';export{a as ListContent}from'../../chunk-XPC3GTK7.js';export{a as ListHeaderTitle}from'../../chunk-5CA552M6.js';export{a as ListHeader}from'../../chunk-4ZEXJODE.js';export{a as ListItem}from'../../chunk-NQFPNHFQ.js';export{a as ListRoot}from'../../chunk-PN2PHVKQ.js';export{a as VirtualizerContext}from'../../chunk-WW4B3LUO.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ComponentProps, ReactNode } from 'react';
3
+
4
+ declare function ListContent({ className, asChild, children, renderItem, ...props }: ComponentProps<'ul'> & {
5
+ asChild?: boolean;
6
+ renderItem?: (index: number) => ReactNode;
7
+ }): react_jsx_runtime.JSX.Element;
8
+
9
+ export { ListContent };
@@ -0,0 +1,2 @@
1
+ export{a as ListContent}from'../../chunk-XPC3GTK7.js';import'../../chunk-WW4B3LUO.js';//# sourceMappingURL=list-content.js.map
2
+ //# sourceMappingURL=list-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-content.js"}
@@ -0,0 +1,9 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { TypographyProps } from '../typography.js';
3
+ import 'react';
4
+ import 'class-variance-authority/types';
5
+ import '@xjur-ui/util';
6
+
7
+ declare function ListHeaderTitle({ variant, size, weight, className, ...props }: TypographyProps): react_jsx_runtime.JSX.Element;
8
+
9
+ export { ListHeaderTitle };
@@ -0,0 +1,2 @@
1
+ export{a as ListHeaderTitle}from'../../chunk-5CA552M6.js';import'../../chunk-EIG6CBTQ.js';//# sourceMappingURL=list-header-title.js.map
2
+ //# sourceMappingURL=list-header-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-header-title.js"}
@@ -0,0 +1,8 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ComponentProps } from 'react';
3
+
4
+ declare function ListHeader({ className, asChild, ...props }: ComponentProps<'div'> & {
5
+ asChild?: boolean;
6
+ }): react_jsx_runtime.JSX.Element;
7
+
8
+ export { ListHeader };
@@ -0,0 +1,2 @@
1
+ export{a as ListHeader}from'../../chunk-4ZEXJODE.js';//# sourceMappingURL=list-header.js.map
2
+ //# sourceMappingURL=list-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-header.js"}
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import { ClassVariantProps } from '@xjur-ui/util';
4
+ import { ComponentProps } from 'react';
5
+
6
+ declare const variants: (props?: ({
7
+ size?: "md" | "lg" | null | undefined;
8
+ isActive?: boolean | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+ declare function ListItem({ className, size, isActive, asChild, ...props }: ComponentProps<'li'> & ClassVariantProps<typeof variants> & {
11
+ asChild?: boolean;
12
+ }): react_jsx_runtime.JSX.Element;
13
+
14
+ export { ListItem };
@@ -0,0 +1,2 @@
1
+ export{a as ListItem}from'../../chunk-NQFPNHFQ.js';//# sourceMappingURL=list-item.js.map
2
+ //# sourceMappingURL=list-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-item.js"}
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ComponentProps } from 'react';
3
+
4
+ declare function ListRoot({ className, asChild, children, virtualized, itemCount, estimateSize, overscan, ...props }: ComponentProps<'div'> & {
5
+ asChild?: boolean;
6
+ virtualized?: boolean;
7
+ itemCount?: number;
8
+ estimateSize?: (index: number) => number;
9
+ overscan?: number;
10
+ }): react_jsx_runtime.JSX.Element;
11
+
12
+ export { ListRoot };
@@ -0,0 +1,2 @@
1
+ export{a as ListRoot}from'../../chunk-PN2PHVKQ.js';import'../../chunk-WW4B3LUO.js';//# sourceMappingURL=list-root.js.map
2
+ //# sourceMappingURL=list-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-root.js"}
@@ -1,2 +1,2 @@
1
- export{a as Step}from'../../chunk-FQTUN47L.js';export{a as NextStep,b as PreviousStep}from'../../chunk-TYWCS7GS.js';export{a as Steps}from'../../chunk-X6SOSTUN.js';export{a as StepsNavigation}from'../../chunk-ZPQPJJQJ.js';export{a as StepsRoot}from'../../chunk-F7ANJ4HD.js';export{a as StepsContext,b as StepsProvider,c as useSteps}from'../../chunk-O3JK6QF6.js';import'../../chunk-M6ZI7M3R.js';//# sourceMappingURL=index.js.map
1
+ export{a as Steps}from'../../chunk-X6SOSTUN.js';export{a as StepsNavigation}from'../../chunk-ZPQPJJQJ.js';export{a as StepsRoot}from'../../chunk-F7ANJ4HD.js';export{a as Step}from'../../chunk-FQTUN47L.js';export{a as NextStep,b as PreviousStep}from'../../chunk-TYWCS7GS.js';export{a as StepsContext,b as StepsProvider,c as useSteps}from'../../chunk-O3JK6QF6.js';import'../../chunk-M6ZI7M3R.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- export{a as TableCell}from'../../chunk-V2FCP4FA.js';export{a as TableFooter}from'../../chunk-FUHASFGU.js';export{a as TableHead,b as TableHeadContent}from'../../chunk-AKR2BJRB.js';export{a as TableHeader}from'../../chunk-Q2BZSHS2.js';export{a as TableRow}from'../../chunk-EITO7GZX.js';export{a as TableSort}from'../../chunk-GVKH2BG2.js';export{a as Table}from'../../chunk-7HMMMRDA.js';export{a as TableBody}from'../../chunk-URDL5OKH.js';import'../../chunk-DVDHTP4C.js';//# sourceMappingURL=index.js.map
1
+ export{a as TableHead,b as TableHeadContent}from'../../chunk-AKR2BJRB.js';export{a as TableHeader}from'../../chunk-Q2BZSHS2.js';export{a as TableRow}from'../../chunk-EITO7GZX.js';export{a as TableSort}from'../../chunk-GVKH2BG2.js';export{a as Table}from'../../chunk-7HMMMRDA.js';export{a as TableBody}from'../../chunk-URDL5OKH.js';export{a as TableCell}from'../../chunk-V2FCP4FA.js';export{a as TableFooter}from'../../chunk-FUHASFGU.js';import'../../chunk-DVDHTP4C.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -7,7 +7,7 @@ import { ClassVariantProps } from '@xjur-ui/util';
7
7
  declare const typographyVariants: (props?: ({
8
8
  variant?: "label" | "body" | "title" | "headline" | null | undefined;
9
9
  size?: "sm" | "md" | "lg" | "sm-2x" | "sm-1x" | null | undefined;
10
- weight?: "bold" | "normal" | "black" | "medium" | "thin" | "light" | "extraLight" | "semibold" | "extraBold" | null | undefined;
10
+ weight?: "bold" | "thin" | "extraLight" | "light" | "normal" | "medium" | "semibold" | "extraBold" | "black" | null | undefined;
11
11
  } & class_variance_authority_types.ClassProp) | undefined) => string;
12
12
  interface TypographyProps extends ComponentProps<'base'>, ClassVariantProps<typeof typographyVariants> {
13
13
  asChild?: boolean;
@@ -1,2 +1,2 @@
1
- import {a}from'../chunk-3L772WC6.js';import {b as b$3,c as c$1,g as g$1,k}from'../chunk-SYECSMYR.js';import {b as b$2,c,g}from'../chunk-PBI3K7KX.js';import'../chunk-PBR7SFWY.js';import'../chunk-5Z3AIBBS.js';import'../chunk-2JQVYVAT.js';import'../chunk-CBFC4QME.js';import'../chunk-YOLTIAFT.js';import {b as b$1}from'../chunk-M6ZI7M3R.js';import {b}from'../chunk-DVDHTP4C.js';import'../chunk-EIG6CBTQ.js';import {createContext,useState,useRef,useCallback,useContext}from'react';import {cva,cx}from'@xjur-ui/util';import {jsx,jsxs}from'react/jsx-runtime';var q=createContext(null);function T(){let l=useContext(q);if(!l)throw new Error("Upload components must be used within UploadRoot");return l}function te({children:l,className:n,files:d,onFilesChange:c,accept:m,multiple:o=false,disabled:u=false,maxFiles:b=1,maxSize:x,acceptedFormats:f=[".jpeg",".png",".webp"],...v}){return jsx(q.Provider,{value:{files:d,onFilesChange:c,accept:m,multiple:o,disabled:u,maxFiles:b,maxSize:x,acceptedFormats:f},children:jsx("div",{className:cx("flex flex-col gap-4",n),...v,children:l})})}var ae=cva(["flex flex-col items-center justify-center","relative border-2 border-dashed border-border-layer-2 rounded-lg transition-all duration-200 ease-in-out cursor-pointer","hover:border-border-layer-2 hover:bg-transparent","focus-within:border-primary-idle focus-within:ring-2 focus-within:ring-primary-idle/20","data-[drag-over=true]:border-primary-idle data-[drag-over=true]:bg-primary-alt-idle/10"],{variants:{size:{large:"p-6 min-h-[200px] ",medium:"p-6 min-h-[160px]",small:"p-6 min-h-[130px]",oneLine:"p-4 min-h-[18px]"},showButton:{true:"",false:""},variant:{default:"bg-white",transparent:"bg-transparent",minimal:"bg-white",oneLineWhite:"bg-white",oneLineTransparent:"bg-transparent"}},compoundVariants:[{size:"large",showButton:true},{size:"medium",showButton:true},{size:"small",showButton:true},{variant:"oneLineWhite",showButton:false,className:"items-center flex flex-row justify-center"},{variant:"oneLineTransparent",showButton:false,className:"items-center flex flex-row justify-center"}],defaultVariants:{size:"large",variant:"default",showButton:true}});function re({className:l,size:n="large",showButton:d=true,variant:c="default",showAcceptedFormats:m=true,buttonText:o="Selecionar arquivo",description:u="Clique ou solte os arquivos para fazer o upload",icon:b="upload",...x}){let{onFilesChange:f,accept:v,multiple:r,disabled:a,maxFiles:t,maxSize:F,acceptedFormats:E}=T(),[W,P]=useState(false),w=useRef(null),[U,D]=useState(0),N=useCallback(i=>{let s=i;return t&&t>0&&(s=s.slice(0,t)),F&&(s=s.filter(p=>p.size<=F)),v&&(s=s.filter(p=>{let Q=`.${p.name.split(".").pop()?.toLowerCase()}`;return E?.some(L=>L.startsWith(".")?L===Q:p.type.includes(L))})),s.map(p=>({name:p.name,type:p.type,fileBinary:p,restrict:false}))},[t,F,v,E]),_=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s+1),P(true);},[]),K=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s-1),U<=1&&P(false);},[U]),$=useCallback(i=>{i.preventDefault(),i.stopPropagation();},[]),G=useCallback(i=>{if(i.preventDefault(),i.stopPropagation(),P(false),D(0),a)return;let s=Array.from(i.dataTransfer.files),p=N(s);p.length>0&&f?.(p);},[a,f,N]),J=useCallback(i=>{if(a)return;let s=Array.from(i.target.files||[]),p=N(s);p.length>0&&f?.(p);},[a,f,N]);return jsxs(M,{...x,"aria-disabled":a,"aria-label":u,className:cx(ae({size:n,showButton:d,variant:c}),l),"data-drag-over":W,fileInputRef:w,onDragEnter:_,onDragLeave:K,onDragOver:$,onDrop:G,children:[jsx("input",{accept:v,className:"hidden",disabled:a,multiple:r,ref:w,type:"file",onChange:J}),jsx(H,{buttonText:o,description:u,icon:b,showAcceptedFormats:m,showButton:d,variant:c||"default",onButtonClick:()=>{!a&&w.current&&w.current.click();}})]})}function ne({children:l,className:n,...d}){return jsx("h3",{className:cx("text-neutral-dark text-lg font-semibold",n),...d,children:l})}function H({description:l="Clique ou solte os arquivos para fazer o upload",icon:n="upload",showAcceptedFormats:d=true,buttonText:c="Selecionar arquivo",showButton:m=true,onButtonClick:o,variant:u="default",className:b$2,...x}){let{acceptedFormats:f}=T(),v=()=>d?jsxs("p",{className:"text-neutral-secondary mt-2 text-sm",children:["Formatos aceitos: ",f?.join(" ")]}):null;return u==="oneLineWhite"||u==="oneLineTransparent"?jsxs("div",{...x,className:cx("flex h-full items-center justify-center gap-4 text-center",b$2),children:[jsx(b,{className:"text-neutral-secondary text-4xl",name:n}),jsx("p",{className:"text-neutral-dark text-base font-medium",children:l}),v()]}):jsxs("div",{...x,className:cx("flex h-full w-full flex-col items-center gap-4 text-center",b$2),children:[jsxs("div",{className:"flex flex-col items-center",children:[jsx(b,{className:"text-neutral-secondary mb-3 text-4xl",name:n}),jsx("p",{className:"text-neutral-dark mb-2 text-base font-medium",children:l}),v()]}),m&&jsx("div",{children:jsx(b$1,{size:"md",variant:"primary",onClick:a=>{a.stopPropagation(),o?.();},children:c})})]})}function M({children:l,fileInputRef:n,...d}){let{disabled:c}=T(),m=useCallback(()=>{!c&&n?.current&&n.current.click();},[c,n]);return jsx("div",{role:"button",tabIndex:c?-1:0,onClick:m,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),m());},...d,children:l})}function oe({fileTypeOptions:l=[{value:"document",label:"Documento"},{value:"image",label:"Imagem"},{value:"video",label:"V\xEDdeo"},{value:"audio",label:"\xC1udio"},{value:"other",label:"Outro"}],onUpdateFile:n,onDeleteFile:d,className:c$2,...m}){let{files:o,onFilesChange:u}=T();if(!o||o.length===0)return null;let b$4=(r,a)=>{if(n)n(r,{description:a});else {let t=[...o];t[r]={...t[r],description:a},u?.(t);}},x=(r,a)=>{if(n)n(r,{fileType:a});else {let t=[...o];t[r]={...t[r],fileType:a},u?.(t);}},f=(r,a)=>{if(n)n(r,{restrict:a});else {let t=[...o];t[r]={...t[r],restrict:a},u?.(t);}},v=r=>{if(d)d(r);else {let a=o.filter((t,F)=>F!==r);u?.(a);}};return jsx("div",{className:cx("space-y-2",c$2),...m,children:jsxs("div",{className:"border-border-layer-2 p-4",children:[jsxs("div",{className:"border-border-layer-2 mb-3 flex w-full flex-row items-center justify-between gap-4 border-b pb-2",children:[jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Descri\xE7\xE3o"})}),jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Tipo"})}),jsx("div",{className:"flex justify-end",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Restrito"})})]}),jsx("div",{className:"space-y-3",children:o.map((r,a$1)=>jsxs("div",{className:"flex flex-row items-center gap-4 py-3",children:[jsx("div",{className:"flex justify-start",children:jsx(b,{className:"text-neutral-secondary hover:text-neutral-dark cursor-grab",name:"drag_indicator"})}),jsx("div",{className:"w-full",children:jsx(b$2,{children:jsx(c,{children:jsx(g,{placeholder:"Nome do arquivo",value:r.description||r.name,onChange:t=>b$4(a$1,t.target.value)})})})}),jsx("div",{className:"w-full",children:jsxs(b$3,{children:[jsxs(c$1,{className:"flex justify-between",children:[jsx("span",{className:"text-neutral-dark",children:l.find(t=>t.value===r.fileType)?.label||"Tipo"}),jsx(b,{className:"text-neutral-secondary",name:"keyboard_arrow_down"})]}),jsx(g$1,{children:l.map(t=>jsx(k,{value:t.value,onSelect:()=>x(a$1,t.value),children:t.label},t.value))})]})}),jsx("div",{className:"flex justify-end",children:jsx(a,{checked:r.restrict||false,onCheckedChange:t=>f(a$1,t)})}),jsx("div",{className:"flex justify-end",children:jsx(b$1,{appearance:"ghost",size:"sm",variant:"destructive",onClick:()=>v(a$1),children:jsx(b,{name:"delete"})})})]},a$1))})]})})}var me={Root:te,Area:re,Title:ne,AreaContent:H,AreaTrigger:M,EditableList:oe};export{oe as EditableFilesList,me as Upload,re as UploadArea,H as UploadAreaContent,M as UploadAreaTrigger,te as UploadRoot,ne as UploadTitle,ae as uploadAreaVariants};//# sourceMappingURL=upload.js.map
1
+ import'../chunk-WFZACDDH.js';import'../chunk-2TVBY4IY.js';import {a}from'../chunk-6KKZP5G3.js';import {a as a$2}from'../chunk-EOKFSNH5.js';import'../chunk-YDRZPQ3J.js';import'../chunk-HIT33DXM.js';import'../chunk-WUHYNXHE.js';import {a as a$1}from'../chunk-DZSAQN5T.js';import'../chunk-NDXYABGR.js';import'../chunk-3DZWZLV3.js';import'../chunk-UDJUMHNY.js';import'../chunk-7DGDSULM.js';import'../chunk-XU7DDF5D.js';import'../chunk-FU4H45BR.js';import'../chunk-4GDW5WIQ.js';import'../chunk-3QA5HU4T.js';import'../chunk-RSILFO3M.js';import {a as a$3}from'../chunk-EDVE3ICB.js';import'../chunk-VWS2FZKZ.js';import {a as a$4}from'../chunk-WOVO46OF.js';import'../chunk-3RD2PGPH.js';import'../chunk-TVYYMHLA.js';import {a as a$5}from'../chunk-H4XO5KQZ.js';import'../chunk-CCSIBUKX.js';import'../chunk-JHRYQ25B.js';import'../chunk-XJFPH3IG.js';import'../chunk-SLQNE7TL.js';import'../chunk-26RT6WUU.js';import'../chunk-3LWJK7RE.js';import {a as a$6}from'../chunk-LA22O6VE.js';import {a as a$7}from'../chunk-3L772WC6.js';import'../chunk-5Z3AIBBS.js';import'../chunk-2JQVYVAT.js';import'../chunk-PBR7SFWY.js';import'../chunk-HRG3L64O.js';import'../chunk-XPC3GTK7.js';import'../chunk-5CA552M6.js';import'../chunk-4ZEXJODE.js';import'../chunk-NQFPNHFQ.js';import'../chunk-PN2PHVKQ.js';import'../chunk-WW4B3LUO.js';import'../chunk-CBFC4QME.js';import {b as b$1}from'../chunk-M6ZI7M3R.js';import {b}from'../chunk-DVDHTP4C.js';import'../chunk-EIG6CBTQ.js';import {createContext,useState,useRef,useCallback,useContext}from'react';import {cva,cx}from'@xjur-ui/util';import {jsx,jsxs}from'react/jsx-runtime';var q=createContext(null);function T(){let l=useContext(q);if(!l)throw new Error("Upload components must be used within UploadRoot");return l}function te({children:l,className:n,files:d,onFilesChange:c,accept:m,multiple:o=false,disabled:u=false,maxFiles:b=1,maxSize:x,acceptedFormats:f=[".jpeg",".png",".webp"],...v}){return jsx(q.Provider,{value:{files:d,onFilesChange:c,accept:m,multiple:o,disabled:u,maxFiles:b,maxSize:x,acceptedFormats:f},children:jsx("div",{className:cx("flex flex-col gap-4",n),...v,children:l})})}var ae=cva(["flex flex-col items-center justify-center","relative border-2 border-dashed border-border-layer-2 rounded-lg transition-all duration-200 ease-in-out cursor-pointer","hover:border-border-layer-2 hover:bg-transparent","focus-within:border-primary-idle focus-within:ring-2 focus-within:ring-primary-idle/20","data-[drag-over=true]:border-primary-idle data-[drag-over=true]:bg-primary-alt-idle/10"],{variants:{size:{large:"p-6 min-h-[200px] ",medium:"p-6 min-h-[160px]",small:"p-6 min-h-[130px]",oneLine:"p-4 min-h-[18px]"},showButton:{true:"",false:""},variant:{default:"bg-white",transparent:"bg-transparent",minimal:"bg-white",oneLineWhite:"bg-white",oneLineTransparent:"bg-transparent"}},compoundVariants:[{size:"large",showButton:true},{size:"medium",showButton:true},{size:"small",showButton:true},{variant:"oneLineWhite",showButton:false,className:"items-center flex flex-row justify-center"},{variant:"oneLineTransparent",showButton:false,className:"items-center flex flex-row justify-center"}],defaultVariants:{size:"large",variant:"default",showButton:true}});function re({className:l,size:n="large",showButton:d=true,variant:c="default",showAcceptedFormats:m=true,buttonText:o="Selecionar arquivo",description:u="Clique ou solte os arquivos para fazer o upload",icon:b="upload",...x}){let{onFilesChange:f,accept:v,multiple:r,disabled:a,maxFiles:t,maxSize:F,acceptedFormats:E}=T(),[W,P]=useState(false),w=useRef(null),[U,D]=useState(0),N=useCallback(i=>{let s=i;return t&&t>0&&(s=s.slice(0,t)),F&&(s=s.filter(p=>p.size<=F)),v&&(s=s.filter(p=>{let Q=`.${p.name.split(".").pop()?.toLowerCase()}`;return E?.some(L=>L.startsWith(".")?L===Q:p.type.includes(L))})),s.map(p=>({name:p.name,type:p.type,fileBinary:p,restrict:false}))},[t,F,v,E]),_=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s+1),P(true);},[]),K=useCallback(i=>{i.preventDefault(),i.stopPropagation(),D(s=>s-1),U<=1&&P(false);},[U]),$=useCallback(i=>{i.preventDefault(),i.stopPropagation();},[]),G=useCallback(i=>{if(i.preventDefault(),i.stopPropagation(),P(false),D(0),a)return;let s=Array.from(i.dataTransfer.files),p=N(s);p.length>0&&f?.(p);},[a,f,N]),J=useCallback(i=>{if(a)return;let s=Array.from(i.target.files||[]),p=N(s);p.length>0&&f?.(p);},[a,f,N]);return jsxs(M,{...x,"aria-disabled":a,"aria-label":u,className:cx(ae({size:n,showButton:d,variant:c}),l),"data-drag-over":W,fileInputRef:w,onDragEnter:_,onDragLeave:K,onDragOver:$,onDrop:G,children:[jsx("input",{accept:v,className:"hidden",disabled:a,multiple:r,ref:w,type:"file",onChange:J}),jsx(H,{buttonText:o,description:u,icon:b,showAcceptedFormats:m,showButton:d,variant:c||"default",onButtonClick:()=>{!a&&w.current&&w.current.click();}})]})}function ne({children:l,className:n,...d}){return jsx("h3",{className:cx("text-neutral-dark text-lg font-semibold",n),...d,children:l})}function H({description:l="Clique ou solte os arquivos para fazer o upload",icon:n="upload",showAcceptedFormats:d=true,buttonText:c="Selecionar arquivo",showButton:m=true,onButtonClick:o,variant:u="default",className:b$2,...x}){let{acceptedFormats:f}=T(),v=()=>d?jsxs("p",{className:"text-neutral-secondary mt-2 text-sm",children:["Formatos aceitos: ",f?.join(" ")]}):null;return u==="oneLineWhite"||u==="oneLineTransparent"?jsxs("div",{...x,className:cx("flex h-full items-center justify-center gap-4 text-center",b$2),children:[jsx(b,{className:"text-neutral-secondary text-4xl",name:n}),jsx("p",{className:"text-neutral-dark text-base font-medium",children:l}),v()]}):jsxs("div",{...x,className:cx("flex h-full w-full flex-col items-center gap-4 text-center",b$2),children:[jsxs("div",{className:"flex flex-col items-center",children:[jsx(b,{className:"text-neutral-secondary mb-3 text-4xl",name:n}),jsx("p",{className:"text-neutral-dark mb-2 text-base font-medium",children:l}),v()]}),m&&jsx("div",{children:jsx(b$1,{size:"md",variant:"primary",onClick:a=>{a.stopPropagation(),o?.();},children:c})})]})}function M({children:l,fileInputRef:n,...d}){let{disabled:c}=T(),m=useCallback(()=>{!c&&n?.current&&n.current.click();},[c,n]);return jsx("div",{role:"button",tabIndex:c?-1:0,onClick:m,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),m());},...d,children:l})}function oe({fileTypeOptions:l=[{value:"document",label:"Documento"},{value:"image",label:"Imagem"},{value:"video",label:"V\xEDdeo"},{value:"audio",label:"\xC1udio"},{value:"other",label:"Outro"}],onUpdateFile:n,onDeleteFile:d,className:c,...m}){let{files:o,onFilesChange:u}=T();if(!o||o.length===0)return null;let b$2=(r,a)=>{if(n)n(r,{description:a});else {let t=[...o];t[r]={...t[r],description:a},u?.(t);}},x=(r,a)=>{if(n)n(r,{fileType:a});else {let t=[...o];t[r]={...t[r],fileType:a},u?.(t);}},f=(r,a)=>{if(n)n(r,{restrict:a});else {let t=[...o];t[r]={...t[r],restrict:a},u?.(t);}},v=r=>{if(d)d(r);else {let a=o.filter((t,F)=>F!==r);u?.(a);}};return jsx("div",{className:cx("space-y-2",c),...m,children:jsxs("div",{className:"border-border-layer-2 p-4",children:[jsxs("div",{className:"border-border-layer-2 mb-3 flex w-full flex-row items-center justify-between gap-4 border-b pb-2",children:[jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Descri\xE7\xE3o"})}),jsx("div",{className:"w-full",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Tipo"})}),jsx("div",{className:"flex justify-end",children:jsx("span",{className:"text-sm font-medium text-gray-300",children:"Restrito"})})]}),jsx("div",{className:"space-y-3",children:o.map((r,a$8)=>jsxs("div",{className:"flex flex-row items-center gap-4 py-3",children:[jsx("div",{className:"flex justify-start",children:jsx(b,{className:"text-neutral-secondary hover:text-neutral-dark cursor-grab",name:"drag_indicator"})}),jsx("div",{className:"w-full",children:jsx(a,{children:jsx(a$1,{children:jsx(a$2,{placeholder:"Nome do arquivo",value:r.description||r.name,onChange:t=>b$2(a$8,t.target.value)})})})}),jsx("div",{className:"w-full",children:jsxs(a$3,{children:[jsxs(a$4,{className:"flex justify-between",children:[jsx("span",{className:"text-neutral-dark",children:l.find(t=>t.value===r.fileType)?.label||"Tipo"}),jsx(b,{className:"text-neutral-secondary",name:"keyboard_arrow_down"})]}),jsx(a$5,{children:l.map(t=>jsx(a$6,{value:t.value,onSelect:()=>x(a$8,t.value),children:t.label},t.value))})]})}),jsx("div",{className:"flex justify-end",children:jsx(a$7,{checked:r.restrict||false,onCheckedChange:t=>f(a$8,t)})}),jsx("div",{className:"flex justify-end",children:jsx(b$1,{appearance:"ghost",size:"sm",variant:"destructive",onClick:()=>v(a$8),children:jsx(b,{name:"delete"})})})]},a$8))})]})})}var me={Root:te,Area:re,Title:ne,AreaContent:H,AreaTrigger:M,EditableList:oe};export{oe as EditableFilesList,me as Upload,re as UploadArea,H as UploadAreaContent,M as UploadAreaTrigger,te as UploadRoot,ne as UploadTitle,ae as uploadAreaVariants};//# sourceMappingURL=upload.js.map
2
2
  //# sourceMappingURL=upload.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/upload.tsx"],"names":["UploadContext","createContext","useUploadContext","context","useContext","UploadRoot","children","className","files","onFilesChange","accept","multiple","disabled","maxFiles","maxSize","acceptedFormats","props","jsx","cx","uploadAreaVariants","cva","UploadArea","size","showButton","variant","showAcceptedFormats","buttonText","description","icon","isDragOver","setIsDragOver","useState","fileInputRef","useRef","dragCounter","setDragCounter","validateFiles","useCallback","validFiles","file","fileExtension","format","handleDragEnter","e","prev","handleDragLeave","handleDragOver","handleDrop","handleFileSelect","jsxs","UploadAreaTrigger","UploadAreaContent","UploadTitle","onButtonClick","formatAcceptedFormats","Icon","Button","handleClick","EditableFilesList","fileTypeOptions","onUpdateFile","onDeleteFile","handleDescriptionChange","index","updatedFiles","handleFileTypeChange","fileType","handleRestrictChange","restrict","handleDelete","_","i","InputRoot","InputContent","InputText","SelectRoot","SelectTrigger","option","SelectContent","SelectOption","Switch","checked","Upload"],"mappings":"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","file":"upload.js","sourcesContent":["import type { ComponentProps, DragEvent, ChangeEvent } from 'react'\nimport { useRef, useState, useCallback, createContext, useContext } from 'react'\nimport { cva, cx, type ClassVariantProps } from '@xjur-ui/util'\nimport { Icon, type IconType } from './icon'\nimport { Button } from './controls/button'\nimport { Switch } from './controls/switch'\nimport { InputRoot, InputContent, InputText } from './controls/input'\nimport {\n SelectRoot,\n SelectTrigger,\n SelectContent,\n SelectOption\n} from './controls/select'\n\nexport interface FileFormat {\n name: string\n type: string\n fileBinary: File\n restrict?: boolean\n description?: string\n fileType?: string\n}\n\nexport interface FileTypeOption {\n value: string\n label: string\n}\n\ninterface UploadContextValue {\n files: FileFormat[]\n onFilesChange?: (files: FileFormat[]) => void\n accept?: string\n multiple?: boolean\n disabled?: boolean\n maxFiles?: number\n maxSize?: number\n acceptedFormats?: string[]\n}\n\nconst UploadContext = createContext<UploadContextValue | null>(null)\n\nfunction useUploadContext() {\n const context = useContext(UploadContext)\n if (!context) {\n throw new Error('Upload components must be used within UploadRoot')\n }\n return context\n}\n\ninterface UploadRootProps extends ComponentProps<'div'> {\n files: FileFormat[]\n onFilesChange?: (files: FileFormat[]) => void\n accept?: string\n multiple?: boolean\n disabled?: boolean\n maxFiles?: number\n maxSize?: number\n acceptedFormats?: string[]\n}\n\nfunction UploadRoot({\n children,\n className,\n files,\n onFilesChange,\n accept,\n multiple = false,\n disabled = false,\n maxFiles = 1,\n maxSize,\n acceptedFormats = ['.jpeg', '.png', '.webp'],\n ...props\n}: UploadRootProps) {\n return (\n <UploadContext.Provider\n value={{\n files,\n onFilesChange,\n accept,\n multiple,\n disabled,\n maxFiles,\n maxSize,\n acceptedFormats\n }}\n >\n <div className={cx('flex flex-col gap-4', className)} {...props}>\n {children}\n </div>\n </UploadContext.Provider>\n )\n}\n\nconst uploadAreaVariants = cva(\n [\n 'flex flex-col items-center justify-center',\n 'relative border-2 border-dashed border-border-layer-2 rounded-lg transition-all duration-200 ease-in-out cursor-pointer',\n 'hover:border-border-layer-2 hover:bg-transparent',\n 'focus-within:border-primary-idle focus-within:ring-2 focus-within:ring-primary-idle/20',\n 'data-[drag-over=true]:border-primary-idle data-[drag-over=true]:bg-primary-alt-idle/10'\n ],\n {\n variants: {\n size: {\n large: 'p-6 min-h-[200px] ',\n medium: 'p-6 min-h-[160px]',\n small: 'p-6 min-h-[130px]',\n oneLine: 'p-4 min-h-[18px]'\n },\n showButton: {\n true: '',\n false: ''\n },\n variant: {\n default: 'bg-white',\n transparent: 'bg-transparent',\n minimal: 'bg-white',\n oneLineWhite: 'bg-white',\n oneLineTransparent: 'bg-transparent'\n }\n },\n compoundVariants: [\n {\n size: 'large',\n showButton: true\n },\n {\n size: 'medium',\n showButton: true\n },\n {\n size: 'small',\n showButton: true\n },\n {\n variant: 'oneLineWhite',\n showButton: false,\n className: 'items-center flex flex-row justify-center'\n },\n {\n variant: 'oneLineTransparent',\n showButton: false,\n className: 'items-center flex flex-row justify-center'\n }\n ],\n defaultVariants: {\n size: 'large',\n variant: 'default',\n showButton: true\n }\n }\n)\n\ninterface UploadAreaProps\n extends Omit<ComponentProps<'div'>, 'onChange'>,\n ClassVariantProps<typeof uploadAreaVariants> {\n showAcceptedFormats?: boolean\n buttonText?: string\n description?: string\n icon?: string\n showButton?: boolean\n}\n\nfunction UploadArea({\n className,\n size = 'large',\n showButton = true,\n variant = 'default',\n showAcceptedFormats = true,\n buttonText = 'Selecionar arquivo',\n description = 'Clique ou solte os arquivos para fazer o upload',\n icon = 'upload',\n ...props\n}: UploadAreaProps) {\n const {\n onFilesChange,\n accept,\n multiple,\n disabled,\n maxFiles,\n maxSize,\n acceptedFormats\n } = useUploadContext()\n const [isDragOver, setIsDragOver] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [dragCounter, setDragCounter] = useState(0)\n\n const validateFiles = useCallback(\n (files: File[]): FileFormat[] => {\n let validFiles = files\n\n if (maxFiles && maxFiles > 0) {\n validFiles = validFiles.slice(0, maxFiles)\n }\n\n if (maxSize) {\n validFiles = validFiles.filter(file => file.size <= maxSize)\n }\n\n if (accept) {\n validFiles = validFiles.filter(file => {\n const fileExtension = `.${file.name.split('.').pop()?.toLowerCase()}`\n return acceptedFormats?.some(format =>\n format.startsWith('.')\n ? format === fileExtension\n : file.type.includes(format)\n )\n })\n }\n\n return validFiles.map(file => ({\n name: file.name,\n type: file.type,\n fileBinary: file,\n restrict: false\n }))\n },\n [maxFiles, maxSize, accept, acceptedFormats]\n )\n\n const handleDragEnter = useCallback((e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setDragCounter(prev => prev + 1)\n setIsDragOver(true)\n }, [])\n\n const handleDragLeave = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setDragCounter(prev => prev - 1)\n if (dragCounter <= 1) {\n setIsDragOver(false)\n }\n },\n [dragCounter]\n )\n\n const handleDragOver = useCallback((e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n }, [])\n\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragOver(false)\n setDragCounter(0)\n\n if (disabled) return\n\n const files = Array.from(e.dataTransfer.files)\n const validFiles = validateFiles(files)\n\n if (validFiles.length > 0) {\n onFilesChange?.(validFiles)\n }\n },\n [disabled, onFilesChange, validateFiles]\n )\n\n const handleFileSelect = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return\n\n const files = Array.from(e.target.files || [])\n const validFiles = validateFiles(files)\n\n if (validFiles.length > 0) {\n onFilesChange?.(validFiles)\n }\n },\n [disabled, onFilesChange, validateFiles]\n )\n\n return (\n <UploadAreaTrigger\n {...props}\n aria-disabled={disabled}\n aria-label={description}\n className={cx(\n uploadAreaVariants({ size, showButton, variant }),\n className\n )}\n data-drag-over={isDragOver}\n fileInputRef={fileInputRef}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <input\n accept={accept}\n className=\"hidden\"\n disabled={disabled}\n multiple={multiple}\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileSelect}\n />\n\n <UploadAreaContent\n buttonText={buttonText}\n description={description}\n icon={icon}\n showAcceptedFormats={showAcceptedFormats}\n showButton={showButton}\n variant={variant || 'default'}\n onButtonClick={() => {\n if (!disabled && fileInputRef.current) {\n fileInputRef.current.click()\n }\n }}\n />\n </UploadAreaTrigger>\n )\n}\n\nfunction UploadTitle({ children, className, ...props }: ComponentProps<'h3'>) {\n return (\n <h3\n className={cx('text-neutral-dark text-lg font-semibold', className)}\n {...props}\n >\n {children}\n </h3>\n )\n}\n\ninterface UploadAreaContentProps extends ComponentProps<'div'> {\n description?: string\n icon?: string\n showAcceptedFormats?: boolean\n buttonText?: string\n showButton?: boolean\n onButtonClick?: () => void\n variant?:\n | 'default'\n | 'transparent'\n | 'minimal'\n | 'oneLineWhite'\n | 'oneLineTransparent'\n}\n\nfunction UploadAreaContent({\n description = 'Clique ou solte os arquivos para fazer o upload',\n icon = 'upload',\n showAcceptedFormats = true,\n buttonText = 'Selecionar arquivo',\n showButton = true,\n onButtonClick,\n variant = 'default',\n className,\n ...props\n}: UploadAreaContentProps) {\n const { acceptedFormats } = useUploadContext()\n\n const formatAcceptedFormats = () => {\n if (!showAcceptedFormats) return null\n\n return (\n <p className=\"text-neutral-secondary mt-2 text-sm\">\n Formatos aceitos: {acceptedFormats?.join(' ')}\n </p>\n )\n }\n\n const isOneLineVariant =\n variant === 'oneLineWhite' || variant === 'oneLineTransparent'\n\n if (isOneLineVariant) {\n return (\n <div\n {...props}\n className={cx(\n 'flex h-full items-center justify-center gap-4 text-center',\n className\n )}\n >\n <Icon\n className=\"text-neutral-secondary text-4xl\"\n name={icon as IconType}\n />\n <p className=\"text-neutral-dark text-base font-medium\">{description}</p>\n {formatAcceptedFormats()}\n </div>\n )\n }\n\n return (\n <div\n {...props}\n className={cx(\n 'flex h-full w-full flex-col items-center gap-4 text-center',\n className\n )}\n >\n <div className=\"flex flex-col items-center\">\n <Icon\n className=\"text-neutral-secondary mb-3 text-4xl\"\n name={icon as IconType}\n />\n\n <p className=\"text-neutral-dark mb-2 text-base font-medium\">\n {description}\n </p>\n\n {formatAcceptedFormats()}\n </div>\n\n {showButton && (\n <div>\n <Button\n size=\"md\"\n variant=\"primary\"\n onClick={e => {\n e.stopPropagation()\n onButtonClick?.()\n }}\n >\n {buttonText}\n </Button>\n </div>\n )}\n </div>\n )\n}\n\ninterface UploadAreaTriggerProps extends ComponentProps<'div'> {\n fileInputRef?: React.RefObject<HTMLInputElement | null>\n}\n\nfunction UploadAreaTrigger({\n children,\n fileInputRef,\n ...props\n}: UploadAreaTriggerProps) {\n const { disabled } = useUploadContext()\n\n const handleClick = useCallback(() => {\n if (!disabled && fileInputRef?.current) {\n fileInputRef.current.click()\n }\n }, [disabled, fileInputRef])\n\n return (\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n {...props}\n >\n {children}\n </div>\n )\n}\n\ninterface EditableFilesListProps {\n fileTypeOptions?: FileTypeOption[]\n onUpdateFile?: (index: number, file: Partial<FileFormat>) => void\n onDeleteFile?: (index: number) => void\n onReorderFiles?: (fromIndex: number, toIndex: number) => void\n className?: string\n}\n\nfunction EditableFilesList({\n fileTypeOptions = [\n { value: 'document', label: 'Documento' },\n { value: 'image', label: 'Imagem' },\n { value: 'video', label: 'Vídeo' },\n { value: 'audio', label: 'Áudio' },\n { value: 'other', label: 'Outro' }\n ],\n onUpdateFile,\n onDeleteFile,\n className,\n ...props\n}: EditableFilesListProps) {\n const { files, onFilesChange } = useUploadContext()\n\n if (!files || files.length === 0) return null\n\n const handleDescriptionChange = (index: number, description: string) => {\n if (onUpdateFile) {\n onUpdateFile(index, { description })\n } else {\n const updatedFiles = [...files]\n updatedFiles[index] = { ...updatedFiles[index], description }\n onFilesChange?.(updatedFiles)\n }\n }\n\n const handleFileTypeChange = (index: number, fileType: string) => {\n if (onUpdateFile) {\n onUpdateFile(index, { fileType })\n } else {\n const updatedFiles = [...files]\n updatedFiles[index] = { ...updatedFiles[index], fileType }\n onFilesChange?.(updatedFiles)\n }\n }\n\n const handleRestrictChange = (index: number, restrict: boolean) => {\n if (onUpdateFile) {\n onUpdateFile(index, { restrict })\n } else {\n const updatedFiles = [...files]\n updatedFiles[index] = { ...updatedFiles[index], restrict }\n onFilesChange?.(updatedFiles)\n }\n }\n\n const handleDelete = (index: number) => {\n if (onDeleteFile) {\n onDeleteFile(index)\n } else {\n const updatedFiles = files.filter((_, i) => i !== index)\n onFilesChange?.(updatedFiles)\n }\n }\n\n return (\n <div className={cx('space-y-2', className)} {...props}>\n <div className=\"border-border-layer-2 p-4\">\n <div className=\"border-border-layer-2 mb-3 flex w-full flex-row items-center justify-between gap-4 border-b pb-2\">\n <div className=\"w-full\">\n <span className=\"text-sm font-medium text-gray-300\">Descrição</span>\n </div>\n <div className=\"w-full\">\n <span className=\"text-sm font-medium text-gray-300\">Tipo</span>\n </div>\n <div className=\"flex justify-end\">\n <span className=\"text-sm font-medium text-gray-300\">Restrito</span>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n {files.map((file, index) => (\n <div className=\"flex flex-row items-center gap-4 py-3\" key={index}>\n <div className=\"flex justify-start\">\n <Icon\n className=\"text-neutral-secondary hover:text-neutral-dark cursor-grab\"\n name=\"drag_indicator\"\n />\n </div>\n\n <div className=\"w-full\">\n <InputRoot>\n <InputContent>\n <InputText\n placeholder=\"Nome do arquivo\"\n value={file.description || file.name}\n onChange={e =>\n handleDescriptionChange(index, e.target.value)\n }\n />\n </InputContent>\n </InputRoot>\n </div>\n\n <div className=\"w-full\">\n <SelectRoot>\n <SelectTrigger className=\"flex justify-between\">\n <span className=\"text-neutral-dark\">\n {fileTypeOptions.find(\n option => option.value === file.fileType\n )?.label || 'Tipo'}\n </span>\n <Icon\n className=\"text-neutral-secondary\"\n name=\"keyboard_arrow_down\"\n />\n </SelectTrigger>\n <SelectContent>\n {fileTypeOptions.map(option => (\n <SelectOption\n key={option.value}\n value={option.value}\n onSelect={() =>\n handleFileTypeChange(index, option.value)\n }\n >\n {option.label}\n </SelectOption>\n ))}\n </SelectContent>\n </SelectRoot>\n </div>\n\n <div className=\"flex justify-end\">\n <Switch\n checked={file.restrict || false}\n onCheckedChange={checked =>\n handleRestrictChange(index, checked)\n }\n />\n </div>\n\n <div className=\"flex justify-end\">\n <Button\n appearance=\"ghost\"\n size=\"sm\"\n variant=\"destructive\"\n onClick={() => handleDelete(index)}\n >\n <Icon name=\"delete\" />\n </Button>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport const Upload = {\n Root: UploadRoot,\n Area: UploadArea,\n Title: UploadTitle,\n AreaContent: UploadAreaContent,\n AreaTrigger: UploadAreaTrigger,\n EditableList: EditableFilesList\n}\n\nexport { UploadRoot }\nexport { UploadArea }\nexport { UploadTitle }\nexport { UploadAreaContent }\nexport { UploadAreaTrigger }\nexport { EditableFilesList }\nexport { uploadAreaVariants }\nexport type {\n UploadRootProps,\n UploadAreaProps,\n UploadAreaContentProps,\n UploadAreaTriggerProps,\n EditableFilesListProps\n}\n"]}
1
+ {"version":3,"sources":["../../src/components/upload.tsx"],"names":["UploadContext","createContext","useUploadContext","context","useContext","UploadRoot","children","className","files","onFilesChange","accept","multiple","disabled","maxFiles","maxSize","acceptedFormats","props","jsx","cx","uploadAreaVariants","cva","UploadArea","size","showButton","variant","showAcceptedFormats","buttonText","description","icon","isDragOver","setIsDragOver","useState","fileInputRef","useRef","dragCounter","setDragCounter","validateFiles","useCallback","validFiles","file","fileExtension","format","handleDragEnter","e","prev","handleDragLeave","handleDragOver","handleDrop","handleFileSelect","jsxs","UploadAreaTrigger","UploadAreaContent","UploadTitle","onButtonClick","formatAcceptedFormats","Icon","Button","handleClick","EditableFilesList","fileTypeOptions","onUpdateFile","onDeleteFile","handleDescriptionChange","index","updatedFiles","handleFileTypeChange","fileType","handleRestrictChange","restrict","handleDelete","_","i","InputRoot","InputContent","InputText","SelectRoot","SelectTrigger","option","SelectContent","SelectOption","Switch","checked","Upload"],"mappings":"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","file":"upload.js","sourcesContent":["import type { ComponentProps, DragEvent, ChangeEvent } from 'react'\nimport { useRef, useState, useCallback, createContext, useContext } from 'react'\nimport { cva, cx, type ClassVariantProps } from '@xjur-ui/util'\nimport { Icon, type IconType } from './icon'\nimport { Button } from './controls/button'\nimport { Switch } from './controls/switch'\nimport { InputRoot, InputContent, InputText } from './controls/input'\nimport {\n SelectRoot,\n SelectTrigger,\n SelectContent,\n SelectOption\n} from './controls/select'\n\nexport interface FileFormat {\n name: string\n type: string\n fileBinary: File\n restrict?: boolean\n description?: string\n fileType?: string\n}\n\nexport interface FileTypeOption {\n value: string\n label: string\n}\n\ninterface UploadContextValue {\n files: FileFormat[]\n onFilesChange?: (files: FileFormat[]) => void\n accept?: string\n multiple?: boolean\n disabled?: boolean\n maxFiles?: number\n maxSize?: number\n acceptedFormats?: string[]\n}\n\nconst UploadContext = createContext<UploadContextValue | null>(null)\n\nfunction useUploadContext() {\n const context = useContext(UploadContext)\n if (!context) {\n throw new Error('Upload components must be used within UploadRoot')\n }\n return context\n}\n\ninterface UploadRootProps extends ComponentProps<'div'> {\n files: FileFormat[]\n onFilesChange?: (files: FileFormat[]) => void\n accept?: string\n multiple?: boolean\n disabled?: boolean\n maxFiles?: number\n maxSize?: number\n acceptedFormats?: string[]\n}\n\nfunction UploadRoot({\n children,\n className,\n files,\n onFilesChange,\n accept,\n multiple = false,\n disabled = false,\n maxFiles = 1,\n maxSize,\n acceptedFormats = ['.jpeg', '.png', '.webp'],\n ...props\n}: UploadRootProps) {\n return (\n <UploadContext.Provider\n value={{\n files,\n onFilesChange,\n accept,\n multiple,\n disabled,\n maxFiles,\n maxSize,\n acceptedFormats\n }}\n >\n <div className={cx('flex flex-col gap-4', className)} {...props}>\n {children}\n </div>\n </UploadContext.Provider>\n )\n}\n\nconst uploadAreaVariants = cva(\n [\n 'flex flex-col items-center justify-center',\n 'relative border-2 border-dashed border-border-layer-2 rounded-lg transition-all duration-200 ease-in-out cursor-pointer',\n 'hover:border-border-layer-2 hover:bg-transparent',\n 'focus-within:border-primary-idle focus-within:ring-2 focus-within:ring-primary-idle/20',\n 'data-[drag-over=true]:border-primary-idle data-[drag-over=true]:bg-primary-alt-idle/10'\n ],\n {\n variants: {\n size: {\n large: 'p-6 min-h-[200px] ',\n medium: 'p-6 min-h-[160px]',\n small: 'p-6 min-h-[130px]',\n oneLine: 'p-4 min-h-[18px]'\n },\n showButton: {\n true: '',\n false: ''\n },\n variant: {\n default: 'bg-white',\n transparent: 'bg-transparent',\n minimal: 'bg-white',\n oneLineWhite: 'bg-white',\n oneLineTransparent: 'bg-transparent'\n }\n },\n compoundVariants: [\n {\n size: 'large',\n showButton: true\n },\n {\n size: 'medium',\n showButton: true\n },\n {\n size: 'small',\n showButton: true\n },\n {\n variant: 'oneLineWhite',\n showButton: false,\n className: 'items-center flex flex-row justify-center'\n },\n {\n variant: 'oneLineTransparent',\n showButton: false,\n className: 'items-center flex flex-row justify-center'\n }\n ],\n defaultVariants: {\n size: 'large',\n variant: 'default',\n showButton: true\n }\n }\n)\n\ninterface UploadAreaProps\n extends Omit<ComponentProps<'div'>, 'onChange'>,\n ClassVariantProps<typeof uploadAreaVariants> {\n showAcceptedFormats?: boolean\n buttonText?: string\n description?: string\n icon?: string\n showButton?: boolean\n}\n\nfunction UploadArea({\n className,\n size = 'large',\n showButton = true,\n variant = 'default',\n showAcceptedFormats = true,\n buttonText = 'Selecionar arquivo',\n description = 'Clique ou solte os arquivos para fazer o upload',\n icon = 'upload',\n ...props\n}: UploadAreaProps) {\n const {\n onFilesChange,\n accept,\n multiple,\n disabled,\n maxFiles,\n maxSize,\n acceptedFormats\n } = useUploadContext()\n const [isDragOver, setIsDragOver] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const [dragCounter, setDragCounter] = useState(0)\n\n const validateFiles = useCallback(\n (files: File[]): FileFormat[] => {\n let validFiles = files\n\n if (maxFiles && maxFiles > 0) {\n validFiles = validFiles.slice(0, maxFiles)\n }\n\n if (maxSize) {\n validFiles = validFiles.filter(file => file.size <= maxSize)\n }\n\n if (accept) {\n validFiles = validFiles.filter(file => {\n const fileExtension = `.${file.name.split('.').pop()?.toLowerCase()}`\n return acceptedFormats?.some(format =>\n format.startsWith('.')\n ? format === fileExtension\n : file.type.includes(format)\n )\n })\n }\n\n return validFiles.map(file => ({\n name: file.name,\n type: file.type,\n fileBinary: file,\n restrict: false\n }))\n },\n [maxFiles, maxSize, accept, acceptedFormats]\n )\n\n const handleDragEnter = useCallback((e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setDragCounter(prev => prev + 1)\n setIsDragOver(true)\n }, [])\n\n const handleDragLeave = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setDragCounter(prev => prev - 1)\n if (dragCounter <= 1) {\n setIsDragOver(false)\n }\n },\n [dragCounter]\n )\n\n const handleDragOver = useCallback((e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n }, [])\n\n const handleDrop = useCallback(\n (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDragOver(false)\n setDragCounter(0)\n\n if (disabled) return\n\n const files = Array.from(e.dataTransfer.files)\n const validFiles = validateFiles(files)\n\n if (validFiles.length > 0) {\n onFilesChange?.(validFiles)\n }\n },\n [disabled, onFilesChange, validateFiles]\n )\n\n const handleFileSelect = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return\n\n const files = Array.from(e.target.files || [])\n const validFiles = validateFiles(files)\n\n if (validFiles.length > 0) {\n onFilesChange?.(validFiles)\n }\n },\n [disabled, onFilesChange, validateFiles]\n )\n\n return (\n <UploadAreaTrigger\n {...props}\n aria-disabled={disabled}\n aria-label={description}\n className={cx(\n uploadAreaVariants({ size, showButton, variant }),\n className\n )}\n data-drag-over={isDragOver}\n fileInputRef={fileInputRef}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <input\n accept={accept}\n className=\"hidden\"\n disabled={disabled}\n multiple={multiple}\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileSelect}\n />\n\n <UploadAreaContent\n buttonText={buttonText}\n description={description}\n icon={icon}\n showAcceptedFormats={showAcceptedFormats}\n showButton={showButton}\n variant={variant || 'default'}\n onButtonClick={() => {\n if (!disabled && fileInputRef.current) {\n fileInputRef.current.click()\n }\n }}\n />\n </UploadAreaTrigger>\n )\n}\n\nfunction UploadTitle({ children, className, ...props }: ComponentProps<'h3'>) {\n return (\n <h3\n className={cx('text-neutral-dark text-lg font-semibold', className)}\n {...props}\n >\n {children}\n </h3>\n )\n}\n\ninterface UploadAreaContentProps extends ComponentProps<'div'> {\n description?: string\n icon?: string\n showAcceptedFormats?: boolean\n buttonText?: string\n showButton?: boolean\n onButtonClick?: () => void\n variant?:\n | 'default'\n | 'transparent'\n | 'minimal'\n | 'oneLineWhite'\n | 'oneLineTransparent'\n}\n\nfunction UploadAreaContent({\n description = 'Clique ou solte os arquivos para fazer o upload',\n icon = 'upload',\n showAcceptedFormats = true,\n buttonText = 'Selecionar arquivo',\n showButton = true,\n onButtonClick,\n variant = 'default',\n className,\n ...props\n}: UploadAreaContentProps) {\n const { acceptedFormats } = useUploadContext()\n\n const formatAcceptedFormats = () => {\n if (!showAcceptedFormats) return null\n\n return (\n <p className=\"text-neutral-secondary mt-2 text-sm\">\n Formatos aceitos: {acceptedFormats?.join(' ')}\n </p>\n )\n }\n\n const isOneLineVariant =\n variant === 'oneLineWhite' || variant === 'oneLineTransparent'\n\n if (isOneLineVariant) {\n return (\n <div\n {...props}\n className={cx(\n 'flex h-full items-center justify-center gap-4 text-center',\n className\n )}\n >\n <Icon\n className=\"text-neutral-secondary text-4xl\"\n name={icon as IconType}\n />\n <p className=\"text-neutral-dark text-base font-medium\">{description}</p>\n {formatAcceptedFormats()}\n </div>\n )\n }\n\n return (\n <div\n {...props}\n className={cx(\n 'flex h-full w-full flex-col items-center gap-4 text-center',\n className\n )}\n >\n <div className=\"flex flex-col items-center\">\n <Icon\n className=\"text-neutral-secondary mb-3 text-4xl\"\n name={icon as IconType}\n />\n\n <p className=\"text-neutral-dark mb-2 text-base font-medium\">\n {description}\n </p>\n\n {formatAcceptedFormats()}\n </div>\n\n {showButton && (\n <div>\n <Button\n size=\"md\"\n variant=\"primary\"\n onClick={e => {\n e.stopPropagation()\n onButtonClick?.()\n }}\n >\n {buttonText}\n </Button>\n </div>\n )}\n </div>\n )\n}\n\ninterface UploadAreaTriggerProps extends ComponentProps<'div'> {\n fileInputRef?: React.RefObject<HTMLInputElement | null>\n}\n\nfunction UploadAreaTrigger({\n children,\n fileInputRef,\n ...props\n}: UploadAreaTriggerProps) {\n const { disabled } = useUploadContext()\n\n const handleClick = useCallback(() => {\n if (!disabled && fileInputRef?.current) {\n fileInputRef.current.click()\n }\n }, [disabled, fileInputRef])\n\n return (\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={handleClick}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n {...props}\n >\n {children}\n </div>\n )\n}\n\ninterface EditableFilesListProps {\n fileTypeOptions?: FileTypeOption[]\n onUpdateFile?: (index: number, file: Partial<FileFormat>) => void\n onDeleteFile?: (index: number) => void\n onReorderFiles?: (fromIndex: number, toIndex: number) => void\n className?: string\n}\n\nfunction EditableFilesList({\n fileTypeOptions = [\n { value: 'document', label: 'Documento' },\n { value: 'image', label: 'Imagem' },\n { value: 'video', label: 'Vídeo' },\n { value: 'audio', label: 'Áudio' },\n { value: 'other', label: 'Outro' }\n ],\n onUpdateFile,\n onDeleteFile,\n className,\n ...props\n}: EditableFilesListProps) {\n const { files, onFilesChange } = useUploadContext()\n\n if (!files || files.length === 0) return null\n\n const handleDescriptionChange = (index: number, description: string) => {\n if (onUpdateFile) {\n onUpdateFile(index, { description })\n } else {\n const updatedFiles = [...files]\n updatedFiles[index] = { ...updatedFiles[index], description }\n onFilesChange?.(updatedFiles)\n }\n }\n\n const handleFileTypeChange = (index: number, fileType: string) => {\n if (onUpdateFile) {\n onUpdateFile(index, { fileType })\n } else {\n const updatedFiles = [...files]\n updatedFiles[index] = { ...updatedFiles[index], fileType }\n onFilesChange?.(updatedFiles)\n }\n }\n\n const handleRestrictChange = (index: number, restrict: boolean) => {\n if (onUpdateFile) {\n onUpdateFile(index, { restrict })\n } else {\n const updatedFiles = [...files]\n updatedFiles[index] = { ...updatedFiles[index], restrict }\n onFilesChange?.(updatedFiles)\n }\n }\n\n const handleDelete = (index: number) => {\n if (onDeleteFile) {\n onDeleteFile(index)\n } else {\n const updatedFiles = files.filter((_, i) => i !== index)\n onFilesChange?.(updatedFiles)\n }\n }\n\n return (\n <div className={cx('space-y-2', className)} {...props}>\n <div className=\"border-border-layer-2 p-4\">\n <div className=\"border-border-layer-2 mb-3 flex w-full flex-row items-center justify-between gap-4 border-b pb-2\">\n <div className=\"w-full\">\n <span className=\"text-sm font-medium text-gray-300\">Descrição</span>\n </div>\n <div className=\"w-full\">\n <span className=\"text-sm font-medium text-gray-300\">Tipo</span>\n </div>\n <div className=\"flex justify-end\">\n <span className=\"text-sm font-medium text-gray-300\">Restrito</span>\n </div>\n </div>\n\n <div className=\"space-y-3\">\n {files.map((file, index) => (\n <div className=\"flex flex-row items-center gap-4 py-3\" key={index}>\n <div className=\"flex justify-start\">\n <Icon\n className=\"text-neutral-secondary hover:text-neutral-dark cursor-grab\"\n name=\"drag_indicator\"\n />\n </div>\n\n <div className=\"w-full\">\n <InputRoot>\n <InputContent>\n <InputText\n placeholder=\"Nome do arquivo\"\n value={file.description || file.name}\n onChange={e =>\n handleDescriptionChange(index, e.target.value)\n }\n />\n </InputContent>\n </InputRoot>\n </div>\n\n <div className=\"w-full\">\n <SelectRoot>\n <SelectTrigger className=\"flex justify-between\">\n <span className=\"text-neutral-dark\">\n {fileTypeOptions.find(\n option => option.value === file.fileType\n )?.label || 'Tipo'}\n </span>\n <Icon\n className=\"text-neutral-secondary\"\n name=\"keyboard_arrow_down\"\n />\n </SelectTrigger>\n <SelectContent>\n {fileTypeOptions.map(option => (\n <SelectOption\n key={option.value}\n value={option.value}\n onSelect={() =>\n handleFileTypeChange(index, option.value)\n }\n >\n {option.label}\n </SelectOption>\n ))}\n </SelectContent>\n </SelectRoot>\n </div>\n\n <div className=\"flex justify-end\">\n <Switch\n checked={file.restrict || false}\n onCheckedChange={checked =>\n handleRestrictChange(index, checked)\n }\n />\n </div>\n\n <div className=\"flex justify-end\">\n <Button\n appearance=\"ghost\"\n size=\"sm\"\n variant=\"destructive\"\n onClick={() => handleDelete(index)}\n >\n <Icon name=\"delete\" />\n </Button>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport const Upload = {\n Root: UploadRoot,\n Area: UploadArea,\n Title: UploadTitle,\n AreaContent: UploadAreaContent,\n AreaTrigger: UploadAreaTrigger,\n EditableList: EditableFilesList\n}\n\nexport { UploadRoot }\nexport { UploadArea }\nexport { UploadTitle }\nexport { UploadAreaContent }\nexport { UploadAreaTrigger }\nexport { EditableFilesList }\nexport { uploadAreaVariants }\nexport type {\n UploadRootProps,\n UploadAreaProps,\n UploadAreaContentProps,\n UploadAreaTriggerProps,\n EditableFilesListProps\n}\n"]}