@bigtablet/design-system 3.4.1 → 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 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
  }
@@ -5050,6 +5055,14 @@
5050
5055
  width: 0%;
5051
5056
  }
5052
5057
  }
5058
+ @keyframes toast_progress_reduced {
5059
+ from {
5060
+ width: 0;
5061
+ }
5062
+ to {
5063
+ width: 0;
5064
+ }
5065
+ }
5053
5066
  .toast_container {
5054
5067
  position: fixed;
5055
5068
  top: 16px;
@@ -5186,6 +5199,16 @@
5186
5199
  .toast_progress_default {
5187
5200
  background: var(--bt-color-text-body);
5188
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
+ }
5189
5212
 
5190
5213
  /* src/ui/forms/toggle/style.scss */
5191
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
- interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
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: ({ variant, size, leadingIcon, trailingIcon, fullWidth, radius, danger, type, ref, className, children, ...props }: ButtonProps) => React$1.JSX.Element;
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";
@@ -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.JSX.Element | null;
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 {
@@ -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.JSX.Element | null;
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) */