@spark-ui/components 16.2.2 → 17.0.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 (182) hide show
  1. package/dist/{Button-DPncfbbM.mjs → Button-1M9DcZl0.mjs} +25 -79
  2. package/dist/Button-1M9DcZl0.mjs.map +1 -0
  3. package/dist/Button-FZceRWG2.js +2 -0
  4. package/dist/Button-FZceRWG2.js.map +1 -0
  5. package/dist/{Icon-C23-htlD.mjs → Icon-BO327oHU.mjs} +8 -9
  6. package/dist/Icon-BO327oHU.mjs.map +1 -0
  7. package/dist/Icon-C-cNTnzd.js +2 -0
  8. package/dist/Icon-C-cNTnzd.js.map +1 -0
  9. package/dist/{IconButton-D3g86WpZ.js → IconButton-BR1bJSQA.js} +2 -2
  10. package/dist/{IconButton-D3g86WpZ.js.map → IconButton-BR1bJSQA.js.map} +1 -1
  11. package/dist/{IconButton-Bfd-6BAD.mjs → IconButton-DdB3Pq13.mjs} +2 -2
  12. package/dist/{IconButton-Bfd-6BAD.mjs.map → IconButton-DdB3Pq13.mjs.map} +1 -1
  13. package/dist/Spinner-Br4Rp9V2.js +2 -0
  14. package/dist/Spinner-Br4Rp9V2.js.map +1 -0
  15. package/dist/{Spinner-aLrtE2JN.mjs → Spinner-Co3AjkQV.mjs} +7 -8
  16. package/dist/Spinner-Co3AjkQV.mjs.map +1 -0
  17. package/dist/TextLink-5MvP0P8D.js +2 -0
  18. package/dist/TextLink-5MvP0P8D.js.map +1 -0
  19. package/dist/{TextLink-D7mOCjY_.mjs → TextLink-Cc_LeVcx.mjs} +10 -11
  20. package/dist/TextLink-Cc_LeVcx.mjs.map +1 -0
  21. package/dist/accordion/index.js +1 -1
  22. package/dist/accordion/index.mjs +1 -1
  23. package/dist/avatar/index.js +1 -1
  24. package/dist/avatar/index.mjs +2 -2
  25. package/dist/badge/BadgeItem.styles.d.ts +1 -1
  26. package/dist/badge/index.js +1 -1
  27. package/dist/badge/index.js.map +1 -1
  28. package/dist/badge/index.mjs +10 -11
  29. package/dist/badge/index.mjs.map +1 -1
  30. package/dist/breadcrumb/index.js +1 -1
  31. package/dist/breadcrumb/index.mjs +2 -2
  32. package/dist/button/Button.styles.d.ts +1 -1
  33. package/dist/button/index.js +1 -1
  34. package/dist/button/index.mjs +1 -1
  35. package/dist/button/variants/contrast.d.ts +0 -4
  36. package/dist/button/variants/filled.d.ts +0 -4
  37. package/dist/button/variants/ghost.d.ts +0 -4
  38. package/dist/button/variants/outlined.d.ts +0 -4
  39. package/dist/button/variants/tinted.d.ts +0 -4
  40. package/dist/card/Backdrop.d.ts +1 -1
  41. package/dist/card/Card.styles.d.ts +1 -1
  42. package/dist/card/Content.styles.d.ts +1 -1
  43. package/dist/card/index.js +1 -1
  44. package/dist/card/index.js.map +1 -1
  45. package/dist/card/index.mjs +12 -31
  46. package/dist/card/index.mjs.map +1 -1
  47. package/dist/carousel/CarouselPageIndicator.d.ts +1 -1
  48. package/dist/carousel/index.js +1 -1
  49. package/dist/carousel/index.js.map +1 -1
  50. package/dist/carousel/index.mjs +29 -29
  51. package/dist/carousel/index.mjs.map +1 -1
  52. package/dist/checkbox/CheckboxInput.styles.d.ts +1 -1
  53. package/dist/checkbox/index.js +1 -1
  54. package/dist/checkbox/index.js.map +1 -1
  55. package/dist/checkbox/index.mjs +26 -33
  56. package/dist/checkbox/index.mjs.map +1 -1
  57. package/dist/chip/Chip.styles.d.ts +1 -1
  58. package/dist/chip/index.js +1 -1
  59. package/dist/chip/index.js.map +1 -1
  60. package/dist/chip/index.mjs +33 -68
  61. package/dist/chip/index.mjs.map +1 -1
  62. package/dist/chip/variants/dashed.d.ts +0 -4
  63. package/dist/chip/variants/outlined.d.ts +0 -4
  64. package/dist/chip/variants/tinted.d.ts +0 -4
  65. package/dist/combobox/index.js +1 -1
  66. package/dist/combobox/index.mjs +3 -3
  67. package/dist/dialog/index.js +1 -1
  68. package/dist/dialog/index.mjs +2 -2
  69. package/dist/drawer/index.js +1 -1
  70. package/dist/drawer/index.mjs +2 -2
  71. package/dist/dropdown/index.js +1 -1
  72. package/dist/dropdown/index.mjs +1 -1
  73. package/dist/file-upload/index.js +1 -1
  74. package/dist/file-upload/index.js.map +1 -1
  75. package/dist/file-upload/index.mjs +4 -4
  76. package/dist/file-upload/index.mjs.map +1 -1
  77. package/dist/form-field/index.js +1 -1
  78. package/dist/form-field/index.mjs +1 -1
  79. package/dist/icon/Icon.styles.d.ts +1 -1
  80. package/dist/icon/index.js +1 -1
  81. package/dist/icon/index.mjs +1 -1
  82. package/dist/icon-button/index.js +1 -1
  83. package/dist/icon-button/index.mjs +1 -1
  84. package/dist/input/index.js +1 -1
  85. package/dist/input/index.mjs +1 -1
  86. package/dist/pagination/index.js +1 -1
  87. package/dist/pagination/index.mjs +3 -3
  88. package/dist/popover/PopoverContent.styles.d.ts +1 -1
  89. package/dist/popover/PopoverContext.d.ts +1 -1
  90. package/dist/popover/index.js +1 -1
  91. package/dist/popover/index.js.map +1 -1
  92. package/dist/popover/index.mjs +33 -35
  93. package/dist/popover/index.mjs.map +1 -1
  94. package/dist/progress/ProgressIndicator.d.ts +1 -1
  95. package/dist/progress/index.js +1 -1
  96. package/dist/progress/index.js.map +1 -1
  97. package/dist/progress/index.mjs +42 -43
  98. package/dist/progress/index.mjs.map +1 -1
  99. package/dist/progress-tracker/ProgressTrackerStep.styles.d.ts +1 -1
  100. package/dist/progress-tracker/ProgressTrackerStepIndicator.styles.d.ts +1 -1
  101. package/dist/progress-tracker/index.js +1 -1
  102. package/dist/progress-tracker/index.js.map +1 -1
  103. package/dist/progress-tracker/index.mjs +38 -38
  104. package/dist/progress-tracker/index.mjs.map +1 -1
  105. package/dist/radio-group/RadioIndicator.styles.d.ts +1 -1
  106. package/dist/radio-group/RadioInput.styles.d.ts +1 -1
  107. package/dist/radio-group/index.js +1 -1
  108. package/dist/radio-group/index.js.map +1 -1
  109. package/dist/radio-group/index.mjs +47 -53
  110. package/dist/radio-group/index.mjs.map +1 -1
  111. package/dist/rating/index.js +1 -1
  112. package/dist/rating/index.mjs +1 -1
  113. package/dist/rating-display/index.js +1 -1
  114. package/dist/rating-display/index.mjs +1 -1
  115. package/dist/scrolling-list/index.js +1 -1
  116. package/dist/scrolling-list/index.mjs +3 -3
  117. package/dist/segmented-gauge/SegmentedGauge.d.ts +1 -1
  118. package/dist/segmented-gauge/SegmentedGaugeContext.d.ts +1 -1
  119. package/dist/segmented-gauge/index.js +1 -1
  120. package/dist/segmented-gauge/index.js.map +1 -1
  121. package/dist/segmented-gauge/index.mjs +14 -16
  122. package/dist/segmented-gauge/index.mjs.map +1 -1
  123. package/dist/select/index.js +1 -1
  124. package/dist/select/index.mjs +1 -1
  125. package/dist/slider/SliderThumb.styles.d.ts +1 -1
  126. package/dist/slider/SliderTrack.styles.d.ts +1 -1
  127. package/dist/slider/index.js +1 -1
  128. package/dist/slider/index.js.map +1 -1
  129. package/dist/slider/index.mjs +3 -5
  130. package/dist/slider/index.mjs.map +1 -1
  131. package/dist/snackbar/SnackbarItem.styles.d.ts +1 -1
  132. package/dist/snackbar/index.js +1 -1
  133. package/dist/snackbar/index.js.map +1 -1
  134. package/dist/snackbar/index.mjs +24 -35
  135. package/dist/snackbar/index.mjs.map +1 -1
  136. package/dist/snackbar/snackbarVariants.d.ts +0 -8
  137. package/dist/spinner/Spinner.styles.d.ts +1 -1
  138. package/dist/spinner/index.js +1 -1
  139. package/dist/spinner/index.mjs +1 -1
  140. package/dist/stepper/index.js +1 -1
  141. package/dist/stepper/index.mjs +2 -2
  142. package/dist/switch/SwitchInput.d.ts +7 -5
  143. package/dist/switch/SwitchInput.styles.d.ts +1 -1
  144. package/dist/switch/index.js +1 -1
  145. package/dist/switch/index.js.map +1 -1
  146. package/dist/switch/index.mjs +80 -91
  147. package/dist/switch/index.mjs.map +1 -1
  148. package/dist/tabs/TabsTrigger.styles.d.ts +1 -1
  149. package/dist/tabs/index.js +1 -1
  150. package/dist/tabs/index.js.map +1 -1
  151. package/dist/tabs/index.mjs +20 -21
  152. package/dist/tabs/index.mjs.map +1 -1
  153. package/dist/tag/Tag.styles.d.ts +1 -1
  154. package/dist/tag/index.js +1 -1
  155. package/dist/tag/index.js.map +1 -1
  156. package/dist/tag/index.mjs +15 -31
  157. package/dist/tag/index.mjs.map +1 -1
  158. package/dist/tag/variants/filled.d.ts +0 -4
  159. package/dist/tag/variants/outlined.d.ts +0 -4
  160. package/dist/tag/variants/tinted.d.ts +0 -4
  161. package/dist/text-link/TextLink.d.ts +1 -1
  162. package/dist/text-link/index.js +1 -1
  163. package/dist/text-link/index.mjs +1 -1
  164. package/dist/toast/Toast.styles.d.ts +1 -1
  165. package/dist/toast/index.js +1 -1
  166. package/dist/toast/index.js.map +1 -1
  167. package/dist/toast/index.mjs +25 -37
  168. package/dist/toast/index.mjs.map +1 -1
  169. package/dist/toast/types.d.ts +1 -1
  170. package/package.json +4 -4
  171. package/dist/Button-B6rA3-e5.js +0 -2
  172. package/dist/Button-B6rA3-e5.js.map +0 -1
  173. package/dist/Button-DPncfbbM.mjs.map +0 -1
  174. package/dist/Icon-C23-htlD.mjs.map +0 -1
  175. package/dist/Icon-CF0W0LKr.js +0 -2
  176. package/dist/Icon-CF0W0LKr.js.map +0 -1
  177. package/dist/Spinner-_Kffli3B.js +0 -2
  178. package/dist/Spinner-_Kffli3B.js.map +0 -1
  179. package/dist/Spinner-aLrtE2JN.mjs.map +0 -1
  180. package/dist/TextLink-C3xDLsbC.js +0 -2
  181. package/dist/TextLink-C3xDLsbC.js.map +0 -1
  182. package/dist/TextLink-D7mOCjY_.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),r=require("@base-ui/react/dialog"),d=require("react"),w=require("@spark-ui/hooks/use-merge-refs"),B=require("@spark-ui/hooks/use-scroll-overflow"),n=require("class-variance-authority"),x=require("../useRenderSlot-DATwjgpo.js"),O=require("@spark-ui/icons/Close"),P=require("../Icon-CF0W0LKr.js"),I=require("../IconButton-D3g86WpZ.js"),T=require("../DialogContent.styles-CziMQtYr.js"),m=d.createContext(null),F=({children:e,withFade:o=!1})=>{const[t,l]=d.useState(!1);return a.jsx(m.Provider,{value:{isFullScreen:t,setIsFullScreen:l,withFade:o},children:e})},f=()=>{const e=d.useContext(m);if(!e)throw Error("useDialog must be used within a Dialog provider");return e},p=({withFade:e=!1,onOpenChange:o,...t})=>{const l=o?(i,s)=>{o(i)}:void 0;return a.jsx(F,{withFade:e,children:a.jsx(r.Dialog.Root,{"data-spark-component":"dialog",onOpenChange:l,...t})})};p.createHandle=r.Dialog.createHandle;p.displayName="Dialog.Root";const y=({children:e,className:o,inset:t=!1,ref:l,...i})=>{const s=d.useRef(null),c=w.useMergeRefs(l,s),{withFade:g}=f(),{overflow:u}=B.useScrollOverflow(s);return a.jsx("div",{"data-spark-component":"dialog-body",ref:c,className:n.cx("focus-visible:u-outline relative grow overflow-y-auto outline-hidden","transition-all duration-300",{"px-xl py-lg":!t},o),style:{...g&&{maskImage:"linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",maskSize:`100% calc(100% + ${u.top?"0px":"44px"} + ${u.bottom?"0px":"44px"})`,maskPosition:`0 ${u.top?"0px":"-44px"}`}},...i,children:e})};y.displayName="Dialog.Body";const D=({asChild:e=!1,...o})=>{const t=x.useRenderSlot(e,"button");return a.jsx(r.Dialog.Close,{"data-spark-component":"dialog-close",render:t,...o})},b=({"aria-label":e,className:o,size:t="md",intent:l="neutral",design:i="ghost",children:s=a.jsx(O.Close,{}),ref:c,...g})=>a.jsx(D,{"data-spark-component":"dialog-close-button","data-part":"close",ref:c,className:n.cx(["absolute","top-md","right-xl"],o),asChild:!0,...g,children:a.jsx(I.IconButton,{intent:l,size:t,design:i,"aria-label":e,children:a.jsx(P.Icon,{children:s})})}),$=Object.assign(b,{id:"CloseButton"});b.displayName="Dialog.CloseButton";const j=({className:e,isNarrow:o=!1,size:t="md",ref:l,...i})=>{const{setIsFullScreen:s}=f();return d.useEffect(()=>(t==="fullscreen"&&s(!0),()=>s(!1)),[s,t]),a.jsx(r.Dialog.Popup,{ref:l,"data-spark-component":"dialog-content",role:"dialog",className:c=>n.cx(T.dialogContentStyles({isNarrow:o,size:t,className:typeof e=="function"?e(c):e})),...i})};j.displayName="Dialog.Content";const h=e=>a.jsx(r.Dialog.Description,{"data-spark-component":"dialog-description",...e});h.displayName="Dialog.Description";const v=({children:e,className:o,ref:t,...l})=>a.jsx("footer",{"data-spark-component":"dialog-footer",ref:t,className:n.cx(o,["px-xl","py-lg"]),...l,children:e});v.displayName="Dialog.Footer";const N=({children:e,className:o,ref:t,...l})=>a.jsx("header",{"data-spark-component":"dialog-header",ref:t,className:n.cx(o,["px-xl","py-lg"]),...l,children:e});N.displayName="Dialog.Header";const k=({className:e,...o})=>a.jsx(r.Dialog.Backdrop,{"data-spark-component":"dialog-overlay",className:t=>n.cx("z-overlay size-screen fixed inset-0","bg-overlay/dim-1","data-starting-style:animate-fade-in","data-ending-style:animate-fade-out",typeof e=="function"?e(t):e),...o});k.displayName="Dialog.Overlay";const C=({className:e,...o})=>a.jsx(r.Dialog.Portal,{"data-spark-component":"dialog-portal",className:n.cx(e,"z-modal absolute"),...o});C.displayName="Dialog.Portal";const S=({className:e,ref:o,...t})=>a.jsx(r.Dialog.Title,{"data-spark-component":"dialog-title",ref:o,className:n.cx("text-headline-1 text-on-surface","group-has-data-[part=close]:pr-3xl",e),...t});S.displayName="Dialog.Title";const R=({asChild:e=!1,...o})=>{const t=x.useRenderSlot(e,"button");return a.jsx(r.Dialog.Trigger,{"data-spark-component":"dialog-trigger",render:t,...o})};R.displayName="Dialog.Trigger";const q=Object.assign(p,{Trigger:R,Portal:C,Overlay:k,Content:j,Header:N,Body:y,Footer:v,Close:D,CloseButton:$,Title:S,Description:h});q.displayName="Dialog";exports.Dialog=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),r=require("@base-ui/react/dialog"),d=require("react"),w=require("@spark-ui/hooks/use-merge-refs"),B=require("@spark-ui/hooks/use-scroll-overflow"),n=require("class-variance-authority"),x=require("../useRenderSlot-DATwjgpo.js"),O=require("@spark-ui/icons/Close"),P=require("../Icon-C-cNTnzd.js"),I=require("../IconButton-BR1bJSQA.js"),T=require("../DialogContent.styles-CziMQtYr.js"),m=d.createContext(null),F=({children:e,withFade:o=!1})=>{const[t,l]=d.useState(!1);return a.jsx(m.Provider,{value:{isFullScreen:t,setIsFullScreen:l,withFade:o},children:e})},f=()=>{const e=d.useContext(m);if(!e)throw Error("useDialog must be used within a Dialog provider");return e},p=({withFade:e=!1,onOpenChange:o,...t})=>{const l=o?(i,s)=>{o(i)}:void 0;return a.jsx(F,{withFade:e,children:a.jsx(r.Dialog.Root,{"data-spark-component":"dialog",onOpenChange:l,...t})})};p.createHandle=r.Dialog.createHandle;p.displayName="Dialog.Root";const y=({children:e,className:o,inset:t=!1,ref:l,...i})=>{const s=d.useRef(null),c=w.useMergeRefs(l,s),{withFade:g}=f(),{overflow:u}=B.useScrollOverflow(s);return a.jsx("div",{"data-spark-component":"dialog-body",ref:c,className:n.cx("focus-visible:u-outline relative grow overflow-y-auto outline-hidden","transition-all duration-300",{"px-xl py-lg":!t},o),style:{...g&&{maskImage:"linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",maskSize:`100% calc(100% + ${u.top?"0px":"44px"} + ${u.bottom?"0px":"44px"})`,maskPosition:`0 ${u.top?"0px":"-44px"}`}},...i,children:e})};y.displayName="Dialog.Body";const D=({asChild:e=!1,...o})=>{const t=x.useRenderSlot(e,"button");return a.jsx(r.Dialog.Close,{"data-spark-component":"dialog-close",render:t,...o})},b=({"aria-label":e,className:o,size:t="md",intent:l="neutral",design:i="ghost",children:s=a.jsx(O.Close,{}),ref:c,...g})=>a.jsx(D,{"data-spark-component":"dialog-close-button","data-part":"close",ref:c,className:n.cx(["absolute","top-md","right-xl"],o),asChild:!0,...g,children:a.jsx(I.IconButton,{intent:l,size:t,design:i,"aria-label":e,children:a.jsx(P.Icon,{children:s})})}),$=Object.assign(b,{id:"CloseButton"});b.displayName="Dialog.CloseButton";const j=({className:e,isNarrow:o=!1,size:t="md",ref:l,...i})=>{const{setIsFullScreen:s}=f();return d.useEffect(()=>(t==="fullscreen"&&s(!0),()=>s(!1)),[s,t]),a.jsx(r.Dialog.Popup,{ref:l,"data-spark-component":"dialog-content",role:"dialog",className:c=>n.cx(T.dialogContentStyles({isNarrow:o,size:t,className:typeof e=="function"?e(c):e})),...i})};j.displayName="Dialog.Content";const h=e=>a.jsx(r.Dialog.Description,{"data-spark-component":"dialog-description",...e});h.displayName="Dialog.Description";const v=({children:e,className:o,ref:t,...l})=>a.jsx("footer",{"data-spark-component":"dialog-footer",ref:t,className:n.cx(o,["px-xl","py-lg"]),...l,children:e});v.displayName="Dialog.Footer";const N=({children:e,className:o,ref:t,...l})=>a.jsx("header",{"data-spark-component":"dialog-header",ref:t,className:n.cx(o,["px-xl","py-lg"]),...l,children:e});N.displayName="Dialog.Header";const k=({className:e,...o})=>a.jsx(r.Dialog.Backdrop,{"data-spark-component":"dialog-overlay",className:t=>n.cx("z-overlay size-screen fixed inset-0","bg-overlay/dim-1","data-starting-style:animate-fade-in","data-ending-style:animate-fade-out",typeof e=="function"?e(t):e),...o});k.displayName="Dialog.Overlay";const C=({className:e,...o})=>a.jsx(r.Dialog.Portal,{"data-spark-component":"dialog-portal",className:n.cx(e,"z-modal absolute"),...o});C.displayName="Dialog.Portal";const S=({className:e,ref:o,...t})=>a.jsx(r.Dialog.Title,{"data-spark-component":"dialog-title",ref:o,className:n.cx("text-headline-1 text-on-surface","group-has-data-[part=close]:pr-3xl",e),...t});S.displayName="Dialog.Title";const R=({asChild:e=!1,...o})=>{const t=x.useRenderSlot(e,"button");return a.jsx(r.Dialog.Trigger,{"data-spark-component":"dialog-trigger",render:t,...o})};R.displayName="Dialog.Trigger";const q=Object.assign(p,{Trigger:R,Portal:C,Overlay:k,Content:j,Header:N,Body:y,Footer:v,Close:D,CloseButton:$,Title:S,Description:h});q.displayName="Dialog";exports.Dialog=q;
2
2
  //# sourceMappingURL=index.js.map
@@ -6,8 +6,8 @@ import { useScrollOverflow as T } from "@spark-ui/hooks/use-scroll-overflow";
6
6
  import { cx as s } from "class-variance-authority";
7
7
  import { u as g } from "../useRenderSlot-Bta2kdp4.mjs";
8
8
  import { Close as $ } from "@spark-ui/icons/Close";
9
- import { I as H } from "../Icon-C23-htlD.mjs";
10
- import { I as j } from "../IconButton-Bfd-6BAD.mjs";
9
+ import { I as H } from "../Icon-BO327oHU.mjs";
10
+ import { I as j } from "../IconButton-DdB3Pq13.mjs";
11
11
  import { d as z } from "../DialogContent.styles-Du7_Dkde.mjs";
12
12
  const u = B(null), E = ({
13
13
  children: o,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("@base-ui/react/dialog"),u=require("react"),B=require("@spark-ui/hooks/use-merge-refs"),S=require("@spark-ui/hooks/use-scroll-overflow"),s=require("class-variance-authority"),C=require("../useRenderSlot-DATwjgpo.js"),R=require("@spark-ui/icons/Close"),T=require("../Icon-CF0W0LKr.js"),q=require("../IconButton-D3g86WpZ.js"),j=u.createContext(null),P=({children:e,withFade:a=!1})=>r.jsx(j.Provider,{value:{withFade:a},children:e}),O=()=>{const e=u.useContext(j);if(!e)throw Error("useDrawer must be used within a Drawer provider");return e},z=({onOpenChange:e,withFade:a=!1,...t})=>{const o=e?(l,i)=>{e(l)}:void 0;return r.jsx(P,{withFade:a,children:r.jsx(n.Dialog.Root,{"data-spark-component":"drawer",onOpenChange:o,...t})})};z.displayName="Drawer.Root";const F=s.cva(["grow","overflow-y-auto","outline-hidden","focus-visible:u-outline"],{variants:{inset:{true:"",false:"px-xl py-lg"}},defaultVariants:{inset:!1}}),w=({children:e,inset:a=!1,className:t,ref:o,...l})=>{const i=u.useRef(null),c=B.useMergeRefs(o,i),{withFade:p}=O(),{overflow:m}=S.useScrollOverflow(i);return r.jsx("div",{"data-spark-component":"drawer-body",ref:c,className:F({inset:a,className:t}),style:{...p&&{maskImage:"linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",maskSize:`100% calc(100% + ${m.top?"0px":"44px"} + ${m.bottom?"0px":"44px"})`,maskPosition:`0 ${m.top?"0px":"-44px"}`}},...l,children:e})};w.displayName="Drawer.Body";const d=({asChild:e=!1,...a})=>{const t=C.useRenderSlot(e,"button");return r.jsx(n.Dialog.Close,{"data-spark-component":"drawer-close",render:t,...a})};d.displayName="Drawer.Close";const f=({"aria-label":e,className:a,size:t="md",intent:o="neutral",design:l="ghost",children:i=r.jsx(R.Close,{}),ref:c,...p})=>r.jsx(d,{"data-spark-component":"drawer-close-button",ref:c,className:s.cx(["absolute","top-sm","right-xl"],a),asChild:!0,...p,children:r.jsx(q.IconButton,{intent:o,size:t,design:l,"aria-label":e,children:r.jsx(T.Icon,{children:i})})});f.displayName="Drawer.CloseButton";const I=s.cva(["fixed z-modal flex flex-col bg-surface shadow-md","data-open:animation-duration-400 data-closed:animation-duration-200","data-nested-dialog-open:after:pointer-events-none","after:bg-transparent","after:transition-all","after:duration-200","data-nested-dialog-open:after:inset-0","data-nested-dialog-open:after:absolute","data-nested-dialog-open:after:rounded-[inherit]","data-nested-dialog-open:after:bg-overlay/dim-3"],{variants:{size:{sm:"",md:"",lg:"",fluid:"",fullscreen:"h-screen w-screen"},side:{right:["inset-y-0 right-0","data-open:animate-slide-in-right ","data-closed:animate-slide-out-right"],left:["inset-y-0 left-0","data-open:animate-slide-in-left","data-closed:animate-slide-out-left"],top:["top-0 left-0","w-screen","data-open:animate-slide-in-top","data-closed:animate-slide-out-top"],bottom:["bottom-0 left-0","w-screen","data-open:animate-slide-in-bottom","data-closed:animate-slide-out-bottom"]}},compoundVariants:[{side:["right","left"],size:"sm",class:["w-sz-480","max-w-full"]},{side:["right","left"],size:"md",class:["w-sz-672","max-w-full"]},{side:["right","left"],size:"lg",class:["w-sz-864","max-w-full"]},{side:["left","right"],size:"fluid",class:["w-auto","max-w-full"]},{side:["top","bottom"],size:"sm",class:["h-sz-480","max-h-full"]},{side:["top","bottom"],size:"md",class:["h-sz-672","max-h-full"]},{side:["top","bottom"],size:"lg",class:["h-sz-864","max-h-full"]},{side:["top","bottom"],size:"fluid",class:["h-auto","max-h-full"]}],defaultVariants:{side:"right",size:"md"}}),g=({className:e,size:a="md",side:t="right",ref:o,...l})=>r.jsx(n.Dialog.Popup,{ref:o,"data-spark-component":"drawer-content",role:"dialog",className:i=>s.cx(I({size:a,side:t,className:typeof e=="function"?e(i):e})),...l});g.displayName="Drawer.Content";const x=e=>r.jsx(n.Dialog.Description,{"data-spark-component":"drawer-description",...e});x.displayName="Drawer.Description";const D=({className:e,ref:a,...t})=>r.jsx("footer",{"data-spark-component":"drawer-footer",ref:a,className:s.cx(["px-xl","py-lg"],e),...t});D.displayName="Drawer.Footer";const y=({children:e,className:a,ref:t,...o})=>r.jsx("header",{"data-spark-component":"drawer-header",ref:t,className:s.cx(["px-xl","py-lg"],a),...o,children:e});y.displayName="Dialog.Header";const h=({className:e,...a})=>r.jsx(n.Dialog.Backdrop,{"data-spark-component":"drawer-overlay",className:t=>s.cx("z-overlay fixed top-0 left-0 h-screen w-screen","bg-overlay/dim-1","data-starting-style:animate-fade-in","data-ending-style:animate-fade-out",typeof e=="function"?e(t):e),...a});h.displayName="Drawer.Overlay";const b=({className:e,...a})=>r.jsx(n.Dialog.Portal,{"data-spark-component":"drawer-portal",className:s.cx(e,"z-modal absolute"),...a});b.displayName="Drawer.Portal";const N=({className:e,...a})=>r.jsx(n.Dialog.Title,{"data-spark-component":"drawer-title",className:s.cx("text-headline-2 text-on-surface",e),...a});N.displayName="Drawer.Title";const v=({asChild:e=!1,...a})=>{const t=C.useRenderSlot(e,"button");return r.jsx(n.Dialog.Trigger,{"data-spark-component":"drawer-trigger",render:t,...a})};v.displayName="Drawer.Trigger";const k=Object.assign(z,{Trigger:v,Portal:b,Overlay:h,Content:g,Header:y,Body:w,Footer:D,Close:d,CloseButton:f,Title:N,Description:x});k.displayName="Drawer";v.displayName="Drawer.Trigger";b.displayName="Drawer.Portal";h.displayName="Drawer.Overlay";g.displayName="Drawer.Content";y.displayName="Drawer.Header";w.displayName="Drawer.Body";D.displayName="Drawer.Footer";d.displayName="Drawer.Close";f.displayName="Drawer.CloseButton";N.displayName="Drawer.Title";x.displayName="Drawer.Description";exports.Drawer=k;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("@base-ui/react/dialog"),u=require("react"),B=require("@spark-ui/hooks/use-merge-refs"),S=require("@spark-ui/hooks/use-scroll-overflow"),s=require("class-variance-authority"),C=require("../useRenderSlot-DATwjgpo.js"),R=require("@spark-ui/icons/Close"),T=require("../Icon-C-cNTnzd.js"),q=require("../IconButton-BR1bJSQA.js"),j=u.createContext(null),P=({children:e,withFade:a=!1})=>r.jsx(j.Provider,{value:{withFade:a},children:e}),O=()=>{const e=u.useContext(j);if(!e)throw Error("useDrawer must be used within a Drawer provider");return e},z=({onOpenChange:e,withFade:a=!1,...t})=>{const o=e?(l,i)=>{e(l)}:void 0;return r.jsx(P,{withFade:a,children:r.jsx(n.Dialog.Root,{"data-spark-component":"drawer",onOpenChange:o,...t})})};z.displayName="Drawer.Root";const F=s.cva(["grow","overflow-y-auto","outline-hidden","focus-visible:u-outline"],{variants:{inset:{true:"",false:"px-xl py-lg"}},defaultVariants:{inset:!1}}),w=({children:e,inset:a=!1,className:t,ref:o,...l})=>{const i=u.useRef(null),c=B.useMergeRefs(o,i),{withFade:p}=O(),{overflow:m}=S.useScrollOverflow(i);return r.jsx("div",{"data-spark-component":"drawer-body",ref:c,className:F({inset:a,className:t}),style:{...p&&{maskImage:"linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",maskSize:`100% calc(100% + ${m.top?"0px":"44px"} + ${m.bottom?"0px":"44px"})`,maskPosition:`0 ${m.top?"0px":"-44px"}`}},...l,children:e})};w.displayName="Drawer.Body";const d=({asChild:e=!1,...a})=>{const t=C.useRenderSlot(e,"button");return r.jsx(n.Dialog.Close,{"data-spark-component":"drawer-close",render:t,...a})};d.displayName="Drawer.Close";const f=({"aria-label":e,className:a,size:t="md",intent:o="neutral",design:l="ghost",children:i=r.jsx(R.Close,{}),ref:c,...p})=>r.jsx(d,{"data-spark-component":"drawer-close-button",ref:c,className:s.cx(["absolute","top-sm","right-xl"],a),asChild:!0,...p,children:r.jsx(q.IconButton,{intent:o,size:t,design:l,"aria-label":e,children:r.jsx(T.Icon,{children:i})})});f.displayName="Drawer.CloseButton";const I=s.cva(["fixed z-modal flex flex-col bg-surface shadow-md","data-open:animation-duration-400 data-closed:animation-duration-200","data-nested-dialog-open:after:pointer-events-none","after:bg-transparent","after:transition-all","after:duration-200","data-nested-dialog-open:after:inset-0","data-nested-dialog-open:after:absolute","data-nested-dialog-open:after:rounded-[inherit]","data-nested-dialog-open:after:bg-overlay/dim-3"],{variants:{size:{sm:"",md:"",lg:"",fluid:"",fullscreen:"h-screen w-screen"},side:{right:["inset-y-0 right-0","data-open:animate-slide-in-right ","data-closed:animate-slide-out-right"],left:["inset-y-0 left-0","data-open:animate-slide-in-left","data-closed:animate-slide-out-left"],top:["top-0 left-0","w-screen","data-open:animate-slide-in-top","data-closed:animate-slide-out-top"],bottom:["bottom-0 left-0","w-screen","data-open:animate-slide-in-bottom","data-closed:animate-slide-out-bottom"]}},compoundVariants:[{side:["right","left"],size:"sm",class:["w-sz-480","max-w-full"]},{side:["right","left"],size:"md",class:["w-sz-672","max-w-full"]},{side:["right","left"],size:"lg",class:["w-sz-864","max-w-full"]},{side:["left","right"],size:"fluid",class:["w-auto","max-w-full"]},{side:["top","bottom"],size:"sm",class:["h-sz-480","max-h-full"]},{side:["top","bottom"],size:"md",class:["h-sz-672","max-h-full"]},{side:["top","bottom"],size:"lg",class:["h-sz-864","max-h-full"]},{side:["top","bottom"],size:"fluid",class:["h-auto","max-h-full"]}],defaultVariants:{side:"right",size:"md"}}),g=({className:e,size:a="md",side:t="right",ref:o,...l})=>r.jsx(n.Dialog.Popup,{ref:o,"data-spark-component":"drawer-content",role:"dialog",className:i=>s.cx(I({size:a,side:t,className:typeof e=="function"?e(i):e})),...l});g.displayName="Drawer.Content";const x=e=>r.jsx(n.Dialog.Description,{"data-spark-component":"drawer-description",...e});x.displayName="Drawer.Description";const D=({className:e,ref:a,...t})=>r.jsx("footer",{"data-spark-component":"drawer-footer",ref:a,className:s.cx(["px-xl","py-lg"],e),...t});D.displayName="Drawer.Footer";const y=({children:e,className:a,ref:t,...o})=>r.jsx("header",{"data-spark-component":"drawer-header",ref:t,className:s.cx(["px-xl","py-lg"],a),...o,children:e});y.displayName="Dialog.Header";const h=({className:e,...a})=>r.jsx(n.Dialog.Backdrop,{"data-spark-component":"drawer-overlay",className:t=>s.cx("z-overlay fixed top-0 left-0 h-screen w-screen","bg-overlay/dim-1","data-starting-style:animate-fade-in","data-ending-style:animate-fade-out",typeof e=="function"?e(t):e),...a});h.displayName="Drawer.Overlay";const b=({className:e,...a})=>r.jsx(n.Dialog.Portal,{"data-spark-component":"drawer-portal",className:s.cx(e,"z-modal absolute"),...a});b.displayName="Drawer.Portal";const N=({className:e,...a})=>r.jsx(n.Dialog.Title,{"data-spark-component":"drawer-title",className:s.cx("text-headline-2 text-on-surface",e),...a});N.displayName="Drawer.Title";const v=({asChild:e=!1,...a})=>{const t=C.useRenderSlot(e,"button");return r.jsx(n.Dialog.Trigger,{"data-spark-component":"drawer-trigger",render:t,...a})};v.displayName="Drawer.Trigger";const k=Object.assign(z,{Trigger:v,Portal:b,Overlay:h,Content:g,Header:y,Body:w,Footer:D,Close:d,CloseButton:f,Title:N,Description:x});k.displayName="Drawer";v.displayName="Drawer.Trigger";b.displayName="Drawer.Portal";h.displayName="Drawer.Overlay";g.displayName="Drawer.Content";y.displayName="Drawer.Header";w.displayName="Drawer.Body";D.displayName="Drawer.Footer";d.displayName="Drawer.Close";f.displayName="Drawer.CloseButton";N.displayName="Drawer.Title";x.displayName="Drawer.Description";exports.Drawer=k;
2
2
  //# sourceMappingURL=index.js.map
@@ -6,8 +6,8 @@ import { useScrollOverflow as S } from "@spark-ui/hooks/use-scroll-overflow";
6
6
  import { cva as v, cx as i } from "class-variance-authority";
7
7
  import { u as z } from "../useRenderSlot-Bta2kdp4.mjs";
8
8
  import { Close as R } from "@spark-ui/icons/Close";
9
- import { I as F } from "../Icon-C23-htlD.mjs";
10
- import { I } from "../IconButton-Bfd-6BAD.mjs";
9
+ import { I as F } from "../Icon-BO327oHU.mjs";
10
+ import { I } from "../IconButton-DdB3Pq13.mjs";
11
11
  const C = B(null), H = ({
12
12
  children: e,
13
13
  withFade: a = !1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),xe=require("@spark-ui/components/form-field"),a=require("react"),N=require("../popover/index.js"),D=require("downshift"),w=require("class-variance-authority"),T=require("@spark-ui/hooks/use-merge-refs"),we=require("@spark-ui/icons/Check"),E=require("../Icon-CF0W0LKr.js"),ge=require("@spark-ui/icons/ArrowHorizontalDown"),Ie=require("../VisuallyHidden-CB6Nx76j.js"),he=({itemsMap:e,defaultValue:o,value:t,onValueChange:n,open:d,onOpenChange:c,defaultOpen:l,multiple:i,id:m,labelId:x})=>{const p=[...e.values()],u=D.useMultipleSelection({selectedItems:t!=null&&i?p.filter(r=>i?t.includes(r.value):t===r.value):void 0,initialSelectedItems:o!=null&&i?p.filter(r=>i?o.includes(r.value):o===r.value):void 0,onSelectedItemsChange:({selectedItems:r})=>{r!=null&&i&&n?.(r.map(f=>f.value))}}),g=(r,{changes:f,type:v})=>{if(!i)return f;const{selectedItems:I,removeSelectedItem:C,addSelectedItem:P}=u;switch(v){case D.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:case D.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:case D.useSelect.stateChangeTypes.ItemClick:return f.selectedItem!=null&&(I.some(j=>j.value===f.selectedItem?.value)?C(f.selectedItem):P(f.selectedItem)),{...f,isOpen:!0,highlightedIndex:r.highlightedIndex};default:return f}};return{...D.useSelect({items:p,isItemDisabled:r=>r.disabled,itemToString:r=>r?r.text:"",id:m,labelId:x,isOpen:d,onIsOpenChange:({isOpen:r})=>{r!=null&&c?.(r)},initialIsOpen:l??!1,stateReducer:g,selectedItem:t!=null&&!i?e.get(t)||null:void 0,initialSelectedItem:(o!=null||t!=null)&&!i?e.get(o)||null:void 0,onSelectedItemChange:({selectedItem:r})=>{r?.value!=null&&!i&&n?.(r?.value)},scrollIntoView:r=>{r&&r.scrollIntoView({block:"nearest"})}}),...u,selectedItems:[...new Set(u.selectedItems)]}};function ye(e,o){let t=0;for(const[n]of e.entries()){if(n===o)return t;t++}return-1}const ve=(e,o)=>{let t=0;for(const n of e.keys()){if(t===o)return n;t++}},De=(e,o)=>{const t=ve(e,o);return t!==void 0?e.get(t):void 0},k=e=>e?e.type.displayName:"",Z=(e,o=[])=>(a.Children.forEach(e,t=>{if(a.isValidElement(t)){if(k(t)==="Dropdown.Item"){const n=t.props;o.push({value:n.value,disabled:!!n.disabled,text:M(n.children)})}t.props.children&&Z(t.props.children,o)}}),o),M=(e,o="")=>typeof e=="string"?e:(a.Children.forEach(e,t=>{a.isValidElement(t)&&(k(t)==="Dropdown.ItemText"&&(o=t.props.children),t.props.children&&M(t.props.children,o))}),o),Y=e=>{const o=new Map;return Z(e).forEach(t=>{o.set(t.value,t)}),o},ee=(e,o)=>a.Children.toArray(e).some(t=>a.isValidElement(t)?k(t)===o?!0:t.props.children?ee(t.props.children,o):!1:!1),te=a.createContext(null),b=":dropdown",oe=({children:e,defaultValue:o,value:t,onValueChange:n,open:d,onOpenChange:c,defaultOpen:l,multiple:i=!1,disabled:m=!1,readOnly:x=!1,state:p})=>{const[u,g]=a.useState(Y(e)),[h,r]=a.useState(ee(e,"Dropdown.Popover")),[f,v]=a.useState("mouse"),I=xe.useFormFieldControl(),C=I.state||p,P=`${b}-label-${a.useId()}`,U=`${b}-input-${a.useId()}`,j=I.id||U,de=I.labelId||P,le=I.disabled??m,ce=I.readOnly??x,W=he({itemsMap:u,defaultValue:o,value:t,onValueChange:n,open:d,onOpenChange:c,defaultOpen:l,multiple:i,id:j,labelId:de});a.useEffect(()=>{const X=Y(e),_=[...u.values()],S=[...X.values()];(_.length!==S.length||_.some((J,Q)=>{const me=J.value!==S[Q]?.value,fe=J.text!==S[Q]?.text;return me||fe}))&&g(X)},[e]);const[pe,ue]=h?[N.Popover,{open:!0}]:[a.Fragment,{}];return s.jsx(te.Provider,{value:{multiple:i,disabled:le,readOnly:ce,...W,itemsMap:u,highlightedItem:De(u,W.highlightedIndex),hasPopover:h,setHasPopover:r,state:C,lastInteractionType:f,setLastInteractionType:v},children:s.jsx(pe,{...ue,children:e})})},y=()=>{const e=a.useContext(te);if(!e)throw Error("useDropdownContext must be used within a Dropdown provider");return e},ne=({children:e,...o})=>s.jsx(oe,{...o,children:e});ne.displayName="Dropdown";const O=({className:e,ref:o})=>s.jsx("div",{ref:o,className:w.cx("my-md border-b-sm border-outline",e)});O.displayName="Dropdown.Divider";const se=a.createContext(null),be=({children:e})=>{const o=`${b}-group-label-${a.useId()}`;return s.jsx(se.Provider,{value:{labelId:o},children:e})},re=()=>{const e=a.useContext(se);if(!e)throw Error("useDropdownGroupContext must be used within a DropdownGroup provider");return e},R=({children:e,ref:o,...t})=>s.jsx(be,{children:s.jsx(Ne,{ref:o,...t,children:e})}),Ne=({children:e,className:o,ref:t})=>{const{labelId:n}=re();return s.jsx("div",{ref:t,role:"group","aria-labelledby":n,className:w.cx(o),children:e})};R.displayName="Dropdown.Group";const ae=a.createContext(null),Ce=({value:e,disabled:o=!1,children:t})=>{const{multiple:n,itemsMap:d,selectedItem:c,selectedItems:l}=y(),[i,m]=a.useState(void 0),x=ye(d,e),p={disabled:o,value:e,text:M(t)},u=n?l.some(g=>g.value===e):c?.value===e;return s.jsx(ae.Provider,{value:{textId:i,setTextId:m,isSelected:u,itemData:p,index:x,disabled:o},children:t})},$=()=>{const e=a.useContext(ae);if(!e)throw Error("useDropdownItemContext must be used within a DropdownItem provider");return e},q=({children:e,ref:o,...t})=>{const{value:n,disabled:d}=t;return s.jsx(Ce,{value:n,disabled:d,children:s.jsx(je,{ref:o,...t,children:e})})},Pe=w.cva("px-lg py-md text-body-1",{variants:{selected:{true:"font-bold"},disabled:{true:"opacity-dim-3 cursor-not-allowed",false:"cursor-pointer"},highlighted:{true:""},interactionType:{mouse:"",keyboard:""}},compoundVariants:[{highlighted:!0,interactionType:"mouse",class:"bg-surface-hovered"},{highlighted:!0,interactionType:"keyboard",class:"u-outline"}]}),je=({className:e,disabled:o=!1,value:t,children:n,ref:d})=>{const{getItemProps:c,highlightedItem:l,lastInteractionType:i}=y(),{textId:m,index:x,itemData:p,isSelected:u}=$(),g=l?.value===t,{ref:h,...r}=c({item:p,index:x}),f=T.useMergeRefs(d,h);return s.jsx("li",{ref:f,className:w.cx(Pe({selected:u,disabled:o,highlighted:g,interactionType:i,className:e})),...r,"aria-selected":u,"aria-labelledby":m,children:n},t)};q.displayName="Dropdown.Item";const F=({className:e,children:o,label:t,ref:n})=>{const{disabled:d,isSelected:c}=$(),l=o||s.jsx(E.Icon,{size:"sm",children:s.jsx(we.Check,{"aria-label":t})});return s.jsx("span",{ref:n,className:w.cx("min-h-sz-16 min-w-sz-16 flex",d&&"opacity-dim-3",e),children:c&&l})};F.displayName="Dropdown.ItemIndicator";const L=({children:e,className:o,ref:t,...n})=>{const{isOpen:d,getMenuProps:c,hasPopover:l,setLastInteractionType:i}=y(),{ref:m,...x}=c({onMouseMove:()=>{i("mouse")}}),p=a.useRef(null),u=T.useMergeRefs(t,m,p);return a.useLayoutEffect(()=>{l&&p.current&&p.current.parentElement&&(p.current.parentElement.style.pointerEvents=d?"":"none",p.current.style.pointerEvents=d?"":"none")},[d,l]),s.jsx("ul",{ref:u,className:w.cx(o,"flex flex-col",d?"pointer-events-auto! block":"pointer-events-none invisible absolute opacity-0",l&&"p-lg"),...n,...x,"data-spark-component":"dropdown-items",children:e})};L.displayName="Dropdown.Items";const G=({children:e,ref:o})=>{const t=`${b}-item-text-${a.useId()}`,{setTextId:n}=$();return a.useEffect(()=>(n(t),()=>n(void 0))),s.jsx("span",{id:t,className:w.cx("inline"),ref:o,children:e})};G.displayName="Dropdown.ItemText";const V=({children:e,className:o,ref:t})=>{const{labelId:n}=re();return s.jsx("div",{ref:t,id:n,className:w.cx("px-md py-sm text-body-2 text-neutral italic",o),children:e})};V.displayName="Dropdown.Label";const z=({children:e})=>s.jsx(E.Icon,{size:"sm",className:"shrink-0",children:e});z.displayName="Dropdown.LeadingIcon";const A=({children:e,matchTriggerWidth:o=!0,sideOffset:t=4,className:n,elevation:d="dropdown",ref:c,...l})=>{const i=y();return a.useEffect(()=>(i.setHasPopover(!0),()=>i.setHasPopover(!1)),[]),s.jsx(N.Popover.Content,{ref:c,inset:!0,asChild:!0,matchTriggerWidth:o,elevation:d,className:w.cx("relative",n),sideOffset:t,onOpenAutoFocus:m=>{m.preventDefault()},...l,"data-spark-component":"dropdown-popover",children:e})};A.displayName="Dropdown.Popover";const H=({children:e,...o})=>s.jsx(N.Popover.Portal,{...o,children:e});H.displayName="Dropdown.Portal";const Se=w.cva(["flex w-full items-center justify-between","min-h-sz-44 rounded-lg bg-surface text-on-surface px-lg","text-body-1","ring-1 outline-hidden ring-inset focus:ring-2 focus:ring-focus"],{variants:{state:{undefined:"ring-outline",error:"ring-error",alert:"ring-alert",success:"ring-success"},disabled:{true:"disabled:bg-on-surface/dim-5 cursor-not-allowed text-on-surface/dim-3"},readOnly:{true:"disabled:bg-on-surface/dim-5 cursor-not-allowed text-on-surface/dim-3"}},compoundVariants:[{disabled:!1,state:void 0,class:"default:hover:ring-outline-high"}]}),B=({"aria-label":e,children:o,className:t,ref:n})=>{const{getToggleButtonProps:d,getDropdownProps:c,getLabelProps:l,hasPopover:i,disabled:m,readOnly:x,state:p,setLastInteractionType:u}=y(),[g,h]=i?[N.Popover.Trigger,{asChild:!0}]:[a.Fragment,{}],{ref:r,...f}=d({...c(),onKeyDown:()=>{u("keyboard")}}),v=f["aria-expanded"],I=T.useMergeRefs(n,r);return s.jsxs(s.Fragment,{children:[e&&s.jsx(Ie.VisuallyHidden,{children:s.jsx("label",{...l(),children:e})}),s.jsx(g,{...h,children:s.jsxs("button",{type:"button",ref:I,disabled:m||x,className:Se({className:t,state:p,disabled:m,readOnly:x}),...f,"data-spark-component":"dropdown-trigger",children:[s.jsx("span",{className:"gap-md flex items-center justify-start",children:o}),s.jsx(E.Icon,{className:w.cx("ml-md shrink-0 rotate-0 transition duration-100 ease-in",{"rotate-180":v}),size:"sm",children:s.jsx(ge.ArrowHorizontalDown,{})})]})})]})};B.displayName="Dropdown.Trigger";const K=({children:e,className:o,placeholder:t,ref:n})=>{const{selectedItem:d,multiple:c,selectedItems:l}=y(),i=!!(c?l.length:d),m=c?l[0]?.text:d?.text,x=l.length>1?`, +${l.length-1}`:"";return s.jsxs("span",{ref:n,className:w.cx("flex shrink items-center text-left",o),children:[s.jsx("span",{className:w.cx("line-clamp-1 flex-1 overflow-hidden break-all text-ellipsis",!i&&"text-on-surface/dim-1"),children:i?e||m:t}),x&&s.jsx("span",{children:x})]})};K.displayName="Dropdown.Value";const ie=Object.assign(ne,{Group:R,Item:q,Items:L,ItemText:G,ItemIndicator:F,Label:V,Popover:A,Divider:O,Trigger:B,Value:K,LeadingIcon:z,Portal:H});ie.displayName="Dropdown";R.displayName="Dropdown.Group";L.displayName="Dropdown.Items";q.displayName="Dropdown.Item";G.displayName="Dropdown.ItemText";F.displayName="Dropdown.ItemIndicator";V.displayName="Dropdown.Label";A.displayName="Dropdown.Popover";O.displayName="Dropdown.Divider";B.displayName="Dropdown.Trigger";K.displayName="Dropdown.Value";z.displayName="Dropdown.LeadingIcon";H.displayName="Dropdown.Portal";exports.Dropdown=ie;exports.DropdownProvider=oe;exports.useDropdownContext=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),xe=require("@spark-ui/components/form-field"),a=require("react"),N=require("../popover/index.js"),D=require("downshift"),w=require("class-variance-authority"),T=require("@spark-ui/hooks/use-merge-refs"),we=require("@spark-ui/icons/Check"),E=require("../Icon-C-cNTnzd.js"),ge=require("@spark-ui/icons/ArrowHorizontalDown"),Ie=require("../VisuallyHidden-CB6Nx76j.js"),he=({itemsMap:e,defaultValue:o,value:t,onValueChange:n,open:d,onOpenChange:c,defaultOpen:l,multiple:i,id:m,labelId:x})=>{const p=[...e.values()],u=D.useMultipleSelection({selectedItems:t!=null&&i?p.filter(r=>i?t.includes(r.value):t===r.value):void 0,initialSelectedItems:o!=null&&i?p.filter(r=>i?o.includes(r.value):o===r.value):void 0,onSelectedItemsChange:({selectedItems:r})=>{r!=null&&i&&n?.(r.map(f=>f.value))}}),g=(r,{changes:f,type:v})=>{if(!i)return f;const{selectedItems:I,removeSelectedItem:C,addSelectedItem:P}=u;switch(v){case D.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:case D.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:case D.useSelect.stateChangeTypes.ItemClick:return f.selectedItem!=null&&(I.some(j=>j.value===f.selectedItem?.value)?C(f.selectedItem):P(f.selectedItem)),{...f,isOpen:!0,highlightedIndex:r.highlightedIndex};default:return f}};return{...D.useSelect({items:p,isItemDisabled:r=>r.disabled,itemToString:r=>r?r.text:"",id:m,labelId:x,isOpen:d,onIsOpenChange:({isOpen:r})=>{r!=null&&c?.(r)},initialIsOpen:l??!1,stateReducer:g,selectedItem:t!=null&&!i?e.get(t)||null:void 0,initialSelectedItem:(o!=null||t!=null)&&!i?e.get(o)||null:void 0,onSelectedItemChange:({selectedItem:r})=>{r?.value!=null&&!i&&n?.(r?.value)},scrollIntoView:r=>{r&&r.scrollIntoView({block:"nearest"})}}),...u,selectedItems:[...new Set(u.selectedItems)]}};function ye(e,o){let t=0;for(const[n]of e.entries()){if(n===o)return t;t++}return-1}const ve=(e,o)=>{let t=0;for(const n of e.keys()){if(t===o)return n;t++}},De=(e,o)=>{const t=ve(e,o);return t!==void 0?e.get(t):void 0},k=e=>e?e.type.displayName:"",Z=(e,o=[])=>(a.Children.forEach(e,t=>{if(a.isValidElement(t)){if(k(t)==="Dropdown.Item"){const n=t.props;o.push({value:n.value,disabled:!!n.disabled,text:M(n.children)})}t.props.children&&Z(t.props.children,o)}}),o),M=(e,o="")=>typeof e=="string"?e:(a.Children.forEach(e,t=>{a.isValidElement(t)&&(k(t)==="Dropdown.ItemText"&&(o=t.props.children),t.props.children&&M(t.props.children,o))}),o),Y=e=>{const o=new Map;return Z(e).forEach(t=>{o.set(t.value,t)}),o},ee=(e,o)=>a.Children.toArray(e).some(t=>a.isValidElement(t)?k(t)===o?!0:t.props.children?ee(t.props.children,o):!1:!1),te=a.createContext(null),b=":dropdown",oe=({children:e,defaultValue:o,value:t,onValueChange:n,open:d,onOpenChange:c,defaultOpen:l,multiple:i=!1,disabled:m=!1,readOnly:x=!1,state:p})=>{const[u,g]=a.useState(Y(e)),[h,r]=a.useState(ee(e,"Dropdown.Popover")),[f,v]=a.useState("mouse"),I=xe.useFormFieldControl(),C=I.state||p,P=`${b}-label-${a.useId()}`,U=`${b}-input-${a.useId()}`,j=I.id||U,de=I.labelId||P,le=I.disabled??m,ce=I.readOnly??x,W=he({itemsMap:u,defaultValue:o,value:t,onValueChange:n,open:d,onOpenChange:c,defaultOpen:l,multiple:i,id:j,labelId:de});a.useEffect(()=>{const X=Y(e),_=[...u.values()],S=[...X.values()];(_.length!==S.length||_.some((J,Q)=>{const me=J.value!==S[Q]?.value,fe=J.text!==S[Q]?.text;return me||fe}))&&g(X)},[e]);const[pe,ue]=h?[N.Popover,{open:!0}]:[a.Fragment,{}];return s.jsx(te.Provider,{value:{multiple:i,disabled:le,readOnly:ce,...W,itemsMap:u,highlightedItem:De(u,W.highlightedIndex),hasPopover:h,setHasPopover:r,state:C,lastInteractionType:f,setLastInteractionType:v},children:s.jsx(pe,{...ue,children:e})})},y=()=>{const e=a.useContext(te);if(!e)throw Error("useDropdownContext must be used within a Dropdown provider");return e},ne=({children:e,...o})=>s.jsx(oe,{...o,children:e});ne.displayName="Dropdown";const O=({className:e,ref:o})=>s.jsx("div",{ref:o,className:w.cx("my-md border-b-sm border-outline",e)});O.displayName="Dropdown.Divider";const se=a.createContext(null),be=({children:e})=>{const o=`${b}-group-label-${a.useId()}`;return s.jsx(se.Provider,{value:{labelId:o},children:e})},re=()=>{const e=a.useContext(se);if(!e)throw Error("useDropdownGroupContext must be used within a DropdownGroup provider");return e},R=({children:e,ref:o,...t})=>s.jsx(be,{children:s.jsx(Ne,{ref:o,...t,children:e})}),Ne=({children:e,className:o,ref:t})=>{const{labelId:n}=re();return s.jsx("div",{ref:t,role:"group","aria-labelledby":n,className:w.cx(o),children:e})};R.displayName="Dropdown.Group";const ae=a.createContext(null),Ce=({value:e,disabled:o=!1,children:t})=>{const{multiple:n,itemsMap:d,selectedItem:c,selectedItems:l}=y(),[i,m]=a.useState(void 0),x=ye(d,e),p={disabled:o,value:e,text:M(t)},u=n?l.some(g=>g.value===e):c?.value===e;return s.jsx(ae.Provider,{value:{textId:i,setTextId:m,isSelected:u,itemData:p,index:x,disabled:o},children:t})},$=()=>{const e=a.useContext(ae);if(!e)throw Error("useDropdownItemContext must be used within a DropdownItem provider");return e},q=({children:e,ref:o,...t})=>{const{value:n,disabled:d}=t;return s.jsx(Ce,{value:n,disabled:d,children:s.jsx(je,{ref:o,...t,children:e})})},Pe=w.cva("px-lg py-md text-body-1",{variants:{selected:{true:"font-bold"},disabled:{true:"opacity-dim-3 cursor-not-allowed",false:"cursor-pointer"},highlighted:{true:""},interactionType:{mouse:"",keyboard:""}},compoundVariants:[{highlighted:!0,interactionType:"mouse",class:"bg-surface-hovered"},{highlighted:!0,interactionType:"keyboard",class:"u-outline"}]}),je=({className:e,disabled:o=!1,value:t,children:n,ref:d})=>{const{getItemProps:c,highlightedItem:l,lastInteractionType:i}=y(),{textId:m,index:x,itemData:p,isSelected:u}=$(),g=l?.value===t,{ref:h,...r}=c({item:p,index:x}),f=T.useMergeRefs(d,h);return s.jsx("li",{ref:f,className:w.cx(Pe({selected:u,disabled:o,highlighted:g,interactionType:i,className:e})),...r,"aria-selected":u,"aria-labelledby":m,children:n},t)};q.displayName="Dropdown.Item";const F=({className:e,children:o,label:t,ref:n})=>{const{disabled:d,isSelected:c}=$(),l=o||s.jsx(E.Icon,{size:"sm",children:s.jsx(we.Check,{"aria-label":t})});return s.jsx("span",{ref:n,className:w.cx("min-h-sz-16 min-w-sz-16 flex",d&&"opacity-dim-3",e),children:c&&l})};F.displayName="Dropdown.ItemIndicator";const L=({children:e,className:o,ref:t,...n})=>{const{isOpen:d,getMenuProps:c,hasPopover:l,setLastInteractionType:i}=y(),{ref:m,...x}=c({onMouseMove:()=>{i("mouse")}}),p=a.useRef(null),u=T.useMergeRefs(t,m,p);return a.useLayoutEffect(()=>{l&&p.current&&p.current.parentElement&&(p.current.parentElement.style.pointerEvents=d?"":"none",p.current.style.pointerEvents=d?"":"none")},[d,l]),s.jsx("ul",{ref:u,className:w.cx(o,"flex flex-col",d?"pointer-events-auto! block":"pointer-events-none invisible absolute opacity-0",l&&"p-lg"),...n,...x,"data-spark-component":"dropdown-items",children:e})};L.displayName="Dropdown.Items";const G=({children:e,ref:o})=>{const t=`${b}-item-text-${a.useId()}`,{setTextId:n}=$();return a.useEffect(()=>(n(t),()=>n(void 0))),s.jsx("span",{id:t,className:w.cx("inline"),ref:o,children:e})};G.displayName="Dropdown.ItemText";const V=({children:e,className:o,ref:t})=>{const{labelId:n}=re();return s.jsx("div",{ref:t,id:n,className:w.cx("px-md py-sm text-body-2 text-neutral italic",o),children:e})};V.displayName="Dropdown.Label";const z=({children:e})=>s.jsx(E.Icon,{size:"sm",className:"shrink-0",children:e});z.displayName="Dropdown.LeadingIcon";const A=({children:e,matchTriggerWidth:o=!0,sideOffset:t=4,className:n,elevation:d="dropdown",ref:c,...l})=>{const i=y();return a.useEffect(()=>(i.setHasPopover(!0),()=>i.setHasPopover(!1)),[]),s.jsx(N.Popover.Content,{ref:c,inset:!0,asChild:!0,matchTriggerWidth:o,elevation:d,className:w.cx("relative",n),sideOffset:t,onOpenAutoFocus:m=>{m.preventDefault()},...l,"data-spark-component":"dropdown-popover",children:e})};A.displayName="Dropdown.Popover";const H=({children:e,...o})=>s.jsx(N.Popover.Portal,{...o,children:e});H.displayName="Dropdown.Portal";const Se=w.cva(["flex w-full items-center justify-between","min-h-sz-44 rounded-lg bg-surface text-on-surface px-lg","text-body-1","ring-1 outline-hidden ring-inset focus:ring-2 focus:ring-focus"],{variants:{state:{undefined:"ring-outline",error:"ring-error",alert:"ring-alert",success:"ring-success"},disabled:{true:"disabled:bg-on-surface/dim-5 cursor-not-allowed text-on-surface/dim-3"},readOnly:{true:"disabled:bg-on-surface/dim-5 cursor-not-allowed text-on-surface/dim-3"}},compoundVariants:[{disabled:!1,state:void 0,class:"default:hover:ring-outline-high"}]}),B=({"aria-label":e,children:o,className:t,ref:n})=>{const{getToggleButtonProps:d,getDropdownProps:c,getLabelProps:l,hasPopover:i,disabled:m,readOnly:x,state:p,setLastInteractionType:u}=y(),[g,h]=i?[N.Popover.Trigger,{asChild:!0}]:[a.Fragment,{}],{ref:r,...f}=d({...c(),onKeyDown:()=>{u("keyboard")}}),v=f["aria-expanded"],I=T.useMergeRefs(n,r);return s.jsxs(s.Fragment,{children:[e&&s.jsx(Ie.VisuallyHidden,{children:s.jsx("label",{...l(),children:e})}),s.jsx(g,{...h,children:s.jsxs("button",{type:"button",ref:I,disabled:m||x,className:Se({className:t,state:p,disabled:m,readOnly:x}),...f,"data-spark-component":"dropdown-trigger",children:[s.jsx("span",{className:"gap-md flex items-center justify-start",children:o}),s.jsx(E.Icon,{className:w.cx("ml-md shrink-0 rotate-0 transition duration-100 ease-in",{"rotate-180":v}),size:"sm",children:s.jsx(ge.ArrowHorizontalDown,{})})]})})]})};B.displayName="Dropdown.Trigger";const K=({children:e,className:o,placeholder:t,ref:n})=>{const{selectedItem:d,multiple:c,selectedItems:l}=y(),i=!!(c?l.length:d),m=c?l[0]?.text:d?.text,x=l.length>1?`, +${l.length-1}`:"";return s.jsxs("span",{ref:n,className:w.cx("flex shrink items-center text-left",o),children:[s.jsx("span",{className:w.cx("line-clamp-1 flex-1 overflow-hidden break-all text-ellipsis",!i&&"text-on-surface/dim-1"),children:i?e||m:t}),x&&s.jsx("span",{children:x})]})};K.displayName="Dropdown.Value";const ie=Object.assign(ne,{Group:R,Item:q,Items:L,ItemText:G,ItemIndicator:F,Label:V,Popover:A,Divider:O,Trigger:B,Value:K,LeadingIcon:z,Portal:H});ie.displayName="Dropdown";R.displayName="Dropdown.Group";L.displayName="Dropdown.Items";q.displayName="Dropdown.Item";G.displayName="Dropdown.ItemText";F.displayName="Dropdown.ItemIndicator";V.displayName="Dropdown.Label";A.displayName="Dropdown.Popover";O.displayName="Dropdown.Divider";B.displayName="Dropdown.Trigger";K.displayName="Dropdown.Value";z.displayName="Dropdown.LeadingIcon";H.displayName="Dropdown.Portal";exports.Dropdown=ie;exports.DropdownProvider=oe;exports.useDropdownContext=y;
2
2
  //# sourceMappingURL=index.js.map
@@ -6,7 +6,7 @@ import { useMultipleSelection as Ce, useSelect as x } from "downshift";
6
6
  import { cx as w, cva as ie } from "class-variance-authority";
7
7
  import { useMergeRefs as G } from "@spark-ui/hooks/use-merge-refs";
8
8
  import { Check as Te } from "@spark-ui/icons/Check";
9
- import { I as R } from "../Icon-C23-htlD.mjs";
9
+ import { I as R } from "../Icon-BO327oHU.mjs";
10
10
  import { ArrowHorizontalDown as Se } from "@spark-ui/icons/ArrowHorizontalDown";
11
11
  import { V as Ee } from "../VisuallyHidden-DjlV0-CW.mjs";
12
12
  const ke = ({
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),me=require("@spark-ui/components/form-field"),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("class-variance-authority"),H=require("../Icon-CF0W0LKr.js"),be=require("../progress/index.js"),se=require("@spark-ui/icons/Close"),ae=require("../IconButton-D3g86WpZ.js"),he=require("@spark-ui/icons/WarningOutline"),ne=require("../Button-B6rA3-e5.js"),ye=require("../Slot-DQ8z2zsy.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 Ie(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??[],I=g,[b,x]=f.useState([]),U=O=>{if(p||v)return;x([]);const D=[],k=(R,L)=>L.some(y=>y.name===R.name&&y.size===R.size),h=(R,L)=>{const y=D.find(A=>A.file.name===R.name&&A.file.size===R.size);y?y.errors.includes(L)||y.errors.push(L):D.push({file:R,errors:[L]})};I(R=>{const L=R??[],y=a!==void 0?a-L.length:void 0;y!==void 0&&y<=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=>Ie(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);y!==void 0&&(y<=0?C=[]:C.length>y&&(C.forEach(F=>{h(F,T.TOO_MANY_FILES)}),C=[]));const re=d?[...L,...C]:C,V=[...D];return x(V),C.length>0&&n&&n({files:C}),V.length>0&&e&&e({files:V}),l&&l({acceptedFiles:re,rejectedFiles:V}),re})},z=O=>{p||v||I(D=>{const h=(D??[]).filter((L,y)=>y!==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||(I([]),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(),I=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:y,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=()=>{y(),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:I,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 I=a.current.filter(Boolean);if(I.length>0){const b=Math.min(m,I.length-1),x=I[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(H.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(H.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 I=a.current.filter(Boolean);if(I.length>0){const b=Math.min(m,I.length-1),x=I[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(H.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(H.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(),I=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(I){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?ye.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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),me=require("@spark-ui/components/form-field"),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("class-variance-authority"),H=require("../Icon-C-cNTnzd.js"),be=require("../progress/index.js"),se=require("@spark-ui/icons/Close"),ae=require("../IconButton-BR1bJSQA.js"),he=require("@spark-ui/icons/WarningOutline"),ne=require("../Button-FZceRWG2.js"),ye=require("../Slot-DQ8z2zsy.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 Ie(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??[],I=g,[b,x]=f.useState([]),U=O=>{if(p||v)return;x([]);const D=[],k=(R,L)=>L.some(y=>y.name===R.name&&y.size===R.size),h=(R,L)=>{const y=D.find(A=>A.file.name===R.name&&A.file.size===R.size);y?y.errors.includes(L)||y.errors.push(L):D.push({file:R,errors:[L]})};I(R=>{const L=R??[],y=a!==void 0?a-L.length:void 0;y!==void 0&&y<=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=>Ie(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);y!==void 0&&(y<=0?C=[]:C.length>y&&(C.forEach(F=>{h(F,T.TOO_MANY_FILES)}),C=[]));const re=d?[...L,...C]:C,V=[...D];return x(V),C.length>0&&n&&n({files:C}),V.length>0&&e&&e({files:V}),l&&l({acceptedFiles:re,rejectedFiles:V}),re})},z=O=>{p||v||I(D=>{const h=(D??[]).filter((L,y)=>y!==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||(I([]),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(),I=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:y,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=()=>{y(),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:I,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 I=a.current.filter(Boolean);if(I.length>0){const b=Math.min(m,I.length-1),x=I[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(H.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(H.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 I=a.current.filter(Boolean);if(I.length>0){const b=Math.min(m,I.length-1),x=I[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(H.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(H.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="support",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(),I=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(I){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?ye.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
2
  //# sourceMappingURL=index.js.map