@bigtablet/design-system 3.2.2 → 3.4.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.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import * as React$1 from 'react';
2
2
  import * as _react_spring_web from '@react-spring/web';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
3
  import { LucideProps, LucideIcon } from 'lucide-react';
5
4
  export { LucideIcon, LucideProps } from 'lucide-react';
6
5
 
@@ -37,6 +36,21 @@ declare const cn: (...classes: ClassValue[]) => string;
37
36
 
38
37
  declare function useFocusTrap(containerRef: React$1.RefObject<HTMLElement | null>, isActive: boolean): void;
39
38
 
39
+ /**
40
+ * 사용자가 OS 수준에서 "동작 줄이기"를 켰는지 반환한다 (WCAG 2.3.3).
41
+ * spring 훅이나 JS 애니메이션에서 모션을 끌 때 사용. SSR에서는 false.
42
+ *
43
+ * React 표준 `useSyncExternalStore` 로 matchMedia 를 구독한다 - 불필요한
44
+ * 마운트 리렌더 없이 hydration-safe 하게 동작.
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * const reduced = useReducedMotion();
49
+ * const style = useSpring({ ..., immediate: reduced });
50
+ * ```
51
+ */
52
+ declare function useReducedMotion(): boolean;
53
+
40
54
  /**
41
55
  * 마우스 hover 시 spring 기반 lift 효과를 만든다. 카드/CTA 강조에 사용.
42
56
  *
@@ -100,7 +114,9 @@ interface AccordionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
100
114
  defaultOpenKeys?: string[];
101
115
  /** 제어형: 펼쳐진 키들 */
102
116
  openKeys?: string[];
103
- /** 펼침/접힘 콜백 */
117
+ /** 펼침/접힘 콜백 (canonical). 열린 키 배열 전달 */
118
+ onValueChange?: (openKeys: string[]) => void;
119
+ /** @deprecated `onValueChange` 를 사용하세요. */
104
120
  onChange?: (openKeys: string[]) => void;
105
121
  }
106
122
  /**
@@ -111,7 +127,7 @@ interface AccordionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "o
111
127
  * <Accordion items={faqItems} multiple />
112
128
  * ```
113
129
  */
114
- declare const Accordion: ({ items, multiple, defaultOpenKeys, openKeys: controlledKeys, onChange, className, ...props }: AccordionProps) => react_jsx_runtime.JSX.Element;
130
+ declare const Accordion: ({ items, multiple, defaultOpenKeys, openKeys: controlledKeys, onValueChange, onChange, className, ...props }: AccordionProps) => React$1.JSX.Element;
115
131
 
116
132
  type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
117
133
  type AvatarShape = "circle" | "square";
@@ -137,7 +153,7 @@ interface AvatarProps extends React$1.HTMLAttributes<HTMLSpanElement> {
137
153
  * <Avatar name="Sangmin Park" size="lg" /> // initials "SP"
138
154
  * ```
139
155
  */
140
- declare const Avatar: ({ src, name, size, shape, bgColor, className, style, ...props }: AvatarProps) => react_jsx_runtime.JSX.Element;
156
+ declare const Avatar: ({ src, name, size, shape, bgColor, className, style, ...props }: AvatarProps) => React$1.JSX.Element;
141
157
 
142
158
  type BadgeVariant = "accent" | "neutral" | "info" | "success" | "warning" | "error";
143
159
  type BadgeShape = "dot" | "count" | "label";
@@ -177,7 +193,7 @@ interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
177
193
  * <Badge variant="success" appearance="soft">+5%</Badge>
178
194
  * ```
179
195
  */
180
- declare const Badge: ({ variant, shape, size, appearance, count, max, className, children, ...props }: BadgeProps) => react_jsx_runtime.JSX.Element;
196
+ declare const Badge: ({ variant, shape, size, appearance, count, max, className, children, ...props }: BadgeProps) => React$1.JSX.Element;
181
197
 
182
198
  interface BottomNavProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onChange"> {
183
199
  /** 스크린 리더 레이블 (기본 "주요 메뉴") */
@@ -202,7 +218,7 @@ interface BottomNavProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onCh
202
218
  * <BottomNavSpacer />
203
219
  * ```
204
220
  */
205
- declare const BottomNav: ({ ariaLabel, className, children, ...props }: BottomNavProps) => react_jsx_runtime.JSX.Element;
221
+ declare const BottomNav: ({ ariaLabel, className, children, ...props }: BottomNavProps) => React$1.JSX.Element;
206
222
  interface BottomNavItemCommon {
207
223
  /** 아이콘 (필수) */
208
224
  icon: React$1.ReactNode;
@@ -228,12 +244,12 @@ type BottomNavItemProps = BottomNavItemButton | BottomNavItemAnchor;
228
244
  * `BottomNav` 의 항목. icon + label 수직 스택.
229
245
  * active 시 `aria-current="page"` 자동 부여.
230
246
  */
231
- declare const BottomNavItem: (props: BottomNavItemProps) => react_jsx_runtime.JSX.Element;
247
+ declare const BottomNavItem: (props: BottomNavItemProps) => React$1.JSX.Element;
232
248
  /**
233
249
  * 페이지 본문 끝에 두면 `BottomNav` 가 콘텐츠를 가리지 않게 빈 공간 확보.
234
250
  * `--bt-bottom-nav-height` (+ safe-area) 만큼 height.
235
251
  */
236
- declare const BottomNavSpacer: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
252
+ declare const BottomNavSpacer: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => React$1.JSX.Element;
237
253
 
238
254
  interface BreadcrumbItem {
239
255
  /** 표시 텍스트 */
@@ -261,7 +277,7 @@ interface BreadcrumbProps extends React$1.HTMLAttributes<HTMLElement> {
261
277
  * ]} />
262
278
  * ```
263
279
  */
264
- declare const Breadcrumb: ({ items, separator, className, ...props }: BreadcrumbProps) => react_jsx_runtime.JSX.Element;
280
+ declare const Breadcrumb: ({ items, separator, className, ...props }: BreadcrumbProps) => React$1.JSX.Element;
265
281
 
266
282
  interface EmptyStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
267
283
  /** 일러스트 영역 (아이콘/이미지 등) */
@@ -288,7 +304,7 @@ interface EmptyStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "
288
304
  * />
289
305
  * ```
290
306
  */
291
- declare const EmptyState: ({ illustration, title, description, action, size, className, ...props }: EmptyStateProps) => react_jsx_runtime.JSX.Element;
307
+ declare const EmptyState: ({ illustration, title, description, action, size, className, ...props }: EmptyStateProps) => React$1.JSX.Element;
292
308
 
293
309
  type ErrorStateVariant = "page" | "widget";
294
310
  interface ErrorStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
@@ -324,7 +340,7 @@ interface ErrorStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "
324
340
  * <ErrorState variant="widget" title="불러오기 실패" action={<Button size="sm" onClick={retry}>재시도</Button>} />
325
341
  * ```
326
342
  */
327
- declare const ErrorState: ({ title, description, icon, action, variant, className, ...props }: ErrorStateProps) => react_jsx_runtime.JSX.Element;
343
+ declare const ErrorState: ({ title, description, icon, action, variant, className, ...props }: ErrorStateProps) => React$1.JSX.Element;
328
344
 
329
345
  interface MenuItem {
330
346
  key: string;
@@ -359,7 +375,7 @@ interface MenuProps {
359
375
  * />
360
376
  * ```
361
377
  */
362
- declare const Menu: ({ items, trigger, align }: MenuProps) => react_jsx_runtime.JSX.Element;
378
+ declare const Menu: ({ items, trigger, align }: MenuProps) => React$1.JSX.Element;
363
379
 
364
380
  type NavBarVariant = "default" | "transparent" | "accent";
365
381
  type NavBarLayout = "contained" | "fluid";
@@ -372,8 +388,10 @@ interface NavBarLocaleConfig {
372
388
  current: string;
373
389
  /** 가능한 옵션 */
374
390
  options: NavBarLocaleOption[];
375
- /** locale 변경 콜백 */
376
- onChange: (next: string) => void;
391
+ /** locale 변경 콜백 (canonical) */
392
+ onValueChange?: (next: string) => void;
393
+ /** @deprecated `onValueChange` 를 사용하세요. */
394
+ onChange?: (next: string) => void;
377
395
  /** 표시 라벨 - 기본은 옵션의 label, 미지정 시 short code 표시 */
378
396
  hideLabel?: boolean;
379
397
  }
@@ -419,12 +437,12 @@ interface NavBarProps extends React$1.HTMLAttributes<HTMLElement> {
419
437
  * />
420
438
  * ```
421
439
  */
422
- declare const NavBar: ({ brand, searchSlot, actions, locale, profile, divider, variant, layout, sticky, className, children, ...props }: NavBarProps) => react_jsx_runtime.JSX.Element;
440
+ declare const NavBar: ({ brand, searchSlot, actions, locale, profile, divider, variant, layout, sticky, className, children, ...props }: NavBarProps) => React$1.JSX.Element;
423
441
  interface NavLinkProps extends React$1.AnchorHTMLAttributes<HTMLAnchorElement> {
424
442
  /** 현재 활성 페이지 여부 */
425
443
  active?: boolean;
426
444
  }
427
- declare const NavLink: ({ active, className, children, ...props }: NavLinkProps) => react_jsx_runtime.JSX.Element;
445
+ declare const NavLink: ({ active, className, children, ...props }: NavLinkProps) => React$1.JSX.Element;
428
446
 
429
447
  type SidebarMode = "auto" | "static";
430
448
  interface SidebarProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onChange"> {
@@ -470,7 +488,7 @@ interface SidebarProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onChan
470
488
  * </Sidebar>
471
489
  * ```
472
490
  */
473
- declare const Sidebar: ({ header, headerCollapsed, footer, collapsed: collapsedProp, defaultCollapsed, onCollapsedChange, collapsible, toggleLabel, width, collapsedWidth, mode, className, children, style, ...props }: SidebarProps) => react_jsx_runtime.JSX.Element;
491
+ declare const Sidebar: ({ header, headerCollapsed, footer, collapsed: collapsedProp, defaultCollapsed, onCollapsedChange, collapsible, toggleLabel, width, collapsedWidth, mode, className, children, style, ...props }: SidebarProps) => React$1.JSX.Element;
474
492
  interface SidebarItemCommon {
475
493
  /** 왼쪽 아이콘 */
476
494
  icon?: React$1.ReactNode;
@@ -488,13 +506,13 @@ type SidebarItemAnchor = SidebarItemCommon & {
488
506
  href: string;
489
507
  } & Omit<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, "type">;
490
508
  type SidebarItemProps = SidebarItemButton | SidebarItemAnchor;
491
- declare const SidebarItem: (props: SidebarItemProps) => react_jsx_runtime.JSX.Element;
509
+ declare const SidebarItem: (props: SidebarItemProps) => React$1.JSX.Element;
492
510
  interface SidebarSectionProps extends React$1.HTMLAttributes<HTMLDivElement> {
493
511
  /** 섹션 라벨 (collapsed 상태에선 hidden) */
494
512
  label?: string;
495
513
  }
496
514
  /** SidebarItem 그룹 라벨. collapsed에선 sr-only로 숨김. */
497
- declare const SidebarSection: ({ label, className, children, ...props }: SidebarSectionProps) => react_jsx_runtime.JSX.Element;
515
+ declare const SidebarSection: ({ label, className, children, ...props }: SidebarSectionProps) => React$1.JSX.Element;
498
516
 
499
517
  type TabsVariant = "line" | "fills";
500
518
  type TabsSize = "sm" | "md";
@@ -516,24 +534,24 @@ interface TabsProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChan
516
534
  * - 제어형: `value` + `onValueChange`
517
535
  * - 비제어형: `defaultValue`
518
536
  */
519
- declare const Tabs: ({ value: controlledValue, defaultValue, onValueChange, variant, size, className, children, ...props }: TabsProps) => react_jsx_runtime.JSX.Element;
537
+ declare const Tabs: ({ value: controlledValue, defaultValue, onValueChange, variant, size, className, children, ...props }: TabsProps) => React$1.JSX.Element;
520
538
  interface TabListProps extends React$1.HTMLAttributes<HTMLDivElement> {
521
539
  /** 스크린리더 라벨 */
522
540
  ariaLabel?: string;
523
541
  }
524
- declare const TabList: ({ ariaLabel, className, children, ...props }: TabListProps) => react_jsx_runtime.JSX.Element;
542
+ declare const TabList: ({ ariaLabel, className, children, ...props }: TabListProps) => React$1.JSX.Element;
525
543
  interface TabProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
526
544
  /** 이 tab의 value */
527
545
  value: string;
528
546
  }
529
- declare const Tab: ({ value, className, children, onClick, ...props }: TabProps) => react_jsx_runtime.JSX.Element;
547
+ declare const Tab: ({ value, className, children, onClick, ...props }: TabProps) => React$1.JSX.Element;
530
548
  interface TabPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
531
549
  /** 이 panel을 활성화할 tab의 value */
532
550
  value: string;
533
551
  /** 비활성 panel을 unmount 할지 (기본 true). false면 display: none으로 유지 */
534
552
  unmountInactive?: boolean;
535
553
  }
536
- declare const TabPanel: ({ value, unmountInactive, className, children, ...props }: TabPanelProps) => react_jsx_runtime.JSX.Element | null;
554
+ declare const TabPanel: ({ value, unmountInactive, className, children, ...props }: TabPanelProps) => React$1.JSX.Element | null;
537
555
 
538
556
  type PopoverPlacement = "top" | "bottom" | "left" | "right";
539
557
  interface PopoverProps {
@@ -576,7 +594,7 @@ interface PopoverProps {
576
594
  * ```
577
595
  */
578
596
  declare const Popover: {
579
- ({ trigger, content, placement, open: openProp, defaultOpen, onOpenChange, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, className, }: PopoverProps): react_jsx_runtime.JSX.Element;
597
+ ({ trigger, content, placement, open: openProp, defaultOpen, onOpenChange, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, className, }: PopoverProps): React$1.JSX.Element;
580
598
  displayName: string;
581
599
  };
582
600
 
@@ -602,7 +620,7 @@ interface TooltipProps {
602
620
  * </Tooltip>
603
621
  * ```
604
622
  */
605
- declare const Tooltip: ({ content, placement, delay, disabled, children, }: TooltipProps) => react_jsx_runtime.JSX.Element;
623
+ declare const Tooltip: ({ content, placement, delay, disabled, children, }: TooltipProps) => React$1.JSX.Element;
606
624
 
607
625
  declare const a11y: {
608
626
  readonly focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)";
@@ -652,10 +670,11 @@ declare const baseColors: {
652
670
  readonly neutral900: "#121212";
653
671
  readonly neutral925: "#141414";
654
672
  readonly neutral950: "#0A0A0A";
655
- readonly statusError: "#EF4444";
656
- readonly statusSuccess: "#10B981";
657
- readonly statusWarning: "#F59E0B";
658
- readonly statusInfo: "#3B82F6";
673
+ readonly textCaptionLight: "#6F6F6F";
674
+ readonly statusError: "#B91C1C";
675
+ readonly statusSuccess: "#047857";
676
+ readonly statusWarning: "#B45309";
677
+ readonly statusInfo: "#1D4ED8";
659
678
  readonly alphaBlack5: "rgba(0, 0, 0, 0.05)";
660
679
  readonly alphaBlack8: "rgba(0, 0, 0, 0.08)";
661
680
  readonly alphaBlack12: "rgba(26, 26, 26, 0.12)";
@@ -673,7 +692,7 @@ declare const colors: {
673
692
  readonly text: {
674
693
  readonly heading: "#121212";
675
694
  readonly body: "#666666";
676
- readonly caption: "#888888";
695
+ readonly caption: "#6F6F6F";
677
696
  readonly brand: "#121212";
678
697
  readonly inverse: "#FFFFFF";
679
698
  readonly disabled: "rgba(26, 26, 26, 0.38)";
@@ -700,10 +719,10 @@ declare const colors: {
700
719
  readonly disabled: "#F2F2F2";
701
720
  };
702
721
  readonly status: {
703
- readonly error: "#EF4444";
704
- readonly success: "#10B981";
705
- readonly warning: "#F59E0B";
706
- readonly info: "#3B82F6";
722
+ readonly error: "#B91C1C";
723
+ readonly success: "#047857";
724
+ readonly warning: "#B45309";
725
+ readonly info: "#1D4ED8";
707
726
  };
708
727
  readonly accent: {
709
728
  readonly subtle: "rgba(0, 0, 0, 0.05)";
@@ -723,6 +742,14 @@ declare const elevation: {
723
742
  readonly level5: "0 8px 10px -5px rgba(0, 0, 0, 0.20), 0 20px 20px 0px rgba(0, 0, 0, 0.12)";
724
743
  };
725
744
 
745
+ declare const iconSize: {
746
+ readonly xs: 14;
747
+ readonly sm: 16;
748
+ readonly md: 18;
749
+ readonly lg: 20;
750
+ readonly xl: 32;
751
+ };
752
+
726
753
  declare const motion: {
727
754
  readonly transition: {
728
755
  readonly fast: "0.1s ease-in-out";
@@ -1121,6 +1148,8 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
1121
1148
  * filled: 빨간 bg, outline: 빨간 텍스트/border, tonal: 빨간 wash.
1122
1149
  */
1123
1150
  danger?: boolean;
1151
+ /** 루트 button 요소 ref (React 19 ref-as-prop) */
1152
+ ref?: React$1.Ref<HTMLButtonElement>;
1124
1153
  }
1125
1154
  /**
1126
1155
  * 버튼을 렌더링한다.
@@ -1128,7 +1157,7 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
1128
1157
  * @param props 버튼 속성
1129
1158
  * @returns 렌더링된 버튼 요소
1130
1159
  */
1131
- declare const Button: ({ variant, size, leadingIcon, trailingIcon, fullWidth, radius, danger, className, children, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
1160
+ declare const Button: ({ variant, size, leadingIcon, trailingIcon, fullWidth, radius, danger, type, ref, className, children, ...props }: ButtonProps) => React$1.JSX.Element;
1132
1161
 
1133
1162
  type CardVariant = "default" | "accent" | "glass" | "outlined";
1134
1163
  type CardFooterAlign = "start" | "between" | "end";
@@ -1156,6 +1185,8 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1156
1185
  footer?: React$1.ReactNode;
1157
1186
  /** footer 정렬 (기본값: "end") */
1158
1187
  footerAlign?: CardFooterAlign;
1188
+ /** 루트 div 요소 ref (React 19 ref-as-prop) */
1189
+ ref?: React$1.Ref<HTMLDivElement>;
1159
1190
  }
1160
1191
  /**
1161
1192
  * 카드 컴포넌트를 렌더링한다.
@@ -1163,7 +1194,7 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1163
1194
  * @param props 카드 속성
1164
1195
  * @returns 렌더링된 카드 UI
1165
1196
  */
1166
- declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, variant, interactive, footer, footerAlign, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
1197
+ declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, variant, interactive, footer, footerAlign, ref, className, children, ...props }: CardProps) => React$1.JSX.Element;
1167
1198
 
1168
1199
  interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
1169
1200
  /** 체크박스 옆에 표시할 라벨 */
@@ -1182,7 +1213,7 @@ interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElemen
1182
1213
  * @returns 렌더링된 체크박스 UI
1183
1214
  */
1184
1215
  declare const Checkbox: {
1185
- ({ label, indeterminate, error, className, ref, ...props }: CheckboxProps): react_jsx_runtime.JSX.Element;
1216
+ ({ label, indeterminate, error, className, ref, ...props }: CheckboxProps): React$1.JSX.Element;
1186
1217
  displayName: string;
1187
1218
  };
1188
1219
 
@@ -1213,17 +1244,15 @@ interface ChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClic
1213
1244
  /** 삭제 버튼 클릭 시 콜백 */
1214
1245
  onRemove?: () => void;
1215
1246
  }
1216
- declare const Chip: ({ type, size, tone, label, selected, removable, disabled, open, leadingIcon, onClick, onRemove, className, ...props }: ChipProps) => react_jsx_runtime.JSX.Element;
1247
+ declare const Chip: ({ type, size, tone, label, selected, removable, disabled, open, leadingIcon, onClick, onRemove, className, ...props }: ChipProps) => React$1.JSX.Element;
1217
1248
 
1218
1249
  type DatePickerMode = "year-month" | "year-month-day";
1219
1250
  type SelectableRange = "all" | "until-today";
1220
- interface DatePickerProps {
1251
+ interface DatePickerBaseProps {
1221
1252
  /** 데이트 피커 위에 표시할 라벨 텍스트 */
1222
1253
  label?: string;
1223
1254
  /** 제어형 날짜 값 ("YYYY-MM" 또는 "YYYY-MM-DD" 형식) */
1224
1255
  value?: string;
1225
- /** 날짜 변경 시 호출되는 콜백. `mode` 값에 따라 "YYYY-MM" 또는 "YYYY-MM-DD" 형식의 문자열이 전달됩니다. */
1226
- onChange: (value: string) => void;
1227
1256
  /** 선택 모드 (기본값: "year-month-day") */
1228
1257
  mode?: DatePickerMode;
1229
1258
  /** 연도 선택 범위 시작 (기본값: 1950) */
@@ -1260,11 +1289,19 @@ interface DatePickerProps {
1260
1289
  */
1261
1290
  selectableRangeUntilTodaySrText?: string;
1262
1291
  }
1292
+ type DatePickerCallbacks = {
1293
+ onValueChange: (value: string) => void;
1294
+ onChange?: (value: string) => void;
1295
+ } | {
1296
+ onValueChange?: (value: string) => void;
1297
+ onChange: (value: string) => void;
1298
+ };
1299
+ type DatePickerProps = DatePickerBaseProps & DatePickerCallbacks;
1263
1300
  /**
1264
1301
  * 연/월/일 선택형 데이트 피커를 렌더링한다.
1265
1302
  * 내부적으로 DS Dropdown 3개를 조합해 드롭다운 UX 일관성을 유지한다.
1266
1303
  */
1267
- 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;
1304
+ declare const DatePicker: ({ label, value, onValueChange, onChange, mode, startYear, endYear: endYearProp, minDate, selectableRange, disabled, fullWidth, width, yearLabel, monthLabel, dayLabel, minDateSrFormat, selectableRangeUntilTodaySrText, }: DatePickerProps) => React$1.JSX.Element;
1268
1305
 
1269
1306
  interface DividerProps extends React$1.HTMLAttributes<HTMLHRElement> {
1270
1307
  /** 구분선 두께 (기본값: "standard") */
@@ -1276,7 +1313,43 @@ interface DividerProps extends React$1.HTMLAttributes<HTMLHRElement> {
1276
1313
  * @param props 구분선 속성
1277
1314
  * @returns 렌더링된 구분선 UI
1278
1315
  */
1279
- declare const Divider: ({ weight, className, ...props }: DividerProps) => react_jsx_runtime.JSX.Element;
1316
+ declare const Divider: ({ weight, className, ...props }: DividerProps) => React$1.JSX.Element;
1317
+
1318
+ /** Drawer 가 미끄러져 들어오는 방향 (top 은 범위 외) */
1319
+ type DrawerPlacement = "left" | "right" | "bottom";
1320
+ interface DrawerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1321
+ /** 드로어 열림 여부 */
1322
+ open: boolean;
1323
+ /** 드로어 닫기 콜백 */
1324
+ onClose?: () => void;
1325
+ /** 슬라이드 방향 (기본값: "right") */
1326
+ placement?: DrawerPlacement;
1327
+ /** 패널 크기 - left/right 는 너비, bottom 은 높이 (기본값: 360). number ⇒ px */
1328
+ size?: number | string;
1329
+ /** 드로어 제목 (헤더 h2, heading_small_bold) */
1330
+ title?: React$1.ReactNode;
1331
+ /** 하단 액션 영역 (Button들). 미지정 시 footer 영역 자체가 안 보임 */
1332
+ footer?: React$1.ReactNode;
1333
+ /** 오버레이 클릭 시 닫기 여부 (기본값: true) */
1334
+ closeOnOverlay?: boolean;
1335
+ /** 우상단 X 닫기 아이콘 표시 여부 (기본값: true) */
1336
+ showCloseIcon?: boolean;
1337
+ /** X 닫기 버튼 접근성 레이블 (기본값: "닫기") */
1338
+ closeLabel?: string;
1339
+ /** 드로어 접근성 레이블 (title 없을 때 사용, 기본값: "Dialog") */
1340
+ ariaLabel?: string;
1341
+ }
1342
+ /**
1343
+ * 화면 가장자리에서 미끄러져 들어오는 패널(Drawer)을 렌더링한다.
1344
+ * react-spring 기반 방향별 슬라이드 진입/퇴출 + 포커스 트랩 + 바디 스크롤 잠금.
1345
+ *
1346
+ * @param props 드로어 속성
1347
+ * @returns 열림 상태일 때 렌더링된 드로어, 닫힘 상태면 null
1348
+ */
1349
+ declare const Drawer: {
1350
+ ({ open, onClose, placement, size, title, footer, closeOnOverlay, showCloseIcon, closeLabel, ariaLabel, children, className, ...props }: DrawerProps): React$1.JSX.Element | null;
1351
+ displayName: string;
1352
+ };
1280
1353
 
1281
1354
  type DropdownSize = "sm" | "md" | "lg";
1282
1355
  interface DropdownOption {
@@ -1292,7 +1365,8 @@ interface DropdownOption {
1292
1365
  /** 아이템 아래 구분선 표시 여부 */
1293
1366
  showDivider?: boolean;
1294
1367
  }
1295
- interface DropdownProps {
1368
+ /** single/multiple 공통 속성 */
1369
+ interface DropdownCommonProps {
1296
1370
  /** 드롭다운 요소의 id (미입력 시 자동 생성) */
1297
1371
  id?: string;
1298
1372
  /** 드롭다운 위에 표시할 플로팅 라벨 텍스트 */
@@ -1301,12 +1375,6 @@ interface DropdownProps {
1301
1375
  placeholder?: string;
1302
1376
  /** 표시할 옵션 목록 */
1303
1377
  options: DropdownOption[];
1304
- /** 제어형 선택 값 */
1305
- value?: string | null;
1306
- /** 값 변경 시 호출되는 콜백. 선택된 값과 전체 옵션 객체를 인자로 전달합니다. */
1307
- onChange?: (value: string | null, option?: DropdownOption | null) => void;
1308
- /** 비제어형 초기 선택 값 */
1309
- defaultValue?: string | null;
1310
1378
  /** 비활성화 여부 */
1311
1379
  disabled?: boolean;
1312
1380
  /** 드롭다운 크기 (기본값: "md") */
@@ -1325,14 +1393,53 @@ interface DropdownProps {
1325
1393
  * @deprecated textAlign은 더 이상 지원되지 않습니다.
1326
1394
  */
1327
1395
  textAlign?: "left" | "center";
1396
+ /**
1397
+ * 검색 가능 여부. 활성화 시 열린 패널 상단에 검색 입력이 표시되고, 옵션 `label` 부분 일치로 필터링됩니다.
1398
+ * (기본값: false)
1399
+ */
1400
+ searchable?: boolean;
1401
+ /** 검색 입력의 placeholder (기본값: "검색…") */
1402
+ searchPlaceholder?: string;
1403
+ /** 필터 결과가 0개일 때 표시할 텍스트 (기본값: "결과 없음") */
1404
+ emptyText?: string;
1405
+ /** 멀티 선택 요약 텍스트 (기본값: "N개 선택") */
1406
+ selectedSummary?: (count: number) => string;
1407
+ }
1408
+ /** 단일 선택 (기본) */
1409
+ interface DropdownSingleProps extends DropdownCommonProps {
1410
+ /** 다중 선택 모드 (기본값: false) */
1411
+ multiple?: false;
1412
+ /** 제어형 선택 값 */
1413
+ value?: string | null;
1414
+ /** 값 변경 콜백 (canonical). 선택된 값과 전체 옵션 객체를 전달합니다. */
1415
+ onValueChange?: (value: string | null, option?: DropdownOption | null) => void;
1416
+ /** @deprecated `onValueChange` 를 사용하세요. */
1417
+ onChange?: (value: string | null, option?: DropdownOption | null) => void;
1418
+ /** 비제어형 초기 선택 값 */
1419
+ defaultValue?: string | null;
1328
1420
  }
1421
+ /** 다중 선택 */
1422
+ interface DropdownMultipleProps extends DropdownCommonProps {
1423
+ /** 다중 선택 모드 */
1424
+ multiple: true;
1425
+ /** 제어형 선택 값 목록 */
1426
+ value?: string[];
1427
+ /** 값 변경 콜백 (canonical). 선택된 값 목록과 옵션 객체 목록을 전달합니다. */
1428
+ onValueChange?: (values: string[], options: DropdownOption[]) => void;
1429
+ /** @deprecated `onValueChange` 를 사용하세요. */
1430
+ onChange?: (values: string[], options: DropdownOption[]) => void;
1431
+ /** 비제어형 초기 선택 값 목록 */
1432
+ defaultValue?: string[];
1433
+ }
1434
+ type DropdownProps = DropdownSingleProps | DropdownMultipleProps;
1329
1435
  /**
1330
1436
  * 드롭다운 컴포넌트를 렌더링한다.
1331
- * 제어형/비제어형 상태를 지원하며, 키보드/마우스 상호작용과 플로팅 라벨을 관리한다.
1437
+ * 제어형/비제어형 상태를 지원하며, 키보드/마우스 상호작용과 정적 라벨을 관리한다.
1438
+ * `searchable` 로 라벨 부분 일치 검색을, `multiple` 로 다중 선택을 opt-in 할 수 있다.
1332
1439
  * @param props 드롭다운 속성
1333
1440
  * @returns 렌더링된 드롭다운 UI
1334
1441
  */
1335
- declare const Dropdown: ({ id, label, placeholder, options, value, onChange, defaultValue, disabled, size, className, }: DropdownProps) => react_jsx_runtime.JSX.Element;
1442
+ declare const Dropdown: (props: DropdownProps) => React$1.JSX.Element;
1336
1443
 
1337
1444
  type FileInputVariant = "button" | "preview";
1338
1445
  interface FileInputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
@@ -1359,7 +1466,7 @@ interface FileInputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
1359
1466
  * @param props 파일 입력 속성
1360
1467
  * @returns 렌더링된 파일 입력 UI
1361
1468
  */
1362
- declare const FileInput: ({ label, onFiles, supportingText, preview, variant, previewSize, className, disabled, accept, onChange, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
1469
+ declare const FileInput: ({ label, onFiles, supportingText, preview, variant, previewSize, className, disabled, accept, onChange, ...props }: FileInputProps) => React$1.JSX.Element;
1363
1470
 
1364
1471
  interface HeroAction {
1365
1472
  /** 버튼 라벨 */
@@ -1408,7 +1515,7 @@ interface HeroProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "title"> {
1408
1515
  * @param props 히어로 속성
1409
1516
  * @returns 히어로 섹션
1410
1517
  */
1411
- declare const Hero: ({ height, align, backgroundImage, backgroundColor, overlay, title, subtitle, eyebrow, textColor, primaryAction, secondaryAction, children, className, style, ...props }: HeroProps) => react_jsx_runtime.JSX.Element;
1518
+ declare const Hero: ({ height, align, backgroundImage, backgroundColor, overlay, title, subtitle, eyebrow, textColor, primaryAction, secondaryAction, children, className, style, ...props }: HeroProps) => React$1.JSX.Element;
1412
1519
 
1413
1520
  interface IconProps extends Omit<LucideProps, "ref"> {
1414
1521
  /** lucide-react 아이콘 컴포넌트 */
@@ -1430,7 +1537,7 @@ interface IconProps extends Omit<LucideProps, "ref"> {
1430
1537
  * lucide-react 아이콘 전체 카탈로그: https://lucide.dev/icons/
1431
1538
  */
1432
1539
  declare const Icon: {
1433
- ({ icon: IconComponent, ...props }: IconProps): react_jsx_runtime.JSX.Element;
1540
+ ({ icon: IconComponent, ...props }: IconProps): React$1.JSX.Element;
1434
1541
  displayName: string;
1435
1542
  };
1436
1543
 
@@ -1443,6 +1550,8 @@ interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement
1443
1550
  size?: IconButtonSize;
1444
1551
  /** 표시할 아이콘 */
1445
1552
  icon: React$1.ReactNode;
1553
+ /** 루트 button 요소 ref (React 19 ref-as-prop) */
1554
+ ref?: React$1.Ref<HTMLButtonElement>;
1446
1555
  }
1447
1556
  /**
1448
1557
  * 아이콘만 표시하는 버튼을 렌더링한다.
@@ -1450,7 +1559,7 @@ interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement
1450
1559
  * @param props 아이콘 버튼 속성
1451
1560
  * @returns 렌더링된 아이콘 버튼 요소
1452
1561
  */
1453
- declare const IconButton: ({ variant, size, icon, className, ...props }: IconButtonProps) => react_jsx_runtime.JSX.Element;
1562
+ declare const IconButton: ({ variant, size, icon, type, ref, className, ...props }: IconButtonProps) => React$1.JSX.Element;
1454
1563
 
1455
1564
  interface LinearProgressProps extends React.HTMLAttributes<HTMLDivElement> {
1456
1565
  /** 전체 단계 수 */
@@ -1466,7 +1575,7 @@ interface LinearProgressProps extends React.HTMLAttributes<HTMLDivElement> {
1466
1575
  * @param props 진행 표시기 속성
1467
1576
  * @returns 렌더링된 진행 표시기 요소
1468
1577
  */
1469
- declare const LinearProgress: ({ totalSteps, currentStep, className, ...props }: LinearProgressProps) => react_jsx_runtime.JSX.Element;
1578
+ declare const LinearProgress: ({ totalSteps, currentStep, className, ...props }: LinearProgressProps) => React$1.JSX.Element;
1470
1579
 
1471
1580
  interface ListItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClick"> {
1472
1581
  /** 오버라인 (상단 작은 글씨). 문자열 또는 노드(강조/링크/아이콘) */
@@ -1496,7 +1605,7 @@ interface ListItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "on
1496
1605
  * @param props 리스트 아이템 속성
1497
1606
  * @returns 렌더링된 리스트 아이템 UI
1498
1607
  */
1499
- declare const ListItem: ({ overline, label, supportingText, metadata, leadingElement, trailingElement, alignment, disabled, selected, onClick, className, ...props }: ListItemProps) => react_jsx_runtime.JSX.Element;
1608
+ declare const ListItem: ({ overline, label, supportingText, metadata, leadingElement, trailingElement, alignment, disabled, selected, onClick, className, ...props }: ListItemProps) => React$1.JSX.Element;
1500
1609
 
1501
1610
  type MediaCardImagePosition = "top" | "left" | "overlay";
1502
1611
  type MediaCardShadow = "none" | "sm" | "md" | "lg";
@@ -1532,7 +1641,7 @@ interface MediaCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "t
1532
1641
  * @param props 카드 속성
1533
1642
  * @returns 이미지 카드
1534
1643
  */
1535
- declare const MediaCard: ({ image, imagePosition, aspectRatio, heading, headingAs: HeadingTag, eyebrow, shadow, bordered, clickable, meta, children, className, ...props }: MediaCardProps) => react_jsx_runtime.JSX.Element;
1644
+ declare const MediaCard: ({ image, imagePosition, aspectRatio, heading, headingAs: HeadingTag, eyebrow, shadow, bordered, clickable, meta, children, className, ...props }: MediaCardProps) => React$1.JSX.Element;
1536
1645
 
1537
1646
  type ModalFooterAlign = "end" | "between" | "start";
1538
1647
  interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
@@ -1565,14 +1674,16 @@ interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title
1565
1674
  * @param props 모달 속성
1566
1675
  * @returns 열림 상태일 때 렌더링된 모달, 닫힘 상태면 null
1567
1676
  */
1568
- declare const Modal: ({ open, onClose, closeOnOverlay, width, title, description, footer, footerAlign, showCloseIcon, closeLabel, children, className, ariaLabel, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
1677
+ declare const Modal: ({ open, onClose, closeOnOverlay, width, title, description, footer, footerAlign, showCloseIcon, closeLabel, children, className, ariaLabel, ...props }: ModalProps) => React$1.JSX.Element | null;
1569
1678
 
1570
1679
  interface OtpInputProps {
1571
1680
  /** OTP 자릿수 (기본값: 6) */
1572
1681
  length?: 4 | 6;
1573
1682
  /** 제어형 값 */
1574
1683
  value?: string;
1575
- /** 값 변경 콜백 */
1684
+ /** 값 변경 콜백 (canonical) */
1685
+ onValueChange?: (value: string) => void;
1686
+ /** @deprecated `onValueChange` 를 사용하세요. */
1576
1687
  onChange?: (value: string) => void;
1577
1688
  /** 에러 상태 */
1578
1689
  error?: boolean;
@@ -1594,29 +1705,35 @@ interface OtpInputProps {
1594
1705
  * @returns 렌더링된 OTP 입력 요소
1595
1706
  */
1596
1707
  declare const OtpInput: {
1597
- ({ length, value, onChange, error, disabled, supportingText, autoFocus, ariaLabel, className, }: OtpInputProps): react_jsx_runtime.JSX.Element;
1708
+ ({ length, value, onValueChange, onChange, error, disabled, supportingText, autoFocus, ariaLabel, className, }: OtpInputProps): React$1.JSX.Element;
1598
1709
  displayName: string;
1599
1710
  };
1600
1711
 
1601
- interface PaginationProps {
1712
+ interface PaginationBaseProps {
1602
1713
  /** 현재 페이지 번호 (1-based) */
1603
1714
  page: number;
1604
1715
  /** 전체 페이지 수 */
1605
1716
  totalPages: number;
1606
- /** 페이지 변경 시 호출되는 콜백 */
1607
- onChange: (page: number) => void;
1608
1717
  /** 이전 페이지 버튼 aria-label (기본값: "Previous page") */
1609
1718
  prevLabel?: string;
1610
1719
  /** 다음 페이지 버튼 aria-label (기본값: "Next page") */
1611
1720
  nextLabel?: string;
1612
1721
  }
1722
+ type PaginationCallbacks = {
1723
+ onPageChange: (page: number) => void;
1724
+ onChange?: (page: number) => void;
1725
+ } | {
1726
+ onPageChange?: (page: number) => void;
1727
+ onChange: (page: number) => void;
1728
+ };
1729
+ type PaginationProps = PaginationBaseProps & PaginationCallbacks;
1613
1730
  /**
1614
1731
  * 페이지네이션을 렌더링한다.
1615
1732
  * 이전/다음 버튼과 페이지 목록을 구성해 전달된 콜백으로 페이지 변경을 전달한다.
1616
1733
  * @param props 페이지네이션 속성
1617
1734
  * @returns 렌더링된 페이지네이션 UI
1618
1735
  */
1619
- declare const Pagination: ({ page, totalPages, onChange, prevLabel, nextLabel, }: PaginationProps) => react_jsx_runtime.JSX.Element;
1736
+ declare const Pagination: ({ page, totalPages, onPageChange, onChange, prevLabel, nextLabel, }: PaginationProps) => React$1.JSX.Element;
1620
1737
 
1621
1738
  interface RadioProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
1622
1739
  /** 라디오 버튼 옆에 표시할 라벨 */
@@ -1634,7 +1751,7 @@ interface RadioProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>,
1634
1751
  * @returns 렌더링된 라디오 UI
1635
1752
  */
1636
1753
  declare const Radio: {
1637
- ({ label, size: sizeProp, className, ref, value, checked, onChange, name: nameProp, disabled: disabledProp, ...props }: RadioProps): react_jsx_runtime.JSX.Element;
1754
+ ({ label, size: sizeProp, className, ref, value, checked, onChange, name: nameProp, disabled: disabledProp, ...props }: RadioProps): React$1.JSX.Element;
1638
1755
  displayName: string;
1639
1756
  };
1640
1757
 
@@ -1681,7 +1798,7 @@ interface RadioGroupProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "
1681
1798
  * ```
1682
1799
  */
1683
1800
  declare const RadioGroup: {
1684
- ({ value: controlledValue, defaultValue, onValueChange, name: nameProp, label, supportingText, error, size, orientation, disabled, className, children, ...props }: RadioGroupProps): react_jsx_runtime.JSX.Element;
1801
+ ({ value: controlledValue, defaultValue, onValueChange, name: nameProp, label, supportingText, error, size, orientation, disabled, className, children, ...props }: RadioGroupProps): React$1.JSX.Element;
1685
1802
  displayName: string;
1686
1803
  };
1687
1804
 
@@ -1701,7 +1818,7 @@ interface SkeletonProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "ch
1701
1818
  * @param props 스켈레톤 속성
1702
1819
  * @returns 스켈레톤 요소
1703
1820
  */
1704
- declare const Skeleton: ({ variant, width, height, radius, className, style, ...props }: SkeletonProps) => react_jsx_runtime.JSX.Element;
1821
+ declare const Skeleton: ({ variant, width, height, radius, className, style, ...props }: SkeletonProps) => React$1.JSX.Element;
1705
1822
 
1706
1823
  interface SpinnerProps {
1707
1824
  /** 스피너 크기(px) (기본값: 24) */
@@ -1715,9 +1832,16 @@ interface SpinnerProps {
1715
1832
  * @param props 스피너 속성
1716
1833
  * @returns 렌더링된 스피너 요소
1717
1834
  */
1718
- declare const Spinner: ({ size, ariaLabel }: SpinnerProps) => react_jsx_runtime.JSX.Element;
1835
+ declare const Spinner: ({ size, ariaLabel }: SpinnerProps) => React$1.JSX.Element;
1719
1836
 
1720
1837
  type TableSize = "sm" | "md" | "lg";
1838
+ type TableSortDirection = "asc" | "desc";
1839
+ interface TableSort {
1840
+ /** 정렬 중인 컬럼의 `TableColumn.key` */
1841
+ key: string;
1842
+ /** 정렬 방향 */
1843
+ direction: TableSortDirection;
1844
+ }
1721
1845
  interface TableColumn<T extends object> {
1722
1846
  /** 컬럼 식별자 - `data[key]` 자동 렌더링에도 쓰임 */
1723
1847
  key: string;
@@ -1729,8 +1853,26 @@ interface TableColumn<T extends object> {
1729
1853
  width?: string;
1730
1854
  /** 정렬 (기본값: "left") */
1731
1855
  align?: "left" | "center" | "right";
1732
- }
1733
- interface TableProps<T extends object> {
1856
+ /** 정렬 가능한 컬럼 여부 (기본값: false). 클릭 시 `onSortChange` 발화 - 실제 정렬은 소비자가 수행 */
1857
+ sortable?: boolean;
1858
+ }
1859
+ /** `selectable` 시 `rowKey` 를 요구하기 위한 판별 유니온 */
1860
+ type TableSelectionProps<T extends object> = {
1861
+ /** 행 선택(체크박스 컬럼) 활성화 여부 */
1862
+ selectable: true;
1863
+ /** 행 고유 key 추출 함수 - `selectable` 사용 시 필수 */
1864
+ rowKey: (row: T) => string;
1865
+ /** 선택된 행 key 배열 (제어형) */
1866
+ selectedKeys?: string[];
1867
+ /** 선택 변경 콜백 */
1868
+ onSelectionChange?: (keys: string[]) => void;
1869
+ } | {
1870
+ selectable?: false;
1871
+ rowKey?: (row: T) => string;
1872
+ selectedKeys?: string[];
1873
+ onSelectionChange?: (keys: string[]) => void;
1874
+ };
1875
+ type TableProps<T extends object> = {
1734
1876
  /** 컬럼 정의 */
1735
1877
  columns: TableColumn<T>[];
1736
1878
  /** 표시할 데이터 배열 */
@@ -1755,13 +1897,21 @@ interface TableProps<T extends object> {
1755
1897
  className?: string;
1756
1898
  /** 행 클릭 콜백 */
1757
1899
  onRowClick?: (item: T, index: number) => void;
1758
- }
1900
+ /** 현재 정렬 상태 (제어형). `undefined` 는 정렬 없음 */
1901
+ sort?: TableSort;
1902
+ /** 정렬 가능한 헤더 클릭 시 발화 (none→asc→desc→none 순환). DS는 데이터를 직접 정렬하지 않음 - 정렬된 `data` 를 다시 전달해야 함 */
1903
+ onSortChange?: (sort: TableSort | undefined) => void;
1904
+ /** 전체 선택 체크박스 aria-label (기본값: "전체 선택") */
1905
+ selectAllAriaLabel?: string;
1906
+ /** 개별 행 선택 체크박스 aria-label (기본값: (i) => `${i+1}번째 행 선택`) */
1907
+ selectRowAriaLabel?: (index: number) => string;
1908
+ } & TableSelectionProps<T>;
1759
1909
  /**
1760
1910
  * 데이터 테이블을 렌더링한다. 로딩 중에는 헤더 유지, 바디에 스켈레톤 행을 표시한다.
1761
1911
  * @param props 테이블 속성
1762
1912
  * @returns 테이블 컴포넌트
1763
1913
  */
1764
- declare const Table: <T extends object>({ columns, data, keyExtractor, emptyMessage, isLoading, skeletonRows, size, hoverable, stickyHeader, ariaLabel, className, onRowClick, }: TableProps<T>) => react_jsx_runtime.JSX.Element;
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;
1765
1915
 
1766
1916
  type ThemeMode = "light" | "dark" | "system";
1767
1917
  type ResolvedTheme = "light" | "dark";
@@ -1826,7 +1976,9 @@ interface TextFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEleme
1826
1976
  clearable?: boolean;
1827
1977
  /** 컨테이너 전체 너비 차지 여부 */
1828
1978
  fullWidth?: boolean;
1829
- /** 값 변경 호출되는 콜백. 호출 시점은 `imeStrategy` 에 따름 (기본: 조합 완료 후) */
1979
+ /** 값 변경 콜백 (canonical). 호출 시점은 `imeStrategy` 에 따름 (기본: 조합 완료 후) */
1980
+ onValueChange?: (value: string) => void;
1981
+ /** @deprecated `onValueChange` 를 사용하세요. (Next 서버액션 전달용으로 `Action` 접미사가 필요하면 그대로 사용 가능) */
1830
1982
  onChangeAction?: (value: string) => void;
1831
1983
  /**
1832
1984
  * IME 조합 중 콜백 전략 (기본값: "delayed").
@@ -1850,7 +2002,7 @@ interface TextFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEleme
1850
2002
  * @returns 렌더링된 텍스트 필드 UI
1851
2003
  */
1852
2004
  declare const TextField: {
1853
- ({ id, label, showLabel, supportingText, error, leadingIcon, trailingIcon, clearable, fullWidth, size, className, onChangeAction, imeStrategy, value, defaultValue, transformValue, ref, ...props }: TextFieldProps): react_jsx_runtime.JSX.Element;
2005
+ ({ id, label, showLabel, supportingText, error, leadingIcon, trailingIcon, clearable, fullWidth, size, className, onValueChange, onChangeAction, imeStrategy, value, defaultValue, transformValue, ref, ...props }: TextFieldProps): React$1.JSX.Element;
1854
2006
  displayName: string;
1855
2007
  };
1856
2008
 
@@ -1869,7 +2021,9 @@ interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextArea
1869
2021
  error?: boolean;
1870
2022
  /** 컨테이너 전체 너비 차지 여부 */
1871
2023
  fullWidth?: boolean;
1872
- /** 값 변경 호출되는 콜백. 호출 시점은 `imeStrategy` 에 따름 (기본: 조합 완료 후) */
2024
+ /** 값 변경 콜백 (canonical). 호출 시점은 `imeStrategy` 에 따름 (기본: 조합 완료 후) */
2025
+ onValueChange?: (value: string) => void;
2026
+ /** @deprecated `onValueChange` 를 사용하세요. (Next 서버액션 전달용으로 `Action` 접미사가 필요하면 그대로 사용 가능) */
1873
2027
  onChangeAction?: (value: string) => void;
1874
2028
  /**
1875
2029
  * IME 조합 중 콜백 전략 (기본값: "delayed").
@@ -1909,7 +2063,7 @@ interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextArea
1909
2063
  * ```
1910
2064
  */
1911
2065
  declare const Textarea: {
1912
- ({ id, label, showLabel, supportingText, error, fullWidth, size, className, onChangeAction, imeStrategy, value, defaultValue, transformValue, rows, minRows, maxRows, showCounter, resize, maxLength, ref, ...props }: TextareaProps): react_jsx_runtime.JSX.Element;
2066
+ ({ id, label, showLabel, supportingText, error, fullWidth, size, className, onValueChange, onChangeAction, imeStrategy, value, defaultValue, transformValue, rows, minRows, maxRows, showCounter, resize, maxLength, ref, ...props }: TextareaProps): React$1.JSX.Element;
1913
2067
  displayName: string;
1914
2068
  };
1915
2069
 
@@ -1927,7 +2081,7 @@ interface ToastProviderProps {
1927
2081
  * @param props Provider 속성
1928
2082
  * @returns 렌더링된 Provider와 토스트 컨테이너
1929
2083
  */
1930
- declare const ToastProvider: ({ children, maxCount, closeAriaLabel, }: ToastProviderProps) => react_jsx_runtime.JSX.Element;
2084
+ declare const ToastProvider: ({ children, maxCount, closeAriaLabel, }: ToastProviderProps) => React$1.JSX.Element;
1931
2085
 
1932
2086
  /**
1933
2087
  * 토스트 메시지를 표시하는 훅.
@@ -1952,7 +2106,9 @@ interface ToggleProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElemen
1952
2106
  checked?: boolean;
1953
2107
  /** 비제어형 초기 토글 상태 */
1954
2108
  defaultChecked?: boolean;
1955
- /** 상태 변경 호출되는 콜백 */
2109
+ /** 상태 변경 콜백 (canonical) */
2110
+ onCheckedChange?: (checked: boolean) => void;
2111
+ /** @deprecated `onCheckedChange` 를 사용하세요. */
1956
2112
  onChange?: (checked: boolean) => void;
1957
2113
  /** 토글 크기 (기본값: "sm") */
1958
2114
  size?: "sm" | "md";
@@ -1970,7 +2126,7 @@ interface ToggleProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElemen
1970
2126
  * @returns 렌더링된 토글 요소
1971
2127
  */
1972
2128
  declare const Toggle: {
1973
- ({ checked, defaultChecked, onChange, size, disabled, className, ariaLabel, ref, ...props }: ToggleProps): react_jsx_runtime.JSX.Element;
2129
+ ({ checked, defaultChecked, onCheckedChange, onChange, size, disabled, className, ariaLabel, ref, ...props }: ToggleProps): React$1.JSX.Element;
1974
2130
  displayName: string;
1975
2131
  };
1976
2132
 
@@ -1992,7 +2148,7 @@ interface TopLoadingProps {
1992
2148
  * @param props 로딩바 속성
1993
2149
  * @returns 렌더링된 로딩바 요소 또는 null
1994
2150
  */
1995
- declare const TopLoading: ({ progress, color, height, isLoading, ariaLabel, }: TopLoadingProps) => react_jsx_runtime.JSX.Element | null;
2151
+ declare const TopLoading: ({ progress, color, height, isLoading, ariaLabel, }: TopLoadingProps) => React$1.JSX.Element | null;
1996
2152
 
1997
2153
  type ContainerSize = "sm" | "md" | "lg" | "xl" | "full";
1998
2154
  interface ContainerProps extends React$1.HTMLAttributes<HTMLDivElement> {
@@ -2006,6 +2162,8 @@ interface ContainerProps extends React$1.HTMLAttributes<HTMLDivElement> {
2006
2162
  center?: boolean;
2007
2163
  /** 렌더링할 HTML 요소 */
2008
2164
  as?: React$1.ElementType;
2165
+ /** 루트 요소 ref (React 19 ref-as-prop) */
2166
+ ref?: React$1.Ref<HTMLElement>;
2009
2167
  }
2010
2168
  /**
2011
2169
  * max-width 제한 + 반응형 수평 패딩을 가진 컨테이너.
@@ -2019,7 +2177,7 @@ interface ContainerProps extends React$1.HTMLAttributes<HTMLDivElement> {
2019
2177
  * </Container>
2020
2178
  * ```
2021
2179
  */
2022
- declare const Container: ({ size, center, as: Tag, className, children, ...props }: ContainerProps) => react_jsx_runtime.JSX.Element;
2180
+ declare const Container: ({ size, center, as: Tag, ref, className, children, ...props }: ContainerProps) => React$1.JSX.Element;
2023
2181
 
2024
2182
  type SectionSpacing = "xs" | "sm" | "md" | "lg" | "xl";
2025
2183
  type SectionBg = "default" | "dim" | "accent" | "inverted" | "transparent";
@@ -2038,6 +2196,8 @@ interface SectionProps extends React$1.HTMLAttributes<HTMLElement> {
2038
2196
  bg?: SectionBg;
2039
2197
  /** 렌더링할 HTML 요소 */
2040
2198
  as?: React$1.ElementType;
2199
+ /** 루트 요소 ref (React 19 ref-as-prop) */
2200
+ ref?: React$1.Ref<HTMLElement>;
2041
2201
  }
2042
2202
  /**
2043
2203
  * 마케팅 페이지의 섹션 단위. 수직 여백 + 배경색 variants.
@@ -2052,7 +2212,7 @@ interface SectionProps extends React$1.HTMLAttributes<HTMLElement> {
2052
2212
  * </Section>
2053
2213
  * ```
2054
2214
  */
2055
- declare const Section: ({ spacing, bg, as: Tag, className, children, ...props }: SectionProps) => react_jsx_runtime.JSX.Element;
2215
+ declare const Section: ({ spacing, bg, as: Tag, ref, className, children, ...props }: SectionProps) => React$1.JSX.Element;
2056
2216
 
2057
2217
  type StackDirection = "vertical" | "horizontal";
2058
2218
  type StackAlign = "start" | "center" | "end" | "stretch";
@@ -2078,6 +2238,8 @@ interface StackProps extends React$1.HTMLAttributes<HTMLDivElement> {
2078
2238
  wrap?: StackWrap;
2079
2239
  /** 렌더링할 HTML 요소 */
2080
2240
  as?: React$1.ElementType;
2241
+ /** 루트 요소 ref (React 19 ref-as-prop) */
2242
+ ref?: React$1.Ref<HTMLElement>;
2081
2243
  }
2082
2244
  /**
2083
2245
  * Flex 기반 1D 레이아웃 컨테이너.
@@ -2096,7 +2258,7 @@ interface StackProps extends React$1.HTMLAttributes<HTMLDivElement> {
2096
2258
  * </Stack>
2097
2259
  * ```
2098
2260
  */
2099
- declare const Stack: ({ direction, gap, align, justify, wrap, as: Tag, className, children, style, ...props }: StackProps) => react_jsx_runtime.JSX.Element;
2261
+ declare const Stack: ({ direction, gap, align, justify, wrap, as: Tag, ref, className, children, style, ...props }: StackProps) => React$1.JSX.Element;
2100
2262
 
2101
2263
  type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | "auto";
2102
2264
  type GridGap = 0 | 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40 | 48;
@@ -2124,6 +2286,8 @@ interface GridProps extends React$1.HTMLAttributes<HTMLDivElement> {
2124
2286
  singleColOnMobile?: boolean;
2125
2287
  /** 렌더링할 HTML 요소 */
2126
2288
  as?: React$1.ElementType;
2289
+ /** 루트 요소 ref (React 19 ref-as-prop) */
2290
+ ref?: React$1.Ref<HTMLElement>;
2127
2291
  }
2128
2292
  /**
2129
2293
  * CSS Grid 기반 2D 레이아웃 컨테이너.
@@ -2142,6 +2306,6 @@ interface GridProps extends React$1.HTMLAttributes<HTMLDivElement> {
2142
2306
  * </Grid>
2143
2307
  * ```
2144
2308
  */
2145
- declare const Grid: ({ cols, minColWidth, gap, rowGap, colGap, singleColOnMobile, as: Tag, className, children, style, ...props }: GridProps) => react_jsx_runtime.JSX.Element;
2309
+ declare const Grid: ({ cols, minColWidth, gap, rowGap, colGap, singleColOnMobile, as: Tag, ref, className, children, style, ...props }: GridProps) => React$1.JSX.Element;
2146
2310
 
2147
- export { Accordion, type AccordionItem, type AccordionProps, AlertProvider, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, Badge, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeVariant, BottomNav, BottomNavItem, type BottomNavItemProps, type BottomNavProps, BottomNavSpacer, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Card, type CardFooterAlign, type CardProps, type CardVariant, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipSize, type ChipTone, type ChipType, Container, type ContainerProps, type ContainerSize, DatePicker, type DatePickerProps, Divider, type DividerProps, Dropdown, type DropdownOption, type DropdownProps, type DropdownSize, EmptyState, type EmptyStateProps, ErrorState, type ErrorStateProps, type ErrorStateVariant, FileInput, type FileInputProps, Grid, type GridCols, type GridGap, type GridProps, Hero, type HeroAction, type HeroAlign, type HeroHeight, type HeroOverlay, type HeroProps, Icon, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconProps, type ImeStrategy, LinearProgress, type LinearProgressProps, ListItem, type ListItemProps, MediaCard, type MediaCardImage, type MediaCardImagePosition, type MediaCardProps, type MediaCardShadow, Menu, type MenuItem, type MenuProps, Modal, type ModalProps, NavBar, type NavBarLayout, type NavBarLocaleConfig, type NavBarLocaleOption, type NavBarProps, type NavBarVariant, NavLink, type NavLinkProps, OtpInput, type OtpInputProps, Pagination, type PaginationProps, Popover, type PopoverPlacement, type PopoverProps, Radio, RadioGroup, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupSize, type RadioProps, type ResolvedTheme, Section, type SectionBg, type SectionProps, type SectionSpacing, Sidebar, SidebarItem, type SidebarItemProps, type SidebarMode, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonProps, type SkeletonVariant, Spinner, type SpinnerProps, Stack, type StackAlign, type StackDirection, type StackGap, type StackJustify, type StackProps, type StackWrap, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, type TableColumn, type TableProps, type TableSize, Tabs, type TabsProps, type TabsSize, type TabsVariant, TextField, type TextFieldProps, type TextFieldSize, Textarea, type TextareaProps, type TextareaResize, type TextareaSize, type ThemeMode, ThemeProvider, type ThemeProviderProps, ToastProvider, Toggle, type ToggleProps, Tooltip, type TooltipPlacement, type TooltipProps, TopLoading, type TopLoadingProps, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, cn, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useFocusTrap, useSpringHover, useSpringPresence, useTheme, useToast, zIndex };
2311
+ export { Accordion, type AccordionItem, type AccordionProps, AlertProvider, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, Badge, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeVariant, BottomNav, BottomNavItem, type BottomNavItemProps, type BottomNavProps, BottomNavSpacer, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Card, type CardFooterAlign, type CardProps, type CardVariant, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipSize, type ChipTone, type ChipType, Container, type ContainerProps, type ContainerSize, DatePicker, type DatePickerProps, Divider, type DividerProps, Drawer, type DrawerPlacement, type DrawerProps, Dropdown, type DropdownOption, type DropdownProps, type DropdownSize, EmptyState, type EmptyStateProps, ErrorState, type ErrorStateProps, type ErrorStateVariant, FileInput, type FileInputProps, Grid, type GridCols, type GridGap, type GridProps, Hero, type HeroAction, type HeroAlign, type HeroHeight, type HeroOverlay, type HeroProps, Icon, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconProps, type ImeStrategy, LinearProgress, type LinearProgressProps, ListItem, type ListItemProps, MediaCard, type MediaCardImage, type MediaCardImagePosition, type MediaCardProps, type MediaCardShadow, Menu, type MenuItem, type MenuProps, Modal, type ModalProps, NavBar, type NavBarLayout, type NavBarLocaleConfig, type NavBarLocaleOption, type NavBarProps, type NavBarVariant, NavLink, type NavLinkProps, OtpInput, type OtpInputProps, Pagination, type PaginationProps, Popover, type PopoverPlacement, type PopoverProps, Radio, RadioGroup, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupSize, type RadioProps, type ResolvedTheme, Section, type SectionBg, type SectionProps, type SectionSpacing, Sidebar, SidebarItem, type SidebarItemProps, type SidebarMode, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonProps, type SkeletonVariant, Spinner, type SpinnerProps, Stack, type StackAlign, type StackDirection, type StackGap, type StackJustify, type StackProps, type StackWrap, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, type TableColumn, type TableProps, type TableSize, type TableSort, type TableSortDirection, Tabs, type TabsProps, type TabsSize, type TabsVariant, TextField, type TextFieldProps, type TextFieldSize, Textarea, type TextareaProps, type TextareaResize, type TextareaSize, type ThemeMode, ThemeProvider, type ThemeProviderProps, ToastProvider, Toggle, type ToggleProps, Tooltip, type TooltipPlacement, type TooltipProps, TopLoading, type TopLoadingProps, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, cn, colors, elevation, iconSize, motion, opacity, radius, skeleton, spacing, typography, useAlert, useFocusTrap, useReducedMotion, useSpringHover, useSpringPresence, useTheme, useToast, zIndex };