@bigtablet/design-system 1.24.2 → 1.26.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/README.md +10 -32
- package/dist/index.css +1466 -811
- package/dist/index.d.ts +330 -215
- package/dist/index.js +872 -584
- package/dist/styles/{scss/_a11y.scss → a11y/_index.scss} +1 -1
- package/dist/styles/border-width/_index.scss +11 -0
- package/dist/styles/{scss/_colors.scss → colors/_index.scss} +8 -0
- package/dist/styles/elevation/_index.scss +5 -0
- package/dist/styles/opacity/_index.scss +12 -0
- package/dist/styles/{scss/token.scss → token.scss} +3 -1
- package/dist/styles/{scss/_typography.scss → typography/_index.scss} +9 -2
- package/dist/vanilla/bigtablet.min.css +1 -1
- package/package.json +7 -13
- package/dist/next.css +0 -133
- package/dist/next.d.ts +0 -53
- package/dist/next.js +0 -148
- package/dist/styles/scss/_shadows.scss +0 -5
- /package/dist/styles/{scss/_breakpoints.scss → breakpoints/_index.scss} +0 -0
- /package/dist/styles/{scss/_layout.scss → layout/_index.scss} +0 -0
- /package/dist/styles/{scss/_motion.scss → motion/_index.scss} +0 -0
- /package/dist/styles/{scss/_radius.scss → radius/_index.scss} +0 -0
- /package/dist/styles/{scss/_skeleton.scss → skeleton/_index.scss} +0 -0
- /package/dist/styles/{scss/_spacing.scss → spacing/_index.scss} +0 -0
- /package/dist/styles/{scss/_z-index.scss → z-index/_index.scss} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import * as React$1 from 'react';
|
|
1
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
3
|
|
|
4
4
|
declare const a11y: {
|
|
5
5
|
readonly focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)";
|
|
@@ -35,6 +35,7 @@ declare const baseColors: {
|
|
|
35
35
|
readonly neutral300: "#999999";
|
|
36
36
|
readonly neutral400: "#B3B3B3";
|
|
37
37
|
readonly neutral500: "#888888";
|
|
38
|
+
readonly neutral600: "#6B6B6B";
|
|
38
39
|
readonly neutral700: "#666666";
|
|
39
40
|
readonly neutral900: "#121212";
|
|
40
41
|
readonly statusError: "#EF4444";
|
|
@@ -128,7 +129,7 @@ declare const radius: {
|
|
|
128
129
|
readonly full: "9999px";
|
|
129
130
|
};
|
|
130
131
|
|
|
131
|
-
declare const
|
|
132
|
+
declare const elevation: {
|
|
132
133
|
readonly level1: "0 1px 1px -1px rgba(0, 0, 0, 0.20), 0 3px 3px 0px rgba(0, 0, 0, 0.12)";
|
|
133
134
|
readonly level2: "0 2px 2px -2px rgba(0, 0, 0, 0.20), 0 6px 6px 0px rgba(0, 0, 0, 0.12)";
|
|
134
135
|
readonly level3: "0 3px 3px -3px rgba(0, 0, 0, 0.20), 0 9px 9px 0px rgba(0, 0, 0, 0.12)";
|
|
@@ -197,8 +198,15 @@ declare const baseTypography: {
|
|
|
197
198
|
readonly "48": "48px";
|
|
198
199
|
};
|
|
199
200
|
readonly fontWeight: {
|
|
201
|
+
readonly thin: "Thin";
|
|
202
|
+
readonly extraLight: "ExtraLight";
|
|
203
|
+
readonly light: "Light";
|
|
200
204
|
readonly regular: "Regular";
|
|
201
205
|
readonly medium: "Medium";
|
|
206
|
+
readonly semiBold: "SemiBold";
|
|
207
|
+
readonly bold: "Bold";
|
|
208
|
+
readonly extraBold: "ExtraBold";
|
|
209
|
+
readonly black: "Black";
|
|
202
210
|
};
|
|
203
211
|
readonly lineHeight: {
|
|
204
212
|
readonly "16": "16px";
|
|
@@ -422,35 +430,15 @@ declare const zIndex: {
|
|
|
422
430
|
readonly level5: 1000;
|
|
423
431
|
};
|
|
424
432
|
|
|
425
|
-
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
426
|
-
/** 카드 상단에 표시할 제목 */
|
|
427
|
-
heading?: React.ReactNode;
|
|
428
|
-
/** 제목에 사용할 시맨틱 헤딩 태그 (기본값: "h3"). 스크린리더 outline에 반영됩니다. */
|
|
429
|
-
headingAs?: "h2" | "h3" | "h4" | "h5" | "h6";
|
|
430
|
-
/** 카드 그림자 크기 (기본값: "sm") */
|
|
431
|
-
shadow?: "none" | "sm" | "md" | "lg";
|
|
432
|
-
/** 카드 내부 여백 (기본값: "md") */
|
|
433
|
-
padding?: "none" | "sm" | "md" | "lg";
|
|
434
|
-
/** 테두리 표시 여부 (기본값: false) */
|
|
435
|
-
bordered?: boolean;
|
|
436
|
-
}
|
|
437
|
-
/**
|
|
438
|
-
* 카드 컴포넌트를 렌더링한다.
|
|
439
|
-
* 그림자/패딩/테두리 옵션을 조합해 레이아웃 컨테이너를 구성한다.
|
|
440
|
-
* @param props 카드 속성
|
|
441
|
-
* @returns 렌더링된 카드 UI
|
|
442
|
-
*/
|
|
443
|
-
declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
|
|
444
|
-
|
|
445
433
|
type AlertVariant = "info" | "success" | "warning" | "error";
|
|
446
434
|
type AlertActionsAlign = "left" | "center" | "right";
|
|
447
435
|
interface AlertOptions {
|
|
448
436
|
/** 알림 스타일 변형 (기본값: "info") */
|
|
449
437
|
variant?: AlertVariant;
|
|
450
438
|
/** 알림 제목 */
|
|
451
|
-
title?: React.ReactNode;
|
|
439
|
+
title?: React$1.ReactNode;
|
|
452
440
|
/** 알림 본문 메시지 */
|
|
453
|
-
message?: React.ReactNode;
|
|
441
|
+
message?: React$1.ReactNode;
|
|
454
442
|
/** 확인 버튼 텍스트 (기본값: "확인") */
|
|
455
443
|
confirmText?: string;
|
|
456
444
|
/** 취소 버튼 텍스트 (기본값: "취소") */
|
|
@@ -479,99 +467,94 @@ declare const useAlert: () => AlertContextValue;
|
|
|
479
467
|
* @param props Provider 속성
|
|
480
468
|
* @returns 렌더링된 Provider와 모달
|
|
481
469
|
*/
|
|
482
|
-
declare const AlertProvider: React.FC<{
|
|
483
|
-
children: React.ReactNode;
|
|
470
|
+
declare const AlertProvider: React$1.FC<{
|
|
471
|
+
children: React$1.ReactNode;
|
|
484
472
|
}>;
|
|
485
473
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
*/
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
/** 앱 루트에서 감싸는 자식 요소 */
|
|
502
|
-
children: React.ReactNode;
|
|
503
|
-
/** 최대 동시 표시 토스트 수 (기본값: 5) */
|
|
504
|
-
maxCount?: number;
|
|
505
|
-
/** 토스트 닫기 버튼의 aria-label (기본값: "Close") */
|
|
506
|
-
closeAriaLabel?: string;
|
|
474
|
+
type ButtonVariant = "filled" | "tonal" | "outline" | "text";
|
|
475
|
+
type ButtonSize = "sm" | "md" | "xl";
|
|
476
|
+
interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
477
|
+
/** 버튼 스타일 변형 (기본값: "filled") */
|
|
478
|
+
variant?: ButtonVariant;
|
|
479
|
+
/** 버튼 크기 (기본값: "md") */
|
|
480
|
+
size?: ButtonSize;
|
|
481
|
+
/** 버튼 앞에 표시할 아이콘 */
|
|
482
|
+
leadingIcon?: React$1.ReactNode;
|
|
483
|
+
/** 버튼 뒤에 표시할 아이콘 */
|
|
484
|
+
trailingIcon?: React$1.ReactNode;
|
|
485
|
+
/** 버튼이 컨테이너의 전체 너비를 차지할지 여부 */
|
|
486
|
+
fullWidth?: boolean;
|
|
487
|
+
/** border-radius 토큰 (기본값: "full") */
|
|
488
|
+
radius?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "full";
|
|
507
489
|
}
|
|
508
490
|
/**
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
* @param props
|
|
512
|
-
* @returns 렌더링된
|
|
513
|
-
*/
|
|
514
|
-
declare const ToastProvider: ({ children, maxCount, closeAriaLabel, }: ToastProviderProps) => react_jsx_runtime.JSX.Element;
|
|
515
|
-
|
|
516
|
-
/**
|
|
517
|
-
* 토스트 메시지를 표시하는 훅.
|
|
518
|
-
* ToastProvider 내부에서만 사용할 수 있다.
|
|
519
|
-
* @returns 토스트 메시지 표시 함수 객체
|
|
491
|
+
* 버튼을 렌더링한다.
|
|
492
|
+
* Figma DS 기준 4가지 variant(filled/tonal/outline/text)와 3가지 size(sm/md/xl)를 지원한다.
|
|
493
|
+
* @param props 버튼 속성
|
|
494
|
+
* @returns 렌더링된 버튼 요소
|
|
520
495
|
*/
|
|
521
|
-
declare const
|
|
522
|
-
/** 성공 메시지를 표시한다 */
|
|
523
|
-
success: (message: string, duration?: number) => void;
|
|
524
|
-
/** 오류 메시지를 표시한다 */
|
|
525
|
-
error: (message: string, duration?: number) => void;
|
|
526
|
-
/** 경고 메시지를 표시한다 */
|
|
527
|
-
warning: (message: string, duration?: number) => void;
|
|
528
|
-
/** 정보 메시지를 표시한다 */
|
|
529
|
-
info: (message: string, duration?: number) => void;
|
|
530
|
-
/** 기본 메시지를 표시한다 */
|
|
531
|
-
message: (message: string, duration?: number) => void;
|
|
532
|
-
};
|
|
496
|
+
declare const Button: ({ variant, size, leadingIcon, trailingIcon, fullWidth, radius, className, children, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
|
|
533
497
|
|
|
534
|
-
interface
|
|
535
|
-
/**
|
|
536
|
-
|
|
537
|
-
/**
|
|
538
|
-
|
|
539
|
-
/**
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
|
|
543
|
-
/**
|
|
544
|
-
|
|
498
|
+
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
499
|
+
/** 카드 상단에 표시할 제목 */
|
|
500
|
+
heading?: React$1.ReactNode;
|
|
501
|
+
/** 제목에 사용할 시맨틱 헤딩 태그 (기본값: "h3"). 스크린리더 outline에 반영됩니다. */
|
|
502
|
+
headingAs?: "h2" | "h3" | "h4" | "h5" | "h6";
|
|
503
|
+
/** 카드 그림자 크기 (기본값: "sm") */
|
|
504
|
+
shadow?: "none" | "sm" | "md" | "lg";
|
|
505
|
+
/** 카드 내부 여백 (기본값: "md") */
|
|
506
|
+
padding?: "none" | "sm" | "md" | "lg";
|
|
507
|
+
/** 테두리 표시 여부 (기본값: false) */
|
|
508
|
+
bordered?: boolean;
|
|
545
509
|
}
|
|
546
510
|
/**
|
|
547
|
-
*
|
|
548
|
-
*
|
|
549
|
-
* @param props
|
|
550
|
-
* @returns 렌더링된
|
|
511
|
+
* 카드 컴포넌트를 렌더링한다.
|
|
512
|
+
* 그림자/패딩/테두리 옵션을 조합해 레이아웃 컨테이너를 구성한다.
|
|
513
|
+
* @param props 카드 속성
|
|
514
|
+
* @returns 렌더링된 카드 UI
|
|
551
515
|
*/
|
|
552
|
-
declare const
|
|
516
|
+
declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
|
|
553
517
|
|
|
554
|
-
interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
|
|
518
|
+
interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
|
|
555
519
|
/** 체크박스 옆에 표시할 라벨 */
|
|
556
|
-
label?: React.ReactNode;
|
|
557
|
-
/** 체크박스 크기 (기본값: "md") */
|
|
558
|
-
size?: "sm" | "md" | "lg";
|
|
520
|
+
label?: React$1.ReactNode;
|
|
559
521
|
/** 중간 선택(indeterminate) 상태 여부 */
|
|
560
522
|
indeterminate?: boolean;
|
|
523
|
+
/** 에러 상태 여부 */
|
|
524
|
+
error?: boolean;
|
|
561
525
|
/** 입력 요소 참조 */
|
|
562
|
-
ref?: React.Ref<HTMLInputElement>;
|
|
526
|
+
ref?: React$1.Ref<HTMLInputElement>;
|
|
563
527
|
}
|
|
564
528
|
/**
|
|
565
529
|
* 체크박스를 렌더링한다.
|
|
566
|
-
*
|
|
530
|
+
* Figma DS 기준 3가지 타입(Unselected/Checked/Indeterminate)과 state layer overlay를 지원한다.
|
|
567
531
|
* @param props 체크박스 속성
|
|
568
532
|
* @returns 렌더링된 체크박스 UI
|
|
569
533
|
*/
|
|
570
534
|
declare const Checkbox: {
|
|
571
|
-
({ label,
|
|
535
|
+
({ label, indeterminate, error, className, ref, ...props }: CheckboxProps): react_jsx_runtime.JSX.Element;
|
|
572
536
|
displayName: string;
|
|
573
537
|
};
|
|
574
538
|
|
|
539
|
+
type ChipType = "basic" | "input" | "filter";
|
|
540
|
+
interface ChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClick"> {
|
|
541
|
+
/** 칩 유형 (기본값: "basic") */
|
|
542
|
+
type?: ChipType;
|
|
543
|
+
/** 라벨 텍스트 */
|
|
544
|
+
label: string;
|
|
545
|
+
/** 선택 상태 */
|
|
546
|
+
selected?: boolean;
|
|
547
|
+
/** 삭제 가능 여부 (input 타입에서만 사용) */
|
|
548
|
+
removable?: boolean;
|
|
549
|
+
/** 비활성화 상태 */
|
|
550
|
+
disabled?: boolean;
|
|
551
|
+
/** 칩 클릭 시 콜백 */
|
|
552
|
+
onClick?: (event: React$1.MouseEvent<HTMLButtonElement>) => void;
|
|
553
|
+
/** 삭제 버튼 클릭 시 콜백 */
|
|
554
|
+
onRemove?: () => void;
|
|
555
|
+
}
|
|
556
|
+
declare const Chip: ({ type, label, selected, removable, disabled, onClick, onRemove, className, ...props }: ChipProps) => react_jsx_runtime.JSX.Element;
|
|
557
|
+
|
|
575
558
|
type DatePickerMode = "year-month" | "year-month-day";
|
|
576
559
|
type SelectableRange = "all" | "until-today";
|
|
577
560
|
interface DatePickerProps {
|
|
@@ -620,18 +603,47 @@ interface DatePickerProps {
|
|
|
620
603
|
/**
|
|
621
604
|
* 연/월/일 선택형 데이트 피커를 렌더링한다.
|
|
622
605
|
* 입력 값과 선택 범위를 기준으로 옵션을 계산하고, 선택 변경을 상위로 전달한다.
|
|
623
|
-
* @param props 데이트 피커 속성
|
|
624
|
-
* @returns 렌더링된 데이트 피커 UI
|
|
625
606
|
*/
|
|
626
|
-
declare const DatePicker: ({ label, value, onChange, mode, startYear, endYear, minDate, selectableRange, disabled, fullWidth, width, yearLabel, monthLabel, dayLabel, minDateSrFormat, selectableRangeUntilTodaySrText, }: DatePickerProps) => react_jsx_runtime.JSX.Element;
|
|
607
|
+
declare const DatePicker: ({ label, value, onChange, mode, startYear, endYear: endYearProp, minDate, selectableRange, disabled, fullWidth, width, yearLabel, monthLabel, dayLabel, minDateSrFormat, selectableRangeUntilTodaySrText, }: DatePickerProps) => react_jsx_runtime.JSX.Element;
|
|
608
|
+
|
|
609
|
+
interface DividerProps extends React$1.HTMLAttributes<HTMLHRElement> {
|
|
610
|
+
/** 구분선 두께 (기본값: "standard") */
|
|
611
|
+
weight?: "standard" | "heavy";
|
|
612
|
+
}
|
|
613
|
+
/**
|
|
614
|
+
* 구분선 컴포넌트를 렌더링한다.
|
|
615
|
+
* 콘텐츠 영역을 시각적으로 분리하는 수평 구분선을 표시한다.
|
|
616
|
+
* @param props 구분선 속성
|
|
617
|
+
* @returns 렌더링된 구분선 UI
|
|
618
|
+
*/
|
|
619
|
+
declare const Divider: ({ weight, className, ...props }: DividerProps) => react_jsx_runtime.JSX.Element;
|
|
620
|
+
|
|
621
|
+
type FABVariant = "primary" | "additive";
|
|
622
|
+
interface FABProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
623
|
+
/** FAB 스타일 변형 (기본값: "primary") */
|
|
624
|
+
variant?: FABVariant;
|
|
625
|
+
/** 표시할 아이콘 */
|
|
626
|
+
icon: React$1.ReactNode;
|
|
627
|
+
/** 접근성 레이블 (스크린 리더용, 아이콘 전용 버튼이므로 필수) */
|
|
628
|
+
"aria-label": string;
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* FAB(Floating Action Button)을 렌더링한다.
|
|
632
|
+
* 화면에서 가장 중요한 단일 액션을 강조하는 플로팅 버튼이다.
|
|
633
|
+
* @param props FAB 속성
|
|
634
|
+
* @returns 렌더링된 FAB 요소
|
|
635
|
+
*/
|
|
636
|
+
declare const FAB: ({ variant, icon, className, ...props }: FABProps) => react_jsx_runtime.JSX.Element;
|
|
627
637
|
|
|
628
|
-
interface FileInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
638
|
+
interface FileInputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
|
|
629
639
|
/** 파일 선택 버튼 라벨 텍스트 (기본값: "Choose file") */
|
|
630
640
|
label?: string;
|
|
631
641
|
/** 파일 선택 시 호출되는 콜백 */
|
|
632
642
|
onFiles?: (files: FileList | null) => void;
|
|
633
|
-
/**
|
|
634
|
-
|
|
643
|
+
/** 입력 필드 아래에 표시할 도움말 텍스트 (예: "PDF, DOC 파일만 업로드 가능합니다") */
|
|
644
|
+
supportingText?: string;
|
|
645
|
+
/** 이미지 파일 선택 시 썸네일 미리보기 표시 여부 (기본값: false) */
|
|
646
|
+
preview?: boolean;
|
|
635
647
|
}
|
|
636
648
|
/**
|
|
637
649
|
* 파일 입력 컴포넌트를 렌더링한다.
|
|
@@ -639,15 +651,119 @@ interface FileInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
|
639
651
|
* @param props 파일 입력 속성
|
|
640
652
|
* @returns 렌더링된 파일 입력 UI
|
|
641
653
|
*/
|
|
642
|
-
declare const FileInput: ({ label, onFiles,
|
|
654
|
+
declare const FileInput: ({ label, onFiles, supportingText, preview, className, disabled, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
|
|
655
|
+
|
|
656
|
+
type IconButtonVariant = "standard" | "filled" | "tonal" | "outlined";
|
|
657
|
+
type IconButtonSize = "sm" | "md";
|
|
658
|
+
interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
659
|
+
/** 아이콘 버튼 스타일 변형 (기본값: "standard") */
|
|
660
|
+
variant?: IconButtonVariant;
|
|
661
|
+
/** 아이콘 버튼 크기 (기본값: "md") */
|
|
662
|
+
size?: IconButtonSize;
|
|
663
|
+
/** 표시할 아이콘 */
|
|
664
|
+
icon: React$1.ReactNode;
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* 아이콘만 표시하는 버튼을 렌더링한다.
|
|
668
|
+
* Figma DS 기준 4가지 variant(standard/filled/tonal/outlined)와 2가지 size(sm/md)를 지원한다.
|
|
669
|
+
* @param props 아이콘 버튼 속성
|
|
670
|
+
* @returns 렌더링된 아이콘 버튼 요소
|
|
671
|
+
*/
|
|
672
|
+
declare const IconButton: ({ variant, size, icon, className, ...props }: IconButtonProps) => react_jsx_runtime.JSX.Element;
|
|
673
|
+
|
|
674
|
+
interface LinearProgressProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
675
|
+
/** 전체 단계 수 */
|
|
676
|
+
totalSteps: number;
|
|
677
|
+
/** 현재 단계 (0부터 totalSteps까지) */
|
|
678
|
+
currentStep: number;
|
|
679
|
+
/** 접근성 레이블 (스크린 리더용) */
|
|
680
|
+
"aria-label": string;
|
|
681
|
+
}
|
|
682
|
+
/**
|
|
683
|
+
* 선형 진행 표시기를 렌더링한다.
|
|
684
|
+
* 현재 단계와 전체 단계를 기반으로 진행률을 시각적으로 표시한다.
|
|
685
|
+
* @param props 진행 표시기 속성
|
|
686
|
+
* @returns 렌더링된 진행 표시기 요소
|
|
687
|
+
*/
|
|
688
|
+
declare const LinearProgress: ({ totalSteps, currentStep, className, ...props }: LinearProgressProps) => react_jsx_runtime.JSX.Element;
|
|
689
|
+
|
|
690
|
+
interface ListItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClick"> {
|
|
691
|
+
/** 오버라인 텍스트 (상단 작은 글씨) */
|
|
692
|
+
overline?: string;
|
|
693
|
+
/** 라벨 텍스트 (주요 텍스트) */
|
|
694
|
+
label: string;
|
|
695
|
+
/** 보조 텍스트 (라벨 아래) */
|
|
696
|
+
supportingText?: string;
|
|
697
|
+
/** 메타데이터 텍스트 (보조 정보) */
|
|
698
|
+
metadata?: string;
|
|
699
|
+
/** 왼쪽에 표시할 요소 (아이콘, 이미지, 체크박스 등) */
|
|
700
|
+
leadingElement?: React$1.ReactNode;
|
|
701
|
+
/** 오른쪽에 표시할 요소 (아이콘 버튼, 체크박스 등) */
|
|
702
|
+
trailingElement?: React$1.ReactNode;
|
|
703
|
+
/** 요소 정렬 (기본값: "top") */
|
|
704
|
+
alignment?: "top" | "middle";
|
|
705
|
+
/** 비활성화 상태 */
|
|
706
|
+
disabled?: boolean;
|
|
707
|
+
/** 클릭 시 콜백 */
|
|
708
|
+
onClick?: (event: React$1.MouseEvent<HTMLDivElement>) => void;
|
|
709
|
+
}
|
|
710
|
+
/**
|
|
711
|
+
* 리스트 아이템 컴포넌트를 렌더링한다.
|
|
712
|
+
* 리딩/트레일링 슬롯과 다양한 텍스트 구조를 지원한다.
|
|
713
|
+
* @param props 리스트 아이템 속성
|
|
714
|
+
* @returns 렌더링된 리스트 아이템 UI
|
|
715
|
+
*/
|
|
716
|
+
declare const ListItem: ({ overline, label, supportingText, metadata, leadingElement, trailingElement, alignment, disabled, onClick, className, ...props }: ListItemProps) => react_jsx_runtime.JSX.Element;
|
|
643
717
|
|
|
644
|
-
interface
|
|
718
|
+
interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
719
|
+
/** 모달 열림 여부 */
|
|
720
|
+
open: boolean;
|
|
721
|
+
/** 모달 닫기 콜백 */
|
|
722
|
+
onClose?: () => void;
|
|
723
|
+
/** 오버레이 클릭 시 닫기 여부 (기본값: true) */
|
|
724
|
+
closeOnOverlay?: boolean;
|
|
725
|
+
/** 모달 패널 너비 (기본값: 520) */
|
|
726
|
+
width?: number | string;
|
|
727
|
+
/** 모달 헤더에 표시할 제목 */
|
|
728
|
+
title?: React$1.ReactNode;
|
|
729
|
+
/** 모달 접근성 레이블(기본값: title 또는 "Dialog") */
|
|
730
|
+
ariaLabel?: string;
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* 모달을 렌더링한다.
|
|
734
|
+
* 포커스 트랩과 스크롤 잠금을 적용하고, 열림 상태에 따라 오버레이/패널을 구성한다.
|
|
735
|
+
* @param props 모달 속성
|
|
736
|
+
* @returns 열림 상태일 때 렌더링된 모달, 닫힘 상태면 null
|
|
737
|
+
*/
|
|
738
|
+
declare const Modal: ({ open, onClose, closeOnOverlay, width, title, children, className, ariaLabel, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
|
|
739
|
+
|
|
740
|
+
interface PaginationProps {
|
|
741
|
+
/** 현재 페이지 번호 (1-based) */
|
|
742
|
+
page: number;
|
|
743
|
+
/** 전체 페이지 수 */
|
|
744
|
+
totalPages: number;
|
|
745
|
+
/** 페이지 변경 시 호출되는 콜백 */
|
|
746
|
+
onChange: (page: number) => void;
|
|
747
|
+
/** 이전 페이지 버튼 aria-label (기본값: "Previous page") */
|
|
748
|
+
prevLabel?: string;
|
|
749
|
+
/** 다음 페이지 버튼 aria-label (기본값: "Next page") */
|
|
750
|
+
nextLabel?: string;
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* 페이지네이션을 렌더링한다.
|
|
754
|
+
* 이전/다음 버튼과 페이지 목록을 구성해 전달된 콜백으로 페이지 변경을 전달한다.
|
|
755
|
+
* @param props 페이지네이션 속성
|
|
756
|
+
* @returns 렌더링된 페이지네이션 UI
|
|
757
|
+
*/
|
|
758
|
+
declare const Pagination: ({ page, totalPages, onChange, prevLabel, nextLabel, }: PaginationProps) => react_jsx_runtime.JSX.Element;
|
|
759
|
+
|
|
760
|
+
interface RadioProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
|
|
645
761
|
/** 라디오 버튼 옆에 표시할 라벨 */
|
|
646
|
-
label?: React.ReactNode;
|
|
762
|
+
label?: React$1.ReactNode;
|
|
647
763
|
/** 라디오 버튼 크기 (기본값: "md") */
|
|
648
764
|
size?: "sm" | "md" | "lg";
|
|
649
765
|
/** 입력 요소 참조 */
|
|
650
|
-
ref?: React.Ref<HTMLInputElement>;
|
|
766
|
+
ref?: React$1.Ref<HTMLInputElement>;
|
|
651
767
|
}
|
|
652
768
|
/**
|
|
653
769
|
* 라디오 버튼을 렌더링한다.
|
|
@@ -660,7 +776,64 @@ declare const Radio: {
|
|
|
660
776
|
displayName: string;
|
|
661
777
|
};
|
|
662
778
|
|
|
663
|
-
|
|
779
|
+
type SelectSize = "sm" | "md" | "lg";
|
|
780
|
+
type SelectVariant = "outline" | "filled" | "ghost";
|
|
781
|
+
interface SelectOption {
|
|
782
|
+
value: string;
|
|
783
|
+
label: string;
|
|
784
|
+
disabled?: boolean;
|
|
785
|
+
}
|
|
786
|
+
interface SelectProps {
|
|
787
|
+
/** 셀렉트 요소의 id (미입력 시 자동 생성) */
|
|
788
|
+
id?: string;
|
|
789
|
+
/** 셀렉트 위에 표시할 라벨 텍스트 */
|
|
790
|
+
label?: string;
|
|
791
|
+
/** 선택 전 표시할 플레이스홀더 (기본값: "Select…") */
|
|
792
|
+
placeholder?: string;
|
|
793
|
+
/** 표시할 옵션 목록 */
|
|
794
|
+
options: SelectOption[];
|
|
795
|
+
/** 제어형 선택 값 */
|
|
796
|
+
value?: string | null;
|
|
797
|
+
/** 값 변경 시 호출되는 콜백. 선택된 값과 전체 옵션 객체를 인자로 전달합니다. */
|
|
798
|
+
onChange?: (value: string | null, option?: SelectOption | null) => void;
|
|
799
|
+
/** 비제어형 초기 선택 값 */
|
|
800
|
+
defaultValue?: string | null;
|
|
801
|
+
/** 비활성화 여부 */
|
|
802
|
+
disabled?: boolean;
|
|
803
|
+
/** 셀렉트 크기 (기본값: "md") */
|
|
804
|
+
size?: SelectSize;
|
|
805
|
+
/** 셀렉트 스타일 변형 (기본값: "outline") */
|
|
806
|
+
variant?: SelectVariant;
|
|
807
|
+
/** 컨테이너 전체 너비 차지 여부 */
|
|
808
|
+
fullWidth?: boolean;
|
|
809
|
+
/** 루트 요소에 추가할 className */
|
|
810
|
+
className?: string;
|
|
811
|
+
/** 선택된 값 텍스트 정렬 (기본값: "left") */
|
|
812
|
+
textAlign?: "left" | "center";
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* 셀렉트 컴포넌트를 렌더링한다.
|
|
816
|
+
* 제어형/비제어형 상태를 정리하고, 키보드/마우스 상호작용과 드롭다운 표시를 관리한다.
|
|
817
|
+
* @param props 셀렉트 속성
|
|
818
|
+
* @returns 렌더링된 셀렉트 UI
|
|
819
|
+
*/
|
|
820
|
+
declare const Select: ({ id, label, placeholder, options, value, onChange, defaultValue, disabled, size, variant, fullWidth, className, textAlign, }: SelectProps) => react_jsx_runtime.JSX.Element;
|
|
821
|
+
|
|
822
|
+
interface SpinnerProps {
|
|
823
|
+
/** 스피너 크기(px) (기본값: 24) */
|
|
824
|
+
size?: number;
|
|
825
|
+
/** 스피너 접근성 레이블 (기본값: "Loading") */
|
|
826
|
+
ariaLabel?: string;
|
|
827
|
+
}
|
|
828
|
+
/**
|
|
829
|
+
* 스피너를 렌더링한다.
|
|
830
|
+
* 크기와 접근성 레이블을 적용한 뒤 상태 표시용 요소를 반환한다.
|
|
831
|
+
* @param props 스피너 속성
|
|
832
|
+
* @returns 렌더링된 스피너 요소
|
|
833
|
+
*/
|
|
834
|
+
declare const Spinner: ({ size, ariaLabel }: SpinnerProps) => react_jsx_runtime.JSX.Element;
|
|
835
|
+
|
|
836
|
+
interface SwitchProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "onChange"> {
|
|
664
837
|
/** 제어형 스위치 상태 */
|
|
665
838
|
checked?: boolean;
|
|
666
839
|
/** 비제어형 초기 스위치 상태 */
|
|
@@ -674,7 +847,7 @@ interface SwitchProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
|
674
847
|
/** 스위치 접근성 레이블(스크린 리더용) */
|
|
675
848
|
ariaLabel: string;
|
|
676
849
|
/** 버튼 요소 참조 */
|
|
677
|
-
ref?: React.Ref<HTMLButtonElement>;
|
|
850
|
+
ref?: React$1.Ref<HTMLButtonElement>;
|
|
678
851
|
}
|
|
679
852
|
/**
|
|
680
853
|
* 스위치를 렌더링한다.
|
|
@@ -687,25 +860,19 @@ declare const Switch: {
|
|
|
687
860
|
displayName: string;
|
|
688
861
|
};
|
|
689
862
|
|
|
690
|
-
|
|
691
|
-
type TextFieldSize = "sm" | "md" | "lg";
|
|
692
|
-
interface TextFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "onChange" | "value" | "defaultValue"> {
|
|
863
|
+
interface TextFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "onChange" | "value" | "defaultValue"> {
|
|
693
864
|
/** 입력 필드 위에 표시할 라벨 텍스트 */
|
|
694
865
|
label?: string;
|
|
866
|
+
/** 라벨 표시 여부 (기본값: true) */
|
|
867
|
+
showLabel?: boolean;
|
|
695
868
|
/** 입력 필드 아래에 표시할 도움말 텍스트 */
|
|
696
|
-
|
|
869
|
+
supportingText?: string;
|
|
697
870
|
/** 에러 상태 여부 */
|
|
698
871
|
error?: boolean;
|
|
699
|
-
/** 성공 상태 여부 */
|
|
700
|
-
success?: boolean;
|
|
701
|
-
/** 입력 필드 스타일 변형 (기본값: "outline") */
|
|
702
|
-
variant?: TextFieldVariant;
|
|
703
|
-
/** 입력 필드 크기 (기본값: "md") */
|
|
704
|
-
size?: TextFieldSize;
|
|
705
872
|
/** 입력 필드 왼쪽에 표시할 아이콘 */
|
|
706
|
-
|
|
873
|
+
leadingIcon?: React$1.ReactNode;
|
|
707
874
|
/** 입력 필드 오른쪽에 표시할 아이콘 */
|
|
708
|
-
|
|
875
|
+
trailingIcon?: React$1.ReactNode;
|
|
709
876
|
/** 컨테이너 전체 너비 차지 여부 */
|
|
710
877
|
fullWidth?: boolean;
|
|
711
878
|
/** 값 변경 시 호출되는 콜백 (IME 조합 완료 후 실행) */
|
|
@@ -717,123 +884,71 @@ interface TextFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement
|
|
|
717
884
|
/** 입력값 변환 함수 (예: 숫자만 허용, 대문자 변환) */
|
|
718
885
|
transformValue?: (value: string) => string;
|
|
719
886
|
/** 입력 요소 참조 */
|
|
720
|
-
ref?: React.Ref<HTMLInputElement>;
|
|
887
|
+
ref?: React$1.Ref<HTMLInputElement>;
|
|
721
888
|
}
|
|
722
889
|
/**
|
|
723
890
|
* 텍스트 필드를 렌더링한다.
|
|
724
|
-
*
|
|
891
|
+
* Figma DS 기준 outlined 스타일 + floating label을 지원한다.
|
|
725
892
|
* @param props 텍스트 필드 속성
|
|
726
893
|
* @returns 렌더링된 텍스트 필드 UI
|
|
727
894
|
*/
|
|
728
895
|
declare const TextField: {
|
|
729
|
-
({ id, label,
|
|
896
|
+
({ id, label, showLabel, supportingText, error, leadingIcon, trailingIcon, fullWidth, className, onChangeAction, value, defaultValue, transformValue, ref, ...props }: TextFieldProps): react_jsx_runtime.JSX.Element;
|
|
730
897
|
displayName: string;
|
|
731
898
|
};
|
|
732
899
|
|
|
733
|
-
interface
|
|
734
|
-
/**
|
|
735
|
-
|
|
736
|
-
/**
|
|
737
|
-
|
|
738
|
-
/**
|
|
739
|
-
|
|
740
|
-
/**
|
|
741
|
-
* 버튼의 커스텀 너비
|
|
742
|
-
* @deprecated `fullWidth` 사용 또는 CSS로 처리
|
|
743
|
-
*/
|
|
744
|
-
width?: string;
|
|
745
|
-
}
|
|
746
|
-
/**
|
|
747
|
-
* 버튼을 렌더링한다.
|
|
748
|
-
* 전달된 props로 클래스 조합과 인라인 스타일을 계산한 뒤 버튼 요소를 반환한다.
|
|
749
|
-
* @param props 버튼 속성
|
|
750
|
-
* @returns 렌더링된 버튼 요소
|
|
751
|
-
*/
|
|
752
|
-
declare const Button: ({ variant, size, fullWidth, width, className, style, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
|
|
753
|
-
|
|
754
|
-
type SelectSize = "sm" | "md" | "lg";
|
|
755
|
-
type SelectVariant = "outline" | "filled" | "ghost";
|
|
756
|
-
interface SelectOption {
|
|
757
|
-
value: string;
|
|
758
|
-
label: string;
|
|
759
|
-
disabled?: boolean;
|
|
760
|
-
}
|
|
761
|
-
interface SelectProps {
|
|
762
|
-
/** 셀렉트 요소의 id (미입력 시 자동 생성) */
|
|
763
|
-
id?: string;
|
|
764
|
-
/** 셀렉트 위에 표시할 라벨 텍스트 */
|
|
765
|
-
label?: string;
|
|
766
|
-
/** 선택 전 표시할 플레이스홀더 (기본값: "Select…") */
|
|
767
|
-
placeholder?: string;
|
|
768
|
-
/** 표시할 옵션 목록 */
|
|
769
|
-
options: SelectOption[];
|
|
770
|
-
/** 제어형 선택 값 */
|
|
771
|
-
value?: string | null;
|
|
772
|
-
/** 값 변경 시 호출되는 콜백. 선택된 값과 전체 옵션 객체를 인자로 전달합니다. */
|
|
773
|
-
onChange?: (value: string | null, option?: SelectOption | null) => void;
|
|
774
|
-
/** 비제어형 초기 선택 값 */
|
|
775
|
-
defaultValue?: string | null;
|
|
776
|
-
/** 비활성화 여부 */
|
|
777
|
-
disabled?: boolean;
|
|
778
|
-
/** 셀렉트 크기 (기본값: "md") */
|
|
779
|
-
size?: SelectSize;
|
|
780
|
-
/** 셀렉트 스타일 변형 (기본값: "outline") */
|
|
781
|
-
variant?: SelectVariant;
|
|
782
|
-
/** 컨테이너 전체 너비 차지 여부 */
|
|
783
|
-
fullWidth?: boolean;
|
|
784
|
-
/** 루트 요소에 추가할 className */
|
|
785
|
-
className?: string;
|
|
786
|
-
/** 선택된 값 텍스트 정렬 (기본값: "left") */
|
|
787
|
-
textAlign?: "left" | "center";
|
|
900
|
+
interface ToastProviderProps {
|
|
901
|
+
/** 앱 루트에서 감싸는 자식 요소 */
|
|
902
|
+
children: React$1.ReactNode;
|
|
903
|
+
/** 최대 동시 표시 토스트 수 (기본값: 5) */
|
|
904
|
+
maxCount?: number;
|
|
905
|
+
/** 토스트 닫기 버튼의 aria-label (기본값: "Close") */
|
|
906
|
+
closeAriaLabel?: string;
|
|
788
907
|
}
|
|
789
908
|
/**
|
|
790
|
-
*
|
|
791
|
-
*
|
|
792
|
-
* @param props
|
|
793
|
-
* @returns 렌더링된
|
|
909
|
+
* 토스트 컨텍스트를 제공하는 Provider를 렌더링한다.
|
|
910
|
+
* 앱 최상단에서 children을 감싸야 useToast 훅을 사용할 수 있다.
|
|
911
|
+
* @param props Provider 속성
|
|
912
|
+
* @returns 렌더링된 Provider와 토스트 컨테이너
|
|
794
913
|
*/
|
|
795
|
-
declare const
|
|
914
|
+
declare const ToastProvider: ({ children, maxCount, closeAriaLabel, }: ToastProviderProps) => react_jsx_runtime.JSX.Element;
|
|
796
915
|
|
|
797
|
-
interface PaginationProps {
|
|
798
|
-
/** 현재 페이지 번호 (1-based) */
|
|
799
|
-
page: number;
|
|
800
|
-
/** 전체 페이지 수 */
|
|
801
|
-
totalPages: number;
|
|
802
|
-
/** 페이지 변경 시 호출되는 콜백 */
|
|
803
|
-
onChange: (page: number) => void;
|
|
804
|
-
/** 이전 페이지 버튼 aria-label (기본값: "Previous page") */
|
|
805
|
-
prevLabel?: string;
|
|
806
|
-
/** 다음 페이지 버튼 aria-label (기본값: "Next page") */
|
|
807
|
-
nextLabel?: string;
|
|
808
|
-
}
|
|
809
916
|
/**
|
|
810
|
-
*
|
|
811
|
-
*
|
|
812
|
-
* @
|
|
813
|
-
* @returns 렌더링된 페이지네이션 UI
|
|
917
|
+
* 토스트 메시지를 표시하는 훅.
|
|
918
|
+
* ToastProvider 내부에서만 사용할 수 있다.
|
|
919
|
+
* @returns 토스트 메시지 표시 함수 객체
|
|
814
920
|
*/
|
|
815
|
-
declare const
|
|
921
|
+
declare const useToast: () => {
|
|
922
|
+
/** 성공 메시지를 표시한다 */
|
|
923
|
+
success: (message: string, duration?: number) => void;
|
|
924
|
+
/** 오류 메시지를 표시한다 */
|
|
925
|
+
error: (message: string, duration?: number) => void;
|
|
926
|
+
/** 경고 메시지를 표시한다 */
|
|
927
|
+
warning: (message: string, duration?: number) => void;
|
|
928
|
+
/** 정보 메시지를 표시한다 */
|
|
929
|
+
info: (message: string, duration?: number) => void;
|
|
930
|
+
/** 기본 메시지를 표시한다 */
|
|
931
|
+
message: (message: string, duration?: number) => void;
|
|
932
|
+
};
|
|
816
933
|
|
|
817
|
-
interface
|
|
818
|
-
/**
|
|
819
|
-
|
|
820
|
-
/**
|
|
821
|
-
|
|
822
|
-
/**
|
|
823
|
-
|
|
824
|
-
/**
|
|
825
|
-
|
|
826
|
-
/**
|
|
827
|
-
title?: React.ReactNode;
|
|
828
|
-
/** 모달 접근성 레이블(기본값: title 또는 "Dialog") */
|
|
934
|
+
interface TopLoadingProps {
|
|
935
|
+
/** 진행률 (0-100). undefined면 indeterminate 모드 */
|
|
936
|
+
progress?: number;
|
|
937
|
+
/** 로딩바 색상 (기본: primary) */
|
|
938
|
+
color?: string;
|
|
939
|
+
/** 로딩바 높이 (기본: 3px) */
|
|
940
|
+
height?: number;
|
|
941
|
+
/** 표시 여부 */
|
|
942
|
+
isLoading?: boolean;
|
|
943
|
+
/** 프로그레스 바의 접근성 레이블 (기본값: "Page loading") */
|
|
829
944
|
ariaLabel?: string;
|
|
830
945
|
}
|
|
831
946
|
/**
|
|
832
|
-
*
|
|
833
|
-
*
|
|
834
|
-
* @param props
|
|
835
|
-
* @returns
|
|
947
|
+
* 상단 로딩바를 렌더링한다.
|
|
948
|
+
* 표시 여부와 진행률에 따라 determinate/indeterminate 상태를 구성한다.
|
|
949
|
+
* @param props 로딩바 속성
|
|
950
|
+
* @returns 렌더링된 로딩바 요소 또는 null
|
|
836
951
|
*/
|
|
837
|
-
declare const
|
|
952
|
+
declare const TopLoading: ({ progress, color, height, isLoading, ariaLabel, }: TopLoadingProps) => react_jsx_runtime.JSX.Element | null;
|
|
838
953
|
|
|
839
|
-
export { AlertProvider, Button, Card, Checkbox, DatePicker, FileInput, Modal, Pagination, Radio, Select, type SelectOption, Spinner, Switch, TextField, ToastProvider, TopLoading, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, colors, motion, opacity, radius,
|
|
954
|
+
export { AlertProvider, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipType, DatePicker, Divider, type DividerProps, FAB, type FABProps, type FABVariant, FileInput, type FileInputProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, LinearProgress, type LinearProgressProps, ListItem, type ListItemProps, Modal, type ModalProps, Pagination, type PaginationProps, Radio, type RadioProps, Select, type SelectOption, type SelectProps, Spinner, type SpinnerProps, Switch, type SwitchProps, TextField, type TextFieldProps, ToastProvider, TopLoading, type TopLoadingProps, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useToast, zIndex };
|