@timeax/form-palette 0.2.0 → 0.2.2

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.
package/dist/extra.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import * as React74 from 'react';
2
- import React74__default, { forwardRef, createElement, createContext, useMemo, useCallback, useRef, useState, useEffect, useLayoutEffect, useContext } from 'react';
1
+ import * as React76 from 'react';
2
+ import React76__default, { forwardRef, createElement, createContext, useMemo, useCallback, useRef, useState, useEffect, useLayoutEffect, useContext } from 'react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import { createPortal } from 'react-dom';
5
5
  import Draggable from 'react-draggable';
@@ -10,10 +10,10 @@ import { Slot } from '@radix-ui/react-slot';
10
10
  import * as SwitchPrimitive from '@radix-ui/react-switch';
11
11
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
12
12
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
13
+ import * as ScrollAreaPrimitive2 from '@radix-ui/react-scroll-area';
13
14
  import { Virtuoso, VirtuosoGrid } from 'react-virtuoso';
14
15
  import * as SliderPrimitive from '@radix-ui/react-slider';
15
16
  import * as DialogPrimitive from '@radix-ui/react-dialog';
16
- import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
17
17
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
18
18
  import '@radix-ui/react-toggle';
19
19
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
@@ -6628,19 +6628,19 @@ function createListerRuntime(opts) {
6628
6628
  selectors
6629
6629
  };
6630
6630
  }
6631
- var ListerContext = React74.createContext(
6631
+ var ListerContext = React76.createContext(
6632
6632
  null
6633
6633
  );
6634
6634
  function ListerProvider({
6635
6635
  children,
6636
6636
  ...opts
6637
6637
  }) {
6638
- const runtimeRef = React74.useRef(null);
6639
- const [, forceUpdate] = React74.useReducer((x2) => x2 + 1, 0);
6638
+ const runtimeRef = React76.useRef(null);
6639
+ const [, forceUpdate] = React76.useReducer((x2) => x2 + 1, 0);
6640
6640
  if (!runtimeRef.current) {
6641
6641
  runtimeRef.current = createListerRuntime(opts);
6642
6642
  }
6643
- React74.useEffect(() => {
6643
+ React76.useEffect(() => {
6644
6644
  const runtime = runtimeRef.current;
6645
6645
  if (!runtime) return;
6646
6646
  const unsub = runtime.subscribe(() => {
@@ -6651,7 +6651,7 @@ function ListerProvider({
6651
6651
  return /* @__PURE__ */ jsx(ListerContext.Provider, { value: runtimeRef.current, children });
6652
6652
  }
6653
6653
  function useListerRuntime() {
6654
- const ctx = React74.useContext(ListerContext);
6654
+ const ctx = React76.useContext(ListerContext);
6655
6655
  if (!ctx)
6656
6656
  throw new Error(
6657
6657
  "useListerRuntime must be used within <ListerProvider>"
@@ -9730,17 +9730,17 @@ var focusEl = (el) => {
9730
9730
  }
9731
9731
  };
9732
9732
  function useUpdateEffect(effect, deps) {
9733
- const mounted = React74.useRef(false);
9734
- React74.useEffect(() => {
9733
+ const mounted = React76.useRef(false);
9734
+ React76.useEffect(() => {
9735
9735
  if (mounted.current) {
9736
9736
  return effect();
9737
9737
  }
9738
9738
  mounted.current = true;
9739
9739
  }, deps);
9740
9740
  }
9741
- var InputMask = React74.memo(
9742
- React74.forwardRef((inProps, ref) => {
9743
- const props = React74.useMemo(
9741
+ var InputMask = React76.memo(
9742
+ React76.forwardRef((inProps, ref) => {
9743
+ const props = React76.useMemo(
9744
9744
  () => ({
9745
9745
  autoClear: true,
9746
9746
  autoFocus: false,
@@ -9755,20 +9755,20 @@ var InputMask = React74.memo(
9755
9755
  }),
9756
9756
  [inProps]
9757
9757
  );
9758
- const elementRef = React74.useRef(null);
9759
- const firstNonMaskPos = React74.useRef(null);
9760
- const lastRequiredNonMaskPos = React74.useRef(0);
9761
- const tests = React74.useRef([]);
9762
- const buffer = React74.useRef([]);
9763
- const len = React74.useRef(0);
9764
- const oldVal = React74.useRef(null);
9765
- const focus = React74.useRef(false);
9766
- const focusText = React74.useRef(null);
9767
- const isValueChecked = React74.useRef(null);
9768
- const partialPosition = React74.useRef(null);
9769
- const defaultBuffer = React74.useRef(null);
9770
- const caretTimeoutId = React74.useRef(null);
9771
- const androidChrome = React74.useRef(false);
9758
+ const elementRef = React76.useRef(null);
9759
+ const firstNonMaskPos = React76.useRef(null);
9760
+ const lastRequiredNonMaskPos = React76.useRef(0);
9761
+ const tests = React76.useRef([]);
9762
+ const buffer = React76.useRef([]);
9763
+ const len = React76.useRef(0);
9764
+ const oldVal = React76.useRef(null);
9765
+ const focus = React76.useRef(false);
9766
+ const focusText = React76.useRef(null);
9767
+ const isValueChecked = React76.useRef(null);
9768
+ const partialPosition = React76.useRef(null);
9769
+ const defaultBuffer = React76.useRef(null);
9770
+ const caretTimeoutId = React76.useRef(null);
9771
+ const androidChrome = React76.useRef(false);
9772
9772
  const caret = (first, last) => {
9773
9773
  var _a, _b;
9774
9774
  let range;
@@ -9803,7 +9803,7 @@ var InputMask = React74.memo(
9803
9803
  }
9804
9804
  return { begin, end };
9805
9805
  };
9806
- const getPlaceholder = React74.useCallback(
9806
+ const getPlaceholder = React76.useCallback(
9807
9807
  (i4) => {
9808
9808
  var _a;
9809
9809
  const slotChar2 = (_a = props.slotChar) != null ? _a : "_";
@@ -10073,7 +10073,7 @@ var InputMask = React74.memo(
10073
10073
  });
10074
10074
  }
10075
10075
  };
10076
- const getUnmaskedValue = React74.useCallback(() => {
10076
+ const getUnmaskedValue = React76.useCallback(() => {
10077
10077
  const unmaskedBuffer = [];
10078
10078
  for (let i4 = 0; i4 < buffer.current.length; i4++) {
10079
10079
  const c2 = buffer.current[i4];
@@ -10128,7 +10128,7 @@ var InputMask = React74.memo(
10128
10128
  }
10129
10129
  return pos;
10130
10130
  };
10131
- const isValueUpdated = React74.useCallback(() => {
10131
+ const isValueUpdated = React76.useCallback(() => {
10132
10132
  var _a, _b, _c, _d;
10133
10133
  const elVal = (_b = (_a = elementRef.current) == null ? void 0 : _a.value) != null ? _b : "";
10134
10134
  return props.unmask ? ((_c = props.value) != null ? _c : "") !== getUnmaskedValue() : defaultBuffer.current !== elVal && elVal !== ((_d = props.value) != null ? _d : "");
@@ -10228,7 +10228,7 @@ var InputMask = React74.memo(
10228
10228
  const onInput = (event) => {
10229
10229
  androidChrome.current ? handleAndroidInput(event) : handleInputChange(event);
10230
10230
  };
10231
- React74.useImperativeHandle(
10231
+ React76.useImperativeHandle(
10232
10232
  ref,
10233
10233
  () => ({
10234
10234
  focus: () => focusEl(elementRef.current),
@@ -10236,10 +10236,10 @@ var InputMask = React74.memo(
10236
10236
  }),
10237
10237
  []
10238
10238
  );
10239
- React74.useEffect(() => {
10239
+ React76.useEffect(() => {
10240
10240
  if (!elementRef.current) return;
10241
10241
  }, []);
10242
- React74.useEffect(() => {
10242
+ React76.useEffect(() => {
10243
10243
  init();
10244
10244
  updateValue();
10245
10245
  }, []);
@@ -10273,6 +10273,7 @@ var InputMask = React74.memo(
10273
10273
  onKeyPress: l2,
10274
10274
  onInput: m2,
10275
10275
  className,
10276
+ invalid,
10276
10277
  ...restInputProps
10277
10278
  } = props;
10278
10279
  return /* @__PURE__ */ jsx(
@@ -10294,6 +10295,7 @@ var InputMask = React74.memo(
10294
10295
  onKeyPress,
10295
10296
  onInput,
10296
10297
  onPaste: (e4) => handleInputChange(e4, true),
10298
+ "aria-invalid": invalid ? "true" : void 0,
10297
10299
  ...restInputProps
10298
10300
  }
10299
10301
  );
@@ -10387,7 +10389,7 @@ function resolveSizeDensityClasses(size, density) {
10387
10389
  }
10388
10390
  return { heightCls, textCls, densityCls };
10389
10391
  }
10390
- var Input = React74.forwardRef(
10392
+ var Input = React76.forwardRef(
10391
10393
  function Input2(rawProps, forwardedRef) {
10392
10394
  const {
10393
10395
  // base
@@ -10397,6 +10399,7 @@ var Input = React74.forwardRef(
10397
10399
  disabled,
10398
10400
  readOnly,
10399
10401
  required,
10402
+ invalid,
10400
10403
  // size / density
10401
10404
  size = "md",
10402
10405
  density = "normal",
@@ -10450,8 +10453,8 @@ var Input = React74.forwardRef(
10450
10453
  const sizeKey = size != null ? size : "md";
10451
10454
  const densityKey = density != null ? density : "normal";
10452
10455
  const isMasked = Boolean(mask);
10453
- const innerRef = React74.useRef(null);
10454
- React74.useImperativeHandle(
10456
+ const innerRef = React76.useRef(null);
10457
+ React76.useImperativeHandle(
10455
10458
  forwardedRef,
10456
10459
  () => innerRef.current,
10457
10460
  []
@@ -10472,11 +10475,11 @@ var Input = React74.forwardRef(
10472
10475
  const baseIconGap = iconGap != null ? iconGap : 4;
10473
10476
  const leadingGap = leadingIconSpacing != null ? leadingIconSpacing : baseIconGap;
10474
10477
  const trailingGap = trailingIconSpacing != null ? trailingIconSpacing : baseIconGap;
10475
- const leadingIconsRef = React74.useRef(null);
10476
- const trailingIconsRef = React74.useRef(null);
10477
- const [leadingIconsWidth, setLeadingIconsWidth] = React74.useState(0);
10478
- const [trailingIconsWidth, setTrailingIconsWidth] = React74.useState(0);
10479
- React74.useLayoutEffect(() => {
10478
+ const leadingIconsRef = React76.useRef(null);
10479
+ const trailingIconsRef = React76.useRef(null);
10480
+ const [leadingIconsWidth, setLeadingIconsWidth] = React76.useState(0);
10481
+ const [trailingIconsWidth, setTrailingIconsWidth] = React76.useState(0);
10482
+ React76.useLayoutEffect(() => {
10480
10483
  if (typeof window === "undefined") return;
10481
10484
  if (typeof ResizeObserver === "undefined") return;
10482
10485
  const leadingEl = leadingIconsRef.current;
@@ -10551,7 +10554,7 @@ var Input = React74.forwardRef(
10551
10554
  inputClassName
10552
10555
  );
10553
10556
  const maskMode = unmask === true || unmask === "raw" ? "raw" : "masked";
10554
- const handleFocus = React74.useCallback(
10557
+ const handleFocus = React76.useCallback(
10555
10558
  (event) => {
10556
10559
  onFocus == null ? void 0 : onFocus(event);
10557
10560
  if (!prefix && !suffix) return;
@@ -10579,7 +10582,7 @@ var Input = React74.forwardRef(
10579
10582
  const placeholder = typeof mask === "string" && mask ? mask : rest.placeholder;
10580
10583
  const hasCustomPadding = typeof px === "number" || typeof py === "number" || typeof ps === "number" || typeof pe2 === "number" || typeof pb === "number";
10581
10584
  const hasKeyFilter = !!keyFilter;
10582
- const handleKeyDownWrapped = React74.useCallback(
10585
+ const handleKeyDownWrapped = React76.useCallback(
10583
10586
  (event) => {
10584
10587
  if (hasKeyFilter && keyFilterOn === "keydown" && !event.ctrlKey && !event.metaKey && !event.altKey && event.key && event.key.length === 1) {
10585
10588
  const inputEl = event.currentTarget;
@@ -10596,7 +10599,7 @@ var Input = React74.forwardRef(
10596
10599
  },
10597
10600
  [hasKeyFilter, keyFilterOn, keyFilter, onKeyDown]
10598
10601
  );
10599
- const handleKeyPressWrapped = React74.useCallback(
10602
+ const handleKeyPressWrapped = React76.useCallback(
10600
10603
  (event) => {
10601
10604
  if (hasKeyFilter && keyFilterOn === "keypress" && !event.ctrlKey && !event.metaKey && !event.altKey && event.key && event.key.length === 1) {
10602
10605
  const inputEl = event.currentTarget;
@@ -10613,7 +10616,7 @@ var Input = React74.forwardRef(
10613
10616
  },
10614
10617
  [hasKeyFilter, keyFilterOn, keyFilter, onKeyPress]
10615
10618
  );
10616
- const handleBeforeInputWrapped = React74.useCallback(
10619
+ const handleBeforeInputWrapped = React76.useCallback(
10617
10620
  (event) => {
10618
10621
  if (hasKeyFilter && keyFilterOn === "beforeinput" && (event == null ? void 0 : event.nativeEvent)) {
10619
10622
  const inputEl = event.currentTarget;
@@ -10634,7 +10637,7 @@ var Input = React74.forwardRef(
10634
10637
  },
10635
10638
  [hasKeyFilter, keyFilterOn, keyFilter, onBeforeInput]
10636
10639
  );
10637
- const handlePasteWrapped = React74.useCallback(
10640
+ const handlePasteWrapped = React76.useCallback(
10638
10641
  (event) => {
10639
10642
  var _a, _b;
10640
10643
  if (hasKeyFilter && keyFilterOnPaste) {
@@ -10685,6 +10688,7 @@ var Input = React74.forwardRef(
10685
10688
  onBeforeInput: handleBeforeInputWrapped,
10686
10689
  onPaste: handlePasteWrapped,
10687
10690
  "aria-required": required ? "true" : void 0,
10691
+ "aria-invalid": invalid ? "true" : void 0,
10688
10692
  "data-size": sizeKey,
10689
10693
  "data-density": densityKey,
10690
10694
  placeholder,
@@ -10738,6 +10742,7 @@ var Input = React74.forwardRef(
10738
10742
  disabled,
10739
10743
  readOnly,
10740
10744
  "aria-required": required ? "true" : void 0,
10745
+ "aria-invalid": invalid ? "true" : void 0,
10741
10746
  "data-size": sizeKey,
10742
10747
  "data-density": densityKey,
10743
10748
  placeholder,
@@ -11032,7 +11037,7 @@ function stripAffixes(value, prefix, suffix) {
11032
11037
  if (suffix && out.endsWith(suffix)) out = out.slice(0, -suffix.length);
11033
11038
  return out;
11034
11039
  }
11035
- var ShadcnTextVariant = React74.forwardRef(function ShadcnTextVariant2(props, forwardedRef) {
11040
+ var ShadcnTextVariant = React76.forwardRef(function ShadcnTextVariant2(props, forwardedRef) {
11036
11041
  const {
11037
11042
  // form-level props
11038
11043
  value,
@@ -11080,7 +11085,7 @@ var ShadcnTextVariant = React74.forwardRef(function ShadcnTextVariant2(props, fo
11080
11085
  ...rest
11081
11086
  } = props;
11082
11087
  const isMasked = Boolean(mask);
11083
- const handlePlainChange = React74.useCallback(
11088
+ const handlePlainChange = React76.useCallback(
11084
11089
  (e4) => {
11085
11090
  var _a;
11086
11091
  const displayed = (_a = e4.target.value) != null ? _a : "";
@@ -11111,7 +11116,7 @@ var ShadcnTextVariant = React74.forwardRef(function ShadcnTextVariant2(props, fo
11111
11116
  },
11112
11117
  [onValue, prefix, suffix, stripPrefix, stripSuffix]
11113
11118
  );
11114
- const handleMaskedChange = React74.useCallback(
11119
+ const handleMaskedChange = React76.useCallback(
11115
11120
  (e4) => {
11116
11121
  var _a, _b, _c;
11117
11122
  const maskedValue = (_a = e4.value) != null ? _a : "";
@@ -11329,8 +11334,8 @@ function normalizeEditable(raw, locale, decimalSep, allowMinus) {
11329
11334
  if (t4 === decimalSep) t4 = "0" + decimalSep;
11330
11335
  return t4;
11331
11336
  }
11332
- var InputNumber = React74.memo(
11333
- React74.forwardRef((inProps, ref) => {
11337
+ var InputNumber = React76.memo(
11338
+ React76.forwardRef((inProps, ref) => {
11334
11339
  var _a;
11335
11340
  const props = {
11336
11341
  allowEmpty: true,
@@ -11345,19 +11350,19 @@ var InputNumber = React74.memo(
11345
11350
  type: "text",
11346
11351
  ...inProps
11347
11352
  };
11348
- const locale = React74.useMemo(
11353
+ const locale = React76.useMemo(
11349
11354
  () => resolveLocale(props.locale),
11350
11355
  [props.locale]
11351
11356
  );
11352
- const decimalSep = React74.useMemo(
11357
+ const decimalSep = React76.useMemo(
11353
11358
  () => getDecimalSeparator(locale),
11354
11359
  [locale]
11355
11360
  );
11356
- const allowMinus = React74.useMemo(
11361
+ const allowMinus = React76.useMemo(
11357
11362
  () => props.min == null || props.min < 0,
11358
11363
  [props.min]
11359
11364
  );
11360
- const fmtOptions = React74.useMemo(() => {
11365
+ const fmtOptions = React76.useMemo(() => {
11361
11366
  return {
11362
11367
  localeMatcher: props.localeMatcher,
11363
11368
  style: props.mode,
@@ -11378,22 +11383,22 @@ var InputNumber = React74.memo(
11378
11383
  props.maxFractionDigits,
11379
11384
  props.roundingMode
11380
11385
  ]);
11381
- const inputRef = React74.useRef(null);
11382
- React74.useImperativeHandle(ref, () => inputRef.current);
11383
- const [display, setDisplay] = React74.useState("");
11384
- const [focused, setFocused] = React74.useState(false);
11385
- const toEditableFromNumber = React74.useCallback(
11386
+ const inputRef = React76.useRef(null);
11387
+ React76.useImperativeHandle(ref, () => inputRef.current);
11388
+ const [display, setDisplay] = React76.useState("");
11389
+ const [focused, setFocused] = React76.useState(false);
11390
+ const toEditableFromNumber = React76.useCallback(
11386
11391
  (n3) => {
11387
11392
  const s3 = String(n3);
11388
11393
  return decimalSep === "." ? s3 : s3.replace(".", decimalSep);
11389
11394
  },
11390
11395
  [decimalSep]
11391
11396
  );
11392
- const clampModel = React74.useCallback(
11397
+ const clampModel = React76.useCallback(
11393
11398
  (n3) => clampToLimits(n3, props.min, props.max),
11394
11399
  [props.min, props.max]
11395
11400
  );
11396
- const emit = React74.useCallback(
11401
+ const emit = React76.useCallback(
11397
11402
  (event, value2) => {
11398
11403
  var _a2, _b, _c;
11399
11404
  const safeValue = sanitizeNumberish(value2);
@@ -11428,7 +11433,7 @@ var InputNumber = React74.memo(
11428
11433
  }
11429
11434
  });
11430
11435
  };
11431
- const formatFromModel = React74.useCallback(
11436
+ const formatFromModel = React76.useCallback(
11432
11437
  (n3) => {
11433
11438
  const safeNumber = sanitizeNumberish(n3);
11434
11439
  if (safeNumber == null) return "";
@@ -11451,7 +11456,7 @@ var InputNumber = React74.memo(
11451
11456
  toEditableFromNumber
11452
11457
  ]
11453
11458
  );
11454
- const getModelFromDisplay = React74.useCallback(
11459
+ const getModelFromDisplay = React76.useCallback(
11455
11460
  (text) => {
11456
11461
  const stripped = stripAffixes2(text, props.prefix, props.suffix);
11457
11462
  const withoutGroup = stripGrouping(stripped, locale);
@@ -11463,7 +11468,7 @@ var InputNumber = React74.memo(
11463
11468
  },
11464
11469
  [props.prefix, props.suffix, locale, decimalSep, clampModel]
11465
11470
  );
11466
- const syncFromPropsValue = React74.useCallback(
11471
+ const syncFromPropsValue = React76.useCallback(
11467
11472
  (v2) => {
11468
11473
  const safeValue = sanitizeNumberish(v2);
11469
11474
  if (safeValue == null) {
@@ -11477,11 +11482,11 @@ var InputNumber = React74.memo(
11477
11482
  },
11478
11483
  [clampModel, focused, toEditableFromNumber, formatFromModel]
11479
11484
  );
11480
- React74.useEffect(() => {
11485
+ React76.useEffect(() => {
11481
11486
  var _a2;
11482
11487
  syncFromPropsValue((_a2 = props.value) != null ? _a2 : null);
11483
11488
  }, []);
11484
- React74.useEffect(() => {
11489
+ React76.useEffect(() => {
11485
11490
  var _a2;
11486
11491
  if (focused) return;
11487
11492
  syncFromPropsValue((_a2 = props.value) != null ? _a2 : null);
@@ -11574,6 +11579,25 @@ var InputNumber = React74.memo(
11574
11579
  value,
11575
11580
  icon,
11576
11581
  iconGap,
11582
+ // Destructure to prevent leakage:
11583
+ locale: _locale,
11584
+ localeMatcher,
11585
+ mode,
11586
+ currency,
11587
+ currencyDisplay,
11588
+ useGrouping,
11589
+ minFractionDigits,
11590
+ maxFractionDigits,
11591
+ roundingMode,
11592
+ min: min2,
11593
+ max: max2,
11594
+ step,
11595
+ allowEmpty,
11596
+ format: format2,
11597
+ invalid,
11598
+ onValueChange,
11599
+ onChange,
11600
+ onValue,
11577
11601
  ...passThroughProps
11578
11602
  } = props;
11579
11603
  return (
@@ -12036,7 +12060,7 @@ var X = createLucideIcon("x", __iconNode37);
12036
12060
  function sanitizeNumberish2(value) {
12037
12061
  return typeof value === "number" && Number.isFinite(value) ? value : null;
12038
12062
  }
12039
- var ShadcnNumberVariant = React74__default.forwardRef(function ShadcnNumberVariant2(props, forwardedRef) {
12063
+ var ShadcnNumberVariant = React76__default.forwardRef(function ShadcnNumberVariant2(props, forwardedRef) {
12040
12064
  const {
12041
12065
  showButtons,
12042
12066
  buttonLayout = "stacked",
@@ -12054,7 +12078,7 @@ var ShadcnNumberVariant = React74__default.forwardRef(function ShadcnNumberVaria
12054
12078
  id,
12055
12079
  inputId
12056
12080
  } = rest;
12057
- const handleChange = React74__default.useCallback(
12081
+ const handleChange = React76__default.useCallback(
12058
12082
  (e4) => {
12059
12083
  const safeValue = sanitizeNumberish2(e4.value);
12060
12084
  if (onValueChange) {
@@ -12067,7 +12091,7 @@ var ShadcnNumberVariant = React74__default.forwardRef(function ShadcnNumberVaria
12067
12091
  },
12068
12092
  [onValueChange]
12069
12093
  );
12070
- const handleStep = React74__default.useCallback(
12094
+ const handleStep = React76__default.useCallback(
12071
12095
  (direction, originalEvent) => {
12072
12096
  var _a, _b;
12073
12097
  if (disabled) return;
@@ -12597,7 +12621,7 @@ var CountrySelect = ({
12597
12621
  }) })
12598
12622
  ] }) });
12599
12623
  };
12600
- var ShadcnPhoneVariant = React74.forwardRef(function ShadcnPhoneVariant2(props, ref) {
12624
+ var ShadcnPhoneVariant = React76.forwardRef(function ShadcnPhoneVariant2(props, ref) {
12601
12625
  const {
12602
12626
  countries: countriesProp,
12603
12627
  defaultCountry,
@@ -12622,8 +12646,8 @@ var ShadcnPhoneVariant = React74.forwardRef(function ShadcnPhoneVariant2(props,
12622
12646
  } = props;
12623
12647
  let DEFAULT_COUNTRIES2 = getGlobalCountryList();
12624
12648
  const defaultCountries = countriesProp && countriesProp.length > 0 ? countriesProp : DEFAULT_COUNTRIES2;
12625
- const [countries, setLoadedCountries] = React74.useState(defaultCountries);
12626
- React74.useEffect(() => {
12649
+ const [countries, setLoadedCountries] = React76.useState(defaultCountries);
12650
+ React76.useEffect(() => {
12627
12651
  if (countriesProp == null ? void 0 : countriesProp.length) return;
12628
12652
  const list = getPaletteUtil("countries");
12629
12653
  if (list == null ? void 0 : list.length) {
@@ -12636,7 +12660,7 @@ var ShadcnPhoneVariant = React74.forwardRef(function ShadcnPhoneVariant2(props,
12636
12660
  });
12637
12661
  }
12638
12662
  }, []);
12639
- const [country, setCountry] = React74.useState(() => {
12663
+ const [country, setCountry] = React76.useState(() => {
12640
12664
  var _a;
12641
12665
  if (defaultCountry) {
12642
12666
  const found = countries.find((c2) => c2.code === defaultCountry);
@@ -12644,7 +12668,7 @@ var ShadcnPhoneVariant = React74.forwardRef(function ShadcnPhoneVariant2(props,
12644
12668
  }
12645
12669
  return (_a = countries[0]) != null ? _a : DEFAULT_COUNTRIES2[0];
12646
12670
  });
12647
- React74.useEffect(() => {
12671
+ React76.useEffect(() => {
12648
12672
  setCountry((prev) => {
12649
12673
  var _a;
12650
12674
  if (defaultCountry) {
@@ -12655,13 +12679,13 @@ var ShadcnPhoneVariant = React74.forwardRef(function ShadcnPhoneVariant2(props,
12655
12679
  return (_a = stillThere != null ? stillThere : countries[0]) != null ? _a : prev;
12656
12680
  });
12657
12681
  }, [countries, defaultCountry]);
12658
- const [local, setLocal] = React74.useState(
12682
+ const [local, setLocal] = React76.useState(
12659
12683
  () => computeDisplayFromValue(value, country, keepCharPositions)
12660
12684
  );
12661
- React74.useEffect(() => {
12685
+ React76.useEffect(() => {
12662
12686
  setLocal(computeDisplayFromValue(value, country, keepCharPositions));
12663
12687
  }, [value, country, keepCharPositions]);
12664
- const handleInputChange = React74.useCallback(
12688
+ const handleInputChange = React76.useCallback(
12665
12689
  (event) => {
12666
12690
  var _a;
12667
12691
  const rawInput = (_a = event.target.value) != null ? _a : "";
@@ -12687,7 +12711,7 @@ var ShadcnPhoneVariant = React74.forwardRef(function ShadcnPhoneVariant2(props,
12687
12711
  },
12688
12712
  [country, valueMode, keepCharPositions, onValue]
12689
12713
  );
12690
- const handleCountryChange = React74.useCallback(
12714
+ const handleCountryChange = React76.useCallback(
12691
12715
  (nextCode) => {
12692
12716
  var _a;
12693
12717
  const nextCountry = (_a = countries.find((c2) => c2.code === nextCode)) != null ? _a : countries[0];
@@ -12774,7 +12798,7 @@ function normalizeColorForPicker(value) {
12774
12798
  }
12775
12799
  return "#000000";
12776
12800
  }
12777
- var ShadcnColorVariant = React74.forwardRef(function ShadcnColorVariant2(props, ref) {
12801
+ var ShadcnColorVariant = React76.forwardRef(function ShadcnColorVariant2(props, ref) {
12778
12802
  const {
12779
12803
  // variant contract
12780
12804
  value,
@@ -12795,22 +12819,22 @@ var ShadcnColorVariant = React74.forwardRef(function ShadcnColorVariant2(props,
12795
12819
  // everything else → Input (size, density, className, icons, etc.)
12796
12820
  ...restTextProps
12797
12821
  } = props;
12798
- const [local, setLocal] = React74.useState(value != null ? value : "");
12799
- const [pickerOpen, setPickerOpen] = React74.useState(false);
12800
- React74.useEffect(() => {
12822
+ const [local, setLocal] = React76.useState(value != null ? value : "");
12823
+ const [pickerOpen, setPickerOpen] = React76.useState(false);
12824
+ React76.useEffect(() => {
12801
12825
  setLocal(value != null ? value : "");
12802
12826
  }, [value]);
12803
- const pickerRef = React74.useRef(null);
12827
+ const pickerRef = React76.useRef(null);
12804
12828
  const effectiveColor = normalizeColorForPicker(local || value);
12805
12829
  const showError = Boolean(error);
12806
- const openSystemPicker = React74.useCallback(() => {
12830
+ const openSystemPicker = React76.useCallback(() => {
12807
12831
  setPickerOpen(true);
12808
12832
  window.setTimeout(() => {
12809
12833
  var _a;
12810
12834
  (_a = pickerRef.current) == null ? void 0 : _a.click();
12811
12835
  }, 0);
12812
12836
  }, []);
12813
- const handleTextChange = React74.useCallback(
12837
+ const handleTextChange = React76.useCallback(
12814
12838
  (event) => {
12815
12839
  var _a;
12816
12840
  const next = (_a = event.target.value) != null ? _a : "";
@@ -12827,7 +12851,7 @@ var ShadcnColorVariant = React74.forwardRef(function ShadcnColorVariant2(props,
12827
12851
  },
12828
12852
  [onValue]
12829
12853
  );
12830
- const handlePickerChange = React74.useCallback(
12854
+ const handlePickerChange = React76.useCallback(
12831
12855
  (event) => {
12832
12856
  var _a;
12833
12857
  const next = (_a = event.target.value) != null ? _a : "";
@@ -12845,7 +12869,7 @@ var ShadcnColorVariant = React74.forwardRef(function ShadcnColorVariant2(props,
12845
12869
  },
12846
12870
  [onValue]
12847
12871
  );
12848
- const handlePickerBlur = React74.useCallback(() => {
12872
+ const handlePickerBlur = React76.useCallback(() => {
12849
12873
  setPickerOpen(false);
12850
12874
  }, []);
12851
12875
  const leadingControl = showPreview ? /* @__PURE__ */ jsx(
@@ -13147,7 +13171,7 @@ function meterColor(score) {
13147
13171
  if (score === 3) return "bg-amber-500";
13148
13172
  return "bg-emerald-500";
13149
13173
  }
13150
- var ShadcnPasswordVariant = React74.forwardRef(function ShadcnPasswordVariant2(props, ref) {
13174
+ var ShadcnPasswordVariant = React76.forwardRef(function ShadcnPasswordVariant2(props, ref) {
13151
13175
  var _a, _b;
13152
13176
  const {
13153
13177
  // base variant bits
@@ -13183,18 +13207,18 @@ var ShadcnPasswordVariant = React74.forwardRef(function ShadcnPasswordVariant2(p
13183
13207
  // everything else from Shadcn text UI
13184
13208
  ...restTextProps
13185
13209
  } = props;
13186
- const [revealed, setRevealed] = React74.useState(
13210
+ const [revealed, setRevealed] = React76.useState(
13187
13211
  Boolean(defaultRevealed)
13188
13212
  );
13189
- const normalizedStrength = React74.useMemo(
13213
+ const normalizedStrength = React76.useMemo(
13190
13214
  () => normalizeStrengthOptions(strengthMeter),
13191
13215
  [strengthMeter]
13192
13216
  );
13193
- const effectiveRuleDefinitions = React74.useMemo(
13217
+ const effectiveRuleDefinitions = React76.useMemo(
13194
13218
  () => getMergedRuleDefinitions(ruleDefinitions),
13195
13219
  [ruleDefinitions]
13196
13220
  );
13197
- const meterState = React74.useMemo(() => {
13221
+ const meterState = React76.useMemo(() => {
13198
13222
  if (!normalizedStrength) return null;
13199
13223
  const v2 = value != null ? value : "";
13200
13224
  return computeMeterState(
@@ -13204,14 +13228,14 @@ var ShadcnPasswordVariant = React74.forwardRef(function ShadcnPasswordVariant2(p
13204
13228
  ruleUses
13205
13229
  );
13206
13230
  }, [normalizedStrength, value, ruleUses, effectiveRuleDefinitions]);
13207
- const handleToggleReveal = React74.useCallback(() => {
13231
+ const handleToggleReveal = React76.useCallback(() => {
13208
13232
  setRevealed((prev) => {
13209
13233
  const next = !prev;
13210
13234
  onRevealChange == null ? void 0 : onRevealChange(next);
13211
13235
  return next;
13212
13236
  });
13213
13237
  }, [onRevealChange]);
13214
- const handleChange = React74.useCallback(
13238
+ const handleChange = React76.useCallback(
13215
13239
  (event) => {
13216
13240
  var _a2;
13217
13241
  const next = (_a2 = event.target.value) != null ? _a2 : "";
@@ -15861,38 +15885,38 @@ __export(custom_components_exports, {
15861
15885
  YearsDropdown: () => YearsDropdown
15862
15886
  });
15863
15887
  function Button(props) {
15864
- return React74__default.createElement("button", { ...props });
15888
+ return React76__default.createElement("button", { ...props });
15865
15889
  }
15866
15890
  function CaptionLabel(props) {
15867
- return React74__default.createElement("span", { ...props });
15891
+ return React76__default.createElement("span", { ...props });
15868
15892
  }
15869
15893
  function Chevron(props) {
15870
15894
  const { size = 24, orientation = "left", className } = props;
15871
15895
  return (
15872
15896
  // biome-ignore lint/a11y/noSvgWithoutTitle: handled by the parent component
15873
- React74__default.createElement(
15897
+ React76__default.createElement(
15874
15898
  "svg",
15875
15899
  { className, width: size, height: size, viewBox: "0 0 24 24" },
15876
- orientation === "up" && React74__default.createElement("polygon", { points: "6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28" }),
15877
- orientation === "down" && React74__default.createElement("polygon", { points: "6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72" }),
15878
- orientation === "left" && React74__default.createElement("polygon", { points: "16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20" }),
15879
- orientation === "right" && React74__default.createElement("polygon", { points: "8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20" })
15900
+ orientation === "up" && React76__default.createElement("polygon", { points: "6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28" }),
15901
+ orientation === "down" && React76__default.createElement("polygon", { points: "6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72" }),
15902
+ orientation === "left" && React76__default.createElement("polygon", { points: "16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20" }),
15903
+ orientation === "right" && React76__default.createElement("polygon", { points: "8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20" })
15880
15904
  )
15881
15905
  );
15882
15906
  }
15883
15907
  function Day(props) {
15884
15908
  const { day, modifiers, ...tdProps } = props;
15885
- return React74__default.createElement("td", { ...tdProps });
15909
+ return React76__default.createElement("td", { ...tdProps });
15886
15910
  }
15887
15911
  function DayButton(props) {
15888
15912
  const { day, modifiers, ...buttonProps } = props;
15889
- const ref = React74__default.useRef(null);
15890
- React74__default.useEffect(() => {
15913
+ const ref = React76__default.useRef(null);
15914
+ React76__default.useEffect(() => {
15891
15915
  var _a;
15892
15916
  if (modifiers.focused)
15893
15917
  (_a = ref.current) == null ? void 0 : _a.focus();
15894
15918
  }, [modifiers.focused]);
15895
- return React74__default.createElement("button", { ref, ...buttonProps });
15919
+ return React76__default.createElement("button", { ref, ...buttonProps });
15896
15920
  }
15897
15921
 
15898
15922
  // ../../node_modules/react-day-picker/dist/esm/UI.js
@@ -15955,37 +15979,37 @@ function Dropdown(props) {
15955
15979
  const { options, className, components, classNames, ...selectProps } = props;
15956
15980
  const cssClassSelect = [classNames[UI.Dropdown], className].join(" ");
15957
15981
  const selectedOption = options == null ? void 0 : options.find(({ value }) => value === selectProps.value);
15958
- return React74__default.createElement(
15982
+ return React76__default.createElement(
15959
15983
  "span",
15960
15984
  { "data-disabled": selectProps.disabled, className: classNames[UI.DropdownRoot] },
15961
- React74__default.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options == null ? void 0 : options.map(({ value, label, disabled }) => React74__default.createElement(components.Option, { key: value, value, disabled }, label))),
15962
- React74__default.createElement(
15985
+ React76__default.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options == null ? void 0 : options.map(({ value, label, disabled }) => React76__default.createElement(components.Option, { key: value, value, disabled }, label))),
15986
+ React76__default.createElement(
15963
15987
  "span",
15964
15988
  { className: classNames[UI.CaptionLabel], "aria-hidden": true },
15965
15989
  selectedOption == null ? void 0 : selectedOption.label,
15966
- React74__default.createElement(components.Chevron, { orientation: "down", size: 18, className: classNames[UI.Chevron] })
15990
+ React76__default.createElement(components.Chevron, { orientation: "down", size: 18, className: classNames[UI.Chevron] })
15967
15991
  )
15968
15992
  );
15969
15993
  }
15970
15994
  function DropdownNav(props) {
15971
- return React74__default.createElement("div", { ...props });
15995
+ return React76__default.createElement("div", { ...props });
15972
15996
  }
15973
15997
  function Footer(props) {
15974
- return React74__default.createElement("div", { ...props });
15998
+ return React76__default.createElement("div", { ...props });
15975
15999
  }
15976
16000
  function Month(props) {
15977
16001
  const { calendarMonth, displayIndex, ...divProps } = props;
15978
- return React74__default.createElement("div", { ...divProps }, props.children);
16002
+ return React76__default.createElement("div", { ...divProps }, props.children);
15979
16003
  }
15980
16004
  function MonthCaption(props) {
15981
16005
  const { calendarMonth, displayIndex, ...divProps } = props;
15982
- return React74__default.createElement("div", { ...divProps });
16006
+ return React76__default.createElement("div", { ...divProps });
15983
16007
  }
15984
16008
  function MonthGrid(props) {
15985
- return React74__default.createElement("table", { ...props });
16009
+ return React76__default.createElement("table", { ...props });
15986
16010
  }
15987
16011
  function Months(props) {
15988
- return React74__default.createElement("div", { ...props });
16012
+ return React76__default.createElement("div", { ...props });
15989
16013
  }
15990
16014
  var dayPickerContext = createContext(void 0);
15991
16015
  function useDayPicker() {
@@ -15999,7 +16023,7 @@ function useDayPicker() {
15999
16023
  // ../../node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js
16000
16024
  function MonthsDropdown(props) {
16001
16025
  const { components } = useDayPicker();
16002
- return React74__default.createElement(components.Dropdown, { ...props });
16026
+ return React76__default.createElement(components.Dropdown, { ...props });
16003
16027
  }
16004
16028
  function Nav(props) {
16005
16029
  const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;
@@ -16014,66 +16038,66 @@ function Nav(props) {
16014
16038
  onPreviousClick == null ? void 0 : onPreviousClick(e4);
16015
16039
  }
16016
16040
  }, [previousMonth, onPreviousClick]);
16017
- return React74__default.createElement(
16041
+ return React76__default.createElement(
16018
16042
  "nav",
16019
16043
  { ...navProps },
16020
- React74__default.createElement(
16044
+ React76__default.createElement(
16021
16045
  components.PreviousMonthButton,
16022
16046
  { type: "button", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? void 0 : -1, "aria-disabled": previousMonth ? void 0 : true, "aria-label": labelPrevious2(previousMonth), onClick: handlePreviousClick },
16023
- React74__default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], orientation: "left" })
16047
+ React76__default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], orientation: "left" })
16024
16048
  ),
16025
- React74__default.createElement(
16049
+ React76__default.createElement(
16026
16050
  components.NextMonthButton,
16027
16051
  { type: "button", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? void 0 : -1, "aria-disabled": nextMonth ? void 0 : true, "aria-label": labelNext2(nextMonth), onClick: handleNextClick },
16028
- React74__default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, orientation: "right", className: classNames[UI.Chevron] })
16052
+ React76__default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, orientation: "right", className: classNames[UI.Chevron] })
16029
16053
  )
16030
16054
  );
16031
16055
  }
16032
16056
  function NextMonthButton(props) {
16033
16057
  const { components } = useDayPicker();
16034
- return React74__default.createElement(components.Button, { ...props });
16058
+ return React76__default.createElement(components.Button, { ...props });
16035
16059
  }
16036
16060
  function Option(props) {
16037
- return React74__default.createElement("option", { ...props });
16061
+ return React76__default.createElement("option", { ...props });
16038
16062
  }
16039
16063
  function PreviousMonthButton(props) {
16040
16064
  const { components } = useDayPicker();
16041
- return React74__default.createElement(components.Button, { ...props });
16065
+ return React76__default.createElement(components.Button, { ...props });
16042
16066
  }
16043
16067
  function Root4(props) {
16044
16068
  const { rootRef, ...rest } = props;
16045
- return React74__default.createElement("div", { ...rest, ref: rootRef });
16069
+ return React76__default.createElement("div", { ...rest, ref: rootRef });
16046
16070
  }
16047
16071
  function Select2(props) {
16048
- return React74__default.createElement("select", { ...props });
16072
+ return React76__default.createElement("select", { ...props });
16049
16073
  }
16050
16074
  function Week(props) {
16051
16075
  const { week, ...trProps } = props;
16052
- return React74__default.createElement("tr", { ...trProps });
16076
+ return React76__default.createElement("tr", { ...trProps });
16053
16077
  }
16054
16078
  function Weekday(props) {
16055
- return React74__default.createElement("th", { ...props });
16079
+ return React76__default.createElement("th", { ...props });
16056
16080
  }
16057
16081
  function Weekdays(props) {
16058
- return React74__default.createElement(
16082
+ return React76__default.createElement(
16059
16083
  "thead",
16060
16084
  { "aria-hidden": true },
16061
- React74__default.createElement("tr", { ...props })
16085
+ React76__default.createElement("tr", { ...props })
16062
16086
  );
16063
16087
  }
16064
16088
  function WeekNumber(props) {
16065
16089
  const { week, ...thProps } = props;
16066
- return React74__default.createElement("th", { ...thProps });
16090
+ return React76__default.createElement("th", { ...thProps });
16067
16091
  }
16068
16092
  function WeekNumberHeader(props) {
16069
- return React74__default.createElement("th", { ...props });
16093
+ return React76__default.createElement("th", { ...props });
16070
16094
  }
16071
16095
  function Weeks(props) {
16072
- return React74__default.createElement("tbody", { ...props });
16096
+ return React76__default.createElement("tbody", { ...props });
16073
16097
  }
16074
16098
  function YearsDropdown(props) {
16075
16099
  const { components } = useDayPicker();
16076
- return React74__default.createElement(components.Dropdown, { ...props });
16100
+ return React76__default.createElement(components.Dropdown, { ...props });
16077
16101
  }
16078
16102
 
16079
16103
  // ../../node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js
@@ -17560,18 +17584,18 @@ function DayPicker(initialProps) {
17560
17584
  labels,
17561
17585
  formatters: formatters2
17562
17586
  };
17563
- return React74__default.createElement(
17587
+ return React76__default.createElement(
17564
17588
  dayPickerContext.Provider,
17565
17589
  { value: contextValue },
17566
- React74__default.createElement(
17590
+ React76__default.createElement(
17567
17591
  components.Root,
17568
17592
  { rootRef: props.animate ? rootElRef : void 0, className, style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], ...dataAttributes },
17569
- React74__default.createElement(
17593
+ React76__default.createElement(
17570
17594
  components.Months,
17571
17595
  { className: classNames[UI.Months], style: styles == null ? void 0 : styles[UI.Months] },
17572
- !props.hideNavigation && !navLayout && React74__default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles == null ? void 0 : styles[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
17596
+ !props.hideNavigation && !navLayout && React76__default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles == null ? void 0 : styles[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
17573
17597
  months.map((calendarMonth, displayIndex) => {
17574
- return React74__default.createElement(
17598
+ return React76__default.createElement(
17575
17599
  components.Month,
17576
17600
  {
17577
17601
  "data-animated-month": props.animate ? "true" : void 0,
@@ -17582,21 +17606,21 @@ function DayPicker(initialProps) {
17582
17606
  displayIndex,
17583
17607
  calendarMonth
17584
17608
  },
17585
- navLayout === "around" && !props.hideNavigation && displayIndex === 0 && React74__default.createElement(
17609
+ navLayout === "around" && !props.hideNavigation && displayIndex === 0 && React76__default.createElement(
17586
17610
  components.PreviousMonthButton,
17587
17611
  { type: "button", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? void 0 : -1, "aria-disabled": previousMonth ? void 0 : true, "aria-label": labelPrevious2(previousMonth), onClick: handlePreviousClick, "data-animated-button": props.animate ? "true" : void 0 },
17588
- React74__default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], orientation: props.dir === "rtl" ? "right" : "left" })
17612
+ React76__default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], orientation: props.dir === "rtl" ? "right" : "left" })
17589
17613
  ),
17590
- React74__default.createElement(components.MonthCaption, { "data-animated-caption": props.animate ? "true" : void 0, className: classNames[UI.MonthCaption], style: styles == null ? void 0 : styles[UI.MonthCaption], calendarMonth, displayIndex }, (captionLayout == null ? void 0 : captionLayout.startsWith("dropdown")) ? React74__default.createElement(
17614
+ React76__default.createElement(components.MonthCaption, { "data-animated-caption": props.animate ? "true" : void 0, className: classNames[UI.MonthCaption], style: styles == null ? void 0 : styles[UI.MonthCaption], calendarMonth, displayIndex }, (captionLayout == null ? void 0 : captionLayout.startsWith("dropdown")) ? React76__default.createElement(
17591
17615
  components.DropdownNav,
17592
17616
  { className: classNames[UI.Dropdowns], style: styles == null ? void 0 : styles[UI.Dropdowns] },
17593
17617
  (() => {
17594
- const monthControl = captionLayout === "dropdown" || captionLayout === "dropdown-months" ? React74__default.createElement(components.MonthsDropdown, { key: "month", className: classNames[UI.MonthsDropdown], "aria-label": labelMonthDropdown2(), classNames, components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters2, dateLib), style: styles == null ? void 0 : styles[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) }) : React74__default.createElement("span", { key: "month" }, formatMonthDropdown2(calendarMonth.date, dateLib));
17595
- const yearControl = captionLayout === "dropdown" || captionLayout === "dropdown-years" ? React74__default.createElement(components.YearsDropdown, { key: "year", className: classNames[UI.YearsDropdown], "aria-label": labelYearDropdown2(dateLib.options), classNames, components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters2, dateLib, Boolean(props.reverseYears)), style: styles == null ? void 0 : styles[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) }) : React74__default.createElement("span", { key: "year" }, formatYearDropdown2(calendarMonth.date, dateLib));
17618
+ const monthControl = captionLayout === "dropdown" || captionLayout === "dropdown-months" ? React76__default.createElement(components.MonthsDropdown, { key: "month", className: classNames[UI.MonthsDropdown], "aria-label": labelMonthDropdown2(), classNames, components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters2, dateLib), style: styles == null ? void 0 : styles[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) }) : React76__default.createElement("span", { key: "month" }, formatMonthDropdown2(calendarMonth.date, dateLib));
17619
+ const yearControl = captionLayout === "dropdown" || captionLayout === "dropdown-years" ? React76__default.createElement(components.YearsDropdown, { key: "year", className: classNames[UI.YearsDropdown], "aria-label": labelYearDropdown2(dateLib.options), classNames, components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters2, dateLib, Boolean(props.reverseYears)), style: styles == null ? void 0 : styles[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) }) : React76__default.createElement("span", { key: "year" }, formatYearDropdown2(calendarMonth.date, dateLib));
17596
17620
  const controls = dateLib.getMonthYearOrder() === "year-first" ? [yearControl, monthControl] : [monthControl, yearControl];
17597
17621
  return controls;
17598
17622
  })(),
17599
- React74__default.createElement("span", { role: "status", "aria-live": "polite", style: {
17623
+ React76__default.createElement("span", { role: "status", "aria-live": "polite", style: {
17600
17624
  border: 0,
17601
17625
  clip: "rect(0 0 0 0)",
17602
17626
  height: "1px",
@@ -17608,27 +17632,27 @@ function DayPicker(initialProps) {
17608
17632
  whiteSpace: "nowrap",
17609
17633
  wordWrap: "normal"
17610
17634
  } }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))
17611
- ) : React74__default.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: "status", "aria-live": "polite" }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))),
17612
- navLayout === "around" && !props.hideNavigation && displayIndex === numberOfMonths - 1 && React74__default.createElement(
17635
+ ) : React76__default.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: "status", "aria-live": "polite" }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))),
17636
+ navLayout === "around" && !props.hideNavigation && displayIndex === numberOfMonths - 1 && React76__default.createElement(
17613
17637
  components.NextMonthButton,
17614
17638
  { type: "button", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? void 0 : -1, "aria-disabled": nextMonth ? void 0 : true, "aria-label": labelNext2(nextMonth), onClick: handleNextClick, "data-animated-button": props.animate ? "true" : void 0 },
17615
- React74__default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, className: classNames[UI.Chevron], orientation: props.dir === "rtl" ? "left" : "right" })
17639
+ React76__default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, className: classNames[UI.Chevron], orientation: props.dir === "rtl" ? "left" : "right" })
17616
17640
  ),
17617
- displayIndex === numberOfMonths - 1 && navLayout === "after" && !props.hideNavigation && React74__default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles == null ? void 0 : styles[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
17618
- React74__default.createElement(
17641
+ displayIndex === numberOfMonths - 1 && navLayout === "after" && !props.hideNavigation && React76__default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles == null ? void 0 : styles[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
17642
+ React76__default.createElement(
17619
17643
  components.MonthGrid,
17620
17644
  { role: "grid", "aria-multiselectable": mode === "multiple" || mode === "range", "aria-label": labelGrid2(calendarMonth.date, dateLib.options, dateLib) || void 0, className: classNames[UI.MonthGrid], style: styles == null ? void 0 : styles[UI.MonthGrid] },
17621
- !props.hideWeekdays && React74__default.createElement(
17645
+ !props.hideWeekdays && React76__default.createElement(
17622
17646
  components.Weekdays,
17623
17647
  { "data-animated-weekdays": props.animate ? "true" : void 0, className: classNames[UI.Weekdays], style: styles == null ? void 0 : styles[UI.Weekdays] },
17624
- showWeekNumber && React74__default.createElement(components.WeekNumberHeader, { "aria-label": labelWeekNumberHeader2(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles == null ? void 0 : styles[UI.WeekNumberHeader], scope: "col" }, formatWeekNumberHeader2()),
17625
- weekdays.map((weekday) => React74__default.createElement(components.Weekday, { "aria-label": labelWeekday2(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles == null ? void 0 : styles[UI.Weekday], scope: "col" }, formatWeekdayName2(weekday, dateLib.options, dateLib)))
17648
+ showWeekNumber && React76__default.createElement(components.WeekNumberHeader, { "aria-label": labelWeekNumberHeader2(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles == null ? void 0 : styles[UI.WeekNumberHeader], scope: "col" }, formatWeekNumberHeader2()),
17649
+ weekdays.map((weekday) => React76__default.createElement(components.Weekday, { "aria-label": labelWeekday2(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles == null ? void 0 : styles[UI.Weekday], scope: "col" }, formatWeekdayName2(weekday, dateLib.options, dateLib)))
17626
17650
  ),
17627
- React74__default.createElement(components.Weeks, { "data-animated-weeks": props.animate ? "true" : void 0, className: classNames[UI.Weeks], style: styles == null ? void 0 : styles[UI.Weeks] }, calendarMonth.weeks.map((week) => {
17628
- return React74__default.createElement(
17651
+ React76__default.createElement(components.Weeks, { "data-animated-weeks": props.animate ? "true" : void 0, className: classNames[UI.Weeks], style: styles == null ? void 0 : styles[UI.Weeks] }, calendarMonth.weeks.map((week) => {
17652
+ return React76__default.createElement(
17629
17653
  components.Week,
17630
17654
  { className: classNames[UI.Week], key: week.weekNumber, style: styles == null ? void 0 : styles[UI.Week], week },
17631
- showWeekNumber && React74__default.createElement(components.WeekNumber, { week, style: styles == null ? void 0 : styles[UI.WeekNumber], "aria-label": labelWeekNumber2(week.weekNumber, {
17655
+ showWeekNumber && React76__default.createElement(components.WeekNumber, { week, style: styles == null ? void 0 : styles[UI.WeekNumber], "aria-label": labelWeekNumber2(week.weekNumber, {
17632
17656
  locale
17633
17657
  }), className: classNames[UI.WeekNumber], scope: "row", role: "rowheader" }, formatWeekNumber2(week.weekNumber, dateLib)),
17634
17658
  week.days.map((day) => {
@@ -17645,7 +17669,7 @@ function DayPicker(initialProps) {
17645
17669
  const style2 = getStyleForModifiers(modifiers, styles, props.modifiersStyles);
17646
17670
  const className2 = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);
17647
17671
  const ariaLabel = !isInteractive && !modifiers.hidden ? labelGridcell2(date, modifiers, dateLib.options, dateLib) : void 0;
17648
- return React74__default.createElement(components.Day, { key: `${day.isoDate}_${day.displayMonthId}`, day, modifiers, className: className2.join(" "), style: style2, role: "gridcell", "aria-selected": modifiers.selected || void 0, "aria-label": ariaLabel, "data-day": day.isoDate, "data-month": day.outside ? day.dateMonthId : void 0, "data-selected": modifiers.selected || void 0, "data-disabled": modifiers.disabled || void 0, "data-hidden": modifiers.hidden || void 0, "data-outside": day.outside || void 0, "data-focused": modifiers.focused || void 0, "data-today": modifiers.today || void 0 }, !modifiers.hidden && isInteractive ? React74__default.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles == null ? void 0 : styles[UI.DayButton], type: "button", day, modifiers, disabled: !modifiers.focused && modifiers.disabled || void 0, "aria-disabled": modifiers.focused && modifiers.disabled || void 0, tabIndex: isFocusTarget(day) ? 0 : -1, "aria-label": labelDayButton2(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay2(date, dateLib.options, dateLib)) : !modifiers.hidden && formatDay2(day.date, dateLib.options, dateLib));
17672
+ return React76__default.createElement(components.Day, { key: `${day.isoDate}_${day.displayMonthId}`, day, modifiers, className: className2.join(" "), style: style2, role: "gridcell", "aria-selected": modifiers.selected || void 0, "aria-label": ariaLabel, "data-day": day.isoDate, "data-month": day.outside ? day.dateMonthId : void 0, "data-selected": modifiers.selected || void 0, "data-disabled": modifiers.disabled || void 0, "data-hidden": modifiers.hidden || void 0, "data-outside": day.outside || void 0, "data-focused": modifiers.focused || void 0, "data-today": modifiers.today || void 0 }, !modifiers.hidden && isInteractive ? React76__default.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles == null ? void 0 : styles[UI.DayButton], type: "button", day, modifiers, disabled: !modifiers.focused && modifiers.disabled || void 0, "aria-disabled": modifiers.focused && modifiers.disabled || void 0, tabIndex: isFocusTarget(day) ? 0 : -1, "aria-label": labelDayButton2(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay2(date, dateLib.options, dateLib)) : !modifiers.hidden && formatDay2(day.date, dateLib.options, dateLib));
17649
17673
  })
17650
17674
  );
17651
17675
  }))
@@ -17653,7 +17677,7 @@ function DayPicker(initialProps) {
17653
17677
  );
17654
17678
  })
17655
17679
  ),
17656
- props.footer && React74__default.createElement(components.Footer, { className: classNames[UI.Footer], style: styles == null ? void 0 : styles[UI.Footer], role: "status", "aria-live": "polite" }, props.footer)
17680
+ props.footer && React76__default.createElement(components.Footer, { className: classNames[UI.Footer], style: styles == null ? void 0 : styles[UI.Footer], role: "status", "aria-live": "polite" }, props.footer)
17657
17681
  )
17658
17682
  );
17659
17683
  }
@@ -17896,8 +17920,8 @@ function CalendarDayButton({
17896
17920
  ...props
17897
17921
  }) {
17898
17922
  const defaultClassNames = getDefaultClassNames();
17899
- const ref = React74.useRef(null);
17900
- React74.useEffect(() => {
17923
+ const ref = React76.useRef(null);
17924
+ React76.useEffect(() => {
17901
17925
  var _a;
17902
17926
  if (modifiers.focused) (_a = ref.current) == null ? void 0 : _a.focus();
17903
17927
  }, [modifiers.focused]);
@@ -17974,15 +17998,15 @@ var TimeDropdowns = (props) => {
17974
17998
  triggerClassName,
17975
17999
  density = "normal"
17976
18000
  } = props;
17977
- const minuteOptions = React74.useMemo(
18001
+ const minuteOptions = React76.useMemo(
17978
18002
  () => buildMinuteOptions(minuteStep),
17979
18003
  [minuteStep]
17980
18004
  );
17981
- const secondOptions = React74.useMemo(
18005
+ const secondOptions = React76.useMemo(
17982
18006
  () => buildSecondOptions(secondStep),
17983
18007
  [secondStep]
17984
18008
  );
17985
- const hourOptions = React74.useMemo(
18009
+ const hourOptions = React76.useMemo(
17986
18010
  () => use12Hour ? buildHourOptions12() : buildHourOptions24(),
17987
18011
  [use12Hour]
17988
18012
  );
@@ -18321,7 +18345,7 @@ function parseRawToDate(rawDigits, kind) {
18321
18345
  function meterSafeDigits(masked) {
18322
18346
  return masked.replace(/\D+/g, "");
18323
18347
  }
18324
- var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, ref) {
18348
+ var ShadcnDateVariant = React76.forwardRef(function ShadcnDateVariant2(props, ref) {
18325
18349
  const {
18326
18350
  // variant base bits
18327
18351
  value,
@@ -18354,10 +18378,10 @@ var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, re
18354
18378
  const resolvedMask = inputMask != null ? inputMask : kindConfig.mask;
18355
18379
  const defaultShowCalendar = kind === "date" || kind === "datetime";
18356
18380
  const showCalendar = typeof showCalendarProp === "boolean" ? showCalendarProp : defaultShowCalendar;
18357
- const [internalOpen, setInternalOpen] = React74.useState(false);
18381
+ const [internalOpen, setInternalOpen] = React76.useState(false);
18358
18382
  const isControlledOpen = open !== void 0;
18359
18383
  const currentOpen = isControlledOpen ? !!open : internalOpen;
18360
- const handleOpenChange = React74.useCallback(
18384
+ const handleOpenChange = React76.useCallback(
18361
18385
  (next) => {
18362
18386
  if (!isControlledOpen) {
18363
18387
  setInternalOpen(next);
@@ -18367,7 +18391,7 @@ var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, re
18367
18391
  [isControlledOpen, onOpenChange]
18368
18392
  );
18369
18393
  const { single, range } = normalizeValueForMode(value, mode);
18370
- const displayValue = React74.useMemo(() => {
18394
+ const displayValue = React76.useMemo(() => {
18371
18395
  if (mode === "single") {
18372
18396
  return formatDisplaySingle(single, singlePattern);
18373
18397
  }
@@ -18378,12 +18402,12 @@ var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, re
18378
18402
  rangeSeparator
18379
18403
  );
18380
18404
  }, [mode, single, range, singlePattern, formatRange, rangeSeparator]);
18381
- const [localText, setLocalText] = React74.useState(displayValue);
18382
- React74.useEffect(() => {
18405
+ const [localText, setLocalText] = React76.useState(displayValue);
18406
+ React76.useEffect(() => {
18383
18407
  setLocalText(displayValue);
18384
18408
  }, [displayValue]);
18385
18409
  const showTimeDropdowns = mode === "single" && (kind === "datetime" || kind === "time" || kind === "hour");
18386
- const handleSelect = React74.useCallback(
18410
+ const handleSelect = React76.useCallback(
18387
18411
  (next) => {
18388
18412
  let nextValue;
18389
18413
  let nextRange;
@@ -18433,7 +18457,7 @@ var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, re
18433
18457
  },
18434
18458
  [mode, stayOpenOnSelect, onValue, handleOpenChange, kind, single]
18435
18459
  );
18436
- const handleTimeChange = React74.useCallback(
18460
+ const handleTimeChange = React76.useCallback(
18437
18461
  (next) => {
18438
18462
  if (!next) {
18439
18463
  const detail2 = {
@@ -18464,7 +18488,7 @@ var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, re
18464
18488
  },
18465
18489
  [mode, kind, onValue]
18466
18490
  );
18467
- const handleClear = React74.useCallback(
18491
+ const handleClear = React76.useCallback(
18468
18492
  (ev) => {
18469
18493
  ev.preventDefault();
18470
18494
  ev.stopPropagation();
@@ -18483,7 +18507,7 @@ var ShadcnDateVariant = React74.forwardRef(function ShadcnDateVariant2(props, re
18483
18507
  );
18484
18508
  const hasValue = hasSelection(value);
18485
18509
  const placeholderText = typeof placeholder === "string" ? placeholder : mode === "range" ? "Select date range" : "Select date";
18486
- const handleInputChange = React74.useCallback(
18510
+ const handleInputChange = React76.useCallback(
18487
18511
  (event) => {
18488
18512
  var _a, _b, _c;
18489
18513
  if (mode !== "single") return;
@@ -18670,7 +18694,7 @@ function resolveBasePadding2(size, density) {
18670
18694
  }
18671
18695
  return { px, py };
18672
18696
  }
18673
- var Textarea = React74.forwardRef(
18697
+ var Textarea = React76.forwardRef(
18674
18698
  function Textarea2(rawProps, forwardedRef) {
18675
18699
  const {
18676
18700
  // layout wrapper
@@ -18718,8 +18742,8 @@ var Textarea = React74.forwardRef(
18718
18742
  } = rawProps;
18719
18743
  const sizeKey = size != null ? size : "md";
18720
18744
  const densityKey = density != null ? density : "normal";
18721
- const innerRef = React74.useRef(null);
18722
- React74.useImperativeHandle(
18745
+ const innerRef = React76.useRef(null);
18746
+ React76.useImperativeHandle(
18723
18747
  forwardedRef,
18724
18748
  () => innerRef.current,
18725
18749
  []
@@ -18740,11 +18764,11 @@ var Textarea = React74.forwardRef(
18740
18764
  const baseIconGap = iconGap != null ? iconGap : 1;
18741
18765
  const leadingGap = leadingIconSpacing != null ? leadingIconSpacing : baseIconGap;
18742
18766
  const trailingGap = trailingIconSpacing != null ? trailingIconSpacing : baseIconGap;
18743
- const leadingIconsRef = React74.useRef(null);
18744
- const trailingIconsRef = React74.useRef(null);
18745
- const [leadingIconsWidth, setLeadingIconsWidth] = React74.useState(0);
18746
- const [trailingIconsWidth, setTrailingIconsWidth] = React74.useState(0);
18747
- const measureIconWidths = React74.useCallback(() => {
18767
+ const leadingIconsRef = React76.useRef(null);
18768
+ const trailingIconsRef = React76.useRef(null);
18769
+ const [leadingIconsWidth, setLeadingIconsWidth] = React76.useState(0);
18770
+ const [trailingIconsWidth, setTrailingIconsWidth] = React76.useState(0);
18771
+ const measureIconWidths = React76.useCallback(() => {
18748
18772
  if (typeof window === "undefined") return;
18749
18773
  const lead = leadingIconsRef.current;
18750
18774
  const trail = trailingIconsRef.current;
@@ -18761,7 +18785,7 @@ var Textarea = React74.forwardRef(
18761
18785
  setTrailingIconsWidth(0);
18762
18786
  }
18763
18787
  }, []);
18764
- React74.useLayoutEffect(() => {
18788
+ React76.useLayoutEffect(() => {
18765
18789
  if (typeof window === "undefined" || typeof MutationObserver === "undefined") {
18766
18790
  measureIconWidths();
18767
18791
  return;
@@ -18790,10 +18814,10 @@ var Textarea = React74.forwardRef(
18790
18814
  measureIconWidths();
18791
18815
  return () => observers.forEach((o3) => o3.disconnect());
18792
18816
  }, [measureIconWidths, hasLeadingIcons, hasTrailingIcons]);
18793
- const [rowHeight, setRowHeight] = React74.useState(null);
18817
+ const [rowHeight, setRowHeight] = React76.useState(null);
18794
18818
  const baseMinRows = Math.max(minRowsProp != null ? minRowsProp : 1, 1);
18795
- const [rows, setRows] = React74.useState(baseMinRows);
18796
- React74.useLayoutEffect(() => {
18819
+ const [rows, setRows] = React76.useState(baseMinRows);
18820
+ React76.useLayoutEffect(() => {
18797
18821
  if (typeof window === "undefined") return;
18798
18822
  const el = innerRef.current;
18799
18823
  if (!el) return;
@@ -18809,7 +18833,7 @@ var Textarea = React74.forwardRef(
18809
18833
  setRows(baseMinRows);
18810
18834
  }
18811
18835
  }, [sizeKey, densityKey, baseMinRows]);
18812
- const recomputeHeight = React74.useCallback(() => {
18836
+ const recomputeHeight = React76.useCallback(() => {
18813
18837
  if (!autoResize) return;
18814
18838
  if (!innerRef.current) return;
18815
18839
  if (!rowHeight) return;
@@ -18831,7 +18855,7 @@ var Textarea = React74.forwardRef(
18831
18855
  el.style.height = `${nextHeight}px`;
18832
18856
  setRows(nextRows);
18833
18857
  }, [autoResize, rowHeight, baseMinRows, maxRows]);
18834
- React74.useLayoutEffect(() => {
18858
+ React76.useLayoutEffect(() => {
18835
18859
  recomputeHeight();
18836
18860
  }, [recomputeHeight, rest.value, rest.defaultValue]);
18837
18861
  const { px: pxDefault, py: pyDefault } = resolveBasePadding2(size, density);
@@ -18901,19 +18925,19 @@ var Textarea = React74.forwardRef(
18901
18925
  const focusTextarea = () => {
18902
18926
  if (innerRef.current) innerRef.current.focus();
18903
18927
  };
18904
- const handleFocus = React74.useCallback(
18928
+ const handleFocus = React76.useCallback(
18905
18929
  (event) => {
18906
18930
  onFocus == null ? void 0 : onFocus(event);
18907
18931
  },
18908
18932
  [onFocus]
18909
18933
  );
18910
- const handleBlur = React74.useCallback(
18934
+ const handleBlur = React76.useCallback(
18911
18935
  (event) => {
18912
18936
  onBlur == null ? void 0 : onBlur(event);
18913
18937
  },
18914
18938
  [onBlur]
18915
18939
  );
18916
- const handleChange = React74.useCallback(
18940
+ const handleChange = React76.useCallback(
18917
18941
  (event) => {
18918
18942
  onChange == null ? void 0 : onChange(event);
18919
18943
  recomputeHeight();
@@ -19090,7 +19114,7 @@ function splitIntoTokens(raw, sep) {
19090
19114
  }
19091
19115
  return acc.map((t4) => t4.trim()).filter((t4) => t4.length > 0);
19092
19116
  }
19093
- var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props, ref) {
19117
+ var ShadcnChipsVariant = React76.forwardRef(function ShadcnChipsVariant2(props, ref) {
19094
19118
  var _a;
19095
19119
  const {
19096
19120
  // variant base bits
@@ -19127,20 +19151,20 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19127
19151
  ...restTextProps
19128
19152
  } = props;
19129
19153
  const hasInvalidIncomingValue = value !== void 0 && !Array.isArray(value);
19130
- React74.useEffect(() => {
19154
+ React76.useEffect(() => {
19131
19155
  if (!hasInvalidIncomingValue) return;
19132
19156
  console.warn(
19133
19157
  "[form-palette] ShadcnChipsVariant expected `value` to be `string[] | undefined`; received:",
19134
19158
  value
19135
19159
  );
19136
19160
  }, [hasInvalidIncomingValue, value]);
19137
- const chips = React74.useMemo(
19161
+ const chips = React76.useMemo(
19138
19162
  () => Array.isArray(value) ? value : [],
19139
19163
  [value]
19140
19164
  );
19141
19165
  const hasChips = chips.length > 0;
19142
- const [inputText, setInputText] = React74.useState("");
19143
- const emitChange = React74.useCallback(
19166
+ const [inputText, setInputText] = React76.useState("");
19167
+ const emitChange = React76.useCallback(
19144
19168
  (nextChips, meta) => {
19145
19169
  const detail = {
19146
19170
  source: "variant",
@@ -19155,7 +19179,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19155
19179
  },
19156
19180
  [onValue]
19157
19181
  );
19158
- const commitFromRaw = React74.useCallback(
19182
+ const commitFromRaw = React76.useCallback(
19159
19183
  (raw) => {
19160
19184
  const tokens = splitIntoTokens(raw, separators);
19161
19185
  if (!tokens.length) return;
@@ -19176,7 +19200,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19176
19200
  },
19177
19201
  [chips, separators, allowDuplicates, maxChips, emitChange, onAddChips]
19178
19202
  );
19179
- const handleRemoveAt = React74.useCallback(
19203
+ const handleRemoveAt = React76.useCallback(
19180
19204
  (index) => {
19181
19205
  if (index < 0 || index >= chips.length) return;
19182
19206
  const removed = [chips[index]];
@@ -19186,7 +19210,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19186
19210
  },
19187
19211
  [chips, emitChange, onRemoveChips]
19188
19212
  );
19189
- const handleClear = React74.useCallback(
19213
+ const handleClear = React76.useCallback(
19190
19214
  (ev) => {
19191
19215
  ev == null ? void 0 : ev.preventDefault();
19192
19216
  ev == null ? void 0 : ev.stopPropagation();
@@ -19197,7 +19221,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19197
19221
  },
19198
19222
  [chips, emitChange, onRemoveChips]
19199
19223
  );
19200
- const handleEntryChange = React74.useCallback(
19224
+ const handleEntryChange = React76.useCallback(
19201
19225
  (event) => {
19202
19226
  var _a2;
19203
19227
  const next = (_a2 = event.target.value) != null ? _a2 : "";
@@ -19205,7 +19229,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19205
19229
  },
19206
19230
  []
19207
19231
  );
19208
- const handleEntryKeyDown = React74.useCallback(
19232
+ const handleEntryKeyDown = React76.useCallback(
19209
19233
  (event) => {
19210
19234
  const key = event.key;
19211
19235
  if (key === "Enter" && addOnEnter) {
@@ -19236,7 +19260,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19236
19260
  handleRemoveAt
19237
19261
  ]
19238
19262
  );
19239
- const handleEntryBlur = React74.useCallback(
19263
+ const handleEntryBlur = React76.useCallback(
19240
19264
  (event) => {
19241
19265
  if (addOnBlur && inputText.trim().length) {
19242
19266
  commitFromRaw(inputText);
@@ -19248,10 +19272,12 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19248
19272
  [addOnBlur, inputText, commitFromRaw, restTextProps]
19249
19273
  );
19250
19274
  const effectivePlaceholder = placeholder != null ? placeholder : hasChips ? "" : "Add item\u2026";
19275
+ const defaultMaxVisible = !textareaMode && placement !== "below" ? 3 : void 0;
19276
+ const effectiveMaxVisibleChips = maxVisibleChips !== void 0 ? maxVisibleChips : defaultMaxVisible;
19251
19277
  let visibleChips = chips;
19252
19278
  let hiddenCount = 0;
19253
- if (typeof maxVisibleChips === "number" && maxVisibleChips > 0 && chips.length > maxVisibleChips) {
19254
- visibleChips = chips.slice(0, maxVisibleChips);
19279
+ if (typeof effectiveMaxVisibleChips === "number" && effectiveMaxVisibleChips > 0 && chips.length > effectiveMaxVisibleChips) {
19280
+ visibleChips = chips.slice(0, effectiveMaxVisibleChips);
19255
19281
  hiddenCount = chips.length - visibleChips.length;
19256
19282
  }
19257
19283
  const maxWidthStyle = maxChipWidth !== void 0 ? {
@@ -19261,7 +19287,7 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19261
19287
  const baseRemoveClasses = textareaMode ? "cursor-pointer text-[16px] opacity-70 hover:opacity-100 mt-0.5" : "cursor-pointer text-[16px] opacity-70 hover:opacity-100";
19262
19288
  const chipNodes = visibleChips.map((chip, index) => {
19263
19289
  if (renderChip) {
19264
- return /* @__PURE__ */ jsx(React74.Fragment, { children: renderChip(chip, index, {
19290
+ return /* @__PURE__ */ jsx(React76.Fragment, { children: renderChip(chip, index, {
19265
19291
  remove: () => handleRemoveAt(index),
19266
19292
  chips
19267
19293
  }) }, `${chip}-${index}`);
@@ -19310,25 +19336,69 @@ var ShadcnChipsVariant = React74.forwardRef(function ShadcnChipsVariant2(props,
19310
19336
  );
19311
19337
  });
19312
19338
  if (hiddenCount > 0) {
19313
- const defaultOverflow = /* @__PURE__ */ jsxs(
19314
- "span",
19315
- {
19316
- className: cn(
19317
- baseChipClasses,
19318
- "cursor-default",
19319
- chipClassName
19320
- ),
19321
- "data-slot": "chip-overflow",
19322
- children: [
19323
- "+",
19324
- hiddenCount,
19325
- " more"
19326
- ]
19327
- }
19328
- );
19339
+ const hiddenChips = chips.slice(effectiveMaxVisibleChips != null ? effectiveMaxVisibleChips : 0);
19340
+ const defaultOverflow = /* @__PURE__ */ jsxs(Popover, { children: [
19341
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
19342
+ "button",
19343
+ {
19344
+ type: "button",
19345
+ className: cn(
19346
+ baseChipClasses,
19347
+ "cursor-pointer font-semibold bg-primary/10 text-primary hover:bg-primary/20",
19348
+ chipClassName
19349
+ ),
19350
+ "data-slot": "chip-overflow",
19351
+ children: [
19352
+ "+",
19353
+ hiddenCount,
19354
+ " more"
19355
+ ]
19356
+ }
19357
+ ) }),
19358
+ /* @__PURE__ */ jsxs(PopoverContent, { className: "p-3 w-64 max-h-60 overflow-y-auto", align: "start", children: [
19359
+ /* @__PURE__ */ jsx("div", { className: "text-xs font-bold text-muted-foreground uppercase tracking-wider mb-2", children: "Hidden Chips" }),
19360
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: hiddenChips.map((chip, hiddenIdx) => {
19361
+ const actualIndex = (effectiveMaxVisibleChips != null ? effectiveMaxVisibleChips : 0) + hiddenIdx;
19362
+ let label = chip;
19363
+ if (typeof maxChipChars === "number" && maxChipChars > 0 && label.length > maxChipChars) {
19364
+ label = label.slice(0, maxChipChars) + "\u2026";
19365
+ }
19366
+ return /* @__PURE__ */ jsxs(
19367
+ "div",
19368
+ {
19369
+ className: cn(baseChipClasses, chipClassName, "max-w-full"),
19370
+ children: [
19371
+ /* @__PURE__ */ jsx(
19372
+ "span",
19373
+ {
19374
+ className: cn("truncate", chipLabelClassName),
19375
+ style: maxWidthStyle,
19376
+ children: label
19377
+ }
19378
+ ),
19379
+ /* @__PURE__ */ jsx(
19380
+ "span",
19381
+ {
19382
+ className: cn(baseRemoveClasses, chipRemoveClassName),
19383
+ onClick: (e4) => {
19384
+ e4.preventDefault();
19385
+ e4.stopPropagation();
19386
+ handleRemoveAt(actualIndex);
19387
+ },
19388
+ "aria-hidden": "true",
19389
+ children: /* @__PURE__ */ jsx(X, { size: 14 })
19390
+ }
19391
+ )
19392
+ ]
19393
+ },
19394
+ `${chip}-${actualIndex}`
19395
+ );
19396
+ }) })
19397
+ ] })
19398
+ ] });
19329
19399
  const node = (_a = renderOverflowChip == null ? void 0 : renderOverflowChip(hiddenCount, chips)) != null ? _a : defaultOverflow;
19330
19400
  chipNodes.push(
19331
- /* @__PURE__ */ jsx(React74.Fragment, { children: node }, "__overflow")
19401
+ /* @__PURE__ */ jsx(React76.Fragment, { children: node }, "__overflow")
19332
19402
  );
19333
19403
  }
19334
19404
  const effectivePlacement = textareaMode ? placement != null ? placement : "inline" : placement != null ? placement : "inline";
@@ -19522,7 +19592,7 @@ var chipVariant = {
19522
19592
  tags: ["chips", "multi-select", "tags"]
19523
19593
  }
19524
19594
  };
19525
- var ShadcnTextareaVariant = React74.forwardRef(function ShadcnTextareaVariant2(props, ref) {
19595
+ var ShadcnTextareaVariant = React76.forwardRef(function ShadcnTextareaVariant2(props, ref) {
19526
19596
  const {
19527
19597
  value,
19528
19598
  onValue,
@@ -19530,7 +19600,7 @@ var ShadcnTextareaVariant = React74.forwardRef(function ShadcnTextareaVariant2(p
19530
19600
  // everything else goes straight to the UI Textarea
19531
19601
  ...rest
19532
19602
  } = props;
19533
- const handleChange = React74.useCallback(
19603
+ const handleChange = React76.useCallback(
19534
19604
  (event) => {
19535
19605
  var _a;
19536
19606
  const next = (_a = event.target.value) != null ? _a : "";
@@ -19625,7 +19695,7 @@ function switchThumbSize(size) {
19625
19695
  if (size === "lg") return "size-5";
19626
19696
  return "size-4";
19627
19697
  }
19628
- var ShadcnToggleVariant = React74.forwardRef(function ShadcnToggleVariant2(props, _ref) {
19698
+ var ShadcnToggleVariant = React76.forwardRef(function ShadcnToggleVariant2(props, _ref) {
19629
19699
  const {
19630
19700
  // variant bits
19631
19701
  value,
@@ -19647,7 +19717,7 @@ var ShadcnToggleVariant = React74.forwardRef(function ShadcnToggleVariant2(props
19647
19717
  ...restSwitchProps
19648
19718
  } = props;
19649
19719
  const checked = !!value;
19650
- const handleToggle = React74.useCallback(
19720
+ const handleToggle = React76.useCallback(
19651
19721
  (next) => {
19652
19722
  const nextVal = Boolean(next);
19653
19723
  const detail = {
@@ -20173,7 +20243,7 @@ var InnerShadcnRadioVariant = (props, ref) => {
20173
20243
  ...restGroupProps
20174
20244
  } = props;
20175
20245
  const hasError = !!error;
20176
- const normalized = React74.useMemo(
20246
+ const normalized = React76.useMemo(
20177
20247
  () => normalizeItems(
20178
20248
  items != null ? items : options,
20179
20249
  mappers,
@@ -20204,14 +20274,14 @@ var InnerShadcnRadioVariant = (props, ref) => {
20204
20274
  optionTagOnClick
20205
20275
  ]
20206
20276
  );
20207
- const selectedString = React74.useMemo(() => {
20277
+ const selectedString = React76.useMemo(() => {
20208
20278
  if (value === void 0) return void 0;
20209
20279
  const found = normalized.find(
20210
20280
  (item) => isEqualValue(item.value, value)
20211
20281
  );
20212
20282
  return found ? String(found.value) : void 0;
20213
20283
  }, [normalized, value]);
20214
- const handleSelect = React74.useCallback(
20284
+ const handleSelect = React76.useCallback(
20215
20285
  (next, selectedRaw) => {
20216
20286
  if (!onValue || disabled) return;
20217
20287
  const detail = {
@@ -20225,7 +20295,7 @@ var InnerShadcnRadioVariant = (props, ref) => {
20225
20295
  },
20226
20296
  [onValue, disabled]
20227
20297
  );
20228
- const handleRadioChange = React74.useCallback(
20298
+ const handleRadioChange = React76.useCallback(
20229
20299
  (raw) => {
20230
20300
  var _a;
20231
20301
  const found = normalized.find((item) => String(item.value) === raw);
@@ -20367,7 +20437,7 @@ var InnerShadcnRadioVariant = (props, ref) => {
20367
20437
  }
20368
20438
  );
20369
20439
  };
20370
- var ShadcnRadioVariant = React74.forwardRef(
20440
+ var ShadcnRadioVariant = React76.forwardRef(
20371
20441
  InnerShadcnRadioVariant
20372
20442
  );
20373
20443
 
@@ -20627,7 +20697,7 @@ var InnerShadcnCheckboxVariant = (props, ref) => {
20627
20697
  } = props;
20628
20698
  const hasError = !!error;
20629
20699
  const isSingle = !!single;
20630
- const normalized = React74.useMemo(
20700
+ const normalized = React76.useMemo(
20631
20701
  () => normalizeItems2(
20632
20702
  items != null ? items : options,
20633
20703
  mappers,
@@ -20730,14 +20800,14 @@ var InnerShadcnCheckboxVariant = (props, ref) => {
20730
20800
  }
20731
20801
  );
20732
20802
  }
20733
- const normalizedByValueKey = React74.useMemo(() => {
20803
+ const normalizedByValueKey = React76.useMemo(() => {
20734
20804
  const lookup = /* @__PURE__ */ new Map();
20735
20805
  normalized.forEach((item) => {
20736
20806
  lookup.set(valueLookupKey(item.value), item);
20737
20807
  });
20738
20808
  return lookup;
20739
20809
  }, [normalized]);
20740
- const groupValue = React74.useMemo(() => {
20810
+ const groupValue = React76.useMemo(() => {
20741
20811
  const source = asGroupValue(value);
20742
20812
  if (!(source == null ? void 0 : source.length)) return source;
20743
20813
  return source.map((entry) => {
@@ -20775,21 +20845,21 @@ var InnerShadcnCheckboxVariant = (props, ref) => {
20775
20845
  labelTextSizeClass: labelTextSize2(size),
20776
20846
  descriptionTextSizeClass: descriptionTextSize2(size)
20777
20847
  });
20778
- const hasAnyTristate = React74.useMemo(
20848
+ const hasAnyTristate = React76.useMemo(
20779
20849
  () => normalized.some((item) => {
20780
20850
  var _a, _b;
20781
20851
  return (_b = (_a = item.tristate) != null ? _a : tristateDefault) != null ? _b : false;
20782
20852
  }),
20783
20853
  [normalized, tristateDefault]
20784
20854
  );
20785
- const findEntryIndex = React74.useCallback(
20855
+ const findEntryIndex = React76.useCallback(
20786
20856
  (val) => {
20787
20857
  if (!groupValue) return -1;
20788
20858
  return groupValue.findIndex((e4) => isEqualValue2(e4.value, val));
20789
20859
  },
20790
20860
  [groupValue]
20791
20861
  );
20792
- const getEntryState = React74.useCallback(
20862
+ const getEntryState = React76.useCallback(
20793
20863
  (val) => {
20794
20864
  const idx = findEntryIndex(val);
20795
20865
  if (!groupValue || idx === -1) return "none";
@@ -20797,7 +20867,7 @@ var InnerShadcnCheckboxVariant = (props, ref) => {
20797
20867
  },
20798
20868
  [groupValue, findEntryIndex]
20799
20869
  );
20800
- const updateGroupValue = React74.useCallback(
20870
+ const updateGroupValue = React76.useCallback(
20801
20871
  (itemValue, nextInternal, effectiveTristate) => {
20802
20872
  if (!onValue || disabled) return;
20803
20873
  const currentList = groupValue ? [...groupValue] : [];
@@ -21027,7 +21097,7 @@ var InnerShadcnCheckboxVariant = (props, ref) => {
21027
21097
  }
21028
21098
  );
21029
21099
  };
21030
- var ShadcnCheckboxVariant = React74.forwardRef(
21100
+ var ShadcnCheckboxVariant = React76.forwardRef(
21031
21101
  InnerShadcnCheckboxVariant
21032
21102
  );
21033
21103
 
@@ -21050,6 +21120,155 @@ var checkboxModule = {
21050
21120
  tags: ["checkbox", "group", "boolean", "tri-state"]
21051
21121
  }
21052
21122
  };
21123
+ function ScrollArea({
21124
+ className,
21125
+ children,
21126
+ ...props
21127
+ }) {
21128
+ return /* @__PURE__ */ jsxs(
21129
+ ScrollAreaPrimitive2.Root,
21130
+ {
21131
+ "data-slot": "scroll-area",
21132
+ className: cn("relative", className),
21133
+ ...props,
21134
+ children: [
21135
+ /* @__PURE__ */ jsx(
21136
+ ScrollAreaPrimitive2.Viewport,
21137
+ {
21138
+ "data-slot": "scroll-area-viewport",
21139
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
21140
+ children
21141
+ }
21142
+ ),
21143
+ /* @__PURE__ */ jsx(ScrollBar, {}),
21144
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive2.Corner, {})
21145
+ ]
21146
+ }
21147
+ );
21148
+ }
21149
+ function ScrollBar({
21150
+ className,
21151
+ orientation = "vertical",
21152
+ ...props
21153
+ }) {
21154
+ return /* @__PURE__ */ jsx(
21155
+ ScrollAreaPrimitive2.ScrollAreaScrollbar,
21156
+ {
21157
+ "data-slot": "scroll-area-scrollbar",
21158
+ orientation,
21159
+ className: cn(
21160
+ "flex touch-none p-px transition-colors select-none",
21161
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
21162
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
21163
+ className
21164
+ ),
21165
+ ...props,
21166
+ children: /* @__PURE__ */ jsx(
21167
+ ScrollAreaPrimitive2.ScrollAreaThumb,
21168
+ {
21169
+ "data-slot": "scroll-area-thumb",
21170
+ className: "bg-border relative flex-1 rounded-full"
21171
+ }
21172
+ )
21173
+ }
21174
+ );
21175
+ }
21176
+ function VirtualScroll({
21177
+ className,
21178
+ rootProps,
21179
+ scrollbarProps,
21180
+ style,
21181
+ components,
21182
+ ...props
21183
+ }) {
21184
+ const Scroller = React76.useMemo(() => {
21185
+ return React76.forwardRef((scrollerProps, ref) => {
21186
+ return /* @__PURE__ */ jsx(
21187
+ ScrollAreaPrimitive2.Viewport,
21188
+ {
21189
+ ...scrollerProps,
21190
+ ref,
21191
+ "data-slot": "scroll-area-viewport",
21192
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
21193
+ }
21194
+ );
21195
+ });
21196
+ }, []);
21197
+ const combinedComponents = React76.useMemo(() => {
21198
+ return {
21199
+ ...components,
21200
+ Scroller
21201
+ };
21202
+ }, [components, Scroller]);
21203
+ return /* @__PURE__ */ jsxs(
21204
+ ScrollAreaPrimitive2.Root,
21205
+ {
21206
+ "data-slot": "scroll-area",
21207
+ className,
21208
+ ...rootProps,
21209
+ style: { ...style, position: "relative" },
21210
+ children: [
21211
+ /* @__PURE__ */ jsx(
21212
+ Virtuoso,
21213
+ {
21214
+ ...props,
21215
+ components: combinedComponents
21216
+ }
21217
+ ),
21218
+ /* @__PURE__ */ jsx(ScrollBar, { ...scrollbarProps }),
21219
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive2.Corner, {})
21220
+ ]
21221
+ }
21222
+ );
21223
+ }
21224
+ function VirtualScrollGrid({
21225
+ className,
21226
+ rootProps,
21227
+ scrollbarProps,
21228
+ style,
21229
+ components,
21230
+ ...props
21231
+ }) {
21232
+ const Scroller = React76.useMemo(() => {
21233
+ return React76.forwardRef((scrollerProps, ref) => {
21234
+ return /* @__PURE__ */ jsx(
21235
+ ScrollAreaPrimitive2.Viewport,
21236
+ {
21237
+ ...scrollerProps,
21238
+ ref,
21239
+ "data-slot": "scroll-area-viewport",
21240
+ className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
21241
+ }
21242
+ );
21243
+ });
21244
+ }, []);
21245
+ const combinedComponents = React76.useMemo(() => {
21246
+ return {
21247
+ ...components,
21248
+ Scroller
21249
+ };
21250
+ }, [components, Scroller]);
21251
+ return /* @__PURE__ */ jsxs(
21252
+ ScrollAreaPrimitive2.Root,
21253
+ {
21254
+ "data-slot": "scroll-area",
21255
+ className,
21256
+ ...rootProps,
21257
+ style: { ...style, position: "relative" },
21258
+ children: [
21259
+ /* @__PURE__ */ jsx(
21260
+ VirtuosoGrid,
21261
+ {
21262
+ ...props,
21263
+ components: combinedComponents
21264
+ }
21265
+ ),
21266
+ /* @__PURE__ */ jsx(ScrollBar, { ...scrollbarProps }),
21267
+ /* @__PURE__ */ jsx(ScrollAreaPrimitive2.Corner, {})
21268
+ ]
21269
+ }
21270
+ );
21271
+ }
21053
21272
  function normalizeOptions(opts, config) {
21054
21273
  return globalNormalizeOptions(opts, config);
21055
21274
  }
@@ -21074,7 +21293,7 @@ function triggerPadding(density) {
21074
21293
  return "py-1.5";
21075
21294
  }
21076
21295
  }
21077
- var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props, _ref) {
21296
+ var ShadcnSelectVariant = React76.forwardRef(function ShadcnSelectVariant2(props, _ref) {
21078
21297
  var _a, _b;
21079
21298
  const {
21080
21299
  value,
@@ -21106,6 +21325,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21106
21325
  clearable,
21107
21326
  placeholder,
21108
21327
  className,
21328
+ style,
21109
21329
  triggerClassName,
21110
21330
  contentClassName,
21111
21331
  renderOption,
@@ -21132,9 +21352,9 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21132
21352
  virtualScroll = true
21133
21353
  } = props;
21134
21354
  const isButtonMode = mode === "button";
21135
- const [open, setOpen] = React74.useState(false);
21136
- const [query, setQuery] = React74.useState("");
21137
- const items = React74.useMemo(
21355
+ const [open, setOpen] = React76.useState(false);
21356
+ const [query, setQuery] = React76.useState("");
21357
+ const items = React76.useMemo(
21138
21358
  () => normalizeOptions(options != null ? options : [], {
21139
21359
  autoCap,
21140
21360
  optionLabel,
@@ -21170,7 +21390,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21170
21390
  ]
21171
21391
  );
21172
21392
  const normalizedValue = value === "" || value == null ? void 0 : value;
21173
- const valueMap = React74.useMemo(() => {
21393
+ const valueMap = React76.useMemo(() => {
21174
21394
  const map = /* @__PURE__ */ new Map();
21175
21395
  for (const item of items) {
21176
21396
  map.set(String(item.value), item.value);
@@ -21180,7 +21400,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21180
21400
  const selectedItem = normalizedValue == null ? null : (_a = items.find(
21181
21401
  (it) => String(it.value) === String(normalizedValue)
21182
21402
  )) != null ? _a : null;
21183
- const filteredItems = React74.useMemo(() => {
21403
+ const filteredItems = React76.useMemo(() => {
21184
21404
  if (!query) return items;
21185
21405
  const q2 = query.toLowerCase();
21186
21406
  return items.filter((it) => it.labelText.toLowerCase().includes(q2));
@@ -21192,7 +21412,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21192
21412
  listMaxHeight,
21193
21413
  Math.max(estimatedRowHeight, filteredItems.length * estimatedRowHeight)
21194
21414
  );
21195
- const handleChange = React74.useCallback(
21415
+ const handleChange = React76.useCallback(
21196
21416
  (rawKey) => {
21197
21417
  var _a2, _b2, _c, _d;
21198
21418
  if (!onValue || rawKey === "") return;
@@ -21241,7 +21461,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21241
21461
  "focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]",
21242
21462
  "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
21243
21463
  );
21244
- const ButtonModeTrigger = React74.useMemo(() => {
21464
+ const ButtonModeTrigger = React76.useMemo(() => {
21245
21465
  if (!isButtonMode) return null;
21246
21466
  const selectedValue = value;
21247
21467
  const renderable = button != null ? button : children;
@@ -21316,8 +21536,10 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21316
21536
  heightCls,
21317
21537
  padCls,
21318
21538
  hasControls && joinControls && extendBoxToControls ? "border-none shadow-none focus:ring-0 focus:outline-none" : "",
21319
- triggerClassName
21539
+ triggerClassName,
21540
+ !joinControls && className
21320
21541
  ),
21542
+ style: !joinControls ? style : void 0,
21321
21543
  children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-2", children: [
21322
21544
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
21323
21545
  hasLeadingIcons && /* @__PURE__ */ jsx(
@@ -21400,7 +21622,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21400
21622
  filteredItems.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-2 py-1.5 text-xs text-muted-foreground", children: emptySearchText != null ? emptySearchText : "No results found" }) : useVirtualization ? (
21401
21623
  // CASE 3: normal list, virtualized
21402
21624
  /* @__PURE__ */ jsx(
21403
- Virtuoso,
21625
+ VirtualScroll,
21404
21626
  {
21405
21627
  style: { height: listHeight },
21406
21628
  data: filteredItems,
@@ -21463,7 +21685,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21463
21685
  }
21464
21686
  }
21465
21687
  )
21466
- ) : /* @__PURE__ */ jsx("div", { className: "max-h-60 overflow-auto", children: filteredItems.map((item, index) => {
21688
+ ) : /* @__PURE__ */ jsx(ScrollArea, { className: "max-h-60", children: /* @__PURE__ */ jsx("div", { children: filteredItems.map((item, index) => {
21467
21689
  var _a2, _b2;
21468
21690
  const optionNode = /* @__PURE__ */ jsx(
21469
21691
  SelectItem,
@@ -21518,7 +21740,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21518
21740
  setQuery("");
21519
21741
  }
21520
21742
  });
21521
- }) })
21743
+ }) }) })
21522
21744
  )
21523
21745
  ] })
21524
21746
  ]
@@ -21531,8 +21753,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21531
21753
  "data-slot": "select-field",
21532
21754
  className: cn(
21533
21755
  "w-full",
21534
- disabled && "opacity-50 cursor-not-allowed",
21535
- className
21756
+ disabled && "opacity-50 cursor-not-allowed"
21536
21757
  ),
21537
21758
  "aria-disabled": disabled || void 0,
21538
21759
  "aria-invalid": error ? "true" : void 0,
@@ -21562,6 +21783,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21562
21783
  "div",
21563
21784
  {
21564
21785
  className: groupClassName,
21786
+ style,
21565
21787
  "data-slot": "select-group",
21566
21788
  "data-disabled": disabled ? "true" : "false",
21567
21789
  children: [
@@ -21607,8 +21829,7 @@ var ShadcnSelectVariant = React74.forwardRef(function ShadcnSelectVariant2(props
21607
21829
  "data-slot": "select-field",
21608
21830
  className: cn(
21609
21831
  "flex items-stretch w-full",
21610
- disabled && "opacity-50 cursor-not-allowed",
21611
- className
21832
+ disabled && "opacity-50 cursor-not-allowed"
21612
21833
  ),
21613
21834
  "aria-disabled": disabled || void 0,
21614
21835
  "aria-invalid": error ? "true" : void 0,
@@ -21666,10 +21887,10 @@ var SelectionSummary = ({
21666
21887
  placeholder,
21667
21888
  onRemoveValue
21668
21889
  }) => {
21669
- const containerRef = React74.useRef(null);
21670
- const [visibleCount, setVisibleCount] = React74.useState(0);
21671
- const [moreOpen, setMoreOpen] = React74.useState(false);
21672
- React74.useLayoutEffect(() => {
21890
+ const containerRef = React76.useRef(null);
21891
+ const [visibleCount, setVisibleCount] = React76.useState(0);
21892
+ const [moreOpen, setMoreOpen] = React76.useState(false);
21893
+ React76.useLayoutEffect(() => {
21673
21894
  const el = containerRef.current;
21674
21895
  if (!el) return;
21675
21896
  const computeVisibleItems = () => {
@@ -21717,7 +21938,7 @@ var SelectionSummary = ({
21717
21938
  ref: containerRef,
21718
21939
  className: "flex items-center w-full overflow-hidden whitespace-nowrap",
21719
21940
  children: [
21720
- visibleItems.map((item, index) => /* @__PURE__ */ jsxs(React74.Fragment, { children: [
21941
+ visibleItems.map((item, index) => /* @__PURE__ */ jsxs(React76.Fragment, { children: [
21721
21942
  /* @__PURE__ */ jsx("span", { className: "truncate flex-shrink-0", children: item.labelNode }),
21722
21943
  index < visibleItems.length - 1 && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground mr-1", children: "," })
21723
21944
  ] }, item.key)),
@@ -21798,7 +22019,7 @@ function removeSelectValue(current, valueToRemove) {
21798
22019
  return current.filter((v2) => String(v2) !== target);
21799
22020
  }
21800
22021
 
21801
- // src/presets/shadcn-variants/multiselect.tsx
22022
+ // src/presets/shadcn/variants/multiselect.tsx
21802
22023
  var import_lodash = __toESM(require_lodash());
21803
22024
  function normalizeOptions2(opts, config) {
21804
22025
  return globalNormalizeOptions(opts, config);
@@ -21824,7 +22045,7 @@ function triggerPadding2(density) {
21824
22045
  return "py-1.5";
21825
22046
  }
21826
22047
  }
21827
- var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVariant2(props, _ref) {
22048
+ var ShadcnMultiSelectVariant = React76.forwardRef(function ShadcnMultiSelectVariant2(props, _ref) {
21828
22049
  var _a;
21829
22050
  const {
21830
22051
  value,
@@ -21887,9 +22108,9 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
21887
22108
  selectedBadgeClassName,
21888
22109
  selectedBadgePlacement = "end"
21889
22110
  } = props;
21890
- const [open, setOpen] = React74.useState(false);
21891
- const [query, setQuery] = React74.useState("");
21892
- const { items, keyedItems } = React74.useMemo(() => {
22111
+ const [open, setOpen] = React76.useState(false);
22112
+ const [query, setQuery] = React76.useState("");
22113
+ const { items, keyedItems } = React76.useMemo(() => {
21893
22114
  const items2 = normalizeOptions2(options != null ? options : [], {
21894
22115
  autoCap,
21895
22116
  optionLabel,
@@ -21924,24 +22145,24 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
21924
22145
  optionTagBgColor,
21925
22146
  optionTagOnClick
21926
22147
  ]);
21927
- const selectedValues = React74.useMemo(
22148
+ const selectedValues = React76.useMemo(
21928
22149
  () => new Set(value != null ? value : []),
21929
22150
  [value]
21930
22151
  );
21931
- const selectedItems = React74.useMemo(
22152
+ const selectedItems = React76.useMemo(
21932
22153
  () => items.filter((it) => selectedValues.has(it.value)),
21933
22154
  [items, selectedValues]
21934
22155
  );
21935
- const filteredItems = React74.useMemo(() => {
22156
+ const filteredItems = React76.useMemo(() => {
21936
22157
  if (!query) return items;
21937
22158
  const q2 = query.toLowerCase();
21938
22159
  return items.filter((it) => it.labelText.toLowerCase().includes(q2));
21939
22160
  }, [items, query]);
21940
- const selectableItems = React74.useMemo(
22161
+ const selectableItems = React76.useMemo(
21941
22162
  () => items.filter((it) => !it.disabled),
21942
22163
  [items]
21943
22164
  );
21944
- const allSelectableValues = React74.useMemo(
22165
+ const allSelectableValues = React76.useMemo(
21945
22166
  () => new Set(selectableItems.map((it) => it.value)),
21946
22167
  [selectableItems]
21947
22168
  );
@@ -21961,7 +22182,7 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
21961
22182
  filteredItems.length * estimatedRowHeight + headerHeight + footerHeight
21962
22183
  )
21963
22184
  );
21964
- const handleToggleValue = React74.useCallback(
22185
+ const handleToggleValue = React76.useCallback(
21965
22186
  (primitive) => {
21966
22187
  if (!onValue || disabled || readOnly) return;
21967
22188
  const current = value != null ? value : [];
@@ -21995,7 +22216,7 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
21995
22216
  },
21996
22217
  [onValue, value, disabled, readOnly, keyedItems]
21997
22218
  );
21998
- const handleSelectAll = React74.useCallback(() => {
22219
+ const handleSelectAll = React76.useCallback(() => {
21999
22220
  if (!onValue || disabled || readOnly) return;
22000
22221
  const current = value != null ? value : [];
22001
22222
  const allSelectableArr = Array.from(allSelectableValues);
@@ -22036,7 +22257,7 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
22036
22257
  selectedValues,
22037
22258
  keyedItems
22038
22259
  ]);
22039
- const handleClearAll = React74.useCallback(() => {
22260
+ const handleClearAll = React76.useCallback(() => {
22040
22261
  if (!onValue || disabled || readOnly) return;
22041
22262
  const detail = {
22042
22263
  source: "variant",
@@ -22088,7 +22309,7 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
22088
22309
  const hasLeadingControl = !!leadingControl;
22089
22310
  const hasTrailingControl = !!trailingControl;
22090
22311
  const hasControls = hasLeadingControl || hasTrailingControl;
22091
- const makeCheckboxNode = React74.useCallback(
22312
+ const makeCheckboxNode = React76.useCallback(
22092
22313
  (opts) => {
22093
22314
  if (renderCheckbox) {
22094
22315
  return renderCheckbox(opts);
@@ -22184,7 +22405,7 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
22184
22405
  ] })
22185
22406
  }
22186
22407
  );
22187
- const ButtonModeTrigger = React74.useMemo(() => {
22408
+ const ButtonModeTrigger = React76.useMemo(() => {
22188
22409
  if (mode !== "button") return null;
22189
22410
  const selectedCount = selectedItems.length;
22190
22411
  const content = (() => {
@@ -22289,7 +22510,7 @@ var ShadcnMultiSelectVariant = React74.forwardRef(function ShadcnMultiSelectVari
22289
22510
  }
22290
22511
  ) }),
22291
22512
  /* @__PURE__ */ jsx("div", { className: "py-1", children: /* @__PURE__ */ jsx(
22292
- Virtuoso,
22513
+ VirtualScroll,
22293
22514
  {
22294
22515
  style: { height: listHeight },
22295
22516
  data: filteredItems,
@@ -22553,7 +22774,7 @@ function Slider({
22553
22774
  max: max2 = 100,
22554
22775
  ...props
22555
22776
  }) {
22556
- const _values = React74.useMemo(
22777
+ const _values = React76.useMemo(
22557
22778
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min2, max2],
22558
22779
  [value, defaultValue, min2, max2]
22559
22780
  );
@@ -22632,7 +22853,7 @@ function clampToRange(v2, min2, max2) {
22632
22853
  if (v2 > max2) return max2;
22633
22854
  return v2;
22634
22855
  }
22635
- var ShadcnSliderVariant = React74.forwardRef(function ShadcnSliderVariant2(props, _ref) {
22856
+ var ShadcnSliderVariant = React76.forwardRef(function ShadcnSliderVariant2(props, _ref) {
22636
22857
  const {
22637
22858
  value,
22638
22859
  onValue,
@@ -22671,7 +22892,7 @@ var ShadcnSliderVariant = React74.forwardRef(function ShadcnSliderVariant2(props
22671
22892
  } = props;
22672
22893
  const numericValue = typeof value === "number" ? value : min2;
22673
22894
  const isDisabled = !!(disabled || readOnly);
22674
- const handleChange = React74.useCallback(
22895
+ const handleChange = React76.useCallback(
22675
22896
  (vals) => {
22676
22897
  if (!onValue) return;
22677
22898
  const next = clampToRange(vals[0], min2, max2);
@@ -22686,7 +22907,7 @@ var ShadcnSliderVariant = React74.forwardRef(function ShadcnSliderVariant2(props
22686
22907
  [onValue, min2, max2]
22687
22908
  );
22688
22909
  const stepAmount = controlStep != null ? controlStep : step;
22689
- const applyStep = React74.useCallback(
22910
+ const applyStep = React76.useCallback(
22690
22911
  (direction) => {
22691
22912
  if (!onValue || isDisabled) return;
22692
22913
  const current = typeof value === "number" ? value : min2;
@@ -23144,7 +23365,7 @@ function getGapPx(el) {
23144
23365
  const g2 = cs.columnGap && cs.columnGap !== "normal" ? cs.columnGap : cs.gap;
23145
23366
  return parsePx(g2);
23146
23367
  }
23147
- var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(props, _ref) {
23368
+ var ShadcnKeyValueVariant = React76.forwardRef(function ShadcnKeyValueVariant2(props, _ref) {
23148
23369
  const {
23149
23370
  value,
23150
23371
  onValue,
@@ -23169,14 +23390,14 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23169
23390
  renderChip
23170
23391
  } = props;
23171
23392
  const isDisabled = disabled || readOnly;
23172
- const items = React74.useMemo(() => mapToItems(value), [value]);
23173
- const [dialogOpen, setDialogOpen] = React74.useState(false);
23174
- const [editingIndex, setEditingIndex] = React74.useState(null);
23175
- const [draft, setDraft] = React74.useState({ key: "", value: "" });
23393
+ const items = React76.useMemo(() => mapToItems(value), [value]);
23394
+ const [dialogOpen, setDialogOpen] = React76.useState(false);
23395
+ const [editingIndex, setEditingIndex] = React76.useState(null);
23396
+ const [draft, setDraft] = React76.useState({ key: "", value: "" });
23176
23397
  const canAdd = items.length < max2;
23177
23398
  const canDelete = items.length > min2;
23178
23399
  const hasItems = items.length > 0;
23179
- const commitItems = React74.useCallback(
23400
+ const commitItems = React76.useCallback(
23180
23401
  (next, meta) => {
23181
23402
  if (!onValue) return;
23182
23403
  const nextMap = itemsToMap(next);
@@ -23190,13 +23411,13 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23190
23411
  },
23191
23412
  [onValue]
23192
23413
  );
23193
- const openForNew = React74.useCallback(() => {
23414
+ const openForNew = React76.useCallback(() => {
23194
23415
  if (isDisabled || !canAdd) return;
23195
23416
  setEditingIndex(null);
23196
23417
  setDraft({ key: "", value: "" });
23197
23418
  setDialogOpen(true);
23198
23419
  }, [isDisabled, canAdd]);
23199
- const openForEdit = React74.useCallback(
23420
+ const openForEdit = React76.useCallback(
23200
23421
  (index) => {
23201
23422
  if (isDisabled) return;
23202
23423
  const item = items[index];
@@ -23207,7 +23428,7 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23207
23428
  },
23208
23429
  [isDisabled, items]
23209
23430
  );
23210
- const handleDelete = React74.useCallback(() => {
23431
+ const handleDelete = React76.useCallback(() => {
23211
23432
  if (editingIndex == null) return;
23212
23433
  if (!canDelete) return;
23213
23434
  const next = items.slice();
@@ -23218,7 +23439,7 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23218
23439
  index: editingIndex
23219
23440
  });
23220
23441
  }, [editingIndex, items, canDelete, commitItems]);
23221
- const handleSubmit = React74.useCallback(() => {
23442
+ const handleSubmit = React76.useCallback(() => {
23222
23443
  const trimmedKey = draft.key.trim();
23223
23444
  const trimmedValue = draft.value;
23224
23445
  if (!trimmedKey) return;
@@ -23240,7 +23461,7 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23240
23461
  index: editingIndex != null ? editingIndex : next.length - 1
23241
23462
  });
23242
23463
  }, [draft, items, editingIndex, canAdd, commitItems]);
23243
- const handleQuickRemove = React74.useCallback(
23464
+ const handleQuickRemove = React76.useCallback(
23244
23465
  (index) => {
23245
23466
  if (isDisabled || !canDelete) return;
23246
23467
  const next = items.slice();
@@ -23249,21 +23470,21 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23249
23470
  },
23250
23471
  [isDisabled, canDelete, items, commitItems]
23251
23472
  );
23252
- const [listOpen, setListOpen] = React74.useState(false);
23253
- const openList = React74.useCallback(() => {
23473
+ const [listOpen, setListOpen] = React76.useState(false);
23474
+ const openList = React76.useCallback(() => {
23254
23475
  if (isDisabled) return;
23255
23476
  setListOpen(true);
23256
23477
  }, [isDisabled]);
23257
- const wrapRef = React74.useRef(null);
23258
- const leftRef = React74.useRef(null);
23259
- const moreMeasureRef = React74.useRef(null);
23260
- const chipRefs = React74.useRef([]);
23478
+ const wrapRef = React76.useRef(null);
23479
+ const leftRef = React76.useRef(null);
23480
+ const moreMeasureRef = React76.useRef(null);
23481
+ const chipRefs = React76.useRef([]);
23261
23482
  chipRefs.current = items.map((_2, i3) => {
23262
23483
  var _a;
23263
23484
  return (_a = chipRefs.current[i3]) != null ? _a : null;
23264
23485
  });
23265
- const [visibleCount, setVisibleCount] = React74.useState(() => items.length);
23266
- const recomputeVisible = React74.useCallback(() => {
23486
+ const [visibleCount, setVisibleCount] = React76.useState(() => items.length);
23487
+ const recomputeVisible = React76.useCallback(() => {
23267
23488
  var _a, _b;
23268
23489
  const leftEl = leftRef.current;
23269
23490
  if (!leftEl) {
@@ -23312,10 +23533,10 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23312
23533
  }
23313
23534
  setVisibleCount(best);
23314
23535
  }, [items.length]);
23315
- React74.useLayoutEffect(() => {
23536
+ React76.useLayoutEffect(() => {
23316
23537
  recomputeVisible();
23317
23538
  }, [recomputeVisible, items, size, density, showValue]);
23318
- React74.useEffect(() => {
23539
+ React76.useEffect(() => {
23319
23540
  const el = leftRef.current;
23320
23541
  if (!el) return;
23321
23542
  const ro = new ResizeObserver(() => recomputeVisible());
@@ -23522,7 +23743,7 @@ var ShadcnKeyValueVariant = React74.forwardRef(function ShadcnKeyValueVariant2(p
23522
23743
  }
23523
23744
  )
23524
23745
  ] }),
23525
- items.length === 0 ? /* @__PURE__ */ jsx("div", { className: "rounded-md border border-border/50 px-3 py-6 text-center text-sm text-muted-foreground", children: emptyLabel }) : /* @__PURE__ */ jsx("div", { className: "max-h-64 overflow-auto rounded-md border border-border/50", children: /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/50", children: items.map((pair, index) => /* @__PURE__ */ jsxs(
23746
+ items.length === 0 ? /* @__PURE__ */ jsx("div", { className: "rounded-md border border-border/50 px-3 py-6 text-center text-sm text-muted-foreground", children: emptyLabel }) : /* @__PURE__ */ jsx(ScrollArea, { className: "max-h-64 rounded-md border border-border/50", children: /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/50", children: items.map((pair, index) => /* @__PURE__ */ jsxs(
23526
23747
  "div",
23527
23748
  {
23528
23749
  className: "flex items-center justify-between gap-2 px-2 py-1.5",
@@ -23705,7 +23926,7 @@ var keyValueModule = {
23705
23926
  label: ""
23706
23927
  }
23707
23928
  };
23708
- var ShadcnCustomVariant = React74.forwardRef(function ShadcnCustomVariant2(props, ref) {
23929
+ var ShadcnCustomVariant = React76.forwardRef(function ShadcnCustomVariant2(props, ref) {
23709
23930
  const {
23710
23931
  // Variant base props we care about:
23711
23932
  value,
@@ -23741,7 +23962,7 @@ var ShadcnCustomVariant = React74.forwardRef(function ShadcnCustomVariant2(props
23741
23962
  }
23742
23963
  const isDisabled = !!disabled;
23743
23964
  const isReadOnly = !!readOnly;
23744
- const handleChange = React74.useCallback(
23965
+ const handleChange = React76.useCallback(
23745
23966
  (...args) => {
23746
23967
  var _a;
23747
23968
  if (!onValue) return;
@@ -23846,7 +24067,7 @@ function triggerHeight3(size) {
23846
24067
  return "min-h-9 text-sm";
23847
24068
  }
23848
24069
  }
23849
- var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVariant2(props, ref) {
24070
+ var ShadcnTreeSelectVariant = React76.forwardRef(function ShadcnTreeSelectVariant2(props, ref) {
23850
24071
  const {
23851
24072
  value,
23852
24073
  onValue,
@@ -23906,14 +24127,14 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
23906
24127
  selectedBadgeClassName,
23907
24128
  selectedBadgePlacement = "corner"
23908
24129
  } = props;
23909
- const [open, setOpen] = React74.useState(false);
23910
- const [query, setQuery] = React74.useState("");
24130
+ const [open, setOpen] = React76.useState(false);
24131
+ const [query, setQuery] = React76.useState("");
23911
24132
  const isDisabled = disabled || readOnly;
23912
- const d = React74.useMemo(
24133
+ const d = React76.useMemo(
23913
24134
  () => densityClasses(density),
23914
24135
  [density]
23915
24136
  );
23916
- const tree = React74.useMemo(
24137
+ const tree = React76.useMemo(
23917
24138
  () => normalizeTree(options != null ? options : [], {
23918
24139
  autoCap,
23919
24140
  optionLabel,
@@ -23948,8 +24169,8 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
23948
24169
  optionTagOnClick
23949
24170
  ]
23950
24171
  );
23951
- const allNodesFlat = React74.useMemo(() => flattenTree(tree), [tree]);
23952
- const computedInitialExpanded = React74.useMemo(() => {
24172
+ const allNodesFlat = React76.useMemo(() => flattenTree(tree), [tree]);
24173
+ const computedInitialExpanded = React76.useMemo(() => {
23953
24174
  if (expandAll) {
23954
24175
  return new Set(
23955
24176
  allNodesFlat.filter((n3) => n3.hasChildren).map((n3) => n3.value)
@@ -23960,13 +24181,13 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
23960
24181
  }
23961
24182
  return /* @__PURE__ */ new Set();
23962
24183
  }, [expandAll, defaultExpandedValues, allNodesFlat]);
23963
- const [expanded, setExpanded] = React74.useState(
24184
+ const [expanded, setExpanded] = React76.useState(
23964
24185
  computedInitialExpanded
23965
24186
  );
23966
- React74.useEffect(() => {
24187
+ React76.useEffect(() => {
23967
24188
  setExpanded(computedInitialExpanded);
23968
24189
  }, [computedInitialExpanded]);
23969
- const toggleExpanded = React74.useCallback((key) => {
24190
+ const toggleExpanded = React76.useCallback((key) => {
23970
24191
  setExpanded((prev) => {
23971
24192
  const next = new Set(prev);
23972
24193
  if (next.has(key)) next.delete(key);
@@ -23974,7 +24195,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
23974
24195
  return next;
23975
24196
  });
23976
24197
  }, []);
23977
- const displayedNodes = React74.useMemo(() => {
24198
+ const displayedNodes = React76.useMemo(() => {
23978
24199
  if (query) {
23979
24200
  const q2 = query.toLowerCase();
23980
24201
  const matchSet = /* @__PURE__ */ new Set();
@@ -24008,19 +24229,19 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24008
24229
  displayedNodes.length * estimatedRowHeight
24009
24230
  )
24010
24231
  );
24011
- const selectedValues = React74.useMemo(() => {
24232
+ const selectedValues = React76.useMemo(() => {
24012
24233
  if (value === void 0 || value === null) return [];
24013
24234
  if (Array.isArray(value)) {
24014
24235
  return multiple ? value : value.length ? [value[0]] : [];
24015
24236
  }
24016
24237
  return [value];
24017
24238
  }, [value, multiple]);
24018
- const selectedItems = React74.useMemo(
24239
+ const selectedItems = React76.useMemo(
24019
24240
  () => allNodesFlat.filter((node) => selectedValues.includes(node.value)),
24020
24241
  [allNodesFlat, selectedValues]
24021
24242
  );
24022
24243
  const selectedCount = selectedItems.length;
24023
- const handleToggleValue = React74.useCallback(
24244
+ const handleToggleValue = React76.useCallback(
24024
24245
  (item) => {
24025
24246
  if (isDisabled) return;
24026
24247
  if (leafOnly && item.hasChildren) {
@@ -24063,7 +24284,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24063
24284
  allNodesFlat
24064
24285
  ]
24065
24286
  );
24066
- const handleClear = React74.useCallback(() => {
24287
+ const handleClear = React76.useCallback(() => {
24067
24288
  if (!onValue) return;
24068
24289
  const detail = {
24069
24290
  source: "variant",
@@ -24114,12 +24335,12 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24114
24335
  ) });
24115
24336
  };
24116
24337
  const triggerContent = renderValue ? renderValue({ selectedItems, placeholder }) : renderDefaultTriggerContent();
24338
+ const triggerPaddingClasses = cn("px-3", d.triggerPy);
24117
24339
  const baseBoxClasses = cn(
24118
- "flex items-center justify-between border-input w-full min-w-0 rounded-md border bg-background text-sm shadow-xs ring-offset-background",
24119
- "placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
24120
- "disabled:cursor-not-allowed disabled:opacity-50",
24121
- "aria-invalid:border-destructive",
24122
- d.triggerPy
24340
+ "flex items-center justify-between w-full min-w-0 text-sm ring-offset-background",
24341
+ "placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
24342
+ triggerPaddingClasses,
24343
+ hasControls && extendBoxToControls ? "border-none shadow-none focus:outline-none bg-transparent text-left" : "border-input rounded-md border bg-background shadow-xs focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 aria-invalid:border-destructive"
24123
24344
  );
24124
24345
  const DefaultTriggerButton = /* @__PURE__ */ jsx(
24125
24346
  "button",
@@ -24129,7 +24350,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24129
24350
  disabled: isDisabled,
24130
24351
  className: cn(
24131
24352
  triggerHeight3(size),
24132
- hasControls && extendBoxToControls ? "border-none shadow-none focus:outline-none bg-transparent w-full text-left" : baseBoxClasses,
24353
+ baseBoxClasses,
24133
24354
  triggerClassName
24134
24355
  ),
24135
24356
  children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-2 overflow-hidden", children: [
@@ -24171,7 +24392,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24171
24392
  ] })
24172
24393
  }
24173
24394
  );
24174
- const ButtonModeTrigger = React74.useMemo(() => {
24395
+ const ButtonModeTrigger = React76.useMemo(() => {
24175
24396
  if (mode !== "button") return null;
24176
24397
  const ctx = { open, selectedItems, selectedCount };
24177
24398
  const triggerNode = typeof button === "function" ? button(ctx) : button != null ? button : typeof children === "function" ? children(ctx) : children;
@@ -24201,7 +24422,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24201
24422
  badgeEl
24202
24423
  ] });
24203
24424
  };
24204
- if (React74.isValidElement(triggerNode)) {
24425
+ if (React76.isValidElement(triggerNode)) {
24205
24426
  return wrapWithBadge(triggerNode);
24206
24427
  }
24207
24428
  return wrapWithBadge(
@@ -24235,7 +24456,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24235
24456
  emptyLabel && tree.length === 0 && !query && /* @__PURE__ */ jsx("div", { className: "px-4 py-3 text-sm text-center text-muted-foreground", children: emptyLabel }),
24236
24457
  tree.length > 0 && displayedNodes.length === 0 && /* @__PURE__ */ jsx("div", { className: "px-4 py-3 text-sm text-center text-muted-foreground", children: emptySearchText != null ? emptySearchText : "No results found" }),
24237
24458
  displayedNodes.length > 0 && /* @__PURE__ */ jsx(
24238
- Virtuoso,
24459
+ VirtualScroll,
24239
24460
  {
24240
24461
  style: { height: listHeight },
24241
24462
  data: displayedNodes,
@@ -24330,7 +24551,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24330
24551
  );
24331
24552
  const renderer = (_b = item.render) != null ? _b : renderOption;
24332
24553
  if (!renderer) {
24333
- return /* @__PURE__ */ jsx(React74.Fragment, { children: optionNode }, item.key);
24554
+ return /* @__PURE__ */ jsx(React76.Fragment, { children: optionNode }, item.key);
24334
24555
  }
24335
24556
  const rendered = renderer({
24336
24557
  item,
@@ -24341,7 +24562,7 @@ var ShadcnTreeSelectVariant = React74.forwardRef(function ShadcnTreeSelectVarian
24341
24562
  if (!item.disabled) handleToggleValue(item);
24342
24563
  }
24343
24564
  });
24344
- return /* @__PURE__ */ jsx(React74.Fragment, { children: rendered }, item.key);
24565
+ return /* @__PURE__ */ jsx(React76.Fragment, { children: rendered }, item.key);
24345
24566
  }
24346
24567
  }
24347
24568
  )
@@ -24458,62 +24679,28 @@ var treeselect_default = ShadcnTreeSelectVariant;
24458
24679
  // src/variants/core/treeselect.tsx
24459
24680
  var treeselectModule = {
24460
24681
  variant: "treeselect",
24461
- Variant: treeselect_default
24682
+ Variant: treeselect_default,
24683
+ // Layout defaults for this variant
24684
+ defaults: {
24685
+ layout: {
24686
+ labelPlacement: "top",
24687
+ sublabelPlacement: "right",
24688
+ descriptionPlacement: "below",
24689
+ helpTextPlacement: "below",
24690
+ errorTextPlacement: "below",
24691
+ inline: false,
24692
+ fullWidth: true,
24693
+ defaultSize: "md",
24694
+ defaultDensity: "comfortable"
24695
+ }
24696
+ },
24697
+ meta: {
24698
+ label: "TreeSelect",
24699
+ description: "Hierarchical tree selection dropdown with collapsible folders and node tags.",
24700
+ tags: ["tree", "select", "hierarchical", "dropdown", "multiselect"]
24701
+ }
24462
24702
  };
24463
24703
  var treeselect_default2 = treeselectModule;
24464
- function ScrollArea({
24465
- className,
24466
- children,
24467
- ...props
24468
- }) {
24469
- return /* @__PURE__ */ jsxs(
24470
- ScrollAreaPrimitive.Root,
24471
- {
24472
- "data-slot": "scroll-area",
24473
- className: cn("relative", className),
24474
- ...props,
24475
- children: [
24476
- /* @__PURE__ */ jsx(
24477
- ScrollAreaPrimitive.Viewport,
24478
- {
24479
- "data-slot": "scroll-area-viewport",
24480
- className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
24481
- children
24482
- }
24483
- ),
24484
- /* @__PURE__ */ jsx(ScrollBar, {}),
24485
- /* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
24486
- ]
24487
- }
24488
- );
24489
- }
24490
- function ScrollBar({
24491
- className,
24492
- orientation = "vertical",
24493
- ...props
24494
- }) {
24495
- return /* @__PURE__ */ jsx(
24496
- ScrollAreaPrimitive.ScrollAreaScrollbar,
24497
- {
24498
- "data-slot": "scroll-area-scrollbar",
24499
- orientation,
24500
- className: cn(
24501
- "flex touch-none p-px transition-colors select-none",
24502
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
24503
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
24504
- className
24505
- ),
24506
- ...props,
24507
- children: /* @__PURE__ */ jsx(
24508
- ScrollAreaPrimitive.ScrollAreaThumb,
24509
- {
24510
- "data-slot": "scroll-area-thumb",
24511
- className: "bg-border relative flex-1 rounded-full"
24512
- }
24513
- )
24514
- }
24515
- );
24516
- }
24517
24704
  function fileId() {
24518
24705
  return `file_${Math.random().toString(36).slice(2)}`;
24519
24706
  }
@@ -24666,8 +24853,8 @@ function mergeHandlers(a3, b2) {
24666
24853
  };
24667
24854
  }
24668
24855
  var FileThumbnail = ({ item }) => {
24669
- const [preview, setPreview] = React74.useState(null);
24670
- React74.useEffect(() => {
24856
+ const [preview, setPreview] = React76.useState(null);
24857
+ React76.useEffect(() => {
24671
24858
  var _a;
24672
24859
  const isImage2 = ((_a = item.type) == null ? void 0 : _a.startsWith("image/")) || item.name.match(/\.(jpg|jpeg|png|gif|webp)$/i);
24673
24860
  if (!isImage2) return;
@@ -24689,7 +24876,7 @@ var FileThumbnail = ({ item }) => {
24689
24876
  }
24690
24877
  ) : /* @__PURE__ */ jsx(File2, { className: "h-4 w-4 text-muted-foreground/50" }) });
24691
24878
  };
24692
- var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, ref) {
24879
+ var ShadcnFileVariant = React76.forwardRef(function ShadcnFileVariant2(props, ref) {
24693
24880
  const {
24694
24881
  value,
24695
24882
  onValue,
@@ -24743,18 +24930,18 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24743
24930
  } = props;
24744
24931
  const joinControls = mode === "default" ? joinControlsProp != null ? joinControlsProp : true : false;
24745
24932
  const extendBoxToControls = mode === "default" ? extendBoxToControlsProp != null ? extendBoxToControlsProp : true : false;
24746
- const items = React74.useMemo(() => {
24933
+ const items = React76.useMemo(() => {
24747
24934
  var _a;
24748
24935
  const raw = (_a = toArray2(value)) != null ? _a : [];
24749
24936
  return raw.map(normaliseFileLike);
24750
24937
  }, [value]);
24751
24938
  const isDisabled = Boolean(disabled || readOnly);
24752
- const [dragOver, setDragOver] = React74.useState(false);
24753
- const [selectedIds, setSelectedIds] = React74.useState(
24939
+ const [dragOver, setDragOver] = React76.useState(false);
24940
+ const [selectedIds, setSelectedIds] = React76.useState(
24754
24941
  () => /* @__PURE__ */ new Set()
24755
24942
  );
24756
- const [popoverOpen, setPopoverOpen] = React74.useState(false);
24757
- const fileInputRef = React74.useRef(null);
24943
+ const [popoverOpen, setPopoverOpen] = React76.useState(false);
24944
+ const fileInputRef = React76.useRef(null);
24758
24945
  const den = densityTokens(density);
24759
24946
  const heightCls = triggerHeight4(size);
24760
24947
  const chipHeightCls = chipHeight(size);
@@ -24763,7 +24950,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24763
24950
  const resolvedTrailingIcons = (trailingIcons == null ? void 0 : trailingIcons.length) ? trailingIcons : [];
24764
24951
  const hasExternalControls = !!leadingControl || !!trailingControl;
24765
24952
  const COLLAPSE_LIMIT = 2;
24766
- const emitChange = React74.useCallback(
24953
+ const emitChange = React76.useCallback(
24767
24954
  (nextItems, meta) => {
24768
24955
  var _a;
24769
24956
  const nextValues = nextItems.map(fileItemToValue);
@@ -24777,7 +24964,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24777
24964
  },
24778
24965
  [multiple, onValue]
24779
24966
  );
24780
- const handleAddItems = React74.useCallback(
24967
+ const handleAddItems = React76.useCallback(
24781
24968
  (incoming, from) => {
24782
24969
  if (isDisabled) return;
24783
24970
  let next = multiple ? [...items] : [];
@@ -24814,7 +25001,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24814
25001
  onFilesAdded
24815
25002
  ]
24816
25003
  );
24817
- const handleRemove = React74.useCallback(
25004
+ const handleRemove = React76.useCallback(
24818
25005
  (id) => {
24819
25006
  const next = items.filter((i3) => i3.id !== id);
24820
25007
  emitChange(next, { action: "remove", id });
@@ -24826,7 +25013,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24826
25013
  },
24827
25014
  [emitChange, items, selectedIds]
24828
25015
  );
24829
- const handleBulkRemove = React74.useCallback(() => {
25016
+ const handleBulkRemove = React76.useCallback(() => {
24830
25017
  const next = items.filter((i3) => !selectedIds.has(i3.id));
24831
25018
  emitChange(next, {
24832
25019
  action: "bulk-remove",
@@ -24834,7 +25021,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24834
25021
  });
24835
25022
  setSelectedIds(/* @__PURE__ */ new Set());
24836
25023
  }, [emitChange, items, selectedIds]);
24837
- const openPicker = React74.useCallback(async () => {
25024
+ const openPicker = React76.useCallback(async () => {
24838
25025
  var _a;
24839
25026
  if (isDisabled) return;
24840
25027
  let resolvedLoader = customLoader != null ? customLoader : custom && getPaletteUtil("customLoader");
@@ -24873,14 +25060,14 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24873
25060
  mergeMode,
24874
25061
  multiple
24875
25062
  ]);
24876
- const onDragOver = React74.useCallback(
25063
+ const onDragOver = React76.useCallback(
24877
25064
  (e4) => {
24878
25065
  e4.preventDefault();
24879
25066
  if (!isDisabled) setDragOver(true);
24880
25067
  },
24881
25068
  [isDisabled]
24882
25069
  );
24883
- const onDrop = React74.useCallback(
25070
+ const onDrop = React76.useCallback(
24884
25071
  (e4) => {
24885
25072
  var _a;
24886
25073
  e4.preventDefault();
@@ -24898,15 +25085,15 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
24898
25085
  }
24899
25086
  e4.target.value = "";
24900
25087
  };
24901
- const FileChip = React74.useCallback(
25088
+ const FileChip = React76.useCallback(
24902
25089
  ({
24903
25090
  item,
24904
25091
  condensed = false
24905
25092
  }) => {
24906
25093
  const name = formatFileName ? formatFileName(item) : item.name;
24907
- const [preview, setPreview] = React74.useState(null);
24908
- const [isOpen, setIsOpen] = React74.useState(false);
24909
- React74.useEffect(() => {
25094
+ const [preview, setPreview] = React76.useState(null);
25095
+ const [isOpen, setIsOpen] = React76.useState(false);
25096
+ React76.useEffect(() => {
24910
25097
  var _a;
24911
25098
  const isImage2 = ((_a = item.type) == null ? void 0 : _a.startsWith("image/")) || item.name.match(/\.(jpg|jpeg|png|gif|webp)$/i);
24912
25099
  if (!isImage2) {
@@ -25013,7 +25200,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
25013
25200
  ]
25014
25201
  );
25015
25202
  const selectedCount = items.length;
25016
- const resolveButtonTriggerElement = React74.useCallback(() => {
25203
+ const resolveButtonTriggerElement = React76.useCallback(() => {
25017
25204
  const ctx = {
25018
25205
  open: popoverOpen,
25019
25206
  items,
@@ -25043,7 +25230,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
25043
25230
  );
25044
25231
  const child = el.props.children;
25045
25232
  if (selectedBadgePlacement === "end") {
25046
- return React74.cloneElement(el, {
25233
+ return React76.cloneElement(el, {
25047
25234
  className: nextClass,
25048
25235
  children: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
25049
25236
  /* @__PURE__ */ jsx("span", { className: "min-w-0", children: child }),
@@ -25051,7 +25238,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
25051
25238
  ] })
25052
25239
  });
25053
25240
  }
25054
- return React74.cloneElement(el, {
25241
+ return React76.cloneElement(el, {
25055
25242
  className: nextClass,
25056
25243
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
25057
25244
  child,
@@ -25059,7 +25246,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
25059
25246
  ] })
25060
25247
  });
25061
25248
  };
25062
- const withDnD = (el) => React74.cloneElement(el, {
25249
+ const withDnD = (el) => React76.cloneElement(el, {
25063
25250
  onDragOver: mergeHandlers(
25064
25251
  el.props.onDragOver,
25065
25252
  onDragOver
@@ -25070,7 +25257,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
25070
25257
  ),
25071
25258
  onDrop: mergeHandlers(el.props.onDrop, onDrop)
25072
25259
  });
25073
- if (React74.isValidElement(rawNode)) {
25260
+ if (React76.isValidElement(rawNode)) {
25074
25261
  return withDnD(injectBadgeIntoElement(rawNode));
25075
25262
  }
25076
25263
  const fallback = /* @__PURE__ */ jsxs(
@@ -25126,7 +25313,7 @@ var ShadcnFileVariant = React74.forwardRef(function ShadcnFileVariant2(props, re
25126
25313
  selectedCount,
25127
25314
  triggerClassName
25128
25315
  ]);
25129
- const TriggerRegion = React74.useMemo(() => {
25316
+ const TriggerRegion = React76.useMemo(() => {
25130
25317
  if (showDropArea) {
25131
25318
  if (renderDropArea)
25132
25319
  return renderDropArea({ openPicker, isDragging: dragOver });
@@ -25586,7 +25773,7 @@ var toggleVariants = cva(
25586
25773
  }
25587
25774
  }
25588
25775
  );
25589
- var ToggleGroupContext = React74.createContext({
25776
+ var ToggleGroupContext = React76.createContext({
25590
25777
  size: "default",
25591
25778
  variant: "default",
25592
25779
  spacing: 0
@@ -25623,7 +25810,7 @@ function ToggleGroupItem({
25623
25810
  size,
25624
25811
  ...props
25625
25812
  }) {
25626
- const context = React74.useContext(ToggleGroupContext);
25813
+ const context = React76.useContext(ToggleGroupContext);
25627
25814
  return /* @__PURE__ */ jsx(
25628
25815
  ToggleGroupPrimitive.Item,
25629
25816
  {
@@ -25814,7 +26001,7 @@ function normalizeOption(input, {
25814
26001
  raw: input
25815
26002
  };
25816
26003
  }
25817
- var ShadcnToggleVariant3 = React74.forwardRef(function ShadcnToggleVariant4(props, ref) {
26004
+ var ShadcnToggleVariant3 = React76.forwardRef(function ShadcnToggleVariant4(props, ref) {
25818
26005
  const {
25819
26006
  value,
25820
26007
  onValue,
@@ -25851,7 +26038,7 @@ var ShadcnToggleVariant3 = React74.forwardRef(function ShadcnToggleVariant4(prop
25851
26038
  const isDisabled = Boolean(disabled || readOnly);
25852
26039
  const toggleSize = mapSizeToToggleSize(size);
25853
26040
  const currentValue = normalizeValue(value, multiple);
25854
- const normalizedOptions = React74.useMemo(
26041
+ const normalizedOptions = React76.useMemo(
25855
26042
  () => options.map(
25856
26043
  (opt) => normalizeOption(
25857
26044
  opt,
@@ -25891,7 +26078,7 @@ var ShadcnToggleVariant3 = React74.forwardRef(function ShadcnToggleVariant4(prop
25891
26078
  autoCap
25892
26079
  ]
25893
26080
  );
25894
- const handleChange = React74.useCallback(
26081
+ const handleChange = React76.useCallback(
25895
26082
  (val) => {
25896
26083
  if (readOnly) return;
25897
26084
  if (!onValue) return;
@@ -25928,7 +26115,7 @@ var ShadcnToggleVariant3 = React74.forwardRef(function ShadcnToggleVariant4(prop
25928
26115
  fullWidth && layout === "vertical" && "[&>*]:w-full",
25929
26116
  className
25930
26117
  );
25931
- const groupStyle = React74.useMemo(() => {
26118
+ const groupStyle = React76.useMemo(() => {
25932
26119
  const style = {};
25933
26120
  if (layout === "grid") {
25934
26121
  style.gridTemplateColumns = `repeat(${gridCols}, minmax(0, 1fr))`;
@@ -26069,29 +26256,29 @@ function ShadcnEditorVariant(props) {
26069
26256
  theme = "auto",
26070
26257
  themeTarget = "nearest"
26071
26258
  } = props;
26072
- const mountRef = React74.useRef(null);
26073
- const editorRef = React74.useRef(null);
26074
- const formatRef = React74.useRef(format2);
26075
- const onValueRef = React74.useRef(onValue);
26076
- const syncingRef = React74.useRef(false);
26077
- const loadedRef = React74.useRef(false);
26078
- const lastContentRef = React74.useRef(value != null ? value : "");
26079
- const [autoDark, setAutoDark] = React74.useState(false);
26259
+ const mountRef = React76.useRef(null);
26260
+ const editorRef = React76.useRef(null);
26261
+ const formatRef = React76.useRef(format2);
26262
+ const onValueRef = React76.useRef(onValue);
26263
+ const syncingRef = React76.useRef(false);
26264
+ const loadedRef = React76.useRef(false);
26265
+ const lastContentRef = React76.useRef(value != null ? value : "");
26266
+ const [autoDark, setAutoDark] = React76.useState(false);
26080
26267
  formatRef.current = format2;
26081
26268
  onValueRef.current = onValue;
26082
26269
  if (value !== void 0) lastContentRef.current = value;
26083
26270
  const effectiveReadOnly = Boolean(disabled || readOnly);
26084
26271
  const effectiveTheme = theme === "auto" ? autoDark ? "dark" : "light" : theme;
26085
- const readContent = React74.useCallback((ed) => {
26272
+ const readContent = React76.useCallback((ed) => {
26086
26273
  var _a, _b;
26087
26274
  return formatRef.current === "markdown" ? (_a = ed.getMarkdown()) != null ? _a : "" : (_b = ed.getHTML()) != null ? _b : "";
26088
26275
  }, []);
26089
- const emit = React74.useCallback((next) => {
26276
+ const emit = React76.useCallback((next) => {
26090
26277
  var _a;
26091
26278
  const detail = { source: "user", raw: next };
26092
26279
  (_a = onValueRef.current) == null ? void 0 : _a.call(onValueRef, next, detail);
26093
26280
  }, []);
26094
- const structuralKey = React74.useMemo(() => {
26281
+ const structuralKey = React76.useMemo(() => {
26095
26282
  const hideModeSwitch = toolbar === "none" || pastePlainText;
26096
26283
  return JSON.stringify({
26097
26284
  toolbar,
@@ -26100,7 +26287,7 @@ function ShadcnEditorVariant(props) {
26100
26287
  effectiveTheme
26101
26288
  });
26102
26289
  }, [toolbar, useCommandShortcut, pastePlainText, effectiveTheme]);
26103
- React74.useEffect(() => {
26290
+ React76.useEffect(() => {
26104
26291
  if (theme !== "auto") return;
26105
26292
  if (typeof document === "undefined") return;
26106
26293
  const host = mountRef.current;
@@ -26125,7 +26312,7 @@ function ShadcnEditorVariant(props) {
26125
26312
  }
26126
26313
  return () => observer.disconnect();
26127
26314
  }, [theme, themeTarget]);
26128
- React74.useEffect(() => {
26315
+ React76.useEffect(() => {
26129
26316
  var _a;
26130
26317
  const el = mountRef.current;
26131
26318
  if (!el) return;
@@ -26196,29 +26383,29 @@ function ShadcnEditorVariant(props) {
26196
26383
  editorRef.current = null;
26197
26384
  };
26198
26385
  }, [structuralKey]);
26199
- React74.useEffect(() => {
26386
+ React76.useEffect(() => {
26200
26387
  const ed = editorRef.current;
26201
26388
  if (!ed) return;
26202
26389
  if (typeof ed.setHeight === "function") ed.setHeight(height);
26203
26390
  }, [height]);
26204
- React74.useEffect(() => {
26391
+ React76.useEffect(() => {
26205
26392
  const ed = editorRef.current;
26206
26393
  if (!ed) return;
26207
26394
  if (typeof ed.setPlaceholder === "function")
26208
26395
  ed.setPlaceholder(placeholder);
26209
26396
  }, [placeholder]);
26210
- React74.useEffect(() => {
26397
+ React76.useEffect(() => {
26211
26398
  const ed = editorRef.current;
26212
26399
  if (!ed) return;
26213
26400
  if (typeof ed.changeMode === "function") ed.changeMode(editType);
26214
26401
  }, [editType]);
26215
- React74.useEffect(() => {
26402
+ React76.useEffect(() => {
26216
26403
  const ed = editorRef.current;
26217
26404
  if (!ed) return;
26218
26405
  if (typeof ed.changePreviewStyle === "function")
26219
26406
  ed.changePreviewStyle(previewStyle);
26220
26407
  }, [previewStyle]);
26221
- React74.useEffect(() => {
26408
+ React76.useEffect(() => {
26222
26409
  var _a, _b, _c, _d;
26223
26410
  const ed = editorRef.current;
26224
26411
  if (!ed) return;
@@ -26236,7 +26423,7 @@ function ShadcnEditorVariant(props) {
26236
26423
  syncingRef.current = false;
26237
26424
  });
26238
26425
  }, [value, format2]);
26239
- React74.useEffect(() => {
26426
+ React76.useEffect(() => {
26240
26427
  if (!pastePlainText) return;
26241
26428
  const host = mountRef.current;
26242
26429
  if (!host) return;
@@ -26720,10 +26907,10 @@ function JsonEditorMain(props) {
26720
26907
  className,
26721
26908
  contentClassName
26722
26909
  } = props;
26723
- const directChildPaths = React74.useMemo(() => {
26910
+ const directChildPaths = React76.useMemo(() => {
26724
26911
  return getDirectChildPaths(route, allPaths);
26725
26912
  }, [route, allPaths]);
26726
- const rows = React74.useMemo(() => {
26913
+ const rows = React76.useMemo(() => {
26727
26914
  return resolveLayoutForParent({
26728
26915
  parent: route,
26729
26916
  childPaths: directChildPaths,
@@ -26731,7 +26918,7 @@ function JsonEditorMain(props) {
26731
26918
  filters
26732
26919
  });
26733
26920
  }, [route, directChildPaths, layout, filters]);
26734
- const effectiveRows = React74.useMemo(() => {
26921
+ const effectiveRows = React76.useMemo(() => {
26735
26922
  const hasAny = rows.some((r5) => {
26736
26923
  var _a;
26737
26924
  return (_a = r5.fields) == null ? void 0 : _a.length;
@@ -27907,7 +28094,7 @@ function JsonEditorRawPanel(props) {
27907
28094
  const canEditRaw = (_b = permissions == null ? void 0 : permissions.canEditRaw) != null ? _b : false;
27908
28095
  if (!canViewRaw) return null;
27909
28096
  const viewOnly = !!disabled || !!readOnly || !canEditRaw;
27910
- const onCopy = React74.useCallback(async () => {
28097
+ const onCopy = React76.useCallback(async () => {
27911
28098
  try {
27912
28099
  await navigator.clipboard.writeText(
27913
28100
  JSON.stringify(root != null ? root : {}, null, 2)
@@ -28001,17 +28188,17 @@ function collectAllPaths(value, prefix = "", out = []) {
28001
28188
  }
28002
28189
  function useControllable(opts) {
28003
28190
  const { value, defaultValue, onChange } = opts;
28004
- const [inner, setInner] = React74.useState(defaultValue);
28191
+ const [inner, setInner] = React76.useState(defaultValue);
28005
28192
  const isControlled = value !== void 0;
28006
28193
  const state = isControlled ? value : inner;
28007
- const setState = React74.useCallback(
28194
+ const setState = React76.useCallback(
28008
28195
  (next) => {
28009
28196
  if (!isControlled) setInner(next);
28010
28197
  onChange == null ? void 0 : onChange(next);
28011
28198
  },
28012
28199
  [isControlled, onChange]
28013
28200
  );
28014
- React74.useEffect(() => {
28201
+ React76.useEffect(() => {
28015
28202
  if (!isControlled) return;
28016
28203
  setInner(value);
28017
28204
  }, [isControlled]);
@@ -28026,7 +28213,7 @@ function callCallbacks(callbacks, action, nextRoot, ctx) {
28026
28213
  const meta = { action, route: ctx.route, path, parent, key };
28027
28214
  (_b = callbacks.onEdit) == null ? void 0 : _b.call(callbacks, nextRoot, meta);
28028
28215
  }
28029
- var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28216
+ var JsonEditor = React76.forwardRef(function JsonEditorEditor(props, ref) {
28030
28217
  var _a, _b;
28031
28218
  const {
28032
28219
  root,
@@ -28056,16 +28243,16 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28056
28243
  } = props;
28057
28244
  const canViewRaw = (_a = permissions == null ? void 0 : permissions.canViewRaw) != null ? _a : true;
28058
28245
  const canEditRaw = (_b = permissions == null ? void 0 : permissions.canEditRaw) != null ? _b : false;
28059
- const routes = React74.useMemo(
28246
+ const routes = React76.useMemo(
28060
28247
  () => buildJsonRoutes(root, void 0, filters),
28061
28248
  [root, filters]
28062
28249
  );
28063
- const allPaths = React74.useMemo(() => {
28250
+ const allPaths = React76.useMemo(() => {
28064
28251
  const list = collectAllPaths(root, "", []);
28065
28252
  const seen = /* @__PURE__ */ new Set();
28066
28253
  return list.filter((p2) => seen.has(p2) ? false : (seen.add(p2), true));
28067
28254
  }, [root]);
28068
- const computedInitialRoute = React74.useMemo(() => {
28255
+ const computedInitialRoute = React76.useMemo(() => {
28069
28256
  var _a2, _b2;
28070
28257
  const explicit = routeProp != null ? routeProp : defaultRoute;
28071
28258
  if (explicit !== void 0) return explicit;
@@ -28081,25 +28268,25 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28081
28268
  defaultValue: defaultViewMode,
28082
28269
  onChange: onViewModeChange
28083
28270
  });
28084
- React74.useEffect(() => {
28271
+ React76.useEffect(() => {
28085
28272
  if (!canViewRaw && (viewMode === "raw" || viewMode === "split")) {
28086
28273
  setViewMode("visual");
28087
28274
  }
28088
28275
  }, [canViewRaw, setViewMode, viewMode]);
28089
- const fileInputRef = React74.useRef(null);
28090
- const contentRef = React74.useRef(null);
28091
- const [rawWidth, setRawWidth] = React74.useState(420);
28092
- const [isResizing, setIsResizing] = React74.useState(false);
28093
- const startXRef = React74.useRef(0);
28094
- const startWRef = React74.useRef(0);
28095
- const clampRawWidth = React74.useCallback((w2) => {
28276
+ const fileInputRef = React76.useRef(null);
28277
+ const contentRef = React76.useRef(null);
28278
+ const [rawWidth, setRawWidth] = React76.useState(420);
28279
+ const [isResizing, setIsResizing] = React76.useState(false);
28280
+ const startXRef = React76.useRef(0);
28281
+ const startWRef = React76.useRef(0);
28282
+ const clampRawWidth = React76.useCallback((w2) => {
28096
28283
  var _a2, _b2;
28097
28284
  const containerW = (_b2 = (_a2 = contentRef.current) == null ? void 0 : _a2.getBoundingClientRect().width) != null ? _b2 : 0;
28098
28285
  const min2 = 260;
28099
28286
  const max2 = containerW ? Math.max(min2, Math.min(900, containerW - 240)) : 900;
28100
28287
  return Math.max(min2, Math.min(max2, w2));
28101
28288
  }, []);
28102
- const onResizePointerDown = React74.useCallback(
28289
+ const onResizePointerDown = React76.useCallback(
28103
28290
  (e4) => {
28104
28291
  if (e4.button !== 0 && e4.pointerType === "mouse") return;
28105
28292
  setIsResizing(true);
@@ -28111,7 +28298,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28111
28298
  },
28112
28299
  [rawWidth]
28113
28300
  );
28114
- const onResizePointerMove = React74.useCallback(
28301
+ const onResizePointerMove = React76.useCallback(
28115
28302
  (e4) => {
28116
28303
  if (!isResizing) return;
28117
28304
  const dx = e4.clientX - startXRef.current;
@@ -28120,7 +28307,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28120
28307
  },
28121
28308
  [clampRawWidth, isResizing]
28122
28309
  );
28123
- const stopResizing = React74.useCallback(
28310
+ const stopResizing = React76.useCallback(
28124
28311
  (e4) => {
28125
28312
  if (!isResizing) return;
28126
28313
  setIsResizing(false);
@@ -28131,14 +28318,14 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28131
28318
  },
28132
28319
  [isResizing]
28133
28320
  );
28134
- const loadFile = React74.useCallback(() => {
28321
+ const loadFile = React76.useCallback(() => {
28135
28322
  var _a2;
28136
28323
  (_a2 = fileInputRef.current) == null ? void 0 : _a2.click();
28137
28324
  }, []);
28138
- const close = React74.useCallback(() => {
28325
+ const close = React76.useCallback(() => {
28139
28326
  onClose == null ? void 0 : onClose();
28140
28327
  }, [onClose]);
28141
- const onFilePicked = React74.useCallback(
28328
+ const onFilePicked = React76.useCallback(
28142
28329
  async (e4) => {
28143
28330
  var _a2;
28144
28331
  const file = (_a2 = e4.target.files) == null ? void 0 : _a2[0];
@@ -28158,7 +28345,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28158
28345
  },
28159
28346
  [callbacks, onRoot, route]
28160
28347
  );
28161
- const breadcrumb = React74.useMemo(() => {
28348
+ const breadcrumb = React76.useMemo(() => {
28162
28349
  const segs = splitPath(route);
28163
28350
  const parts = [];
28164
28351
  const rootNode = {
@@ -28185,7 +28372,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28185
28372
  }) : prettifyLabel2(s3);
28186
28373
  parts.push({ path: acc, label });
28187
28374
  }
28188
- return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 text-sm text-muted-foreground", children: parts.map((p2, idx) => /* @__PURE__ */ jsxs(React74.Fragment, { children: [
28375
+ return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 text-sm text-muted-foreground", children: parts.map((p2, idx) => /* @__PURE__ */ jsxs(React76.Fragment, { children: [
28189
28376
  /* @__PURE__ */ jsx(
28190
28377
  Button2,
28191
28378
  {
@@ -28200,7 +28387,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28200
28387
  idx < parts.length - 1 ? /* @__PURE__ */ jsx("span", { className: "opacity-60", children: "/" }) : null
28201
28388
  ] }, p2.path || "root")) });
28202
28389
  }, [route, routes, renderRouteLabel, setRoute]);
28203
- const routeTitle = React74.useMemo(() => {
28390
+ const routeTitle = React76.useMemo(() => {
28204
28391
  if (!route) return "Config.json";
28205
28392
  const key = lastSegment(route);
28206
28393
  if (renderRouteLabel) {
@@ -28216,7 +28403,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28216
28403
  }
28217
28404
  return prettifyLabel2(key);
28218
28405
  }, [route, renderRouteLabel]);
28219
- const viewControls = React74.useMemo(() => {
28406
+ const viewControls = React76.useMemo(() => {
28220
28407
  return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 rounded-md border p-1", children: [
28221
28408
  /* @__PURE__ */ jsxs(
28222
28409
  Button2,
@@ -28259,7 +28446,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28259
28446
  ) : null
28260
28447
  ] });
28261
28448
  }, [canViewRaw, setViewMode, viewMode]);
28262
- const header = React74.useMemo(() => {
28449
+ const header = React76.useMemo(() => {
28263
28450
  const ctx = {
28264
28451
  title: /* @__PURE__ */ jsx("div", { className: "min-w-0 flex items-center gap-2", children: /* @__PURE__ */ jsx("div", { className: "truncate font-medium", children: headerTitle != null ? headerTitle : "JSON Editor" }) }),
28265
28452
  viewControls,
@@ -28311,7 +28498,7 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28311
28498
  showClose,
28312
28499
  viewControls
28313
28500
  ]);
28314
- const onVisualRoot = React74.useCallback(
28501
+ const onVisualRoot = React76.useCallback(
28315
28502
  (nextRoot, detail) => {
28316
28503
  onRoot(nextRoot, detail);
28317
28504
  const d = detail;
@@ -28323,14 +28510,14 @@ var JsonEditor = React74.forwardRef(function JsonEditorEditor(props, ref) {
28323
28510
  },
28324
28511
  [callbacks, onRoot, route]
28325
28512
  );
28326
- const onRawRoot = React74.useCallback(
28513
+ const onRawRoot = React76.useCallback(
28327
28514
  (nextRoot, detail) => {
28328
28515
  onRoot(nextRoot, detail);
28329
28516
  callCallbacks(callbacks, "edit-raw", nextRoot, { route, path: "" });
28330
28517
  },
28331
28518
  [callbacks, onRoot, route]
28332
28519
  );
28333
- React74.useImperativeHandle(
28520
+ React76.useImperativeHandle(
28334
28521
  ref,
28335
28522
  () => ({
28336
28523
  loadFile,
@@ -28452,7 +28639,7 @@ function triggerHeightCls(size) {
28452
28639
  return "h-9 text-sm";
28453
28640
  }
28454
28641
  }
28455
- var ShadcnJsonEditorVariant = React74.forwardRef(function ShadcnJsonEditorVariant2(props, ref) {
28642
+ var ShadcnJsonEditorVariant = React76.forwardRef(function ShadcnJsonEditorVariant2(props, ref) {
28456
28643
  var _a;
28457
28644
  const {
28458
28645
  mode = "popover",
@@ -28499,15 +28686,15 @@ var ShadcnJsonEditorVariant = React74.forwardRef(function ShadcnJsonEditorVarian
28499
28686
  extendBoxToControls = true,
28500
28687
  triggerClassName
28501
28688
  } = props;
28502
- const editorRef = React74.useRef(null);
28503
- const root = React74.useMemo(() => {
28689
+ const editorRef = React76.useRef(null);
28690
+ const root = React76.useMemo(() => {
28504
28691
  if ("root" in props) return props.root;
28505
28692
  const v2 = props.value;
28506
28693
  if (isPlainObject5(v2)) return v2;
28507
28694
  if (v2 == null) return {};
28508
28695
  return {};
28509
28696
  }, [props]);
28510
- const emitRoot = React74.useCallback(
28697
+ const emitRoot = React76.useCallback(
28511
28698
  (nextRoot, detail) => {
28512
28699
  var _a2, _b;
28513
28700
  if ("onRoot" in props) {
@@ -28518,9 +28705,9 @@ var ShadcnJsonEditorVariant = React74.forwardRef(function ShadcnJsonEditorVarian
28518
28705
  },
28519
28706
  [props]
28520
28707
  );
28521
- const [openInner, setOpenInner] = React74.useState(false);
28708
+ const [openInner, setOpenInner] = React76.useState(false);
28522
28709
  const open = openProp != null ? openProp : openInner;
28523
- const setOpen = React74.useCallback(
28710
+ const setOpen = React76.useCallback(
28524
28711
  (next) => {
28525
28712
  if (openProp === void 0) setOpenInner(next);
28526
28713
  onOpenChange == null ? void 0 : onOpenChange(next);
@@ -28528,11 +28715,11 @@ var ShadcnJsonEditorVariant = React74.forwardRef(function ShadcnJsonEditorVarian
28528
28715
  },
28529
28716
  [openProp, onOpenChange, onClose]
28530
28717
  );
28531
- const close = React74.useCallback(() => setOpen(false), [setOpen]);
28532
- const doOpen = React74.useCallback(() => setOpen(true), [setOpen]);
28533
- const toggle = React74.useCallback(() => setOpen(!open), [setOpen, open]);
28534
- const [expanded, setExpanded] = React74.useState();
28535
- React74.useImperativeHandle(
28718
+ const close = React76.useCallback(() => setOpen(false), [setOpen]);
28719
+ const doOpen = React76.useCallback(() => setOpen(true), [setOpen]);
28720
+ const toggle = React76.useCallback(() => setOpen(!open), [setOpen, open]);
28721
+ const [expanded, setExpanded] = React76.useState();
28722
+ React76.useImperativeHandle(
28536
28723
  ref,
28537
28724
  () => ({
28538
28725
  open: doOpen,
@@ -28978,7 +29165,7 @@ var defaultHost = {
28978
29165
  }
28979
29166
  };
28980
29167
 
28981
- // src/presets/shadcn-variants/lister/patch.ts
29168
+ // src/presets/shadcn/variants/lister/patch.ts
28982
29169
  function makeInlineDef(args) {
28983
29170
  const mapping = {
28984
29171
  optionValue: (raw, ctx) => pick(raw, args.optionValue, ctx),
@@ -29089,7 +29276,7 @@ function normalizeIconifyInput(icon) {
29089
29276
  }
29090
29277
  function OptionIcon(props) {
29091
29278
  const { icon, className } = props;
29092
- if (React74.isValidElement(icon)) {
29279
+ if (React76.isValidElement(icon)) {
29093
29280
  return /* @__PURE__ */ jsx("span", { className: cn("shrink-0", className), children: icon });
29094
29281
  }
29095
29282
  if (isSvgSnippetString(icon)) {
@@ -29142,7 +29329,7 @@ function OptionList(props) {
29142
29329
  const options = (_a = selectors.visibleOptions(id)) != null ? _a : [];
29143
29330
  const draft = s3 == null ? void 0 : s3.draftValue;
29144
29331
  const isMulti = (s3 == null ? void 0 : s3.mode) === "multiple";
29145
- const isSelected = React74.useCallback(
29332
+ const isSelected = React76.useCallback(
29146
29333
  (value) => {
29147
29334
  if (isMulti) return Array.isArray(draft) && draft.includes(value);
29148
29335
  return draft === value;
@@ -29150,19 +29337,19 @@ function OptionList(props) {
29150
29337
  [draft, isMulti]
29151
29338
  );
29152
29339
  if (s3 == null ? void 0 : s3.errorCode) {
29153
- return /* @__PURE__ */ jsx("div", { className: cn("h-full min-h-0 overflow-y-auto", className), children: /* @__PURE__ */ jsxs("div", { className: "px-3 py-4 text-sm opacity-70", children: [
29340
+ return /* @__PURE__ */ jsx(ScrollArea, { className: cn("h-full min-h-0", className), children: /* @__PURE__ */ jsxs("div", { className: "px-3 py-4 text-sm opacity-70", children: [
29154
29341
  "Error: ",
29155
29342
  String(s3.errorCode)
29156
29343
  ] }) });
29157
29344
  }
29158
29345
  if ((s3 == null ? void 0 : s3.loading) && !((_b = s3 == null ? void 0 : s3.optionsList) == null ? void 0 : _b.length)) {
29159
- return /* @__PURE__ */ jsx("div", { className: cn("h-full min-h-0 overflow-y-auto", className), children: /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-sm opacity-70", children: "Loading\u2026" }) });
29346
+ return /* @__PURE__ */ jsx(ScrollArea, { className: cn("h-full min-h-0", className), children: /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-sm opacity-70", children: "Loading\u2026" }) });
29160
29347
  }
29161
29348
  if (!options.length) {
29162
- return /* @__PURE__ */ jsx("div", { className: cn("h-full min-h-0 overflow-y-auto", className), children: /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-sm opacity-70", children: "No results" }) });
29349
+ return /* @__PURE__ */ jsx(ScrollArea, { className: cn("h-full min-h-0", className), children: /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-sm opacity-70", children: "No results" }) });
29163
29350
  }
29164
29351
  return /* @__PURE__ */ jsx("div", { className: cn("h-full min-h-0 overflow-hidden", className), children: /* @__PURE__ */ jsx("div", { className: "h-full min-h-0 p-1", children: /* @__PURE__ */ jsx(
29165
- Virtuoso,
29352
+ VirtualScroll,
29166
29353
  {
29167
29354
  style: { height: "100%", minHeight: 0 },
29168
29355
  data: options,
@@ -29361,25 +29548,25 @@ function ListerInner(props) {
29361
29548
  panelClassName
29362
29549
  } = props;
29363
29550
  const { api, actions, store } = useLister();
29364
- const ownerKeyRef = React74.useRef(
29551
+ const ownerKeyRef = React76.useRef(
29365
29552
  (_a = openOptions == null ? void 0 : openOptions.ownerKey) != null ? _a : createRuntimeKey("lister_owner")
29366
29553
  );
29367
- React74.useEffect(() => {
29554
+ React76.useEffect(() => {
29368
29555
  const next = openOptions == null ? void 0 : openOptions.ownerKey;
29369
29556
  if (next) ownerKeyRef.current = next;
29370
29557
  }, [openOptions]);
29371
29558
  const session = findSessionByOwner(store, ownerKeyRef.current);
29372
29559
  const sessionId = session == null ? void 0 : session.sessionId;
29373
29560
  const isOpen = !!(session == null ? void 0 : session.isOpen);
29374
- const [selectedOptions, setSelectedOptions] = React74.useState(
29561
+ const [selectedOptions, setSelectedOptions] = React76.useState(
29375
29562
  null
29376
29563
  );
29377
- const openingRef = React74.useRef(false);
29564
+ const openingRef = React76.useRef(false);
29378
29565
  const mode = modeProp != null ? modeProp : "single";
29379
29566
  const confirm = mode === "multiple" ? true : !!confirmProp;
29380
29567
  const disabledTrigger = !!(disabled || readOnly);
29381
29568
  const hasValue = mode === "multiple" ? Array.isArray(value) && value.length > 0 : value != null && value !== "";
29382
- React74.useEffect(() => {
29569
+ React76.useEffect(() => {
29383
29570
  if (!hasValue) {
29384
29571
  setSelectedOptions(null);
29385
29572
  return;
@@ -29415,7 +29602,7 @@ function ListerInner(props) {
29415
29602
  alive = false;
29416
29603
  };
29417
29604
  }, [api, def, filters, mode, value, hasValue]);
29418
- const openSession = React74.useCallback(async () => {
29605
+ const openSession = React76.useCallback(async () => {
29419
29606
  var _a2, _b2;
29420
29607
  console.log(openingRef.current);
29421
29608
  if (disabledTrigger) return;
@@ -29456,7 +29643,7 @@ function ListerInner(props) {
29456
29643
  permissions,
29457
29644
  value
29458
29645
  ]);
29459
- const clear = React74.useCallback(() => {
29646
+ const clear = React76.useCallback(() => {
29460
29647
  if (disabledTrigger) return;
29461
29648
  onValue(void 0, {
29462
29649
  action: "clear",
@@ -29464,7 +29651,7 @@ function ListerInner(props) {
29464
29651
  });
29465
29652
  setSelectedOptions(null);
29466
29653
  }, [disabledTrigger, onValue]);
29467
- const display = React74.useMemo(() => {
29654
+ const display = React76.useMemo(() => {
29468
29655
  return buildLabelsFromOptions({
29469
29656
  mode,
29470
29657
  value,
@@ -29473,7 +29660,7 @@ function ListerInner(props) {
29473
29660
  maxItems: maxDisplayItems
29474
29661
  });
29475
29662
  }, [maxDisplayItems, mode, placeholder, selectedOptions, value]);
29476
- const triggerCtx = React74.useMemo(
29663
+ const triggerCtx = React76.useMemo(
29477
29664
  () => ({
29478
29665
  mode,
29479
29666
  value,
@@ -29599,7 +29786,7 @@ function ListerInner(props) {
29599
29786
  }
29600
29787
  );
29601
29788
  const userTriggerEl = renderTrigger ? renderTrigger(triggerCtx) : null;
29602
- const TriggerNode = renderTrigger && React74.isValidElement(userTriggerEl) ? React74.cloneElement(userTriggerEl, {
29789
+ const TriggerNode = renderTrigger && React76.isValidElement(userTriggerEl) ? React76.cloneElement(userTriggerEl, {
29603
29790
  className: cn(
29604
29791
  (_b = userTriggerEl.props) == null ? void 0 : _b.className,
29605
29792
  className
@@ -29825,11 +30012,11 @@ function ListerResolvedInner(props) {
29825
30012
  } = props;
29826
30013
  const isStandaloneInline = !def && endpoint != null;
29827
30014
  const shouldInferOptionValue = isStandaloneInline && optionValue === void 0;
29828
- const [resolvedOptionValue, setResolvedOptionValue] = React74.useState(() => optionValue != null ? optionValue : "id");
29829
- React74.useEffect(() => {
30015
+ const [resolvedOptionValue, setResolvedOptionValue] = React76.useState(() => optionValue != null ? optionValue : "id");
30016
+ React76.useEffect(() => {
29830
30017
  if (optionValue !== void 0) setResolvedOptionValue(optionValue);
29831
30018
  }, [optionValue]);
29832
- React74.useEffect(() => {
30019
+ React76.useEffect(() => {
29833
30020
  if (!shouldInferOptionValue) return;
29834
30021
  if (!endpoint) return;
29835
30022
  let alive = true;
@@ -29881,7 +30068,7 @@ function ListerResolvedInner(props) {
29881
30068
  const inlineExists = endpoint !== void 0 || method !== void 0 || buildRequest !== void 0 || selector !== void 0 || resolvedOptionValue !== void 0 || // ✅ KEEP THIS (your rule)
29882
30069
  optionLabel !== void 0 || optionIcon !== void 0 || optionDescription !== void 0 || optionDisabled !== void 0 || optionGroup !== void 0 || optionMeta !== void 0 || // ✅ include search override as "inline patch" signal too
29883
30070
  search !== void 0;
29884
- const finalDef = React74.useMemo(() => {
30071
+ const finalDef = React76.useMemo(() => {
29885
30072
  const baseDef = def;
29886
30073
  if (!inlineExists) return baseDef;
29887
30074
  if (!baseDef) {
@@ -29936,7 +30123,7 @@ function ListerResolvedInner(props) {
29936
30123
  optionMeta,
29937
30124
  search
29938
30125
  ]);
29939
- const openOptions = React74.useMemo(() => {
30126
+ const openOptions = React76.useMemo(() => {
29940
30127
  return {
29941
30128
  title,
29942
30129
  searchMode,
@@ -30190,24 +30377,24 @@ function IconPickerPanel(props) {
30190
30377
  maxRender = 2500
30191
30378
  } = props;
30192
30379
  const den = densityTokens2(density);
30193
- const groups = React74.useMemo(() => {
30380
+ const groups = React76.useMemo(() => {
30194
30381
  const base = groupsProp != null ? groupsProp : [];
30195
30382
  if (!(allowedGroupIds == null ? void 0 : allowedGroupIds.length)) return base;
30196
30383
  const allowed = base.filter((g2) => allowedGroupIds.includes(g2.id));
30197
30384
  return allowed.length ? allowed : base;
30198
30385
  }, [allowedGroupIds, groupsProp]);
30199
- const prefixes = React74.useMemo(() => {
30386
+ const prefixes = React76.useMemo(() => {
30200
30387
  return uniq2(groups.flatMap((g2) => g2.prefixes).filter(Boolean));
30201
30388
  }, [groups]);
30202
- const [selectedGroupId, setSelectedGroupId] = React74.useState(() => {
30389
+ const [selectedGroupId, setSelectedGroupId] = React76.useState(() => {
30203
30390
  var _a;
30204
30391
  return (_a = groups[0]) == null ? void 0 : _a.id;
30205
30392
  });
30206
- const [searchQuery, setSearchQuery] = React74.useState("");
30207
- const [loading, setLoading] = React74.useState(false);
30208
- const [error, setError] = React74.useState(null);
30209
- const [allIcons, setAllIcons] = React74.useState([]);
30210
- React74.useEffect(() => {
30393
+ const [searchQuery, setSearchQuery] = React76.useState("");
30394
+ const [loading, setLoading] = React76.useState(false);
30395
+ const [error, setError] = React76.useState(null);
30396
+ const [allIcons, setAllIcons] = React76.useState([]);
30397
+ React76.useEffect(() => {
30211
30398
  setSelectedGroupId((prev) => {
30212
30399
  var _a, _b;
30213
30400
  if (!prev) return (_a = groups[0]) == null ? void 0 : _a.id;
@@ -30215,7 +30402,7 @@ function IconPickerPanel(props) {
30215
30402
  return exists ? prev : (_b = groups[0]) == null ? void 0 : _b.id;
30216
30403
  });
30217
30404
  }, [groups]);
30218
- React74.useEffect(() => {
30405
+ React76.useEffect(() => {
30219
30406
  const controller = new AbortController();
30220
30407
  let mounted = true;
30221
30408
  const load = async () => {
@@ -30257,15 +30444,15 @@ function IconPickerPanel(props) {
30257
30444
  controller.abort();
30258
30445
  };
30259
30446
  }, [prefixes, url]);
30260
- const selectedGroup = React74.useMemo(
30447
+ const selectedGroup = React76.useMemo(
30261
30448
  () => groups.find((g2) => g2.id === selectedGroupId),
30262
30449
  [groups, selectedGroupId]
30263
30450
  );
30264
- const selectedGroupPrefixes = React74.useMemo(() => {
30451
+ const selectedGroupPrefixes = React76.useMemo(() => {
30265
30452
  if (!selectedGroup) return void 0;
30266
30453
  return new Set(selectedGroup.prefixes);
30267
30454
  }, [selectedGroup]);
30268
- const filteredIcons = React74.useMemo(() => {
30455
+ const filteredIcons = React76.useMemo(() => {
30269
30456
  const q2 = searchQuery.trim().toLowerCase();
30270
30457
  let list = allIcons;
30271
30458
  if (selectedGroupPrefixes) {
@@ -30281,7 +30468,7 @@ function IconPickerPanel(props) {
30281
30468
  }
30282
30469
  return list;
30283
30470
  }, [allIcons, searchQuery, selectedGroupPrefixes]);
30284
- const limitedIcons = React74.useMemo(() => {
30471
+ const limitedIcons = React76.useMemo(() => {
30285
30472
  if (filteredIcons.length <= maxRender) return filteredIcons;
30286
30473
  return filteredIcons.slice(0, maxRender);
30287
30474
  }, [filteredIcons, maxRender]);
@@ -30295,7 +30482,7 @@ function IconPickerPanel(props) {
30295
30482
  value.includes(iconName) ? value.filter((x2) => x2 !== iconName) : [...value, iconName]
30296
30483
  );
30297
30484
  };
30298
- const GridComponents = React74.useMemo(
30485
+ const GridComponents = React76.useMemo(
30299
30486
  () => ({
30300
30487
  List: (p2) => /* @__PURE__ */ jsx(
30301
30488
  "div",
@@ -30308,8 +30495,11 @@ function IconPickerPanel(props) {
30308
30495
  }),
30309
30496
  []
30310
30497
  );
30311
- const gridHeightStyle = React74.useMemo(
30312
- () => ({ height: "50vh" }),
30498
+ const gridHeightStyle = React76.useMemo(
30499
+ () => ({
30500
+ height: "320px",
30501
+ maxHeight: "calc(var(--radix-popper-available-height) - 140px)"
30502
+ }),
30313
30503
  []
30314
30504
  );
30315
30505
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
@@ -30366,7 +30556,7 @@ function IconPickerPanel(props) {
30366
30556
  " results (refine search to narrow)."
30367
30557
  ] }),
30368
30558
  /* @__PURE__ */ jsx(
30369
- VirtuosoGrid,
30559
+ VirtualScrollGrid,
30370
30560
  {
30371
30561
  style: gridHeightStyle,
30372
30562
  data: limitedIcons,
@@ -30433,7 +30623,7 @@ function IconPickerPanel(props) {
30433
30623
  )
30434
30624
  ] });
30435
30625
  }
30436
- var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, ref) {
30626
+ var ShadcnIconVariant = React76.forwardRef(function ShadcnIconVariant2(props, ref) {
30437
30627
  var _a, _b;
30438
30628
  const {
30439
30629
  value,
@@ -30485,12 +30675,12 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30485
30675
  const resolvedLeadingIcons = (leadingIcons == null ? void 0 : leadingIcons.length) ? leadingIcons : icon ? [icon] : [];
30486
30676
  const resolvedTrailingIcons = (trailingIcons == null ? void 0 : trailingIcons.length) ? trailingIcons : [];
30487
30677
  const hasExternalControls = !!leadingControl || !!trailingControl;
30488
- const [popoverOpen, setPopoverOpen] = React74.useState(false);
30489
- const selected = React74.useMemo(() => {
30678
+ const [popoverOpen, setPopoverOpen] = React76.useState(false);
30679
+ const selected = React76.useMemo(() => {
30490
30680
  if (multiple) return Array.isArray(value) ? value.filter(Boolean) : [];
30491
30681
  return typeof value === "string" && value ? [value] : [];
30492
30682
  }, [multiple, value]);
30493
- const emit = React74.useCallback(
30683
+ const emit = React76.useCallback(
30494
30684
  (nextArr, meta) => {
30495
30685
  var _a2, _b2;
30496
30686
  if (!onValue) return;
@@ -30512,7 +30702,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30512
30702
  },
30513
30703
  [multiple, onValue]
30514
30704
  );
30515
- const Chip = React74.useCallback(
30705
+ const Chip = React76.useCallback(
30516
30706
  ({ iconName }) => {
30517
30707
  var _a2;
30518
30708
  const short = (_a2 = iconName.split(":")[1]) != null ? _a2 : iconName;
@@ -30575,7 +30765,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30575
30765
  [chipHeightCls, den.chipGap, den.chipPad, emit, selected]
30576
30766
  );
30577
30767
  const selectedCount = selected.length;
30578
- const resolveButtonTriggerElement = React74.useCallback(() => {
30768
+ const resolveButtonTriggerElement = React76.useCallback(() => {
30579
30769
  const ctx = {
30580
30770
  open: popoverOpen,
30581
30771
  items: selected,
@@ -30605,7 +30795,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30605
30795
  );
30606
30796
  const child = el.props.children;
30607
30797
  if (selectedBadgePlacement === "end") {
30608
- return React74.cloneElement(el, {
30798
+ return React76.cloneElement(el, {
30609
30799
  className: nextClass,
30610
30800
  children: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
30611
30801
  /* @__PURE__ */ jsx("span", { className: "min-w-0", children: child }),
@@ -30613,7 +30803,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30613
30803
  ] })
30614
30804
  });
30615
30805
  }
30616
- return React74.cloneElement(el, {
30806
+ return React76.cloneElement(el, {
30617
30807
  className: nextClass,
30618
30808
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
30619
30809
  child,
@@ -30621,7 +30811,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30621
30811
  ] })
30622
30812
  });
30623
30813
  };
30624
- const withNoopDnD = (el) => React74.cloneElement(el, {
30814
+ const withNoopDnD = (el) => React76.cloneElement(el, {
30625
30815
  // keep event-merging parity with file variant (no-op, but safe)
30626
30816
  onDragOver: mergeHandlers2(
30627
30817
  el.props.onDragOver,
@@ -30638,7 +30828,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30638
30828
  }
30639
30829
  )
30640
30830
  });
30641
- if (React74.isValidElement(rawNode))
30831
+ if (React76.isValidElement(rawNode))
30642
30832
  return withNoopDnD(injectBadgeIntoElement(rawNode));
30643
30833
  const fallback = /* @__PURE__ */ jsxs(
30644
30834
  "button",
@@ -30686,7 +30876,7 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30686
30876
  triggerClassName
30687
30877
  ]);
30688
30878
  const COLLAPSE_LIMIT = 2;
30689
- const TriggerRegion = React74.useMemo(() => {
30879
+ const TriggerRegion = React76.useMemo(() => {
30690
30880
  const hasItems = selected.length > 0;
30691
30881
  const visibleItems = selected.slice(0, COLLAPSE_LIMIT);
30692
30882
  const hiddenCount = selected.length - COLLAPSE_LIMIT;
@@ -30774,11 +30964,11 @@ var ShadcnIconVariant = React74.forwardRef(function ShadcnIconVariant2(props, re
30774
30964
  PopoverContent,
30775
30965
  {
30776
30966
  className: cn(
30777
- "w-(--radix-popover-trigger-width) p-0 max-h-(--radix-popper-available-height)",
30967
+ "w-(--radix-popover-trigger-width) p-0 max-h-(--radix-popper-available-height) overflow-hidden flex flex-col",
30778
30968
  popoverClassName
30779
30969
  ),
30780
30970
  align: "start",
30781
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
30971
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [
30782
30972
  /* @__PURE__ */ jsxs(
30783
30973
  "div",
30784
30974
  {
@@ -31058,8 +31248,8 @@ function isFileLikeString(s3) {
31058
31248
  return FILE_EXT_RE.test(v2);
31059
31249
  }
31060
31250
  function useImagePreview(value) {
31061
- const [src, setSrc] = React74.useState(null);
31062
- React74.useEffect(() => {
31251
+ const [src, setSrc] = React76.useState(null);
31252
+ React76.useEffect(() => {
31063
31253
  if (!value) {
31064
31254
  setSrc(null);
31065
31255
  return;
@@ -31077,7 +31267,7 @@ var ImageThumb = ({ image }) => {
31077
31267
  const src = useImagePreview(image);
31078
31268
  return /* @__PURE__ */ jsx("div", { className: "relative flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-sm border bg-muted/50", children: src ? /* @__PURE__ */ jsx("img", { src, alt: "", className: "h-full w-full object-cover" }) : /* @__PURE__ */ jsx(Image, { className: "h-4 w-4 text-muted-foreground/50" }) });
31079
31269
  };
31080
- var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2(props, ref) {
31270
+ var ShadcnImageIconVariant = React76.forwardRef(function ShadcnImageIconVariant2(props, ref) {
31081
31271
  const {
31082
31272
  value,
31083
31273
  onValue,
@@ -31134,7 +31324,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31134
31324
  const regIcon = getPaletteUtil("iconPicker");
31135
31325
  const resolvedIconUrl = iconUrl != null ? iconUrl : regIcon == null ? void 0 : regIcon.url;
31136
31326
  const resolvedIconGroups = iconGroups != null ? iconGroups : regIcon == null ? void 0 : regIcon.groups;
31137
- const effectiveIconGroups = React74.useMemo(() => {
31327
+ const effectiveIconGroups = React76.useMemo(() => {
31138
31328
  const groups = resolvedIconGroups != null ? resolvedIconGroups : DEFAULT_GROUPS;
31139
31329
  const allowed = toArray2(allowedIconGroupIds).filter(
31140
31330
  Boolean
@@ -31143,7 +31333,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31143
31333
  const filtered = groups.filter((g2) => allowed.includes(g2.id));
31144
31334
  return filtered.length ? filtered : groups;
31145
31335
  }, [resolvedIconGroups, allowedIconGroupIds]);
31146
- const allowedIconPrefixes = React74.useMemo(() => {
31336
+ const allowedIconPrefixes = React76.useMemo(() => {
31147
31337
  var _a;
31148
31338
  const set = /* @__PURE__ */ new Set();
31149
31339
  for (const g2 of effectiveIconGroups) {
@@ -31151,7 +31341,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31151
31341
  }
31152
31342
  return set;
31153
31343
  }, [effectiveIconGroups]);
31154
- const isIconString = React74.useCallback(
31344
+ const isIconString = React76.useCallback(
31155
31345
  (raw) => {
31156
31346
  var _a;
31157
31347
  const s3 = raw.trim();
@@ -31163,7 +31353,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31163
31353
  },
31164
31354
  [allowedIconPrefixes]
31165
31355
  );
31166
- const normaliseImageIconInput = React74.useCallback(
31356
+ const normaliseImageIconInput = React76.useCallback(
31167
31357
  (v2) => {
31168
31358
  var _a;
31169
31359
  if (v2 == null) return null;
@@ -31204,25 +31394,25 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31204
31394
  const resolvedLeadingIcons = (leadingIcons == null ? void 0 : leadingIcons.length) ? leadingIcons : icon ? [icon] : [];
31205
31395
  const resolvedTrailingIcons = (trailingIcons == null ? void 0 : trailingIcons.length) ? trailingIcons : [];
31206
31396
  const hasExternalControls = !!leadingControl || !!trailingControl;
31207
- const [popoverOpen, setPopoverOpen] = React74.useState(false);
31208
- const [tab, setTab] = React74.useState("icon");
31209
- const list = React74.useMemo(() => {
31397
+ const [popoverOpen, setPopoverOpen] = React76.useState(false);
31398
+ const [tab, setTab] = React76.useState("icon");
31399
+ const list = React76.useMemo(() => {
31210
31400
  const raw = multiple ? toArray2(value) : value != null ? [value] : [];
31211
31401
  return raw.map(normaliseImageIconInput).filter(Boolean);
31212
31402
  }, [multiple, normaliseImageIconInput, value]);
31213
- const iconsSelected = React74.useMemo(() => {
31403
+ const iconsSelected = React76.useMemo(() => {
31214
31404
  return list.filter((x2) => x2.kind === "icon").map((x2) => x2.icon);
31215
31405
  }, [list]);
31216
- const imagesSelected = React74.useMemo(() => {
31406
+ const imagesSelected = React76.useMemo(() => {
31217
31407
  return list.filter((x2) => x2.kind === "image");
31218
31408
  }, [list]);
31219
- const toFieldRaw = React74.useCallback(
31409
+ const toFieldRaw = React76.useCallback(
31220
31410
  (x2) => {
31221
31411
  return x2.kind === "icon" ? x2.icon : x2.image;
31222
31412
  },
31223
31413
  []
31224
31414
  );
31225
- const emit = React74.useCallback(
31415
+ const emit = React76.useCallback(
31226
31416
  (nextList, meta) => {
31227
31417
  var _a, _b;
31228
31418
  if (!onValue) return;
@@ -31251,7 +31441,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31251
31441
  emit(next, { action: "remove", index: idx });
31252
31442
  };
31253
31443
  const clearAll = () => emit([], { action: "clear" });
31254
- const Chip = React74.useCallback(
31444
+ const Chip = React76.useCallback(
31255
31445
  ({ item, index }) => {
31256
31446
  var _a, _b, _c;
31257
31447
  const label = item.kind === "icon" ? (_a = item.icon.split(":")[1]) != null ? _a : item.icon : (_c = item.name) != null ? _c : typeof item.image === "string" ? (_b = item.image.split(/[\\/]/).pop()) != null ? _b : item.image : item.image.name;
@@ -31302,7 +31492,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31302
31492
  [chipHeightCls, den.chipGap, den.chipPad, removeAt]
31303
31493
  );
31304
31494
  const selectedCount = list.length;
31305
- const resolveButtonTriggerElement = React74.useCallback(() => {
31495
+ const resolveButtonTriggerElement = React76.useCallback(() => {
31306
31496
  const ctx = {
31307
31497
  open: popoverOpen,
31308
31498
  items: list,
@@ -31332,7 +31522,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31332
31522
  );
31333
31523
  const child = el.props.children;
31334
31524
  if (selectedBadgePlacement === "end") {
31335
- return React74.cloneElement(el, {
31525
+ return React76.cloneElement(el, {
31336
31526
  className: nextClass,
31337
31527
  children: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
31338
31528
  /* @__PURE__ */ jsx("span", { className: "min-w-0", children: child }),
@@ -31340,7 +31530,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31340
31530
  ] })
31341
31531
  });
31342
31532
  }
31343
- return React74.cloneElement(el, {
31533
+ return React76.cloneElement(el, {
31344
31534
  className: nextClass,
31345
31535
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
31346
31536
  child,
@@ -31348,7 +31538,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31348
31538
  ] })
31349
31539
  });
31350
31540
  };
31351
- if (React74.isValidElement(rawNode))
31541
+ if (React76.isValidElement(rawNode))
31352
31542
  return injectBadgeIntoElement(rawNode);
31353
31543
  return /* @__PURE__ */ jsxs(
31354
31544
  "button",
@@ -31380,12 +31570,12 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31380
31570
  selectedCount,
31381
31571
  triggerClassName
31382
31572
  ]);
31383
- const [dragOver, setDragOver] = React74.useState(false);
31384
- const fileInputRef = React74.useRef(null);
31385
- const [imgSelectedIds, setImgSelectedIds] = React74.useState(
31573
+ const [dragOver, setDragOver] = React76.useState(false);
31574
+ const fileInputRef = React76.useRef(null);
31575
+ const [imgSelectedIds, setImgSelectedIds] = React76.useState(
31386
31576
  () => /* @__PURE__ */ new Set()
31387
31577
  );
31388
- const imageItems = React74.useMemo(() => {
31578
+ const imageItems = React76.useMemo(() => {
31389
31579
  return imagesSelected.map((x2) => normaliseFileLike2(x2.image));
31390
31580
  }, [imagesSelected]);
31391
31581
  const canAddMore = (nextCount) => {
@@ -31448,7 +31638,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31448
31638
  setImagesFromItems(next, { from });
31449
31639
  }
31450
31640
  };
31451
- const openImagePicker = React74.useCallback(async () => {
31641
+ const openImagePicker = React76.useCallback(async () => {
31452
31642
  var _a;
31453
31643
  if (isDisabled) return;
31454
31644
  const resolvedLoader = typeof customLoader == "function" ? customLoader : customLoader ? getPaletteUtil("customLoader") : void 0;
@@ -31473,14 +31663,14 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31473
31663
  }
31474
31664
  (_a = fileInputRef.current) == null ? void 0 : _a.click();
31475
31665
  }, [accept, customLoader, imageItems, isDisabled, mergeMode, multiple]);
31476
- const onDragOver = React74.useCallback(
31666
+ const onDragOver = React76.useCallback(
31477
31667
  (e4) => {
31478
31668
  e4.preventDefault();
31479
31669
  if (!isDisabled) setDragOver(true);
31480
31670
  },
31481
31671
  [isDisabled]
31482
31672
  );
31483
- const onDrop = React74.useCallback(
31673
+ const onDrop = React76.useCallback(
31484
31674
  (e4) => {
31485
31675
  var _a;
31486
31676
  e4.preventDefault();
@@ -31529,7 +31719,7 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31529
31719
  if (icons[0]) setPopoverOpen(false);
31530
31720
  }
31531
31721
  };
31532
- const TriggerRegion = React74.useMemo(() => {
31722
+ const TriggerRegion = React76.useMemo(() => {
31533
31723
  const COLLAPSE_LIMIT = 2;
31534
31724
  const hasItems = list.length > 0;
31535
31725
  const visibleItems = list.slice(0, COLLAPSE_LIMIT);
@@ -31624,11 +31814,11 @@ var ShadcnImageIconVariant = React74.forwardRef(function ShadcnImageIconVariant2
31624
31814
  PopoverContent,
31625
31815
  {
31626
31816
  className: cn(
31627
- "w-(--radix-popover-trigger-width) p-0 max-h-(--radix-popper-available-height)",
31817
+ "w-(--radix-popover-trigger-width) p-0 max-h-(--radix-popper-available-height) overflow-hidden flex flex-col",
31628
31818
  popoverClassName
31629
31819
  ),
31630
31820
  align: "start",
31631
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
31821
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 min-h-0", children: [
31632
31822
  /* @__PURE__ */ jsxs(
31633
31823
  "div",
31634
31824
  {
@@ -32280,7 +32470,7 @@ function buildLayoutGraph(args) {
32280
32470
  }
32281
32471
  };
32282
32472
  }
32283
- var CoreContextReact = React74__default.createContext(
32473
+ var CoreContextReact = React76__default.createContext(
32284
32474
  null
32285
32475
  );
32286
32476
  function useCoreContext() {
@@ -32312,41 +32502,41 @@ function useField(options) {
32312
32502
  onValueChange,
32313
32503
  onSubmit
32314
32504
  } = options;
32315
- const ref = React74.useRef(null);
32316
- const stateRef = React74.useRef({
32505
+ const ref = React76.useRef(null);
32506
+ const stateRef = React76.useRef({
32317
32507
  value: defaultValue,
32318
32508
  error: "",
32319
32509
  loading: false,
32320
32510
  original: getOriginalValue ? getOriginalValue(defaultValue) : defaultValue
32321
32511
  });
32322
- const [valueState, setValueState] = React74.useState(
32512
+ const [valueState, setValueState] = React76.useState(
32323
32513
  stateRef.current.value
32324
32514
  );
32325
32515
  const isControlled = valueProp !== void 0;
32326
32516
  const value = isControlled ? valueProp : valueState;
32327
- React74.useEffect(() => {
32517
+ React76.useEffect(() => {
32328
32518
  if (isControlled && valueProp !== stateRef.current.value) {
32329
32519
  stateRef.current.value = valueProp;
32330
32520
  setValueState(valueProp);
32331
32521
  }
32332
32522
  }, [isControlled, valueProp]);
32333
- const [error, setErrorState] = React74.useState(
32523
+ const [error, setErrorState] = React76.useState(
32334
32524
  stateRef.current.error
32335
32525
  );
32336
- const [loading, setLoadingState] = React74.useState(
32526
+ const [loading, setLoadingState] = React76.useState(
32337
32527
  stateRef.current.loading
32338
32528
  );
32339
- const [required, setRequired] = React74.useState(
32529
+ const [required, setRequired] = React76.useState(
32340
32530
  Boolean(requiredProp)
32341
32531
  );
32342
- const [disabled, setDisabled] = React74.useState(
32532
+ const [disabled, setDisabled] = React76.useState(
32343
32533
  Boolean(disabledProp)
32344
32534
  );
32345
- const [readOnly, setReadOnly] = React74.useState(
32535
+ const [readOnly, setReadOnly] = React76.useState(
32346
32536
  Boolean(readOnlyProp)
32347
32537
  );
32348
- const id = React74.useId();
32349
- const keyRef = React74.useRef(
32538
+ const id = React76.useId();
32539
+ const keyRef = React76.useRef(
32350
32540
  (() => {
32351
32541
  if (rawName && rawName.trim()) return `${rawName.trim()}-${id}`;
32352
32542
  if (rawBindId && rawBindId.trim())
@@ -32354,10 +32544,10 @@ function useField(options) {
32354
32544
  return `field-${Math.random().toString(36).slice(2)}-${id}`;
32355
32545
  })()
32356
32546
  );
32357
- const bindIdRef = React74.useRef(
32547
+ const bindIdRef = React76.useRef(
32358
32548
  rawBindId && rawBindId.trim() || keyRef.current
32359
32549
  );
32360
- const fieldRef = React74.useRef(null);
32550
+ const fieldRef = React76.useRef(null);
32361
32551
  if (!fieldRef.current) {
32362
32552
  const key = keyRef.current;
32363
32553
  const bindId = bindIdRef.current;
@@ -32460,19 +32650,19 @@ function useField(options) {
32460
32650
  fieldRef.current = f2;
32461
32651
  }
32462
32652
  const field = fieldRef.current;
32463
- React74.useEffect(() => {
32653
+ React76.useEffect(() => {
32464
32654
  setRequired(requiredProp);
32465
32655
  if (field) {
32466
32656
  field.required = requiredProp;
32467
32657
  }
32468
32658
  }, [requiredProp, field]);
32469
- React74.useEffect(() => {
32659
+ React76.useEffect(() => {
32470
32660
  setDisabled(disabledProp);
32471
32661
  }, [disabledProp]);
32472
- React74.useEffect(() => {
32662
+ React76.useEffect(() => {
32473
32663
  setReadOnly(readOnlyProp);
32474
32664
  }, [readOnlyProp]);
32475
- React74.useEffect(() => {
32665
+ React76.useEffect(() => {
32476
32666
  if (!field) return;
32477
32667
  form.addField(field);
32478
32668
  return () => {
@@ -32587,25 +32777,25 @@ function useOptionalField(options) {
32587
32777
  getOriginalValue,
32588
32778
  onValueChange
32589
32779
  } = options;
32590
- const ref = React74.useRef(null);
32591
- const [valueState, setValueState] = React74.useState(defaultValue);
32780
+ const ref = React76.useRef(null);
32781
+ const [valueState, setValueState] = React76.useState(defaultValue);
32592
32782
  const isControlled = valueProp !== void 0;
32593
32783
  const value = isControlled ? valueProp : valueState;
32594
- React74.useEffect(() => {
32784
+ React76.useEffect(() => {
32595
32785
  if (isControlled) {
32596
32786
  setValueState(valueProp);
32597
32787
  }
32598
32788
  }, [isControlled, valueProp]);
32599
- const [error, setErrorState] = React74.useState("");
32600
- const [loading, setLoadingState] = React74.useState(false);
32601
- const [required, setRequired] = React74.useState(requiredProp);
32602
- const [disabled, setDisabled] = React74.useState(disabledProp);
32603
- const [readOnly, setReadOnly] = React74.useState(readOnlyProp);
32604
- const originalRef = React74.useRef(
32789
+ const [error, setErrorState] = React76.useState("");
32790
+ const [loading, setLoadingState] = React76.useState(false);
32791
+ const [required, setRequired] = React76.useState(requiredProp);
32792
+ const [disabled, setDisabled] = React76.useState(disabledProp);
32793
+ const [readOnly, setReadOnly] = React76.useState(readOnlyProp);
32794
+ const originalRef = React76.useRef(
32605
32795
  getOriginalValue ? getOriginalValue(defaultValue) : defaultValue
32606
32796
  );
32607
- const id = React74.useId();
32608
- const keyRef = React74.useRef("");
32797
+ const id = React76.useId();
32798
+ const keyRef = React76.useRef("");
32609
32799
  if (!keyRef.current) {
32610
32800
  if (rawName && rawName.trim()) {
32611
32801
  keyRef.current = `${rawName.trim()}-${id}`;
@@ -32615,17 +32805,17 @@ function useOptionalField(options) {
32615
32805
  keyRef.current = `field-${Math.random().toString(36).slice(2)}-${id}`;
32616
32806
  }
32617
32807
  }
32618
- const bindIdRef = React74.useRef("");
32808
+ const bindIdRef = React76.useRef("");
32619
32809
  if (!bindIdRef.current) {
32620
32810
  bindIdRef.current = rawBindId && rawBindId.trim() || keyRef.current;
32621
32811
  }
32622
- React74.useEffect(() => {
32812
+ React76.useEffect(() => {
32623
32813
  setRequired(requiredProp);
32624
32814
  }, [requiredProp]);
32625
- React74.useEffect(() => {
32815
+ React76.useEffect(() => {
32626
32816
  setDisabled(disabledProp);
32627
32817
  }, [disabledProp]);
32628
- React74.useEffect(() => {
32818
+ React76.useEffect(() => {
32629
32819
  setReadOnly(readOnlyProp);
32630
32820
  }, [readOnlyProp]);
32631
32821
  function setValue(next, variant = "direct") {
@@ -32701,6 +32891,11 @@ function useOptionalField(options) {
32701
32891
  }
32702
32892
  };
32703
32893
  }
32894
+ var ThemeContext = React76.createContext(null);
32895
+ function usePaletteTheme() {
32896
+ var _a;
32897
+ return (_a = React76.useContext(ThemeContext)) != null ? _a : {};
32898
+ }
32704
32899
  function normalizeValidateResult(result) {
32705
32900
  if (result === void 0 || result === null || result === true) return [];
32706
32901
  if (result === false) return ["Invalid value."];
@@ -32722,7 +32917,7 @@ function resolveLayoutForField(defaults, overrides, props, variantResolve) {
32722
32917
  ...overrides
32723
32918
  };
32724
32919
  }
32725
- function renderHelperSlot(root, slot, classes) {
32920
+ function renderHelperSlot(root, slot, classes, styles) {
32726
32921
  const placement = slot.placement;
32727
32922
  switch (slot.id) {
32728
32923
  case "sublabel":
@@ -32733,6 +32928,7 @@ function renderHelperSlot(root, slot, classes) {
32733
32928
  "text-xs text-muted-foreground",
32734
32929
  classes == null ? void 0 : classes.sublabel
32735
32930
  ),
32931
+ style: styles == null ? void 0 : styles.sublabel,
32736
32932
  "data-slot": `sublabel-${placement}`,
32737
32933
  children: slot.content
32738
32934
  },
@@ -32746,6 +32942,7 @@ function renderHelperSlot(root, slot, classes) {
32746
32942
  "text-xs text-muted-foreground",
32747
32943
  classes == null ? void 0 : classes.description
32748
32944
  ),
32945
+ style: styles == null ? void 0 : styles.description,
32749
32946
  "data-slot": `description-${placement}`,
32750
32947
  children: slot.content
32751
32948
  },
@@ -32759,6 +32956,7 @@ function renderHelperSlot(root, slot, classes) {
32759
32956
  "text-xs text-muted-foreground",
32760
32957
  classes == null ? void 0 : classes.helpText
32761
32958
  ),
32959
+ style: styles == null ? void 0 : styles.helpText,
32762
32960
  "data-slot": `helptext-${placement}`,
32763
32961
  children: slot.content
32764
32962
  },
@@ -32769,6 +32967,7 @@ function renderHelperSlot(root, slot, classes) {
32769
32967
  FieldError,
32770
32968
  {
32771
32969
  className: cn("text-xs text-destructive", classes == null ? void 0 : classes.error),
32970
+ style: styles == null ? void 0 : styles.error,
32772
32971
  "data-slot": `error-${placement}`,
32773
32972
  children: slot.content
32774
32973
  },
@@ -32779,6 +32978,7 @@ function renderHelperSlot(root, slot, classes) {
32779
32978
  "div",
32780
32979
  {
32781
32980
  className: cn("flex items-center gap-1", classes == null ? void 0 : classes.tags),
32981
+ style: (styles == null ? void 0 : styles.tags) || (styles == null ? void 0 : styles.tag),
32782
32982
  "data-slot": `tags-${placement}`,
32783
32983
  children: slot.content
32784
32984
  },
@@ -32788,29 +32988,66 @@ function renderHelperSlot(root, slot, classes) {
32788
32988
  return null;
32789
32989
  }
32790
32990
  }
32791
- function getClasses(props) {
32991
+ function getClasses(props, themeClasses, variantThemeClasses) {
32792
32992
  var _a;
32793
32993
  const legacy = (_a = props.classes) != null ? _a : {};
32794
32994
  return {
32795
- root: cn(legacy.root, props.className) || void 0,
32796
- labelRow: cn(legacy.labelRow, props.labelRowClassName) || void 0,
32797
- inlineRow: cn(legacy.inlineRow, props.inlineRowClassName) || void 0,
32798
- label: cn(legacy.label, props.labelClassName) || void 0,
32799
- sublabel: cn(legacy.sublabel, props.sublabelClassName) || void 0,
32800
- description: cn(legacy.description, props.descriptionClassName) || void 0,
32801
- helpText: cn(legacy.helpText, props.helpTextClassName) || void 0,
32802
- error: cn(legacy.error, props.errorClassName) || void 0,
32803
- group: cn(legacy.group, props.groupClassName) || void 0,
32804
- content: cn(legacy.content, props.contentClassName) || void 0,
32805
- variant: cn(legacy.variant, props.variantClassName) || void 0,
32806
- inlineInputColumn: cn(legacy.inlineInputColumn, props.inlineInputColumnClassName) || void 0,
32807
- inlineLabelColumn: cn(legacy.inlineLabelColumn, props.inlineLabelColumnClassName) || void 0,
32808
- required: cn(legacy.required, props.requiredClassName) || void 0,
32809
- tag: cn(legacy.tag, props.tagClassName) || void 0
32995
+ root: cn(themeClasses == null ? void 0 : themeClasses.root, variantThemeClasses == null ? void 0 : variantThemeClasses.root, legacy.root, props.className) || void 0,
32996
+ labelRow: cn(themeClasses == null ? void 0 : themeClasses.labelRow, variantThemeClasses == null ? void 0 : variantThemeClasses.labelRow, legacy.labelRow, props.labelRowClassName) || void 0,
32997
+ inlineRow: cn(themeClasses == null ? void 0 : themeClasses.inlineRow, variantThemeClasses == null ? void 0 : variantThemeClasses.inlineRow, legacy.inlineRow, props.inlineRowClassName) || void 0,
32998
+ label: cn(themeClasses == null ? void 0 : themeClasses.label, variantThemeClasses == null ? void 0 : variantThemeClasses.label, legacy.label, props.labelClassName) || void 0,
32999
+ sublabel: cn(themeClasses == null ? void 0 : themeClasses.sublabel, variantThemeClasses == null ? void 0 : variantThemeClasses.sublabel, legacy.sublabel, props.sublabelClassName) || void 0,
33000
+ description: cn(themeClasses == null ? void 0 : themeClasses.description, variantThemeClasses == null ? void 0 : variantThemeClasses.description, legacy.description, props.descriptionClassName) || void 0,
33001
+ helpText: cn(themeClasses == null ? void 0 : themeClasses.helpText, variantThemeClasses == null ? void 0 : variantThemeClasses.helpText, legacy.helpText, props.helpTextClassName) || void 0,
33002
+ error: cn(themeClasses == null ? void 0 : themeClasses.error, variantThemeClasses == null ? void 0 : variantThemeClasses.error, legacy.error, props.errorClassName) || void 0,
33003
+ group: cn(themeClasses == null ? void 0 : themeClasses.group, variantThemeClasses == null ? void 0 : variantThemeClasses.group, legacy.group, props.groupClassName) || void 0,
33004
+ content: cn(themeClasses == null ? void 0 : themeClasses.content, variantThemeClasses == null ? void 0 : variantThemeClasses.content, legacy.content, props.contentClassName) || void 0,
33005
+ variant: cn(themeClasses == null ? void 0 : themeClasses.variant, variantThemeClasses == null ? void 0 : variantThemeClasses.variant, legacy.variant, props.variantClassName) || void 0,
33006
+ inlineInputColumn: cn(themeClasses == null ? void 0 : themeClasses.inlineInputColumn, variantThemeClasses == null ? void 0 : variantThemeClasses.inlineInputColumn, legacy.inlineInputColumn, props.inlineInputColumnClassName) || void 0,
33007
+ inlineLabelColumn: cn(themeClasses == null ? void 0 : themeClasses.inlineLabelColumn, variantThemeClasses == null ? void 0 : variantThemeClasses.inlineLabelColumn, legacy.inlineLabelColumn, props.inlineLabelColumnClassName) || void 0,
33008
+ required: cn(themeClasses == null ? void 0 : themeClasses.required, variantThemeClasses == null ? void 0 : variantThemeClasses.required, legacy.required, props.requiredClassName) || void 0,
33009
+ tag: cn(themeClasses == null ? void 0 : themeClasses.tag, variantThemeClasses == null ? void 0 : variantThemeClasses.tag, legacy.tag, props.tagClassName) || void 0
32810
33010
  };
32811
33011
  }
33012
+ function mergeStyles(propsStyles, themeStyles, variantThemeStyles) {
33013
+ const keys = [
33014
+ "root",
33015
+ "labelRow",
33016
+ "inlineRow",
33017
+ "label",
33018
+ "sublabel",
33019
+ "description",
33020
+ "helpText",
33021
+ "error",
33022
+ "group",
33023
+ "content",
33024
+ "variant",
33025
+ "inlineInputColumn",
33026
+ "inlineLabelColumn",
33027
+ "required",
33028
+ "tag"
33029
+ ];
33030
+ const result = {};
33031
+ for (const key of keys) {
33032
+ const s3 = {
33033
+ ...themeStyles == null ? void 0 : themeStyles[key],
33034
+ ...variantThemeStyles == null ? void 0 : variantThemeStyles[key],
33035
+ ...propsStyles == null ? void 0 : propsStyles[key]
33036
+ };
33037
+ if (Object.keys(s3).length > 0) {
33038
+ result[key] = s3;
33039
+ }
33040
+ }
33041
+ return result;
33042
+ }
32812
33043
  function InputField(props) {
32813
- var _a, _b, _c, _d, _e, _f, _g;
33044
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
33045
+ const theme = usePaletteTheme();
33046
+ const mergedProps = {
33047
+ ...theme.defaultProps,
33048
+ ...props.variant ? (_b = (_a = theme.variants) == null ? void 0 : _a[props.variant]) == null ? void 0 : _b.defaultProps : void 0,
33049
+ ...props
33050
+ };
32814
33051
  const {
32815
33052
  variant,
32816
33053
  onSubmit,
@@ -32855,7 +33092,7 @@ function InputField(props) {
32855
33092
  classes: _depreciated,
32856
33093
  // Everything else → forwarded to variant
32857
33094
  ...rest
32858
- } = props;
33095
+ } = mergedProps;
32859
33096
  const module2 = getVariant(variant);
32860
33097
  if (!module2) {
32861
33098
  {
@@ -32867,8 +33104,13 @@ function InputField(props) {
32867
33104
  }
32868
33105
  return null;
32869
33106
  }
32870
- const classes = getClasses(props);
32871
- const layout = React74.useMemo(() => {
33107
+ const themeClasses = theme.classes;
33108
+ const themeVariantClasses = variant ? (_d = (_c = theme.variants) == null ? void 0 : _c[variant]) == null ? void 0 : _d.classes : void 0;
33109
+ const classes = getClasses(mergedProps, themeClasses, themeVariantClasses);
33110
+ const themeStyles = theme.styles;
33111
+ const themeVariantStyles = variant ? (_f = (_e = theme.variants) == null ? void 0 : _e[variant]) == null ? void 0 : _f.styles : void 0;
33112
+ const mergedStyles = mergeStyles(mergedProps.styles, themeStyles, themeVariantStyles);
33113
+ const layout = React76.useMemo(() => {
32872
33114
  var _a2;
32873
33115
  const defaultsLayout = (_a2 = module2.defaults) == null ? void 0 : _a2.layout;
32874
33116
  const overrides = {};
@@ -32899,7 +33141,7 @@ function InputField(props) {
32899
33141
  return resolveLayoutForField(
32900
33142
  defaultsLayout,
32901
33143
  overrides,
32902
- props,
33144
+ mergedProps,
32903
33145
  module2.resolveLayout
32904
33146
  );
32905
33147
  }, [
@@ -32912,11 +33154,11 @@ function InputField(props) {
32912
33154
  tagPlacement,
32913
33155
  inline,
32914
33156
  fullWidth,
32915
- props
33157
+ mergedProps
32916
33158
  ]);
32917
- const effectiveSize = (_c = size != null ? size : (_b = (_a = module2.defaults) == null ? void 0 : _a.layout) == null ? void 0 : _b.defaultSize) != null ? _c : void 0;
32918
- const effectiveDensity = (_f = density != null ? density : (_e = (_d = module2.defaults) == null ? void 0 : _d.layout) == null ? void 0 : _e.defaultDensity) != null ? _f : void 0;
32919
- const validate = React74.useCallback(
33159
+ const effectiveSize = (_i = size != null ? size : (_h = (_g = module2.defaults) == null ? void 0 : _g.layout) == null ? void 0 : _h.defaultSize) != null ? _i : void 0;
33160
+ const effectiveDensity = (_l = density != null ? density : (_k = (_j = module2.defaults) == null ? void 0 : _j.layout) == null ? void 0 : _k.defaultDensity) != null ? _l : void 0;
33161
+ const validate = React76.useCallback(
32920
33162
  (value2, field2, form, _report) => {
32921
33163
  var _a2;
32922
33164
  const messages = [];
@@ -32956,7 +33198,7 @@ function InputField(props) {
32956
33198
  const { value: fieldValue, setValue, error, ref, key } = field;
32957
33199
  const Variant = module2.Variant;
32958
33200
  const visualError = (errorText != null ? errorText : error) || "";
32959
- const handleValueChange = React74.useCallback(
33201
+ const handleValueChange = React76.useCallback(
32960
33202
  (next, detail) => {
32961
33203
  let finalValue = next;
32962
33204
  let defaultPrevented = false;
@@ -33005,7 +33247,7 @@ function InputField(props) {
33005
33247
  hostVariantClass,
33006
33248
  classes == null ? void 0 : classes.variant
33007
33249
  ) || void 0;
33008
- const tagsContent = React74.useMemo(() => {
33250
+ const tagsContent = React76.useMemo(() => {
33009
33251
  const items = tags != null ? tags : [];
33010
33252
  if (!items.length) return null;
33011
33253
  return /* @__PURE__ */ jsx(Fragment, { children: items.map((tag, index) => /* @__PURE__ */ jsxs(
@@ -33029,7 +33271,7 @@ function InputField(props) {
33029
33271
  index
33030
33272
  )) });
33031
33273
  }, [tags, classes == null ? void 0 : classes.tag]);
33032
- const graph = React74.useMemo(
33274
+ const graph = React76.useMemo(
33033
33275
  () => buildLayoutGraph({
33034
33276
  layout,
33035
33277
  sublabel,
@@ -33073,15 +33315,15 @@ function InputField(props) {
33073
33315
  "[container-type:normal]",
33074
33316
  "[container-name:none]",
33075
33317
  classes == null ? void 0 : classes.group
33076
- ) : (_g = classes == null ? void 0 : classes.group) != null ? _g : void 0;
33318
+ ) : (_m = classes == null ? void 0 : classes.group) != null ? _m : void 0;
33077
33319
  const inlineFieldContentClass = isCompactInline ? cn("flex-none w-auto", classes == null ? void 0 : classes.content) : cn("w-full", classes == null ? void 0 : classes.content);
33078
- const inlineInputColumn = /* @__PURE__ */ jsxs("div", { className: inlineInputColClass, children: [
33320
+ const inlineInputColumn = /* @__PURE__ */ jsxs("div", { className: inlineInputColClass, style: mergedStyles.inlineInputColumn, children: [
33079
33321
  graph.getSlotsFor("input", "above").render(
33080
33322
  (slots) => slots.map(
33081
- (slot) => renderHelperSlot("input", slot, classes)
33323
+ (slot) => renderHelperSlot("input", slot, classes, mergedStyles)
33082
33324
  )
33083
33325
  ),
33084
- /* @__PURE__ */ jsx(FieldGroup, { className: inlineFieldGroupClass, children: /* @__PURE__ */ jsx(FieldContent, { className: inlineFieldContentClass, children: /* @__PURE__ */ jsx(
33326
+ /* @__PURE__ */ jsx(FieldGroup, { className: inlineFieldGroupClass, style: mergedStyles.group, children: /* @__PURE__ */ jsx(FieldContent, { className: inlineFieldContentClass, style: mergedStyles.content, children: /* @__PURE__ */ jsx(
33085
33327
  Variant,
33086
33328
  {
33087
33329
  ...rest,
@@ -33095,19 +33337,20 @@ function InputField(props) {
33095
33337
  readOnly: readOnlyProp,
33096
33338
  size: effectiveSize,
33097
33339
  density: effectiveDensity,
33098
- className: mergedVariantClass
33340
+ className: mergedVariantClass,
33341
+ style: { ...mergedStyles.variant, ...rest.style }
33099
33342
  }
33100
33343
  ) }) }),
33101
33344
  graph.getSlotsFor("input", "below").render(
33102
33345
  (slots) => slots.map(
33103
- (slot) => renderHelperSlot("input", slot, classes)
33346
+ (slot) => renderHelperSlot("input", slot, classes, mergedStyles)
33104
33347
  )
33105
33348
  )
33106
33349
  ] });
33107
- const inlineLabelColumn = inlineLabelSide === "hidden" || !hasAnyLabelBlockContent ? null : /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-0", inlineLabelColClass), children: [
33350
+ const inlineLabelColumn = inlineLabelSide === "hidden" || !hasAnyLabelBlockContent ? null : /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-0", inlineLabelColClass), style: mergedStyles.inlineLabelColumn, children: [
33108
33351
  graph.getSlotsFor("label", "above").render(
33109
33352
  (slots) => slots.map(
33110
- (slot) => renderHelperSlot("label", slot, classes)
33353
+ (slot) => renderHelperSlot("label", slot, classes, mergedStyles)
33111
33354
  )
33112
33355
  ),
33113
33356
  hasLabelRowContent && /* @__PURE__ */ jsxs(
@@ -33117,10 +33360,11 @@ function InputField(props) {
33117
33360
  "flex items-baseline justify-between gap-1",
33118
33361
  classes == null ? void 0 : classes.labelRow
33119
33362
  ),
33363
+ style: mergedStyles.labelRow,
33120
33364
  "data-slot": "label-row",
33121
33365
  children: [
33122
33366
  graph.getSlotsFor("label", "left").render((slots) => /* @__PURE__ */ jsx("div", { className: "flex items-baseline gap-1", children: slots.map(
33123
- (slot) => renderHelperSlot("label", slot, classes)
33367
+ (slot) => renderHelperSlot("label", slot, classes, mergedStyles)
33124
33368
  ) })),
33125
33369
  label && /* @__PURE__ */ jsx(
33126
33370
  FieldLabel,
@@ -33130,6 +33374,7 @@ function InputField(props) {
33130
33374
  "text-sm font-medium text-foreground",
33131
33375
  classes == null ? void 0 : classes.label
33132
33376
  ),
33377
+ style: mergedStyles.label,
33133
33378
  children: /* @__PURE__ */ jsxs(FieldTitle, { children: [
33134
33379
  label,
33135
33380
  " ",
@@ -33140,6 +33385,7 @@ function InputField(props) {
33140
33385
  "text-destructive",
33141
33386
  classes == null ? void 0 : classes.required
33142
33387
  ),
33388
+ style: mergedStyles.required,
33143
33389
  children: "*"
33144
33390
  }
33145
33391
  ) : ""
@@ -33147,14 +33393,14 @@ function InputField(props) {
33147
33393
  }
33148
33394
  ),
33149
33395
  graph.getSlotsFor("label", "right").render((slots) => /* @__PURE__ */ jsx("div", { className: "flex items-baseline gap-1", children: slots.map(
33150
- (slot) => renderHelperSlot("label", slot, classes)
33396
+ (slot) => renderHelperSlot("label", slot, classes, mergedStyles)
33151
33397
  ) }))
33152
33398
  ]
33153
33399
  }
33154
33400
  ),
33155
33401
  graph.getSlotsFor("label", "below").render(
33156
33402
  (slots) => slots.map(
33157
- (slot) => renderHelperSlot("label", slot, classes)
33403
+ (slot) => renderHelperSlot("label", slot, classes, mergedStyles)
33158
33404
  )
33159
33405
  )
33160
33406
  ] });
@@ -33168,14 +33414,14 @@ function InputField(props) {
33168
33414
  hasStackedLabelBlock && hasLabelRowContent && "mt-0.5",
33169
33415
  classes == null ? void 0 : classes.group
33170
33416
  );
33171
- const Element = contain ? "div" : React74.Fragment;
33417
+ const Element = contain ? "div" : React76.Fragment;
33172
33418
  const attrs = (a3 = "l") => contain ? a3 === "l" ? { className: "p-4 border-b border-input" } : { className: "px-4 pt-2 pb-4" } : {};
33173
33419
  return /* @__PURE__ */ jsx(
33174
33420
  Field,
33175
33421
  {
33176
33422
  className: rootClassName,
33177
33423
  ref,
33178
- style,
33424
+ style: { ...mergedStyles.root, ...style },
33179
33425
  "data-variant": String(variant),
33180
33426
  "data-label-placement": lp != null ? lp : void 0,
33181
33427
  "data-sublabel-placement": sp != null ? sp : void 0,
@@ -33187,7 +33433,7 @@ function InputField(props) {
33187
33433
  "data-fullwidth": layout.fullWidth ? "true" : "false",
33188
33434
  children: isInline ? (
33189
33435
  // INLINE MODE: label + control on the same row
33190
- /* @__PURE__ */ jsx("div", { className: inlineRowClassName, "data-slot": "inline-row", children: inlineLabelSide === "right" ? /* @__PURE__ */ jsxs(Fragment, { children: [
33436
+ /* @__PURE__ */ jsx("div", { className: inlineRowClassName, style: mergedStyles.inlineRow, "data-slot": "inline-row", children: inlineLabelSide === "right" ? /* @__PURE__ */ jsxs(Fragment, { children: [
33191
33437
  inlineInputColumn,
33192
33438
  inlineLabelColumn
33193
33439
  ] }) : inlineLabelSide === "hidden" ? /* @__PURE__ */ jsx(Fragment, { children: inlineInputColumn }) : /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -33203,7 +33449,8 @@ function InputField(props) {
33203
33449
  (slot) => renderHelperSlot(
33204
33450
  "label",
33205
33451
  slot,
33206
- classes
33452
+ classes,
33453
+ mergedStyles
33207
33454
  )
33208
33455
  )
33209
33456
  ),
@@ -33214,13 +33461,15 @@ function InputField(props) {
33214
33461
  "flex items-baseline justify-between gap-1",
33215
33462
  classes == null ? void 0 : classes.labelRow
33216
33463
  ),
33464
+ style: mergedStyles.labelRow,
33217
33465
  "data-slot": "label-row",
33218
33466
  children: [
33219
33467
  graph.getSlotsFor("label", "left").render((slots) => /* @__PURE__ */ jsx("div", { className: "flex items-baseline gap-1", children: slots.map(
33220
33468
  (slot) => renderHelperSlot(
33221
33469
  "label",
33222
33470
  slot,
33223
- classes
33471
+ classes,
33472
+ mergedStyles
33224
33473
  )
33225
33474
  ) })),
33226
33475
  label && /* @__PURE__ */ jsx(
@@ -33231,6 +33480,7 @@ function InputField(props) {
33231
33480
  "text-sm font-medium text-foreground",
33232
33481
  classes == null ? void 0 : classes.label
33233
33482
  ),
33483
+ style: mergedStyles.label,
33234
33484
  children: /* @__PURE__ */ jsxs(FieldTitle, { children: [
33235
33485
  label,
33236
33486
  " ",
@@ -33241,6 +33491,7 @@ function InputField(props) {
33241
33491
  "text-destructive",
33242
33492
  classes == null ? void 0 : classes.required
33243
33493
  ),
33494
+ style: mergedStyles.required,
33244
33495
  children: "*"
33245
33496
  }
33246
33497
  ) : ""
@@ -33251,7 +33502,8 @@ function InputField(props) {
33251
33502
  (slot) => renderHelperSlot(
33252
33503
  "label",
33253
33504
  slot,
33254
- classes
33505
+ classes,
33506
+ mergedStyles
33255
33507
  )
33256
33508
  ) }))
33257
33509
  ]
@@ -33262,7 +33514,8 @@ function InputField(props) {
33262
33514
  (slot) => renderHelperSlot(
33263
33515
  "label",
33264
33516
  slot,
33265
- classes
33517
+ classes,
33518
+ mergedStyles
33266
33519
  )
33267
33520
  )
33268
33521
  )
@@ -33270,13 +33523,14 @@ function InputField(props) {
33270
33523
  /* @__PURE__ */ jsxs(Element, { ...attrs("i"), children: [
33271
33524
  graph.getSlotsFor("input", "above").render(
33272
33525
  (slots) => slots.map(
33273
- (slot) => renderHelperSlot("input", slot, classes)
33526
+ (slot) => renderHelperSlot("input", slot, classes, mergedStyles)
33274
33527
  )
33275
33528
  ),
33276
- /* @__PURE__ */ jsx(FieldGroup, { className: stackedGroupClassName, children: /* @__PURE__ */ jsx(
33529
+ /* @__PURE__ */ jsx(FieldGroup, { className: stackedGroupClassName, style: mergedStyles.group, children: /* @__PURE__ */ jsx(
33277
33530
  FieldContent,
33278
33531
  {
33279
33532
  className: cn("w-full", classes == null ? void 0 : classes.content),
33533
+ style: mergedStyles.content,
33280
33534
  children: /* @__PURE__ */ jsx(
33281
33535
  Variant,
33282
33536
  {
@@ -33291,14 +33545,15 @@ function InputField(props) {
33291
33545
  readOnly: readOnlyProp,
33292
33546
  size: effectiveSize,
33293
33547
  density: effectiveDensity,
33294
- className: mergedVariantClass
33548
+ className: mergedVariantClass,
33549
+ style: { ...mergedStyles.variant, ...rest.style }
33295
33550
  }
33296
33551
  )
33297
33552
  }
33298
33553
  ) }),
33299
33554
  graph.getSlotsFor("input", "below").render(
33300
33555
  (slots) => slots.map(
33301
- (slot) => renderHelperSlot("input", slot, classes)
33556
+ (slot) => renderHelperSlot("input", slot, classes, mergedStyles)
33302
33557
  )
33303
33558
  )
33304
33559
  ] })
@@ -33337,14 +33592,14 @@ function ListerFiltersButton(props) {
33337
33592
  const hasFilters = options.length > 0;
33338
33593
  if (!hasFilters) return null;
33339
33594
  const ctx = actions.getFilterCtx(id);
33340
- const [openGroups, setOpenGroups] = React74.useState(
33595
+ const [openGroups, setOpenGroups] = React76.useState(
33341
33596
  {}
33342
33597
  );
33343
33598
  const toggleGroup = (key) => {
33344
33599
  setOpenGroups((m2) => ({ ...m2, [key]: !m2[key] }));
33345
33600
  };
33346
33601
  const selectedIds = asArray(session == null ? void 0 : session.selectedFilterValues);
33347
- const appliedCount = React74.useMemo(() => {
33602
+ const appliedCount = React76.useMemo(() => {
33348
33603
  var _a2;
33349
33604
  const patch = (_a2 = session == null ? void 0 : session.filtersPatch) != null ? _a2 : {};
33350
33605
  return Object.keys(patch).length;
@@ -33860,8 +34115,8 @@ function computeDefaultPos(idx) {
33860
34115
  return { x: x2, y: y2 };
33861
34116
  }
33862
34117
  function usePortalRoot(id = "__timeax_lister_ui__") {
33863
- const [el, setEl] = React74.useState(null);
33864
- React74.useEffect(() => {
34118
+ const [el, setEl] = React76.useState(null);
34119
+ React76.useEffect(() => {
33865
34120
  if (typeof document === "undefined") return;
33866
34121
  const existing = document.getElementById(id);
33867
34122
  const node = existing != null ? existing : document.createElement("div");
@@ -33878,7 +34133,7 @@ function usePortalRoot(id = "__timeax_lister_ui__") {
33878
34133
  }
33879
34134
  function ListerUI() {
33880
34135
  const { state } = useLister();
33881
- const positionsRef = React74.useRef(
34136
+ const positionsRef = React76.useRef(
33882
34137
  /* @__PURE__ */ new Map()
33883
34138
  );
33884
34139
  const portalRoot = usePortalRoot();
@@ -33905,14 +34160,14 @@ function ListerSessionPanel(props) {
33905
34160
  const idx = Math.max(0, state.order.indexOf(id));
33906
34161
  const isActive = state.activeId === id;
33907
34162
  const draggable = (session == null ? void 0 : session.draggable) !== false;
33908
- const nodeRef = React74.useRef(null);
33909
- const [defaultPos] = React74.useState(() => {
34163
+ const nodeRef = React76.useRef(null);
34164
+ const [defaultPos] = React76.useState(() => {
33910
34165
  const saved = positionsRef.current.get(id);
33911
34166
  if (saved) return saved;
33912
34167
  const p2 = session == null ? void 0 : session.position;
33913
34168
  return p2 && typeof p2.x === "number" && typeof p2.y === "number" ? { x: p2.x, y: p2.y } : computeDefaultPos(idx);
33914
34169
  });
33915
- React74.useEffect(() => {
34170
+ React76.useEffect(() => {
33916
34171
  if (!positionsRef.current.has(id)) {
33917
34172
  positionsRef.current.set(id, defaultPos);
33918
34173
  }
@@ -34003,13 +34258,13 @@ function ListerSessionPanel(props) {
34003
34258
  }
34004
34259
  function useLister() {
34005
34260
  const runtime = useListerRuntime();
34006
- const [state, setState] = React74.useState(runtime.getState());
34007
- React74.useEffect(() => {
34261
+ const [state, setState] = React76.useState(runtime.getState());
34262
+ React76.useEffect(() => {
34008
34263
  return runtime.subscribe(() => {
34009
34264
  setState(runtime.getState());
34010
34265
  });
34011
34266
  }, [runtime]);
34012
- return React74.useMemo(
34267
+ return React76.useMemo(
34013
34268
  () => ({
34014
34269
  api: runtime.api,
34015
34270
  actions: runtime.actions,
@@ -34066,43 +34321,43 @@ function useData(opts, deps = []) {
34066
34321
  const enabled = (_a = opts.enabled) != null ? _a : true;
34067
34322
  const debounceMs = (_b = opts.debounceMs) != null ? _b : 300;
34068
34323
  const http = (_c = opts.http) != null ? _c : defaultHttpClient;
34069
- const [data, setData] = React74.useState(() => {
34324
+ const [data, setData] = React76.useState(() => {
34070
34325
  var _a2;
34071
34326
  return (_a2 = opts.initial) != null ? _a2 : [];
34072
34327
  });
34073
- const [res, setRes] = React74.useState();
34074
- const [loading, setLoading] = React74.useState(false);
34075
- const [error, setError] = React74.useState(void 0);
34076
- const dataRef = React74.useRef(data);
34077
- React74.useEffect(() => {
34328
+ const [res, setRes] = React76.useState();
34329
+ const [loading, setLoading] = React76.useState(false);
34330
+ const [error, setError] = React76.useState(void 0);
34331
+ const dataRef = React76.useRef(data);
34332
+ React76.useEffect(() => {
34078
34333
  dataRef.current = data;
34079
34334
  }, [data]);
34080
- const [query, _setQuery] = React74.useState("");
34081
- const [searchMode, _setSearchMode] = React74.useState(
34335
+ const [query, _setQuery] = React76.useState("");
34336
+ const [searchMode, _setSearchMode] = React76.useState(
34082
34337
  (_d = opts.searchMode) != null ? _d : "remote"
34083
34338
  );
34084
- const [searchTarget, _setSearchTarget] = React74.useState(() => defaultSearchTarget(opts.search));
34085
- const [filters, _setFilters] = React74.useState(
34339
+ const [searchTarget, _setSearchTarget] = React76.useState(() => defaultSearchTarget(opts.search));
34340
+ const [filters, _setFilters] = React76.useState(
34086
34341
  opts.filters
34087
34342
  );
34088
- const inflight = React74.useMemo(
34343
+ const inflight = React76.useMemo(
34089
34344
  () => createInFlight(debounceMs),
34090
34345
  [debounceMs]
34091
34346
  );
34092
- const inflightKeyRef = React74.useRef(
34347
+ const inflightKeyRef = React76.useRef(
34093
34348
  (_e = opts.id) != null ? _e : createRuntimeKey("data")
34094
34349
  );
34095
- React74.useEffect(() => {
34350
+ React76.useEffect(() => {
34096
34351
  if (opts.id) inflightKeyRef.current = opts.id;
34097
34352
  }, [opts.id]);
34098
- React74.useEffect(() => {
34353
+ React76.useEffect(() => {
34099
34354
  return () => {
34100
34355
  inflight.clear(inflightKeyRef.current);
34101
34356
  };
34102
34357
  }, [inflight]);
34103
34358
  const selectionMode = (_g = (_f = opts.selection) == null ? void 0 : _f.mode) != null ? _g : "none";
34104
34359
  const selectionPrune = (_i = (_h = opts.selection) == null ? void 0 : _h.prune) != null ? _i : "never";
34105
- const getItemKey = React74.useMemo(() => {
34360
+ const getItemKey = React76.useMemo(() => {
34106
34361
  var _a2;
34107
34362
  const key = (_a2 = opts.selection) == null ? void 0 : _a2.key;
34108
34363
  if (!key) {
@@ -34123,11 +34378,11 @@ function useData(opts, deps = []) {
34123
34378
  return isKey(v2) ? v2 : null;
34124
34379
  };
34125
34380
  }, [(_j = opts.selection) == null ? void 0 : _j.key]);
34126
- const [selectedIdsArr, setSelectedIdsArr] = React74.useState([]);
34127
- const selectedCacheRef = React74.useRef(/* @__PURE__ */ new Map());
34128
- const didMountRef = React74.useRef(false);
34129
- const skipNextModeEffectRef = React74.useRef(false);
34130
- const dataById = React74.useMemo(() => {
34381
+ const [selectedIdsArr, setSelectedIdsArr] = React76.useState([]);
34382
+ const selectedCacheRef = React76.useRef(/* @__PURE__ */ new Map());
34383
+ const didMountRef = React76.useRef(false);
34384
+ const skipNextModeEffectRef = React76.useRef(false);
34385
+ const dataById = React76.useMemo(() => {
34131
34386
  const map = /* @__PURE__ */ new Map();
34132
34387
  if (selectionMode === "none") return map;
34133
34388
  for (const item of data) {
@@ -34137,10 +34392,10 @@ function useData(opts, deps = []) {
34137
34392
  }
34138
34393
  return map;
34139
34394
  }, [data, getItemKey, selectionMode]);
34140
- const normalizeIds = React74.useCallback((v2) => {
34395
+ const normalizeIds = React76.useCallback((v2) => {
34141
34396
  return Array.isArray(v2) ? v2 : [v2];
34142
34397
  }, []);
34143
- const commitSelectedCache = React74.useCallback(
34398
+ const commitSelectedCache = React76.useCallback(
34144
34399
  (list) => {
34145
34400
  if (selectionMode === "none") return;
34146
34401
  for (const item of list) {
@@ -34151,7 +34406,7 @@ function useData(opts, deps = []) {
34151
34406
  },
34152
34407
  [getItemKey, selectionMode]
34153
34408
  );
34154
- const fetchImpl = React74.useCallback(
34409
+ const fetchImpl = React76.useCallback(
34155
34410
  async (override2) => {
34156
34411
  var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
34157
34412
  if (!enabled) return dataRef.current;
@@ -34234,14 +34489,14 @@ function useData(opts, deps = []) {
34234
34489
  getItemKey
34235
34490
  ]
34236
34491
  );
34237
- const refresh = React74.useCallback(async () => {
34492
+ const refresh = React76.useCallback(async () => {
34238
34493
  return fetchImpl();
34239
34494
  }, [fetchImpl]);
34240
- const override = React74.useCallback((newData) => {
34495
+ const override = React76.useCallback((newData) => {
34241
34496
  setData(newData);
34242
34497
  }, []);
34243
- const setQuery = React74.useCallback((q2) => _setQuery(q2), []);
34244
- const setSearchMode = React74.useCallback(
34498
+ const setQuery = React76.useCallback((q2) => _setQuery(q2), []);
34499
+ const setSearchMode = React76.useCallback(
34245
34500
  (m2) => {
34246
34501
  inflight.abort(inflightKeyRef.current);
34247
34502
  if (m2 === "remote" || m2 === "hybrid") {
@@ -34260,27 +34515,27 @@ function useData(opts, deps = []) {
34260
34515
  },
34261
34516
  [fetchImpl, inflight]
34262
34517
  );
34263
- const setSearchTarget = React74.useCallback((t4) => {
34518
+ const setSearchTarget = React76.useCallback((t4) => {
34264
34519
  _setSearchTarget(t4);
34265
34520
  }, []);
34266
- const setFilters = React74.useCallback(
34521
+ const setFilters = React76.useCallback(
34267
34522
  (next) => _setFilters(next),
34268
34523
  []
34269
34524
  );
34270
- const patchFilters = React74.useCallback((patch) => {
34525
+ const patchFilters = React76.useCallback((patch) => {
34271
34526
  _setFilters((prev) => ({
34272
34527
  ...prev != null ? prev : {},
34273
34528
  ...patch
34274
34529
  }));
34275
34530
  }, []);
34276
- const clearFilters = React74.useCallback(() => _setFilters(void 0), []);
34531
+ const clearFilters = React76.useCallback(() => _setFilters(void 0), []);
34277
34532
  const fetchOnMount = (_k = opts.fetchOnMount) != null ? _k : !opts.initial;
34278
- React74.useEffect(() => {
34533
+ React76.useEffect(() => {
34279
34534
  if (!enabled) return;
34280
34535
  if (!fetchOnMount) return;
34281
34536
  void fetchImpl();
34282
34537
  }, deps);
34283
- React74.useEffect(() => {
34538
+ React76.useEffect(() => {
34284
34539
  if (!enabled) return;
34285
34540
  if (!didMountRef.current) {
34286
34541
  didMountRef.current = true;
@@ -34299,14 +34554,14 @@ function useData(opts, deps = []) {
34299
34554
  inflight.abort(key);
34300
34555
  };
34301
34556
  }, [enabled, fetchImpl, inflight, query, searchMode, searchTarget]);
34302
- React74.useEffect(() => {
34557
+ React76.useEffect(() => {
34303
34558
  if (!enabled) return;
34304
34559
  if (opts.autoFetchOnFilterChange === false) return;
34305
34560
  if (!didMountRef.current) return;
34306
34561
  if (searchMode !== "remote" && searchMode !== "hybrid") return;
34307
34562
  void fetchImpl();
34308
34563
  }, [enabled, fetchImpl, filters, opts.autoFetchOnFilterChange, searchMode]);
34309
- const visible = React74.useMemo(() => {
34564
+ const visible = React76.useMemo(() => {
34310
34565
  if (searchMode !== "local" && searchMode !== "hybrid") return data;
34311
34566
  const payload = buildSearchPayloadFromTarget(searchTarget);
34312
34567
  let list = data;
@@ -34333,24 +34588,24 @@ function useData(opts, deps = []) {
34333
34588
  (item) => stringifyForSearch(item).toLowerCase().includes(ql)
34334
34589
  );
34335
34590
  }, [data, getItemKey, query, searchMode, searchTarget]);
34336
- const selectedIds = React74.useMemo(() => {
34591
+ const selectedIds = React76.useMemo(() => {
34337
34592
  var _a2;
34338
34593
  if (selectionMode === "none") return null;
34339
34594
  if (selectionMode === "single") return (_a2 = selectedIdsArr[0]) != null ? _a2 : null;
34340
34595
  return selectedIdsArr;
34341
34596
  }, [selectionMode, selectedIdsArr]);
34342
- const isSelected = React74.useCallback(
34597
+ const isSelected = React76.useCallback(
34343
34598
  (id) => {
34344
34599
  if (selectionMode === "none") return false;
34345
34600
  return selectedIdsArr.includes(id);
34346
34601
  },
34347
34602
  [selectedIdsArr, selectionMode]
34348
34603
  );
34349
- const clearSelection = React74.useCallback(() => {
34604
+ const clearSelection = React76.useCallback(() => {
34350
34605
  if (selectionMode === "none") return;
34351
34606
  setSelectedIdsArr([]);
34352
34607
  }, [selectionMode]);
34353
- const select = React74.useCallback(
34608
+ const select = React76.useCallback(
34354
34609
  (idOrIds) => {
34355
34610
  if (selectionMode === "none") return;
34356
34611
  const ids = normalizeIds(idOrIds).filter(isKey);
@@ -34367,7 +34622,7 @@ function useData(opts, deps = []) {
34367
34622
  },
34368
34623
  [dataById, normalizeIds, selectionMode]
34369
34624
  );
34370
- const deselect = React74.useCallback(
34625
+ const deselect = React76.useCallback(
34371
34626
  (idOrIds) => {
34372
34627
  if (selectionMode === "none") return;
34373
34628
  const ids = new Set(normalizeIds(idOrIds).filter(isKey));
@@ -34380,7 +34635,7 @@ function useData(opts, deps = []) {
34380
34635
  },
34381
34636
  [normalizeIds, selectionMode]
34382
34637
  );
34383
- const toggle = React74.useCallback(
34638
+ const toggle = React76.useCallback(
34384
34639
  (id) => {
34385
34640
  if (selectionMode === "none") return;
34386
34641
  const hit = dataById.get(id);
@@ -34398,7 +34653,7 @@ function useData(opts, deps = []) {
34398
34653
  },
34399
34654
  [dataById, selectionMode]
34400
34655
  );
34401
- const selected = React74.useMemo(() => {
34656
+ const selected = React76.useMemo(() => {
34402
34657
  var _a2, _b2, _c2, _d2;
34403
34658
  if (selectionMode === "none") return null;
34404
34659
  if (selectionMode === "single") {
@@ -34413,8 +34668,8 @@ function useData(opts, deps = []) {
34413
34668
  }
34414
34669
  return out;
34415
34670
  }, [dataById, selectedIdsArr, selectionMode]);
34416
- const getSelection = React74.useCallback(() => selected, [selected]);
34417
- React74.useEffect(() => {
34671
+ const getSelection = React76.useCallback(() => selected, [selected]);
34672
+ React76.useEffect(() => {
34418
34673
  if (selectionMode === "none") {
34419
34674
  setSelectedIdsArr([]);
34420
34675
  return;