@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,26 @@
|
|
|
1
|
+
import { InputHTMLAttributes } from 'react';
|
|
2
|
+
export type SwitchSize = "small" | "medium";
|
|
3
|
+
export interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type"> {
|
|
4
|
+
/** 사이즈 */
|
|
5
|
+
size?: SwitchSize;
|
|
6
|
+
/** 체크 상태 */
|
|
7
|
+
checked?: boolean;
|
|
8
|
+
/** 라벨 텍스트 */
|
|
9
|
+
label?: string;
|
|
10
|
+
/** 변경 핸들러 */
|
|
11
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* **Switch**
|
|
15
|
+
*
|
|
16
|
+
* 토글 스위치.
|
|
17
|
+
*
|
|
18
|
+
* - `size`: small(32x18) / medium(42x24)
|
|
19
|
+
* - `label`: 왼쪽 라벨 텍스트
|
|
20
|
+
* - `checked` / `onCheckedChange`: 제어 모드
|
|
21
|
+
*
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <Switch label="Label" checked={on} onCheckedChange={setOn} />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function Switch({ size, checked, label, disabled, onCheckedChange, onChange, className, ...rest }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export declare const root: string;
|
|
2
|
+
export declare const tabRow: string;
|
|
3
|
+
export declare const tabList: string;
|
|
4
|
+
export declare const tabItem: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
5
|
+
active: {
|
|
6
|
+
true: {
|
|
7
|
+
backgroundColor: string;
|
|
8
|
+
color: string;
|
|
9
|
+
};
|
|
10
|
+
false: {
|
|
11
|
+
backgroundColor: "#3434341F";
|
|
12
|
+
color: string;
|
|
13
|
+
selectors: {
|
|
14
|
+
"&:hover": {
|
|
15
|
+
backgroundColor: "#34343433";
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
size: {
|
|
21
|
+
large: {
|
|
22
|
+
height: number;
|
|
23
|
+
fontSize: `var(--${string})`;
|
|
24
|
+
};
|
|
25
|
+
medium: {
|
|
26
|
+
height: number;
|
|
27
|
+
fontSize: `var(--${string})`;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
31
|
+
export declare const badge: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
32
|
+
active: {
|
|
33
|
+
true: {
|
|
34
|
+
backgroundColor: string;
|
|
35
|
+
color: string;
|
|
36
|
+
};
|
|
37
|
+
false: {
|
|
38
|
+
backgroundColor: "rgba(0, 0, 0, 0.12)";
|
|
39
|
+
color: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
size: {
|
|
43
|
+
large: {
|
|
44
|
+
height: number;
|
|
45
|
+
fontSize: `var(--${string})`;
|
|
46
|
+
};
|
|
47
|
+
medium: {
|
|
48
|
+
height: number;
|
|
49
|
+
fontSize: `var(--${string})`;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
}>;
|
|
53
|
+
export declare const actionButton: string;
|
|
54
|
+
export declare const actionIcon: string;
|
|
55
|
+
export declare const indicator: string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ReactNode, MouseEventHandler } from 'react';
|
|
2
|
+
export type TabsSize = "large" | "medium";
|
|
3
|
+
export interface TabItem {
|
|
4
|
+
/** 고유 식별 값 */
|
|
5
|
+
value: string;
|
|
6
|
+
/** 탭 텍스트 */
|
|
7
|
+
label: string;
|
|
8
|
+
/** 뱃지 카운트 (Badge 모드) */
|
|
9
|
+
badge?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface TabsProps {
|
|
12
|
+
/** 탭 목록 */
|
|
13
|
+
items: TabItem[];
|
|
14
|
+
/** 현재 활성화된 값 */
|
|
15
|
+
value?: string;
|
|
16
|
+
/** 값 변경 핸들러 */
|
|
17
|
+
onChange?: (value: string) => void;
|
|
18
|
+
/** 크기 */
|
|
19
|
+
size?: TabsSize;
|
|
20
|
+
/** 액션 버튼 (예: "Add Tab") */
|
|
21
|
+
action?: {
|
|
22
|
+
label: string;
|
|
23
|
+
icon?: ReactNode;
|
|
24
|
+
onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
25
|
+
};
|
|
26
|
+
/** 추가 className */
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function Tabs({ items, value, onChange, size, action: actionProp, className, }: TabsProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const root: string;
|
|
2
|
+
export declare const trigger: string;
|
|
3
|
+
export declare const triggerInput: string;
|
|
4
|
+
export declare const triggerIcon: string;
|
|
5
|
+
export declare const tags: string;
|
|
6
|
+
export declare const tag: string;
|
|
7
|
+
export declare const tagRemove: string;
|
|
8
|
+
export declare const panel: string;
|
|
9
|
+
export declare const menu: string;
|
|
10
|
+
export declare const option: string;
|
|
11
|
+
export declare const optionCheck: string;
|
|
12
|
+
export declare const optionCheckSelected: string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export interface TagSelectOption {
|
|
3
|
+
/** 고유 값 */
|
|
4
|
+
value: string;
|
|
5
|
+
/** 표시 라벨 */
|
|
6
|
+
label: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TagSelectProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
9
|
+
/** 옵션 목록 */
|
|
10
|
+
options: TagSelectOption[];
|
|
11
|
+
/** 선택된 값 목록 */
|
|
12
|
+
value: string[];
|
|
13
|
+
/** 선택 변경 콜백 */
|
|
14
|
+
onChange: (value: string[]) => void;
|
|
15
|
+
/** placeholder */
|
|
16
|
+
placeholder?: string;
|
|
17
|
+
/** 비활성화 */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* **TagSelect**
|
|
22
|
+
*
|
|
23
|
+
* 드롭다운 셀렉트 + 선택된 항목을 아래 태그 뱃지로 표시.
|
|
24
|
+
*
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <TagSelect
|
|
27
|
+
* options={[
|
|
28
|
+
* { value: "a", label: "Option A" },
|
|
29
|
+
* { value: "b", label: "Option B" },
|
|
30
|
+
* ]}
|
|
31
|
+
* value={["a"]}
|
|
32
|
+
* onChange={(v) => setValue(v)}
|
|
33
|
+
* placeholder="Placeholder"
|
|
34
|
+
* />
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function TagSelect({ options, value, onChange, placeholder, disabled, className, ...rest }: TagSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
2
|
+
exiting: {
|
|
3
|
+
false: {
|
|
4
|
+
animation: `${string} 300ms ease`;
|
|
5
|
+
};
|
|
6
|
+
true: {
|
|
7
|
+
animation: `${string} 400ms ease forwards`;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
}>;
|
|
11
|
+
export declare const top: string;
|
|
12
|
+
export declare const icon: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
13
|
+
intent: {
|
|
14
|
+
info: {
|
|
15
|
+
backgroundColor: string;
|
|
16
|
+
};
|
|
17
|
+
success: {
|
|
18
|
+
backgroundColor: "#28c76f";
|
|
19
|
+
};
|
|
20
|
+
warning: {
|
|
21
|
+
backgroundColor: "#f0af23";
|
|
22
|
+
};
|
|
23
|
+
error: {
|
|
24
|
+
backgroundColor: "#ea5455";
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
export declare const titleArea: string;
|
|
29
|
+
export declare const heading: string;
|
|
30
|
+
export declare const time: string;
|
|
31
|
+
export declare const closeBtn: string;
|
|
32
|
+
export declare const body: string;
|
|
33
|
+
export declare const progressTrack: string;
|
|
34
|
+
export declare const progressFill: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
35
|
+
intent: {
|
|
36
|
+
info: {
|
|
37
|
+
backgroundColor: string;
|
|
38
|
+
};
|
|
39
|
+
success: {
|
|
40
|
+
backgroundColor: "#28c76f";
|
|
41
|
+
};
|
|
42
|
+
warning: {
|
|
43
|
+
backgroundColor: "#f0af23";
|
|
44
|
+
};
|
|
45
|
+
error: {
|
|
46
|
+
backgroundColor: "#ea5455";
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
export declare const countdownTrack: string;
|
|
51
|
+
export declare const countdownFill: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
52
|
+
intent: {
|
|
53
|
+
info: {
|
|
54
|
+
backgroundColor: string;
|
|
55
|
+
};
|
|
56
|
+
success: {
|
|
57
|
+
backgroundColor: "#28c76f";
|
|
58
|
+
};
|
|
59
|
+
warning: {
|
|
60
|
+
backgroundColor: "#f0af23";
|
|
61
|
+
};
|
|
62
|
+
error: {
|
|
63
|
+
backgroundColor: "#ea5455";
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
}>;
|
|
67
|
+
export declare const container: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
68
|
+
position: {
|
|
69
|
+
"top-right": {
|
|
70
|
+
top: `var(--${string})`;
|
|
71
|
+
right: `var(--${string})`;
|
|
72
|
+
};
|
|
73
|
+
"top-left": {
|
|
74
|
+
top: `var(--${string})`;
|
|
75
|
+
left: `var(--${string})`;
|
|
76
|
+
};
|
|
77
|
+
"top-center": {
|
|
78
|
+
top: `var(--${string})`;
|
|
79
|
+
left: "50%";
|
|
80
|
+
transform: "translateX(-50%)";
|
|
81
|
+
};
|
|
82
|
+
"bottom-right": {
|
|
83
|
+
bottom: `var(--${string})`;
|
|
84
|
+
right: `var(--${string})`;
|
|
85
|
+
};
|
|
86
|
+
"bottom-left": {
|
|
87
|
+
bottom: `var(--${string})`;
|
|
88
|
+
left: `var(--${string})`;
|
|
89
|
+
};
|
|
90
|
+
"bottom-center": {
|
|
91
|
+
bottom: `var(--${string})`;
|
|
92
|
+
left: "50%";
|
|
93
|
+
transform: "translateX(-50%)";
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
}>;
|
|
97
|
+
export declare const toastItem: string;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type ToastIntent = "info" | "success" | "warning" | "error";
|
|
3
|
+
export type ToastPosition = "top-right" | "top-left" | "top-center" | "bottom-right" | "bottom-left" | "bottom-center";
|
|
4
|
+
export interface ToastProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/** 아이콘 색상 의도 */
|
|
6
|
+
intent?: ToastIntent;
|
|
7
|
+
/** 커스텀 아이콘 (기본 제공) */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
/** 제목 */
|
|
10
|
+
title: string;
|
|
11
|
+
/** 시간 텍스트 (예: "11 mins ago") */
|
|
12
|
+
time?: string;
|
|
13
|
+
/** 본문 설명 (2-row) */
|
|
14
|
+
description?: string;
|
|
15
|
+
/** 프로그레스 바 표시 (수동 제어용) */
|
|
16
|
+
showProgress?: boolean;
|
|
17
|
+
/** 프로그레스 퍼센트 (0-100, 수동 제어용) */
|
|
18
|
+
progress?: number;
|
|
19
|
+
/** 자동 닫기 시간 (ms, 0이면 비활성) */
|
|
20
|
+
duration?: number;
|
|
21
|
+
/** 호버 시 자동 닫기 일시정지 */
|
|
22
|
+
pauseOnHover?: boolean;
|
|
23
|
+
/** 닫기 콜백 */
|
|
24
|
+
onClose?: () => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* **Toast**
|
|
28
|
+
*
|
|
29
|
+
* 알림 토스트 메시지.
|
|
30
|
+
*
|
|
31
|
+
* - `intent`: info / success / warning / error
|
|
32
|
+
* - `title` + `description`: 1줄 또는 2줄
|
|
33
|
+
* - `showProgress` + `progress`: 하단 프로그레스 바 (수동 제어)
|
|
34
|
+
* - `duration`: 자동 닫기 (기본 5000ms, 0이면 비활성)
|
|
35
|
+
* - `pauseOnHover`: 호버 시 자동 닫기 일시정지 (기본 true)
|
|
36
|
+
* - 자동 닫기 시 하단에 카운트다운 게이지 바 표시
|
|
37
|
+
* - 닫힐 때 슬라이드 아웃 애니메이션
|
|
38
|
+
*/
|
|
39
|
+
export declare function Toast({ intent, icon, title, time, description, showProgress, progress, duration, pauseOnHover, onClose, className, ...rest }: ToastProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export interface ToastContainerProps {
|
|
41
|
+
/** 화면 위치 */
|
|
42
|
+
position?: ToastPosition;
|
|
43
|
+
/** 토스트 목록 */
|
|
44
|
+
children: ReactNode;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* **ToastContainer**
|
|
48
|
+
*
|
|
49
|
+
* 토스트를 화면 고정 위치에 렌더링하는 컨테이너.
|
|
50
|
+
*
|
|
51
|
+
* ```tsx
|
|
52
|
+
* <ToastContainer position="top-right">
|
|
53
|
+
* <Toast title="알림" intent="success" onClose={...} />
|
|
54
|
+
* </ToastContainer>
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function ToastContainer({ position, children }: ToastContainerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const wrapper: string;
|
|
2
|
+
export declare const tooltip: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
placement: {
|
|
4
|
+
top: {
|
|
5
|
+
bottom: "100%";
|
|
6
|
+
left: "50%";
|
|
7
|
+
transform: "translateX(-50%)";
|
|
8
|
+
flexDirection: "column";
|
|
9
|
+
marginBottom: `var(--${string})`;
|
|
10
|
+
};
|
|
11
|
+
bottom: {
|
|
12
|
+
top: "100%";
|
|
13
|
+
left: "50%";
|
|
14
|
+
transform: "translateX(-50%)";
|
|
15
|
+
flexDirection: "column-reverse";
|
|
16
|
+
marginTop: `var(--${string})`;
|
|
17
|
+
};
|
|
18
|
+
left: {
|
|
19
|
+
right: "100%";
|
|
20
|
+
top: "50%";
|
|
21
|
+
transform: "translateY(-50%)";
|
|
22
|
+
flexDirection: "row";
|
|
23
|
+
marginRight: `var(--${string})`;
|
|
24
|
+
};
|
|
25
|
+
right: {
|
|
26
|
+
left: "100%";
|
|
27
|
+
top: "50%";
|
|
28
|
+
transform: "translateY(-50%)";
|
|
29
|
+
flexDirection: "row-reverse";
|
|
30
|
+
marginLeft: `var(--${string})`;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
export declare const body: string;
|
|
35
|
+
export declare const content: string;
|
|
36
|
+
export declare const title: string;
|
|
37
|
+
export declare const arrow: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
38
|
+
placement: {
|
|
39
|
+
top: {
|
|
40
|
+
borderLeft: "5.5px solid transparent";
|
|
41
|
+
borderRight: "5.5px solid transparent";
|
|
42
|
+
borderTop: "5px solid #343434";
|
|
43
|
+
};
|
|
44
|
+
bottom: {
|
|
45
|
+
borderLeft: "5.5px solid transparent";
|
|
46
|
+
borderRight: "5.5px solid transparent";
|
|
47
|
+
borderBottom: "5px solid #343434";
|
|
48
|
+
};
|
|
49
|
+
left: {
|
|
50
|
+
borderTop: "4.5px solid transparent";
|
|
51
|
+
borderBottom: "4.5px solid transparent";
|
|
52
|
+
borderLeft: "5px solid #343434";
|
|
53
|
+
};
|
|
54
|
+
right: {
|
|
55
|
+
borderTop: "4.5px solid transparent";
|
|
56
|
+
borderBottom: "4.5px solid transparent";
|
|
57
|
+
borderRight: "5px solid #343434";
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
}>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type TooltipPlacement = "top" | "bottom" | "left" | "right";
|
|
3
|
+
export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "content"> {
|
|
4
|
+
/** 툴팁에 표시할 텍스트 */
|
|
5
|
+
content: ReactNode;
|
|
6
|
+
/** 2-row 변형: 제목 (이름/직책 등) */
|
|
7
|
+
title?: ReactNode;
|
|
8
|
+
/** 화살표 방향 */
|
|
9
|
+
placement?: TooltipPlacement;
|
|
10
|
+
/** 지연 시간 (ms) */
|
|
11
|
+
delay?: number;
|
|
12
|
+
/** 비활성화 */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** 트리거 요소 */
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* **Tooltip**
|
|
19
|
+
*
|
|
20
|
+
* 마우스 호버 시 부가 정보를 표시하는 다크 툴팁.
|
|
21
|
+
*
|
|
22
|
+
* - `placement`: top / bottom / left / right
|
|
23
|
+
* - `title` + `content`: 2줄 변형 (이름 + 연락처 등)
|
|
24
|
+
* - `content`만 사용: 1줄 변형
|
|
25
|
+
*/
|
|
26
|
+
export declare function Tooltip({ content, title, placement, delay, disabled, children, className, ...rest }: TooltipProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export declare const tree: string;
|
|
2
|
+
export declare const row: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
size: {
|
|
4
|
+
medium: {
|
|
5
|
+
height: number;
|
|
6
|
+
fontSize: `var(--${string})`;
|
|
7
|
+
fontWeight: `var(--${string})`;
|
|
8
|
+
};
|
|
9
|
+
small: {
|
|
10
|
+
height: number;
|
|
11
|
+
fontSize: "11px";
|
|
12
|
+
fontWeight: `var(--${string})`;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
selected: {
|
|
16
|
+
true: {
|
|
17
|
+
backgroundColor: "rgba(33, 81, 236, 0.12)";
|
|
18
|
+
};
|
|
19
|
+
false: {};
|
|
20
|
+
};
|
|
21
|
+
}>;
|
|
22
|
+
export declare const trailZone: string;
|
|
23
|
+
export declare const trailSegment: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
24
|
+
hasLine: {
|
|
25
|
+
true: {
|
|
26
|
+
"::after": {
|
|
27
|
+
content: "\"\"";
|
|
28
|
+
position: "absolute";
|
|
29
|
+
top: number;
|
|
30
|
+
bottom: number;
|
|
31
|
+
left: "50%";
|
|
32
|
+
width: number;
|
|
33
|
+
backgroundColor: "#d1d1d1";
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
false: {};
|
|
37
|
+
};
|
|
38
|
+
isLast: {
|
|
39
|
+
true: {
|
|
40
|
+
"::after": {
|
|
41
|
+
content: "\"\"";
|
|
42
|
+
position: "absolute";
|
|
43
|
+
top: number;
|
|
44
|
+
bottom: "50%";
|
|
45
|
+
left: "50%";
|
|
46
|
+
width: number;
|
|
47
|
+
backgroundColor: "#d1d1d1";
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
false: {};
|
|
51
|
+
};
|
|
52
|
+
}>;
|
|
53
|
+
export declare const caret: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
54
|
+
expanded: {
|
|
55
|
+
true: {
|
|
56
|
+
transform: "rotate(0deg)";
|
|
57
|
+
};
|
|
58
|
+
false: {
|
|
59
|
+
transform: "rotate(-90deg)";
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
visible: {
|
|
63
|
+
true: {};
|
|
64
|
+
false: {
|
|
65
|
+
visibility: "hidden";
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
}>;
|
|
69
|
+
export declare const levelBadge: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
70
|
+
color: {
|
|
71
|
+
primary: {
|
|
72
|
+
backgroundColor: "rgba(33, 81, 236, 0.12)";
|
|
73
|
+
color: string;
|
|
74
|
+
};
|
|
75
|
+
secondary: {
|
|
76
|
+
backgroundColor: "rgba(130, 134, 139, 0.12)";
|
|
77
|
+
color: "#626f86";
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
}>;
|
|
81
|
+
export declare const leading: string;
|
|
82
|
+
export declare const textZone: string;
|
|
83
|
+
export declare const textSegment: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
84
|
+
type: {
|
|
85
|
+
code: {
|
|
86
|
+
color: string;
|
|
87
|
+
fontWeight: `var(--${string})`;
|
|
88
|
+
};
|
|
89
|
+
title: {
|
|
90
|
+
color: string;
|
|
91
|
+
fontWeight: `var(--${string})`;
|
|
92
|
+
flex: number;
|
|
93
|
+
minWidth: number;
|
|
94
|
+
};
|
|
95
|
+
date: {
|
|
96
|
+
color: "#9ea7b8";
|
|
97
|
+
fontWeight: `var(--${string})`;
|
|
98
|
+
flexShrink: number;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
}>;
|
|
102
|
+
export declare const separator: string;
|
|
103
|
+
export declare const children: string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export interface TreeNode {
|
|
3
|
+
/** 고유 ID */
|
|
4
|
+
id: string;
|
|
5
|
+
/** 레벨 라벨 (예: "상위 마스터", "마스터", "하위") */
|
|
6
|
+
label?: string;
|
|
7
|
+
/** 라벨 색상 */
|
|
8
|
+
labelColor?: "primary" | "secondary";
|
|
9
|
+
/** 텍스트 컬럼들 (슬래시로 구분되어 표시) */
|
|
10
|
+
columns: TreeNodeColumn[];
|
|
11
|
+
/** 자식 노드 */
|
|
12
|
+
children?: TreeNode[];
|
|
13
|
+
}
|
|
14
|
+
export interface TreeNodeColumn {
|
|
15
|
+
/** 컬럼 텍스트 */
|
|
16
|
+
text: string;
|
|
17
|
+
/** 컬럼 타입 */
|
|
18
|
+
type?: "code" | "title" | "date";
|
|
19
|
+
}
|
|
20
|
+
export type TreeViewSize = "medium" | "small";
|
|
21
|
+
export interface TreeViewProps extends HTMLAttributes<HTMLDivElement> {
|
|
22
|
+
/** 트리 데이터 */
|
|
23
|
+
nodes: TreeNode[];
|
|
24
|
+
/** 기본 사이즈 (부모 노드: medium, 리프 노드: small 자동 적용) */
|
|
25
|
+
size?: TreeViewSize;
|
|
26
|
+
/** 선택된 노드 ID */
|
|
27
|
+
selectedId?: string;
|
|
28
|
+
/** 노드 선택 콜백 */
|
|
29
|
+
onNodeSelect?: (node: TreeNode) => void;
|
|
30
|
+
/** 초기 펼침 노드 ID 목록 */
|
|
31
|
+
defaultExpandedIds?: string[];
|
|
32
|
+
/** 구분자 문자 */
|
|
33
|
+
separator?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* **TreeView**
|
|
37
|
+
*
|
|
38
|
+
* 계층 구조 데이터를 트리 형태로 표시하는 컴포넌트.
|
|
39
|
+
*
|
|
40
|
+
* - 기존 Collapse 패턴 참고한 펼침/접힘
|
|
41
|
+
* - 레벨 뱃지로 노드 유형 표시
|
|
42
|
+
* - 슬래시 구분 텍스트 컬럼
|
|
43
|
+
* - 세로 연결선으로 계층 시각화
|
|
44
|
+
*
|
|
45
|
+
* ```tsx
|
|
46
|
+
* const nodes: TreeNode[] = [
|
|
47
|
+
* {
|
|
48
|
+
* id: "1",
|
|
49
|
+
* label: "상위 마스터",
|
|
50
|
+
* labelColor: "primary",
|
|
51
|
+
* columns: [
|
|
52
|
+
* { text: "C20190301", type: "code" },
|
|
53
|
+
* { text: "법무관리시스템 구축 계약", type: "title" },
|
|
54
|
+
* { text: "2019-01-03", type: "date" },
|
|
55
|
+
* ],
|
|
56
|
+
* children: [
|
|
57
|
+
* {
|
|
58
|
+
* id: "1-1",
|
|
59
|
+
* label: "마스터",
|
|
60
|
+
* columns: [...],
|
|
61
|
+
* children: [
|
|
62
|
+
* { id: "1-1-1", label: "하위", columns: [...] },
|
|
63
|
+
* ],
|
|
64
|
+
* },
|
|
65
|
+
* ],
|
|
66
|
+
* },
|
|
67
|
+
* ];
|
|
68
|
+
*
|
|
69
|
+
* <TreeView nodes={nodes} onNodeSelect={(node) => console.log(node.id)} />
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function TreeView({ nodes, size, selectedId, onNodeSelect, defaultExpandedIds, separator, className, ...rest }: TreeViewProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export declare const widget: string;
|
|
2
|
+
export declare const widgetHeader: string;
|
|
3
|
+
export declare const headerLeft: string;
|
|
4
|
+
export declare const headerTitle: string;
|
|
5
|
+
export declare const headerBadge: string;
|
|
6
|
+
export declare const collapseButton: string;
|
|
7
|
+
export declare const collapseButtonOpen: string;
|
|
8
|
+
export declare const divider: string;
|
|
9
|
+
export declare const widgetBody: string;
|
|
10
|
+
export declare const widgetBodyFlush: string;
|
|
11
|
+
export declare const statCell: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
12
|
+
active: {
|
|
13
|
+
true: {
|
|
14
|
+
backgroundColor: "rgba(33, 81, 236, 0.03)";
|
|
15
|
+
border: "1px solid rgba(33, 81, 236, 0.12)";
|
|
16
|
+
};
|
|
17
|
+
false: {};
|
|
18
|
+
};
|
|
19
|
+
}>;
|
|
20
|
+
export declare const statLabel: string;
|
|
21
|
+
export declare const statValue: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
22
|
+
color: {
|
|
23
|
+
primary: {
|
|
24
|
+
color: string;
|
|
25
|
+
};
|
|
26
|
+
heading: {
|
|
27
|
+
color: string;
|
|
28
|
+
};
|
|
29
|
+
success: {
|
|
30
|
+
color: "#1bc47d";
|
|
31
|
+
};
|
|
32
|
+
danger: {
|
|
33
|
+
color: "#ea5455";
|
|
34
|
+
};
|
|
35
|
+
warning: {
|
|
36
|
+
color: "#f0af23";
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
40
|
+
export declare const statGrid: string;
|
|
41
|
+
export declare const quickMenu: string;
|
|
42
|
+
export declare const quickMenuIcon: string;
|
|
43
|
+
export declare const quickMenuLabel: string;
|
|
44
|
+
export declare const scheduleItem: string;
|
|
45
|
+
export declare const scheduleTop: string;
|
|
46
|
+
export declare const scheduleDate: string;
|
|
47
|
+
export declare const scheduleTitle: string;
|
|
48
|
+
export declare const scheduleBody: string;
|
|
49
|
+
export declare const tableHeader: string;
|
|
50
|
+
export declare const tableHeaderCell: string;
|
|
51
|
+
export declare const tableRow: string;
|
|
52
|
+
export declare const tableCell: string;
|