@ngrok/mantle 0.66.0 → 0.66.1

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 (297) hide show
  1. package/dist/accordion.d.ts +158 -154
  2. package/dist/accordion.js +1 -1
  3. package/dist/accordion.js.map +1 -1
  4. package/dist/alert-dialog.d.ts +282 -277
  5. package/dist/alert-dialog.js +1 -1
  6. package/dist/alert-dialog.js.map +1 -1
  7. package/dist/alert.d.ts +145 -138
  8. package/dist/alert.js +1 -1
  9. package/dist/alert.js.map +1 -1
  10. package/dist/anchor.d.ts +25 -22
  11. package/dist/anchor.js +1 -1
  12. package/dist/anchor.js.map +1 -1
  13. package/dist/as-child-XMVTepJu.d.ts +31 -0
  14. package/dist/badge.d.ts +29 -19
  15. package/dist/badge.js +1 -1
  16. package/dist/badge.js.map +1 -1
  17. package/dist/booleanish-CBGdPL3Q.js +2 -0
  18. package/dist/booleanish-CBGdPL3Q.js.map +1 -0
  19. package/dist/browser-only-jrBUqioz.js +2 -0
  20. package/dist/browser-only-jrBUqioz.js.map +1 -0
  21. package/dist/browser-only.d.ts +20 -15
  22. package/dist/browser-only.js +1 -2
  23. package/dist/button-CKL-3sIr.d.ts +175 -0
  24. package/dist/button-CRRPesae.js +2 -0
  25. package/dist/button-CRRPesae.js.map +1 -0
  26. package/dist/button-DA2p0_5F.js +2 -0
  27. package/dist/button-DA2p0_5F.js.map +1 -0
  28. package/dist/button.d.ts +4 -9
  29. package/dist/button.js +1 -2
  30. package/dist/calendar.d.ts +14 -8
  31. package/dist/calendar.js +1 -1
  32. package/dist/calendar.js.map +1 -1
  33. package/dist/card.d.ts +99 -97
  34. package/dist/card.js +1 -1
  35. package/dist/card.js.map +1 -1
  36. package/dist/checkbox.d.ts +14 -12
  37. package/dist/checkbox.js +1 -1
  38. package/dist/checkbox.js.map +1 -1
  39. package/dist/code-block.d.ts +254 -237
  40. package/dist/code-block.js +3 -3
  41. package/dist/code-block.js.map +1 -1
  42. package/dist/code.d.ts +5 -3
  43. package/dist/code.js +1 -1
  44. package/dist/code.js.map +1 -1
  45. package/dist/color.d.ts +2 -38
  46. package/dist/color.js +1 -1
  47. package/dist/color.js.map +1 -1
  48. package/dist/combobox.d.ts +172 -167
  49. package/dist/combobox.js +1 -1
  50. package/dist/combobox.js.map +1 -1
  51. package/dist/command.d.ts +234 -227
  52. package/dist/command.js +1 -1
  53. package/dist/command.js.map +1 -1
  54. package/dist/compose-refs-DeIsFv68.js +2 -0
  55. package/dist/compose-refs-DeIsFv68.js.map +1 -0
  56. package/dist/cx-bKromGBh.js +2 -0
  57. package/dist/cx-bKromGBh.js.map +1 -0
  58. package/dist/cx.d.ts +4 -2
  59. package/dist/cx.js +1 -2
  60. package/dist/data-table.d.ts +211 -184
  61. package/dist/data-table.js +1 -1
  62. package/dist/data-table.js.map +1 -1
  63. package/dist/deep-non-nullable-BLM3Gz0I.d.ts +8 -0
  64. package/dist/description-list.d.ts +61 -59
  65. package/dist/description-list.js +1 -1
  66. package/dist/description-list.js.map +1 -1
  67. package/dist/dialog-BuD_JQf_.d.ts +422 -0
  68. package/dist/dialog-CGBjHvo_.js +2 -0
  69. package/dist/dialog-CGBjHvo_.js.map +1 -0
  70. package/dist/dialog.d.ts +3 -410
  71. package/dist/dialog.js +1 -2
  72. package/dist/direction-DfrtFTny.js +2 -0
  73. package/dist/direction-DfrtFTny.js.map +1 -0
  74. package/dist/{direction-DHheuUag.d.ts → direction-deXpJFDZ.d.ts} +9 -7
  75. package/dist/dropdown-menu-CjOaj-Ap.js +2 -0
  76. package/dist/dropdown-menu-CjOaj-Ap.js.map +1 -0
  77. package/dist/dropdown-menu-D_ZoY1AH.d.ts +330 -0
  78. package/dist/dropdown-menu.d.ts +2 -325
  79. package/dist/dropdown-menu.js +1 -2
  80. package/dist/flag.d.ts +31 -22
  81. package/dist/flag.js +1 -1
  82. package/dist/flag.js.map +1 -1
  83. package/dist/hooks.d.ts +72 -59
  84. package/dist/hooks.js +1 -1
  85. package/dist/hooks.js.map +1 -1
  86. package/dist/hover-card.d.ts +97 -91
  87. package/dist/hover-card.js +1 -1
  88. package/dist/hover-card.js.map +1 -1
  89. package/dist/{icon-DXTMiV1L.d.ts → icon-B1XLv02t.d.ts} +11 -9
  90. package/dist/icon-B5oNYYrJ.js +2 -0
  91. package/dist/icon-B5oNYYrJ.js.map +1 -0
  92. package/dist/icon-button-2r6S3HVA.d.ts +98 -0
  93. package/dist/icon-button-D4e9-dq-.js +2 -0
  94. package/dist/icon-button-D4e9-dq-.js.map +1 -0
  95. package/dist/icon.d.ts +4 -4
  96. package/dist/icon.js +1 -2
  97. package/dist/icons.d.ts +54 -41
  98. package/dist/icons.js +1 -1
  99. package/dist/icons.js.map +1 -1
  100. package/dist/{in-view-aHeQHaUj.d.ts → in-view-CTQRT44m.d.ts} +29 -22
  101. package/dist/in-view-bPnaWEL4.js +2 -0
  102. package/dist/in-view-bPnaWEL4.js.map +1 -0
  103. package/dist/index-BLCvtjLi.d.ts +40 -0
  104. package/dist/index-DWqhfw9n.d.ts +103 -0
  105. package/dist/{button-group-BFnqgdtl.d.ts → index-ViSCOUrU.d.ts} +10 -8
  106. package/dist/index-s8rMcilU.d.ts +47 -0
  107. package/dist/input.d.ts +3 -100
  108. package/dist/input.js +1 -1
  109. package/dist/input.js.map +1 -1
  110. package/dist/is-input-BFR8yMM7.js +2 -0
  111. package/dist/is-input-BFR8yMM7.js.map +1 -0
  112. package/dist/kbd-pyj32aN4.js +2 -0
  113. package/dist/kbd-pyj32aN4.js.map +1 -0
  114. package/dist/kbd.d.ts +10 -4
  115. package/dist/kbd.js +1 -2
  116. package/dist/label.d.ts +8 -6
  117. package/dist/label.js +1 -1
  118. package/dist/label.js.map +1 -1
  119. package/dist/media-object.d.ts +70 -68
  120. package/dist/media-object.js +1 -1
  121. package/dist/media-object.js.map +1 -1
  122. package/dist/multi-select.d.ts +226 -218
  123. package/dist/multi-select.js +1 -1
  124. package/dist/multi-select.js.map +1 -1
  125. package/dist/pagination.d.ts +168 -164
  126. package/dist/pagination.js +1 -1
  127. package/dist/pagination.js.map +1 -1
  128. package/dist/popover.d.ts +119 -117
  129. package/dist/popover.js +1 -1
  130. package/dist/popover.js.map +1 -1
  131. package/dist/primitive-W5Izf14l.js +2 -0
  132. package/dist/primitive-W5Izf14l.js.map +1 -0
  133. package/dist/primitive-tuHqhoRE.d.ts +16 -0
  134. package/dist/progress.d.ts +175 -150
  135. package/dist/progress.js +1 -1
  136. package/dist/progress.js.map +1 -1
  137. package/dist/radio-group.d.ts +246 -230
  138. package/dist/radio-group.js +1 -1
  139. package/dist/radio-group.js.map +1 -1
  140. package/dist/sandboxed-on-click.d.ts +36 -31
  141. package/dist/sandboxed-on-click.js +1 -1
  142. package/dist/sandboxed-on-click.js.map +1 -1
  143. package/dist/select-39Jfc1Cb.d.ts +265 -0
  144. package/dist/select-DZ2ztBkI.js +2 -0
  145. package/dist/select-DZ2ztBkI.js.map +1 -0
  146. package/dist/select.d.ts +2 -263
  147. package/dist/select.js +1 -2
  148. package/dist/separator-BcCNbHBg.js +2 -0
  149. package/dist/separator-BcCNbHBg.js.map +1 -0
  150. package/dist/separator.d.ts +28 -21
  151. package/dist/separator.js +1 -2
  152. package/dist/sheet.d.ts +319 -305
  153. package/dist/sheet.js +1 -1
  154. package/dist/sheet.js.map +1 -1
  155. package/dist/skeleton.d.ts +8 -6
  156. package/dist/skeleton.js +1 -1
  157. package/dist/skeleton.js.map +1 -1
  158. package/dist/slider.d.ts +48 -35
  159. package/dist/slider.js +1 -1
  160. package/dist/slider.js.map +1 -1
  161. package/dist/slot-DdnjeV2n.js +2 -0
  162. package/dist/slot-DdnjeV2n.js.map +1 -0
  163. package/dist/slot.d.ts +6 -4
  164. package/dist/slot.js +1 -2
  165. package/dist/sort-CfPsu1Gs.js +2 -0
  166. package/dist/sort-CfPsu1Gs.js.map +1 -0
  167. package/dist/split-button.d.ts +158 -162
  168. package/dist/split-button.js +1 -1
  169. package/dist/split-button.js.map +1 -1
  170. package/dist/svg-only-BVLlbQ4e.js +2 -0
  171. package/dist/svg-only-BVLlbQ4e.js.map +1 -0
  172. package/dist/{svg-only-Cp8Mu_sh.d.ts → svg-only-Dti1FvNV.d.ts} +11 -9
  173. package/dist/switch.d.ts +10 -8
  174. package/dist/switch.js +1 -1
  175. package/dist/switch.js.map +1 -1
  176. package/dist/table-BWMp12sl.js +2 -0
  177. package/dist/table-BWMp12sl.js.map +1 -0
  178. package/dist/table-Dpt192qt.d.ts +398 -0
  179. package/dist/table.d.ts +2 -396
  180. package/dist/table.js +1 -2
  181. package/dist/tabs.d.ts +110 -104
  182. package/dist/tabs.js +1 -1
  183. package/dist/tabs.js.map +1 -1
  184. package/dist/text-area.d.ts +10 -8
  185. package/dist/text-area.js +1 -1
  186. package/dist/text-area.js.map +1 -1
  187. package/dist/theme-provider-CbzLgte1.js +2 -0
  188. package/dist/theme-provider-CbzLgte1.js.map +1 -0
  189. package/dist/theme.d.ts +65 -38
  190. package/dist/theme.js +1 -2
  191. package/dist/{themes-Bi46K9ZW.d.ts → themes-ClppRAGt.d.ts} +4 -2
  192. package/dist/toast-B4gxB8U0.js +2 -0
  193. package/dist/toast-B4gxB8U0.js.map +1 -0
  194. package/dist/toast.d.ts +95 -87
  195. package/dist/toast.js +1 -2
  196. package/dist/tooltip.d.ts +78 -73
  197. package/dist/tooltip.js +1 -1
  198. package/dist/tooltip.js.map +1 -1
  199. package/dist/{chunk-W2YQRWR5.js → traffic-policy-file-QnF-2YkY.js} +2 -2
  200. package/dist/traffic-policy-file-QnF-2YkY.js.map +1 -0
  201. package/dist/types-884RJJqm.js +2 -0
  202. package/dist/types-884RJJqm.js.map +1 -0
  203. package/dist/{types-DehRoXC5.d.ts → types-DgXUgkpc.d.ts} +38 -36
  204. package/dist/types-Dh4BVhXC.d.ts +9 -0
  205. package/dist/types.d.ts +6 -49
  206. package/dist/types.js +1 -2
  207. package/dist/use-copy-to-clipboard-BEbQOKHc.js +2 -0
  208. package/dist/use-copy-to-clipboard-BEbQOKHc.js.map +1 -0
  209. package/dist/use-matches-media-query-BxTQ5f4i.js +2 -0
  210. package/dist/use-matches-media-query-BxTQ5f4i.js.map +1 -0
  211. package/dist/use-prefers-reduced-motion-BPlsKyCJ.js +2 -0
  212. package/dist/use-prefers-reduced-motion-BPlsKyCJ.js.map +1 -0
  213. package/dist/utils.d.ts +6 -5
  214. package/dist/utils.js +1 -1
  215. package/dist/utils.js.map +1 -1
  216. package/dist/variant-props-UE-phTwh.d.ts +13 -0
  217. package/dist/with-style-props-D1QFTzj6.d.ts +29 -0
  218. package/package.json +6 -6
  219. package/dist/as-child-DJ7x3JFV.d.ts +0 -21
  220. package/dist/browser-only.js.map +0 -1
  221. package/dist/button-DLUUf_c-.d.ts +0 -173
  222. package/dist/button.js.map +0 -1
  223. package/dist/chunk-2FYR6IJV.js +0 -2
  224. package/dist/chunk-2FYR6IJV.js.map +0 -1
  225. package/dist/chunk-5VDCC3YW.js +0 -2
  226. package/dist/chunk-5VDCC3YW.js.map +0 -1
  227. package/dist/chunk-63ZAW25Z.js +0 -2
  228. package/dist/chunk-63ZAW25Z.js.map +0 -1
  229. package/dist/chunk-6J7D73WA.js +0 -2
  230. package/dist/chunk-6J7D73WA.js.map +0 -1
  231. package/dist/chunk-72TJUKMV.js +0 -1
  232. package/dist/chunk-72TJUKMV.js.map +0 -1
  233. package/dist/chunk-7MJQGBE4.js +0 -2
  234. package/dist/chunk-7MJQGBE4.js.map +0 -1
  235. package/dist/chunk-7YLII2US.js +0 -2
  236. package/dist/chunk-7YLII2US.js.map +0 -1
  237. package/dist/chunk-ADF5DAYG.js +0 -2
  238. package/dist/chunk-ADF5DAYG.js.map +0 -1
  239. package/dist/chunk-CBRSMQ26.js +0 -2
  240. package/dist/chunk-CBRSMQ26.js.map +0 -1
  241. package/dist/chunk-COQIVAQH.js +0 -2
  242. package/dist/chunk-COQIVAQH.js.map +0 -1
  243. package/dist/chunk-ELZLLG6G.js +0 -2
  244. package/dist/chunk-ELZLLG6G.js.map +0 -1
  245. package/dist/chunk-EVU5XGB4.js +0 -2
  246. package/dist/chunk-EVU5XGB4.js.map +0 -1
  247. package/dist/chunk-EYZYDUS2.js +0 -2
  248. package/dist/chunk-EYZYDUS2.js.map +0 -1
  249. package/dist/chunk-HKSO72E5.js +0 -2
  250. package/dist/chunk-HKSO72E5.js.map +0 -1
  251. package/dist/chunk-HL2HWYKP.js +0 -2
  252. package/dist/chunk-HL2HWYKP.js.map +0 -1
  253. package/dist/chunk-IVQ626TU.js +0 -2
  254. package/dist/chunk-IVQ626TU.js.map +0 -1
  255. package/dist/chunk-JQ5D5YZR.js +0 -2
  256. package/dist/chunk-JQ5D5YZR.js.map +0 -1
  257. package/dist/chunk-LBO5LEYM.js +0 -2
  258. package/dist/chunk-LBO5LEYM.js.map +0 -1
  259. package/dist/chunk-MLXONRJD.js +0 -2
  260. package/dist/chunk-MLXONRJD.js.map +0 -1
  261. package/dist/chunk-OHPGAB7U.js +0 -2
  262. package/dist/chunk-OHPGAB7U.js.map +0 -1
  263. package/dist/chunk-OP6JMBKJ.js +0 -2
  264. package/dist/chunk-OP6JMBKJ.js.map +0 -1
  265. package/dist/chunk-PFXFESEN.js +0 -2
  266. package/dist/chunk-PFXFESEN.js.map +0 -1
  267. package/dist/chunk-PNL7JOXI.js +0 -2
  268. package/dist/chunk-PNL7JOXI.js.map +0 -1
  269. package/dist/chunk-RED6SFAV.js +0 -2
  270. package/dist/chunk-RED6SFAV.js.map +0 -1
  271. package/dist/chunk-SBQHQ2SJ.js +0 -2
  272. package/dist/chunk-SBQHQ2SJ.js.map +0 -1
  273. package/dist/chunk-SGGOH2WW.js +0 -2
  274. package/dist/chunk-SGGOH2WW.js.map +0 -1
  275. package/dist/chunk-W2YQRWR5.js.map +0 -1
  276. package/dist/chunk-W5A5HSFE.js +0 -2
  277. package/dist/chunk-W5A5HSFE.js.map +0 -1
  278. package/dist/chunk-YPAUKPCE.js +0 -2
  279. package/dist/chunk-YPAUKPCE.js.map +0 -1
  280. package/dist/cx.js.map +0 -1
  281. package/dist/deep-non-nullable-SmpSvoSd.d.ts +0 -8
  282. package/dist/dialog.js.map +0 -1
  283. package/dist/dropdown-menu.js.map +0 -1
  284. package/dist/icon-button-CT71Ti9V.d.ts +0 -96
  285. package/dist/icon.js.map +0 -1
  286. package/dist/kbd.js.map +0 -1
  287. package/dist/primitive-CBR_XmVa.d.ts +0 -14
  288. package/dist/select.js.map +0 -1
  289. package/dist/separator.js.map +0 -1
  290. package/dist/slot.js.map +0 -1
  291. package/dist/table.js.map +0 -1
  292. package/dist/theme.js.map +0 -1
  293. package/dist/toast.js.map +0 -1
  294. package/dist/types-BuKAGhC-.d.ts +0 -7
  295. package/dist/types.js.map +0 -1
  296. package/dist/variant-props-oDo2u-We.d.ts +0 -11
  297. package/dist/with-style-props-VnLWm0Yd.d.ts +0 -27
@@ -1,25 +1,26 @@
1
- import * as react from 'react';
2
- import { ComponentProps, ReactNode } from 'react';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import * as Primitive from '@ariakit/react';
5
- import { W as WithAsChild } from './as-child-DJ7x3JFV.js';
6
- import { W as WithValidation } from './types-DehRoXC5.js';
1
+ import { t as WithAsChild } from "./as-child-XMVTepJu.js";
2
+ import { o as WithValidation } from "./types-DgXUgkpc.js";
3
+ import * as react from "react";
4
+ import { ComponentProps, ReactNode } from "react";
5
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
+ import * as Primitive from "@ariakit/react";
7
7
 
8
+ //#region src/components/multi-select/multi-select.d.ts
8
9
  type MultiSelectProps = Primitive.ComboboxProviderProps<string[]>;
9
10
  type TagProps = Omit<ComponentProps<"span">, "children"> & {
10
- /**
11
- * The value to display in the tag label.
12
- */
13
- value: string;
14
- /**
15
- * Called when the remove button is clicked.
16
- */
17
- onRemove?: () => void;
18
- /**
19
- * When true, the tag cannot be removed. The remove button is disabled and
20
- * Delete/Backspace key presses are ignored while the tag is focused.
21
- */
22
- locked?: boolean;
11
+ /**
12
+ * The value to display in the tag label.
13
+ */
14
+ value: string;
15
+ /**
16
+ * Called when the remove button is clicked.
17
+ */
18
+ onRemove?: () => void;
19
+ /**
20
+ * When true, the tag cannot be removed. The remove button is disabled and
21
+ * Delete/Backspace key presses are ignored while the tag is focused.
22
+ */
23
+ locked?: boolean;
23
24
  };
24
25
  /**
25
26
  * Props passed to the children render function of `MultiSelect.TagValues`.
@@ -32,42 +33,41 @@ type TagProps = Omit<ComponentProps<"span">, "children"> & {
32
33
  * - `onClick` — focuses the tag and ensures the popover opens/stays open
33
34
  */
34
35
  type TagRenderProps = TagProps & {
35
- /** Ref callback — forward this to the tag element to enable keyboard navigation between tags. */
36
- ref: (node: HTMLSpanElement | null) => void;
36
+ /** Ref callback — forward this to the tag element to enable keyboard navigation between tags. */ref: (node: HTMLSpanElement | null) => void;
37
37
  };
38
38
  type MultiSelectTagValuesProps = {
39
- /**
40
- * Values that cannot be removed. Locked tags have their remove button disabled,
41
- * respond to Backspace/Delete key presses with a shake animation, and shake when
42
- * Backspace is pressed on an empty input.
43
- *
44
- * The `locked` state is also forwarded to the render function via `props.locked`
45
- * so custom tag components receive it automatically.
46
- */
47
- lockedValues?: string[];
48
- /**
49
- * Optional render function for each tag. Receives `{ value, onRemove, locked, ref }` —
50
- * spread these onto `MultiSelect.Tag` (or your own element) for full keyboard-nav support.
51
- * When omitted, the default `MultiSelect.Tag` is rendered for each selected value.
52
- *
53
- * @example
54
- * ```tsx
55
- * <MultiSelect.TagValues lockedValues={["global"]}>
56
- * {(props) => (
57
- * <MultiSelect.Tag key={props.value} {...props} />
58
- * )}
59
- * </MultiSelect.TagValues>
60
- * ```
61
- */
62
- children?: (props: TagRenderProps) => ReactNode;
39
+ /**
40
+ * Values that cannot be removed. Locked tags have their remove button disabled,
41
+ * respond to Backspace/Delete key presses with a shake animation, and shake when
42
+ * Backspace is pressed on an empty input.
43
+ *
44
+ * The `locked` state is also forwarded to the render function via `props.locked`
45
+ * so custom tag components receive it automatically.
46
+ */
47
+ lockedValues?: string[];
48
+ /**
49
+ * Optional render function for each tag. Receives `{ value, onRemove, locked, ref }` —
50
+ * spread these onto `MultiSelect.Tag` (or your own element) for full keyboard-nav support.
51
+ * When omitted, the default `MultiSelect.Tag` is rendered for each selected value.
52
+ *
53
+ * @example
54
+ * ```tsx
55
+ * <MultiSelect.TagValues lockedValues={["global"]}>
56
+ * {(props) => (
57
+ * <MultiSelect.Tag key={props.value} {...props} />
58
+ * )}
59
+ * </MultiSelect.TagValues>
60
+ * ```
61
+ */
62
+ children?: (props: TagRenderProps) => ReactNode;
63
63
  };
64
64
  type MultiSelectInputProps = Omit<Primitive.ComboboxProps, "render"> & {
65
- /**
66
- * Called with the raw string value whenever the input text changes.
67
- * Use this to drive external filtering (e.g. with matchSorter) without
68
- * having to unwrap the DOM event. A convenience alternative to `onChange`.
69
- */
70
- onValueChange?: (value: string) => void;
65
+ /**
66
+ * Called with the raw string value whenever the input text changes.
67
+ * Use this to drive external filtering (e.g. with matchSorter) without
68
+ * having to unwrap the DOM event. A convenience alternative to `onChange`.
69
+ */
70
+ onValueChange?: (value: string) => void;
71
71
  };
72
72
  type MultiSelectContentProps = Omit<Primitive.ComboboxPopoverProps, "render"> & WithAsChild;
73
73
  type MultiSelectItemProps = Omit<Primitive.ComboboxItemProps, "render"> & WithAsChild;
@@ -99,172 +99,180 @@ type MultiSelectGroupLabelProps = Omit<Primitive.ComboboxGroupLabelProps, "rende
99
99
  * ```
100
100
  */
101
101
  declare const MultiSelect: {
102
- /**
103
- * Root component for a multi-select combobox. Provides state management for
104
- * selecting multiple values with typeahead filtering.
105
- *
106
- * @example
107
- * ```tsx
108
- * <MultiSelect.Root>
109
- * <MultiSelect.Trigger>
110
- * <MultiSelect.TagValues />
111
- * <MultiSelect.Input placeholder="Select items..." />
112
- * </MultiSelect.Trigger>
113
- * <MultiSelect.Content>
114
- * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
115
- * </MultiSelect.Content>
116
- * </MultiSelect.Root>
117
- * ```
118
- */
119
- readonly Root: {
120
- ({ children, defaultSelectedValue, ...props }: MultiSelectProps): react_jsx_runtime.JSX.Element;
121
- displayName: string;
122
- };
123
- /**
124
- * The trigger container for the multi-select. Wraps the tags and input
125
- * in a styled container.
126
- *
127
- * @example
128
- * ```tsx
129
- * <MultiSelect.Trigger>
130
- * <MultiSelect.TagValues />
131
- * <MultiSelect.Input placeholder="Select items..." />
132
- * </MultiSelect.Trigger>
133
- * ```
134
- */
135
- readonly Trigger: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & WithValidation & react.RefAttributes<HTMLDivElement>>;
136
- /**
137
- * Renders the selected values as removable tags. Place this inside
138
- * `MultiSelect.Trigger`, followed by `MultiSelect.Input`.
139
- *
140
- * Use `lockedValues` to prevent specific tags from being removed. Locked tags
141
- * have their remove button disabled and shake when Backspace is pressed.
142
- *
143
- * @example
144
- * ```tsx
145
- * // Default tags with locking
146
- * <MultiSelect.TagValues lockedValues={["global"]} />
147
- *
148
- * // Custom tags via children render function — locked is forwarded via props
149
- * <MultiSelect.TagValues lockedValues={["global"]}>
150
- * {(props) => (
151
- * <MultiSelect.Tag key={props.value} {...props} />
152
- * )}
153
- * </MultiSelect.TagValues>
154
- * ```
155
- */
156
- readonly TagValues: {
157
- ({ children, lockedValues }: MultiSelectTagValuesProps): react_jsx_runtime.JSX.Element;
158
- displayName: string;
159
- };
160
- /**
161
- * The combobox input for filtering items. Place this inside
162
- * `MultiSelect.Trigger`, after `MultiSelect.TagValues`.
163
- *
164
- * @example
165
- * ```tsx
166
- * <MultiSelect.Input placeholder="Select items..." />
167
- * ```
168
- */
169
- readonly Input: react.ForwardRefExoticComponent<Omit<MultiSelectInputProps, "ref"> & react.RefAttributes<HTMLInputElement>>;
170
- /**
171
- * The default tag rendered inside `MultiSelect.TagValues` for each selected value.
172
- * Displays the value label with a remove button and keyboard navigation support.
173
- *
174
- * @example
175
- * ```tsx
176
- * <MultiSelect.Tag
177
- * value="apple"
178
- * onRemove={() => removeValue("apple")}
179
- * />
180
- * ```
181
- */
182
- readonly Tag: react.ForwardRefExoticComponent<Omit<TagProps, "ref"> & react.RefAttributes<HTMLSpanElement>>;
183
- /**
184
- * Renders a popover that contains multi-select content.
185
- *
186
- * @example
187
- * ```tsx
188
- * <MultiSelect.Content>
189
- * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
190
- * </MultiSelect.Content>
191
- * ```
192
- */
193
- readonly Content: react.ForwardRefExoticComponent<Omit<MultiSelectContentProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
194
- /**
195
- * Renders a sticky footer pinned to the bottom inside `MultiSelect.Content`,
196
- * with a separator border at the top.
197
- *
198
- * @example
199
- * ```tsx
200
- * <MultiSelect.ContentFooter>
201
- * <p>Upgrade to unlock more options.</p>
202
- * </MultiSelect.ContentFooter>
203
- * ```
204
- */
205
- readonly ContentFooter: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
206
- /**
207
- * Renders a selectable item with a checkbox indicator inside a `MultiSelect.Content`.
208
- *
209
- * @example
210
- * ```tsx
211
- * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
212
- * ```
213
- */
214
- readonly Item: react.ForwardRefExoticComponent<Omit<MultiSelectItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
215
- /**
216
- * Renders a group for MultiSelect.Item elements.
217
- *
218
- * @example
219
- * ```tsx
220
- * <MultiSelect.Group>
221
- * <MultiSelect.GroupLabel>Fruits</MultiSelect.GroupLabel>
222
- * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
223
- * </MultiSelect.Group>
224
- * ```
225
- */
226
- readonly Group: react.ForwardRefExoticComponent<Omit<MultiSelectGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
227
- /**
228
- * Renders a label in a multi-select group.
229
- *
230
- * @example
231
- * ```tsx
232
- * <MultiSelect.GroupLabel>Fruits</MultiSelect.GroupLabel>
233
- * ```
234
- */
235
- readonly GroupLabel: react.ForwardRefExoticComponent<Omit<MultiSelectGroupLabelProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
236
- /**
237
- * Renders a description below a `MultiSelect.GroupLabel` inside a `MultiSelect.Group`.
238
- *
239
- * @example
240
- * ```tsx
241
- * <MultiSelect.GroupDescription>
242
- * Include all points of presence within the region.
243
- * </MultiSelect.GroupDescription>
244
- * ```
245
- */
246
- readonly GroupDescription: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
247
- /**
248
- * Renders a separator between items or groups.
249
- *
250
- * @example
251
- * ```tsx
252
- * <MultiSelect.Separator />
253
- * ```
254
- */
255
- readonly Separator: react.ForwardRefExoticComponent<Omit<Omit<react.ClassAttributes<HTMLDivElement> & react.HTMLAttributes<HTMLDivElement> & WithAsChild & {
256
- orientation?: "horizontal" | "vertical";
257
- semantic?: boolean;
258
- }, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
259
- /**
260
- * Renders a message when no items match the current filter.
261
- *
262
- * @example
263
- * ```tsx
264
- * <MultiSelect.Empty>No results found</MultiSelect.Empty>
265
- * ```
266
- */
267
- readonly Empty: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
102
+ /**
103
+ * Root component for a multi-select combobox. Provides state management for
104
+ * selecting multiple values with typeahead filtering.
105
+ *
106
+ * @example
107
+ * ```tsx
108
+ * <MultiSelect.Root>
109
+ * <MultiSelect.Trigger>
110
+ * <MultiSelect.TagValues />
111
+ * <MultiSelect.Input placeholder="Select items..." />
112
+ * </MultiSelect.Trigger>
113
+ * <MultiSelect.Content>
114
+ * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
115
+ * </MultiSelect.Content>
116
+ * </MultiSelect.Root>
117
+ * ```
118
+ */
119
+ readonly Root: {
120
+ ({
121
+ children,
122
+ defaultSelectedValue,
123
+ ...props
124
+ }: MultiSelectProps): react_jsx_runtime0.JSX.Element;
125
+ displayName: string;
126
+ };
127
+ /**
128
+ * The trigger container for the multi-select. Wraps the tags and input
129
+ * in a styled container.
130
+ *
131
+ * @example
132
+ * ```tsx
133
+ * <MultiSelect.Trigger>
134
+ * <MultiSelect.TagValues />
135
+ * <MultiSelect.Input placeholder="Select items..." />
136
+ * </MultiSelect.Trigger>
137
+ * ```
138
+ */
139
+ readonly Trigger: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & WithValidation & react.RefAttributes<HTMLDivElement>>;
140
+ /**
141
+ * Renders the selected values as removable tags. Place this inside
142
+ * `MultiSelect.Trigger`, followed by `MultiSelect.Input`.
143
+ *
144
+ * Use `lockedValues` to prevent specific tags from being removed. Locked tags
145
+ * have their remove button disabled and shake when Backspace is pressed.
146
+ *
147
+ * @example
148
+ * ```tsx
149
+ * // Default tags with locking
150
+ * <MultiSelect.TagValues lockedValues={["global"]} />
151
+ *
152
+ * // Custom tags via children render function — locked is forwarded via props
153
+ * <MultiSelect.TagValues lockedValues={["global"]}>
154
+ * {(props) => (
155
+ * <MultiSelect.Tag key={props.value} {...props} />
156
+ * )}
157
+ * </MultiSelect.TagValues>
158
+ * ```
159
+ */
160
+ readonly TagValues: {
161
+ ({
162
+ children,
163
+ lockedValues
164
+ }: MultiSelectTagValuesProps): react_jsx_runtime0.JSX.Element;
165
+ displayName: string;
166
+ };
167
+ /**
168
+ * The combobox input for filtering items. Place this inside
169
+ * `MultiSelect.Trigger`, after `MultiSelect.TagValues`.
170
+ *
171
+ * @example
172
+ * ```tsx
173
+ * <MultiSelect.Input placeholder="Select items..." />
174
+ * ```
175
+ */
176
+ readonly Input: react.ForwardRefExoticComponent<Omit<MultiSelectInputProps, "ref"> & react.RefAttributes<HTMLInputElement>>;
177
+ /**
178
+ * The default tag rendered inside `MultiSelect.TagValues` for each selected value.
179
+ * Displays the value label with a remove button and keyboard navigation support.
180
+ *
181
+ * @example
182
+ * ```tsx
183
+ * <MultiSelect.Tag
184
+ * value="apple"
185
+ * onRemove={() => removeValue("apple")}
186
+ * />
187
+ * ```
188
+ */
189
+ readonly Tag: react.ForwardRefExoticComponent<Omit<TagProps, "ref"> & react.RefAttributes<HTMLSpanElement>>;
190
+ /**
191
+ * Renders a popover that contains multi-select content.
192
+ *
193
+ * @example
194
+ * ```tsx
195
+ * <MultiSelect.Content>
196
+ * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
197
+ * </MultiSelect.Content>
198
+ * ```
199
+ */
200
+ readonly Content: react.ForwardRefExoticComponent<Omit<MultiSelectContentProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
201
+ /**
202
+ * Renders a sticky footer pinned to the bottom inside `MultiSelect.Content`,
203
+ * with a separator border at the top.
204
+ *
205
+ * @example
206
+ * ```tsx
207
+ * <MultiSelect.ContentFooter>
208
+ * <p>Upgrade to unlock more options.</p>
209
+ * </MultiSelect.ContentFooter>
210
+ * ```
211
+ */
212
+ readonly ContentFooter: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
213
+ /**
214
+ * Renders a selectable item with a checkbox indicator inside a `MultiSelect.Content`.
215
+ *
216
+ * @example
217
+ * ```tsx
218
+ * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
219
+ * ```
220
+ */
221
+ readonly Item: react.ForwardRefExoticComponent<Omit<MultiSelectItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
222
+ /**
223
+ * Renders a group for MultiSelect.Item elements.
224
+ *
225
+ * @example
226
+ * ```tsx
227
+ * <MultiSelect.Group>
228
+ * <MultiSelect.GroupLabel>Fruits</MultiSelect.GroupLabel>
229
+ * <MultiSelect.Item value="apple">Apple</MultiSelect.Item>
230
+ * </MultiSelect.Group>
231
+ * ```
232
+ */
233
+ readonly Group: react.ForwardRefExoticComponent<Omit<MultiSelectGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
234
+ /**
235
+ * Renders a label in a multi-select group.
236
+ *
237
+ * @example
238
+ * ```tsx
239
+ * <MultiSelect.GroupLabel>Fruits</MultiSelect.GroupLabel>
240
+ * ```
241
+ */
242
+ readonly GroupLabel: react.ForwardRefExoticComponent<Omit<MultiSelectGroupLabelProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
243
+ /**
244
+ * Renders a description below a `MultiSelect.GroupLabel` inside a `MultiSelect.Group`.
245
+ *
246
+ * @example
247
+ * ```tsx
248
+ * <MultiSelect.GroupDescription>
249
+ * Include all points of presence within the region.
250
+ * </MultiSelect.GroupDescription>
251
+ * ```
252
+ */
253
+ readonly GroupDescription: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
254
+ /**
255
+ * Renders a separator between items or groups.
256
+ *
257
+ * @example
258
+ * ```tsx
259
+ * <MultiSelect.Separator />
260
+ * ```
261
+ */
262
+ readonly Separator: react.ForwardRefExoticComponent<Omit<Omit<react.ClassAttributes<HTMLDivElement> & react.HTMLAttributes<HTMLDivElement> & WithAsChild & {
263
+ orientation?: "horizontal" | "vertical";
264
+ semantic?: boolean;
265
+ }, "ref"> & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
266
+ /**
267
+ * Renders a message when no items match the current filter.
268
+ *
269
+ * @example
270
+ * ```tsx
271
+ * <MultiSelect.Empty>No results found</MultiSelect.Empty>
272
+ * ```
273
+ */
274
+ readonly Empty: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
268
275
  };
269
-
276
+ //#endregion
270
277
  export { MultiSelect };
278
+ //# sourceMappingURL=multi-select.d.ts.map
@@ -1,2 +1,2 @@
1
- import{a as G}from"./chunk-EVU5XGB4.js";import{b as A}from"./chunk-MLXONRJD.js";import{a as k}from"./chunk-HKSO72E5.js";import"./chunk-5VDCC3YW.js";import{a as D}from"./chunk-IVQ626TU.js";import{a as T}from"./chunk-ADF5DAYG.js";import"./chunk-SBQHQ2SJ.js";import{a as y}from"./chunk-PFXFESEN.js";import*as d from"@ariakit/react";import{CheckIcon as re}from"@phosphor-icons/react/Check";import{LockIcon as oe}from"@phosphor-icons/react/Lock";import{XIcon as ne}from"@phosphor-icons/react/X";import{createContext as N,forwardRef as P,useCallback as O,useContext as S,useEffect as ae,useMemo as W,useRef as C}from"react";import{Fragment as le,jsx as s,jsxs as _}from"react/jsx-runtime";var L=t=>Array.isArray(t)&&t.every(r=>typeof r=="string"),ie=[],V=N({current:null}),K=N({current:[]}),I=N({onInputKeyDownRef:{current:void 0},inputRef:{current:null}}),B=({children:t,defaultSelectedValue:r=[],...o})=>{let n=C(null),u=C(void 0),i=C(null),m=C([]),f=W(()=>({onInputKeyDownRef:u,inputRef:i}),[]);return s(V.Provider,{value:n,children:s(I.Provider,{value:f,children:s(K.Provider,{value:m,children:s(d.ComboboxProvider,{defaultSelectedValue:r,...o,children:t})})})})};B.displayName="MultiSelect";var F=P(({"aria-invalid":t,className:r,children:o,onMouseDown:n,validation:u,...i},m)=>{let f=S(V),{inputRef:l}=S(I),h=t!=null&&t!=="false"?"error":typeof u=="function"?u():u;return s("div",{role:"group","data-slot":"multi-select-trigger",className:y("cursor-text select-none font-sans text-sm","border-form bg-form text-strong flex w-full flex-wrap items-center gap-1 rounded-md border px-2 py-1.5","has-focus:outline-hidden has-focus-within:ring-4 has-aria-expanded:ring-4","has-focus-within:border-accent-600 has-focus-within:ring-focus-accent has-aria-expanded:border-accent-600 has-aria-expanded:ring-focus-accent","hover:border-neutral-400","data-validation-success:border-success-600 data-validation-success:has-focus-within:border-success-600 data-validation-success:has-focus-within:ring-focus-success data-validation-success:has-aria-expanded:border-success-600 data-validation-success:has-aria-expanded:ring-focus-success","data-validation-warning:border-warning-600 data-validation-warning:has-focus-within:border-warning-600 data-validation-warning:has-focus-within:ring-focus-warning data-validation-warning:has-aria-expanded:border-warning-600 data-validation-warning:has-aria-expanded:ring-focus-warning","data-validation-error:border-danger-600 data-validation-error:has-focus-within:border-danger-600 data-validation-error:has-focus-within:ring-focus-danger data-validation-error:has-aria-expanded:border-danger-600 data-validation-error:has-aria-expanded:ring-focus-danger",r),"data-validation":h||void 0,onMouseDown:b=>{b.target instanceof HTMLElement&&!b.target.closest("button, input, [role='option']")&&(b.preventDefault(),l.current?.focus()),n?.(b)},ref:k(f,m),...i,children:o})});F.displayName="MultiSelectTrigger";var H=P(({className:t,value:r,onRemove:o,locked:n=!1,onKeyDown:u,...i},m)=>{let f=C(null);return _("span",{ref:k(f,m),role:"option","aria-selected":!0,tabIndex:-1,"data-slot":"multi-select-tag","data-locked":n||void 0,className:y("cursor-default bg-neutral-100 border border-neutral-300 rounded-xs text-strong inline-flex items-center gap-1 pl-1.5 pr-1 py-0.5 text-xs font-semibold font-mono","focus-visible:outline-hidden focus-visible:border-accent-600/50 focus-visible:ring-3 focus-visible:ring-focus-accent",t),onKeyDown:l=>{if(n&&(l.key==="Backspace"||l.key==="Delete")){l.preventDefault(),E(l.currentTarget);return}u?.(l)},...i,children:[r,s("button",{type:"button","aria-label":`Remove ${r}`,tabIndex:-1,"aria-disabled":n||void 0,className:y("cursor-pointer hover:bg-neutral-200 hover:text-strong text-strong/25 rounded-sm p-px size-4","aria-disabled:cursor-default aria-disabled:hover:bg-transparent aria-disabled:hover:text-strong/25"),onClick:l=>{if(l.stopPropagation(),n){let c=f.current;c&&E(c);return}o?.()},onMouseDown:l=>{l.preventDefault()},children:s(D,{svg:n?s(oe,{}):s(ne,{weight:"bold"}),className:"size-3"})})]})});H.displayName="MultiSelectTag";var X=({children:t,lockedValues:r=[]})=>{let o=d.useComboboxContext(),n=d.useStoreState(o,"selectedValue"),i=(L(n)?n:void 0)??ie,m=C(i);m.current=i;let f=S(K);f.current=r;let l=W(()=>new Set(r),[r]),c=C(new Map),{onInputKeyDownRef:h,inputRef:b}=S(I),x=C(new Set);ae(()=>()=>{x.current.forEach(cancelAnimationFrame)},[]);let M=e=>{let a;a=requestAnimationFrame(()=>{x.current.delete(a),e()}),x.current.add(a)},w=e=>{if(o){let a=o.getState().selectedValue;if(!L(a))return;o.setSelectedValue(a.filter(g=>g!==e))}},p=e=>{let a=m.current[e];if(a==null)return;let g=c.current.get(a);g&&(g.focus(),o?.show())},R=()=>{b.current?.focus()},ee=(e,a)=>{let g=i[a];switch(e.key){case"ArrowLeft":{e.preventDefault(),a>0&&p(a-1);break}case"ArrowRight":{e.preventDefault(),a<i.length-1?p(a+1):R();break}case"Backspace":case"Delete":{if(e.preventDefault(),g!=null){if(l.has(g)){let v=c.current.get(g);v&&E(v);break}if(w(g),e.key==="Backspace")if(a>0){let v=a-1;M(()=>p(v))}else M(()=>{m.current.length>0?p(0):R()});else M(()=>{a<m.current.length?p(a):R()})}break}case"ArrowUp":case"ArrowDown":{e.preventDefault(),R(),b.current?.dispatchEvent(new KeyboardEvent("keydown",{key:e.key,bubbles:!0,cancelable:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey}));break}default:{e.key.length===1&&!e.ctrlKey&&!e.metaKey&&R();break}}},te=e=>{if(e.key==="ArrowLeft"&&e.currentTarget.selectionStart===0&&e.currentTarget.selectionEnd===0&&i.length>0){e.preventDefault(),p(i.length-1);return}if(e.key==="Backspace"&&e.currentTarget.value===""&&i.length>0){let a=i[i.length-1];if(a!=null)if(f.current.includes(a)){let g=c.current.get(a);g&&E(g)}else w(a)}};return h.current=te,s(le,{children:i.map((e,a)=>{let g={value:e,locked:l.has(e),onRemove:()=>{if(l.has(e)){let v=c.current.get(e);v&&E(v);return}w(e)},ref:v=>{v?c.current.set(e,v):c.current.delete(e)},onKeyDown:v=>ee(v,a),onClick:()=>p(a)};return t?t(g):s(H,{...g},e)})})};X.displayName="MultiSelectTagValues";var j=P(({className:t,onBlur:r,onChange:o,onFocus:n,onKeyDown:u,onValueChange:i,placeholder:m,...f},l)=>{let c=d.useComboboxContext(),{onInputKeyDownRef:h,inputRef:b}=S(I),x=d.useStoreState(c,"selectedValue"),w=((L(x)?x:void 0)?.length??0)>0;return s(d.Combobox,{autoSelect:!0,"data-slot":"multi-select-input",className:y("pointer-coarse:text-base min-w-20 flex-1 select-text border-0 bg-transparent text-sm outline-hidden","placeholder:select-none placeholder:text-placeholder",t),onChange:p=>{i?.(p.target.value),o?.(p)},onKeyDown:p=>{h.current?.(p),u?.(p)},onBlur:p=>{p.relatedTarget instanceof HTMLElement&&p.relatedTarget.closest('[data-slot="multi-select-tag"]')&&c?.show(),r?.(p)},onFocus:p=>{c?.show(),n?.(p)},placeholder:w?void 0:m,ref:k(b,l),...f})});j.displayName="MultiSelectInput";var z=P(({asChild:t=!1,backdrop:r=!1,children:o,className:n,modal:u=!0,sameWidth:i=!0,unmountOnHide:m=!0,...f},l)=>{let c=S(V),h=O(()=>c.current?.getBoundingClientRect()??null,[c]),b=O(x=>!(x.target instanceof Node&&c.current?.contains(x.target)),[c]);return s(d.ComboboxPopover,{"data-slot":"multi-select-content",className:y("border-popover bg-popover relative z-50 max-h-96 min-w-32 scrollbar overflow-y-scroll overflow-x-hidden overscroll-y-none rounded-md border shadow-md pt-1 pb-1 has-data-content-footer:pb-0 font-sans flex flex-col gap-px focus:outline-hidden",n),backdrop:r,getAnchorRect:h,gutter:4,hideOnInteractOutside:b,modal:u,ref:l,render:t?({ref:x,...M})=>s(T,{ref:x,...M}):void 0,sameWidth:i,unmountOnHide:m,...f,children:o})});z.displayName="MultiSelectContent";var Y=P(({asChild:t=!1,children:r,className:o,focusOnHover:n=!0,value:u,onClick:i,...m},f)=>{let l=S(K),c=u!=null&&l.current.includes(u);return _(d.ComboboxItem,{"data-slot":"multi-select-item",className:y("mx-1 cursor-pointer rounded-md px-2 py-1.5 text-strong text-sm font-normal flex min-w-0 items-center justify-between gap-2","[[role=option]+&]:mt-px","data-active-item:bg-active-menu-item","aria-disabled:opacity-50","aria-selected:bg-selected-menu-item aria-selected:data-active-item:bg-active-selected-menu-item",o),focusOnHover:n,onClick:h=>{if(c){h.preventDefault();return}i?.(h)},ref:f,render:t?({ref:h,...b})=>s(T,{ref:h,...b}):void 0,resetValueOnSelect:!0,value:u,...m,children:[r,s(d.ComboboxItemCheck,{children:s(D,{svg:s(re,{weight:"bold"}),className:"size-4 text-accent-600"})})]})});Y.displayName="MultiSelectItem";var q=P(({asChild:t=!1,children:r,...o},n)=>s(d.ComboboxGroup,{"data-slot":"multi-select-group",className:"mx-1",ref:n,render:t?({ref:u,...i})=>s(T,{ref:u,...i}):void 0,...o,children:r}));q.displayName="MultiSelectGroup";var U=P(({asChild:t=!1,children:r,className:o,...n},u)=>s(d.ComboboxGroupLabel,{"data-slot":"multi-select-group-label",className:y("text-muted px-2 py-1 text-xs font-medium",o),ref:u,render:t?({ref:i,...m})=>s(T,{ref:i,...m}):void 0,...n,children:r}));U.displayName="MultiSelectGroupLabel";var $=P(({className:t,children:r,...o},n)=>s("p",{"data-slot":"multi-select-group-description",className:y("text-muted px-2 pb-1 text-xs",t),ref:n,...o,children:r}));$.displayName="MultiSelectGroupDescription";var J=P(({className:t,...r},o)=>s(A,{"data-slot":"multi-select-separator",ref:o,className:y("my-1 w-auto",t),...r}));J.displayName="MultiSelectSeparator";var Q=P(({className:t,children:r,...o},n)=>s("div",{"data-slot":"multi-select-empty",className:y("mx-1 text-muted px-2 py-6 text-center text-sm",t),ref:n,role:"presentation",...o,children:r}));Q.displayName="MultiSelectEmpty";var Z=P(({className:t,children:r,...o},n)=>s("div",{ref:n,"data-slot":"multi-select-content-footer","data-content-footer":!0,className:y("bg-popover sticky bottom-0 border-t border-popover",t),...o,children:r}));Z.displayName="MultiSelectContentFooter";var se={Root:B,Trigger:F,TagValues:X,Input:j,Tag:H,Content:z,ContentFooter:Z,Item:Y,Group:q,GroupLabel:U,GroupDescription:$,Separator:J,Empty:Q};function E(t){G()||t.animate([{transform:"translateX(0)"},{transform:"translateX(-4px)"},{transform:"translateX(4px)"},{transform:"translateX(-4px)"},{transform:"translateX(4px)"},{transform:"translateX(0)"}],{duration:300,easing:"ease-in-out"})}export{se as MultiSelect};
1
+ import{t as e}from"./cx-bKromGBh.js";import{t}from"./icon-B5oNYYrJ.js";import{t as n}from"./slot-DdnjeV2n.js";import{t as r}from"./compose-refs-DeIsFv68.js";import{n as i}from"./separator-BcCNbHBg.js";import{t as a}from"./use-prefers-reduced-motion-BPlsKyCJ.js";import{createContext as o,forwardRef as s,useCallback as c,useContext as l,useEffect as u,useMemo as d,useRef as f}from"react";import{Fragment as p,jsx as m,jsxs as h}from"react/jsx-runtime";import{XIcon as g}from"@phosphor-icons/react/X";import{CheckIcon as _}from"@phosphor-icons/react/Check";import*as v from"@ariakit/react";import{LockIcon as y}from"@phosphor-icons/react/Lock";const b=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),x=[],S=o({current:null}),C=o({current:[]}),w=o({onInputKeyDownRef:{current:void 0},inputRef:{current:null}}),T=({children:e,defaultSelectedValue:t=[],...n})=>{let r=f(null),i=f(void 0),a=f(null),o=f([]),s=d(()=>({onInputKeyDownRef:i,inputRef:a}),[]);return m(S.Provider,{value:r,children:m(w.Provider,{value:s,children:m(C.Provider,{value:o,children:m(v.ComboboxProvider,{defaultSelectedValue:t,...n,children:e})})})})};T.displayName=`MultiSelect`;const E=s(({"aria-invalid":t,className:n,children:i,onMouseDown:a,validation:o,...s},c)=>{let u=l(S),{inputRef:d}=l(w),f=t!=null&&t!==`false`?`error`:typeof o==`function`?o():o;return m(`div`,{role:`group`,"data-slot":`multi-select-trigger`,className:e(`cursor-text select-none font-sans text-sm`,`border-form bg-form text-strong flex w-full flex-wrap items-center gap-1 rounded-md border px-2 py-1.5`,`has-focus:outline-hidden has-focus-within:ring-4 has-aria-expanded:ring-4`,`has-focus-within:border-accent-600 has-focus-within:ring-focus-accent has-aria-expanded:border-accent-600 has-aria-expanded:ring-focus-accent`,`hover:border-neutral-400`,`data-validation-success:border-success-600 data-validation-success:has-focus-within:border-success-600 data-validation-success:has-focus-within:ring-focus-success data-validation-success:has-aria-expanded:border-success-600 data-validation-success:has-aria-expanded:ring-focus-success`,`data-validation-warning:border-warning-600 data-validation-warning:has-focus-within:border-warning-600 data-validation-warning:has-focus-within:ring-focus-warning data-validation-warning:has-aria-expanded:border-warning-600 data-validation-warning:has-aria-expanded:ring-focus-warning`,`data-validation-error:border-danger-600 data-validation-error:has-focus-within:border-danger-600 data-validation-error:has-focus-within:ring-focus-danger data-validation-error:has-aria-expanded:border-danger-600 data-validation-error:has-aria-expanded:ring-focus-danger`,n),"data-validation":f||void 0,onMouseDown:e=>{e.target instanceof HTMLElement&&!e.target.closest(`button, input, [role='option']`)&&(e.preventDefault(),d.current?.focus()),a?.(e)},ref:r(u,c),...s,children:i})});E.displayName=`MultiSelectTrigger`;const D=s(({className:n,value:i,onRemove:a,locked:o=!1,onKeyDown:s,...c},l)=>{let u=f(null);return h(`span`,{ref:r(u,l),role:`option`,"aria-selected":!0,tabIndex:-1,"data-slot":`multi-select-tag`,"data-locked":o||void 0,className:e(`cursor-default bg-neutral-100 border border-neutral-300 rounded-xs text-strong inline-flex items-center gap-1 pl-1.5 pr-1 py-0.5 text-xs font-semibold font-mono`,`focus-visible:outline-hidden focus-visible:border-accent-600/50 focus-visible:ring-3 focus-visible:ring-focus-accent`,n),onKeyDown:e=>{if(o&&(e.key===`Backspace`||e.key===`Delete`)){e.preventDefault(),z(e.currentTarget);return}s?.(e)},...c,children:[i,m(`button`,{type:`button`,"aria-label":`Remove ${i}`,tabIndex:-1,"aria-disabled":o||void 0,className:e(`cursor-pointer hover:bg-neutral-200 hover:text-strong text-strong/25 rounded-sm p-px size-4`,`aria-disabled:cursor-default aria-disabled:hover:bg-transparent aria-disabled:hover:text-strong/25`),onClick:e=>{if(e.stopPropagation(),o){let e=u.current;e&&z(e);return}a?.()},onMouseDown:e=>{e.preventDefault()},children:m(t,{svg:o?m(y,{}):m(g,{weight:`bold`}),className:`size-3`})})]})});D.displayName=`MultiSelectTag`;const O=({children:e,lockedValues:t=[]})=>{let n=v.useComboboxContext(),r=v.useStoreState(n,`selectedValue`),i=(b(r)?r:void 0)??x,a=f(i);a.current=i;let o=l(C);o.current=t;let s=d(()=>new Set(t),[t]),c=f(new Map),{onInputKeyDownRef:h,inputRef:g}=l(w),_=f(new Set);u(()=>()=>{_.current.forEach(cancelAnimationFrame)},[]);let y=e=>{let t;t=requestAnimationFrame(()=>{_.current.delete(t),e()}),_.current.add(t)},S=e=>{if(n){let t=n.getState().selectedValue;if(!b(t))return;n.setSelectedValue(t.filter(t=>t!==e))}},T=e=>{let t=a.current[e];if(t==null)return;let r=c.current.get(t);r&&(r.focus(),n?.show())},E=()=>{g.current?.focus()},O=(e,t)=>{let n=i[t];switch(e.key){case`ArrowLeft`:e.preventDefault(),t>0&&T(t-1);break;case`ArrowRight`:e.preventDefault(),t<i.length-1?T(t+1):E();break;case`Backspace`:case`Delete`:if(e.preventDefault(),n!=null){if(s.has(n)){let e=c.current.get(n);e&&z(e);break}if(S(n),e.key===`Backspace`)if(t>0){let e=t-1;y(()=>T(e))}else y(()=>{a.current.length>0?T(0):E()});else y(()=>{t<a.current.length?T(t):E()})}break;case`ArrowUp`:case`ArrowDown`:e.preventDefault(),E(),g.current?.dispatchEvent(new KeyboardEvent(`keydown`,{key:e.key,bubbles:!0,cancelable:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,altKey:e.altKey}));break;default:e.key.length===1&&!e.ctrlKey&&!e.metaKey&&E();break}};return h.current=e=>{if(e.key===`ArrowLeft`&&e.currentTarget.selectionStart===0&&e.currentTarget.selectionEnd===0&&i.length>0){e.preventDefault(),T(i.length-1);return}if(e.key===`Backspace`&&e.currentTarget.value===``&&i.length>0){let e=i[i.length-1];if(e!=null)if(o.current.includes(e)){let t=c.current.get(e);t&&z(t)}else S(e)}},m(p,{children:i.map((t,n)=>{let r={value:t,locked:s.has(t),onRemove:()=>{if(s.has(t)){let e=c.current.get(t);e&&z(e);return}S(t)},ref:e=>{e?c.current.set(t,e):c.current.delete(t)},onKeyDown:e=>O(e,n),onClick:()=>T(n)};return e?e(r):m(D,{...r},t)})})};O.displayName=`MultiSelectTagValues`;const k=s(({className:t,onBlur:n,onChange:i,onFocus:a,onKeyDown:o,onValueChange:s,placeholder:c,...u},d)=>{let f=v.useComboboxContext(),{onInputKeyDownRef:p,inputRef:h}=l(w),g=v.useStoreState(f,`selectedValue`),_=((b(g)?g:void 0)?.length??0)>0;return m(v.Combobox,{autoSelect:!0,"data-slot":`multi-select-input`,className:e(`pointer-coarse:text-base min-w-20 flex-1 select-text border-0 bg-transparent text-sm outline-hidden`,`placeholder:select-none placeholder:text-placeholder`,t),onChange:e=>{s?.(e.target.value),i?.(e)},onKeyDown:e=>{p.current?.(e),o?.(e)},onBlur:e=>{e.relatedTarget instanceof HTMLElement&&e.relatedTarget.closest(`[data-slot="multi-select-tag"]`)&&f?.show(),n?.(e)},onFocus:e=>{f?.show(),a?.(e)},placeholder:_?void 0:c,ref:r(h,d),...u})});k.displayName=`MultiSelectInput`;const A=s(({asChild:t=!1,backdrop:r=!1,children:i,className:a,modal:o=!0,portalElement:s,sameWidth:u=!0,unmountOnHide:d=!0,...f},p)=>{let h=l(S),g=c(()=>h.current?.getBoundingClientRect()??null,[h]),_=c(e=>typeof s==`function`?s(e):s??h.current?.closest(`[data-mantle-modal-content]`)??e.ownerDocument.body,[s,h]),y=c(e=>!(e.target instanceof Node&&h.current?.contains(e.target)),[h]);return m(v.ComboboxPopover,{"data-slot":`multi-select-content`,className:e(`border-popover bg-popover relative z-50 max-h-96 min-w-32 scrollbar overflow-y-scroll overflow-x-hidden overscroll-y-none rounded-md border shadow-md pt-1 pb-1 has-data-content-footer:pb-0 font-sans flex flex-col gap-px focus:outline-hidden`,a),backdrop:r,getAnchorRect:g,gutter:4,hideOnInteractOutside:y,modal:o,portalElement:_,ref:p,render:t?({ref:e,...t})=>m(n,{ref:e,...t}):void 0,sameWidth:u,unmountOnHide:d,...f,children:i})});A.displayName=`MultiSelectContent`;const j=s(({asChild:r=!1,children:i,className:a,focusOnHover:o=!0,value:s,onClick:c,...u},d)=>{let f=l(C),p=s!=null&&f.current.includes(s);return h(v.ComboboxItem,{"data-slot":`multi-select-item`,className:e(`mx-1 cursor-pointer rounded-md px-2 py-1.5 text-strong text-sm font-normal flex min-w-0 items-center justify-between gap-2`,`[[role=option]+&]:mt-px`,`data-active-item:bg-active-menu-item`,`aria-disabled:opacity-50`,`aria-selected:bg-selected-menu-item aria-selected:data-active-item:bg-active-selected-menu-item`,a),focusOnHover:o,onClick:e=>{if(p){e.preventDefault();return}c?.(e)},ref:d,render:r?({ref:e,...t})=>m(n,{ref:e,...t}):void 0,resetValueOnSelect:!0,value:s,...u,children:[i,m(v.ComboboxItemCheck,{children:m(t,{svg:m(_,{weight:`bold`}),className:`size-4 text-accent-600`})})]})});j.displayName=`MultiSelectItem`;const M=s(({asChild:e=!1,children:t,...r},i)=>m(v.ComboboxGroup,{"data-slot":`multi-select-group`,className:`mx-1`,ref:i,render:e?({ref:e,...t})=>m(n,{ref:e,...t}):void 0,...r,children:t}));M.displayName=`MultiSelectGroup`;const N=s(({asChild:t=!1,children:r,className:i,...a},o)=>m(v.ComboboxGroupLabel,{"data-slot":`multi-select-group-label`,className:e(`text-muted px-2 py-1 text-xs font-medium`,i),ref:o,render:t?({ref:e,...t})=>m(n,{ref:e,...t}):void 0,...a,children:r}));N.displayName=`MultiSelectGroupLabel`;const P=s(({className:t,children:n,...r},i)=>m(`p`,{"data-slot":`multi-select-group-description`,className:e(`text-muted px-2 pb-1 text-xs`,t),ref:i,...r,children:n}));P.displayName=`MultiSelectGroupDescription`;const F=s(({className:t,...n},r)=>m(i,{"data-slot":`multi-select-separator`,ref:r,className:e(`my-1 w-auto`,t),...n}));F.displayName=`MultiSelectSeparator`;const I=s(({className:t,children:n,...r},i)=>m(`div`,{"data-slot":`multi-select-empty`,className:e(`mx-1 text-muted px-2 py-6 text-center text-sm`,t),ref:i,role:`presentation`,...r,children:n}));I.displayName=`MultiSelectEmpty`;const L=s(({className:t,children:n,...r},i)=>m(`div`,{ref:i,"data-slot":`multi-select-content-footer`,"data-content-footer":!0,className:e(`bg-popover sticky bottom-0 border-t border-popover`,t),...r,children:n}));L.displayName=`MultiSelectContentFooter`;const R={Root:T,Trigger:E,TagValues:O,Input:k,Tag:D,Content:A,ContentFooter:L,Item:j,Group:M,GroupLabel:N,GroupDescription:P,Separator:F,Empty:I};function z(e){a()||e.animate([{transform:`translateX(0)`},{transform:`translateX(-4px)`},{transform:`translateX(4px)`},{transform:`translateX(-4px)`},{transform:`translateX(4px)`},{transform:`translateX(0)`}],{duration:300,easing:`ease-in-out`})}export{R as MultiSelect};
2
2
  //# sourceMappingURL=multi-select.js.map