@hivcd-printshop/design-system 1.1.0 → 1.2.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.d.mts +350 -27
- package/dist/index.d.ts +350 -27
- package/dist/index.js +1249 -234
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1224 -233
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
+
import react__default, { ReactNode, ComponentType, AnchorHTMLAttributes, Ref } from 'react';
|
|
2
3
|
|
|
3
4
|
interface BackButtonProps {
|
|
4
5
|
onClick?: () => void;
|
|
@@ -6,15 +7,241 @@ interface BackButtonProps {
|
|
|
6
7
|
}
|
|
7
8
|
declare const BackButton: ({ onClick, className }: BackButtonProps) => react.JSX.Element;
|
|
8
9
|
|
|
9
|
-
interface CTAProps {
|
|
10
|
+
interface CTAProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
10
11
|
primary?: boolean;
|
|
11
|
-
|
|
12
|
+
alert?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
12
14
|
label: string;
|
|
13
15
|
onClick?: () => void;
|
|
14
16
|
className?: string;
|
|
17
|
+
forModal?: boolean;
|
|
15
18
|
}
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
declare const CTA: ({ primary, alert, disabled, label, onClick, className, forModal, ...props }: CTAProps) => react.JSX.Element;
|
|
20
|
+
|
|
21
|
+
interface BaseProps$1 {
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
declare const MultiColumn: (({ children, className }: BaseProps$1) => react__default.JSX.Element) & {
|
|
26
|
+
Columns: ({ children, className }: BaseProps$1) => react__default.JSX.Element;
|
|
27
|
+
CTAs: ({ children, className }: BaseProps$1) => react__default.JSX.Element | null;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
interface ColumnProps {
|
|
31
|
+
className?: string;
|
|
32
|
+
children: React.ReactNode;
|
|
33
|
+
/**
|
|
34
|
+
* 컬럼 상단 제목. 생략하면 제목 영역을 렌더링하지 않으며,
|
|
35
|
+
* 이 경우 children 안에서 `ColumnSubTitle`로 섹션 제목을 직접 배치할 수 있다.
|
|
36
|
+
*/
|
|
37
|
+
header?: string;
|
|
38
|
+
}
|
|
39
|
+
declare const Column: ({ className, children, header }: ColumnProps) => react.JSX.Element;
|
|
40
|
+
|
|
41
|
+
interface ColumnContentContainerProps {
|
|
42
|
+
className?: string;
|
|
43
|
+
children: React.ReactNode;
|
|
44
|
+
}
|
|
45
|
+
declare const ColumnContentContainer: ({ className, children }: ColumnContentContainerProps) => react.JSX.Element;
|
|
46
|
+
|
|
47
|
+
interface ColumnLabelProps {
|
|
48
|
+
className?: string;
|
|
49
|
+
children: string;
|
|
50
|
+
subLabel?: string;
|
|
51
|
+
htmlFor?: string;
|
|
52
|
+
}
|
|
53
|
+
declare const ColumnLabel: ({ className, children, subLabel, htmlFor }: ColumnLabelProps) => react.JSX.Element;
|
|
54
|
+
|
|
55
|
+
interface ColumnTextProps {
|
|
56
|
+
className?: string;
|
|
57
|
+
children?: string | React.ReactNode;
|
|
58
|
+
onClick?: () => void;
|
|
59
|
+
alert?: boolean;
|
|
60
|
+
}
|
|
61
|
+
declare const ColumnTextStyle = "text-body3-book text-strong";
|
|
62
|
+
declare const ModalTextStyle = "text-body1-regular text-primary";
|
|
63
|
+
declare const ColumnText: ({ className, alert, children, onClick }: ColumnTextProps) => react.JSX.Element;
|
|
64
|
+
|
|
65
|
+
interface ColumnSubTitleProps {
|
|
66
|
+
className?: string;
|
|
67
|
+
children: React.ReactNode;
|
|
68
|
+
/** 우측에 부연 아이콘/버튼 등을 배치할 때 사용 (예: 도움말 아이콘) */
|
|
69
|
+
action?: React.ReactNode;
|
|
70
|
+
as?: "h2" | "h3" | "h4" | "header";
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Column 내부의 섹션 구분용 부제목.
|
|
74
|
+
* 예: "예약 정보", "예약자 정보", "예약 시 주의사항"
|
|
75
|
+
*/
|
|
76
|
+
declare const ColumnSubTitle: ({ className, children, action, as: Tag, }: ColumnSubTitleProps) => react.JSX.Element;
|
|
77
|
+
|
|
78
|
+
interface BasicFormFieldProps {
|
|
79
|
+
children: React.ReactNode;
|
|
80
|
+
isDanger?: boolean;
|
|
81
|
+
dangerText?: string;
|
|
82
|
+
className?: string;
|
|
83
|
+
}
|
|
84
|
+
declare const BasicFormField: ({ children, isDanger, dangerText, className, }: BasicFormFieldProps) => react.JSX.Element;
|
|
85
|
+
declare const getInputStyles: (isDanger?: boolean, additionalClass?: string) => string;
|
|
86
|
+
|
|
87
|
+
interface FormTextProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
88
|
+
isDanger?: boolean;
|
|
89
|
+
dangerText?: string;
|
|
90
|
+
}
|
|
91
|
+
declare const FormText: ({ className, isDanger, dangerText, ...props }: FormTextProps) => react.JSX.Element;
|
|
92
|
+
|
|
93
|
+
interface FormTextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
94
|
+
isDanger?: boolean;
|
|
95
|
+
dangerText?: string;
|
|
96
|
+
}
|
|
97
|
+
declare const FormTextArea: ({ className, isDanger, dangerText, ...props }: FormTextAreaProps) => react.JSX.Element;
|
|
98
|
+
|
|
99
|
+
interface FormNumberProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
100
|
+
isDanger?: boolean;
|
|
101
|
+
dangerText?: string;
|
|
102
|
+
}
|
|
103
|
+
declare const FormNumber: ({ className, isDanger, dangerText, ...props }: FormNumberProps) => react.JSX.Element;
|
|
104
|
+
|
|
105
|
+
interface FormPasswordProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
106
|
+
isDanger?: boolean;
|
|
107
|
+
dangerText?: string;
|
|
108
|
+
}
|
|
109
|
+
declare const FormPassword: ({ className, isDanger, dangerText, ...props }: FormPasswordProps) => react.JSX.Element;
|
|
110
|
+
|
|
111
|
+
interface FormTelProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
112
|
+
isDanger?: boolean;
|
|
113
|
+
dangerText?: string;
|
|
114
|
+
}
|
|
115
|
+
declare const FormTel: ({ className, isDanger, dangerText, onChange, ...props }: FormTelProps) => react.JSX.Element;
|
|
116
|
+
|
|
117
|
+
interface FormColorProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> {
|
|
118
|
+
isDanger?: boolean;
|
|
119
|
+
dangerText?: string;
|
|
120
|
+
}
|
|
121
|
+
declare const FormColor: ({ className, isDanger, dangerText, value, defaultValue, onChange, ...props }: FormColorProps) => react.JSX.Element;
|
|
122
|
+
|
|
123
|
+
interface FormFileProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange"> {
|
|
124
|
+
isDanger?: boolean;
|
|
125
|
+
dangerText?: string;
|
|
126
|
+
fileUrl?: string;
|
|
127
|
+
filename?: string;
|
|
128
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
129
|
+
}
|
|
130
|
+
declare const FormFile: ({ className, isDanger, dangerText, placeholder, fileUrl, filename, onChange, ...props }: FormFileProps) => react.JSX.Element;
|
|
131
|
+
|
|
132
|
+
interface FormCheckBoxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "checked"> {
|
|
133
|
+
isChecked: boolean;
|
|
134
|
+
setIsChecked: (checked: boolean) => void;
|
|
135
|
+
children?: React.ReactNode;
|
|
136
|
+
className?: string;
|
|
137
|
+
textStyle?: string;
|
|
138
|
+
}
|
|
139
|
+
declare const FormCheckBox: ({ isChecked, setIsChecked, children, className, textStyle, ...props }: FormCheckBoxProps) => react.JSX.Element;
|
|
140
|
+
|
|
141
|
+
interface FormSelectBoxProps {
|
|
142
|
+
options: string[];
|
|
143
|
+
value: string;
|
|
144
|
+
onChange: (option: string) => void;
|
|
145
|
+
placeholder?: string;
|
|
146
|
+
isDanger?: boolean;
|
|
147
|
+
dangerText?: string;
|
|
148
|
+
className?: string;
|
|
149
|
+
}
|
|
150
|
+
declare const FormSelectBox: ({ options, value, onChange, placeholder, isDanger, dangerText, className, }: FormSelectBoxProps) => react.JSX.Element;
|
|
151
|
+
|
|
152
|
+
interface SelectBoxOptionProps {
|
|
153
|
+
label: string;
|
|
154
|
+
onClick: () => void;
|
|
155
|
+
className?: string;
|
|
156
|
+
}
|
|
157
|
+
declare const SelectBoxOption: ({ label, onClick, className, }: SelectBoxOptionProps) => react.JSX.Element;
|
|
158
|
+
|
|
159
|
+
type CommonProps = {
|
|
160
|
+
children: React.ReactNode;
|
|
161
|
+
/** 텍스트 앞/뒤에 붙는 아이콘 (예: 도움말 ⓘ, 경고 아이콘) */
|
|
162
|
+
icon?: React.ReactNode;
|
|
163
|
+
iconPosition?: "left" | "right";
|
|
164
|
+
/** 위험/경고 강조 색상 */
|
|
165
|
+
alert?: boolean;
|
|
166
|
+
/** 밑줄 표시 여부 (기본 true) */
|
|
167
|
+
underline?: boolean;
|
|
168
|
+
className?: string;
|
|
169
|
+
};
|
|
170
|
+
type TextButtonProps = CommonProps & (({
|
|
171
|
+
href: string;
|
|
172
|
+
} & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof CommonProps>) | ({
|
|
173
|
+
href?: undefined;
|
|
174
|
+
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof CommonProps>));
|
|
175
|
+
/**
|
|
176
|
+
* 인라인 텍스트 버튼/링크.
|
|
177
|
+
* 예: "파일 제작 가이드", "파일 첨부", "더 보기", "다시 시도"
|
|
178
|
+
*/
|
|
179
|
+
declare const TextButton: ({ children, icon, iconPosition, alert, underline, className, ...props }: TextButtonProps) => react.JSX.Element;
|
|
180
|
+
|
|
181
|
+
interface DropdownProps {
|
|
182
|
+
selectedLabel: string;
|
|
183
|
+
setSelectedLabel: (label: string) => void;
|
|
184
|
+
labels: string[];
|
|
185
|
+
className?: string;
|
|
186
|
+
}
|
|
187
|
+
declare const Dropdown: ({ selectedLabel, setSelectedLabel, labels, className }: DropdownProps) => react.JSX.Element;
|
|
188
|
+
|
|
189
|
+
interface TagProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
190
|
+
className?: string;
|
|
191
|
+
children: string | React.ReactNode;
|
|
192
|
+
selected?: boolean;
|
|
193
|
+
onClick?: () => void;
|
|
194
|
+
bgColor?: string;
|
|
195
|
+
}
|
|
196
|
+
declare const Tag: ({ className, children, selected, disabled, bgColor, onClick, ...props }: TagProps) => react.JSX.Element;
|
|
197
|
+
|
|
198
|
+
interface ListProps extends Omit<React.HTMLAttributes<HTMLLIElement>, "children"> {
|
|
199
|
+
className?: string;
|
|
200
|
+
label1?: string;
|
|
201
|
+
label2?: string;
|
|
202
|
+
label2OnClick?: () => void;
|
|
203
|
+
label3?: string;
|
|
204
|
+
disabled?: boolean;
|
|
205
|
+
selected?: boolean;
|
|
206
|
+
onClick?: () => void;
|
|
207
|
+
children?: React.ReactElement<TagProps> | React.ReactElement<TagProps>[];
|
|
208
|
+
}
|
|
209
|
+
declare function List({ className, label1, label2, label2OnClick, label3, disabled, selected, onClick, children, ...props }: ListProps): react.JSX.Element;
|
|
210
|
+
|
|
211
|
+
interface ModalProps {
|
|
212
|
+
isVisible: boolean;
|
|
213
|
+
header: string;
|
|
214
|
+
children: react__default.ReactNode;
|
|
215
|
+
className?: string;
|
|
216
|
+
}
|
|
217
|
+
interface BaseProps {
|
|
218
|
+
children: react__default.ReactNode;
|
|
219
|
+
className?: string;
|
|
220
|
+
row?: boolean;
|
|
221
|
+
}
|
|
222
|
+
declare const Modal: (({ isVisible, header, children, className }: ModalProps) => react__default.JSX.Element | null) & {
|
|
223
|
+
Contents: ({ children, className }: BaseProps) => react__default.JSX.Element;
|
|
224
|
+
CTAs: ({ children, className, row }: BaseProps) => react__default.JSX.Element | null;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
interface ModalTextProps {
|
|
228
|
+
children: React.ReactNode;
|
|
229
|
+
className?: string;
|
|
230
|
+
}
|
|
231
|
+
declare const ModalText: ({ children, className }: ModalTextProps) => react.JSX.Element;
|
|
232
|
+
|
|
233
|
+
declare const IconChevronDownXS: ({ className, stroke, }: {
|
|
234
|
+
className?: string;
|
|
235
|
+
stroke?: string;
|
|
236
|
+
}) => react.JSX.Element;
|
|
237
|
+
declare const IconCheck: ({ className, stroke }: {
|
|
238
|
+
className?: string;
|
|
239
|
+
stroke?: string;
|
|
240
|
+
}) => react.JSX.Element;
|
|
241
|
+
declare const IconInfo: ({ className, stroke }: {
|
|
242
|
+
className?: string;
|
|
243
|
+
stroke?: string;
|
|
244
|
+
}) => react.JSX.Element;
|
|
18
245
|
|
|
19
246
|
interface CategorySegmentProps {
|
|
20
247
|
selected?: boolean;
|
|
@@ -70,9 +297,21 @@ type PrintColor$1 = "Plotter" | "Printer" | "Riso" | "Fluorescent" | "UV" | "See
|
|
|
70
297
|
type RadioToggle = {
|
|
71
298
|
title: string;
|
|
72
299
|
content: string;
|
|
300
|
+
/**
|
|
301
|
+
* 선택 상태를 식별할 값. 표시 텍스트(title)와 분리하고 싶을 때 사용한다.
|
|
302
|
+
* 생략하면 title이 식별자로 쓰인다. onSelect도 이 값을 넘겨준다.
|
|
303
|
+
*/
|
|
304
|
+
value?: string;
|
|
73
305
|
badges?: string[];
|
|
74
|
-
/** 선택됐을 때 라디오 행에 입힐
|
|
306
|
+
/** 선택됐을 때 라디오 행에 입힐 배경색(팔레트). `color`가 있으면 무시된다. */
|
|
75
307
|
printColor?: PrintColor$1;
|
|
308
|
+
/**
|
|
309
|
+
* 선택됐을 때 라디오 행에 입힐 임의 배경색(hex/rgb/CSS 변수 등).
|
|
310
|
+
* 고정 팔레트(printColor) 밖의 색이 필요할 때 사용한다.
|
|
311
|
+
*/
|
|
312
|
+
color?: string;
|
|
313
|
+
/** 라디오 행(button)에 덧붙일 클래스. 보더/그룹 구분 등 앱별 커스터마이징 훅. */
|
|
314
|
+
className?: string;
|
|
76
315
|
labelTextButton?: string;
|
|
77
316
|
onClickTextButton?: () => void;
|
|
78
317
|
};
|
|
@@ -80,42 +319,55 @@ interface SideRadioAccordionProps {
|
|
|
80
319
|
step: number;
|
|
81
320
|
title: string;
|
|
82
321
|
radioToggleList: RadioToggle[];
|
|
83
|
-
/**
|
|
322
|
+
/** controlled: 현재 선택된 항목의 value(없으면 title). `null`이면 미선택. */
|
|
323
|
+
selected?: string | null;
|
|
324
|
+
/** uncontrolled 초기 선택값. `selected`를 함께 주면 무시된다. */
|
|
84
325
|
defaultSelected?: string;
|
|
85
|
-
|
|
326
|
+
/** 선택이 바뀔 때 호출. 인자는 항목의 value(없으면 title). */
|
|
327
|
+
onSelect?: (value: string) => void;
|
|
328
|
+
/** 헤더(Stepper)를 스크롤 컨테이너 상단에 고정한다. */
|
|
329
|
+
stickyHeader?: boolean;
|
|
330
|
+
/** 헤더 클릭으로 접기/펼치기를 허용할지. false면 항상 펼쳐지고 chevron도 감춘다. 기본 true. */
|
|
331
|
+
collapsible?: boolean;
|
|
332
|
+
/** uncontrolled 펼침 초기값. 기본 true. */
|
|
333
|
+
defaultOpen?: boolean;
|
|
334
|
+
/** controlled 펼침 상태. */
|
|
335
|
+
open?: boolean;
|
|
336
|
+
onOpenChange?: (open: boolean) => void;
|
|
86
337
|
quantityLimitLabel?: string;
|
|
87
338
|
onClickQuantityLimit?: () => void;
|
|
88
339
|
className?: string;
|
|
89
340
|
}
|
|
90
|
-
declare const SideRadioAccordion:
|
|
91
|
-
|
|
92
|
-
interface TagProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
93
|
-
className?: string;
|
|
94
|
-
children: string | React.ReactNode;
|
|
95
|
-
selected?: boolean;
|
|
96
|
-
onClick?: () => void;
|
|
97
|
-
bgColor?: string;
|
|
98
|
-
}
|
|
99
|
-
declare const Tag: ({ className, children, selected, disabled, bgColor, onClick, ...props }: TagProps) => react.JSX.Element;
|
|
341
|
+
declare const SideRadioAccordion: react.ForwardRefExoticComponent<SideRadioAccordionProps & react.RefAttributes<HTMLDivElement>>;
|
|
100
342
|
|
|
101
343
|
type Week = "thisWeek" | "nextWeek" | "twoWeeksLater";
|
|
102
344
|
interface WeekNavigationProps {
|
|
103
345
|
/** 표시 중인 주의 월요일(ISO "YYYY-MM-DD"). 범위 라벨(~금요일)을 여기서 계산한다. */
|
|
104
346
|
date: string;
|
|
105
|
-
|
|
347
|
+
/** 3주 모델에 매핑되는 주차. `label`을 직접 주면 생략 가능. */
|
|
348
|
+
week?: Week;
|
|
349
|
+
/** 가운데 텍스트를 직접 지정(주어지면 week 기반 자동 라벨을 대체). */
|
|
350
|
+
label?: string;
|
|
351
|
+
/** 이전/다음 버튼 노출 여부를 명시적으로 제어. 생략 시 week로 자동 판단(thisWeek↔twoWeeksLater 경계). */
|
|
352
|
+
canPrev?: boolean;
|
|
353
|
+
canNext?: boolean;
|
|
106
354
|
onPrevWeek?: () => void;
|
|
107
355
|
onNextWeek?: () => void;
|
|
108
356
|
className?: string;
|
|
109
357
|
}
|
|
110
|
-
declare const WeekNavigation:
|
|
358
|
+
declare const WeekNavigation: react.ForwardRefExoticComponent<WeekNavigationProps & react.RefAttributes<HTMLDivElement>>;
|
|
111
359
|
|
|
112
360
|
type PrintColor = "Plotter" | "Printer" | "Riso" | "Fluorescent" | "UV" | "Seet Cutting" | "Laser Cutting";
|
|
113
361
|
type TimeSlotState = "none" | "default" | "disabled" | "selected";
|
|
114
362
|
interface TimeSlot {
|
|
115
363
|
time: string;
|
|
116
364
|
state: TimeSlotState;
|
|
117
|
-
/** state가 "default"/"selected"일 때만 사용되는 hover 색상 */
|
|
365
|
+
/** state가 "default"/"selected"일 때만 사용되는 hover 색상(팔레트). `color`가 있으면 무시. */
|
|
118
366
|
printColor?: PrintColor;
|
|
367
|
+
/** 고정 팔레트 밖의 임의 hover 색상(hex/rgb/CSS 변수 등). */
|
|
368
|
+
color?: string;
|
|
369
|
+
/** 셀(div)에 덧붙일 클래스. 보더/그룹 구분 등 앱별 커스터마이징 훅. */
|
|
370
|
+
className?: string;
|
|
119
371
|
}
|
|
120
372
|
interface DayColumn {
|
|
121
373
|
/** 해당 요일의 ISO 날짜("YYYY-MM-DD") */
|
|
@@ -131,24 +383,63 @@ interface TimetableProps {
|
|
|
131
383
|
onPrevWeek?: () => void;
|
|
132
384
|
onNextWeek?: () => void;
|
|
133
385
|
onSelectSlot?: (date: string, time: string) => void;
|
|
386
|
+
/**
|
|
387
|
+
* true면 열 너비가 고정폭(72px) 대신 컨테이너 폭에 맞춰 균등하게 늘어난다.
|
|
388
|
+
* 기존 고정폭 레이아웃이 필요하면 생략한다.
|
|
389
|
+
*/
|
|
390
|
+
fluid?: boolean;
|
|
391
|
+
/** 상단 주간 네비게이션을 숨긴다(외부에서 별도로 렌더링할 때). */
|
|
392
|
+
hideWeekNavigation?: boolean;
|
|
393
|
+
/** 주간 네비게이션의 이전/다음 버튼 노출을 명시적으로 제어(생략 시 week로 자동 판단). */
|
|
394
|
+
canPrevWeek?: boolean;
|
|
395
|
+
canNextWeek?: boolean;
|
|
134
396
|
className?: string;
|
|
135
397
|
}
|
|
136
|
-
declare const Timetable:
|
|
398
|
+
declare const Timetable: react.ForwardRefExoticComponent<TimetableProps & react.RefAttributes<HTMLDivElement>>;
|
|
137
399
|
|
|
400
|
+
/**
|
|
401
|
+
* href가 있는 항목을 실제 링크로 렌더링하기 위해 주입하는 컴포넌트.
|
|
402
|
+
* Next.js라면 `next/link`를 그대로 넘기면 된다.
|
|
403
|
+
* 주입하지 않으면 순수 `<a>`로 렌더링된다.
|
|
404
|
+
*/
|
|
405
|
+
type LinkComponent = ComponentType<Pick<AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "className" | "onClick" | "aria-current"> & {
|
|
406
|
+
children: ReactNode;
|
|
407
|
+
ref?: Ref<HTMLAnchorElement>;
|
|
408
|
+
}>;
|
|
138
409
|
type NavIcon = {
|
|
139
|
-
|
|
410
|
+
/** 아이콘 이미지 URL. `icon`(ReactNode)과 택일해서 사용한다. */
|
|
411
|
+
src?: string;
|
|
412
|
+
/** 인라인 SVG 등 커스텀 노드. `src` 대신 사용한다. 선택 상태 대비를 위해 `currentColor` 사용을 권장. */
|
|
413
|
+
icon?: ReactNode;
|
|
140
414
|
alt?: string;
|
|
415
|
+
/** 아이콘 옆에 함께 노출할 텍스트 라벨(예: "피드백"). 아이콘 없이 라벨만도 가능. */
|
|
416
|
+
label?: string;
|
|
417
|
+
/** key/상태 식별용 안정적 id(권장). 없으면 `src` → `label` 순으로 대체한다. */
|
|
418
|
+
id?: string;
|
|
419
|
+
/** 지정하면 `<a>`(또는 주입된 LinkComponent)로 렌더링된다. */
|
|
420
|
+
href?: string;
|
|
141
421
|
onClick?: () => void;
|
|
142
|
-
/** true면 아이콘 배경을 검게 채워 강조한다(예: 알림/마이페이지 진입 상태) */
|
|
422
|
+
/** true면 아이콘 배경을 검게 채워 강조한다(예: 알림/마이페이지 진입 상태). */
|
|
143
423
|
selected?: boolean;
|
|
424
|
+
/** 알림 개수 등 우상단 뱃지. `true`면 점(dot)만 표시. */
|
|
425
|
+
badge?: ReactNode;
|
|
144
426
|
className?: string;
|
|
427
|
+
/** 렌더링된 `<a>`/`<button>` 엘리먼트로 전달되는 ref(외부 클릭 감지 등에 사용). */
|
|
428
|
+
ref?: Ref<HTMLElement>;
|
|
145
429
|
};
|
|
146
430
|
type LowerPartItem = {
|
|
147
431
|
label: string;
|
|
432
|
+
/** key/상태 식별용 안정적 id(권장). 없으면 `label`을 사용한다. */
|
|
433
|
+
id?: string;
|
|
434
|
+
/** 지정하면 `<a>`(또는 주입된 LinkComponent)로 렌더링된다. */
|
|
435
|
+
href?: string;
|
|
148
436
|
onClick?: () => void;
|
|
149
437
|
};
|
|
150
438
|
type UpperPartItem = {
|
|
151
439
|
label: string;
|
|
440
|
+
id?: string;
|
|
441
|
+
href?: string;
|
|
442
|
+
onClick?: () => void;
|
|
152
443
|
/** 이 상단 탭이 선택됐을 때 아래에 노출할 하위 메뉴 */
|
|
153
444
|
lowerPartItemList: LowerPartItem[];
|
|
154
445
|
};
|
|
@@ -157,17 +448,49 @@ interface TNBProps {
|
|
|
157
448
|
upperPartItemList: UpperPartItem[];
|
|
158
449
|
/** 우측 알림/마이페이지 등 아이콘 목록(로고 제외) */
|
|
159
450
|
upperPartIconList: NavIcon[];
|
|
160
|
-
/**
|
|
451
|
+
/**
|
|
452
|
+
* controlled: 현재 선택된 상단 탭의 label.
|
|
453
|
+
* `null`을 넘기면 "선택된 탭 없음"(홈 등)으로 표시된다.
|
|
454
|
+
*/
|
|
455
|
+
selected?: string | null;
|
|
456
|
+
/** uncontrolled 초기값. `selected`를 함께 넘기면 무시된다. 지정하지 않으면 선택된 탭이 없다. */
|
|
161
457
|
defaultSelected?: string;
|
|
458
|
+
onSelectedChange?: (label: string) => void;
|
|
459
|
+
/** controlled: 현재 선택된 하위 메뉴 label. `null`이면 미선택. */
|
|
460
|
+
selectedLower?: string | null;
|
|
461
|
+
/** uncontrolled 초기값. */
|
|
462
|
+
defaultSelectedLower?: string;
|
|
463
|
+
onSelectedLowerChange?: (label: string) => void;
|
|
464
|
+
/** @deprecated `onSelectedChange`를 사용하세요. 하위 호환용 별칭입니다. */
|
|
162
465
|
onSelectItem?: (label: string) => void;
|
|
466
|
+
/** href가 있는 항목을 렌더링할 링크 컴포넌트(Next.js면 `next/link`). */
|
|
467
|
+
linkComponent?: LinkComponent;
|
|
468
|
+
/** nav 랜드마크의 접근성 라벨. */
|
|
469
|
+
"aria-label"?: string;
|
|
163
470
|
className?: string;
|
|
164
471
|
}
|
|
165
|
-
declare const TNB:
|
|
472
|
+
declare const TNB: react.ForwardRefExoticComponent<TNBProps & react.RefAttributes<HTMLElement>>;
|
|
166
473
|
|
|
167
474
|
interface ToastProps {
|
|
168
475
|
message: string;
|
|
476
|
+
/**
|
|
477
|
+
* 표시 여부(controlled). 생략하면 항상 표시되는 순수 렌더 모드(하위 호환).
|
|
478
|
+
* `true`/`false`를 넘기면 페이드 인/아웃 + 언마운트를 컴포넌트가 스스로 처리한다.
|
|
479
|
+
*/
|
|
480
|
+
open?: boolean;
|
|
481
|
+
/**
|
|
482
|
+
* 자동 소멸까지의 시간(ms). `0`/`null`이면 자동 소멸하지 않는다. 기본 3000.
|
|
483
|
+
* `open`이 `true`로 바뀔 때마다 타이머가 재시작된다.
|
|
484
|
+
*/
|
|
485
|
+
duration?: number | null;
|
|
486
|
+
/** 자동 소멸 시각 또는 (배너 클릭 시) 호출. controlled 모드에서 `open`을 false로 되돌리는 데 사용. */
|
|
487
|
+
onClose?: () => void;
|
|
488
|
+
/**
|
|
489
|
+
* 화면 고정 위치. `"none"`이면 위치 스타일을 붙이지 않고 부모 레이아웃에 맡긴다(하위 호환 기본값).
|
|
490
|
+
*/
|
|
491
|
+
position?: "top" | "bottom" | "none";
|
|
169
492
|
className?: string;
|
|
170
493
|
}
|
|
171
|
-
declare const Toast:
|
|
494
|
+
declare const Toast: react.ForwardRefExoticComponent<ToastProps & react.RefAttributes<HTMLDivElement>>;
|
|
172
495
|
|
|
173
|
-
export { BackButton, type BackButtonProps,
|
|
496
|
+
export { BackButton, type BackButtonProps, BasicFormField, type BasicFormFieldProps, CTA, type CTAProps, CategorySegment, type CategorySegmentProps, CategorySegmentedControl, type CategorySegmentedControlProps, Column, ColumnContentContainer, type ColumnContentContainerProps, ColumnLabel, type ColumnLabelProps, type ColumnProps, ColumnSubTitle, type ColumnSubTitleProps, ColumnText, type ColumnTextProps, ColumnTextStyle, type DayColumn, Dropdown, type DropdownProps, FormCheckBox, type FormCheckBoxProps, FormColor, type FormColorProps, FormFile, type FormFileProps, FormNumber, type FormNumberProps, FormPassword, type FormPasswordProps, FormSelectBox, type FormSelectBoxProps, FormTel, type FormTelProps, FormText, FormTextArea, type FormTextAreaProps, type FormTextProps, IconCheck, IconChevronDownXS, IconInfo, type LinkComponent, List, type ListProps, type LowerPartItem, Modal, type ModalProps, ModalText, type ModalTextProps, ModalTextStyle, MultiColumn, type NavIcon, NoticeBadge, type NoticeBadgeProps, type NoticeBadgeVariable, NoticeBar, type NoticeBarBadgeVariable, type NoticeBarProps, type NoticeBarVariable, type RadioToggle, SearchBar, type SearchBarProps, SelectBoxOption, type SelectBoxOptionProps, SideRadioAccordion, type PrintColor$1 as SideRadioAccordionPrintColor, type SideRadioAccordionProps, TNB, type TNBProps, Tag, type TagProps, TextButton, type TextButtonProps, type TimeSlot, type TimeSlotState, Timetable, type PrintColor as TimetablePrintColor, type TimetableProps, TitleInput, type TitleInputProps, Toast, type ToastProps, type UpperPartItem, type Week, WeekNavigation, type WeekNavigationProps, getInputStyles };
|