@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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@underverse-ui/underverse",
3
- "version": "1.0.178",
3
+ "version": "1.0.179",
4
4
  "sourceEntry": "src/index.ts",
5
5
  "totalExports": 248,
6
6
  "exports": [
package/dist/index.cjs CHANGED
@@ -247,6 +247,26 @@ function cn(...inputs) {
247
247
 
248
248
  // src/components/Button.tsx
249
249
  var import_lucide_react = require("lucide-react");
250
+
251
+ // src/utils/radius.ts
252
+ var STANDARD_BORDER_MODES = ["none", "sm", "md", "lg", "xl", "2xl", "3xl", "full"];
253
+ var CUSTOM_BORDER_MAP = {
254
+ daewoo: "rounded-2xl",
255
+ infiniq: "rounded-full"
256
+ };
257
+ var BORDER_MODE_DOCS_TYPE = `"${STANDARD_BORDER_MODES.join('" | "')}" | "${Object.keys(CUSTOM_BORDER_MAP).join('" | "')}"`;
258
+ function getBorderRadiusClass(borderMode = "full") {
259
+ if (!borderMode) return "rounded-full";
260
+ if (borderMode in CUSTOM_BORDER_MAP) {
261
+ return CUSTOM_BORDER_MAP[borderMode];
262
+ }
263
+ if (STANDARD_BORDER_MODES.includes(borderMode)) {
264
+ return `rounded-${borderMode}`;
265
+ }
266
+ return borderMode;
267
+ }
268
+
269
+ // src/components/Button.tsx
250
270
  var import_jsx_runtime = require("react/jsx-runtime");
251
271
  var Button = (0, import_react.forwardRef)(
252
272
  ({
@@ -273,9 +293,10 @@ var Button = (0, import_react.forwardRef)(
273
293
  noWrap = true,
274
294
  noHoverOverlay = false,
275
295
  gradient = false,
296
+ borderMode,
276
297
  ...rest
277
298
  }, ref) => {
278
- 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";
299
+ 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";
279
300
  const finalVariant = gradient ? "gradient" : variant;
280
301
  const variantStyle = VARIANT_STYLES_BTN[finalVariant] || VARIANT_STYLES_BTN.default;
281
302
  const sizeStyle = SIZE_STYLES_BTN[size] || SIZE_STYLES_BTN.md;
@@ -318,6 +339,7 @@ var Button = (0, import_react.forwardRef)(
318
339
  title,
319
340
  className: cn(
320
341
  baseStyles,
342
+ getBorderRadiusClass(borderMode ?? "full"),
321
343
  variantStyle,
322
344
  sizeStyle,
323
345
  "group",
@@ -2991,6 +3013,7 @@ var Input = (0, import_react4.forwardRef)(
2991
3013
  value,
2992
3014
  maxLength,
2993
3015
  rightAddon,
3016
+ borderMode,
2994
3017
  ...rest
2995
3018
  }, ref) => {
2996
3019
  const [localError, setLocalError] = (0, import_react4.useState)(error);
@@ -3082,6 +3105,7 @@ var Input = (0, import_react4.forwardRef)(
3082
3105
  hint: _hint,
3083
3106
  counter: _counter,
3084
3107
  rightAddon: _rightAddon,
3108
+ borderMode: _borderMode,
3085
3109
  ...restInput
3086
3110
  } = rest;
3087
3111
  const handleFocus = (e) => {
@@ -3092,7 +3116,7 @@ var Input = (0, import_react4.forwardRef)(
3092
3116
  setIsFocused(false);
3093
3117
  onBlurProp?.(e);
3094
3118
  };
3095
- const radiusClass = size === "sm" ? "rounded-full" : "rounded-full";
3119
+ const radiusClass = getBorderRadiusClass(borderMode ?? "full");
3096
3120
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("w-full group", containerSpacing), children: [
3097
3121
  label && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between", children: [
3098
3122
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
@@ -3472,6 +3496,7 @@ var Textarea = (0, import_react4.forwardRef)(
3472
3496
  required,
3473
3497
  value,
3474
3498
  maxLength,
3499
+ borderMode,
3475
3500
  ...props
3476
3501
  }, ref) => {
3477
3502
  const [isFocused, setIsFocused] = (0, import_react4.useState)(false);
@@ -3551,7 +3576,8 @@ var Textarea = (0, import_react4.forwardRef)(
3551
3576
  onFocus: () => setIsFocused(true),
3552
3577
  onBlur: () => setIsFocused(false),
3553
3578
  className: cn(
3554
- "w-full rounded-2xl md:rounded-3xl text-foreground transition-all duration-200",
3579
+ "w-full text-foreground transition-all duration-200",
3580
+ getBorderRadiusClass(borderMode ?? "full"),
3555
3581
  "placeholder:text-muted-foreground focus:outline-none",
3556
3582
  "disabled:cursor-not-allowed disabled:opacity-50",
3557
3583
  sizeStyles8[size],
@@ -5492,7 +5518,8 @@ var TagInput = (0, import_react10.forwardRef)(
5492
5518
  loading: loading2 = false,
5493
5519
  maxTags,
5494
5520
  maxVisibleTags,
5495
- labels
5521
+ labels,
5522
+ borderMode
5496
5523
  }, ref) => {
5497
5524
  const [inputValue, setInputValue] = (0, import_react10.useState)("");
5498
5525
  const gi18n = useGlobalI18n();
@@ -5511,21 +5538,21 @@ var TagInput = (0, import_react10.forwardRef)(
5511
5538
  const moreLabel = labels?.moreCount?.replace("{count}", String(hiddenCount)) ?? `+${hiddenCount} more`;
5512
5539
  const sizeStyles8 = {
5513
5540
  sm: {
5514
- container: "min-h-8 p-1.5 gap-1 rounded-full",
5541
+ container: "min-h-8 p-1.5 gap-1",
5515
5542
  input: "text-xs",
5516
5543
  tag: "px-1.5 py-0.5 text-xs gap-1 rounded-full",
5517
5544
  tagIcon: "h-3 w-3",
5518
5545
  button: "h-7 text-xs px-2"
5519
5546
  },
5520
5547
  md: {
5521
- container: "min-h-10 p-2 gap-1.5 rounded-full",
5548
+ container: "min-h-10 p-2 gap-1.5",
5522
5549
  input: "text-sm",
5523
5550
  tag: "px-2 py-1 text-sm gap-1.5 rounded-full",
5524
5551
  tagIcon: "h-3.5 w-3.5",
5525
5552
  button: "h-9 text-sm px-3"
5526
5553
  },
5527
5554
  lg: {
5528
- container: "min-h-12 p-2.5 gap-2 rounded-full",
5555
+ container: "min-h-12 p-2.5 gap-2",
5529
5556
  input: "text-base",
5530
5557
  tag: "px-2.5 py-1.5 text-base gap-2 rounded-full",
5531
5558
  tagIcon: "h-4 w-4",
@@ -5621,6 +5648,7 @@ var TagInput = (0, import_react10.forwardRef)(
5621
5648
  "bg-background border border-input",
5622
5649
  "transition-all duration-200",
5623
5650
  "hover:border-accent-foreground/20",
5651
+ getBorderRadiusClass(borderMode ?? "full"),
5624
5652
  isFocused && "ring-1 ring-ring ring-offset-1 ring-offset-background border-transparent shadow-md",
5625
5653
  disabled && "opacity-50 cursor-not-allowed",
5626
5654
  sizeStyles8[size].container
@@ -8779,6 +8807,7 @@ var Combobox = ({
8779
8807
  fontBold = false,
8780
8808
  loading: loading2 = false,
8781
8809
  loadingText: loadingTextProp,
8810
+ borderMode,
8782
8811
  showSelectedIcon = true,
8783
8812
  maxHeight = 280,
8784
8813
  groupBy,
@@ -9149,7 +9178,7 @@ var Combobox = ({
9149
9178
  filled: "border-0 bg-muted/50 hover:bg-muted/80"
9150
9179
  };
9151
9180
  const labelSize = size === "sm" ? "text-xs" : size === "lg" ? "text-base" : "text-sm";
9152
- const radiusClass = "rounded-full";
9181
+ const radiusClass = getBorderRadiusClass(borderMode ?? "full");
9153
9182
  const verticalGap = size === "sm" ? "space-y-1.5" : "space-y-2";
9154
9183
  const triggerButtonBaseProps = {
9155
9184
  ref: triggerRef,
@@ -10039,7 +10068,8 @@ var DatePicker = ({
10039
10068
  weekdayLabels,
10040
10069
  disablePastDates = false,
10041
10070
  minDate,
10042
- maxDate
10071
+ maxDate,
10072
+ borderMode
10043
10073
  }) => {
10044
10074
  const t = useSmartTranslations("DatePicker");
10045
10075
  const tv = useSmartTranslations("ValidationInput");
@@ -10577,7 +10607,7 @@ var DatePicker = ({
10577
10607
  "aria-invalid": !!effectiveError,
10578
10608
  className: cn(
10579
10609
  "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
10580
- "rounded-full",
10610
+ getBorderRadiusClass(borderMode ?? "full"),
10581
10611
  sizeStyles8[size].trigger,
10582
10612
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
10583
10613
  "border-border/60 hover:border-primary/40",
@@ -10687,7 +10717,8 @@ var DateRangePicker = ({
10687
10717
  minDate,
10688
10718
  maxDate,
10689
10719
  size = "md",
10690
- disabled = false
10720
+ disabled = false,
10721
+ borderMode
10691
10722
  }) => {
10692
10723
  const locale = useSmartLocale();
10693
10724
  const t = useSmartTranslations("DatePicker");
@@ -11327,7 +11358,8 @@ var DateRangePicker = ({
11327
11358
  "aria-required": required,
11328
11359
  "aria-invalid": !!effectiveError,
11329
11360
  className: cn(
11330
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
11361
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
11362
+ getBorderRadiusClass(borderMode ?? "full"),
11331
11363
  sizeStyles8[size].trigger,
11332
11364
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
11333
11365
  "border-border/60 hover:border-primary/40",
@@ -11707,7 +11739,8 @@ var LunarDatePicker = ({
11707
11739
  weekdayLabels,
11708
11740
  disablePastDates = false,
11709
11741
  minDate,
11710
- maxDate
11742
+ maxDate,
11743
+ borderMode
11711
11744
  }) => {
11712
11745
  const t = useSmartTranslations("DatePicker");
11713
11746
  const tv = useSmartTranslations("ValidationInput");
@@ -12256,7 +12289,7 @@ var LunarDatePicker = ({
12256
12289
  "aria-invalid": !!effectiveError,
12257
12290
  className: cn(
12258
12291
  "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
12259
- "rounded-full",
12292
+ getBorderRadiusClass(borderMode ?? "full"),
12260
12293
  sizeStyles8[size].trigger,
12261
12294
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
12262
12295
  "border-border/60 hover:border-primary/40",
@@ -12372,7 +12405,8 @@ var LunarDateRangePicker = ({
12372
12405
  minDate,
12373
12406
  maxDate,
12374
12407
  size = "md",
12375
- disabled = false
12408
+ disabled = false,
12409
+ borderMode
12376
12410
  }) => {
12377
12411
  const locale = useSmartLocale();
12378
12412
  const t = useSmartTranslations("DatePicker");
@@ -12875,7 +12909,8 @@ var LunarDateRangePicker = ({
12875
12909
  "aria-required": required,
12876
12910
  "aria-invalid": !!effectiveError,
12877
12911
  className: cn(
12878
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
12912
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
12913
+ getBorderRadiusClass(borderMode ?? "full"),
12879
12914
  sizeStyles8[size].trigger,
12880
12915
  disabled ? "border-border/40 opacity-50 cursor-not-allowed" : [
12881
12916
  "border-border/60 hover:border-primary/40",
@@ -13394,6 +13429,7 @@ function MonthYearPicker({
13394
13429
  showThisMonth = true,
13395
13430
  columnLabels = { month: "Month", year: "Year" },
13396
13431
  className,
13432
+ borderMode,
13397
13433
  ...rest
13398
13434
  }) {
13399
13435
  const gi18n = useGlobalI18n();
@@ -13553,7 +13589,8 @@ function MonthYearPicker({
13553
13589
  "aria-required": required,
13554
13590
  "aria-invalid": !!effectiveError,
13555
13591
  className: cn(
13556
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
13592
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
13593
+ getBorderRadiusClass(borderMode ?? "full"),
13557
13594
  sz.height,
13558
13595
  sz.padding,
13559
13596
  sz.text,
@@ -14918,6 +14955,7 @@ function TimePicker({
14918
14955
  onOpen,
14919
14956
  onClose,
14920
14957
  className,
14958
+ borderMode,
14921
14959
  ...rest
14922
14960
  }) {
14923
14961
  const tv = useSmartTranslations("ValidationInput");
@@ -15258,7 +15296,8 @@ function TimePicker({
15258
15296
  "aria-required": required,
15259
15297
  "aria-invalid": !!effectiveError,
15260
15298
  className: cn(
15261
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
15299
+ "group flex w-full items-center justify-between border bg-background/80 backdrop-blur-sm",
15300
+ getBorderRadiusClass(borderMode ?? "full"),
15262
15301
  sz.height,
15263
15302
  sz.padding,
15264
15303
  sz.text,
@@ -15738,7 +15777,8 @@ var DateTimePicker = ({
15738
15777
  required,
15739
15778
  doneLabel,
15740
15779
  clearLabel,
15741
- size = "md"
15780
+ size = "md",
15781
+ borderMode
15742
15782
  }) => {
15743
15783
  const t = useSmartTranslations("DateTimePicker");
15744
15784
  const tv = useSmartTranslations("ValidationInput");
@@ -15918,7 +15958,8 @@ var DateTimePicker = ({
15918
15958
  "aria-required": required,
15919
15959
  "aria-invalid": !!effectiveError,
15920
15960
  className: cn(
15921
- "flex w-full items-center justify-between rounded-full border border-input bg-background",
15961
+ "flex w-full items-center justify-between border border-input bg-background",
15962
+ getBorderRadiusClass(borderMode ?? "full"),
15922
15963
  sizeStyles8[size].trigger,
15923
15964
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
15924
15965
  disabled && "opacity-50 cursor-not-allowed",
@@ -18963,6 +19004,7 @@ var MultiCombobox = ({
18963
19004
  loading: loading2 = false,
18964
19005
  loadingText: loadingTextProp,
18965
19006
  emptyText: emptyTextProp,
19007
+ borderMode,
18966
19008
  showSelectedIcons = true,
18967
19009
  maxHeight = 280,
18968
19010
  groupBy,
@@ -19376,7 +19418,8 @@ var MultiCombobox = ({
19376
19418
  "aria-required": required,
19377
19419
  "aria-invalid": !!effectiveError,
19378
19420
  className: cn(
19379
- "group flex w-full items-center gap-2 rounded-full transition-all duration-200",
19421
+ "group flex w-full items-center gap-2 transition-all duration-200",
19422
+ getBorderRadiusClass(borderMode ?? "full"),
19380
19423
  sizeStyles8[size].trigger,
19381
19424
  variantStyles6[variant],
19382
19425
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:border-primary",
@@ -19570,6 +19613,7 @@ var RadioGroup = React46.forwardRef(
19570
19613
  orientation = "vertical",
19571
19614
  size = "md",
19572
19615
  variant = "default",
19616
+ borderMode,
19573
19617
  className,
19574
19618
  children,
19575
19619
  required = false,
@@ -19598,7 +19642,8 @@ var RadioGroup = React46.forwardRef(
19598
19642
  name: radioName,
19599
19643
  disabled,
19600
19644
  size,
19601
- variant
19645
+ variant,
19646
+ borderMode
19602
19647
  },
19603
19648
  children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "space-y-2", children: [
19604
19649
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
@@ -19647,7 +19692,7 @@ var sizeStyles7 = {
19647
19692
  };
19648
19693
  var RadioGroupItem = React46.forwardRef(
19649
19694
  ({ value, id, disabled, className, children, label, labelClassName, description, icon }, ref) => {
19650
- const { value: selectedValue, onValueChange, name, disabled: groupDisabled, size = "md", variant = "default" } = useRadioGroup();
19695
+ const { value: selectedValue, onValueChange, name, disabled: groupDisabled, size = "md", variant = "default", borderMode } = useRadioGroup();
19651
19696
  const isDisabled = disabled || groupDisabled;
19652
19697
  const isSelected = selectedValue === value;
19653
19698
  const Icon = icon;
@@ -19657,7 +19702,8 @@ var RadioGroupItem = React46.forwardRef(
19657
19702
  "div",
19658
19703
  {
19659
19704
  className: cn(
19660
- "relative rounded-xl border transition-all duration-200 cursor-pointer",
19705
+ "relative border transition-all duration-200 cursor-pointer",
19706
+ getBorderRadiusClass(borderMode ?? "xl"),
19661
19707
  "hover:bg-accent/50 focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2",
19662
19708
  isSelected && "border-primary bg-primary/5 ring-1 ring-primary/20",
19663
19709
  isDisabled && "cursor-not-allowed opacity-50",
@@ -19732,7 +19778,8 @@ var RadioGroupItem = React46.forwardRef(
19732
19778
  id: radioId,
19733
19779
  disabled: isDisabled,
19734
19780
  className: cn(
19735
- "inline-flex items-center justify-center gap-2 rounded-lg border font-medium transition-all duration-200",
19781
+ "inline-flex items-center justify-center gap-2 border font-medium transition-all duration-200",
19782
+ getBorderRadiusClass(borderMode ?? "lg"),
19736
19783
  "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
19737
19784
  "disabled:cursor-not-allowed disabled:opacity-50",
19738
19785
  isSelected ? "border-primary bg-primary text-primary-foreground shadow-sm" : "border-border/50 bg-background hover:bg-accent hover:text-accent-foreground",
@@ -20847,7 +20894,8 @@ function CategoryTreeSelect(props) {
20847
20894
  baseIndent = TREE_NODE_BASE_PADDING_REM,
20848
20895
  indentSize = TREE_NODE_INDENT_REM,
20849
20896
  renderItemActions,
20850
- singleSelect = false
20897
+ singleSelect = false,
20898
+ borderMode
20851
20899
  } = props;
20852
20900
  const [isOpen, setIsOpen] = (0, import_react26.useState)(false);
20853
20901
  const [expandedNodes, setExpandedNodes] = (0, import_react26.useState)(
@@ -21535,7 +21583,8 @@ function CategoryTreeSelect(props) {
21535
21583
  }
21536
21584
  },
21537
21585
  className: cn(
21538
- "group flex w-full items-center justify-between rounded-full transition-all duration-200",
21586
+ "group flex w-full items-center justify-between transition-all duration-200",
21587
+ getBorderRadiusClass(borderMode ?? "full"),
21539
21588
  "backdrop-blur-sm",
21540
21589
  triggerSizeStyles[size].button,
21541
21590
  triggerVariantStyles[variant],
@@ -24094,6 +24143,7 @@ function ColorPicker({
24094
24143
  showRecent = false,
24095
24144
  showHarmony = false,
24096
24145
  maxRecent = 8,
24146
+ borderMode,
24097
24147
  ...rest
24098
24148
  }) {
24099
24149
  const gi18n = useGlobalI18n();
@@ -24192,7 +24242,8 @@ function ColorPicker({
24192
24242
  type: "button",
24193
24243
  disabled,
24194
24244
  className: cn(
24195
- "w-full px-3 rounded-full border border-input bg-background flex items-center justify-between",
24245
+ "w-full px-3 border border-input bg-background flex items-center justify-between",
24246
+ getBorderRadiusClass(borderMode ?? "full"),
24196
24247
  sizeClasses2[size],
24197
24248
  "hover:border-accent-foreground/30 transition-colors",
24198
24249
  disabled && "opacity-50 cursor-not-allowed",