@ikatec/nebula-react 1.9.0-beta.2 → 1.9.0-beta.4

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
@@ -108,7 +108,10 @@ interface SeparatorProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Se
108
108
  }
109
109
  declare const Separator: React$1.ForwardRefExoticComponent<SeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
110
110
 
111
- declare const ActionBar: React$1.ForwardRefExoticComponent<DrawerPrimitive.DialogProps & React$1.RefAttributes<void>>;
111
+ declare const ActionBar: {
112
+ ({ ...props }: React$1.ComponentProps<typeof DrawerPrimitive.Root>): react_jsx_runtime.JSX.Element;
113
+ displayName: string;
114
+ };
112
115
  declare const ActionBarTrigger: React$1.ForwardRefExoticComponent<Omit<DrawerPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
113
116
  declare const ActionBarPortal: {
114
117
  (props: React$1.ComponentProps<typeof DrawerPrimitive.Portal>): react_jsx_runtime.JSX.Element;
@@ -1085,6 +1088,53 @@ interface LinkProps extends React__default.AnchorHTMLAttributes<HTMLAnchorElemen
1085
1088
  }
1086
1089
  declare const Link: React__default.ForwardRefExoticComponent<LinkProps & React__default.RefAttributes<HTMLAnchorElement>>;
1087
1090
 
1091
+ declare enum SidebarStateEnum {
1092
+ expanded = "expanded",
1093
+ rail = "rail",
1094
+ collapsed = "collapsed"
1095
+ }
1096
+ type SidebarState = keyof typeof SidebarStateEnum;
1097
+ type SidebarContextType = {
1098
+ state: SidebarState;
1099
+ setState: (s: SidebarState) => void;
1100
+ isMobile: boolean;
1101
+ };
1102
+ declare function useSidebar(): SidebarContextType;
1103
+ interface SidebarProps {
1104
+ children: React$1.ReactNode;
1105
+ defaultState?: SidebarState;
1106
+ open?: boolean;
1107
+ onOpenChange?: (open: boolean) => void;
1108
+ }
1109
+ declare function Sidebar({ children, defaultState, open, onOpenChange, }: SidebarProps): react_jsx_runtime.JSX.Element;
1110
+ declare function SidebarHeader({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1111
+ declare function SidebarContent({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1112
+ declare function SidebarTitle({ className, children, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element | null;
1113
+ declare function SidebarFooter({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1114
+ declare const SidebarTrigger: React$1.ForwardRefExoticComponent<Omit<ButtonProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & {
1115
+ asChild?: boolean;
1116
+ } & React$1.RefAttributes<HTMLButtonElement>>;
1117
+ declare function SidebarGroup({ children, className, }: {
1118
+ children: React$1.ReactNode;
1119
+ className?: string;
1120
+ }): react_jsx_runtime.JSX.Element;
1121
+ declare function SidebarGroupLabel({ children }: {
1122
+ children: React$1.ReactNode;
1123
+ }): react_jsx_runtime.JSX.Element | null;
1124
+ declare function SidebarSeparator(): react_jsx_runtime.JSX.Element;
1125
+ type SidebarMenuItemProps = {
1126
+ icon?: React$1.ReactNode;
1127
+ action?: React$1.ReactNode;
1128
+ label: string;
1129
+ active?: boolean;
1130
+ disabled?: boolean;
1131
+ counter?: number;
1132
+ collapsible?: boolean;
1133
+ defaultOpen?: boolean;
1134
+ children?: React$1.ReactNode;
1135
+ };
1136
+ declare function SidebarMenuItem({ icon, action, label, active, disabled, counter, collapsible, defaultOpen, children, }: SidebarMenuItemProps): react_jsx_runtime.JSX.Element;
1137
+
1088
1138
  /**
1089
1139
  * Context type to use the NebulaI18nProvider.
1090
1140
  */
@@ -1155,4 +1205,6 @@ declare function useClickOutside<T extends HTMLElement>(refs: PossibleRefs<T>, o
1155
1205
 
1156
1206
  declare function useKeyPress(key: string, callback: VoidFunction): void;
1157
1207
 
1158
- export { Accordion, AccordionContent, AccordionDescription, AccordionItem, type AccordionProps, AccordionTitle, AccordionTrigger, ActionBar, ActionBarButton, ActionBarClose, ActionBarContent, ActionBarDivider, ActionBarPortal, ActionBarTrigger, Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Avatar, AvatarFallback, AvatarHoverAction, AvatarImage, AvatarSizeEnum, AvatarStick, AvatarVariantEnum, Badge, type BadgeProps, BannerAlert, type BannerAlertProps, BannerType, BannerVariant, Box, type BoxProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Caption, type CaptionProps, Checkbox, type CheckboxProps, StyledCreatable as Creatable, Cropper, CropperCropArea, CropperDescription, CropperImage, type CropperProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type FileMetadata, FileUpload, type FileUploadActions, FileUploadError, type FileUploadOptions, type FileUploadProps, type FileUploadState, type FileWithPreview, Heading, type HeadingProps, InputDatePickerSingle, type InputDatePickerSingleProps, InputDateRangePicker, type InputDateRangePickerProps, InputDateTimePickerSingle, type InputDateTimePickerSingleProps, InputPhone, InputText, type InputTextProps, InputTime, type InputTimeProps, KanbanBoard, type KanbanBoardCard, type KanbanBoardColumn, type KanbanBoardProps, KanbanCard, type KanbanCardDropEvent, KanbanColumn, KanbanColumnDragHandle, type KanbanColumnDropEvent, KanbanColumnFooter, KanbanColumnHeader, KanbanColumnTitle, type KanbanOrderingMode, type KanbanRenderCardContext, type KanbanRenderColumnBodyContext, type KanbanRenderColumnContext, Label, Link, type LinkProps, NebulaI18nProvider, type NebulaI18nProviderProps, Pagination, type PaginationProps, Paragraph, type ParagraphProps, Popover, PopoverContent, type PopoverContentProps, PopoverTrigger, ProfileImage, type ProfileImageProps, RadioGroup, RadioGroupItem, StyledSelect as Select, type CreateStyledSelectProps as SelectProps, Separator, type SeparatorProps, Skeleton, type SkeletonProps, Slider, Space, SpaceDirectionEnum, type SpaceProps, SpaceSizeEnum, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TextArea, type TextAreaProps, TipCard, TipCardContent, TipCardFooter, TipCardHeader, TipCardItem, TipCardMedia, TipCardMediaType, TipCardProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupTypeEnum, ToggleSizeEnum, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, toggleVariants, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n, useTipCard };
1208
+ declare const useIsMobile: (breakpoint?: number) => boolean;
1209
+
1210
+ export { Accordion, AccordionContent, AccordionDescription, AccordionItem, type AccordionProps, AccordionTitle, AccordionTrigger, ActionBar, ActionBarButton, ActionBarClose, ActionBarContent, ActionBarDivider, ActionBarPortal, ActionBarTrigger, Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Avatar, AvatarFallback, AvatarHoverAction, AvatarImage, AvatarSizeEnum, AvatarStick, AvatarVariantEnum, Badge, type BadgeProps, BannerAlert, type BannerAlertProps, BannerType, BannerVariant, Box, type BoxProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Caption, type CaptionProps, Checkbox, type CheckboxProps, StyledCreatable as Creatable, Cropper, CropperCropArea, CropperDescription, CropperImage, type CropperProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type FileMetadata, FileUpload, type FileUploadActions, FileUploadError, type FileUploadOptions, type FileUploadProps, type FileUploadState, type FileWithPreview, Heading, type HeadingProps, InputDatePickerSingle, type InputDatePickerSingleProps, InputDateRangePicker, type InputDateRangePickerProps, InputDateTimePickerSingle, type InputDateTimePickerSingleProps, InputPhone, InputText, type InputTextProps, InputTime, type InputTimeProps, KanbanBoard, type KanbanBoardCard, type KanbanBoardColumn, type KanbanBoardProps, KanbanCard, type KanbanCardDropEvent, KanbanColumn, KanbanColumnDragHandle, type KanbanColumnDropEvent, KanbanColumnFooter, KanbanColumnHeader, KanbanColumnTitle, type KanbanOrderingMode, type KanbanRenderCardContext, type KanbanRenderColumnBodyContext, type KanbanRenderColumnContext, Label, Link, type LinkProps, NebulaI18nProvider, type NebulaI18nProviderProps, Pagination, type PaginationProps, Paragraph, type ParagraphProps, Popover, PopoverContent, type PopoverContentProps, PopoverTrigger, ProfileImage, type ProfileImageProps, RadioGroup, RadioGroupItem, StyledSelect as Select, type CreateStyledSelectProps as SelectProps, Separator, type SeparatorProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarMenuItem, type SidebarProps, SidebarSeparator, SidebarStateEnum, SidebarTitle, SidebarTrigger, Skeleton, type SkeletonProps, Slider, Space, SpaceDirectionEnum, type SpaceProps, SpaceSizeEnum, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TextArea, type TextAreaProps, TipCard, TipCardContent, TipCardFooter, TipCardHeader, TipCardItem, TipCardMedia, TipCardMediaType, TipCardProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupTypeEnum, ToggleSizeEnum, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, toggleVariants, useClickOutside, useFileUpload, useIsMobile, useKeyPress, useNebulaI18n, useSidebar, useTipCard };
package/dist/index.d.ts CHANGED
@@ -108,7 +108,10 @@ interface SeparatorProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Se
108
108
  }
109
109
  declare const Separator: React$1.ForwardRefExoticComponent<SeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
110
110
 
111
- declare const ActionBar: React$1.ForwardRefExoticComponent<DrawerPrimitive.DialogProps & React$1.RefAttributes<void>>;
111
+ declare const ActionBar: {
112
+ ({ ...props }: React$1.ComponentProps<typeof DrawerPrimitive.Root>): react_jsx_runtime.JSX.Element;
113
+ displayName: string;
114
+ };
112
115
  declare const ActionBarTrigger: React$1.ForwardRefExoticComponent<Omit<DrawerPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
113
116
  declare const ActionBarPortal: {
114
117
  (props: React$1.ComponentProps<typeof DrawerPrimitive.Portal>): react_jsx_runtime.JSX.Element;
@@ -1085,6 +1088,53 @@ interface LinkProps extends React__default.AnchorHTMLAttributes<HTMLAnchorElemen
1085
1088
  }
1086
1089
  declare const Link: React__default.ForwardRefExoticComponent<LinkProps & React__default.RefAttributes<HTMLAnchorElement>>;
1087
1090
 
1091
+ declare enum SidebarStateEnum {
1092
+ expanded = "expanded",
1093
+ rail = "rail",
1094
+ collapsed = "collapsed"
1095
+ }
1096
+ type SidebarState = keyof typeof SidebarStateEnum;
1097
+ type SidebarContextType = {
1098
+ state: SidebarState;
1099
+ setState: (s: SidebarState) => void;
1100
+ isMobile: boolean;
1101
+ };
1102
+ declare function useSidebar(): SidebarContextType;
1103
+ interface SidebarProps {
1104
+ children: React$1.ReactNode;
1105
+ defaultState?: SidebarState;
1106
+ open?: boolean;
1107
+ onOpenChange?: (open: boolean) => void;
1108
+ }
1109
+ declare function Sidebar({ children, defaultState, open, onOpenChange, }: SidebarProps): react_jsx_runtime.JSX.Element;
1110
+ declare function SidebarHeader({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1111
+ declare function SidebarContent({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1112
+ declare function SidebarTitle({ className, children, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element | null;
1113
+ declare function SidebarFooter({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
1114
+ declare const SidebarTrigger: React$1.ForwardRefExoticComponent<Omit<ButtonProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & {
1115
+ asChild?: boolean;
1116
+ } & React$1.RefAttributes<HTMLButtonElement>>;
1117
+ declare function SidebarGroup({ children, className, }: {
1118
+ children: React$1.ReactNode;
1119
+ className?: string;
1120
+ }): react_jsx_runtime.JSX.Element;
1121
+ declare function SidebarGroupLabel({ children }: {
1122
+ children: React$1.ReactNode;
1123
+ }): react_jsx_runtime.JSX.Element | null;
1124
+ declare function SidebarSeparator(): react_jsx_runtime.JSX.Element;
1125
+ type SidebarMenuItemProps = {
1126
+ icon?: React$1.ReactNode;
1127
+ action?: React$1.ReactNode;
1128
+ label: string;
1129
+ active?: boolean;
1130
+ disabled?: boolean;
1131
+ counter?: number;
1132
+ collapsible?: boolean;
1133
+ defaultOpen?: boolean;
1134
+ children?: React$1.ReactNode;
1135
+ };
1136
+ declare function SidebarMenuItem({ icon, action, label, active, disabled, counter, collapsible, defaultOpen, children, }: SidebarMenuItemProps): react_jsx_runtime.JSX.Element;
1137
+
1088
1138
  /**
1089
1139
  * Context type to use the NebulaI18nProvider.
1090
1140
  */
@@ -1155,4 +1205,6 @@ declare function useClickOutside<T extends HTMLElement>(refs: PossibleRefs<T>, o
1155
1205
 
1156
1206
  declare function useKeyPress(key: string, callback: VoidFunction): void;
1157
1207
 
1158
- export { Accordion, AccordionContent, AccordionDescription, AccordionItem, type AccordionProps, AccordionTitle, AccordionTrigger, ActionBar, ActionBarButton, ActionBarClose, ActionBarContent, ActionBarDivider, ActionBarPortal, ActionBarTrigger, Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Avatar, AvatarFallback, AvatarHoverAction, AvatarImage, AvatarSizeEnum, AvatarStick, AvatarVariantEnum, Badge, type BadgeProps, BannerAlert, type BannerAlertProps, BannerType, BannerVariant, Box, type BoxProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Caption, type CaptionProps, Checkbox, type CheckboxProps, StyledCreatable as Creatable, Cropper, CropperCropArea, CropperDescription, CropperImage, type CropperProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type FileMetadata, FileUpload, type FileUploadActions, FileUploadError, type FileUploadOptions, type FileUploadProps, type FileUploadState, type FileWithPreview, Heading, type HeadingProps, InputDatePickerSingle, type InputDatePickerSingleProps, InputDateRangePicker, type InputDateRangePickerProps, InputDateTimePickerSingle, type InputDateTimePickerSingleProps, InputPhone, InputText, type InputTextProps, InputTime, type InputTimeProps, KanbanBoard, type KanbanBoardCard, type KanbanBoardColumn, type KanbanBoardProps, KanbanCard, type KanbanCardDropEvent, KanbanColumn, KanbanColumnDragHandle, type KanbanColumnDropEvent, KanbanColumnFooter, KanbanColumnHeader, KanbanColumnTitle, type KanbanOrderingMode, type KanbanRenderCardContext, type KanbanRenderColumnBodyContext, type KanbanRenderColumnContext, Label, Link, type LinkProps, NebulaI18nProvider, type NebulaI18nProviderProps, Pagination, type PaginationProps, Paragraph, type ParagraphProps, Popover, PopoverContent, type PopoverContentProps, PopoverTrigger, ProfileImage, type ProfileImageProps, RadioGroup, RadioGroupItem, StyledSelect as Select, type CreateStyledSelectProps as SelectProps, Separator, type SeparatorProps, Skeleton, type SkeletonProps, Slider, Space, SpaceDirectionEnum, type SpaceProps, SpaceSizeEnum, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TextArea, type TextAreaProps, TipCard, TipCardContent, TipCardFooter, TipCardHeader, TipCardItem, TipCardMedia, TipCardMediaType, TipCardProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupTypeEnum, ToggleSizeEnum, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, toggleVariants, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n, useTipCard };
1208
+ declare const useIsMobile: (breakpoint?: number) => boolean;
1209
+
1210
+ export { Accordion, AccordionContent, AccordionDescription, AccordionItem, type AccordionProps, AccordionTitle, AccordionTrigger, ActionBar, ActionBarButton, ActionBarClose, ActionBarContent, ActionBarDivider, ActionBarPortal, ActionBarTrigger, Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Avatar, AvatarFallback, AvatarHoverAction, AvatarImage, AvatarSizeEnum, AvatarStick, AvatarVariantEnum, Badge, type BadgeProps, BannerAlert, type BannerAlertProps, BannerType, BannerVariant, Box, type BoxProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Caption, type CaptionProps, Checkbox, type CheckboxProps, StyledCreatable as Creatable, Cropper, CropperCropArea, CropperDescription, CropperImage, type CropperProps, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type FileMetadata, FileUpload, type FileUploadActions, FileUploadError, type FileUploadOptions, type FileUploadProps, type FileUploadState, type FileWithPreview, Heading, type HeadingProps, InputDatePickerSingle, type InputDatePickerSingleProps, InputDateRangePicker, type InputDateRangePickerProps, InputDateTimePickerSingle, type InputDateTimePickerSingleProps, InputPhone, InputText, type InputTextProps, InputTime, type InputTimeProps, KanbanBoard, type KanbanBoardCard, type KanbanBoardColumn, type KanbanBoardProps, KanbanCard, type KanbanCardDropEvent, KanbanColumn, KanbanColumnDragHandle, type KanbanColumnDropEvent, KanbanColumnFooter, KanbanColumnHeader, KanbanColumnTitle, type KanbanOrderingMode, type KanbanRenderCardContext, type KanbanRenderColumnBodyContext, type KanbanRenderColumnContext, Label, Link, type LinkProps, NebulaI18nProvider, type NebulaI18nProviderProps, Pagination, type PaginationProps, Paragraph, type ParagraphProps, Popover, PopoverContent, type PopoverContentProps, PopoverTrigger, ProfileImage, type ProfileImageProps, RadioGroup, RadioGroupItem, StyledSelect as Select, type CreateStyledSelectProps as SelectProps, Separator, type SeparatorProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarMenuItem, type SidebarProps, SidebarSeparator, SidebarStateEnum, SidebarTitle, SidebarTrigger, Skeleton, type SkeletonProps, Slider, Space, SpaceDirectionEnum, type SpaceProps, SpaceSizeEnum, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, type TagProps, TextArea, type TextAreaProps, TipCard, TipCardContent, TipCardFooter, TipCardHeader, TipCardItem, TipCardMedia, TipCardMediaType, TipCardProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupTypeEnum, ToggleSizeEnum, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, toggleVariants, useClickOutside, useFileUpload, useIsMobile, useKeyPress, useNebulaI18n, useSidebar, useTipCard };
package/dist/index.js CHANGED
@@ -415,7 +415,9 @@ var Separator = React25__namespace.forwardRef(
415
415
  }
416
416
  );
417
417
  Separator.displayName = "Separator";
418
- var ActionBar = React25__namespace.forwardRef(({ ...props }) => /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { modal: false, ...props }));
418
+ var ActionBar = ({
419
+ ...props
420
+ }) => /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { modal: false, ...props });
419
421
  ActionBar.displayName = "ActionBar";
420
422
  var ActionBarTrigger = React25__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Trigger, { ref, ...props }));
421
423
  ActionBarTrigger.displayName = "ActionBarTrigger";
@@ -8833,6 +8835,271 @@ var Tooltip = React25__namespace.forwardRef(
8833
8835
  }
8834
8836
  );
8835
8837
  Tooltip.displayName = "Tooltip";
8838
+ var useIsMobile = (breakpoint = 768) => {
8839
+ const [isMobile, setIsMobile] = React25.useState(false);
8840
+ React25.useEffect(() => {
8841
+ const mediaQuery = window.matchMedia(`(max-width: ${breakpoint}px)`);
8842
+ const handleMediaQueryChange = (event) => setIsMobile(event.matches);
8843
+ setIsMobile(mediaQuery.matches);
8844
+ mediaQuery.addEventListener("change", handleMediaQueryChange);
8845
+ return () => {
8846
+ mediaQuery.removeEventListener("change", handleMediaQueryChange);
8847
+ };
8848
+ }, [breakpoint]);
8849
+ return isMobile;
8850
+ };
8851
+ var SidebarStateEnum = /* @__PURE__ */ ((SidebarStateEnum2) => {
8852
+ SidebarStateEnum2["expanded"] = "expanded";
8853
+ SidebarStateEnum2["rail"] = "rail";
8854
+ SidebarStateEnum2["collapsed"] = "collapsed";
8855
+ return SidebarStateEnum2;
8856
+ })(SidebarStateEnum || {});
8857
+ var SidebarContext = React25__namespace.createContext(null);
8858
+ function useSidebar() {
8859
+ const ctx = React25__namespace.useContext(SidebarContext);
8860
+ if (!ctx) throw new Error("Sidebar must be used inside Sidebar");
8861
+ return ctx;
8862
+ }
8863
+ function Sidebar({
8864
+ children,
8865
+ defaultState = "expanded",
8866
+ open,
8867
+ onOpenChange
8868
+ }) {
8869
+ const isMobile = useIsMobile();
8870
+ const isControlled = open !== void 0;
8871
+ const [internalState, setInternalState] = React25__namespace.useState(defaultState);
8872
+ const state = isControlled ? open ? "expanded" : "collapsed" : internalState;
8873
+ const setState = React25__namespace.useCallback(
8874
+ (next) => {
8875
+ if (!isControlled) {
8876
+ setInternalState(next);
8877
+ }
8878
+ if (onOpenChange) {
8879
+ onOpenChange(next !== "collapsed");
8880
+ }
8881
+ },
8882
+ [isControlled, onOpenChange]
8883
+ );
8884
+ const contextValue = React25__namespace.useMemo(
8885
+ () => ({ state, setState, isMobile }),
8886
+ [state, isMobile, setState]
8887
+ );
8888
+ if (isMobile) {
8889
+ return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
8890
+ Drawer,
8891
+ {
8892
+ open: state !== "collapsed",
8893
+ onOpenChange: (o) => setState(o ? "expanded" : "collapsed"),
8894
+ children: /* @__PURE__ */ jsxRuntime.jsx(DrawerContent, { className: "nebula-ds w-[var(--sidebar-width)] p-0 shadow-xl", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds flex h-full flex-col bg-sidebar-background", children }) })
8895
+ }
8896
+ ) });
8897
+ }
8898
+ return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
8899
+ "aside",
8900
+ {
8901
+ "data-state": state,
8902
+ className: cn(
8903
+ "relative hidden md:flex flex-col border-r border-sidebar-border bg-sidebar-background transition-all duration-300 ease-in-out",
8904
+ state === "expanded" && "w-[var(--sidebar-width)]",
8905
+ state === "rail" && "w-[var(--sidebar-rail-width)]",
8906
+ state === "collapsed" && "w-0 overflow-hidden"
8907
+ ),
8908
+ children
8909
+ }
8910
+ ) });
8911
+ }
8912
+ function SidebarHeader({
8913
+ className,
8914
+ ...props
8915
+ }) {
8916
+ const { state } = useSidebar();
8917
+ return /* @__PURE__ */ jsxRuntime.jsx(
8918
+ "div",
8919
+ {
8920
+ "data-state": state,
8921
+ className: cn(
8922
+ "sticky top-0 z-20 flex h-14 items-center border-b border-sidebar-border bg-sidebar-background transition-all duration-300",
8923
+ state === "expanded" && "justify-between px-4",
8924
+ state === "rail" && "justify-center px-2",
8925
+ className
8926
+ ),
8927
+ ...props
8928
+ }
8929
+ );
8930
+ }
8931
+ function SidebarContent({
8932
+ className,
8933
+ ...props
8934
+ }) {
8935
+ const { state } = useSidebar();
8936
+ return /* @__PURE__ */ jsxRuntime.jsx(
8937
+ "div",
8938
+ {
8939
+ className: cn(
8940
+ "flex-1 overflow-y-auto py-3 space-y-4",
8941
+ state === "rail" && "flex flex-col items-center",
8942
+ className
8943
+ ),
8944
+ ...props
8945
+ }
8946
+ );
8947
+ }
8948
+ function SidebarTitle({
8949
+ className,
8950
+ children,
8951
+ ...props
8952
+ }) {
8953
+ const { state } = useSidebar();
8954
+ if (state === "rail") return null;
8955
+ return /* @__PURE__ */ jsxRuntime.jsx(
8956
+ "div",
8957
+ {
8958
+ "data-state": state,
8959
+ className: cn(
8960
+ "font-semibold text-sidebar-text whitespace-nowrap transition-all duration-300",
8961
+ className
8962
+ ),
8963
+ ...props,
8964
+ children
8965
+ }
8966
+ );
8967
+ }
8968
+ function SidebarFooter({
8969
+ className,
8970
+ ...props
8971
+ }) {
8972
+ const { state } = useSidebar();
8973
+ return /* @__PURE__ */ jsxRuntime.jsx(
8974
+ "div",
8975
+ {
8976
+ className: cn(
8977
+ "sticky bottom-0 bg-sidebar-background p-3",
8978
+ state === "rail" && "flex justify-center p-2",
8979
+ className
8980
+ ),
8981
+ ...props
8982
+ }
8983
+ );
8984
+ }
8985
+ var SidebarTrigger = React25__namespace.forwardRef(({ asChild = false, className, onClick, children, ...props }, ref) => {
8986
+ const { state, setState, isMobile } = useSidebar();
8987
+ const Comp = asChild ? reactSlot.Slot : Button;
8988
+ function handleToggle(e) {
8989
+ if (isMobile) {
8990
+ setState(state === "collapsed" ? "expanded" : "collapsed");
8991
+ } else {
8992
+ setState(state === "expanded" ? "rail" : "expanded");
8993
+ }
8994
+ onClick?.(e);
8995
+ }
8996
+ return /* @__PURE__ */ jsxRuntime.jsx(
8997
+ Comp,
8998
+ {
8999
+ ref,
9000
+ onClick: handleToggle,
9001
+ "aria-label": "Toggle sidebar",
9002
+ className: cn(
9003
+ !asChild && "size-9",
9004
+ state === "rail" && "mx-auto",
9005
+ className
9006
+ ),
9007
+ ...!asChild && { variant: "ghost", icon: true },
9008
+ ...props,
9009
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeft, { className: "nebula-ds size-5" })
9010
+ }
9011
+ );
9012
+ });
9013
+ SidebarTrigger.displayName = "SidebarTrigger";
9014
+ function SidebarGroup({
9015
+ children,
9016
+ className
9017
+ }) {
9018
+ const { state } = useSidebar();
9019
+ return /* @__PURE__ */ jsxRuntime.jsx(
9020
+ "div",
9021
+ {
9022
+ className: cn(
9023
+ "flex flex-col space-y-1 px-2",
9024
+ state === "rail" && "items-center",
9025
+ className
9026
+ ),
9027
+ children
9028
+ }
9029
+ );
9030
+ }
9031
+ function SidebarGroupLabel({ children }) {
9032
+ const { state } = useSidebar();
9033
+ if (state === "rail") return null;
9034
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds px-3 py-1 text-xs font-medium tracking-wide text-sidebar-label", children });
9035
+ }
9036
+ function SidebarSeparator() {
9037
+ return /* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "horizontal" });
9038
+ }
9039
+ var SidebarLevelContext = React25__namespace.createContext(0);
9040
+ function SidebarMenuItem({
9041
+ icon,
9042
+ action,
9043
+ label,
9044
+ active,
9045
+ disabled,
9046
+ counter,
9047
+ collapsible,
9048
+ defaultOpen = false,
9049
+ children
9050
+ }) {
9051
+ const { state } = useSidebar();
9052
+ const [open, setOpen] = React25__namespace.useState(defaultOpen);
9053
+ const level = React25__namespace.useContext(SidebarLevelContext);
9054
+ const isRail = state === "rail";
9055
+ const paddingLeft = level > 0 ? "pl-11" : "";
9056
+ const content2 = /* @__PURE__ */ jsxRuntime.jsxs(
9057
+ Button,
9058
+ {
9059
+ variant: "ghost",
9060
+ disabled,
9061
+ "aria-expanded": collapsible ? open : void 0,
9062
+ onClick: () => collapsible && setOpen((p) => !p),
9063
+ className: cn(
9064
+ "group font-medium relative flex items-center rounded-lg py-2 text-sm transition-colors",
9065
+ active && "font-semibold",
9066
+ isRail ? "justify-center w-10 h-10 mx-auto px-0 rounded-full" : cn("w-full pr-3", paddingLeft)
9067
+ ),
9068
+ children: [
9069
+ icon && /* @__PURE__ */ jsxRuntime.jsx(
9070
+ "span",
9071
+ {
9072
+ className: cn(
9073
+ "flex items-center justify-center size-4 shrink-0",
9074
+ !isRail && "mr-3"
9075
+ ),
9076
+ children: icon
9077
+ }
9078
+ ),
9079
+ !isRail && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9080
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds flex-1 truncate text-left", children: label }),
9081
+ (action || counter !== void 0 || collapsible) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "nebula-ds flex items-center gap-2 shrink-0", children: [
9082
+ action,
9083
+ counter !== void 0 && counter > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "nebula-ds text-xs font-medium bg-muted px-2 py-0.5 rounded-md", children: counter }),
9084
+ collapsible && /* @__PURE__ */ jsxRuntime.jsx(
9085
+ lucideReact.ChevronDown,
9086
+ {
9087
+ className: cn(
9088
+ "size-4 transition-transform",
9089
+ open && "rotate-180"
9090
+ )
9091
+ }
9092
+ )
9093
+ ] })
9094
+ ] })
9095
+ ]
9096
+ }
9097
+ );
9098
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(isRail && "flex justify-center"), children: [
9099
+ isRail ? /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { content: label, side: "right", children: content2 }) : content2,
9100
+ collapsible && open && !isRail && /* @__PURE__ */ jsxRuntime.jsx(SidebarLevelContext.Provider, { value: level + 1, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds mt-1 space-y-1", children }) })
9101
+ ] });
9102
+ }
8836
9103
 
8837
9104
  // src/tailwind.ts
8838
9105
  function content({ base = "./" } = {}) {
@@ -8963,6 +9230,17 @@ exports.RadioGroup = RadioGroup2;
8963
9230
  exports.RadioGroupItem = RadioGroupItem;
8964
9231
  exports.Select = StyledSelect;
8965
9232
  exports.Separator = Separator;
9233
+ exports.Sidebar = Sidebar;
9234
+ exports.SidebarContent = SidebarContent;
9235
+ exports.SidebarFooter = SidebarFooter;
9236
+ exports.SidebarGroup = SidebarGroup;
9237
+ exports.SidebarGroupLabel = SidebarGroupLabel;
9238
+ exports.SidebarHeader = SidebarHeader;
9239
+ exports.SidebarMenuItem = SidebarMenuItem;
9240
+ exports.SidebarSeparator = SidebarSeparator;
9241
+ exports.SidebarStateEnum = SidebarStateEnum;
9242
+ exports.SidebarTitle = SidebarTitle;
9243
+ exports.SidebarTrigger = SidebarTrigger;
8966
9244
  exports.Skeleton = Skeleton;
8967
9245
  exports.Slider = Slider;
8968
9246
  exports.Space = Space;
@@ -9024,6 +9302,8 @@ exports.toast = toast;
9024
9302
  exports.toggleVariants = toggleVariants;
9025
9303
  exports.useClickOutside = useClickOutside;
9026
9304
  exports.useFileUpload = useFileUpload;
9305
+ exports.useIsMobile = useIsMobile;
9027
9306
  exports.useKeyPress = useKeyPress;
9028
9307
  exports.useNebulaI18n = useNebulaI18n;
9308
+ exports.useSidebar = useSidebar;
9029
9309
  exports.useTipCard = useTipCard;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
2
- import { Minus, Check, X, ChevronRight, Circle, CircleX, Eye, EyeOff, ClockIcon, ChevronLeftIcon, ChevronRightIcon, ChevronDown, XIcon, MoreHorizontal, ChevronDownIcon, MinusIcon, PlusIcon, ImageUpIcon, CalendarIcon, ChevronsLeft, ChevronLeft, ChevronsRight, UserIcon, LoaderCircleIcon, CheckIcon, FileTextIcon, FileAudioIcon, FileVideoIcon, PhoneIcon, InfoIcon, TriangleAlertIcon, CircleCheckBigIcon, Info, CircleCheckBig } from 'lucide-react';
2
+ import { Minus, Check, X, ChevronRight, Circle, CircleX, Eye, EyeOff, ClockIcon, ChevronLeftIcon, ChevronRightIcon, PanelLeft, ChevronDown, XIcon, MoreHorizontal, ChevronDownIcon, MinusIcon, PlusIcon, ImageUpIcon, CalendarIcon, ChevronsLeft, ChevronLeft, ChevronsRight, UserIcon, LoaderCircleIcon, CheckIcon, FileTextIcon, FileAudioIcon, FileVideoIcon, PhoneIcon, InfoIcon, TriangleAlertIcon, CircleCheckBigIcon, Info, CircleCheckBig } from 'lucide-react';
3
3
  import { extendTailwindMerge } from 'tailwind-merge';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import * as React25 from 'react';
@@ -372,7 +372,9 @@ var Separator = React25.forwardRef(
372
372
  }
373
373
  );
374
374
  Separator.displayName = "Separator";
375
- var ActionBar = React25.forwardRef(({ ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { modal: false, ...props }));
375
+ var ActionBar = ({
376
+ ...props
377
+ }) => /* @__PURE__ */ jsx(DialogPrimitive.Root, { modal: false, ...props });
376
378
  ActionBar.displayName = "ActionBar";
377
379
  var ActionBarTrigger = React25.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { ref, ...props }));
378
380
  ActionBarTrigger.displayName = "ActionBarTrigger";
@@ -8790,6 +8792,271 @@ var Tooltip = React25.forwardRef(
8790
8792
  }
8791
8793
  );
8792
8794
  Tooltip.displayName = "Tooltip";
8795
+ var useIsMobile = (breakpoint = 768) => {
8796
+ const [isMobile, setIsMobile] = useState(false);
8797
+ useEffect(() => {
8798
+ const mediaQuery = window.matchMedia(`(max-width: ${breakpoint}px)`);
8799
+ const handleMediaQueryChange = (event) => setIsMobile(event.matches);
8800
+ setIsMobile(mediaQuery.matches);
8801
+ mediaQuery.addEventListener("change", handleMediaQueryChange);
8802
+ return () => {
8803
+ mediaQuery.removeEventListener("change", handleMediaQueryChange);
8804
+ };
8805
+ }, [breakpoint]);
8806
+ return isMobile;
8807
+ };
8808
+ var SidebarStateEnum = /* @__PURE__ */ ((SidebarStateEnum2) => {
8809
+ SidebarStateEnum2["expanded"] = "expanded";
8810
+ SidebarStateEnum2["rail"] = "rail";
8811
+ SidebarStateEnum2["collapsed"] = "collapsed";
8812
+ return SidebarStateEnum2;
8813
+ })(SidebarStateEnum || {});
8814
+ var SidebarContext = React25.createContext(null);
8815
+ function useSidebar() {
8816
+ const ctx = React25.useContext(SidebarContext);
8817
+ if (!ctx) throw new Error("Sidebar must be used inside Sidebar");
8818
+ return ctx;
8819
+ }
8820
+ function Sidebar({
8821
+ children,
8822
+ defaultState = "expanded",
8823
+ open,
8824
+ onOpenChange
8825
+ }) {
8826
+ const isMobile = useIsMobile();
8827
+ const isControlled = open !== void 0;
8828
+ const [internalState, setInternalState] = React25.useState(defaultState);
8829
+ const state = isControlled ? open ? "expanded" : "collapsed" : internalState;
8830
+ const setState = React25.useCallback(
8831
+ (next) => {
8832
+ if (!isControlled) {
8833
+ setInternalState(next);
8834
+ }
8835
+ if (onOpenChange) {
8836
+ onOpenChange(next !== "collapsed");
8837
+ }
8838
+ },
8839
+ [isControlled, onOpenChange]
8840
+ );
8841
+ const contextValue = React25.useMemo(
8842
+ () => ({ state, setState, isMobile }),
8843
+ [state, isMobile, setState]
8844
+ );
8845
+ if (isMobile) {
8846
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
8847
+ Drawer,
8848
+ {
8849
+ open: state !== "collapsed",
8850
+ onOpenChange: (o) => setState(o ? "expanded" : "collapsed"),
8851
+ children: /* @__PURE__ */ jsx(DrawerContent, { className: "nebula-ds w-[var(--sidebar-width)] p-0 shadow-xl", children: /* @__PURE__ */ jsx("div", { className: "nebula-ds flex h-full flex-col bg-sidebar-background", children }) })
8852
+ }
8853
+ ) });
8854
+ }
8855
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
8856
+ "aside",
8857
+ {
8858
+ "data-state": state,
8859
+ className: cn(
8860
+ "relative hidden md:flex flex-col border-r border-sidebar-border bg-sidebar-background transition-all duration-300 ease-in-out",
8861
+ state === "expanded" && "w-[var(--sidebar-width)]",
8862
+ state === "rail" && "w-[var(--sidebar-rail-width)]",
8863
+ state === "collapsed" && "w-0 overflow-hidden"
8864
+ ),
8865
+ children
8866
+ }
8867
+ ) });
8868
+ }
8869
+ function SidebarHeader({
8870
+ className,
8871
+ ...props
8872
+ }) {
8873
+ const { state } = useSidebar();
8874
+ return /* @__PURE__ */ jsx(
8875
+ "div",
8876
+ {
8877
+ "data-state": state,
8878
+ className: cn(
8879
+ "sticky top-0 z-20 flex h-14 items-center border-b border-sidebar-border bg-sidebar-background transition-all duration-300",
8880
+ state === "expanded" && "justify-between px-4",
8881
+ state === "rail" && "justify-center px-2",
8882
+ className
8883
+ ),
8884
+ ...props
8885
+ }
8886
+ );
8887
+ }
8888
+ function SidebarContent({
8889
+ className,
8890
+ ...props
8891
+ }) {
8892
+ const { state } = useSidebar();
8893
+ return /* @__PURE__ */ jsx(
8894
+ "div",
8895
+ {
8896
+ className: cn(
8897
+ "flex-1 overflow-y-auto py-3 space-y-4",
8898
+ state === "rail" && "flex flex-col items-center",
8899
+ className
8900
+ ),
8901
+ ...props
8902
+ }
8903
+ );
8904
+ }
8905
+ function SidebarTitle({
8906
+ className,
8907
+ children,
8908
+ ...props
8909
+ }) {
8910
+ const { state } = useSidebar();
8911
+ if (state === "rail") return null;
8912
+ return /* @__PURE__ */ jsx(
8913
+ "div",
8914
+ {
8915
+ "data-state": state,
8916
+ className: cn(
8917
+ "font-semibold text-sidebar-text whitespace-nowrap transition-all duration-300",
8918
+ className
8919
+ ),
8920
+ ...props,
8921
+ children
8922
+ }
8923
+ );
8924
+ }
8925
+ function SidebarFooter({
8926
+ className,
8927
+ ...props
8928
+ }) {
8929
+ const { state } = useSidebar();
8930
+ return /* @__PURE__ */ jsx(
8931
+ "div",
8932
+ {
8933
+ className: cn(
8934
+ "sticky bottom-0 bg-sidebar-background p-3",
8935
+ state === "rail" && "flex justify-center p-2",
8936
+ className
8937
+ ),
8938
+ ...props
8939
+ }
8940
+ );
8941
+ }
8942
+ var SidebarTrigger = React25.forwardRef(({ asChild = false, className, onClick, children, ...props }, ref) => {
8943
+ const { state, setState, isMobile } = useSidebar();
8944
+ const Comp = asChild ? Slot : Button;
8945
+ function handleToggle(e) {
8946
+ if (isMobile) {
8947
+ setState(state === "collapsed" ? "expanded" : "collapsed");
8948
+ } else {
8949
+ setState(state === "expanded" ? "rail" : "expanded");
8950
+ }
8951
+ onClick?.(e);
8952
+ }
8953
+ return /* @__PURE__ */ jsx(
8954
+ Comp,
8955
+ {
8956
+ ref,
8957
+ onClick: handleToggle,
8958
+ "aria-label": "Toggle sidebar",
8959
+ className: cn(
8960
+ !asChild && "size-9",
8961
+ state === "rail" && "mx-auto",
8962
+ className
8963
+ ),
8964
+ ...!asChild && { variant: "ghost", icon: true },
8965
+ ...props,
8966
+ children: children ?? /* @__PURE__ */ jsx(PanelLeft, { className: "nebula-ds size-5" })
8967
+ }
8968
+ );
8969
+ });
8970
+ SidebarTrigger.displayName = "SidebarTrigger";
8971
+ function SidebarGroup({
8972
+ children,
8973
+ className
8974
+ }) {
8975
+ const { state } = useSidebar();
8976
+ return /* @__PURE__ */ jsx(
8977
+ "div",
8978
+ {
8979
+ className: cn(
8980
+ "flex flex-col space-y-1 px-2",
8981
+ state === "rail" && "items-center",
8982
+ className
8983
+ ),
8984
+ children
8985
+ }
8986
+ );
8987
+ }
8988
+ function SidebarGroupLabel({ children }) {
8989
+ const { state } = useSidebar();
8990
+ if (state === "rail") return null;
8991
+ return /* @__PURE__ */ jsx("div", { className: "nebula-ds px-3 py-1 text-xs font-medium tracking-wide text-sidebar-label", children });
8992
+ }
8993
+ function SidebarSeparator() {
8994
+ return /* @__PURE__ */ jsx(Separator, { orientation: "horizontal" });
8995
+ }
8996
+ var SidebarLevelContext = React25.createContext(0);
8997
+ function SidebarMenuItem({
8998
+ icon,
8999
+ action,
9000
+ label,
9001
+ active,
9002
+ disabled,
9003
+ counter,
9004
+ collapsible,
9005
+ defaultOpen = false,
9006
+ children
9007
+ }) {
9008
+ const { state } = useSidebar();
9009
+ const [open, setOpen] = React25.useState(defaultOpen);
9010
+ const level = React25.useContext(SidebarLevelContext);
9011
+ const isRail = state === "rail";
9012
+ const paddingLeft = level > 0 ? "pl-11" : "";
9013
+ const content2 = /* @__PURE__ */ jsxs(
9014
+ Button,
9015
+ {
9016
+ variant: "ghost",
9017
+ disabled,
9018
+ "aria-expanded": collapsible ? open : void 0,
9019
+ onClick: () => collapsible && setOpen((p) => !p),
9020
+ className: cn(
9021
+ "group font-medium relative flex items-center rounded-lg py-2 text-sm transition-colors",
9022
+ active && "font-semibold",
9023
+ isRail ? "justify-center w-10 h-10 mx-auto px-0 rounded-full" : cn("w-full pr-3", paddingLeft)
9024
+ ),
9025
+ children: [
9026
+ icon && /* @__PURE__ */ jsx(
9027
+ "span",
9028
+ {
9029
+ className: cn(
9030
+ "flex items-center justify-center size-4 shrink-0",
9031
+ !isRail && "mr-3"
9032
+ ),
9033
+ children: icon
9034
+ }
9035
+ ),
9036
+ !isRail && /* @__PURE__ */ jsxs(Fragment, { children: [
9037
+ /* @__PURE__ */ jsx("span", { className: "nebula-ds flex-1 truncate text-left", children: label }),
9038
+ (action || counter !== void 0 || collapsible) && /* @__PURE__ */ jsxs("span", { className: "nebula-ds flex items-center gap-2 shrink-0", children: [
9039
+ action,
9040
+ counter !== void 0 && counter > 0 && /* @__PURE__ */ jsx("span", { className: "nebula-ds text-xs font-medium bg-muted px-2 py-0.5 rounded-md", children: counter }),
9041
+ collapsible && /* @__PURE__ */ jsx(
9042
+ ChevronDown,
9043
+ {
9044
+ className: cn(
9045
+ "size-4 transition-transform",
9046
+ open && "rotate-180"
9047
+ )
9048
+ }
9049
+ )
9050
+ ] })
9051
+ ] })
9052
+ ]
9053
+ }
9054
+ );
9055
+ return /* @__PURE__ */ jsxs("div", { className: cn(isRail && "flex justify-center"), children: [
9056
+ isRail ? /* @__PURE__ */ jsx(Tooltip, { content: label, side: "right", children: content2 }) : content2,
9057
+ collapsible && open && !isRail && /* @__PURE__ */ jsx(SidebarLevelContext.Provider, { value: level + 1, children: /* @__PURE__ */ jsx("div", { className: "nebula-ds mt-1 space-y-1", children }) })
9058
+ ] });
9059
+ }
8793
9060
 
8794
9061
  // src/tailwind.ts
8795
9062
  function content({ base = "./" } = {}) {
@@ -8801,4 +9068,4 @@ var tailwind = {
8801
9068
  // plugin: () => require("tailwindcss")("node_modules/@nebulareact/dist/tailwind.config.js"),
8802
9069
  };
8803
9070
 
8804
- export { Accordion, AccordionContent, AccordionDescription, AccordionItem, AccordionTitle, AccordionTrigger, ActionBar, ActionBarButton, ActionBarClose, ActionBarContent, ActionBarDivider, ActionBarPortal, ActionBarTrigger, Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Avatar, AvatarFallback, AvatarHoverAction, AvatarImage, AvatarSizeEnum, AvatarStick, AvatarVariantEnum, Badge, BannerAlert, BannerType, BannerVariant, Box, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Caption, Checkbox, StyledCreatable as Creatable, Cropper2 as Cropper, CropperCropArea2 as CropperCropArea, CropperDescription2 as CropperDescription, CropperImage2 as CropperImage, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, FileUploadError, Heading, InputDatePickerSingle, InputDateRangePicker, InputDateTimePickerSingle, InputPhone, InputText, InputTime, KanbanBoard, KanbanCard, KanbanColumn, KanbanColumnDragHandle, KanbanColumnFooter, KanbanColumnHeader, KanbanColumnTitle, Label2 as Label, Link, NebulaI18nProvider, Pagination, Paragraph, Popover, PopoverContent, PopoverTrigger, ProfileImage, RadioGroup2 as RadioGroup, RadioGroupItem, StyledSelect as Select, Separator, Skeleton, Slider, Space, SpaceDirectionEnum, SpaceSizeEnum, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TextArea, TipCard, TipCardContent2 as TipCardContent, TipCardFooter, TipCardHeader, TipCardItem, TipCardMedia, TipCardMediaType, TipCardProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupTypeEnum, ToggleSizeEnum, Tooltip, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages19 as messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, toggleVariants, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n, useTipCard };
9071
+ export { Accordion, AccordionContent, AccordionDescription, AccordionItem, AccordionTitle, AccordionTrigger, ActionBar, ActionBarButton, ActionBarClose, ActionBarContent, ActionBarDivider, ActionBarPortal, ActionBarTrigger, Alert, AlertButton, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AlertTitle, StyledAsync as Async, StyledAsyncCreatable as AsyncCreatable, Avatar, AvatarFallback, AvatarHoverAction, AvatarImage, AvatarSizeEnum, AvatarStick, AvatarVariantEnum, Badge, BannerAlert, BannerType, BannerVariant, Box, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Caption, Checkbox, StyledCreatable as Creatable, Cropper2 as Cropper, CropperCropArea2 as CropperCropArea, CropperDescription2 as CropperDescription, CropperImage2 as CropperImage, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, FileUploadError, Heading, InputDatePickerSingle, InputDateRangePicker, InputDateTimePickerSingle, InputPhone, InputText, InputTime, KanbanBoard, KanbanCard, KanbanColumn, KanbanColumnDragHandle, KanbanColumnFooter, KanbanColumnHeader, KanbanColumnTitle, Label2 as Label, Link, NebulaI18nProvider, Pagination, Paragraph, Popover, PopoverContent, PopoverTrigger, ProfileImage, RadioGroup2 as RadioGroup, RadioGroupItem, StyledSelect as Select, Separator, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarMenuItem, SidebarSeparator, SidebarStateEnum, SidebarTitle, SidebarTrigger, Skeleton, Slider, Space, SpaceDirectionEnum, SpaceSizeEnum, Stepper, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TextArea, TipCard, TipCardContent2 as TipCardContent, TipCardFooter, TipCardHeader, TipCardItem, TipCardMedia, TipCardMediaType, TipCardProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleGroupTypeEnum, ToggleSizeEnum, Tooltip, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages19 as messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, toggleVariants, useClickOutside, useFileUpload, useIsMobile, useKeyPress, useNebulaI18n, useSidebar, useTipCard };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikatec/nebula-react",
3
- "version": "1.9.0-beta.2",
3
+ "version": "1.9.0-beta.4",
4
4
  "description": "React components for Nebula Design System",
5
5
  "publishConfig": {
6
6
  "access": "public"