@underverse-ui/underverse 1.0.178 → 1.0.179

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.d.cts CHANGED
@@ -30,6 +30,15 @@ declare const SIZE_STYLES_BTN: {
30
30
  icon: string;
31
31
  };
32
32
 
33
+ declare const STANDARD_BORDER_MODES: readonly ["none", "sm", "md", "lg", "xl", "2xl", "3xl", "full"];
34
+ declare const CUSTOM_BORDER_MAP: {
35
+ readonly daewoo: "rounded-2xl";
36
+ readonly infiniq: "rounded-full";
37
+ };
38
+ type StandardBorderMode = typeof STANDARD_BORDER_MODES[number];
39
+ type CustomBorderMode = keyof typeof CUSTOM_BORDER_MAP;
40
+ type BorderMode = StandardBorderMode | CustomBorderMode | (string & {});
41
+
33
42
  /** Public props for the `Button` component. */
34
43
  interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
35
44
  onClick?: (event: React__default.MouseEvent<HTMLButtonElement>) => void;
@@ -60,6 +69,7 @@ interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElem
60
69
  noWrap?: boolean;
61
70
  noHoverOverlay?: boolean;
62
71
  gradient?: boolean;
72
+ borderMode?: BorderMode;
63
73
  }
64
74
  declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
65
75
 
@@ -162,6 +172,7 @@ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size">
162
172
  description?: string;
163
173
  variant?: "default" | "filled" | "outlined" | "minimal";
164
174
  size?: "sm" | "md" | "lg";
175
+ borderMode?: BorderMode;
165
176
  leftIcon?: React__default.ComponentType<{
166
177
  className?: string;
167
178
  }>;
@@ -214,6 +225,7 @@ interface TextareaProps extends React__default.TextareaHTMLAttributes<HTMLTextAr
214
225
  description?: string;
215
226
  variant?: "default" | "filled" | "outlined" | "minimal";
216
227
  size?: "sm" | "md" | "lg";
228
+ borderMode?: BorderMode;
217
229
  resize?: "none" | "vertical" | "horizontal" | "both";
218
230
  counter?: boolean;
219
231
  /** Enable OverlayScrollbars on textarea viewport. Default: false */
@@ -325,6 +337,7 @@ interface TagInputProps {
325
337
  };
326
338
  /** Maximum visible tags before showing "+N more" badge */
327
339
  maxVisibleTags?: number;
340
+ borderMode?: BorderMode;
328
341
  }
329
342
  declare const TagInput: React__default.ForwardRefExoticComponent<TagInputProps & React__default.RefAttributes<HTMLInputElement>>;
330
343
 
@@ -952,6 +965,7 @@ interface DatePickerProps {
952
965
  minDate?: Date;
953
966
  /** Maximum selectable date (inclusive). Compared by day in local timezone. */
954
967
  maxDate?: Date;
968
+ borderMode?: BorderMode;
955
969
  }
956
970
  declare const DatePicker: React$1.FC<DatePickerProps>;
957
971
  /** Public props for the `DateRangePicker` component. */
@@ -974,6 +988,7 @@ interface DateRangePickerProps {
974
988
  /** Size variant */
975
989
  size?: "sm" | "md" | "lg";
976
990
  disabled?: boolean;
991
+ borderMode?: BorderMode;
977
992
  }
978
993
  declare const DateRangePicker: React$1.FC<DateRangePickerProps>;
979
994
  declare const CompactDatePicker: React$1.FC<{
@@ -1051,6 +1066,7 @@ interface LunarDatePickerProps {
1051
1066
  minDate?: LunarPickerValue;
1052
1067
  /** Maximum selectable date (inclusive). Compared by day in local timezone. */
1053
1068
  maxDate?: LunarPickerValue;
1069
+ borderMode?: BorderMode;
1054
1070
  }
1055
1071
  declare const LunarDatePicker: React$1.FC<LunarDatePickerProps>;
1056
1072
  interface LunarDateRangePickerProps {
@@ -1068,6 +1084,7 @@ interface LunarDateRangePickerProps {
1068
1084
  maxDate?: LunarPickerValue;
1069
1085
  size?: "sm" | "md" | "lg";
1070
1086
  disabled?: boolean;
1087
+ borderMode?: BorderMode;
1071
1088
  }
1072
1089
  declare const LunarDateRangePicker: React$1.FC<LunarDateRangePickerProps>;
1073
1090
 
@@ -1093,6 +1110,7 @@ interface DateTimePickerProps {
1093
1110
  clearLabel?: string;
1094
1111
  /** Size variant */
1095
1112
  size?: "sm" | "md" | "lg";
1113
+ borderMode?: BorderMode;
1096
1114
  }
1097
1115
  declare const DateTimePicker: React$1.FC<DateTimePickerProps>;
1098
1116
 
@@ -1150,8 +1168,9 @@ interface TimePickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "
1150
1168
  onOpen?: () => void;
1151
1169
  /** Callback when popover closes */
1152
1170
  onClose?: () => void;
1171
+ borderMode?: BorderMode;
1153
1172
  }
1154
- declare function TimePicker({ value, defaultValue, onChange, placeholder, disabled, size, label, required, format, includeSeconds, minuteStep, secondStep, clearable, variant, matchTriggerWidth, showNow, showPresets, allowManualInput, customPresets, min, max, minTime, maxTime, disabledTimes, error, success, helperText, animate, onOpen, onClose, className, ...rest }: TimePickerProps): react_jsx_runtime.JSX.Element;
1173
+ declare function TimePicker({ value, defaultValue, onChange, placeholder, disabled, size, label, required, format, includeSeconds, minuteStep, secondStep, clearable, variant, matchTriggerWidth, showNow, showPresets, allowManualInput, customPresets, min, max, minTime, maxTime, disabledTimes, error, success, helperText, animate, onOpen, onClose, className, borderMode, ...rest }: TimePickerProps): react_jsx_runtime.JSX.Element;
1155
1174
 
1156
1175
  type MonthYearPickerVariant = "default" | "compact" | "inline";
1157
1176
  type PickerSize = "sm" | "md" | "lg";
@@ -1222,8 +1241,9 @@ interface MonthYearPickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElemen
1222
1241
  month?: string;
1223
1242
  year?: string;
1224
1243
  };
1244
+ borderMode?: BorderMode;
1225
1245
  }
1226
- declare function MonthYearPicker({ value, defaultValue, onChange, placeholder, disabled, size, label, labelClassName, required, clearable, variant, matchTriggerWidth, monthNames, shortMonthNames, minYear, maxYear, minDate, maxDate, error, success, helperText, animate, onOpen, onClose, showThisMonth, columnLabels, className, ...rest }: MonthYearPickerProps): react_jsx_runtime.JSX.Element;
1246
+ declare function MonthYearPicker({ value, defaultValue, onChange, placeholder, disabled, size, label, labelClassName, required, clearable, variant, matchTriggerWidth, monthNames, shortMonthNames, minYear, maxYear, minDate, maxDate, error, success, helperText, animate, onOpen, onClose, showThisMonth, columnLabels, className, borderMode, ...rest }: MonthYearPickerProps): react_jsx_runtime.JSX.Element;
1227
1247
 
1228
1248
  type SelectMode = "single" | "multiple" | "range";
1229
1249
  type Variant$3 = "default" | "bordered" | "card" | "minimal";
@@ -1728,6 +1748,7 @@ interface ComboboxProps {
1728
1748
  fontBold?: boolean;
1729
1749
  loading?: boolean;
1730
1750
  loadingText?: string;
1751
+ borderMode?: BorderMode;
1731
1752
  showSelectedIcon?: boolean;
1732
1753
  maxHeight?: number;
1733
1754
  groupBy?: (option: ComboboxOption) => string;
@@ -1793,6 +1814,7 @@ interface MultiComboboxProps {
1793
1814
  loading?: boolean;
1794
1815
  loadingText?: string;
1795
1816
  emptyText?: string;
1817
+ borderMode?: BorderMode;
1796
1818
  showSelectedIcons?: boolean;
1797
1819
  maxHeight?: number;
1798
1820
  groupBy?: (option: MultiComboboxOption) => string;
@@ -1836,6 +1858,7 @@ interface RadioGroupProps {
1836
1858
  orientation?: "horizontal" | "vertical";
1837
1859
  size?: "sm" | "md" | "lg";
1838
1860
  variant?: "default" | "card" | "button";
1861
+ borderMode?: BorderMode;
1839
1862
  className?: string;
1840
1863
  children: React$1.ReactNode;
1841
1864
  required?: boolean;
@@ -2079,6 +2102,7 @@ interface CategoryTreeSelectBaseProps {
2079
2102
  * <CategoryTreeSelect baseIndent={0.25} indentSize={0.75} />
2080
2103
  */
2081
2104
  indentSize?: number;
2105
+ borderMode?: BorderMode;
2082
2106
  }
2083
2107
  /** Multi-select mode. This is the default when `singleSelect` is omitted. */
2084
2108
  interface CategoryTreeSelectMultiProps extends CategoryTreeSelectBaseProps {
@@ -2506,8 +2530,9 @@ interface ColorPickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
2506
2530
  showHarmony?: boolean;
2507
2531
  /** Max recent colors to remember */
2508
2532
  maxRecent?: number;
2533
+ borderMode?: BorderMode;
2509
2534
  }
2510
- declare function ColorPicker({ value, defaultValue, onChange, disabled, withAlpha, format, presets, className, triggerClassName, contentClassName, clearable, copyable, size, variant, showRecent, showHarmony, maxRecent, ...rest }: ColorPickerProps): react_jsx_runtime.JSX.Element;
2535
+ declare function ColorPicker({ value, defaultValue, onChange, disabled, withAlpha, format, presets, className, triggerClassName, contentClassName, clearable, copyable, size, variant, showRecent, showHarmony, maxRecent, borderMode, ...rest }: ColorPickerProps): react_jsx_runtime.JSX.Element;
2511
2536
 
2512
2537
  interface Song {
2513
2538
  id: number;
package/dist/index.d.ts CHANGED
@@ -30,6 +30,15 @@ declare const SIZE_STYLES_BTN: {
30
30
  icon: string;
31
31
  };
32
32
 
33
+ declare const STANDARD_BORDER_MODES: readonly ["none", "sm", "md", "lg", "xl", "2xl", "3xl", "full"];
34
+ declare const CUSTOM_BORDER_MAP: {
35
+ readonly daewoo: "rounded-2xl";
36
+ readonly infiniq: "rounded-full";
37
+ };
38
+ type StandardBorderMode = typeof STANDARD_BORDER_MODES[number];
39
+ type CustomBorderMode = keyof typeof CUSTOM_BORDER_MAP;
40
+ type BorderMode = StandardBorderMode | CustomBorderMode | (string & {});
41
+
33
42
  /** Public props for the `Button` component. */
34
43
  interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
35
44
  onClick?: (event: React__default.MouseEvent<HTMLButtonElement>) => void;
@@ -60,6 +69,7 @@ interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElem
60
69
  noWrap?: boolean;
61
70
  noHoverOverlay?: boolean;
62
71
  gradient?: boolean;
72
+ borderMode?: BorderMode;
63
73
  }
64
74
  declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
65
75
 
@@ -162,6 +172,7 @@ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size">
162
172
  description?: string;
163
173
  variant?: "default" | "filled" | "outlined" | "minimal";
164
174
  size?: "sm" | "md" | "lg";
175
+ borderMode?: BorderMode;
165
176
  leftIcon?: React__default.ComponentType<{
166
177
  className?: string;
167
178
  }>;
@@ -214,6 +225,7 @@ interface TextareaProps extends React__default.TextareaHTMLAttributes<HTMLTextAr
214
225
  description?: string;
215
226
  variant?: "default" | "filled" | "outlined" | "minimal";
216
227
  size?: "sm" | "md" | "lg";
228
+ borderMode?: BorderMode;
217
229
  resize?: "none" | "vertical" | "horizontal" | "both";
218
230
  counter?: boolean;
219
231
  /** Enable OverlayScrollbars on textarea viewport. Default: false */
@@ -325,6 +337,7 @@ interface TagInputProps {
325
337
  };
326
338
  /** Maximum visible tags before showing "+N more" badge */
327
339
  maxVisibleTags?: number;
340
+ borderMode?: BorderMode;
328
341
  }
329
342
  declare const TagInput: React__default.ForwardRefExoticComponent<TagInputProps & React__default.RefAttributes<HTMLInputElement>>;
330
343
 
@@ -952,6 +965,7 @@ interface DatePickerProps {
952
965
  minDate?: Date;
953
966
  /** Maximum selectable date (inclusive). Compared by day in local timezone. */
954
967
  maxDate?: Date;
968
+ borderMode?: BorderMode;
955
969
  }
956
970
  declare const DatePicker: React$1.FC<DatePickerProps>;
957
971
  /** Public props for the `DateRangePicker` component. */
@@ -974,6 +988,7 @@ interface DateRangePickerProps {
974
988
  /** Size variant */
975
989
  size?: "sm" | "md" | "lg";
976
990
  disabled?: boolean;
991
+ borderMode?: BorderMode;
977
992
  }
978
993
  declare const DateRangePicker: React$1.FC<DateRangePickerProps>;
979
994
  declare const CompactDatePicker: React$1.FC<{
@@ -1051,6 +1066,7 @@ interface LunarDatePickerProps {
1051
1066
  minDate?: LunarPickerValue;
1052
1067
  /** Maximum selectable date (inclusive). Compared by day in local timezone. */
1053
1068
  maxDate?: LunarPickerValue;
1069
+ borderMode?: BorderMode;
1054
1070
  }
1055
1071
  declare const LunarDatePicker: React$1.FC<LunarDatePickerProps>;
1056
1072
  interface LunarDateRangePickerProps {
@@ -1068,6 +1084,7 @@ interface LunarDateRangePickerProps {
1068
1084
  maxDate?: LunarPickerValue;
1069
1085
  size?: "sm" | "md" | "lg";
1070
1086
  disabled?: boolean;
1087
+ borderMode?: BorderMode;
1071
1088
  }
1072
1089
  declare const LunarDateRangePicker: React$1.FC<LunarDateRangePickerProps>;
1073
1090
 
@@ -1093,6 +1110,7 @@ interface DateTimePickerProps {
1093
1110
  clearLabel?: string;
1094
1111
  /** Size variant */
1095
1112
  size?: "sm" | "md" | "lg";
1113
+ borderMode?: BorderMode;
1096
1114
  }
1097
1115
  declare const DateTimePicker: React$1.FC<DateTimePickerProps>;
1098
1116
 
@@ -1150,8 +1168,9 @@ interface TimePickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "
1150
1168
  onOpen?: () => void;
1151
1169
  /** Callback when popover closes */
1152
1170
  onClose?: () => void;
1171
+ borderMode?: BorderMode;
1153
1172
  }
1154
- declare function TimePicker({ value, defaultValue, onChange, placeholder, disabled, size, label, required, format, includeSeconds, minuteStep, secondStep, clearable, variant, matchTriggerWidth, showNow, showPresets, allowManualInput, customPresets, min, max, minTime, maxTime, disabledTimes, error, success, helperText, animate, onOpen, onClose, className, ...rest }: TimePickerProps): react_jsx_runtime.JSX.Element;
1173
+ declare function TimePicker({ value, defaultValue, onChange, placeholder, disabled, size, label, required, format, includeSeconds, minuteStep, secondStep, clearable, variant, matchTriggerWidth, showNow, showPresets, allowManualInput, customPresets, min, max, minTime, maxTime, disabledTimes, error, success, helperText, animate, onOpen, onClose, className, borderMode, ...rest }: TimePickerProps): react_jsx_runtime.JSX.Element;
1155
1174
 
1156
1175
  type MonthYearPickerVariant = "default" | "compact" | "inline";
1157
1176
  type PickerSize = "sm" | "md" | "lg";
@@ -1222,8 +1241,9 @@ interface MonthYearPickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElemen
1222
1241
  month?: string;
1223
1242
  year?: string;
1224
1243
  };
1244
+ borderMode?: BorderMode;
1225
1245
  }
1226
- declare function MonthYearPicker({ value, defaultValue, onChange, placeholder, disabled, size, label, labelClassName, required, clearable, variant, matchTriggerWidth, monthNames, shortMonthNames, minYear, maxYear, minDate, maxDate, error, success, helperText, animate, onOpen, onClose, showThisMonth, columnLabels, className, ...rest }: MonthYearPickerProps): react_jsx_runtime.JSX.Element;
1246
+ declare function MonthYearPicker({ value, defaultValue, onChange, placeholder, disabled, size, label, labelClassName, required, clearable, variant, matchTriggerWidth, monthNames, shortMonthNames, minYear, maxYear, minDate, maxDate, error, success, helperText, animate, onOpen, onClose, showThisMonth, columnLabels, className, borderMode, ...rest }: MonthYearPickerProps): react_jsx_runtime.JSX.Element;
1227
1247
 
1228
1248
  type SelectMode = "single" | "multiple" | "range";
1229
1249
  type Variant$3 = "default" | "bordered" | "card" | "minimal";
@@ -1728,6 +1748,7 @@ interface ComboboxProps {
1728
1748
  fontBold?: boolean;
1729
1749
  loading?: boolean;
1730
1750
  loadingText?: string;
1751
+ borderMode?: BorderMode;
1731
1752
  showSelectedIcon?: boolean;
1732
1753
  maxHeight?: number;
1733
1754
  groupBy?: (option: ComboboxOption) => string;
@@ -1793,6 +1814,7 @@ interface MultiComboboxProps {
1793
1814
  loading?: boolean;
1794
1815
  loadingText?: string;
1795
1816
  emptyText?: string;
1817
+ borderMode?: BorderMode;
1796
1818
  showSelectedIcons?: boolean;
1797
1819
  maxHeight?: number;
1798
1820
  groupBy?: (option: MultiComboboxOption) => string;
@@ -1836,6 +1858,7 @@ interface RadioGroupProps {
1836
1858
  orientation?: "horizontal" | "vertical";
1837
1859
  size?: "sm" | "md" | "lg";
1838
1860
  variant?: "default" | "card" | "button";
1861
+ borderMode?: BorderMode;
1839
1862
  className?: string;
1840
1863
  children: React$1.ReactNode;
1841
1864
  required?: boolean;
@@ -2079,6 +2102,7 @@ interface CategoryTreeSelectBaseProps {
2079
2102
  * <CategoryTreeSelect baseIndent={0.25} indentSize={0.75} />
2080
2103
  */
2081
2104
  indentSize?: number;
2105
+ borderMode?: BorderMode;
2082
2106
  }
2083
2107
  /** Multi-select mode. This is the default when `singleSelect` is omitted. */
2084
2108
  interface CategoryTreeSelectMultiProps extends CategoryTreeSelectBaseProps {
@@ -2506,8 +2530,9 @@ interface ColorPickerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
2506
2530
  showHarmony?: boolean;
2507
2531
  /** Max recent colors to remember */
2508
2532
  maxRecent?: number;
2533
+ borderMode?: BorderMode;
2509
2534
  }
2510
- declare function ColorPicker({ value, defaultValue, onChange, disabled, withAlpha, format, presets, className, triggerClassName, contentClassName, clearable, copyable, size, variant, showRecent, showHarmony, maxRecent, ...rest }: ColorPickerProps): react_jsx_runtime.JSX.Element;
2535
+ declare function ColorPicker({ value, defaultValue, onChange, disabled, withAlpha, format, presets, className, triggerClassName, contentClassName, clearable, copyable, size, variant, showRecent, showHarmony, maxRecent, borderMode, ...rest }: ColorPickerProps): react_jsx_runtime.JSX.Element;
2511
2536
 
2512
2537
  interface Song {
2513
2538
  id: number;
package/dist/index.js CHANGED
@@ -52,6 +52,26 @@ function cn(...inputs) {
52
52
 
53
53
  // src/components/Button.tsx
54
54
  import { Activity } from "lucide-react";
55
+
56
+ // src/utils/radius.ts
57
+ var STANDARD_BORDER_MODES = ["none", "sm", "md", "lg", "xl", "2xl", "3xl", "full"];
58
+ var CUSTOM_BORDER_MAP = {
59
+ daewoo: "rounded-2xl",
60
+ infiniq: "rounded-full"
61
+ };
62
+ var BORDER_MODE_DOCS_TYPE = `"${STANDARD_BORDER_MODES.join('" | "')}" | "${Object.keys(CUSTOM_BORDER_MAP).join('" | "')}"`;
63
+ function getBorderRadiusClass(borderMode = "full") {
64
+ if (!borderMode) return "rounded-full";
65
+ if (borderMode in CUSTOM_BORDER_MAP) {
66
+ return CUSTOM_BORDER_MAP[borderMode];
67
+ }
68
+ if (STANDARD_BORDER_MODES.includes(borderMode)) {
69
+ return `rounded-${borderMode}`;
70
+ }
71
+ return borderMode;
72
+ }
73
+
74
+ // src/components/Button.tsx
55
75
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
56
76
  var Button = forwardRef(
57
77
  ({
@@ -78,9 +98,10 @@ var Button = forwardRef(
78
98
  noWrap = true,
79
99
  noHoverOverlay = false,
80
100
  gradient = false,
101
+ borderMode,
81
102
  ...rest
82
103
  }, ref) => {
83
- const baseStyles = asContainer ? "relative inline-flex justify-center rounded-full font-medium transition-colors duration-150 ease-soft outline-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background active:translate-y-px" : "relative inline-flex items-center justify-center gap-2 rounded-full font-medium overflow-hidden transition-colors duration-150 ease-soft outline-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background active:translate-y-px";
104
+ const baseStyles = asContainer ? "relative inline-flex justify-center font-medium transition-colors duration-150 ease-soft outline-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background active:translate-y-px" : "relative inline-flex items-center justify-center gap-2 font-medium overflow-hidden transition-colors duration-150 ease-soft outline-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background active:translate-y-px";
84
105
  const finalVariant = gradient ? "gradient" : variant;
85
106
  const variantStyle = VARIANT_STYLES_BTN[finalVariant] || VARIANT_STYLES_BTN.default;
86
107
  const sizeStyle = SIZE_STYLES_BTN[size] || SIZE_STYLES_BTN.md;
@@ -123,6 +144,7 @@ var Button = forwardRef(
123
144
  title,
124
145
  className: cn(
125
146
  baseStyles,
147
+ getBorderRadiusClass(borderMode ?? "full"),
126
148
  variantStyle,
127
149
  sizeStyle,
128
150
  "group",
@@ -2796,6 +2818,7 @@ var Input = forwardRef3(
2796
2818
  value,
2797
2819
  maxLength,
2798
2820
  rightAddon,
2821
+ borderMode,
2799
2822
  ...rest
2800
2823
  }, ref) => {
2801
2824
  const [localError, setLocalError] = useState4(error);
@@ -2887,6 +2910,7 @@ var Input = forwardRef3(
2887
2910
  hint: _hint,
2888
2911
  counter: _counter,
2889
2912
  rightAddon: _rightAddon,
2913
+ borderMode: _borderMode,
2890
2914
  ...restInput
2891
2915
  } = rest;
2892
2916
  const handleFocus = (e) => {
@@ -2897,7 +2921,7 @@ var Input = forwardRef3(
2897
2921
  setIsFocused(false);
2898
2922
  onBlurProp?.(e);
2899
2923
  };
2900
- const radiusClass = size === "sm" ? "rounded-full" : "rounded-full";
2924
+ const radiusClass = getBorderRadiusClass(borderMode ?? "full");
2901
2925
  return /* @__PURE__ */ jsxs5("div", { className: cn("w-full group", containerSpacing), children: [
2902
2926
  label && /* @__PURE__ */ jsxs5("div", { className: "flex items-center justify-between", children: [
2903
2927
  /* @__PURE__ */ jsxs5(
@@ -3277,6 +3301,7 @@ var Textarea = forwardRef3(
3277
3301
  required,
3278
3302
  value,
3279
3303
  maxLength,
3304
+ borderMode,
3280
3305
  ...props
3281
3306
  }, ref) => {
3282
3307
  const [isFocused, setIsFocused] = useState4(false);
@@ -3356,7 +3381,8 @@ var Textarea = forwardRef3(
3356
3381
  onFocus: () => setIsFocused(true),
3357
3382
  onBlur: () => setIsFocused(false),
3358
3383
  className: cn(
3359
- "w-full rounded-2xl md:rounded-3xl text-foreground transition-all duration-200",
3384
+ "w-full text-foreground transition-all duration-200",
3385
+ getBorderRadiusClass(borderMode ?? "full"),
3360
3386
  "placeholder:text-muted-foreground focus:outline-none",
3361
3387
  "disabled:cursor-not-allowed disabled:opacity-50",
3362
3388
  sizeStyles8[size],
@@ -5297,7 +5323,8 @@ var TagInput = forwardRef5(
5297
5323
  loading: loading2 = false,
5298
5324
  maxTags,
5299
5325
  maxVisibleTags,
5300
- labels
5326
+ labels,
5327
+ borderMode
5301
5328
  }, ref) => {
5302
5329
  const [inputValue, setInputValue] = useState8("");
5303
5330
  const gi18n = useGlobalI18n();
@@ -5316,21 +5343,21 @@ var TagInput = forwardRef5(
5316
5343
  const moreLabel = labels?.moreCount?.replace("{count}", String(hiddenCount)) ?? `+${hiddenCount} more`;
5317
5344
  const sizeStyles8 = {
5318
5345
  sm: {
5319
- container: "min-h-8 p-1.5 gap-1 rounded-full",
5346
+ container: "min-h-8 p-1.5 gap-1",
5320
5347
  input: "text-xs",
5321
5348
  tag: "px-1.5 py-0.5 text-xs gap-1 rounded-full",
5322
5349
  tagIcon: "h-3 w-3",
5323
5350
  button: "h-7 text-xs px-2"
5324
5351
  },
5325
5352
  md: {
5326
- container: "min-h-10 p-2 gap-1.5 rounded-full",
5353
+ container: "min-h-10 p-2 gap-1.5",
5327
5354
  input: "text-sm",
5328
5355
  tag: "px-2 py-1 text-sm gap-1.5 rounded-full",
5329
5356
  tagIcon: "h-3.5 w-3.5",
5330
5357
  button: "h-9 text-sm px-3"
5331
5358
  },
5332
5359
  lg: {
5333
- container: "min-h-12 p-2.5 gap-2 rounded-full",
5360
+ container: "min-h-12 p-2.5 gap-2",
5334
5361
  input: "text-base",
5335
5362
  tag: "px-2.5 py-1.5 text-base gap-2 rounded-full",
5336
5363
  tagIcon: "h-4 w-4",
@@ -5426,6 +5453,7 @@ var TagInput = forwardRef5(
5426
5453
  "bg-background border border-input",
5427
5454
  "transition-all duration-200",
5428
5455
  "hover:border-accent-foreground/20",
5456
+ getBorderRadiusClass(borderMode ?? "full"),
5429
5457
  isFocused && "ring-1 ring-ring ring-offset-1 ring-offset-background border-transparent shadow-md",
5430
5458
  disabled && "opacity-50 cursor-not-allowed",
5431
5459
  sizeStyles8[size].container
@@ -8584,6 +8612,7 @@ var Combobox = ({
8584
8612
  fontBold = false,
8585
8613
  loading: loading2 = false,
8586
8614
  loadingText: loadingTextProp,
8615
+ borderMode,
8587
8616
  showSelectedIcon = true,
8588
8617
  maxHeight = 280,
8589
8618
  groupBy,
@@ -8954,7 +8983,7 @@ var Combobox = ({
8954
8983
  filled: "border-0 bg-muted/50 hover:bg-muted/80"
8955
8984
  };
8956
8985
  const labelSize = size === "sm" ? "text-xs" : size === "lg" ? "text-base" : "text-sm";
8957
- const radiusClass = "rounded-full";
8986
+ const radiusClass = getBorderRadiusClass(borderMode ?? "full");
8958
8987
  const verticalGap = size === "sm" ? "space-y-1.5" : "space-y-2";
8959
8988
  const triggerButtonBaseProps = {
8960
8989
  ref: triggerRef,
@@ -9844,7 +9873,8 @@ var DatePicker = ({
9844
9873
  weekdayLabels,
9845
9874
  disablePastDates = false,
9846
9875
  minDate,
9847
- maxDate
9876
+ maxDate,
9877
+ borderMode
9848
9878
  }) => {
9849
9879
  const t = useSmartTranslations("DatePicker");
9850
9880
  const tv = useSmartTranslations("ValidationInput");
@@ -10382,7 +10412,7 @@ var DatePicker = ({
10382
10412
  "aria-invalid": !!effectiveError,
10383
10413
  className: cn(
10384
10414
  "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
10385
- "rounded-full",
10415
+ getBorderRadiusClass(borderMode ?? "full"),
10386
10416
  sizeStyles8[size].trigger,
10387
10417
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
10388
10418
  "border-border/60 hover:border-primary/40",
@@ -10492,7 +10522,8 @@ var DateRangePicker = ({
10492
10522
  minDate,
10493
10523
  maxDate,
10494
10524
  size = "md",
10495
- disabled = false
10525
+ disabled = false,
10526
+ borderMode
10496
10527
  }) => {
10497
10528
  const locale = useSmartLocale();
10498
10529
  const t = useSmartTranslations("DatePicker");
@@ -11132,7 +11163,8 @@ var DateRangePicker = ({
11132
11163
  "aria-required": required,
11133
11164
  "aria-invalid": !!effectiveError,
11134
11165
  className: cn(
11135
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
11166
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
11167
+ getBorderRadiusClass(borderMode ?? "full"),
11136
11168
  sizeStyles8[size].trigger,
11137
11169
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
11138
11170
  "border-border/60 hover:border-primary/40",
@@ -11512,7 +11544,8 @@ var LunarDatePicker = ({
11512
11544
  weekdayLabels,
11513
11545
  disablePastDates = false,
11514
11546
  minDate,
11515
- maxDate
11547
+ maxDate,
11548
+ borderMode
11516
11549
  }) => {
11517
11550
  const t = useSmartTranslations("DatePicker");
11518
11551
  const tv = useSmartTranslations("ValidationInput");
@@ -12061,7 +12094,7 @@ var LunarDatePicker = ({
12061
12094
  "aria-invalid": !!effectiveError,
12062
12095
  className: cn(
12063
12096
  "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
12064
- "rounded-full",
12097
+ getBorderRadiusClass(borderMode ?? "full"),
12065
12098
  sizeStyles8[size].trigger,
12066
12099
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
12067
12100
  "border-border/60 hover:border-primary/40",
@@ -12177,7 +12210,8 @@ var LunarDateRangePicker = ({
12177
12210
  minDate,
12178
12211
  maxDate,
12179
12212
  size = "md",
12180
- disabled = false
12213
+ disabled = false,
12214
+ borderMode
12181
12215
  }) => {
12182
12216
  const locale = useSmartLocale();
12183
12217
  const t = useSmartTranslations("DatePicker");
@@ -12680,7 +12714,8 @@ var LunarDateRangePicker = ({
12680
12714
  "aria-required": required,
12681
12715
  "aria-invalid": !!effectiveError,
12682
12716
  className: cn(
12683
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
12717
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
12718
+ getBorderRadiusClass(borderMode ?? "full"),
12684
12719
  sizeStyles8[size].trigger,
12685
12720
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
12686
12721
  "border-border/60 hover:border-primary/40",
@@ -13199,6 +13234,7 @@ function MonthYearPicker({
13199
13234
  showThisMonth = true,
13200
13235
  columnLabels = { month: "Month", year: "Year" },
13201
13236
  className,
13237
+ borderMode,
13202
13238
  ...rest
13203
13239
  }) {
13204
13240
  const gi18n = useGlobalI18n();
@@ -13358,7 +13394,8 @@ function MonthYearPicker({
13358
13394
  "aria-required": required,
13359
13395
  "aria-invalid": !!effectiveError,
13360
13396
  className: cn(
13361
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
13397
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
13398
+ getBorderRadiusClass(borderMode ?? "full"),
13362
13399
  sz.height,
13363
13400
  sz.padding,
13364
13401
  sz.text,
@@ -14723,6 +14760,7 @@ function TimePicker({
14723
14760
  onOpen,
14724
14761
  onClose,
14725
14762
  className,
14763
+ borderMode,
14726
14764
  ...rest
14727
14765
  }) {
14728
14766
  const tv = useSmartTranslations("ValidationInput");
@@ -15063,7 +15101,8 @@ function TimePicker({
15063
15101
  "aria-required": required,
15064
15102
  "aria-invalid": !!effectiveError,
15065
15103
  className: cn(
15066
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
15104
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
15105
+ getBorderRadiusClass(borderMode ?? "full"),
15067
15106
  sz.height,
15068
15107
  sz.padding,
15069
15108
  sz.text,
@@ -15543,7 +15582,8 @@ var DateTimePicker = ({
15543
15582
  required,
15544
15583
  doneLabel,
15545
15584
  clearLabel,
15546
- size = "md"
15585
+ size = "md",
15586
+ borderMode
15547
15587
  }) => {
15548
15588
  const t = useSmartTranslations("DateTimePicker");
15549
15589
  const tv = useSmartTranslations("ValidationInput");
@@ -15723,7 +15763,8 @@ var DateTimePicker = ({
15723
15763
  "aria-required": required,
15724
15764
  "aria-invalid": !!effectiveError,
15725
15765
  className: cn(
15726
- "flex w-full items-center justify-between rounded-full border border-input bg-background",
15766
+ "flex w-full items-center justify-between border border-input bg-background",
15767
+ getBorderRadiusClass(borderMode ?? "full"),
15727
15768
  sizeStyles8[size].trigger,
15728
15769
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
15729
15770
  disabled && "opacity-50 cursor-not-allowed",
@@ -18768,6 +18809,7 @@ var MultiCombobox = ({
18768
18809
  loading: loading2 = false,
18769
18810
  loadingText: loadingTextProp,
18770
18811
  emptyText: emptyTextProp,
18812
+ borderMode,
18771
18813
  showSelectedIcons = true,
18772
18814
  maxHeight = 280,
18773
18815
  groupBy,
@@ -19181,7 +19223,8 @@ var MultiCombobox = ({
19181
19223
  "aria-required": required,
19182
19224
  "aria-invalid": !!effectiveError,
19183
19225
  className: cn(
19184
- "group flex w-full items-center gap-2 rounded-full transition-all duration-200",
19226
+ "group flex w-full items-center gap-2 transition-all duration-200",
19227
+ getBorderRadiusClass(borderMode ?? "full"),
19185
19228
  sizeStyles8[size].trigger,
19186
19229
  variantStyles6[variant],
19187
19230
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:border-primary",
@@ -19375,6 +19418,7 @@ var RadioGroup = React46.forwardRef(
19375
19418
  orientation = "vertical",
19376
19419
  size = "md",
19377
19420
  variant = "default",
19421
+ borderMode,
19378
19422
  className,
19379
19423
  children,
19380
19424
  required = false,
@@ -19403,7 +19447,8 @@ var RadioGroup = React46.forwardRef(
19403
19447
  name: radioName,
19404
19448
  disabled,
19405
19449
  size,
19406
- variant
19450
+ variant,
19451
+ borderMode
19407
19452
  },
19408
19453
  children: /* @__PURE__ */ jsxs38("div", { className: "space-y-2", children: [
19409
19454
  /* @__PURE__ */ jsx50(
@@ -19452,7 +19497,7 @@ var sizeStyles7 = {
19452
19497
  };
19453
19498
  var RadioGroupItem = React46.forwardRef(
19454
19499
  ({ value, id, disabled, className, children, label, labelClassName, description, icon }, ref) => {
19455
- const { value: selectedValue, onValueChange, name, disabled: groupDisabled, size = "md", variant = "default" } = useRadioGroup();
19500
+ const { value: selectedValue, onValueChange, name, disabled: groupDisabled, size = "md", variant = "default", borderMode } = useRadioGroup();
19456
19501
  const isDisabled = disabled || groupDisabled;
19457
19502
  const isSelected = selectedValue === value;
19458
19503
  const Icon = icon;
@@ -19462,7 +19507,8 @@ var RadioGroupItem = React46.forwardRef(
19462
19507
  "div",
19463
19508
  {
19464
19509
  className: cn(
19465
- "relative rounded-xl border transition-all duration-200 cursor-pointer",
19510
+ "relative border transition-all duration-200 cursor-pointer",
19511
+ getBorderRadiusClass(borderMode ?? "xl"),
19466
19512
  "hover:bg-accent/50 focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2",
19467
19513
  isSelected && "border-primary bg-primary/5 ring-1 ring-primary/20",
19468
19514
  isDisabled && "cursor-not-allowed opacity-50",
@@ -19537,7 +19583,8 @@ var RadioGroupItem = React46.forwardRef(
19537
19583
  id: radioId,
19538
19584
  disabled: isDisabled,
19539
19585
  className: cn(
19540
- "inline-flex items-center justify-center gap-2 rounded-lg border font-medium transition-all duration-200",
19586
+ "inline-flex items-center justify-center gap-2 border font-medium transition-all duration-200",
19587
+ getBorderRadiusClass(borderMode ?? "lg"),
19541
19588
  "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
19542
19589
  "disabled:cursor-not-allowed disabled:opacity-50",
19543
19590
  isSelected ? "border-primary bg-primary text-primary-foreground shadow-sm" : "border-border/50 bg-background hover:bg-accent hover:text-accent-foreground",
@@ -20652,7 +20699,8 @@ function CategoryTreeSelect(props) {
20652
20699
  baseIndent = TREE_NODE_BASE_PADDING_REM,
20653
20700
  indentSize = TREE_NODE_INDENT_REM,
20654
20701
  renderItemActions,
20655
- singleSelect = false
20702
+ singleSelect = false,
20703
+ borderMode
20656
20704
  } = props;
20657
20705
  const [isOpen, setIsOpen] = useState33(false);
20658
20706
  const [expandedNodes, setExpandedNodes] = useState33(
@@ -21340,7 +21388,8 @@ function CategoryTreeSelect(props) {
21340
21388
  }
21341
21389
  },
21342
21390
  className: cn(
21343
- "group flex w-full items-center justify-between rounded-full transition-all duration-200",
21391
+ "group flex w-full items-center justify-between transition-all duration-200",
21392
+ getBorderRadiusClass(borderMode ?? "full"),
21344
21393
  "backdrop-blur-sm",
21345
21394
  triggerSizeStyles[size].button,
21346
21395
  triggerVariantStyles[variant],
@@ -23915,6 +23964,7 @@ function ColorPicker({
23915
23964
  showRecent = false,
23916
23965
  showHarmony = false,
23917
23966
  maxRecent = 8,
23967
+ borderMode,
23918
23968
  ...rest
23919
23969
  }) {
23920
23970
  const gi18n = useGlobalI18n();
@@ -24013,7 +24063,8 @@ function ColorPicker({
24013
24063
  type: "button",
24014
24064
  disabled,
24015
24065
  className: cn(
24016
- "w-full px-3 rounded-full border border-input bg-background flex items-center justify-between",
24066
+ "w-full px-3 border border-input bg-background flex items-center justify-between",
24067
+ getBorderRadiusClass(borderMode ?? "full"),
24017
24068
  sizeClasses2[size],
24018
24069
  "hover:border-accent-foreground/30 transition-colors",
24019
24070
  disabled && "opacity-50 cursor-not-allowed",