@spear-ai/spectral 1.12.2 → 1.12.3

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 (187) hide show
  1. package/dist/.js +1 -0
  2. package/dist/Accordion-Cyrb2byI.js +1 -1
  3. package/dist/Accordion.js +1 -0
  4. package/dist/Alert/AlertBase.js +2 -2
  5. package/dist/Alert.js +2 -2
  6. package/dist/AnimatePresence-D9FLxIGV.js +1 -1
  7. package/dist/App.js +2 -1
  8. package/dist/Avatar.js +2 -2
  9. package/dist/Badge.js +2 -1
  10. package/dist/Button.js +2 -2
  11. package/dist/ButtonGroup/ButtonGroupButton.js +2 -1
  12. package/dist/ButtonGroup.js +2 -2
  13. package/dist/ButtonIcon.js +2 -2
  14. package/dist/Calendar-2UVWeLYp.js +1 -1
  15. package/dist/Checkbox/CheckboxBase.js +2 -2
  16. package/dist/Checkbox.js +2 -1
  17. package/dist/Combination-9q50p_Vu.js +1 -1
  18. package/dist/Combobox/ComboboxBase.js +2 -2
  19. package/dist/Combobox-Ch5Rxk5v.js +1 -1
  20. package/dist/Combobox.js +1 -0
  21. package/dist/ControlGroup/ControlGroupSelect.js +7 -7
  22. package/dist/ControlGroup.js +2 -2
  23. package/dist/DataCard/Card.js +2 -1
  24. package/dist/DataCard.js +2 -1
  25. package/dist/DateTimePicker/Calendar.js +1 -0
  26. package/dist/DateTimePicker/DateTimeDisplayInput.js +2 -2
  27. package/dist/DateTimePicker/DateTimeInput.js +2 -2
  28. package/dist/DateTimePicker/TimePeriodSelect.js +8 -8
  29. package/dist/DateTimePicker/TimePicker.js +2 -2
  30. package/dist/DateTimePicker.js +2 -2
  31. package/dist/Dialog.js +2 -1
  32. package/dist/Drawer.js +2 -1
  33. package/dist/DropdownMenu.js +2 -2
  34. package/dist/HoverCard-BGpW6LnA.js +1 -1
  35. package/dist/HoverCard.js +1 -0
  36. package/dist/Icons/AdjustmentsIcon.js +2 -1
  37. package/dist/Icons/AnalyzeIcon.js +2 -1
  38. package/dist/Icons/AnnotationsIcon.js +2 -1
  39. package/dist/Icons/ApprovedIcon.js +2 -1
  40. package/dist/Icons/ArrowDownIcon.js +2 -1
  41. package/dist/Icons/ArrowUpIcon.js +2 -1
  42. package/dist/Icons/BoxToolIcon.js +2 -1
  43. package/dist/Icons/CalendarIcon.js +2 -1
  44. package/dist/Icons/CheckCircleIcon.js +2 -1
  45. package/dist/Icons/CheckSquareIcon.js +2 -1
  46. package/dist/Icons/CheckmarkIcon.js +2 -1
  47. package/dist/Icons/ChevronDownIcon.js +2 -1
  48. package/dist/Icons/ChevronUpIcon.js +2 -1
  49. package/dist/Icons/ClockIcon.js +2 -1
  50. package/dist/Icons/CloseCircleIcon.js +2 -1
  51. package/dist/Icons/CloseIcon.js +2 -1
  52. package/dist/Icons/Crosshairs2Icon.js +2 -1
  53. package/dist/Icons/CrosshairsIcon.js +2 -1
  54. package/dist/Icons/DashboardIcon.js +2 -1
  55. package/dist/Icons/DatabaseIcon.js +2 -1
  56. package/dist/Icons/DeleteIcon.js +2 -1
  57. package/dist/Icons/DurationIcon.js +2 -1
  58. package/dist/Icons/EditIcon.js +2 -1
  59. package/dist/Icons/EmailIcon.js +2 -1
  60. package/dist/Icons/EraserIcon.js +2 -2
  61. package/dist/Icons/ErrorIcon.js +2 -1
  62. package/dist/Icons/EyeClosedIcon.js +2 -1
  63. package/dist/Icons/EyeClosedIcon2.js +2 -1
  64. package/dist/Icons/EyeOpenIcon.js +2 -1
  65. package/dist/Icons/FileDownloadIcon.js +2 -1
  66. package/dist/Icons/GoToFirstIcon.js +2 -1
  67. package/dist/Icons/GoToLastIcon.js +2 -1
  68. package/dist/Icons/HarmonicCursorsIcon.js +2 -1
  69. package/dist/Icons/IconBase.js +2 -2
  70. package/dist/Icons/InfoIcon.js +2 -1
  71. package/dist/Icons/KeyboardIcon.js +2 -1
  72. package/dist/Icons/LabelIcon.js +2 -1
  73. package/dist/Icons/LassoIcon.js +2 -1
  74. package/dist/Icons/LineToolIcon.js +2 -1
  75. package/dist/Icons/LiveViewIcon.js +2 -1
  76. package/dist/Icons/LoaderIcon.js +2 -2
  77. package/dist/Icons/LocationIcon.js +2 -1
  78. package/dist/Icons/LogoutIcon.js +2 -1
  79. package/dist/Icons/MaximizeIcon.js +2 -1
  80. package/dist/Icons/MeasureIcon.js +2 -1
  81. package/dist/Icons/MenuDotsIcon.js +2 -1
  82. package/dist/Icons/MenuIcon.js +2 -1
  83. package/dist/Icons/MessagesIcon.js +2 -1
  84. package/dist/Icons/MetadataIcon.js +2 -1
  85. package/dist/Icons/MinimizeIcon.js +2 -1
  86. package/dist/Icons/MinusIcon.js +2 -1
  87. package/dist/Icons/OntologyIcon.js +2 -1
  88. package/dist/Icons/PanelIconClose.js +2 -1
  89. package/dist/Icons/PanelIconOpen.js +2 -1
  90. package/dist/Icons/PauseIcon.js +2 -1
  91. package/dist/Icons/PlayIcon.js +2 -1
  92. package/dist/Icons/PlusIcon.js +2 -1
  93. package/dist/Icons/PolygonIcon.js +2 -1
  94. package/dist/Icons/PrinterIcon.js +2 -1
  95. package/dist/Icons/ProgressCheckIcon.js +2 -1
  96. package/dist/Icons/ResetIcon.js +2 -1
  97. package/dist/Icons/ReviewedIcon.js +2 -1
  98. package/dist/Icons/ScissorsIcon.js +2 -1
  99. package/dist/Icons/SearchIcon.js +2 -1
  100. package/dist/Icons/SettingsIcon.js +2 -1
  101. package/dist/Icons/SortAscendingIcon.js +2 -1
  102. package/dist/Icons/SortAtoZIcon.js +2 -1
  103. package/dist/Icons/SortDescendingIcon.js +2 -1
  104. package/dist/Icons/SortZtoAIcon.js +2 -1
  105. package/dist/Icons/SparklesIcon.js +2 -1
  106. package/dist/Icons/StackIcon.js +2 -1
  107. package/dist/Icons/StarIcon.js +2 -1
  108. package/dist/Icons/TrashIcon.js +2 -1
  109. package/dist/Icons/UndoIcon.js +2 -1
  110. package/dist/Icons/UploadIcon.js +2 -1
  111. package/dist/Icons/User2Icon.js +2 -1
  112. package/dist/Icons/UserIcon.js +2 -1
  113. package/dist/Icons/WarningIcon.js +2 -1
  114. package/dist/Icons/ZoomAllIcon.js +2 -1
  115. package/dist/Icons/ZoomXIcon.js +2 -1
  116. package/dist/Icons/ZoomYIcon.js +2 -1
  117. package/dist/Icons.js +1 -0
  118. package/dist/IconsAnimated/PanelLeftCloseIcon.js +2 -2
  119. package/dist/IconsAnimated/PanelLeftOpenIcon.js +2 -2
  120. package/dist/IconsAnimated.js +1 -0
  121. package/dist/Input/InputUtils.js +1 -1
  122. package/dist/Input.js +2 -2
  123. package/dist/InputNumeric.js +2 -2
  124. package/dist/InputOTP-BkSw_KIB.js +1 -1
  125. package/dist/InputOTP.js +1 -0
  126. package/dist/Kbd.js +2 -1
  127. package/dist/Label.js +2 -1
  128. package/dist/MultiSelect/MultiSelectBase.js +2 -2
  129. package/dist/MultiSelect.js +2 -1
  130. package/dist/Popover.js +2 -1
  131. package/dist/RadioButton.js +2 -1
  132. package/dist/RadioButtonGroup/RadioButtonGroupBase.js +2 -2
  133. package/dist/RadioButtonGroup.js +2 -1
  134. package/dist/RadioGroup-CfjhpW5o.js +1 -1
  135. package/dist/RadioGroup.js +1 -0
  136. package/dist/Select.js +56 -57
  137. package/dist/Separator.js +2 -1
  138. package/dist/Skeleton.js +2 -1
  139. package/dist/Slider-mODhqkCs.js +1 -1
  140. package/dist/Slider.js +1 -0
  141. package/dist/SpectralProvider.js +2 -1
  142. package/dist/Switch/SwitchBase.js +2 -2
  143. package/dist/Switch-Wj_zov--.js +1 -1
  144. package/dist/Switch.js +1 -0
  145. package/dist/Tabs/TabsBase.js +2 -2
  146. package/dist/Tabs.js +2 -1
  147. package/dist/Textarea/TextareaUtils.js +1 -1
  148. package/dist/Textarea.js +2 -2
  149. package/dist/Toast-CJvzLlMD.js +1 -1
  150. package/dist/Toast.js +1 -0
  151. package/dist/Toggle/ToggleBase.js +2 -2
  152. package/dist/Toggle.js +2 -1
  153. package/dist/ToggleGroup/ToggleGroupBase.js +2 -2
  154. package/dist/ToggleGroup.js +2 -2
  155. package/dist/Tooltip-DH_BzFye.js +1 -1
  156. package/dist/Tooltip.js +1 -0
  157. package/dist/Tray.js +2 -2
  158. package/dist/dist-7HRQ5IKN.js +1 -1
  159. package/dist/dist-BMu6Dgh_.js +1 -1
  160. package/dist/dist-CGzgmYB9.js +1 -1
  161. package/dist/dist-ChNh3U3S.js +1 -1
  162. package/dist/dist-Cv8I-d2q.js +1 -1
  163. package/dist/dist-D6QANKSj.js +1 -1
  164. package/dist/dist-jQ7HawWM.js +1 -1
  165. package/dist/dist-nYKAWiy4.js +1 -1
  166. package/dist/hooks/useAccordionAutoScroll.js +1 -1
  167. package/dist/hooks/useControllableState.js +1 -1
  168. package/dist/hooks/useConvertToOklch.js +1 -1
  169. package/dist/hooks/useTheme.js +1 -1
  170. package/dist/hooks/useUncontrolledState.js +1 -1
  171. package/dist/main.js +2 -2
  172. package/dist/primitives/button.js +1 -0
  173. package/dist/primitives/input-group.js +1 -0
  174. package/dist/primitives/input.js +1 -0
  175. package/dist/primitives/popover.js +1 -0
  176. package/dist/primitives/select.d.ts.map +1 -1
  177. package/dist/primitives/select.js +3 -127
  178. package/dist/primitives/slot.js +1 -1
  179. package/dist/primitives/textarea.js +1 -0
  180. package/dist/proxy-CCB7C4Pu.js +1 -1
  181. package/dist/select-D5Jexytu.js +797 -0
  182. package/dist/styles/spectral.css +1 -1
  183. package/dist/utils/dropdownPositioning.js +1 -1
  184. package/dist/utils/dropdownPositioning.test.js +1 -0
  185. package/dist/utils/formFieldUtils.js +1 -1
  186. package/package.json +3 -3
  187. package/dist/dist-C9fJjxxB.js +0 -677
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spear-ai/spectral",
3
- "version": "1.12.2",
3
+ "version": "1.12.3",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "repository": {
@@ -132,9 +132,9 @@
132
132
  "scripts": {
133
133
  "dev": "vite --force",
134
134
  "build": "vite build --emptyOutDir",
135
- "build:lib": "pnpm run icons:update && vite build && pnpm run check:dist-import-boundaries && pnpm run build:css && pnpm run fix:types && pnpm run clean:build-artifacts",
135
+ "build:lib": "pnpm run icons:update && vite build && pnpm run check:entry-client-directives && pnpm run build:css && pnpm run fix:types && pnpm run clean:build-artifacts",
136
136
  "build:css": "node scripts/build-css.js",
137
- "check:dist-import-boundaries": "node scripts/check-dist-import-boundaries.js",
137
+ "check:entry-client-directives": "node scripts/check-entry-client-directives.js",
138
138
  "pack:dryrun": "pnpm pack --dry-run",
139
139
  "check": "tsc --noEmit && pnpm run format && pnpm run lint",
140
140
  "fix": "pnpm run format:fix && pnpm run lint:fix",
@@ -1,677 +0,0 @@
1
- import "./styles/main.css";
2
- import { a as e, d as t, i as n, l as r, o as i, r as a, t as o } from "./dist-7HRQ5IKN.js";
3
- import { n as s, t as c } from "./dist-CGzgmYB9.js";
4
- import { t as l } from "./dist-Dtvmk11N.js";
5
- import { t as u } from "./dist-DDjUcieO.js";
6
- import { t as d } from "./dist-DIt8FP2G.js";
7
- import { n as f, t as p } from "./dist-jQ7HawWM.js";
8
- import { i as m, n as h, r as g, t as _ } from "./Combination-9q50p_Vu.js";
9
- import { a as v, i as y, n as b, r as x, t as S } from "./dist-Cv8I-d2q.js";
10
- import { t as C } from "./dist-DFT13f_s.js";
11
- import { n as w } from "./dist-ChNh3U3S.js";
12
- import * as T from "react";
13
- import * as E from "react-dom";
14
- import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
15
- //#region node_modules/.pnpm/@radix-ui+react-select@2.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_59e27c923ffee0ae02caa79afc2da7e6/node_modules/@radix-ui/react-select/dist/index.mjs
16
- var A = [
17
- " ",
18
- "Enter",
19
- "ArrowUp",
20
- "ArrowDown"
21
- ], j = [" ", "Enter"], M = "Select", [N, P, F] = s(M), [I, ee] = t(M, [F, v]), L = v(), [R, z] = I(M), [te, B] = I(M), V = (e) => {
22
- let { __scopeSelect: t, children: n, open: r, defaultOpen: i, onOpenChange: o, value: s, defaultValue: u, onValueChange: d, dir: f, name: p, autoComplete: m, disabled: h, required: g, form: _ } = e, v = L(t), [b, x] = T.useState(null), [S, C] = T.useState(null), [w, E] = T.useState(!1), D = c(f), [A, j] = a({
23
- prop: r,
24
- defaultProp: i ?? !1,
25
- onChange: o,
26
- caller: M
27
- }), [P, F] = a({
28
- prop: s,
29
- defaultProp: u,
30
- onChange: d,
31
- caller: M
32
- }), I = T.useRef(null), ee = b ? _ || !!b.closest("form") : !0, [z, B] = T.useState(/* @__PURE__ */ new Set()), V = Array.from(z).map((e) => e.props.value).join(";");
33
- return /* @__PURE__ */ O(y, {
34
- ...v,
35
- children: /* @__PURE__ */ k(R, {
36
- required: g,
37
- scope: t,
38
- trigger: b,
39
- onTriggerChange: x,
40
- valueNode: S,
41
- onValueNodeChange: C,
42
- valueNodeHasChildren: w,
43
- onValueNodeHasChildrenChange: E,
44
- contentId: l(),
45
- value: P,
46
- onValueChange: F,
47
- open: A,
48
- onOpenChange: j,
49
- dir: D,
50
- triggerPointerDownPosRef: I,
51
- disabled: h,
52
- children: [/* @__PURE__ */ O(N.Provider, {
53
- scope: t,
54
- children: /* @__PURE__ */ O(te, {
55
- scope: e.__scopeSelect,
56
- onNativeOptionAdd: T.useCallback((e) => {
57
- B((t) => new Set(t).add(e));
58
- }, []),
59
- onNativeOptionRemove: T.useCallback((e) => {
60
- B((t) => {
61
- let n = new Set(t);
62
- return n.delete(e), n;
63
- });
64
- }, []),
65
- children: n
66
- })
67
- }), ee ? /* @__PURE__ */ k(Re, {
68
- "aria-hidden": !0,
69
- required: g,
70
- tabIndex: -1,
71
- name: p,
72
- autoComplete: m,
73
- value: P,
74
- onChange: (e) => F(e.target.value),
75
- disabled: h,
76
- form: _,
77
- children: [P === void 0 ? /* @__PURE__ */ O("option", { value: "" }) : null, Array.from(z)]
78
- }, V) : null]
79
- })
80
- });
81
- };
82
- V.displayName = M;
83
- var H = "SelectTrigger", U = T.forwardRef((t, n) => {
84
- let { __scopeSelect: i, disabled: a = !1, ...s } = t, c = L(i), l = z(H, i), u = l.disabled || a, d = r(n, l.onTriggerChange), f = P(i), p = T.useRef("touch"), [m, h, g] = Be((e) => {
85
- let t = f().filter((e) => !e.disabled), n = Ve(t, e, t.find((e) => e.value === l.value));
86
- n !== void 0 && l.onValueChange(n.value);
87
- }), _ = (e) => {
88
- u || (l.onOpenChange(!0), g()), e && (l.triggerPointerDownPosRef.current = {
89
- x: Math.round(e.pageX),
90
- y: Math.round(e.pageY)
91
- });
92
- };
93
- return /* @__PURE__ */ O(S, {
94
- asChild: !0,
95
- ...c,
96
- children: /* @__PURE__ */ O(o.button, {
97
- type: "button",
98
- role: "combobox",
99
- "aria-controls": l.contentId,
100
- "aria-expanded": l.open,
101
- "aria-required": l.required,
102
- "aria-autocomplete": "none",
103
- dir: l.dir,
104
- "data-state": l.open ? "open" : "closed",
105
- disabled: u,
106
- "data-disabled": u ? "" : void 0,
107
- "data-placeholder": ze(l.value) ? "" : void 0,
108
- ...s,
109
- ref: d,
110
- onClick: e(s.onClick, (e) => {
111
- e.currentTarget.focus(), p.current !== "mouse" && _(e);
112
- }),
113
- onPointerDown: e(s.onPointerDown, (e) => {
114
- p.current = e.pointerType;
115
- let t = e.target;
116
- t.hasPointerCapture(e.pointerId) && t.releasePointerCapture(e.pointerId), e.button === 0 && e.ctrlKey === !1 && e.pointerType === "mouse" && (_(e), e.preventDefault());
117
- }),
118
- onKeyDown: e(s.onKeyDown, (e) => {
119
- let t = m.current !== "";
120
- !(e.ctrlKey || e.altKey || e.metaKey) && e.key.length === 1 && h(e.key), !(t && e.key === " ") && A.includes(e.key) && (_(), e.preventDefault());
121
- })
122
- })
123
- });
124
- });
125
- U.displayName = H;
126
- var W = "SelectValue", G = T.forwardRef((e, t) => {
127
- let { __scopeSelect: i, className: a, style: s, children: c, placeholder: l = "", ...u } = e, d = z(W, i), { onValueNodeHasChildrenChange: f } = d, p = c !== void 0, m = r(t, d.onValueNodeChange);
128
- return n(() => {
129
- f(p);
130
- }, [f, p]), /* @__PURE__ */ O(o.span, {
131
- ...u,
132
- ref: m,
133
- style: { pointerEvents: "none" },
134
- children: ze(d.value) ? /* @__PURE__ */ O(D, { children: l }) : c
135
- });
136
- });
137
- G.displayName = W;
138
- var ne = "SelectIcon", re = T.forwardRef((e, t) => {
139
- let { __scopeSelect: n, children: r, ...i } = e;
140
- return /* @__PURE__ */ O(o.span, {
141
- "aria-hidden": !0,
142
- ...i,
143
- ref: t,
144
- children: r || "▼"
145
- });
146
- });
147
- re.displayName = ne;
148
- var ie = "SelectPortal", ae = (e) => /* @__PURE__ */ O(p, {
149
- asChild: !0,
150
- ...e
151
- });
152
- ae.displayName = ie;
153
- var K = "SelectContent", q = T.forwardRef((e, t) => {
154
- let r = z(K, e.__scopeSelect), [i, a] = T.useState();
155
- if (n(() => {
156
- a(new DocumentFragment());
157
- }, []), !r.open) {
158
- let t = i;
159
- return t ? E.createPortal(/* @__PURE__ */ O(oe, {
160
- scope: e.__scopeSelect,
161
- children: /* @__PURE__ */ O(N.Slot, {
162
- scope: e.__scopeSelect,
163
- children: /* @__PURE__ */ O("div", { children: e.children })
164
- })
165
- }), t) : null;
166
- }
167
- return /* @__PURE__ */ O(le, {
168
- ...e,
169
- ref: t
170
- });
171
- });
172
- q.displayName = K;
173
- var J = 10, [oe, Y] = I(K), se = "SelectContentImpl", ce = i("SelectContent.RemoveScroll"), le = T.forwardRef((t, n) => {
174
- let { __scopeSelect: i, position: a = "item-aligned", onCloseAutoFocus: o, onEscapeKeyDown: s, onPointerDownOutside: c, side: l, sideOffset: u, align: d, alignOffset: p, arrowPadding: v, collisionBoundary: y, collisionPadding: b, sticky: x, hideWhenDetached: S, avoidCollisions: C, ...w } = t, E = z(K, i), [D, k] = T.useState(null), [A, j] = T.useState(null), M = r(n, (e) => k(e)), [N, F] = T.useState(null), [I, ee] = T.useState(null), L = P(i), [R, te] = T.useState(!1), B = T.useRef(!1);
175
- T.useEffect(() => {
176
- if (D) return h(D);
177
- }, [D]), m();
178
- let V = T.useCallback((e) => {
179
- let [t, ...n] = L().map((e) => e.ref.current), [r] = n.slice(-1), i = document.activeElement;
180
- for (let n of e) if (n === i || (n?.scrollIntoView({ block: "nearest" }), n === t && A && (A.scrollTop = 0), n === r && A && (A.scrollTop = A.scrollHeight), n?.focus(), document.activeElement !== i)) return;
181
- }, [L, A]), H = T.useCallback(() => V([N, D]), [
182
- V,
183
- N,
184
- D
185
- ]);
186
- T.useEffect(() => {
187
- R && H();
188
- }, [R, H]);
189
- let { onOpenChange: U, triggerPointerDownPosRef: W } = E;
190
- T.useEffect(() => {
191
- if (D) {
192
- let e = {
193
- x: 0,
194
- y: 0
195
- }, t = (t) => {
196
- e = {
197
- x: Math.abs(Math.round(t.pageX) - (W.current?.x ?? 0)),
198
- y: Math.abs(Math.round(t.pageY) - (W.current?.y ?? 0))
199
- };
200
- }, n = (n) => {
201
- e.x <= 10 && e.y <= 10 ? n.preventDefault() : D.contains(n.target) || U(!1), document.removeEventListener("pointermove", t), W.current = null;
202
- };
203
- return W.current !== null && (document.addEventListener("pointermove", t), document.addEventListener("pointerup", n, {
204
- capture: !0,
205
- once: !0
206
- })), () => {
207
- document.removeEventListener("pointermove", t), document.removeEventListener("pointerup", n, { capture: !0 });
208
- };
209
- }
210
- }, [
211
- D,
212
- U,
213
- W
214
- ]), T.useEffect(() => {
215
- let e = () => U(!1);
216
- return window.addEventListener("blur", e), window.addEventListener("resize", e), () => {
217
- window.removeEventListener("blur", e), window.removeEventListener("resize", e);
218
- };
219
- }, [U]);
220
- let [G, ne] = Be((e) => {
221
- let t = L().filter((e) => !e.disabled), n = Ve(t, e, t.find((e) => e.ref.current === document.activeElement));
222
- n && setTimeout(() => n.ref.current.focus());
223
- }), re = T.useCallback((e, t, n) => {
224
- let r = !B.current && !n;
225
- (E.value !== void 0 && E.value === t || r) && (F(e), r && (B.current = !0));
226
- }, [E.value]), ie = T.useCallback(() => D?.focus(), [D]), ae = T.useCallback((e, t, n) => {
227
- let r = !B.current && !n;
228
- (E.value !== void 0 && E.value === t || r) && ee(e);
229
- }, [E.value]), q = a === "popper" ? X : de, J = q === X ? {
230
- side: l,
231
- sideOffset: u,
232
- align: d,
233
- alignOffset: p,
234
- arrowPadding: v,
235
- collisionBoundary: y,
236
- collisionPadding: b,
237
- sticky: x,
238
- hideWhenDetached: S,
239
- avoidCollisions: C
240
- } : {};
241
- return /* @__PURE__ */ O(oe, {
242
- scope: i,
243
- content: D,
244
- viewport: A,
245
- onViewportChange: j,
246
- itemRefCallback: re,
247
- selectedItem: N,
248
- onItemLeave: ie,
249
- itemTextRefCallback: ae,
250
- focusSelectedItem: H,
251
- selectedItemText: I,
252
- position: a,
253
- isPositioned: R,
254
- searchRef: G,
255
- children: /* @__PURE__ */ O(_, {
256
- as: ce,
257
- allowPinchZoom: !0,
258
- children: /* @__PURE__ */ O(g, {
259
- asChild: !0,
260
- trapped: E.open,
261
- onMountAutoFocus: (e) => {
262
- e.preventDefault();
263
- },
264
- onUnmountAutoFocus: e(o, (e) => {
265
- E.trigger?.focus({ preventScroll: !0 }), e.preventDefault();
266
- }),
267
- children: /* @__PURE__ */ O(f, {
268
- asChild: !0,
269
- disableOutsidePointerEvents: !0,
270
- onEscapeKeyDown: s,
271
- onPointerDownOutside: c,
272
- onFocusOutside: (e) => e.preventDefault(),
273
- onDismiss: () => E.onOpenChange(!1),
274
- children: /* @__PURE__ */ O(q, {
275
- role: "listbox",
276
- id: E.contentId,
277
- "data-state": E.open ? "open" : "closed",
278
- dir: E.dir,
279
- onContextMenu: (e) => e.preventDefault(),
280
- ...w,
281
- ...J,
282
- onPlaced: () => te(!0),
283
- ref: M,
284
- style: {
285
- display: "flex",
286
- flexDirection: "column",
287
- outline: "none",
288
- ...w.style
289
- },
290
- onKeyDown: e(w.onKeyDown, (e) => {
291
- let t = e.ctrlKey || e.altKey || e.metaKey;
292
- if (e.key === "Tab" && e.preventDefault(), !t && e.key.length === 1 && ne(e.key), [
293
- "ArrowUp",
294
- "ArrowDown",
295
- "Home",
296
- "End"
297
- ].includes(e.key)) {
298
- let t = L().filter((e) => !e.disabled).map((e) => e.ref.current);
299
- if (["ArrowUp", "End"].includes(e.key) && (t = t.slice().reverse()), ["ArrowUp", "ArrowDown"].includes(e.key)) {
300
- let n = e.target, r = t.indexOf(n);
301
- t = t.slice(r + 1);
302
- }
303
- setTimeout(() => V(t)), e.preventDefault();
304
- }
305
- })
306
- })
307
- })
308
- })
309
- })
310
- });
311
- });
312
- le.displayName = se;
313
- var ue = "SelectItemAlignedPosition", de = T.forwardRef((e, t) => {
314
- let { __scopeSelect: i, onPlaced: a, ...s } = e, c = z(K, i), l = Y(K, i), [d, f] = T.useState(null), [p, m] = T.useState(null), h = r(t, (e) => m(e)), g = P(i), _ = T.useRef(!1), v = T.useRef(!0), { viewport: y, selectedItem: b, selectedItemText: x, focusSelectedItem: S } = l, C = T.useCallback(() => {
315
- if (c.trigger && c.valueNode && d && p && y && b && x) {
316
- let e = c.trigger.getBoundingClientRect(), t = p.getBoundingClientRect(), n = c.valueNode.getBoundingClientRect(), r = x.getBoundingClientRect();
317
- if (c.dir !== "rtl") {
318
- let i = r.left - t.left, a = n.left - i, o = e.left - a, s = e.width + o, c = Math.max(s, t.width), l = window.innerWidth - J, f = u(a, [J, Math.max(J, l - c)]);
319
- d.style.minWidth = s + "px", d.style.left = f + "px";
320
- } else {
321
- let i = t.right - r.right, a = window.innerWidth - n.right - i, o = window.innerWidth - e.right - a, s = e.width + o, c = Math.max(s, t.width), l = window.innerWidth - J, f = u(a, [J, Math.max(J, l - c)]);
322
- d.style.minWidth = s + "px", d.style.right = f + "px";
323
- }
324
- let i = g(), o = window.innerHeight - J * 2, s = y.scrollHeight, l = window.getComputedStyle(p), f = parseInt(l.borderTopWidth, 10), m = parseInt(l.paddingTop, 10), h = parseInt(l.borderBottomWidth, 10), v = parseInt(l.paddingBottom, 10), S = f + m + s + v + h, C = Math.min(b.offsetHeight * 5, S), w = window.getComputedStyle(y), T = parseInt(w.paddingTop, 10), E = parseInt(w.paddingBottom, 10), D = e.top + e.height / 2 - J, O = o - D, k = b.offsetHeight / 2, A = b.offsetTop + k, j = f + m + A, M = S - j;
325
- if (j <= D) {
326
- let e = i.length > 0 && b === i[i.length - 1].ref.current;
327
- d.style.bottom = "0px";
328
- let t = p.clientHeight - y.offsetTop - y.offsetHeight, n = j + Math.max(O, k + (e ? E : 0) + t + h);
329
- d.style.height = n + "px";
330
- } else {
331
- let e = i.length > 0 && b === i[0].ref.current;
332
- d.style.top = "0px";
333
- let t = Math.max(D, f + y.offsetTop + (e ? T : 0) + k) + M;
334
- d.style.height = t + "px", y.scrollTop = j - D + y.offsetTop;
335
- }
336
- d.style.margin = `${J}px 0`, d.style.minHeight = C + "px", d.style.maxHeight = o + "px", a?.(), requestAnimationFrame(() => _.current = !0);
337
- }
338
- }, [
339
- g,
340
- c.trigger,
341
- c.valueNode,
342
- d,
343
- p,
344
- y,
345
- b,
346
- x,
347
- c.dir,
348
- a
349
- ]);
350
- n(() => C(), [C]);
351
- let [w, E] = T.useState();
352
- return n(() => {
353
- p && E(window.getComputedStyle(p).zIndex);
354
- }, [p]), /* @__PURE__ */ O(pe, {
355
- scope: i,
356
- contentWrapper: d,
357
- shouldExpandOnScrollRef: _,
358
- onScrollButtonChange: T.useCallback((e) => {
359
- e && v.current === !0 && (C(), S?.(), v.current = !1);
360
- }, [C, S]),
361
- children: /* @__PURE__ */ O("div", {
362
- ref: f,
363
- style: {
364
- display: "flex",
365
- flexDirection: "column",
366
- position: "fixed",
367
- zIndex: w
368
- },
369
- children: /* @__PURE__ */ O(o.div, {
370
- ...s,
371
- ref: h,
372
- style: {
373
- boxSizing: "border-box",
374
- maxHeight: "100%",
375
- ...s.style
376
- }
377
- })
378
- })
379
- });
380
- });
381
- de.displayName = ue;
382
- var fe = "SelectPopperPosition", X = T.forwardRef((e, t) => {
383
- let { __scopeSelect: n, align: r = "start", collisionPadding: i = J, ...a } = e;
384
- return /* @__PURE__ */ O(x, {
385
- ...L(n),
386
- ...a,
387
- ref: t,
388
- align: r,
389
- collisionPadding: i,
390
- style: {
391
- boxSizing: "border-box",
392
- ...a.style,
393
- "--radix-select-content-transform-origin": "var(--radix-popper-transform-origin)",
394
- "--radix-select-content-available-width": "var(--radix-popper-available-width)",
395
- "--radix-select-content-available-height": "var(--radix-popper-available-height)",
396
- "--radix-select-trigger-width": "var(--radix-popper-anchor-width)",
397
- "--radix-select-trigger-height": "var(--radix-popper-anchor-height)"
398
- }
399
- });
400
- });
401
- X.displayName = fe;
402
- var [pe, me] = I(K, {}), he = "SelectViewport", ge = T.forwardRef((t, n) => {
403
- let { __scopeSelect: i, nonce: a, ...s } = t, c = Y(he, i), l = me(he, i), u = r(n, c.onViewportChange), d = T.useRef(0);
404
- return /* @__PURE__ */ k(D, { children: [/* @__PURE__ */ O("style", {
405
- dangerouslySetInnerHTML: { __html: "[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}" },
406
- nonce: a
407
- }), /* @__PURE__ */ O(N.Slot, {
408
- scope: i,
409
- children: /* @__PURE__ */ O(o.div, {
410
- "data-radix-select-viewport": "",
411
- role: "presentation",
412
- ...s,
413
- ref: u,
414
- style: {
415
- position: "relative",
416
- flex: 1,
417
- overflow: "hidden auto",
418
- ...s.style
419
- },
420
- onScroll: e(s.onScroll, (e) => {
421
- let t = e.currentTarget, { contentWrapper: n, shouldExpandOnScrollRef: r } = l;
422
- if (r?.current && n) {
423
- let e = Math.abs(d.current - t.scrollTop);
424
- if (e > 0) {
425
- let r = window.innerHeight - J * 2, i = parseFloat(n.style.minHeight), a = parseFloat(n.style.height), o = Math.max(i, a);
426
- if (o < r) {
427
- let i = o + e, a = Math.min(r, i), s = i - a;
428
- n.style.height = a + "px", n.style.bottom === "0px" && (t.scrollTop = s > 0 ? s : 0, n.style.justifyContent = "flex-end");
429
- }
430
- }
431
- }
432
- d.current = t.scrollTop;
433
- })
434
- })
435
- })] });
436
- });
437
- ge.displayName = he;
438
- var _e = "SelectGroup", [ve, ye] = I(_e), be = T.forwardRef((e, t) => {
439
- let { __scopeSelect: n, ...r } = e, i = l();
440
- return /* @__PURE__ */ O(ve, {
441
- scope: n,
442
- id: i,
443
- children: /* @__PURE__ */ O(o.div, {
444
- role: "group",
445
- "aria-labelledby": i,
446
- ...r,
447
- ref: t
448
- })
449
- });
450
- });
451
- be.displayName = _e;
452
- var xe = "SelectLabel", Se = T.forwardRef((e, t) => {
453
- let { __scopeSelect: n, ...r } = e, i = ye(xe, n);
454
- return /* @__PURE__ */ O(o.div, {
455
- id: i.id,
456
- ...r,
457
- ref: t
458
- });
459
- });
460
- Se.displayName = xe;
461
- var Z = "SelectItem", [Ce, we] = I(Z), Te = T.forwardRef((t, n) => {
462
- let { __scopeSelect: i, value: a, disabled: s = !1, textValue: c, ...u } = t, d = z(Z, i), f = Y(Z, i), p = d.value === a, [m, h] = T.useState(c ?? ""), [g, _] = T.useState(!1), v = r(n, (e) => f.itemRefCallback?.(e, a, s)), y = l(), b = T.useRef("touch"), x = () => {
463
- s || (d.onValueChange(a), d.onOpenChange(!1));
464
- };
465
- if (a === "") throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");
466
- return /* @__PURE__ */ O(Ce, {
467
- scope: i,
468
- value: a,
469
- disabled: s,
470
- textId: y,
471
- isSelected: p,
472
- onItemTextChange: T.useCallback((e) => {
473
- h((t) => t || (e?.textContent ?? "").trim());
474
- }, []),
475
- children: /* @__PURE__ */ O(N.ItemSlot, {
476
- scope: i,
477
- value: a,
478
- disabled: s,
479
- textValue: m,
480
- children: /* @__PURE__ */ O(o.div, {
481
- role: "option",
482
- "aria-labelledby": y,
483
- "data-highlighted": g ? "" : void 0,
484
- "aria-selected": p && g,
485
- "data-state": p ? "checked" : "unchecked",
486
- "aria-disabled": s || void 0,
487
- "data-disabled": s ? "" : void 0,
488
- tabIndex: s ? void 0 : -1,
489
- ...u,
490
- ref: v,
491
- onFocus: e(u.onFocus, () => _(!0)),
492
- onBlur: e(u.onBlur, () => _(!1)),
493
- onClick: e(u.onClick, () => {
494
- b.current !== "mouse" && x();
495
- }),
496
- onPointerUp: e(u.onPointerUp, () => {
497
- b.current === "mouse" && x();
498
- }),
499
- onPointerDown: e(u.onPointerDown, (e) => {
500
- b.current = e.pointerType;
501
- }),
502
- onPointerMove: e(u.onPointerMove, (e) => {
503
- b.current = e.pointerType, s ? f.onItemLeave?.() : b.current === "mouse" && e.currentTarget.focus({ preventScroll: !0 });
504
- }),
505
- onPointerLeave: e(u.onPointerLeave, (e) => {
506
- e.currentTarget === document.activeElement && f.onItemLeave?.();
507
- }),
508
- onKeyDown: e(u.onKeyDown, (e) => {
509
- f.searchRef?.current !== "" && e.key === " " || (j.includes(e.key) && x(), e.key === " " && e.preventDefault());
510
- })
511
- })
512
- })
513
- });
514
- });
515
- Te.displayName = Z;
516
- var Q = "SelectItemText", Ee = T.forwardRef((e, t) => {
517
- let { __scopeSelect: i, className: a, style: s, ...c } = e, l = z(Q, i), u = Y(Q, i), d = we(Q, i), f = B(Q, i), [p, m] = T.useState(null), h = r(t, (e) => m(e), d.onItemTextChange, (e) => u.itemTextRefCallback?.(e, d.value, d.disabled)), g = p?.textContent, _ = T.useMemo(() => /* @__PURE__ */ O("option", {
518
- value: d.value,
519
- disabled: d.disabled,
520
- children: g
521
- }, d.value), [
522
- d.disabled,
523
- d.value,
524
- g
525
- ]), { onNativeOptionAdd: v, onNativeOptionRemove: y } = f;
526
- return n(() => (v(_), () => y(_)), [
527
- v,
528
- y,
529
- _
530
- ]), /* @__PURE__ */ k(D, { children: [/* @__PURE__ */ O(o.span, {
531
- id: d.textId,
532
- ...c,
533
- ref: h
534
- }), d.isSelected && l.valueNode && !l.valueNodeHasChildren ? E.createPortal(c.children, l.valueNode) : null] });
535
- });
536
- Ee.displayName = Q;
537
- var De = "SelectItemIndicator", Oe = T.forwardRef((e, t) => {
538
- let { __scopeSelect: n, ...r } = e;
539
- return we(De, n).isSelected ? /* @__PURE__ */ O(o.span, {
540
- "aria-hidden": !0,
541
- ...r,
542
- ref: t
543
- }) : null;
544
- });
545
- Oe.displayName = De;
546
- var ke = "SelectScrollUpButton", Ae = T.forwardRef((e, t) => {
547
- let i = Y(ke, e.__scopeSelect), a = me(ke, e.__scopeSelect), [o, s] = T.useState(!1), c = r(t, a.onScrollButtonChange);
548
- return n(() => {
549
- if (i.viewport && i.isPositioned) {
550
- let e = function() {
551
- s(t.scrollTop > 0);
552
- }, t = i.viewport;
553
- return e(), t.addEventListener("scroll", e), () => t.removeEventListener("scroll", e);
554
- }
555
- }, [i.viewport, i.isPositioned]), o ? /* @__PURE__ */ O(Ne, {
556
- ...e,
557
- ref: c,
558
- onAutoScroll: () => {
559
- let { viewport: e, selectedItem: t } = i;
560
- e && t && (e.scrollTop -= t.offsetHeight);
561
- }
562
- }) : null;
563
- });
564
- Ae.displayName = ke;
565
- var je = "SelectScrollDownButton", Me = T.forwardRef((e, t) => {
566
- let i = Y(je, e.__scopeSelect), a = me(je, e.__scopeSelect), [o, s] = T.useState(!1), c = r(t, a.onScrollButtonChange);
567
- return n(() => {
568
- if (i.viewport && i.isPositioned) {
569
- let e = function() {
570
- let e = t.scrollHeight - t.clientHeight;
571
- s(Math.ceil(t.scrollTop) < e);
572
- }, t = i.viewport;
573
- return e(), t.addEventListener("scroll", e), () => t.removeEventListener("scroll", e);
574
- }
575
- }, [i.viewport, i.isPositioned]), o ? /* @__PURE__ */ O(Ne, {
576
- ...e,
577
- ref: c,
578
- onAutoScroll: () => {
579
- let { viewport: e, selectedItem: t } = i;
580
- e && t && (e.scrollTop += t.offsetHeight);
581
- }
582
- }) : null;
583
- });
584
- Me.displayName = je;
585
- var Ne = T.forwardRef((t, r) => {
586
- let { __scopeSelect: i, onAutoScroll: a, ...s } = t, c = Y("SelectScrollButton", i), l = T.useRef(null), u = P(i), d = T.useCallback(() => {
587
- l.current !== null && (window.clearInterval(l.current), l.current = null);
588
- }, []);
589
- return T.useEffect(() => () => d(), [d]), n(() => {
590
- u().find((e) => e.ref.current === document.activeElement)?.ref.current?.scrollIntoView({ block: "nearest" });
591
- }, [u]), /* @__PURE__ */ O(o.div, {
592
- "aria-hidden": !0,
593
- ...s,
594
- ref: r,
595
- style: {
596
- flexShrink: 0,
597
- ...s.style
598
- },
599
- onPointerDown: e(s.onPointerDown, () => {
600
- l.current === null && (l.current = window.setInterval(a, 50));
601
- }),
602
- onPointerMove: e(s.onPointerMove, () => {
603
- c.onItemLeave?.(), l.current === null && (l.current = window.setInterval(a, 50));
604
- }),
605
- onPointerLeave: e(s.onPointerLeave, () => {
606
- d();
607
- })
608
- });
609
- }), Pe = "SelectSeparator", Fe = T.forwardRef((e, t) => {
610
- let { __scopeSelect: n, ...r } = e;
611
- return /* @__PURE__ */ O(o.div, {
612
- "aria-hidden": !0,
613
- ...r,
614
- ref: t
615
- });
616
- });
617
- Fe.displayName = Pe;
618
- var $ = "SelectArrow", Ie = T.forwardRef((e, t) => {
619
- let { __scopeSelect: n, ...r } = e, i = L(n), a = z($, n), o = Y($, n);
620
- return a.open && o.position === "popper" ? /* @__PURE__ */ O(b, {
621
- ...i,
622
- ...r,
623
- ref: t
624
- }) : null;
625
- });
626
- Ie.displayName = $;
627
- var Le = "SelectBubbleInput", Re = T.forwardRef(({ __scopeSelect: e, value: t, ...n }, i) => {
628
- let a = T.useRef(null), s = r(i, a), c = C(t);
629
- return T.useEffect(() => {
630
- let e = a.current;
631
- if (!e) return;
632
- let n = window.HTMLSelectElement.prototype, r = Object.getOwnPropertyDescriptor(n, "value").set;
633
- if (c !== t && r) {
634
- let n = new Event("change", { bubbles: !0 });
635
- r.call(e, t), e.dispatchEvent(n);
636
- }
637
- }, [c, t]), /* @__PURE__ */ O(o.select, {
638
- ...n,
639
- style: {
640
- ...w,
641
- ...n.style
642
- },
643
- ref: s,
644
- defaultValue: t
645
- });
646
- });
647
- Re.displayName = Le;
648
- function ze(e) {
649
- return e === "" || e === void 0;
650
- }
651
- function Be(e) {
652
- let t = d(e), n = T.useRef(""), r = T.useRef(0), i = T.useCallback((e) => {
653
- let i = n.current + e;
654
- t(i), (function e(t) {
655
- n.current = t, window.clearTimeout(r.current), t !== "" && (r.current = window.setTimeout(() => e(""), 1e3));
656
- })(i);
657
- }, [t]), a = T.useCallback(() => {
658
- n.current = "", window.clearTimeout(r.current);
659
- }, []);
660
- return T.useEffect(() => () => window.clearTimeout(r.current), []), [
661
- n,
662
- i,
663
- a
664
- ];
665
- }
666
- function Ve(e, t, n) {
667
- let r = t.length > 1 && Array.from(t).every((e) => e === t[0]) ? t[0] : t, i = n ? e.indexOf(n) : -1, a = He(e, Math.max(i, 0));
668
- r.length === 1 && (a = a.filter((e) => e !== n));
669
- let o = a.find((e) => e.textValue.toLowerCase().startsWith(r.toLowerCase()));
670
- return o === n ? void 0 : o;
671
- }
672
- function He(e, t) {
673
- return e.map((n, r) => e[(t + r) % e.length]);
674
- }
675
- var Ue = V, We = U, Ge = G, Ke = re, qe = ae, Je = q, Ye = ge, Xe = be, Ze = Se, Qe = Te, $e = Ee, et = Oe, tt = Ae, nt = Me, rt = Fe;
676
- //#endregion
677
- export { et as a, qe as c, tt as d, rt as f, Ye as h, Qe as i, Ue as l, Ge as m, Xe as n, $e as o, We as p, Ke as r, Ze as s, Je as t, nt as u };