@sustaina/shared-ui 1.41.0 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import * as React26 from 'react';
2
- import React26__default, { forwardRef, useRef, useMemo, useCallback, useState, isValidElement, useEffect, useLayoutEffect, createElement } from 'react';
1
+ import * as React27 from 'react';
2
+ import React27__default, { forwardRef, useRef, useMemo, useCallback, useState, isValidElement, useEffect, useLayoutEffect, createElement } from 'react';
3
3
  import { useRouter } from '@tanstack/react-router';
4
4
  import { create } from 'zustand';
5
5
  import clsx2, { clsx } from 'clsx';
@@ -18,6 +18,7 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
18
18
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
19
19
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
20
20
  import { reSplitAlphaNumeric, useReactTable, getCoreRowModel, getGroupedRowModel, getExpandedRowModel, getSortedRowModel, getFilteredRowModel, flexRender } from '@tanstack/react-table';
21
+ import { useVirtualizer } from '@tanstack/react-virtual';
21
22
  import * as SheetPrimitive from '@radix-ui/react-dialog';
22
23
  import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
23
24
  import i18n from 'i18next';
@@ -60,7 +61,6 @@ import { z } from 'zod';
60
61
  import Cropper from 'react-easy-crop';
61
62
  import { NumericFormat } from 'react-number-format';
62
63
  import { Command as Command$1 } from 'cmdk';
63
- import { useVirtualizer } from '@tanstack/react-virtual';
64
64
 
65
65
  var __defProp = Object.defineProperty;
66
66
  var __export = (target, all) => {
@@ -1947,6 +1947,68 @@ var UserFriendIcon = ({ size = "1em", className, ...props }) => /* @__PURE__ */
1947
1947
  }
1948
1948
  );
1949
1949
  var user_friend_default = UserFriendIcon;
1950
+ var UserGroupIcon = ({
1951
+ size = "1em",
1952
+ stroke = "currentColor",
1953
+ className,
1954
+ ...props
1955
+ }) => /* @__PURE__ */ jsxs(
1956
+ "svg",
1957
+ {
1958
+ viewBox: "0 0 18 18",
1959
+ xmlns: "http://www.w3.org/2000/svg",
1960
+ fill: "none",
1961
+ preserveAspectRatio: "xMidYMid meet",
1962
+ width: size,
1963
+ height: size,
1964
+ className,
1965
+ "aria-hidden": true,
1966
+ ...props,
1967
+ children: [
1968
+ /* @__PURE__ */ jsx(
1969
+ "path",
1970
+ {
1971
+ d: "M12 15.75V14.25C12 13.4544 11.6839 12.6913 11.1213 12.1287C10.5587 11.5661 9.79565 11.25 9 11.25H4.5C3.70435 11.25 2.94129 11.5661 2.37868 12.1287C1.81607 12.6913 1.5 13.4544 1.5 14.25V15.75",
1972
+ stroke,
1973
+ strokeWidth: "1.5",
1974
+ strokeLinecap: "round",
1975
+ strokeLinejoin: "round"
1976
+ }
1977
+ ),
1978
+ /* @__PURE__ */ jsx(
1979
+ "path",
1980
+ {
1981
+ d: "M12 2.34595C12.6433 2.51272 13.213 2.8884 13.6198 3.41399C14.0265 3.93959 14.2471 4.58536 14.2471 5.24995C14.2471 5.91453 14.0265 6.5603 13.6198 7.0859C13.213 7.6115 12.6433 7.98717 12 8.15395",
1982
+ stroke,
1983
+ strokeWidth: "1.5",
1984
+ strokeLinecap: "round",
1985
+ strokeLinejoin: "round"
1986
+ }
1987
+ ),
1988
+ /* @__PURE__ */ jsx(
1989
+ "path",
1990
+ {
1991
+ d: "M16.5 15.7499V14.2499C16.4995 13.5852 16.2783 12.9395 15.871 12.4141C15.4638 11.8888 14.8936 11.5136 14.25 11.3474",
1992
+ stroke,
1993
+ strokeWidth: "1.5",
1994
+ strokeLinecap: "round",
1995
+ strokeLinejoin: "round"
1996
+ }
1997
+ ),
1998
+ /* @__PURE__ */ jsx(
1999
+ "path",
2000
+ {
2001
+ d: "M6.75 8.25C8.40685 8.25 9.75 6.90685 9.75 5.25C9.75 3.59315 8.40685 2.25 6.75 2.25C5.09315 2.25 3.75 3.59315 3.75 5.25C3.75 6.90685 5.09315 8.25 6.75 8.25Z",
2002
+ stroke,
2003
+ strokeWidth: "1.5",
2004
+ strokeLinecap: "round",
2005
+ strokeLinejoin: "round"
2006
+ }
2007
+ )
2008
+ ]
2009
+ }
2010
+ );
2011
+ var user_group_default = UserGroupIcon;
1950
2012
  var UserIcon = ({ size = "1em", className, ...props }) => /* @__PURE__ */ jsxs(
1951
2013
  "svg",
1952
2014
  {
@@ -2542,7 +2604,7 @@ var OPERATOR_LABEL = {
2542
2604
  containsAll: "Contains all of"
2543
2605
  };
2544
2606
  var OperatorSelect = ({ row, operators, onChangeOperator, error }) => {
2545
- React26__default.useEffect(() => {
2607
+ React27__default.useEffect(() => {
2546
2608
  if (!operators.length) return;
2547
2609
  if (!operators.includes(row.operator)) {
2548
2610
  onChangeOperator(operators[0]);
@@ -2578,15 +2640,15 @@ function Label2({ className, ...props }) {
2578
2640
  );
2579
2641
  }
2580
2642
  var Form = FormProvider;
2581
- var FormFieldContext = React26.createContext({});
2643
+ var FormFieldContext = React27.createContext({});
2582
2644
  var FormField = ({
2583
2645
  ...props
2584
2646
  }) => {
2585
2647
  return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
2586
2648
  };
2587
2649
  var useFormField = () => {
2588
- const fieldContext = React26.useContext(FormFieldContext);
2589
- const itemContext = React26.useContext(FormItemContext);
2650
+ const fieldContext = React27.useContext(FormFieldContext);
2651
+ const itemContext = React27.useContext(FormItemContext);
2590
2652
  const { getFieldState } = useFormContext();
2591
2653
  const formState = useFormState({ name: fieldContext.name });
2592
2654
  const fieldState = getFieldState(fieldContext.name, formState);
@@ -2603,9 +2665,9 @@ var useFormField = () => {
2603
2665
  ...fieldState
2604
2666
  };
2605
2667
  };
2606
- var FormItemContext = React26.createContext({});
2668
+ var FormItemContext = React27.createContext({});
2607
2669
  function FormItem({ className, ...props }) {
2608
- const id = React26.useId();
2670
+ const id = React27.useId();
2609
2671
  return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx("div", { "data-slot": "form-item", className: cn("grid gap-2", className), ...props }) });
2610
2672
  }
2611
2673
  function FormLabel({ className, ...props }) {
@@ -2709,7 +2771,7 @@ var Spinner = ({ className, variant, size = "default", ...props }) => /* @__PURE
2709
2771
  ]
2710
2772
  }
2711
2773
  );
2712
- var InputPrimitive = React26.forwardRef(
2774
+ var InputPrimitive = React27.forwardRef(
2713
2775
  ({ className, type = "text", ...props }, ref) => {
2714
2776
  return /* @__PURE__ */ jsx(
2715
2777
  "input",
@@ -2748,7 +2810,7 @@ var inputVariants = cva("", {
2748
2810
  appearance: "filled"
2749
2811
  }
2750
2812
  });
2751
- var Input = React26.forwardRef(
2813
+ var Input = React27.forwardRef(
2752
2814
  ({
2753
2815
  className,
2754
2816
  wrapperClassName,
@@ -2781,8 +2843,8 @@ var Input = React26.forwardRef(
2781
2843
  onChange: onChangeProp
2782
2844
  } = rest;
2783
2845
  const ariaInvalid = invalid ?? ariaInvalidProp;
2784
- const messageId = React26.useId();
2785
- const handleChange = React26.useCallback(
2846
+ const messageId = React27.useId();
2847
+ const handleChange = React27.useCallback(
2786
2848
  (event) => {
2787
2849
  onChangeProp?.(event);
2788
2850
  onValueChange?.(event.target.value);
@@ -3170,20 +3232,20 @@ function DatePicker({
3170
3232
  className,
3171
3233
  ...props
3172
3234
  }) {
3173
- const today = React26.useMemo(() => startOfDay(/* @__PURE__ */ new Date()), []);
3174
- const [displayed, setDisplayed] = React26.useState(
3235
+ const today = React27.useMemo(() => startOfDay(/* @__PURE__ */ new Date()), []);
3236
+ const [displayed, setDisplayed] = React27.useState(
3175
3237
  selectedDate ? new Date(selectedDate) : /* @__PURE__ */ new Date()
3176
3238
  );
3177
3239
  minDate = clampToDay(minDate);
3178
3240
  maxDate = clampToDay(maxDate);
3179
- const disabledSet = React26.useMemo(() => {
3241
+ const disabledSet = React27.useMemo(() => {
3180
3242
  const s = /* @__PURE__ */ new Set();
3181
3243
  disabledDates?.forEach((d) => s.add(startOfDay(d).toISOString()));
3182
3244
  return s;
3183
3245
  }, [disabledDates]);
3184
3246
  const displayYear = displayed.getFullYear();
3185
3247
  const displayMonth = displayed.getMonth();
3186
- const weekdays = React26.useMemo(() => {
3248
+ const weekdays = React27.useMemo(() => {
3187
3249
  const labels = [];
3188
3250
  for (let i = 0; i < 7; i++) {
3189
3251
  const idx = i;
@@ -3192,7 +3254,7 @@ function DatePicker({
3192
3254
  }
3193
3255
  return labels;
3194
3256
  }, [callbacks]);
3195
- const grid = React26.useMemo(() => buildCalendarGrid(displayed, true), [displayed]);
3257
+ const grid = React27.useMemo(() => buildCalendarGrid(displayed, true), [displayed]);
3196
3258
  const isDateDisabled = (date) => {
3197
3259
  const d = startOfDay(date);
3198
3260
  if (minDate && d < minDate) return true;
@@ -3202,7 +3264,7 @@ function DatePicker({
3202
3264
  };
3203
3265
  const minYear = minDate?.getFullYear();
3204
3266
  const maxYear = maxDate?.getFullYear();
3205
- const getMonthLabel = React26.useCallback(
3267
+ const getMonthLabel = React27.useCallback(
3206
3268
  (year, monthIndex) => {
3207
3269
  const label = callbacks?.monthLabel?.(year, monthIndex);
3208
3270
  if (label === null || label === void 0) {
@@ -3212,7 +3274,7 @@ function DatePicker({
3212
3274
  },
3213
3275
  [callbacks]
3214
3276
  );
3215
- const getYearLabel = React26.useCallback(
3277
+ const getYearLabel = React27.useCallback(
3216
3278
  (year) => {
3217
3279
  const label = callbacks?.yearLabel?.(year);
3218
3280
  if (label === null || label === void 0) return String(year);
@@ -3220,7 +3282,7 @@ function DatePicker({
3220
3282
  },
3221
3283
  [callbacks]
3222
3284
  );
3223
- const clampMonthToBounds = React26.useCallback(
3285
+ const clampMonthToBounds = React27.useCallback(
3224
3286
  (year, monthIndex) => {
3225
3287
  let output = monthIndex;
3226
3288
  if (typeof minYear === "number" && year === minYear && minDate) {
@@ -3235,7 +3297,7 @@ function DatePicker({
3235
3297
  },
3236
3298
  [maxDate, minDate, maxYear, minYear]
3237
3299
  );
3238
- const yearOptions = React26.useMemo(() => {
3300
+ const yearOptions = React27.useMemo(() => {
3239
3301
  const fallbackWindow = 50;
3240
3302
  const start = typeof minYear === "number" ? minYear : displayYear - fallbackWindow;
3241
3303
  const end = typeof maxYear === "number" ? maxYear : displayYear + fallbackWindow;
@@ -3256,7 +3318,7 @@ function DatePicker({
3256
3318
  }
3257
3319
  return years;
3258
3320
  }, [displayYear, maxYear, minYear, selectedDate]);
3259
- const monthOptions = React26.useMemo(() => {
3321
+ const monthOptions = React27.useMemo(() => {
3260
3322
  const months = Array.from({ length: 12 }, (_, monthIndex) => {
3261
3323
  const disabled = typeof minYear === "number" && displayYear === minYear && minDate && monthIndex < minDate.getMonth() || typeof maxYear === "number" && displayYear === maxYear && maxDate && monthIndex > maxDate.getMonth();
3262
3324
  return {
@@ -3275,7 +3337,7 @@ function DatePicker({
3275
3337
  }
3276
3338
  return months.sort((a, b) => a.value - b.value).filter((option, index, arr) => index === 0 || option.value !== arr[index - 1].value);
3277
3339
  }, [displayMonth, displayYear, getMonthLabel, maxDate, maxYear, minDate, minYear]);
3278
- const handleMonthSelect = React26.useCallback((nextValue) => {
3340
+ const handleMonthSelect = React27.useCallback((nextValue) => {
3279
3341
  const nextMonth = Number.parseInt(nextValue, 10);
3280
3342
  if (Number.isNaN(nextMonth)) return;
3281
3343
  setDisplayed((prev) => {
@@ -3285,7 +3347,7 @@ function DatePicker({
3285
3347
  return next;
3286
3348
  });
3287
3349
  }, []);
3288
- const handleYearSelect = React26.useCallback(
3350
+ const handleYearSelect = React27.useCallback(
3289
3351
  (nextValue) => {
3290
3352
  const nextYear = Number.parseInt(nextValue, 10);
3291
3353
  if (Number.isNaN(nextYear)) return;
@@ -3433,14 +3495,14 @@ var DatePicker2 = ({
3433
3495
  ariaLabel,
3434
3496
  ...calendarProps
3435
3497
  }) => {
3436
- const [open, setOpen] = React26__default.useState(false);
3437
- const parser = React26__default.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);
3438
- const outputFormatter = React26__default.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);
3439
- const labelFormatter = React26__default.useMemo(
3498
+ const [open, setOpen] = React27__default.useState(false);
3499
+ const parser = React27__default.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);
3500
+ const outputFormatter = React27__default.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);
3501
+ const labelFormatter = React27__default.useMemo(
3440
3502
  () => displayFormatter ?? defaultDisplayFormatter,
3441
3503
  [displayFormatter]
3442
3504
  );
3443
- const parsedValue = React26__default.useMemo(() => {
3505
+ const parsedValue = React27__default.useMemo(() => {
3444
3506
  if (value === null || value === void 0) return void 0;
3445
3507
  if (value instanceof Date) return value;
3446
3508
  const parsed = parser(value);
@@ -3449,26 +3511,26 @@ var DatePicker2 = ({
3449
3511
  const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder2;
3450
3512
  const buttonAriaLabel = ariaLabel ?? (parsedValue ? `Change date, current selection ${labelFormatter(parsedValue)}` : "Open date picker");
3451
3513
  const shouldShowClear = allowClear && !disabled && !!parsedValue;
3452
- const handleClose = React26__default.useCallback(() => setOpen(false), []);
3453
- const emitChange = React26__default.useCallback(
3514
+ const handleClose = React27__default.useCallback(() => setOpen(false), []);
3515
+ const emitChange = React27__default.useCallback(
3454
3516
  (next) => {
3455
3517
  onChange?.(next);
3456
3518
  onValueChange?.(next ? outputFormatter(next) : void 0);
3457
3519
  },
3458
3520
  [onChange, onValueChange, outputFormatter]
3459
3521
  );
3460
- const handleSelect = React26__default.useCallback(
3522
+ const handleSelect = React27__default.useCallback(
3461
3523
  (next) => {
3462
3524
  emitChange(next);
3463
3525
  if (closeOnSelect && next) handleClose();
3464
3526
  },
3465
3527
  [closeOnSelect, emitChange, handleClose]
3466
3528
  );
3467
- const handleClear = React26__default.useCallback(() => {
3529
+ const handleClear = React27__default.useCallback(() => {
3468
3530
  emitChange(void 0);
3469
3531
  handleClose();
3470
3532
  }, [emitChange, handleClose]);
3471
- const handleOpenChange = React26__default.useCallback(
3533
+ const handleOpenChange = React27__default.useCallback(
3472
3534
  (nextOpen) => {
3473
3535
  if (disabled && nextOpen) return;
3474
3536
  setOpen(nextOpen);
@@ -3658,15 +3720,15 @@ function MonthCal({
3658
3720
  onYearBackward,
3659
3721
  onYearForward
3660
3722
  }) {
3661
- const today = React26.useMemo(() => {
3723
+ const today = React27.useMemo(() => {
3662
3724
  const now = /* @__PURE__ */ new Date();
3663
3725
  now.setDate(1);
3664
3726
  now.setHours(0, 0, 0, 0);
3665
3727
  return now;
3666
3728
  }, []);
3667
- const selectedMonthDate = React26.useMemo(() => normalizeMonth(selectedDate), [selectedDate]);
3668
- const min = React26.useMemo(() => normalizeMonth(minDate), [minDate]);
3669
- const max = React26.useMemo(() => normalizeMonth(maxDate), [maxDate]);
3729
+ const selectedMonthDate = React27.useMemo(() => normalizeMonth(selectedDate), [selectedDate]);
3730
+ const min = React27.useMemo(() => normalizeMonth(minDate), [minDate]);
3731
+ const max = React27.useMemo(() => normalizeMonth(maxDate), [maxDate]);
3670
3732
  let effectiveMin = min;
3671
3733
  if (min && max && min > max) {
3672
3734
  effectiveMin = max;
@@ -3675,10 +3737,10 @@ function MonthCal({
3675
3737
  const minMonth = effectiveMin?.getMonth();
3676
3738
  const maxYear = max?.getFullYear();
3677
3739
  const maxMonth = max?.getMonth();
3678
- const [menuYear, setMenuYear] = React26.useState(
3740
+ const [menuYear, setMenuYear] = React27.useState(
3679
3741
  () => selectedMonthDate?.getFullYear() ?? today.getFullYear()
3680
3742
  );
3681
- React26.useEffect(() => {
3743
+ React27.useEffect(() => {
3682
3744
  if (selectedMonthDate) {
3683
3745
  const year = selectedMonthDate.getFullYear();
3684
3746
  if (year !== menuYear) {
@@ -3686,7 +3748,7 @@ function MonthCal({
3686
3748
  }
3687
3749
  }
3688
3750
  }, [selectedMonthDate, menuYear]);
3689
- React26.useEffect(() => {
3751
+ React27.useEffect(() => {
3690
3752
  if (typeof minYear === "number" && menuYear < minYear) {
3691
3753
  setMenuYear(minYear);
3692
3754
  return;
@@ -3697,7 +3759,7 @@ function MonthCal({
3697
3759
  }, [minYear, maxYear, menuYear]);
3698
3760
  const disablePrevYear = typeof minYear === "number" ? menuYear <= minYear : false;
3699
3761
  const disableNextYear = typeof maxYear === "number" ? menuYear >= maxYear : false;
3700
- const yearOptions = React26.useMemo(() => {
3762
+ const yearOptions = React27.useMemo(() => {
3701
3763
  const fallbackWindow = 50;
3702
3764
  const start = typeof minYear === "number" ? minYear : menuYear - fallbackWindow;
3703
3765
  const end = typeof maxYear === "number" ? maxYear : menuYear + fallbackWindow;
@@ -3711,7 +3773,7 @@ function MonthCal({
3711
3773
  }
3712
3774
  return years;
3713
3775
  }, [maxYear, menuYear, minYear]);
3714
- const formatYearLabel = React26.useCallback(
3776
+ const formatYearLabel = React27.useCallback(
3715
3777
  (year) => {
3716
3778
  const raw = callbacks?.yearLabel?.(year);
3717
3779
  if (raw === null || raw === void 0) return String(year);
@@ -3719,7 +3781,7 @@ function MonthCal({
3719
3781
  },
3720
3782
  [callbacks]
3721
3783
  );
3722
- const handleYearSelect = React26.useCallback(
3784
+ const handleYearSelect = React27.useCallback(
3723
3785
  (nextValue) => {
3724
3786
  const nextYear = Number.parseInt(nextValue, 10);
3725
3787
  if (Number.isNaN(nextYear)) return;
@@ -3729,7 +3791,7 @@ function MonthCal({
3729
3791
  },
3730
3792
  [maxYear, minYear]
3731
3793
  );
3732
- const disabledPairs = React26.useMemo(() => {
3794
+ const disabledPairs = React27.useMemo(() => {
3733
3795
  if (!disabledDates?.length) return [];
3734
3796
  const pairs = [];
3735
3797
  disabledDates.forEach((date) => {
@@ -3874,14 +3936,14 @@ var MonthPicker2 = ({
3874
3936
  ariaLabel,
3875
3937
  ...calendarProps
3876
3938
  }) => {
3877
- const [open, setOpen] = React26__default.useState(false);
3878
- const parser = React26__default.useMemo(() => valueParser ?? defaultValueParser2, [valueParser]);
3879
- const outputFormatter = React26__default.useMemo(() => valueFormatter ?? defaultValueFormatter2, [valueFormatter]);
3880
- const labelFormatter = React26__default.useMemo(
3939
+ const [open, setOpen] = React27__default.useState(false);
3940
+ const parser = React27__default.useMemo(() => valueParser ?? defaultValueParser2, [valueParser]);
3941
+ const outputFormatter = React27__default.useMemo(() => valueFormatter ?? defaultValueFormatter2, [valueFormatter]);
3942
+ const labelFormatter = React27__default.useMemo(
3881
3943
  () => displayFormatter ?? defaultDisplayFormatter2,
3882
3944
  [displayFormatter]
3883
3945
  );
3884
- const parsedValue = React26__default.useMemo(() => {
3946
+ const parsedValue = React27__default.useMemo(() => {
3885
3947
  if (value === null || value === void 0) return void 0;
3886
3948
  if (value instanceof Date) return normalizeMonth2(value);
3887
3949
  if (typeof value === "string") {
@@ -3893,8 +3955,8 @@ var MonthPicker2 = ({
3893
3955
  const buttonLabel = parsedValue ? labelFormatter(parsedValue) : placeholder2;
3894
3956
  const buttonAriaLabel = ariaLabel ?? (parsedValue ? `Change month, current selection ${labelFormatter(parsedValue)}` : "Open month picker");
3895
3957
  const shouldShowClear = allowClear && !disabled && !!parsedValue;
3896
- const handleClose = React26__default.useCallback(() => setOpen(false), []);
3897
- const emitChange = React26__default.useCallback(
3958
+ const handleClose = React27__default.useCallback(() => setOpen(false), []);
3959
+ const emitChange = React27__default.useCallback(
3898
3960
  (next) => {
3899
3961
  const normalized = next ? normalizeMonth2(next) : void 0;
3900
3962
  onChange?.(normalized);
@@ -3902,18 +3964,18 @@ var MonthPicker2 = ({
3902
3964
  },
3903
3965
  [onChange, onValueChange, outputFormatter]
3904
3966
  );
3905
- const handleSelect = React26__default.useCallback(
3967
+ const handleSelect = React27__default.useCallback(
3906
3968
  (next) => {
3907
3969
  emitChange(next);
3908
3970
  if (closeOnSelect && next) handleClose();
3909
3971
  },
3910
3972
  [closeOnSelect, emitChange, handleClose]
3911
3973
  );
3912
- const handleClear = React26__default.useCallback(() => {
3974
+ const handleClear = React27__default.useCallback(() => {
3913
3975
  emitChange(void 0);
3914
3976
  handleClose();
3915
3977
  }, [emitChange, handleClose]);
3916
- const handleOpenChange = React26__default.useCallback(
3978
+ const handleOpenChange = React27__default.useCallback(
3917
3979
  (nextOpen) => {
3918
3980
  if (disabled && nextOpen) return;
3919
3981
  setOpen(nextOpen);
@@ -5189,7 +5251,7 @@ var AdvanceSearch = ({
5189
5251
  defaultValues: {}
5190
5252
  });
5191
5253
  const { handleSubmit, unregister, resetField, getValues, clearErrors, setError } = form;
5192
- const [operatorErrors, setOperatorErrors] = React26__default.useState({});
5254
+ const [operatorErrors, setOperatorErrors] = React27__default.useState({});
5193
5255
  const clearOperatorError = useCallback(
5194
5256
  (rowId) => {
5195
5257
  setOperatorErrors((prev) => {
@@ -5610,14 +5672,14 @@ var useControllableState = ({
5610
5672
  value
5611
5673
  }) => {
5612
5674
  const isControlled = typeof value !== "undefined";
5613
- const [internalValue, setInternalValue] = React26.useState(() => {
5675
+ const [internalValue, setInternalValue] = React27.useState(() => {
5614
5676
  return isControlled ? value : defaultValue;
5615
5677
  });
5616
- React26.useEffect(() => {
5678
+ React27.useEffect(() => {
5617
5679
  if (!isControlled) return;
5618
5680
  setInternalValue(value);
5619
5681
  }, [isControlled, value]);
5620
- const setValue = React26.useCallback(
5682
+ const setValue = React27.useCallback(
5621
5683
  (nextValue) => {
5622
5684
  if (isControlled) return;
5623
5685
  setInternalValue(nextValue);
@@ -5632,6 +5694,16 @@ var useControllableState = ({
5632
5694
  };
5633
5695
  var useControllableState_default = useControllableState;
5634
5696
  var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
5697
+ var useBindRef = ({ ref, value }) => {
5698
+ React27.useEffect(() => {
5699
+ if (!ref) return;
5700
+ ref.current = value;
5701
+ return () => {
5702
+ ref.current = null;
5703
+ };
5704
+ }, [ref, value]);
5705
+ };
5706
+ var useBindRef_default = useBindRef;
5635
5707
  var HeaderCell = ({
5636
5708
  rootClassName,
5637
5709
  labelClassName,
@@ -5798,38 +5870,6 @@ function TableCaption({ className, ...props }) {
5798
5870
  }
5799
5871
  );
5800
5872
  }
5801
- var ColumnResizer = ({ header, className, style }) => {
5802
- if (!header.column.getCanResize()) {
5803
- return null;
5804
- }
5805
- const resizeHandler = header.getResizeHandler();
5806
- return /* @__PURE__ */ jsx(
5807
- "div",
5808
- {
5809
- className: cn(
5810
- "z-[2] absolute top-0 right-0 h-full w-1 select-none touch-none cursor-col-resize hover:bg-[#41875c]/45 active:bg-[#41875c]",
5811
- className
5812
- ),
5813
- onDoubleClick: () => header.column.resetSize(),
5814
- onTouchStart: resizeHandler,
5815
- onMouseDown: resizeHandler,
5816
- style
5817
- }
5818
- );
5819
- };
5820
- var ColumnResizer_default = ColumnResizer;
5821
- var ColumnSeparator = ({ show, className, ...props }) => {
5822
- if (!show) return null;
5823
- return /* @__PURE__ */ jsx(
5824
- "span",
5825
- {
5826
- "data-slot": "table-head-separator",
5827
- className: cn("absolute right-0 top-1/2 h-4 w-px -translate-y-1/2 bg-gray-300", className),
5828
- ...props
5829
- }
5830
- );
5831
- };
5832
- var ColumnSeparator_default = React26__default.memo(ColumnSeparator);
5833
5873
  var StatusContentSlot = ({
5834
5874
  content,
5835
5875
  icon,
@@ -5848,7 +5888,7 @@ var StatusContentSlot = ({
5848
5888
  content
5849
5889
  ] });
5850
5890
  };
5851
- var StatusContentSlot_default = React26__default.memo(StatusContentSlot);
5891
+ var StatusContentSlot_default = React27__default.memo(StatusContentSlot);
5852
5892
  var stateOptions = [
5853
5893
  "columnFilters",
5854
5894
  "globalFilter",
@@ -6014,45 +6054,8 @@ var DataTableDevTool = ({ table }) => {
6014
6054
  ] });
6015
6055
  };
6016
6056
  var DataTableDevTool_default = DataTableDevTool;
6017
-
6018
- // src/components/data-table/helpers.ts
6019
- function getColumnPinningInfo(column) {
6020
- const isPinned = column.getIsPinned();
6021
- const isLastLeftPinnedColumn = isPinned === "left" && column.getIsLastColumn("left");
6022
- const isFirstRightPinnedColumn = isPinned === "right" && column.getIsFirstColumn("right");
6023
- return { isPinned, isLastLeftPinnedColumn, isFirstRightPinnedColumn };
6024
- }
6025
- function getColumnPinningStyles(column) {
6026
- const { isPinned, isFirstRightPinnedColumn, isLastLeftPinnedColumn } = getColumnPinningInfo(column);
6027
- const classes = cn(
6028
- isPinned ? "sticky" : "relative",
6029
- isPinned ? "z-[1]" : "z-0",
6030
- isLastLeftPinnedColumn && "shadow-[inset_-1px_0_0_0_black]",
6031
- isFirstRightPinnedColumn && "shadow-[inset_1px_0_0_0_black]"
6032
- );
6033
- const style = {
6034
- left: isPinned === "left" ? column.getStart("left") : void 0,
6035
- right: isPinned === "right" ? column.getAfter("right") : void 0
6036
- };
6037
- return { classes, style };
6038
- }
6039
- function getRowClickHandlers(handler, { rowData, row, table }) {
6040
- const handleClick = (event) => {
6041
- if (event.detail === 1) {
6042
- handler(rowData, { event, row, table, clickType: "single" });
6043
- }
6044
- if (event.detail >= 2) {
6045
- handler(rowData, { event, row, table, clickType: "double" });
6046
- }
6047
- };
6048
- return {
6049
- onClick: handleClick
6050
- };
6051
- }
6052
6057
  var fallbackData = [];
6053
- var DataTable = ({
6054
- tableRef,
6055
- isInitialLoading,
6058
+ var useTableController = ({
6056
6059
  columns,
6057
6060
  data,
6058
6061
  filters,
@@ -6064,14 +6067,8 @@ var DataTable = ({
6064
6067
  columnResizing,
6065
6068
  rowSelection,
6066
6069
  rowExpansion,
6067
- scrollFetch,
6068
- activeStatusContent,
6069
- statusContent,
6070
6070
  rowIdKey,
6071
- childrenKey,
6072
- onRowClick,
6073
- debug,
6074
- components
6071
+ childrenKey
6075
6072
  }) => {
6076
6073
  const table = useReactTable({
6077
6074
  // required properties
@@ -6124,7 +6121,6 @@ var DataTable = ({
6124
6121
  getSortedRowModel: !sorting?.manual && sorting?.enabled ? getSortedRowModel() : void 0,
6125
6122
  manualSorting: sorting?.enabled && (sorting?.manual ?? false),
6126
6123
  enableSorting: sorting?.enabled ?? false,
6127
- // default behavior: column with type number is sort by desc and string sort by asc first, we fix force always asc
6128
6124
  sortDescFirst: sorting?.enabled ? sorting?.sortDescFirst ?? false : false,
6129
6125
  onSortingChange: sorting?.enabled ? sorting?.onSortingChange : void 0,
6130
6126
  // ordering
@@ -6139,10 +6135,7 @@ var DataTable = ({
6139
6135
  enableMultiRowSelection: rowSelection?.enabled ? rowSelection?.multiSelect ?? true : true,
6140
6136
  onRowSelectionChange: rowSelection?.enabled ? rowSelection?.onSelectionChange : void 0,
6141
6137
  // row expanded
6142
- getExpandedRowModel: (
6143
- // when grouping is use then we should open this
6144
- !rowExpansion?.manual && rowExpansion?.enabled ? getExpandedRowModel() : void 0
6145
- ),
6138
+ getExpandedRowModel: !rowExpansion?.manual && rowExpansion?.enabled ? getExpandedRowModel() : void 0,
6146
6139
  manualExpanding: rowExpansion?.enabled && (rowExpansion?.manual ?? false),
6147
6140
  enableExpanding: rowExpansion?.enabled ?? false,
6148
6141
  getIsRowExpanded: rowExpansion?.enabled ? rowExpansion?.isRowExpanded : void 0,
@@ -6160,13 +6153,93 @@ var DataTable = ({
6160
6153
  columnResizeMode: columnResizing?.enabled ? columnResizing?.resizeMode ?? "onChange" : "onChange"
6161
6154
  })
6162
6155
  });
6163
- const tableContainerRef = useRef(null);
6156
+ return table;
6157
+ };
6158
+ var useScrollFetch = ({ scrollFetch, containerRef }) => {
6159
+ const fetchMoreOnScrollReached = useCallback(
6160
+ (containerRefElement) => {
6161
+ if (!scrollFetch?.enabled || !containerRefElement || scrollFetch?.isFetchingMore || !scrollFetch?.hasMore || !scrollFetch?.fetchMore) {
6162
+ return;
6163
+ }
6164
+ const { scrollHeight, scrollTop, clientHeight } = containerRefElement;
6165
+ const scrollableHeight = scrollHeight - clientHeight;
6166
+ const distanceToBottom = scrollableHeight - scrollTop;
6167
+ const ratioToBottom = scrollableHeight > 0 ? scrollTop / scrollableHeight : 1;
6168
+ const info = {
6169
+ scrollTop,
6170
+ scrollHeight,
6171
+ clientHeight,
6172
+ scrollableHeight,
6173
+ distanceToBottom,
6174
+ ratioToBottom,
6175
+ isTopReached: scrollTop === 0,
6176
+ isBottomReached: distanceToBottom <= 0
6177
+ };
6178
+ let shouldTrigger = false;
6179
+ if (typeof scrollFetch.scrollThreshold === "number") {
6180
+ shouldTrigger = info.ratioToBottom >= scrollFetch.scrollThreshold;
6181
+ } else if (typeof scrollFetch.scrollThreshold === "function") {
6182
+ shouldTrigger = scrollFetch.scrollThreshold(info);
6183
+ } else {
6184
+ shouldTrigger = info.ratioToBottom >= 0.7;
6185
+ }
6186
+ if (shouldTrigger) {
6187
+ scrollFetch.fetchMore();
6188
+ }
6189
+ },
6190
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6191
+ [scrollFetch?.enabled, scrollFetch?.isFetchingMore, scrollFetch?.hasMore, scrollFetch?.fetchMore]
6192
+ );
6193
+ useEffect(() => {
6194
+ fetchMoreOnScrollReached(containerRef.current);
6195
+ }, [fetchMoreOnScrollReached, containerRef]);
6196
+ return fetchMoreOnScrollReached;
6197
+ };
6198
+ var DEFAULT_ROW_HEIGHT = 40;
6199
+ var DEFAULT_OVER_SCAN = 10;
6200
+ var useTableVirtualizer = ({
6201
+ enabled,
6202
+ table,
6203
+ containerRef,
6204
+ virtual
6205
+ }) => {
6206
+ const rowModel = table.getRowModel().rows;
6207
+ const virtualizer = useVirtualizer({
6208
+ count: enabled ? rowModel.length : 0,
6209
+ useFlushSync: false,
6210
+ getScrollElement: () => containerRef.current,
6211
+ estimateSize: () => DEFAULT_ROW_HEIGHT,
6212
+ measureElement: typeof window !== "undefined" && navigator.userAgent.indexOf("Firefox") === -1 ? (element) => element?.getBoundingClientRect().height : void 0,
6213
+ overscan: virtual?.overscan ?? DEFAULT_OVER_SCAN
6214
+ });
6215
+ const virtualItems = enabled ? virtualizer.getVirtualItems() : [];
6216
+ const paddingTop = enabled && virtualItems.length > 0 ? virtualItems[0].start : 0;
6217
+ const paddingBottom = enabled && virtualItems.length > 0 ? virtualizer.getTotalSize() - virtualItems[virtualItems.length - 1].end : 0;
6218
+ return {
6219
+ virtualizer,
6220
+ virtualItems,
6221
+ paddingTop,
6222
+ paddingBottom,
6223
+ rowModel
6224
+ };
6225
+ };
6226
+ function useComputedTableState({
6227
+ table,
6228
+ rowModel,
6229
+ isInitialLoading,
6230
+ scrollFetch,
6231
+ activeStatusContent
6232
+ }) {
6164
6233
  const isTableEmpty = table.getCoreRowModel().rows.length === 0;
6165
- const isTableEmptyAfterFiltering = table.getRowModel().rows.length === 0;
6234
+ const isTableEmptyAfterFiltering = rowModel.length === 0;
6166
6235
  const isFiltering = table.getState().columnFilters.length > 0 || !!table.getState().globalFilter;
6167
6236
  const leftVisibleLeftColumns = table.getLeftVisibleLeafColumns();
6168
6237
  const centerVisibleLeafColumns = table.getCenterVisibleLeafColumns();
6169
6238
  const rightVisibleLeafColumns = table.getRightVisibleLeafColumns();
6239
+ const visibleColumnCount = Math.max(
6240
+ leftVisibleLeftColumns.length + centerVisibleLeafColumns.length + rightVisibleLeafColumns.length,
6241
+ 1
6242
+ );
6170
6243
  const { isSomeColumnsFilterable, filterableColumns } = useMemo(() => {
6171
6244
  const mergedColumns = [
6172
6245
  ...leftVisibleLeftColumns,
@@ -6203,50 +6276,329 @@ var DataTable = ({
6203
6276
  }
6204
6277
  return activeStatusContent;
6205
6278
  }, [activeStatusContent, autoStatusKey]);
6206
- const fetchMoreOnScrollReached = useCallback(
6207
- (containerRefElement) => {
6208
- if (!scrollFetch?.enabled || !containerRefElement || scrollFetch?.isFetchingMore || !scrollFetch?.hasMore || !scrollFetch?.fetchMore) {
6209
- return;
6210
- }
6211
- const { scrollHeight, scrollTop, clientHeight } = containerRefElement;
6212
- const scrollableHeight = scrollHeight - clientHeight;
6213
- const distanceToBottom = scrollableHeight - scrollTop;
6214
- const ratioToBottom = scrollableHeight > 0 ? scrollTop / scrollableHeight : 1;
6215
- const info = {
6216
- scrollTop,
6217
- scrollHeight,
6218
- clientHeight,
6219
- scrollableHeight,
6220
- distanceToBottom,
6221
- ratioToBottom,
6222
- isTopReached: scrollTop === 0,
6223
- isBottomReached: distanceToBottom <= 0
6224
- };
6225
- let shouldTrigger = false;
6226
- if (typeof scrollFetch.scrollThreshold === "number") {
6227
- shouldTrigger = info.ratioToBottom >= scrollFetch.scrollThreshold;
6228
- } else if (typeof scrollFetch.scrollThreshold === "function") {
6229
- shouldTrigger = scrollFetch.scrollThreshold(info);
6230
- } else {
6231
- shouldTrigger = info.ratioToBottom >= 0.7;
6279
+ return {
6280
+ isTableEmpty,
6281
+ isTableEmptyAfterFiltering,
6282
+ isFiltering,
6283
+ leftVisibleLeftColumns,
6284
+ centerVisibleLeafColumns,
6285
+ rightVisibleLeafColumns,
6286
+ visibleColumnCount,
6287
+ isSomeColumnsFilterable,
6288
+ filterableColumns,
6289
+ activeStatusContentComputed
6290
+ };
6291
+ }
6292
+ var ColumnResizer = ({ header, className, style }) => {
6293
+ if (!header.column.getCanResize()) {
6294
+ return null;
6295
+ }
6296
+ const resizeHandler = header.getResizeHandler();
6297
+ return /* @__PURE__ */ jsx(
6298
+ "div",
6299
+ {
6300
+ className: cn(
6301
+ "z-[2] absolute top-0 right-0 h-full w-1 select-none touch-none cursor-col-resize hover:bg-[#41875c]/45 active:bg-[#41875c]",
6302
+ className
6303
+ ),
6304
+ onDoubleClick: () => header.column.resetSize(),
6305
+ onTouchStart: resizeHandler,
6306
+ onMouseDown: resizeHandler,
6307
+ style
6308
+ }
6309
+ );
6310
+ };
6311
+ var ColumnResizer_default = ColumnResizer;
6312
+ var ColumnSeparator = ({ show, className, ...props }) => {
6313
+ if (!show) return null;
6314
+ return /* @__PURE__ */ jsx(
6315
+ "span",
6316
+ {
6317
+ "data-slot": "table-head-separator",
6318
+ className: cn("absolute right-0 top-1/2 h-4 w-px -translate-y-1/2 bg-gray-300", className),
6319
+ ...props
6320
+ }
6321
+ );
6322
+ };
6323
+ var ColumnSeparator_default = React27__default.memo(ColumnSeparator);
6324
+
6325
+ // src/components/data-table/helpers.ts
6326
+ function getColumnPinningInfo(column) {
6327
+ const isPinned = column.getIsPinned();
6328
+ const isLastLeftPinnedColumn = isPinned === "left" && column.getIsLastColumn("left");
6329
+ const isFirstRightPinnedColumn = isPinned === "right" && column.getIsFirstColumn("right");
6330
+ return { isPinned, isLastLeftPinnedColumn, isFirstRightPinnedColumn };
6331
+ }
6332
+ function getColumnPinningStyles(column) {
6333
+ const { isPinned, isFirstRightPinnedColumn, isLastLeftPinnedColumn } = getColumnPinningInfo(column);
6334
+ const classes = cn(isPinned ? "sticky" : "relative");
6335
+ const style = {
6336
+ left: isPinned === "left" ? column.getStart("left") : void 0,
6337
+ right: isPinned === "right" ? column.getAfter("right") : void 0,
6338
+ zIndex: isPinned ? 1 : 0,
6339
+ boxShadow: isLastLeftPinnedColumn ? "inset -1px 0 0 0 black" : isFirstRightPinnedColumn ? "inset 1px 0 0 0 black" : void 0
6340
+ };
6341
+ return { classes, style };
6342
+ }
6343
+ function getRowClickHandlers(handler, { rowData, row, table }) {
6344
+ const handleClick = (event) => {
6345
+ if (event.detail === 1) {
6346
+ handler(rowData, { event, row, table, clickType: "single" });
6347
+ }
6348
+ if (event.detail >= 2) {
6349
+ handler(rowData, { event, row, table, clickType: "double" });
6350
+ }
6351
+ };
6352
+ return {
6353
+ onClick: handleClick
6354
+ };
6355
+ }
6356
+ var TableHeaderRows = ({
6357
+ table,
6358
+ columnResizing,
6359
+ virtual,
6360
+ components
6361
+ }) => {
6362
+ return /* @__PURE__ */ jsx(Fragment, { children: table.getHeaderGroups().map((headerGroup) => {
6363
+ return /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => {
6364
+ const { classes, style } = getColumnPinningStyles(header.column);
6365
+ const useColumnSizing = header.column.columnDef?.meta?.useColumnSizing ?? columnResizing?.enabled ?? virtual?.enabled ?? false;
6366
+ const tableHeadCellProps = typeof components?.tableHeadCellProps === "function" ? components?.tableHeadCellProps({ header, table }) : components?.tableHeadCellProps;
6367
+ const nextHeader = headerGroup.headers?.[header.index + 1] || header;
6368
+ const { isLastLeftPinnedColumn } = getColumnPinningInfo(header.column);
6369
+ const { isFirstRightPinnedColumn } = getColumnPinningInfo(nextHeader.column);
6370
+ const headerGroupLength = header.headerGroup.headers.length;
6371
+ const showSeparator = header.index !== headerGroupLength - 1 && !isLastLeftPinnedColumn && !isFirstRightPinnedColumn;
6372
+ return /* @__PURE__ */ jsxs(
6373
+ TableHead,
6374
+ {
6375
+ "data-testid": `table-head-${header.id}`,
6376
+ colSpan: header.colSpan,
6377
+ ...tableHeadCellProps,
6378
+ ...header.column.columnDef?.meta?.headerProps,
6379
+ className: cn(
6380
+ classes,
6381
+ tableHeadCellProps?.className,
6382
+ header.column.columnDef?.meta?.headerProps?.className
6383
+ ),
6384
+ style: {
6385
+ ...style,
6386
+ width: useColumnSizing ? header.column.getSize() : void 0,
6387
+ minWidth: useColumnSizing ? header.column.columnDef.minSize : void 0,
6388
+ maxWidth: useColumnSizing ? header.column.columnDef.maxSize : void 0,
6389
+ ...tableHeadCellProps?.style,
6390
+ ...header.column.columnDef?.meta?.headerProps?.style
6391
+ },
6392
+ children: [
6393
+ header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()),
6394
+ /* @__PURE__ */ jsx(
6395
+ ColumnSeparator_default,
6396
+ {
6397
+ ...components?.columnSeparatorProps?.headerCell,
6398
+ ...header.column.columnDef?.meta?.columnSeparatorProps,
6399
+ show: header.column.columnDef?.meta?.columnSeparatorProps?.show ?? components?.columnSeparatorProps?.headerCell?.show ?? showSeparator
6400
+ }
6401
+ ),
6402
+ /* @__PURE__ */ jsx(ColumnResizer_default, { header, ...components?.columnResizerProps })
6403
+ ]
6404
+ },
6405
+ header.id
6406
+ );
6407
+ }) }, headerGroup.id);
6408
+ }) });
6409
+ };
6410
+ var TableFilterRow = ({
6411
+ table,
6412
+ filterableColumns,
6413
+ isSomeColumnsFilterable,
6414
+ columnResizing,
6415
+ virtual,
6416
+ components
6417
+ }) => {
6418
+ if (!isSomeColumnsFilterable) return null;
6419
+ return /* @__PURE__ */ jsx(TableRow, { "data-testid": "table-filter-row", children: filterableColumns.map((column) => {
6420
+ const { classes, style } = getColumnPinningStyles(column);
6421
+ const useColumnSizing = column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? virtual?.enabled ?? false;
6422
+ const tableFilterCellProps = typeof components?.tableFilterCellProps === "function" ? components?.tableFilterCellProps({ column, table }) : components?.tableFilterCellProps;
6423
+ return /* @__PURE__ */ jsx(
6424
+ TableCell,
6425
+ {
6426
+ "data-testid": `table-filter-cell-${column.id}`,
6427
+ ...tableFilterCellProps,
6428
+ ...column.columnDef?.meta?.filterCellProps,
6429
+ className: cn(
6430
+ "bg-white border-b",
6431
+ classes,
6432
+ tableFilterCellProps?.className,
6433
+ column.columnDef?.meta?.filterCellProps?.className
6434
+ ),
6435
+ style: {
6436
+ ...style,
6437
+ width: useColumnSizing ? column.getSize() : void 0,
6438
+ minWidth: useColumnSizing ? column.columnDef.minSize : void 0,
6439
+ maxWidth: useColumnSizing ? column.columnDef.maxSize : void 0,
6440
+ ...tableFilterCellProps?.style,
6441
+ ...column.columnDef?.meta?.filterCellProps?.style
6442
+ },
6443
+ children: column.getCanFilter() && column.columnDef.meta?.renderColumnFilter?.({
6444
+ column,
6445
+ table
6446
+ })
6447
+ },
6448
+ column.id
6449
+ );
6450
+ }) });
6451
+ };
6452
+ var TableDataRows = ({
6453
+ table,
6454
+ rowModel,
6455
+ virtualEnabled,
6456
+ virtualItems,
6457
+ virtualizer,
6458
+ paddingTop,
6459
+ paddingBottom,
6460
+ visibleColumnCount,
6461
+ columnResizing,
6462
+ virtual,
6463
+ onRowClick,
6464
+ components
6465
+ }) => {
6466
+ const config = virtualEnabled ? { items: virtualItems, isVirtualize: true, rowModel } : { items: rowModel, isVirtualize: false };
6467
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
6468
+ virtualEnabled && paddingTop > 0 && /* @__PURE__ */ jsx(TableRow, { "aria-hidden": "true", "data-testid": "table-virtual-padding-top", children: /* @__PURE__ */ jsx(
6469
+ TableCell,
6470
+ {
6471
+ className: "border-b-0 p-0 h-auto",
6472
+ colSpan: visibleColumnCount,
6473
+ style: { height: `${paddingTop}px` }
6232
6474
  }
6233
- if (shouldTrigger) {
6234
- scrollFetch.fetchMore();
6475
+ ) }),
6476
+ config.items.map((item) => {
6477
+ const row = config.isVirtualize ? config.rowModel[item.index] : item;
6478
+ if (!row) return null;
6479
+ const virtualIndex = config.isVirtualize ? item.index : void 0;
6480
+ const tableDataRowProps = typeof components?.tableDataRowProps === "function" ? components.tableDataRowProps({ row, table }) || {} : components?.tableDataRowProps || {};
6481
+ return /* @__PURE__ */ createElement(
6482
+ TableRow,
6483
+ {
6484
+ "data-testid": `table-data-row-${row.id}`,
6485
+ "data-index": virtualIndex,
6486
+ ref: config.isVirtualize ? (node) => virtualizer.measureElement(node) : void 0,
6487
+ ...tableDataRowProps,
6488
+ key: row.id,
6489
+ className: cn("group", tableDataRowProps?.className),
6490
+ "data-state": row.getIsSelected() ? "selected" : "non-selected",
6491
+ ...getRowClickHandlers(onRowClick ?? (() => {
6492
+ }), {
6493
+ rowData: row.original,
6494
+ row,
6495
+ table
6496
+ })
6497
+ },
6498
+ row.getVisibleCells().map((cell) => {
6499
+ const { classes, style } = getColumnPinningStyles(cell.column);
6500
+ const useColumnSizing = cell.column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? virtual?.enabled ?? false;
6501
+ const tableDataCellProps = typeof components?.tableDataCellProps === "function" ? components?.tableDataCellProps({ row, cell, table }) : components?.tableDataCellProps;
6502
+ return /* @__PURE__ */ jsx(
6503
+ TableCell,
6504
+ {
6505
+ "data-testid": `table-data-cell-${cell.id}`,
6506
+ "data-row-id": row.id,
6507
+ "data-column-id": cell.column.id,
6508
+ ...tableDataCellProps,
6509
+ ...cell.column.columnDef?.meta?.cellProps,
6510
+ className: cn(
6511
+ {
6512
+ "bg-[#dfeae3]": row.getIsSelected(),
6513
+ "bg-white group-hover:bg-sus-primary-3-hover": !row.getIsSelected()
6514
+ },
6515
+ classes,
6516
+ tableDataCellProps?.className,
6517
+ cell.column.columnDef?.meta?.cellProps?.className
6518
+ ),
6519
+ style: {
6520
+ ...style,
6521
+ width: useColumnSizing ? cell.column.getSize() : void 0,
6522
+ minWidth: useColumnSizing ? cell.column.columnDef.minSize : void 0,
6523
+ maxWidth: useColumnSizing ? cell.column.columnDef.maxSize : void 0,
6524
+ ...tableDataCellProps?.style,
6525
+ ...cell.column.columnDef?.meta?.cellProps?.style
6526
+ },
6527
+ children: flexRender(cell.column.columnDef.cell, cell.getContext())
6528
+ },
6529
+ cell.id
6530
+ );
6531
+ })
6532
+ );
6533
+ }),
6534
+ virtualEnabled && paddingBottom > 0 && /* @__PURE__ */ jsx(TableRow, { "aria-hidden": "true", "data-testid": "table-virtual-padding-bottom", children: /* @__PURE__ */ jsx(
6535
+ TableCell,
6536
+ {
6537
+ className: "border-b-0 p-0 h-auto",
6538
+ colSpan: visibleColumnCount,
6539
+ style: { height: `${paddingBottom}px` }
6235
6540
  }
6236
- },
6237
- // eslint-disable-next-line react-hooks/exhaustive-deps
6238
- [scrollFetch?.enabled, scrollFetch?.isFetchingMore, scrollFetch?.hasMore, scrollFetch?.fetchMore]
6239
- );
6240
- useEffect(() => {
6241
- if (!tableRef) return;
6242
- tableRef.current = table;
6243
- return () => {
6244
- tableRef.current = null;
6245
- };
6246
- }, [tableRef, table]);
6247
- useEffect(() => {
6248
- fetchMoreOnScrollReached(tableContainerRef.current);
6249
- }, [fetchMoreOnScrollReached]);
6541
+ ) })
6542
+ ] });
6543
+ };
6544
+ var DataTable = ({
6545
+ tableRef,
6546
+ virtualizerRef,
6547
+ isInitialLoading,
6548
+ columns,
6549
+ data,
6550
+ filters,
6551
+ sorting,
6552
+ columnOrder,
6553
+ columnVisibility,
6554
+ columnPinning,
6555
+ columnGrouping,
6556
+ columnResizing,
6557
+ rowSelection,
6558
+ rowExpansion,
6559
+ virtual,
6560
+ scrollFetch,
6561
+ activeStatusContent,
6562
+ statusContent,
6563
+ rowIdKey,
6564
+ childrenKey,
6565
+ onRowClick,
6566
+ debug,
6567
+ components
6568
+ }) => {
6569
+ const virtualEnabled = virtual?.enabled ?? false;
6570
+ const tableContainerRef = useRef(null);
6571
+ const table = useTableController({
6572
+ columns,
6573
+ data,
6574
+ filters,
6575
+ sorting,
6576
+ columnOrder,
6577
+ columnVisibility,
6578
+ columnPinning,
6579
+ columnGrouping,
6580
+ columnResizing,
6581
+ rowSelection,
6582
+ rowExpansion,
6583
+ rowIdKey,
6584
+ childrenKey
6585
+ });
6586
+ const { virtualizer, virtualItems, paddingTop, paddingBottom, rowModel } = useTableVirtualizer({
6587
+ enabled: virtualEnabled,
6588
+ table,
6589
+ containerRef: tableContainerRef,
6590
+ virtual
6591
+ });
6592
+ const { visibleColumnCount, isSomeColumnsFilterable, filterableColumns, activeStatusContentComputed } = useComputedTableState({
6593
+ table,
6594
+ rowModel,
6595
+ isInitialLoading,
6596
+ scrollFetch,
6597
+ activeStatusContent
6598
+ });
6599
+ const fetchMoreOnScrollReached = useScrollFetch({ scrollFetch, containerRef: tableContainerRef });
6600
+ useBindRef_default({ ref: tableRef, value: table });
6601
+ useBindRef_default({ ref: virtualizerRef, value: virtualizer });
6250
6602
  return /* @__PURE__ */ jsxs(
6251
6603
  TableContainer,
6252
6604
  {
@@ -6283,149 +6635,61 @@ var DataTable = ({
6283
6635
  defaultIcon: /* @__PURE__ */ jsx(empty_data_default, { size: 128 })
6284
6636
  }
6285
6637
  ) : /* @__PURE__ */ jsxs(Fragment, { children: [
6286
- /* @__PURE__ */ jsxs(Table, { ...components?.tableProps, children: [
6287
- /* @__PURE__ */ jsxs(
6288
- TableHeader,
6289
- {
6290
- className: cn("sticky top-0 z-10", components?.tableHeaderProps?.className),
6291
- ...components?.tableHeaderProps,
6292
- children: [
6293
- table.getHeaderGroups().map((headerGroup) => {
6294
- return /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => {
6295
- const { classes, style } = getColumnPinningStyles(header.column);
6296
- const useColumnSizing = header.column.columnDef?.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;
6297
- const tableHeadCellProps = typeof components?.tableHeadCellProps === "function" ? components?.tableHeadCellProps({ header, table }) : components?.tableHeadCellProps;
6298
- const nextHeader = headerGroup.headers?.[header.index + 1] || header;
6299
- const { isLastLeftPinnedColumn } = getColumnPinningInfo(header.column);
6300
- const { isFirstRightPinnedColumn } = getColumnPinningInfo(nextHeader.column);
6301
- const headerGroupLength = header.headerGroup.headers.length;
6302
- const showSeparator = header.index !== headerGroupLength - 1 && !isLastLeftPinnedColumn && !isFirstRightPinnedColumn;
6303
- return /* @__PURE__ */ jsxs(
6304
- TableHead,
6305
- {
6306
- "data-testid": `table-head-${header.id}`,
6307
- colSpan: header.colSpan,
6308
- ...tableHeadCellProps,
6309
- ...header.column.columnDef?.meta?.headerProps,
6310
- className: cn(
6311
- classes,
6312
- tableHeadCellProps?.className,
6313
- header.column.columnDef?.meta?.headerProps?.className
6314
- ),
6315
- style: {
6316
- ...style,
6317
- width: useColumnSizing ? header.column.getSize() : void 0,
6318
- minWidth: useColumnSizing ? header.column.columnDef.minSize : void 0,
6319
- maxWidth: useColumnSizing ? header.column.columnDef.maxSize : void 0,
6320
- ...tableHeadCellProps?.style,
6321
- ...header.column.columnDef?.meta?.headerProps?.style
6322
- },
6323
- children: [
6324
- header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()),
6325
- /* @__PURE__ */ jsx(
6326
- ColumnSeparator_default,
6327
- {
6328
- ...components?.columnSeparatorProps?.headerCell,
6329
- ...header.column.columnDef?.meta?.columnSeparatorProps,
6330
- show: header.column.columnDef?.meta?.columnSeparatorProps?.show ?? components?.columnSeparatorProps?.headerCell?.show ?? showSeparator
6331
- }
6332
- ),
6333
- /* @__PURE__ */ jsx(ColumnResizer_default, { header, ...components?.columnResizerProps })
6334
- ]
6335
- },
6336
- header.id
6337
- );
6338
- }) }, headerGroup.id);
6339
- }),
6340
- isSomeColumnsFilterable && /* @__PURE__ */ jsx(TableRow, { "data-testid": "table-filter-row", children: filterableColumns.map((column) => {
6341
- const { classes, style } = getColumnPinningStyles(column);
6342
- const useColumnSizing = column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;
6343
- const tableFilterCellProps = typeof components?.tableFilterCellProps === "function" ? components?.tableFilterCellProps({ column, table }) : components?.tableFilterCellProps;
6344
- return /* @__PURE__ */ jsx(
6345
- TableCell,
6346
- {
6347
- "data-testid": `table-filter-cell-${column.id}`,
6348
- ...tableFilterCellProps,
6349
- ...column.columnDef?.meta?.filterCellProps,
6350
- className: cn(
6351
- "bg-white border-b",
6352
- classes,
6353
- tableFilterCellProps?.className,
6354
- column.columnDef?.meta?.filterCellProps?.className
6355
- ),
6356
- style: {
6357
- ...style,
6358
- width: useColumnSizing ? column.getSize() : void 0,
6359
- minWidth: useColumnSizing ? column.columnDef.minSize : void 0,
6360
- maxWidth: useColumnSizing ? column.columnDef.maxSize : void 0,
6361
- ...tableFilterCellProps?.style,
6362
- ...column.columnDef?.meta?.filterCellProps?.style
6363
- },
6364
- children: column.getCanFilter() && column.columnDef.meta?.renderColumnFilter?.({
6365
- column,
6366
- table
6367
- })
6368
- },
6369
- column.id
6370
- );
6371
- }) })
6372
- ]
6373
- }
6374
- ),
6375
- /* @__PURE__ */ jsx(TableBody, { ...components?.tableBodyProps, children: table.getRowModel().rows.map((row) => {
6376
- const tableDataRowProps = typeof components?.tableDataRowProps === "function" ? components.tableDataRowProps({ row, table }) || {} : components?.tableDataRowProps || {};
6377
- return /* @__PURE__ */ createElement(
6378
- TableRow,
6379
- {
6380
- "data-testid": `table-data-row-${row.id}`,
6381
- ...tableDataRowProps,
6382
- key: row.id,
6383
- className: cn("group", tableDataRowProps?.className),
6384
- "data-state": row.getIsSelected() ? "selected" : "non-selected",
6385
- ...getRowClickHandlers(onRowClick ?? (() => {
6386
- }), {
6387
- rowData: row.original,
6388
- row,
6389
- table
6390
- })
6391
- },
6392
- row.getVisibleCells().map((cell) => {
6393
- const { classes, style } = getColumnPinningStyles(cell.column);
6394
- const useColumnSizing = cell.column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;
6395
- const tableDataCellProps = typeof components?.tableDataCellProps === "function" ? components?.tableDataCellProps({ row, cell, table }) : components?.tableDataCellProps;
6396
- return /* @__PURE__ */ jsx(
6397
- TableCell,
6398
- {
6399
- "data-testid": `table-data-cell-${cell.id}`,
6400
- "data-row-id": row.id,
6401
- "data-column-id": cell.column.id,
6402
- ...tableDataCellProps,
6403
- ...cell.column.columnDef?.meta?.cellProps,
6404
- className: cn(
6638
+ /* @__PURE__ */ jsxs(
6639
+ Table,
6640
+ {
6641
+ ...components?.tableProps,
6642
+ style: { tableLayout: virtualEnabled ? "fixed" : "auto", ...components?.tableProps?.style },
6643
+ children: [
6644
+ /* @__PURE__ */ jsxs(
6645
+ TableHeader,
6646
+ {
6647
+ className: cn("sticky top-0 z-10 bg-white", components?.tableHeaderProps?.className),
6648
+ ...components?.tableHeaderProps,
6649
+ children: [
6650
+ /* @__PURE__ */ jsx(
6651
+ TableHeaderRows,
6405
6652
  {
6406
- "bg-[#dfeae3]": row.getIsSelected(),
6407
- "bg-white group-hover:bg-[#eff5f1]": !row.getIsSelected()
6408
- },
6409
- classes,
6410
- tableDataCellProps?.className,
6411
- cell.column.columnDef?.meta?.cellProps?.className
6653
+ table,
6654
+ columnResizing,
6655
+ virtual,
6656
+ components
6657
+ }
6412
6658
  ),
6413
- style: {
6414
- ...style,
6415
- width: useColumnSizing ? cell.column.getSize() : void 0,
6416
- minWidth: useColumnSizing ? cell.column.columnDef.minSize : void 0,
6417
- maxWidth: useColumnSizing ? cell.column.columnDef.maxSize : void 0,
6418
- ...tableDataCellProps?.style,
6419
- ...cell.column.columnDef?.meta?.cellProps?.style
6420
- },
6421
- children: flexRender(cell.column.columnDef.cell, cell.getContext())
6422
- },
6423
- cell.id
6424
- );
6425
- })
6426
- );
6427
- }) })
6428
- ] }),
6659
+ /* @__PURE__ */ jsx(
6660
+ TableFilterRow,
6661
+ {
6662
+ table,
6663
+ filterableColumns,
6664
+ isSomeColumnsFilterable,
6665
+ columnResizing,
6666
+ virtual,
6667
+ components
6668
+ }
6669
+ )
6670
+ ]
6671
+ }
6672
+ ),
6673
+ /* @__PURE__ */ jsx(TableBody, { ...components?.tableBodyProps, children: /* @__PURE__ */ jsx(
6674
+ TableDataRows,
6675
+ {
6676
+ table,
6677
+ rowModel,
6678
+ virtualEnabled,
6679
+ virtualItems,
6680
+ virtualizer,
6681
+ paddingTop,
6682
+ paddingBottom,
6683
+ visibleColumnCount,
6684
+ columnResizing,
6685
+ virtual,
6686
+ onRowClick,
6687
+ components
6688
+ }
6689
+ ) })
6690
+ ]
6691
+ }
6692
+ ),
6429
6693
  activeStatusContentComputed === "emptyFilteredData" && /* @__PURE__ */ jsx(
6430
6694
  StatusContentSlot_default,
6431
6695
  {
@@ -7372,8 +7636,8 @@ var DISALLOWED_MARKS = ["bold", "italic", "link"];
7372
7636
  var SUGGESTION_DEBOUNCE = 200;
7373
7637
  var DEFAULT_CHIP_CLASS = "outline-1 outline-muted bg-muted/40 text-foreground";
7374
7638
  var TokenView = ({ node, editor, getPos }) => {
7375
- const [isFocused, setIsFocused] = React26__default.useState(false);
7376
- React26__default.useEffect(() => {
7639
+ const [isFocused, setIsFocused] = React27__default.useState(false);
7640
+ React27__default.useEffect(() => {
7377
7641
  const handler = () => {
7378
7642
  const { from, to } = editor.state.selection;
7379
7643
  const position = getPos();
@@ -8565,7 +8829,7 @@ function ToolbarPlugin({
8565
8829
  isLink: hasLink
8566
8830
  }));
8567
8831
  }, []);
8568
- React26.useEffect(() => {
8832
+ React27.useEffect(() => {
8569
8833
  return mergeRegister(
8570
8834
  editor.registerCommand(
8571
8835
  CAN_UNDO_COMMAND,
@@ -9151,7 +9415,7 @@ function ControlledValuePlugin({
9151
9415
  trackAppliedValue
9152
9416
  }) {
9153
9417
  const [editor] = useLexicalComposerContext();
9154
- React26.useEffect(() => {
9418
+ React27.useEffect(() => {
9155
9419
  if (value == null || trackAppliedValue.current === value) {
9156
9420
  return;
9157
9421
  }
@@ -9175,14 +9439,14 @@ function ControlledValuePlugin({
9175
9439
  }
9176
9440
  function EditableStatePlugin({ editable }) {
9177
9441
  const [editor] = useLexicalComposerContext();
9178
- React26.useEffect(() => {
9442
+ React27.useEffect(() => {
9179
9443
  editor.setEditable(editable);
9180
9444
  }, [editor, editable]);
9181
9445
  return null;
9182
9446
  }
9183
9447
  function ImagesPlugin() {
9184
9448
  const [editor] = useLexicalComposerContext();
9185
- React26.useEffect(() => {
9449
+ React27.useEffect(() => {
9186
9450
  return editor.registerCommand(
9187
9451
  INSERT_IMAGE_COMMAND,
9188
9452
  (payload) => {
@@ -9463,9 +9727,9 @@ var SIDEBAR_WIDTH = "16rem";
9463
9727
  var SIDEBAR_WIDTH_MOBILE = "18rem";
9464
9728
  var SIDEBAR_WIDTH_ICON = "3rem";
9465
9729
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
9466
- var SidebarContext = React26.createContext(null);
9730
+ var SidebarContext = React27.createContext(null);
9467
9731
  function useSidebar() {
9468
- const context = React26.useContext(SidebarContext);
9732
+ const context = React27.useContext(SidebarContext);
9469
9733
  if (!context) {
9470
9734
  throw new Error("useSidebar must be used within a SidebarProvider.");
9471
9735
  }
@@ -9481,10 +9745,10 @@ function SidebarProvider({
9481
9745
  ...props
9482
9746
  }) {
9483
9747
  const isMobile = useIsMobile();
9484
- const [openMobile, setOpenMobile] = React26.useState(false);
9485
- const [_open, _setOpen] = React26.useState(defaultOpen);
9748
+ const [openMobile, setOpenMobile] = React27.useState(false);
9749
+ const [_open, _setOpen] = React27.useState(defaultOpen);
9486
9750
  const open = openProp ?? _open;
9487
- const setOpen = React26.useCallback(
9751
+ const setOpen = React27.useCallback(
9488
9752
  (value) => {
9489
9753
  const openState = typeof value === "function" ? value(open) : value;
9490
9754
  if (setOpenProp) {
@@ -9496,10 +9760,10 @@ function SidebarProvider({
9496
9760
  },
9497
9761
  [setOpenProp, open]
9498
9762
  );
9499
- const toggleSidebar = React26.useCallback(() => {
9763
+ const toggleSidebar = React27.useCallback(() => {
9500
9764
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
9501
9765
  }, [isMobile, setOpen, setOpenMobile]);
9502
- React26.useEffect(() => {
9766
+ React27.useEffect(() => {
9503
9767
  const handleKeyDown = (event) => {
9504
9768
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
9505
9769
  event.preventDefault();
@@ -9510,7 +9774,7 @@ function SidebarProvider({
9510
9774
  return () => window.removeEventListener("keydown", handleKeyDown);
9511
9775
  }, [toggleSidebar]);
9512
9776
  const state = open ? "expanded" : "collapsed";
9513
- const contextValue = React26.useMemo(
9777
+ const contextValue = React27.useMemo(
9514
9778
  () => ({
9515
9779
  state,
9516
9780
  open,
@@ -9952,7 +10216,7 @@ function SidebarMenuSkeleton({
9952
10216
  showIcon = false,
9953
10217
  ...props
9954
10218
  }) {
9955
- const width = React26.useMemo(() => {
10219
+ const width = React27.useMemo(() => {
9956
10220
  return `${Math.floor(Math.random() * 40) + 50}%`;
9957
10221
  }, []);
9958
10222
  return /* @__PURE__ */ jsxs(
@@ -10422,7 +10686,7 @@ function SortableRow({
10422
10686
  id: value,
10423
10687
  disabled: name === "columns.0.id"
10424
10688
  });
10425
- const style = React26.useMemo(
10689
+ const style = React27.useMemo(
10426
10690
  () => ({
10427
10691
  transform: CSS.Transform.toString(transform),
10428
10692
  transition
@@ -10824,7 +11088,7 @@ function getCandidateWidths({
10824
11088
  }
10825
11089
  return DEVICE_SIZES;
10826
11090
  }
10827
- var Image2 = React26.forwardRef(function Image3({
11091
+ var Image2 = React27.forwardRef(function Image3({
10828
11092
  src,
10829
11093
  alt,
10830
11094
  width,
@@ -10854,34 +11118,34 @@ var Image2 = React26.forwardRef(function Image3({
10854
11118
  } = imgProps;
10855
11119
  const widthNumber = toNumber(width);
10856
11120
  const heightNumber = toNumber(height);
10857
- React26.useEffect(() => {
11121
+ React27.useEffect(() => {
10858
11122
  if (!fill && (!widthNumber || !heightNumber)) {
10859
11123
  console.warn(
10860
11124
  "[Image] When `fill` is false you should provide both `width` and `height` to prevent layout shifts."
10861
11125
  );
10862
11126
  }
10863
11127
  }, [fill, heightNumber, widthNumber]);
10864
- const candidateWidths = React26.useMemo(
11128
+ const candidateWidths = React27.useMemo(
10865
11129
  () => getCandidateWidths({ width: widthNumber, sizes, fill }),
10866
11130
  [fill, sizes, widthNumber]
10867
11131
  );
10868
11132
  const largestWidth = candidateWidths[candidateWidths.length - 1] ?? widthNumber ?? DEVICE_SIZES[DEVICE_SIZES.length - 1];
10869
- const computedSrc = React26.useMemo(() => {
11133
+ const computedSrc = React27.useMemo(() => {
10870
11134
  if (unoptimized) {
10871
11135
  return src;
10872
11136
  }
10873
11137
  return loader({ src, width: largestWidth, quality });
10874
11138
  }, [largestWidth, loader, quality, src, unoptimized]);
10875
- const computedSrcSet = React26.useMemo(() => {
11139
+ const computedSrcSet = React27.useMemo(() => {
10876
11140
  if (unoptimized) {
10877
11141
  return void 0;
10878
11142
  }
10879
11143
  return candidateWidths.map((currentWidth) => `${loader({ src, width: currentWidth, quality })} ${currentWidth}w`).join(", ");
10880
11144
  }, [candidateWidths, loader, quality, src, unoptimized]);
10881
11145
  const sizesValue = sizes ?? (fill ? "100vw" : widthNumber ? `${widthNumber}px` : void 0);
10882
- const [isLoaded, setIsLoaded] = React26.useState(false);
10883
- const internalRef = React26.useRef(null);
10884
- const setRefs = React26.useCallback(
11146
+ const [isLoaded, setIsLoaded] = React27.useState(false);
11147
+ const internalRef = React27.useRef(null);
11148
+ const setRefs = React27.useCallback(
10885
11149
  (node) => {
10886
11150
  internalRef.current = node;
10887
11151
  if (!ref) {
@@ -10895,7 +11159,7 @@ var Image2 = React26.forwardRef(function Image3({
10895
11159
  },
10896
11160
  [ref]
10897
11161
  );
10898
- React26.useEffect(() => {
11162
+ React27.useEffect(() => {
10899
11163
  const image = internalRef.current;
10900
11164
  if (!image) {
10901
11165
  return;
@@ -10907,7 +11171,7 @@ var Image2 = React26.forwardRef(function Image3({
10907
11171
  setIsLoaded(false);
10908
11172
  }
10909
11173
  }, [onLoadingComplete, src]);
10910
- const handleLoad = React26.useCallback(
11174
+ const handleLoad = React27.useCallback(
10911
11175
  (event) => {
10912
11176
  setIsLoaded(true);
10913
11177
  onLoadProp?.(event);
@@ -10919,7 +11183,7 @@ var Image2 = React26.forwardRef(function Image3({
10919
11183
  const fetchPriority = priority ? "high" : fetchPriorityProp;
10920
11184
  const decoding = decodingProp ?? "async";
10921
11185
  const resolvedObjectFit = objectFit ?? (fill ? "cover" : void 0);
10922
- const wrapperStyle = React26.useMemo(
11186
+ const wrapperStyle = React27.useMemo(
10923
11187
  () => ({
10924
11188
  position: "relative",
10925
11189
  display: fill ? "block" : "inline-block",
@@ -10929,7 +11193,7 @@ var Image2 = React26.forwardRef(function Image3({
10929
11193
  }),
10930
11194
  [fill, height, width]
10931
11195
  );
10932
- const imageStyle = React26.useMemo(
11196
+ const imageStyle = React27.useMemo(
10933
11197
  () => ({
10934
11198
  width: fill ? "100%" : formatDimension(width) ?? void 0,
10935
11199
  height: fill ? "100%" : formatDimension(height) ?? void 0,
@@ -11078,7 +11342,7 @@ var InfoIcon = ({ size = "1em", className, ...props }) => {
11078
11342
  }
11079
11343
  );
11080
11344
  };
11081
- var InfoIcon_default = React26__default.memo(InfoIcon);
11345
+ var InfoIcon_default = React27__default.memo(InfoIcon);
11082
11346
  var Navbar = ({
11083
11347
  className,
11084
11348
  title,
@@ -11210,7 +11474,7 @@ var Navbar = ({
11210
11474
  }
11211
11475
  );
11212
11476
  };
11213
- var navbar_default = React26__default.memo(Navbar);
11477
+ var navbar_default = React27__default.memo(Navbar);
11214
11478
  var usePreventPageLeaveStore = create((set) => ({
11215
11479
  isPreventing: false,
11216
11480
  setPreventing: (value) => set({ isPreventing: value })
@@ -11250,7 +11514,7 @@ var DefaultHeader = ({
11250
11514
  classNames,
11251
11515
  rightActions
11252
11516
  }) => {
11253
- const titleRef = React26.useRef(null);
11517
+ const titleRef = React27.useRef(null);
11254
11518
  const isTruncated = useTruncated_default({ elementRef: titleRef });
11255
11519
  const textElement = title ? /* @__PURE__ */ jsx(
11256
11520
  "span",
@@ -11260,13 +11524,13 @@ var DefaultHeader = ({
11260
11524
  children: title
11261
11525
  }
11262
11526
  ) : null;
11263
- return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start justify-between gap-3", classNames?.header), children: [
11264
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [
11527
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start justify-between gap-1", classNames?.header), children: [
11528
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 min-w-0", children: [
11265
11529
  icon ? /* @__PURE__ */ jsx(
11266
11530
  "div",
11267
11531
  {
11268
11532
  className: cn(
11269
- "w-10 h-10 rounded-full bg-sus-green-50 flex items-center justify-center",
11533
+ "w-10 h-10 rounded-full bg-sus-green-50 flex items-start justify-center",
11270
11534
  classNames?.iconWrapper
11271
11535
  ),
11272
11536
  children: icon
@@ -11589,7 +11853,7 @@ function isFragment(object) {
11589
11853
  var isValidText = (val) => ["string", "number"].includes(typeof val);
11590
11854
  function toArray(children, option = {}) {
11591
11855
  let ret = [];
11592
- React26.Children.forEach(children, (child) => {
11856
+ React27.Children.forEach(children, (child) => {
11593
11857
  if ((child === void 0 || child === null) && !option.keepEmpty) {
11594
11858
  return;
11595
11859
  }
@@ -11603,9 +11867,9 @@ function toArray(children, option = {}) {
11603
11867
  });
11604
11868
  return ret;
11605
11869
  }
11606
- var MeasureText = React26.forwardRef(({ style, children }, ref) => {
11607
- const spanRef = React26.useRef(null);
11608
- React26.useImperativeHandle(ref, () => ({
11870
+ var MeasureText = React27.forwardRef(({ style, children }, ref) => {
11871
+ const spanRef = React27.useRef(null);
11872
+ React27.useImperativeHandle(ref, () => ({
11609
11873
  isExceed: () => {
11610
11874
  const span = spanRef.current;
11611
11875
  return span.scrollHeight > span.clientHeight;
@@ -11663,19 +11927,19 @@ var lineClipStyle = {
11663
11927
  };
11664
11928
  function EllipsisMeasure(props) {
11665
11929
  const { enableMeasure, width, text, children, rows, expanded, miscDeps, onEllipsis } = props;
11666
- const nodeList = React26.useMemo(() => toArray(text), [text]);
11667
- const nodeLen = React26.useMemo(() => getNodesLen(nodeList), [text]);
11668
- const fullContent = React26.useMemo(() => children(nodeList, false), [text]);
11669
- const [ellipsisCutIndex, setEllipsisCutIndex] = React26.useState(null);
11670
- const cutMidRef = React26.useRef(null);
11671
- const measureWhiteSpaceRef = React26.useRef(null);
11672
- const needEllipsisRef = React26.useRef(null);
11673
- const descRowsEllipsisRef = React26.useRef(null);
11674
- const symbolRowEllipsisRef = React26.useRef(null);
11675
- const [canEllipsis, setCanEllipsis] = React26.useState(false);
11676
- const [needEllipsis, setNeedEllipsis] = React26.useState(STATUS_MEASURE_NONE);
11677
- const [ellipsisHeight, setEllipsisHeight] = React26.useState(0);
11678
- const [parentWhiteSpace, setParentWhiteSpace] = React26.useState(null);
11930
+ const nodeList = React27.useMemo(() => toArray(text), [text]);
11931
+ const nodeLen = React27.useMemo(() => getNodesLen(nodeList), [text]);
11932
+ const fullContent = React27.useMemo(() => children(nodeList, false), [text]);
11933
+ const [ellipsisCutIndex, setEllipsisCutIndex] = React27.useState(null);
11934
+ const cutMidRef = React27.useRef(null);
11935
+ const measureWhiteSpaceRef = React27.useRef(null);
11936
+ const needEllipsisRef = React27.useRef(null);
11937
+ const descRowsEllipsisRef = React27.useRef(null);
11938
+ const symbolRowEllipsisRef = React27.useRef(null);
11939
+ const [canEllipsis, setCanEllipsis] = React27.useState(false);
11940
+ const [needEllipsis, setNeedEllipsis] = React27.useState(STATUS_MEASURE_NONE);
11941
+ const [ellipsisHeight, setEllipsisHeight] = React27.useState(0);
11942
+ const [parentWhiteSpace, setParentWhiteSpace] = React27.useState(null);
11679
11943
  useIsomorphicLayoutEffect(() => {
11680
11944
  if (enableMeasure && width && nodeLen) {
11681
11945
  setNeedEllipsis(STATUS_MEASURE_PREPARE);
@@ -11718,7 +11982,7 @@ function EllipsisMeasure(props) {
11718
11982
  setEllipsisCutIndex(isOverflow ? [minIndex, targetMidIndex] : [targetMidIndex, maxIndex]);
11719
11983
  }
11720
11984
  }, [ellipsisCutIndex, cutMidIndex]);
11721
- const finalContent = React26.useMemo(() => {
11985
+ const finalContent = React27.useMemo(() => {
11722
11986
  if (!enableMeasure) {
11723
11987
  return children(nodeList, false);
11724
11988
  }
@@ -11809,10 +12073,10 @@ var Truncated = ({
11809
12073
  tooltipProps,
11810
12074
  tooltipContentProps
11811
12075
  }) => {
11812
- const elementRef = React26.useRef(null);
11813
- const [open, setOpen] = React26.useState(false);
11814
- const [isTruncated, setIsTruncated] = React26.useState(false);
11815
- const [measureWidth, setMeasureWidth] = React26.useState(0);
12076
+ const elementRef = React27.useRef(null);
12077
+ const [open, setOpen] = React27.useState(false);
12078
+ const [isTruncated, setIsTruncated] = React27.useState(false);
12079
+ const [measureWidth, setMeasureWidth] = React27.useState(0);
11816
12080
  const Comp = as;
11817
12081
  const normalizedChildren = typeof children === "string" ? children.replace(/>/g, ">\u200B") : children;
11818
12082
  const lineClampLines = typeof ellipsis === "number" ? ellipsis : typeof ellipsis === "object" ? ellipsis?.lineClamp ?? 3 : null;
@@ -11837,13 +12101,13 @@ var Truncated = ({
11837
12101
  setIsTruncated(false);
11838
12102
  }
11839
12103
  }, [enableMeasure]);
11840
- const truncationClass = React26.useMemo(() => {
12104
+ const truncationClass = React27.useMemo(() => {
11841
12105
  if (!ellipsis) return "";
11842
12106
  if (typeof ellipsis === "number") return `line-clamp-${ellipsis}`;
11843
12107
  if (typeof ellipsis === "object") return `line-clamp-${lineClampLines ?? 3}`;
11844
12108
  return "truncate";
11845
12109
  }, [ellipsis, lineClampLines]);
11846
- const clampedStyle = React26.useMemo(() => {
12110
+ const clampedStyle = React27.useMemo(() => {
11847
12111
  if (!lineClampLines) return style;
11848
12112
  return {
11849
12113
  ...style,
@@ -11905,7 +12169,7 @@ var Truncated = ({
11905
12169
  );
11906
12170
  };
11907
12171
  var truncated_default = Truncated;
11908
- var InputPrimitive2 = React26.forwardRef(
12172
+ var InputPrimitive2 = React27.forwardRef(
11909
12173
  ({ className, type = "text", ...props }, ref) => {
11910
12174
  return /* @__PURE__ */ jsx(
11911
12175
  "input",
@@ -11944,7 +12208,7 @@ var inputVariants2 = cva("", {
11944
12208
  appearance: "filled"
11945
12209
  }
11946
12210
  });
11947
- var Input2 = React26.forwardRef(
12211
+ var Input2 = React27.forwardRef(
11948
12212
  ({
11949
12213
  className,
11950
12214
  wrapperClassName,
@@ -11977,8 +12241,8 @@ var Input2 = React26.forwardRef(
11977
12241
  onChange: onChangeProp
11978
12242
  } = rest;
11979
12243
  const ariaInvalid = invalid ?? ariaInvalidProp;
11980
- const messageId = React26.useId();
11981
- const handleChange = React26.useCallback(
12244
+ const messageId = React27.useId();
12245
+ const handleChange = React27.useCallback(
11982
12246
  (event) => {
11983
12247
  onChangeProp?.(event);
11984
12248
  onValueChange?.(event.target.value);
@@ -12372,13 +12636,13 @@ var useFieldNames = ({
12372
12636
  fieldNames
12373
12637
  }) => {
12374
12638
  const { label: labelFieldKey = "label", value: valueFieldKey = "value" } = fieldNames || {};
12375
- const getLabelField = React26__default.useCallback(
12639
+ const getLabelField = React27__default.useCallback(
12376
12640
  (option) => {
12377
12641
  return option?.[labelFieldKey];
12378
12642
  },
12379
12643
  [labelFieldKey]
12380
12644
  );
12381
- const getValueField = React26__default.useCallback(
12645
+ const getValueField = React27__default.useCallback(
12382
12646
  (option) => {
12383
12647
  return option?.[valueFieldKey];
12384
12648
  },
@@ -12410,11 +12674,11 @@ var VirtualizedCommand = ({
12410
12674
  onFocus
12411
12675
  }) => {
12412
12676
  const { getLabelField, getValueField } = useFieldNames_default({ fieldNames });
12413
- const internalOptions = React26.useMemo(() => options ?? [], [options]);
12414
- const [filteredOptions, setFilteredOptions] = React26.useState(internalOptions);
12415
- const [focusedIndex, setFocusedIndex] = React26.useState(0);
12416
- const [isKeyboardNavActive, setIsKeyboardNavActive] = React26.useState(false);
12417
- const parentRef = React26.useRef(null);
12677
+ const internalOptions = React27.useMemo(() => options ?? [], [options]);
12678
+ const [filteredOptions, setFilteredOptions] = React27.useState(internalOptions);
12679
+ const [focusedIndex, setFocusedIndex] = React27.useState(0);
12680
+ const [isKeyboardNavActive, setIsKeyboardNavActive] = React27.useState(false);
12681
+ const parentRef = React27.useRef(null);
12418
12682
  const virtualizer = useVirtualizer({
12419
12683
  count: filteredOptions.length,
12420
12684
  getScrollElement: () => parentRef.current,
@@ -12422,14 +12686,14 @@ var VirtualizedCommand = ({
12422
12686
  overscan: 2
12423
12687
  });
12424
12688
  const virtualOptions = virtualizer.getVirtualItems();
12425
- const dynamicHeight = React26.useMemo(() => {
12689
+ const dynamicHeight = React27.useMemo(() => {
12426
12690
  const contentHeight = filteredOptions.length * ROW_HEIGHT;
12427
12691
  if (contentHeight <= 0) {
12428
12692
  return MIN_HEIGHT_EMPTY;
12429
12693
  }
12430
12694
  return Math.max(ROW_HEIGHT, Math.min(height, contentHeight));
12431
12695
  }, [filteredOptions.length, height]);
12432
- const scrollToIndex = React26.useCallback(
12696
+ const scrollToIndex = React27.useCallback(
12433
12697
  (index) => {
12434
12698
  virtualizer.scrollToIndex(index, {
12435
12699
  align: "center"
@@ -12437,7 +12701,7 @@ var VirtualizedCommand = ({
12437
12701
  },
12438
12702
  [virtualizer]
12439
12703
  );
12440
- const handleSearch = React26.useCallback(
12704
+ const handleSearch = React27.useCallback(
12441
12705
  (search) => {
12442
12706
  setIsKeyboardNavActive(false);
12443
12707
  setFilteredOptions(
@@ -12452,7 +12716,7 @@ var VirtualizedCommand = ({
12452
12716
  },
12453
12717
  [filterOption, getLabelField, internalOptions]
12454
12718
  );
12455
- const handleKeyDown = React26.useCallback(
12719
+ const handleKeyDown = React27.useCallback(
12456
12720
  (event) => {
12457
12721
  switch (event.key) {
12458
12722
  case "ArrowDown": {
@@ -12487,7 +12751,7 @@ var VirtualizedCommand = ({
12487
12751
  },
12488
12752
  [filteredOptions, focusedIndex, getValueField, onSelect, scrollToIndex]
12489
12753
  );
12490
- React26.useEffect(() => {
12754
+ React27.useEffect(() => {
12491
12755
  if (value) {
12492
12756
  const option = filteredOptions.find((option2) => {
12493
12757
  const optionValue = getValueField(option2);
@@ -12614,13 +12878,13 @@ var ComboboxInner = ({
12614
12878
  defaultValue,
12615
12879
  value
12616
12880
  });
12617
- const currentSelectedOption = React26.useMemo(() => {
12881
+ const currentSelectedOption = React27.useMemo(() => {
12618
12882
  return options?.find((option) => {
12619
12883
  const optionValue = getValueField(option);
12620
12884
  return optionValue === selectedValue;
12621
12885
  });
12622
12886
  }, [getValueField, options, selectedValue]);
12623
- const renderValue = React26.useMemo(() => {
12887
+ const renderValue = React27.useMemo(() => {
12624
12888
  if (!selectedValue) return placeholder2;
12625
12889
  if (currentSelectedOption) {
12626
12890
  return getLabelField(currentSelectedOption);
@@ -12630,7 +12894,7 @@ var ComboboxInner = ({
12630
12894
  }
12631
12895
  return null;
12632
12896
  }, [currentSelectedOption, getLabelField, placeholder2, selectedValue, showValueWhenNoMatch]);
12633
- const handleSelect = React26.useCallback(
12897
+ const handleSelect = React27.useCallback(
12634
12898
  (selected, option) => {
12635
12899
  setSelectedValue(selected);
12636
12900
  setOpenPopover(false);
@@ -12643,7 +12907,7 @@ var ComboboxInner = ({
12643
12907
  },
12644
12908
  [onOpenChange, onSelect, setOpenPopover, setSelectedValue]
12645
12909
  );
12646
- const handleOpenPopover = React26.useCallback(
12910
+ const handleOpenPopover = React27.useCallback(
12647
12911
  (isOpen) => {
12648
12912
  if (disabled) return;
12649
12913
  setOpenPopover(isOpen);
@@ -12653,7 +12917,7 @@ var ComboboxInner = ({
12653
12917
  },
12654
12918
  [disabled, onOpenChange, setOpenPopover]
12655
12919
  );
12656
- const handleClear = React26.useCallback(
12920
+ const handleClear = React27.useCallback(
12657
12921
  (event) => {
12658
12922
  event.stopPropagation();
12659
12923
  setSelectedValue(void 0);
@@ -12742,7 +13006,7 @@ var ComboboxInner = ({
12742
13006
  )
12743
13007
  ] });
12744
13008
  };
12745
- var Combobox = React26.forwardRef(ComboboxInner);
13009
+ var Combobox = React27.forwardRef(ComboboxInner);
12746
13010
  var Combobox_default = Combobox;
12747
13011
  var TruncatedMouseEnterDiv = ({
12748
13012
  value,
@@ -12867,6 +13131,6 @@ var TabSelect = ({
12867
13131
  );
12868
13132
  };
12869
13133
 
12870
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionMenu, AdministrationIcon, AdvanceSearch_default as AdvanceSearch, AnalyticsIcon, application_log_default as ApplicationLogIcon, arrow_default as ArrowIcon, AuditFooter, Button, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Combobox_default as Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CropperModal, CropperModalError, custom_action_status_default as CustomActionStatusIcon, custom_field_default as CustomFieldIcon, DIALOG_ALERT_I18N_SUBNAMESPACE, DIALOG_ALERT_TEMPLATES, DashboardIcon, DataEntryIcon, DataTable_default as DataTable, DatePicker2 as DatePicker, decrease_default as DecreaseIcon, Dialog, DialogAlert, DialogAlertProvider, DialogContent, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, filters_default as FiltersIcon, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormulaEditor, GridSettingsModal_default as GridSettingsModal, HamburgerMenuIcon, HandymanIcon, HeaderCell_default as HeaderCell, Image2 as Image, information_default as InformationIcon, Input, InputNumber_default as InputNumber, Label2 as Label, LookupSelect, MailIcon, MainListContainer_default as MainListContainer, ManIcon, ManagementIcon, MenuIcon, MonthPicker2 as MonthPicker, navbar_default as Navbar, not_found_default as NotFoundIcon, plus_default as PlusIcon, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PowerIcon, PreventPageLeave_default as PreventPageLeave, QuestionIcon, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, RightPanelContainer_default as RightPanelContainer, role_default as RoleIcon, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, SetupIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, calendar_default as SuiCalendarIcon, calendar2_default as SuiCalendarIcon2, check_default as SuiCheckIcon, dots_vertical_default as SuiDotsVerticalIcon, empty_data_default as SuiEmptyDataIcon, expand_default as SuiExpandIcon, filter_default as SuiFilterIcon, setting_default as SuiSettingIcon, triangle_down_default as SuiTriangleDownIcon, warning_default as SuiWarningIcon, Switch, TabSelect, Textarea, ToolBoxIcon, Tooltip2 as Tooltip, TooltipArrow, TooltipContent2 as TooltipContent, TooltipProvider2 as TooltipProvider, TooltipTrigger2 as TooltipTrigger, trash_default as TrashIcon, truncated_default as Truncated, truncatedMouseEnterDiv_default as TruncatedMouseEnterDiv, ui_exports as UI, user_alone_default as UserAloneIcon, user_friend_default as UserFriendIcon, user_default as UserIcon, VirtualizedCommand_default as VirtualizedCommand, booleanToSelectValue, buildPrefixMap, buttonVariants, cn, compareAlphanumeric, debounce, defaultOperatorShortcuts, defaultOperators, formatISODate, getDialogAlertControls, inputVariants, isDefined, isEmptyObject, isValidParentheses, mapTokensToOutput, parseFormula, parseFormulaToToken, resetVisibleTableState, selectValueToBoolean, spinnerVariants, splitOperators, stripNullishObject, throttle, tokenizeFormulaString, useControllableState_default as useControllableState, useDraftGuardStore, useFormField, useGridSettingsStore_default as useGridSettingsStore, useHover_default as useHover, useIntersectionObserver_default as useIntersectionObserver, useIsomorphicLayoutEffect, useMediaQuery_default as useMediaQuery, usePreventPageLeave_default as usePreventPageLeave, usePreventPageLeaveStore_default as usePreventPageLeaveStore, useSafeBlocker, useScreenSize_default as useScreenSize, useSidebar, useTruncated_default as useTruncated, validateTokenPrefixes };
13134
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionMenu, AdministrationIcon, AdvanceSearch_default as AdvanceSearch, AnalyticsIcon, application_log_default as ApplicationLogIcon, arrow_default as ArrowIcon, AuditFooter, Button, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Combobox_default as Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CropperModal, CropperModalError, custom_action_status_default as CustomActionStatusIcon, custom_field_default as CustomFieldIcon, DIALOG_ALERT_I18N_SUBNAMESPACE, DIALOG_ALERT_TEMPLATES, DashboardIcon, DataEntryIcon, DataTable_default as DataTable, DatePicker2 as DatePicker, decrease_default as DecreaseIcon, Dialog, DialogAlert, DialogAlertProvider, DialogContent, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, filters_default as FiltersIcon, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormulaEditor, GridSettingsModal_default as GridSettingsModal, HamburgerMenuIcon, HandymanIcon, HeaderCell_default as HeaderCell, Image2 as Image, information_default as InformationIcon, Input, InputNumber_default as InputNumber, Label2 as Label, LookupSelect, MailIcon, MainListContainer_default as MainListContainer, ManIcon, ManagementIcon, MenuIcon, MonthPicker2 as MonthPicker, navbar_default as Navbar, not_found_default as NotFoundIcon, plus_default as PlusIcon, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PowerIcon, PreventPageLeave_default as PreventPageLeave, QuestionIcon, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, RightPanelContainer_default as RightPanelContainer, role_default as RoleIcon, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, SetupIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Spinner, calendar_default as SuiCalendarIcon, calendar2_default as SuiCalendarIcon2, check_default as SuiCheckIcon, dots_vertical_default as SuiDotsVerticalIcon, empty_data_default as SuiEmptyDataIcon, expand_default as SuiExpandIcon, filter_default as SuiFilterIcon, setting_default as SuiSettingIcon, triangle_down_default as SuiTriangleDownIcon, warning_default as SuiWarningIcon, Switch, TabSelect, Textarea, ToolBoxIcon, Tooltip2 as Tooltip, TooltipArrow, TooltipContent2 as TooltipContent, TooltipProvider2 as TooltipProvider, TooltipTrigger2 as TooltipTrigger, trash_default as TrashIcon, truncated_default as Truncated, truncatedMouseEnterDiv_default as TruncatedMouseEnterDiv, ui_exports as UI, user_alone_default as UserAloneIcon, user_friend_default as UserFriendIcon, user_group_default as UserGroupIcon, user_default as UserIcon, VirtualizedCommand_default as VirtualizedCommand, booleanToSelectValue, buildPrefixMap, buttonVariants, cn, compareAlphanumeric, debounce, defaultOperatorShortcuts, defaultOperators, formatISODate, getDialogAlertControls, inputVariants, isDefined, isEmptyObject, isValidParentheses, mapTokensToOutput, parseFormula, parseFormulaToToken, resetVisibleTableState, selectValueToBoolean, spinnerVariants, splitOperators, stripNullishObject, throttle, tokenizeFormulaString, useBindRef_default as useBindRef, useControllableState_default as useControllableState, useDraftGuardStore, useFormField, useGridSettingsStore_default as useGridSettingsStore, useHover_default as useHover, useIntersectionObserver_default as useIntersectionObserver, useIsomorphicLayoutEffect, useMediaQuery_default as useMediaQuery, usePreventPageLeave_default as usePreventPageLeave, usePreventPageLeaveStore_default as usePreventPageLeaveStore, useSafeBlocker, useScreenSize_default as useScreenSize, useSidebar, useTruncated_default as useTruncated, validateTokenPrefixes };
12871
13135
  //# sourceMappingURL=index.mjs.map
12872
13136
  //# sourceMappingURL=index.mjs.map