@sustaina/shared-ui 1.15.0 → 1.16.0

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
@@ -609,6 +609,32 @@ declare const SuiTriangleDownIcon: (props: SVGProps<SVGSVGElement>) => react_jsx
609
609
 
610
610
  declare const SuiWarningIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
611
611
 
612
+ type ImageLoaderProps = {
613
+ src: string;
614
+ width: number;
615
+ quality?: number;
616
+ };
617
+ type ImageLoader = (props: ImageLoaderProps) => string;
618
+ interface ImageProps extends Omit<React$1.ImgHTMLAttributes<HTMLImageElement>, "src" | "width" | "height"> {
619
+ src: string;
620
+ alt: string;
621
+ width?: number | string;
622
+ height?: number | string;
623
+ fill?: boolean;
624
+ sizes?: string;
625
+ quality?: number;
626
+ priority?: boolean;
627
+ placeholder?: "empty" | "blur";
628
+ blurDataURL?: string;
629
+ loader?: ImageLoader;
630
+ unoptimized?: boolean;
631
+ wrapperClassName?: string;
632
+ objectFit?: React$1.CSSProperties["objectFit"];
633
+ objectPosition?: React$1.CSSProperties["objectPosition"];
634
+ onLoadingComplete?: (img: HTMLImageElement) => void;
635
+ }
636
+ declare const Image: React$1.ForwardRefExoticComponent<ImageProps & React$1.RefAttributes<HTMLImageElement>>;
637
+
612
638
  type InputPrimitiveProps = React$1.InputHTMLAttributes<HTMLInputElement>;
613
639
  declare const InputPrimitive: React$1.ForwardRefExoticComponent<InputPrimitiveProps & React$1.RefAttributes<HTMLInputElement>>;
614
640
  declare const inputVariants: (props?: ({
@@ -1266,4 +1292,4 @@ type UseTruncatedOptions<T> = {
1266
1292
  type UseTruncatedResult = boolean;
1267
1293
  declare const useTruncated: <T extends HTMLElement = any>({ elementRef, onChange, resizeDetectDelay }: UseTruncatedOptions<T>) => UseTruncatedResult;
1268
1294
 
1269
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvanceSearch, ArrowIcon, type Breakpoints, Button, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, type Column, type CroppedImagePayload, type CroppedImagePayloadWithBlobUrl, CropperModal, CropperModalError, type CropperModalErrorType, type CropperModalProps, DIALOG_ALERT_I18N_NAMESPACE, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSeparatorProps, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DatePicker, type DatePickerProps, type DebounceOptions, type DebouncedFunction, Dialog, DialogAlert, type DialogAlertI18nResource, type DialogAlertProps, DialogAlertProvider, type DialogAlertTemplates, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, type DialogVariant, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, type FieldSchema, type FieldType, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, Input, type InputProps, Label, List, ListContainer, type ListContainerProps, ListHeader, type ListHeaderProps, type ListProps, ListTable, type ListTableProps, LookupSelect, type LookupSelectOption, type LookupSelectProps, MonthPicker, type MonthPickerProps, _default as Navbar, type NavbarProps, NotFoundIcon, type Params, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PreventPageLeave, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, type RowClickType, type RowState, type ScrollInfo, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SorterProps, Spinner, type SpinnerProps, type StatusContentKey, SuiCalendarIcon, SuiCheckIcon, SuiDotsVerticalIcon, SuiEmptyDataIcon, SuiExpandIcon, SuiFilterIcon, SuiSettingIcon, SuiTriangleDownIcon, SuiWarningIcon, Switch, type TemplateKeys, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, index as UI, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, type UseTruncatedOptions, type UseTruncatedResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, selectValueToBoolean, spinnerVariants, stripNullishObject, throttle, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize, useSidebar, useTruncated };
1295
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvanceSearch, ArrowIcon, type Breakpoints, Button, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, type Column, type CroppedImagePayload, type CroppedImagePayloadWithBlobUrl, CropperModal, CropperModalError, type CropperModalErrorType, type CropperModalProps, DIALOG_ALERT_I18N_NAMESPACE, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSeparatorProps, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DatePicker, type DatePickerProps, type DebounceOptions, type DebouncedFunction, Dialog, DialogAlert, type DialogAlertI18nResource, type DialogAlertProps, DialogAlertProvider, type DialogAlertTemplates, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, type DialogVariant, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, type FieldSchema, type FieldType, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, Image, type ImageLoader, type ImageLoaderProps, type ImageProps, Input, type InputProps, Label, List, ListContainer, type ListContainerProps, ListHeader, type ListHeaderProps, type ListProps, ListTable, type ListTableProps, LookupSelect, type LookupSelectOption, type LookupSelectProps, MonthPicker, type MonthPickerProps, _default as Navbar, type NavbarProps, NotFoundIcon, type Params, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PreventPageLeave, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, type RowClickType, type RowState, type ScrollInfo, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SorterProps, Spinner, type SpinnerProps, type StatusContentKey, SuiCalendarIcon, SuiCheckIcon, SuiDotsVerticalIcon, SuiEmptyDataIcon, SuiExpandIcon, SuiFilterIcon, SuiSettingIcon, SuiTriangleDownIcon, SuiWarningIcon, Switch, type TemplateKeys, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, index as UI, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, type UseTruncatedOptions, type UseTruncatedResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, selectValueToBoolean, spinnerVariants, stripNullishObject, throttle, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize, useSidebar, useTruncated };
package/dist/index.d.ts CHANGED
@@ -609,6 +609,32 @@ declare const SuiTriangleDownIcon: (props: SVGProps<SVGSVGElement>) => react_jsx
609
609
 
610
610
  declare const SuiWarningIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
611
611
 
612
+ type ImageLoaderProps = {
613
+ src: string;
614
+ width: number;
615
+ quality?: number;
616
+ };
617
+ type ImageLoader = (props: ImageLoaderProps) => string;
618
+ interface ImageProps extends Omit<React$1.ImgHTMLAttributes<HTMLImageElement>, "src" | "width" | "height"> {
619
+ src: string;
620
+ alt: string;
621
+ width?: number | string;
622
+ height?: number | string;
623
+ fill?: boolean;
624
+ sizes?: string;
625
+ quality?: number;
626
+ priority?: boolean;
627
+ placeholder?: "empty" | "blur";
628
+ blurDataURL?: string;
629
+ loader?: ImageLoader;
630
+ unoptimized?: boolean;
631
+ wrapperClassName?: string;
632
+ objectFit?: React$1.CSSProperties["objectFit"];
633
+ objectPosition?: React$1.CSSProperties["objectPosition"];
634
+ onLoadingComplete?: (img: HTMLImageElement) => void;
635
+ }
636
+ declare const Image: React$1.ForwardRefExoticComponent<ImageProps & React$1.RefAttributes<HTMLImageElement>>;
637
+
612
638
  type InputPrimitiveProps = React$1.InputHTMLAttributes<HTMLInputElement>;
613
639
  declare const InputPrimitive: React$1.ForwardRefExoticComponent<InputPrimitiveProps & React$1.RefAttributes<HTMLInputElement>>;
614
640
  declare const inputVariants: (props?: ({
@@ -1266,4 +1292,4 @@ type UseTruncatedOptions<T> = {
1266
1292
  type UseTruncatedResult = boolean;
1267
1293
  declare const useTruncated: <T extends HTMLElement = any>({ elementRef, onChange, resizeDetectDelay }: UseTruncatedOptions<T>) => UseTruncatedResult;
1268
1294
 
1269
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvanceSearch, ArrowIcon, type Breakpoints, Button, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, type Column, type CroppedImagePayload, type CroppedImagePayloadWithBlobUrl, CropperModal, CropperModalError, type CropperModalErrorType, type CropperModalProps, DIALOG_ALERT_I18N_NAMESPACE, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSeparatorProps, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DatePicker, type DatePickerProps, type DebounceOptions, type DebouncedFunction, Dialog, DialogAlert, type DialogAlertI18nResource, type DialogAlertProps, DialogAlertProvider, type DialogAlertTemplates, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, type DialogVariant, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, type FieldSchema, type FieldType, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, Input, type InputProps, Label, List, ListContainer, type ListContainerProps, ListHeader, type ListHeaderProps, type ListProps, ListTable, type ListTableProps, LookupSelect, type LookupSelectOption, type LookupSelectProps, MonthPicker, type MonthPickerProps, _default as Navbar, type NavbarProps, NotFoundIcon, type Params, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PreventPageLeave, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, type RowClickType, type RowState, type ScrollInfo, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SorterProps, Spinner, type SpinnerProps, type StatusContentKey, SuiCalendarIcon, SuiCheckIcon, SuiDotsVerticalIcon, SuiEmptyDataIcon, SuiExpandIcon, SuiFilterIcon, SuiSettingIcon, SuiTriangleDownIcon, SuiWarningIcon, Switch, type TemplateKeys, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, index as UI, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, type UseTruncatedOptions, type UseTruncatedResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, selectValueToBoolean, spinnerVariants, stripNullishObject, throttle, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize, useSidebar, useTruncated };
1295
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdvanceSearch, ArrowIcon, type Breakpoints, Button, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, type Column, type CroppedImagePayload, type CroppedImagePayloadWithBlobUrl, CropperModal, CropperModalError, type CropperModalErrorType, type CropperModalProps, DIALOG_ALERT_I18N_NAMESPACE, DataTable, type DataTableChildrenKeyHandler, type DataTableColumnFilter, type DataTableColumnFilterProps, type DataTableColumnGrouping, type DataTableColumnOrdering, type DataTableColumnPinning, type DataTableColumnSeparatorProps, type DataTableColumnSorting, type DataTableColumnVisibility, type DataTableComponentProps, type DataTableFilterConfig, type DataTableFilters, type DataTableGlobalFilter, type DataTableHeaderCell, type DataTableProps, type DataTableRenderHeaderHandler, type DataTableRenderHeaderProps, type DataTableRenderRowHandler, type DataTableRenderRowProps, type DataTableRowCell, type DataTableRowClickHandler, type DataTableRowExpansion, type DataTableRowIdKeyHandler, type DataTableRowSelection, type DataTableScrollFetch, type DataTableStatusContent, type DatatableColumnResizing, DatePicker, type DatePickerProps, type DebounceOptions, type DebouncedFunction, Dialog, DialogAlert, type DialogAlertI18nResource, type DialogAlertProps, DialogAlertProvider, type DialogAlertTemplates, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogTitle, DialogTrigger, type DialogVariant, ErrorCompression, ErrorCreateCanvas, ErrorGeneratingBlob, ErrorInvalidSVG, ErrorSVGExceedSize, type FieldSchema, type FieldType, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, type GridPayload, GridSettingsModal, type GridSettingsModalProps, HeaderCell, type HeaderCellProps, Image, type ImageLoader, type ImageLoaderProps, type ImageProps, Input, type InputProps, Label, List, ListContainer, type ListContainerProps, ListHeader, type ListHeaderProps, type ListProps, ListTable, type ListTableProps, LookupSelect, type LookupSelectOption, type LookupSelectProps, MonthPicker, type MonthPickerProps, _default as Navbar, type NavbarProps, NotFoundIcon, type Params, Popover, PopoverAnchor, PopoverArrow, PopoverContent, PopoverTrigger, PreventPageLeave, RadioGroupItem, RadioGroupRoot, RadioLabel, RichText, type RowClickType, type RowState, type ScrollInfo, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLayout, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SorterProps, Spinner, type SpinnerProps, type StatusContentKey, SuiCalendarIcon, SuiCheckIcon, SuiDotsVerticalIcon, SuiEmptyDataIcon, SuiExpandIcon, SuiFilterIcon, SuiSettingIcon, SuiTriangleDownIcon, SuiWarningIcon, Switch, type TemplateKeys, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipProvider, TooltipTrigger, index as UI, type UseHoverResult, type UseMediaQueryOptions, type UseMediaQueryResult, type UsePreventPageLeaveOptions, type UseScreenSizeResult, type UseTruncatedOptions, type UseTruncatedResult, booleanToSelectValue, buttonVariants, cn, compareAlphanumeric, debounce, formatISODate, getDialogAlertControls, getDialogTemplates, inputVariants, isDefined, isEmptyObject, selectValueToBoolean, spinnerVariants, stripNullishObject, throttle, useFormField, useGridSettingsStore, useHover, useIntersectionObserver, useMediaQuery, usePreventPageLeave, usePreventPageLeaveStore, useScreenSize, useSidebar, useTruncated };
package/dist/index.js CHANGED
@@ -887,7 +887,7 @@ function SelectTrigger({
887
887
  "data-slot": "select-trigger",
888
888
  "data-size": size,
889
889
  className: cn(
890
- "border-input data-[placeholder]:text-gray-00 [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[state=open]:border-ring data-[state=open]:[&_svg]:text-foreground",
890
+ "border-input data-placeholder:text-gray-00 [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[state=open]:border-ring data-[state=open]:[&_svg]:text-foreground",
891
891
  className
892
892
  ),
893
893
  ...props,
@@ -909,7 +909,7 @@ function SelectContent({
909
909
  {
910
910
  "data-slot": "select-content",
911
911
  className: cn(
912
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
912
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
913
913
  position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
914
914
  className
915
915
  ),
@@ -922,7 +922,7 @@ function SelectContent({
922
922
  {
923
923
  className: cn(
924
924
  "m-1",
925
- position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
925
+ position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width) scroll-my-1"
926
926
  ),
927
927
  children
928
928
  }
@@ -952,7 +952,7 @@ function SelectItem({
952
952
  {
953
953
  "data-slot": "select-item",
954
954
  className: cn(
955
- "hover:bg-[#EAF5EE] hover:text-[#379A2A] [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 ",
955
+ "hover:bg-[#EAF5EE] hover:text-[#379A2A] [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 ",
956
956
  className
957
957
  ),
958
958
  ...props,
@@ -5775,6 +5775,233 @@ var useGridSettingsStore = zustand.create(
5775
5775
  })
5776
5776
  );
5777
5777
  var useGridSettingsStore_default = useGridSettingsStore;
5778
+ function LoadingOverlay({
5779
+ className,
5780
+ fullscreen = true,
5781
+ spinnerClassName,
5782
+ ...props
5783
+ }) {
5784
+ return /* @__PURE__ */ jsxRuntime.jsx(
5785
+ "div",
5786
+ {
5787
+ "data-slot": "loading-overlay",
5788
+ className: cn(
5789
+ fullscreen ? "fixed z-100" : "absolute z-10",
5790
+ "inset-0 flex items-center justify-center transition-opacity duration-300",
5791
+ className
5792
+ ),
5793
+ ...props,
5794
+ children: /* @__PURE__ */ jsxRuntime.jsx(Spinner, { className: cn("size-50", spinnerClassName) })
5795
+ }
5796
+ );
5797
+ }
5798
+ var DEVICE_SIZES = [320, 420, 640, 768, 1024, 1280, 1536, 1920];
5799
+ var IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];
5800
+ var defaultLoader = ({ src }) => src;
5801
+ function toNumber(value) {
5802
+ if (typeof value === "number") {
5803
+ return Number.isFinite(value) ? value : void 0;
5804
+ }
5805
+ if (typeof value === "string") {
5806
+ const parsed = parseInt(value, 10);
5807
+ return Number.isFinite(parsed) ? parsed : void 0;
5808
+ }
5809
+ return void 0;
5810
+ }
5811
+ function formatDimension(value) {
5812
+ if (typeof value === "number") {
5813
+ return `${value}px`;
5814
+ }
5815
+ return value;
5816
+ }
5817
+ function matchClosestSize(target) {
5818
+ for (const size of IMAGE_SIZES) {
5819
+ if (size >= target) {
5820
+ return size;
5821
+ }
5822
+ }
5823
+ return DEVICE_SIZES[DEVICE_SIZES.length - 1];
5824
+ }
5825
+ function getCandidateWidths({
5826
+ width,
5827
+ sizes,
5828
+ fill
5829
+ }) {
5830
+ if (fill || sizes) {
5831
+ return DEVICE_SIZES;
5832
+ }
5833
+ if (typeof width === "number" && width > 0) {
5834
+ const targets = /* @__PURE__ */ new Set([width, width * 2]);
5835
+ return Array.from(targets).map((target) => matchClosestSize(target)).sort((a, b) => a - b);
5836
+ }
5837
+ return DEVICE_SIZES;
5838
+ }
5839
+ var Image2 = React4__namespace.forwardRef(function Image3({
5840
+ src,
5841
+ alt,
5842
+ width,
5843
+ height,
5844
+ fill = false,
5845
+ sizes,
5846
+ quality = 75,
5847
+ priority = false,
5848
+ placeholder: placeholder2 = "empty",
5849
+ blurDataURL,
5850
+ loader = defaultLoader,
5851
+ unoptimized = false,
5852
+ wrapperClassName,
5853
+ className,
5854
+ objectFit,
5855
+ objectPosition,
5856
+ onLoadingComplete,
5857
+ style,
5858
+ ...imgProps
5859
+ }, ref) {
5860
+ const {
5861
+ loading: loadingProp,
5862
+ fetchPriority: fetchPriorityProp,
5863
+ decoding: decodingProp,
5864
+ onLoad: onLoadProp,
5865
+ ...restImgProps
5866
+ } = imgProps;
5867
+ const widthNumber = toNumber(width);
5868
+ const heightNumber = toNumber(height);
5869
+ React4__namespace.useEffect(() => {
5870
+ if (!fill && (!widthNumber || !heightNumber)) {
5871
+ console.warn(
5872
+ "[Image] When `fill` is false you should provide both `width` and `height` to prevent layout shifts."
5873
+ );
5874
+ }
5875
+ }, [fill, heightNumber, widthNumber]);
5876
+ const candidateWidths = React4__namespace.useMemo(
5877
+ () => getCandidateWidths({ width: widthNumber, sizes, fill }),
5878
+ [fill, sizes, widthNumber]
5879
+ );
5880
+ const largestWidth = candidateWidths[candidateWidths.length - 1] ?? widthNumber ?? DEVICE_SIZES[DEVICE_SIZES.length - 1];
5881
+ const computedSrc = React4__namespace.useMemo(() => {
5882
+ if (unoptimized) {
5883
+ return src;
5884
+ }
5885
+ return loader({ src, width: largestWidth, quality });
5886
+ }, [largestWidth, loader, quality, src, unoptimized]);
5887
+ const computedSrcSet = React4__namespace.useMemo(() => {
5888
+ if (unoptimized) {
5889
+ return void 0;
5890
+ }
5891
+ return candidateWidths.map((currentWidth) => `${loader({ src, width: currentWidth, quality })} ${currentWidth}w`).join(", ");
5892
+ }, [candidateWidths, loader, quality, src, unoptimized]);
5893
+ const sizesValue = sizes ?? (fill ? "100vw" : widthNumber ? `${widthNumber}px` : void 0);
5894
+ const [isLoaded, setIsLoaded] = React4__namespace.useState(false);
5895
+ const internalRef = React4__namespace.useRef(null);
5896
+ const setRefs = React4__namespace.useCallback(
5897
+ (node) => {
5898
+ internalRef.current = node;
5899
+ if (!ref) {
5900
+ return;
5901
+ }
5902
+ if (typeof ref === "function") {
5903
+ ref(node);
5904
+ } else {
5905
+ ref.current = node;
5906
+ }
5907
+ },
5908
+ [ref]
5909
+ );
5910
+ React4__namespace.useEffect(() => {
5911
+ const image = internalRef.current;
5912
+ if (!image) {
5913
+ return;
5914
+ }
5915
+ if (image.complete && image.naturalWidth > 0) {
5916
+ setIsLoaded(true);
5917
+ onLoadingComplete?.(image);
5918
+ } else {
5919
+ setIsLoaded(false);
5920
+ }
5921
+ }, [onLoadingComplete, src]);
5922
+ const handleLoad = React4__namespace.useCallback(
5923
+ (event) => {
5924
+ setIsLoaded(true);
5925
+ onLoadProp?.(event);
5926
+ onLoadingComplete?.(event.currentTarget);
5927
+ },
5928
+ [onLoadProp, onLoadingComplete]
5929
+ );
5930
+ const loading = priority ? "eager" : loadingProp ?? "lazy";
5931
+ const fetchPriority = priority ? "high" : fetchPriorityProp;
5932
+ const decoding = decodingProp ?? "async";
5933
+ const resolvedObjectFit = objectFit ?? (fill ? "cover" : void 0);
5934
+ const wrapperStyle = React4__namespace.useMemo(
5935
+ () => ({
5936
+ position: "relative",
5937
+ display: fill ? "block" : "inline-block",
5938
+ overflow: "hidden",
5939
+ width: fill ? "100%" : formatDimension(width) ?? void 0,
5940
+ height: fill ? "100%" : formatDimension(height) ?? void 0
5941
+ }),
5942
+ [fill, height, width]
5943
+ );
5944
+ const imageStyle = React4__namespace.useMemo(
5945
+ () => ({
5946
+ width: fill ? "100%" : formatDimension(width) ?? void 0,
5947
+ height: fill ? "100%" : formatDimension(height) ?? void 0,
5948
+ position: fill ? "absolute" : void 0,
5949
+ inset: fill ? 0 : void 0,
5950
+ objectFit: resolvedObjectFit,
5951
+ objectPosition,
5952
+ ...style
5953
+ }),
5954
+ [fill, height, objectPosition, resolvedObjectFit, style, width]
5955
+ );
5956
+ const shouldShowLoadingOverlay = placeholder2 === "blur";
5957
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5958
+ "span",
5959
+ {
5960
+ "data-slot": "image",
5961
+ className: cn("relative overflow-hidden", fill ? "block" : "inline-block", wrapperClassName),
5962
+ style: wrapperStyle,
5963
+ children: [
5964
+ shouldShowLoadingOverlay && /* @__PURE__ */ jsxRuntime.jsx(
5965
+ LoadingOverlay,
5966
+ {
5967
+ "aria-hidden": true,
5968
+ fullscreen: false,
5969
+ spinnerClassName: "size-6",
5970
+ className: cn(
5971
+ // "bg-white/75!",
5972
+ isLoaded ? "opacity-0 pointer-events-none" : "opacity-100"
5973
+ )
5974
+ }
5975
+ ),
5976
+ /* @__PURE__ */ jsxRuntime.jsx(
5977
+ "img",
5978
+ {
5979
+ ref: setRefs,
5980
+ className: cn(
5981
+ "block transition-opacity duration-300",
5982
+ fill && "absolute inset-0 size-full",
5983
+ shouldShowLoadingOverlay && !isLoaded ? "opacity-0" : "opacity-100",
5984
+ className
5985
+ ),
5986
+ src: computedSrc,
5987
+ srcSet: computedSrcSet,
5988
+ sizes: sizesValue,
5989
+ width: fill ? void 0 : widthNumber,
5990
+ height: fill ? void 0 : heightNumber,
5991
+ alt,
5992
+ loading,
5993
+ fetchPriority,
5994
+ decoding,
5995
+ onLoad: handleLoad,
5996
+ style: imageStyle,
5997
+ ...restImgProps
5998
+ }
5999
+ )
6000
+ ]
6001
+ }
6002
+ );
6003
+ });
6004
+ Image2.displayName = "Image";
5778
6005
  var ListTable = ({ onTableReady, children }) => {
5779
6006
  React4__namespace.useEffect(() => {
5780
6007
  if (onTableReady) {
@@ -8521,6 +8748,7 @@ exports.FormLabel = FormLabel;
8521
8748
  exports.FormMessage = FormMessage;
8522
8749
  exports.GridSettingsModal = GridSettingsModal_default;
8523
8750
  exports.HeaderCell = HeaderCell_default;
8751
+ exports.Image = Image2;
8524
8752
  exports.Input = Input;
8525
8753
  exports.Label = Label2;
8526
8754
  exports.List = List_default;