@telepix-lab/telepix-ui 0.5.0 → 0.6.1

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.
@@ -7,6 +7,7 @@ export interface ButtonProps extends React.DetailedHTMLProps<React.ButtonHTMLAtt
7
7
  isLoading?: boolean;
8
8
  leftIcon?: ReactNode;
9
9
  rightIcon?: ReactNode;
10
+ stateContainerClassName?: string;
10
11
  }
11
12
  /**
12
13
  * 다양한 스타일과 속성을 지원하는 버튼 컴포넌트입니다.<br/>
@@ -7,9 +7,13 @@ export type ButtonSize = (typeof BUTTON_SIZES)[keyof typeof BUTTON_SIZES];
7
7
  export declare const BUTTON_VARIANTS: {
8
8
  readonly ACCENT: "accent";
9
9
  readonly OUTLINE: "outline";
10
+ readonly OUTLINE_TO_ACCENT: "outline_to_accent";
10
11
  readonly GHOST: "ghost";
11
12
  readonly THUMBNAIL_GHOST: "thumbnail_ghost";
13
+ readonly GHOST_TO_ACCENT: "ghost_to_accent";
12
14
  readonly SUBTLE_FILLED: "subtle_filled";
13
- readonly ACCENT_GHOST: "accent_ghost";
15
+ readonly OUTLINE_ACCENT: "outline_accent";
16
+ readonly GHOST_ACCENT: "ghost_accent";
17
+ readonly GHOST_DIM: "ghost_dim";
14
18
  };
15
19
  export type ButtonVariant = (typeof BUTTON_VARIANTS)[keyof typeof BUTTON_VARIANTS];
@@ -12069,6 +12069,12 @@ function cn(...inputs) {
12069
12069
  return twMerge(clsx(inputs));
12070
12070
  }
12071
12071
 
12072
+ const StateColorContainer = ({ isInverted, className, }) => {
12073
+ return (jsxRuntime.jsx("div", { className: cn("absolute left-0 top-0 right-0 bottom-0 inset-0 pointer-events-none z-0", isInverted
12074
+ ? "group-hover/state:bg-fill-invert-hovered group-active/state:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/state:bg-fill-invert-selected"
12075
+ : "group-hover/state:bg-fill-hovered bg-fill-default group-active/state:bg-fill-pressed group-aria-selected/state:bg-fill-selected", className) }));
12076
+ };
12077
+
12072
12078
  const RadioGroupContext = React.createContext({ value: "", disabled: false });
12073
12079
  /**
12074
12080
  * 라디오 버튼 그룹을 생성하는 컴포넌트입니다.<br/>
@@ -12096,7 +12102,8 @@ const RadioItem = React.forwardRef(({ label, labelClassName, wrapperClassName, .
12096
12102
  const randomId = id ?? React.useId();
12097
12103
  const isSelected = React.useContext(RadioGroupContext).value === value;
12098
12104
  const isDisabled = React.useContext(RadioGroupContext).disabled || disabled || false;
12099
- return (jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1.5 cursor-pointer bg-transparent border-none", wrapperClassName), children: [jsxRuntime.jsx(Item2, { ...restProps, id: randomId, ref: ref, value: value, disabled: isDisabled, className: cn("bg-transparent border-none p-0 flex items-center outline-none justify-center cursor-pointer", className), children: isDisabled ? (jsxRuntime.jsx(CircleBackslashIcon, { className: "stroke-comp-disabled" })) : isSelected ? (jsxRuntime.jsx(RadiobuttonIcon, { className: "stroke-comp-mono-selected" })) : (jsxRuntime.jsx(CircleIcon, { className: "stroke-comp-mono-default" })) }), label && (jsxRuntime.jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", isDisabled && "text-comp-disabled cursor-default", isSelected && "text-comp-mono-selected", labelClassName), htmlFor: randomId, children: label }))] }));
12105
+ return (jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1.5 cursor-pointer bg-transparent border-none py-1 pr-2 group/state relative", wrapperClassName), children: [jsxRuntime.jsx(Item2, { ...restProps, id: randomId, ref: ref, value: value, disabled: isDisabled, className: cn("bg-transparent border-none p-1.5 flex items-center outline-none justify-center cursor-pointer", className), children: isDisabled ? (jsxRuntime.jsx(CircleBackslashIcon, { className: "text-comp-disabled" })) : isSelected ? (jsxRuntime.jsx(RadiobuttonIcon, { className: "text-comp-mono-default" })) : (jsxRuntime.jsx(CircleIcon, { className: "text-comp-mono-default" })) }), label && (jsxRuntime.jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", isDisabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: randomId, children: label })), jsxRuntime.jsx(StateColorContainer, { className: cn("rounded-lg", isDisabled &&
12106
+ "bg-fill-disabled group-hover/state:bg-fill-disabled group-active/state:bg-fill-disabled") })] }));
12100
12107
  });
12101
12108
  RadioGroup.displayName = "RadioGroup";
12102
12109
  RadioItem.displayName = "RadioItem";
@@ -12303,7 +12310,7 @@ const Checkbox = React.forwardRef(({ label, labelClassName, wrapperClassName, ..
12303
12310
  return (jsxRuntime.jsx(SquareMinus, { className: "size-full fill-transparent text-comp-disabled cursor-default" }));
12304
12311
  }
12305
12312
  else if (checked) {
12306
- return (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "size-full fill-transparent text-comp-mono-selected", children: jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M1 2.1821C1 1.52924 1.52925 1 2.1821 1H13.6879C14.3408 1 14.87 1.52925 14.87 2.1821V13.6879C14.87 14.3408 14.3408 14.87 13.6879 14.87H2.1821C1.52924 14.87 1 14.3408 1 13.6879V2.1821ZM11.3429 4.58303C11.6121 4.76774 11.6805 5.13566 11.4958 5.4048L7.38613 11.393C7.28127 11.5457 7.11082 11.6405 6.9257 11.6489C6.74058 11.6574 6.56222 11.5785 6.44391 11.4359L4.0914 8.59999C3.88299 8.34876 3.9177 7.97614 4.16894 7.76772C4.42018 7.55931 4.79279 7.59403 5.00121 7.84526L6.85419 10.079L10.5211 4.73591C10.7059 4.46676 11.0738 4.39832 11.3429 4.58303Z", fill: "currentColor" }) }));
12313
+ return (jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "size-full fill-transparent text-comp-mono-default", children: jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M1 2.1821C1 1.52924 1.52925 1 2.1821 1H13.6879C14.3408 1 14.87 1.52925 14.87 2.1821V13.6879C14.87 14.3408 14.3408 14.87 13.6879 14.87H2.1821C1.52924 14.87 1 14.3408 1 13.6879V2.1821ZM11.3429 4.58303C11.6121 4.76774 11.6805 5.13566 11.4958 5.4048L7.38613 11.393C7.28127 11.5457 7.11082 11.6405 6.9257 11.6489C6.74058 11.6574 6.56222 11.5785 6.44391 11.4359L4.0914 8.59999C3.88299 8.34876 3.9177 7.97614 4.16894 7.76772C4.42018 7.55931 4.79279 7.59403 5.00121 7.84526L6.85419 10.079L10.5211 4.73591C10.7059 4.46676 11.0738 4.39832 11.3429 4.58303Z", fill: "currentColor" }) }));
12307
12314
  }
12308
12315
  return (jsxRuntime.jsx(BoxIcon, { className: "size-full fill-transparent text-comp-mono-default" }));
12309
12316
  };
@@ -12311,7 +12318,9 @@ const Checkbox = React.forwardRef(({ label, labelClassName, wrapperClassName, ..
12311
12318
  setChecked(value);
12312
12319
  onChange?.(value);
12313
12320
  };
12314
- return (jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2.5", wrapperClassName), children: [jsxRuntime.jsx(Checkbox$1, { ref: ref, id: id ?? randomId, ...rest, checked: defaultChecked ? checked : isChecked, className: cn("size-4 p-0 cursor-pointer border-transparent bg-transparent", className), onCheckedChange: onCheckedChange, children: renderCheckboxIcon(defaultChecked ? checked : isChecked, disabled) }), jsxRuntime.jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", disabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: id ?? randomId, "aria-disabled": disabled, children: label })] }));
12321
+ return (jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2.5 pr-3 pl-1.5 py-1 relative group/state rounded-lg", wrapperClassName), children: [jsxRuntime.jsx(Checkbox$1, { ref: ref, id: id ?? randomId, ...rest, checked: defaultChecked ? checked : isChecked, className: cn("size-4 p-0 cursor-pointer border-transparent bg-transparent", className), onCheckedChange: onCheckedChange, children: renderCheckboxIcon(defaultChecked ? checked : isChecked, disabled) }), jsxRuntime.jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", disabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: id ?? randomId, "aria-disabled": disabled, children: label }), jsxRuntime.jsx(StateColorContainer, { className: cn("rounded-lg", disabled
12322
+ ? "bg-fill-default group-hover/state:bg-fill-default group-active/state:bg-fill-default"
12323
+ : "") })] }));
12315
12324
  });
12316
12325
  Checkbox.displayName = "Checkbox";
12317
12326
 
@@ -12381,7 +12390,7 @@ const DialogTrigger = (props) => {
12381
12390
  const DialogPortal = Portal$3;
12382
12391
  const DialogClose = Close;
12383
12392
  const DialogContent = ({ className, overlayClassName, children, ...rest }) => {
12384
- return (jsxRuntime.jsxs(Portal$3, { children: [jsxRuntime.jsx(Overlay, { className: cn("fixed top-0 bottom-0 left-0 right-0 bg-pure-black-50 inset-0 z-[1000] animate-fade-in", overlayClassName) }), jsxRuntime.jsxs(Content$1, { className: cn("fixed top-1/2 left-1/2 z-[1001] animate-content-fade-in", className), ...rest, children: [jsxRuntime.jsx(Title, { "data-slot": "dialog-title", ...rest, children: jsxRuntime.jsx(Root$4, {}) }), jsxRuntime.jsx(Description, {}), jsxRuntime.jsx(Card, { children: children })] })] }));
12393
+ return (jsxRuntime.jsxs(Portal$3, { children: [jsxRuntime.jsx(Overlay, { className: cn("fixed top-0 bottom-0 left-0 right-0 bg-page-fade inset-0 z-[1000] animate-fade-in", overlayClassName) }), jsxRuntime.jsxs(Content$1, { className: cn("fixed top-1/2 left-1/2 z-[1001] animate-content-fade-in", className), ...rest, children: [jsxRuntime.jsx(Title, { "data-slot": "dialog-title", ...rest, children: jsxRuntime.jsx(Root$4, {}) }), jsxRuntime.jsx(Description, {}), jsxRuntime.jsx(Card, { children: children })] })] }));
12385
12394
  };
12386
12395
  const DialogDescription = (props) => {
12387
12396
  return jsxRuntime.jsx(CardBody, { ...props, children: props.children });
@@ -12397,8 +12406,10 @@ const DialogBody = ({ className, ...rest }) => {
12397
12406
  const SELECT_TRIGGER_VARIANTS = {
12398
12407
  OUTLINE: "outline",
12399
12408
  GHOST: "ghost",
12409
+ FILLED: "filled",
12400
12410
  };
12401
12411
  const SELECT_TRIGGER_SIZES = {
12412
+ COMPACT: "compact",
12402
12413
  REGULAR: "regular",
12403
12414
  LARGE: "large",
12404
12415
  };
@@ -12425,15 +12436,13 @@ const SELECT_TRIGGER_SIZES = {
12425
12436
  const Select = (props) => jsxRuntime.jsx(Root2, { ...props });
12426
12437
  const SelectTrigger = ({ placeholder, variant = "outline", size = "regular", icon, ...rest }) => {
12427
12438
  const { className, ...otherProps } = rest;
12428
- return (jsxRuntime.jsxs(Trigger$1, { className: cn(`flex items-center justify-between w-full bg-fill-mono-default outline-none cursor-pointer text-comp-mono-default
12429
- hover:not-[:is([data-disabled])]:bg-fill-mono-hovered hover:not-[:is([data-disabled])]:text-comp-mono-hovered
12430
- [&:is([data-disabled])]:text-comp-disabled [&:is([data-placeholder]):not(:is([data-disabled]))]:text-comp-mono-subtle-default
12431
- [&:is([data-placeholder]):not(:is([data-disabled]))]:hover:text-comp-mono-subtle-hovered
12432
- `, variant === SELECT_TRIGGER_VARIANTS.OUTLINE &&
12433
- "border border-border-bound [&:not(:is([data-placeholder]))]:border-border-focused [&:is([data-disabled])]:border-transparent rounded-sm py-0 px-2", variant === SELECT_TRIGGER_VARIANTS.GHOST &&
12434
- "border border-transparent py-0 px-2 has-[button:has([data-placeholder])]:border-comp-mono-subtle-default", size === SELECT_TRIGGER_SIZES.REGULAR &&
12439
+ return (jsxRuntime.jsxs(Trigger$1, { className: cn("relative group/state flex items-center justify-between w-full bg-page-l-null outline-none cursor-pointer text-comp-mono-default data-[placeholder]:not-disabled:text-comp-mono-subtle-default data-disabled:text-comp-disabled rounded-md", variant === SELECT_TRIGGER_VARIANTS.OUTLINE &&
12440
+ "border border-border-bound [&:not(:is([data-placeholder]))]:border-border-focused data-disabled:border-transparent py-0 px-2", variant === SELECT_TRIGGER_VARIANTS.GHOST &&
12441
+ "border border-transparent py-0 px-2 [&:not(:is([data-placeholder]))]:border-border-focused data-disabled:border-transparent", variant === SELECT_TRIGGER_VARIANTS.FILLED &&
12442
+ "border border-transparent py-0 px-2 bg-page-l3 [&:not(:is([data-placeholder]))]:border-border-focused [&:not(:is([data-placeholder]))]:bg-page-l2 data-disabled:border-transparent data-disabled:bg-page-l-null", size === SELECT_TRIGGER_SIZES.COMPACT &&
12443
+ "py-1.5 px-1 text-label font-medium leading-label-compact gap-1", size === SELECT_TRIGGER_SIZES.REGULAR &&
12435
12444
  "py-1.5 px-2 text-body font-medium leading-body-compact gap-2", size === SELECT_TRIGGER_SIZES.LARGE &&
12436
- "py-3 px-4 text-base leading-base-compact font-medium gap-3", className), ...otherProps, children: [icon && jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: icon }), jsxRuntime.jsx(Value, { placeholder: placeholder }), jsxRuntime.jsx(Icon$1, { className: "flex items-center justify-center", children: jsxRuntime.jsx(CaretDownIcon, {}) })] }));
12445
+ "py-3 px-4 text-base leading-base-compact font-medium gap-3", className), ...otherProps, children: [icon && jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: icon }), jsxRuntime.jsx(Value, { placeholder: placeholder }), jsxRuntime.jsx(Icon$1, { className: "flex items-center justify-center text-comp-mono-default group-disabled/state:text-comp-disabled", children: jsxRuntime.jsx(CaretDownIcon, {}) }), jsxRuntime.jsx(StateColorContainer, { className: "rounded-md" })] }));
12437
12446
  };
12438
12447
  const SelectContent = ({ children, viewportClassName, viewportWrapperClassName, ...rest }) => {
12439
12448
  const { className, position, sideOffset, ...otherProps } = rest;
@@ -12501,13 +12510,9 @@ const VerticalMenu = React.forwardRef(({ disabled, value, label, icon, variant =
12501
12510
  context.setSelectedMenu?.(value);
12502
12511
  rest.onClick?.(e);
12503
12512
  };
12504
- return (jsxRuntime.jsxs("button", { ref: ref, className: cn("w-full flex items-center rounded-md text-body leading-body-compact font-medium bg-transparent border-none cursor-pointer text-comp-mono-default", size === VERTICAL_MENU_SIZES.SMALL && "gap-3 p-1", size === VERTICAL_MENU_SIZES.REGULAR && "gap-[18px] p-2.5", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12505
- `hover:not-[:is([data-selected='true'])]:not-disabled:text-comp-mono-hovered hover:not-[:is([data-selected='true'])]:not-disabled:bg-fill-mono-hovered active:not-disabled:text-comp-mono-pressed active:not-disabled:bg-fill-mono-pressed
12506
- [&:is([data-selected='true'])]:text-comp-accent-selected [&:is([data-selected='true'])]:bg-fill-accent-selected [&:is([data-selected='true'])]:font-semibold
12507
- disabled:text-comp-disabled disabled:bg-fill-disabled disabled:cursor-not-allowed`, variant === VERTICAL_MENU_VARIANTS.GHOST &&
12508
- `hover:not-[:is([data-selected='true'])]:not-disabled:text-comp-mono-hovered hover:not-[:is([data-selected='true'])]:not-disabled:bg-fill-mono-hovered active:not-disabled:text-comp-mono-pressed active:not-disabled:bg-fill-mono-pressed
12509
- [&:is([data-selected='true'])]:text-comp-mono-selected [&:is([data-selected='true'])]:bg-fill-mono-selected [&:is([data-selected='true'])]:font-semibold
12510
- disabled:text-comp-disabled disabled:bg-fill-disabled disabled:cursor-not-allowed`, rest.className), ...rest, disabled: isDisabled, value: value, "data-selected": isSelected, onClick: onClick, children: [icon && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label] }));
12513
+ return (jsxRuntime.jsxs("button", { ref: ref, className: cn("group/state relative w-full flex items-center rounded-md text-body leading-body-compact font-medium bg-transparent border-none cursor-pointer data-[selected=true]:font-semibold data-disabled:text-comp-disabled text-comp-mono-default", size === VERTICAL_MENU_SIZES.SMALL && "gap-3 p-1", size === VERTICAL_MENU_SIZES.REGULAR && "gap-[18px] p-2.5", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12514
+ `bg-page-l-null data-[selected=true]:bg-page-accent-l0 data-[selected=true]:text-comp-accent-default`, rest.className), ...rest, disabled: isDisabled, value: value, "data-selected": isSelected, "aria-selected": isSelected, onClick: onClick, children: [icon && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsxRuntime.jsx(StateColorContainer, { className: cn("rounded-md group-disabled/state:bg-fill-default", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12515
+ "group-aria-selected:bg-fill-default") })] }));
12511
12516
  });
12512
12517
  VerticalMenu.displayName = "VerticalMenu";
12513
12518
 
@@ -12543,11 +12548,7 @@ const HorizontalTab = React.forwardRef(({ value, label, className, icon, size =
12543
12548
  return;
12544
12549
  setSelectedTab(value);
12545
12550
  };
12546
- return (jsxRuntime.jsxs("button", { ref: ref, className: cn(`p-0 flex flex-col items-center justify-center flex-nowrap text-comp-mono-subtle-default text-body font-medium leading-body-compact bg-transparent border-none cursor-pointer
12547
- hover:not([data-selected='true']):not(:disabled):text-comp-mono-subtle-hovered
12548
- active:not(:disabled):text-comp-mono-subtle-pressed
12549
- disabled:text-comp-disabled disabled:cursor-not-allowed
12550
- `, isSelected && "text-comp-mono-subtle-selected font-bold", className), onClick: handleClick, disabled: isDisabled, "data-selected": isSelected, ...rest, children: [jsxRuntime.jsxs("div", { className: cn("flex items-center justify-center gap-2", size === HORIZONTAL_TAB_SIZES.SMALL && "py-1 px-2", size === HORIZONTAL_TAB_SIZES.REGULAR && "py-2.5 px-2"), children: [icon && (jsxRuntime.jsx("span", { className: cn("flex items-center justify-center size-5", size === HORIZONTAL_TAB_SIZES.SMALL && "size-4"), children: icon })), label] }), jsxRuntime.jsx("div", { className: cn("bg-comp-mono-subtle-default mt-[3px] h-[1px] w-full", isSelected && "bg-comp-mono-subtle-selected h-0.5 mt-0.5"), "data-selected": isSelected })] }));
12551
+ return (jsxRuntime.jsxs("button", { ref: ref, className: cn("relative group/state p-0 flex flex-col items-center justify-center flex-nowrap text-comp-mono-subtle-default text-body font-medium leading-body-compact bg-transparent border-none cursor-pointer disabled:cursor-not-allowed", isSelected && "font-bold", className), onClick: handleClick, disabled: isDisabled, "data-selected": isSelected, "aria-selected": isSelected, ...rest, children: [jsxRuntime.jsxs("div", { className: cn("flex items-center justify-center gap-2", size === HORIZONTAL_TAB_SIZES.SMALL && "py-1 px-2", size === HORIZONTAL_TAB_SIZES.REGULAR && "py-2.5 px-2"), children: [icon && (jsxRuntime.jsx("span", { className: cn("flex items-center justify-center size-5", size === HORIZONTAL_TAB_SIZES.SMALL && "size-4"), children: icon })), label] }), jsxRuntime.jsx("div", { className: cn("bg-comp-mono-subtle-default mt-[3px] h-[1px] w-full", isSelected && "h-0.5 mt-0.5"), "data-selected": isSelected }), jsxRuntime.jsx(StateColorContainer, { className: "group-aria-selected/state:bg-fill-default rounded-sm" })] }));
12551
12552
  });
12552
12553
 
12553
12554
  const ModeTabContext = React.createContext({
@@ -12577,7 +12578,7 @@ const ModeTab = React.forwardRef(({ label, icon, value, className, ...rest }, re
12577
12578
  return;
12578
12579
  setSelectedTab(value);
12579
12580
  };
12580
- return (jsxRuntime.jsxs("button", { ref: ref, className: cn("px-2 py-1 flex items-center justify-center gap-2.5 flex-1 text-comp-mono-subtle-default text-body leading-body-compact font-medium cursor-pointer bg-transparent border-none rounded-sm hover:text-comp-mono-subtle-hovered active:text-comp-mono-subtle-pressed", isSelected && "text-comp-mono-selected bg-page-l0", isDisabled && "text-comp-disabled cursor-not-allowed", className), "data-selected": isSelected, disabled: isDisabled, onClick: handleClick, ...rest, children: [icon && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label] }));
12581
+ return (jsxRuntime.jsxs("button", { ref: ref, className: cn("relative group/state shadow-basic px-2 py-1 flex items-center justify-center gap-2.5 flex-1 text-comp-mono-subtle-default aria-selected:text-comp-mono-default text-body leading-body-compact font-medium cursor-pointer bg-transparent border-none rounded-sm hover:text-comp-mono-subtle-hovered active:text-comp-mono-subtle-pressed", isSelected && "bg-page-l0", isDisabled && "text-comp-disabled cursor-not-allowed", className), "data-selected": isSelected, "aria-selected": isSelected, disabled: isDisabled, onClick: handleClick, ...rest, children: [icon && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsxRuntime.jsx(StateColorContainer, { className: "rounded-sm" })] }));
12581
12582
  });
12582
12583
 
12583
12584
  const TOOLTIP_SHORT_VARIANTS = {
@@ -12597,14 +12598,14 @@ const TooltipTrigger = Trigger;
12597
12598
  const TooltipContent = ({ type, ...rest }) => {
12598
12599
  const { className, ...otherProps } = rest;
12599
12600
  if (type === "default") {
12600
- return (jsxRuntime.jsx(Portal, { children: jsxRuntime.jsx(Content2, { className: cn("py-4 px-5 flex flex-col gap-1 bg-page-l1 rounded-lg border border-border-overlay shadow-basic", className), ...otherProps, children: rest.children }) }));
12601
+ return (jsxRuntime.jsx(Portal, { children: jsxRuntime.jsx(Content2, { className: cn("py-4 px-5 flex flex-col gap-1 bg-page-translucent-l2 rounded-lg border border-border-overlay shadow-glass-medium backdrop-blur-sm", className), ...otherProps, children: rest.children }) }));
12601
12602
  }
12602
12603
  const { variant = "default", size = "regular" } = rest;
12603
12604
  return (jsxRuntime.jsx(Portal, { children: jsxRuntime.jsx(Content2, { className: cn("shadow-basic rounded-lg", type === "short" &&
12604
12605
  variant === TOOLTIP_SHORT_VARIANTS.DEFAULT &&
12605
- "border border-border-overlay bg-page-l1 text-comp-mono-default", type === "short" &&
12606
+ "border border-border-overlay bg-page-translucent-l2 text-comp-mono-default", type === "short" &&
12606
12607
  variant === TOOLTIP_SHORT_VARIANTS.ACCENT &&
12607
- "bg-page-accent text-comp-accent-default", type === "short" &&
12608
+ "bg-page-accent-l0 text-comp-accent-default", type === "short" &&
12608
12609
  size === TOOLTIP_SHORT_SIZES.REGULAR &&
12609
12610
  "py-2 px-3 text-body font-medium leading-body-compact", type === "short" &&
12610
12611
  size === TOOLTIP_SHORT_SIZES.SMALL &&
@@ -12635,22 +12636,13 @@ const Tag = React.forwardRef(({ icon, value, variant = "filled", size = "regular
12635
12636
  event.stopPropagation();
12636
12637
  onDeleteClick?.(value, event);
12637
12638
  };
12638
- return (jsxRuntime.jsxs("button", { ref: ref, className: cn("flex items-center justify-center rounded-sm bg-transparent", variant === "filled" &&
12639
- `bg-fill-mono-subtle-default text-comp-mono-subtle-default border border-fill-mono-subtle-default
12640
- hover:bg-fill-mono-subtle-hovered hover:comp-mono-subtle-hovered hover:border-fill-mono-subtle-hovered
12641
- disabled:bg-fill-disabled disabled:text-comp-disabled disabled:border-fill-disabled`, variant === "filled" &&
12642
- useSelectedStyle &&
12643
- "active:fill-mono-subtle-pressed active:comp-mono-subtle-pressed active:border-fill-mono-subtle-pressed", variant === "filled" &&
12644
- isSelected &&
12645
- `bg-fill-mono-subtle-selected text-comp-mono-subtle-selected border-border-selected`, variant === "accent" &&
12646
- `bg-fill-accent-default text-comp-accent-default hover:bg-fill-accent-hovered hover:text-comp-accent-hovered
12647
- disabled:bg-fill-disabled disabled:text-comp-disabled`, variant === "accent" &&
12648
- useSelectedStyle &&
12649
- "active:bg-fill-accent-pressed active:text-comp-accent-pressed", variant === "accent" &&
12650
- isSelected &&
12651
- `bg-fill-accent-selected text-comp-accent-selected`, size === "regular" &&
12652
- "text-body font-medium leading-body-compact px-1 py-0.5 gap-2", size === "small" &&
12653
- "text-label font-medium leading-label-compact p-0.5 gap-1.5", className), onClick: handleClick, "data-selected": isSelected, ...props, children: [icon && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0", children: icon })), jsxRuntime.jsx("span", { className: "flex-1 text-nowrap overflow-hidden text-ellipsis text-inherit text-size-inherit leading-inherit font-inherit", children: value.label }), onDeleteClick && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0 cursor-pointer", onClick: handleDeleteClick, children: jsxRuntime.jsx(X, {}) }))] }));
12639
+ return (jsxRuntime.jsxs("button", { ref: ref, className: cn("flex items-center justify-center rounded-sm bg-transparent relative group/state", variant === "filled" &&
12640
+ `bg-page-l4 text-comp-mono-subtle-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, variant === "accent" &&
12641
+ `bg-page-accent-l0 text-comp-accent-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, size === "regular" &&
12642
+ "text-body font-medium leading-body-compact px-2 py-1 gap-2", size === "small" &&
12643
+ "text-label font-medium leading-label-compact px-1.5 py-0.5 gap-1.5", className), onClick: handleClick, "data-selected": isSelected, "aria-selected": isSelected, ...props, children: [icon && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0", children: icon })), jsxRuntime.jsx("span", { className: "flex-1 text-nowrap overflow-hidden text-ellipsis text-inherit text-size-inherit leading-inherit font-inherit", children: value.label }), onDeleteClick && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0 cursor-pointer text-comp-mono-default group-disabled/state:text-comp-disabled", onClick: handleDeleteClick, children: jsxRuntime.jsx(X, {}) })), jsxRuntime.jsx(StateColorContainer, { className: cn("rounded-sm", useSelectedStyle
12644
+ ? ""
12645
+ : "group-active/state:bg-fill-default group-active/state:border-transparent group-disabled/state:bg-fill-default"), isInverted: variant === "accent" })] }));
12654
12646
  });
12655
12647
  Tag.displayName = "Tag";
12656
12648
 
@@ -12872,10 +12864,20 @@ Text.displayName = "Text";
12872
12864
  * ```
12873
12865
  */
12874
12866
  const Input = React.forwardRef(({ size = "regular", leftIcon, rightIcon, wrapperClassName, isError = false, useHoverStyle = true, errorMessage, ...rest }, ref) => {
12875
- return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [jsxRuntime.jsxs("div", { "aria-disabled": rest.disabled, className: cn("flex items-center justify-center rounded-lg bg-fill-mono-default focus-within:bg-fill-mono-default border border-border-bound focus-within:border-border-focused has-[input:disabled]:border-transparent", useHoverStyle && "hover:bg-fill-mono-hovered", size === INPUT_SIZES.REGULAR &&
12867
+ const innerRef = React.useRef(null);
12868
+ const mergedRef = (node) => {
12869
+ if (typeof ref === "function")
12870
+ ref(node);
12871
+ else if (ref)
12872
+ ref.current = node;
12873
+ innerRef.current = node;
12874
+ };
12875
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [jsxRuntime.jsxs("div", { "aria-disabled": rest.disabled, className: cn("relative group/state flex items-center justify-center rounded-lg bg-Page-l-null border border-border-bound focus-within:border-border-focused has-[input:disabled]:border-transparent", size === INPUT_SIZES.REGULAR &&
12876
12876
  "py-1.5 px-2 text-body leading-body-compact font-medium gap-2", size === INPUT_SIZES.LARGE &&
12877
12877
  "py-[11px] px-4 text-base leading-base-compact font-medium gap-3", isError &&
12878
- "border-comp-chroma-error focus-within:border-comp-chroma-error", wrapperClassName), children: [leftIcon && (jsxRuntime.jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: leftIcon })), jsxRuntime.jsx("input", { ref: ref, className: cn("border-none outline-none p-0 flex-1 bg-transparent text-comp-mono-default placeholder:text-comp-mono-subtle-default focus:placeholder:text-comp-mono-subtle-selected disabled:text-comp-disabled disabled:placeholder:text-comp-disabled", useHoverStyle &&
12878
+ "border-comp-chroma-error focus-within:border-comp-chroma-error", wrapperClassName), onClick: () => {
12879
+ innerRef.current?.focus();
12880
+ }, children: [jsxRuntime.jsx(StateColorContainer, { className: cn("group-focus-within/state:bg-page-l-null", (!useHoverStyle || rest.disabled) && "hover:bg-fill-default") }), leftIcon && (jsxRuntime.jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: leftIcon })), jsxRuntime.jsx("input", { ref: mergedRef, className: cn("border-none outline-none p-0 flex-1 bg-transparent text-comp-mono-default placeholder:text-comp-mono-subtle-default focus:placeholder:text-comp-mono-subtle-selected disabled:text-comp-disabled disabled:placeholder:text-comp-disabled", useHoverStyle &&
12879
12881
  "hover:placeholder:text-comp-mono-subtle-hovered", size === INPUT_SIZES.REGULAR &&
12880
12882
  "text-body leading-body-compact font-medium", size === INPUT_SIZES.LARGE &&
12881
12883
  "text-base leading-base-compact font-medium", isError &&
@@ -12928,7 +12930,7 @@ const MultipleSelectTrigger = React.forwardRef(({ size = "regular", children, ..
12928
12930
  setIsOpen(value);
12929
12931
  onClick?.(e);
12930
12932
  };
12931
- return (jsxRuntime.jsxs("div", { ref: ref, className: cn("flex items-center justify-between rounded-lg cursor-pointer border border-border-bound bg-fill-mono-default hover:bg-fill-mono-hovered", values.length > 0 && "border-border-focused", disabled && "border-none cursor-not-allowed", size === MULTIPLE_SELECT_SIZES.REGULAR && "py-1.5 px-3 gap-1", size === MULTIPLE_SELECT_SIZES.LARGE && "py-3 pr-4 pl-3 gap-2", className), "data-disabled": disabled, "data-selected": values.length > 0, onClick: handleTriggerClick, ...otherProps, children: [children, jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4", children: jsxRuntime.jsx(ChevronDown, { size: 16 }) })] }));
12933
+ return (jsxRuntime.jsxs("div", { ref: ref, className: cn("relative group/state flex items-center justify-between rounded-lg cursor-pointer border border-border-bound bg-page-l-null text-comp-mono-default aria-selected:border-border-focused", disabled && "border-transparent cursor-not-allowed", size === MULTIPLE_SELECT_SIZES.REGULAR && "py-1.5 px-3 gap-2", size === MULTIPLE_SELECT_SIZES.LARGE && "py-3 pr-4 pl-3 gap-3", className), "data-disabled": disabled, "data-selected": isOpen, "aria-selected": isOpen, onClick: handleTriggerClick, ...otherProps, children: [children, jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4 text-comp-mono-default", children: jsxRuntime.jsx(ChevronDown, { size: 16 }) }), jsxRuntime.jsx(StateColorContainer, { className: "group-aria-selected/state:bg-fill-default" })] }));
12932
12934
  });
12933
12935
  const MultipleSelectValue = React.forwardRef(({ placeholder, className, ...rest }, ref) => {
12934
12936
  const { values, disabled, setSelectedValues } = React.useContext(MultipleSelectContext);
@@ -12982,7 +12984,7 @@ const MultipleSelectContent = React.forwardRef(({ useSearch, options: optionsPro
12982
12984
  window.removeEventListener("resize", close);
12983
12985
  };
12984
12986
  }, [setIsOpen]);
12985
- return (isOpen && (jsxRuntime.jsxs("div", { ref: composedRefs, className: cn("flex-1 absolute top-[calc(100%+4px)] left-0 z-[1000] w-[calc(100%-16px)] bg-page-l1 rounded-xl shadow-medium p-2 border border-border-overlay", className), ...rest, children: [useSearch && (jsxRuntime.jsx("div", { className: "pb-2 mb-2 border-b border-b-border-divider", children: jsxRuntime.jsx(Input, { onChange: handleSearchChange, leftIcon: jsxRuntime.jsx(MagnifyingGlassIcon, { width: 20, height: 20 }), placeholder: "Enter any characters..." }) })), jsxRuntime.jsx("ul", { className: "p-0 m-0 flex flex-col gap-1 list-none", children: options.map((option) => (jsxRuntime.jsx(MultipleSelectItem, { option: option, indicator: indicator }, option.value))) })] })));
12987
+ return (isOpen && (jsxRuntime.jsxs("div", { ref: composedRefs, className: cn("flex-1 absolute top-[calc(100%+4px)] left-0 z-[1000] w-[calc(100%-16px)] bg-page-translucent-l1 shadow-glass-medium backdrop-blur-sm rounded-xl p-2 border border-border-overlay", className), ...rest, children: [useSearch && (jsxRuntime.jsx("div", { className: "pb-2 mb-2 border-b border-b-border-divider", children: jsxRuntime.jsx(Input, { onChange: handleSearchChange, leftIcon: jsxRuntime.jsx(MagnifyingGlassIcon, { width: 20, height: 20 }), placeholder: "Enter any characters..." }) })), jsxRuntime.jsx("ul", { className: "p-0 m-0 flex flex-col gap-1 list-none", children: options.map((option) => (jsxRuntime.jsx(MultipleSelectItem, { option: option, indicator: indicator }, option.value))) })] })));
12986
12988
  });
12987
12989
  const MultipleSelectItem = React.forwardRef(({ option, indicator, className, ...rest }, ref) => {
12988
12990
  const { values, setSelectedValues } = React.useContext(MultipleSelectContext);
@@ -12996,8 +12998,8 @@ const MultipleSelectItem = React.forwardRef(({ option, indicator, className, ...
12996
12998
  : [...values, option];
12997
12999
  setSelectedValues(newValues);
12998
13000
  };
12999
- return (jsxRuntime.jsxs("li", { ref: ref, "data-selected": isSelected, "data-disabled": option.disabled, className: cn("py-2 px-3 cursor-pointer flex items-center justify-between gap-2 text-body text-comp-mono-default leading-body-compact font-medium rounded-sm hover:bg-fill-mono-hovered hover:text-comp-mono-default active:bg-fill-mono-selected active:text-comp-mono-default", isSelected && "bg-fill-mono-selected text-comp-mono-default", option.disabled &&
13000
- "bg-fill-disabled text-comp-disabled cursor-not-allowed", className), onClick: handleClick, ...rest, children: [jsxRuntime.jsx("span", { className: "flex-1 overflow-ellipsis overflow-x-hidden whitespace-nowrap text-inherit text-size-inherit leading-inherit font-inherit", children: option.label }), indicator && isSelected && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4", children: indicator }))] }));
13001
+ return (jsxRuntime.jsxs("li", { ref: ref, "data-selected": isSelected, "aria-selected": isSelected, "data-disabled": option.disabled, className: cn("group/state relative py-2 px-3 cursor-pointer flex items-center justify-between gap-2 text-body text-comp-mono-default leading-body-compact font-medium rounded-sm", isSelected && "bg-fill-mono-selected text-comp-mono-default", option.disabled &&
13002
+ "bg-fill-disabled text-comp-disabled cursor-not-allowed", className), onClick: handleClick, ...rest, children: [jsxRuntime.jsx("span", { className: "flex-1 overflow-ellipsis overflow-x-hidden whitespace-nowrap text-inherit text-size-inherit leading-inherit font-inherit", children: option.label }), indicator && isSelected && (jsxRuntime.jsx("span", { className: "flex items-center justify-center size-4", children: indicator })), jsxRuntime.jsx(StateColorContainer, { className: "rounded-sm" })] }));
13001
13003
  });
13002
13004
 
13003
13005
  const Table = React.forwardRef(({ className, ...rest }, ref) => {
@@ -13045,8 +13047,8 @@ const InteractiveListItemContext = React.createContext({
13045
13047
  disabled: false,
13046
13048
  });
13047
13049
  const InteractiveListItem = React.forwardRef(({ isSelected, disabled, showHoverActions = true, children, className, ...rest }, ref) => {
13048
- return (jsxRuntime.jsx(InteractiveListItemContext, { value: { disabled: !!disabled }, children: jsxRuntime.jsx("div", { ref: ref, "data-selected": isSelected, "data-disabled": disabled, "data-hover-actions": showHoverActions, className: cn("flex items-center gap-1 p-1.5 rounded-sm cursor-pointer text-comp-mono-default bg-fill-mono-default border border-transparent hover:bg-fill-mono-hovered active:bg-fill-mono-pressed", isSelected && "bg-fill-mono-selected border-border-selected", disabled &&
13049
- "cursor-not-allowed text-comp-disabled bg-fill-disabled", className), ...rest, children: children }) }));
13050
+ return (jsxRuntime.jsx(InteractiveListItemContext, { value: { disabled: !!disabled }, children: jsxRuntime.jsxs("div", { ref: ref, "aria-selected": isSelected, "data-selected": isSelected, "data-disabled": disabled, "data-hover-actions": showHoverActions, className: cn("relative group/state flex items-center gap-1 p-1.5 rounded-sm cursor-pointer text-comp-mono-default bg-fill-mono-default border border-transparent hover:bg-fill-mono-hovered active:bg-fill-mono-pressed", isSelected && "bg-fill-mono-selected border-border-selected", disabled &&
13051
+ "cursor-not-allowed text-comp-disabled bg-fill-disabled", className), ...rest, children: [children, jsxRuntime.jsx(StateColorContainer, {})] }) }));
13050
13052
  });
13051
13053
  const InteractiveListItemIcon = React.forwardRef(({ children, className, ...props }, ref) => {
13052
13054
  return (jsxRuntime.jsx("span", { className: cn("flex items-center justify-center size-6 p-1", className), ...props, ref: ref, children: children }));
@@ -13072,12 +13074,12 @@ const Calendar = ({ className, classNames, showOutsideDays = true, ...props }) =
13072
13074
  month_grid: "border-separate border-spacing-0",
13073
13075
  weekday: "text-comp-mono-subtle-default text-body font-normal leading-body size-9 p-1",
13074
13076
  day: "p-1 bg-transparent",
13075
- day_button: "size-8 rounded-md hover:bg-fill-mono-subtle-hovered focus:outline-none text-body leading-3.5 font-medium text-comp-mono-default cursor-pointer",
13076
- selected: cn("[&_button]:bg-fill-accent-selected bg-transparent", props.mode === "single" &&
13077
- "[&_button]:text-comp-accent-default [&_button]:hover:bg-fill-accent-selected"),
13078
- range_start: "[&_button]:bg-fill-accent-selected bg-transparent [&_button]:text-comp-accent-default [&_button]:hover:bg-fill-accent-selected",
13079
- range_middle: "[&_button]:bg-fill-mono-subtle-default bg-transparent [&_button]:hover:bg-fill-mono-subtle-default",
13080
- range_end: "[&_button]:bg-fill-accent-selected bg-transparent [&_button]:text-comp-accent-default [&_button]:hover:bg-fill-accent-selected",
13077
+ day_button: "size-8 rounded-md hover:bg-fill-hovered focus:outline-none text-body leading-3.5 font-medium text-comp-mono-default cursor-pointer",
13078
+ selected: cn("[&_button]:bg-page-accent-l0 bg-transparent", props.mode === "single" &&
13079
+ "[&_button]:text-comp-accent-default [&_button]:hover:bg-page-accent-l0"),
13080
+ range_start: "[&_button]:bg-page-accent-l0 bg-transparent [&_button]:text-comp-accent-default [&_button]:hover:bg-page-accent-l0",
13081
+ range_middle: "[&_button]:bg-page-l3 bg-transparent [&_button]:hover:bg-fill-mono-subtle-default",
13082
+ range_end: "[&_button]:bg-page-accent-l0 bg-transparent [&_button]:text-comp-accent-default [&_button]:hover:bg-page-accent-l0",
13081
13083
  button_next: cn(reactDayPicker.getDefaultClassNames().button_next, "h-9 py-0 px-2 text-body leading-body-compact !bg-fill-mono-default hover:!bg-fill-mono-hovered active:!bg-fill-mono-pressed disabled:!bg-fill-disabled disabled:text-comp-disabled rounded-md"),
13082
13084
  button_previous: cn(reactDayPicker.getDefaultClassNames().button_previous, "h-9 py-0 px-2 text-body leading-body-compact !bg-fill-mono-default hover:!bg-fill-mono-hovered active:!bg-fill-mono-pressed disabled:!bg-fill-disabled disabled:text-comp-disabled rounded-md"),
13083
13085
  ...classNames,
@@ -13097,6 +13099,7 @@ const BUTTON_SIZES = {
13097
13099
  LARGE: "large",
13098
13100
  };
13099
13101
  const BUTTON_VARIANTS = {
13102
+ ACCENT: "accent",
13100
13103
  THUMBNAIL_GHOST: "thumbnail_ghost"};
13101
13104
 
13102
13105
  /**
@@ -13113,7 +13116,7 @@ const BUTTON_VARIANTS = {
13113
13116
  * </Button>
13114
13117
  * ```
13115
13118
  */
13116
- const Button = React.forwardRef(({ variant = "accent", size = "regular", fullWidth = false, isLoading = false, leftIcon, rightIcon, children, disabled, className, ...rest }, ref) => {
13119
+ const Button = React.forwardRef(({ variant = "accent", size = "regular", fullWidth = false, isLoading = false, leftIcon, rightIcon, children, disabled, className, stateContainerClassName, ...rest }, ref) => {
13117
13120
  const getClassName = (size, variant) => {
13118
13121
  const sizeClassName = {
13119
13122
  small: "h-7 py-0 px-1.5 text-label leading-label-compact",
@@ -13126,12 +13129,16 @@ const Button = React.forwardRef(({ variant = "accent", size = "regular", fullWid
13126
13129
  large: "px-1.5",
13127
13130
  }[size];
13128
13131
  const variantClassName = {
13129
- accent: "bg-fill-accent-default hover:bg-fill-accent-hovered active:bg-fill-accent-pressed disabled:bg-fill-disabled text-comp-accent-default disabled:text-comp-disabled",
13130
- outline: "bg-fill-mono-default hover:bg-fill-mono-hovered active:bg-fill-mono-pressed disabled:bg-fill-disabled text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent",
13131
- ghost: "bg-fill-mono-default hover:bg-fill-mono-hovered active:bg-fill-mono-pressed disabled:bg-fill-disabled text-comp-mono-default disabled:text-comp-disabled",
13132
- thumbnail_ghost: "bg-transparent hover:bg-fill-mono-hovered active:bg-fill-mono-pressed disabled:bg-fill-disabled text-comp-mono-default disabled:text-comp-disabled",
13133
- subtle_filled: "bg-fill-mono-subtle-default hover:bg-fill-mono-subtle-hovered active:bg-fill-mono-subtle-pressed disabled:bg-fill-disabled text-comp-mono-subtle-default disabled:text-comp-disabled",
13134
- accent_ghost: "bg-fill-mono-default hover:bg-fill-accent-hovered active:bg-fill-accent-pressed disabled:bg-fill-disabled text-comp-accent-default disabled:text-comp-disabled",
13132
+ accent: "bg-page-accent-l0 disabled:bg-pure-transparent text-comp-accent-default disabled:text-comp-disabled",
13133
+ outline: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent aria-selected:border-border-selected",
13134
+ outline_to_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent aria-selected:border-border-selected aria-selected:bg-page-accent-l0 aria-selected:text-comp-accent-default",
13135
+ ghost: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled",
13136
+ thumbnail_ghost: "bg-page-l-null disabled:bg-fill-disabled text-comp-mono-default disabled:text-comp-disabled",
13137
+ ghost_to_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled aria-selected:bg-page-accent-l0 aria-selected:text-comp-accent-default",
13138
+ subtle_filled: "bg-page-l3 disabled:bg-fill-disabled text-comp-mono-subtle-default disabled:text-comp-disabled aria-selected:text-comp-mono-default",
13139
+ outline_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-accent-default disabled:text-comp-disabled border border-border-accent-bound disabled:border-pure-transparent aria-selected:border-border-accent-selected",
13140
+ ghost_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-accent-default disabled:text-comp-disabled",
13141
+ ghost_dim: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-subtle-default disabled:text-comp-disabled aria-selected:text-comp-mono-default",
13135
13142
  }[variant];
13136
13143
  return [
13137
13144
  sizeClassName,
@@ -13160,7 +13167,7 @@ const Button = React.forwardRef(({ variant = "accent", size = "regular", fullWid
13160
13167
  return "px-1.5";
13161
13168
  return "px-2"; // 기본값은 regular 크기
13162
13169
  };
13163
- return (jsxRuntime.jsxs("button", { ref: ref, disabled: disabled ?? isLoading, className: cn("flex items-center justify-center relative box-border m-0 border-transparent outline-none cursor-pointer select-none align-middle appearance-none text-center transition-normal font-medium w-auto rounded-md overflow-hidden pointer-events-auto disabled:pointer-events-none disabled:cursor-not-allowed", ...getClassName(size, variant), fullWidth && "w-full", !children && (leftIcon || rightIcon) && getPaddingOnlyIcon(size), className), ...rest, children: [isLoading && (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: cn("lucide lucide-loader-circle-icon lucide-loader-circle absolute animate-spin", size === BUTTON_SIZES.SMALL &&
13170
+ return (jsxRuntime.jsxs("button", { ref: ref, disabled: disabled ?? isLoading, className: cn("flex group/state items-center justify-center relative box-border m-0 border-transparent outline-none cursor-pointer select-none align-middle appearance-none text-center transition-normal font-medium w-auto rounded-md overflow-hidden pointer-events-auto disabled:pointer-events-none disabled:cursor-not-allowed", ...getClassName(size, variant), fullWidth && "w-full", !children && (leftIcon || rightIcon) && getPaddingOnlyIcon(size), className), ...rest, children: [jsxRuntime.jsx(StateColorContainer, { isInverted: variant === BUTTON_VARIANTS.ACCENT, className: stateContainerClassName }), isLoading && (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: cn("lucide lucide-loader-circle-icon lucide-loader-circle absolute animate-spin", size === BUTTON_SIZES.SMALL &&
13164
13171
  "size-4 top-[calc(50%-8px)] left-[calc(50%-8px)]", size === BUTTON_SIZES.REGULAR &&
13165
13172
  "size-5 top-[calc(50%-10px)] left-[calc(50%-10px)]", size === BUTTON_SIZES.LARGE &&
13166
13173
  "size-6 top-[calc(50%-12px)] left-[calc(50%-12px)]"), children: jsxRuntime.jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) })), leftIcon && (jsxRuntime.jsx("div", { className: cn("flex items-center justify-center relative", variant === BUTTON_VARIANTS.THUMBNAIL_GHOST &&
@@ -13217,7 +13224,7 @@ const DatePicker = ({ size = "regular", placeholder = "Pick a date", format = "Y
13217
13224
  }
13218
13225
  return placeholder ?? "";
13219
13226
  };
13220
- return (jsxRuntime.jsxs(Root2$2, { open: open, onOpenChange: handleOpenChange, children: [jsxRuntime.jsx(Trigger$2, { asChild: true, children: jsxRuntime.jsx(Button, { size: size, fullWidth: true, variant: "outline", leftIcon: jsxRuntime.jsx(Calendar$1, { size: 20 }), className: "justify-start", disabled: disabled, children: getDateToFormatString(inputValue) }) }), jsxRuntime.jsx(Content2$2, { sideOffset: 10, align: "start", className: cn("z-10", popoverContentClassName), ...rest, children: mode === "single" ? (jsxRuntime.jsx(Calendar, { mode: "single", ...rest, selected: inputValue, onSelect: handleSelect })) : mode === "multiple" ? (jsxRuntime.jsx(Calendar, { mode: "multiple", ...rest, selected: Array.isArray(inputValue) ? inputValue : [], onSelect: handleSelect })) : (jsxRuntime.jsx(Calendar, { mode: "range", ...rest, selected: inputValue, onSelect: handleSelect })) })] }));
13227
+ return (jsxRuntime.jsxs(Root2$2, { open: open, onOpenChange: handleOpenChange, children: [jsxRuntime.jsx(Trigger$2, { asChild: true, children: jsxRuntime.jsx(Button, { size: size, fullWidth: true, variant: "outline", leftIcon: jsxRuntime.jsx(Calendar$1, { size: 20 }), className: "justify-start", "aria-selected": open, disabled: disabled, stateContainerClassName: open ? "group-aria-selected/state:bg-fill-default" : undefined, children: getDateToFormatString(inputValue) }) }), jsxRuntime.jsx(Content2$2, { sideOffset: 10, align: "start", className: cn("z-10", popoverContentClassName), ...rest, children: mode === "single" ? (jsxRuntime.jsx(Calendar, { mode: "single", ...rest, selected: inputValue, onSelect: handleSelect })) : mode === "multiple" ? (jsxRuntime.jsx(Calendar, { mode: "multiple", ...rest, selected: Array.isArray(inputValue) ? inputValue : [], onSelect: handleSelect })) : (jsxRuntime.jsx(Calendar, { mode: "range", ...rest, selected: inputValue, onSelect: handleSelect })) })] }));
13221
13228
  };
13222
13229
 
13223
13230
  const ContextMenu = Root2$3;
@@ -13230,12 +13237,8 @@ const ContextMenuLabel = (props) => {
13230
13237
  return (jsxRuntime.jsx(Label2, { ...props, children: props.children }));
13231
13238
  };
13232
13239
  const ContextMenuItem = ({ leftIcon, rightSlot, textValue, ...rest }) => {
13233
- return (jsxRuntime.jsxs(Item2$1, { ...rest, className: cn(`group outline-none p-2 flex items-center justify-between gap-2 text-body leading-body-compact font-medium text-comp-mono-default bg-fill-mono-default border border-fill-mono-default rounded-sm
13234
- hover:not-[:is([data-disabled])]:bg-fill-mono-hovered hover:not-[:is([data-disabled])]:text-comp-mono-hovered
13235
- active:not-[:is([data-disabled])]:bg-fill-mono-pressed active:not-[:is([data-disabled])]:text-comp-mono-pressed
13236
- [&:is([data-state='open'])]:bg-fill-mono-selected [&:is([data-state='open'])]:text-comp-mono-selected
13237
- [&:is([data-disabled])]:bg-fill-disabled [&:is([data-disabled])]:text-comp-disabled [&:is([data-disabled])]:cursor-not-allowed`, rest.className), children: [jsxRuntime.jsxs("div", { className: "flex-1 flex items-center gap-2 text-size-inherit font-inherit leading-inherit overflow-hidden", children: [jsxRuntime.jsx("div", { className: "size-4 flex items-center justify-center text-size-inherit leading-inherit font-inherit bg-transparent", children: leftIcon }), jsxRuntime.jsx("span", { className: "overflow-ellipsis overflow-hidden whitespace-nowrap", children: textValue })] }), rightSlot && (jsxRuntime.jsx("div", { className: `flex items-center justify-center text-size-inherit leading-inherit font-inherit text-comp-mono-subtle-default
13238
- group-hover:not-[data-disabled]:text-comp-mono-subtle-hovered group-[data-state="open"]:text-comp-mono-subtle-selected group-[data-disabled]:text-comp-disabled`, children: rightSlot }))] }));
13240
+ return (jsxRuntime.jsxs(Item2$1, { ...rest, className: cn(`relative group/state outline-none p-2 flex items-center justify-between gap-2 text-body leading-body-compact font-medium text-comp-mono-default bg-page-l-null rounded-sm
13241
+ [&:is([data-disabled])]:bg-fill-disabled [&:is([data-disabled])]:text-comp-disabled [&:is([data-disabled])]:cursor-not-allowed`, rest.className), children: [jsxRuntime.jsxs("div", { className: "flex-1 flex items-center gap-2 text-size-inherit font-inherit leading-inherit overflow-hidden", children: [jsxRuntime.jsx("div", { className: "size-4 flex items-center justify-center text-size-inherit leading-inherit font-inherit bg-transparent text-comp-mono-subtle-default group-aria-disabled/state:text-comp-disabled", children: leftIcon }), jsxRuntime.jsx("span", { className: "overflow-ellipsis overflow-hidden whitespace-nowrap", children: textValue })] }), rightSlot && (jsxRuntime.jsx("div", { className: `flex items-center justify-center text-size-inherit leading-inherit font-inherit text-comp-mono-subtle-default group-aria-disabled/state:text-comp-disabled`, children: rightSlot })), jsxRuntime.jsx(StateColorContainer, { className: "rounded-sm group-aria-disabled/state:bg-fill-default group-[data-state='open']/state:bg-fill-selected" })] }));
13239
13242
  };
13240
13243
  const ContextMenuGroup = Group2;
13241
13244
  const ContextMenuSub = Sub2;
@@ -13244,7 +13247,7 @@ const ContextMenuSubContent = (props) => {
13244
13247
  return (jsxRuntime.jsx(Portal2, { children: jsxRuntime.jsx(SubContent2, { ...props, className: cn("p-2 bg-page-l1 shadow-medium rounded-lg w-[320px] border border-border-overlay", props.className), children: props.children }) }));
13245
13248
  };
13246
13249
  const ContextMenuSeparator = (props) => {
13247
- return (jsxRuntime.jsx(Separator2, { ...props, className: cn("h-[1px] bg-border-overlay my-1", props.className) }));
13250
+ return (jsxRuntime.jsx(Separator2, { ...props, className: cn("h-[1px] bg-border-divider my-1", props.className) }));
13248
13251
  };
13249
13252
  const ContextMenuCheckboxItem = CheckboxItem2;
13250
13253
  const ContextMenuRadioGroup = RadioGroup2;
@@ -13255,8 +13258,8 @@ const ContextMenuItemIndicator = (props) => {
13255
13258
 
13256
13259
  const AutocompleteContentItem = ({ inputValue, item, index, displayValue, highlightedIndex, onClick, className = "", }) => {
13257
13260
  const isHighlighted = index === highlightedIndex;
13258
- return (jsxRuntime.jsx("li", { id: `suggestion-item-${index}`, className: cn("rounded-sm p-2 text-comp-mono-default text-body leading-body-compact font-medium list-none hover:bg-fill-mono-hovered hover:text-comp-mono-hovered", isHighlighted && "bg-fill-mono-hovered text-comp-mono-hovered", className), onClick: (e) => onClick(item, e), role: "option", "aria-selected": isHighlighted, children: displayValue(item)
13259
- .split(new RegExp(`(${inputValue})`, "gi"))
13261
+ return (jsxRuntime.jsx("li", { id: `suggestion-item-${index}`, className: cn("rounded-sm p-2 text-comp-mono-default text-body leading-body-compact font-medium list-none hover:bg-fill-hovered", isHighlighted && "bg-fill-selected", className), onClick: (e) => onClick(item, e), role: "option", "aria-selected": isHighlighted, children: displayValue(item)
13262
+ .split(new RegExp(`(${inputValue.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi"))
13260
13263
  .map((part, i) => part.toLowerCase() === inputValue.toLowerCase() ? (jsxRuntime.jsx("span", { className: "font-bold text-comp-chroma-error", children: part }, i)) : (jsxRuntime.jsx("span", { children: part }, i))) }));
13261
13264
  };
13262
13265
  const Autocomplete = ({ placeholder, data, value, displayValue, onSelect, onChange, noResultsMessage = "검색 결과가 없습니다.", maxResults = 10, debounceTime = 300, wrapperClassName, contentClassName, itemClassName, }) => {
@@ -13373,27 +13376,27 @@ const SWITCH_SIZES = {
13373
13376
 
13374
13377
  const FilledSwitch = (props) => {
13375
13378
  const { size, checked, thumbClassName, ...rest } = props;
13376
- return (jsxRuntime.jsxs(Root, { className: cn("flex items-center gap-1 bg-page-l2 rounded-lg relative", size === SWITCH_SIZES.REGULAR && "p-1.5 w-[68px] h-9", size === SWITCH_SIZES.SMALL && "p-1 w-[59px] h-7"), checked: checked, ...rest, children: [jsxRuntime.jsx(Thumb, { className: cn("rounded-sm absolute transition-all duration-100", size === SWITCH_SIZES.REGULAR &&
13379
+ return (jsxRuntime.jsxs(Root, { className: cn("group/state flex items-center gap-1 bg-page-l2 rounded-lg relative", size === SWITCH_SIZES.REGULAR && "p-1.5 w-[68px] h-9", size === SWITCH_SIZES.SMALL && "p-1 w-[59px] h-7"), checked: checked, ...rest, children: [jsxRuntime.jsx(Thumb, { className: cn("absolute transition-all duration-100 rounded-sm border border-border-divider", size === SWITCH_SIZES.REGULAR &&
13377
13380
  "size-6 left-1.5 data-[state=checked]:left-[37px]", size === SWITCH_SIZES.SMALL &&
13378
- "size-5 left-1 data-[state=checked]:left-[35px]", checked ? "bg-fill-accent-selected" : "bg-fill-mono-subtle-selected", thumbClassName) }), checked ? (jsxRuntime.jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-mono-selected py-1 px-[5px] text-left w-full", as: "div", children: "ON" })) : (jsxRuntime.jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-mono-subtle-default py-1 px-0.5 text-right w-full", as: "div", children: "OFF" }))] }));
13381
+ "size-5 left-1 data-[state=checked]:left-[35px]", checked ? "bg-page-accent-l0" : "bg-page-l3", thumbClassName) }), checked ? (jsxRuntime.jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-mono-default py-1 px-[5px] text-left w-full", as: "div", children: "ON" })) : (jsxRuntime.jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-mono-subtle-default py-1 px-0.5 text-right w-full", as: "div", children: "OFF" })), jsxRuntime.jsx(StateColorContainer, { className: "rounded-lg" })] }));
13379
13382
  };
13380
13383
  const OutlinedSwitch = (props) => {
13381
13384
  const { size, checked, thumbClassName, ...rest } = props;
13382
- return (jsxRuntime.jsxs(Root, { className: cn("group border shadow-inner p-1 relative rounded-[20px]", checked
13383
- ? "bg-fill-accent-default hover:bg-fill-accent-hovered border-transparent"
13384
- : "bg-fill-mono-default hover:bg-fill-mono-hovered border-border-divider hover:border-border-bound", size === SWITCH_SIZES.REGULAR && "w-[74px] h-9", size === SWITCH_SIZES.SMALL && "w-[60px] h-7"), checked: checked, ...rest, children: [jsxRuntime.jsx(Thumb, { className: cn("absolute transition-all duration-100 top-[3px] rounded-full left-1 bg-border-divider data-[state=checked]:bg-comp-accent-default shadow-basic group-hover:bg-border-bound data-[state=checked]:group-hover:bg-comp-accent-hovered", size === SWITCH_SIZES.REGULAR &&
13385
- "size-7 data-[state=checked]:left-[42px] group-hover:shadow-large", size === SWITCH_SIZES.SMALL &&
13386
- "size-5 data-[state=checked]:left-[36px] group-hover:shadow-basic", thumbClassName) }), checked ? (jsxRuntime.jsx(Text, { variant: size === SWITCH_SIZES.REGULAR
13385
+ return (jsxRuntime.jsxs(Root, { className: cn("group/state border shadow-inner p-1 relative rounded-[20px]", checked
13386
+ ? "bg-page-accent-l0 border-transparent"
13387
+ : "bg-page-l-null border-border-divider", size === SWITCH_SIZES.REGULAR && "w-[74px] h-9", size === SWITCH_SIZES.SMALL && "w-[60px] h-7"), checked: checked, ...rest, children: [jsxRuntime.jsx(Thumb, { className: cn("absolute transition-all duration-100 top-[3px] rounded-full left-1 bg-page-l3 border border-border-bound shadow-basic", size === SWITCH_SIZES.REGULAR &&
13388
+ "size-7 data-[state=checked]:left-[42px]", size === SWITCH_SIZES.SMALL &&
13389
+ "size-5 data-[state=checked]:left-[36px]", thumbClassName) }), checked ? (jsxRuntime.jsx(Text, { variant: size === SWITCH_SIZES.REGULAR
13387
13390
  ? "boldBodyBoldCompact"
13388
- : "boldLabelBoldCompact", className: "text-comp-accent-default pl-2 text-left group-hover:text-comp-accent-hovered", as: "div", children: "ON" })) : (jsxRuntime.jsx(Text, { variant: size === SWITCH_SIZES.REGULAR
13391
+ : "boldLabelBoldCompact", className: "text-comp-accent-default pl-2 text-left", as: "div", children: "ON" })) : (jsxRuntime.jsx(Text, { variant: size === SWITCH_SIZES.REGULAR
13389
13392
  ? "medBodyMedCompact"
13390
- : "medLabelMedCompact", className: cn("text-comp-mono-subtle-default text-right group-hover:text-comp-mono-subtle-hovered", size === SWITCH_SIZES.REGULAR && "pr-1.5", size === SWITCH_SIZES.SMALL && "pr-[3px]"), as: "div", children: "OFF" }))] }));
13393
+ : "medLabelMedCompact", className: cn("text-comp-mono-subtle-default text-right", size === SWITCH_SIZES.REGULAR && "pr-1.5", size === SWITCH_SIZES.SMALL && "pr-[3px]"), as: "div", children: "OFF" })), jsxRuntime.jsx(StateColorContainer, { className: "rounded-[20px]" })] }));
13391
13394
  };
13392
13395
  const SlideSwitch = (props) => {
13393
13396
  const { size, checked, thumbClassName, leftIcon, rightIcon, ...rest } = props;
13394
- return (jsxRuntime.jsxs(Root, { className: cn("group border shadow-inner p-1 relative rounded-[20px] border-border-bound bg-fill-mono-default hover:bg-fill-mono-hovered", size === SWITCH_SIZES.REGULAR && "w-[70px] h-9", size === SWITCH_SIZES.SMALL && "w-[54px] h-7"), checked: checked, ...rest, children: [jsxRuntime.jsx(Thumb, { className: cn("absolute transition-all duration-100 top-[3px] rounded-full left-1 bg-page-l2 shadow-medium border border-border-bound", size === SWITCH_SIZES.REGULAR &&
13397
+ return (jsxRuntime.jsxs(Root, { className: cn("group/state border shadow-inner p-1 relative rounded-[20px] border-border-bound bg-page-l-null", size === SWITCH_SIZES.REGULAR && "w-[70px] h-9", size === SWITCH_SIZES.SMALL && "w-[54px] h-7"), checked: checked, ...rest, children: [jsxRuntime.jsx(Thumb, { className: cn("absolute transition-all duration-100 top-[3px] rounded-full left-1 bg-page-l3 shadow-basic border border-border-bound", size === SWITCH_SIZES.REGULAR &&
13395
13398
  "size-7 data-[state=checked]:left-[36px]", size === SWITCH_SIZES.SMALL &&
13396
- "size-5 data-[state=checked]:left-[28px]", thumbClassName) }), leftIcon && (jsxRuntime.jsx("div", { className: cn("absolute top-1/2 -translate-y-1/2 transition-opacity text-comp-mono-subtle-default", size === SWITCH_SIZES.SMALL && "left-[8px] size-4", size === SWITCH_SIZES.REGULAR && "left-[10px] size-5", checked ? "opacity-100" : "opacity-0"), children: leftIcon })), rightIcon && (jsxRuntime.jsx("div", { className: cn("absolute top-1/2 -translate-y-1/2 transition-opacity text-comp-mono-subtle-default", size === SWITCH_SIZES.SMALL && "right-[8px] size-4", size === SWITCH_SIZES.REGULAR && "right-[10px] size-5", !checked ? "opacity-100" : "opacity-0"), children: rightIcon }))] }));
13399
+ "size-5 data-[state=checked]:left-[28px]", thumbClassName) }), leftIcon && (jsxRuntime.jsx("div", { className: cn("absolute top-1/2 -translate-y-1/2 transition-opacity text-comp-mono-subtle-default", size === SWITCH_SIZES.SMALL && "left-[8px] size-4", size === SWITCH_SIZES.REGULAR && "left-[10px] size-5", checked ? "opacity-100" : "opacity-0"), children: leftIcon })), rightIcon && (jsxRuntime.jsx("div", { className: cn("absolute top-1/2 -translate-y-1/2 transition-opacity text-comp-mono-subtle-default", size === SWITCH_SIZES.SMALL && "right-[8px] size-4", size === SWITCH_SIZES.REGULAR && "right-[10px] size-5", !checked ? "opacity-100" : "opacity-0"), children: rightIcon })), jsxRuntime.jsx(StateColorContainer, { className: "rounded-[20px]" })] }));
13397
13400
  };
13398
13401
  const Switch = (props) => {
13399
13402
  const { defaultChecked, checked: isChecked } = props;
@@ -13,3 +13,4 @@ export { Tag } from "./tag";
13
13
  export { TAG_SIZES, TAG_VARIANTS } from "./tag/types";
14
14
  export type { TagSize, TagVariant } from "./tag/types";
15
15
  export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, } from "./pagination";
16
+ export { StateColorContainer } from "./state-color-container";