@likelion-design/ui 1.0.11 → 1.0.15
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/README.md +14 -14
- package/dist/colors.css.css +1 -1
- package/dist/colors.css.css.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +380 -33
- package/dist/index.d.ts +380 -33
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -301,38 +301,6 @@ declare const DialogProvider: ({ children }: {
|
|
|
301
301
|
}) => react_jsx_runtime.JSX.Element;
|
|
302
302
|
declare function useDialog(): DialogContextType;
|
|
303
303
|
|
|
304
|
-
type TextInputSize = "pc" | "mo" | "medium" | "small";
|
|
305
|
-
type TextInputState = "default" | "error";
|
|
306
|
-
interface TextInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "title"> {
|
|
307
|
-
/** Title 텍스트 (있으면 표시) */
|
|
308
|
-
title?: string;
|
|
309
|
-
/** 필수 필드 표시 여부 */
|
|
310
|
-
required?: boolean;
|
|
311
|
-
/**
|
|
312
|
-
* Input 크기
|
|
313
|
-
* - "pc" / "mo": 디바이스 기반 네이밍
|
|
314
|
-
* - "medium" / "small": 스토리/디자인 토큰 기반 네이밍 (pc ↔ medium, mo ↔ small)
|
|
315
|
-
* 미지정 시 breakpoint 기준: tablet 미만 mo(small), 이상 pc(medium). 지정 시 오버라이드
|
|
316
|
-
*/
|
|
317
|
-
size?: TextInputSize;
|
|
318
|
-
/** Input 상태 (에러 상태) */
|
|
319
|
-
error?: boolean;
|
|
320
|
-
/** Help text */
|
|
321
|
-
description?: React.ReactNode;
|
|
322
|
-
/** Character count 표시 (예: "99/100") */
|
|
323
|
-
maxLength?: number;
|
|
324
|
-
/** 왼쪽 아이콘 */
|
|
325
|
-
prefixIcon?: React.ReactNode;
|
|
326
|
-
/** 오른쪽 아이콘 */
|
|
327
|
-
suffixIcon?: React.ReactNode;
|
|
328
|
-
/** 오른쪽 단위 (타이머 등) */
|
|
329
|
-
suffixUnit?: React.ReactNode;
|
|
330
|
-
/** Help text 아이콘 (true면 기본 아이콘, 노드면 커스텀) */
|
|
331
|
-
accentIcon?: boolean | React.ReactNode;
|
|
332
|
-
}
|
|
333
|
-
/** TextInput 컴포넌트는 사용자로부터 텍스트 입력을 받는 폼 컴포넌트입니다. */
|
|
334
|
-
declare const TextInput: ({ required, size, error, description, maxLength, prefixIcon, suffixIcon, suffixUnit, title, accentIcon, className, style, id, value, defaultValue, readOnly, onChange, onFocus, onBlur, ...props }: TextInputProps) => react_jsx_runtime.JSX.Element;
|
|
335
|
-
|
|
336
304
|
type ToggleSize = "medium" | "small";
|
|
337
305
|
type ToggleLabelPosition = "start" | "end";
|
|
338
306
|
interface ToggleProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "onChange" | "type"> {
|
|
@@ -1122,6 +1090,385 @@ declare const ToastProvider: ({ children }: {
|
|
|
1122
1090
|
*/
|
|
1123
1091
|
declare function useToast(): ToastContextType;
|
|
1124
1092
|
|
|
1093
|
+
interface CalendarProps {
|
|
1094
|
+
/** 연도 */
|
|
1095
|
+
year?: number;
|
|
1096
|
+
/** 월 (0-11) */
|
|
1097
|
+
month?: number;
|
|
1098
|
+
/** 선택된 날짜 (single 모드) */
|
|
1099
|
+
selectedDate?: Date | null;
|
|
1100
|
+
/** 시작 날짜 (range 모드) */
|
|
1101
|
+
startDate?: Date | null;
|
|
1102
|
+
/** 종료 날짜 (range 모드) */
|
|
1103
|
+
endDate?: Date | null;
|
|
1104
|
+
/** 호버 중인 날짜 (range 모드) */
|
|
1105
|
+
hoverDate?: Date | null;
|
|
1106
|
+
/** 기간 선택 모드 여부 */
|
|
1107
|
+
rangeMode?: boolean;
|
|
1108
|
+
/** 선택 가능한 최소 날짜 */
|
|
1109
|
+
minDate?: Date;
|
|
1110
|
+
/** 선택 가능한 최대 날짜 */
|
|
1111
|
+
maxDate?: Date;
|
|
1112
|
+
/** 언어 설정 */
|
|
1113
|
+
locale?: string;
|
|
1114
|
+
/** 날짜 클릭 핸들러 */
|
|
1115
|
+
onClick?: (date: Date) => void;
|
|
1116
|
+
/** 날짜 호버 핸들러 */
|
|
1117
|
+
onHover?: (date: Date | null) => void;
|
|
1118
|
+
/** 이전 달 이동 핸들러 */
|
|
1119
|
+
onPrev?: () => void;
|
|
1120
|
+
/** 다음 달 이동 핸들러 */
|
|
1121
|
+
onNext?: () => void;
|
|
1122
|
+
/** 이전 버튼 표시 여부 */
|
|
1123
|
+
showPrev?: boolean;
|
|
1124
|
+
/** 다음 버튼 표시 여부 */
|
|
1125
|
+
showNext?: boolean;
|
|
1126
|
+
/** 이전 버튼 비활성화 여부 */
|
|
1127
|
+
disablePrev?: boolean;
|
|
1128
|
+
/** 다음 버튼 비활성화 여부 */
|
|
1129
|
+
disableNext?: boolean;
|
|
1130
|
+
/** 추가 CSS 클래스 */
|
|
1131
|
+
className?: string;
|
|
1132
|
+
/** 인라인 스타일 (최상위 calendar 요소에 적용) */
|
|
1133
|
+
style?: React.CSSProperties;
|
|
1134
|
+
/** 헤더와 그리드 사이에 렌더링할 콘텐츠 */
|
|
1135
|
+
children?: React.ReactNode;
|
|
1136
|
+
}
|
|
1137
|
+
/** Calendar는 단독으로 사용하거나 DatePicker의 일부분으로 사용되는 달력 그리드입니다. */
|
|
1138
|
+
declare const Calendar: React.FC<CalendarProps>;
|
|
1139
|
+
|
|
1140
|
+
type DateInputType = "single" | "range";
|
|
1141
|
+
type DateInputState = "default" | "selected" | "disabled";
|
|
1142
|
+
/**
|
|
1143
|
+
* DateInput 내부 서브 요소 슬롯 이름.
|
|
1144
|
+
* classNames / styles 객체의 키로 사용됩니다.
|
|
1145
|
+
*
|
|
1146
|
+
* - `root` — 최상위 wrapper (`date-input`)
|
|
1147
|
+
* - `content` — 입력 영역 (`date-input__content`)
|
|
1148
|
+
* - `icon` — prefix 캘린더 아이콘
|
|
1149
|
+
* - `text` — 날짜 텍스트 표시 영역
|
|
1150
|
+
* - `separator` — range 모드 구분자 (`-`)
|
|
1151
|
+
* - `reset` — 초기화 버튼
|
|
1152
|
+
* - `help` — 도움말 텍스트 영역
|
|
1153
|
+
*/
|
|
1154
|
+
type DateInputSlot = "root" | "content" | "icon" | "text" | "separator" | "reset" | "help";
|
|
1155
|
+
interface DateInputProps {
|
|
1156
|
+
/** 입력 타입: 단일 날짜 또는 기간 */
|
|
1157
|
+
type?: DateInputType;
|
|
1158
|
+
/** 상태 */
|
|
1159
|
+
state?: DateInputState;
|
|
1160
|
+
/** 선택된 날짜 (single 모드) */
|
|
1161
|
+
value?: Date | null;
|
|
1162
|
+
/** 시작 날짜 (range 모드) */
|
|
1163
|
+
startDate?: Date | null;
|
|
1164
|
+
/** 종료 날짜 (range 모드) */
|
|
1165
|
+
endDate?: Date | null;
|
|
1166
|
+
/** prefix 아이콘 표시 여부 */
|
|
1167
|
+
prefixIcon?: boolean;
|
|
1168
|
+
/** 초기화 버튼 표시 여부 (single / range 모두 지원) */
|
|
1169
|
+
reset?: boolean;
|
|
1170
|
+
/** help text */
|
|
1171
|
+
helpText?: string;
|
|
1172
|
+
/** 도움말 글자수 카운터 현재값 */
|
|
1173
|
+
helpCount?: number;
|
|
1174
|
+
/** 도움말 글자수 카운터 최대값 */
|
|
1175
|
+
helpMaxCount?: number;
|
|
1176
|
+
/** 날짜 표시 포맷 (locale) */
|
|
1177
|
+
locale?: string;
|
|
1178
|
+
/** 단일 모드 플레이스홀더 */
|
|
1179
|
+
placeholder?: string;
|
|
1180
|
+
/** 시작일 플레이스홀더 (range 모드) */
|
|
1181
|
+
startPlaceholder?: string;
|
|
1182
|
+
/** 종료일 플레이스홀더 (range 모드) */
|
|
1183
|
+
endPlaceholder?: string;
|
|
1184
|
+
/** 날짜 표시 포맷 (기본: "yyyy. M. d"). 예: "yyyy.MM.dd HH:mm" */
|
|
1185
|
+
dateFormat?: string;
|
|
1186
|
+
/**
|
|
1187
|
+
* 텍스트 입력으로 날짜를 직접 편집할 수 있는지 여부.
|
|
1188
|
+
* true이면 날짜 텍스트가 `<input>`으로 렌더링되어 타이핑 입력이 가능합니다.
|
|
1189
|
+
*/
|
|
1190
|
+
editable?: boolean;
|
|
1191
|
+
/** 날짜 값 변경 콜백 (single 모드, editable 시 사용) */
|
|
1192
|
+
onValueChange?: (date: Date | null) => void;
|
|
1193
|
+
/** 시작일 변경 콜백 (range 모드, editable 시 사용) */
|
|
1194
|
+
onStartChange?: (date: Date | null) => void;
|
|
1195
|
+
/** 종료일 변경 콜백 (range 모드, editable 시 사용) */
|
|
1196
|
+
onEndChange?: (date: Date | null) => void;
|
|
1197
|
+
/** 클릭 핸들러 */
|
|
1198
|
+
onClick?: () => void;
|
|
1199
|
+
/** 초기화 클릭 핸들러 */
|
|
1200
|
+
onReset?: () => void;
|
|
1201
|
+
/** 추가 CSS 클래스 (classNames.root의 단축 표현) */
|
|
1202
|
+
className?: string;
|
|
1203
|
+
/** 인라인 스타일 (styles.root의 단축 표현) */
|
|
1204
|
+
style?: React.CSSProperties;
|
|
1205
|
+
/**
|
|
1206
|
+
* 각 서브 요소별 커스텀 CSS 클래스.
|
|
1207
|
+
* 기존 요소의 기본 className에 병합(추가)됩니다.
|
|
1208
|
+
*
|
|
1209
|
+
* @example
|
|
1210
|
+
* classNames={{
|
|
1211
|
+
* root: "my-input",
|
|
1212
|
+
* content: "my-content",
|
|
1213
|
+
* icon: "my-icon",
|
|
1214
|
+
* }}
|
|
1215
|
+
*/
|
|
1216
|
+
classNames?: Partial<Record<DateInputSlot, string>>;
|
|
1217
|
+
/**
|
|
1218
|
+
* 각 서브 요소별 인라인 스타일.
|
|
1219
|
+
* 해당 요소에 style 속성으로 적용됩니다.
|
|
1220
|
+
*
|
|
1221
|
+
* @example
|
|
1222
|
+
* styles={{
|
|
1223
|
+
* content: { height: 40, borderRadius: 8 },
|
|
1224
|
+
* icon: { color: "red" },
|
|
1225
|
+
* }}
|
|
1226
|
+
*/
|
|
1227
|
+
styles?: Partial<Record<DateInputSlot, React.CSSProperties>>;
|
|
1228
|
+
}
|
|
1229
|
+
/**
|
|
1230
|
+
* Date를 포맷 문자열에 따라 변환합니다.
|
|
1231
|
+
* 지원 토큰: yyyy, MM, M, dd, d, HH, mm
|
|
1232
|
+
* format이 없으면 기본 "yyyy. M. d" 형식을 사용합니다.
|
|
1233
|
+
*/
|
|
1234
|
+
declare const formatDate: (d: Date | null | undefined, format?: string) => string;
|
|
1235
|
+
/**
|
|
1236
|
+
* 날짜 문자열을 Date 객체로 파싱합니다.
|
|
1237
|
+
*
|
|
1238
|
+
* 지원 포맷:
|
|
1239
|
+
* - 구분자 포맷: "2026.3.11", "2026-03-11", "2026/03/11", "2026. 3. 11"
|
|
1240
|
+
* - 8자리 숫자: "20260311"
|
|
1241
|
+
* - 시간 포함: "2026.03.11 14:30", "2026-03-11 09:00"
|
|
1242
|
+
*
|
|
1243
|
+
* 파싱 실패 시 `fallback`을 반환합니다 (기본: null).
|
|
1244
|
+
*/
|
|
1245
|
+
declare const parseDate: (str: string, fallback?: Date | null) => Date | null;
|
|
1246
|
+
/** DateInput은 날짜를 표시하고 입력받는 필드 컴포넌트로, single/range 타입을 지원합니다. */
|
|
1247
|
+
declare const DateInput: React.FC<DateInputProps>;
|
|
1248
|
+
|
|
1249
|
+
type DatePickerType = "single" | "range";
|
|
1250
|
+
/**
|
|
1251
|
+
* DatePicker 내부 서브 컴포넌트 슬롯 이름.
|
|
1252
|
+
* classNames / styles 객체의 키로 사용됩니다.
|
|
1253
|
+
*
|
|
1254
|
+
* - `root` — 최상위 wrapper
|
|
1255
|
+
* - `input` — 상단 트리거 인풋 박스 (DateInput의 content 영역)
|
|
1256
|
+
* - `popover` — 팝오버 컨테이너
|
|
1257
|
+
* - `calendar` — Calendar 컴포넌트 (range 모드일 때 두 캘린더 모두 적용)
|
|
1258
|
+
* - `footer` — 푸터 영역 (취소/적용 버튼 영역)
|
|
1259
|
+
* - `footerInput` — 푸터 내부 인풋 박스 (range 모드에서만 사용)
|
|
1260
|
+
* - `timePicker` — TimePicker 컴포넌트 (showTimeSelect 사용 시)
|
|
1261
|
+
*
|
|
1262
|
+
* @example
|
|
1263
|
+
* <DatePicker
|
|
1264
|
+
* styles={{
|
|
1265
|
+
* input: { height: 40, borderRadius: 12 },
|
|
1266
|
+
* calendar: { background: "#fafafa" },
|
|
1267
|
+
* popover: { width: 400 },
|
|
1268
|
+
* }}
|
|
1269
|
+
* classNames={{
|
|
1270
|
+
* input: "my-input",
|
|
1271
|
+
* calendar: "my-calendar",
|
|
1272
|
+
* }}
|
|
1273
|
+
* />
|
|
1274
|
+
*/
|
|
1275
|
+
type DatePickerSlot = "root" | "input" | "popover" | "calendar" | "footer" | "footerInput" | "timePicker";
|
|
1276
|
+
interface DatePickerSingleProps {
|
|
1277
|
+
type?: "single";
|
|
1278
|
+
/** 선택된 날짜 */
|
|
1279
|
+
value?: Date | null;
|
|
1280
|
+
/** 날짜 변경 핸들러 */
|
|
1281
|
+
onChange?: (date: Date) => void;
|
|
1282
|
+
startDate?: never;
|
|
1283
|
+
endDate?: never;
|
|
1284
|
+
onRangeChange?: never;
|
|
1285
|
+
}
|
|
1286
|
+
interface DatePickerRangeProps {
|
|
1287
|
+
type: "range";
|
|
1288
|
+
value?: never;
|
|
1289
|
+
onChange?: never;
|
|
1290
|
+
/** 시작 날짜 */
|
|
1291
|
+
startDate?: Date | null;
|
|
1292
|
+
/** 종료 날짜 */
|
|
1293
|
+
endDate?: Date | null;
|
|
1294
|
+
/** 기간 변경 핸들러 */
|
|
1295
|
+
onRangeChange?: (start: Date, end: Date | null) => void;
|
|
1296
|
+
}
|
|
1297
|
+
/** DatePicker가 내부적으로 관리하는 Calendar props (사용자가 오버라이드 불가) */
|
|
1298
|
+
type ManagedCalendarProps = "year" | "month" | "selectedDate" | "startDate" | "endDate" | "hoverDate" | "rangeMode" | "minDate" | "maxDate" | "onClick" | "onHover" | "onPrev" | "onNext" | "showPrev" | "showNext" | "disablePrev" | "disableNext" | "locale" | "className" | "style" | "children";
|
|
1299
|
+
/** DatePicker가 내부적으로 관리하는 DateInput props (사용자가 오버라이드 불가) */
|
|
1300
|
+
type ManagedDateInputProps = "type" | "value" | "startDate" | "endDate" | "onClick" | "onReset" | "reset" | "locale" | "placeholder" | "dateFormat" | "className" | "style";
|
|
1301
|
+
type DatePickerBaseProps = {
|
|
1302
|
+
/** 선택 가능한 최소 날짜 */
|
|
1303
|
+
minDate?: Date;
|
|
1304
|
+
/** 선택 가능한 최대 날짜 */
|
|
1305
|
+
maxDate?: Date;
|
|
1306
|
+
/** 언어 설정 */
|
|
1307
|
+
locale?: string;
|
|
1308
|
+
/** 최상위 wrapper에 적용되는 CSS 클래스 (classNames.root의 단축 표현) */
|
|
1309
|
+
className?: string;
|
|
1310
|
+
/** 플레이스홀더 */
|
|
1311
|
+
placeholder?: string;
|
|
1312
|
+
/** 이전 버튼 표시 여부 (기본: true) */
|
|
1313
|
+
showPrev?: boolean;
|
|
1314
|
+
/** 다음 버튼 표시 여부 (기본: true) */
|
|
1315
|
+
showNext?: boolean;
|
|
1316
|
+
/** 이전 버튼 비활성화 여부 (기본: false) */
|
|
1317
|
+
disablePrev?: boolean;
|
|
1318
|
+
/** 다음 버튼 비활성화 여부 (기본: false) */
|
|
1319
|
+
disableNext?: boolean;
|
|
1320
|
+
/** 초기화 버튼 표시 여부 (기본: true, 날짜가 선택되어 있을 때 표시) */
|
|
1321
|
+
reset?: boolean;
|
|
1322
|
+
/** 시간 선택 패널 표시 여부 (기본: false, single 모드에서만 동작) */
|
|
1323
|
+
showTimeSelect?: boolean;
|
|
1324
|
+
/** 시간 간격 (분 단위, 기본: 30). showTimeSelect 활성화 시 사용 */
|
|
1325
|
+
timeIntervals?: number;
|
|
1326
|
+
/**
|
|
1327
|
+
* 날짜 표시 포맷.
|
|
1328
|
+
* 지원 토큰: yyyy, MM, M, dd, d, HH, mm
|
|
1329
|
+
* @default "yyyy. M. d" (showTimeSelect 시 "yyyy. M. d HH:mm")
|
|
1330
|
+
* @example "yyyy.MM.dd HH:mm" → "2026.03.11 14:30"
|
|
1331
|
+
* @example "yyyy-MM-dd" → "2026-03-11"
|
|
1332
|
+
*/
|
|
1333
|
+
dateFormat?: string;
|
|
1334
|
+
/** 적용 버튼 클릭 시 호출되는 콜백 */
|
|
1335
|
+
onApply?: () => void;
|
|
1336
|
+
/** 취소 버튼 클릭 시 호출되는 콜백 */
|
|
1337
|
+
onCancel?: () => void;
|
|
1338
|
+
/**
|
|
1339
|
+
* 각 서브 컴포넌트별 커스텀 CSS 클래스.
|
|
1340
|
+
* 기존 컴포넌트의 기본 className에 병합(추가)됩니다.
|
|
1341
|
+
*
|
|
1342
|
+
* @example
|
|
1343
|
+
* classNames={{
|
|
1344
|
+
* root: "my-datepicker",
|
|
1345
|
+
* input: "my-input",
|
|
1346
|
+
* popover: "my-popover",
|
|
1347
|
+
* calendar: "my-calendar",
|
|
1348
|
+
* footer: "my-footer",
|
|
1349
|
+
* footerInput: "my-footer-input",
|
|
1350
|
+
* }}
|
|
1351
|
+
*/
|
|
1352
|
+
classNames?: Partial<Record<DatePickerSlot, string>>;
|
|
1353
|
+
/**
|
|
1354
|
+
* 각 서브 컴포넌트별 인라인 스타일.
|
|
1355
|
+
* 해당 컴포넌트의 최상위 요소에 style 속성으로 적용됩니다.
|
|
1356
|
+
*
|
|
1357
|
+
* @example
|
|
1358
|
+
* styles={{
|
|
1359
|
+
* input: { height: 40, borderRadius: 12 },
|
|
1360
|
+
* calendar: { background: "#f5f5f5" },
|
|
1361
|
+
* popover: { width: 400 },
|
|
1362
|
+
* }}
|
|
1363
|
+
*/
|
|
1364
|
+
styles?: Partial<Record<DatePickerSlot, React.CSSProperties>>;
|
|
1365
|
+
/**
|
|
1366
|
+
* Calendar 컴포넌트에 전달할 추가 props.
|
|
1367
|
+
* DatePicker가 내부적으로 관리하는 props(year, month, selectedDate 등)는
|
|
1368
|
+
* 제외되며, 나머지를 오버라이드할 수 있습니다.
|
|
1369
|
+
* range 모드일 경우 두 캘린더 모두에 동일하게 적용됩니다.
|
|
1370
|
+
*
|
|
1371
|
+
* @example
|
|
1372
|
+
* calendarProps={{ disablePrev: true, disableNext: false }}
|
|
1373
|
+
*/
|
|
1374
|
+
calendarProps?: Partial<Omit<CalendarProps, ManagedCalendarProps>>;
|
|
1375
|
+
/**
|
|
1376
|
+
* 트리거 DateInput 컴포넌트에 전달할 추가 props.
|
|
1377
|
+
* DatePicker가 내부적으로 관리하는 props(type, value, onClick 등)는
|
|
1378
|
+
* 제외되며, 나머지를 오버라이드할 수 있습니다.
|
|
1379
|
+
*
|
|
1380
|
+
* @example
|
|
1381
|
+
* dateInputProps={{
|
|
1382
|
+
* prefixIcon: false,
|
|
1383
|
+
* helpText: "날짜를 선택해주세요",
|
|
1384
|
+
* state: "disabled",
|
|
1385
|
+
* startPlaceholder: "출발일",
|
|
1386
|
+
* endPlaceholder: "도착일",
|
|
1387
|
+
* }}
|
|
1388
|
+
*/
|
|
1389
|
+
dateInputProps?: Partial<Omit<DateInputProps, ManagedDateInputProps>>;
|
|
1390
|
+
};
|
|
1391
|
+
type DatePickerProps = DatePickerBaseProps & (DatePickerSingleProps | DatePickerRangeProps);
|
|
1392
|
+
/** DatePicker는 DateInput과 Calendar를 조합한 완성형 날짜 선택 컴포넌트입니다. */
|
|
1393
|
+
declare const DatePicker: React.FC<DatePickerProps>;
|
|
1394
|
+
|
|
1395
|
+
interface TimePickerProps {
|
|
1396
|
+
/** 현재 선택된 시간이 포함된 Date */
|
|
1397
|
+
selectedDate?: Date | null;
|
|
1398
|
+
/** 시간 선택 시 콜백 (시/분이 설정된 새 Date 반환) */
|
|
1399
|
+
onTimeChange?: (date: Date) => void;
|
|
1400
|
+
/** 시간 간격 (분 단위, 기본: 30) */
|
|
1401
|
+
timeIntervals?: number;
|
|
1402
|
+
/** 추가 CSS 클래스 */
|
|
1403
|
+
className?: string;
|
|
1404
|
+
/** 인라인 스타일 */
|
|
1405
|
+
style?: React.CSSProperties;
|
|
1406
|
+
}
|
|
1407
|
+
/** TimePicker는 세로 스크롤 리스트로 시간을 선택하는 컴포넌트입니다. */
|
|
1408
|
+
declare const TimePicker: React.FC<TimePickerProps>;
|
|
1409
|
+
|
|
1410
|
+
type TextFieldSize = "pc" | "mo" | "medium" | "small";
|
|
1411
|
+
type TextFieldState = "default" | "error";
|
|
1412
|
+
type TextFieldType = "input" | "area";
|
|
1413
|
+
interface TextFieldBaseProps {
|
|
1414
|
+
/** Title 텍스트 (있으면 표시) */
|
|
1415
|
+
title?: string;
|
|
1416
|
+
/** 필수 필드 표시 여부 */
|
|
1417
|
+
required?: boolean;
|
|
1418
|
+
/**
|
|
1419
|
+
* 크기
|
|
1420
|
+
* - "pc" / "mo": 디바이스 기반 네이밍
|
|
1421
|
+
* - "medium" / "small": 스토리/디자인 토큰 기반 네이밍 (pc ↔ medium, mo ↔ small)
|
|
1422
|
+
* 미지정 시 breakpoint 기준: tablet 미만 mo(small), 이상 pc(medium). 지정 시 오버라이드
|
|
1423
|
+
*/
|
|
1424
|
+
size?: TextFieldSize;
|
|
1425
|
+
/** 에러 상태 */
|
|
1426
|
+
error?: boolean;
|
|
1427
|
+
/** Help text */
|
|
1428
|
+
description?: React.ReactNode;
|
|
1429
|
+
/** 최대 문자 수 제한 */
|
|
1430
|
+
maxLength?: number;
|
|
1431
|
+
/**
|
|
1432
|
+
* 글자 수 카운트 표시 여부 (예: "99/100")
|
|
1433
|
+
* maxLength가 있을 때만 동작하며, 기본값은 true
|
|
1434
|
+
* @default true
|
|
1435
|
+
*/
|
|
1436
|
+
showCount?: boolean;
|
|
1437
|
+
/** Help text 아이콘 (true면 기본 아이콘, 노드면 커스텀) */
|
|
1438
|
+
accentIcon?: boolean | React.ReactNode;
|
|
1439
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
1440
|
+
onFocus?: (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
1441
|
+
onBlur?: (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
1442
|
+
onCopy?: React.ClipboardEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
1443
|
+
onCut?: React.ClipboardEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
1444
|
+
onPaste?: React.ClipboardEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
1445
|
+
onSelect?: React.ReactEventHandler<HTMLInputElement | HTMLTextAreaElement>;
|
|
1446
|
+
}
|
|
1447
|
+
interface TextFieldInputProps extends TextFieldBaseProps, Omit<React.InputHTMLAttributes<HTMLElement>, "size" | "title" | "type" | keyof TextFieldBaseProps> {
|
|
1448
|
+
/** 컴포넌트 타입: input (기본) */
|
|
1449
|
+
type?: "input";
|
|
1450
|
+
/** 왼쪽 아이콘 */
|
|
1451
|
+
prefixIcon?: React.ReactNode;
|
|
1452
|
+
/** 오른쪽 아이콘 */
|
|
1453
|
+
suffixIcon?: React.ReactNode;
|
|
1454
|
+
/** 오른쪽 단위 (타이머 등) */
|
|
1455
|
+
suffixUnit?: React.ReactNode;
|
|
1456
|
+
/** HTML input type (text, password, email 등) */
|
|
1457
|
+
inputType?: React.HTMLInputTypeAttribute;
|
|
1458
|
+
}
|
|
1459
|
+
interface TextFieldAreaProps extends TextFieldBaseProps, Omit<React.TextareaHTMLAttributes<HTMLElement>, "size" | "title" | "type" | keyof TextFieldBaseProps> {
|
|
1460
|
+
/** 컴포넌트 타입: textarea */
|
|
1461
|
+
type: "area";
|
|
1462
|
+
/**
|
|
1463
|
+
* textarea 높이 (px 또는 CSS 문자열). 내용이 넘치면 스크롤 생성.
|
|
1464
|
+
* @default 120
|
|
1465
|
+
*/
|
|
1466
|
+
minHeight?: number | string;
|
|
1467
|
+
}
|
|
1468
|
+
type TextFieldProps = TextFieldInputProps | TextFieldAreaProps;
|
|
1469
|
+
/** TextField 컴포넌트는 사용자로부터 텍스트 입력을 받는 폼 컴포넌트입니다. input과 textarea를 통합합니다. */
|
|
1470
|
+
declare const TextField: (props: TextFieldProps) => react_jsx_runtime.JSX.Element;
|
|
1471
|
+
|
|
1125
1472
|
type LogoType = "likelion-eng" | "likelion-kr" | "bootcamp" | "symbol" | "favicon" | "og-image";
|
|
1126
1473
|
type LogoColor = "primary" | "black" | "white";
|
|
1127
1474
|
type LogoSize = "large" | "medium" | "small" | "favicon" | "og-image";
|
|
@@ -1201,4 +1548,4 @@ declare const LAYOUT_SYSTEM: {
|
|
|
1201
1548
|
};
|
|
1202
1549
|
};
|
|
1203
1550
|
|
|
1204
|
-
export { ActionButton, type ActionButtonProps, type AlertOptions, BREAKPOINTS, Badge, type BadgeProps, type BadgeType, type BadgeVariant, BreakpointProvider, ActionButton as Button, type ButtonColor, type ActionButtonProps as ButtonProps, type ButtonSize, type ButtonState, type ButtonType, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, type ChipSize, type ChipType, type ChipVariant, type ConfirmOptions, Dialog, type DialogActionColor, type DialogActionItem, type DialogActionSize, type DialogActionType, type DialogAlign, type DialogFooterLayout, type DialogOptions, type DialogProps, DialogProvider, type DialogVariant, IconButton, type IconButtonColor, type IconButtonProps, type IconButtonSize, type IconButtonState, type IconButtonType, LAYOUT_SYSTEM, Logo, type LogoColor, type LogoProps, type LogoSize, type LogoType, MEDIA_QUERIES, Pagination, type PaginationProps, RadioButton, RadioButtonGroup, type RadioButtonGroupProps, type RadioButtonProps, SelectBox, type SelectBoxClassName, type SelectBoxProps, type SelectBoxSize, type SelectBoxState, type SelectBoxStyle, type SelectBoxType, SelectHeader, type SelectHeaderProps, type SelectHeaderType, SelectMenu, type SelectMenuItem, SelectMenuOverlay, TAILWIND_SCREENS, Tab, TabGroup, type TabGroupProps, type TabProps, type TabSize, type TabType, Tag, type TagProps, type TagSize, type TagState, type TagType, Text, type TextDecoration,
|
|
1551
|
+
export { ActionButton, type ActionButtonProps, type AlertOptions, BREAKPOINTS, Badge, type BadgeProps, type BadgeType, type BadgeVariant, BreakpointProvider, ActionButton as Button, type ButtonColor, type ActionButtonProps as ButtonProps, type ButtonSize, type ButtonState, type ButtonType, Calendar, type CalendarProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, type ChipSize, type ChipType, type ChipVariant, type ConfirmOptions, DateInput, type DateInputProps, type DateInputSlot, type DateInputState, type DateInputType, DatePicker, type DatePickerProps, type DatePickerRangeProps, type DatePickerSingleProps, type DatePickerSlot, type DatePickerType, Dialog, type DialogActionColor, type DialogActionItem, type DialogActionSize, type DialogActionType, type DialogAlign, type DialogFooterLayout, type DialogOptions, type DialogProps, DialogProvider, type DialogVariant, IconButton, type IconButtonColor, type IconButtonProps, type IconButtonSize, type IconButtonState, type IconButtonType, LAYOUT_SYSTEM, Logo, type LogoColor, type LogoProps, type LogoSize, type LogoType, MEDIA_QUERIES, Pagination, type PaginationProps, RadioButton, RadioButtonGroup, type RadioButtonGroupProps, type RadioButtonProps, SelectBox, type SelectBoxClassName, type SelectBoxProps, type SelectBoxSize, type SelectBoxState, type SelectBoxStyle, type SelectBoxType, SelectHeader, type SelectHeaderProps, type SelectHeaderType, SelectMenu, type SelectMenuItem, SelectMenuOverlay, TAILWIND_SCREENS, Tab, TabGroup, type TabGroupProps, type TabProps, type TabSize, type TabType, Tag, type TagProps, type TagSize, type TagState, type TagType, Text, type TextDecoration, TextField, type TextFieldProps, type TextFieldSize, type TextFieldState, type TextFieldType, type TextProps, type TextVariant, TimePicker, type TimePickerProps, Toast, type ToastHorizontalAlign, type ToastOptions, type ToastPosition, type ToastProps, ToastProvider, type ToastSize, type ToastState, Toggle, type ToggleProps, type ToggleSize, Tooltip, type TooltipPosition, type TooltipProps, type TooltipType, type UseCheckboxGroupOptions, type UseCheckboxGroupResult, formatDate, parseDate, useBreakpoint, useCheckboxGroup, useDialog, useMediaQuery, useToast };
|