@bigtablet/design-system 2.5.0 → 3.1.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,12 +1,531 @@
1
1
  import * as React$1 from 'react';
2
- import React__default from 'react';
2
+ import * as _react_spring_web from '@react-spring/web';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { LucideProps, LucideIcon } from 'lucide-react';
5
+ export { LucideIcon, LucideProps } from 'lucide-react';
6
+
7
+ /**
8
+ * ClassValue type for cn() utility
9
+ * Supports strings, numbers, booleans, arrays, and conditional objects
10
+ */
11
+ type ClassValue = string | number | boolean | undefined | null | ClassValue[] | Record<string, boolean | undefined | null>;
12
+ /**
13
+ * Utility for combining class names (clsx-like)
14
+ * Filters out falsy values and joins with space
15
+ *
16
+ * @example
17
+ * // String arguments
18
+ * cn("btn", "btn--primary")
19
+ * // "btn btn--primary"
20
+ *
21
+ * @example
22
+ * // Conditional with boolean
23
+ * cn("btn", isActive && "btn--active")
24
+ * // "btn btn--active" (if isActive is true)
25
+ *
26
+ * @example
27
+ * // Object syntax
28
+ * cn("btn", { "btn--active": isActive, "btn--disabled": isDisabled })
29
+ * // "btn btn--active" (if isActive is true, isDisabled is false)
30
+ *
31
+ * @example
32
+ * // Array syntax
33
+ * cn(["btn", "btn--primary"], className)
34
+ * // "btn btn--primary custom-class"
35
+ */
36
+ declare const cn: (...classes: ClassValue[]) => string;
37
+
38
+ declare function useFocusTrap(containerRef: React$1.RefObject<HTMLElement | null>, isActive: boolean): void;
39
+
40
+ /**
41
+ * 마우스 hover 시 spring 기반 lift 효과를 만든다. 카드/CTA 강조에 사용.
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * const { style, bind } = useSpringHover();
46
+ * return <animated.div style={style} {...bind}>...</animated.div>;
47
+ * ```
48
+ */
49
+ declare function useSpringHover({ scale, lift, }?: {
50
+ /** hover 시 scale 비율 (기본 1.02) */
51
+ scale?: number;
52
+ /** hover 시 Y축 이동 px (기본 -2 = 살짝 떠오름) */
53
+ lift?: number;
54
+ }): {
55
+ style: {
56
+ transform: _react_spring_web.SpringValue<string>;
57
+ };
58
+ bind: {
59
+ onMouseEnter: () => void;
60
+ onMouseLeave: () => void;
61
+ onFocus: () => void;
62
+ onBlur: () => void;
63
+ };
64
+ };
65
+
66
+ /**
67
+ * 컴포넌트가 마운트/언마운트되거나 visible 상태가 토글될 때 자연스러운 진입/퇴출을 만든다.
68
+ * Vercel/Linear 스타일의 부드러운 spring 모션.
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * const style = useSpringPresence({ visible: isOpen });
73
+ * return <animated.div style={style}>...</animated.div>;
74
+ * ```
75
+ */
76
+ declare function useSpringPresence({ visible, from, onExitComplete, }: {
77
+ /** 보이는 상태인지 — false면 사라짐 모션 */
78
+ visible: boolean;
79
+ /** 진입 시 시작 transform (기본: 아래에서 살짝 올라옴) */
80
+ from?: string;
81
+ /** exit 모션 완료 시 호출 — 부모에서 unmount 트리거용 */
82
+ onExitComplete?: () => void;
83
+ }): {
84
+ opacity: _react_spring_web.SpringValue<number>;
85
+ transform: _react_spring_web.SpringValue<string>;
86
+ };
87
+
88
+ interface AccordionItem {
89
+ key: string;
90
+ title: React$1.ReactNode;
91
+ content: React$1.ReactNode;
92
+ disabled?: boolean;
93
+ }
94
+ interface AccordionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
95
+ /** 아이템 목록 */
96
+ items: AccordionItem[];
97
+ /** 여러 개 동시에 펼침 허용 (기본 false — 한 번에 하나) */
98
+ multiple?: boolean;
99
+ /** 기본으로 펼쳐진 키들 */
100
+ defaultOpenKeys?: string[];
101
+ /** 제어형: 펼쳐진 키들 */
102
+ openKeys?: string[];
103
+ /** 펼침/접힘 콜백 */
104
+ onChange?: (openKeys: string[]) => void;
105
+ }
106
+ /**
107
+ * 펼침/접힘 영역. FAQ, 설정 그룹, details 패턴.
108
+ *
109
+ * @example
110
+ * ```tsx
111
+ * <Accordion items={faqItems} multiple />
112
+ * ```
113
+ */
114
+ declare const Accordion: ({ items, multiple, defaultOpenKeys, openKeys: controlledKeys, onChange, className, ...props }: AccordionProps) => react_jsx_runtime.JSX.Element;
115
+
116
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
117
+ type AvatarShape = "circle" | "square";
118
+ interface AvatarProps extends React$1.HTMLAttributes<HTMLSpanElement> {
119
+ /** 이미지 URL */
120
+ src?: string;
121
+ /** alt 텍스트 (이미지일 때) 또는 initials 추출용 이름 */
122
+ name?: string;
123
+ /** 크기 (기본값: "md"). xs=24 / sm=32 / md=40 / lg=48 / xl=64 */
124
+ size?: AvatarSize;
125
+ /** 모양 (기본값: "circle") */
126
+ shape?: AvatarShape;
127
+ /** 색상 (기본값: navy accent) */
128
+ bgColor?: string;
129
+ }
130
+ /**
131
+ * 사용자 프로필 아바타. 이미지 없으면 이름의 initials로 fallback.
132
+ *
133
+ * @example
134
+ * ```tsx
135
+ * <Avatar src="/me.jpg" name="박상민" />
136
+ * <Avatar name="박상민" /> // initials "박"
137
+ * <Avatar name="Sangmin Park" size="lg" /> // initials "SP"
138
+ * ```
139
+ */
140
+ declare const Avatar: ({ src, name, size, shape, bgColor, className, style, ...props }: AvatarProps) => react_jsx_runtime.JSX.Element;
141
+
142
+ type BadgeVariant = "accent" | "neutral" | "info" | "success" | "warning" | "error";
143
+ type BadgeShape = "dot" | "count" | "label";
144
+ type BadgeSize = "sm" | "md" | "lg";
145
+ interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
146
+ /** 색상 variant (기본값: "accent") */
147
+ variant?: BadgeVariant;
148
+ /** 모양 (기본값: "label"). dot=점만 / count=숫자 / label=텍스트 */
149
+ shape?: BadgeShape;
150
+ /**
151
+ * 사이즈 (기본값: "md"). 웹 기본.
152
+ * - sm: 컴팩트 (아이콘 위 알림 dot, 모바일)
153
+ * - md: 일반 웹 (admin/marketing)
154
+ * - lg: 강조 (Hero 위 배지, 카테고리)
155
+ */
156
+ size?: BadgeSize;
157
+ /** count shape 일 때 표시할 숫자. max를 넘으면 "max+" */
158
+ count?: number;
159
+ /** count 최댓값 (기본 99) */
160
+ max?: number;
161
+ }
162
+ /**
163
+ * 작은 상태 표시. 카운트/dot/라벨 3가지 모양.
164
+ *
165
+ * @example
166
+ * ```tsx
167
+ * <Badge shape="dot" variant="error" />
168
+ * <Badge shape="count" count={5} />
169
+ * <Badge>New</Badge>
170
+ * ```
171
+ */
172
+ declare const Badge: ({ variant, shape, size, count, max, className, children, ...props }: BadgeProps) => react_jsx_runtime.JSX.Element;
173
+
174
+ interface BottomNavProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onChange"> {
175
+ /** 스크린 리더 레이블 (기본 "주요 메뉴") */
176
+ ariaLabel?: string;
177
+ /** 2–5 개의 `BottomNavItem` */
178
+ children: React$1.ReactNode;
179
+ }
180
+ /**
181
+ * 모바일 하단 네비게이션 바.
182
+ *
183
+ * `position: fixed; bottom: 0` 으로 viewport 하단 고정. iOS 홈 인디케이터 영역
184
+ * (`env(safe-area-inset-bottom)`) 자동 패딩. 본문이 가려지지 않게 페이지 끝에
185
+ * `<BottomNavSpacer />` 를 깔거나 `--bt-bottom-nav-height` CSS 변수로 padding 계산.
186
+ *
187
+ * @example
188
+ * ```tsx
189
+ * <BottomNav>
190
+ * <BottomNavItem icon={<Home />} label="주문" active />
191
+ * <BottomNavItem icon={<Menu />} label="메뉴" />
192
+ * <BottomNavItem icon={<Chart />} label="매출" />
193
+ * </BottomNav>
194
+ * <BottomNavSpacer />
195
+ * ```
196
+ */
197
+ declare const BottomNav: ({ ariaLabel, className, children, ...props }: BottomNavProps) => react_jsx_runtime.JSX.Element;
198
+ interface BottomNavItemCommon {
199
+ /** 아이콘 (필수) */
200
+ icon: React$1.ReactNode;
201
+ /** 라벨 텍스트 (필수, 짧게 — 2–4자) */
202
+ label: string;
203
+ /** 활성 상태 */
204
+ active?: boolean;
205
+ /** 아이콘 우상단 dot/카운트 (Badge 등) */
206
+ badge?: React$1.ReactNode;
207
+ }
208
+ type BottomNavItemButton = BottomNavItemCommon & {
209
+ as?: "button";
210
+ href?: never;
211
+ } & Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "children">;
212
+ type BottomNavItemAnchor = BottomNavItemCommon & {
213
+ as: "a";
214
+ href: string;
215
+ /** anchor 에 native `disabled` 없음 — `aria-disabled` + `preventDefault` 로 처리. */
216
+ disabled?: boolean;
217
+ } & Omit<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, "children" | "type">;
218
+ type BottomNavItemProps = BottomNavItemButton | BottomNavItemAnchor;
219
+ /**
220
+ * `BottomNav` 의 항목. icon + label 수직 스택.
221
+ * active 시 `aria-current="page"` 자동 부여.
222
+ */
223
+ declare const BottomNavItem: (props: BottomNavItemProps) => react_jsx_runtime.JSX.Element;
224
+ /**
225
+ * 페이지 본문 끝에 두면 `BottomNav` 가 콘텐츠를 가리지 않게 빈 공간 확보.
226
+ * `--bt-bottom-nav-height` (+ safe-area) 만큼 height.
227
+ */
228
+ declare const BottomNavSpacer: ({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>) => react_jsx_runtime.JSX.Element;
229
+
230
+ interface BreadcrumbItem {
231
+ /** 표시 텍스트 */
232
+ label: React$1.ReactNode;
233
+ /** 클릭 시 이동할 URL. 없으면 현재 페이지로 간주 */
234
+ href?: string;
235
+ /** 클릭 콜백 (href 없이 사용 가능) */
236
+ onClick?: (e: React$1.MouseEvent<HTMLElement>) => void;
237
+ }
238
+ interface BreadcrumbProps extends React$1.HTMLAttributes<HTMLElement> {
239
+ /** 경로 아이템 배열. 마지막은 현재 페이지로 간주 */
240
+ items: BreadcrumbItem[];
241
+ /** 구분자 (기본값: ChevronRight 아이콘) */
242
+ separator?: React$1.ReactNode;
243
+ }
244
+ /**
245
+ * 페이지 위계 네비게이션. 마지막 아이템은 현재 페이지로 표시.
246
+ *
247
+ * @example
248
+ * ```tsx
249
+ * <Breadcrumb items={[
250
+ * { label: "홈", href: "/" },
251
+ * { label: "블로그", href: "/blog" },
252
+ * { label: "글 제목" },
253
+ * ]} />
254
+ * ```
255
+ */
256
+ declare const Breadcrumb: ({ items, separator, className, ...props }: BreadcrumbProps) => react_jsx_runtime.JSX.Element;
257
+
258
+ interface EmptyStateProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
259
+ /** 일러스트 영역 (아이콘/이미지 등) */
260
+ illustration?: React$1.ReactNode;
261
+ /** 제목 */
262
+ title?: React$1.ReactNode;
263
+ /** 보조 설명 */
264
+ description?: React$1.ReactNode;
265
+ /** 액션 영역 (Button 등) */
266
+ action?: React$1.ReactNode;
267
+ /** 크기 (기본 "md") */
268
+ size?: "sm" | "md" | "lg";
269
+ }
270
+ /**
271
+ * 빈 상태 표시 — 데이터 없음, 검색 결과 없음, 시작 가이드 등.
272
+ *
273
+ * @example
274
+ * ```tsx
275
+ * <EmptyState
276
+ * illustration={<InboxIcon size={64} />}
277
+ * title="받은 메일이 없습니다"
278
+ * description="새 메일이 오면 여기 표시됩니다."
279
+ * action={<Button>새 메일 작성</Button>}
280
+ * />
281
+ * ```
282
+ */
283
+ declare const EmptyState: ({ illustration, title, description, action, size, className, ...props }: EmptyStateProps) => react_jsx_runtime.JSX.Element;
284
+
285
+ interface MenuItem {
286
+ key: string;
287
+ label: React$1.ReactNode;
288
+ icon?: React$1.ReactNode;
289
+ disabled?: boolean;
290
+ /** 클릭 시 호출 — 자동으로 메뉴 닫힘 */
291
+ onSelect?: () => void;
292
+ /** destructive 액션 (삭제 등) — 빨간 텍스트 */
293
+ destructive?: boolean;
294
+ }
295
+ interface MenuProps {
296
+ /** 메뉴 아이템들 */
297
+ items: MenuItem[];
298
+ /** trigger 요소 — 클릭 시 메뉴 열림 */
299
+ trigger: React$1.ReactElement;
300
+ /** 정렬 (기본 "start") */
301
+ align?: "start" | "end";
302
+ }
303
+ /**
304
+ * 컨텍스트 메뉴. trigger 클릭 시 아래에 메뉴 표시. 외부 클릭/Esc로 닫힘.
305
+ * Form Dropdown과 다름 — 액션 메뉴 (Edit/Delete 등).
306
+ *
307
+ * @example
308
+ * ```tsx
309
+ * <Menu
310
+ * trigger={<IconButton icon={<MoreIcon />} />}
311
+ * items={[
312
+ * { key: "edit", label: "편집", onSelect: handleEdit },
313
+ * { key: "del", label: "삭제", onSelect: handleDel, destructive: true },
314
+ * ]}
315
+ * />
316
+ * ```
317
+ */
318
+ declare const Menu: ({ items, trigger, align }: MenuProps) => react_jsx_runtime.JSX.Element;
319
+
320
+ type NavBarVariant = "default" | "transparent" | "accent";
321
+ type NavBarLayout = "contained" | "fluid";
322
+ interface NavBarLocaleOption {
323
+ value: string;
324
+ label: string;
325
+ }
326
+ interface NavBarLocaleConfig {
327
+ /** 현재 선택된 locale 값 (예: "ko") */
328
+ current: string;
329
+ /** 가능한 옵션 */
330
+ options: NavBarLocaleOption[];
331
+ /** locale 변경 콜백 */
332
+ onChange: (next: string) => void;
333
+ /** 표시 라벨 — 기본은 옵션의 label, 미지정 시 short code 표시 */
334
+ hideLabel?: boolean;
335
+ }
336
+ interface NavBarProps extends React$1.HTMLAttributes<HTMLElement> {
337
+ /** 왼쪽 brand/로고 영역 */
338
+ brand?: React$1.ReactNode;
339
+ /** 중앙 또는 우측의 검색 영역 (TextField 등) */
340
+ searchSlot?: React$1.ReactNode;
341
+ /** 오른쪽 액션 영역 (IconButton, primary CTA Button 등) */
342
+ actions?: React$1.ReactNode;
343
+ /** i18n locale switcher (Globe 아이콘 + 드롭다운) */
344
+ locale?: NavBarLocaleConfig;
345
+ /** 우측 프로필 영역 (Avatar/ProfileButton) */
346
+ profile?: React$1.ReactNode;
347
+ /** actions / locale 와 profile 사이 수직 divider 표시 (기본 true, profile 있을 때만 표시) */
348
+ divider?: boolean;
349
+ /** 시각 variant — default(흰 bg + 회색 border), transparent(투명, hero 위에), accent(navy bg) */
350
+ variant?: NavBarVariant;
351
+ /** 레이아웃 — contained(max 1200, marketing) / fluid(full width, admin/dashboard) */
352
+ layout?: NavBarLayout;
353
+ /** sticky 고정 여부 */
354
+ sticky?: boolean;
355
+ }
356
+ /**
357
+ * 페이지 상단 네비게이션 바. 마케팅/B2C 헤더 + admin/dashboard 헤더 둘 다 지원.
358
+ *
359
+ * @example marketing
360
+ * ```tsx
361
+ * <NavBar brand={<Logo />} actions={<Button>로그인</Button>}>
362
+ * <NavLink href="/about">About</NavLink>
363
+ * <NavLink href="/blog" active>Blog</NavLink>
364
+ * </NavBar>
365
+ * ```
366
+ *
367
+ * @example admin/dashboard
368
+ * ```tsx
369
+ * <NavBar
370
+ * brand={<OrgButton />}
371
+ * searchSlot={<TextField placeholder="검색" />}
372
+ * actions={<IconButton icon={Calendar} aria-label="캘린더" />}
373
+ * locale={{ current: "ko", options: [...], onChange: setLocale }}
374
+ * profile={<Avatar name="박상민" />}
375
+ * />
376
+ * ```
377
+ */
378
+ declare const NavBar: ({ brand, searchSlot, actions, locale, profile, divider, variant, layout, sticky, className, children, ...props }: NavBarProps) => react_jsx_runtime.JSX.Element;
379
+ interface NavLinkProps extends React$1.AnchorHTMLAttributes<HTMLAnchorElement> {
380
+ /** 현재 활성 페이지 여부 */
381
+ active?: boolean;
382
+ }
383
+ declare const NavLink: ({ active, className, children, ...props }: NavLinkProps) => react_jsx_runtime.JSX.Element;
384
+
385
+ type SidebarMode = "auto" | "static";
386
+ interface SidebarProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onChange"> {
387
+ /** 상단 brand 영역 (펼친 상태 로고) */
388
+ header?: React$1.ReactNode;
389
+ /** collapsed 상태 헤더 (보통 favicon). 미지정 시 collapsed 에서도 `header` 사용. */
390
+ headerCollapsed?: React$1.ReactNode;
391
+ /** 하단 영역 (사용자/설정/로그아웃 등) */
392
+ footer?: React$1.ReactNode;
393
+ /** collapsed 상태 (controlled) */
394
+ collapsed?: boolean;
395
+ /** collapsed 초기값 (uncontrolled). `collapsed` 미지정 시 사용. */
396
+ defaultCollapsed?: boolean;
397
+ /** collapsed 변경 콜백 (controlled/uncontrolled 모두에서 호출) */
398
+ onCollapsedChange?: (collapsed: boolean) => void;
399
+ /** 내장 collapse 토글 버튼 표시 (기본 true) */
400
+ collapsible?: boolean;
401
+ /** 토글 버튼 a11y label (기본 "사이드바 토글") */
402
+ toggleLabel?: string;
403
+ /** 너비 (기본 240px) */
404
+ width?: number;
405
+ /** collapsed 너비 (기본 64px) */
406
+ collapsedWidth?: number;
407
+ /**
408
+ * 반응형 모드 (기본 `"auto"`).
409
+ * - `"auto"`: viewport `< 600px` 에서 자동으로 하단 bar 로 변신.
410
+ * - `"static"`: 어떤 viewport 에서도 좌측 rail 유지 (admin desktop-only).
411
+ */
412
+ mode?: SidebarMode;
413
+ }
414
+ /**
415
+ * admin/dashboard 좌측 네비게이션.
416
+ * `SidebarItem` + `SidebarSection` 과 함께 사용.
417
+ *
418
+ * @example
419
+ * ```tsx
420
+ * <Sidebar
421
+ * header={<Logo />}
422
+ * headerCollapsed={<Favicon />}
423
+ * defaultCollapsed={false}
424
+ * >
425
+ * <SidebarItem icon={<HomeIcon />} active>홈</SidebarItem>
426
+ * </Sidebar>
427
+ * ```
428
+ */
429
+ 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;
430
+ interface SidebarItemCommon {
431
+ /** 왼쪽 아이콘 */
432
+ icon?: React$1.ReactNode;
433
+ /** 현재 활성 상태 */
434
+ active?: boolean;
435
+ /** 오른쪽 trailing (Badge 등) */
436
+ trailing?: React$1.ReactNode;
437
+ }
438
+ type SidebarItemButton = SidebarItemCommon & {
439
+ as?: "button";
440
+ href?: never;
441
+ } & React$1.ButtonHTMLAttributes<HTMLButtonElement>;
442
+ type SidebarItemAnchor = SidebarItemCommon & {
443
+ as: "a";
444
+ href: string;
445
+ } & Omit<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, "type">;
446
+ type SidebarItemProps = SidebarItemButton | SidebarItemAnchor;
447
+ declare const SidebarItem: (props: SidebarItemProps) => react_jsx_runtime.JSX.Element;
448
+ interface SidebarSectionProps extends React$1.HTMLAttributes<HTMLDivElement> {
449
+ /** 섹션 라벨 (collapsed 상태에선 hidden) */
450
+ label?: string;
451
+ }
452
+ /** SidebarItem 그룹 라벨. collapsed에선 sr-only로 숨김. */
453
+ declare const SidebarSection: ({ label, className, children, ...props }: SidebarSectionProps) => react_jsx_runtime.JSX.Element;
454
+
455
+ type TabsVariant = "line" | "fills";
456
+ type TabsSize = "sm" | "md";
457
+ interface TabsProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange"> {
458
+ /** 제어형: 현재 활성 tab의 value */
459
+ value?: string;
460
+ /** 비제어형: 초기 활성 tab의 value */
461
+ defaultValue?: string;
462
+ /** value 변경 콜백 */
463
+ onValueChange?: (value: string) => void;
464
+ /** 시각 스타일 (기본값: "line"). line=하단 underline, pills=둥근 박스 */
465
+ variant?: TabsVariant;
466
+ /** 크기 (기본값: "md") */
467
+ size?: TabsSize;
468
+ }
469
+ /**
470
+ * 탭 컨테이너. TabList + TabPanel을 자식으로 받음.
471
+ * 컨텍스트로 value/onValueChange를 자식들에게 공유.
472
+ * - 제어형: `value` + `onValueChange`
473
+ * - 비제어형: `defaultValue`
474
+ */
475
+ declare const Tabs: ({ value: controlledValue, defaultValue, onValueChange, variant, size, className, children, ...props }: TabsProps) => react_jsx_runtime.JSX.Element;
476
+ interface TabListProps extends React$1.HTMLAttributes<HTMLDivElement> {
477
+ /** 스크린리더 라벨 */
478
+ ariaLabel?: string;
479
+ }
480
+ declare const TabList: ({ ariaLabel, className, children, ...props }: TabListProps) => react_jsx_runtime.JSX.Element;
481
+ interface TabProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
482
+ /** 이 tab의 value */
483
+ value: string;
484
+ }
485
+ declare const Tab: ({ value, className, children, onClick, ...props }: TabProps) => react_jsx_runtime.JSX.Element;
486
+ interface TabPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
487
+ /** 이 panel을 활성화할 tab의 value */
488
+ value: string;
489
+ /** 비활성 panel을 unmount 할지 (기본 true). false면 display: none으로 유지 */
490
+ unmountInactive?: boolean;
491
+ }
492
+ declare const TabPanel: ({ value, unmountInactive, className, children, ...props }: TabPanelProps) => react_jsx_runtime.JSX.Element | null;
493
+
494
+ type TooltipPlacement = "top" | "bottom" | "left" | "right";
495
+ interface TooltipProps {
496
+ /** 툴팁 콘텐츠 */
497
+ content: React$1.ReactNode;
498
+ /** 위치 (기본값: "top") */
499
+ placement?: TooltipPlacement;
500
+ /** hover 후 지연 시간 ms (기본 200) */
501
+ delay?: number;
502
+ /** 비활성화 — children만 그대로 렌더, 툴팁 없음 */
503
+ disabled?: boolean;
504
+ children: React$1.ReactElement;
505
+ }
506
+ /**
507
+ * hover/focus 시 추가 정보를 보여주는 툴팁. react-spring fade+slide entrance.
508
+ *
509
+ * @example
510
+ * ```tsx
511
+ * <Tooltip content="저장하기">
512
+ * <IconButton icon={<SaveIcon />} />
513
+ * </Tooltip>
514
+ * ```
515
+ */
516
+ declare const Tooltip: ({ content, placement, delay, disabled, children, }: TooltipProps) => react_jsx_runtime.JSX.Element;
4
517
 
5
518
  declare const a11y: {
6
519
  readonly focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)";
7
520
  readonly focusRingError: "0 0 0 3px rgba(239, 68, 68, 0.15)";
8
521
  readonly focusRingSuccess: "0 0 0 3px rgba(16, 185, 129, 0.15)";
9
522
  readonly tapMinSize: "44px";
523
+ readonly tapTarget: {
524
+ readonly dense: "32px";
525
+ readonly compact: "40px";
526
+ readonly comfortable: "48px";
527
+ readonly spacious: "56px";
528
+ };
10
529
  };
11
530
 
12
531
  declare const baseBorderWidth: {
@@ -17,6 +536,7 @@ declare const baseBorderWidth: {
17
536
  declare const borderWidth: {
18
537
  readonly none: "0px";
19
538
  readonly standard: "1px";
539
+ readonly thick: "2px";
20
540
  readonly indicator: "2px";
21
541
  };
22
542
 
@@ -32,6 +552,7 @@ declare const baseColors: {
32
552
  readonly blue600: "#1A73E8";
33
553
  readonly neutral0: "#FFFFFF";
34
554
  readonly neutral50: "#F4F4F4";
555
+ readonly neutral100: "#F2F2F2";
35
556
  readonly neutral200: "#E5E5E5";
36
557
  readonly neutral300: "#999999";
37
558
  readonly neutral400: "#B3B3B3";
@@ -44,6 +565,16 @@ declare const baseColors: {
44
565
  readonly statusSuccess: "#10B981";
45
566
  readonly statusWarning: "#F59E0B";
46
567
  readonly statusInfo: "#3B82F6";
568
+ readonly navy50: "#F2F5F8";
569
+ readonly navy100: "#DDE3E9";
570
+ readonly navy200: "#B4C2CD";
571
+ readonly navy300: "#7AA5D2";
572
+ readonly navy400: "#5A8DCB";
573
+ readonly navy500: "#4C7CB6";
574
+ readonly navy600: "#47555E";
575
+ readonly navy700: "#3D4852";
576
+ readonly navy800: "#303841";
577
+ readonly navy900: "#1F2630";
47
578
  readonly alphaBlack5: "rgba(0, 0, 0, 0.05)";
48
579
  readonly alphaBlack8: "rgba(0, 0, 0, 0.08)";
49
580
  readonly alphaBlack12: "rgba(26, 26, 26, 0.12)";
@@ -93,6 +624,14 @@ declare const colors: {
93
624
  readonly warning: "#F59E0B";
94
625
  readonly info: "#3B82F6";
95
626
  };
627
+ readonly accent: {
628
+ readonly subtle: "#F2F5F8";
629
+ readonly muted: "#DDE3E9";
630
+ readonly light: "#7AA5D2";
631
+ readonly default: "#47555E";
632
+ readonly strong: "#303841";
633
+ readonly onSurface: "#FFFFFF";
634
+ };
96
635
  };
97
636
 
98
637
  declare const elevation: {
@@ -114,6 +653,14 @@ declare const motion: {
114
653
  readonly slide: "0.25s ease-in-out";
115
654
  readonly scale: "0.2s cubic-bezier(0.2, 0.8, 0.2, 1)";
116
655
  readonly state: "0.18s ease-in-out";
656
+ readonly enterFast: "0.15s cubic-bezier(0.16, 1, 0.3, 1)";
657
+ readonly enterBase: "0.2s cubic-bezier(0.16, 1, 0.3, 1)";
658
+ readonly exitFast: "0.12s cubic-bezier(0.4, 0, 1, 1)";
659
+ readonly exitBase: "0.15s cubic-bezier(0.4, 0, 1, 1)";
660
+ };
661
+ readonly easing: {
662
+ readonly enter: "cubic-bezier(0.16, 1, 0.3, 1)";
663
+ readonly exit: "cubic-bezier(0.4, 0, 1, 1)";
117
664
  };
118
665
  };
119
666
 
@@ -226,6 +773,7 @@ declare const baseTypography: {
226
773
  };
227
774
  readonly letterSpacing: {
228
775
  readonly normal: "0px";
776
+ readonly tight: "0.32px";
229
777
  };
230
778
  };
231
779
  declare const typography: {
@@ -448,8 +996,17 @@ interface AlertOptions {
448
996
  cancelText?: string;
449
997
  /** 취소 버튼 표시 여부 (기본값: false) */
450
998
  showCancel?: boolean;
999
+ /**
1000
+ * Destructive 액션 여부. true 시 확인 버튼이 빨간 강조(danger)로 표시되고
1001
+ * 취소 버튼은 outline으로 유지. 위험성을 시각적으로 표현해 사용자가 인지 가능.
1002
+ * (Material/shadcn/Radix 표준 패턴)
1003
+ * @default false
1004
+ */
1005
+ destructive?: boolean;
451
1006
  /** 액션 버튼 정렬 (기본값: "right") */
452
1007
  actionsAlign?: AlertActionsAlign;
1008
+ /** 변형 아이콘 표시 여부 (기본값: false). 원하면 명시적으로 켜기 */
1009
+ showIcon?: boolean;
453
1010
  /** 확인 버튼 클릭 시 호출되는 콜백 */
454
1011
  onConfirm?: () => void;
455
1012
  /** 취소 버튼 클릭 시 호출되는 콜백 */
@@ -458,24 +1015,13 @@ interface AlertOptions {
458
1015
  interface AlertContextValue {
459
1016
  showAlert: (options: AlertOptions) => void;
460
1017
  }
461
- /**
462
- * AlertContext를 사용하는 훅.
463
- * Provider 외부에서 호출되면 오류를 던진다.
464
- * @returns alert 컨트롤러
465
- */
466
1018
  declare const useAlert: () => AlertContextValue;
467
- /**
468
- * 알림 모달을 제어하는 Provider를 렌더링한다.
469
- * 내부 상태를 통해 AlertModal 표시와 확인/취소 흐름을 관리한다.
470
- * @param props Provider 속성
471
- * @returns 렌더링된 Provider와 모달
472
- */
473
1019
  declare const AlertProvider: React$1.FC<{
474
1020
  children: React$1.ReactNode;
475
1021
  }>;
476
1022
 
477
1023
  type ButtonVariant = "filled" | "tonal" | "outline" | "text";
478
- type ButtonSize = "sm" | "md" | "xl";
1024
+ type ButtonSize = "sm" | "md" | "lg" | "xl";
479
1025
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
480
1026
  /** 버튼 스타일 변형 (기본값: "filled") */
481
1027
  variant?: ButtonVariant;
@@ -489,15 +1035,21 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
489
1035
  fullWidth?: boolean;
490
1036
  /** border-radius 토큰 (기본값: "full") */
491
1037
  radius?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "full";
1038
+ /**
1039
+ * 위험한 액션 (삭제/취소 등) — 빨간 강조.
1040
+ * filled: 빨간 bg, outline: 빨간 텍스트/border, tonal: 빨간 wash.
1041
+ */
1042
+ danger?: boolean;
492
1043
  }
493
1044
  /**
494
1045
  * 버튼을 렌더링한다.
495
- * Figma DS 기준 4가지 variant(filled/tonal/outline/text)와 3가지 size(sm/md/xl)를 지원한다.
1046
+ * Figma DS 기준 4가지 variant(filled/tonal/outline/text)와 4가지 size(sm/md/lg/xl)를 지원한다.
496
1047
  * @param props 버튼 속성
497
1048
  * @returns 렌더링된 버튼 요소
498
1049
  */
499
- declare const Button: ({ variant, size, leadingIcon, trailingIcon, fullWidth, radius, className, children, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
1050
+ declare const Button: ({ variant, size, leadingIcon, trailingIcon, fullWidth, radius, danger, className, children, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
500
1051
 
1052
+ type CardVariant = "default" | "accent";
501
1053
  interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
502
1054
  /** 카드 상단에 표시할 제목 */
503
1055
  heading?: React$1.ReactNode;
@@ -509,8 +1061,8 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
509
1061
  padding?: "none" | "sm" | "md" | "lg";
510
1062
  /** 테두리 표시 여부 (기본값: false) */
511
1063
  bordered?: boolean;
512
- /** hover 살짝 떠오르는 효과 (기본값: false) */
513
- hoverable?: boolean;
1064
+ /** 카드 variant "accent"는 navy bg + white text (강조 카드) */
1065
+ variant?: CardVariant;
514
1066
  }
515
1067
  /**
516
1068
  * 카드 컴포넌트를 렌더링한다.
@@ -518,7 +1070,7 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
518
1070
  * @param props 카드 속성
519
1071
  * @returns 렌더링된 카드 UI
520
1072
  */
521
- declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, hoverable, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
1073
+ declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, variant, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
522
1074
 
523
1075
  interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
524
1076
  /** 체크박스 옆에 표시할 라벨 */
@@ -541,26 +1093,34 @@ declare const Checkbox: {
541
1093
  displayName: string;
542
1094
  };
543
1095
 
544
- type ChipType = "basic" | "input" | "filter";
545
- interface ChipProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, "onClick"> {
546
- /** 유형 (기본값: "basic") */
1096
+ type ChipType = "basic" | "input" | "filter" | "static";
1097
+ type ChipSize = "sm" | "md";
1098
+ type ChipTone = "default" | "accent" | "info" | "success" | "warning" | "error";
1099
+ interface ChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClick"> {
1100
+ /** 칩 유형 (기본값: "basic"). `static`은 비인터랙티브 라벨 (구 Tag 대체) */
547
1101
  type?: ChipType;
1102
+ /** 칩 크기 (미지정 시 기본 32px). "sm"=24px, "md"=28px */
1103
+ size?: ChipSize;
1104
+ /** 색조 (type=`static`에서만 적용). 카테고리/상태 라벨 색 구분 */
1105
+ tone?: ChipTone;
548
1106
  /** 라벨 텍스트 */
549
1107
  label: string;
550
1108
  /** 선택 상태 */
551
1109
  selected?: boolean;
552
- /** 삭제 가능 여부 (input 타입에서만 사용) */
1110
+ /** 삭제 가능 여부 (input / static 타입에서 사용) */
553
1111
  removable?: boolean;
554
1112
  /** 비활성화 상태 */
555
1113
  disabled?: boolean;
556
1114
  /** 팝업 열림 상태 (filter 타입에서 aria-expanded로 사용) */
557
1115
  open?: boolean;
1116
+ /** 왼쪽 아이콘 (static 타입에서 사용) */
1117
+ leadingIcon?: React$1.ReactNode;
558
1118
  /** 칩 클릭 시 콜백 */
559
- onClick?: (event: React__default.MouseEvent<HTMLButtonElement>) => void;
1119
+ onClick?: (event: React$1.MouseEvent<HTMLButtonElement>) => void;
560
1120
  /** 삭제 버튼 클릭 시 콜백 */
561
1121
  onRemove?: () => void;
562
1122
  }
563
- declare const Chip: ({ type, label, selected, removable, disabled, open, onClick, onRemove, className, ...props }: ChipProps) => react_jsx_runtime.JSX.Element;
1123
+ declare const Chip: ({ type, size, tone, label, selected, removable, disabled, open, leadingIcon, onClick, onRemove, className, ...props }: ChipProps) => react_jsx_runtime.JSX.Element;
564
1124
 
565
1125
  type DatePickerMode = "year-month" | "year-month-day";
566
1126
  type SelectableRange = "all" | "until-today";
@@ -609,7 +1169,7 @@ interface DatePickerProps {
609
1169
  }
610
1170
  /**
611
1171
  * 연/월/일 선택형 데이트 피커를 렌더링한다.
612
- * 내부적으로 DS Select 3개를 조합해 드롭다운 UX 일관성을 유지한다.
1172
+ * 내부적으로 DS Dropdown 3개를 조합해 드롭다운 UX 일관성을 유지한다.
613
1173
  */
614
1174
  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;
615
1175
 
@@ -658,7 +1218,9 @@ interface DropdownProps {
658
1218
  disabled?: boolean;
659
1219
  /** 드롭다운 크기 (기본값: "md") */
660
1220
  size?: DropdownSize;
661
- /** 컨테이너 전체 너비 차지 여부 */
1221
+ /**
1222
+ * @deprecated Dropdown 은 이제 항상 부모 너비를 채웁니다. 인라인 사용 시 부모를 `inline-block + width` 로 감싸세요.
1223
+ */
662
1224
  fullWidth?: boolean;
663
1225
  /** 루트 요소에 추가할 className */
664
1226
  className?: string;
@@ -677,34 +1239,26 @@ interface DropdownProps {
677
1239
  * @param props 드롭다운 속성
678
1240
  * @returns 렌더링된 드롭다운 UI
679
1241
  */
680
- declare const Dropdown: ({ id, label, placeholder, options, value, onChange, defaultValue, disabled, size, fullWidth, className, }: DropdownProps) => react_jsx_runtime.JSX.Element;
681
-
682
- type FABVariant = "primary" | "additive";
683
- interface FABProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
684
- /** FAB 스타일 변형 (기본값: "primary") */
685
- variant?: FABVariant;
686
- /** 표시할 아이콘 */
687
- icon: React$1.ReactNode;
688
- /** 접근성 레이블 (스크린 리더용, 아이콘 전용 버튼이므로 필수) */
689
- "aria-label": string;
690
- }
691
- /**
692
- * FAB(Floating Action Button)을 렌더링한다.
693
- * 화면에서 가장 중요한 단일 액션을 강조하는 플로팅 버튼이다.
694
- * @param props FAB 속성
695
- * @returns 렌더링된 FAB 요소
696
- */
697
- declare const FAB: ({ variant, icon, className, ...props }: FABProps) => react_jsx_runtime.JSX.Element;
1242
+ declare const Dropdown: ({ id, label, placeholder, options, value, onChange, defaultValue, disabled, size, className, }: DropdownProps) => react_jsx_runtime.JSX.Element;
698
1243
 
1244
+ type FileInputVariant = "button" | "preview";
699
1245
  interface FileInputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
700
- /** 파일 선택 버튼 라벨 텍스트 (기본값: "Choose file") */
1246
+ /** 파일 선택 버튼 라벨 / preview variant 빈 상태 텍스트 (기본값: "Choose file") */
701
1247
  label?: string;
702
1248
  /** 파일 선택 시 호출되는 콜백 */
703
1249
  onFiles?: (files: FileList | null) => void;
704
1250
  /** 입력 필드 아래에 표시할 도움말 텍스트 (예: "PDF, DOC 파일만 업로드 가능합니다") */
705
1251
  supportingText?: string;
706
- /** 이미지 파일 선택 시 썸네일 미리보기 표시 여부 (기본값: false) */
1252
+ /** 이미지 파일 선택 시 64×64 썸네일을 버튼 아래 나열 (variant="button" 전용) */
707
1253
  preview?: boolean;
1254
+ /**
1255
+ * 표시 형태 (기본값: "button").
1256
+ * - `"button"`: 일반 파일 선택 버튼. `preview=true` 면 아래에 작은 썸네일 표시.
1257
+ * - `"preview"`: 큰 박스 안에 이미지 채움 (avatar / 이미지 업로더 패턴). 단일 이미지.
1258
+ */
1259
+ variant?: FileInputVariant;
1260
+ /** variant="preview" 박스 크기 (px, 기본값: 160) */
1261
+ previewSize?: number;
708
1262
  }
709
1263
  /**
710
1264
  * 파일 입력 컴포넌트를 렌더링한다.
@@ -712,35 +1266,79 @@ interface FileInputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
712
1266
  * @param props 파일 입력 속성
713
1267
  * @returns 렌더링된 파일 입력 UI
714
1268
  */
715
- declare const FileInput: ({ label, onFiles, supportingText, preview, className, disabled, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
1269
+ declare const FileInput: ({ label, onFiles, supportingText, preview, variant, previewSize, className, disabled, accept, onChange, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
716
1270
 
1271
+ interface HeroAction {
1272
+ /** 버튼 라벨 */
1273
+ label: React$1.ReactNode;
1274
+ /** 클릭 핸들러 */
1275
+ onClick?: () => void;
1276
+ /** href 사용 시 anchor로 렌더링 */
1277
+ href?: string;
1278
+ }
1279
+ type HeroHeight = "sm" | "md" | "lg" | "full";
1280
+ type HeroAlign = "left" | "center" | "right";
1281
+ type HeroOverlay = boolean | "dark" | "light" | "navy";
1282
+ interface HeroProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "title"> {
1283
+ /** 히어로 높이 (기본값: "md"). sm=320 / md=480 / lg=640 / full=100vh */
1284
+ height?: HeroHeight;
1285
+ /** 텍스트 정렬 (기본값: "left") */
1286
+ align?: HeroAlign;
1287
+ /** 배경 이미지 URL (CSS background-image로 사용) */
1288
+ backgroundImage?: string;
1289
+ /** 배경색 — backgroundImage 없을 때 또는 그 위에 색 적용 */
1290
+ backgroundColor?: string;
1291
+ /**
1292
+ * 텍스트 대비를 위한 오버레이.
1293
+ * - `true`/"dark": 위→아래 검정 그라데이션
1294
+ * - "light": 흰색 그라데이션
1295
+ * - "navy": Bigtablet brand navy 그라데이션 (marketing 강조)
1296
+ */
1297
+ overlay?: HeroOverlay;
1298
+ /** h1으로 렌더링되는 메인 제목 */
1299
+ title?: React$1.ReactNode;
1300
+ /** 제목 아래 부제목 */
1301
+ subtitle?: React$1.ReactNode;
1302
+ /** Eyebrow 텍스트 — 제목 위에 작게 표시되는 카테고리/태그 */
1303
+ eyebrow?: React$1.ReactNode;
1304
+ /** CTA 영역 (Button 등) */
1305
+ children?: React$1.ReactNode;
1306
+ /** 텍스트 색상 — 배경이 어두우면 흰색 권장 (기본값: "auto" — overlay가 dark면 white) */
1307
+ textColor?: "auto" | "inverse" | "default";
1308
+ /** Primary CTA — 미지정 시 children으로 직접 Button 전달 가능 */
1309
+ primaryAction?: HeroAction;
1310
+ /** Secondary CTA */
1311
+ secondaryAction?: HeroAction;
1312
+ }
717
1313
  /**
718
- * ⚠️ AUTO-GENERATED DO NOT EDIT MANUALLY
719
- * Run `node scripts/generate-icons.mjs` to regenerate.
720
- *
721
- * Source: @material-symbols/svg-300, @material-symbols/svg-400 (outlined)
722
- * Icons: 57 icons × 4 variants (weight 300/400 × fill/no-fill)
723
- * ViewBox: "0 -960 960 960" (Material Symbols standard)
1314
+ * 페이지 상단 히어로 섹션을 렌더링한다.
1315
+ * 배경 이미지/색상 + 오버레이 + 제목/부제목 + CTA 슬롯으로 구성.
1316
+ * @param props 히어로 속성
1317
+ * @returns 히어로 섹션
724
1318
  */
725
- type IconName = "add_a_photo" | "add_circle" | "add_lg" | "add_md" | "apartment" | "arrow_back" | "calendar_today" | "check" | "check_box" | "check_circle" | "close" | "close_small" | "cloud_download" | "cloud_upload" | "content_copy" | "delete_forever" | "edit" | "edit_note" | "error" | "event" | "fiber_manual_record" | "forward_5" | "group" | "groups" | "help" | "id" | "id_card" | "image" | "indeterminate_check_box" | "info" | "keyboard_arrow_down" | "keyboard_arrow_left" | "keyboard_arrow_right" | "keyboard_arrow_up" | "location_on" | "login" | "logout" | "more_vert" | "open_in_browser" | "open_in_new" | "pause" | "person" | "photo_camera" | "photo_library" | "play_arrow" | "replay_5" | "search" | "settings" | "share" | "speed_1_2x" | "speed_1_5x" | "speed_1_7x" | "speed_1x" | "speed_2x" | "stop" | "visibility" | "visibility_off";
726
- type IconWeight = 300 | 400;
1319
+ declare const Hero: ({ height, align, backgroundImage, backgroundColor, overlay, title, subtitle, eyebrow, textColor, primaryAction, secondaryAction, children, className, style, ...props }: HeroProps) => react_jsx_runtime.JSX.Element;
727
1320
 
728
- interface IconProps extends Omit<React$1.SVGProps<SVGSVGElement>, "fill"> {
729
- /** 아이콘 이름 */
730
- name: IconName;
731
- /** 아이콘 크기 (px, 기본값: 24) */
732
- size?: 20 | 24;
733
- /** 선의 굵기 (기본값: 400) */
734
- weight?: IconWeight;
735
- /** 채움 스타일 여부 (기본값: false) */
736
- fill?: boolean;
1321
+ interface IconProps extends Omit<LucideProps, "ref"> {
1322
+ /** lucide-react 아이콘 컴포넌트 */
1323
+ icon: LucideIcon;
737
1324
  }
738
1325
  /**
739
- * Material Symbols 기반 인라인 SVG 아이콘 컴포넌트.
740
- * weight(300/400) × fill(true/false) × size(20/24) 조합을 지원한다.
1326
+ * lucide-react 아이콘 wrapper.
1327
+ * aria-label이 없으면 aria-hidden을 자동 적용해 스크린리더 노이즈를 방지한다.
1328
+ *
1329
+ * @example
1330
+ * ```tsx
1331
+ * import { Icon } from "@bigtablet/design-system";
1332
+ * import { Search, X } from "lucide-react";
1333
+ *
1334
+ * <Icon icon={Search} size={20} />
1335
+ * <Icon icon={X} size={16} strokeWidth={2.5} aria-label="닫기" />
1336
+ * ```
1337
+ *
1338
+ * lucide-react 아이콘 전체 카탈로그: https://lucide.dev/icons/
741
1339
  */
742
1340
  declare const Icon: {
743
- ({ name, size, weight, fill, style, ...props }: IconProps): react_jsx_runtime.JSX.Element | null;
1341
+ ({ icon: IconComponent, ...props }: IconProps): react_jsx_runtime.JSX.Element;
744
1342
  displayName: string;
745
1343
  };
746
1344
 
@@ -772,7 +1370,7 @@ interface LinearProgressProps extends React.HTMLAttributes<HTMLDivElement> {
772
1370
  }
773
1371
  /**
774
1372
  * 선형 진행 표시기를 렌더링한다.
775
- * 현재 단계와 전체 단계를 기반으로 진행률을 시각적으로 표시한다.
1373
+ * `totalSteps + 1` dot (체크포인트) + 진행 바. Dot `i` 는 `i <= currentStep` 이면 채워짐.
776
1374
  * @param props 진행 표시기 속성
777
1375
  * @returns 렌더링된 진행 표시기 요소
778
1376
  */
@@ -791,10 +1389,12 @@ interface ListItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "on
791
1389
  leadingElement?: React$1.ReactNode;
792
1390
  /** 오른쪽에 표시할 요소 (아이콘 버튼, 체크박스 등) */
793
1391
  trailingElement?: React$1.ReactNode;
794
- /** 요소 정렬 (기본값: "top") */
1392
+ /** 요소 정렬. 미지정 시 자동: OneLine(label ) → middle, multi-line → top */
795
1393
  alignment?: "top" | "middle";
796
1394
  /** 비활성화 상태 */
797
1395
  disabled?: boolean;
1396
+ /** 선택 상태 — accent.subtle 배경 + accent.default 좌측 인디케이터 */
1397
+ selected?: boolean;
798
1398
  /** 클릭 시 콜백 */
799
1399
  onClick?: (event: React$1.MouseEvent<HTMLDivElement>) => void;
800
1400
  }
@@ -804,8 +1404,45 @@ interface ListItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "on
804
1404
  * @param props 리스트 아이템 속성
805
1405
  * @returns 렌더링된 리스트 아이템 UI
806
1406
  */
807
- declare const ListItem: ({ overline, label, supportingText, metadata, leadingElement, trailingElement, alignment, disabled, onClick, className, ...props }: ListItemProps) => react_jsx_runtime.JSX.Element;
1407
+ declare const ListItem: ({ overline, label, supportingText, metadata, leadingElement, trailingElement, alignment, disabled, selected, onClick, className, ...props }: ListItemProps) => react_jsx_runtime.JSX.Element;
1408
+
1409
+ type MediaCardImagePosition = "top" | "left" | "overlay";
1410
+ type MediaCardShadow = "none" | "sm" | "md" | "lg";
1411
+ interface MediaCardImage {
1412
+ src: string;
1413
+ alt: string;
1414
+ }
1415
+ interface MediaCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
1416
+ /** 이미지 정보 (src + alt). alt=""는 장식 이미지로 처리됨 */
1417
+ image: MediaCardImage;
1418
+ /** 이미지 위치 (기본값: "top"). overlay = 이미지 위에 텍스트가 얹힘 */
1419
+ imagePosition?: MediaCardImagePosition;
1420
+ /** 이미지 aspect-ratio (예: "16/9", "4/3", "1/1") */
1421
+ aspectRatio?: string;
1422
+ /** 카드 제목 */
1423
+ heading?: React$1.ReactNode;
1424
+ /** 제목 시맨틱 태그 (기본값: "h3") */
1425
+ headingAs?: "h2" | "h3" | "h4" | "h5" | "h6";
1426
+ /** Eyebrow — 제목 위 작은 라벨/카테고리 */
1427
+ eyebrow?: React$1.ReactNode;
1428
+ /** 카드 그림자 (기본값: "sm") */
1429
+ shadow?: MediaCardShadow;
1430
+ /** 테두리 표시 여부 (기본값: false) */
1431
+ bordered?: boolean;
1432
+ /** 카드 클릭 가능 여부 (hover 강조 + cursor) */
1433
+ clickable?: boolean;
1434
+ /** 메타 영역 (날짜/작성자/조회수 등) — 본문 아래 작은 텍스트 */
1435
+ meta?: React$1.ReactNode;
1436
+ }
1437
+ /**
1438
+ * 이미지가 포함된 카드를 렌더링한다.
1439
+ * Blog/News/Product 같은 B2C 콘텐츠 리스트에 사용한다.
1440
+ * @param props 카드 속성
1441
+ * @returns 이미지 카드
1442
+ */
1443
+ declare const MediaCard: ({ image, imagePosition, aspectRatio, heading, headingAs: HeadingTag, eyebrow, shadow, bordered, clickable, meta, children, className, ...props }: MediaCardProps) => react_jsx_runtime.JSX.Element;
808
1444
 
1445
+ type ModalFooterAlign = "end" | "between" | "start";
809
1446
  interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
810
1447
  /** 모달 열림 여부 */
811
1448
  open: boolean;
@@ -813,20 +1450,30 @@ interface ModalProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title
813
1450
  onClose?: () => void;
814
1451
  /** 오버레이 클릭 시 닫기 여부 (기본값: true) */
815
1452
  closeOnOverlay?: boolean;
816
- /** 모달 패널 너비 (기본값: 520) */
1453
+ /** 모달 패널 너비 (기본값: 480) */
817
1454
  width?: number | string;
818
- /** 모달 헤더에 표시할 제목 */
1455
+ /** 모달 제목 (h2, heading_large_bold) */
819
1456
  title?: React$1.ReactNode;
1457
+ /** 제목 아래 본문 설명 — paragraph로 자동 wrap */
1458
+ description?: React$1.ReactNode;
1459
+ /** 하단 액션 영역 (Button들). 미지정 시 footer 영역 자체가 안 보임 */
1460
+ footer?: React$1.ReactNode;
1461
+ /** Footer 정렬 (기본값: "end"). between은 좌우 분리 패턴 (destructive 액션 등) */
1462
+ footerAlign?: ModalFooterAlign;
1463
+ /** 우상단 X 닫기 아이콘 표시 여부 (기본값: true) */
1464
+ showCloseIcon?: boolean;
1465
+ /** X 닫기 버튼 접근성 레이블 (기본값: "닫기") */
1466
+ closeLabel?: string;
820
1467
  /** 모달 접근성 레이블(기본값: title 또는 "Dialog") */
821
1468
  ariaLabel?: string;
822
1469
  }
823
1470
  /**
824
1471
  * 모달을 렌더링한다.
825
- * 포커스 트랩과 스크롤 잠금을 적용하고, 열림 상태에 따라 오버레이/패널을 구성한다.
1472
+ * react-spring 기반 진입/퇴출 모션 + 포커스 트랩 + 바디 스크롤 잠금.
826
1473
  * @param props 모달 속성
827
1474
  * @returns 열림 상태일 때 렌더링된 모달, 닫힘 상태면 null
828
1475
  */
829
- declare const Modal: ({ open, onClose, closeOnOverlay, width, title, children, className, ariaLabel, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
1476
+ declare const Modal: ({ open, onClose, closeOnOverlay, width, title, description, footer, footerAlign, showCloseIcon, closeLabel, children, className, ariaLabel, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
830
1477
 
831
1478
  interface OtpInputProps {
832
1479
  /** OTP 자릿수 (기본값: 6) */
@@ -898,6 +1545,24 @@ declare const Radio: {
898
1545
  displayName: string;
899
1546
  };
900
1547
 
1548
+ type SkeletonVariant = "text" | "title" | "avatar" | "rect";
1549
+ interface SkeletonProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
1550
+ /** 스켈레톤 모양 (기본값: "text") */
1551
+ variant?: SkeletonVariant;
1552
+ /** CSS width 값 (예: "100%", 200, "16rem"). variant=avatar는 width=height로 사용 */
1553
+ width?: number | string;
1554
+ /** CSS height 값 */
1555
+ height?: number | string;
1556
+ /** border-radius 토큰 (sm/md/lg) 또는 임의 CSS 값 */
1557
+ radius?: "sm" | "md" | "lg" | "full" | string;
1558
+ }
1559
+ /**
1560
+ * 로딩 상태를 표현하는 스켈레톤 플레이스홀더를 렌더링한다.
1561
+ * @param props 스켈레톤 속성
1562
+ * @returns 스켈레톤 요소
1563
+ */
1564
+ declare const Skeleton: ({ variant, width, height, radius, className, style, ...props }: SkeletonProps) => react_jsx_runtime.JSX.Element;
1565
+
901
1566
  interface SpinnerProps {
902
1567
  /** 스피너 크기(px) (기본값: 24) */
903
1568
  size?: number;
@@ -905,14 +1570,97 @@ interface SpinnerProps {
905
1570
  ariaLabel?: string;
906
1571
  }
907
1572
  /**
908
- * 스피너를 렌더링한다.
909
- * 크기와 접근성 레이블을 적용한 상태 표시용 요소를 반환한다.
1573
+ * 스피너를 렌더링한다. 12개 bar 가 방사형으로 배치되어 페이드 인/아웃 으로 회전하는 효과.
1574
+ * Vercel/iOS 스타일 클래식 border-spin 보다 부드럽고 미니멀.
910
1575
  * @param props 스피너 속성
911
1576
  * @returns 렌더링된 스피너 요소
912
1577
  */
913
1578
  declare const Spinner: ({ size, ariaLabel }: SpinnerProps) => react_jsx_runtime.JSX.Element;
914
1579
 
915
- type TextFieldSize = "sm" | "md";
1580
+ type TableSize = "sm" | "md" | "lg";
1581
+ interface TableColumn<T extends object> {
1582
+ /** 컬럼 식별자 — `data[key]` 자동 렌더링에도 쓰임 */
1583
+ key: string;
1584
+ /** thead에 표시할 헤더 텍스트 */
1585
+ header: React$1.ReactNode;
1586
+ /** 셀 렌더 함수. 없으면 `item[key]` 자동 렌더 */
1587
+ render?: (item: T, index: number) => React$1.ReactNode;
1588
+ /** CSS width 값 (예: "120px", "20%") */
1589
+ width?: string;
1590
+ /** 정렬 (기본값: "left") */
1591
+ align?: "left" | "center" | "right";
1592
+ }
1593
+ interface TableProps<T extends object> {
1594
+ /** 컬럼 정의 */
1595
+ columns: TableColumn<T>[];
1596
+ /** 표시할 데이터 배열 */
1597
+ data: T[];
1598
+ /** 행의 고유 key 추출 함수 */
1599
+ keyExtractor: (item: T, index: number) => string | number;
1600
+ /** 데이터 없을 때 표시 (기본값: "데이터가 없습니다") */
1601
+ emptyMessage?: React$1.ReactNode;
1602
+ /** 로딩 상태 — 헤더 유지, 바디만 스켈레톤 */
1603
+ isLoading?: boolean;
1604
+ /** 로딩 시 스켈레톤 행 개수 (기본값: 5) */
1605
+ skeletonRows?: number;
1606
+ /** 테이블 크기 (기본값: "md") */
1607
+ size?: TableSize;
1608
+ /** 행 hover 강조 (기본값: true) */
1609
+ hoverable?: boolean;
1610
+ /** thead sticky 고정 (기본값: false) */
1611
+ stickyHeader?: boolean;
1612
+ /** 스크린 리더용 테이블 레이블 */
1613
+ ariaLabel?: string;
1614
+ /** 루트 wrapper에 추가할 className */
1615
+ className?: string;
1616
+ /** 행 클릭 콜백 */
1617
+ onRowClick?: (item: T, index: number) => void;
1618
+ }
1619
+ /**
1620
+ * 데이터 테이블을 렌더링한다. 로딩 중에는 헤더 유지, 바디에 스켈레톤 행을 표시한다.
1621
+ * @param props 테이블 속성
1622
+ * @returns 테이블 컴포넌트
1623
+ */
1624
+ 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;
1625
+
1626
+ type ThemeMode = "light" | "dark" | "system";
1627
+ type ResolvedTheme = "light" | "dark";
1628
+ interface ThemeContextValue {
1629
+ /** 현재 선택된 모드 (system 포함) */
1630
+ mode: ThemeMode;
1631
+ /** 실제로 적용된 테마 (system은 prefers-color-scheme으로 해석됨) */
1632
+ resolved: ResolvedTheme;
1633
+ /** 모드 변경 */
1634
+ setMode: (mode: ThemeMode) => void;
1635
+ }
1636
+ /**
1637
+ * ThemeProvider 안에서 호출. mode/resolved/setMode를 반환.
1638
+ * Provider 외부에서 호출하면 에러를 던진다.
1639
+ */
1640
+ declare const useTheme: () => ThemeContextValue;
1641
+ interface ThemeProviderProps {
1642
+ /** 초기 테마 (기본값: "system") */
1643
+ defaultMode?: ThemeMode;
1644
+ /** localStorage 키 (기본값: "bt-theme"). null이면 저장 안 함 */
1645
+ storageKey?: string | null;
1646
+ /** 적용 대상 element selector (기본값: document.documentElement) */
1647
+ targetSelector?: string;
1648
+ children: React$1.ReactNode;
1649
+ }
1650
+ /**
1651
+ * Bigtablet DS 테마 컨텍스트를 제공한다.
1652
+ * `data-theme` attribute를 root element에 적용해서 CSS 변수 레이어를 전환한다.
1653
+ *
1654
+ * @example
1655
+ * ```tsx
1656
+ * <ThemeProvider defaultMode="system">
1657
+ * <App />
1658
+ * </ThemeProvider>
1659
+ * ```
1660
+ */
1661
+ declare const ThemeProvider: React$1.FC<ThemeProviderProps>;
1662
+
1663
+ type TextFieldSize = "sm" | "md" | "lg";
916
1664
  interface TextFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "onChange" | "value" | "defaultValue"> {
917
1665
  /** 입력 필드 크기 (기본값: "md") */
918
1666
  size?: TextFieldSize;
@@ -1036,4 +1784,154 @@ interface TopLoadingProps {
1036
1784
  */
1037
1785
  declare const TopLoading: ({ progress, color, height, isLoading, ariaLabel, }: TopLoadingProps) => react_jsx_runtime.JSX.Element | null;
1038
1786
 
1039
- export { AlertProvider, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipType, DatePicker, type DatePickerProps, Divider, type DividerProps, Dropdown, type DropdownOption, type DropdownProps, type DropdownSize, FAB, type FABProps, type FABVariant, FileInput, type FileInputProps, Icon, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconName, type IconProps, type IconWeight, LinearProgress, type LinearProgressProps, ListItem, type ListItemProps, Modal, type ModalProps, OtpInput, type OtpInputProps, Pagination, type PaginationProps, Radio, type RadioProps, Dropdown as Select, type DropdownOption as SelectOption, type DropdownProps as SelectProps, Spinner, type SpinnerProps, TextField, type TextFieldProps, ToastProvider, Toggle, type ToggleProps, TopLoading, type TopLoadingProps, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useToast, zIndex };
1787
+ type ContainerSize = "sm" | "md" | "lg" | "xl" | "full";
1788
+ interface ContainerProps extends React$1.HTMLAttributes<HTMLDivElement> {
1789
+ /**
1790
+ * max-width 크기
1791
+ * - sm: 640px | md: 768px | lg: 1024px | xl: 1200px | full: 100%
1792
+ * @default "xl"
1793
+ */
1794
+ size?: ContainerSize;
1795
+ /** 가운데 정렬 (기본 true) */
1796
+ center?: boolean;
1797
+ /** 렌더링할 HTML 요소 */
1798
+ as?: React$1.ElementType;
1799
+ }
1800
+ /**
1801
+ * max-width 제한 + 반응형 수평 패딩을 가진 컨테이너.
1802
+ * 모든 마케팅/서비스 페이지의 기본 wrapper.
1803
+ *
1804
+ * @example
1805
+ * ```tsx
1806
+ * <Container size="xl">
1807
+ * <HeroSection />
1808
+ * <FeatureGrid />
1809
+ * </Container>
1810
+ * ```
1811
+ */
1812
+ declare const Container: ({ size, center, as: Tag, className, children, ...props }: ContainerProps) => react_jsx_runtime.JSX.Element;
1813
+
1814
+ type SectionSpacing = "xs" | "sm" | "md" | "lg" | "xl";
1815
+ type SectionBg = "default" | "dim" | "accent" | "navy" | "transparent";
1816
+ interface SectionProps extends React$1.HTMLAttributes<HTMLElement> {
1817
+ /**
1818
+ * 수직 패딩 크기
1819
+ * - xs: 32px | sm: 48px | md: 64px | lg: 96px | xl: 128px
1820
+ * @default "md"
1821
+ */
1822
+ spacing?: SectionSpacing;
1823
+ /**
1824
+ * 배경색 변형
1825
+ * - default: bg-solid | dim: bg-solid-dim | accent: accent-subtle | navy: accent-default
1826
+ * @default "default"
1827
+ */
1828
+ bg?: SectionBg;
1829
+ /** 렌더링할 HTML 요소 */
1830
+ as?: React$1.ElementType;
1831
+ }
1832
+ /**
1833
+ * 마케팅 페이지의 섹션 단위. 수직 여백 + 배경색 variants.
1834
+ *
1835
+ * @example
1836
+ * ```tsx
1837
+ * <Section spacing="lg" bg="dim">
1838
+ * <Container>
1839
+ * <h2>Features</h2>
1840
+ * <FeatureGrid />
1841
+ * </Container>
1842
+ * </Section>
1843
+ * ```
1844
+ */
1845
+ declare const Section: ({ spacing, bg, as: Tag, className, children, ...props }: SectionProps) => react_jsx_runtime.JSX.Element;
1846
+
1847
+ type StackDirection = "vertical" | "horizontal";
1848
+ type StackAlign = "start" | "center" | "end" | "stretch";
1849
+ type StackJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
1850
+ type StackGap = 0 | 2 | 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40 | 48;
1851
+ type StackWrap = "nowrap" | "wrap" | "wrap-reverse";
1852
+ interface StackProps extends React$1.HTMLAttributes<HTMLDivElement> {
1853
+ /**
1854
+ * flex 방향
1855
+ * @default "vertical"
1856
+ */
1857
+ direction?: StackDirection;
1858
+ /**
1859
+ * 아이템 간격 (px)
1860
+ * @default 16
1861
+ */
1862
+ gap?: StackGap;
1863
+ /** 교차축 정렬 (align-items) */
1864
+ align?: StackAlign;
1865
+ /** 주축 정렬 (justify-content) */
1866
+ justify?: StackJustify;
1867
+ /** flex-wrap */
1868
+ wrap?: StackWrap;
1869
+ /** 렌더링할 HTML 요소 */
1870
+ as?: React$1.ElementType;
1871
+ }
1872
+ /**
1873
+ * Flex 기반 1D 레이아웃 컨테이너.
1874
+ * 수직(column) / 수평(row) 스택 + 간격/정렬 제어.
1875
+ *
1876
+ * @example
1877
+ * ```tsx
1878
+ * <Stack direction="horizontal" gap={16} align="center">
1879
+ * <Icon name="star" />
1880
+ * <span>Rating</span>
1881
+ * </Stack>
1882
+ *
1883
+ * <Stack gap={24}>
1884
+ * <Card />
1885
+ * <Card />
1886
+ * </Stack>
1887
+ * ```
1888
+ */
1889
+ declare const Stack: ({ direction, gap, align, justify, wrap, as: Tag, className, children, style, ...props }: StackProps) => react_jsx_runtime.JSX.Element;
1890
+
1891
+ type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | "auto";
1892
+ type GridGap = 0 | 4 | 8 | 12 | 16 | 20 | 24 | 32 | 40 | 48;
1893
+ interface GridProps extends React$1.HTMLAttributes<HTMLDivElement> {
1894
+ /**
1895
+ * 열 수. "auto" = auto-fill (minColWidth 사용)
1896
+ * @default 3
1897
+ */
1898
+ cols?: GridCols;
1899
+ /**
1900
+ * auto-fill 모드일 때 최소 열 너비
1901
+ * @default "280px"
1902
+ */
1903
+ minColWidth?: string;
1904
+ /**
1905
+ * 아이템 간격 (px). gap과 rowGap/colGap 동시 적용.
1906
+ * @default 24
1907
+ */
1908
+ gap?: GridGap;
1909
+ /** 행 간격 (gap을 override) */
1910
+ rowGap?: GridGap;
1911
+ /** 열 간격 (gap을 override) */
1912
+ colGap?: GridGap;
1913
+ /** 반응형 — compact(< 600px)에서 강제 1열 (기본 true) */
1914
+ singleColOnMobile?: boolean;
1915
+ /** 렌더링할 HTML 요소 */
1916
+ as?: React$1.ElementType;
1917
+ }
1918
+ /**
1919
+ * CSS Grid 기반 2D 레이아웃 컨테이너.
1920
+ * 고정 열 수 또는 auto-fill 반응형 그리드.
1921
+ *
1922
+ * @example
1923
+ * ```tsx
1924
+ * // 3열 고정
1925
+ * <Grid cols={3} gap={24}>
1926
+ * <Card /><Card /><Card />
1927
+ * </Grid>
1928
+ *
1929
+ * // auto-fill (최소 280px)
1930
+ * <Grid cols="auto" minColWidth="280px" gap={16}>
1931
+ * {products.map(p => <MediaCard key={p.id} {...p} />)}
1932
+ * </Grid>
1933
+ * ```
1934
+ */
1935
+ declare const Grid: ({ cols, minColWidth, gap, rowGap, colGap, singleColOnMobile, as: Tag, className, children, style, ...props }: GridProps) => react_jsx_runtime.JSX.Element;
1936
+
1937
+ 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 CardProps, 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, 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, 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, Radio, 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 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 };