@lawkit/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -0
- package/dist/index.js +3325 -0
- package/dist/tokens/src/contracts/theme-contract.css.d.ts +65 -0
- package/dist/tokens/src/foundation/color-palette.d.ts +150 -0
- package/dist/tokens/src/foundation/spacing-scale.d.ts +17 -0
- package/dist/tokens/src/foundation/typography-scale.d.ts +79 -0
- package/dist/tokens/src/index.d.ts +11 -0
- package/dist/tokens/src/runtime/create-theme-vars.d.ts +9 -0
- package/dist/tokens/src/semantic/color-roles.d.ts +409 -0
- package/dist/tokens/src/semantic/text-styles.d.ts +548 -0
- package/dist/tokens/src/theme.runtime.d.ts +2 -0
- package/dist/tokens/src/themes/light-theme.css.d.ts +23 -0
- package/dist/ui-v3/src/components/Alert/Alert.css.d.ts +59 -0
- package/dist/ui-v3/src/components/Alert/index.d.ts +34 -0
- package/dist/ui-v3/src/components/Avatar/Avatar.css.d.ts +95 -0
- package/dist/ui-v3/src/components/Avatar/index.d.ts +56 -0
- package/dist/ui-v3/src/components/Button/Button.css.d.ts +45 -0
- package/dist/ui-v3/src/components/Button/index.d.ts +22 -0
- package/dist/ui-v3/src/components/ButtonGroup/ButtonGroup.css.d.ts +68 -0
- package/dist/ui-v3/src/components/ButtonGroup/index.d.ts +26 -0
- package/dist/ui-v3/src/components/ButtonTab/ButtonTab.css.d.ts +23 -0
- package/dist/ui-v3/src/components/ButtonTab/index.d.ts +19 -0
- package/dist/ui-v3/src/components/CalendarPopover/CalendarPopover.css.d.ts +72 -0
- package/dist/ui-v3/src/components/CalendarPopover/index.d.ts +61 -0
- package/dist/ui-v3/src/components/Card/Card.css.d.ts +15 -0
- package/dist/ui-v3/src/components/Card/index.d.ts +29 -0
- package/dist/ui-v3/src/components/ChartTooltip/ChartTooltip.css.d.ts +36 -0
- package/dist/ui-v3/src/components/ChartTooltip/index.d.ts +28 -0
- package/dist/ui-v3/src/components/Checkbox/Checkbox.css.d.ts +71 -0
- package/dist/ui-v3/src/components/Checkbox/index.d.ts +27 -0
- package/dist/ui-v3/src/components/ChipsNavigation/ChipsNavigation.css.d.ts +26 -0
- package/dist/ui-v3/src/components/ChipsNavigation/index.d.ts +21 -0
- package/dist/ui-v3/src/components/Collapse/Collapse.css.d.ts +67 -0
- package/dist/ui-v3/src/components/Collapse/index.d.ts +32 -0
- package/dist/ui-v3/src/components/DataTable/DataTable.css.d.ts +32 -0
- package/dist/ui-v3/src/components/DataTable/index.d.ts +47 -0
- package/dist/ui-v3/src/components/DatePicker/DatePicker.css.d.ts +88 -0
- package/dist/ui-v3/src/components/DatePicker/index.d.ts +57 -0
- package/dist/ui-v3/src/components/Dropdown/Dropdown.css.d.ts +78 -0
- package/dist/ui-v3/src/components/Dropdown/index.d.ts +37 -0
- package/dist/ui-v3/src/components/FileUpload/FileUpload.css.d.ts +49 -0
- package/dist/ui-v3/src/components/FileUpload/index.d.ts +98 -0
- package/dist/ui-v3/src/components/IconButtonGroup/IconButtonGroup.css.d.ts +52 -0
- package/dist/ui-v3/src/components/IconButtonGroup/index.d.ts +23 -0
- package/dist/ui-v3/src/components/InfoPopover/InfoPopover.css.d.ts +9 -0
- package/dist/ui-v3/src/components/InfoPopover/index.d.ts +38 -0
- package/dist/ui-v3/src/components/Input/Input.css.d.ts +99 -0
- package/dist/ui-v3/src/components/Input/index.d.ts +86 -0
- package/dist/ui-v3/src/components/ListGroup/ListGroup.css.d.ts +47 -0
- package/dist/ui-v3/src/components/ListGroup/index.d.ts +30 -0
- package/dist/ui-v3/src/components/Mention/Mention.css.d.ts +1 -0
- package/dist/ui-v3/src/components/Mention/index.d.ts +15 -0
- package/dist/ui-v3/src/components/Modal/Modal.css.d.ts +23 -0
- package/dist/ui-v3/src/components/Modal/index.d.ts +34 -0
- package/dist/ui-v3/src/components/NavigationTab/NavigationTab.css.d.ts +18 -0
- package/dist/ui-v3/src/components/NavigationTab/index.d.ts +20 -0
- package/dist/ui-v3/src/components/NumberInput/NumberInput.css.d.ts +45 -0
- package/dist/ui-v3/src/components/NumberInput/index.d.ts +32 -0
- package/dist/ui-v3/src/components/Pagination/Pagination.css.d.ts +20 -0
- package/dist/ui-v3/src/components/Pagination/index.d.ts +18 -0
- package/dist/ui-v3/src/components/Popover/Popover.css.d.ts +65 -0
- package/dist/ui-v3/src/components/Popover/index.d.ts +39 -0
- package/dist/ui-v3/src/components/Progress/Progress.css.d.ts +60 -0
- package/dist/ui-v3/src/components/Progress/index.d.ts +36 -0
- package/dist/ui-v3/src/components/Radio/Radio.css.d.ts +55 -0
- package/dist/ui-v3/src/components/Radio/index.d.ts +64 -0
- package/dist/ui-v3/src/components/Skeleton/Skeleton.css.d.ts +19 -0
- package/dist/ui-v3/src/components/Skeleton/index.d.ts +52 -0
- package/dist/ui-v3/src/components/Slider/Slider.css.d.ts +10 -0
- package/dist/ui-v3/src/components/Slider/index.d.ts +66 -0
- package/dist/ui-v3/src/components/Spinner/Spinner.css.d.ts +68 -0
- package/dist/ui-v3/src/components/Spinner/index.d.ts +22 -0
- package/dist/ui-v3/src/components/SweetAlert/SweetAlert.css.d.ts +37 -0
- package/dist/ui-v3/src/components/SweetAlert/index.d.ts +25 -0
- package/dist/ui-v3/src/components/Switch/Switch.css.d.ts +46 -0
- package/dist/ui-v3/src/components/Switch/index.d.ts +26 -0
- package/dist/ui-v3/src/components/Tabs/Tabs.css.d.ts +55 -0
- package/dist/ui-v3/src/components/Tabs/index.d.ts +29 -0
- package/dist/ui-v3/src/components/TagSelect/TagSelect.css.d.ts +12 -0
- package/dist/ui-v3/src/components/TagSelect/index.d.ts +37 -0
- package/dist/ui-v3/src/components/Toast/Toast.css.d.ts +97 -0
- package/dist/ui-v3/src/components/Toast/index.d.ts +57 -0
- package/dist/ui-v3/src/components/Tooltip/Tooltip.css.d.ts +60 -0
- package/dist/ui-v3/src/components/Tooltip/index.d.ts +26 -0
- package/dist/ui-v3/src/components/TreeView/TreeView.css.d.ts +103 -0
- package/dist/ui-v3/src/components/TreeView/index.d.ts +72 -0
- package/dist/ui-v3/src/components/Widget/Widget.css.d.ts +52 -0
- package/dist/ui-v3/src/components/Widget/index.d.ts +109 -0
- package/dist/ui-v3/src/foundations/field/Field.d.ts +20 -0
- package/dist/ui-v3/src/foundations/field/field.css.d.ts +70 -0
- package/dist/ui-v3/src/foundations/field/index.d.ts +2 -0
- package/dist/ui-v3/src/index.d.ts +80 -0
- package/dist/ui-v3/src/lib/Portal.d.ts +6 -0
- package/dist/ui-v3/src/lib/cx.d.ts +1 -0
- package/dist/ui-v3/src/lib/cx.test.d.ts +1 -0
- package/dist/ui-v3/src/lib/useFocusTrap.d.ts +2 -0
- package/dist/ui-v3/src/styles/shared.css.d.ts +15 -0
- package/dist/ui-v3/src/styles/sprinkles.css.d.ts +29 -0
- package/package.json +67 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare const wrapper: string;
|
|
2
|
+
export declare const popover: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
placement: {
|
|
4
|
+
top: {
|
|
5
|
+
bottom: "100%";
|
|
6
|
+
left: "50%";
|
|
7
|
+
transform: "translateX(-50%)";
|
|
8
|
+
flexDirection: "column";
|
|
9
|
+
marginBottom: number;
|
|
10
|
+
};
|
|
11
|
+
bottom: {
|
|
12
|
+
top: "100%";
|
|
13
|
+
left: "50%";
|
|
14
|
+
transform: "translateX(-50%)";
|
|
15
|
+
flexDirection: "column-reverse";
|
|
16
|
+
marginTop: number;
|
|
17
|
+
};
|
|
18
|
+
left: {
|
|
19
|
+
right: "100%";
|
|
20
|
+
top: "50%";
|
|
21
|
+
transform: "translateY(-50%)";
|
|
22
|
+
flexDirection: "row";
|
|
23
|
+
marginRight: number;
|
|
24
|
+
};
|
|
25
|
+
right: {
|
|
26
|
+
left: "100%";
|
|
27
|
+
top: "50%";
|
|
28
|
+
transform: "translateY(-50%)";
|
|
29
|
+
flexDirection: "row-reverse";
|
|
30
|
+
marginLeft: number;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
export declare const card: string;
|
|
35
|
+
export declare const header: string;
|
|
36
|
+
export declare const headerTitle: string;
|
|
37
|
+
export declare const body: string;
|
|
38
|
+
export declare const bodyText: string;
|
|
39
|
+
export declare const footer: string;
|
|
40
|
+
export declare const primaryBtn: string;
|
|
41
|
+
export declare const outlineBtn: string;
|
|
42
|
+
export declare const arrow: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
43
|
+
placement: {
|
|
44
|
+
top: {
|
|
45
|
+
borderLeft: "7px solid transparent";
|
|
46
|
+
borderRight: "7px solid transparent";
|
|
47
|
+
borderTop: "7px solid rgb(53, 56, 60)";
|
|
48
|
+
};
|
|
49
|
+
bottom: {
|
|
50
|
+
borderLeft: "7px solid transparent";
|
|
51
|
+
borderRight: "7px solid transparent";
|
|
52
|
+
borderBottom: "7px solid rgb(53, 56, 60)";
|
|
53
|
+
};
|
|
54
|
+
left: {
|
|
55
|
+
borderTop: "7px solid transparent";
|
|
56
|
+
borderBottom: "7px solid transparent";
|
|
57
|
+
borderLeft: "7px solid rgb(53, 56, 60)";
|
|
58
|
+
};
|
|
59
|
+
right: {
|
|
60
|
+
borderTop: "7px solid transparent";
|
|
61
|
+
borderBottom: "7px solid transparent";
|
|
62
|
+
borderRight: "7px solid rgb(53, 56, 60)";
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
}>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type PopoverPlacement = "top" | "bottom" | "left" | "right";
|
|
3
|
+
export interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "content"> {
|
|
4
|
+
/** 헤더 제목 (파란 바) */
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
/** 본문 콘텐츠 (간편 API — 텍스트) */
|
|
7
|
+
content?: ReactNode;
|
|
8
|
+
/** 화살표 방향 */
|
|
9
|
+
placement?: PopoverPlacement;
|
|
10
|
+
/** 열림 상태 (제어 모드) */
|
|
11
|
+
open?: boolean;
|
|
12
|
+
/** 열림/닫힘 핸들러 (제어 모드) */
|
|
13
|
+
onOpenChange?: (open: boolean) => void;
|
|
14
|
+
/** 확인 버튼 텍스트 */
|
|
15
|
+
confirmText?: string;
|
|
16
|
+
/** 취소 버튼 텍스트 */
|
|
17
|
+
cancelText?: string;
|
|
18
|
+
/** 확인 클릭 핸들러 */
|
|
19
|
+
onConfirm?: () => void;
|
|
20
|
+
/** 취소 클릭 핸들러 */
|
|
21
|
+
onCancel?: () => void;
|
|
22
|
+
/** 커스텀 바디 (compound 패턴) */
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
/** 팝오버 바디에 렌더링할 커스텀 콘텐츠 (compound) */
|
|
25
|
+
popoverBody?: ReactNode;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* **Popover**
|
|
29
|
+
*
|
|
30
|
+
* 클릭 시 나타나는 팝오버.
|
|
31
|
+
* 파란색 헤더 바 + 본문 + 버튼 구성.
|
|
32
|
+
*
|
|
33
|
+
* - `placement`: top / bottom / left / right
|
|
34
|
+
* - `title`: 헤더 제목
|
|
35
|
+
* - `content`: 본문 텍스트 (간편 API)
|
|
36
|
+
* - `popoverBody`: 커스텀 본문 (compound)
|
|
37
|
+
* - `confirmText` / `cancelText`: 버튼 텍스트
|
|
38
|
+
*/
|
|
39
|
+
export declare function Popover({ title, content, placement, open: controlledOpen, onOpenChange, confirmText, cancelText, onConfirm, onCancel, children, popoverBody, className, ...rest }: PopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const progressTrack: string;
|
|
2
|
+
export declare const progressBar: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
color: {
|
|
4
|
+
primary: {
|
|
5
|
+
backgroundColor: string;
|
|
6
|
+
};
|
|
7
|
+
success: {
|
|
8
|
+
backgroundColor: "#28c76f";
|
|
9
|
+
};
|
|
10
|
+
danger: {
|
|
11
|
+
backgroundColor: "#ea5455";
|
|
12
|
+
};
|
|
13
|
+
warning: {
|
|
14
|
+
backgroundColor: "#f0af23";
|
|
15
|
+
};
|
|
16
|
+
info: {
|
|
17
|
+
backgroundColor: "#00cfe8";
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
striped: {
|
|
21
|
+
true: {
|
|
22
|
+
backgroundImage: "linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)";
|
|
23
|
+
backgroundSize: "12px 12px";
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
export declare const animated: string;
|
|
28
|
+
export declare const progressValue: string;
|
|
29
|
+
export declare const stepBarRoot: string;
|
|
30
|
+
export declare const stepItem: string;
|
|
31
|
+
export declare const stepIcon: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
32
|
+
status: {
|
|
33
|
+
completed: {
|
|
34
|
+
backgroundColor: "rgba(33, 81, 236, 0.12)";
|
|
35
|
+
color: string;
|
|
36
|
+
};
|
|
37
|
+
active: {
|
|
38
|
+
backgroundColor: string;
|
|
39
|
+
color: string;
|
|
40
|
+
};
|
|
41
|
+
scheduled: {
|
|
42
|
+
backgroundColor: "rgba(158, 167, 184, 0.12)";
|
|
43
|
+
color: "#9ea7b8";
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
}>;
|
|
47
|
+
export declare const stepLabel: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
48
|
+
status: {
|
|
49
|
+
completed: {
|
|
50
|
+
color: "#4c5469";
|
|
51
|
+
};
|
|
52
|
+
active: {
|
|
53
|
+
color: "#4c5469";
|
|
54
|
+
};
|
|
55
|
+
scheduled: {
|
|
56
|
+
color: "#d1d1d1";
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}>;
|
|
60
|
+
export declare const stepArrow: string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type ProgressColor = "primary" | "success" | "danger" | "warning" | "info";
|
|
3
|
+
export interface ProgressSegment {
|
|
4
|
+
value: number;
|
|
5
|
+
color?: ProgressColor;
|
|
6
|
+
label?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
/** 진행률 (0-100) */
|
|
10
|
+
value?: number;
|
|
11
|
+
/** 바 색상 */
|
|
12
|
+
color?: ProgressColor;
|
|
13
|
+
/** 스트라이프 패턴 */
|
|
14
|
+
striped?: boolean;
|
|
15
|
+
/** 스트라이프 애니메이션 */
|
|
16
|
+
animated?: boolean;
|
|
17
|
+
/** 값 표시 */
|
|
18
|
+
showValue?: boolean;
|
|
19
|
+
/** 멀티 바 세그먼트 (value/color 대신 사용) */
|
|
20
|
+
segments?: ProgressSegment[];
|
|
21
|
+
}
|
|
22
|
+
export type StepStatus = "completed" | "active" | "scheduled";
|
|
23
|
+
export interface StepItem {
|
|
24
|
+
/** 단계 라벨 */
|
|
25
|
+
label: string;
|
|
26
|
+
/** 단계 상태 */
|
|
27
|
+
status: StepStatus;
|
|
28
|
+
/** 커스텀 아이콘 */
|
|
29
|
+
icon?: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
export interface StepBarProps extends HTMLAttributes<HTMLDivElement> {
|
|
32
|
+
/** 단계 목록 */
|
|
33
|
+
steps: StepItem[];
|
|
34
|
+
}
|
|
35
|
+
export declare function ProgressBar({ value, color, striped, animated, showValue, segments, className, ...rest }: ProgressBarProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare function StepBar({ steps, className, ...rest }: StepBarProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export declare const wrapper: string;
|
|
2
|
+
export declare const wrapperDisabled: string;
|
|
3
|
+
export declare const hiddenInput: string;
|
|
4
|
+
export declare const circle: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
5
|
+
size: {
|
|
6
|
+
small: {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
medium: {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
large: {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
variant: {
|
|
20
|
+
basic: {};
|
|
21
|
+
customized: {};
|
|
22
|
+
};
|
|
23
|
+
checked: {
|
|
24
|
+
true: {};
|
|
25
|
+
false: {};
|
|
26
|
+
};
|
|
27
|
+
disabled: {
|
|
28
|
+
true: {};
|
|
29
|
+
false: {};
|
|
30
|
+
};
|
|
31
|
+
}>;
|
|
32
|
+
export declare const label: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
33
|
+
size: {
|
|
34
|
+
small: {
|
|
35
|
+
fontSize: `var(--${string})`;
|
|
36
|
+
lineHeight: "16px";
|
|
37
|
+
};
|
|
38
|
+
medium: {
|
|
39
|
+
fontSize: `var(--${string})`;
|
|
40
|
+
lineHeight: "18px";
|
|
41
|
+
};
|
|
42
|
+
large: {
|
|
43
|
+
fontSize: `var(--${string})`;
|
|
44
|
+
lineHeight: "21px";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
disabled: {
|
|
48
|
+
true: {
|
|
49
|
+
color: "#d1d1d1";
|
|
50
|
+
};
|
|
51
|
+
false: {};
|
|
52
|
+
};
|
|
53
|
+
}>;
|
|
54
|
+
export declare const group: string;
|
|
55
|
+
export declare const groupVertical: string;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { InputHTMLAttributes, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type RadioSize = "small" | "medium" | "large";
|
|
3
|
+
export type RadioVariant = "basic" | "customized";
|
|
4
|
+
export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> {
|
|
5
|
+
/** 사이즈 */
|
|
6
|
+
size?: RadioSize;
|
|
7
|
+
/** 스타일 변형: basic(원형 fill) / customized(원형 border) */
|
|
8
|
+
variant?: RadioVariant;
|
|
9
|
+
/** 라벨 텍스트 */
|
|
10
|
+
label?: string;
|
|
11
|
+
/** 라디오 값 */
|
|
12
|
+
value?: string;
|
|
13
|
+
/** 선택 상태 */
|
|
14
|
+
checked?: boolean;
|
|
15
|
+
/** 변경 핸들러 */
|
|
16
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* **Radio**
|
|
20
|
+
*
|
|
21
|
+
* 라디오 버튼.
|
|
22
|
+
*
|
|
23
|
+
* - `variant`: basic(파란 원) / customized(파란 테두리)
|
|
24
|
+
* - `size`: small(12px) / medium(14px) / large(18px)
|
|
25
|
+
* - `RadioGroup`과 함께 사용하면 name/value 자동 관리
|
|
26
|
+
*
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <RadioGroup value={selected} onChange={setSelected}>
|
|
29
|
+
* <Radio value="a" label="Option A" />
|
|
30
|
+
* <Radio value="b" label="Option B" />
|
|
31
|
+
* </RadioGroup>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function Radio({ size: sizeProp, variant: variantProp, label, value, checked: checkedProp, disabled: disabledProp, onCheckedChange, onChange, className, name: nameProp, ...rest }: RadioProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
36
|
+
/** 그룹 name (자동 생성 가능) */
|
|
37
|
+
name?: string;
|
|
38
|
+
/** 선택된 값 */
|
|
39
|
+
value?: string;
|
|
40
|
+
/** 선택 변경 콜백 */
|
|
41
|
+
onChange?: (value: string) => void;
|
|
42
|
+
/** 공통 사이즈 */
|
|
43
|
+
size?: RadioSize;
|
|
44
|
+
/** 공통 스타일 변형 */
|
|
45
|
+
variant?: RadioVariant;
|
|
46
|
+
/** 공통 비활성화 */
|
|
47
|
+
disabled?: boolean;
|
|
48
|
+
/** 수직 정렬 */
|
|
49
|
+
vertical?: boolean;
|
|
50
|
+
children: ReactNode;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* **RadioGroup**
|
|
54
|
+
*
|
|
55
|
+
* Radio를 그룹으로 묶어 name/value를 자동 관리합니다.
|
|
56
|
+
*
|
|
57
|
+
* ```tsx
|
|
58
|
+
* <RadioGroup value={selected} onChange={setSelected} name="plan">
|
|
59
|
+
* <Radio value="free" label="Free" />
|
|
60
|
+
* <Radio value="pro" label="Pro" />
|
|
61
|
+
* </RadioGroup>
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function RadioGroup({ name, value, onChange, size, variant, disabled, vertical, children, className, ...rest }: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
2
|
+
variant: {
|
|
3
|
+
rect: {
|
|
4
|
+
borderRadius: `var(--${string})`;
|
|
5
|
+
};
|
|
6
|
+
circle: {
|
|
7
|
+
borderRadius: "50%";
|
|
8
|
+
};
|
|
9
|
+
text: {
|
|
10
|
+
borderRadius: `var(--${string})`;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
15
|
+
export declare const textGroup: string;
|
|
16
|
+
export declare const lastLine: string;
|
|
17
|
+
export declare const contentWrapper: string;
|
|
18
|
+
export declare const contentVisible: string;
|
|
19
|
+
export declare const contentHidden: string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type SkeletonVariant = "rect" | "circle" | "text";
|
|
3
|
+
export interface SkeletonContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** true이면 fallback(스켈레톤)을 표시, false이면 children을 표시 */
|
|
5
|
+
loading: boolean;
|
|
6
|
+
/** 로딩 중에 보여줄 스켈레톤 UI */
|
|
7
|
+
fallback: ReactNode;
|
|
8
|
+
/** 로딩 완료 후 보여줄 실제 콘텐츠 */
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
/** 모양 */
|
|
13
|
+
variant?: SkeletonVariant;
|
|
14
|
+
/** 너비 (px 또는 CSS 값) */
|
|
15
|
+
width?: number | string;
|
|
16
|
+
/** 높이 (px 또는 CSS 값, text variant에서는 무시) */
|
|
17
|
+
height?: number | string;
|
|
18
|
+
/** 텍스트 줄 수 (variant="text"일 때만 사용) */
|
|
19
|
+
lines?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Skeleton — 콘텐츠 로딩 자리 표시 컴포넌트
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <Skeleton width={200} height={16} />
|
|
27
|
+
* <Skeleton variant="circle" width={40} height={40} />
|
|
28
|
+
* <Skeleton variant="text" lines={3} />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function Skeleton({ variant, width, height, lines, className, style, ...rest }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export declare namespace Skeleton {
|
|
33
|
+
var Content: typeof SkeletonContent;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Skeleton.Content — 로딩 ↔ 콘텐츠 전환 래퍼
|
|
37
|
+
*
|
|
38
|
+
* loading이 true이면 fallback(스켈레톤)을 표시하고,
|
|
39
|
+
* false가 되면 fade-in 트랜지션과 함께 children을 표시합니다.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <Skeleton.Content
|
|
44
|
+
* loading={isLoading}
|
|
45
|
+
* fallback={<Skeleton variant="text" lines={3} />}
|
|
46
|
+
* >
|
|
47
|
+
* <p>{data.content}</p>
|
|
48
|
+
* </Skeleton.Content>
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare function SkeletonContent({ loading, fallback, children, className, ...rest }: SkeletonContentProps): import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const root: string;
|
|
2
|
+
export declare const sliderRow: string;
|
|
3
|
+
export declare const track: string;
|
|
4
|
+
export declare const trackFill: string;
|
|
5
|
+
export declare const thumb: string;
|
|
6
|
+
export declare const valueBadge: string;
|
|
7
|
+
export declare const ticksRow: string;
|
|
8
|
+
export declare const tick: string;
|
|
9
|
+
export declare const labelsRow: string;
|
|
10
|
+
export declare const scaleLabel: string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
3
|
+
/** 현재 값 */
|
|
4
|
+
value?: number;
|
|
5
|
+
/** 값 변경 콜백 */
|
|
6
|
+
onChange?: (value: number) => void;
|
|
7
|
+
/** 최솟값 */
|
|
8
|
+
min?: number;
|
|
9
|
+
/** 최댓값 */
|
|
10
|
+
max?: number;
|
|
11
|
+
/** 증감 단위 */
|
|
12
|
+
step?: number;
|
|
13
|
+
/** 틱 마크 표시 */
|
|
14
|
+
showTicks?: boolean;
|
|
15
|
+
/** 스케일 라벨 표시 (0, 10, 20 … 100) */
|
|
16
|
+
showLabels?: boolean;
|
|
17
|
+
/** 값 배지 표시 */
|
|
18
|
+
showValue?: boolean;
|
|
19
|
+
/** 비활성화 */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* **Slider**
|
|
24
|
+
*
|
|
25
|
+
* 단일 핸들 슬라이더.
|
|
26
|
+
*
|
|
27
|
+
* - `showTicks`: 틱 마크 표시
|
|
28
|
+
* - `showLabels`: 0–100 스케일 라벨
|
|
29
|
+
* - `showValue`: 핸들 위 값 배지
|
|
30
|
+
*
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <Slider value={50} onChange={setValue} />
|
|
33
|
+
* <Slider value={v} onChange={setV} showTicks showLabels showValue />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function Slider({ value, onChange, min, max, step, showTicks, showLabels, showValue, disabled, className, ...rest }: SliderProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
export interface RangeSliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
38
|
+
/** [시작, 끝] 범위 값 */
|
|
39
|
+
value?: [number, number];
|
|
40
|
+
/** 범위 변경 콜백 */
|
|
41
|
+
onChange?: (value: [number, number]) => void;
|
|
42
|
+
/** 최솟값 */
|
|
43
|
+
min?: number;
|
|
44
|
+
/** 최댓값 */
|
|
45
|
+
max?: number;
|
|
46
|
+
/** 증감 단위 */
|
|
47
|
+
step?: number;
|
|
48
|
+
/** 틱 마크 표시 */
|
|
49
|
+
showTicks?: boolean;
|
|
50
|
+
/** 스케일 라벨 표시 */
|
|
51
|
+
showLabels?: boolean;
|
|
52
|
+
/** 값 배지 표시 */
|
|
53
|
+
showValue?: boolean;
|
|
54
|
+
/** 비활성화 */
|
|
55
|
+
disabled?: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* **RangeSlider**
|
|
59
|
+
*
|
|
60
|
+
* 듀얼 핸들 범위 슬라이더.
|
|
61
|
+
*
|
|
62
|
+
* ```tsx
|
|
63
|
+
* <RangeSlider value={[25, 75]} onChange={setRange} showTicks showLabels showValue />
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function RangeSlider({ value, onChange, min, max, step, showTicks, showLabels, showValue, disabled, className, ...rest }: RangeSliderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
2
|
+
size: {
|
|
3
|
+
sm: {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
borderWidth: number;
|
|
7
|
+
};
|
|
8
|
+
md: {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
borderWidth: number;
|
|
12
|
+
};
|
|
13
|
+
lg: {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
borderWidth: number;
|
|
17
|
+
};
|
|
18
|
+
xl: {
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
borderWidth: number;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
color: {
|
|
25
|
+
primary: {
|
|
26
|
+
borderColor: string;
|
|
27
|
+
borderTopColor: "transparent";
|
|
28
|
+
};
|
|
29
|
+
white: {
|
|
30
|
+
borderColor: "rgba(255, 255, 255, 0.9)";
|
|
31
|
+
borderTopColor: "transparent";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
export declare const track: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
36
|
+
size: {
|
|
37
|
+
sm: {
|
|
38
|
+
width: number;
|
|
39
|
+
height: number;
|
|
40
|
+
borderWidth: number;
|
|
41
|
+
};
|
|
42
|
+
md: {
|
|
43
|
+
width: number;
|
|
44
|
+
height: number;
|
|
45
|
+
borderWidth: number;
|
|
46
|
+
};
|
|
47
|
+
lg: {
|
|
48
|
+
width: number;
|
|
49
|
+
height: number;
|
|
50
|
+
borderWidth: number;
|
|
51
|
+
};
|
|
52
|
+
xl: {
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
borderWidth: number;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
color: {
|
|
59
|
+
primary: {
|
|
60
|
+
borderColor: string;
|
|
61
|
+
};
|
|
62
|
+
white: {
|
|
63
|
+
borderColor: "rgba(255, 255, 255, 0.9)";
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
}>;
|
|
67
|
+
export declare const wrapper: string;
|
|
68
|
+
export declare const label: string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export type SpinnerSize = "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export type SpinnerColor = "primary" | "white";
|
|
4
|
+
export interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/** 스피너 크기 */
|
|
6
|
+
size?: SpinnerSize;
|
|
7
|
+
/** 스피너 색상 */
|
|
8
|
+
color?: SpinnerColor;
|
|
9
|
+
/** 로딩 텍스트 (스피너 오른쪽) */
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Spinner — 로딩 상태를 나타내는 스피너 컴포넌트
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <Spinner />
|
|
18
|
+
* <Spinner size="lg" label="로딩 중..." />
|
|
19
|
+
* <Spinner color="white" />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function Spinner({ size, color, label: labelText, className, ...rest }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const overlay: string;
|
|
2
|
+
export declare const card: string;
|
|
3
|
+
export declare const iconWrapper: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
4
|
+
intent: {
|
|
5
|
+
warning: {
|
|
6
|
+
backgroundColor: "rgba(240, 175, 35, 0.12)";
|
|
7
|
+
};
|
|
8
|
+
success: {
|
|
9
|
+
backgroundColor: "rgba(39, 194, 129, 0.12)";
|
|
10
|
+
};
|
|
11
|
+
danger: {
|
|
12
|
+
backgroundColor: "rgba(234, 59, 59, 0.12)";
|
|
13
|
+
};
|
|
14
|
+
info: {
|
|
15
|
+
backgroundColor: "rgba(0, 207, 232, 0.12)";
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
export declare const intentIconColor: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
20
|
+
intent: {
|
|
21
|
+
warning: {
|
|
22
|
+
color: "#f0af23";
|
|
23
|
+
};
|
|
24
|
+
success: {
|
|
25
|
+
color: "#28c76f";
|
|
26
|
+
};
|
|
27
|
+
danger: {
|
|
28
|
+
color: "#ea5455";
|
|
29
|
+
};
|
|
30
|
+
info: {
|
|
31
|
+
color: "#00cfe8";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
export declare const title: string;
|
|
36
|
+
export declare const body: string;
|
|
37
|
+
export declare const actions: string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type SweetAlertIntent = "warning" | "success" | "danger" | "info";
|
|
3
|
+
export interface SweetAlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
4
|
+
/** 표시 여부 */
|
|
5
|
+
open: boolean;
|
|
6
|
+
/** 닫기 핸들러 */
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
/** 아이콘 의도 (배경색 결정) */
|
|
9
|
+
intent?: SweetAlertIntent;
|
|
10
|
+
/** 커스텀 아이콘 (intent 기본 아이콘 대체) */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
/** 제목 */
|
|
13
|
+
title: ReactNode;
|
|
14
|
+
/** 본문 콘텐츠 */
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
/** 확인 버튼 라벨 */
|
|
17
|
+
confirmLabel?: string;
|
|
18
|
+
/** 확인 핸들러 */
|
|
19
|
+
onConfirm?: () => void;
|
|
20
|
+
/** 취소 버튼 라벨 */
|
|
21
|
+
cancelLabel?: string;
|
|
22
|
+
/** 취소 핸들러 */
|
|
23
|
+
onCancel?: () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function SweetAlert({ open, onClose, intent, icon, title, children, confirmLabel, onConfirm, cancelLabel, onCancel, className, ...rest }: SweetAlertProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const wrapper: string;
|
|
2
|
+
export declare const wrapperDisabled: string;
|
|
3
|
+
export declare const label: string;
|
|
4
|
+
export declare const track: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
5
|
+
size: {
|
|
6
|
+
small: {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
medium: {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
checked: {
|
|
16
|
+
true: {
|
|
17
|
+
backgroundColor: string;
|
|
18
|
+
};
|
|
19
|
+
false: {
|
|
20
|
+
backgroundColor: "#d1d1d1";
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
disabled: {
|
|
24
|
+
true: {};
|
|
25
|
+
false: {};
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
export declare const knob: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
29
|
+
size: {
|
|
30
|
+
small: {
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
transform: "translateY(-50%)";
|
|
34
|
+
};
|
|
35
|
+
medium: {
|
|
36
|
+
width: number;
|
|
37
|
+
height: number;
|
|
38
|
+
transform: "translateY(-50%)";
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
checked: {
|
|
42
|
+
true: {};
|
|
43
|
+
false: {};
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
export declare const hiddenInput: string;
|