@ikatec/nebula-react 1.4.1-beta.3 → 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/ikatec-nebula-react-1.5.0-beta.1.tgz +0 -0
- package/dist/index.d.mts +50 -3
- package/dist/index.d.ts +50 -3
- package/dist/index.js +237 -1
- package/dist/index.mjs +231 -4
- package/package.json +2 -2
- package/dist/ikatec-nebula-react-1.4.1-beta.3.tgz +0 -0
|
Binary file
|
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
|
|
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
|
|
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
|
}
|
|
@@ -8097,6 +8098,232 @@ function KanbanBoard({
|
|
|
8097
8098
|
}
|
|
8098
8099
|
);
|
|
8099
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";
|
|
8100
8327
|
|
|
8101
8328
|
// src/tailwind.ts
|
|
8102
8329
|
function content({ base = "./" } = {}) {
|
|
@@ -8247,6 +8474,14 @@ exports.TabsList = TabsList;
|
|
|
8247
8474
|
exports.TabsTrigger = TabsTrigger;
|
|
8248
8475
|
exports.Tag = Tag;
|
|
8249
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;
|
|
8250
8485
|
exports.Toaster = Toaster;
|
|
8251
8486
|
exports.Tooltip = Tooltip;
|
|
8252
8487
|
exports.alertVariants = alertVariants;
|
|
@@ -8269,3 +8504,4 @@ exports.useClickOutside = useClickOutside;
|
|
|
8269
8504
|
exports.useFileUpload = useFileUpload;
|
|
8270
8505
|
exports.useKeyPress = useKeyPress;
|
|
8271
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,
|
|
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,
|
|
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
|
}
|
|
@@ -8055,6 +8056,232 @@ function KanbanBoard({
|
|
|
8055
8056
|
}
|
|
8056
8057
|
);
|
|
8057
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";
|
|
8058
8285
|
|
|
8059
8286
|
// src/tailwind.ts
|
|
8060
8287
|
function content({ base = "./" } = {}) {
|
|
@@ -8066,4 +8293,4 @@ var tailwind = {
|
|
|
8066
8293
|
// plugin: () => require("tailwindcss")("node_modules/@nebulareact/dist/tailwind.config.js"),
|
|
8067
8294
|
};
|
|
8068
8295
|
|
|
8069
|
-
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.
|
|
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.
|
|
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",
|
|
Binary file
|