@mondrianai/runyourai-design-system 0.0.18 → 0.0.19

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.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from 'react';
2
- import React__default from 'react';
2
+ import React__default, { ReactNode } from 'react';
3
3
  import { Accordion as Accordion$1, AlertDialog as AlertDialog$1, DropdownMenu as DropdownMenu$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, Menubar as Menubar$1, Slider as Slider$1, Switch as Switch$1, Tooltip as Tooltip$1 } from 'radix-ui';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -33,7 +33,7 @@ declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDia
33
33
  declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialog$1.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
34
34
 
35
35
  declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
36
- variant?: "default" | "destructive" | null | undefined;
36
+ variant?: "destructive" | "default" | null | undefined;
37
37
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
38
38
  declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
39
39
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
@@ -112,7 +112,7 @@ declare function BreadcrumbSeparator({ iconName, className, ...props }: React__d
112
112
  }): react_jsx_runtime.JSX.Element;
113
113
 
114
114
  declare const buttonVariants: (props?: ({
115
- variant?: "link" | "default" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
115
+ variant?: "link" | "primary" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
116
116
  size?: "rounded" | "default" | "icon" | "pill" | null | undefined;
117
117
  } & class_variance_authority_types.ClassProp) | undefined) => string;
118
118
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -869,6 +869,8 @@ declare function Stepper({ steps, currentStep, className }: StepperProps): react
869
869
  interface TabItem<T extends string = string> {
870
870
  value: T;
871
871
  label: string;
872
+ /** 이 탭이 활성화됐을 때 탭 행 우측에 렌더링할 콘텐츠 (검색, 액션 버튼 등) */
873
+ rightContents?: ReactNode;
872
874
  }
873
875
  interface TabsProps<T extends string = string> {
874
876
  allTabs: TabItem<T>[];
@@ -878,7 +880,7 @@ interface TabsProps<T extends string = string> {
878
880
  * "pill" — 회색 배경 컨테이너 + 흰 배경 active (segment control 스타일)
879
881
  * "underline" — 하단 밑줄 active (default)
880
882
  */
881
- variant?: "pill" | "underline";
883
+ variant?: 'pill' | 'underline';
882
884
  /** 컨테이너를 w-full로 펼치고 각 탭 버튼을 균등 분할(flex-1)합니다 */
883
885
  block?: boolean;
884
886
  /** Tailwind height 클래스 (e.g. "h-[36px]"). 지정 시 내부 버튼 패딩도 자동 조정됩니다. */
@@ -981,9 +983,15 @@ interface PaginationProps {
981
983
  previousLabel?: string;
982
984
  /** 다음 버튼 라벨. simple=true 이면 무시됨. 기본값 "다음" */
983
985
  nextLabel?: string;
986
+ /** 현재 페이지 크기. onPageSizeChange와 함께 사용하면 좌측에 Select가 표시됨. */
987
+ pageSize?: number;
988
+ /** 페이지 크기 변경 콜백. 제공 시 좌측에 페이지 크기 Select가 표시됨. */
989
+ onPageSizeChange?: (size: number) => void;
990
+ /** 페이지 크기 옵션. value는 숫자 문자열, label은 단위 포함 표시 텍스트. 예: [{ value: '10', label: '10개' }] */
991
+ pageSizeOptions?: SelectOption[];
984
992
  className?: string;
985
993
  }
986
- declare function Pagination({ currentPage, totalPages, onPageChange, simple, previousLabel, nextLabel, className, }: PaginationProps): react_jsx_runtime.JSX.Element;
994
+ declare function Pagination({ currentPage, totalPages, onPageChange, simple, previousLabel, nextLabel, pageSize, onPageSizeChange, pageSizeOptions, className, }: PaginationProps): react_jsx_runtime.JSX.Element;
987
995
 
988
996
  type SortDirection = 'ASC' | 'DESC' | null;
989
997
  interface TableColumn<T> {
@@ -1109,7 +1117,7 @@ declare function UserMessageBubble({ content }: {
1109
1117
  * · delayDuration — hover → open 지연 시간 (ms)
1110
1118
  * · skipDelayDuration — 빠르게 연속 이동 시 딜레이 스킵 임계치 (ms)
1111
1119
  */
1112
- declare function Providers({ children }: {
1120
+ declare function RyaiDsProvider({ children }: {
1113
1121
  children: React.ReactNode;
1114
1122
  }): react_jsx_runtime.JSX.Element;
1115
1123
 
@@ -1620,4 +1628,4 @@ declare function WordFileIcon({ className }: {
1620
1628
  className?: string;
1621
1629
  }): react_jsx_runtime.JSX.Element;
1622
1630
 
1623
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentBlogIcon, AgentCsIcon, AgentDataIcon, AgentHrIcon, AgentMailIcon, AgentTrendIcon, AiAgentIcon, AiBuilderIcon, AiCloudIcon, AiDatacenterIcon, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlignJustifyIcon, AlignLeftIcon, ArrowDownIcon, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarProps, type AvatarSize, BADGE_VARIANT_STYLES, Badge, type BadgeProps, type BadgeVariant, BlockquoteIcon, BoldIcon, BookOpenIcon, BookUpIcon, Breadcrumb, Button, type ButtonProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, ChevronsUpDownIcon, ChoiceCardGroup, type ChoiceCardGroupProps, ChoiceCardItem, type ChoiceCardItemProps, CircleCheckFillIcon, CircleHelpIcon, CircleIndicator, type CircleIndicatorProps, CircleOutlineIcon, ClaudeIcon, CodeIcon, CodeSquareIcon, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleRoot, CollapsibleTrigger, type CollapsibleWorkspace, Combobox, type ComboboxOption, type ComboboxProps, CreditIcon, DataSection, type DataSectionProps, DatePicker, type DatePickerLocale, type DatePickerMode, type DatePickerProps, type DateRange, DeepSeekIcon, type DisabledDateRule, DownloadIcon, Drawer, type DrawerProps, DriveIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyTrayIcon, Field, FieldDivider, type FieldProps, FieldRow, type FieldRowProps, FieldSection, type FieldSectionProps, FileCodeIcon, FileSearchIcon, FileTypeCornerIcon, FolderAmberIcon, FolderBlueIcon, FolderClosedIcon, FolderGreenIcon, FolderVioletIcon, GeminiIcon, GoogleIcon, HangulFileIcon, Header, type HeaderNavItem, type HeaderProps, HeadingIcon, HtmlFileIcon, ICON_NODES, Icon, type IconProps, ImageIcon, ImportIcon, IndentIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalicIcon, KbCard, type KbCardMetadataItem, type KbCardProps, KeyRoundIcon, type LanguageItem, LayersIcon, LayoutGridIcon, LineChartIcon, LinkIcon, ListIcon, ListOrderedIcon, MarkdownFileIcon, MarkdownMessage, Menubar, MenubarContent, MenubarGroup, MenubarItem, MenubarMenu, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageCircleIcon, MessageFooter, type MessageFooterProps, MessagesSquareIcon, Modal, type ModalProps, MyPageIcon, type NavDropdownItem, type NotificationItem, NumberBadge, type NumberBadgeProps, OpenAiIcon, OutdentIcon, Pagination, type PaginationProps, PanelLeftIcon, PdfFileIcon, PenLineIcon, PencilLineIcon, PresentationIcon, Progress, type ProgressProps, type ProgressThreshold, Providers, RefreshCwIcon, RyaiLogoIcon, SearchInput, type SearchInputProps, SegmentedControl, Select, type SelectGroup, type SelectOption, type SelectProps, Sheet, SheetFileIcon, type SheetProps, ShoppingBagIcon, Sidebar, SidebarLink, type SidebarMainMenuItem, type SidebarSubMenuItem, type SidebarUtilityItem, Skeleton, type SkeletonProps, SlideFileIcon, Slider, SmileIcon, type SortDirection, SortIcon, SparklesIcon, SquareCheckIcon, SquareCheckOutlineIcon, StarIcon, Stepper, type StepperProps, StrikethroughIcon, Switch, SwitchField, type SwitchFieldProps, type TabItem, Table, type TableColumn, type TablePaginationConfig, TablePropertiesIcon, type TableProps, type TableSortingItem, Tabs, type TabsProps, Toggle, ToggleGroup, type ToggleGroupItemData, type ToggleGroupProps, type ToggleProps, Tooltip, type TooltipProps, TooltipProvider, TooltipWithIcon, type TooltipWithIconProps, TrashIcon, UpstageIcon, type UserMenuSection, type UserMenuSectionItem, UserMessageBubble, WandSparklesIcon, WordFileIcon, buttonVariants, toggleBaseClasses, toggleSizeClasses };
1631
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentBlogIcon, AgentCsIcon, AgentDataIcon, AgentHrIcon, AgentMailIcon, AgentTrendIcon, AiAgentIcon, AiBuilderIcon, AiCloudIcon, AiDatacenterIcon, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlignJustifyIcon, AlignLeftIcon, ArrowDownIcon, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarProps, type AvatarSize, BADGE_VARIANT_STYLES, Badge, type BadgeProps, type BadgeVariant, BlockquoteIcon, BoldIcon, BookOpenIcon, BookUpIcon, Breadcrumb, Button, type ButtonProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, ChevronsUpDownIcon, ChoiceCardGroup, type ChoiceCardGroupProps, ChoiceCardItem, type ChoiceCardItemProps, CircleCheckFillIcon, CircleHelpIcon, CircleIndicator, type CircleIndicatorProps, CircleOutlineIcon, ClaudeIcon, CodeIcon, CodeSquareIcon, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleRoot, CollapsibleTrigger, type CollapsibleWorkspace, Combobox, type ComboboxOption, type ComboboxProps, CreditIcon, DataSection, type DataSectionProps, DatePicker, type DatePickerLocale, type DatePickerMode, type DatePickerProps, type DateRange, DeepSeekIcon, type DisabledDateRule, DownloadIcon, Drawer, type DrawerProps, DriveIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyTrayIcon, Field, FieldDivider, type FieldProps, FieldRow, type FieldRowProps, FieldSection, type FieldSectionProps, FileCodeIcon, FileSearchIcon, FileTypeCornerIcon, FolderAmberIcon, FolderBlueIcon, FolderClosedIcon, FolderGreenIcon, FolderVioletIcon, GeminiIcon, GoogleIcon, HangulFileIcon, Header, type HeaderNavItem, type HeaderProps, HeadingIcon, HtmlFileIcon, ICON_NODES, Icon, type IconProps, ImageIcon, ImportIcon, IndentIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalicIcon, KbCard, type KbCardMetadataItem, type KbCardProps, KeyRoundIcon, type LanguageItem, LayersIcon, LayoutGridIcon, LineChartIcon, LinkIcon, ListIcon, ListOrderedIcon, MarkdownFileIcon, MarkdownMessage, Menubar, MenubarContent, MenubarGroup, MenubarItem, MenubarMenu, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageCircleIcon, MessageFooter, type MessageFooterProps, MessagesSquareIcon, Modal, type ModalProps, MyPageIcon, type NavDropdownItem, type NotificationItem, NumberBadge, type NumberBadgeProps, OpenAiIcon, OutdentIcon, Pagination, type PaginationProps, PanelLeftIcon, PdfFileIcon, PenLineIcon, PencilLineIcon, PresentationIcon, Progress, type ProgressProps, type ProgressThreshold, RefreshCwIcon, RyaiDsProvider, RyaiLogoIcon, SearchInput, type SearchInputProps, SegmentedControl, Select, type SelectGroup, type SelectOption, type SelectProps, Sheet, SheetFileIcon, type SheetProps, ShoppingBagIcon, Sidebar, SidebarLink, type SidebarMainMenuItem, type SidebarSubMenuItem, type SidebarUtilityItem, Skeleton, type SkeletonProps, SlideFileIcon, Slider, SmileIcon, type SortDirection, SortIcon, SparklesIcon, SquareCheckIcon, SquareCheckOutlineIcon, StarIcon, Stepper, type StepperProps, StrikethroughIcon, Switch, SwitchField, type SwitchFieldProps, type TabItem, Table, type TableColumn, type TablePaginationConfig, TablePropertiesIcon, type TableProps, type TableSortingItem, Tabs, type TabsProps, Toggle, ToggleGroup, type ToggleGroupItemData, type ToggleGroupProps, type ToggleProps, Tooltip, type TooltipProps, TooltipProvider, TooltipWithIcon, type TooltipWithIconProps, TrashIcon, UpstageIcon, type UserMenuSection, type UserMenuSectionItem, UserMessageBubble, WandSparklesIcon, WordFileIcon, buttonVariants, toggleBaseClasses, toggleSizeClasses };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from 'react';
2
- import React__default from 'react';
2
+ import React__default, { ReactNode } from 'react';
3
3
  import { Accordion as Accordion$1, AlertDialog as AlertDialog$1, DropdownMenu as DropdownMenu$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, Menubar as Menubar$1, Slider as Slider$1, Switch as Switch$1, Tooltip as Tooltip$1 } from 'radix-ui';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -33,7 +33,7 @@ declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDia
33
33
  declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialog$1.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
34
34
 
35
35
  declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
36
- variant?: "default" | "destructive" | null | undefined;
36
+ variant?: "destructive" | "default" | null | undefined;
37
37
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
38
38
  declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
39
39
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
@@ -112,7 +112,7 @@ declare function BreadcrumbSeparator({ iconName, className, ...props }: React__d
112
112
  }): react_jsx_runtime.JSX.Element;
113
113
 
114
114
  declare const buttonVariants: (props?: ({
115
- variant?: "link" | "default" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
115
+ variant?: "link" | "primary" | "secondary" | "outline" | "ghost" | "destructive" | null | undefined;
116
116
  size?: "rounded" | "default" | "icon" | "pill" | null | undefined;
117
117
  } & class_variance_authority_types.ClassProp) | undefined) => string;
118
118
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -869,6 +869,8 @@ declare function Stepper({ steps, currentStep, className }: StepperProps): react
869
869
  interface TabItem<T extends string = string> {
870
870
  value: T;
871
871
  label: string;
872
+ /** 이 탭이 활성화됐을 때 탭 행 우측에 렌더링할 콘텐츠 (검색, 액션 버튼 등) */
873
+ rightContents?: ReactNode;
872
874
  }
873
875
  interface TabsProps<T extends string = string> {
874
876
  allTabs: TabItem<T>[];
@@ -878,7 +880,7 @@ interface TabsProps<T extends string = string> {
878
880
  * "pill" — 회색 배경 컨테이너 + 흰 배경 active (segment control 스타일)
879
881
  * "underline" — 하단 밑줄 active (default)
880
882
  */
881
- variant?: "pill" | "underline";
883
+ variant?: 'pill' | 'underline';
882
884
  /** 컨테이너를 w-full로 펼치고 각 탭 버튼을 균등 분할(flex-1)합니다 */
883
885
  block?: boolean;
884
886
  /** Tailwind height 클래스 (e.g. "h-[36px]"). 지정 시 내부 버튼 패딩도 자동 조정됩니다. */
@@ -981,9 +983,15 @@ interface PaginationProps {
981
983
  previousLabel?: string;
982
984
  /** 다음 버튼 라벨. simple=true 이면 무시됨. 기본값 "다음" */
983
985
  nextLabel?: string;
986
+ /** 현재 페이지 크기. onPageSizeChange와 함께 사용하면 좌측에 Select가 표시됨. */
987
+ pageSize?: number;
988
+ /** 페이지 크기 변경 콜백. 제공 시 좌측에 페이지 크기 Select가 표시됨. */
989
+ onPageSizeChange?: (size: number) => void;
990
+ /** 페이지 크기 옵션. value는 숫자 문자열, label은 단위 포함 표시 텍스트. 예: [{ value: '10', label: '10개' }] */
991
+ pageSizeOptions?: SelectOption[];
984
992
  className?: string;
985
993
  }
986
- declare function Pagination({ currentPage, totalPages, onPageChange, simple, previousLabel, nextLabel, className, }: PaginationProps): react_jsx_runtime.JSX.Element;
994
+ declare function Pagination({ currentPage, totalPages, onPageChange, simple, previousLabel, nextLabel, pageSize, onPageSizeChange, pageSizeOptions, className, }: PaginationProps): react_jsx_runtime.JSX.Element;
987
995
 
988
996
  type SortDirection = 'ASC' | 'DESC' | null;
989
997
  interface TableColumn<T> {
@@ -1109,7 +1117,7 @@ declare function UserMessageBubble({ content }: {
1109
1117
  * · delayDuration — hover → open 지연 시간 (ms)
1110
1118
  * · skipDelayDuration — 빠르게 연속 이동 시 딜레이 스킵 임계치 (ms)
1111
1119
  */
1112
- declare function Providers({ children }: {
1120
+ declare function RyaiDsProvider({ children }: {
1113
1121
  children: React.ReactNode;
1114
1122
  }): react_jsx_runtime.JSX.Element;
1115
1123
 
@@ -1620,4 +1628,4 @@ declare function WordFileIcon({ className }: {
1620
1628
  className?: string;
1621
1629
  }): react_jsx_runtime.JSX.Element;
1622
1630
 
1623
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentBlogIcon, AgentCsIcon, AgentDataIcon, AgentHrIcon, AgentMailIcon, AgentTrendIcon, AiAgentIcon, AiBuilderIcon, AiCloudIcon, AiDatacenterIcon, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlignJustifyIcon, AlignLeftIcon, ArrowDownIcon, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarProps, type AvatarSize, BADGE_VARIANT_STYLES, Badge, type BadgeProps, type BadgeVariant, BlockquoteIcon, BoldIcon, BookOpenIcon, BookUpIcon, Breadcrumb, Button, type ButtonProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, ChevronsUpDownIcon, ChoiceCardGroup, type ChoiceCardGroupProps, ChoiceCardItem, type ChoiceCardItemProps, CircleCheckFillIcon, CircleHelpIcon, CircleIndicator, type CircleIndicatorProps, CircleOutlineIcon, ClaudeIcon, CodeIcon, CodeSquareIcon, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleRoot, CollapsibleTrigger, type CollapsibleWorkspace, Combobox, type ComboboxOption, type ComboboxProps, CreditIcon, DataSection, type DataSectionProps, DatePicker, type DatePickerLocale, type DatePickerMode, type DatePickerProps, type DateRange, DeepSeekIcon, type DisabledDateRule, DownloadIcon, Drawer, type DrawerProps, DriveIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyTrayIcon, Field, FieldDivider, type FieldProps, FieldRow, type FieldRowProps, FieldSection, type FieldSectionProps, FileCodeIcon, FileSearchIcon, FileTypeCornerIcon, FolderAmberIcon, FolderBlueIcon, FolderClosedIcon, FolderGreenIcon, FolderVioletIcon, GeminiIcon, GoogleIcon, HangulFileIcon, Header, type HeaderNavItem, type HeaderProps, HeadingIcon, HtmlFileIcon, ICON_NODES, Icon, type IconProps, ImageIcon, ImportIcon, IndentIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalicIcon, KbCard, type KbCardMetadataItem, type KbCardProps, KeyRoundIcon, type LanguageItem, LayersIcon, LayoutGridIcon, LineChartIcon, LinkIcon, ListIcon, ListOrderedIcon, MarkdownFileIcon, MarkdownMessage, Menubar, MenubarContent, MenubarGroup, MenubarItem, MenubarMenu, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageCircleIcon, MessageFooter, type MessageFooterProps, MessagesSquareIcon, Modal, type ModalProps, MyPageIcon, type NavDropdownItem, type NotificationItem, NumberBadge, type NumberBadgeProps, OpenAiIcon, OutdentIcon, Pagination, type PaginationProps, PanelLeftIcon, PdfFileIcon, PenLineIcon, PencilLineIcon, PresentationIcon, Progress, type ProgressProps, type ProgressThreshold, Providers, RefreshCwIcon, RyaiLogoIcon, SearchInput, type SearchInputProps, SegmentedControl, Select, type SelectGroup, type SelectOption, type SelectProps, Sheet, SheetFileIcon, type SheetProps, ShoppingBagIcon, Sidebar, SidebarLink, type SidebarMainMenuItem, type SidebarSubMenuItem, type SidebarUtilityItem, Skeleton, type SkeletonProps, SlideFileIcon, Slider, SmileIcon, type SortDirection, SortIcon, SparklesIcon, SquareCheckIcon, SquareCheckOutlineIcon, StarIcon, Stepper, type StepperProps, StrikethroughIcon, Switch, SwitchField, type SwitchFieldProps, type TabItem, Table, type TableColumn, type TablePaginationConfig, TablePropertiesIcon, type TableProps, type TableSortingItem, Tabs, type TabsProps, Toggle, ToggleGroup, type ToggleGroupItemData, type ToggleGroupProps, type ToggleProps, Tooltip, type TooltipProps, TooltipProvider, TooltipWithIcon, type TooltipWithIconProps, TrashIcon, UpstageIcon, type UserMenuSection, type UserMenuSectionItem, UserMessageBubble, WandSparklesIcon, WordFileIcon, buttonVariants, toggleBaseClasses, toggleSizeClasses };
1631
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AgentBlogIcon, AgentCsIcon, AgentDataIcon, AgentHrIcon, AgentMailIcon, AgentTrendIcon, AiAgentIcon, AiBuilderIcon, AiCloudIcon, AiDatacenterIcon, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlignJustifyIcon, AlignLeftIcon, ArrowDownIcon, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarProps, type AvatarSize, BADGE_VARIANT_STYLES, Badge, type BadgeProps, type BadgeVariant, BlockquoteIcon, BoldIcon, BookOpenIcon, BookUpIcon, Breadcrumb, Button, type ButtonProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, ChevronsUpDownIcon, ChoiceCardGroup, type ChoiceCardGroupProps, ChoiceCardItem, type ChoiceCardItemProps, CircleCheckFillIcon, CircleHelpIcon, CircleIndicator, type CircleIndicatorProps, CircleOutlineIcon, ClaudeIcon, CodeIcon, CodeSquareIcon, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleRoot, CollapsibleTrigger, type CollapsibleWorkspace, Combobox, type ComboboxOption, type ComboboxProps, CreditIcon, DataSection, type DataSectionProps, DatePicker, type DatePickerLocale, type DatePickerMode, type DatePickerProps, type DateRange, DeepSeekIcon, type DisabledDateRule, DownloadIcon, Drawer, type DrawerProps, DriveIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyTrayIcon, Field, FieldDivider, type FieldProps, FieldRow, type FieldRowProps, FieldSection, type FieldSectionProps, FileCodeIcon, FileSearchIcon, FileTypeCornerIcon, FolderAmberIcon, FolderBlueIcon, FolderClosedIcon, FolderGreenIcon, FolderVioletIcon, GeminiIcon, GoogleIcon, HangulFileIcon, Header, type HeaderNavItem, type HeaderProps, HeadingIcon, HtmlFileIcon, ICON_NODES, Icon, type IconProps, ImageIcon, ImportIcon, IndentIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalicIcon, KbCard, type KbCardMetadataItem, type KbCardProps, KeyRoundIcon, type LanguageItem, LayersIcon, LayoutGridIcon, LineChartIcon, LinkIcon, ListIcon, ListOrderedIcon, MarkdownFileIcon, MarkdownMessage, Menubar, MenubarContent, MenubarGroup, MenubarItem, MenubarMenu, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageCircleIcon, MessageFooter, type MessageFooterProps, MessagesSquareIcon, Modal, type ModalProps, MyPageIcon, type NavDropdownItem, type NotificationItem, NumberBadge, type NumberBadgeProps, OpenAiIcon, OutdentIcon, Pagination, type PaginationProps, PanelLeftIcon, PdfFileIcon, PenLineIcon, PencilLineIcon, PresentationIcon, Progress, type ProgressProps, type ProgressThreshold, RefreshCwIcon, RyaiDsProvider, RyaiLogoIcon, SearchInput, type SearchInputProps, SegmentedControl, Select, type SelectGroup, type SelectOption, type SelectProps, Sheet, SheetFileIcon, type SheetProps, ShoppingBagIcon, Sidebar, SidebarLink, type SidebarMainMenuItem, type SidebarSubMenuItem, type SidebarUtilityItem, Skeleton, type SkeletonProps, SlideFileIcon, Slider, SmileIcon, type SortDirection, SortIcon, SparklesIcon, SquareCheckIcon, SquareCheckOutlineIcon, StarIcon, Stepper, type StepperProps, StrikethroughIcon, Switch, SwitchField, type SwitchFieldProps, type TabItem, Table, type TableColumn, type TablePaginationConfig, TablePropertiesIcon, type TableProps, type TableSortingItem, Tabs, type TabsProps, Toggle, ToggleGroup, type ToggleGroupItemData, type ToggleGroupProps, type ToggleProps, Tooltip, type TooltipProps, TooltipProvider, TooltipWithIcon, type TooltipWithIconProps, TrashIcon, UpstageIcon, type UserMenuSection, type UserMenuSectionItem, UserMessageBubble, WandSparklesIcon, WordFileIcon, buttonVariants, toggleBaseClasses, toggleSizeClasses };
package/dist/index.js CHANGED
@@ -220,8 +220,8 @@ __export(components_exports, {
220
220
  PencilLineIcon: () => PencilLineIcon,
221
221
  PresentationIcon: () => PresentationIcon,
222
222
  Progress: () => Progress,
223
- Providers: () => Providers,
224
223
  RefreshCwIcon: () => RefreshCwIcon,
224
+ RyaiDsProvider: () => RyaiDsProvider,
225
225
  RyaiLogoIcon: () => RyaiLogoIcon,
226
226
  SearchInput: () => SearchInput,
227
227
  SegmentedControl: () => SegmentedControl,
@@ -701,7 +701,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
701
701
  variants: {
702
702
  /**
703
703
  * variant — 버튼 색상/스타일
704
- * default 검정 배경, 흰 글자(primary-foreground), 그림자 / hover: opacity-90
704
+ * primary 검정 배경, 흰 글자(primary-foreground), 그림자 / hover: opacity-90
705
705
  * secondary 연회색 배경, 검정 글자 / hover: accent 배경 (텍스트·opacity 변화 없음)
706
706
  * outline 흰 배경 + 테두리, 검정 글자 / hover: accent 배경 (텍스트 색 변화 없음)
707
707
  * ghost 배경 없음, 검정 글자 / hover: accent 배경 (텍스트 색 변화 없음)
@@ -709,7 +709,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
709
709
  * link 배경/테두리 없음, primary 색 글자 / hover: underline
710
710
  */
711
711
  variant: {
712
- default: "bg-primary text-primary-foreground shadow-button hover:opacity-90",
712
+ primary: "bg-primary text-primary-foreground shadow-button hover:opacity-90",
713
713
  secondary: "bg-secondary text-secondary-foreground hover:bg-accent",
714
714
  outline: "border border-border bg-background text-foreground hover:bg-accent",
715
715
  ghost: "text-foreground hover:bg-accent",
@@ -731,7 +731,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
731
731
  }
732
732
  },
733
733
  defaultVariants: {
734
- variant: "default",
734
+ variant: "primary",
735
735
  size: "default"
736
736
  }
737
737
  }
@@ -739,7 +739,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
739
739
  function Button(_a) {
740
740
  var _b = _a, {
741
741
  className,
742
- variant = "default",
742
+ variant = "primary",
743
743
  size = "default",
744
744
  asChild = false,
745
745
  loading = false,
@@ -891,7 +891,7 @@ var AlertDialogAction = React3.forwardRef((_a, ref) => {
891
891
  import_radix_ui3.AlertDialog.Action,
892
892
  __spreadValues({
893
893
  ref,
894
- className: cn(buttonVariants({ variant: "default" }), className)
894
+ className: cn(buttonVariants({ variant: "primary" }), className)
895
895
  }, props)
896
896
  );
897
897
  });
@@ -3825,40 +3825,28 @@ var React14 = __toESM(require("react"));
3825
3825
  var import_radix_ui11 = require("radix-ui");
3826
3826
  var import_jsx_runtime29 = require("react/jsx-runtime");
3827
3827
  var TooltipProvider = import_radix_ui11.Tooltip.Provider;
3828
- var TooltipContent = React14.forwardRef(
3829
- (_a, ref) => {
3830
- var _b = _a, {
3831
- className,
3832
- side = "top",
3833
- sideOffset = 4,
3834
- children
3835
- } = _b, props = __objRest(_b, [
3836
- "className",
3837
- "side",
3838
- "sideOffset",
3839
- "children"
3840
- ]);
3841
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_radix_ui11.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3842
- import_radix_ui11.Tooltip.Content,
3843
- __spreadProps(__spreadValues({
3844
- ref,
3845
- side,
3846
- sideOffset,
3847
- className: cn(
3848
- "z-50 w-max max-w-[200px]",
3849
- "bg-primary rounded-md px-2.5 py-1.5",
3850
- "animate-in fade-in-0 zoom-in-95",
3851
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
3852
- "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
3853
- "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
3854
- className
3855
- )
3856
- }, props), {
3857
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "block text-xs font-normal leading-snug tracking-tight text-primary-foreground whitespace-normal break-words", children })
3858
- })
3859
- ) });
3860
- }
3861
- );
3828
+ var TooltipContent = React14.forwardRef((_a, ref) => {
3829
+ var _b = _a, { className, side = "top", sideOffset = 4, children } = _b, props = __objRest(_b, ["className", "side", "sideOffset", "children"]);
3830
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_radix_ui11.Tooltip.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3831
+ import_radix_ui11.Tooltip.Content,
3832
+ __spreadProps(__spreadValues({
3833
+ ref,
3834
+ side,
3835
+ sideOffset,
3836
+ className: cn(
3837
+ "z-50 w-max max-w-[200px]",
3838
+ "bg-primary rounded-md px-2.5 py-1.5",
3839
+ "animate-in fade-in-0 zoom-in-95",
3840
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
3841
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
3842
+ "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
3843
+ className
3844
+ )
3845
+ }, props), {
3846
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "block text-xs font-normal leading-snug tracking-tight text-primary-foreground whitespace-normal break-words", children })
3847
+ })
3848
+ ) });
3849
+ });
3862
3850
  TooltipContent.displayName = "TooltipContent";
3863
3851
  function Tooltip(_a) {
3864
3852
  var _b = _a, {
@@ -3901,7 +3889,7 @@ function TooltipWithIcon({
3901
3889
  Icon,
3902
3890
  {
3903
3891
  name: iconName,
3904
- className: cn("size-4 text-muted-foreground cursor-pointer", className)
3892
+ className: cn("size-4 text-muted-foreground cursor-help", className)
3905
3893
  }
3906
3894
  ) });
3907
3895
  }
@@ -4516,7 +4504,7 @@ function Modal({
4516
4504
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4517
4505
  Button,
4518
4506
  {
4519
- variant: variant === "danger" ? "destructive" : "default",
4507
+ variant: variant === "danger" ? "destructive" : "primary",
4520
4508
  onClick: handleConfirm,
4521
4509
  disabled: confirmDisabled,
4522
4510
  loading: isLoadingCombined,
@@ -4877,6 +4865,19 @@ function SearchInput(_a) {
4877
4865
  var React20 = __toESM(require("react"));
4878
4866
  var import_radix_ui13 = require("radix-ui");
4879
4867
  var import_jsx_runtime38 = require("react/jsx-runtime");
4868
+ function TruncatedText({ text, className }) {
4869
+ const ref = React20.useRef(null);
4870
+ const [open, setOpen] = React20.useState(false);
4871
+ const handleOpenChange = (nextOpen) => {
4872
+ if (!nextOpen) {
4873
+ setOpen(false);
4874
+ return;
4875
+ }
4876
+ const el = ref.current;
4877
+ if (el && el.scrollWidth > el.clientWidth) setOpen(true);
4878
+ };
4879
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Tooltip, { content: text, open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { ref, className, children: text }) });
4880
+ }
4880
4881
  function Select(props) {
4881
4882
  var _a, _b, _c, _d;
4882
4883
  const { placeholder = "\uC120\uD0DD\uD574 \uC8FC\uC138\uC694", className, disabled = false } = props;
@@ -4950,13 +4951,13 @@ function Select(props) {
4950
4951
  triggerGroupIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "shrink-0 flex items-center", children: triggerGroupIcon }),
4951
4952
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "flex min-w-0 items-center gap-1.5", children: [
4952
4953
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4953
- "span",
4954
+ TruncatedText,
4954
4955
  {
4956
+ text: triggerLabel || placeholder,
4955
4957
  className: cn(
4956
4958
  "min-w-0 truncate text-left text-sm leading-5 tracking-tight",
4957
4959
  triggerLabel ? "text-foreground" : "text-muted-foreground"
4958
- ),
4959
- children: triggerLabel || placeholder
4960
+ )
4960
4961
  }
4961
4962
  ),
4962
4963
  triggerOptionIcon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "shrink-0 flex items-center", children: triggerOptionIcon })
@@ -4980,8 +4981,8 @@ function Select(props) {
4980
4981
  {
4981
4982
  align: "start",
4982
4983
  sideOffset: 4,
4983
- style: { width: "var(--radix-popover-trigger-width)" },
4984
4984
  className: cn(
4985
+ "min-w-[var(--radix-popover-trigger-width)] max-w-80",
4985
4986
  "z-50 rounded-lg border border-border bg-popover overflow-hidden",
4986
4987
  "shadow-dropdown",
4987
4988
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
@@ -5013,7 +5014,7 @@ function Select(props) {
5013
5014
  ),
5014
5015
  children: [
5015
5016
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "flex flex-1 min-w-0 items-center gap-1.5", children: [
5016
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "min-w-0 truncate text-left", children: opt.label }),
5017
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TruncatedText, { text: opt.label, className: "min-w-0 truncate text-left" }),
5017
5018
  opt.icon && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "shrink-0 flex items-center", children: opt.icon })
5018
5019
  ] }),
5019
5020
  isSelected && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon, { name: "check", className: "size-4 shrink-0 ml-2" })
@@ -5692,16 +5693,21 @@ function Tabs({
5692
5693
  height = "h-[36px]",
5693
5694
  className
5694
5695
  }) {
5696
+ var _a;
5697
+ const activeRightContents = (_a = allTabs.find(
5698
+ (t) => t.value === current
5699
+ )) == null ? void 0 : _a.rightContents;
5700
+ const hasAnyRightContents = allTabs.some((t) => t.rightContents != null);
5695
5701
  if (variant === "pill") {
5696
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
5702
+ const pillEl = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
5697
5703
  "div",
5698
5704
  {
5699
5705
  className: cn(
5700
5706
  "items-center gap-1 rounded-lg bg-muted p-1",
5701
- block ? "flex w-full" : "inline-flex",
5707
+ block && !hasAnyRightContents ? "flex w-full" : "inline-flex",
5702
5708
  height,
5703
5709
  height && "[&_button]:py-1",
5704
- className
5710
+ !hasAnyRightContents && className
5705
5711
  ),
5706
5712
  children: allTabs.map((tab) => {
5707
5713
  const isActive = tab.value === current;
@@ -5711,7 +5717,7 @@ function Tabs({
5711
5717
  type: "button",
5712
5718
  onClick: () => onTabChange(tab.value),
5713
5719
  className: cn(
5714
- "rounded-md px-3 py-1.5 text-sm font-medium tracking-tight transition-all",
5720
+ "cursor-pointer rounded-md px-3 py-1.5 text-sm font-medium tracking-tight transition-all",
5715
5721
  block && "flex-1",
5716
5722
  isActive ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
5717
5723
  ),
@@ -5722,24 +5728,66 @@ function Tabs({
5722
5728
  })
5723
5729
  }
5724
5730
  );
5725
- }
5726
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: cn("flex items-center", block && "w-full", className), children: allTabs.map((tab) => {
5727
- const isActive = tab.value === current;
5728
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
5729
- "button",
5731
+ if (!hasAnyRightContents) return pillEl;
5732
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
5733
+ "div",
5730
5734
  {
5731
- type: "button",
5732
- onClick: () => onTabChange(tab.value),
5733
- className: cn(
5734
- "px-3 py-2 text-sm tracking-tight transition-colors",
5735
- block && "flex-1",
5736
- isActive ? "border-b-2 border-foreground font-semibold text-foreground" : "border-b border-border font-medium text-muted-foreground hover:text-foreground"
5737
- ),
5738
- children: tab.label
5739
- },
5740
- tab.value
5735
+ className: cn("flex items-center gap-4", block && "w-full", className),
5736
+ children: [
5737
+ pillEl,
5738
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "ml-auto flex items-center gap-2", children: activeRightContents })
5739
+ ]
5740
+ }
5741
5741
  );
5742
- }) });
5742
+ }
5743
+ if (!hasAnyRightContents) {
5744
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: cn("flex items-center", block && "w-full", className), children: allTabs.map((tab) => {
5745
+ const isActive = tab.value === current;
5746
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
5747
+ "button",
5748
+ {
5749
+ type: "button",
5750
+ onClick: () => onTabChange(tab.value),
5751
+ className: cn(
5752
+ "cursor-pointer px-3 py-2 text-sm tracking-tight transition-colors",
5753
+ block && "flex-1",
5754
+ isActive ? "border-b-2 border-foreground font-semibold text-foreground" : "border-b border-border font-medium text-muted-foreground hover:text-foreground"
5755
+ ),
5756
+ children: tab.label
5757
+ },
5758
+ tab.value
5759
+ );
5760
+ }) });
5761
+ }
5762
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
5763
+ "div",
5764
+ {
5765
+ className: cn(
5766
+ "flex w-full items-center border-b border-border",
5767
+ className
5768
+ ),
5769
+ children: [
5770
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: cn("flex items-center", block && "flex-1"), children: allTabs.map((tab) => {
5771
+ const isActive = tab.value === current;
5772
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
5773
+ "button",
5774
+ {
5775
+ type: "button",
5776
+ onClick: () => onTabChange(tab.value),
5777
+ className: cn(
5778
+ "cursor-pointer -mb-px px-3 pt-2 pb-3 text-sm tracking-tight transition-colors",
5779
+ block && "flex-1",
5780
+ isActive ? "border-b-2 border-foreground font-semibold text-foreground" : "font-medium text-muted-foreground hover:text-foreground"
5781
+ ),
5782
+ children: tab.label
5783
+ },
5784
+ tab.value
5785
+ );
5786
+ }) }),
5787
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "ml-auto flex items-center pb-1", children: activeRightContents })
5788
+ ]
5789
+ }
5790
+ );
5743
5791
  }
5744
5792
 
5745
5793
  // src/components/ui/toggle.tsx
@@ -6025,17 +6073,13 @@ function getVisiblePageItems(currentPage, totalPages) {
6025
6073
  ];
6026
6074
  }
6027
6075
  function PaginationRoot(_a) {
6028
- var _b = _a, {
6029
- className
6030
- } = _b, props = __objRest(_b, [
6031
- "className"
6032
- ]);
6076
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6033
6077
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
6034
6078
  "nav",
6035
6079
  __spreadValues({
6036
6080
  role: "navigation",
6037
6081
  "aria-label": "pagination",
6038
- className: cn("mx-auto flex w-full justify-center", className)
6082
+ className: cn("flex", className)
6039
6083
  }, props)
6040
6084
  );
6041
6085
  }
@@ -6056,20 +6100,35 @@ var PaginationItem = React25.forwardRef((_a, ref) => {
6056
6100
  });
6057
6101
  PaginationItem.displayName = "PaginationItem";
6058
6102
  function PaginationLink(_a) {
6059
- var _b = _a, { className, isActive } = _b, props = __objRest(_b, ["className", "isActive"]);
6103
+ var _b = _a, {
6104
+ className,
6105
+ isActive
6106
+ } = _b, props = __objRest(_b, [
6107
+ "className",
6108
+ "isActive"
6109
+ ]);
6060
6110
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
6061
6111
  "button",
6062
6112
  __spreadValues({
6063
6113
  "aria-current": isActive ? "page" : void 0,
6064
6114
  className: cn(
6065
- buttonVariants({ variant: isActive ? "outline" : "ghost", size: "icon" }),
6115
+ buttonVariants({
6116
+ variant: isActive ? "outline" : "ghost",
6117
+ size: "icon"
6118
+ }),
6066
6119
  className
6067
6120
  )
6068
6121
  }, props)
6069
6122
  );
6070
6123
  }
6071
6124
  function PaginationPrevious(_a) {
6072
- var _b = _a, { className, label } = _b, props = __objRest(_b, ["className", "label"]);
6125
+ var _b = _a, {
6126
+ className,
6127
+ label
6128
+ } = _b, props = __objRest(_b, [
6129
+ "className",
6130
+ "label"
6131
+ ]);
6073
6132
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
6074
6133
  "button",
6075
6134
  __spreadProps(__spreadValues({
@@ -6135,10 +6194,18 @@ function Pagination({
6135
6194
  simple = false,
6136
6195
  previousLabel = "\uC774\uC804",
6137
6196
  nextLabel = "\uB2E4\uC74C",
6197
+ pageSize,
6198
+ onPageSizeChange,
6199
+ pageSizeOptions = [
6200
+ { value: "10", label: "10\uAC1C" },
6201
+ { value: "20", label: "20\uAC1C" },
6202
+ { value: "50", label: "50\uAC1C" },
6203
+ { value: "100", label: "100\uAC1C" }
6204
+ ],
6138
6205
  className
6139
6206
  }) {
6140
6207
  const items = getVisiblePageItems(currentPage, totalPages);
6141
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PaginationRoot, { className: cn("pt-4", className), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(PaginationContent, { children: [
6208
+ const pageNav = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(PaginationContent, { children: [
6142
6209
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
6143
6210
  PaginationPrevious,
6144
6211
  {
@@ -6169,7 +6236,22 @@ function Pagination({
6169
6236
  disabled: currentPage >= totalPages
6170
6237
  }
6171
6238
  ) })
6172
- ] }) });
6239
+ ] });
6240
+ if (onPageSizeChange) {
6241
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: cn("flex items-center gap-2", className), children: [
6242
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
6243
+ Select,
6244
+ {
6245
+ options: pageSizeOptions,
6246
+ value: pageSize !== void 0 ? String(pageSize) : void 0,
6247
+ onValueChange: (value) => onPageSizeChange(Number(value)),
6248
+ className: "w-24"
6249
+ }
6250
+ ),
6251
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("nav", { role: "navigation", "aria-label": "pagination", className: "flex", children: pageNav })
6252
+ ] });
6253
+ }
6254
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PaginationRoot, { className, children: pageNav });
6173
6255
  }
6174
6256
 
6175
6257
  // src/components/ui/table.tsx
@@ -6547,14 +6629,14 @@ function Table({
6547
6629
  ] })
6548
6630
  }
6549
6631
  ),
6550
- !loading && hasPagination && totalPages > 1 && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
6632
+ !loading && hasPagination && totalPages > 1 && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "pt-4 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
6551
6633
  Pagination,
6552
6634
  {
6553
6635
  currentPage,
6554
6636
  totalPages,
6555
6637
  onPageChange: (page) => table.setPageIndex(page - 1)
6556
6638
  }
6557
- )
6639
+ ) })
6558
6640
  ] });
6559
6641
  }
6560
6642
 
@@ -6592,9 +6674,9 @@ function UserMessageBubble({ content }) {
6592
6674
  ) });
6593
6675
  }
6594
6676
 
6595
- // src/components/providers.tsx
6677
+ // src/components/provider.tsx
6596
6678
  var import_jsx_runtime53 = require("react/jsx-runtime");
6597
- function Providers({ children }) {
6679
+ function RyaiDsProvider({ children }) {
6598
6680
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipProvider, { delayDuration: 200, skipDelayDuration: 300, children });
6599
6681
  }
6600
6682
 
@@ -9971,8 +10053,8 @@ function WordFileIcon({ className }) {
9971
10053
  PencilLineIcon,
9972
10054
  PresentationIcon,
9973
10055
  Progress,
9974
- Providers,
9975
10056
  RefreshCwIcon,
10057
+ RyaiDsProvider,
9976
10058
  RyaiLogoIcon,
9977
10059
  SearchInput,
9978
10060
  SegmentedControl,