@ikatec/nebula-react 1.4.1-beta.2 → 1.5.0-beta.1

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
@@ -784,7 +784,7 @@ interface CropperProps {
784
784
  }
785
785
  declare function Cropper({ onOpenChange, open, previewUrl, onApply, onCancelCrop, rounded, portal, }: CropperProps): react_jsx_runtime.JSX.Element;
786
786
 
787
- interface ProfileImageProps extends Pick<FileUploadOptions, 'maxFiles'> {
787
+ interface ProfileImageProps extends Omit<FileUploadOptions, 'maxSize'> {
788
788
  maxSizeMB?: number;
789
789
  onError?: (errors: {
790
790
  file?: File | FileMetadata;
@@ -800,7 +800,7 @@ interface ProfileImageProps extends Pick<FileUploadOptions, 'maxFiles'> {
800
800
  icon?: React__default.JSX.Element;
801
801
  }
802
802
  declare const ProfileImage: {
803
- ({ maxSizeMB, subtitle, onError, maxFiles, onRemove, image, cropperProps, onChange, size, icon, }: ProfileImageProps): react_jsx_runtime.JSX.Element;
803
+ ({ maxSizeMB, subtitle, onError, maxFiles, accept, onRemove, image, cropperProps, onChange, size, icon, }: ProfileImageProps): react_jsx_runtime.JSX.Element;
804
804
  displayName: string;
805
805
  };
806
806
 
@@ -962,6 +962,53 @@ interface KanbanCardProps extends HTMLAttributes<HTMLDivElement> {
962
962
  declare const KanbanCard: React$1.ForwardRefExoticComponent<KanbanCardProps & React$1.RefAttributes<HTMLDivElement>>;
963
963
  declare const KanbanColumnDragHandle: React$1.ForwardRefExoticComponent<React$1.ButtonHTMLAttributes<HTMLButtonElement> & React$1.RefAttributes<HTMLButtonElement>>;
964
964
 
965
+ declare const TipCard: ({ children, looping, }: PropsWithChildren<{
966
+ looping?: boolean;
967
+ }>) => react_jsx_runtime.JSX.Element;
968
+
969
+ declare const TipCardItem: {
970
+ ({ ["data-tip-card-item-order" as keyof React.HTMLAttributes<HTMLDivElement>]: order, children, ...props }: PropsWithChildren<React__default.HTMLAttributes<HTMLDivElement>>): react_jsx_runtime.JSX.Element;
971
+ displayName: string;
972
+ };
973
+
974
+ interface TipCardContextType {
975
+ registeredTipsMap: Map<string, boolean>;
976
+ currentTipOrder: number;
977
+ isCarouselMode: boolean;
978
+ looping: boolean;
979
+ nextTip: () => void;
980
+ previousTip: () => void;
981
+ registerTip: (id: string) => void;
982
+ unregisterTip: (id: string) => void;
983
+ }
984
+ declare const TipCardProvider: ({ children, looping, }: PropsWithChildren<{
985
+ looping?: boolean;
986
+ }>) => react_jsx_runtime.JSX.Element;
987
+ declare const useTipCard: () => TipCardContextType;
988
+
989
+ declare const TipCardFooter: React__default.MemoExoticComponent<() => react_jsx_runtime.JSX.Element | null>;
990
+
991
+ declare const TipCardHeader: React__default.MemoExoticComponent<({ children, icon }: PropsWithChildren<{
992
+ icon?: React__default.ReactNode;
993
+ }>) => react_jsx_runtime.JSX.Element>;
994
+
995
+ declare const TipCardContent: ({ children }: PropsWithChildren) => react_jsx_runtime.JSX.Element;
996
+
997
+ declare enum TipCardMediaType {
998
+ image = "image",
999
+ video = "video"
1000
+ }
1001
+ interface TipCardMediaProps {
1002
+ type: keyof typeof TipCardMediaType;
1003
+ source?: string;
1004
+ alt?: string;
1005
+ children?: React__default.ReactNode;
1006
+ }
1007
+ declare const TipCardMedia: {
1008
+ ({ type, source, alt, children, }: TipCardMediaProps): react_jsx_runtime.JSX.Element;
1009
+ displayName: string;
1010
+ };
1011
+
965
1012
  interface Content {
966
1013
  /**
967
1014
  * Path to `node_modules` where `flowbite-react` is installed
@@ -1032,4 +1079,4 @@ declare function useClickOutside<T extends HTMLElement>(refs: PossibleRefs<T>, o
1032
1079
 
1033
1080
  declare function useKeyPress(key: string, callback: VoidFunction): void;
1034
1081
 
1035
- 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, 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 KanbanRenderColumnContext, type KanbanVirtualizationOptions, 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, Toaster, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n };
1082
+ 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, 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 KanbanRenderColumnContext, type KanbanVirtualizationOptions, 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, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n, useTipCard };
package/dist/index.d.ts CHANGED
@@ -784,7 +784,7 @@ interface CropperProps {
784
784
  }
785
785
  declare function Cropper({ onOpenChange, open, previewUrl, onApply, onCancelCrop, rounded, portal, }: CropperProps): react_jsx_runtime.JSX.Element;
786
786
 
787
- interface ProfileImageProps extends Pick<FileUploadOptions, 'maxFiles'> {
787
+ interface ProfileImageProps extends Omit<FileUploadOptions, 'maxSize'> {
788
788
  maxSizeMB?: number;
789
789
  onError?: (errors: {
790
790
  file?: File | FileMetadata;
@@ -800,7 +800,7 @@ interface ProfileImageProps extends Pick<FileUploadOptions, 'maxFiles'> {
800
800
  icon?: React__default.JSX.Element;
801
801
  }
802
802
  declare const ProfileImage: {
803
- ({ maxSizeMB, subtitle, onError, maxFiles, onRemove, image, cropperProps, onChange, size, icon, }: ProfileImageProps): react_jsx_runtime.JSX.Element;
803
+ ({ maxSizeMB, subtitle, onError, maxFiles, accept, onRemove, image, cropperProps, onChange, size, icon, }: ProfileImageProps): react_jsx_runtime.JSX.Element;
804
804
  displayName: string;
805
805
  };
806
806
 
@@ -962,6 +962,53 @@ interface KanbanCardProps extends HTMLAttributes<HTMLDivElement> {
962
962
  declare const KanbanCard: React$1.ForwardRefExoticComponent<KanbanCardProps & React$1.RefAttributes<HTMLDivElement>>;
963
963
  declare const KanbanColumnDragHandle: React$1.ForwardRefExoticComponent<React$1.ButtonHTMLAttributes<HTMLButtonElement> & React$1.RefAttributes<HTMLButtonElement>>;
964
964
 
965
+ declare const TipCard: ({ children, looping, }: PropsWithChildren<{
966
+ looping?: boolean;
967
+ }>) => react_jsx_runtime.JSX.Element;
968
+
969
+ declare const TipCardItem: {
970
+ ({ ["data-tip-card-item-order" as keyof React.HTMLAttributes<HTMLDivElement>]: order, children, ...props }: PropsWithChildren<React__default.HTMLAttributes<HTMLDivElement>>): react_jsx_runtime.JSX.Element;
971
+ displayName: string;
972
+ };
973
+
974
+ interface TipCardContextType {
975
+ registeredTipsMap: Map<string, boolean>;
976
+ currentTipOrder: number;
977
+ isCarouselMode: boolean;
978
+ looping: boolean;
979
+ nextTip: () => void;
980
+ previousTip: () => void;
981
+ registerTip: (id: string) => void;
982
+ unregisterTip: (id: string) => void;
983
+ }
984
+ declare const TipCardProvider: ({ children, looping, }: PropsWithChildren<{
985
+ looping?: boolean;
986
+ }>) => react_jsx_runtime.JSX.Element;
987
+ declare const useTipCard: () => TipCardContextType;
988
+
989
+ declare const TipCardFooter: React__default.MemoExoticComponent<() => react_jsx_runtime.JSX.Element | null>;
990
+
991
+ declare const TipCardHeader: React__default.MemoExoticComponent<({ children, icon }: PropsWithChildren<{
992
+ icon?: React__default.ReactNode;
993
+ }>) => react_jsx_runtime.JSX.Element>;
994
+
995
+ declare const TipCardContent: ({ children }: PropsWithChildren) => react_jsx_runtime.JSX.Element;
996
+
997
+ declare enum TipCardMediaType {
998
+ image = "image",
999
+ video = "video"
1000
+ }
1001
+ interface TipCardMediaProps {
1002
+ type: keyof typeof TipCardMediaType;
1003
+ source?: string;
1004
+ alt?: string;
1005
+ children?: React__default.ReactNode;
1006
+ }
1007
+ declare const TipCardMedia: {
1008
+ ({ type, source, alt, children, }: TipCardMediaProps): react_jsx_runtime.JSX.Element;
1009
+ displayName: string;
1010
+ };
1011
+
965
1012
  interface Content {
966
1013
  /**
967
1014
  * Path to `node_modules` where `flowbite-react` is installed
@@ -1032,4 +1079,4 @@ declare function useClickOutside<T extends HTMLElement>(refs: PossibleRefs<T>, o
1032
1079
 
1033
1080
  declare function useKeyPress(key: string, callback: VoidFunction): void;
1034
1081
 
1035
- 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, 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 KanbanRenderColumnContext, type KanbanVirtualizationOptions, 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, Toaster, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n };
1082
+ 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, 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 KanbanRenderColumnContext, type KanbanVirtualizationOptions, 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, Tooltip, type TooltipProps, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n, useTipCard };
package/dist/index.js CHANGED
@@ -6215,6 +6215,7 @@ var ProfileImage = ({
6215
6215
  subtitle,
6216
6216
  onError,
6217
6217
  maxFiles = Infinity,
6218
+ accept = "image/*",
6218
6219
  onRemove,
6219
6220
  image,
6220
6221
  cropperProps,
@@ -6251,6 +6252,7 @@ var ProfileImage = ({
6251
6252
  }
6252
6253
  ] = useFileUpload({
6253
6254
  maxFiles,
6255
+ accept,
6254
6256
  initialFiles: image ? [
6255
6257
  {
6256
6258
  id,
@@ -6262,7 +6264,6 @@ var ProfileImage = ({
6262
6264
  ] : [],
6263
6265
  multiple: false,
6264
6266
  maxSize: maxSize > 0 ? maxSize : void 0,
6265
- accept: "image/*",
6266
6267
  onFilesChange([file2]) {
6267
6268
  handleFileChange(file2?.file);
6268
6269
  }
@@ -7768,11 +7769,12 @@ function KanbanBoard({
7768
7769
  if (fromColumnId === targetColumnId) {
7769
7770
  nextIndex = clampInsertIndex(overData.index, originalLength - 1);
7770
7771
  } else {
7771
- const activeIndexInTarget = projectedTargetColumn?.cards.findIndex(
7772
- (card) => getCardId(card) === activeCardId
7772
+ const overCardId = getCardId(overData.card);
7773
+ const projectedOverIndex = projectedTargetColumn?.cards.findIndex(
7774
+ (card) => getCardId(card) === overCardId
7773
7775
  ) ?? -1;
7774
- const adjustedIndex = activeIndexInTarget !== -1 && activeIndexInTarget < overData.index ? overData.index - 1 : overData.index;
7775
- nextIndex = clampInsertIndex(adjustedIndex, originalLength);
7776
+ const resolvedOverIndex = projectedOverIndex !== -1 ? projectedOverIndex : overData.index;
7777
+ nextIndex = clampInsertIndex(resolvedOverIndex, originalLength);
7776
7778
  }
7777
7779
  }
7778
7780
  if (nextIndex === null) {
@@ -8096,6 +8098,232 @@ function KanbanBoard({
8096
8098
  }
8097
8099
  );
8098
8100
  }
8101
+ var TipCardContext = React31.createContext({
8102
+ registeredTipsMap: /* @__PURE__ */ new Map(),
8103
+ currentTipOrder: 0,
8104
+ isCarouselMode: false,
8105
+ looping: false,
8106
+ nextTip: () => void 0,
8107
+ previousTip: () => void 0,
8108
+ registerTip: () => void 0,
8109
+ unregisterTip: () => void 0
8110
+ });
8111
+ var TipCardProvider = ({
8112
+ children,
8113
+ looping = false
8114
+ }) => {
8115
+ const [currentTipOrder, setCurrentTipOrder] = React31.useState(0);
8116
+ const [registeredTipsMap, setRegisteredTipsMap] = React31.useState(/* @__PURE__ */ new Map());
8117
+ const isCarouselMode = React31.useMemo(() => {
8118
+ return registeredTipsMap.size > 1;
8119
+ }, [registeredTipsMap]);
8120
+ const registerTip = React31.useCallback((id) => {
8121
+ setRegisteredTipsMap((prev) => {
8122
+ const newMap = new Map(prev);
8123
+ newMap.set(id, true);
8124
+ return newMap;
8125
+ });
8126
+ }, []);
8127
+ const unregisterTip = React31.useCallback((id) => {
8128
+ setRegisteredTipsMap((prev) => {
8129
+ const newMap = new Map(prev);
8130
+ newMap.delete(id);
8131
+ return newMap;
8132
+ });
8133
+ }, []);
8134
+ const nextTip = React31.useCallback(() => {
8135
+ setCurrentTipOrder((prev) => {
8136
+ if (looping) {
8137
+ return (prev + 1) % registeredTipsMap.size;
8138
+ }
8139
+ return Math.min(prev + 1, registeredTipsMap.size - 1);
8140
+ });
8141
+ }, [registeredTipsMap.size, looping]);
8142
+ const previousTip = React31.useCallback(() => {
8143
+ setCurrentTipOrder((prev) => {
8144
+ if (looping) {
8145
+ return (prev - 1 + registeredTipsMap.size) % registeredTipsMap.size;
8146
+ }
8147
+ return Math.max(prev - 1, 0);
8148
+ });
8149
+ }, [registeredTipsMap.size, looping]);
8150
+ const contextValue = React31.useMemo(
8151
+ () => ({
8152
+ registerTip,
8153
+ unregisterTip,
8154
+ registeredTipsMap,
8155
+ currentTipOrder,
8156
+ nextTip,
8157
+ previousTip,
8158
+ isCarouselMode,
8159
+ looping
8160
+ }),
8161
+ [
8162
+ registerTip,
8163
+ unregisterTip,
8164
+ registeredTipsMap,
8165
+ currentTipOrder,
8166
+ nextTip,
8167
+ previousTip,
8168
+ isCarouselMode,
8169
+ looping
8170
+ ]
8171
+ );
8172
+ return /* @__PURE__ */ jsxRuntime.jsx(TipCardContext.Provider, { value: contextValue, children });
8173
+ };
8174
+ var useTipCard = () => {
8175
+ const context = React31.useContext(TipCardContext);
8176
+ if (!context) {
8177
+ throw new Error("useTipCard must be used within a TipCardProvider");
8178
+ }
8179
+ return context;
8180
+ };
8181
+ var TipCardFooter = React31.memo(() => {
8182
+ const {
8183
+ isCarouselMode,
8184
+ previousTip,
8185
+ nextTip,
8186
+ currentTipOrder,
8187
+ registeredTipsMap,
8188
+ looping
8189
+ } = useTipCard();
8190
+ if (isCarouselMode) {
8191
+ return /* @__PURE__ */ jsxRuntime.jsxs(Space, { size: "xs", direction: "row", children: [
8192
+ /* @__PURE__ */ jsxRuntime.jsx(
8193
+ Button,
8194
+ {
8195
+ variant: "ghost",
8196
+ onClick: previousTip,
8197
+ icon: true,
8198
+ "aria-label": "Previous tip",
8199
+ size: "sm",
8200
+ disabled: currentTipOrder === 0 && !looping,
8201
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, {})
8202
+ }
8203
+ ),
8204
+ /* @__PURE__ */ jsxRuntime.jsx(
8205
+ Button,
8206
+ {
8207
+ variant: "ghost",
8208
+ onClick: nextTip,
8209
+ icon: true,
8210
+ "aria-label": "Next tip",
8211
+ size: "sm",
8212
+ disabled: currentTipOrder === registeredTipsMap.size - 1 && !looping,
8213
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, {})
8214
+ }
8215
+ )
8216
+ ] });
8217
+ }
8218
+ return null;
8219
+ });
8220
+ TipCardFooter.displayName = "TipCardFooter";
8221
+ var TipCardItem = ({
8222
+ ["data-tip-card-item-order"]: order,
8223
+ children,
8224
+ ...props
8225
+ }) => {
8226
+ const id = React31.useId();
8227
+ const { registerTip, currentTipOrder } = useTipCard();
8228
+ React31.useEffect(() => {
8229
+ registerTip(id);
8230
+ }, [registerTip, id]);
8231
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: "nebula-ds w-full inline-flex h-full flex-col gap-6", children: currentTipOrder === Number(order) && children });
8232
+ };
8233
+ TipCardItem.displayName = "TipCardItem";
8234
+ var TipCardContent = ({ children }) => {
8235
+ const { currentTipOrder } = useTipCard();
8236
+ const calculateTransform = React31.useCallback(() => {
8237
+ return `translateX(-${currentTipOrder * 100}%)`;
8238
+ }, [currentTipOrder]);
8239
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds w-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
8240
+ "div",
8241
+ {
8242
+ className: "nebula-ds w-full whitespace-nowrap transition-transform duration-300",
8243
+ style: { transform: calculateTransform() },
8244
+ children: React31__namespace.default.Children.map(children, (child, i) => {
8245
+ if (React31__namespace.default.isValidElement(child) && child.type === TipCardItem) {
8246
+ return React31__namespace.default.cloneElement(child, {
8247
+ key: child.key,
8248
+ ["data-tip-card-item"]: true,
8249
+ ["data-tip-card-item-order"]: i.toString()
8250
+ });
8251
+ }
8252
+ return child;
8253
+ })
8254
+ }
8255
+ ) });
8256
+ };
8257
+ var TipCard = ({
8258
+ children,
8259
+ looping = false
8260
+ }) => {
8261
+ return /* @__PURE__ */ jsxRuntime.jsx(TipCardProvider, { looping, children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { paddingSize: "md", border: true, className: "nebula-ds flex flex-col gap-6", children: [
8262
+ /* @__PURE__ */ jsxRuntime.jsx(TipCardContent, { children }),
8263
+ /* @__PURE__ */ jsxRuntime.jsx(TipCardFooter, {})
8264
+ ] }) });
8265
+ };
8266
+ var TipCardHeader = React31.memo(
8267
+ ({ children, icon }) => {
8268
+ const { currentTipOrder, isCarouselMode, registeredTipsMap } = useTipCard();
8269
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds flex flex-col gap-3 items-start", children: [
8270
+ icon && /* @__PURE__ */ jsxRuntime.jsx(
8271
+ "div",
8272
+ {
8273
+ className: "size-10 rounded-full bg-tipCard-header-icon-background [&_svg]:size-5 [&_svg]:text-tipCard-header-icon-color flex items-center justify-center",
8274
+ children: icon
8275
+ }
8276
+ ),
8277
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds flex items-center justify-between relative w-full", children: [
8278
+ children,
8279
+ isCarouselMode && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds absolute right-0", children: /* @__PURE__ */ jsxRuntime.jsxs(Paragraph, { size: "sm", children: [
8280
+ currentTipOrder + 1,
8281
+ "-",
8282
+ registeredTipsMap.size
8283
+ ] }) })
8284
+ ] })
8285
+ ] });
8286
+ }
8287
+ );
8288
+ TipCardHeader.displayName = "TipCardHeader";
8289
+ var TipCardContent2 = ({ children }) => {
8290
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "nebula-ds flex flex-col gap-4 whitespace-normal [&_:is(h1,h2,h3,h4,h5,h6)]:mb-2", children });
8291
+ };
8292
+ var TipCardMediaType = /* @__PURE__ */ ((TipCardMediaType2) => {
8293
+ TipCardMediaType2["image"] = "image";
8294
+ TipCardMediaType2["video"] = "video";
8295
+ return TipCardMediaType2;
8296
+ })(TipCardMediaType || {});
8297
+ var TipCardMedia = ({
8298
+ type,
8299
+ source,
8300
+ alt,
8301
+ children
8302
+ }) => {
8303
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "nebula-ds w-full min-h-36 rounded-2xl overflow-hidden", children: [
8304
+ source && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: type === "image" /* image */ ? /* @__PURE__ */ jsxRuntime.jsx(
8305
+ "img",
8306
+ {
8307
+ src: source,
8308
+ alt,
8309
+ className: "nebula-ds w-full h-full object-contain"
8310
+ }
8311
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
8312
+ "video",
8313
+ {
8314
+ className: "nebula-ds w-full h-full object-contain",
8315
+ controls: true,
8316
+ src: source,
8317
+ children: [
8318
+ /* @__PURE__ */ jsxRuntime.jsx("source", { src: source, type: "video/mp4" }),
8319
+ "Your browser does not support the video tag."
8320
+ ]
8321
+ }
8322
+ ) }),
8323
+ children
8324
+ ] });
8325
+ };
8326
+ TipCardMedia.displayName = "TipCardMedia";
8099
8327
 
8100
8328
  // src/tailwind.ts
8101
8329
  function content({ base = "./" } = {}) {
@@ -8246,6 +8474,14 @@ exports.TabsList = TabsList;
8246
8474
  exports.TabsTrigger = TabsTrigger;
8247
8475
  exports.Tag = Tag;
8248
8476
  exports.TextArea = TextArea;
8477
+ exports.TipCard = TipCard;
8478
+ exports.TipCardContent = TipCardContent2;
8479
+ exports.TipCardFooter = TipCardFooter;
8480
+ exports.TipCardHeader = TipCardHeader;
8481
+ exports.TipCardItem = TipCardItem;
8482
+ exports.TipCardMedia = TipCardMedia;
8483
+ exports.TipCardMediaType = TipCardMediaType;
8484
+ exports.TipCardProvider = TipCardProvider;
8249
8485
  exports.Toaster = Toaster;
8250
8486
  exports.Tooltip = Tooltip;
8251
8487
  exports.alertVariants = alertVariants;
@@ -8268,3 +8504,4 @@ exports.useClickOutside = useClickOutside;
8268
8504
  exports.useFileUpload = useFileUpload;
8269
8505
  exports.useKeyPress = useKeyPress;
8270
8506
  exports.useNebulaI18n = useNebulaI18n;
8507
+ exports.useTipCard = useTipCard;
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React31 from 'react';
2
- import React31__default, { createContext, forwardRef, useMemo, useState, useEffect, useCallback, useContext, useRef, useId } from 'react';
2
+ import React31__default, { createContext, forwardRef, useMemo, useState, useEffect, memo, useContext, useCallback, useRef, useId } from 'react';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { extendTailwindMerge } from 'tailwind-merge';
@@ -7,7 +7,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
7
  import * as PopoverPrimitive from '@radix-ui/react-popover';
8
8
  import * as LabelPrimitive from '@radix-ui/react-label';
9
9
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
10
- import { ChevronRight, Check, Circle, CircleX, Eye, EyeOff, X, Minus, ClockIcon, ChevronsLeft, ChevronLeft, ChevronsRight, MoreHorizontal, ChevronDown, ChevronLeftIcon, ChevronDownIcon, ChevronRightIcon, CalendarIcon, ImageUpIcon, XIcon, MinusIcon, PlusIcon, UserIcon, LoaderCircleIcon, CheckIcon, PhoneIcon, FileTextIcon, FileAudioIcon, FileVideoIcon, Info, CircleCheckBig, InfoIcon, TriangleAlertIcon, CircleCheckBigIcon } from 'lucide-react';
10
+ import { ChevronRight, Check, Circle, CircleX, Eye, EyeOff, X, Minus, ClockIcon, ChevronLeftIcon, ChevronRightIcon, ChevronsLeft, ChevronLeft, ChevronsRight, MoreHorizontal, ChevronDown, ChevronDownIcon, CalendarIcon, ImageUpIcon, XIcon, MinusIcon, PlusIcon, UserIcon, LoaderCircleIcon, CheckIcon, PhoneIcon, FileTextIcon, FileAudioIcon, FileVideoIcon, Info, CircleCheckBig, InfoIcon, TriangleAlertIcon, CircleCheckBigIcon } from 'lucide-react';
11
11
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
12
12
  import Select, { components } from 'react-select';
13
13
  import Creatable from 'react-select/creatable';
@@ -6173,6 +6173,7 @@ var ProfileImage = ({
6173
6173
  subtitle,
6174
6174
  onError,
6175
6175
  maxFiles = Infinity,
6176
+ accept = "image/*",
6176
6177
  onRemove,
6177
6178
  image,
6178
6179
  cropperProps,
@@ -6209,6 +6210,7 @@ var ProfileImage = ({
6209
6210
  }
6210
6211
  ] = useFileUpload({
6211
6212
  maxFiles,
6213
+ accept,
6212
6214
  initialFiles: image ? [
6213
6215
  {
6214
6216
  id,
@@ -6220,7 +6222,6 @@ var ProfileImage = ({
6220
6222
  ] : [],
6221
6223
  multiple: false,
6222
6224
  maxSize: maxSize > 0 ? maxSize : void 0,
6223
- accept: "image/*",
6224
6225
  onFilesChange([file2]) {
6225
6226
  handleFileChange(file2?.file);
6226
6227
  }
@@ -7726,11 +7727,12 @@ function KanbanBoard({
7726
7727
  if (fromColumnId === targetColumnId) {
7727
7728
  nextIndex = clampInsertIndex(overData.index, originalLength - 1);
7728
7729
  } else {
7729
- const activeIndexInTarget = projectedTargetColumn?.cards.findIndex(
7730
- (card) => getCardId(card) === activeCardId
7730
+ const overCardId = getCardId(overData.card);
7731
+ const projectedOverIndex = projectedTargetColumn?.cards.findIndex(
7732
+ (card) => getCardId(card) === overCardId
7731
7733
  ) ?? -1;
7732
- const adjustedIndex = activeIndexInTarget !== -1 && activeIndexInTarget < overData.index ? overData.index - 1 : overData.index;
7733
- nextIndex = clampInsertIndex(adjustedIndex, originalLength);
7734
+ const resolvedOverIndex = projectedOverIndex !== -1 ? projectedOverIndex : overData.index;
7735
+ nextIndex = clampInsertIndex(resolvedOverIndex, originalLength);
7734
7736
  }
7735
7737
  }
7736
7738
  if (nextIndex === null) {
@@ -8054,6 +8056,232 @@ function KanbanBoard({
8054
8056
  }
8055
8057
  );
8056
8058
  }
8059
+ var TipCardContext = createContext({
8060
+ registeredTipsMap: /* @__PURE__ */ new Map(),
8061
+ currentTipOrder: 0,
8062
+ isCarouselMode: false,
8063
+ looping: false,
8064
+ nextTip: () => void 0,
8065
+ previousTip: () => void 0,
8066
+ registerTip: () => void 0,
8067
+ unregisterTip: () => void 0
8068
+ });
8069
+ var TipCardProvider = ({
8070
+ children,
8071
+ looping = false
8072
+ }) => {
8073
+ const [currentTipOrder, setCurrentTipOrder] = useState(0);
8074
+ const [registeredTipsMap, setRegisteredTipsMap] = useState(/* @__PURE__ */ new Map());
8075
+ const isCarouselMode = useMemo(() => {
8076
+ return registeredTipsMap.size > 1;
8077
+ }, [registeredTipsMap]);
8078
+ const registerTip = useCallback((id) => {
8079
+ setRegisteredTipsMap((prev) => {
8080
+ const newMap = new Map(prev);
8081
+ newMap.set(id, true);
8082
+ return newMap;
8083
+ });
8084
+ }, []);
8085
+ const unregisterTip = useCallback((id) => {
8086
+ setRegisteredTipsMap((prev) => {
8087
+ const newMap = new Map(prev);
8088
+ newMap.delete(id);
8089
+ return newMap;
8090
+ });
8091
+ }, []);
8092
+ const nextTip = useCallback(() => {
8093
+ setCurrentTipOrder((prev) => {
8094
+ if (looping) {
8095
+ return (prev + 1) % registeredTipsMap.size;
8096
+ }
8097
+ return Math.min(prev + 1, registeredTipsMap.size - 1);
8098
+ });
8099
+ }, [registeredTipsMap.size, looping]);
8100
+ const previousTip = useCallback(() => {
8101
+ setCurrentTipOrder((prev) => {
8102
+ if (looping) {
8103
+ return (prev - 1 + registeredTipsMap.size) % registeredTipsMap.size;
8104
+ }
8105
+ return Math.max(prev - 1, 0);
8106
+ });
8107
+ }, [registeredTipsMap.size, looping]);
8108
+ const contextValue = useMemo(
8109
+ () => ({
8110
+ registerTip,
8111
+ unregisterTip,
8112
+ registeredTipsMap,
8113
+ currentTipOrder,
8114
+ nextTip,
8115
+ previousTip,
8116
+ isCarouselMode,
8117
+ looping
8118
+ }),
8119
+ [
8120
+ registerTip,
8121
+ unregisterTip,
8122
+ registeredTipsMap,
8123
+ currentTipOrder,
8124
+ nextTip,
8125
+ previousTip,
8126
+ isCarouselMode,
8127
+ looping
8128
+ ]
8129
+ );
8130
+ return /* @__PURE__ */ jsx(TipCardContext.Provider, { value: contextValue, children });
8131
+ };
8132
+ var useTipCard = () => {
8133
+ const context = useContext(TipCardContext);
8134
+ if (!context) {
8135
+ throw new Error("useTipCard must be used within a TipCardProvider");
8136
+ }
8137
+ return context;
8138
+ };
8139
+ var TipCardFooter = memo(() => {
8140
+ const {
8141
+ isCarouselMode,
8142
+ previousTip,
8143
+ nextTip,
8144
+ currentTipOrder,
8145
+ registeredTipsMap,
8146
+ looping
8147
+ } = useTipCard();
8148
+ if (isCarouselMode) {
8149
+ return /* @__PURE__ */ jsxs(Space, { size: "xs", direction: "row", children: [
8150
+ /* @__PURE__ */ jsx(
8151
+ Button,
8152
+ {
8153
+ variant: "ghost",
8154
+ onClick: previousTip,
8155
+ icon: true,
8156
+ "aria-label": "Previous tip",
8157
+ size: "sm",
8158
+ disabled: currentTipOrder === 0 && !looping,
8159
+ children: /* @__PURE__ */ jsx(ChevronLeftIcon, {})
8160
+ }
8161
+ ),
8162
+ /* @__PURE__ */ jsx(
8163
+ Button,
8164
+ {
8165
+ variant: "ghost",
8166
+ onClick: nextTip,
8167
+ icon: true,
8168
+ "aria-label": "Next tip",
8169
+ size: "sm",
8170
+ disabled: currentTipOrder === registeredTipsMap.size - 1 && !looping,
8171
+ children: /* @__PURE__ */ jsx(ChevronRightIcon, {})
8172
+ }
8173
+ )
8174
+ ] });
8175
+ }
8176
+ return null;
8177
+ });
8178
+ TipCardFooter.displayName = "TipCardFooter";
8179
+ var TipCardItem = ({
8180
+ ["data-tip-card-item-order"]: order,
8181
+ children,
8182
+ ...props
8183
+ }) => {
8184
+ const id = useId();
8185
+ const { registerTip, currentTipOrder } = useTipCard();
8186
+ useEffect(() => {
8187
+ registerTip(id);
8188
+ }, [registerTip, id]);
8189
+ return /* @__PURE__ */ jsx("div", { ...props, className: "nebula-ds w-full inline-flex h-full flex-col gap-6", children: currentTipOrder === Number(order) && children });
8190
+ };
8191
+ TipCardItem.displayName = "TipCardItem";
8192
+ var TipCardContent = ({ children }) => {
8193
+ const { currentTipOrder } = useTipCard();
8194
+ const calculateTransform = useCallback(() => {
8195
+ return `translateX(-${currentTipOrder * 100}%)`;
8196
+ }, [currentTipOrder]);
8197
+ return /* @__PURE__ */ jsx("div", { className: "nebula-ds w-full overflow-hidden", children: /* @__PURE__ */ jsx(
8198
+ "div",
8199
+ {
8200
+ className: "nebula-ds w-full whitespace-nowrap transition-transform duration-300",
8201
+ style: { transform: calculateTransform() },
8202
+ children: React31__default.Children.map(children, (child, i) => {
8203
+ if (React31__default.isValidElement(child) && child.type === TipCardItem) {
8204
+ return React31__default.cloneElement(child, {
8205
+ key: child.key,
8206
+ ["data-tip-card-item"]: true,
8207
+ ["data-tip-card-item-order"]: i.toString()
8208
+ });
8209
+ }
8210
+ return child;
8211
+ })
8212
+ }
8213
+ ) });
8214
+ };
8215
+ var TipCard = ({
8216
+ children,
8217
+ looping = false
8218
+ }) => {
8219
+ return /* @__PURE__ */ jsx(TipCardProvider, { looping, children: /* @__PURE__ */ jsxs(Box, { paddingSize: "md", border: true, className: "nebula-ds flex flex-col gap-6", children: [
8220
+ /* @__PURE__ */ jsx(TipCardContent, { children }),
8221
+ /* @__PURE__ */ jsx(TipCardFooter, {})
8222
+ ] }) });
8223
+ };
8224
+ var TipCardHeader = memo(
8225
+ ({ children, icon }) => {
8226
+ const { currentTipOrder, isCarouselMode, registeredTipsMap } = useTipCard();
8227
+ return /* @__PURE__ */ jsxs("div", { className: "nebula-ds flex flex-col gap-3 items-start", children: [
8228
+ icon && /* @__PURE__ */ jsx(
8229
+ "div",
8230
+ {
8231
+ className: "size-10 rounded-full bg-tipCard-header-icon-background [&_svg]:size-5 [&_svg]:text-tipCard-header-icon-color flex items-center justify-center",
8232
+ children: icon
8233
+ }
8234
+ ),
8235
+ /* @__PURE__ */ jsxs("div", { className: "nebula-ds flex items-center justify-between relative w-full", children: [
8236
+ children,
8237
+ isCarouselMode && /* @__PURE__ */ jsx("div", { className: "nebula-ds absolute right-0", children: /* @__PURE__ */ jsxs(Paragraph, { size: "sm", children: [
8238
+ currentTipOrder + 1,
8239
+ "-",
8240
+ registeredTipsMap.size
8241
+ ] }) })
8242
+ ] })
8243
+ ] });
8244
+ }
8245
+ );
8246
+ TipCardHeader.displayName = "TipCardHeader";
8247
+ var TipCardContent2 = ({ children }) => {
8248
+ return /* @__PURE__ */ jsx("div", { className: "nebula-ds flex flex-col gap-4 whitespace-normal [&_:is(h1,h2,h3,h4,h5,h6)]:mb-2", children });
8249
+ };
8250
+ var TipCardMediaType = /* @__PURE__ */ ((TipCardMediaType2) => {
8251
+ TipCardMediaType2["image"] = "image";
8252
+ TipCardMediaType2["video"] = "video";
8253
+ return TipCardMediaType2;
8254
+ })(TipCardMediaType || {});
8255
+ var TipCardMedia = ({
8256
+ type,
8257
+ source,
8258
+ alt,
8259
+ children
8260
+ }) => {
8261
+ return /* @__PURE__ */ jsxs("div", { className: "nebula-ds w-full min-h-36 rounded-2xl overflow-hidden", children: [
8262
+ source && /* @__PURE__ */ jsx(Fragment, { children: type === "image" /* image */ ? /* @__PURE__ */ jsx(
8263
+ "img",
8264
+ {
8265
+ src: source,
8266
+ alt,
8267
+ className: "nebula-ds w-full h-full object-contain"
8268
+ }
8269
+ ) : /* @__PURE__ */ jsxs(
8270
+ "video",
8271
+ {
8272
+ className: "nebula-ds w-full h-full object-contain",
8273
+ controls: true,
8274
+ src: source,
8275
+ children: [
8276
+ /* @__PURE__ */ jsx("source", { src: source, type: "video/mp4" }),
8277
+ "Your browser does not support the video tag."
8278
+ ]
8279
+ }
8280
+ ) }),
8281
+ children
8282
+ ] });
8283
+ };
8284
+ TipCardMedia.displayName = "TipCardMedia";
8057
8285
 
8058
8286
  // src/tailwind.ts
8059
8287
  function content({ base = "./" } = {}) {
@@ -8065,4 +8293,4 @@ var tailwind = {
8065
8293
  // plugin: () => require("tailwindcss")("node_modules/@nebulareact/dist/tailwind.config.js"),
8066
8294
  };
8067
8295
 
8068
- 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, 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, Label, Link, NebulaI18nProvider, Pagination, Paragraph, Popover, PopoverContent, PopoverTrigger, ProfileImage, RadioGroup2 as RadioGroup, RadioGroupItem, StyledSelect as Select, Separator2 as 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, Toaster, Tooltip, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages19 as messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n };
8296
+ 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, 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, Label, Link, NebulaI18nProvider, Pagination, Paragraph, Popover, PopoverContent, PopoverTrigger, ProfileImage, RadioGroup2 as RadioGroup, RadioGroupItem, StyledSelect as Select, Separator2 as 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, Tooltip, alertVariants, badgeSizeEnum, badgeVariantEnum, buttonSizeEnum, buttonVariantEnum, buttonVariantsConfig, dateIsAvailable, formatBytes, getNebulaLanguage, localeByi18nKey, messages19 as messages, separatorVariants, setNebulaLanguage, tagVariantsEnum, tailwind, toast, useClickOutside, useFileUpload, useKeyPress, useNebulaI18n, useTipCard };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikatec/nebula-react",
3
- "version": "1.4.1-beta.2",
3
+ "version": "1.5.0-beta.1",
4
4
  "description": "React components for Nebula Design System",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -30,7 +30,7 @@
30
30
  "@babel/preset-react": "^7.26.3",
31
31
  "@babel/preset-typescript": "^7.27.0",
32
32
  "@ikatec/eslint-config": "*",
33
- "@ikatec/nebula-tokens": "1.3.0",
33
+ "@ikatec/nebula-tokens": "1.4.0-beta.1",
34
34
  "@ikatec/typescript-config": "*",
35
35
  "ts-node": "^10.9.2",
36
36
  "tsup": "^8.3.5",