@bigtablet/design-system 3.4.0 → 3.5.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 +35 -1
- package/dist/index.d.ts +58 -10
- package/dist/index.js +473 -278
- package/dist/styles/layout/_index.scss +4 -1
- package/dist/vanilla/bigtablet.min.css +1 -1
- package/dist/vanilla/bigtablet.min.js +16 -16
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -1634,7 +1634,6 @@
|
|
|
1634
1634
|
.tooltip_position {
|
|
1635
1635
|
position: absolute;
|
|
1636
1636
|
z-index: 1000;
|
|
1637
|
-
pointer-events: none;
|
|
1638
1637
|
display: block;
|
|
1639
1638
|
width: max-content;
|
|
1640
1639
|
}
|
|
@@ -1696,6 +1695,7 @@
|
|
|
1696
1695
|
cursor: pointer;
|
|
1697
1696
|
overflow: hidden;
|
|
1698
1697
|
white-space: nowrap;
|
|
1698
|
+
text-decoration: none;
|
|
1699
1699
|
font-size: 14px;
|
|
1700
1700
|
font-weight: 500;
|
|
1701
1701
|
line-height: 20px;
|
|
@@ -1722,6 +1722,11 @@
|
|
|
1722
1722
|
.button:disabled {
|
|
1723
1723
|
cursor: not-allowed;
|
|
1724
1724
|
}
|
|
1725
|
+
.button_disabled {
|
|
1726
|
+
cursor: not-allowed;
|
|
1727
|
+
opacity: 0.38;
|
|
1728
|
+
pointer-events: none;
|
|
1729
|
+
}
|
|
1725
1730
|
.button_size_sm {
|
|
1726
1731
|
min-height: 32px;
|
|
1727
1732
|
}
|
|
@@ -4507,6 +4512,17 @@
|
|
|
4507
4512
|
border-radius: 8px;
|
|
4508
4513
|
background: var(--bt-color-bg-solid);
|
|
4509
4514
|
}
|
|
4515
|
+
.table_sr_only {
|
|
4516
|
+
position: absolute;
|
|
4517
|
+
width: 1px;
|
|
4518
|
+
height: 1px;
|
|
4519
|
+
padding: 0;
|
|
4520
|
+
margin: -1px;
|
|
4521
|
+
overflow: hidden;
|
|
4522
|
+
clip: rect(0, 0, 0, 0);
|
|
4523
|
+
white-space: nowrap;
|
|
4524
|
+
border: 0;
|
|
4525
|
+
}
|
|
4510
4526
|
.table {
|
|
4511
4527
|
width: 100%;
|
|
4512
4528
|
border-collapse: collapse;
|
|
@@ -5039,6 +5055,14 @@
|
|
|
5039
5055
|
width: 0%;
|
|
5040
5056
|
}
|
|
5041
5057
|
}
|
|
5058
|
+
@keyframes toast_progress_reduced {
|
|
5059
|
+
from {
|
|
5060
|
+
width: 0;
|
|
5061
|
+
}
|
|
5062
|
+
to {
|
|
5063
|
+
width: 0;
|
|
5064
|
+
}
|
|
5065
|
+
}
|
|
5042
5066
|
.toast_container {
|
|
5043
5067
|
position: fixed;
|
|
5044
5068
|
top: 16px;
|
|
@@ -5175,6 +5199,16 @@
|
|
|
5175
5199
|
.toast_progress_default {
|
|
5176
5200
|
background: var(--bt-color-text-body);
|
|
5177
5201
|
}
|
|
5202
|
+
.toast_item:hover .toast_progress,
|
|
5203
|
+
.toast_item:focus-within .toast_progress {
|
|
5204
|
+
animation-play-state: paused;
|
|
5205
|
+
}
|
|
5206
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5207
|
+
.toast_progress {
|
|
5208
|
+
animation-name: toast_progress_reduced;
|
|
5209
|
+
width: 0;
|
|
5210
|
+
}
|
|
5211
|
+
}
|
|
5178
5212
|
|
|
5179
5213
|
/* src/ui/forms/toggle/style.scss */
|
|
5180
5214
|
@keyframes skeleton_loading {
|
package/dist/index.d.ts
CHANGED
|
@@ -544,7 +544,7 @@ interface TabProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
|
544
544
|
/** 이 tab의 value */
|
|
545
545
|
value: string;
|
|
546
546
|
}
|
|
547
|
-
declare const Tab: ({ value, className, children, onClick, ...props }: TabProps) => React$1.JSX.Element;
|
|
547
|
+
declare const Tab: ({ value, className, children, onClick, onKeyDown, ...props }: TabProps) => React$1.JSX.Element;
|
|
548
548
|
interface TabPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
549
549
|
/** 이 panel을 활성화할 tab의 value */
|
|
550
550
|
value: string;
|
|
@@ -1119,6 +1119,11 @@ interface AlertOptions {
|
|
|
1119
1119
|
onConfirm?: () => void;
|
|
1120
1120
|
/** 취소 버튼 클릭 시 호출되는 콜백 */
|
|
1121
1121
|
onCancel?: () => void;
|
|
1122
|
+
/**
|
|
1123
|
+
* 오버레이 클릭으로 닫기 허용 여부 (기본값: true).
|
|
1124
|
+
* destructive 확인처럼 실수 닫힘을 막아야 하면 false 로.
|
|
1125
|
+
*/
|
|
1126
|
+
closeOnOverlay?: boolean;
|
|
1122
1127
|
}
|
|
1123
1128
|
interface AlertContextValue {
|
|
1124
1129
|
showAlert: (options: AlertOptions) => void;
|
|
@@ -1130,7 +1135,8 @@ declare const AlertProvider: React$1.FC<{
|
|
|
1130
1135
|
|
|
1131
1136
|
type ButtonVariant = "filled" | "tonal" | "outline" | "text";
|
|
1132
1137
|
type ButtonSize = "sm" | "md" | "lg" | "xl";
|
|
1133
|
-
|
|
1138
|
+
/** button/anchor 공통 스타일·콘텐츠 props */
|
|
1139
|
+
interface ButtonBaseProps {
|
|
1134
1140
|
/** 버튼 스타일 변형 (기본값: "filled") */
|
|
1135
1141
|
variant?: ButtonVariant;
|
|
1136
1142
|
/** 버튼 크기 (기본값: "md") */
|
|
@@ -1148,16 +1154,43 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
1148
1154
|
* filled: 빨간 bg, outline: 빨간 텍스트/border, tonal: 빨간 wash.
|
|
1149
1155
|
*/
|
|
1150
1156
|
danger?: boolean;
|
|
1157
|
+
/**
|
|
1158
|
+
* 비활성화. button 은 native `disabled`, anchor 는 `aria-disabled`+`tabIndex=-1`+
|
|
1159
|
+
* 클릭 차단으로 처리(anchor 엔 native disabled 가 없으므로).
|
|
1160
|
+
*/
|
|
1161
|
+
disabled?: boolean;
|
|
1162
|
+
}
|
|
1163
|
+
/** `<button>` 으로 렌더링 (기본) */
|
|
1164
|
+
interface ButtonAsButton extends ButtonBaseProps, Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, keyof ButtonBaseProps> {
|
|
1165
|
+
/** 렌더링할 요소 (기본값: "button") */
|
|
1166
|
+
as?: "button";
|
|
1167
|
+
/** button 렌더 시엔 href 를 허용하지 않음 (href 만 주면 anchor 로 분기되도록) */
|
|
1168
|
+
href?: never;
|
|
1151
1169
|
/** 루트 button 요소 ref (React 19 ref-as-prop) */
|
|
1152
1170
|
ref?: React$1.Ref<HTMLButtonElement>;
|
|
1153
1171
|
}
|
|
1172
|
+
/** `<a>` 로 렌더링 - 링크 시맨틱(우클릭 새 탭·미들클릭·SR 링크 안내) */
|
|
1173
|
+
interface ButtonAsAnchor extends ButtonBaseProps, Omit<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, keyof ButtonBaseProps> {
|
|
1174
|
+
/** anchor 로 렌더링 - 생략 가능(href 만 줘도 anchor 로 분기) */
|
|
1175
|
+
as?: "a";
|
|
1176
|
+
/** 링크 대상 (anchor 필수) */
|
|
1177
|
+
href: string;
|
|
1178
|
+
/** 루트 anchor 요소 ref (React 19 ref-as-prop) */
|
|
1179
|
+
ref?: React$1.Ref<HTMLAnchorElement>;
|
|
1180
|
+
}
|
|
1181
|
+
/**
|
|
1182
|
+
* Button props - `as`/`href` 에 따라 button 또는 anchor 로 렌더링되는 discriminated union.
|
|
1183
|
+
* `as` 미지정 시 기본 `<button>` (기존 동작과 100% 호환).
|
|
1184
|
+
*/
|
|
1185
|
+
type ButtonProps = ButtonAsButton | ButtonAsAnchor;
|
|
1154
1186
|
/**
|
|
1155
1187
|
* 버튼을 렌더링한다.
|
|
1156
1188
|
* Figma DS 기준 4가지 variant(filled/tonal/outline/text)와 4가지 size(sm/md/lg/xl)를 지원한다.
|
|
1189
|
+
* `as="a"` (또는 `href` 지정) 시 동일 스타일의 anchor 로 렌더링한다.
|
|
1157
1190
|
* @param props 버튼 속성
|
|
1158
|
-
* @returns 렌더링된
|
|
1191
|
+
* @returns 렌더링된 button 또는 anchor 요소
|
|
1159
1192
|
*/
|
|
1160
|
-
declare const Button: (
|
|
1193
|
+
declare const Button: (props: ButtonProps) => React$1.JSX.Element;
|
|
1161
1194
|
|
|
1162
1195
|
type CardVariant = "default" | "accent" | "glass" | "outlined";
|
|
1163
1196
|
type CardFooterAlign = "start" | "between" | "end";
|
|
@@ -1243,8 +1276,10 @@ interface ChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClic
|
|
|
1243
1276
|
onClick?: (event: React$1.MouseEvent<HTMLButtonElement>) => void;
|
|
1244
1277
|
/** 삭제 버튼 클릭 시 콜백 */
|
|
1245
1278
|
onRemove?: () => void;
|
|
1279
|
+
/** 삭제 버튼 접근성 레이블 (기본값: "{label} 제거") - 칩이 여러 개일 때 대상 구분용 */
|
|
1280
|
+
removeLabel?: string;
|
|
1246
1281
|
}
|
|
1247
|
-
declare const Chip: ({ type, size, tone, label, selected, removable, disabled, open, leadingIcon, onClick, onRemove, className, ...props }: ChipProps) => React$1.JSX.Element;
|
|
1282
|
+
declare const Chip: ({ type, size, tone, label, selected, removable, disabled, open, leadingIcon, onClick, onRemove, removeLabel, className, ...props }: ChipProps) => React$1.JSX.Element;
|
|
1248
1283
|
|
|
1249
1284
|
type DatePickerMode = "year-month" | "year-month-day";
|
|
1250
1285
|
type SelectableRange = "all" | "until-today";
|
|
@@ -1317,7 +1352,7 @@ declare const Divider: ({ weight, className, ...props }: DividerProps) => React$
|
|
|
1317
1352
|
|
|
1318
1353
|
/** Drawer 가 미끄러져 들어오는 방향 (top 은 범위 외) */
|
|
1319
1354
|
type DrawerPlacement = "left" | "right" | "bottom";
|
|
1320
|
-
interface DrawerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1355
|
+
interface DrawerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "onClick" | "onKeyDown" | "role"> {
|
|
1321
1356
|
/** 드로어 열림 여부 */
|
|
1322
1357
|
open: boolean;
|
|
1323
1358
|
/** 드로어 닫기 콜백 */
|
|
@@ -1347,7 +1382,7 @@ interface DrawerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "titl
|
|
|
1347
1382
|
* @returns 열림 상태일 때 렌더링된 드로어, 닫힘 상태면 null
|
|
1348
1383
|
*/
|
|
1349
1384
|
declare const Drawer: {
|
|
1350
|
-
({ open, onClose, placement, size, title, footer, closeOnOverlay, showCloseIcon, closeLabel, ariaLabel, children, className, ...props }: DrawerProps): React$1.
|
|
1385
|
+
({ open, onClose, placement, size, title, footer, closeOnOverlay, showCloseIcon, closeLabel, ariaLabel, children, className, ...props }: DrawerProps): React$1.ReactPortal | null;
|
|
1351
1386
|
displayName: string;
|
|
1352
1387
|
};
|
|
1353
1388
|
|
|
@@ -1404,6 +1439,11 @@ interface DropdownCommonProps {
|
|
|
1404
1439
|
emptyText?: string;
|
|
1405
1440
|
/** 멀티 선택 요약 텍스트 (기본값: "N개 선택") */
|
|
1406
1441
|
selectedSummary?: (count: number) => string;
|
|
1442
|
+
/**
|
|
1443
|
+
* 네이티브 폼 제출 참여용 name. 지정 시 선택 값이 hidden input 으로 렌더되어
|
|
1444
|
+
* `<form>` POST 에 포함됩니다 (multiple 은 같은 name 의 hidden input 반복).
|
|
1445
|
+
*/
|
|
1446
|
+
name?: string;
|
|
1407
1447
|
}
|
|
1408
1448
|
/** 단일 선택 (기본) */
|
|
1409
1449
|
interface DropdownSingleProps extends DropdownCommonProps {
|
|
@@ -1644,7 +1684,7 @@ interface MediaCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "t
|
|
|
1644
1684
|
declare const MediaCard: ({ image, imagePosition, aspectRatio, heading, headingAs: HeadingTag, eyebrow, shadow, bordered, clickable, meta, children, className, ...props }: MediaCardProps) => React$1.JSX.Element;
|
|
1645
1685
|
|
|
1646
1686
|
type ModalFooterAlign = "end" | "between" | "start";
|
|
1647
|
-
interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1687
|
+
interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "onClick" | "onKeyDown" | "role"> {
|
|
1648
1688
|
/** 모달 열림 여부 */
|
|
1649
1689
|
open: boolean;
|
|
1650
1690
|
/** 모달 닫기 콜백 */
|
|
@@ -1674,7 +1714,7 @@ interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title
|
|
|
1674
1714
|
* @param props 모달 속성
|
|
1675
1715
|
* @returns 열림 상태일 때 렌더링된 모달, 닫힘 상태면 null
|
|
1676
1716
|
*/
|
|
1677
|
-
declare const Modal: ({ open, onClose, closeOnOverlay, width, title, description, footer, footerAlign, showCloseIcon, closeLabel, children, className, ariaLabel, ...props }: ModalProps) => React$1.
|
|
1717
|
+
declare const Modal: ({ open, onClose, closeOnOverlay, width, title, description, footer, footerAlign, showCloseIcon, closeLabel, children, className, ariaLabel, ...props }: ModalProps) => React$1.ReactPortal | null;
|
|
1678
1718
|
|
|
1679
1719
|
interface OtpInputProps {
|
|
1680
1720
|
/** OTP 자릿수 (기본값: 6) */
|
|
@@ -1897,6 +1937,14 @@ type TableProps<T extends object> = {
|
|
|
1897
1937
|
className?: string;
|
|
1898
1938
|
/** 행 클릭 콜백 */
|
|
1899
1939
|
onRowClick?: (item: T, index: number) => void;
|
|
1940
|
+
/**
|
|
1941
|
+
* clickable 행(onRowClick)의 동작 설명. 각 clickable 행에 `aria-describedby` 로 연결된다 (기본값: "클릭 가능한 행").
|
|
1942
|
+
* 행마다 셀 데이터가 이미 행을 식별하므로 여기엔 동작만 담으면 된다 (예: "선택하면 상세 항목으로 이동").
|
|
1943
|
+
* `""`(빈 문자열)로 두면 힌트를 붙이지 않는다.
|
|
1944
|
+
* `aria-label` 대신 `aria-describedby` 를 쓰는 이유: `<tr>` 의 `aria-label`/`role="button"` 은 행/셀의
|
|
1945
|
+
* accessible name 을 덮거나 셀을 presentational 로 만들어 스크린리더가 셀 데이터를 못 읽는다.
|
|
1946
|
+
*/
|
|
1947
|
+
rowClickHint?: string;
|
|
1900
1948
|
/** 현재 정렬 상태 (제어형). `undefined` 는 정렬 없음 */
|
|
1901
1949
|
sort?: TableSort;
|
|
1902
1950
|
/** 정렬 가능한 헤더 클릭 시 발화 (none→asc→desc→none 순환). DS는 데이터를 직접 정렬하지 않음 - 정렬된 `data` 를 다시 전달해야 함 */
|
|
@@ -1911,7 +1959,7 @@ type TableProps<T extends object> = {
|
|
|
1911
1959
|
* @param props 테이블 속성
|
|
1912
1960
|
* @returns 테이블 컴포넌트
|
|
1913
1961
|
*/
|
|
1914
|
-
declare const Table: <T extends object>({ columns, data, keyExtractor, emptyMessage, isLoading, skeletonRows, size, hoverable, stickyHeader, ariaLabel, className, onRowClick, sort, onSortChange, selectAllAriaLabel, selectRowAriaLabel, selectable, rowKey, selectedKeys, onSelectionChange, }: TableProps<T>) => React$1.JSX.Element;
|
|
1962
|
+
declare const Table: <T extends object>({ columns, data, keyExtractor, emptyMessage, isLoading, skeletonRows, size, hoverable, stickyHeader, ariaLabel, className, onRowClick, rowClickHint, sort, onSortChange, selectAllAriaLabel, selectRowAriaLabel, selectable, rowKey, selectedKeys, onSelectionChange, }: TableProps<T>) => React$1.JSX.Element;
|
|
1915
1963
|
|
|
1916
1964
|
type ThemeMode = "light" | "dark" | "system";
|
|
1917
1965
|
type ResolvedTheme = "light" | "dark";
|