import React from 'react'; import * as react_jsx_runtime from 'react/jsx-runtime'; export { FontSizeKey, FontWeightKey, LineHeightKey, RadiusKey, ShadowKey, SpacingKey, colors, getPrimaryColorClass, getRadiusClass, getShadowClass, getSpacingClass, getSpacingValue, getTextPrimaryColorClass, radius, shadows, spacing, typography } from './tokens.js'; export { LayoutShell, LayoutShellProps } from './patterns.js'; import { ClassValue } from 'clsx'; type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'; type ButtonSize = 'sm' | 'md' | 'lg'; interface ButtonProps extends React.ButtonHTMLAttributes { variant?: ButtonVariant; size?: ButtonSize; isLoading?: boolean; leftIcon?: string; rightIcon?: string; children?: React.ReactNode; } declare const Button: React.ForwardRefExoticComponent>; type BadgeStatus = 'active' | 'in-progress' | 'pending' | 'error' | 'inactive'; declare const BadgeStatus: React.FC<{ status: BadgeStatus; children: React.ReactNode; leftIcon?: string; rightIcon?: string; className?: string; }>; declare const DotLabel: React.FC<{ color: string; children: React.ReactNode; }>; declare const CountBadge: React.FC<{ value: number | string; variant?: 'red' | 'teal' | 'default'; size?: 'sm' | 'md'; }>; declare const NotificationDot: React.FC<{ variant?: 'red' | 'teal' | 'default'; }>; declare const FeatureTag: React.FC<{ children: React.ReactNode; }>; interface InputProps { type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url'; label?: string | React.ReactNode; placeholder?: string; error?: string; helpText?: string; disabled?: boolean; required?: boolean; leftIcon?: string; rightIcon?: string; leftSlot?: React.ReactNode; rightSlot?: React.ReactNode; className?: string; labelClassName?: string; inputClassName?: string; value?: string; defaultValue?: string; onChange?: (e: React.ChangeEvent) => void; id?: string; name?: string; pattern?: string; minLength?: number; maxLength?: number; step?: number; } declare const Input: React.ForwardRefExoticComponent>; declare const SearchInput: React.ForwardRefExoticComponent<{ placeholder?: string; error?: string; helpText?: string; disabled?: boolean; className?: string; value?: string; defaultValue?: string; onChange?: (e: React.ChangeEvent) => void; id?: string; name?: string; } & React.RefAttributes>; declare const Select: React.ForwardRefExoticComponent<{ label?: string | React.ReactNode; children?: React.ReactNode; error?: string; helpText?: string; disabled?: boolean; required?: boolean; className?: string; selectClassName?: string; defaultValue?: string; value?: string; onChange?: (e: React.ChangeEvent) => void; id?: string; name?: string; } & React.RefAttributes>; declare const Toggle: React.FC<{ checked: boolean; onChange?: (checked: boolean) => void; disabled?: boolean; label?: string | React.ReactNode; className?: string; labelClassName?: string; }>; declare const Checkbox: React.FC<{ checked: boolean; onChange?: (checked: boolean) => void; disabled?: boolean; label?: string | React.ReactNode; className?: string; labelClassName?: string; }>; declare const Radio: React.FC<{ checked: boolean; onChange?: (checked: boolean) => void; disabled?: boolean; label?: string | React.ReactNode; labelClassName?: string; name?: string; value?: string; }>; declare const NumberInput: React.ForwardRefExoticComponent<{ label?: string | React.ReactNode; value?: number; defaultValue?: number; onChange?: (value: number) => void; min?: number; max?: number; step?: number; unit?: string; error?: string; helpText?: string; disabled?: boolean; required?: boolean; className?: string; id?: string; name?: string; } & React.RefAttributes>; declare const Slider: React.FC<{ value: number; onChange?: (value: number) => void; min?: number; max?: number; step?: number; disabled?: boolean; showValue?: boolean; label?: string; className?: string; }>; declare const Textarea: React.ForwardRefExoticComponent<{ label?: string | React.ReactNode; placeholder?: string; error?: string; helpText?: string; disabled?: boolean; required?: boolean; rows?: number; className?: string; textareaClassName?: string; value?: string; defaultValue?: string; onChange?: (e: React.ChangeEvent) => void; id?: string; name?: string; minLength?: number; maxLength?: number; } & React.RefAttributes>; interface BreadcrumbItem { label: string; href?: string; } declare const Breadcrumb: React.FC<{ items: BreadcrumbItem[]; }>; declare const Tabs: React.FC<{ defaultValue: string; children: React.ReactNode; onValueChange?: (value: string) => void; }>; declare const TabList: React.FC<{ children: React.ReactNode; className?: string; }>; declare const Tab: React.FC<{ value: string; children: React.ReactNode; className?: string; }>; declare const TabContent: React.FC<{ value: string; children: React.ReactNode; className?: string; }>; type TabItem = { value: string; label: string; }; declare const PillTabs: React.FC<{ defaultValue?: string; value?: string; children: React.ReactNode; onValueChange?: (value: string) => void; }>; declare const PillTabsList: React.FC<{ children: React.ReactNode; className?: string; }>; declare const PillTab: React.FC<{ value: string; children: React.ReactNode; className?: string; }>; declare const NeutralPillTabs: React.FC<{ defaultValue?: string; value?: string; children: React.ReactNode; onValueChange?: (value: string) => void; }>; declare const NeutralPillTabsList: React.FC<{ children: React.ReactNode; className?: string; }>; declare const NeutralPillTab: React.FC<{ value: string; children: React.ReactNode; className?: string; }>; interface SidebarNavItem { label: string; icon: string; href?: string; badge?: number; children?: SidebarNavItem[]; disabled?: boolean; active?: boolean; } interface SidebarNavGroup { title?: string; children: SidebarNavItem[]; } interface SidebarNavProps { items: SidebarNavGroup[]; activePath?: string; onItemClick?: (item: SidebarNavItem) => void; header?: React.ReactNode; footer?: React.ReactNode; showLogo?: boolean; showUser?: boolean; } declare const SidebarNav: React.FC; type IconGradient = 'teal' | 'green' | 'amber' | 'red'; type ChangeType = 'positive' | 'negative' | 'neutral'; interface StatCardProps { icon: string; iconGradient?: IconGradient; label: string; value: string | number; change?: string | number; changeType?: ChangeType; progress?: number; className?: string; } declare const StatCard: React.FC; interface ToolCardProps { icon: string; status?: BadgeStatus; title: string; description?: string; tags?: string[]; onClick?: () => void; className?: string; } declare const ToolCard: React.FC; interface EmptyCardProps { icon?: string; label?: string; description?: string; onClick?: () => void; minHeight?: string; className?: string; } declare const EmptyCard: React.FC; interface PaginationProps { currentPage: number; totalPages: number; totalCount?: number; pageSize?: number; onPageChange: (page: number) => void; className?: string; } declare const Pagination: React.FC; interface TableColumn> { key: string; label: string; width?: string; render?: (value: unknown, row: T, index: number) => React.ReactNode; } interface TableProps> { columns: TableColumn[]; data: T[]; title?: string; totalCount?: number; onSearch?: (query: string) => void; onFilter?: () => void; searchPlaceholder?: string; currentPage?: number; totalPages?: number; pageSize?: number; onPageChange?: (page: number) => void; className?: string; emptyMessage?: string; } declare function Table>({ columns, data, title, totalCount, onSearch, onFilter, searchPlaceholder, currentPage, totalPages, pageSize, onPageChange, className, emptyMessage, }: TableProps): react_jsx_runtime.JSX.Element; interface ModalProps { open: boolean; onClose: () => void; title?: string; children: React.ReactNode; footer?: React.ReactNode; size?: 'sm' | 'md' | 'lg'; } declare const Modal: React.FC; interface SectionedModalProps { open: boolean; onClose: () => void; /** 헤더 좌측 제목. ReactNode 허용 (아이콘+텍스트 조합 등) */ title?: React.ReactNode; /** 제목 좌측에 표시할 material icon 이름 (선택) */ headerIcon?: string; /** 제목 우측에 표시할 부가 메타 (파일명·페이지 정보 등) */ headerExtra?: React.ReactNode; /** 모달 본문 */ children: React.ReactNode; /** 푸터 영역. 비우면 footer 자체가 렌더되지 않음 */ footer?: React.ReactNode; /** 푸터 정렬. 기본 'end' (우측 정렬) */ footerAlign?: 'start' | 'end' | 'between'; /** 모달 크기. 기본 'md'. xl/2xl은 풍부한 콘텐츠용 */ size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'; /** body 영역 className override (기본 'px-5 py-4'). padding/style 커스터마이징용 */ bodyClassName?: string; } declare const SectionedModal: React.FC; type ConfirmVariant = 'delete' | 'reset' | 'confirm'; interface ConfirmModalProps { open: boolean; onClose: () => void; onConfirm: () => void; title: string; description: string; confirmLabel?: string; cancelLabel?: string; variant?: ConfirmVariant; } declare const ConfirmModal: React.FC; type ToastType = 'success' | 'error' | 'warning' | 'info'; interface ToastItem { id: string; type: ToastType; title: string; description?: string; duration?: number; } interface ToastContextValue { toast: (item: Omit) => void; dismiss: (id: string) => void; } declare function useToast(): ToastContextValue; declare const ToastProvider: React.FC<{ children: React.ReactNode; }>; type AvatarSize = 'xs' | 'sm' | 'md' | 'lg'; type AvatarStatus = 'online' | 'offline' | 'warning' | 'none'; interface AvatarProps { src?: string | null; name?: string | null; email?: string | null; alt?: string; size?: AvatarSize; status?: AvatarStatus; className?: string; } declare function getAvatarInitial(name?: string | null, email?: string | null): string; declare const Avatar: React.FC; interface DropdownMenuProps { trigger: React.ReactNode; children: React.ReactNode; open?: boolean; defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; align?: 'start' | 'center' | 'end'; side?: 'top' | 'right' | 'bottom' | 'left'; width?: 'trigger' | 'sm' | 'md' | 'lg'; className?: string; } interface DropdownMenuItemProps { leftIcon?: string; rightIcon?: string; rightSlot?: React.ReactNode; description?: string; disabled?: boolean; tone?: 'default' | 'danger'; onSelect?: () => void; children: React.ReactNode; } declare const DropdownMenu: React.FC & { Item: React.FC; Label: React.FC<{ children: React.ReactNode; className?: string; }>; Separator: React.FC<{ className?: string; }>; Group: React.FC<{ children: React.ReactNode; className?: string; }>; }; interface UserMenuUser { name?: string | null; email: string; avatarUrl?: string | null; } interface UserMenuIntegration { label: string; status: 'connected' | 'disconnected' | 'warning'; helperText?: string; } interface UserMenuExtraItem { label: string; leftIcon?: string; description?: string; tone?: DropdownMenuItemProps['tone']; disabled?: boolean; onSelect?: () => void; } interface UserMenuProps { user: UserMenuUser; integrations?: UserMenuIntegration[]; placement?: 'sidebar' | 'topbar'; onSettingsClick?: () => void; onLogout?: () => void; extraItems?: UserMenuExtraItem[]; className?: string; } declare const UserMenu: React.FC; type IntegrationStatus = 'connected' | 'disconnected' | 'warning' | 'error'; interface IntegrationStatusCardProps { icon?: string; title: string; status: IntegrationStatus; description?: string; metadata?: React.ReactNode; primaryAction?: { label: string; onClick: () => void; isLoading?: boolean; }; secondaryAction?: { label: string; onClick: () => void; tone?: 'default' | 'danger'; }; className?: string; } declare const IntegrationStatusCard: React.FC; type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'; interface TooltipProps { content: string; placement?: TooltipPlacement; maxWidth?: boolean; children: React.ReactNode; className?: string; } declare const Tooltip: React.FC; interface DescriptionItem { label: string; value: React.ReactNode; } interface DescriptionListProps { items: DescriptionItem[]; layout?: 'vertical' | 'grid'; divider?: boolean; className?: string; } declare const DescriptionList: React.FC; interface DropZoneProps { onFileSelect?: (files: FileList) => void; accept?: string; multiple?: boolean; label?: string; description?: string; className?: string; disabled?: boolean; isLoading?: boolean; } declare const DropZone: React.FC; type FileItemStatus = 'uploading' | 'complete' | 'error'; interface FileItemProps { name: string; size?: string; status?: FileItemStatus; progress?: number; onRemove?: () => void; } declare const FileItem: React.FC; interface BulkAction { label: string; icon?: string; onClick: () => void; variant?: 'primary' | 'secondary' | 'danger'; } interface BulkActionBarProps { selectedCount: number; onClearSelection: () => void; actions: BulkAction[]; position?: 'bottom-floating' | 'bottom-sticky' | 'top-floating'; theme?: 'dark' | 'light'; className?: string; } declare const BulkActionBar: React.FC; type CalloutVariant = 'info' | 'warning' | 'error' | 'tip'; interface CalloutProps { variant?: CalloutVariant; children: React.ReactNode; className?: string; } declare const Callout: React.FC; interface StepperStep { label: string; } interface StepperProps { steps: StepperStep[]; currentStep: number; compact?: boolean; className?: string; } declare const Stepper: React.FC; /** * Tailwind CSS 클래스와 clsx 를 조합하여 동적으로 클래스명 처리 * - 중복된 클래스 자동 병합 (tailwind-merge) * - 조건부 클래스 적용 (clsx) */ declare function cn(...inputs: ClassValue[]): string; export { Avatar, type AvatarProps, type AvatarSize, type AvatarStatus, BadgeStatus, BadgeStatus as BadgeStatusType, Breadcrumb, type BreadcrumbItem, type BulkAction, BulkActionBar, type BulkActionBarProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Callout, type CalloutProps, type CalloutVariant, Checkbox, ConfirmModal, type ConfirmModalProps, CountBadge, type DescriptionItem, DescriptionList, type DescriptionListProps, DotLabel, DropZone, type DropZoneProps, DropdownMenu, type DropdownMenuItemProps, type DropdownMenuProps, EmptyCard, type EmptyCardProps, FeatureTag, FileItem, type FileItemProps, type FileItemStatus, Input, type InputProps, type IntegrationStatus, IntegrationStatusCard, type IntegrationStatusCardProps, Modal, type ModalProps, NeutralPillTab, NeutralPillTabs, NeutralPillTabsList, NotificationDot, NumberInput, Pagination, type PaginationProps, PillTab, PillTabs, PillTabsList, Radio, SearchInput, SectionedModal, type SectionedModalProps, Select, SidebarNav, type SidebarNavGroup, type SidebarNavItem, type SidebarNavProps, Slider, StatCard, type StatCardProps, Stepper, type StepperProps, type StepperStep, Tab, TabContent, type TabItem, TabList, Table, type TableColumn, type TableProps, Tabs, Textarea, type ToastItem, ToastProvider, type ToastType, Toggle, ToolCard, type ToolCardProps, Tooltip, type TooltipProps, UserMenu, type UserMenuExtraItem, type UserMenuIntegration, type UserMenuProps, type UserMenuUser, cn, getAvatarInitial, useToast };