hazo_ui 2.0.1 → 2.1.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/README.md +223 -0
- package/dist/index.cjs +263 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -1
- package/dist/index.d.ts +24 -1
- package/dist/index.js +253 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/example_component/index.tsx","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/calendar.tsx","../src/components/multi_filter_dialog/index.tsx","../src/components/ui/switch.tsx","../src/components/ui/label.tsx","../src/components/multi_sort_dialog/index.tsx"],"names":["React","jsx","React2","React3","React4","React5","jsxs","React7","CalendarIcon","CheckIcon","X","React8","Label","React9","Trash2","useState","useEffect","Plus","ChevronsUpDown"],"mappings":"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","file":"index.js","sourcesContent":["// Example component structure for hazo_ui library\n// This is a placeholder - replace with your actual components\nimport React from \"react\";\n\n/**\n * Example component demonstrating the structure for hazo_ui components\n * @param props - Component props\n * @returns React component\n */\nexport const ExampleComponent: React.FC<{\n children?: React.ReactNode;\n className?: string;\n}> = ({ children, className = \"\" }) => {\n return (\n <div className={`cls_example_component ${className}`}>\n {children}\n </div>\n );\n};\n\n","// Utility functions for hazo_ui component library\n// Provides className merging utility (cn function)\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges class names using clsx and tailwind-merge\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n","// Button component for hazo_ui library\n// Based on shadcn/ui button component\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n\n","// Dialog component for hazo_ui library\n// Based on shadcn/ui dialog component\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n\n","// Command component for hazo_ui library\n// Based on shadcn/ui command component (simplified version)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Command = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = \"Command\";\n\nconst CommandInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => (\n <input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md border border-input bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 px-3\",\n className\n )}\n {...props}\n />\n));\nCommandInput.displayName = \"CommandInput\";\n\nconst CommandList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\nCommandList.displayName = \"CommandList\";\n\nconst CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>((props, ref) => (\n <div\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst CommandGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"CommandGroup\";\n\nconst CommandItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n onSelect?: (value: string) => void;\n value?: string;\n }\n>(({ className, onSelect, value, ...props }, ref) => {\n const handleClick = () => {\n if (onSelect && value) {\n onSelect(value);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n onClick={handleClick}\n {...props}\n />\n );\n});\nCommandItem.displayName = \"CommandItem\";\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n};\n\n","// Popover component for hazo_ui library\n// Based on shadcn/ui popover component\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n\n","// Input component for hazo_ui library\n// Based on shadcn/ui input component\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n\n","// Select component for hazo_ui library\n// Based on shadcn/ui select component\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n\n","// Tooltip component for hazo_ui library\n// Based on shadcn/ui tooltip component\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n\n","// Calendar component for hazo_ui library\n// Based on shadcn/ui calendar component\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: () => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n\n","\"use client\";\n\n/**\n * Multi Filter Dialog Component\n * \n * Reusable component for multi-field filtering with different input types.\n * Allows users to select multiple fields for filtering with appropriate input controls.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { Calendar as CalendarComponent } from \"../ui/calendar\";\nimport { Filter, Trash2, Plus, Check as CheckIcon, ChevronsUpDown, Calendar as CalendarIcon, X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { format } from \"date-fns\";\n\nexport interface FilterField {\n value: string;\n label: string;\n type: 'text' | 'number' | 'combobox' | 'boolean' | 'date';\n textConfig?: {\n minLength?: number;\n maxLength?: number;\n };\n numberConfig?: {\n min?: number;\n max?: number;\n allowDecimal?: boolean;\n decimalLength?: number;\n };\n comboboxOptions?: Array<{ label: string; value: string }>;\n booleanLabels?: {\n trueLabel?: string;\n falseLabel?: string;\n };\n}\n\nexport interface FilterConfig {\n field: string;\n operator?: string; // For number fields: equals, not_equals, greater_than, less_than, greater_equal, less_equal\n value: any;\n}\n\ninterface MultiFilterDialogProps {\n availableFields: FilterField[];\n onFilterChange: (filterConfig: FilterConfig[]) => void;\n initialFilters?: FilterConfig[];\n}\n\ninterface FilterFieldItemProps {\n filterConfig: FilterConfig;\n fieldConfig: FilterField;\n onValueChange: (value: any) => void;\n onOperatorChange?: (operator: string) => void;\n onDelete: () => void;\n}\n\nfunction FilterFieldItem({\n filterConfig,\n fieldConfig,\n onValueChange,\n onOperatorChange,\n onDelete,\n}: FilterFieldItemProps) {\n const [isCalendarOpen, setIsCalendarOpen] = useState(false);\n\n const renderInput = () => {\n switch (fieldConfig.type) {\n case 'text':\n return (\n <Input\n type=\"text\"\n value={filterConfig.value || ''}\n onChange={(e) => {\n const value = e.target.value;\n if (fieldConfig.textConfig?.maxLength && value.length > fieldConfig.textConfig.maxLength) {\n return;\n }\n onValueChange(value);\n }}\n placeholder=\"Enter text...\"\n minLength={fieldConfig.textConfig?.minLength}\n maxLength={fieldConfig.textConfig?.maxLength}\n className=\"cls_filter_text_input w-full min-w-0\"\n />\n );\n\n case 'number':\n const numberOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n return (\n <div className=\"cls_number_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {numberOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Input\n type=\"number\"\n value={filterConfig.value !== undefined && filterConfig.value !== null ? filterConfig.value : ''}\n onChange={(e) => {\n const value = e.target.value;\n if (value === '') {\n onValueChange('');\n return;\n }\n let numValue = fieldConfig.numberConfig?.allowDecimal\n ? parseFloat(value)\n : parseInt(value, 10);\n \n if (isNaN(numValue)) {\n return;\n }\n\n // Apply decimal length restriction\n if (fieldConfig.numberConfig?.allowDecimal && fieldConfig.numberConfig?.decimalLength) {\n const decimalPlaces = value.split('.')[1]?.length || 0;\n if (decimalPlaces > fieldConfig.numberConfig.decimalLength) {\n return;\n }\n }\n\n // Apply min/max restrictions\n if (fieldConfig.numberConfig?.min !== undefined && numValue < fieldConfig.numberConfig.min) {\n numValue = fieldConfig.numberConfig.min;\n }\n if (fieldConfig.numberConfig?.max !== undefined && numValue > fieldConfig.numberConfig.max) {\n numValue = fieldConfig.numberConfig.max;\n }\n\n onValueChange(numValue);\n }}\n placeholder=\"Enter number...\"\n min={fieldConfig.numberConfig?.min}\n max={fieldConfig.numberConfig?.max}\n step={fieldConfig.numberConfig?.allowDecimal ? 0.01 : 1}\n className=\"cls_filter_number_input flex-1 min-w-0\"\n />\n </div>\n );\n\n case 'combobox':\n return (\n <Select\n value={filterConfig.value || ''}\n onValueChange={(value) => onValueChange(value)}\n >\n <SelectTrigger className=\"cls_filter_combobox_select w-full min-w-0\">\n <SelectValue placeholder=\"Select option...\" />\n </SelectTrigger>\n <SelectContent>\n {fieldConfig.comboboxOptions?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case 'boolean':\n const trueLabel = fieldConfig.booleanLabels?.trueLabel || 'On';\n const falseLabel = fieldConfig.booleanLabels?.falseLabel || 'Off';\n \n return (\n <Select\n value={filterConfig.value !== undefined && filterConfig.value !== null ? String(filterConfig.value) : ''}\n onValueChange={(value) => onValueChange(value === 'true')}\n >\n <SelectTrigger className=\"cls_filter_boolean_select w-full min-w-0\">\n <SelectValue placeholder=\"Select...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">{trueLabel}</SelectItem>\n <SelectItem value=\"false\">{falseLabel}</SelectItem>\n </SelectContent>\n </Select>\n );\n\n case 'date':\n const dateOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n const selectedDate = filterConfig.value \n ? (typeof filterConfig.value === 'string' ? new Date(filterConfig.value) : filterConfig.value)\n : undefined;\n\n return (\n <div className=\"cls_date_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {dateOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Popover open={isCalendarOpen} onOpenChange={setIsCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"cls_date_picker_trigger w-full justify-start text-left font-normal min-w-0\",\n !selectedDate && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"cls_calendar_icon mr-2 h-4 w-4 shrink-0\" />\n <span className=\"cls_date_text truncate\">\n {selectedDate ? (\n format(selectedDate, \"MMM d, yyyy\")\n ) : (\n \"Pick a date\"\n )}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_calendar_popover w-auto p-0\" align=\"start\">\n <CalendarComponent\n mode=\"single\"\n selected={selectedDate}\n onSelect={(date) => {\n onValueChange(date);\n setIsCalendarOpen(false);\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div className=\"cls_filter_field_item flex flex-col sm:flex-row items-start sm:items-center gap-3 p-3 border rounded-md bg-card\">\n <span className=\"cls_field_label text-sm font-medium min-w-[120px] sm:min-w-[100px] truncate\">{fieldConfig.label}</span>\n <div className=\"cls_field_input_container flex-1 min-w-0 w-full sm:w-auto\">\n {renderInput()}\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive shrink-0\"\n aria-label={`Remove ${fieldConfig.label} filter`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function MultiFilterDialog({\n availableFields,\n onFilterChange,\n initialFilters = [],\n}: MultiFilterDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [filterFields, setFilterFields] = useState<FilterConfig[]>(initialFilters);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n\n // Sync local state with initialFilters when dialog opens\n useEffect(() => {\n if (isOpen) {\n setFilterFields(initialFilters);\n }\n }, [isOpen, initialFilters]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (filterFields.some(ff => ff.field === fieldValue)) {\n return;\n }\n\n const fieldConfig = availableFields.find(af => af.value === fieldValue);\n if (!fieldConfig) {\n return;\n }\n\n let defaultValue: any = '';\n if (fieldConfig.type === 'boolean') {\n defaultValue = false;\n } else if (fieldConfig.type === 'number') {\n defaultValue = fieldConfig.numberConfig?.min || 0;\n } else if (fieldConfig.type === 'date') {\n defaultValue = new Date(); // Default to today\n }\n\n const newFilter: FilterConfig = {\n field: fieldValue,\n operator: (fieldConfig.type === 'number' || fieldConfig.type === 'date') ? 'equals' : undefined,\n value: defaultValue,\n };\n setFilterFields([...filterFields, newFilter]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setFilterFields(filterFields.filter(ff => ff.field !== fieldValue));\n };\n\n const handleValueChange = (fieldValue: string, value: any) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, value } : ff\n )\n );\n };\n\n const handleOperatorChange = (fieldValue: string, operator: string) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, operator } : ff\n )\n );\n };\n\n const handleApply = () => {\n // Call onFilterChange with the current filter configuration\n onFilterChange([...filterFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setFilterFields(initialFilters);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setFilterFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !filterFields.some(ff => ff.field === af.value)\n );\n\n // Get field config helper\n const getFieldConfig = (fieldValue: string): FilterField | undefined => {\n return availableFields.find(af => af.value === fieldValue);\n };\n\n // Check if there are active filters\n const hasActiveFilters = initialFilters.length > 0;\n\n // Format tooltip content showing active filters\n const tooltipContent = hasActiveFilters ? (\n <div className=\"cls_filter_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Filters:</div>\n {initialFilters.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n \n let displayValue = String(filterConfig.value);\n if (fieldConfig.type === 'boolean') {\n displayValue = filterConfig.value\n ? (fieldConfig.booleanLabels?.trueLabel || 'On')\n : (fieldConfig.booleanLabels?.falseLabel || 'Off');\n } else if (fieldConfig.type === 'combobox') {\n const option = fieldConfig.comboboxOptions?.find(opt => opt.value === filterConfig.value);\n displayValue = option?.label || displayValue;\n } else if (fieldConfig.type === 'date') {\n const dateValue = filterConfig.value instanceof Date \n ? filterConfig.value \n : new Date(filterConfig.value);\n if (!isNaN(dateValue.getTime())) {\n displayValue = format(dateValue, \"MMM d, yyyy\");\n }\n }\n \n const operatorLabel = filterConfig.operator\n ? filterConfig.operator.replace('_', ' ').replace(/\\b\\w/g, l => l.toUpperCase()) + ' '\n : '';\n \n return (\n <div key={filterConfig.field} className=\"cls_tooltip_item text-xs\">\n {fieldConfig.label}: {operatorLabel}{displayValue}\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"cls_filter_tooltip_content text-xs\">No active filters</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_filter_button\"\n aria-label=\"Open filter dialog\"\n >\n <Filter\n className={cn(\n \"cls_filter_icon h-4 w-4 mr-2\",\n hasActiveFilters && \"text-blue-600\"\n )}\n />\n Filter\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_filter_dialog_content max-w-lg w-full max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Filter Images</DialogTitle>\n <DialogDescription>\n Add multiple fields to filter by. Select a field and set its filter value.\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_filter_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Filter Fields List */}\n {filterFields.length > 0 ? (\n <div className=\"cls_filter_fields_list space-y-2\">\n {filterFields.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n\n return (\n <FilterFieldItem\n key={filterConfig.field}\n filterConfig={filterConfig}\n fieldConfig={fieldConfig}\n onValueChange={(value) => handleValueChange(filterConfig.field, value)}\n onOperatorChange={(operator) => handleOperatorChange(filterConfig.field, operator)}\n onDelete={() => handleDeleteField(filterConfig.field)}\n />\n );\n })}\n </div>\n ) : (\n <div className=\"cls_empty_filter_fields text-center py-8 text-sm text-muted-foreground\">\n No filter fields added. Click \"Add field\" to add filtering criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {filterFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <X className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Switch component for hazo_ui library\n// Based on shadcn/ui switch component\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n\n","// Label component for hazo_ui library\n// Based on shadcn/ui label component (placeholder - not used in MultiFilterDialog but included for completeness)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n );\n }\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n\n","\"use client\";\n\n/**\n * Multi Sort Dialog Component\n * \n * Reusable component for multi-field sorting with drag-and-drop reordering.\n * Allows users to select multiple fields for sorting, reorder them, and set ascending/descending direction.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Switch } from \"../ui/switch\";\nimport { Label } from \"../ui/label\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { ArrowUpDown, GripVertical, Trash2, Plus, Check as CheckIcon, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n useSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nexport interface SortField {\n value: string;\n label: string;\n}\n\nexport interface SortConfig {\n field: string;\n direction: 'asc' | 'desc';\n}\n\ninterface MultiSortDialogProps {\n availableFields: SortField[];\n onSortChange: (sortConfig: SortConfig[]) => void;\n initialSortFields?: SortConfig[];\n}\n\ninterface SortableSortFieldItemProps {\n sortConfig: SortConfig;\n fieldLabel: string;\n onDirectionChange: (direction: 'asc' | 'desc') => void;\n onDelete: () => void;\n}\n\nfunction SortableSortFieldItem({\n sortConfig,\n fieldLabel,\n onDirectionChange,\n onDelete,\n}: SortableSortFieldItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: sortConfig.field });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"cls_sortable_sort_field_item flex items-center gap-3 p-3 border rounded-md bg-card\"\n >\n <div\n {...attributes}\n {...listeners}\n className=\"cls_drag_handle cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground\"\n >\n <GripVertical className=\"cls_drag_icon h-4 w-4\" />\n </div>\n <span className=\"cls_field_label flex-1 text-sm font-medium\">{fieldLabel}</span>\n <div className=\"cls_direction_control flex items-center gap-2\">\n <Label htmlFor={`switch-${sortConfig.field}`} className=\"cls_direction_label text-xs text-muted-foreground\">\n {sortConfig.direction === 'asc' ? 'Ascending' : 'Descending'}\n </Label>\n <Switch\n id={`switch-${sortConfig.field}`}\n checked={sortConfig.direction === 'desc'}\n onCheckedChange={(checked) => onDirectionChange(checked ? 'desc' : 'asc')}\n aria-label={`Toggle sort direction for ${fieldLabel}`}\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive\"\n aria-label={`Remove ${fieldLabel} from sort`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function MultiSortDialog({\n availableFields,\n onSortChange,\n initialSortFields = [],\n}: MultiSortDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [sortFields, setSortFields] = useState<SortConfig[]>(initialSortFields);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n \n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n // Sync local state with initialSortFields when dialog opens\n useEffect(() => {\n if (isOpen) {\n setSortFields(initialSortFields);\n }\n }, [isOpen, initialSortFields]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (sortFields.some(sf => sf.field === fieldValue)) {\n return;\n }\n\n const newField: SortConfig = {\n field: fieldValue,\n direction: 'asc',\n };\n setSortFields([...sortFields, newField]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setSortFields(sortFields.filter(sf => sf.field !== fieldValue));\n };\n\n const handleDirectionChange = (fieldValue: string, direction: 'asc' | 'desc') => {\n setSortFields(\n sortFields.map(sf =>\n sf.field === fieldValue ? { ...sf, direction } : sf\n )\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const oldIndex = sortFields.findIndex(sf => sf.field === active.id);\n const newIndex = sortFields.findIndex(sf => sf.field === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n setSortFields(arrayMove(sortFields, oldIndex, newIndex));\n }\n };\n\n const handleApply = () => {\n // Call onSortChange with the current sort configuration\n onSortChange([...sortFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setSortFields(initialSortFields);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setSortFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !sortFields.some(sf => sf.field === af.value)\n );\n\n // Get field label helper\n const getFieldLabel = (fieldValue: string): string => {\n return availableFields.find(af => af.value === fieldValue)?.label || fieldValue;\n };\n\n // Check if there are active sort fields\n const hasActiveSorts = initialSortFields.length > 0;\n\n // Format tooltip content showing active sort fields\n const tooltipContent = hasActiveSorts ? (\n <div className=\"cls_sort_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Sorts:</div>\n {initialSortFields.map((sortConfig, index) => (\n <div key={sortConfig.field} className=\"cls_tooltip_item text-xs\">\n {index + 1}. {getFieldLabel(sortConfig.field)} ({sortConfig.direction === 'asc' ? 'Asc' : 'Desc'})\n </div>\n ))}\n </div>\n ) : (\n <div className=\"cls_sort_tooltip_content text-xs\">No active sorts</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_sort_button\"\n aria-label=\"Open sort dialog\"\n >\n <ArrowUpDown \n className={cn(\n \"cls_sort_icon h-4 w-4 mr-2\",\n hasActiveSorts && \"text-blue-600\"\n )} \n />\n Sort\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_sort_dialog_content max-w-lg\">\n <DialogHeader>\n <DialogTitle>Sort Images</DialogTitle>\n <DialogDescription>\n Add multiple fields to sort by and reorder them. Use the switch to toggle between ascending and descending.\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_sort_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Sort Fields List */}\n {sortFields.length > 0 ? (\n <div className=\"cls_sort_fields_list space-y-2\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={sortFields.map(sf => sf.field)}\n strategy={verticalListSortingStrategy}\n >\n {sortFields.map((sortConfig) => (\n <SortableSortFieldItem\n key={sortConfig.field}\n sortConfig={sortConfig}\n fieldLabel={getFieldLabel(sortConfig.field)}\n onDirectionChange={(direction) =>\n handleDirectionChange(sortConfig.field, direction)\n }\n onDelete={() => handleDeleteField(sortConfig.field)}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n ) : (\n <div className=\"cls_empty_sort_fields text-center py-8 text-sm text-muted-foreground\">\n No sort fields added. Click \"Add field\" to add sorting criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {sortFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <Trash2 className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/example_component/index.tsx","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/calendar.tsx","../src/components/multi_filter_dialog/index.tsx","../src/components/ui/switch.tsx","../src/components/ui/label.tsx","../src/components/multi_sort_dialog/index.tsx","../src/components/ui/radio-group.tsx","../src/components/multi_state_radio/index.tsx"],"names":["React","jsx","React2","React3","React4","React5","jsxs","React7","CalendarIcon","CheckIcon","X","React8","Label","React9","Trash2","useState","useEffect","Plus","ChevronsUpDown","React10","isSelected"],"mappings":"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","file":"index.js","sourcesContent":["// Example component structure for hazo_ui library\n// This is a placeholder - replace with your actual components\nimport React from \"react\";\n\n/**\n * Example component demonstrating the structure for hazo_ui components\n * @param props - Component props\n * @returns React component\n */\nexport const ExampleComponent: React.FC<{\n children?: React.ReactNode;\n className?: string;\n}> = ({ children, className = \"\" }) => {\n return (\n <div className={`cls_example_component ${className}`}>\n {children}\n </div>\n );\n};\n\n","// Utility functions for hazo_ui component library\n// Provides className merging utility (cn function)\n\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges class names using clsx and tailwind-merge\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n","// Button component for hazo_ui library\n// Based on shadcn/ui button component\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n\n","// Dialog component for hazo_ui library\n// Based on shadcn/ui dialog component\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n\n","// Command component for hazo_ui library\n// Based on shadcn/ui command component (simplified version)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Command = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n));\nCommand.displayName = \"Command\";\n\nconst CommandInput = React.forwardRef<\n HTMLInputElement,\n React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => (\n <input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md border border-input bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 px-3\",\n className\n )}\n {...props}\n />\n));\nCommandInput.displayName = \"CommandInput\";\n\nconst CommandList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\nCommandList.displayName = \"CommandList\";\n\nconst CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>((props, ref) => (\n <div\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst CommandGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nCommandGroup.displayName = \"CommandGroup\";\n\nconst CommandItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n onSelect?: (value: string) => void;\n value?: string;\n }\n>(({ className, onSelect, value, ...props }, ref) => {\n const handleClick = () => {\n if (onSelect && value) {\n onSelect(value);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n onClick={handleClick}\n {...props}\n />\n );\n});\nCommandItem.displayName = \"CommandItem\";\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n};\n\n","// Popover component for hazo_ui library\n// Based on shadcn/ui popover component\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n\n","// Input component for hazo_ui library\n// Based on shadcn/ui input component\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n\n","// Select component for hazo_ui library\n// Based on shadcn/ui select component\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n\n","// Tooltip component for hazo_ui library\n// Based on shadcn/ui tooltip component\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n\n","// Calendar component for hazo_ui library\n// Based on shadcn/ui calendar component\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: \"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20\",\n day: cn(\n \"h-9 w-9 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: () => <ChevronLeft className=\"h-4 w-4\" />,\n IconRight: () => <ChevronRight className=\"h-4 w-4\" />,\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n\n","\"use client\";\n\n/**\n * Multi Filter Dialog Component\n * \n * Reusable component for multi-field filtering with different input types.\n * Allows users to select multiple fields for filtering with appropriate input controls.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { Calendar as CalendarComponent } from \"../ui/calendar\";\nimport { Filter, Trash2, Plus, Check as CheckIcon, ChevronsUpDown, Calendar as CalendarIcon, X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { format } from \"date-fns\";\n\nexport interface FilterField {\n value: string;\n label: string;\n type: 'text' | 'number' | 'combobox' | 'boolean' | 'date';\n textConfig?: {\n minLength?: number;\n maxLength?: number;\n };\n numberConfig?: {\n min?: number;\n max?: number;\n allowDecimal?: boolean;\n decimalLength?: number;\n };\n comboboxOptions?: Array<{ label: string; value: string }>;\n booleanLabels?: {\n trueLabel?: string;\n falseLabel?: string;\n };\n}\n\nexport interface FilterConfig {\n field: string;\n operator?: string; // For number fields: equals, not_equals, greater_than, less_than, greater_equal, less_equal\n value: any;\n}\n\ninterface MultiFilterDialogProps {\n availableFields: FilterField[];\n onFilterChange: (filterConfig: FilterConfig[]) => void;\n initialFilters?: FilterConfig[];\n}\n\ninterface FilterFieldItemProps {\n filterConfig: FilterConfig;\n fieldConfig: FilterField;\n onValueChange: (value: any) => void;\n onOperatorChange?: (operator: string) => void;\n onDelete: () => void;\n}\n\nfunction FilterFieldItem({\n filterConfig,\n fieldConfig,\n onValueChange,\n onOperatorChange,\n onDelete,\n}: FilterFieldItemProps) {\n const [isCalendarOpen, setIsCalendarOpen] = useState(false);\n\n const renderInput = () => {\n switch (fieldConfig.type) {\n case 'text':\n return (\n <Input\n type=\"text\"\n value={filterConfig.value || ''}\n onChange={(e) => {\n const value = e.target.value;\n if (fieldConfig.textConfig?.maxLength && value.length > fieldConfig.textConfig.maxLength) {\n return;\n }\n onValueChange(value);\n }}\n placeholder=\"Enter text...\"\n minLength={fieldConfig.textConfig?.minLength}\n maxLength={fieldConfig.textConfig?.maxLength}\n className=\"cls_filter_text_input w-full min-w-0\"\n />\n );\n\n case 'number':\n const numberOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n return (\n <div className=\"cls_number_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {numberOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Input\n type=\"number\"\n value={filterConfig.value !== undefined && filterConfig.value !== null ? filterConfig.value : ''}\n onChange={(e) => {\n const value = e.target.value;\n if (value === '') {\n onValueChange('');\n return;\n }\n let numValue = fieldConfig.numberConfig?.allowDecimal\n ? parseFloat(value)\n : parseInt(value, 10);\n \n if (isNaN(numValue)) {\n return;\n }\n\n // Apply decimal length restriction\n if (fieldConfig.numberConfig?.allowDecimal && fieldConfig.numberConfig?.decimalLength) {\n const decimalPlaces = value.split('.')[1]?.length || 0;\n if (decimalPlaces > fieldConfig.numberConfig.decimalLength) {\n return;\n }\n }\n\n // Apply min/max restrictions\n if (fieldConfig.numberConfig?.min !== undefined && numValue < fieldConfig.numberConfig.min) {\n numValue = fieldConfig.numberConfig.min;\n }\n if (fieldConfig.numberConfig?.max !== undefined && numValue > fieldConfig.numberConfig.max) {\n numValue = fieldConfig.numberConfig.max;\n }\n\n onValueChange(numValue);\n }}\n placeholder=\"Enter number...\"\n min={fieldConfig.numberConfig?.min}\n max={fieldConfig.numberConfig?.max}\n step={fieldConfig.numberConfig?.allowDecimal ? 0.01 : 1}\n className=\"cls_filter_number_input flex-1 min-w-0\"\n />\n </div>\n );\n\n case 'combobox':\n return (\n <Select\n value={filterConfig.value || ''}\n onValueChange={(value) => onValueChange(value)}\n >\n <SelectTrigger className=\"cls_filter_combobox_select w-full min-w-0\">\n <SelectValue placeholder=\"Select option...\" />\n </SelectTrigger>\n <SelectContent>\n {fieldConfig.comboboxOptions?.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case 'boolean':\n const trueLabel = fieldConfig.booleanLabels?.trueLabel || 'On';\n const falseLabel = fieldConfig.booleanLabels?.falseLabel || 'Off';\n \n return (\n <Select\n value={filterConfig.value !== undefined && filterConfig.value !== null ? String(filterConfig.value) : ''}\n onValueChange={(value) => onValueChange(value === 'true')}\n >\n <SelectTrigger className=\"cls_filter_boolean_select w-full min-w-0\">\n <SelectValue placeholder=\"Select...\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">{trueLabel}</SelectItem>\n <SelectItem value=\"false\">{falseLabel}</SelectItem>\n </SelectContent>\n </Select>\n );\n\n case 'date':\n const dateOperators = [\n { value: 'equals', label: 'Equals' },\n { value: 'not_equals', label: 'Not Equals' },\n { value: 'greater_than', label: 'Greater Than' },\n { value: 'less_than', label: 'Less Than' },\n { value: 'greater_equal', label: 'Greater or Equal' },\n { value: 'less_equal', label: 'Less or Equal' },\n ];\n\n const selectedDate = filterConfig.value \n ? (typeof filterConfig.value === 'string' ? new Date(filterConfig.value) : filterConfig.value)\n : undefined;\n\n return (\n <div className=\"cls_date_filter_container flex flex-col sm:flex-row items-stretch sm:items-center gap-2 w-full\">\n <Select\n value={filterConfig.operator || 'equals'}\n onValueChange={(value) => onOperatorChange?.(value)}\n >\n <SelectTrigger className=\"cls_operator_select w-full sm:w-[140px] shrink-0\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {dateOperators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Popover open={isCalendarOpen} onOpenChange={setIsCalendarOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n \"cls_date_picker_trigger w-full justify-start text-left font-normal min-w-0\",\n !selectedDate && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"cls_calendar_icon mr-2 h-4 w-4 shrink-0\" />\n <span className=\"cls_date_text truncate\">\n {selectedDate ? (\n format(selectedDate, \"MMM d, yyyy\")\n ) : (\n \"Pick a date\"\n )}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_calendar_popover w-auto p-0\" align=\"start\">\n <CalendarComponent\n mode=\"single\"\n selected={selectedDate}\n onSelect={(date) => {\n onValueChange(date);\n setIsCalendarOpen(false);\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div className=\"cls_filter_field_item flex flex-col sm:flex-row items-start sm:items-center gap-3 p-3 border rounded-md bg-card\">\n <span className=\"cls_field_label text-sm font-medium min-w-[120px] sm:min-w-[100px] truncate\">{fieldConfig.label}</span>\n <div className=\"cls_field_input_container flex-1 min-w-0 w-full sm:w-auto\">\n {renderInput()}\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive shrink-0\"\n aria-label={`Remove ${fieldConfig.label} filter`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function MultiFilterDialog({\n availableFields,\n onFilterChange,\n initialFilters = [],\n}: MultiFilterDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [filterFields, setFilterFields] = useState<FilterConfig[]>(initialFilters);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n\n // Sync local state with initialFilters when dialog opens\n useEffect(() => {\n if (isOpen) {\n setFilterFields(initialFilters);\n }\n }, [isOpen, initialFilters]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (filterFields.some(ff => ff.field === fieldValue)) {\n return;\n }\n\n const fieldConfig = availableFields.find(af => af.value === fieldValue);\n if (!fieldConfig) {\n return;\n }\n\n let defaultValue: any = '';\n if (fieldConfig.type === 'boolean') {\n defaultValue = false;\n } else if (fieldConfig.type === 'number') {\n defaultValue = fieldConfig.numberConfig?.min || 0;\n } else if (fieldConfig.type === 'date') {\n defaultValue = new Date(); // Default to today\n }\n\n const newFilter: FilterConfig = {\n field: fieldValue,\n operator: (fieldConfig.type === 'number' || fieldConfig.type === 'date') ? 'equals' : undefined,\n value: defaultValue,\n };\n setFilterFields([...filterFields, newFilter]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setFilterFields(filterFields.filter(ff => ff.field !== fieldValue));\n };\n\n const handleValueChange = (fieldValue: string, value: any) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, value } : ff\n )\n );\n };\n\n const handleOperatorChange = (fieldValue: string, operator: string) => {\n setFilterFields(\n filterFields.map(ff =>\n ff.field === fieldValue ? { ...ff, operator } : ff\n )\n );\n };\n\n const handleApply = () => {\n // Call onFilterChange with the current filter configuration\n onFilterChange([...filterFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setFilterFields(initialFilters);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setFilterFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !filterFields.some(ff => ff.field === af.value)\n );\n\n // Get field config helper\n const getFieldConfig = (fieldValue: string): FilterField | undefined => {\n return availableFields.find(af => af.value === fieldValue);\n };\n\n // Check if there are active filters\n const hasActiveFilters = initialFilters.length > 0;\n\n // Format tooltip content showing active filters\n const tooltipContent = hasActiveFilters ? (\n <div className=\"cls_filter_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Filters:</div>\n {initialFilters.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n \n let displayValue = String(filterConfig.value);\n if (fieldConfig.type === 'boolean') {\n displayValue = filterConfig.value\n ? (fieldConfig.booleanLabels?.trueLabel || 'On')\n : (fieldConfig.booleanLabels?.falseLabel || 'Off');\n } else if (fieldConfig.type === 'combobox') {\n const option = fieldConfig.comboboxOptions?.find(opt => opt.value === filterConfig.value);\n displayValue = option?.label || displayValue;\n } else if (fieldConfig.type === 'date') {\n const dateValue = filterConfig.value instanceof Date \n ? filterConfig.value \n : new Date(filterConfig.value);\n if (!isNaN(dateValue.getTime())) {\n displayValue = format(dateValue, \"MMM d, yyyy\");\n }\n }\n \n const operatorLabel = filterConfig.operator\n ? filterConfig.operator.replace('_', ' ').replace(/\\b\\w/g, l => l.toUpperCase()) + ' '\n : '';\n \n return (\n <div key={filterConfig.field} className=\"cls_tooltip_item text-xs\">\n {fieldConfig.label}: {operatorLabel}{displayValue}\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"cls_filter_tooltip_content text-xs\">No active filters</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_filter_button\"\n aria-label=\"Open filter dialog\"\n >\n <Filter\n className={cn(\n \"cls_filter_icon h-4 w-4 mr-2\",\n hasActiveFilters && \"text-blue-600\"\n )}\n />\n Filter\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_filter_dialog_content max-w-lg w-full max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>Filter Images</DialogTitle>\n <DialogDescription>\n Add multiple fields to filter by. Select a field and set its filter value.\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_filter_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Filter Fields List */}\n {filterFields.length > 0 ? (\n <div className=\"cls_filter_fields_list space-y-2\">\n {filterFields.map((filterConfig) => {\n const fieldConfig = getFieldConfig(filterConfig.field);\n if (!fieldConfig) return null;\n\n return (\n <FilterFieldItem\n key={filterConfig.field}\n filterConfig={filterConfig}\n fieldConfig={fieldConfig}\n onValueChange={(value) => handleValueChange(filterConfig.field, value)}\n onOperatorChange={(operator) => handleOperatorChange(filterConfig.field, operator)}\n onDelete={() => handleDeleteField(filterConfig.field)}\n />\n );\n })}\n </div>\n ) : (\n <div className=\"cls_empty_filter_fields text-center py-8 text-sm text-muted-foreground\">\n No filter fields added. Click \"Add field\" to add filtering criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {filterFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <X className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Switch component for hazo_ui library\n// Based on shadcn/ui switch component\nimport * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n\n","// Label component for hazo_ui library\n// Based on shadcn/ui label component (placeholder - not used in MultiFilterDialog but included for completeness)\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n );\n }\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n\n","\"use client\";\n\n/**\n * Multi Sort Dialog Component\n * \n * Reusable component for multi-field sorting with drag-and-drop reordering.\n * Allows users to select multiple fields for sorting, reorder them, and set ascending/descending direction.\n */\n\nimport { useState, useEffect } from 'react';\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Switch } from \"../ui/switch\";\nimport { Label } from \"../ui/label\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { ArrowUpDown, GripVertical, Trash2, Plus, Check as CheckIcon, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n useSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nexport interface SortField {\n value: string;\n label: string;\n}\n\nexport interface SortConfig {\n field: string;\n direction: 'asc' | 'desc';\n}\n\ninterface MultiSortDialogProps {\n availableFields: SortField[];\n onSortChange: (sortConfig: SortConfig[]) => void;\n initialSortFields?: SortConfig[];\n}\n\ninterface SortableSortFieldItemProps {\n sortConfig: SortConfig;\n fieldLabel: string;\n onDirectionChange: (direction: 'asc' | 'desc') => void;\n onDelete: () => void;\n}\n\nfunction SortableSortFieldItem({\n sortConfig,\n fieldLabel,\n onDirectionChange,\n onDelete,\n}: SortableSortFieldItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: sortConfig.field });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className=\"cls_sortable_sort_field_item flex items-center gap-3 p-3 border rounded-md bg-card\"\n >\n <div\n {...attributes}\n {...listeners}\n className=\"cls_drag_handle cursor-grab active:cursor-grabbing text-muted-foreground hover:text-foreground\"\n >\n <GripVertical className=\"cls_drag_icon h-4 w-4\" />\n </div>\n <span className=\"cls_field_label flex-1 text-sm font-medium\">{fieldLabel}</span>\n <div className=\"cls_direction_control flex items-center gap-2\">\n <Label htmlFor={`switch-${sortConfig.field}`} className=\"cls_direction_label text-xs text-muted-foreground\">\n {sortConfig.direction === 'asc' ? 'Ascending' : 'Descending'}\n </Label>\n <Switch\n id={`switch-${sortConfig.field}`}\n checked={sortConfig.direction === 'desc'}\n onCheckedChange={(checked) => onDirectionChange(checked ? 'desc' : 'asc')}\n aria-label={`Toggle sort direction for ${fieldLabel}`}\n />\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDelete}\n className=\"cls_delete_btn h-8 w-8 p-0 text-destructive hover:text-destructive\"\n aria-label={`Remove ${fieldLabel} from sort`}\n >\n <Trash2 className=\"cls_delete_icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport function MultiSortDialog({\n availableFields,\n onSortChange,\n initialSortFields = [],\n}: MultiSortDialogProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [sortFields, setSortFields] = useState<SortConfig[]>(initialSortFields);\n const [isComboboxOpen, setIsComboboxOpen] = useState(false);\n \n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n // Sync local state with initialSortFields when dialog opens\n useEffect(() => {\n if (isOpen) {\n setSortFields(initialSortFields);\n }\n }, [isOpen, initialSortFields]);\n\n const handleAddField = (fieldValue: string) => {\n // Check if field is already added\n if (sortFields.some(sf => sf.field === fieldValue)) {\n return;\n }\n\n const newField: SortConfig = {\n field: fieldValue,\n direction: 'asc',\n };\n setSortFields([...sortFields, newField]);\n setIsComboboxOpen(false);\n };\n\n const handleDeleteField = (fieldValue: string) => {\n setSortFields(sortFields.filter(sf => sf.field !== fieldValue));\n };\n\n const handleDirectionChange = (fieldValue: string, direction: 'asc' | 'desc') => {\n setSortFields(\n sortFields.map(sf =>\n sf.field === fieldValue ? { ...sf, direction } : sf\n )\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (!over || active.id === over.id) {\n return;\n }\n\n const oldIndex = sortFields.findIndex(sf => sf.field === active.id);\n const newIndex = sortFields.findIndex(sf => sf.field === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n setSortFields(arrayMove(sortFields, oldIndex, newIndex));\n }\n };\n\n const handleApply = () => {\n // Call onSortChange with the current sort configuration\n onSortChange([...sortFields]);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setSortFields(initialSortFields);\n setIsOpen(false);\n };\n\n const handleClearAll = () => {\n setSortFields([]);\n };\n\n // Get available fields that haven't been added yet\n const availableFieldsToAdd = availableFields.filter(\n af => !sortFields.some(sf => sf.field === af.value)\n );\n\n // Get field label helper\n const getFieldLabel = (fieldValue: string): string => {\n return availableFields.find(af => af.value === fieldValue)?.label || fieldValue;\n };\n\n // Check if there are active sort fields\n const hasActiveSorts = initialSortFields.length > 0;\n\n // Format tooltip content showing active sort fields\n const tooltipContent = hasActiveSorts ? (\n <div className=\"cls_sort_tooltip_content space-y-1\">\n <div className=\"cls_tooltip_title text-xs font-semibold mb-1\">Active Sorts:</div>\n {initialSortFields.map((sortConfig, index) => (\n <div key={sortConfig.field} className=\"cls_tooltip_item text-xs\">\n {index + 1}. {getFieldLabel(sortConfig.field)} ({sortConfig.direction === 'asc' ? 'Asc' : 'Desc'})\n </div>\n ))}\n </div>\n ) : (\n <div className=\"cls_sort_tooltip_content text-xs\">No active sorts</div>\n );\n\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"cls_sort_button\"\n aria-label=\"Open sort dialog\"\n >\n <ArrowUpDown \n className={cn(\n \"cls_sort_icon h-4 w-4 mr-2\",\n hasActiveSorts && \"text-blue-600\"\n )} \n />\n Sort\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>\n {tooltipContent}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <DialogContent className=\"cls_sort_dialog_content max-w-lg\">\n <DialogHeader>\n <DialogTitle>Sort Images</DialogTitle>\n <DialogDescription>\n Add multiple fields to sort by and reorder them. Use the switch to toggle between ascending and descending.\n </DialogDescription>\n </DialogHeader>\n <div className=\"cls_sort_dialog_body space-y-4 py-4\">\n {/* Add Field Combobox */}\n <div className=\"cls_add_field_section\">\n <Popover open={isComboboxOpen} onOpenChange={setIsComboboxOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={isComboboxOpen}\n className=\"cls_add_field_combobox w-full justify-between\"\n >\n <div className=\"cls_combobox_content flex items-center\">\n <Plus className=\"cls_plus_icon h-4 w-4 mr-2\" />\n <span>Add field</span>\n </div>\n <ChevronsUpDown className=\"cls_chevron_icon ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"cls_combobox_popover w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search fields...\" className=\"cls_command_input\" />\n <CommandList>\n {availableFieldsToAdd.length === 0 ? (\n <CommandEmpty>No fields found.</CommandEmpty>\n ) : (\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.label}\n onSelect={() => handleAddField(field.value)}\n className=\"cls_command_item\"\n >\n <CheckIcon\n className={cn(\n \"cls_check_icon mr-2 h-4 w-4\",\n false ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {field.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Sort Fields List */}\n {sortFields.length > 0 ? (\n <div className=\"cls_sort_fields_list space-y-2\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={sortFields.map(sf => sf.field)}\n strategy={verticalListSortingStrategy}\n >\n {sortFields.map((sortConfig) => (\n <SortableSortFieldItem\n key={sortConfig.field}\n sortConfig={sortConfig}\n fieldLabel={getFieldLabel(sortConfig.field)}\n onDirectionChange={(direction) =>\n handleDirectionChange(sortConfig.field, direction)\n }\n onDelete={() => handleDeleteField(sortConfig.field)}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n ) : (\n <div className=\"cls_empty_sort_fields text-center py-8 text-sm text-muted-foreground\">\n No sort fields added. Click \"Add field\" to add sorting criteria.\n </div>\n )}\n </div>\n <DialogFooter>\n {sortFields.length > 0 && (\n <Button\n variant=\"outline\"\n onClick={handleClearAll}\n className=\"cls_clear_all_btn\"\n >\n <Trash2 className=\"cls_clear_all_icon h-4 w-4 mr-2\" />\n Clear All\n </Button>\n )}\n <Button\n onClick={handleApply}\n className=\"cls_apply_btn\"\n >\n Apply\n </Button>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n className=\"cls_cancel_btn\"\n >\n Cancel\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n","// Radio group component for hazo_ui library\n// Based on shadcn/ui radio group component\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n\n","\"use client\";\n\n/**\n * Multi State Radio Component\n * \n * Flexible radio button/icon selection component with support for single and multi-selection modes,\n * customizable layouts, and react-icons integration.\n */\n\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { Button } from \"../ui/button\";\nimport { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from \"../ui/tooltip\";\nimport { cn } from \"../../lib/utils\";\n// Import icon sets - tree-shaking will remove unused ones\nimport * as FaIcons from \"react-icons/fa\";\nimport * as MdIcons from \"react-icons/md\";\nimport * as HiIcons from \"react-icons/hi\";\nimport * as BiIcons from \"react-icons/bi\";\nimport * as AiIcons from \"react-icons/ai\";\nimport * as BsIcons from \"react-icons/bs\";\nimport * as FiIcons from \"react-icons/fi\";\nimport * as IoIcons from \"react-icons/io5\";\nimport * as RiIcons from \"react-icons/ri\";\nimport * as TbIcons from \"react-icons/tb\";\n\n// Icon set mapping\nconst iconSetMap: Record<string, any> = {\n fa: FaIcons,\n md: MdIcons,\n hi: HiIcons,\n bi: BiIcons,\n ai: AiIcons,\n bs: BsIcons,\n fi: FiIcons,\n io: IoIcons,\n io5: IoIcons,\n ri: RiIcons,\n tb: TbIcons,\n};\n\n/**\n * Get icon library for a given icon set\n */\nfunction getIconLibrary(iconSet: string): any {\n if (!iconSet) return null;\n const normalizedSet = iconSet.toLowerCase();\n return iconSetMap[normalizedSet] || null;\n}\n\nexport interface MultiStateRadioItem {\n label: string;\n value: string;\n icon_selected?: string;\n icon_unselected?: string;\n}\n\nexport interface MultiStateRadioProps {\n layout?: \"horizontal\" | \"vertical\";\n style?: \"radio\" | \"icons\";\n display_label?: boolean;\n icon_set?: string; // Package name like 'fa', 'md', etc.\n data: MultiStateRadioItem[];\n selection: \"single\" | \"multi\";\n value: string | string[];\n onChange: (value: string | string[]) => void;\n className?: string;\n}\n\n/**\n * Get icon component from react-icons based on icon set and icon name\n */\nfunction getIconComponent(iconSet: string | undefined, iconName: string | undefined): React.ComponentType<any> | null {\n if (!iconSet || !iconName) return null;\n \n const iconLibrary = getIconLibrary(iconSet);\n if (!iconLibrary) return null;\n \n const IconComponent = iconLibrary[iconName];\n return IconComponent || null;\n}\n\n/**\n * Multi State Radio Component\n * Supports single and multi-selection with radio buttons or icons\n */\nexport function MultiStateRadio({\n layout = \"horizontal\",\n style = \"radio\",\n display_label = true,\n icon_set,\n data,\n selection = \"single\",\n value,\n onChange,\n className,\n}: MultiStateRadioProps) {\n // Icon library is loaded lazily when needed\n\n /**\n * Handle single selection change\n */\n const handleSingleSelection = (selectedValue: string) => {\n onChange(selectedValue);\n };\n\n /**\n * Handle multi selection change\n */\n const handleMultiSelection = (selectedValue: string) => {\n const currentValues = Array.isArray(value) ? value : [];\n const isSelected = currentValues.includes(selectedValue);\n \n if (isSelected) {\n // Remove from selection\n onChange(currentValues.filter((v) => v !== selectedValue));\n } else {\n // Add to selection\n onChange([...currentValues, selectedValue]);\n }\n };\n\n /**\n * Check if an item is selected\n */\n const isSelected = (itemValue: string): boolean => {\n if (selection === \"single\") {\n return value === itemValue;\n } else {\n const currentValues = Array.isArray(value) ? value : [];\n return currentValues.includes(itemValue);\n }\n };\n\n /**\n * Render radio style option\n */\n const renderRadioOption = (item: MultiStateRadioItem) => {\n const selected = isSelected(item.value);\n \n if (selection === \"single\") {\n const optionContent = (\n <div\n className={cn(\n \"cls_radio_option flex items-center gap-2\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n \"p-2 rounded-md hover:bg-accent transition-colors\",\n selected && \"bg-accent\"\n )}\n >\n <RadioGroupItem\n value={item.value}\n id={`radio-${item.value}`}\n className=\"cls_radio_item shrink-0\"\n />\n {display_label && (\n <label\n htmlFor={`radio-${item.value}`}\n className=\"cls_radio_label text-sm font-medium cursor-pointer flex-1\"\n >\n {item.label}\n </label>\n )}\n </div>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {optionContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n } else {\n // Multi-selection with checkbox-like behavior\n const optionContent = (\n <div\n className={cn(\n \"cls_radio_option flex items-center gap-2 cursor-pointer\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n \"p-2 rounded-md hover:bg-accent transition-colors\",\n selected && \"bg-accent\"\n )}\n onClick={() => handleMultiSelection(item.value)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleMultiSelection(item.value);\n }\n }}\n >\n <div\n className={cn(\n \"cls_checkbox_indicator h-4 w-4 rounded-sm border-2 border-primary flex items-center justify-center transition-colors shrink-0\",\n selected ? \"bg-primary\" : \"bg-background\"\n )}\n >\n {selected && (\n <svg\n className=\"cls_checkmark h-3 w-3 text-primary-foreground\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n )}\n </div>\n {display_label && (\n <span className=\"cls_checkbox_label text-sm font-medium flex-1\">\n {item.label}\n </span>\n )}\n </div>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {optionContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n }\n };\n\n /**\n * Render icon style option\n */\n const renderIconOption = (item: MultiStateRadioItem) => {\n const selected = isSelected(item.value);\n \n // Get icon components\n const SelectedIcon = icon_set && item.icon_selected\n ? getIconComponent(icon_set, item.icon_selected)\n : null;\n const UnselectedIcon = icon_set && item.icon_unselected\n ? getIconComponent(icon_set, item.icon_unselected)\n : null;\n \n const IconComponent = selected && SelectedIcon ? SelectedIcon : (UnselectedIcon || SelectedIcon);\n \n const buttonContent = (\n <Button\n variant={selected ? \"default\" : \"ghost\"}\n size=\"default\"\n className={cn(\n \"cls_icon_option border-0\",\n layout === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n \"gap-2 h-auto py-2 px-3 sm:py-3 sm:px-4\",\n selected && \"bg-primary text-primary-foreground\",\n !selected && \"hover:bg-accent\"\n )}\n onClick={() => {\n if (selection === \"single\") {\n handleSingleSelection(item.value);\n } else {\n handleMultiSelection(item.value);\n }\n }}\n aria-label={item.label}\n aria-pressed={selected}\n >\n {IconComponent && (\n <IconComponent className=\"cls_icon h-4 w-4 sm:h-5 sm:w-5\" />\n )}\n {display_label && (\n <span className=\"cls_icon_label text-sm font-medium\">\n {item.label}\n </span>\n )}\n </Button>\n );\n \n return (\n <Tooltip key={item.value} delayDuration={1000}>\n <TooltipTrigger asChild>\n {buttonContent}\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"cls_tooltip_text\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n );\n };\n\n // Container classes with single outline\n const containerClasses = cn(\n \"cls_multi_state_radio border border-input rounded-md p-2 sm:p-3\",\n layout === \"horizontal\"\n ? \"flex flex-row flex-wrap gap-2 sm:gap-3\"\n : \"flex flex-col gap-2 sm:gap-3\",\n className\n );\n \n // RadioGroup needs grid override for flex layout\n const radioGroupClasses = cn(\n containerClasses,\n \"!flex !flex-row !flex-wrap\" // Override RadioGroup's default grid\n );\n\n if (style === \"icons\") {\n // Icon style - use buttons\n return (\n <TooltipProvider delayDuration={1000}>\n <div className={containerClasses} role={selection === \"single\" ? \"radiogroup\" : \"group\"}>\n {data.map((item) => renderIconOption(item))}\n </div>\n </TooltipProvider>\n );\n } else {\n // Radio style - use RadioGroup for single, custom for multi\n if (selection === \"single\") {\n return (\n <TooltipProvider delayDuration={1000}>\n <RadioGroup\n value={typeof value === \"string\" ? value : \"\"}\n onValueChange={handleSingleSelection}\n className={layout === \"horizontal\" \n ? cn(radioGroupClasses, \"!flex-row\")\n : cn(radioGroupClasses, \"!flex-col\")\n }\n >\n {data.map((item) => renderRadioOption(item))}\n </RadioGroup>\n </TooltipProvider>\n );\n } else {\n return (\n <TooltipProvider delayDuration={1000}>\n <div className={containerClasses} role=\"group\">\n {data.map((item) => renderRadioOption(item))}\n </div>\n </TooltipProvider>\n );\n }\n }\n}\n\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_ui",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Set of UI components for common interaction elements in a SaaS app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"@dnd-kit/utilities": "^3.2.2",
|
|
41
41
|
"@radix-ui/react-dialog": "^1.1.1",
|
|
42
42
|
"@radix-ui/react-popover": "^1.1.1",
|
|
43
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
43
44
|
"@radix-ui/react-select": "^2.1.1",
|
|
44
45
|
"@radix-ui/react-slot": "^1.1.0",
|
|
45
46
|
"@radix-ui/react-switch": "^1.1.0",
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"date-fns": "^3.3.1",
|
|
50
51
|
"lucide-react": "^0.344.0",
|
|
51
52
|
"react-day-picker": "^8.10.0",
|
|
53
|
+
"react-icons": "^5.5.0",
|
|
52
54
|
"tailwind-merge": "^2.2.1",
|
|
53
55
|
"tailwindcss-animate": "^1.0.7"
|
|
54
56
|
},
|