@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,52 @@
|
|
|
1
|
+
export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
2
|
+
variant: {
|
|
3
|
+
fill: {
|
|
4
|
+
borderRadius: `var(--${string})`;
|
|
5
|
+
overflow: "hidden";
|
|
6
|
+
};
|
|
7
|
+
outline: {};
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
10
|
+
export declare const item: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
11
|
+
variant: {
|
|
12
|
+
fill: {
|
|
13
|
+
backgroundColor: string;
|
|
14
|
+
color: string;
|
|
15
|
+
borderRight: "1px solid rgba(0, 0, 0, 0.12)";
|
|
16
|
+
selectors: {
|
|
17
|
+
"&:last-child": {
|
|
18
|
+
borderRight: "none";
|
|
19
|
+
};
|
|
20
|
+
"&:hover:not([data-active='true'])": {
|
|
21
|
+
backgroundColor: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
outline: {
|
|
26
|
+
backgroundColor: "transparent";
|
|
27
|
+
color: string;
|
|
28
|
+
border: `1px solid ${string}`;
|
|
29
|
+
marginLeft: number;
|
|
30
|
+
borderRadius: number;
|
|
31
|
+
selectors: {
|
|
32
|
+
"&:first-child": {
|
|
33
|
+
marginLeft: number;
|
|
34
|
+
borderTopLeftRadius: `var(--${string})`;
|
|
35
|
+
borderBottomLeftRadius: `var(--${string})`;
|
|
36
|
+
};
|
|
37
|
+
"&:last-child": {
|
|
38
|
+
borderTopRightRadius: `var(--${string})`;
|
|
39
|
+
borderBottomRightRadius: `var(--${string})`;
|
|
40
|
+
};
|
|
41
|
+
"&:hover:not([data-active='true'])": {
|
|
42
|
+
backgroundColor: "rgba(33, 81, 236, 0.12)";
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
active: {
|
|
48
|
+
true: {};
|
|
49
|
+
false: {};
|
|
50
|
+
};
|
|
51
|
+
}>;
|
|
52
|
+
export declare const iconSlot: string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type IconButtonGroupVariant = "fill" | "outline";
|
|
3
|
+
export interface IconButtonGroupItem {
|
|
4
|
+
/** 고유 식별 값 */
|
|
5
|
+
value: string;
|
|
6
|
+
/** 아이콘 */
|
|
7
|
+
icon: ReactNode;
|
|
8
|
+
/** 접근성 라벨 */
|
|
9
|
+
"aria-label": string;
|
|
10
|
+
}
|
|
11
|
+
export interface IconButtonGroupProps {
|
|
12
|
+
/** 아이템 목록 */
|
|
13
|
+
items: IconButtonGroupItem[];
|
|
14
|
+
/** 현재 활성화된 값 */
|
|
15
|
+
value?: string;
|
|
16
|
+
/** 값 변경 핸들러 */
|
|
17
|
+
onChange?: (value: string) => void;
|
|
18
|
+
/** 스타일 변형 */
|
|
19
|
+
variant?: IconButtonGroupVariant;
|
|
20
|
+
/** 추가 className */
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function IconButtonGroup({ items, value, onChange, variant, className, }: IconButtonGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const wrapper: string;
|
|
2
|
+
export declare const card: string;
|
|
3
|
+
export declare const header: string;
|
|
4
|
+
export declare const headerText: string;
|
|
5
|
+
export declare const body: string;
|
|
6
|
+
export declare const step: string;
|
|
7
|
+
export declare const stepIcon: string;
|
|
8
|
+
export declare const stepLabel: string;
|
|
9
|
+
export declare const stepArrow: string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export interface InfoPopoverStep {
|
|
3
|
+
/** 스텝 아이콘 (ReactNode) */
|
|
4
|
+
icon?: ReactNode;
|
|
5
|
+
/** 스텝 라벨 */
|
|
6
|
+
label: string;
|
|
7
|
+
}
|
|
8
|
+
export interface InfoPopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
9
|
+
/** 요약 헤더 텍스트 (예: "법무검토 중 외 3개") */
|
|
10
|
+
title: string;
|
|
11
|
+
/** 프로세스 스텝 목록 */
|
|
12
|
+
steps: InfoPopoverStep[];
|
|
13
|
+
/** 열림 상태 (제어 모드) */
|
|
14
|
+
open?: boolean;
|
|
15
|
+
/** 열림/닫힘 핸들러 */
|
|
16
|
+
onOpenChange?: (open: boolean) => void;
|
|
17
|
+
/** 트리거 요소 */
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* **InfoPopover**
|
|
22
|
+
*
|
|
23
|
+
* 프로세스 진행 상태를 스텝으로 보여주는 정보 팝오버.
|
|
24
|
+
* 다크 헤더바에 요약 텍스트, 본문에 아이콘+라벨 스텝이 화살표로 연결됩니다.
|
|
25
|
+
*
|
|
26
|
+
* ```tsx
|
|
27
|
+
* <InfoPopover
|
|
28
|
+
* title="법무검토 중 외 3개"
|
|
29
|
+
* steps={[
|
|
30
|
+
* { label: "법무 검토 중", icon: <SomeIcon /> },
|
|
31
|
+
* { label: "요청자 검토 중", icon: <SomeIcon /> },
|
|
32
|
+
* ]}
|
|
33
|
+
* >
|
|
34
|
+
* <span>법무검토 중 외 3개</span>
|
|
35
|
+
* </InfoPopover>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function InfoPopover({ title, steps, open: controlledOpen, onOpenChange, children, className, ...rest }: InfoPopoverProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export declare const field: string;
|
|
2
|
+
export declare const labelRow: string;
|
|
3
|
+
export declare const labelGroup: string;
|
|
4
|
+
export declare const label: string;
|
|
5
|
+
export declare const requiredDot: string;
|
|
6
|
+
export declare const caption: string;
|
|
7
|
+
export declare const inputWrapper: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
8
|
+
size: {
|
|
9
|
+
small: {
|
|
10
|
+
height: number;
|
|
11
|
+
padding: `0 var(--${string})`;
|
|
12
|
+
};
|
|
13
|
+
medium: {
|
|
14
|
+
height: number;
|
|
15
|
+
padding: "0 14px";
|
|
16
|
+
};
|
|
17
|
+
large: {
|
|
18
|
+
height: number;
|
|
19
|
+
padding: "0 14px";
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
state: {
|
|
23
|
+
default: {
|
|
24
|
+
selectors: {
|
|
25
|
+
"&:focus-within": {
|
|
26
|
+
borderColor: string;
|
|
27
|
+
boxShadow: `var(--${string})`;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
active: {
|
|
32
|
+
borderColor: string;
|
|
33
|
+
boxShadow: `var(--${string})`;
|
|
34
|
+
};
|
|
35
|
+
success: {
|
|
36
|
+
borderColor: "#28c76f";
|
|
37
|
+
};
|
|
38
|
+
warning: {
|
|
39
|
+
borderColor: string;
|
|
40
|
+
};
|
|
41
|
+
disabled: {
|
|
42
|
+
backgroundColor: string;
|
|
43
|
+
cursor: "not-allowed";
|
|
44
|
+
pointerEvents: "none";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
}>;
|
|
48
|
+
export declare const input: string;
|
|
49
|
+
export declare const iconSlot: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
50
|
+
size: {
|
|
51
|
+
small: {
|
|
52
|
+
width: number;
|
|
53
|
+
height: number;
|
|
54
|
+
};
|
|
55
|
+
medium: {
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
};
|
|
59
|
+
large: {
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
}>;
|
|
65
|
+
export declare const suffix: string;
|
|
66
|
+
export declare const suffixDivider: string;
|
|
67
|
+
export declare const helper: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
68
|
+
state: {
|
|
69
|
+
default: {
|
|
70
|
+
color: string;
|
|
71
|
+
};
|
|
72
|
+
active: {
|
|
73
|
+
color: string;
|
|
74
|
+
};
|
|
75
|
+
success: {
|
|
76
|
+
color: "#1bc47d";
|
|
77
|
+
};
|
|
78
|
+
warning: {
|
|
79
|
+
color: "#ea5455";
|
|
80
|
+
};
|
|
81
|
+
disabled: {
|
|
82
|
+
color: string;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
}>;
|
|
86
|
+
export declare const multiWrapper: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
87
|
+
disabled: {
|
|
88
|
+
true: {
|
|
89
|
+
backgroundColor: string;
|
|
90
|
+
cursor: "not-allowed";
|
|
91
|
+
pointerEvents: "none";
|
|
92
|
+
};
|
|
93
|
+
false: {};
|
|
94
|
+
};
|
|
95
|
+
}>;
|
|
96
|
+
export declare const badge: string;
|
|
97
|
+
export declare const badgeRemove: string;
|
|
98
|
+
export declare const multiInput: string;
|
|
99
|
+
export declare const multiIcon: string;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ReactNode, InputHTMLAttributes, HTMLAttributes } from 'react';
|
|
2
|
+
export type InputSize = "small" | "medium" | "large";
|
|
3
|
+
export type InputState = "default" | "active" | "success" | "warning" | "disabled";
|
|
4
|
+
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size"> {
|
|
5
|
+
/** 사이즈 */
|
|
6
|
+
inputSize?: InputSize;
|
|
7
|
+
/** 상태 */
|
|
8
|
+
state?: InputState;
|
|
9
|
+
/** 왼쪽 아이콘 */
|
|
10
|
+
leftIcon?: ReactNode;
|
|
11
|
+
/** 오른쪽 아이콘 */
|
|
12
|
+
rightIcon?: ReactNode;
|
|
13
|
+
/** 오른쪽 접미사 (단위 텍스트, 드롭다운 등) */
|
|
14
|
+
suffix?: ReactNode;
|
|
15
|
+
/** wrapper className */
|
|
16
|
+
wrapperClassName?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* **Input**
|
|
20
|
+
*
|
|
21
|
+
* 텍스트 입력 필드.
|
|
22
|
+
*
|
|
23
|
+
* - `inputSize`: small(30) / medium(38) / large(46)
|
|
24
|
+
* - `state`: default / active / success / warning / disabled
|
|
25
|
+
* - `leftIcon` / `rightIcon`: 아이콘 슬롯
|
|
26
|
+
* - `suffix`: 오른쪽 접미사 (단위, 드롭다운 버튼 등)
|
|
27
|
+
*/
|
|
28
|
+
export declare const Input: import('react').ForwardRefExoticComponent<InputProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
29
|
+
export interface InputGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
30
|
+
/** 라벨 */
|
|
31
|
+
label?: string;
|
|
32
|
+
/** 필수 표시 */
|
|
33
|
+
required?: boolean;
|
|
34
|
+
/** 캡션 (라벨 오른쪽) */
|
|
35
|
+
caption?: string;
|
|
36
|
+
/** 도움말 텍스트 (인풋 아래) */
|
|
37
|
+
helperText?: string;
|
|
38
|
+
/** 상태 (도움말 색상에 반영) */
|
|
39
|
+
state?: InputState;
|
|
40
|
+
/** 내부 콘텐츠 (Input 등) */
|
|
41
|
+
children: ReactNode;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* **InputGroup**
|
|
45
|
+
*
|
|
46
|
+
* 라벨 + 인풋 + 도움말을 묶는 필드 래퍼.
|
|
47
|
+
*
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <InputGroup label="Email" required helperText="유효한 이메일을 입력하세요" state="warning">
|
|
50
|
+
* <Input placeholder="email@example.com" state="warning" />
|
|
51
|
+
* </InputGroup>
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function InputGroup({ label, required, caption, helperText, state, children, className, ...rest }: InputGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
export interface MultiSelectItem {
|
|
56
|
+
/** 고유 키 */
|
|
57
|
+
key: string;
|
|
58
|
+
/** 표시 라벨 */
|
|
59
|
+
label: string;
|
|
60
|
+
}
|
|
61
|
+
export interface MultiSelectProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
62
|
+
/** 선택된 항목 목록 */
|
|
63
|
+
value: MultiSelectItem[];
|
|
64
|
+
/** 항목 제거 콜백 */
|
|
65
|
+
onRemove?: (key: string) => void;
|
|
66
|
+
/** placeholder */
|
|
67
|
+
placeholder?: string;
|
|
68
|
+
/** 비활성화 */
|
|
69
|
+
disabled?: boolean;
|
|
70
|
+
/** 입력 변경 콜백 (검색용) */
|
|
71
|
+
onInputChange?: (value: string) => void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* **MultiSelect**
|
|
75
|
+
*
|
|
76
|
+
* 여러 항목을 뱃지 태그로 표시하는 멀티 셀렉트 입력.
|
|
77
|
+
*
|
|
78
|
+
* ```tsx
|
|
79
|
+
* <MultiSelect
|
|
80
|
+
* value={[{ key: "1", label: "User Name1" }]}
|
|
81
|
+
* onRemove={(key) => removeItem(key)}
|
|
82
|
+
* placeholder="검색..."
|
|
83
|
+
* />
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function MultiSelect({ value, onRemove, placeholder, disabled, onInputChange, className, ...rest }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const root: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
2
|
+
variant: {
|
|
3
|
+
default: {};
|
|
4
|
+
flush: {};
|
|
5
|
+
};
|
|
6
|
+
}>;
|
|
7
|
+
export declare const item: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
8
|
+
active: {
|
|
9
|
+
true: {
|
|
10
|
+
backgroundColor: string;
|
|
11
|
+
color: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
danger: {
|
|
15
|
+
true: {
|
|
16
|
+
color: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
disabled: {
|
|
20
|
+
true: {
|
|
21
|
+
opacity: number;
|
|
22
|
+
pointerEvents: "none";
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
clickable: {
|
|
26
|
+
true: {
|
|
27
|
+
cursor: "pointer";
|
|
28
|
+
selectors: {
|
|
29
|
+
"&:hover": {
|
|
30
|
+
backgroundColor: "#f2f4f6";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
flush: {
|
|
36
|
+
true: {
|
|
37
|
+
minHeight: number;
|
|
38
|
+
fontSize: `var(--${string})`;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
export declare const leading: string;
|
|
43
|
+
export declare const content: string;
|
|
44
|
+
export declare const trailing: string;
|
|
45
|
+
export declare const bottomSheet: string;
|
|
46
|
+
export declare const dragHandle: string;
|
|
47
|
+
export declare const dragHandleBar: string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type ListGroupVariant = "default" | "flush";
|
|
3
|
+
export interface ListGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** default=bordered, flush=border 없음 (BottomSheet 용) */
|
|
5
|
+
variant?: ListGroupVariant;
|
|
6
|
+
/** 간편 API: 문자열 배열로 아이템 생성 */
|
|
7
|
+
items?: string[];
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export interface ListGroupItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
11
|
+
/** 선택/활성 상태 (파란 배경 + 흰 텍스트) */
|
|
12
|
+
active?: boolean;
|
|
13
|
+
/** 위험 항목 (빨간 텍스트) */
|
|
14
|
+
danger?: boolean;
|
|
15
|
+
/** 비활성 */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** 좌측 아이콘/뱃지 영역 */
|
|
18
|
+
leading?: ReactNode;
|
|
19
|
+
/** 우측 시간/뱃지 영역 */
|
|
20
|
+
trailing?: ReactNode;
|
|
21
|
+
/** 클릭 핸들러 */
|
|
22
|
+
onClick?: () => void;
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export interface BottomSheetProps extends HTMLAttributes<HTMLDivElement> {
|
|
26
|
+
children: ReactNode;
|
|
27
|
+
}
|
|
28
|
+
export declare function ListGroupItem({ active, danger, disabled, leading: leadingNode, trailing: trailingNode, onClick, children, className, ...rest }: ListGroupItemProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare function ListGroup({ variant, items, children, className, ...rest }: ListGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function BottomSheet({ children, className, ...rest }: BottomSheetProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mention: string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export interface MentionProps extends HTMLAttributes<HTMLSpanElement> {
|
|
3
|
+
/** 사용자 이름 (@ 자동 추가) */
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* **Mention**
|
|
8
|
+
*
|
|
9
|
+
* 인라인 멘션 태그. `@사용자명`을 파란색 뱃지로 표시.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <p>검토자: <Mention name="나담당" /> 님이 확인 중입니다.</p>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function Mention({ name, className, ...rest }: MentionProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const overlay: string;
|
|
2
|
+
export declare const card: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
size: {
|
|
4
|
+
small: {
|
|
5
|
+
maxWidth: number;
|
|
6
|
+
};
|
|
7
|
+
medium: {
|
|
8
|
+
maxWidth: number;
|
|
9
|
+
};
|
|
10
|
+
large: {
|
|
11
|
+
maxWidth: number;
|
|
12
|
+
};
|
|
13
|
+
xlarge: {
|
|
14
|
+
maxWidth: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
18
|
+
export declare const header: string;
|
|
19
|
+
export declare const headerTitle: string;
|
|
20
|
+
export declare const headerActions: string;
|
|
21
|
+
export declare const closeButton: string;
|
|
22
|
+
export declare const body: string;
|
|
23
|
+
export declare const footer: string;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
|
+
export type ModalSize = "small" | "medium" | "large" | "xlarge";
|
|
3
|
+
export interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
4
|
+
/** 모달 표시 여부 */
|
|
5
|
+
open: boolean;
|
|
6
|
+
/** 닫기 핸들러 (Escape, backdrop 클릭, close 버튼) */
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
/** 모달 너비 프리셋 */
|
|
9
|
+
size?: ModalSize;
|
|
10
|
+
/** 헤더 타이틀 (간편 API) */
|
|
11
|
+
title?: ReactNode;
|
|
12
|
+
/** 푸터 콘텐츠 (간편 API) */
|
|
13
|
+
footer?: ReactNode;
|
|
14
|
+
/** backdrop 클릭 닫기 비활성 */
|
|
15
|
+
disableBackdropClose?: boolean;
|
|
16
|
+
/** Escape 키 닫기 비활성 */
|
|
17
|
+
disableEscapeClose?: boolean;
|
|
18
|
+
/** 모달 본문 */
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export declare function ModalHeader({ children, actions, className, }: {
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
actions?: ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export declare function ModalBody({ children, className, }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
className?: string;
|
|
29
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function ModalFooter({ children, className, }: {
|
|
31
|
+
children: ReactNode;
|
|
32
|
+
className?: string;
|
|
33
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export declare function Modal({ open, onClose, size, title, footer, disableBackdropClose, disableEscapeClose, children, className, ...rest }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const root: string;
|
|
2
|
+
export declare const tab: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
active: {
|
|
4
|
+
true: {
|
|
5
|
+
backgroundColor: string;
|
|
6
|
+
border: `1px solid ${string}`;
|
|
7
|
+
color: string;
|
|
8
|
+
selectors: {
|
|
9
|
+
"&:hover:not(:disabled)": {
|
|
10
|
+
color: string;
|
|
11
|
+
borderColor: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
false: {};
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
18
|
+
export declare const iconSlot: string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface NavigationTabItem {
|
|
3
|
+
/** 고유 식별 값 */
|
|
4
|
+
value: string;
|
|
5
|
+
/** 탭 텍스트 */
|
|
6
|
+
label: string;
|
|
7
|
+
/** 아이콘 */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export interface NavigationTabProps {
|
|
11
|
+
/** 탭 목록 */
|
|
12
|
+
items: NavigationTabItem[];
|
|
13
|
+
/** 현재 활성화된 값 */
|
|
14
|
+
value?: string;
|
|
15
|
+
/** 값 변경 핸들러 */
|
|
16
|
+
onChange?: (value: string) => void;
|
|
17
|
+
/** 추가 className */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function NavigationTab({ items, value, onChange, className, }: NavigationTabProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const container: string;
|
|
2
|
+
export declare const button: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
3
|
+
size: {
|
|
4
|
+
small: {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
8
|
+
medium: {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
large: {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
18
|
+
export declare const input: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
19
|
+
size: {
|
|
20
|
+
small: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
fontSize: `var(--${string})`;
|
|
24
|
+
fontWeight: `var(--${string})`;
|
|
25
|
+
lineHeight: "18px";
|
|
26
|
+
color: "#4c5469";
|
|
27
|
+
};
|
|
28
|
+
medium: {
|
|
29
|
+
width: number;
|
|
30
|
+
height: number;
|
|
31
|
+
fontSize: `var(--${string})`;
|
|
32
|
+
fontWeight: `var(--${string})`;
|
|
33
|
+
lineHeight: "21px";
|
|
34
|
+
color: "#4c5469";
|
|
35
|
+
};
|
|
36
|
+
large: {
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
fontSize: `var(--${string})`;
|
|
40
|
+
fontWeight: `var(--${string})`;
|
|
41
|
+
lineHeight: "24px";
|
|
42
|
+
color: string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export type NumberInputSize = "small" | "medium" | "large";
|
|
3
|
+
export interface NumberInputProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
4
|
+
/** 현재 값 */
|
|
5
|
+
value?: number;
|
|
6
|
+
/** 값 변경 콜백 */
|
|
7
|
+
onChange?: (value: number) => void;
|
|
8
|
+
/** 사이즈 */
|
|
9
|
+
size?: NumberInputSize;
|
|
10
|
+
/** 최솟값 */
|
|
11
|
+
min?: number;
|
|
12
|
+
/** 최댓값 */
|
|
13
|
+
max?: number;
|
|
14
|
+
/** 증감 단위 */
|
|
15
|
+
step?: number;
|
|
16
|
+
/** 비활성화 */
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* **NumberInput**
|
|
21
|
+
*
|
|
22
|
+
* 숫자 입력 스테퍼. −/+ 버튼으로 값 증감.
|
|
23
|
+
*
|
|
24
|
+
* - `size`: small / medium / large
|
|
25
|
+
* - `min` / `max`로 범위 제한
|
|
26
|
+
* - `step`으로 증감 단위 설정
|
|
27
|
+
*
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <NumberInput value={count} onChange={setCount} min={0} max={100} />
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function NumberInput({ value, onChange, size, min, max, step, disabled, className, ...rest }: NumberInputProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const root: string;
|
|
2
|
+
export declare const arrowButton: string;
|
|
3
|
+
export declare const numbersTrack: string;
|
|
4
|
+
export declare const pageButton: import('@vanilla-extract/recipes').RuntimeFn<{
|
|
5
|
+
active: {
|
|
6
|
+
true: {
|
|
7
|
+
backgroundColor: string;
|
|
8
|
+
color: string;
|
|
9
|
+
fontSize: `var(--${string})`;
|
|
10
|
+
fontWeight: `var(--${string})`;
|
|
11
|
+
selectors: {
|
|
12
|
+
"&:hover": {
|
|
13
|
+
backgroundColor: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
export declare const totalCount: string;
|
|
20
|
+
export declare const totalCountNumber: string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
export interface PaginationProps extends HTMLAttributes<HTMLElement> {
|
|
3
|
+
/** 현재 페이지 (1-based) */
|
|
4
|
+
page: number;
|
|
5
|
+
/** 전체 페이지 수 */
|
|
6
|
+
totalPages: number;
|
|
7
|
+
/** 페이지 변경 핸들러 */
|
|
8
|
+
onPageChange: (page: number) => void;
|
|
9
|
+
/** 표시할 페이지 번호 수 */
|
|
10
|
+
visiblePages?: number;
|
|
11
|
+
/** 전체 건수 (설정 시 "총 N건" 표시) */
|
|
12
|
+
totalCount?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function PaginationCount({ totalCount, className, }: {
|
|
15
|
+
totalCount: number;
|
|
16
|
+
className?: string;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function Pagination({ page, totalPages, onPageChange, visiblePages, totalCount, className, ...rest }: PaginationProps): import("react/jsx-runtime").JSX.Element;
|