@spark-ui/components 17.2.3 → 17.2.4-beta.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 (302) hide show
  1. package/dist/DialogContent.styles-BSxCCi-u.mjs +62 -0
  2. package/dist/DialogContent.styles-BSxCCi-u.mjs.map +1 -0
  3. package/dist/DialogContent.styles-CAhJtUud.js +2 -0
  4. package/dist/DialogContent.styles-CAhJtUud.js.map +1 -0
  5. package/dist/FormFieldRequiredIndicator-CtgkvPZo.js +2 -0
  6. package/dist/FormFieldRequiredIndicator-CtgkvPZo.js.map +1 -0
  7. package/dist/FormFieldRequiredIndicator-DOGQ_HxO.mjs +14 -0
  8. package/dist/FormFieldRequiredIndicator-DOGQ_HxO.mjs.map +1 -0
  9. package/dist/accordion/index.js +2 -2
  10. package/dist/accordion/index.js.map +1 -1
  11. package/dist/accordion/index.mjs +99 -161
  12. package/dist/accordion/index.mjs.map +1 -1
  13. package/dist/alert-dialog/index.js +2 -2
  14. package/dist/alert-dialog/index.js.map +1 -1
  15. package/dist/alert-dialog/index.mjs +169 -235
  16. package/dist/alert-dialog/index.mjs.map +1 -1
  17. package/dist/avatar/index.js +2 -2
  18. package/dist/avatar/index.js.map +1 -1
  19. package/dist/avatar/index.mjs +187 -224
  20. package/dist/avatar/index.mjs.map +1 -1
  21. package/dist/badge/index.js +2 -2
  22. package/dist/badge/index.js.map +1 -1
  23. package/dist/badge/index.mjs +115 -81
  24. package/dist/badge/index.mjs.map +1 -1
  25. package/dist/breadcrumb/index.js +2 -2
  26. package/dist/breadcrumb/index.js.map +1 -1
  27. package/dist/breadcrumb/index.mjs +73 -106
  28. package/dist/breadcrumb/index.mjs.map +1 -1
  29. package/dist/button/index.js +1 -2
  30. package/dist/button/index.mjs +2 -5
  31. package/dist/button-BTDRzvpB.js +2 -0
  32. package/dist/button-BTDRzvpB.js.map +1 -0
  33. package/dist/button-_YZ_4J42.mjs +643 -0
  34. package/dist/button-_YZ_4J42.mjs.map +1 -0
  35. package/dist/card/index.js +2 -2
  36. package/dist/card/index.js.map +1 -1
  37. package/dist/card/index.mjs +327 -394
  38. package/dist/card/index.mjs.map +1 -1
  39. package/dist/carousel/index.js +2 -2
  40. package/dist/carousel/index.js.map +1 -1
  41. package/dist/carousel/index.mjs +515 -618
  42. package/dist/carousel/index.mjs.map +1 -1
  43. package/dist/checkbox/index.js +2 -2
  44. package/dist/checkbox/index.js.map +1 -1
  45. package/dist/checkbox/index.mjs +213 -246
  46. package/dist/checkbox/index.mjs.map +1 -1
  47. package/dist/chip/index.js +2 -2
  48. package/dist/chip/index.js.map +1 -1
  49. package/dist/chip/index.mjs +601 -652
  50. package/dist/chip/index.mjs.map +1 -1
  51. package/dist/chunk-C91j1N6u.js +1 -0
  52. package/dist/circular-meter/index.js +2 -2
  53. package/dist/circular-meter/index.js.map +1 -1
  54. package/dist/circular-meter/index.mjs +354 -309
  55. package/dist/circular-meter/index.mjs.map +1 -1
  56. package/dist/collapsible/index.js +2 -2
  57. package/dist/collapsible/index.js.map +1 -1
  58. package/dist/collapsible/index.mjs +53 -53
  59. package/dist/collapsible/index.mjs.map +1 -1
  60. package/dist/combobox/index.js +2 -2
  61. package/dist/combobox/index.js.map +1 -1
  62. package/dist/combobox/index.mjs +721 -876
  63. package/dist/combobox/index.mjs.map +1 -1
  64. package/dist/dialog/index.js +2 -2
  65. package/dist/dialog/index.js.map +1 -1
  66. package/dist/dialog/index.mjs +181 -206
  67. package/dist/dialog/index.mjs.map +1 -1
  68. package/dist/divider/index.js +2 -2
  69. package/dist/divider/index.js.map +1 -1
  70. package/dist/divider/index.mjs +178 -183
  71. package/dist/divider/index.mjs.map +1 -1
  72. package/dist/drawer/index.js +2 -2
  73. package/dist/drawer/index.js.map +1 -1
  74. package/dist/drawer/index.mjs +277 -309
  75. package/dist/drawer/index.mjs.map +1 -1
  76. package/dist/dropdown/index.js +2 -2
  77. package/dist/dropdown/index.js.map +1 -1
  78. package/dist/dropdown/index.mjs +429 -492
  79. package/dist/dropdown/index.mjs.map +1 -1
  80. package/dist/file-upload/index.js +2 -2
  81. package/dist/file-upload/index.js.map +1 -1
  82. package/dist/file-upload/index.mjs +540 -677
  83. package/dist/file-upload/index.mjs.map +1 -1
  84. package/dist/form-field/index.js +1 -2
  85. package/dist/form-field/index.mjs +2 -284
  86. package/dist/form-field-B8QzM655.mjs +231 -0
  87. package/dist/form-field-B8QzM655.mjs.map +1 -0
  88. package/dist/form-field-Bu_0E9tb.js +2 -0
  89. package/dist/form-field-Bu_0E9tb.js.map +1 -0
  90. package/dist/icon/index.js +1 -2
  91. package/dist/icon/index.mjs +2 -5
  92. package/dist/icon-CRPcdgYp.js +2 -0
  93. package/dist/icon-CRPcdgYp.js.map +1 -0
  94. package/dist/icon-D05Uqh8_.mjs +41 -0
  95. package/dist/icon-D05Uqh8_.mjs.map +1 -0
  96. package/dist/icon-button/index.js +1 -2
  97. package/dist/icon-button/index.mjs +2 -5
  98. package/dist/icon-button-6p3O7NIm.mjs +28 -0
  99. package/dist/icon-button-6p3O7NIm.mjs.map +1 -0
  100. package/dist/icon-button-CykysbgJ.js +2 -0
  101. package/dist/icon-button-CykysbgJ.js.map +1 -0
  102. package/dist/input/index.js +1 -2
  103. package/dist/input/index.mjs +2 -455
  104. package/dist/input-CmYeHYWQ.mjs +355 -0
  105. package/dist/input-CmYeHYWQ.mjs.map +1 -0
  106. package/dist/input-DNr40G2Z.js +2 -0
  107. package/dist/input-DNr40G2Z.js.map +1 -0
  108. package/dist/input-otp/index.js +2 -2
  109. package/dist/input-otp/index.js.map +1 -1
  110. package/dist/input-otp/index.mjs +344 -407
  111. package/dist/input-otp/index.mjs.map +1 -1
  112. package/dist/kbd/index.js +2 -2
  113. package/dist/kbd/index.js.map +1 -1
  114. package/dist/kbd/index.mjs +12 -17
  115. package/dist/kbd/index.mjs.map +1 -1
  116. package/dist/label/index.js +1 -2
  117. package/dist/label/index.mjs +2 -40
  118. package/dist/label-BqRlrca0.mjs +31 -0
  119. package/dist/label-BqRlrca0.mjs.map +1 -0
  120. package/dist/label-DU0p0d-f.js +2 -0
  121. package/dist/label-DU0p0d-f.js.map +1 -0
  122. package/dist/link-box/index.js +2 -2
  123. package/dist/link-box/index.js.map +1 -1
  124. package/dist/link-box/index.mjs +36 -34
  125. package/dist/link-box/index.mjs.map +1 -1
  126. package/dist/meter/index.js +2 -2
  127. package/dist/meter/index.js.map +1 -1
  128. package/dist/meter/index.mjs +149 -171
  129. package/dist/meter/index.mjs.map +1 -1
  130. package/dist/pagination/index.js +2 -2
  131. package/dist/pagination/index.js.map +1 -1
  132. package/dist/pagination/index.mjs +253 -214
  133. package/dist/pagination/index.mjs.map +1 -1
  134. package/dist/popover/index.js +1 -2
  135. package/dist/popover/index.mjs +2 -239
  136. package/dist/popover-CxZAQmw6.mjs +211 -0
  137. package/dist/popover-CxZAQmw6.mjs.map +1 -0
  138. package/dist/popover-GOovJ27J.js +2 -0
  139. package/dist/popover-GOovJ27J.js.map +1 -0
  140. package/dist/portal/index.js +2 -2
  141. package/dist/portal/index.js.map +1 -1
  142. package/dist/portal/index.mjs +8 -7
  143. package/dist/portal/index.mjs.map +1 -1
  144. package/dist/progress/index.js +1 -2
  145. package/dist/progress/index.mjs +2 -178
  146. package/dist/progress-cEf3tFbn.mjs +132 -0
  147. package/dist/progress-cEf3tFbn.mjs.map +1 -0
  148. package/dist/progress-rJZcPJsZ.js +2 -0
  149. package/dist/progress-rJZcPJsZ.js.map +1 -0
  150. package/dist/progress-tracker/index.js +2 -2
  151. package/dist/progress-tracker/index.js.map +1 -1
  152. package/dist/progress-tracker/index.mjs +303 -380
  153. package/dist/progress-tracker/index.mjs.map +1 -1
  154. package/dist/radio-group/index.js +2 -2
  155. package/dist/radio-group/index.js.map +1 -1
  156. package/dist/radio-group/index.mjs +204 -213
  157. package/dist/radio-group/index.mjs.map +1 -1
  158. package/dist/rating/index.js +2 -2
  159. package/dist/rating/index.js.map +1 -1
  160. package/dist/rating/index.mjs +189 -244
  161. package/dist/rating/index.mjs.map +1 -1
  162. package/dist/rating-display/index.js +2 -2
  163. package/dist/rating-display/index.js.map +1 -1
  164. package/dist/rating-display/index.mjs +165 -166
  165. package/dist/rating-display/index.mjs.map +1 -1
  166. package/dist/scrolling-list/index.js +2 -2
  167. package/dist/scrolling-list/index.js.map +1 -1
  168. package/dist/scrolling-list/index.mjs +216 -273
  169. package/dist/scrolling-list/index.mjs.map +1 -1
  170. package/dist/segmented-control/index.js +2 -2
  171. package/dist/segmented-control/index.js.map +1 -1
  172. package/dist/segmented-control/index.mjs +146 -180
  173. package/dist/segmented-control/index.mjs.map +1 -1
  174. package/dist/segmented-gauge/index.js +2 -2
  175. package/dist/segmented-gauge/index.js.map +1 -1
  176. package/dist/segmented-gauge/index.mjs +146 -195
  177. package/dist/segmented-gauge/index.mjs.map +1 -1
  178. package/dist/select/index.js +2 -2
  179. package/dist/select/index.js.map +1 -1
  180. package/dist/select/index.mjs +279 -327
  181. package/dist/select/index.mjs.map +1 -1
  182. package/dist/skeleton/index.js +2 -2
  183. package/dist/skeleton/index.js.map +1 -1
  184. package/dist/skeleton/index.mjs +92 -114
  185. package/dist/skeleton/index.mjs.map +1 -1
  186. package/dist/slider/index.js +2 -2
  187. package/dist/slider/index.js.map +1 -1
  188. package/dist/slider/index.mjs +259 -326
  189. package/dist/slider/index.mjs.map +1 -1
  190. package/dist/slot/index.js +2 -2
  191. package/dist/slot/index.js.map +1 -1
  192. package/dist/slot/index.mjs +12 -7
  193. package/dist/slot/index.mjs.map +1 -1
  194. package/dist/snackbar/index.js +2 -2
  195. package/dist/snackbar/index.js.map +1 -1
  196. package/dist/snackbar/index.mjs +404 -529
  197. package/dist/snackbar/index.mjs.map +1 -1
  198. package/dist/spinner/index.js +1 -2
  199. package/dist/spinner/index.mjs +2 -5
  200. package/dist/spinner-DFUoYvmm.js +2 -0
  201. package/dist/spinner-DFUoYvmm.js.map +1 -0
  202. package/dist/spinner-DULLiM6a.mjs +56 -0
  203. package/dist/spinner-DULLiM6a.mjs.map +1 -0
  204. package/dist/src/avatar/index.d.mts +2 -2
  205. package/dist/src/avatar/index.d.ts +2 -2
  206. package/dist/src/file-upload/index.d.mts +1 -1
  207. package/dist/src/file-upload/index.d.ts +1 -1
  208. package/dist/stepper/index.js +2 -2
  209. package/dist/stepper/index.js.map +1 -1
  210. package/dist/stepper/index.mjs +139 -176
  211. package/dist/stepper/index.mjs.map +1 -1
  212. package/dist/switch/index.js +2 -2
  213. package/dist/switch/index.js.map +1 -1
  214. package/dist/switch/index.mjs +194 -197
  215. package/dist/switch/index.mjs.map +1 -1
  216. package/dist/tabs/index.js +2 -2
  217. package/dist/tabs/index.js.map +1 -1
  218. package/dist/tabs/index.mjs +337 -389
  219. package/dist/tabs/index.mjs.map +1 -1
  220. package/dist/tag/index.js +2 -2
  221. package/dist/tag/index.js.map +1 -1
  222. package/dist/tag/index.mjs +192 -211
  223. package/dist/tag/index.mjs.map +1 -1
  224. package/dist/text-link/index.js +2 -2
  225. package/dist/text-link/index.js.map +1 -1
  226. package/dist/text-link/index.mjs +44 -5
  227. package/dist/text-link/index.mjs.map +1 -1
  228. package/dist/textarea/index.js +2 -2
  229. package/dist/textarea/index.js.map +1 -1
  230. package/dist/textarea/index.mjs +51 -50
  231. package/dist/textarea/index.mjs.map +1 -1
  232. package/dist/toast/index.js +2 -2
  233. package/dist/toast/index.js.map +1 -1
  234. package/dist/toast/index.mjs +314 -367
  235. package/dist/toast/index.mjs.map +1 -1
  236. package/dist/useRenderSlot-DP4fYerF.mjs +11 -0
  237. package/dist/useRenderSlot-DP4fYerF.mjs.map +1 -0
  238. package/dist/useRenderSlot-Xxf_s88b.js +2 -0
  239. package/dist/useRenderSlot-Xxf_s88b.js.map +1 -0
  240. package/dist/visually-hidden/index.js +2 -2
  241. package/dist/visually-hidden/index.js.map +1 -1
  242. package/dist/visually-hidden/index.mjs +25 -5
  243. package/dist/visually-hidden/index.mjs.map +1 -1
  244. package/package.json +4 -4
  245. package/dist/Button-1M9DcZl0.mjs +0 -704
  246. package/dist/Button-1M9DcZl0.mjs.map +0 -1
  247. package/dist/Button-FZceRWG2.js +0 -2
  248. package/dist/Button-FZceRWG2.js.map +0 -1
  249. package/dist/DialogContent.styles-CziMQtYr.js +0 -2
  250. package/dist/DialogContent.styles-CziMQtYr.js.map +0 -1
  251. package/dist/DialogContent.styles-Du7_Dkde.mjs +0 -60
  252. package/dist/DialogContent.styles-Du7_Dkde.mjs.map +0 -1
  253. package/dist/FormFieldRequiredIndicator-CHfcoT2y.js +0 -2
  254. package/dist/FormFieldRequiredIndicator-CHfcoT2y.js.map +0 -1
  255. package/dist/FormFieldRequiredIndicator-DTnCGiX2.mjs +0 -13
  256. package/dist/FormFieldRequiredIndicator-DTnCGiX2.mjs.map +0 -1
  257. package/dist/Icon-BO327oHU.mjs +0 -57
  258. package/dist/Icon-BO327oHU.mjs.map +0 -1
  259. package/dist/Icon-C-cNTnzd.js +0 -2
  260. package/dist/Icon-C-cNTnzd.js.map +0 -1
  261. package/dist/IconButton-BR1bJSQA.js +0 -2
  262. package/dist/IconButton-BR1bJSQA.js.map +0 -1
  263. package/dist/IconButton-DdB3Pq13.mjs +0 -43
  264. package/dist/IconButton-DdB3Pq13.mjs.map +0 -1
  265. package/dist/Slot-DLY1rJrG.mjs +0 -14
  266. package/dist/Slot-DLY1rJrG.mjs.map +0 -1
  267. package/dist/Slot-DQ8z2zsy.js +0 -2
  268. package/dist/Slot-DQ8z2zsy.js.map +0 -1
  269. package/dist/Spinner-Br4Rp9V2.js +0 -2
  270. package/dist/Spinner-Br4Rp9V2.js.map +0 -1
  271. package/dist/Spinner-Co3AjkQV.mjs +0 -68
  272. package/dist/Spinner-Co3AjkQV.mjs.map +0 -1
  273. package/dist/TextLink-5MvP0P8D.js +0 -2
  274. package/dist/TextLink-5MvP0P8D.js.map +0 -1
  275. package/dist/TextLink-Cc_LeVcx.mjs +0 -57
  276. package/dist/TextLink-Cc_LeVcx.mjs.map +0 -1
  277. package/dist/VisuallyHidden-CB6Nx76j.js +0 -2
  278. package/dist/VisuallyHidden-CB6Nx76j.js.map +0 -1
  279. package/dist/VisuallyHidden-DjlV0-CW.mjs +0 -28
  280. package/dist/VisuallyHidden-DjlV0-CW.mjs.map +0 -1
  281. package/dist/button/index.js.map +0 -1
  282. package/dist/button/index.mjs.map +0 -1
  283. package/dist/form-field/index.js.map +0 -1
  284. package/dist/form-field/index.mjs.map +0 -1
  285. package/dist/icon/index.js.map +0 -1
  286. package/dist/icon/index.mjs.map +0 -1
  287. package/dist/icon-button/index.js.map +0 -1
  288. package/dist/icon-button/index.mjs.map +0 -1
  289. package/dist/input/index.js.map +0 -1
  290. package/dist/input/index.mjs.map +0 -1
  291. package/dist/label/index.js.map +0 -1
  292. package/dist/label/index.mjs.map +0 -1
  293. package/dist/popover/index.js.map +0 -1
  294. package/dist/popover/index.mjs.map +0 -1
  295. package/dist/progress/index.js.map +0 -1
  296. package/dist/progress/index.mjs.map +0 -1
  297. package/dist/spinner/index.js.map +0 -1
  298. package/dist/spinner/index.mjs.map +0 -1
  299. package/dist/useRenderSlot-Bta2kdp4.mjs +0 -10
  300. package/dist/useRenderSlot-Bta2kdp4.mjs.map +0 -1
  301. package/dist/useRenderSlot-DATwjgpo.js +0 -2
  302. package/dist/useRenderSlot-DATwjgpo.js.map +0 -1
@@ -1,889 +1,734 @@
1
- import { jsx as a, jsxs as _, Fragment as te } from "react/jsx-runtime";
2
- import { useFormFieldControl as oe } from "@spark-ui/components/form-field";
3
- import { useCombinedState as Le } from "@spark-ui/hooks/use-combined-state";
4
- import { useCombobox as g, useMultipleSelection as Ee } from "downshift";
5
- import { Children as B, isValidElement as z, createContext as ne, useRef as A, useState as T, useEffect as P, useId as q, Fragment as se, useContext as re, useLayoutEffect as ct } from "react";
6
- import { Popover as K } from "../popover/index.mjs";
7
- import { DeleteOutline as Ae } from "@spark-ui/icons/DeleteOutline";
8
- import { cx as f, cva as Me } from "class-variance-authority";
9
- import { I as $ } from "../Icon-BO327oHU.mjs";
10
- import { useMergeRefs as W } from "@spark-ui/hooks/use-merge-refs";
11
- import { ArrowHorizontalDown as dt } from "@spark-ui/icons/ArrowHorizontalDown";
12
- import { I as ut } from "../IconButton-DdB3Pq13.mjs";
13
- import { V as mt } from "../VisuallyHidden-DjlV0-CW.mjs";
14
- import { Check as pt } from "@spark-ui/icons/Check";
15
- import { S as bt } from "../Spinner-Co3AjkQV.mjs";
16
- function Fe(e, o) {
17
- let t = 0;
18
- for (const [n] of e.entries()) {
19
- if (n === o)
20
- return t;
21
- t++;
22
- }
23
- return -1;
1
+ import { VisuallyHidden as e } from "../visually-hidden/index.mjs";
2
+ import { t } from "../icon-D05Uqh8_.mjs";
3
+ import { t as n } from "../spinner-DULLiM6a.mjs";
4
+ import { t as r } from "../icon-button-6p3O7NIm.mjs";
5
+ import { t as i } from "../popover-CxZAQmw6.mjs";
6
+ import { cva as a, cx as o } from "class-variance-authority";
7
+ import { Children as s, Fragment as c, createContext as l, isValidElement as u, useContext as d, useEffect as f, useId as p, useLayoutEffect as m, useRef as h, useState as g } from "react";
8
+ import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
9
+ import { ArrowHorizontalDown as b } from "@spark-ui/icons/ArrowHorizontalDown";
10
+ import { useMergeRefs as x } from "@spark-ui/hooks/use-merge-refs";
11
+ import { useFormFieldControl as ee } from "@spark-ui/components/form-field";
12
+ import { Check as S } from "@spark-ui/icons/Check";
13
+ import { useCombinedState as C } from "@spark-ui/hooks/use-combined-state";
14
+ import { useCombobox as w, useMultipleSelection as T } from "downshift";
15
+ import { DeleteOutline as E } from "@spark-ui/icons/DeleteOutline";
16
+ //#region src/combobox/utils/index.ts
17
+ function D(e, t) {
18
+ let n = 0;
19
+ for (let [r] of e.entries()) {
20
+ if (r === t) return n;
21
+ n++;
22
+ }
23
+ return -1;
24
24
  }
25
- const ft = (e, o) => {
26
- let t = 0;
27
- for (const n of e.keys()) {
28
- if (t === o) return n;
29
- t++;
30
- }
31
- }, It = (e, o) => {
32
- const t = ft(e, o);
33
- return t !== void 0 ? e.get(t) : void 0;
34
- }, J = (e) => e ? e.type.displayName : "", Be = (e, o = []) => (B.forEach(e, (t) => {
35
- if (z(t)) {
36
- if (J(t) === "Combobox.Item") {
37
- const n = t.props;
38
- o.push({
39
- value: n.value,
40
- disabled: !!n.disabled,
41
- text: Ke(n.children)
42
- });
43
- }
44
- t.props.children && Be(t.props.children, o);
45
- }
46
- }), o), ze = (e) => {
47
- if (!e) return "";
48
- for (const o of B.toArray(e))
49
- if (z(o)) {
50
- const t = o;
51
- if (J(t) === "Combobox.ItemText")
52
- return t.props.children;
53
- const n = ze(t.props.children);
54
- if (n) return n;
55
- }
56
- return "";
57
- }, Ke = (e) => typeof e == "string" ? e : ze(e), Re = (e) => {
58
- const o = /* @__PURE__ */ new Map();
59
- return Be(e).forEach((t) => {
60
- o.set(t.value, t);
61
- }), o;
62
- }, $e = (e, o) => B.toArray(e).some((t) => z(t) ? J(t) === o ? !0 : t.props.children ? $e(t.props.children, o) : !1 : !1), F = (e, o) => B.toArray(e).filter(z).find((t) => o === J(t) || ""), xt = ({
63
- multiselect: e,
64
- selectedItems: o,
65
- allowCustomValue: t = !1,
66
- setSelectedItems: n,
67
- triggerAreaRef: l,
68
- items: r
69
- }) => (i, { changes: s, type: m }) => {
70
- const u = l.current?.contains?.(document.activeElement);
71
- switch (m) {
72
- case g.stateChangeTypes.InputClick:
73
- return {
74
- ...s,
75
- isOpen: !0
76
- // keep menu opened
77
- };
78
- case g.stateChangeTypes.InputKeyDownEnter:
79
- case g.stateChangeTypes.ItemClick: {
80
- const b = { ...s };
81
- if (s.selectedItem != null) {
82
- b.inputValue = "", b.isOpen = !0;
83
- const O = Fe(r, s.selectedItem.value);
84
- b.highlightedIndex = O;
85
- const k = e.selectedItems.some(
86
- (x) => x.value === s.selectedItem?.value
87
- ) ? o.filter((x) => x.value !== s.selectedItem?.value) : [...o, s.selectedItem];
88
- n(k);
89
- }
90
- return b;
91
- }
92
- case g.stateChangeTypes.ToggleButtonClick:
93
- return {
94
- ...s,
95
- inputValue: t ? s.inputValue : ""
96
- };
97
- case g.stateChangeTypes.InputChange:
98
- return {
99
- ...s,
100
- selectedItem: s.highlightedIndex === -1 ? null : s.selectedItem
101
- };
102
- case g.stateChangeTypes.InputBlur:
103
- return {
104
- ...s,
105
- inputValue: t ? s.inputValue : "",
106
- isOpen: u
107
- };
108
- default:
109
- return s;
110
- }
111
- }, yt = ({
112
- filteredItems: e,
113
- allowCustomValue: o = !1,
114
- setSelectedItem: t
115
- }) => (l, { changes: r, type: c }) => {
116
- const i = e.find(
117
- (s) => s.text.toLowerCase() === l.inputValue.toLowerCase()
118
- );
119
- switch (c) {
120
- case g.stateChangeTypes.InputKeyDownEscape:
121
- return r.selectedItem || t(null), r;
122
- case g.stateChangeTypes.ItemClick:
123
- case g.stateChangeTypes.InputKeyDownEnter:
124
- return r.selectedItem && t(r.selectedItem), r;
125
- case g.stateChangeTypes.InputClick:
126
- return { ...r, isOpen: !0 };
127
- case g.stateChangeTypes.ToggleButtonClick:
128
- case g.stateChangeTypes.InputBlur:
129
- return o ? r : l.inputValue === "" ? (t(null), { ...r, selectedItem: null }) : i ? (t(i), { ...r, selectedItem: i, inputValue: i.text }) : l.selectedItem ? { ...r, inputValue: l.selectedItem.text } : { ...r, inputValue: "" };
130
- default:
131
- return r;
132
- }
133
- }, We = ne(null), ee = (e, o) => o ? new Map(
134
- Array.from(e).filter(([t, { text: n }]) => n.toLowerCase().includes(o.toLowerCase()))
135
- ) : e, U = ":combobox", Ct = ({
136
- children: e,
137
- state: o,
138
- allowCustomValue: t = !1,
139
- filtering: n = "auto",
140
- disabled: l = !1,
141
- multiple: r = !1,
142
- readOnly: c = !1,
143
- wrap: i = !0,
144
- // Value
145
- value: s,
146
- defaultValue: m,
147
- onValueChange: u,
148
- // Open
149
- open: b,
150
- defaultOpen: O,
151
- onOpenChange: I,
152
- isLoading: k
153
- }) => {
154
- const x = A(!1), [w, N] = T(""), [E, h] = T(n === "strict"), R = A(null), V = A(null), [X, G] = T(null), [D] = Le(s, m), Q = n === "strict" || n === "auto" && E, [C, qe] = T(Re(e)), [H, ve] = T(
155
- Q ? ee(C, w) : C
156
- ), [we, Ne] = T(
157
- C.get(D) || null
158
- ), [Te, Pe] = T(
159
- D ? [...C.values()].filter((d) => D.includes(d.value)) : []
160
- ), Se = (d) => {
161
- h(!1), d?.value !== we?.value && (Ne(d), setTimeout(() => {
162
- u?.(d?.value);
163
- }, 0));
164
- }, Y = (d) => {
165
- Pe(d), setTimeout(() => {
166
- u?.(d.map((y) => y.value));
167
- }, 0);
168
- };
169
- P(() => {
170
- if (!x.current) {
171
- x.current = !0;
172
- return;
173
- }
174
- if (r) {
175
- const d = D.reduce(
176
- (y, p) => {
177
- const S = C.get(p);
178
- return S ? [...y, S] : y;
179
- },
180
- []
181
- );
182
- Pe(D ? d : []);
183
- } else
184
- Ne(C.get(D) || null);
185
- }, [r ? JSON.stringify(D) : D]);
186
- const M = oe(), Ue = `${U}-label-${q()}`, Je = `${U}-field-${q()}`, Oe = M.id || Je, Xe = M.labelId || Ue, Qe = M.state || o, Ye = M.disabled ?? l, Ze = M.readOnly ?? c, [ke, et] = T(
187
- $e(e, "Combobox.Popover")
188
- ), [tt, ot] = T(!1), [nt, st] = T("mouse");
189
- P(() => {
190
- ve(Q ? ee(C, w) : C);
191
- }, [w, C]);
192
- const Ve = Ee({
193
- selectedItems: Te,
194
- stateReducer: (d, { type: y, changes: p }) => {
195
- const S = Ee.stateChangeTypes;
196
- switch (y) {
197
- case S.SelectedItemKeyDownBackspace:
198
- case S.SelectedItemKeyDownDelete: {
199
- Y(p.selectedItems || []);
200
- let L;
201
- return y === S.SelectedItemKeyDownDelete ? L = d?.activeIndex === p.selectedItems?.length ? -1 : d.activeIndex : L = (p?.activeIndex || 0) - 1 >= 0 ? d.activeIndex - 1 : p?.activeIndex, {
202
- ...p,
203
- activeIndex: L
204
- };
205
- }
206
- case S.SelectedItemClick:
207
- return V.current && V.current.focus(), {
208
- ...p,
209
- activeIndex: -1
210
- // the focus will remain on the input
211
- };
212
- case S.FunctionRemoveSelectedItem:
213
- return {
214
- ...p,
215
- activeIndex: -1
216
- // the focus will remain on the input
217
- };
218
- case S.DropdownKeyDownNavigationPrevious:
219
- return Z.closeMenu(), p;
220
- default:
221
- return p;
222
- }
223
- }
224
- }), De = Array.from(H.values());
225
- P(() => {
226
- X?.(w || "");
227
- }, [w]);
228
- const Z = g({
229
- inputId: Oe,
230
- items: De,
231
- selectedItem: r ? void 0 : we,
232
- id: Oe,
233
- labelId: Xe,
234
- // Input
235
- inputValue: w,
236
- onInputValueChange: ({ inputValue: d }) => {
237
- if (N(d), Q) {
238
- const y = ee(C, d || "");
239
- ve(y);
240
- }
241
- },
242
- // Open
243
- initialIsOpen: O,
244
- ...b != null && { isOpen: b },
245
- onIsOpenChange: (d) => {
246
- d.isOpen != null && I?.(d.isOpen);
247
- },
248
- // Custom Spark item object parsing
249
- itemToString: (d) => d?.text,
250
- isItemDisabled: (d) => {
251
- const y = !!w && !De.some((p) => d.value === p.value);
252
- return d.disabled || y;
253
- },
254
- // Main reducer
255
- stateReducer: r ? xt({
256
- multiselect: Ve,
257
- selectedItems: Te,
258
- allowCustomValue: t,
259
- setSelectedItems: Y,
260
- triggerAreaRef: R,
261
- items: C
262
- }) : yt({
263
- allowCustomValue: t,
264
- setSelectedItem: Se,
265
- filteredItems: [...H.values()]
266
- }),
267
- /**
268
- * Downshift default behaviour is to scroll into view the highlighted item when the dropdown opens. This behaviour is not stable and scrolls the dropdown to the bottom of the screen.
269
- */
270
- scrollIntoView: (d) => {
271
- d && d.scrollIntoView({ block: "nearest" });
272
- }
273
- });
274
- P(() => {
275
- const d = Re(e), y = [...C.values()], p = [...d.values()];
276
- (y.length !== p.length || y.some((L, j) => {
277
- const at = L.value !== p[j]?.value, it = L.text !== p[j]?.text;
278
- return at || it;
279
- })) && qe(d);
280
- }, [e]);
281
- const [rt, lt] = ke ? [K, { open: !0 }] : [se, {}];
282
- return /* @__PURE__ */ a(
283
- We.Provider,
284
- {
285
- value: {
286
- // Data
287
- itemsMap: C,
288
- filteredItemsMap: H,
289
- highlightedItem: It(H, Z.highlightedIndex),
290
- // State
291
- multiple: r,
292
- disabled: Ye,
293
- readOnly: Ze,
294
- areSelectedItemsInTrigger: tt,
295
- setAreSelectedItemsInTrigger: ot,
296
- hasPopover: ke,
297
- setHasPopover: et,
298
- state: Qe,
299
- lastInteractionType: nt,
300
- setLastInteractionType: st,
301
- wrap: i,
302
- // Refs
303
- innerInputRef: V,
304
- triggerAreaRef: R,
305
- // Downshift state
306
- ...Z,
307
- ...Ve,
308
- setInputValue: N,
309
- selectItem: Se,
310
- setSelectedItems: Y,
311
- isLoading: k,
312
- setOnInputValueChange: G,
313
- isTyping: E,
314
- setIsTyping: h
315
- },
316
- children: /* @__PURE__ */ a(rt, { ...lt, children: e })
317
- }
318
- );
319
- }, v = () => {
320
- const e = re(We);
321
- if (!e)
322
- throw Error("useComboboxContext must be used within a Combobox provider");
323
- return e;
324
- }, Ge = ({ children: e, ...o }) => /* @__PURE__ */ a(Ct, { ...o, children: e });
325
- Ge.displayName = "Combobox";
326
- const le = ({
327
- className: e,
328
- tabIndex: o = -1,
329
- onClick: t,
330
- ref: n,
331
- ...l
332
- }) => {
333
- const r = v(), c = (i) => {
334
- i.stopPropagation(), r.multiple ? r.setSelectedItems([]) : r.selectItem(null), r.setInputValue(""), r.innerInputRef.current && r.innerInputRef.current.focus(), t && t(i);
335
- };
336
- return /* @__PURE__ */ a(
337
- "button",
338
- {
339
- ref: n,
340
- className: f(e, "h-sz-44 text-neutral hover:text-neutral-hovered"),
341
- tabIndex: o,
342
- onClick: c,
343
- type: "button",
344
- ...l,
345
- children: /* @__PURE__ */ a($, { size: "sm", children: /* @__PURE__ */ a(Ae, {}) })
346
- }
347
- );
348
- };
349
- le.displayName = "Combobox.ClearButton";
350
- const ae = ({
351
- className: e,
352
- closedLabel: o,
353
- openedLabel: t,
354
- intent: n = "neutral",
355
- design: l = "ghost",
356
- size: r = "sm",
357
- ref: c,
358
- ...i
359
- }) => {
360
- const s = v(), { ref: m, ...u } = s.getToggleButtonProps({
361
- disabled: s.disabled || s.readOnly,
362
- onClick: (I) => {
363
- I.stopPropagation();
364
- }
365
- }), b = u["aria-expanded"], O = W(c, m);
366
- return /* @__PURE__ */ a(
367
- ut,
368
- {
369
- ref: O,
370
- className: f(e, "ml-sm mt-[calc((44px-32px)/2)]"),
371
- intent: n,
372
- design: l,
373
- size: r,
374
- ...u,
375
- ...i,
376
- "aria-label": b ? t : o,
377
- disabled: s.disabled,
378
- children: /* @__PURE__ */ a(
379
- $,
380
- {
381
- className: f("shrink-0", "rotate-0 transition duration-100 ease-in", {
382
- "rotate-180": b
383
- }),
384
- size: "sm",
385
- children: /* @__PURE__ */ a(dt, {})
386
- }
387
- )
388
- }
389
- );
25
+ var O = (e, t) => {
26
+ let n = 0;
27
+ for (let r of e.keys()) {
28
+ if (n === t) return r;
29
+ n++;
30
+ }
31
+ }, k = (e, t) => {
32
+ let n = O(e, t);
33
+ return n === void 0 ? void 0 : e.get(n);
34
+ }, A = (e) => e ? e.type.displayName : "", j = (e, t = []) => (s.forEach(e, (e) => {
35
+ if (u(e)) {
36
+ if (A(e) === "Combobox.Item") {
37
+ let n = e.props;
38
+ t.push({
39
+ value: n.value,
40
+ disabled: !!n.disabled,
41
+ text: te(n.children)
42
+ });
43
+ }
44
+ e.props.children && j(e.props.children, t);
45
+ }
46
+ }), t), M = (e) => {
47
+ if (!e) return "";
48
+ for (let t of s.toArray(e)) if (u(t)) {
49
+ let e = t;
50
+ if (A(e) === "Combobox.ItemText") return e.props.children;
51
+ let n = M(e.props.children);
52
+ if (n) return n;
53
+ }
54
+ return "";
55
+ }, te = (e) => typeof e == "string" ? e : M(e), ne = (e) => {
56
+ let t = /* @__PURE__ */ new Map();
57
+ return j(e).forEach((e) => {
58
+ t.set(e.value, e);
59
+ }), t;
60
+ }, re = (e, t) => s.toArray(e).some((e) => u(e) ? A(e) === t ? !0 : e.props.children ? re(e.props.children, t) : !1 : !1), N = (e, t) => s.toArray(e).filter(u).find((e) => t === A(e) || ""), ie = ({ multiselect: e, selectedItems: t, allowCustomValue: n = !1, setSelectedItems: r, triggerAreaRef: i, items: a }) => (o, { changes: s, type: c }) => {
61
+ let l = i.current?.contains?.(document.activeElement);
62
+ switch (c) {
63
+ case w.stateChangeTypes.InputClick: return {
64
+ ...s,
65
+ isOpen: !0
66
+ };
67
+ case w.stateChangeTypes.InputKeyDownEnter:
68
+ case w.stateChangeTypes.ItemClick: {
69
+ let n = { ...s };
70
+ return s.selectedItem != null && (n.inputValue = "", n.isOpen = !0, n.highlightedIndex = D(a, s.selectedItem.value), r(e.selectedItems.some((e) => e.value === s.selectedItem?.value) ? t.filter((e) => e.value !== s.selectedItem?.value) : [...t, s.selectedItem])), n;
71
+ }
72
+ case w.stateChangeTypes.ToggleButtonClick: return {
73
+ ...s,
74
+ inputValue: n ? s.inputValue : ""
75
+ };
76
+ case w.stateChangeTypes.InputChange: return {
77
+ ...s,
78
+ selectedItem: s.highlightedIndex === -1 ? null : s.selectedItem
79
+ };
80
+ case w.stateChangeTypes.InputBlur: return {
81
+ ...s,
82
+ inputValue: n ? s.inputValue : "",
83
+ isOpen: l
84
+ };
85
+ default: return s;
86
+ }
87
+ }, ae = ({ filteredItems: e, allowCustomValue: t = !1, setSelectedItem: n }) => (r, { changes: i, type: a }) => {
88
+ let o = e.find((e) => e.text.toLowerCase() === r.inputValue.toLowerCase());
89
+ switch (a) {
90
+ case w.stateChangeTypes.InputKeyDownEscape: return i.selectedItem || n(null), i;
91
+ case w.stateChangeTypes.ItemClick:
92
+ case w.stateChangeTypes.InputKeyDownEnter: return i.selectedItem && n(i.selectedItem), i;
93
+ case w.stateChangeTypes.InputClick: return {
94
+ ...i,
95
+ isOpen: !0
96
+ };
97
+ case w.stateChangeTypes.ToggleButtonClick:
98
+ case w.stateChangeTypes.InputBlur: return t ? i : r.inputValue === "" ? (n(null), {
99
+ ...i,
100
+ selectedItem: null
101
+ }) : o ? (n(o), {
102
+ ...i,
103
+ selectedItem: o,
104
+ inputValue: o.text
105
+ }) : r.selectedItem ? {
106
+ ...i,
107
+ inputValue: r.selectedItem.text
108
+ } : {
109
+ ...i,
110
+ inputValue: ""
111
+ };
112
+ default: return i;
113
+ }
114
+ }, oe = l(null), se = (e, t) => t ? new Map(Array.from(e).filter(([e, { text: n }]) => n.toLowerCase().includes(t.toLowerCase()))) : e, ce = ":combobox", P = ({ children: e, state: t, allowCustomValue: n = !1, filtering: r = "auto", disabled: a = !1, multiple: o = !1, readOnly: s = !1, wrap: l = !0, value: u, defaultValue: d, onValueChange: m, open: _, defaultOpen: y, onOpenChange: b, isLoading: x }) => {
115
+ let S = h(!1), [E, D] = g(""), [O, A] = g(r === "strict"), j = h(null), M = h(null), [te, N] = g(null), [P] = C(u, d), F = r === "strict" || r === "auto" && O, [I, L] = g(ne(e)), [R, z] = g(F ? se(I, E) : I), [B, le] = g(I.get(P) || null), [V, H] = g(P ? [...I.values()].filter((e) => P.includes(e.value)) : []), ue = (e) => {
116
+ A(!1), e?.value !== B?.value && (le(e), setTimeout(() => {
117
+ m?.(e?.value);
118
+ }, 0));
119
+ }, U = (e) => {
120
+ H(e), setTimeout(() => {
121
+ m?.(e.map((e) => e.value));
122
+ }, 0);
123
+ };
124
+ f(() => {
125
+ if (!S.current) {
126
+ S.current = !0;
127
+ return;
128
+ }
129
+ if (o) {
130
+ let e = P.reduce((e, t) => {
131
+ let n = I.get(t);
132
+ return n ? [...e, n] : e;
133
+ }, []);
134
+ H(P ? e : []);
135
+ } else le(I.get(P) || null);
136
+ }, [o ? JSON.stringify(P) : P]);
137
+ let W = ee(), de = `${ce}-label-${p()}`, G = `${ce}-field-${p()}`, K = W.id || G, fe = W.labelId || de, pe = W.state || t, q = W.disabled ?? a, J = W.readOnly ?? s, [Y, X] = g(re(e, "Combobox.Popover")), [Z, me] = g(!1), [Q, he] = g("mouse");
138
+ f(() => {
139
+ z(F ? se(I, E) : I);
140
+ }, [E, I]);
141
+ let $ = T({
142
+ selectedItems: V,
143
+ stateReducer: (e, { type: t, changes: n }) => {
144
+ let r = T.stateChangeTypes;
145
+ switch (t) {
146
+ case r.SelectedItemKeyDownBackspace:
147
+ case r.SelectedItemKeyDownDelete: {
148
+ U(n.selectedItems || []);
149
+ let i;
150
+ return i = t === r.SelectedItemKeyDownDelete ? e?.activeIndex === n.selectedItems?.length ? -1 : e.activeIndex : (n?.activeIndex || 0) - 1 >= 0 ? e.activeIndex - 1 : n?.activeIndex, {
151
+ ...n,
152
+ activeIndex: i
153
+ };
154
+ }
155
+ case r.SelectedItemClick: return M.current && M.current.focus(), {
156
+ ...n,
157
+ activeIndex: -1
158
+ };
159
+ case r.FunctionRemoveSelectedItem: return {
160
+ ...n,
161
+ activeIndex: -1
162
+ };
163
+ case r.DropdownKeyDownNavigationPrevious: return _e.closeMenu(), n;
164
+ default: return n;
165
+ }
166
+ }
167
+ }), ge = Array.from(R.values());
168
+ f(() => {
169
+ te?.(E || "");
170
+ }, [E]);
171
+ let _e = w({
172
+ inputId: K,
173
+ items: ge,
174
+ selectedItem: o ? void 0 : B,
175
+ id: K,
176
+ labelId: fe,
177
+ inputValue: E,
178
+ onInputValueChange: ({ inputValue: e }) => {
179
+ D(e), F && z(se(I, e || ""));
180
+ },
181
+ initialIsOpen: y,
182
+ ..._ != null && { isOpen: _ },
183
+ onIsOpenChange: (e) => {
184
+ e.isOpen != null && b?.(e.isOpen);
185
+ },
186
+ itemToString: (e) => e?.text,
187
+ isItemDisabled: (e) => {
188
+ let t = !!E && !ge.some((t) => e.value === t.value);
189
+ return e.disabled || t;
190
+ },
191
+ stateReducer: o ? ie({
192
+ multiselect: $,
193
+ selectedItems: V,
194
+ allowCustomValue: n,
195
+ setSelectedItems: U,
196
+ triggerAreaRef: j,
197
+ items: I
198
+ }) : ae({
199
+ allowCustomValue: n,
200
+ setSelectedItem: ue,
201
+ filteredItems: [...R.values()]
202
+ }),
203
+ scrollIntoView: (e) => {
204
+ e && e.scrollIntoView({ block: "nearest" });
205
+ }
206
+ });
207
+ f(() => {
208
+ let t = ne(e), n = [...I.values()], r = [...t.values()];
209
+ (n.length !== r.length || n.some((e, t) => {
210
+ let n = e.value !== r[t]?.value, i = e.text !== r[t]?.text;
211
+ return n || i;
212
+ })) && L(t);
213
+ }, [e]);
214
+ let [ve, ye] = Y ? [i, { open: !0 }] : [c, {}];
215
+ return /* @__PURE__ */ v(oe.Provider, {
216
+ value: {
217
+ itemsMap: I,
218
+ filteredItemsMap: R,
219
+ highlightedItem: k(R, _e.highlightedIndex),
220
+ multiple: o,
221
+ disabled: q,
222
+ readOnly: J,
223
+ areSelectedItemsInTrigger: Z,
224
+ setAreSelectedItemsInTrigger: me,
225
+ hasPopover: Y,
226
+ setHasPopover: X,
227
+ state: pe,
228
+ lastInteractionType: Q,
229
+ setLastInteractionType: he,
230
+ wrap: l,
231
+ innerInputRef: M,
232
+ triggerAreaRef: j,
233
+ ..._e,
234
+ ...$,
235
+ setInputValue: D,
236
+ selectItem: ue,
237
+ setSelectedItems: U,
238
+ isLoading: x,
239
+ setOnInputValueChange: N,
240
+ isTyping: O,
241
+ setIsTyping: A
242
+ },
243
+ children: /* @__PURE__ */ v(ve, {
244
+ ...ye,
245
+ children: e
246
+ })
247
+ });
248
+ }, F = () => {
249
+ let e = d(oe);
250
+ if (!e) throw Error("useComboboxContext must be used within a Combobox provider");
251
+ return e;
252
+ }, I = ({ children: e, ...t }) => /* @__PURE__ */ v(P, {
253
+ ...t,
254
+ children: e
255
+ });
256
+ I.displayName = "Combobox";
257
+ //#endregion
258
+ //#region src/combobox/ComboboxClearButton.tsx
259
+ var L = ({ className: e, tabIndex: n = -1, onClick: r, ref: i, ...a }) => {
260
+ let s = F();
261
+ return /* @__PURE__ */ v("button", {
262
+ ref: i,
263
+ className: o(e, "h-sz-44 text-neutral hover:text-neutral-hovered"),
264
+ tabIndex: n,
265
+ onClick: (e) => {
266
+ e.stopPropagation(), s.multiple ? s.setSelectedItems([]) : s.selectItem(null), s.setInputValue(""), s.innerInputRef.current && s.innerInputRef.current.focus(), r && r(e);
267
+ },
268
+ type: "button",
269
+ ...a,
270
+ children: /* @__PURE__ */ v(t, {
271
+ size: "sm",
272
+ children: /* @__PURE__ */ v(E, {})
273
+ })
274
+ });
390
275
  };
391
- ae.displayName = "Combobox.Disclosure";
392
- const ie = ({ className: e, children: o, ref: t }) => v().filteredItemsMap.size === 0 ? /* @__PURE__ */ a(
393
- "div",
394
- {
395
- ref: t,
396
- className: f("px-lg py-md text-body-1 text-on-surface/dim-1", e),
397
- children: o
398
- }
399
- ) : null;
400
- ie.displayName = "Combobox.Empty";
401
- const He = ne(null), gt = ({ children: e }) => {
402
- const o = `${U}-group-label-${q()}`;
403
- return /* @__PURE__ */ a(He.Provider, { value: { groupLabelId: o }, children: e });
404
- }, je = () => {
405
- const e = re(He);
406
- if (!e)
407
- throw Error("useComboboxGroupContext must be used within a ComboboxGroup provider");
408
- return e;
409
- }, ce = ({ children: e, ref: o, ...t }) => /* @__PURE__ */ a(gt, { children: /* @__PURE__ */ a(ht, { ref: o, ...t, children: e }) }), ht = ({ children: e, className: o, ref: t }) => {
410
- const n = v(), l = je();
411
- return B.toArray(e).some((c) => z(c) && n.filteredItemsMap.get(c.props.value)) ? /* @__PURE__ */ a(
412
- "div",
413
- {
414
- ref: t,
415
- role: "group",
416
- "aria-labelledby": l.groupLabelId,
417
- className: f(o),
418
- children: e
419
- }
420
- ) : null;
276
+ L.displayName = "Combobox.ClearButton";
277
+ //#endregion
278
+ //#region src/combobox/ComboboxDisclosure.tsx
279
+ var R = ({ className: e, closedLabel: n, openedLabel: i, intent: a = "neutral", design: s = "ghost", size: c = "sm", ref: l, ...u }) => {
280
+ let d = F(), { ref: f, ...p } = d.getToggleButtonProps({
281
+ disabled: d.disabled || d.readOnly,
282
+ onClick: (e) => {
283
+ e.stopPropagation();
284
+ }
285
+ }), m = p["aria-expanded"];
286
+ return /* @__PURE__ */ v(r, {
287
+ ref: x(l, f),
288
+ className: o(e, "ml-sm mt-[calc((44px-32px)/2)]"),
289
+ intent: a,
290
+ design: s,
291
+ size: c,
292
+ ...p,
293
+ ...u,
294
+ "aria-label": m ? i : n,
295
+ disabled: d.disabled,
296
+ children: /* @__PURE__ */ v(t, {
297
+ className: o("shrink-0", "rotate-0 transition duration-100 ease-in", { "rotate-180": m }),
298
+ size: "sm",
299
+ children: /* @__PURE__ */ v(b, {})
300
+ })
301
+ });
421
302
  };
422
- ce.displayName = "Combobox.Group";
423
- const de = ({
424
- "aria-label": e,
425
- className: o,
426
- placeholder: t,
427
- value: n,
428
- defaultValue: l,
429
- onValueChange: r,
430
- ref: c,
431
- ...i
432
- }) => {
433
- const s = v(), m = oe(), [u] = Le(n, l), { isInvalid: b, description: O } = m;
434
- P(() => {
435
- u != null && s.setInputValue(u);
436
- }, [u]), P(() => {
437
- r && s.setOnInputValueChange(() => r), !s.multiple && s.selectedItem && s.setInputValue(s.selectedItem.text);
438
- }, []);
439
- const I = s.hasPopover ? K.Trigger : se, k = s.hasPopover ? {
440
- asChild: !0,
441
- type: void 0
442
- } : {}, x = s.getDropdownProps(), w = W(c, s.innerInputRef, x.ref), N = s.getInputProps({
443
- disabled: s.disabled || s.readOnly,
444
- ...x,
445
- onKeyDown: (V) => {
446
- x.onKeyDown?.(V), s.setLastInteractionType("keyboard"), s.setIsTyping(!0);
447
- },
448
- /**
449
- *
450
- * Important:
451
- * - without this, the input cursor is moved to the end after every change.
452
- * @see https://github.com/downshift-js/downshift/issues/1108#issuecomment-674180157
453
- */
454
- onChange: (V) => {
455
- s.setInputValue(V.target.value);
456
- },
457
- ref: w
458
- }), E = s.multiple ? !s.areSelectedItemsInTrigger || s.selectedItems.length === 0 : s.selectedItem === null;
459
- function h(V, X) {
460
- return (G) => {
461
- V?.(G), X?.(G);
462
- };
463
- }
464
- const R = {
465
- onBlur: h(i.onBlur, N.onBlur),
466
- onChange: h(i.onChange, N.onChange),
467
- onClick: h(i.onClick, N.onClick),
468
- onKeyDown: h(i.onKeyDown, N.onKeyDown)
469
- };
470
- return /* @__PURE__ */ _(te, { children: [
471
- e && /* @__PURE__ */ a(mt, { children: /* @__PURE__ */ a("label", { ...s.getLabelProps(), children: e }) }),
472
- /* @__PURE__ */ a(I, { ...k, children: /* @__PURE__ */ a(
473
- "input",
474
- {
475
- "data-spark-component": "combobox-input",
476
- type: "text",
477
- ...E && { placeholder: t },
478
- className: f(
479
- "max-w-full shrink-0 grow basis-[80px]",
480
- "h-sz-28 bg-surface px-sm text-body-1 text-ellipsis outline-hidden",
481
- "disabled:text-on-surface/dim-3 disabled:cursor-not-allowed disabled:bg-transparent",
482
- "read-only:text-on-surface read-only:cursor-default read-only:bg-transparent",
483
- o
484
- ),
485
- ...i,
486
- ...N,
487
- ...R,
488
- value: s.inputValue,
489
- "aria-label": e,
490
- disabled: s.disabled,
491
- readOnly: s.readOnly,
492
- "aria-invalid": b,
493
- "aria-describedby": O
494
- }
495
- ) })
496
- ] });
303
+ R.displayName = "Combobox.Disclosure";
304
+ //#endregion
305
+ //#region src/combobox/ComboboxEmpty.tsx
306
+ var z = ({ className: e, children: t, ref: n }) => F().filteredItemsMap.size === 0 ? /* @__PURE__ */ v("div", {
307
+ ref: n,
308
+ className: o("px-lg py-md text-body-1 text-on-surface/dim-1", e),
309
+ children: t
310
+ }) : null;
311
+ z.displayName = "Combobox.Empty";
312
+ //#endregion
313
+ //#region src/combobox/ComboboxItemsGroupContext.tsx
314
+ var B = l(null), le = ({ children: e }) => {
315
+ let t = `${ce}-group-label-${p()}`;
316
+ return /* @__PURE__ */ v(B.Provider, {
317
+ value: { groupLabelId: t },
318
+ children: e
319
+ });
320
+ }, V = () => {
321
+ let e = d(B);
322
+ if (!e) throw Error("useComboboxGroupContext must be used within a ComboboxGroup provider");
323
+ return e;
324
+ }, H = ({ children: e, ref: t, ...n }) => /* @__PURE__ */ v(le, { children: /* @__PURE__ */ v(ue, {
325
+ ref: t,
326
+ ...n,
327
+ children: e
328
+ }) }), ue = ({ children: e, className: t, ref: n }) => {
329
+ let r = F(), i = V();
330
+ return s.toArray(e).some((e) => u(e) && r.filteredItemsMap.get(e.props.value)) ? /* @__PURE__ */ v("div", {
331
+ ref: n,
332
+ role: "group",
333
+ "aria-labelledby": i.groupLabelId,
334
+ className: o(t),
335
+ children: e
336
+ }) : null;
497
337
  };
498
- de.displayName = "Combobox.Input";
499
- const _e = ne(null), vt = ({
500
- value: e,
501
- disabled: o = !1,
502
- children: t
503
- }) => {
504
- const n = v(), [l, r] = T(void 0), c = Fe(n.filteredItemsMap, e), i = { disabled: o, value: e, text: Ke(t) }, s = n.multiple ? n.selectedItems.some((m) => m.value === e) : n.selectedItem?.value === e;
505
- return /* @__PURE__ */ a(
506
- _e.Provider,
507
- {
508
- value: { textId: l, setTextId: r, isSelected: s, itemData: i, index: c, disabled: o },
509
- children: t
510
- }
511
- );
512
- }, ue = () => {
513
- const e = re(_e);
514
- if (!e)
515
- throw Error("useComboboxItemContext must be used within a ComboboxItem provider");
516
- return e;
517
- }, me = ({ children: e, ref: o, ...t }) => {
518
- const { value: n, disabled: l } = t;
519
- return /* @__PURE__ */ a(vt, { value: n, disabled: l, children: /* @__PURE__ */ a(Nt, { ref: o, ...t, children: e }) });
520
- }, wt = Me("px-lg py-md text-body-1", {
521
- variants: {
522
- selected: {
523
- true: "font-bold"
524
- },
525
- disabled: {
526
- true: "opacity-dim-3 cursor-not-allowed",
527
- false: "cursor-pointer"
528
- },
529
- highlighted: {
530
- true: ""
531
- },
532
- interactionType: {
533
- mouse: "",
534
- keyboard: ""
535
- }
536
- },
537
- compoundVariants: [
538
- {
539
- highlighted: !0,
540
- interactionType: "mouse",
541
- class: "bg-surface-hovered"
542
- },
543
- {
544
- highlighted: !0,
545
- interactionType: "keyboard",
546
- class: "u-outline"
547
- }
548
- ]
549
- }), Nt = ({
550
- className: e,
551
- disabled: o = !1,
552
- value: t,
553
- children: n,
554
- ref: l,
555
- ...r
556
- }) => {
557
- const c = v(), i = ue(), s = !!c.filteredItemsMap.get(t), { ref: m, ...u } = c.getItemProps({
558
- item: i.itemData,
559
- index: i.index
560
- }), b = W(l, m);
561
- return s ? /* @__PURE__ */ a(
562
- "li",
563
- {
564
- ref: b,
565
- className: f(
566
- wt({
567
- selected: i.isSelected,
568
- disabled: o,
569
- highlighted: c.highlightedItem?.value === t,
570
- interactionType: c.lastInteractionType,
571
- className: e
572
- })
573
- ),
574
- ...u,
575
- ...r,
576
- "aria-selected": i.isSelected,
577
- "aria-labelledby": i.textId,
578
- children: n
579
- },
580
- t
581
- ) : null;
338
+ H.displayName = "Combobox.Group";
339
+ //#endregion
340
+ //#region src/combobox/ComboboxInput.tsx
341
+ var U = ({ "aria-label": t, className: n, placeholder: r, value: a, defaultValue: s, onValueChange: l, ref: u, ...d }) => {
342
+ let p = F(), m = ee(), [h] = C(a, s), { isInvalid: g, description: b } = m;
343
+ f(() => {
344
+ h != null && p.setInputValue(h);
345
+ }, [h]), f(() => {
346
+ l && p.setOnInputValueChange(() => l), !p.multiple && p.selectedItem && p.setInputValue(p.selectedItem.text);
347
+ }, []);
348
+ let S = p.hasPopover ? i.Trigger : c, w = p.hasPopover ? {
349
+ asChild: !0,
350
+ type: void 0
351
+ } : {}, T = p.getDropdownProps(), E = x(u, p.innerInputRef, T.ref), D = p.getInputProps({
352
+ disabled: p.disabled || p.readOnly,
353
+ ...T,
354
+ onKeyDown: (e) => {
355
+ T.onKeyDown?.(e), p.setLastInteractionType("keyboard"), p.setIsTyping(!0);
356
+ },
357
+ onChange: (e) => {
358
+ p.setInputValue(e.target.value);
359
+ },
360
+ ref: E
361
+ }), O = p.multiple ? !p.areSelectedItemsInTrigger || p.selectedItems.length === 0 : p.selectedItem === null;
362
+ function k(e, t) {
363
+ return (n) => {
364
+ e?.(n), t?.(n);
365
+ };
366
+ }
367
+ let A = {
368
+ onBlur: k(d.onBlur, D.onBlur),
369
+ onChange: k(d.onChange, D.onChange),
370
+ onClick: k(d.onClick, D.onClick),
371
+ onKeyDown: k(d.onKeyDown, D.onKeyDown)
372
+ };
373
+ return /* @__PURE__ */ y(_, { children: [t && /* @__PURE__ */ v(e, { children: /* @__PURE__ */ v("label", {
374
+ ...p.getLabelProps(),
375
+ children: t
376
+ }) }), /* @__PURE__ */ v(S, {
377
+ ...w,
378
+ children: /* @__PURE__ */ v("input", {
379
+ "data-spark-component": "combobox-input",
380
+ type: "text",
381
+ ...O && { placeholder: r },
382
+ className: o("max-w-full shrink-0 grow basis-[80px]", "h-sz-28 bg-surface px-sm text-body-1 text-ellipsis outline-hidden", "disabled:text-on-surface/dim-3 disabled:cursor-not-allowed disabled:bg-transparent", "read-only:text-on-surface read-only:cursor-default read-only:bg-transparent", n),
383
+ ...d,
384
+ ...D,
385
+ ...A,
386
+ value: p.inputValue,
387
+ "aria-label": t,
388
+ disabled: p.disabled,
389
+ readOnly: p.readOnly,
390
+ "aria-invalid": g,
391
+ "aria-describedby": b
392
+ })
393
+ })] });
582
394
  };
583
- me.displayName = "Combobox.Item";
584
- const pe = ({
585
- className: e,
586
- children: o,
587
- label: t,
588
- ref: n
589
- }) => {
590
- const { disabled: l, isSelected: r } = ue(), c = o || /* @__PURE__ */ a($, { size: "sm", children: /* @__PURE__ */ a(pt, { "aria-label": t }) });
591
- return /* @__PURE__ */ a(
592
- "span",
593
- {
594
- ref: n,
595
- className: f("min-h-sz-16 min-w-sz-16 flex", l && "opacity-dim-3", e),
596
- children: r && c
597
- }
598
- );
395
+ U.displayName = "Combobox.Input";
396
+ //#endregion
397
+ //#region src/combobox/ComboboxItemContext.tsx
398
+ var W = l(null), de = ({ value: e, disabled: t = !1, children: n }) => {
399
+ let r = F(), [i, a] = g(void 0), o = D(r.filteredItemsMap, e), s = {
400
+ disabled: t,
401
+ value: e,
402
+ text: te(n)
403
+ }, c = r.multiple ? r.selectedItems.some((t) => t.value === e) : r.selectedItem?.value === e;
404
+ return /* @__PURE__ */ v(W.Provider, {
405
+ value: {
406
+ textId: i,
407
+ setTextId: a,
408
+ isSelected: c,
409
+ itemData: s,
410
+ index: o,
411
+ disabled: t
412
+ },
413
+ children: n
414
+ });
415
+ }, G = () => {
416
+ let e = d(W);
417
+ if (!e) throw Error("useComboboxItemContext must be used within a ComboboxItem provider");
418
+ return e;
419
+ }, K = ({ children: e, ref: t, ...n }) => {
420
+ let { value: r, disabled: i } = n;
421
+ return /* @__PURE__ */ v(de, {
422
+ value: r,
423
+ disabled: i,
424
+ children: /* @__PURE__ */ v(pe, {
425
+ ref: t,
426
+ ...n,
427
+ children: e
428
+ })
429
+ });
430
+ }, fe = a("px-lg py-md text-body-1", {
431
+ variants: {
432
+ selected: { true: "font-bold" },
433
+ disabled: {
434
+ true: "opacity-dim-3 cursor-not-allowed",
435
+ false: "cursor-pointer"
436
+ },
437
+ highlighted: { true: "" },
438
+ interactionType: {
439
+ mouse: "",
440
+ keyboard: ""
441
+ }
442
+ },
443
+ compoundVariants: [{
444
+ highlighted: !0,
445
+ interactionType: "mouse",
446
+ class: "bg-surface-hovered"
447
+ }, {
448
+ highlighted: !0,
449
+ interactionType: "keyboard",
450
+ class: "u-outline"
451
+ }]
452
+ }), pe = ({ className: e, disabled: t = !1, value: n, children: r, ref: i, ...a }) => {
453
+ let s = F(), c = G(), l = !!s.filteredItemsMap.get(n), { ref: u, ...d } = s.getItemProps({
454
+ item: c.itemData,
455
+ index: c.index
456
+ }), f = x(i, u);
457
+ return l ? /* @__PURE__ */ v("li", {
458
+ ref: f,
459
+ className: o(fe({
460
+ selected: c.isSelected,
461
+ disabled: t,
462
+ highlighted: s.highlightedItem?.value === n,
463
+ interactionType: s.lastInteractionType,
464
+ className: e
465
+ })),
466
+ ...d,
467
+ ...a,
468
+ "aria-selected": c.isSelected,
469
+ "aria-labelledby": c.textId,
470
+ children: r
471
+ }, n) : null;
599
472
  };
600
- pe.displayName = "Combobox.ItemIndicator";
601
- const be = ({ children: e, className: o, ref: t, ...n }) => {
602
- const l = v(), { ref: r, ...c } = l.getMenuProps({
603
- onMouseMove: () => {
604
- l.setLastInteractionType("mouse");
605
- }
606
- }), i = A(null), s = W(t, r, i), m = l.hasPopover ? l.isOpen : !0, u = l.hasPopover && !m;
607
- return ct(() => {
608
- i.current?.parentElement && (i.current.parentElement.style.pointerEvents = u ? "none" : "", i.current.style.pointerEvents = u ? "none" : "");
609
- }, [u]), /* @__PURE__ */ a(
610
- "ul",
611
- {
612
- ref: s,
613
- className: f(
614
- o,
615
- "flex flex-col",
616
- m ? "block" : "pointer-events-none invisible opacity-0",
617
- l.hasPopover && "p-lg",
618
- l.isLoading && "items-center overflow-y-auto"
619
- ),
620
- ...n,
621
- ...c,
622
- "aria-busy": l.isLoading,
623
- "data-spark-component": "combobox-items",
624
- children: l.isLoading ? /* @__PURE__ */ a(bt, { size: "sm" }) : e
625
- }
626
- );
473
+ K.displayName = "Combobox.Item";
474
+ //#endregion
475
+ //#region src/combobox/ComboboxItemIndicator.tsx
476
+ var q = ({ className: e, children: n, label: r, ref: i }) => {
477
+ let { disabled: a, isSelected: s } = G(), c = n || /* @__PURE__ */ v(t, {
478
+ size: "sm",
479
+ children: /* @__PURE__ */ v(S, { "aria-label": r })
480
+ });
481
+ return /* @__PURE__ */ v("span", {
482
+ ref: i,
483
+ className: o("min-h-sz-16 min-w-sz-16 flex", a && "opacity-dim-3", e),
484
+ children: s && c
485
+ });
627
486
  };
628
- be.displayName = "Combobox.Items";
629
- const fe = ({ children: e, className: o, ref: t }) => {
630
- const n = `${U}-item-text-${q()}`, { setTextId: l } = ue();
631
- return P(() => (l(n), () => l(void 0))), /* @__PURE__ */ a("span", { id: n, className: f("inline", o), ref: t, children: e });
487
+ q.displayName = "Combobox.ItemIndicator";
488
+ //#endregion
489
+ //#region src/combobox/ComboboxItems.tsx
490
+ var J = ({ children: e, className: t, ref: r, ...i }) => {
491
+ let a = F(), { ref: s, ...c } = a.getMenuProps({ onMouseMove: () => {
492
+ a.setLastInteractionType("mouse");
493
+ } }), l = h(null), u = x(r, s, l), d = a.hasPopover ? a.isOpen : !0, f = a.hasPopover && !d;
494
+ return m(() => {
495
+ l.current?.parentElement && (l.current.parentElement.style.pointerEvents = f ? "none" : "", l.current.style.pointerEvents = f ? "none" : "");
496
+ }, [f]), /* @__PURE__ */ v("ul", {
497
+ ref: u,
498
+ className: o(t, "flex flex-col", d ? "block" : "pointer-events-none invisible opacity-0", a.hasPopover && "p-lg", a.isLoading && "items-center overflow-y-auto"),
499
+ ...i,
500
+ ...c,
501
+ "aria-busy": a.isLoading,
502
+ "data-spark-component": "combobox-items",
503
+ children: a.isLoading ? /* @__PURE__ */ v(n, { size: "sm" }) : e
504
+ });
632
505
  };
633
- fe.displayName = "Combobox.ItemText";
634
- const Ie = ({ children: e, className: o, ref: t }) => {
635
- const n = je();
636
- return /* @__PURE__ */ a(
637
- "div",
638
- {
639
- ref: t,
640
- id: n.groupLabelId,
641
- className: f("px-md py-sm text-body-2 text-neutral italic", o),
642
- children: e
643
- }
644
- );
506
+ J.displayName = "Combobox.Items";
507
+ //#endregion
508
+ //#region src/combobox/ComboboxItemText.tsx
509
+ var Y = ({ children: e, className: t, ref: n }) => {
510
+ let r = `${ce}-item-text-${p()}`, { setTextId: i } = G();
511
+ return f(() => (i(r), () => i(void 0))), /* @__PURE__ */ v("span", {
512
+ id: r,
513
+ className: o("inline", t),
514
+ ref: n,
515
+ children: e
516
+ });
645
517
  };
646
- Ie.displayName = "Combobox.Label";
647
- const xe = ({ children: e }) => /* @__PURE__ */ a($, { size: "sm", className: "h-sz-44 shrink-0", children: e });
648
- xe.displayName = "Combobox.LeadingIcon";
649
- const ye = ({
650
- children: e,
651
- matchTriggerWidth: o = !0,
652
- sideOffset: t = 4,
653
- className: n,
654
- ref: l,
655
- ...r
656
- }) => {
657
- const c = v();
658
- return P(() => (c.setHasPopover(!0), () => c.setHasPopover(!1)), []), /* @__PURE__ */ a(
659
- K.Content,
660
- {
661
- ref: l,
662
- inset: !0,
663
- asChild: !0,
664
- matchTriggerWidth: o,
665
- className: f("z-dropdown! relative", n),
666
- sideOffset: t,
667
- onOpenAutoFocus: (i) => {
668
- i.preventDefault();
669
- },
670
- ...r,
671
- "data-spark-component": "combobox-popover",
672
- children: e
673
- }
674
- );
518
+ Y.displayName = "Combobox.ItemText";
519
+ //#endregion
520
+ //#region src/combobox/ComboboxLabel.tsx
521
+ var X = ({ children: e, className: t, ref: n }) => /* @__PURE__ */ v("div", {
522
+ ref: n,
523
+ id: V().groupLabelId,
524
+ className: o("px-md py-sm text-body-2 text-neutral italic", t),
525
+ children: e
526
+ });
527
+ X.displayName = "Combobox.Label";
528
+ //#endregion
529
+ //#region src/combobox/ComboboxLeadingIcon.tsx
530
+ var Z = ({ children: e }) => /* @__PURE__ */ v(t, {
531
+ size: "sm",
532
+ className: "h-sz-44 shrink-0",
533
+ children: e
534
+ });
535
+ Z.displayName = "Combobox.LeadingIcon";
536
+ //#endregion
537
+ //#region src/combobox/ComboboxPopover.tsx
538
+ var me = ({ children: e, matchTriggerWidth: t = !0, sideOffset: n = 4, className: r, ref: a, ...s }) => {
539
+ let c = F();
540
+ return f(() => (c.setHasPopover(!0), () => c.setHasPopover(!1)), []), /* @__PURE__ */ v(i.Content, {
541
+ ref: a,
542
+ inset: !0,
543
+ asChild: !0,
544
+ matchTriggerWidth: t,
545
+ className: o("z-dropdown! relative", r),
546
+ sideOffset: n,
547
+ onOpenAutoFocus: (e) => {
548
+ e.preventDefault();
549
+ },
550
+ ...s,
551
+ "data-spark-component": "combobox-popover",
552
+ children: e
553
+ });
675
554
  };
676
- ye.displayName = "Combobox.Popover";
677
- const Ce = ({ children: e, ...o }) => /* @__PURE__ */ a(K.Portal, { ...o, children: e });
678
- Ce.displayName = "Combobox.Portal";
679
- const Tt = ({ item: e, index: o }) => {
680
- const t = v(), n = !t.disabled && !t.readOnly, l = (s) => {
681
- const m = s.target;
682
- t.lastInteractionType === "keyboard" && m.scrollIntoView({
683
- behavior: "smooth",
684
- block: "nearest",
685
- inline: "nearest"
686
- });
687
- }, { disabled: r, ...c } = t.getSelectedItemProps({
688
- disabled: t.disabled || t.readOnly,
689
- selectedItem: e,
690
- index: o
691
- });
692
- return /* @__PURE__ */ _(
693
- r ? "button" : "span",
694
- {
695
- role: "presentation",
696
- "data-spark-component": "combobox-selected-item",
697
- className: f(
698
- "h-sz-28 bg-neutral-container flex items-center rounded-md align-middle",
699
- "text-body-2 text-on-neutral-container",
700
- "disabled:opacity-dim-3 disabled:cursor-not-allowed",
701
- "focus-visible:u-outline-inset outline-hidden",
702
- { "px-md": !n, "pl-md": n }
703
- ),
704
- ...c,
705
- tabIndex: -1,
706
- ...r && { disabled: !0 },
707
- onFocus: l,
708
- children: [
709
- /* @__PURE__ */ a(
710
- "span",
711
- {
712
- className: f("line-clamp-1 overflow-x-hidden leading-normal break-all text-ellipsis", {
713
- "w-max": !t.wrap
714
- }),
715
- children: e.text
716
- }
717
- ),
718
- t.disabled,
719
- n && /* @__PURE__ */ a(
720
- "button",
721
- {
722
- type: "button",
723
- tabIndex: -1,
724
- "aria-hidden": !0,
725
- className: "px-md h-full cursor-pointer",
726
- onClick: (s) => {
727
- s.stopPropagation();
728
- const m = t.selectedItems.filter(
729
- (u) => u.value !== e.value
730
- );
731
- t.setSelectedItems(m), t.innerInputRef.current && t.innerInputRef.current.focus({ preventScroll: !0 });
732
- },
733
- children: /* @__PURE__ */ a($, { size: "sm", children: /* @__PURE__ */ a(Ae, {}) })
734
- }
735
- )
736
- ]
737
- },
738
- `selected-item-${o}`
739
- );
740
- }, ge = () => {
741
- const e = v();
742
- return e.multiple && e.selectedItems.length ? /* @__PURE__ */ a(te, { children: e.selectedItems.map((o, t) => /* @__PURE__ */ a(Tt, { item: o, index: t }, o.value)) }) : null;
555
+ me.displayName = "Combobox.Popover";
556
+ //#endregion
557
+ //#region src/combobox/ComboboxPortal.tsx
558
+ var Q = ({ children: e, ...t }) => /* @__PURE__ */ v(i.Portal, {
559
+ ...t,
560
+ children: e
561
+ });
562
+ Q.displayName = "Combobox.Portal";
563
+ //#endregion
564
+ //#region src/combobox/ComboboxSelectedItems.tsx
565
+ var he = ({ item: e, index: n }) => {
566
+ let r = F(), i = !r.disabled && !r.readOnly, a = (e) => {
567
+ let t = e.target;
568
+ r.lastInteractionType === "keyboard" && t.scrollIntoView({
569
+ behavior: "smooth",
570
+ block: "nearest",
571
+ inline: "nearest"
572
+ });
573
+ }, { disabled: s, ...c } = r.getSelectedItemProps({
574
+ disabled: r.disabled || r.readOnly,
575
+ selectedItem: e,
576
+ index: n
577
+ });
578
+ return /* @__PURE__ */ y(s ? "button" : "span", {
579
+ role: "presentation",
580
+ "data-spark-component": "combobox-selected-item",
581
+ className: o("h-sz-28 bg-neutral-container flex items-center rounded-md align-middle", "text-body-2 text-on-neutral-container", "disabled:opacity-dim-3 disabled:cursor-not-allowed", "focus-visible:u-outline-inset outline-hidden", {
582
+ "px-md": !i,
583
+ "pl-md": i
584
+ }),
585
+ ...c,
586
+ tabIndex: -1,
587
+ ...s && { disabled: !0 },
588
+ onFocus: a,
589
+ children: [
590
+ /* @__PURE__ */ v("span", {
591
+ className: o("line-clamp-1 overflow-x-hidden leading-normal break-all text-ellipsis", { "w-max": !r.wrap }),
592
+ children: e.text
593
+ }),
594
+ r.disabled,
595
+ i && /* @__PURE__ */ v("button", {
596
+ type: "button",
597
+ tabIndex: -1,
598
+ "aria-hidden": !0,
599
+ className: "px-md h-full cursor-pointer",
600
+ onClick: (t) => {
601
+ t.stopPropagation();
602
+ let n = r.selectedItems.filter((t) => t.value !== e.value);
603
+ r.setSelectedItems(n), r.innerInputRef.current && r.innerInputRef.current.focus({ preventScroll: !0 });
604
+ },
605
+ children: /* @__PURE__ */ v(t, {
606
+ size: "sm",
607
+ children: /* @__PURE__ */ v(E, {})
608
+ })
609
+ })
610
+ ]
611
+ }, `selected-item-${n}`);
612
+ }, $ = () => {
613
+ let e = F();
614
+ return e.multiple && e.selectedItems.length ? /* @__PURE__ */ v(_, { children: e.selectedItems.map((e, t) => /* @__PURE__ */ v(he, {
615
+ item: e,
616
+ index: t
617
+ }, e.value)) }) : null;
743
618
  };
744
- ge.displayName = "Combobox.SelectedItems";
745
- const Pt = Me(
746
- [
747
- "flex items-start gap-md min-h-sz-44 text-body-1",
748
- "h-fit rounded-lg px-lg",
749
- // outline styles
750
- "ring-1 outline-hidden ring-inset focus-within:ring-2 focus-within:ring-focus"
751
- ],
752
- {
753
- variants: {
754
- allowWrap: {
755
- true: "",
756
- false: "h-sz-44"
757
- },
758
- state: {
759
- undefined: "ring-outline",
760
- error: "ring-error",
761
- alert: "ring-alert",
762
- success: "ring-success"
763
- },
764
- disabled: {
765
- true: "cursor-not-allowed border-outline bg-on-surface/dim-5 text-on-surface/dim-3"
766
- },
767
- readOnly: {
768
- true: "cursor-default bg-on-surface/dim-5 text-on-surface"
769
- }
770
- },
771
- compoundVariants: [
772
- {
773
- disabled: !1,
774
- state: void 0,
775
- class: "default:hover:ring-outline-high"
776
- },
777
- {
778
- disabled: !1,
779
- readOnly: !1,
780
- class: "bg-surface text-on-surface cursor-text"
781
- }
782
- ],
783
- defaultVariants: {
784
- state: void 0,
785
- disabled: !1,
786
- readOnly: !1
787
- }
788
- }
789
- ), St = (e, o) => {
790
- const t = A(null);
791
- P(() => {
792
- const n = () => {
793
- const r = e.current?.scrollWidth || null;
794
- t.current && r && r > t.current && o(), t.current = r, requestAnimationFrame(n);
795
- }, l = requestAnimationFrame(n);
796
- return () => cancelAnimationFrame(l);
797
- }, [e]);
798
- }, he = ({ className: e, children: o, ref: t }) => {
799
- const n = v(), l = oe(), r = F(o, "Combobox.LeadingIcon"), c = F(o, "Combobox.SelectedItems"), i = F(o, "Combobox.Input"), s = F(o, "Combobox.ClearButton"), m = F(o, "Combobox.Disclosure"), [u, b] = n.hasPopover ? [K.Anchor, { asChild: !0, type: void 0 }] : [se, {}], O = W(t, n.triggerAreaRef), I = A(null), k = l.disabled || n.disabled, x = l.readOnly || n.readOnly, w = !!s && !k && !x, N = () => {
800
- if (I.current && !n.wrap) {
801
- const { scrollWidth: h, clientWidth: R } = I.current;
802
- I.current.scrollLeft = h - R;
803
- }
804
- };
805
- St(I, N);
806
- const E = !!c;
807
- return P(() => {
808
- n.setAreSelectedItemsInTrigger(E);
809
- }, [E]), P(() => {
810
- const h = new ResizeObserver(N);
811
- return I.current && h.observe(I.current), () => {
812
- h.disconnect();
813
- };
814
- }, []), /* @__PURE__ */ a(te, { children: /* @__PURE__ */ a(u, { ...b, children: /* @__PURE__ */ _(
815
- "div",
816
- {
817
- ref: O,
818
- className: Pt({
819
- className: e,
820
- state: n.state,
821
- disabled: k,
822
- readOnly: x,
823
- allowWrap: n.wrap
824
- }),
825
- onClick: () => {
826
- !n.isOpen && !k && !x && (n.openMenu(), n.innerInputRef.current && n.innerInputRef.current.focus());
827
- },
828
- children: [
829
- r,
830
- /* @__PURE__ */ _(
831
- "div",
832
- {
833
- ref: I,
834
- className: f(
835
- "min-w-none gap-sm py-md inline-flex grow items-start",
836
- n.wrap ? "flex-wrap" : "u-no-scrollbar overflow-x-auto p-[2px]"
837
- ),
838
- children: [
839
- c,
840
- i
841
- ]
842
- }
843
- ),
844
- w && s,
845
- m
846
- ]
847
- }
848
- ) }) });
619
+ $.displayName = "Combobox.SelectedItems";
620
+ //#endregion
621
+ //#region src/combobox/ComboboxTrigger.styles.tsx
622
+ var ge = a([
623
+ "flex items-start gap-md min-h-sz-44 text-body-1",
624
+ "h-fit rounded-lg px-lg",
625
+ "ring-1 outline-hidden ring-inset focus-within:ring-2 focus-within:ring-focus"
626
+ ], {
627
+ variants: {
628
+ allowWrap: {
629
+ true: "",
630
+ false: "h-sz-44"
631
+ },
632
+ state: {
633
+ undefined: "ring-outline",
634
+ error: "ring-error",
635
+ alert: "ring-alert",
636
+ success: "ring-success"
637
+ },
638
+ disabled: { true: "cursor-not-allowed border-outline bg-on-surface/dim-5 text-on-surface/dim-3" },
639
+ readOnly: { true: "cursor-default bg-on-surface/dim-5 text-on-surface" }
640
+ },
641
+ compoundVariants: [{
642
+ disabled: !1,
643
+ state: void 0,
644
+ class: "default:hover:ring-outline-high"
645
+ }, {
646
+ disabled: !1,
647
+ readOnly: !1,
648
+ class: "bg-surface text-on-surface cursor-text"
649
+ }],
650
+ defaultVariants: {
651
+ state: void 0,
652
+ disabled: !1,
653
+ readOnly: !1
654
+ }
655
+ }), _e = (e, t) => {
656
+ let n = h(null);
657
+ f(() => {
658
+ let r = () => {
659
+ let i = e.current?.scrollWidth || null;
660
+ n.current && i && i > n.current && t(), n.current = i, requestAnimationFrame(r);
661
+ }, i = requestAnimationFrame(r);
662
+ return () => cancelAnimationFrame(i);
663
+ }, [e]);
664
+ }, ve = ({ className: e, children: t, ref: n }) => {
665
+ let r = F(), a = ee(), s = N(t, "Combobox.LeadingIcon"), l = N(t, "Combobox.SelectedItems"), u = N(t, "Combobox.Input"), d = N(t, "Combobox.ClearButton"), p = N(t, "Combobox.Disclosure"), [m, g] = r.hasPopover ? [i.Anchor, {
666
+ asChild: !0,
667
+ type: void 0
668
+ }] : [c, {}], b = x(n, r.triggerAreaRef), S = h(null), C = a.disabled || r.disabled, w = a.readOnly || r.readOnly, T = !!d && !C && !w, E = () => {
669
+ if (S.current && !r.wrap) {
670
+ let { scrollWidth: e, clientWidth: t } = S.current;
671
+ S.current.scrollLeft = e - t;
672
+ }
673
+ };
674
+ _e(S, E);
675
+ let D = !!l;
676
+ return f(() => {
677
+ r.setAreSelectedItemsInTrigger(D);
678
+ }, [D]), f(() => {
679
+ let e = new ResizeObserver(E);
680
+ return S.current && e.observe(S.current), () => {
681
+ e.disconnect();
682
+ };
683
+ }, []), /* @__PURE__ */ v(_, { children: /* @__PURE__ */ v(m, {
684
+ ...g,
685
+ children: /* @__PURE__ */ y("div", {
686
+ ref: b,
687
+ className: ge({
688
+ className: e,
689
+ state: r.state,
690
+ disabled: C,
691
+ readOnly: w,
692
+ allowWrap: r.wrap
693
+ }),
694
+ onClick: () => {
695
+ !r.isOpen && !C && !w && (r.openMenu(), r.innerInputRef.current && r.innerInputRef.current.focus());
696
+ },
697
+ children: [
698
+ s,
699
+ /* @__PURE__ */ y("div", {
700
+ ref: S,
701
+ className: o("min-w-none gap-sm py-md inline-flex grow items-start", r.wrap ? "flex-wrap" : "u-no-scrollbar overflow-x-auto p-[2px]"),
702
+ children: [l, u]
703
+ }),
704
+ T && d,
705
+ p
706
+ ]
707
+ })
708
+ }) });
849
709
  };
850
- he.displayName = "Combobox.Trigger";
851
- const Ot = Object.assign(Ge, {
852
- Group: ce,
853
- Item: me,
854
- Items: be,
855
- ItemText: fe,
856
- ItemIndicator: pe,
857
- Label: Ie,
858
- Popover: ye,
859
- Trigger: he,
860
- LeadingIcon: xe,
861
- Empty: ie,
862
- Input: de,
863
- Disclosure: ae,
864
- SelectedItems: ge,
865
- ClearButton: le,
866
- Portal: Ce
710
+ ve.displayName = "Combobox.Trigger";
711
+ //#endregion
712
+ //#region src/combobox/index.ts
713
+ var ye = Object.assign(I, {
714
+ Group: H,
715
+ Item: K,
716
+ Items: J,
717
+ ItemText: Y,
718
+ ItemIndicator: q,
719
+ Label: X,
720
+ Popover: me,
721
+ Trigger: ve,
722
+ LeadingIcon: Z,
723
+ Empty: z,
724
+ Input: U,
725
+ Disclosure: R,
726
+ SelectedItems: $,
727
+ ClearButton: L,
728
+ Portal: Q
867
729
  });
868
- Ot.displayName = "Combobox";
869
- ce.displayName = "Combobox.Group";
870
- be.displayName = "Combobox.Items";
871
- me.displayName = "Combobox.Item";
872
- fe.displayName = "Combobox.ItemText";
873
- pe.displayName = "Combobox.ItemIndicator";
874
- Ie.displayName = "Combobox.Label";
875
- ye.displayName = "Combobox.Popover";
876
- he.displayName = "Combobox.Trigger";
877
- xe.displayName = "Combobox.LeadingIcon";
878
- ie.displayName = "Combobox.Empty";
879
- de.displayName = "Combobox.Input";
880
- ae.displayName = "Combobox.Disclosure";
881
- ge.displayName = "Combobox.SelectedItems";
882
- le.displayName = "Combobox.ClearButton";
883
- Ce.displayName = "Combobox.Portal";
884
- export {
885
- Ot as Combobox,
886
- Ct as ComboboxProvider,
887
- v as useComboboxContext
888
- };
889
- //# sourceMappingURL=index.mjs.map
730
+ ye.displayName = "Combobox", H.displayName = "Combobox.Group", J.displayName = "Combobox.Items", K.displayName = "Combobox.Item", Y.displayName = "Combobox.ItemText", q.displayName = "Combobox.ItemIndicator", X.displayName = "Combobox.Label", me.displayName = "Combobox.Popover", ve.displayName = "Combobox.Trigger", Z.displayName = "Combobox.LeadingIcon", z.displayName = "Combobox.Empty", U.displayName = "Combobox.Input", R.displayName = "Combobox.Disclosure", $.displayName = "Combobox.SelectedItems", L.displayName = "Combobox.ClearButton", Q.displayName = "Combobox.Portal";
731
+ //#endregion
732
+ export { ye as Combobox, P as ComboboxProvider, F as useComboboxContext };
733
+
734
+ //# sourceMappingURL=index.mjs.map