@telepix-lab/telepix-ui 0.5.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/button/index.d.ts +1 -0
- package/dist/cjs/button/types.d.ts +5 -1
- package/dist/cjs/client.js +125 -96
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +72 -29
- package/dist/cjs/select/types.d.ts +2 -0
- package/dist/cjs/state-color-container/index.d.ts +8 -0
- package/dist/cjs/state-color-container/types.d.ts +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/color.css +1 -1
- package/dist/esm/button/index.d.ts +1 -0
- package/dist/esm/button/types.d.ts +5 -1
- package/dist/esm/client.js +126 -97
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +74 -32
- package/dist/esm/select/types.d.ts +2 -0
- package/dist/esm/state-color-container/index.d.ts +8 -0
- package/dist/esm/state-color-container/types.d.ts +1 -0
- package/dist/index.d.ts +17 -3
- package/dist/styles.css +1 -25
- package/dist/theme.css +1 -7
- package/package.json +1 -1
package/dist/esm/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useState, useLayoutEffect, forwardRef, createElement, createContext, useId as useId$1, useContext, useEffect, useRef, useCallback } from 'react';
|
|
3
|
+
import React__default, { useState, useLayoutEffect, forwardRef, createElement, createContext, useId as useId$1, useContext, useEffect, useRef, Fragment as Fragment$1, useCallback } from 'react';
|
|
4
4
|
import * as ReactDOM from 'react-dom';
|
|
5
5
|
import ReactDOM__default from 'react-dom';
|
|
6
6
|
import { DayPicker, getDefaultClassNames } from 'react-day-picker';
|
|
@@ -12049,6 +12049,39 @@ function cn(...inputs) {
|
|
|
12049
12049
|
return twMerge(clsx(inputs));
|
|
12050
12050
|
}
|
|
12051
12051
|
|
|
12052
|
+
const StateColorContainer = ({ groupName = "state", isInverted, className, }) => {
|
|
12053
|
+
const fillClassMap = {
|
|
12054
|
+
wrapper: {
|
|
12055
|
+
normal: "group-hover/wrapper:bg-fill-hovered bg-fill-default group-active/wrapper:bg-fill-pressed group-aria-selected/wrapper:bg-fill-selected",
|
|
12056
|
+
invert: "group-hover/wrapper:bg-fill-invert-hovered group-active/wrapper:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/wrapper:bg-fill-invert-selected",
|
|
12057
|
+
},
|
|
12058
|
+
item: {
|
|
12059
|
+
normal: "group-hover/item:bg-fill-hovered bg-fill-default group-active/item:bg-fill-pressed group-aria-selected/item:bg-fill-selected",
|
|
12060
|
+
invert: "group-hover/item:bg-fill-invert-hovered group-active/item:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/item:bg-fill-invert-selected",
|
|
12061
|
+
},
|
|
12062
|
+
option: {
|
|
12063
|
+
normal: "group-hover/option:bg-fill-hovered bg-fill-default group-active/option:bg-fill-pressed group-aria-selected/option:bg-fill-selected",
|
|
12064
|
+
invert: "group-hover/option:bg-fill-invert-hovered group-active/option:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/option:bg-fill-invert-selected",
|
|
12065
|
+
},
|
|
12066
|
+
tab: {
|
|
12067
|
+
normal: "group-hover/tab:bg-fill-hovered bg-fill-default group-active/tab:bg-fill-pressed group-aria-selected/tab:bg-fill-selected",
|
|
12068
|
+
invert: "group-hover/tab:bg-fill-invert-hovered group-active/tab:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/tab:bg-fill-invert-selected",
|
|
12069
|
+
},
|
|
12070
|
+
chip: {
|
|
12071
|
+
normal: "group-hover/chip:bg-fill-hovered bg-fill-default group-active/chip:bg-fill-pressed group-aria-selected/chip:bg-fill-selected",
|
|
12072
|
+
invert: "group-hover/chip:bg-fill-invert-hovered group-active/chip:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/chip:bg-fill-invert-selected",
|
|
12073
|
+
},
|
|
12074
|
+
state: {
|
|
12075
|
+
normal: "group-hover/state:bg-fill-hovered bg-fill-default group-active/state:bg-fill-pressed group-aria-selected/state:bg-fill-selected",
|
|
12076
|
+
invert: "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",
|
|
12077
|
+
},
|
|
12078
|
+
};
|
|
12079
|
+
const group = groupName || "state";
|
|
12080
|
+
const mode = isInverted ? "invert" : "normal";
|
|
12081
|
+
const actionClass = fillClassMap[group]?.[mode] ?? fillClassMap.state[mode];
|
|
12082
|
+
return (jsx("div", { className: cn("absolute left-0 top-0 right-0 bottom-0 inset-0 pointer-events-none z-0", actionClass, className) }));
|
|
12083
|
+
};
|
|
12084
|
+
|
|
12052
12085
|
const RadioGroupContext = createContext({ value: "", disabled: false });
|
|
12053
12086
|
/**
|
|
12054
12087
|
* 라디오 버튼 그룹을 생성하는 컴포넌트입니다.<br/>
|
|
@@ -12076,7 +12109,8 @@ const RadioItem = forwardRef(({ label, labelClassName, wrapperClassName, ...rest
|
|
|
12076
12109
|
const randomId = id ?? useId$1();
|
|
12077
12110
|
const isSelected = useContext(RadioGroupContext).value === value;
|
|
12078
12111
|
const isDisabled = useContext(RadioGroupContext).disabled || disabled || false;
|
|
12079
|
-
return (jsxs("div", { className: cn("flex items-center gap-1.5 cursor-pointer bg-transparent border-none", wrapperClassName), children: [jsx(Item2, { ...restProps, id: randomId, ref: ref, value: value, disabled: isDisabled, className: cn("bg-transparent border-none p-
|
|
12112
|
+
return (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: [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 ? (jsx(CircleBackslashIcon, { className: "text-comp-disabled" })) : isSelected ? (jsx(RadiobuttonIcon, { className: "text-comp-mono-default" })) : (jsx(CircleIcon, { className: "text-comp-mono-default" })) }), label && (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 })), jsx(StateColorContainer, { className: cn("rounded-lg", isDisabled &&
|
|
12113
|
+
"bg-fill-disabled group-hover/state:bg-fill-disabled group-active/state:bg-fill-disabled") })] }));
|
|
12080
12114
|
});
|
|
12081
12115
|
RadioGroup.displayName = "RadioGroup";
|
|
12082
12116
|
RadioItem.displayName = "RadioItem";
|
|
@@ -12283,7 +12317,7 @@ const Checkbox = forwardRef(({ label, labelClassName, wrapperClassName, ...rest
|
|
|
12283
12317
|
return (jsx(SquareMinus, { className: "size-full fill-transparent text-comp-disabled cursor-default" }));
|
|
12284
12318
|
}
|
|
12285
12319
|
else if (checked) {
|
|
12286
|
-
return (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-
|
|
12320
|
+
return (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: 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" }) }));
|
|
12287
12321
|
}
|
|
12288
12322
|
return (jsx(BoxIcon, { className: "size-full fill-transparent text-comp-mono-default" }));
|
|
12289
12323
|
};
|
|
@@ -12291,7 +12325,9 @@ const Checkbox = forwardRef(({ label, labelClassName, wrapperClassName, ...rest
|
|
|
12291
12325
|
setChecked(value);
|
|
12292
12326
|
onChange?.(value);
|
|
12293
12327
|
};
|
|
12294
|
-
return (jsxs("div", { className: cn("flex items-center gap-2.5", wrapperClassName), children: [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) }), 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 })
|
|
12328
|
+
return (jsxs("div", { className: cn("flex items-center gap-2.5 pr-3 pl-1.5 py-1 relative group/state rounded-lg", wrapperClassName), children: [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) }), 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 }), jsx(StateColorContainer, { className: cn("rounded-lg", disabled
|
|
12329
|
+
? "bg-fill-default group-hover/state:bg-fill-default group-active/state:bg-fill-default"
|
|
12330
|
+
: "") })] }));
|
|
12295
12331
|
});
|
|
12296
12332
|
Checkbox.displayName = "Checkbox";
|
|
12297
12333
|
|
|
@@ -12361,7 +12397,7 @@ const DialogTrigger = (props) => {
|
|
|
12361
12397
|
const DialogPortal = Portal$3;
|
|
12362
12398
|
const DialogClose = Close;
|
|
12363
12399
|
const DialogContent = ({ className, overlayClassName, children, ...rest }) => {
|
|
12364
|
-
return (jsxs(Portal$3, { children: [jsx(Overlay, { className: cn("fixed top-0 bottom-0 left-0 right-0 bg-
|
|
12400
|
+
return (jsxs(Portal$3, { children: [jsx(Overlay, { className: cn("fixed top-0 bottom-0 left-0 right-0 bg-page-fade inset-0 z-[1000] animate-fade-in", overlayClassName) }), jsxs(Content$1, { className: cn("fixed top-1/2 left-1/2 z-[1001] animate-content-fade-in", className), ...rest, children: [jsx(Title, { "data-slot": "dialog-title", ...rest, children: jsx(Root$4, {}) }), jsx(Description, {}), jsx(Card, { children: children })] })] }));
|
|
12365
12401
|
};
|
|
12366
12402
|
const DialogDescription = (props) => {
|
|
12367
12403
|
return jsx(CardBody, { ...props, children: props.children });
|
|
@@ -12377,8 +12413,10 @@ const DialogBody = ({ className, ...rest }) => {
|
|
|
12377
12413
|
const SELECT_TRIGGER_VARIANTS = {
|
|
12378
12414
|
OUTLINE: "outline",
|
|
12379
12415
|
GHOST: "ghost",
|
|
12416
|
+
FILLED: "filled",
|
|
12380
12417
|
};
|
|
12381
12418
|
const SELECT_TRIGGER_SIZES = {
|
|
12419
|
+
COMPACT: "compact",
|
|
12382
12420
|
REGULAR: "regular",
|
|
12383
12421
|
LARGE: "large",
|
|
12384
12422
|
};
|
|
@@ -12405,15 +12443,13 @@ const SELECT_TRIGGER_SIZES = {
|
|
|
12405
12443
|
const Select = (props) => jsx(Root2, { ...props });
|
|
12406
12444
|
const SelectTrigger = ({ placeholder, variant = "outline", size = "regular", icon, ...rest }) => {
|
|
12407
12445
|
const { className, ...otherProps } = rest;
|
|
12408
|
-
return (jsxs(Trigger$1, { className: cn(
|
|
12409
|
-
|
|
12410
|
-
|
|
12411
|
-
|
|
12412
|
-
|
|
12413
|
-
"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 &&
|
|
12414
|
-
"border border-transparent py-0 px-2 has-[button:has([data-placeholder])]:border-comp-mono-subtle-default", size === SELECT_TRIGGER_SIZES.REGULAR &&
|
|
12446
|
+
return (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 &&
|
|
12447
|
+
"border border-border-bound [&:not(:is([data-placeholder]))]:border-border-focused data-disabled:border-transparent py-0 px-2", variant === SELECT_TRIGGER_VARIANTS.GHOST &&
|
|
12448
|
+
"border border-transparent py-0 px-2 [&:not(:is([data-placeholder]))]:border-border-focused data-disabled:border-transparent", variant === SELECT_TRIGGER_VARIANTS.FILLED &&
|
|
12449
|
+
"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 &&
|
|
12450
|
+
"py-1.5 px-1 text-label font-medium leading-label-compact gap-1", size === SELECT_TRIGGER_SIZES.REGULAR &&
|
|
12415
12451
|
"py-1.5 px-2 text-body font-medium leading-body-compact gap-2", size === SELECT_TRIGGER_SIZES.LARGE &&
|
|
12416
|
-
"py-3 px-4 text-base leading-base-compact font-medium gap-3", className), ...otherProps, children: [icon && jsx("div", { className: "flex items-center justify-center", children: icon }), jsx(Value, { placeholder: placeholder }), jsx(Icon$1, { className: "flex items-center justify-center", children: jsx(CaretDownIcon, {}) })] }));
|
|
12452
|
+
"py-3 px-4 text-base leading-base-compact font-medium gap-3", className), ...otherProps, children: [icon && jsx("div", { className: "flex items-center justify-center", children: icon }), jsx(Value, { placeholder: placeholder }), jsx(Icon$1, { className: "flex items-center justify-center text-comp-mono-default group-disabled/state:text-comp-disabled", children: jsx(CaretDownIcon, {}) }), jsx(StateColorContainer, { className: "rounded-md group-data-disabled/state:bg-fill-default" })] }));
|
|
12417
12453
|
};
|
|
12418
12454
|
const SelectContent = ({ children, viewportClassName, viewportWrapperClassName, ...rest }) => {
|
|
12419
12455
|
const { className, position, sideOffset, ...otherProps } = rest;
|
|
@@ -12428,11 +12464,9 @@ const SelectSeparator = (props) => {
|
|
|
12428
12464
|
};
|
|
12429
12465
|
const SelectItem = ({ indicator, ...rest }) => {
|
|
12430
12466
|
const { className, textValue, ...otherProps } = rest;
|
|
12431
|
-
return (jsxs(Item, { className: cn(`flex items-center justify-between gap-2 py-1.5 px-2 cursor-pointer text-comp-mono-default text-body font-medium leading-body-compact outline-none rounded-sm
|
|
12432
|
-
hover:not-[:is([data-disabled])]:bg-fill-mono-hovered hover:not-[:is([data-disabled])]:text-comp-mono-hovered
|
|
12467
|
+
return (jsxs(Item, { className: cn(`relative group/state flex items-center justify-between gap-2 py-1.5 px-2 cursor-pointer text-comp-mono-default text-body font-medium leading-body-compact outline-none rounded-sm
|
|
12433
12468
|
[&:is([data-disabled])]:text-comp-disabled [&:is([data-disabled])]:cursor-not-allowed
|
|
12434
|
-
[
|
|
12435
|
-
`, className), ...otherProps, children: [jsx(ItemText, { children: textValue }), indicator && (jsx(ItemIndicator, { className: "w-4 flex items-center justify-center", children: indicator }))] }));
|
|
12469
|
+
`, className), ...otherProps, children: [jsx(ItemText, { children: textValue }), indicator && (jsx(ItemIndicator, { className: "w-4 flex items-center justify-center", children: indicator })), jsx(StateColorContainer, { className: "rounded-sm group-data-disabled/state:bg-fill-default" })] }));
|
|
12436
12470
|
};
|
|
12437
12471
|
Select.displayName = "Select";
|
|
12438
12472
|
SelectTrigger.displayName = "SelectTrigger";
|
|
@@ -12481,13 +12515,9 @@ const VerticalMenu = forwardRef(({ disabled, value, label, icon, variant = "acce
|
|
|
12481
12515
|
context.setSelectedMenu?.(value);
|
|
12482
12516
|
rest.onClick?.(e);
|
|
12483
12517
|
};
|
|
12484
|
-
return (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 &&
|
|
12485
|
-
`
|
|
12486
|
-
|
|
12487
|
-
disabled:text-comp-disabled disabled:bg-fill-disabled disabled:cursor-not-allowed`, variant === VERTICAL_MENU_VARIANTS.GHOST &&
|
|
12488
|
-
`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
|
|
12489
|
-
[&:is([data-selected='true'])]:text-comp-mono-selected [&:is([data-selected='true'])]:bg-fill-mono-selected [&:is([data-selected='true'])]:font-semibold
|
|
12490
|
-
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 && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label] }));
|
|
12518
|
+
return (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 &&
|
|
12519
|
+
`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 && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsx(StateColorContainer, { className: cn("rounded-md group-disabled/state:bg-fill-default", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
|
|
12520
|
+
"group-aria-selected:bg-fill-default") })] }));
|
|
12491
12521
|
});
|
|
12492
12522
|
VerticalMenu.displayName = "VerticalMenu";
|
|
12493
12523
|
|
|
@@ -12523,11 +12553,7 @@ const HorizontalTab = forwardRef(({ value, label, className, icon, size = "regul
|
|
|
12523
12553
|
return;
|
|
12524
12554
|
setSelectedTab(value);
|
|
12525
12555
|
};
|
|
12526
|
-
return (jsxs("button", { ref: ref, className: cn(
|
|
12527
|
-
hover:not([data-selected='true']):not(:disabled):text-comp-mono-subtle-hovered
|
|
12528
|
-
active:not(:disabled):text-comp-mono-subtle-pressed
|
|
12529
|
-
disabled:text-comp-disabled disabled:cursor-not-allowed
|
|
12530
|
-
`, isSelected && "text-comp-mono-subtle-selected font-bold", className), onClick: handleClick, disabled: isDisabled, "data-selected": isSelected, ...rest, children: [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 && (jsx("span", { className: cn("flex items-center justify-center size-5", size === HORIZONTAL_TAB_SIZES.SMALL && "size-4"), children: icon })), label] }), 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 })] }));
|
|
12556
|
+
return (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: [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 && (jsx("span", { className: cn("flex items-center justify-center size-5", size === HORIZONTAL_TAB_SIZES.SMALL && "size-4"), children: icon })), label] }), 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 }), jsx(StateColorContainer, { className: "group-aria-selected/state:bg-fill-default rounded-sm" })] }));
|
|
12531
12557
|
});
|
|
12532
12558
|
|
|
12533
12559
|
const ModeTabContext = createContext({
|
|
@@ -12557,7 +12583,7 @@ const ModeTab = forwardRef(({ label, icon, value, className, ...rest }, ref) =>
|
|
|
12557
12583
|
return;
|
|
12558
12584
|
setSelectedTab(value);
|
|
12559
12585
|
};
|
|
12560
|
-
return (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 && "
|
|
12586
|
+
return (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 && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsx(StateColorContainer, { className: "rounded-sm" })] }));
|
|
12561
12587
|
});
|
|
12562
12588
|
|
|
12563
12589
|
const TOOLTIP_SHORT_VARIANTS = {
|
|
@@ -12577,14 +12603,14 @@ const TooltipTrigger = Trigger;
|
|
|
12577
12603
|
const TooltipContent = ({ type, ...rest }) => {
|
|
12578
12604
|
const { className, ...otherProps } = rest;
|
|
12579
12605
|
if (type === "default") {
|
|
12580
|
-
return (jsx(Portal, { children: jsx(Content2, { className: cn("py-4 px-5 flex flex-col gap-1 bg-page-
|
|
12606
|
+
return (jsx(Portal, { children: 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 }) }));
|
|
12581
12607
|
}
|
|
12582
12608
|
const { variant = "default", size = "regular" } = rest;
|
|
12583
12609
|
return (jsx(Portal, { children: jsx(Content2, { className: cn("shadow-basic rounded-lg", type === "short" &&
|
|
12584
12610
|
variant === TOOLTIP_SHORT_VARIANTS.DEFAULT &&
|
|
12585
|
-
"border border-border-overlay bg-page-
|
|
12611
|
+
"border border-border-overlay bg-page-translucent-l2 text-comp-mono-default", type === "short" &&
|
|
12586
12612
|
variant === TOOLTIP_SHORT_VARIANTS.ACCENT &&
|
|
12587
|
-
"bg-page-accent text-comp-accent-default", type === "short" &&
|
|
12613
|
+
"bg-page-accent-l0 text-comp-accent-default", type === "short" &&
|
|
12588
12614
|
size === TOOLTIP_SHORT_SIZES.REGULAR &&
|
|
12589
12615
|
"py-2 px-3 text-body font-medium leading-body-compact", type === "short" &&
|
|
12590
12616
|
size === TOOLTIP_SHORT_SIZES.SMALL &&
|
|
@@ -12615,22 +12641,13 @@ const Tag = forwardRef(({ icon, value, variant = "filled", size = "regular", cla
|
|
|
12615
12641
|
event.stopPropagation();
|
|
12616
12642
|
onDeleteClick?.(value, event);
|
|
12617
12643
|
};
|
|
12618
|
-
return (jsxs("button", { ref: ref, className: cn("flex items-center justify-center rounded-sm bg-transparent", variant === "filled" &&
|
|
12619
|
-
`bg-
|
|
12620
|
-
|
|
12621
|
-
|
|
12622
|
-
|
|
12623
|
-
|
|
12624
|
-
|
|
12625
|
-
`bg-fill-mono-subtle-selected text-comp-mono-subtle-selected border-border-selected`, variant === "accent" &&
|
|
12626
|
-
`bg-fill-accent-default text-comp-accent-default hover:bg-fill-accent-hovered hover:text-comp-accent-hovered
|
|
12627
|
-
disabled:bg-fill-disabled disabled:text-comp-disabled`, variant === "accent" &&
|
|
12628
|
-
useSelectedStyle &&
|
|
12629
|
-
"active:bg-fill-accent-pressed active:text-comp-accent-pressed", variant === "accent" &&
|
|
12630
|
-
isSelected &&
|
|
12631
|
-
`bg-fill-accent-selected text-comp-accent-selected`, size === "regular" &&
|
|
12632
|
-
"text-body font-medium leading-body-compact px-1 py-0.5 gap-2", size === "small" &&
|
|
12633
|
-
"text-label font-medium leading-label-compact p-0.5 gap-1.5", className), onClick: handleClick, "data-selected": isSelected, ...props, children: [icon && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0", children: icon })), jsx("span", { className: "flex-1 text-nowrap overflow-hidden text-ellipsis text-inherit text-size-inherit leading-inherit font-inherit", children: value.label }), onDeleteClick && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0 cursor-pointer", onClick: handleDeleteClick, children: jsx(X, {}) }))] }));
|
|
12644
|
+
return (jsxs("button", { ref: ref, className: cn("flex items-center justify-center rounded-sm bg-transparent relative group/state", variant === "filled" &&
|
|
12645
|
+
`bg-page-l4 text-comp-mono-subtle-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, variant === "accent" &&
|
|
12646
|
+
`bg-page-accent-l0 text-comp-accent-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, size === "regular" &&
|
|
12647
|
+
"text-body font-medium leading-body-compact px-2 py-1 gap-2", size === "small" &&
|
|
12648
|
+
"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 && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0", children: icon })), jsx("span", { className: "flex-1 text-nowrap overflow-hidden text-ellipsis text-inherit text-size-inherit leading-inherit font-inherit", children: value.label }), onDeleteClick && (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: jsx(X, {}) })), jsx(StateColorContainer, { className: cn("rounded-sm", useSelectedStyle
|
|
12649
|
+
? ""
|
|
12650
|
+
: "group-active/state:bg-fill-default group-active/state:border-transparent group-disabled/state:bg-fill-default"), isInverted: variant === "accent" })] }));
|
|
12634
12651
|
});
|
|
12635
12652
|
Tag.displayName = "Tag";
|
|
12636
12653
|
|
|
@@ -12852,14 +12869,24 @@ Text.displayName = "Text";
|
|
|
12852
12869
|
* ```
|
|
12853
12870
|
*/
|
|
12854
12871
|
const Input = forwardRef(({ size = "regular", leftIcon, rightIcon, wrapperClassName, isError = false, useHoverStyle = true, errorMessage, ...rest }, ref) => {
|
|
12855
|
-
|
|
12872
|
+
const innerRef = useRef(null);
|
|
12873
|
+
const mergedRef = (node) => {
|
|
12874
|
+
if (typeof ref === "function")
|
|
12875
|
+
ref(node);
|
|
12876
|
+
else if (ref)
|
|
12877
|
+
ref.current = node;
|
|
12878
|
+
innerRef.current = node;
|
|
12879
|
+
};
|
|
12880
|
+
return (jsxs(Fragment$1, { children: [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 &&
|
|
12856
12881
|
"py-1.5 px-2 text-body leading-body-compact font-medium gap-2", size === INPUT_SIZES.LARGE &&
|
|
12857
12882
|
"py-[11px] px-4 text-base leading-base-compact font-medium gap-3", isError &&
|
|
12858
|
-
"border-comp-chroma-error focus-within:border-comp-chroma-error", wrapperClassName),
|
|
12883
|
+
"border-comp-chroma-error focus-within:border-comp-chroma-error", wrapperClassName), onClick: () => {
|
|
12884
|
+
innerRef.current?.focus();
|
|
12885
|
+
}, children: [jsx(StateColorContainer, { className: cn("group-focus-within/state:bg-page-l-null", (!useHoverStyle || rest.disabled) && "hover:bg-fill-default") }), leftIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: leftIcon })), 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 &&
|
|
12859
12886
|
"hover:placeholder:text-comp-mono-subtle-hovered", size === INPUT_SIZES.REGULAR &&
|
|
12860
12887
|
"text-body leading-body-compact font-medium", size === INPUT_SIZES.LARGE &&
|
|
12861
12888
|
"text-base leading-base-compact font-medium", isError &&
|
|
12862
|
-
"placeholder:text-comp-chroma-error text-comp-chroma-error hover:placeholder:text-comp-error focus:placeholder:text-comp-error", rest.className), ...rest }), rightIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: rightIcon }))] }), errorMessage && (jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-chroma-error", children: errorMessage }))] }));
|
|
12889
|
+
"placeholder:text-comp-chroma-error text-comp-chroma-error hover:placeholder:text-comp-error focus:placeholder:text-comp-error", rest.className), ...rest }), rightIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: rightIcon }))] }), errorMessage && (jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-chroma-error mt-2", children: errorMessage }))] }));
|
|
12863
12890
|
});
|
|
12864
12891
|
Input.displayName = "Input";
|
|
12865
12892
|
|
|
@@ -12908,7 +12935,7 @@ const MultipleSelectTrigger = forwardRef(({ size = "regular", children, ...rest
|
|
|
12908
12935
|
setIsOpen(value);
|
|
12909
12936
|
onClick?.(e);
|
|
12910
12937
|
};
|
|
12911
|
-
return (jsxs("div", { ref: ref, className: cn("flex items-center justify-between rounded-lg cursor-pointer border border-border-bound bg-
|
|
12938
|
+
return (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, jsx("span", { className: "flex items-center justify-center size-4 text-comp-mono-default", children: jsx(ChevronDown, { size: 16 }) }), jsx(StateColorContainer, { className: "group-aria-selected/state:bg-fill-default" })] }));
|
|
12912
12939
|
});
|
|
12913
12940
|
const MultipleSelectValue = forwardRef(({ placeholder, className, ...rest }, ref) => {
|
|
12914
12941
|
const { values, disabled, setSelectedValues } = useContext(MultipleSelectContext);
|
|
@@ -12962,7 +12989,7 @@ const MultipleSelectContent = forwardRef(({ useSearch, options: optionsProps, in
|
|
|
12962
12989
|
window.removeEventListener("resize", close);
|
|
12963
12990
|
};
|
|
12964
12991
|
}, [setIsOpen]);
|
|
12965
|
-
return (isOpen && (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
|
|
12992
|
+
return (isOpen && (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 && (jsx("div", { className: "pb-2 mb-2 border-b border-b-border-divider", children: jsx(Input, { onChange: handleSearchChange, leftIcon: jsx(MagnifyingGlassIcon, { width: 20, height: 20 }), placeholder: "Enter any characters..." }) })), jsx("ul", { className: "p-0 m-0 flex flex-col gap-1 list-none", children: options.map((option) => (jsx(MultipleSelectItem, { option: option, indicator: indicator }, option.value))) })] })));
|
|
12966
12993
|
});
|
|
12967
12994
|
const MultipleSelectItem = forwardRef(({ option, indicator, className, ...rest }, ref) => {
|
|
12968
12995
|
const { values, setSelectedValues } = useContext(MultipleSelectContext);
|
|
@@ -12976,8 +13003,8 @@ const MultipleSelectItem = forwardRef(({ option, indicator, className, ...rest }
|
|
|
12976
13003
|
: [...values, option];
|
|
12977
13004
|
setSelectedValues(newValues);
|
|
12978
13005
|
};
|
|
12979
|
-
return (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
|
|
12980
|
-
"bg-fill-disabled text-comp-disabled cursor-not-allowed", className), onClick: handleClick, ...rest, children: [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 && (jsx("span", { className: "flex items-center justify-center size-4", children: indicator }))] }));
|
|
13006
|
+
return (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 &&
|
|
13007
|
+
"bg-fill-disabled text-comp-disabled cursor-not-allowed", className), onClick: handleClick, ...rest, children: [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 && (jsx("span", { className: "flex items-center justify-center size-4", children: indicator })), jsx(StateColorContainer, { className: "rounded-sm" })] }));
|
|
12981
13008
|
});
|
|
12982
13009
|
|
|
12983
13010
|
const Table = forwardRef(({ className, ...rest }, ref) => {
|
|
@@ -12990,7 +13017,7 @@ const TableBody = forwardRef(({ ...rest }, ref) => {
|
|
|
12990
13017
|
return jsx("tbody", { ref: ref, ...rest });
|
|
12991
13018
|
});
|
|
12992
13019
|
const TableRow = forwardRef(({ isSelected, shouldLastBorderRender = true, className, ...rest }, ref) => {
|
|
12993
|
-
return (jsx("tr", { ref: ref, "data-selected": isSelected, "data-last-border": shouldLastBorderRender, className: cn("border-b border-border-divider hover:bg-fill-
|
|
13020
|
+
return (jsx("tr", { ref: ref, "data-selected": isSelected, "data-last-border": shouldLastBorderRender, className: cn("border-b border-border-divider hover:bg-fill-hovered", isSelected && "bg-fill-selected", !shouldLastBorderRender && "last:border-b-0", className), ...rest }));
|
|
12994
13021
|
});
|
|
12995
13022
|
const TableHead = forwardRef(({ className, children, ...rest }, ref) => {
|
|
12996
13023
|
return (jsx("th", { ref: ref, className: cn("text-body leading-body font-medium py-5 pr-0 pl-9 last:pr-9 align-middle text-comp-mono-subtle-default text-left", className), ...rest, children: jsx("div", { className: "overflow-hidden overflow-ellipsis whitespace-nowrap", children: children }) }));
|
|
@@ -13025,8 +13052,8 @@ const InteractiveListItemContext = createContext({
|
|
|
13025
13052
|
disabled: false,
|
|
13026
13053
|
});
|
|
13027
13054
|
const InteractiveListItem = forwardRef(({ isSelected, disabled, showHoverActions = true, children, className, ...rest }, ref) => {
|
|
13028
|
-
return (jsx(InteractiveListItemContext, { value: { disabled: !!disabled }, children:
|
|
13029
|
-
"cursor-not-allowed text-comp-disabled bg-fill-disabled", className), ...rest, children: children }) }));
|
|
13055
|
+
return (jsx(InteractiveListItemContext, { value: { disabled: !!disabled }, children: jsxs("div", { ref: ref, "aria-selected": isSelected, "data-selected": isSelected, "data-disabled": disabled, "data-hover-actions": showHoverActions, className: cn("relative group/wrapper flex items-center gap-1 p-1.5 rounded-sm cursor-pointer text-comp-mono-default bg-page-l-null order border-transparent", isSelected && "bg-fill-mono-selected border-border-selected", disabled &&
|
|
13056
|
+
"cursor-not-allowed text-comp-disabled bg-fill-disabled", className), ...rest, children: [children, jsx(StateColorContainer, { className: "rounded-sm", groupName: "wrapper" })] }) }));
|
|
13030
13057
|
});
|
|
13031
13058
|
const InteractiveListItemIcon = forwardRef(({ children, className, ...props }, ref) => {
|
|
13032
13059
|
return (jsx("span", { className: cn("flex items-center justify-center size-6 p-1", className), ...props, ref: ref, children: children }));
|
|
@@ -13052,20 +13079,21 @@ const Calendar = ({ className, classNames, showOutsideDays = true, ...props }) =
|
|
|
13052
13079
|
month_grid: "border-separate border-spacing-0",
|
|
13053
13080
|
weekday: "text-comp-mono-subtle-default text-body font-normal leading-body size-9 p-1",
|
|
13054
13081
|
day: "p-1 bg-transparent",
|
|
13055
|
-
day_button: "size-8 rounded-md hover:bg-fill-
|
|
13056
|
-
selected: cn("[&_button]:bg-
|
|
13057
|
-
"[&_button]:text-comp-accent-default [&_button]:hover:bg-
|
|
13058
|
-
|
|
13059
|
-
|
|
13060
|
-
|
|
13061
|
-
|
|
13062
|
-
|
|
13082
|
+
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",
|
|
13083
|
+
selected: cn("[&_button]:bg-page-accent-l0 bg-transparent", props.mode === "single" &&
|
|
13084
|
+
"[&_button]:text-comp-accent-default [&_button]:hover:bg-page-accent-l0"),
|
|
13085
|
+
outside: "[&_button]:text-comp-disabled",
|
|
13086
|
+
range_start: "[&_button]:bg-page-accent-l0 bg-transparent [&_button]:text-comp-accent-default [&_button]:hover:bg-page-accent-l0",
|
|
13087
|
+
range_middle: "[&_button]:bg-page-l3 bg-transparent [&_button]:hover:bg-fill-hovered",
|
|
13088
|
+
range_end: "[&_button]:bg-page-accent-l0 bg-transparent [&_button]:text-comp-accent-default [&_button]:hover:bg-page-accent-l0",
|
|
13089
|
+
button_next: cn(getDefaultClassNames().button_next, "h-9 py-0 px-2 text-body leading-body-compact !bg-fill-default hover:!bg-fill-hovered active:!bg-fill-mono-pressed disabled:!bg-fill-disabled disabled:text-comp-disabled rounded-md"),
|
|
13090
|
+
button_previous: cn(getDefaultClassNames().button_previous, "h-9 py-0 px-2 text-body leading-body-compact !bg-fill-default hover:!bg-fill-hovered active:!bg-fill-mono-pressed disabled:!bg-fill-disabled disabled:text-comp-disabled rounded-md"),
|
|
13063
13091
|
...classNames,
|
|
13064
13092
|
}, components: {
|
|
13065
13093
|
Dropdown: (props) => {
|
|
13066
13094
|
const { options, className, classNames, components, ...rest } = props;
|
|
13067
13095
|
const selectedOption = options?.find(({ value }) => value === rest.value);
|
|
13068
|
-
return (jsxs("div", { className: cn("flex px-2 py-1 rounded-lg
|
|
13096
|
+
return (jsxs("div", { className: cn("group/state flex px-2 py-1 rounded-lg relative cursor-pointer", props["aria-label"]?.includes("Month") ? "w-28" : "w-20"), children: [jsx("select", { ...rest, className: cn("text-body leading-body-compact font-medium text-comp-mono-default focus:outline-none z-[1] opacity-0 appearance-none absolute inset-0 w-full", className), name: props["aria-label"], children: options?.map((option) => (jsx("option", { value: option.value, children: option.label }, option.value))) }), jsxs(Text, { variant: "medBodyMedCompact", className: "flex gap-0.5 items-center justify-end w-full text-comp-mono-default leading-3.5 cursor-pointer", "aria-hidden": true, children: [jsx("span", { className: "inline-block px-1 py-1.5 flex-1 text-right", children: selectedOption?.label }), jsx(ChevronDown, { size: 16 })] }), jsx(StateColorContainer, { className: "rounded-lg" })] }));
|
|
13069
13097
|
},
|
|
13070
13098
|
Chevron: (args) => (jsx(ChevronLeft, { ...args, size: 20, "data-orientation": args.orientation, className: "text-comp-mono-default [&:is([data-orientation='right'])]:rotate-180 [&:is([data-orientation='up'])]:rotate-90 [&:is([data-orientation='down'])]:-rotate-90" })),
|
|
13071
13099
|
}, ...props }));
|
|
@@ -13077,6 +13105,7 @@ const BUTTON_SIZES = {
|
|
|
13077
13105
|
LARGE: "large",
|
|
13078
13106
|
};
|
|
13079
13107
|
const BUTTON_VARIANTS = {
|
|
13108
|
+
ACCENT: "accent",
|
|
13080
13109
|
THUMBNAIL_GHOST: "thumbnail_ghost"};
|
|
13081
13110
|
|
|
13082
13111
|
/**
|
|
@@ -13093,7 +13122,7 @@ const BUTTON_VARIANTS = {
|
|
|
13093
13122
|
* </Button>
|
|
13094
13123
|
* ```
|
|
13095
13124
|
*/
|
|
13096
|
-
const Button = forwardRef(({ variant = "accent", size = "regular", fullWidth = false, isLoading = false, leftIcon, rightIcon, children, disabled, className, ...rest }, ref) => {
|
|
13125
|
+
const Button = forwardRef(({ variant = "accent", size = "regular", fullWidth = false, isLoading = false, leftIcon, rightIcon, children, disabled, className, stateContainerClassName, ...rest }, ref) => {
|
|
13097
13126
|
const getClassName = (size, variant) => {
|
|
13098
13127
|
const sizeClassName = {
|
|
13099
13128
|
small: "h-7 py-0 px-1.5 text-label leading-label-compact",
|
|
@@ -13106,12 +13135,16 @@ const Button = forwardRef(({ variant = "accent", size = "regular", fullWidth = f
|
|
|
13106
13135
|
large: "px-1.5",
|
|
13107
13136
|
}[size];
|
|
13108
13137
|
const variantClassName = {
|
|
13109
|
-
accent: "bg-
|
|
13110
|
-
outline: "bg-
|
|
13111
|
-
|
|
13112
|
-
|
|
13113
|
-
|
|
13114
|
-
|
|
13138
|
+
accent: "bg-page-accent-l0 disabled:bg-pure-transparent text-comp-accent-default disabled:text-comp-disabled",
|
|
13139
|
+
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",
|
|
13140
|
+
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",
|
|
13141
|
+
ghost: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled",
|
|
13142
|
+
thumbnail_ghost: "bg-page-l-null disabled:bg-fill-disabled text-comp-mono-default disabled:text-comp-disabled",
|
|
13143
|
+
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",
|
|
13144
|
+
subtle_filled: "bg-page-l3 disabled:bg-fill-disabled text-comp-mono-subtle-default disabled:text-comp-disabled aria-selected:text-comp-mono-default",
|
|
13145
|
+
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",
|
|
13146
|
+
ghost_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-accent-default disabled:text-comp-disabled",
|
|
13147
|
+
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",
|
|
13115
13148
|
}[variant];
|
|
13116
13149
|
return [
|
|
13117
13150
|
sizeClassName,
|
|
@@ -13140,7 +13173,7 @@ const Button = forwardRef(({ variant = "accent", size = "regular", fullWidth = f
|
|
|
13140
13173
|
return "px-1.5";
|
|
13141
13174
|
return "px-2"; // 기본값은 regular 크기
|
|
13142
13175
|
};
|
|
13143
|
-
return (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 && (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 &&
|
|
13176
|
+
return (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: [jsx(StateColorContainer, { isInverted: variant === BUTTON_VARIANTS.ACCENT, className: stateContainerClassName }), isLoading && (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 &&
|
|
13144
13177
|
"size-4 top-[calc(50%-8px)] left-[calc(50%-8px)]", size === BUTTON_SIZES.REGULAR &&
|
|
13145
13178
|
"size-5 top-[calc(50%-10px)] left-[calc(50%-10px)]", size === BUTTON_SIZES.LARGE &&
|
|
13146
13179
|
"size-6 top-[calc(50%-12px)] left-[calc(50%-12px)]"), children: jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) })), leftIcon && (jsx("div", { className: cn("flex items-center justify-center relative", variant === BUTTON_VARIANTS.THUMBNAIL_GHOST &&
|
|
@@ -13197,7 +13230,7 @@ const DatePicker = ({ size = "regular", placeholder = "Pick a date", format = "Y
|
|
|
13197
13230
|
}
|
|
13198
13231
|
return placeholder ?? "";
|
|
13199
13232
|
};
|
|
13200
|
-
return (jsxs(Root2$2, { open: open, onOpenChange: handleOpenChange, children: [jsx(Trigger$2, { asChild: true, children: jsx(Button, { size: size, fullWidth: true, variant: "outline", leftIcon: jsx(Calendar$1, { size: 20 }), className: "justify-start", disabled: disabled, children: getDateToFormatString(inputValue) }) }), jsx(Content2$2, { sideOffset: 10, align: "start", className: cn("z-10", popoverContentClassName), ...rest, children: mode === "single" ? (jsx(Calendar, { mode: "single", ...rest, selected: inputValue, onSelect: handleSelect })) : mode === "multiple" ? (jsx(Calendar, { mode: "multiple", ...rest, selected: Array.isArray(inputValue) ? inputValue : [], onSelect: handleSelect })) : (jsx(Calendar, { mode: "range", ...rest, selected: inputValue, onSelect: handleSelect })) })] }));
|
|
13233
|
+
return (jsxs(Root2$2, { open: open, onOpenChange: handleOpenChange, children: [jsx(Trigger$2, { asChild: true, children: jsx(Button, { size: size, fullWidth: true, variant: "outline", leftIcon: 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) }) }), jsx(Content2$2, { sideOffset: 10, align: "start", className: cn("z-10", popoverContentClassName), ...rest, children: mode === "single" ? (jsx(Calendar, { mode: "single", ...rest, selected: inputValue, onSelect: handleSelect })) : mode === "multiple" ? (jsx(Calendar, { mode: "multiple", ...rest, selected: Array.isArray(inputValue) ? inputValue : [], onSelect: handleSelect })) : (jsx(Calendar, { mode: "range", ...rest, selected: inputValue, onSelect: handleSelect })) })] }));
|
|
13201
13234
|
};
|
|
13202
13235
|
|
|
13203
13236
|
const ContextMenu = Root2$3;
|
|
@@ -13210,12 +13243,8 @@ const ContextMenuLabel = (props) => {
|
|
|
13210
13243
|
return (jsx(Label2, { ...props, children: props.children }));
|
|
13211
13244
|
};
|
|
13212
13245
|
const ContextMenuItem = ({ leftIcon, rightSlot, textValue, ...rest }) => {
|
|
13213
|
-
return (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-
|
|
13214
|
-
|
|
13215
|
-
active:not-[:is([data-disabled])]:bg-fill-mono-pressed active:not-[:is([data-disabled])]:text-comp-mono-pressed
|
|
13216
|
-
[&:is([data-state='open'])]:bg-fill-mono-selected [&:is([data-state='open'])]:text-comp-mono-selected
|
|
13217
|
-
[&:is([data-disabled])]:bg-fill-disabled [&:is([data-disabled])]:text-comp-disabled [&:is([data-disabled])]:cursor-not-allowed`, rest.className), children: [jsxs("div", { className: "flex-1 flex items-center gap-2 text-size-inherit font-inherit leading-inherit overflow-hidden", children: [jsx("div", { className: "size-4 flex items-center justify-center text-size-inherit leading-inherit font-inherit bg-transparent", children: leftIcon }), jsx("span", { className: "overflow-ellipsis overflow-hidden whitespace-nowrap", children: textValue })] }), rightSlot && (jsx("div", { className: `flex items-center justify-center text-size-inherit leading-inherit font-inherit text-comp-mono-subtle-default
|
|
13218
|
-
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 }))] }));
|
|
13246
|
+
return (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
|
|
13247
|
+
[&:is([data-disabled])]:bg-fill-disabled [&:is([data-disabled])]:text-comp-disabled [&:is([data-disabled])]:cursor-not-allowed`, rest.className), children: [jsxs("div", { className: "flex-1 flex items-center gap-2 text-size-inherit font-inherit leading-inherit overflow-hidden", children: [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 }), jsx("span", { className: "overflow-ellipsis overflow-hidden whitespace-nowrap", children: textValue })] }), rightSlot && (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 })), jsx(StateColorContainer, { className: "rounded-sm group-aria-disabled/state:bg-fill-default group-[data-state='open']/state:bg-fill-selected" })] }));
|
|
13219
13248
|
};
|
|
13220
13249
|
const ContextMenuGroup = Group2;
|
|
13221
13250
|
const ContextMenuSub = Sub2;
|
|
@@ -13224,7 +13253,7 @@ const ContextMenuSubContent = (props) => {
|
|
|
13224
13253
|
return (jsx(Portal2, { children: 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 }) }));
|
|
13225
13254
|
};
|
|
13226
13255
|
const ContextMenuSeparator = (props) => {
|
|
13227
|
-
return (jsx(Separator2, { ...props, className: cn("h-[1px] bg-border-
|
|
13256
|
+
return (jsx(Separator2, { ...props, className: cn("h-[1px] bg-border-divider my-1", props.className) }));
|
|
13228
13257
|
};
|
|
13229
13258
|
const ContextMenuCheckboxItem = CheckboxItem2;
|
|
13230
13259
|
const ContextMenuRadioGroup = RadioGroup2;
|
|
@@ -13235,8 +13264,8 @@ const ContextMenuItemIndicator = (props) => {
|
|
|
13235
13264
|
|
|
13236
13265
|
const AutocompleteContentItem = ({ inputValue, item, index, displayValue, highlightedIndex, onClick, className = "", }) => {
|
|
13237
13266
|
const isHighlighted = index === highlightedIndex;
|
|
13238
|
-
return (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-
|
|
13239
|
-
.split(new RegExp(`(${inputValue})`, "gi"))
|
|
13267
|
+
return (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)
|
|
13268
|
+
.split(new RegExp(`(${inputValue.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi"))
|
|
13240
13269
|
.map((part, i) => part.toLowerCase() === inputValue.toLowerCase() ? (jsx("span", { className: "font-bold text-comp-chroma-error", children: part }, i)) : (jsx("span", { children: part }, i))) }));
|
|
13241
13270
|
};
|
|
13242
13271
|
const Autocomplete = ({ placeholder, data, value, displayValue, onSelect, onChange, noResultsMessage = "검색 결과가 없습니다.", maxResults = 10, debounceTime = 300, wrapperClassName, contentClassName, itemClassName, }) => {
|
|
@@ -13353,27 +13382,27 @@ const SWITCH_SIZES = {
|
|
|
13353
13382
|
|
|
13354
13383
|
const FilledSwitch = (props) => {
|
|
13355
13384
|
const { size, checked, thumbClassName, ...rest } = props;
|
|
13356
|
-
return (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: [jsx(Thumb, { className: cn("
|
|
13385
|
+
return (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: [jsx(Thumb, { className: cn("absolute transition-all duration-100 rounded-sm border border-border-divider", size === SWITCH_SIZES.REGULAR &&
|
|
13357
13386
|
"size-6 left-1.5 data-[state=checked]:left-[37px]", size === SWITCH_SIZES.SMALL &&
|
|
13358
|
-
"size-5 left-1 data-[state=checked]:left-[35px]", checked ? "bg-
|
|
13387
|
+
"size-5 left-1 data-[state=checked]:left-[35px]", checked ? "bg-page-accent-l0" : "bg-page-l3", thumbClassName) }), checked ? (jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-mono-default py-1 px-[5px] text-left w-full", as: "div", children: "ON" })) : (jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-mono-subtle-default py-1 px-0.5 text-right w-full", as: "div", children: "OFF" })), jsx(StateColorContainer, { className: "rounded-lg" })] }));
|
|
13359
13388
|
};
|
|
13360
13389
|
const OutlinedSwitch = (props) => {
|
|
13361
13390
|
const { size, checked, thumbClassName, ...rest } = props;
|
|
13362
|
-
return (jsxs(Root, { className: cn("group border shadow-inner p-1 relative rounded-[20px]", checked
|
|
13363
|
-
? "bg-
|
|
13364
|
-
: "bg-
|
|
13365
|
-
"size-7 data-[state=checked]:left-[42px]
|
|
13366
|
-
"size-5 data-[state=checked]:left-[36px]
|
|
13391
|
+
return (jsxs(Root, { className: cn("group/state border shadow-inner p-1 relative rounded-[20px]", checked
|
|
13392
|
+
? "bg-page-accent-l0 border-transparent"
|
|
13393
|
+
: "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: [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 &&
|
|
13394
|
+
"size-7 data-[state=checked]:left-[42px]", size === SWITCH_SIZES.SMALL &&
|
|
13395
|
+
"size-5 data-[state=checked]:left-[36px]", thumbClassName) }), checked ? (jsx(Text, { variant: size === SWITCH_SIZES.REGULAR
|
|
13367
13396
|
? "boldBodyBoldCompact"
|
|
13368
|
-
: "boldLabelBoldCompact", className: "text-comp-accent-default pl-2 text-left
|
|
13397
|
+
: "boldLabelBoldCompact", className: "text-comp-accent-default pl-2 text-left", as: "div", children: "ON" })) : (jsx(Text, { variant: size === SWITCH_SIZES.REGULAR
|
|
13369
13398
|
? "medBodyMedCompact"
|
|
13370
|
-
: "medLabelMedCompact", className: cn("text-comp-mono-subtle-default text-right
|
|
13399
|
+
: "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" })), jsx(StateColorContainer, { className: "rounded-[20px]" })] }));
|
|
13371
13400
|
};
|
|
13372
13401
|
const SlideSwitch = (props) => {
|
|
13373
13402
|
const { size, checked, thumbClassName, leftIcon, rightIcon, ...rest } = props;
|
|
13374
|
-
return (jsxs(Root, { className: cn("group border shadow-inner p-1 relative rounded-[20px] border-border-bound bg-
|
|
13403
|
+
return (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: [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 &&
|
|
13375
13404
|
"size-7 data-[state=checked]:left-[36px]", size === SWITCH_SIZES.SMALL &&
|
|
13376
|
-
"size-5 data-[state=checked]:left-[28px]", thumbClassName) }), leftIcon && (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 && (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 }))] }));
|
|
13405
|
+
"size-5 data-[state=checked]:left-[28px]", thumbClassName) }), leftIcon && (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 && (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 })), jsx(StateColorContainer, { className: "rounded-[20px]" })] }));
|
|
13377
13406
|
};
|
|
13378
13407
|
const Switch = (props) => {
|
|
13379
13408
|
const { defaultChecked, checked: isChecked } = props;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -13,3 +13,5 @@ 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";
|
|
17
|
+
export type { StateGroupName } from "./state-color-container/types";
|