@reopt-ai/opt-ui 1.14.0 → 1.15.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 (38) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/COMPONENT_CATALOG.md +222 -69
  3. package/README.md +26 -0
  4. package/dist/core/index.cjs +4 -4
  5. package/dist/core/index.d.cts +2 -2
  6. package/dist/core/index.d.ts +2 -2
  7. package/dist/core/index.js +2 -2
  8. package/dist/docs/02-components/01-core.md +37 -33
  9. package/dist/docs/02-components/02-visuals.md +1 -1
  10. package/dist/docs/02-components/03-shells.md +191 -36
  11. package/dist/docs/02-components/04-surfaces.md +1 -1
  12. package/dist/docs/02-components/index.md +4 -4
  13. package/dist/id-registry.cjs +24 -0
  14. package/dist/id-registry.js +24 -0
  15. package/dist/id-registry.json +51 -0
  16. package/dist/index.cjs +445 -381
  17. package/dist/index.d.cts +16 -13
  18. package/dist/index.d.ts +16 -13
  19. package/dist/index.js +303 -245
  20. package/dist/{key-pad-menu-CqFI6la9.js → key-pad-menu-BCOeYvsH.js} +50 -61
  21. package/dist/{key-pad-menu-D6pYzaj-.d.cts → key-pad-menu-CaIsTHB2.d.cts} +12 -8
  22. package/dist/{key-pad-menu-BgtSL3xe.cjs → key-pad-menu-Jaqxhx9P.cjs} +48 -71
  23. package/dist/{key-pad-menu-Yh7Fpb8m.d.ts → key-pad-menu-odAEycIX.d.ts} +12 -8
  24. package/dist/meta.cjs +447 -7
  25. package/dist/meta.js +447 -7
  26. package/dist/{field-sidebar-mSVCMAZp.js → replay-player-layout-BVUNsUS1.js} +891 -191
  27. package/dist/{field-sidebar-ePqFX6MN.cjs → replay-player-layout-Cmzptq89.cjs} +931 -189
  28. package/dist/{field-sidebar-CJ4HxP8D.d.cts → replay-player-layout-DpqdfdQ6.d.ts} +246 -3
  29. package/dist/{field-sidebar-DnhpcT2A.d.ts → replay-player-layout-DuZW-gFF.d.cts} +246 -3
  30. package/dist/shells/index.cjs +58 -52
  31. package/dist/shells/index.d.cts +2 -2
  32. package/dist/shells/index.d.ts +2 -2
  33. package/dist/shells/index.js +2 -2
  34. package/dist/{text-truncate-Bd-0WkSP.js → text-truncate-B-8nJgnu.js} +200 -101
  35. package/dist/{text-truncate-Bbul-jMD.d.cts → text-truncate-DOxUijpB.d.cts} +2 -0
  36. package/dist/{text-truncate-Bbul-jMD.d.ts → text-truncate-DOxUijpB.d.ts} +2 -0
  37. package/dist/{text-truncate-BeYW6XZu.cjs → text-truncate-gQhpMy-Z.cjs} +214 -97
  38. package/package.json +1 -1
@@ -3,8 +3,8 @@ import { clsx } from "clsx";
3
3
  import { twMerge } from "tailwind-merge";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  import * as React from "react";
6
- import { createContext, forwardRef, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
7
- import { AlertDialogPanel, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxPopover, ComboboxRoot, Composite, CompositeItem, CompositeProvider, CompositeRow, DialogDescription, DialogDisclosure, DialogDismiss, DialogHeading, DialogPanel, DialogRoot, DisclosureContent, DisclosureRoot, DisclosureTrigger, FormCheckbox, FormControl, FormDescription, FormError, FormField, FormGroup, FormGroupLabel, FormInput, FormLabel, FormProvider, FormPush, FormRadio, FormRadioGroup, FormRemove, FormReset, FormRoot, FormSubmit, FormSwitch, MenuButtonArrow, MenuItem, MenuItemCheckbox, MenuItemRadio, MenuPopover, MenuRoot, MenuSeparator, MenuTrigger, MenubarContainer, MenubarRoot, Meter, PopoverClose, PopoverContent, PopoverRoot, PopoverTrigger, SelectItem, SelectLabel, SelectPopover, SelectRoot, SelectTrigger, Tab, TabList, TabPanel, TabsRoot, ToolbarButton, ToolbarContainer, ToolbarRoot, ToolbarSeparator, Tooltip, TooltipAnchor, TooltipRoot, useFieldValue, useFormContext, useFormStore } from "@reopt-ai/opt-ui-primitives";
6
+ import { createContext, forwardRef, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
7
+ import { AlertDialogPanel, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxPopover, ComboboxRoot, Composite, CompositeItem, CompositeProvider, CompositeRow, DialogDescription, DialogDisclosure, DialogDismiss, DialogHeading, DialogPanel, DialogRoot, DisclosureContent, DisclosureRoot, DisclosureTrigger, FormCheckbox, FormControl, FormDescription, FormError, FormField, FormGroup, FormGroupLabel, FormInput, FormLabel, FormProvider, FormPush, FormRadio, FormRadioGroup, FormRemove, FormReset, FormRoot, FormSubmit, FormSwitch, FormTextarea, MenuButtonArrow, MenuItem, MenuItemCheckbox, MenuItemRadio, MenuPopover, MenuRoot, MenuSeparator, MenuTrigger, MenubarContainer, MenubarRoot, Meter, PopoverClose, PopoverContent, PopoverRoot, PopoverTrigger, SelectItem, SelectLabel, SelectPopover, SelectRoot, SelectTrigger, Tab, TabList, TabPanel, TabsRoot, Toggle, ToggleGroup, ToolbarButton, ToolbarContainer, ToolbarRoot, ToolbarSeparator, Tooltip, TooltipAnchor, TooltipRoot, useFieldValue, useFormContext, useFormStore } from "@reopt-ai/opt-ui-primitives";
8
8
  import { AtSign, Bell, Binary, Braces, Brackets, Calendar, CalendarClock, CalendarDays, ChartColumn, Check, ChevronLeft, ChevronRight, CircleAlert, CircleCheck, CircleDollarSign, CircleHelp, Copy, CreditCard, Download, Eye, FileText, Fingerprint, Flag, Folder, Globe, GripVertical, Hash, Heart, Info, Layers, Link2, List, LogIn, Mail, MapPin, MessageCircle, MousePointerClick, Network, Percent, Search, Settings, Share2, ShoppingCart, Sigma, Star, Timer, ToggleLeft, TrendingUp, TriangleAlert, Type, Upload, User, UserPlus, XCircle, Zap } from "lucide-react";
9
9
  import { Group, Panel, Separator as Separator$1 } from "react-resizable-panels";
10
10
  //#region src/lib/cn.ts
@@ -220,6 +220,47 @@ function useControlledState(defaultValue, controlledValue, onChange) {
220
220
  }, [isControlled, onChange])];
221
221
  }
222
222
  //#endregion
223
+ //#region src/core/toggle.tsx
224
+ const _excluded$22 = [
225
+ "size",
226
+ "className",
227
+ "children"
228
+ ];
229
+ const _excluded2$12 = [
230
+ "className",
231
+ "children",
232
+ "orientation"
233
+ ];
234
+ const sizeStyles$7 = {
235
+ sm: "h-8 min-w-8 px-2 text-xs gap-1.5",
236
+ md: "h-10 min-w-10 px-3 text-sm gap-2"
237
+ };
238
+ const toggleBase = cn("inline-flex cursor-pointer items-center justify-center rounded-md border border-border bg-surface font-medium text-text-secondary", "hover:bg-bg-subtle hover:text-text-primary", "data-[pressed]:border-accent data-[pressed]:bg-accent-subtle data-[pressed]:text-accent", "disabled:pointer-events-none disabled:opacity-40", OPT_FOCUS_VISIBLE);
239
+ /** A two-state (pressed) button. Use standalone or inside `ToggleGroup`. */
240
+ function Toggle$1(_ref) {
241
+ let { size = "md", className, children } = _ref, props = _objectWithoutProperties(_ref, _excluded$22);
242
+ return /* @__PURE__ */ jsx(Toggle, _objectSpread2(_objectSpread2({ className: cn(toggleBase, sizeStyles$7[size], className) }, props), {}, {
243
+ "data-opt-id": "GFCMY",
244
+ "data-opt-slug": "toggle.Toggle",
245
+ children
246
+ }));
247
+ }
248
+ Toggle$1.displayName = "Toggle";
249
+ /** A set of related toggles with shared selection and keyboard navigation. */
250
+ function ToggleGroup$1(_ref2) {
251
+ let { className, children, orientation = "horizontal" } = _ref2, props = _objectWithoutProperties(_ref2, _excluded2$12);
252
+ return /* @__PURE__ */ jsx(ToggleGroup, _objectSpread2(_objectSpread2({
253
+ orientation,
254
+ "aria-orientation": orientation,
255
+ className: cn("inline-flex gap-1", orientation === "vertical" ? "flex-col" : "flex-row", className)
256
+ }, props), {}, {
257
+ "data-opt-id": "47J37",
258
+ "data-opt-slug": "toggle.ToggleGroup",
259
+ children
260
+ }));
261
+ }
262
+ ToggleGroup$1.displayName = "ToggleGroup";
263
+ //#endregion
223
264
  //#region src/core/skeleton.tsx
224
265
  const _excluded$21 = [
225
266
  "variant",
@@ -1034,12 +1075,10 @@ function Tooltip$1(_ref5) {
1034
1075
  }
1035
1076
  //#endregion
1036
1077
  //#region src/lib/use-input-id.ts
1037
- /**
1038
- * Generates a stable component ID from label text.
1039
- * Eliminates the duplicated `id ?? label?.replace(...)` pattern across input components.
1040
- */
1041
- function useInputId(id, label, prefix) {
1042
- return id !== null && id !== void 0 ? id : label ? `${prefix}-${label.replace(/\s+/g, "-").toLowerCase()}` : void 0;
1078
+ /** Generates an instance-specific, hydration-stable ID unless one is supplied. */
1079
+ function useInputId(id, _label, prefix) {
1080
+ const generatedId = useId();
1081
+ return id !== null && id !== void 0 ? id : `${prefix}-${generatedId}`;
1043
1082
  }
1044
1083
  //#endregion
1045
1084
  //#region src/core/input.tsx
@@ -1348,6 +1387,7 @@ const Textarea = forwardRef((_ref, ref) => {
1348
1387
  ref,
1349
1388
  id: textareaId,
1350
1389
  rows,
1390
+ required,
1351
1391
  className: cn("border-border bg-surface text-text-primary placeholder:text-text-tertiary w-full rounded-lg border px-4 py-3 text-sm outline-transparent", OPT_FOCUS_VISIBLE, textareaSizeStyles[size], resizeStyles$1[resize], hasError && "border-danger focus-visible:outline-danger", !fullWidth && "w-auto", className),
1352
1392
  "aria-invalid": hasError,
1353
1393
  "aria-describedby": getDescribedBy(textareaId, error, hint)
@@ -2170,6 +2210,7 @@ function NumberInput({ value: controlledValue, defaultValue, onChange, nullable,
2170
2210
  children: [
2171
2211
  /* @__PURE__ */ jsx("input", {
2172
2212
  type: "text",
2213
+ role: "spinbutton",
2173
2214
  inputMode: "decimal",
2174
2215
  id: inputId,
2175
2216
  value: displayValue,
@@ -2183,6 +2224,10 @@ function NumberInput({ value: controlledValue, defaultValue, onChange, nullable,
2183
2224
  "aria-label": (_ref2 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref2 !== void 0 ? _ref2 : resolvedLabels.input,
2184
2225
  "aria-invalid": hasError,
2185
2226
  "aria-required": required,
2227
+ "aria-valuenow": value !== null && value !== void 0 ? value : void 0,
2228
+ "aria-valuemin": min,
2229
+ "aria-valuemax": max,
2230
+ "aria-valuetext": value === null ? "" : void 0,
2186
2231
  "aria-describedby": getDescribedBy(inputId, effectiveError, hint),
2187
2232
  min,
2188
2233
  max,
@@ -2249,13 +2294,16 @@ function getSliderState(value, min, max, step) {
2249
2294
  };
2250
2295
  }
2251
2296
  /** Renders the slider component. */
2252
- function Slider({ value: controlledValue, defaultValue = 0, onChange, min = 0, max = 100, step = 1, label, showValue = false, formatValue, disabled = false, className, "aria-label": ariaLabel }) {
2297
+ function Slider({ value: controlledValue, defaultValue = 0, onChange, onValueCommit, min = 0, max = 100, step = 1, label, showValue = false, formatValue, disabled = false, className, "aria-label": ariaLabel }) {
2253
2298
  var _ref;
2254
2299
  const [localValue, setLocalValue] = useState(defaultValue);
2300
+ const pendingValue = useRef(null);
2301
+ const pointerStart = useRef(null);
2255
2302
  const sliderState = getSliderState(controlledValue !== null && controlledValue !== void 0 ? controlledValue : localValue, min, max, step);
2256
2303
  const handleChange = useCallback((e) => {
2257
2304
  const next = getSliderState(parseFloat(e.target.value), min, max, step).value;
2258
2305
  if (controlledValue === void 0) setLocalValue(next);
2306
+ pendingValue.current = next;
2259
2307
  onChange === null || onChange === void 0 || onChange(next);
2260
2308
  }, [
2261
2309
  controlledValue,
@@ -2264,6 +2312,12 @@ function Slider({ value: controlledValue, defaultValue = 0, onChange, min = 0, m
2264
2312
  step,
2265
2313
  onChange
2266
2314
  ]);
2315
+ const commit = () => {
2316
+ const next = pendingValue.current;
2317
+ pendingValue.current = null;
2318
+ pointerStart.current = null;
2319
+ if (!disabled && next !== null) onValueCommit === null || onValueCommit === void 0 || onValueCommit(next);
2320
+ };
2267
2321
  const displayValue = formatValue ? formatValue(sliderState.value) : String(sliderState.value);
2268
2322
  return /* @__PURE__ */ jsxs("div", {
2269
2323
  className: cn("flex flex-col gap-1.5", className),
@@ -2285,6 +2339,34 @@ function Slider({ value: controlledValue, defaultValue = 0, onChange, min = 0, m
2285
2339
  step: sliderState.step,
2286
2340
  value: sliderState.value,
2287
2341
  onChange: handleChange,
2342
+ onPointerDown: (event) => {
2343
+ var _event$currentTarget$, _event$currentTarget;
2344
+ pointerStart.current = sliderState.value;
2345
+ (_event$currentTarget$ = (_event$currentTarget = event.currentTarget).setPointerCapture) === null || _event$currentTarget$ === void 0 || _event$currentTarget$.call(_event$currentTarget, event.pointerId);
2346
+ },
2347
+ onPointerUp: commit,
2348
+ onPointerCancel: () => {
2349
+ const previous = pointerStart.current;
2350
+ pendingValue.current = null;
2351
+ pointerStart.current = null;
2352
+ if (previous !== null && !disabled) {
2353
+ if (controlledValue === void 0) setLocalValue(previous);
2354
+ onChange === null || onChange === void 0 || onChange(previous);
2355
+ }
2356
+ },
2357
+ onKeyUp: (event) => {
2358
+ if ([
2359
+ "ArrowLeft",
2360
+ "ArrowRight",
2361
+ "ArrowUp",
2362
+ "ArrowDown",
2363
+ "Home",
2364
+ "End",
2365
+ "PageUp",
2366
+ "PageDown"
2367
+ ].includes(event.key)) commit();
2368
+ },
2369
+ onBlur: commit,
2288
2370
  disabled,
2289
2371
  "aria-label": (_ref = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref !== void 0 ? _ref : "Slider",
2290
2372
  "aria-valuemin": sliderState.min,
@@ -2790,6 +2872,12 @@ function IconPicker({ value, onChange, icons = DEFAULT_ICONS, label, required, e
2790
2872
  }
2791
2873
  IconPicker.displayName = "IconPicker";
2792
2874
  //#endregion
2875
+ //#region src/lib/is-composing-key.ts
2876
+ /** Safari may report the composition-ending key with keyCode 229. */
2877
+ function isComposingKey(event) {
2878
+ return event.nativeEvent.isComposing || event.keyCode === 229;
2879
+ }
2880
+ //#endregion
2793
2881
  //#region src/core/tag-input.tsx
2794
2882
  const DEFAULT_DELIMITERS = [
2795
2883
  ",",
@@ -2801,7 +2889,7 @@ function splitByDelimiters(text, delimiters) {
2801
2889
  return text.split(new RegExp(pattern)).map((s) => s.trim()).filter(Boolean);
2802
2890
  }
2803
2891
  const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", label, required, error, hint, maxTags, disabled = false, className, id, "aria-label": ariaLabel, suggestions, delimiters = DEFAULT_DELIMITERS, allowDuplicates = false }, ref) => {
2804
- var _useInputId, _ref, _ref2, _ref3, _ref4;
2892
+ var _useInputId, _ref, _ref2, _ref3;
2805
2893
  const [tags, setTags] = useControlledState([], value, onChange);
2806
2894
  const fallbackId = useId().replace(/:/g, "");
2807
2895
  const tagInputId = (_useInputId = useInputId(id, label, "tag-input")) !== null && _useInputId !== void 0 ? _useInputId : `tag-input-${fallbackId}`;
@@ -2810,8 +2898,8 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2810
2898
  const [inputValue, setInputValue] = useState("");
2811
2899
  const [highlightIndex, setHighlightIndex] = useState(-1);
2812
2900
  const [showSuggestions, setShowSuggestions] = useState(false);
2813
- const innerRef = useRef(null);
2814
- const inputRef = (_ref = ref) !== null && _ref !== void 0 ? _ref : innerRef;
2901
+ const inputRef = useRef(null);
2902
+ useImperativeHandle(ref, () => inputRef.current);
2815
2903
  const listboxRef = useRef(null);
2816
2904
  const listboxId = useId();
2817
2905
  const undoStack = useRef([]);
@@ -2834,11 +2922,12 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2834
2922
  setTags(next);
2835
2923
  }, [tags, setTags]);
2836
2924
  const filtered = suggestions && inputValue.trim() ? suggestions.filter((s) => s.toLowerCase().includes(inputValue.trim().toLowerCase()) && (allowDuplicates || !tags.includes(s))) : [];
2837
- const isOpen = showSuggestions && filtered.length > 0;
2925
+ const isOpen = !disabled && showSuggestions && filtered.length > 0;
2838
2926
  useEffect(() => {
2839
2927
  setHighlightIndex(-1);
2840
2928
  }, [inputValue]);
2841
2929
  const addTag = useCallback((tag) => {
2930
+ if (disabled) return;
2842
2931
  const trimmed = tag.trim();
2843
2932
  if (!trimmed) return;
2844
2933
  if (!allowDuplicates && tags.includes(trimmed)) return;
@@ -2851,13 +2940,20 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2851
2940
  tags,
2852
2941
  setTags,
2853
2942
  maxTags,
2854
- allowDuplicates
2943
+ allowDuplicates,
2944
+ disabled
2855
2945
  ]);
2856
2946
  const removeTag = useCallback((index) => {
2947
+ if (disabled) return;
2857
2948
  pushUndo([...tags]);
2858
2949
  setTags(tags.filter((_, i) => i !== index));
2859
- }, [tags, setTags]);
2950
+ }, [
2951
+ tags,
2952
+ setTags,
2953
+ disabled
2954
+ ]);
2860
2955
  const handleTagKeyDown = useCallback((e, index) => {
2956
+ if (disabled || isComposingKey(e)) return;
2861
2957
  if (e.key === "Backspace" || e.key === "Delete") {
2862
2958
  e.preventDefault();
2863
2959
  const nextTags = tags.filter((_, i) => i !== index);
@@ -2904,10 +3000,12 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2904
3000
  setTags,
2905
3001
  undo,
2906
3002
  redo,
2907
- inputRef
3003
+ inputRef,
3004
+ disabled
2908
3005
  ]);
2909
3006
  const handleInputKeyDown = useCallback((e) => {
2910
3007
  var _inputRef$current5;
3008
+ if (disabled || isComposingKey(e)) return;
2911
3009
  if ((e.ctrlKey || e.metaKey) && e.key === "z" && !e.shiftKey) {
2912
3010
  e.preventDefault();
2913
3011
  undo();
@@ -2959,9 +3057,11 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2959
3057
  filtered,
2960
3058
  undo,
2961
3059
  redo,
2962
- inputRef
3060
+ inputRef,
3061
+ disabled
2963
3062
  ]);
2964
3063
  const handlePaste = useCallback((e) => {
3064
+ if (disabled) return;
2965
3065
  const parts = splitByDelimiters(e.clipboardData.getData("text/plain"), delimiters);
2966
3066
  if (parts.length < 2) return;
2967
3067
  e.preventDefault();
@@ -2982,7 +3082,8 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2982
3082
  setTags,
2983
3083
  maxTags,
2984
3084
  delimiters,
2985
- allowDuplicates
3085
+ allowDuplicates,
3086
+ disabled
2986
3087
  ]);
2987
3088
  useEffect(() => {
2988
3089
  if (highlightIndex >= 0 && listboxRef.current) {
@@ -2997,7 +3098,8 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
2997
3098
  "data-opt-id": "3TDWF",
2998
3099
  "data-opt-slug": "tag-input.TagInput",
2999
3100
  children: [
3000
- label && /* @__PURE__ */ jsxs("span", {
3101
+ label && /* @__PURE__ */ jsxs("label", {
3102
+ htmlFor: tagInputId,
3001
3103
  className: "text-sm font-medium text-text-primary",
3002
3104
  children: [label, required && /* @__PURE__ */ jsx(RequiredMark, {})]
3003
3105
  }),
@@ -3008,7 +3110,7 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
3008
3110
  return (_inputRef$current6 = inputRef.current) === null || _inputRef$current6 === void 0 ? void 0 : _inputRef$current6.focus();
3009
3111
  },
3010
3112
  role: "group",
3011
- "aria-label": (_ref2 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref2 !== void 0 ? _ref2 : "Tag input",
3113
+ "aria-label": (_ref = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref !== void 0 ? _ref : "Tag input",
3012
3114
  "aria-required": required,
3013
3115
  "aria-invalid": hasError,
3014
3116
  "aria-describedby": describedBy,
@@ -3018,6 +3120,7 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
3018
3120
  "aria-label": "Selected tags",
3019
3121
  className: "contents",
3020
3122
  children: tags.map((tag, i) => /* @__PURE__ */ jsxs(CompositeItem, {
3123
+ disabled,
3021
3124
  render: /* @__PURE__ */ jsx("span", { ref: (el) => {
3022
3125
  if (el) tagRefs.current.set(i, el);
3023
3126
  else tagRefs.current.delete(i);
@@ -3050,6 +3153,7 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
3050
3153
  })
3051
3154
  }), /* @__PURE__ */ jsx("input", {
3052
3155
  ref: inputRef,
3156
+ id: tagInputId,
3053
3157
  type: "text",
3054
3158
  value: inputValue,
3055
3159
  onChange: (e) => {
@@ -3065,7 +3169,7 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
3065
3169
  placeholder: tags.length === 0 ? placeholder : atLimit ? "" : "",
3066
3170
  disabled: disabled || atLimit,
3067
3171
  className: cn("min-w-[60px] flex-1 border-none bg-transparent text-sm outline-transparent", OPT_TEXT_PRIMARY, OPT_FOCUS_VISIBLE, "placeholder:text-text-tertiary"),
3068
- "aria-label": (_ref3 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref3 !== void 0 ? _ref3 : "Tag input",
3172
+ "aria-label": (_ref2 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref2 !== void 0 ? _ref2 : "Tag input",
3069
3173
  role: suggestions ? "combobox" : void 0,
3070
3174
  "aria-describedby": describedBy,
3071
3175
  "aria-expanded": suggestions ? isOpen : void 0,
@@ -3078,7 +3182,7 @@ const TagInput = forwardRef(({ value, onChange, placeholder = "Add tag...", labe
3078
3182
  ref: listboxRef,
3079
3183
  id: listboxId,
3080
3184
  role: "listbox",
3081
- "aria-label": (_ref4 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref4 !== void 0 ? _ref4 : "Tag suggestions",
3185
+ "aria-label": (_ref3 = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : label) !== null && _ref3 !== void 0 ? _ref3 : "Tag suggestions",
3082
3186
  className: "border-border bg-surface absolute top-full z-50 mt-1 max-h-48 w-full overflow-auto rounded-lg border shadow-md",
3083
3187
  children: filtered.map((suggestion, i) => /* @__PURE__ */ jsx("li", {
3084
3188
  id: `${listboxId}-${i}`,
@@ -3703,31 +3807,23 @@ const resizeStyles = {
3703
3807
  both: "resize"
3704
3808
  };
3705
3809
  /** Renders the form textarea component. */
3706
- function FormTextarea(_ref3) {
3707
- var _ref4;
3810
+ function FormTextarea$1(_ref3) {
3708
3811
  let { className, resize = "vertical", rows = 4, name } = _ref3, props = _objectWithoutProperties(_ref3, _excluded3$2);
3709
- const form = useRequiredFormContext("FormTextarea");
3710
- const value = (_ref4 = useFieldValue(form, name)) !== null && _ref4 !== void 0 ? _ref4 : "";
3711
- const error = form === null || form === void 0 ? void 0 : form.getError(name);
3712
- const touched = form === null || form === void 0 ? void 0 : form.getFieldTouched(name);
3713
- const hasError = Boolean(error && touched);
3714
- return /* @__PURE__ */ jsx("textarea", _objectSpread2(_objectSpread2({
3812
+ useRequiredFormContext("FormTextarea");
3813
+ return /* @__PURE__ */ jsx(FormTextarea, _objectSpread2(_objectSpread2({
3715
3814
  name,
3716
- value,
3717
- onChange: (e) => form === null || form === void 0 ? void 0 : form.setValue(name, e.target.value),
3718
- className: cn("border-border bg-surface flex w-full rounded-lg border px-4 py-3", "text-text-primary placeholder:text-text-tertiary focus-visible:ring-ring focus-visible:ring-offset-ring-offset text-sm outline-none focus-visible:ring-2 focus-visible:ring-offset-1", OPT_FOCUS_VISIBLE, resizeStyles[resize], hasError && "border-danger", className),
3719
- rows,
3720
- "aria-invalid": hasError || void 0
3815
+ className: cn("border-border bg-surface flex w-full rounded-lg border px-4 py-3", "text-text-primary placeholder:text-text-tertiary focus-visible:ring-ring focus-visible:ring-offset-ring-offset text-sm outline-none focus-visible:ring-2 focus-visible:ring-offset-1", OPT_FOCUS_VISIBLE, resizeStyles[resize], "aria-[invalid=true]:border-danger", className),
3816
+ rows
3721
3817
  }, props), {}, {
3722
3818
  "data-opt-id": "Q8G2A",
3723
3819
  "data-opt-slug": "form.FormTextarea"
3724
3820
  }));
3725
3821
  }
3726
3822
  /** Renders the form select component. */
3727
- function FormSelect({ name, children, className, placeholder, minWidth = 140, "aria-label": ariaLabel }) {
3728
- var _ref5;
3823
+ function FormSelect({ name, id, children, className, placeholder, minWidth = 140, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy }) {
3824
+ var _ref4;
3729
3825
  const form = useRequiredFormContext("FormSelect");
3730
- const value = (_ref5 = useFieldValue(form, name)) !== null && _ref5 !== void 0 ? _ref5 : "";
3826
+ const value = (_ref4 = useFieldValue(form, name)) !== null && _ref4 !== void 0 ? _ref4 : "";
3731
3827
  const error = form === null || form === void 0 ? void 0 : form.getError(name);
3732
3828
  const touched = form === null || form === void 0 ? void 0 : form.getFieldTouched(name);
3733
3829
  const hasError = Boolean(error && touched);
@@ -3741,7 +3837,10 @@ function FormSelect({ name, children, className, placeholder, minWidth = 140, "a
3741
3837
  "data-opt-id": "A2XF7",
3742
3838
  "data-opt-slug": "form.FormSelect",
3743
3839
  children: [/* @__PURE__ */ jsx(SelectTrigger$1, {
3840
+ id,
3744
3841
  "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : name,
3842
+ "aria-describedby": ariaDescribedBy,
3843
+ onBlur: () => form.setFieldTouched(name, true),
3745
3844
  "aria-invalid": hasError || void 0,
3746
3845
  className: cn("inline-flex cursor-pointer items-center justify-between data-[disabled]:cursor-not-allowed", hasError && "border-danger", className),
3747
3846
  style: { minWidth: typeof minWidth === "number" ? `${minWidth}px` : minWidth },
@@ -3750,16 +3849,16 @@ function FormSelect({ name, children, className, placeholder, minWidth = 140, "a
3750
3849
  });
3751
3850
  }
3752
3851
  /** Renders the form select popover component. */
3753
- function FormSelectPopover(_ref6) {
3754
- let { className } = _ref6, props = _objectWithoutProperties(_ref6, _excluded4$1);
3852
+ function FormSelectPopover(_ref5) {
3853
+ let { className } = _ref5, props = _objectWithoutProperties(_ref5, _excluded4$1);
3755
3854
  return /* @__PURE__ */ jsx(SelectPopover$1, _objectSpread2(_objectSpread2({ className: cn(OPT_SURFACE_POPOVER, OPT_ANIMATE_ENTER_EXIT, "z-[120]", className) }, props), {}, {
3756
3855
  "data-opt-id": "CQSPJ",
3757
3856
  "data-opt-slug": "form.FormSelectPopover"
3758
3857
  }));
3759
3858
  }
3760
3859
  /** Renders the form select item component. */
3761
- function FormSelectItem(_ref7) {
3762
- let { className } = _ref7, props = _objectWithoutProperties(_ref7, _excluded5);
3860
+ function FormSelectItem(_ref6) {
3861
+ let { className } = _ref6, props = _objectWithoutProperties(_ref6, _excluded5);
3763
3862
  return /* @__PURE__ */ jsx(SelectItem$1, _objectSpread2(_objectSpread2({ className: cn("flex cursor-pointer items-center gap-2 data-[disabled]:cursor-not-allowed", OPT_ITEM_BASE, OPT_ACTIVE_ITEM, className) }, props), {}, {
3764
3863
  "data-opt-id": "J3970",
3765
3864
  "data-opt-slug": "form.FormSelectItem"
@@ -3780,8 +3879,8 @@ const switchSizeStyles = {
3780
3879
  }
3781
3880
  };
3782
3881
  /** Renders the form switch component. */
3783
- function FormSwitch$1(_ref8) {
3784
- let { className, size = "md", name } = _ref8, props = _objectWithoutProperties(_ref8, _excluded6);
3882
+ function FormSwitch$1(_ref7) {
3883
+ let { className, size = "md", name } = _ref7, props = _objectWithoutProperties(_ref7, _excluded6);
3785
3884
  const styles = switchSizeStyles[size];
3786
3885
  const form = useRequiredFormContext("FormSwitch");
3787
3886
  const checked = Boolean(useFieldValue(form, name));
@@ -3796,25 +3895,25 @@ function FormSwitch$1(_ref8) {
3796
3895
  }));
3797
3896
  }
3798
3897
  /** Renders the form label component. */
3799
- function FormLabel$1(_ref9) {
3800
- let { className } = _ref9, props = _objectWithoutProperties(_ref9, _excluded7);
3898
+ function FormLabel$1(_ref8) {
3899
+ let { className } = _ref8, props = _objectWithoutProperties(_ref8, _excluded7);
3801
3900
  return /* @__PURE__ */ jsx(FormLabel, _objectSpread2(_objectSpread2({ className: cn(labelClass, className) }, props), {}, {
3802
3901
  "data-opt-id": "JHRKM",
3803
3902
  "data-opt-slug": "form.FormLabel"
3804
3903
  }));
3805
3904
  }
3806
3905
  /** Renders the form error component. */
3807
- function FormError$1(_ref10) {
3808
- let { className } = _ref10, props = _objectWithoutProperties(_ref10, _excluded8);
3906
+ function FormError$1(_ref9) {
3907
+ let { className } = _ref9, props = _objectWithoutProperties(_ref9, _excluded8);
3809
3908
  return /* @__PURE__ */ jsx(FormError, _objectSpread2(_objectSpread2({ className: cn(errorClass, className) }, props), {}, {
3810
3909
  "data-opt-id": "E9NM4",
3811
3910
  "data-opt-slug": "form.FormError"
3812
3911
  }));
3813
3912
  }
3814
3913
  /** Renders the form submit component. */
3815
- function FormSubmit$1(_ref11) {
3914
+ function FormSubmit$1(_ref10) {
3816
3915
  var _form$isSubmitting;
3817
- let { className, disabled, children } = _ref11, props = _objectWithoutProperties(_ref11, _excluded9);
3916
+ let { className, disabled, children } = _ref10, props = _objectWithoutProperties(_ref10, _excluded9);
3818
3917
  const form = useFormContext();
3819
3918
  const isSubmitting = (_form$isSubmitting = form === null || form === void 0 ? void 0 : form.isSubmitting()) !== null && _form$isSubmitting !== void 0 ? _form$isSubmitting : false;
3820
3919
  return /* @__PURE__ */ jsx(FormSubmit, _objectSpread2(_objectSpread2({
@@ -3834,99 +3933,99 @@ function FormProvider$1(props) {
3834
3933
  }));
3835
3934
  }
3836
3935
  /** Renders the form group component. */
3837
- function FormGroup$1(_ref12) {
3838
- let { className } = _ref12, props = _objectWithoutProperties(_ref12, _excluded10);
3936
+ function FormGroup$1(_ref11) {
3937
+ let { className } = _ref11, props = _objectWithoutProperties(_ref11, _excluded10);
3839
3938
  return /* @__PURE__ */ jsx(FormGroup, _objectSpread2(_objectSpread2({ className: cn("gap-group flex flex-col", className) }, props), {}, {
3840
3939
  "data-opt-id": "89E8Q",
3841
3940
  "data-opt-slug": "form.FormGroup"
3842
3941
  }));
3843
3942
  }
3844
3943
  /** Renders the form group label component. */
3845
- function FormGroupLabel$1(_ref13) {
3846
- let { className } = _ref13, props = _objectWithoutProperties(_ref13, _excluded11);
3944
+ function FormGroupLabel$1(_ref12) {
3945
+ let { className } = _ref12, props = _objectWithoutProperties(_ref12, _excluded11);
3847
3946
  return /* @__PURE__ */ jsx(FormGroupLabel, _objectSpread2(_objectSpread2({ className: cn(labelClass, "font-semibold", className) }, props), {}, {
3848
3947
  "data-opt-id": "W95BH",
3849
3948
  "data-opt-slug": "form.FormGroupLabel"
3850
3949
  }));
3851
3950
  }
3852
3951
  /** Renders the form description component. */
3853
- function FormDescription$1(_ref14) {
3854
- let { className } = _ref14, props = _objectWithoutProperties(_ref14, _excluded12);
3952
+ function FormDescription$1(_ref13) {
3953
+ let { className } = _ref13, props = _objectWithoutProperties(_ref13, _excluded12);
3855
3954
  return /* @__PURE__ */ jsx(FormDescription, _objectSpread2(_objectSpread2({ className: cn(descriptionClass, className) }, props), {}, {
3856
3955
  "data-opt-id": "RFB40",
3857
3956
  "data-opt-slug": "form.FormDescription"
3858
3957
  }));
3859
3958
  }
3860
3959
  /** Renders the form field component. */
3861
- function FormField$1(_ref15) {
3862
- let { className } = _ref15, props = _objectWithoutProperties(_ref15, _excluded13);
3960
+ function FormField$1(_ref14) {
3961
+ let { className } = _ref14, props = _objectWithoutProperties(_ref14, _excluded13);
3863
3962
  return /* @__PURE__ */ jsx(FormField, _objectSpread2(_objectSpread2({ className: cn("gap-element flex flex-col", className) }, props), {}, {
3864
3963
  "data-opt-id": "C68GP",
3865
3964
  "data-opt-slug": "form.FormField"
3866
3965
  }));
3867
3966
  }
3868
3967
  /** Renders the form control component. */
3869
- function FormControl$1(_ref16) {
3870
- let { className } = _ref16, props = _objectWithoutProperties(_ref16, _excluded14);
3968
+ function FormControl$1(_ref15) {
3969
+ let { className } = _ref15, props = _objectWithoutProperties(_ref15, _excluded14);
3871
3970
  return /* @__PURE__ */ jsx(FormControl, _objectSpread2(_objectSpread2({ className: cn(inputClass, className) }, props), {}, {
3872
3971
  "data-opt-id": "XNF0F",
3873
3972
  "data-opt-slug": "form.FormControl"
3874
3973
  }));
3875
3974
  }
3876
3975
  /** Renders the form push component. */
3877
- function FormPush$1(_ref17) {
3878
- let { className } = _ref17, props = _objectWithoutProperties(_ref17, _excluded15);
3976
+ function FormPush$1(_ref16) {
3977
+ let { className } = _ref16, props = _objectWithoutProperties(_ref16, _excluded15);
3879
3978
  return /* @__PURE__ */ jsx(FormPush, _objectSpread2(_objectSpread2({ className: cn(OPT_BUTTON_SECONDARY, className) }, props), {}, {
3880
3979
  "data-opt-id": "5SV8S",
3881
3980
  "data-opt-slug": "form.FormPush"
3882
3981
  }));
3883
3982
  }
3884
3983
  /** Renders the form remove component. */
3885
- function FormRemove$1(_ref18) {
3886
- let { className } = _ref18, props = _objectWithoutProperties(_ref18, _excluded16);
3984
+ function FormRemove$1(_ref17) {
3985
+ let { className } = _ref17, props = _objectWithoutProperties(_ref17, _excluded16);
3887
3986
  return /* @__PURE__ */ jsx(FormRemove, _objectSpread2(_objectSpread2({ className: cn("text-danger-fg hover:text-danger focus-visible:ring-ring focus-visible:ring-offset-ring-offset inline-flex items-center text-sm outline-none focus-visible:ring-2 focus-visible:ring-offset-1", OPT_FOCUS_VISIBLE, className) }, props), {}, {
3888
3987
  "data-opt-id": "FEW6V",
3889
3988
  "data-opt-slug": "form.FormRemove"
3890
3989
  }));
3891
3990
  }
3892
3991
  /** Renders the form reset component. */
3893
- function FormReset$1(_ref19) {
3894
- let { className } = _ref19, props = _objectWithoutProperties(_ref19, _excluded17);
3992
+ function FormReset$1(_ref18) {
3993
+ let { className } = _ref18, props = _objectWithoutProperties(_ref18, _excluded17);
3895
3994
  return /* @__PURE__ */ jsx(FormReset, _objectSpread2(_objectSpread2({ className: cn(OPT_BUTTON_SECONDARY, className) }, props), {}, {
3896
3995
  "data-opt-id": "M3FVB",
3897
3996
  "data-opt-slug": "form.FormReset"
3898
3997
  }));
3899
3998
  }
3900
3999
  /** Renders the form checkbox component. */
3901
- function FormCheckbox$1(_ref20) {
3902
- let { className } = _ref20, props = _objectWithoutProperties(_ref20, _excluded18);
4000
+ function FormCheckbox$1(_ref19) {
4001
+ let { className } = _ref19, props = _objectWithoutProperties(_ref19, _excluded18);
3903
4002
  return /* @__PURE__ */ jsx(FormCheckbox, _objectSpread2(_objectSpread2({ className: cn(checkboxClass, className) }, props), {}, {
3904
4003
  "data-opt-id": "3BZS1",
3905
4004
  "data-opt-slug": "form.FormCheckbox"
3906
4005
  }));
3907
4006
  }
3908
4007
  /** Renders the form radio group component. */
3909
- function FormRadioGroup$1(_ref21) {
3910
- let { className } = _ref21, props = _objectWithoutProperties(_ref21, _excluded19);
4008
+ function FormRadioGroup$1(_ref20) {
4009
+ let { className } = _ref20, props = _objectWithoutProperties(_ref20, _excluded19);
3911
4010
  return /* @__PURE__ */ jsx(FormRadioGroup, _objectSpread2(_objectSpread2({ className: cn("gap-group flex flex-col", className) }, props), {}, {
3912
4011
  "data-opt-id": "J8XRP",
3913
4012
  "data-opt-slug": "form.FormRadioGroup"
3914
4013
  }));
3915
4014
  }
3916
4015
  /** Renders the form radio component. */
3917
- function FormRadio$1(_ref22) {
3918
- let { className } = _ref22, props = _objectWithoutProperties(_ref22, _excluded20);
4016
+ function FormRadio$1(_ref21) {
4017
+ let { className } = _ref21, props = _objectWithoutProperties(_ref21, _excluded20);
3919
4018
  return /* @__PURE__ */ jsx(FormRadio, _objectSpread2(_objectSpread2({ className: cn(radioClass, className) }, props), {}, {
3920
4019
  "data-opt-id": "YTN4Q",
3921
4020
  "data-opt-slug": "form.FormRadio"
3922
4021
  }));
3923
4022
  }
3924
4023
  /** Renders the form number input component. */
3925
- function FormNumberInput(_ref23) {
3926
- var _ref24;
3927
- let { name } = _ref23, props = _objectWithoutProperties(_ref23, _excluded21);
4024
+ function FormNumberInput(_ref22) {
4025
+ var _ref23;
4026
+ let { name } = _ref22, props = _objectWithoutProperties(_ref22, _excluded21);
3928
4027
  const form = useRequiredFormContext("FormNumberInput");
3929
- const value = (_ref24 = useFieldValue(form, name)) !== null && _ref24 !== void 0 ? _ref24 : 0;
4028
+ const value = (_ref23 = useFieldValue(form, name)) !== null && _ref23 !== void 0 ? _ref23 : 0;
3930
4029
  const error = form === null || form === void 0 ? void 0 : form.getError(name);
3931
4030
  const touched = form === null || form === void 0 ? void 0 : form.getFieldTouched(name);
3932
4031
  return /* @__PURE__ */ jsx(NumberInput, _objectSpread2(_objectSpread2({
@@ -3939,11 +4038,11 @@ function FormNumberInput(_ref23) {
3939
4038
  }));
3940
4039
  }
3941
4040
  /** Renders the form slider component. */
3942
- function FormSlider(_ref25) {
3943
- var _ref26;
3944
- let { name } = _ref25, props = _objectWithoutProperties(_ref25, _excluded22);
4041
+ function FormSlider(_ref24) {
4042
+ var _ref25;
4043
+ let { name } = _ref24, props = _objectWithoutProperties(_ref24, _excluded22);
3945
4044
  const form = useRequiredFormContext("FormSlider");
3946
- const value = (_ref26 = useFieldValue(form, name)) !== null && _ref26 !== void 0 ? _ref26 : 0;
4045
+ const value = (_ref25 = useFieldValue(form, name)) !== null && _ref25 !== void 0 ? _ref25 : 0;
3947
4046
  return /* @__PURE__ */ jsx(Slider, _objectSpread2(_objectSpread2({
3948
4047
  value,
3949
4048
  onChange: (v) => form.setValue(name, v)
@@ -3953,11 +4052,11 @@ function FormSlider(_ref25) {
3953
4052
  }));
3954
4053
  }
3955
4054
  /** Renders the form star rating component. */
3956
- function FormStarRating(_ref27) {
3957
- var _ref28;
3958
- let { name } = _ref27, props = _objectWithoutProperties(_ref27, _excluded23);
4055
+ function FormStarRating(_ref26) {
4056
+ var _ref27;
4057
+ let { name } = _ref26, props = _objectWithoutProperties(_ref26, _excluded23);
3959
4058
  const form = useRequiredFormContext("FormStarRating");
3960
- const value = (_ref28 = useFieldValue(form, name)) !== null && _ref28 !== void 0 ? _ref28 : 0;
4059
+ const value = (_ref27 = useFieldValue(form, name)) !== null && _ref27 !== void 0 ? _ref27 : 0;
3961
4060
  return /* @__PURE__ */ jsx(StarRating, _objectSpread2(_objectSpread2({
3962
4061
  value,
3963
4062
  onChange: (v) => form.setValue(name, v)
@@ -3967,11 +4066,11 @@ function FormStarRating(_ref27) {
3967
4066
  }));
3968
4067
  }
3969
4068
  /** Renders the form color picker component. */
3970
- function FormColorPicker(_ref29) {
3971
- var _ref30;
3972
- let { name } = _ref29, props = _objectWithoutProperties(_ref29, _excluded24);
4069
+ function FormColorPicker(_ref28) {
4070
+ var _ref29;
4071
+ let { name } = _ref28, props = _objectWithoutProperties(_ref28, _excluded24);
3973
4072
  const form = useRequiredFormContext("FormColorPicker");
3974
- const value = (_ref30 = useFieldValue(form, name)) !== null && _ref30 !== void 0 ? _ref30 : "#000000";
4073
+ const value = (_ref29 = useFieldValue(form, name)) !== null && _ref29 !== void 0 ? _ref29 : "#000000";
3975
4074
  const error = form === null || form === void 0 ? void 0 : form.getError(name);
3976
4075
  const touched = form === null || form === void 0 ? void 0 : form.getFieldTouched(name);
3977
4076
  return /* @__PURE__ */ jsx(ColorPicker, _objectSpread2(_objectSpread2({
@@ -3984,11 +4083,11 @@ function FormColorPicker(_ref29) {
3984
4083
  }));
3985
4084
  }
3986
4085
  /** Renders the form icon picker component. */
3987
- function FormIconPicker(_ref31) {
3988
- var _ref32;
3989
- let { name } = _ref31, props = _objectWithoutProperties(_ref31, _excluded25);
4086
+ function FormIconPicker(_ref30) {
4087
+ var _ref31;
4088
+ let { name } = _ref30, props = _objectWithoutProperties(_ref30, _excluded25);
3990
4089
  const form = useRequiredFormContext("FormIconPicker");
3991
- const value = (_ref32 = useFieldValue(form, name)) !== null && _ref32 !== void 0 ? _ref32 : "";
4090
+ const value = (_ref31 = useFieldValue(form, name)) !== null && _ref31 !== void 0 ? _ref31 : "";
3992
4091
  const error = form === null || form === void 0 ? void 0 : form.getError(name);
3993
4092
  const touched = form === null || form === void 0 ? void 0 : form.getFieldTouched(name);
3994
4093
  return /* @__PURE__ */ jsx(IconPicker, _objectSpread2(_objectSpread2({
@@ -4001,11 +4100,11 @@ function FormIconPicker(_ref31) {
4001
4100
  }));
4002
4101
  }
4003
4102
  /** Renders the form tag input component. */
4004
- function FormTagInput(_ref33) {
4005
- var _ref34;
4006
- let { name } = _ref33, props = _objectWithoutProperties(_ref33, _excluded26);
4103
+ function FormTagInput(_ref32) {
4104
+ var _ref33;
4105
+ let { name } = _ref32, props = _objectWithoutProperties(_ref32, _excluded26);
4007
4106
  const form = useRequiredFormContext("FormTagInput");
4008
- const value = (_ref34 = useFieldValue(form, name)) !== null && _ref34 !== void 0 ? _ref34 : [];
4107
+ const value = (_ref33 = useFieldValue(form, name)) !== null && _ref33 !== void 0 ? _ref33 : [];
4009
4108
  const error = form === null || form === void 0 ? void 0 : form.getError(name);
4010
4109
  const touched = form === null || form === void 0 ? void 0 : form.getFieldTouched(name);
4011
4110
  return /* @__PURE__ */ jsx(TagInput, _objectSpread2(_objectSpread2({
@@ -4018,11 +4117,11 @@ function FormTagInput(_ref33) {
4018
4117
  }));
4019
4118
  }
4020
4119
  /** Renders the form date range picker component. */
4021
- function FormDateRangePicker(_ref35) {
4022
- var _ref36;
4023
- let { name } = _ref35, props = _objectWithoutProperties(_ref35, _excluded27);
4120
+ function FormDateRangePicker(_ref34) {
4121
+ var _ref35;
4122
+ let { name } = _ref34, props = _objectWithoutProperties(_ref34, _excluded27);
4024
4123
  const form = useRequiredFormContext("FormDateRangePicker");
4025
- const value = (_ref36 = useFieldValue(form, name)) !== null && _ref36 !== void 0 ? _ref36 : {
4124
+ const value = (_ref35 = useFieldValue(form, name)) !== null && _ref35 !== void 0 ? _ref35 : {
4026
4125
  start: null,
4027
4126
  end: null
4028
4127
  };
@@ -4943,4 +5042,4 @@ function TextTruncate({ text, truncation = "startEnd", ellipsis = "…", width,
4943
5042
  });
4944
5043
  }
4945
5044
  //#endregion
4946
- export { useFormContext as $, OPT_HOVER_ITEM as $n, CompositeItem as $t, FormGroup$1 as A, SkeletonText as An, AlertDialogPanel$1 as At, FormRemove$1 as B, OPT_BADGE_NEUTRAL as Bn, SelectItem$1 as Bt, FormCheckbox$1 as C, koComboboxLabels as Cn, ComboboxEmpty as Ct, FormDescription$1 as D, SkeletonAvatar as Dn, ComboboxItem$1 as Dt, FormDateRangePicker as E, Skeleton as En, ComboboxInput$1 as Et, FormNumberInput as F, OPT_ACTIVE_ITEM as Fn, DialogFooter as Ft, FormSelectPopover as G, OPT_DISCLOSURE_TRIGGER as Gn, Tab$1 as Gt, FormRoot$1 as H, OPT_BADGE_YELLOW as Hn, SelectPopover$1 as Ht, FormProvider$1 as I, OPT_ANIMATE_DRAWER as In, DialogHeader as It, FormSubmit$1 as J, OPT_DOT_GREEN as Jn, TabsRoot$1 as Jt, FormSlider as K, OPT_DIVIDER as Kn, TabList$1 as Kt, FormPush$1 as L, OPT_ANIMATE_ENTER_EXIT as Ln, DialogHeading$1 as Lt, FormIconPicker as M, FieldMessages as Mn, DialogDescription$1 as Mt, FormInput$1 as N, RequiredMark as Nn, DialogDisclosure$1 as Nt, FormError$1 as O, SkeletonCard as On, ComboboxPopover$1 as Ot, FormLabel$1 as P, getDescribedBy as Pn, DialogDismiss$1 as Pt, useFieldValue as Q, OPT_FOCUS_VISIBLE as Qn, Composite as Qt, FormRadio$1 as R, OPT_BADGE_BLUE as Rn, DialogPanel$1 as Rt, formatOptTime as S, koBreadcrumbLabels as Sn, MenubarRoot$1 as St, FormControl$1 as T, StatCard as Tn, ComboboxGroupLabel$1 as Tt, FormSelect as U, OPT_BORDER as Un, SelectRoot$1 as Ut, FormReset$1 as V, OPT_BADGE_RED as Vn, SelectLabel$1 as Vt, FormSelectItem as W, OPT_DISCLOSURE_CONTENT as Wn, SelectTrigger$1 as Wt, FormTagInput as X, OPT_DOT_YELLOW as Xn, DisclosureRoot$1 as Xt, FormSwitch$1 as Y, OPT_DOT_RED as Yn, DisclosureContent$1 as Yt, FormTextarea as Z, OPT_FOCUS as Zn, DisclosureTrigger$1 as Zt, DropdownTrigger as _, Spinner as _n, cn as _r, MenuPopover$1 as _t, FieldTokenLegend as a, StarRating as an, OPT_SURFACE_RAISED as ar, getIconRegistryEntry as at, formatOptNumber as b, EmptyState as bn, MenuTrigger$1 as bt, ResizableHandle as c, useInputId as cn, OPT_TD_MUTED as cr, PopoverContent$1 as ct, Checkbox as d, ToolbarRoot$1 as dn, OPT_TEXT_SECONDARY as dr, Slider as dt, CompositeProvider as en, OPT_INPUT as er, useFormStore as et, CheckboxGroup as f, ToolbarSeparator$1 as fn, OPT_TEXT_TERTIARY as fr, NumberInput as ft, DropdownSeparator as g, Alert as gn, Kbd as gr, MenuItemRadio$1 as gt, DropdownMenu as h, TooltipProvider as hn, _objectWithoutProperties as hr, MenuItemCheckbox$1 as ht, FieldToken as i, Textarea as in, OPT_SURFACE_POPOVER as ir, IconPicker as it, FormGroupLabel$1 as j, useControlledState as jn, DialogBody as jt, FormField$1 as k, SkeletonTable as kn, ComboboxRoot$1 as kt, ResizablePanel as l, ToolbarButton$1 as ln, OPT_TEXT_LABEL as lr, PopoverRoot$1 as lt, DropdownItem as m, TooltipAnchor$1 as mn, _objectSpread2 as mr, MenuItem$1 as mt, Highlight as n, CompositeZone as nn, OPT_ITEM_BASE as nr, DateRangePicker as nt, resolveFieldType as o, Switch as on, OPT_TABLE_ROW_ACTIVE as or, ColorPicker as ot, DropdownContent as p, Tooltip$1 as pn, OPT_TH as pr, MenuButtonArrow$1 as pt, FormStarRating as q, OPT_DOT_GRAY as qn, TabPanel$1 as qt, FIELD_TYPE_TOKENS as r, Meter$1 as rn, OPT_SURFACE as rr, TagInput as rt, Pagination as s, Input as sn, OPT_TD as sr, PopoverClose$1 as st, TextTruncate as t, CompositeRow as tn, OPT_INPUT_ERROR as tr, DEFAULT_PRESETS as tt, ResizablePanelGroup as u, ToolbarContainer$1 as un, OPT_TEXT_PRIMARY as ur, PopoverTrigger$1 as ut, OPT_UI_DEFAULT_LOCALE as v, Badge as vn, MenuRoot$1 as vt, FormColorPicker as w, koStarRatingLabels as wn, ComboboxGroup$1 as wt, formatOptShortDate as x, Button as xn, MenubarContainer$1 as xt, formatOptDateTime as y, DescriptionList as yn, MenuSeparator$1 as yt, FormRadioGroup$1 as z, OPT_BADGE_GREEN as zn, DialogRoot$1 as zt };
5045
+ export { useFormContext as $, OPT_DOT_YELLOW as $n, Composite as $t, FormGroup$1 as A, SkeletonTable as An, ComboboxRoot$1 as At, FormRemove$1 as B, OPT_ANIMATE_ENTER_EXIT as Bn, DialogRoot$1 as Bt, FormCheckbox$1 as C, koBreadcrumbLabels as Cn, MenubarRoot$1 as Ct, FormDescription$1 as D, Skeleton as Dn, ComboboxInput$1 as Dt, FormDateRangePicker as E, StatCard as En, ComboboxGroupLabel$1 as Et, FormNumberInput as F, FieldMessages as Fn, DialogDismiss$1 as Ft, FormSelectPopover as G, OPT_BADGE_YELLOW as Gn, SelectTrigger$1 as Gt, FormRoot$1 as H, OPT_BADGE_GREEN as Hn, SelectLabel$1 as Ht, FormProvider$1 as I, RequiredMark as In, DialogFooter as It, FormSubmit$1 as J, OPT_DISCLOSURE_TRIGGER as Jn, TabPanel$1 as Jt, FormSlider as K, OPT_BORDER as Kn, Tab$1 as Kt, FormPush$1 as L, getDescribedBy as Ln, DialogHeader as Lt, FormIconPicker as M, Toggle$1 as Mn, DialogBody as Mt, FormInput$1 as N, ToggleGroup$1 as Nn, DialogDescription$1 as Nt, FormError$1 as O, SkeletonAvatar as On, ComboboxItem$1 as Ot, FormLabel$1 as P, useControlledState as Pn, DialogDisclosure$1 as Pt, useFieldValue as Q, OPT_DOT_RED as Qn, DisclosureTrigger$1 as Qt, FormRadio$1 as R, OPT_ACTIVE_ITEM as Rn, DialogHeading$1 as Rt, formatOptTime as S, Button as Sn, MenubarContainer$1 as St, FormControl$1 as T, koStarRatingLabels as Tn, ComboboxGroup$1 as Tt, FormSelect as U, OPT_BADGE_NEUTRAL as Un, SelectPopover$1 as Ut, FormReset$1 as V, OPT_BADGE_BLUE as Vn, SelectItem$1 as Vt, FormSelectItem as W, OPT_BADGE_RED as Wn, SelectRoot$1 as Wt, FormTagInput as X, OPT_DOT_GRAY as Xn, DisclosureContent$1 as Xt, FormSwitch$1 as Y, OPT_DIVIDER as Yn, TabsRoot$1 as Yt, FormTextarea$1 as Z, OPT_DOT_GREEN as Zn, DisclosureRoot$1 as Zt, DropdownTrigger as _, Alert as _n, _objectSpread2 as _r, MenuItemRadio$1 as _t, FieldTokenLegend as a, Textarea as an, OPT_ITEM_BASE as ar, IconPicker as at, formatOptNumber as b, DescriptionList as bn, cn as br, MenuSeparator$1 as bt, ResizableHandle as c, Input as cn, OPT_SURFACE_RAISED as cr, PopoverClose$1 as ct, Checkbox as d, ToolbarContainer$1 as dn, OPT_TD_MUTED as dr, PopoverTrigger$1 as dt, CompositeItem as en, OPT_FOCUS as er, useFormStore as et, CheckboxGroup as f, ToolbarRoot$1 as fn, OPT_TEXT_LABEL as fr, Slider as ft, DropdownSeparator as g, TooltipProvider as gn, OPT_TH as gr, MenuItemCheckbox$1 as gt, DropdownMenu as h, TooltipAnchor$1 as hn, OPT_TEXT_TERTIARY as hr, MenuItem$1 as ht, FieldToken as i, Meter$1 as in, OPT_INPUT_ERROR as ir, isComposingKey as it, FormGroupLabel$1 as j, SkeletonText as jn, AlertDialogPanel$1 as jt, FormField$1 as k, SkeletonCard as kn, ComboboxPopover$1 as kt, ResizablePanel as l, useInputId as ln, OPT_TABLE_ROW_ACTIVE as lr, PopoverContent$1 as lt, DropdownItem as m, Tooltip$1 as mn, OPT_TEXT_SECONDARY as mr, MenuButtonArrow$1 as mt, Highlight as n, CompositeRow as nn, OPT_HOVER_ITEM as nr, DateRangePicker as nt, resolveFieldType as o, StarRating as on, OPT_SURFACE as or, getIconRegistryEntry as ot, DropdownContent as p, ToolbarSeparator$1 as pn, OPT_TEXT_PRIMARY as pr, NumberInput as pt, FormStarRating as q, OPT_DISCLOSURE_CONTENT as qn, TabList$1 as qt, FIELD_TYPE_TOKENS as r, CompositeZone as rn, OPT_INPUT as rr, TagInput as rt, Pagination as s, Switch as sn, OPT_SURFACE_POPOVER as sr, ColorPicker as st, TextTruncate as t, CompositeProvider as tn, OPT_FOCUS_VISIBLE as tr, DEFAULT_PRESETS as tt, ResizablePanelGroup as u, ToolbarButton$1 as un, OPT_TD as ur, PopoverRoot$1 as ut, OPT_UI_DEFAULT_LOCALE as v, Spinner as vn, _objectWithoutProperties as vr, MenuPopover$1 as vt, FormColorPicker as w, koComboboxLabels as wn, ComboboxEmpty as wt, formatOptShortDate as x, EmptyState as xn, MenuTrigger$1 as xt, formatOptDateTime as y, Badge as yn, Kbd as yr, MenuRoot$1 as yt, FormRadioGroup$1 as z, OPT_ANIMATE_DRAWER as zn, DialogPanel$1 as zt };