shadcn-ui-react 0.3.3 → 0.3.5

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/README.md CHANGED
@@ -65,6 +65,7 @@ export default function App() {
65
65
  - `Dialog`
66
66
  - `Drawer`
67
67
  - `DropdownMenu`
68
+ - `Dropzone`
68
69
  - `HoverCard`
69
70
  - `Input`
70
71
  - `InputOtp`
@@ -289,6 +290,7 @@ const Example = () => {
289
290
  export default Example;
290
291
  ```
291
292
 
293
+
292
294
  ---
293
295
 
294
296
  ## 💅 Theming & Styling
package/dist/index.cjs CHANGED
@@ -158,6 +158,7 @@ __export(index_exports, {
158
158
  DropdownMenuSubContent: () => DropdownMenuSubContent,
159
159
  DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
160
160
  DropdownMenuTrigger: () => DropdownMenuTrigger,
161
+ Dropzone: () => Dropzone,
161
162
  FileUpload: () => FileUpload,
162
163
  Form: () => Form,
163
164
  FormControl: () => FormControl,
@@ -6673,10 +6674,7 @@ function SearchInput({
6673
6674
  const [searchTerm, setSearchTerm] = import_react34.default.useState(value);
6674
6675
  const [debouncedValue] = (0, import_use_debounce.useDebounce)(searchTerm, debounceTime);
6675
6676
  const handleSettingSearchParams = (0, import_react34.useCallback)((newSearchValue) => {
6676
- if (newSearchValue === "" || newSearchValue === void 0 || !newSearchValue) {
6677
- onSearch(newSearchValue);
6678
- return;
6679
- }
6677
+ onSearch(newSearchValue);
6680
6678
  }, []);
6681
6679
  import_react34.default.useEffect(() => {
6682
6680
  handleSettingSearchParams(debouncedValue);
@@ -7841,7 +7839,6 @@ function FileUpload({
7841
7839
  const { getRootProps, getInputProps } = (0, import_react_dropzone.useDropzone)({
7842
7840
  accept: "image/*",
7843
7841
  onDrop: (acceptedFiles) => {
7844
- console.log("files acceptedFiles=>", acceptedFiles);
7845
7842
  onUpdateFile(acceptedFiles);
7846
7843
  }
7847
7844
  });
@@ -7994,6 +7991,52 @@ function PaginationSection({
7994
7991
  ] })
7995
7992
  ] }) }) });
7996
7993
  }
7994
+
7995
+ // src/shared/dropzone.tsx
7996
+ var import_react_dropzone2 = require("react-dropzone");
7997
+ var import_jsx_runtime54 = require("react/jsx-runtime");
7998
+ function Dropzone({
7999
+ label,
8000
+ onChange,
8001
+ value,
8002
+ className,
8003
+ description = "Drag and drop some files here, or click to select files",
8004
+ descriptionActive = "Drop the files here ...",
8005
+ accept,
8006
+ options,
8007
+ descriptionClassName,
8008
+ dropzoneClassName,
8009
+ valueClassName,
8010
+ labelClassName
8011
+ }) {
8012
+ const { getRootProps, getInputProps, isDragActive } = (0, import_react_dropzone2.useDropzone)(__spreadValues({
8013
+ onDrop: (acceptedFiles) => {
8014
+ onChange(acceptedFiles);
8015
+ },
8016
+ accept
8017
+ }, options));
8018
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: cn("space-y-2", className), children: [
8019
+ label && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: cn("font-medium", labelClassName), children: label }),
8020
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
8021
+ "div",
8022
+ __spreadProps(__spreadValues({}, getRootProps()), {
8023
+ className: cn(
8024
+ "cursor-pointer rounded-lg border-2 border-dashed border-gray-300 p-6 text-center hover:border-gray-400",
8025
+ isDragActive && "border-blue-500 bg-blue-50",
8026
+ dropzoneClassName
8027
+ ),
8028
+ children: [
8029
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("input", __spreadValues({}, getInputProps())),
8030
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: cn("text-gray-600", descriptionClassName), children: isDragActive ? descriptionActive : description })
8031
+ ]
8032
+ })
8033
+ ),
8034
+ value && value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("ul", { className: cn("text-sm text-gray-700 space-y-1", valueClassName), children: value.map((file, idx) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("li", { children: [
8035
+ "\u2022 ",
8036
+ file.name
8037
+ ] }, idx)) })
8038
+ ] });
8039
+ }
7997
8040
  // Annotate the CommonJS export names for ESM import in node:
7998
8041
  0 && (module.exports = {
7999
8042
  Accordion,
@@ -8095,6 +8138,7 @@ function PaginationSection({
8095
8138
  DropdownMenuSubContent,
8096
8139
  DropdownMenuSubTrigger,
8097
8140
  DropdownMenuTrigger,
8141
+ Dropzone,
8098
8142
  FileUpload,
8099
8143
  Form,
8100
8144
  FormControl,
package/dist/index.d.cts CHANGED
@@ -42,6 +42,7 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
42
42
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
43
43
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
44
44
  import { ColumnDef } from '@tanstack/react-table';
45
+ import { Accept, DropzoneOptions } from 'react-dropzone';
45
46
  import { ClassValue } from 'clsx';
46
47
 
47
48
  declare const Accordion: React$1.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React$1.RefAttributes<HTMLDivElement>>;
@@ -755,14 +756,14 @@ type DataTableSkeletonProps = {
755
756
  };
756
757
  declare function DataTableSkeleton({ columnCount, rowCount, searchableColumnCount, filterableColumnCount, showViewOptions, }: DataTableSkeletonProps): react_jsx_runtime.JSX.Element;
757
758
 
758
- type TFileUploadProps = {
759
+ type TFileUploadProps$1 = {
759
760
  label?: string;
760
761
  onChange: (value: File[]) => void;
761
762
  value: File[];
762
763
  className?: string;
763
764
  classNameContent?: string;
764
765
  };
765
- declare function FileUpload({ onChange, value, label, className, classNameContent, }: TFileUploadProps): react_jsx_runtime.JSX.Element;
766
+ declare function FileUpload({ onChange, value, label, className, classNameContent, }: TFileUploadProps$1): react_jsx_runtime.JSX.Element;
766
767
  declare function ImagePreview({ file }: {
767
768
  file: File;
768
769
  }): react_jsx_runtime.JSX.Element | null;
@@ -786,6 +787,22 @@ type TPaginationSectionProps = {
786
787
  };
787
788
  declare function PaginationSection({ totalPosts, postsPerPage, currentPage, setCurrentPage, }: TPaginationSectionProps): react_jsx_runtime.JSX.Element;
788
789
 
790
+ type TFileUploadProps = {
791
+ label?: string;
792
+ description?: string;
793
+ descriptionActive?: string;
794
+ onChange: (value: File[]) => void;
795
+ value?: File[];
796
+ className?: string;
797
+ descriptionClassName?: string;
798
+ dropzoneClassName?: string;
799
+ valueClassName?: string;
800
+ labelClassName?: string;
801
+ accept?: Accept;
802
+ options?: DropzoneOptions;
803
+ };
804
+ declare function Dropzone({ label, onChange, value, className, description, descriptionActive, accept, options, descriptionClassName, dropzoneClassName, valueClassName, labelClassName, }: TFileUploadProps): react_jsx_runtime.JSX.Element;
805
+
789
806
  declare function cn(...inputs: ClassValue[]): string;
790
807
 
791
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertModal, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DataTableSkeleton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Heading, HoverCard, HoverCardContent, HoverCardTrigger, Icons, ImagePreview, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageHead, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationNextLast, PaginationPrevious, PaginationPreviousLast, PaginationSection, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, reducer, toast, toggleVariants, useFormField, useToast };
808
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertModal, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DataTableSkeleton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, FileUpload, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Heading, HoverCard, HoverCardContent, HoverCardTrigger, Icons, ImagePreview, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageHead, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationNextLast, PaginationPrevious, PaginationPreviousLast, PaginationSection, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, reducer, toast, toggleVariants, useFormField, useToast };
package/dist/index.d.ts CHANGED
@@ -42,6 +42,7 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
42
42
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
43
43
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
44
44
  import { ColumnDef } from '@tanstack/react-table';
45
+ import { Accept, DropzoneOptions } from 'react-dropzone';
45
46
  import { ClassValue } from 'clsx';
46
47
 
47
48
  declare const Accordion: React$1.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React$1.RefAttributes<HTMLDivElement>>;
@@ -755,14 +756,14 @@ type DataTableSkeletonProps = {
755
756
  };
756
757
  declare function DataTableSkeleton({ columnCount, rowCount, searchableColumnCount, filterableColumnCount, showViewOptions, }: DataTableSkeletonProps): react_jsx_runtime.JSX.Element;
757
758
 
758
- type TFileUploadProps = {
759
+ type TFileUploadProps$1 = {
759
760
  label?: string;
760
761
  onChange: (value: File[]) => void;
761
762
  value: File[];
762
763
  className?: string;
763
764
  classNameContent?: string;
764
765
  };
765
- declare function FileUpload({ onChange, value, label, className, classNameContent, }: TFileUploadProps): react_jsx_runtime.JSX.Element;
766
+ declare function FileUpload({ onChange, value, label, className, classNameContent, }: TFileUploadProps$1): react_jsx_runtime.JSX.Element;
766
767
  declare function ImagePreview({ file }: {
767
768
  file: File;
768
769
  }): react_jsx_runtime.JSX.Element | null;
@@ -786,6 +787,22 @@ type TPaginationSectionProps = {
786
787
  };
787
788
  declare function PaginationSection({ totalPosts, postsPerPage, currentPage, setCurrentPage, }: TPaginationSectionProps): react_jsx_runtime.JSX.Element;
788
789
 
790
+ type TFileUploadProps = {
791
+ label?: string;
792
+ description?: string;
793
+ descriptionActive?: string;
794
+ onChange: (value: File[]) => void;
795
+ value?: File[];
796
+ className?: string;
797
+ descriptionClassName?: string;
798
+ dropzoneClassName?: string;
799
+ valueClassName?: string;
800
+ labelClassName?: string;
801
+ accept?: Accept;
802
+ options?: DropzoneOptions;
803
+ };
804
+ declare function Dropzone({ label, onChange, value, className, description, descriptionActive, accept, options, descriptionClassName, dropzoneClassName, valueClassName, labelClassName, }: TFileUploadProps): react_jsx_runtime.JSX.Element;
805
+
789
806
  declare function cn(...inputs: ClassValue[]): string;
790
807
 
791
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertModal, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DataTableSkeleton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FileUpload, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Heading, HoverCard, HoverCardContent, HoverCardTrigger, Icons, ImagePreview, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageHead, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationNextLast, PaginationPrevious, PaginationPreviousLast, PaginationSection, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, reducer, toast, toggleVariants, useFormField, useToast };
808
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertModal, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DataTableSkeleton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, FileUpload, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Heading, HoverCard, HoverCardContent, HoverCardTrigger, Icons, ImagePreview, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageHead, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationNextLast, PaginationPrevious, PaginationPreviousLast, PaginationSection, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn, navigationMenuTriggerStyle, reducer, toast, toggleVariants, useFormField, useToast };
package/dist/index.js CHANGED
@@ -6465,10 +6465,7 @@ function SearchInput({
6465
6465
  const [searchTerm, setSearchTerm] = React53.useState(value);
6466
6466
  const [debouncedValue] = useDebounce(searchTerm, debounceTime);
6467
6467
  const handleSettingSearchParams = useCallback4((newSearchValue) => {
6468
- if (newSearchValue === "" || newSearchValue === void 0 || !newSearchValue) {
6469
- onSearch(newSearchValue);
6470
- return;
6471
- }
6468
+ onSearch(newSearchValue);
6472
6469
  }, []);
6473
6470
  React53.useEffect(() => {
6474
6471
  handleSettingSearchParams(debouncedValue);
@@ -7647,7 +7644,6 @@ function FileUpload({
7647
7644
  const { getRootProps, getInputProps } = useDropzone({
7648
7645
  accept: "image/*",
7649
7646
  onDrop: (acceptedFiles) => {
7650
- console.log("files acceptedFiles=>", acceptedFiles);
7651
7647
  onUpdateFile(acceptedFiles);
7652
7648
  }
7653
7649
  });
@@ -7800,6 +7796,52 @@ function PaginationSection({
7800
7796
  ] })
7801
7797
  ] }) }) });
7802
7798
  }
7799
+
7800
+ // src/shared/dropzone.tsx
7801
+ import { useDropzone as useDropzone2 } from "react-dropzone";
7802
+ import { jsx as jsx54, jsxs as jsxs28 } from "react/jsx-runtime";
7803
+ function Dropzone({
7804
+ label,
7805
+ onChange,
7806
+ value,
7807
+ className,
7808
+ description = "Drag and drop some files here, or click to select files",
7809
+ descriptionActive = "Drop the files here ...",
7810
+ accept,
7811
+ options,
7812
+ descriptionClassName,
7813
+ dropzoneClassName,
7814
+ valueClassName,
7815
+ labelClassName
7816
+ }) {
7817
+ const { getRootProps, getInputProps, isDragActive } = useDropzone2(__spreadValues({
7818
+ onDrop: (acceptedFiles) => {
7819
+ onChange(acceptedFiles);
7820
+ },
7821
+ accept
7822
+ }, options));
7823
+ return /* @__PURE__ */ jsxs28("div", { className: cn("space-y-2", className), children: [
7824
+ label && /* @__PURE__ */ jsx54("p", { className: cn("font-medium", labelClassName), children: label }),
7825
+ /* @__PURE__ */ jsxs28(
7826
+ "div",
7827
+ __spreadProps(__spreadValues({}, getRootProps()), {
7828
+ className: cn(
7829
+ "cursor-pointer rounded-lg border-2 border-dashed border-gray-300 p-6 text-center hover:border-gray-400",
7830
+ isDragActive && "border-blue-500 bg-blue-50",
7831
+ dropzoneClassName
7832
+ ),
7833
+ children: [
7834
+ /* @__PURE__ */ jsx54("input", __spreadValues({}, getInputProps())),
7835
+ /* @__PURE__ */ jsx54("p", { className: cn("text-gray-600", descriptionClassName), children: isDragActive ? descriptionActive : description })
7836
+ ]
7837
+ })
7838
+ ),
7839
+ value && value.length > 0 && /* @__PURE__ */ jsx54("ul", { className: cn("text-sm text-gray-700 space-y-1", valueClassName), children: value.map((file, idx) => /* @__PURE__ */ jsxs28("li", { children: [
7840
+ "\u2022 ",
7841
+ file.name
7842
+ ] }, idx)) })
7843
+ ] });
7844
+ }
7803
7845
  export {
7804
7846
  Accordion,
7805
7847
  AccordionContent,
@@ -7900,6 +7942,7 @@ export {
7900
7942
  DropdownMenuSubContent,
7901
7943
  DropdownMenuSubTrigger,
7902
7944
  DropdownMenuTrigger,
7945
+ Dropzone,
7903
7946
  FileUpload,
7904
7947
  Form,
7905
7948
  FormControl,
package/dist/style.css CHANGED
@@ -26,9 +26,14 @@
26
26
  --color-red-400: oklch(70.4% 0.191 22.216);
27
27
  --color-red-500: oklch(63.7% 0.237 25.331);
28
28
  --color-red-600: oklch(57.7% 0.245 27.325);
29
+ --color-blue-50: oklch(97% 0.014 254.604);
30
+ --color-blue-500: oklch(62.3% 0.214 259.815);
29
31
  --color-gray-100: oklch(96.7% 0.003 264.542);
30
32
  --color-gray-200: oklch(92.8% 0.006 264.531);
31
33
  --color-gray-300: oklch(87.2% 0.01 258.338);
34
+ --color-gray-400: oklch(70.7% 0.022 261.325);
35
+ --color-gray-600: oklch(44.6% 0.03 256.802);
36
+ --color-gray-700: oklch(37.3% 0.034 259.733);
32
37
  --color-black: #000;
33
38
  --color-white: #fff;
34
39
  --spacing: 0.25rem;
@@ -866,6 +871,9 @@
866
871
  --tw-border-style: dashed;
867
872
  border-style: dashed;
868
873
  }
874
+ .border-blue-500 {
875
+ border-color: var(--color-blue-500);
876
+ }
869
877
  .border-destructive {
870
878
  border-color: var(--destructive);
871
879
  }
@@ -875,6 +883,9 @@
875
883
  border-color: color-mix(in oklab, var(--destructive) 50%, transparent);
876
884
  }
877
885
  }
886
+ .border-gray-300 {
887
+ border-color: var(--color-gray-300);
888
+ }
878
889
  .border-input {
879
890
  border-color: var(--input);
880
891
  }
@@ -908,6 +919,9 @@
908
919
  background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
909
920
  }
910
921
  }
922
+ .bg-blue-50 {
923
+ background-color: var(--color-blue-50);
924
+ }
911
925
  .bg-border {
912
926
  background-color: var(--border);
913
927
  }
@@ -1154,6 +1168,12 @@
1154
1168
  .text-gray-100 {
1155
1169
  color: var(--color-gray-100);
1156
1170
  }
1171
+ .text-gray-600 {
1172
+ color: var(--color-gray-600);
1173
+ }
1174
+ .text-gray-700 {
1175
+ color: var(--color-gray-700);
1176
+ }
1157
1177
  .text-muted-foreground {
1158
1178
  color: var(--muted-foreground);
1159
1179
  }
@@ -1573,6 +1593,13 @@
1573
1593
  z-index: 20;
1574
1594
  }
1575
1595
  }
1596
+ .hover\:border-gray-400 {
1597
+ &:hover {
1598
+ @media (hover: hover) {
1599
+ border-color: var(--color-gray-400);
1600
+ }
1601
+ }
1602
+ }
1576
1603
  .hover\:bg-accent {
1577
1604
  &:hover {
1578
1605
  @media (hover: hover) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shadcn-ui-react",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "private": false,
5
5
  "author": "Bleker Cordova <bleker@gliyen.com>",
6
6
  "description": "A collection of components for building beautiful and accessible user interfaces with React and Tailwind CSS.",