hazo_ui 1.0.2 → 1.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 +8 -0
- package/dist/index.cjs +15 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,14 @@ npm install hazo_ui
|
|
|
14
14
|
|
|
15
15
|
A powerful, flexible dialog component for multi-field filtering with support for various input types. Perfect for table headers, grid views, or any interface where users need to apply multiple filters simultaneously.
|
|
16
16
|
|
|
17
|
+

|
|
18
|
+
|
|
19
|
+

|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
17
25
|
#### Features
|
|
18
26
|
|
|
19
27
|
- **Multiple Field Types**: Supports text, number, combobox (select), boolean, and date fields
|
package/dist/index.cjs
CHANGED
|
@@ -695,6 +695,9 @@ function MultiFilterDialog({
|
|
|
695
695
|
setFilterFields(initialFilters);
|
|
696
696
|
setIsOpen(false);
|
|
697
697
|
};
|
|
698
|
+
const handleClearAll = () => {
|
|
699
|
+
setFilterFields([]);
|
|
700
|
+
};
|
|
698
701
|
const availableFieldsToAdd = availableFields.filter(
|
|
699
702
|
(af) => !filterFields.some((ff) => ff.field === af.value)
|
|
700
703
|
);
|
|
@@ -821,6 +824,18 @@ function MultiFilterDialog({
|
|
|
821
824
|
}) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cls_empty_filter_fields text-center py-8 text-sm text-muted-foreground", children: 'No filter fields added. Click "Add field" to add filtering criteria.' })
|
|
822
825
|
] }),
|
|
823
826
|
/* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { children: [
|
|
827
|
+
filterFields.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
828
|
+
Button,
|
|
829
|
+
{
|
|
830
|
+
variant: "outline",
|
|
831
|
+
onClick: handleClearAll,
|
|
832
|
+
className: "cls_clear_all_btn",
|
|
833
|
+
children: [
|
|
834
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "cls_clear_all_icon h-4 w-4 mr-2" }),
|
|
835
|
+
"Clear All"
|
|
836
|
+
]
|
|
837
|
+
}
|
|
838
|
+
),
|
|
824
839
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
825
840
|
Button,
|
|
826
841
|
{
|
package/dist/index.cjs.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"],"names":["twMerge","clsx","cva","React","Slot","jsx","DialogPrimitive","React2","jsxs","X","React3","PopoverPrimitive","React4","React5","SelectPrimitive","React6","ChevronDown","ChevronUp","Check","TooltipPrimitive","React7","DayPicker","ChevronLeft","ChevronRight","useState","CalendarIcon","format","Trash2","useEffect","Filter","Plus","ChevronsUpDown","CheckIcon"],"mappings":"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","file":"index.cjs","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 } 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 // 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 <CommandEmpty>No fields found.</CommandEmpty>\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.value}\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 </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 <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"],"names":["twMerge","clsx","cva","React","Slot","jsx","DialogPrimitive","React2","jsxs","X","React3","PopoverPrimitive","React4","React5","SelectPrimitive","React6","ChevronDown","ChevronUp","Check","TooltipPrimitive","React7","DayPicker","ChevronLeft","ChevronRight","useState","CalendarIcon","format","Trash2","useEffect","Filter","Plus","ChevronsUpDown","CheckIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,IAAM,mBAGR,CAAC,EAAE,QAAA,EAAU,SAAA,GAAY,IAAG,KAAM;AACrC,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,sBAAA,EAAyB,SAAS,IAC/C,QAAA,EACH,CAAA;AAEJ;ACPO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACNA,IAAM,cAAA,GAAiBC,0BAAA;AAAA,EACrB,wRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EAAa,oEAAA;AAAA,QACb,OAAA,EAAS,gFAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAQA,IAAM,MAAA,GAAeC,iBAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAChE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAC9B,IAAA,uBACEC,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AC5CrB,IAAM,MAAA,GAAyBC,0BAAA,CAAA,IAAA;AAC/B,IAAM,aAAA,GAAgCA,0BAAA,CAAA,OAAA;AACtC,IAAM,YAAA,GAA+BA,0BAAA,CAAA,MAAA;AAGrC,IAAM,aAAA,GAAsBC,6BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,cAAAA;AAAA,EAAiBC,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,yJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,cAA8BA,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,aAAA,GAAsBC,iBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,eAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAH,eAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kBACfG,eAAA;AAAA,IAAiBF,0BAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDE,eAAA,CAAiBF,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,+QAAA,EAC/B,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAACI,aAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,0BACvBJ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA;AACF,CAAA,EACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8BC,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACED,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,oDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBE,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,cAAAA;AAAA,EAAiBC,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,iBAAA,GAA0BC,6BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,cAAAA;AAAA,EAAiBC,0BAAA,CAAA,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD,CAAA;AACD,iBAAA,CAAkB,cAA8BA,0BAAA,CAAA,WAAA,CAAY,WAAA;ACnG5D,IAAM,OAAA,GAAgBI,6BAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,OAAA,CAAQ,WAAA,GAAc,SAAA;AAEtB,IAAM,YAAA,GAAqBK,6BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iLAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBK,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA;AAAA,IACzE,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,YAAA,GAAqBK,iBAAA,CAAA,UAAA,CAGzB,CAAC,KAAA,EAAO,wBACRL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0BAAA;AAAA,IACT,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,YAAA,GAAqBK,6BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BL,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBK,iBAAA,CAAA,UAAA,CAMxB,CAAC,EAAE,SAAA,EAAW,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACnD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAY,KAAA,EAAO;AACrB,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEL,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,+NAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AC7F1B,IAAM,OAAA,GAA2BM,2BAAA,CAAA,IAAA;AACjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA,OAAA;AACxC,IAAM,iBAAuBC,iBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,QAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,OAAM,EAAG,GAAA,qBAC5DP,cAAAA,CAAkBM,2BAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAN,cAAAA;AAAA,EAAkBM,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD,CAAA;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;ACjBtD,IAAM,KAAA,GAAcE,iBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBACER,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,8VAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AChBpB,IAAM,MAAA,GAAyBS,0BAAA,CAAA,IAAA;AAE/B,IAAM,WAAA,GAA8BA,0BAAA,CAAA,KAAA;AAEpC,IAAM,aAAA,GAAsBC,iBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCP,eAAAA;AAAA,EAAiBM,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iTAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDT,cAAAA,CAAiBS,0BAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAT,cAAAA,CAACW,uBAAA,EAAA,EAAY,SAAA,EAAU,oBAAA,EAAqB,CAAA,EAC9C;AAAA;AAAA;AACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8BF,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,oBAAA,GAA6BC,6BAGjC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,cAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAT,cAAAA,CAACY,qBAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AACjC,CACD,CAAA;AACD,oBAAA,CAAqB,cAA8BH,0BAAA,CAAA,cAAA,CAAe,WAAA;AAElE,IAAM,sBAAA,GAA+BC,6BAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,gBAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAT,cAAAA,CAACW,uBAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AACnC,CACD,CAAA;AACD,sBAAA,CAAuB,cACLF,0BAAA,CAAA,gBAAA,CAAiB,WAAA;AAEnC,IAAM,gBAAsBC,iBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,QAAA,GAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,qBACzDV,cAAAA,CAAiBS,0BAAA,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAAN,eAAAA;AAAA,EAAiBM,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qcAAA;AAAA,MACA,aAAa,QAAA,IACX,iIAAA;AAAA,MACF;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAT,eAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,sBACtBA,cAAAA;AAAA,QAAiBS,0BAAA,CAAA,QAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,KAAA;AAAA,YACA,aAAa,QAAA,IACX;AAAA,WACJ;AAAA,UAEC;AAAA;AAAA,OACH;AAAA,sBACAT,eAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAC1B,CAAA,EACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8BS,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,WAAA,GAAoBC,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,IAChE,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,UAAA,GAAmBC,iBAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCP,eAAAA;AAAA,EAAiBM,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2NAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAT,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAiBS,0BAAA,CAAA,aAAA,EAAhB,EACC,QAAA,kBAAAT,cAAAA,CAACa,iBAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,GAC7B,CAAA,EACF,CAAA;AAAA,sBAEAb,cAAAA,CAAiBS,0BAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AACtC,CACD,CAAA;AACD,UAAA,CAAW,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA;AAE9C,IAAM,eAAA,GAAwBC,6BAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BV,cAAAA;AAAA,EAAiBS,0BAAA,CAAA,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD,CAAA;AACD,eAAA,CAAgB,cAA8BA,0BAAA,CAAA,SAAA,CAAU,WAAA;ACzIxD,IAAM,eAAA,GAAmCK,2BAAA,CAAA,QAAA;AACzC,IAAM,OAAA,GAA2BA,2BAAA,CAAA,IAAA;AACjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA,OAAA;AAExC,IAAM,cAAA,GAAuBC,iBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1Cf,cAAAA;AAAA,EAAkBc,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oYAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;ACftD,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACEd,cAAAA;AAAA,IAACgB,wBAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,+DAAA;AAAA,QACR,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,gDAAA;AAAA,QACT,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,6BAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACV;AAAA,SACF;AAAA,QACA,mBAAA,EAAqB,iBAAA;AAAA,QACrB,eAAA,EAAiB,kBAAA;AAAA,QACjB,KAAA,EAAO,kCAAA;AAAA,QACP,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EACE,gEAAA;AAAA,QACF,GAAA,EAAK,kBAAA;AAAA,QACL,IAAA,EAAM,kTAAA;AAAA,QACN,GAAA,EAAK,EAAA;AAAA,UACH;AAAA,SACF;AAAA,QACA,aAAA,EAAe,eAAA;AAAA,QACf,YAAA,EACE,kIAAA;AAAA,QACF,SAAA,EAAW,kCAAA;AAAA,QACX,WAAA,EACE,sIAAA;AAAA,QACF,YAAA,EAAc,kCAAA;AAAA,QACd,gBAAA,EACE,8DAAA;AAAA,QACF,UAAA,EAAY,WAAA;AAAA,QACZ,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,UAAU,sBAAMhB,cAAAA,CAACiB,uBAAA,EAAA,EAAY,WAAU,SAAA,EAAU,CAAA;AAAA,QACjD,WAAW,sBAAMjB,cAAAA,CAACkB,wBAAA,EAAA,EAAa,WAAU,SAAA,EAAU;AAAA,OACrD;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;ACyBvB,SAAS,eAAA,CAAgB;AAAA,EACvB,YAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIC,gBAAS,KAAK,CAAA;AAE1D,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAQ,YAAY,IAAA;AAAM,MACxB,KAAK,MAAA;AACH,QAAA,uBACEnB,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO,aAAa,KAAA,IAAS,EAAA;AAAA,YAC7B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,cAAA,IAAI,YAAY,UAAA,EAAY,SAAA,IAAa,MAAM,MAAA,GAAS,WAAA,CAAY,WAAW,SAAA,EAAW;AACxF,gBAAA;AAAA,cACF;AACA,cAAA,aAAA,CAAc,KAAK,CAAA;AAAA,YACrB,CAAA;AAAA,YACA,WAAA,EAAY,eAAA;AAAA,YACZ,SAAA,EAAW,YAAY,UAAA,EAAY,SAAA;AAAA,YACnC,SAAA,EAAW,YAAY,UAAA,EAAY,SAAA;AAAA,YACnC,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,MAGJ,KAAK,QAAA;AACH,QAAA,MAAM,eAAA,GAAkB;AAAA,UACtB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAe;AAAA,UAC/C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAmB;AAAA,UACpD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,eAAA;AAAgB,SAChD;AAEA,QAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,aAAa,QAAA,IAAY,QAAA;AAAA,cAChC,aAAA,EAAe,CAAC,KAAA,KAAU,gBAAA,GAAmB,KAAK,CAAA;AAAA,cAElD,QAAA,EAAA;AAAA,gCAAAH,eAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oDACvB,QAAA,kBAAAA,cAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACAA,cAAAA,CAAC,aAAA,EAAA,EACE,0BAAgB,GAAA,CAAI,CAAC,uBACpBA,cAAAA,CAAC,UAAA,EAAA,EAA0B,KAAA,EAAO,GAAG,KAAA,EAClC,QAAA,EAAA,EAAA,CAAG,SADW,EAAA,CAAG,KAEpB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,0BACAA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAO,aAAa,KAAA,KAAU,MAAA,IAAa,aAAa,KAAA,KAAU,IAAA,GAAO,aAAa,KAAA,GAAQ,EAAA;AAAA,cAC9F,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,gBAAA,IAAI,UAAU,EAAA,EAAI;AAChB,kBAAA,aAAA,CAAc,EAAE,CAAA;AAChB,kBAAA;AAAA,gBACF;AACA,gBAAA,IAAI,QAAA,GAAW,YAAY,YAAA,EAAc,YAAA,GACrC,WAAW,KAAK,CAAA,GAChB,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA;AAEtB,gBAAA,IAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnB,kBAAA;AAAA,gBACF;AAGA,gBAAA,IAAI,WAAA,CAAY,YAAA,EAAc,YAAA,IAAgB,WAAA,CAAY,cAAc,aAAA,EAAe;AACrF,kBAAA,MAAM,gBAAgB,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,MAAA,IAAU,CAAA;AACrD,kBAAA,IAAI,aAAA,GAAgB,WAAA,CAAY,YAAA,CAAa,aAAA,EAAe;AAC1D,oBAAA;AAAA,kBACF;AAAA,gBACF;AAGA,gBAAA,IAAI,YAAY,YAAA,EAAc,GAAA,KAAQ,UAAa,QAAA,GAAW,WAAA,CAAY,aAAa,GAAA,EAAK;AAC1F,kBAAA,QAAA,GAAW,YAAY,YAAA,CAAa,GAAA;AAAA,gBACtC;AACA,gBAAA,IAAI,YAAY,YAAA,EAAc,GAAA,KAAQ,UAAa,QAAA,GAAW,WAAA,CAAY,aAAa,GAAA,EAAK;AAC1F,kBAAA,QAAA,GAAW,YAAY,YAAA,CAAa,GAAA;AAAA,gBACtC;AAEA,gBAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,cACxB,CAAA;AAAA,cACA,WAAA,EAAY,iBAAA;AAAA,cACZ,GAAA,EAAK,YAAY,YAAA,EAAc,GAAA;AAAA,cAC/B,GAAA,EAAK,YAAY,YAAA,EAAc,GAAA;AAAA,cAC/B,IAAA,EAAM,WAAA,CAAY,YAAA,EAAc,YAAA,GAAe,IAAA,GAAO,CAAA;AAAA,cACtD,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,MAGJ,KAAK,UAAA;AACH,QAAA,uBACEG,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,aAAa,KAAA,IAAS,EAAA;AAAA,YAC7B,aAAA,EAAe,CAAC,KAAA,KAAU,aAAA,CAAc,KAAK,CAAA;AAAA,YAE7C,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,iBAAc,SAAA,EAAU,2CAAA,EACvB,0BAAAA,cAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,kBAAA,EAAmB,CAAA,EAC9C,CAAA;AAAA,8BACAA,cAAAA,CAAC,aAAA,EAAA,EACE,sBAAY,eAAA,EAAiB,GAAA,CAAI,CAAC,MAAA,qBACjCA,eAAC,UAAA,EAAA,EAA8B,KAAA,EAAO,OAAO,KAAA,EAC1C,QAAA,EAAA,MAAA,CAAO,SADO,MAAA,CAAO,KAExB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,SACF;AAAA,MAGJ,KAAK,SAAA;AACH,QAAA,MAAM,SAAA,GAAY,WAAA,CAAY,aAAA,EAAe,SAAA,IAAa,IAAA;AAC1D,QAAA,MAAM,UAAA,GAAa,WAAA,CAAY,aAAA,EAAe,UAAA,IAAc,KAAA;AAE5D,QAAA,uBACEG,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,YAAA,CAAa,KAAA,KAAU,MAAA,IAAa,YAAA,CAAa,UAAU,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA,GAAI,EAAA;AAAA,YACtG,aAAA,EAAe,CAAC,KAAA,KAAU,aAAA,CAAc,UAAU,MAAM,CAAA;AAAA,YAExD,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,iBAAc,SAAA,EAAU,0CAAA,EACvB,0BAAAA,cAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,WAAA,EAAY,CAAA,EACvC,CAAA;AAAA,8BACAG,gBAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAH,cAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,MAAA,EAAQ,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,gCACpCA,cAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,SAAS,QAAA,EAAA,UAAA,EAAW;AAAA,eAAA,EACxC;AAAA;AAAA;AAAA,SACF;AAAA,MAGJ,KAAK,MAAA;AACH,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAe;AAAA,UAC/C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAmB;AAAA,UACpD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,eAAA;AAAgB,SAChD;AAEA,QAAA,MAAM,YAAA,GAAe,YAAA,CAAa,KAAA,GAC7B,OAAO,YAAA,CAAa,KAAA,KAAU,QAAA,GAAW,IAAI,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,GAAI,aAAa,KAAA,GACtF,MAAA;AAEJ,QAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gGAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,aAAa,QAAA,IAAY,QAAA;AAAA,cAChC,aAAA,EAAe,CAAC,KAAA,KAAU,gBAAA,GAAmB,KAAK,CAAA;AAAA,cAElD,QAAA,EAAA;AAAA,gCAAAH,eAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oDACvB,QAAA,kBAAAA,cAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACAA,cAAAA,CAAC,aAAA,EAAA,EACE,wBAAc,GAAA,CAAI,CAAC,uBAClBA,cAAAA,CAAC,UAAA,EAAA,EAA0B,KAAA,EAAO,GAAG,KAAA,EAClC,QAAA,EAAA,EAAA,CAAG,SADW,EAAA,CAAG,KAEpB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,0BACAG,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,cAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,SAAA,EAAW,EAAA;AAAA,kBACT,4EAAA;AAAA,kBACA,CAAC,YAAA,IAAgB;AAAA,iBACnB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAH,cAAAA,CAACoB,oBAAA,EAAA,EAAa,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,kCAClEpB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EACb,yBACCqB,cAAA,CAAO,YAAA,EAAc,aAAa,CAAA,GAElC,aAAA,EAEJ;AAAA;AAAA;AAAA,aACF,EACF,CAAA;AAAA,4BACArB,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EAAkC,KAAA,EAAM,SAChE,QAAA,kBAAAA,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,QAAA,EAAU,YAAA;AAAA,gBACV,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,kBAAA,aAAA,CAAc,IAAI,CAAA;AAClB,kBAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,gBACzB,CAAA;AAAA,gBACA,YAAA,EAAY;AAAA;AAAA,aACd,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAGJ;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iHAAA,EACb,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6EAAA,EAA+E,sBAAY,KAAA,EAAM,CAAA;AAAA,oBACjHA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EACZ,uBAAY,EACf,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,QAAA;AAAA,QACT,SAAA,EAAU,6EAAA;AAAA,QACV,YAAA,EAAY,CAAA,OAAA,EAAU,WAAA,CAAY,KAAK,CAAA,OAAA,CAAA;AAAA,QAEvC,QAAA,kBAAAA,cAAAA,CAACsB,kBAAA,EAAA,EAAO,SAAA,EAAU,yBAAA,EAA0B;AAAA;AAAA;AAC9C,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,iBAAA,CAAkB;AAAA,EAChC,eAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAiB;AACnB,CAAA,EAA2B;AACzB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIH,gBAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,gBAAyB,cAAc,CAAA;AAC/E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,gBAAS,KAAK,CAAA;AAG1D,EAAAI,gBAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,eAAA,CAAgB,cAAc,CAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAc,CAAC,CAAA;AAE3B,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAuB;AAE7C,IAAA,IAAI,aAAa,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAA,EAAG;AACpD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAc,eAAA,CAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,UAAU,UAAU,CAAA;AACtE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,GAAoB,EAAA;AACxB,IAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,MAAA,YAAA,GAAe,KAAA;AAAA,IACjB,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,QAAA,EAAU;AACxC,MAAA,YAAA,GAAe,WAAA,CAAY,cAAc,GAAA,IAAO,CAAA;AAAA,IAClD,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,MAAA,EAAQ;AACtC,MAAA,YAAA,uBAAmB,IAAA,EAAK;AAAA,IAC1B;AAEA,IAAA,MAAM,SAAA,GAA0B;AAAA,MAC9B,KAAA,EAAO,UAAA;AAAA,MACP,UAAW,WAAA,CAAY,IAAA,KAAS,YAAY,WAAA,CAAY,IAAA,KAAS,SAAU,QAAA,GAAW,MAAA;AAAA,MACtF,KAAA,EAAO;AAAA,KACT;AACA,IAAA,eAAA,CAAgB,CAAC,GAAG,YAAA,EAAc,SAAS,CAAC,CAAA;AAC5C,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,KAAuB;AAChD,IAAA,eAAA,CAAgB,aAAa,MAAA,CAAO,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAC,CAAA;AAAA,EACpE,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,EAAoB,KAAA,KAAe;AAC5D,IAAA,eAAA;AAAA,MACE,YAAA,CAAa,GAAA;AAAA,QAAI,CAAA,EAAA,KACf,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,OAAM,GAAI;AAAA;AAC/C,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,UAAA,EAAoB,QAAA,KAAqB;AACrE,IAAA,eAAA;AAAA,MACE,YAAA,CAAa,GAAA;AAAA,QAAI,CAAA,EAAA,KACf,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,UAAS,GAAI;AAAA;AAClD,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AAExB,IAAA,cAAA,CAAe,CAAC,GAAG,YAAY,CAAC,CAAA;AAChC,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,eAAA,CAAgB,cAAc,CAAA;AAC9B,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,EACpB,CAAA;AAGA,EAAA,MAAM,uBAAuB,eAAA,CAAgB,MAAA;AAAA,IAC3C,CAAA,EAAA,KAAM,CAAC,YAAA,CAAa,IAAA,CAAK,QAAM,EAAA,CAAG,KAAA,KAAU,GAAG,KAAK;AAAA,GACtD;AAGA,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAgD;AACtE,IAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,UAAU,UAAU,CAAA;AAAA,EAC3D,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,eAAe,MAAA,GAAS,CAAA;AAGjD,EAAA,MAAM,iBAAiB,gBAAA,mBACrBpB,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sCAAA,EACb,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EAA+C,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,IAC5E,cAAA,CAAe,GAAA,CAAI,CAAC,YAAA,KAAiB;AACpC,MAAA,MAAM,WAAA,GAAc,cAAA,CAAe,YAAA,CAAa,KAAK,CAAA;AACrD,MAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,MAAA,IAAI,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAC5C,MAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,QAAA,YAAA,GAAe,YAAA,CAAa,QACvB,WAAA,CAAY,aAAA,EAAe,aAAa,IAAA,GACxC,WAAA,CAAY,eAAe,UAAA,IAAc,KAAA;AAAA,MAChD,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,UAAA,EAAY;AAC1C,QAAA,MAAM,MAAA,GAAS,YAAY,eAAA,EAAiB,IAAA,CAAK,SAAO,GAAA,CAAI,KAAA,KAAU,aAAa,KAAK,CAAA;AACxF,QAAA,YAAA,GAAe,QAAQ,KAAA,IAAS,YAAA;AAAA,MAClC,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,MAAA,EAAQ;AACtC,QAAA,MAAM,SAAA,GAAY,aAAa,KAAA,YAAiB,IAAA,GAC5C,aAAa,KAAA,GACb,IAAI,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC/B,QAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,OAAA,EAAS,CAAA,EAAG;AAC/B,UAAA,YAAA,GAAeqB,cAAA,CAAO,WAAW,aAAa,CAAA;AAAA,QAChD;AAAA,MACF;AAEA,MAAA,MAAM,gBAAgB,YAAA,CAAa,QAAA,GAC/B,YAAA,CAAa,QAAA,CAAS,QAAQ,GAAA,EAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAA,KAAK,CAAA,CAAE,WAAA,EAAa,IAAI,GAAA,GACjF,EAAA;AAEJ,MAAA,uBACElB,eAAAA,CAAC,KAAA,EAAA,EAA6B,SAAA,EAAU,0BAAA,EACrC,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,KAAA;AAAA,QAAM,IAAA;AAAA,QAAG,aAAA;AAAA,QAAe;AAAA,OAAA,EAAA,EAD7B,aAAa,KAEvB,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,oBAEAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAqC,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAGvE,EAAA,uBACEG,eAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EAClC,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,eAAA,EAAA,EACC,QAAA,kBAAAG,eAAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAH,cAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAO,IAAA,EACpB,QAAA,kBAAAG,eAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAU,mBAAA;AAAA,UACV,YAAA,EAAW,oBAAA;AAAA,UAEX,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAACwB,kBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,8BAAA;AAAA,kBACA,gBAAA,IAAoB;AAAA;AACtB;AAAA,aACF;AAAA,YAAE;AAAA;AAAA;AAAA,SAGN,CAAA,EACF,CAAA;AAAA,sBACAxB,cAAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,cAAA,EACH;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACAG,eAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,wEAAA,EACvB,QAAA,EAAA;AAAA,sBAAAA,gBAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,eAAY,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,wBAC1BA,cAAAA,CAAC,iBAAA,EAAA,EAAkB,QAAA,EAAA,4EAAA,EAEnB;AAAA,OAAA,EACF,CAAA;AAAA,sBACAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAEb,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,kBAAAG,gBAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,YAAA,EAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,eAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,UAAA;AAAA,cACL,eAAA,EAAe,cAAA;AAAA,cACf,SAAA,EAAU,+CAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,kCAAAH,cAAAA,CAACyB,gBAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,CAAA;AAAA,kCAC7CzB,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,WAAA,EAAS;AAAA,iBAAA,EACjB,CAAA;AAAA,gCACAA,cAAAA,CAAC0B,0BAAA,EAAA,EAAe,SAAA,EAAU,mDAAA,EAAoD;AAAA;AAAA;AAAA,WAChF,EACF,CAAA;AAAA,0BACA1B,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EACxB,QAAA,kBAAAG,gBAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAY,kBAAA,EAAmB,WAAU,mBAAA,EAAoB,CAAA;AAAA,4BAC3EG,gBAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,gBAAa,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,8BAC9BA,cAAAA,CAAC,YAAA,EAAA,EACE,+BAAqB,GAAA,CAAI,CAAC,0BACzBG,eAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBAEC,OAAO,KAAA,CAAM,KAAA;AAAA,kBACb,QAAA,EAAU,MAAM,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAAA,kBAC1C,SAAA,EAAU,kBAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAH,cAAAA;AAAA,sBAAC2B,iBAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,EAAA;AAAA,0BACT,6BAAA;AAAA,0BACwB;AAAA;AAC1B;AAAA,qBACF;AAAA,oBACC,KAAA,CAAM;AAAA;AAAA,iBAAA;AAAA,gBAXF,KAAA,CAAM;AAAA,eAad,CAAA,EACH;AAAA,aAAA,EACF;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAGC,YAAA,CAAa,MAAA,GAAS,CAAA,mBACrB3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,YAAA,KAAiB;AAClC,UAAA,MAAM,WAAA,GAAc,cAAA,CAAe,YAAA,CAAa,KAAK,CAAA;AACrD,UAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,UAAA,uBACEA,cAAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cAEC,YAAA;AAAA,cACA,WAAA;AAAA,cACA,eAAe,CAAC,KAAA,KAAU,iBAAA,CAAkB,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,cACrE,kBAAkB,CAAC,QAAA,KAAa,oBAAA,CAAqB,YAAA,CAAa,OAAO,QAAQ,CAAA;AAAA,cACjF,QAAA,EAAU,MAAM,iBAAA,CAAkB,YAAA,CAAa,KAAK;AAAA,aAAA;AAAA,YAL/C,YAAA,CAAa;AAAA,WAMpB;AAAA,QAEJ,CAAC,GACH,CAAA,mBAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0EAAyE,QAAA,EAAA,sEAAA,EAExF;AAAA,OAAA,EAEJ,CAAA;AAAA,sBACAG,gBAAC,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,MAAA,GAAS,qBACrBA,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,cAAA;AAAA,YACT,SAAA,EAAU,mBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAACI,aAAAA,EAAA,EAAE,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAEnD;AAAA,wBAEFJ,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,SAAA,EAAU,eAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,gBAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"index.cjs","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 <CommandEmpty>No fields found.</CommandEmpty>\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.value}\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 </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"]}
|
package/dist/index.js
CHANGED
|
@@ -670,6 +670,9 @@ function MultiFilterDialog({
|
|
|
670
670
|
setFilterFields(initialFilters);
|
|
671
671
|
setIsOpen(false);
|
|
672
672
|
};
|
|
673
|
+
const handleClearAll = () => {
|
|
674
|
+
setFilterFields([]);
|
|
675
|
+
};
|
|
673
676
|
const availableFieldsToAdd = availableFields.filter(
|
|
674
677
|
(af) => !filterFields.some((ff) => ff.field === af.value)
|
|
675
678
|
);
|
|
@@ -796,6 +799,18 @@ function MultiFilterDialog({
|
|
|
796
799
|
}) }) : /* @__PURE__ */ jsx("div", { className: "cls_empty_filter_fields text-center py-8 text-sm text-muted-foreground", children: 'No filter fields added. Click "Add field" to add filtering criteria.' })
|
|
797
800
|
] }),
|
|
798
801
|
/* @__PURE__ */ jsxs(DialogFooter, { children: [
|
|
802
|
+
filterFields.length > 0 && /* @__PURE__ */ jsxs(
|
|
803
|
+
Button,
|
|
804
|
+
{
|
|
805
|
+
variant: "outline",
|
|
806
|
+
onClick: handleClearAll,
|
|
807
|
+
className: "cls_clear_all_btn",
|
|
808
|
+
children: [
|
|
809
|
+
/* @__PURE__ */ jsx(X, { className: "cls_clear_all_icon h-4 w-4 mr-2" }),
|
|
810
|
+
"Clear All"
|
|
811
|
+
]
|
|
812
|
+
}
|
|
813
|
+
),
|
|
799
814
|
/* @__PURE__ */ jsx(
|
|
800
815
|
Button,
|
|
801
816
|
{
|
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"],"names":["React","jsx","React2","React3","React4","React5","jsxs","React7","CalendarIcon","CheckIcon"],"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 } 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 // 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 <CommandEmpty>No fields found.</CommandEmpty>\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.value}\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 </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 <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"],"names":["React","jsx","React2","React3","React4","React5","jsxs","React7","CalendarIcon","CheckIcon","X"],"mappings":";;;;;;;;;;;;;;;AASO,IAAM,mBAGR,CAAC,EAAE,QAAA,EAAU,SAAA,GAAY,IAAG,KAAM;AACrC,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,sBAAA,EAAyB,SAAS,IAC/C,QAAA,EACH,CAAA;AAEJ;ACPO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACNA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,wRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EAAa,oEAAA;AAAA,QACb,OAAA,EAAS,gFAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAQA,IAAM,MAAA,GAAeA,MAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAChE,IAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,QAAA;AAC9B,IAAA,uBACEC,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AC5CrB,IAAM,MAAA,GAAyB,eAAA,CAAA,IAAA;AAC/B,IAAM,aAAA,GAAgC,eAAA,CAAA,OAAA;AACtC,IAAM,YAAA,GAA+B,eAAA,CAAA,MAAA;AAGrC,IAAM,aAAA,GAAsBC,kBAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,yJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,cAA8B,eAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,aAAA,GAAsBC,MAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpC,IAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAD,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kBACf,IAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,IAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,+QAAA,EAC/B,QAAA,EAAA;AAAA,0BAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,0BACvBA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA;AACF,CAAA,EACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8B,eAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,oDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,eAAe,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA;AAEF,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBC,kBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8B,eAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,iBAAA,GAA0BC,kBAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD,CAAA;AACD,iBAAA,CAAkB,cAA8B,eAAA,CAAA,WAAA,CAAY,WAAA;ACnG5D,IAAM,OAAA,GAAgBE,kBAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,OAAA,CAAQ,WAAA,GAAc,SAAA;AAEtB,IAAM,YAAA,GAAqBE,kBAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,GAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iLAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBE,kBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA;AAAA,IACzE,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,YAAA,GAAqBE,MAAA,CAAA,UAAA,CAGzB,CAAC,KAAA,EAAO,wBACRF,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0BAAA;AAAA,IACT,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,YAAA,GAAqBE,kBAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BF,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBE,MAAA,CAAA,UAAA,CAMxB,CAAC,EAAE,SAAA,EAAW,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACnD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAY,KAAA,EAAO;AACrB,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEF,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,+NAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AC7F1B,IAAM,OAAA,GAA2B,gBAAA,CAAA,IAAA;AACjC,IAAM,cAAA,GAAkC,gBAAA,CAAA,OAAA;AACxC,IAAM,iBAAuBG,MAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,QAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,OAAM,EAAG,GAAA,qBAC5DH,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,EAAkB,gBAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4aAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD,CAAA;AACD,cAAA,CAAe,cAA+B,gBAAA,CAAA,OAAA,CAAQ,WAAA;ACjBtD,IAAM,KAAA,GAAcI,MAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBACEJ,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,8VAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AChBpB,IAAM,MAAA,GAAyB,eAAA,CAAA,IAAA;AAE/B,IAAM,WAAA,GAA8B,eAAA,CAAA,KAAA;AAEpC,IAAM,aAAA,GAAsB,MAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCK,IAAAA;AAAA,EAAiB,eAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iTAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDL,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,oBAAA,EAAqB,CAAA,EAC9C;AAAA;AAAA;AACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8B,eAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,oBAAA,GAA6B,kBAGjC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BA,GAAAA;AAAA,EAAiB,eAAA,CAAA,cAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AACjC,CACD,CAAA;AACD,oBAAA,CAAqB,cAA8B,eAAA,CAAA,cAAA,CAAe,WAAA;AAElE,IAAM,sBAAA,GAA+B,kBAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BA,GAAAA;AAAA,EAAiB,eAAA,CAAA,gBAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AACnC,CACD,CAAA;AACD,sBAAA,CAAuB,cACL,eAAA,CAAA,gBAAA,CAAiB,WAAA;AAEnC,IAAM,gBAAsB,MAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,QAAA,GAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,qBACzDA,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAAK,IAAAA;AAAA,EAAiB,eAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qcAAA;AAAA,MACA,aAAa,QAAA,IACX,iIAAA;AAAA,MACF;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAL,IAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,sBACtBA,GAAAA;AAAA,QAAiB,eAAA,CAAA,QAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,KAAA;AAAA,YACA,aAAa,QAAA,IACX;AAAA,WACJ;AAAA,UAEC;AAAA;AAAA,OACH;AAAA,sBACAA,IAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAC1B,CAAA,EACF,CACD,CAAA;AACD,aAAA,CAAc,cAA8B,eAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,WAAA,GAAoB,kBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BA,GAAAA;AAAA,EAAiB,eAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,IAChE,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8B,eAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,UAAA,GAAmB,MAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCK,IAAAA;AAAA,EAAiB,eAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2NAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,GAAAA,CAAiB,eAAA,CAAA,aAAA,EAAhB,EACC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,GAC7B,CAAA,EACF,CAAA;AAAA,sBAEAA,GAAAA,CAAiB,eAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AACtC,CACD,CAAA;AACD,UAAA,CAAW,cAA8B,eAAA,CAAA,IAAA,CAAK,WAAA;AAE9C,IAAM,eAAA,GAAwB,kBAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BA,GAAAA;AAAA,EAAiB,eAAA,CAAA,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD,CAAA;AACD,eAAA,CAAgB,cAA8B,eAAA,CAAA,SAAA,CAAU,WAAA;ACzIxD,IAAM,eAAA,GAAmC,gBAAA,CAAA,QAAA;AACzC,IAAM,OAAA,GAA2B,gBAAA,CAAA,IAAA;AACjC,IAAM,cAAA,GAAkC,gBAAA,CAAA,OAAA;AAExC,IAAM,cAAA,GAAuBM,MAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1CN,GAAAA;AAAA,EAAkB,gBAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oYAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,cAAA,CAAe,cAA+B,gBAAA,CAAA,OAAA,CAAQ,WAAA;ACftD,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,+DAAA;AAAA,QACR,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS,gDAAA;AAAA,QACT,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,6BAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACV;AAAA,SACF;AAAA,QACA,mBAAA,EAAqB,iBAAA;AAAA,QACrB,eAAA,EAAiB,kBAAA;AAAA,QACjB,KAAA,EAAO,kCAAA;AAAA,QACP,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EACE,gEAAA;AAAA,QACF,GAAA,EAAK,kBAAA;AAAA,QACL,IAAA,EAAM,kTAAA;AAAA,QACN,GAAA,EAAK,EAAA;AAAA,UACH;AAAA,SACF;AAAA,QACA,aAAA,EAAe,eAAA;AAAA,QACf,YAAA,EACE,kIAAA;AAAA,QACF,SAAA,EAAW,kCAAA;AAAA,QACX,WAAA,EACE,sIAAA;AAAA,QACF,YAAA,EAAc,kCAAA;AAAA,QACd,gBAAA,EACE,8DAAA;AAAA,QACF,UAAA,EAAY,WAAA;AAAA,QACZ,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,UAAU,sBAAMA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAU,SAAA,EAAU,CAAA;AAAA,QACjD,WAAW,sBAAMA,GAAAA,CAAC,YAAA,EAAA,EAAa,WAAU,SAAA,EAAU;AAAA,OACrD;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;ACyBvB,SAAS,eAAA,CAAgB;AAAA,EACvB,YAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAE1D,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAQ,YAAY,IAAA;AAAM,MACxB,KAAK,MAAA;AACH,QAAA,uBACEA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO,aAAa,KAAA,IAAS,EAAA;AAAA,YAC7B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,cAAA,IAAI,YAAY,UAAA,EAAY,SAAA,IAAa,MAAM,MAAA,GAAS,WAAA,CAAY,WAAW,SAAA,EAAW;AACxF,gBAAA;AAAA,cACF;AACA,cAAA,aAAA,CAAc,KAAK,CAAA;AAAA,YACrB,CAAA;AAAA,YACA,WAAA,EAAY,eAAA;AAAA,YACZ,SAAA,EAAW,YAAY,UAAA,EAAY,SAAA;AAAA,YACnC,SAAA,EAAW,YAAY,UAAA,EAAY,SAAA;AAAA,YACnC,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,MAGJ,KAAK,QAAA;AACH,QAAA,MAAM,eAAA,GAAkB;AAAA,UACtB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAe;AAAA,UAC/C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAmB;AAAA,UACpD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,eAAA;AAAgB,SAChD;AAEA,QAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,aAAa,QAAA,IAAY,QAAA;AAAA,cAChC,aAAA,EAAe,CAAC,KAAA,KAAU,gBAAA,GAAmB,KAAK,CAAA;AAAA,cAElD,QAAA,EAAA;AAAA,gCAAAL,IAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oDACvB,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACAA,GAAAA,CAAC,aAAA,EAAA,EACE,0BAAgB,GAAA,CAAI,CAAC,uBACpBA,GAAAA,CAAC,UAAA,EAAA,EAA0B,KAAA,EAAO,GAAG,KAAA,EAClC,QAAA,EAAA,EAAA,CAAG,SADW,EAAA,CAAG,KAEpB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAO,aAAa,KAAA,KAAU,MAAA,IAAa,aAAa,KAAA,KAAU,IAAA,GAAO,aAAa,KAAA,GAAQ,EAAA;AAAA,cAC9F,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AACvB,gBAAA,IAAI,UAAU,EAAA,EAAI;AAChB,kBAAA,aAAA,CAAc,EAAE,CAAA;AAChB,kBAAA;AAAA,gBACF;AACA,gBAAA,IAAI,QAAA,GAAW,YAAY,YAAA,EAAc,YAAA,GACrC,WAAW,KAAK,CAAA,GAChB,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA;AAEtB,gBAAA,IAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnB,kBAAA;AAAA,gBACF;AAGA,gBAAA,IAAI,WAAA,CAAY,YAAA,EAAc,YAAA,IAAgB,WAAA,CAAY,cAAc,aAAA,EAAe;AACrF,kBAAA,MAAM,gBAAgB,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,GAAG,MAAA,IAAU,CAAA;AACrD,kBAAA,IAAI,aAAA,GAAgB,WAAA,CAAY,YAAA,CAAa,aAAA,EAAe;AAC1D,oBAAA;AAAA,kBACF;AAAA,gBACF;AAGA,gBAAA,IAAI,YAAY,YAAA,EAAc,GAAA,KAAQ,UAAa,QAAA,GAAW,WAAA,CAAY,aAAa,GAAA,EAAK;AAC1F,kBAAA,QAAA,GAAW,YAAY,YAAA,CAAa,GAAA;AAAA,gBACtC;AACA,gBAAA,IAAI,YAAY,YAAA,EAAc,GAAA,KAAQ,UAAa,QAAA,GAAW,WAAA,CAAY,aAAa,GAAA,EAAK;AAC1F,kBAAA,QAAA,GAAW,YAAY,YAAA,CAAa,GAAA;AAAA,gBACtC;AAEA,gBAAA,aAAA,CAAc,QAAQ,CAAA;AAAA,cACxB,CAAA;AAAA,cACA,WAAA,EAAY,iBAAA;AAAA,cACZ,GAAA,EAAK,YAAY,YAAA,EAAc,GAAA;AAAA,cAC/B,GAAA,EAAK,YAAY,YAAA,EAAc,GAAA;AAAA,cAC/B,IAAA,EAAM,WAAA,CAAY,YAAA,EAAc,YAAA,GAAe,IAAA,GAAO,CAAA;AAAA,cACtD,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,MAGJ,KAAK,UAAA;AACH,QAAA,uBACEK,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,aAAa,KAAA,IAAS,EAAA;AAAA,YAC7B,aAAA,EAAe,CAAC,KAAA,KAAU,aAAA,CAAc,KAAK,CAAA;AAAA,YAE7C,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,iBAAc,SAAA,EAAU,2CAAA,EACvB,0BAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,kBAAA,EAAmB,CAAA,EAC9C,CAAA;AAAA,8BACAA,GAAAA,CAAC,aAAA,EAAA,EACE,sBAAY,eAAA,EAAiB,GAAA,CAAI,CAAC,MAAA,qBACjCA,IAAC,UAAA,EAAA,EAA8B,KAAA,EAAO,OAAO,KAAA,EAC1C,QAAA,EAAA,MAAA,CAAO,SADO,MAAA,CAAO,KAExB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,SACF;AAAA,MAGJ,KAAK,SAAA;AACH,QAAA,MAAM,SAAA,GAAY,WAAA,CAAY,aAAA,EAAe,SAAA,IAAa,IAAA;AAC1D,QAAA,MAAM,UAAA,GAAa,WAAA,CAAY,aAAA,EAAe,UAAA,IAAc,KAAA;AAE5D,QAAA,uBACEK,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,YAAA,CAAa,KAAA,KAAU,MAAA,IAAa,YAAA,CAAa,UAAU,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA,GAAI,EAAA;AAAA,YACtG,aAAA,EAAe,CAAC,KAAA,KAAU,aAAA,CAAc,UAAU,MAAM,CAAA;AAAA,YAExD,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,iBAAc,SAAA,EAAU,0CAAA,EACvB,0BAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,WAAA,EAAY,CAAA,EACvC,CAAA;AAAA,8BACAK,KAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAL,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,MAAA,EAAQ,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,gCACpCA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAM,SAAS,QAAA,EAAA,UAAA,EAAW;AAAA,eAAA,EACxC;AAAA;AAAA;AAAA,SACF;AAAA,MAGJ,KAAK,MAAA;AACH,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,UACnC,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,YAAA,EAAa;AAAA,UAC3C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,cAAA,EAAe;AAAA,UAC/C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAY;AAAA,UACzC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAmB;AAAA,UACpD,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,eAAA;AAAgB,SAChD;AAEA,QAAA,MAAM,YAAA,GAAe,YAAA,CAAa,KAAA,GAC7B,OAAO,YAAA,CAAa,KAAA,KAAU,QAAA,GAAW,IAAI,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,GAAI,aAAa,KAAA,GACtF,MAAA;AAEJ,QAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gGAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,IAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,aAAa,QAAA,IAAY,QAAA;AAAA,cAChC,aAAA,EAAe,CAAC,KAAA,KAAU,gBAAA,GAAmB,KAAK,CAAA;AAAA,cAElD,QAAA,EAAA;AAAA,gCAAAL,IAAC,aAAA,EAAA,EAAc,SAAA,EAAU,oDACvB,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,gCACAA,GAAAA,CAAC,aAAA,EAAA,EACE,wBAAc,GAAA,CAAI,CAAC,uBAClBA,GAAAA,CAAC,UAAA,EAAA,EAA0B,KAAA,EAAO,GAAG,KAAA,EAClC,QAAA,EAAA,EAAA,CAAG,SADW,EAAA,CAAG,KAEpB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,WACF;AAAA,0BACAK,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,cAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAK,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,SAAA,EAAW,EAAA;AAAA,kBACT,4EAAA;AAAA,kBACA,CAAC,YAAA,IAAgB;AAAA,iBACnB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAL,GAAAA,CAACO,UAAA,EAAA,EAAa,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,kCAClEP,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EACb,yBACC,MAAA,CAAO,YAAA,EAAc,aAAa,CAAA,GAElC,aAAA,EAEJ;AAAA;AAAA;AAAA,aACF,EACF,CAAA;AAAA,4BACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EAAkC,KAAA,EAAM,SAChE,QAAA,kBAAAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,QAAA,EAAU,YAAA;AAAA,gBACV,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,kBAAA,aAAA,CAAc,IAAI,CAAA;AAClB,kBAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,gBACzB,CAAA;AAAA,gBACA,YAAA,EAAY;AAAA;AAAA,aACd,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAGJ;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iHAAA,EACb,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6EAAA,EAA+E,sBAAY,KAAA,EAAM,CAAA;AAAA,oBACjHA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EACZ,uBAAY,EACf,CAAA;AAAA,oBACAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,QAAA;AAAA,QACT,SAAA,EAAU,6EAAA;AAAA,QACV,YAAA,EAAY,CAAA,OAAA,EAAU,WAAA,CAAY,KAAK,CAAA,OAAA,CAAA;AAAA,QAEvC,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,yBAAA,EAA0B;AAAA;AAAA;AAC9C,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,iBAAA,CAAkB;AAAA,EAChC,eAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAiB;AACnB,CAAA,EAA2B;AACzB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAyB,cAAc,CAAA;AAC/E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAG1D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,eAAA,CAAgB,cAAc,CAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAc,CAAC,CAAA;AAE3B,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAuB;AAE7C,IAAA,IAAI,aAAa,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAA,EAAG;AACpD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAc,eAAA,CAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,UAAU,UAAU,CAAA;AACtE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,GAAoB,EAAA;AACxB,IAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,MAAA,YAAA,GAAe,KAAA;AAAA,IACjB,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,QAAA,EAAU;AACxC,MAAA,YAAA,GAAe,WAAA,CAAY,cAAc,GAAA,IAAO,CAAA;AAAA,IAClD,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,MAAA,EAAQ;AACtC,MAAA,YAAA,uBAAmB,IAAA,EAAK;AAAA,IAC1B;AAEA,IAAA,MAAM,SAAA,GAA0B;AAAA,MAC9B,KAAA,EAAO,UAAA;AAAA,MACP,UAAW,WAAA,CAAY,IAAA,KAAS,YAAY,WAAA,CAAY,IAAA,KAAS,SAAU,QAAA,GAAW,MAAA;AAAA,MACtF,KAAA,EAAO;AAAA,KACT;AACA,IAAA,eAAA,CAAgB,CAAC,GAAG,YAAA,EAAc,SAAS,CAAC,CAAA;AAC5C,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,KAAuB;AAChD,IAAA,eAAA,CAAgB,aAAa,MAAA,CAAO,CAAA,EAAA,KAAM,EAAA,CAAG,KAAA,KAAU,UAAU,CAAC,CAAA;AAAA,EACpE,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,UAAA,EAAoB,KAAA,KAAe;AAC5D,IAAA,eAAA;AAAA,MACE,YAAA,CAAa,GAAA;AAAA,QAAI,CAAA,EAAA,KACf,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,OAAM,GAAI;AAAA;AAC/C,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,UAAA,EAAoB,QAAA,KAAqB;AACrE,IAAA,eAAA;AAAA,MACE,YAAA,CAAa,GAAA;AAAA,QAAI,CAAA,EAAA,KACf,GAAG,KAAA,KAAU,UAAA,GAAa,EAAE,GAAG,EAAA,EAAI,UAAS,GAAI;AAAA;AAClD,KACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AAExB,IAAA,cAAA,CAAe,CAAC,GAAG,YAAY,CAAC,CAAA;AAChC,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,eAAA,CAAgB,cAAc,CAAA;AAC9B,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,EACpB,CAAA;AAGA,EAAA,MAAM,uBAAuB,eAAA,CAAgB,MAAA;AAAA,IAC3C,CAAA,EAAA,KAAM,CAAC,YAAA,CAAa,IAAA,CAAK,QAAM,EAAA,CAAG,KAAA,KAAU,GAAG,KAAK;AAAA,GACtD;AAGA,EAAA,MAAM,cAAA,GAAiB,CAAC,UAAA,KAAgD;AACtE,IAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,CAAA,EAAA,KAAM,EAAA,CAAG,UAAU,UAAU,CAAA;AAAA,EAC3D,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB,eAAe,MAAA,GAAS,CAAA;AAGjD,EAAA,MAAM,iBAAiB,gBAAA,mBACrBK,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sCAAA,EACb,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EAA+C,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,IAC5E,cAAA,CAAe,GAAA,CAAI,CAAC,YAAA,KAAiB;AACpC,MAAA,MAAM,WAAA,GAAc,cAAA,CAAe,YAAA,CAAa,KAAK,CAAA;AACrD,MAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,MAAA,IAAI,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,KAAK,CAAA;AAC5C,MAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,QAAA,YAAA,GAAe,YAAA,CAAa,QACvB,WAAA,CAAY,aAAA,EAAe,aAAa,IAAA,GACxC,WAAA,CAAY,eAAe,UAAA,IAAc,KAAA;AAAA,MAChD,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,UAAA,EAAY;AAC1C,QAAA,MAAM,MAAA,GAAS,YAAY,eAAA,EAAiB,IAAA,CAAK,SAAO,GAAA,CAAI,KAAA,KAAU,aAAa,KAAK,CAAA;AACxF,QAAA,YAAA,GAAe,QAAQ,KAAA,IAAS,YAAA;AAAA,MAClC,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,KAAS,MAAA,EAAQ;AACtC,QAAA,MAAM,SAAA,GAAY,aAAa,KAAA,YAAiB,IAAA,GAC5C,aAAa,KAAA,GACb,IAAI,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA;AAC/B,QAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,OAAA,EAAS,CAAA,EAAG;AAC/B,UAAA,YAAA,GAAe,MAAA,CAAO,WAAW,aAAa,CAAA;AAAA,QAChD;AAAA,MACF;AAEA,MAAA,MAAM,gBAAgB,YAAA,CAAa,QAAA,GAC/B,YAAA,CAAa,QAAA,CAAS,QAAQ,GAAA,EAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAA,KAAK,CAAA,CAAE,WAAA,EAAa,IAAI,GAAA,GACjF,EAAA;AAEJ,MAAA,uBACEK,IAAAA,CAAC,KAAA,EAAA,EAA6B,SAAA,EAAU,0BAAA,EACrC,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,KAAA;AAAA,QAAM,IAAA;AAAA,QAAG,aAAA;AAAA,QAAe;AAAA,OAAA,EAAA,EAD7B,aAAa,KAEvB,CAAA;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,oBAEAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAqC,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAGvE,EAAA,uBACEK,IAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EAClC,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAC,eAAA,EAAA,EACC,QAAA,kBAAAK,IAAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAL,GAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAO,IAAA,EACpB,QAAA,kBAAAK,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAU,mBAAA;AAAA,UACV,YAAA,EAAW,oBAAA;AAAA,UAEX,QAAA,EAAA;AAAA,4BAAAL,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,8BAAA;AAAA,kBACA,gBAAA,IAAoB;AAAA;AACtB;AAAA,aACF;AAAA,YAAE;AAAA;AAAA;AAAA,SAGN,CAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,cAAA,EACH;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACAK,IAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,wEAAA,EACvB,QAAA,EAAA;AAAA,sBAAAA,KAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,eAAY,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,wBAC1BA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,QAAA,EAAA,4EAAA,EAEnB;AAAA,OAAA,EACF,CAAA;AAAA,sBACAK,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EAEb,QAAA,EAAA;AAAA,wBAAAL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,kBAAAK,KAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,cAAA,EAAgB,YAAA,EAAc,iBAAA,EAC3C,QAAA,EAAA;AAAA,0BAAAL,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAK,IAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,UAAA;AAAA,cACL,eAAA,EAAe,cAAA;AAAA,cACf,SAAA,EAAU,+CAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,kCAAAL,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,CAAA;AAAA,kCAC7CA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,WAAA,EAAS;AAAA,iBAAA,EACjB,CAAA;AAAA,gCACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,mDAAA,EAAoD;AAAA;AAAA;AAAA,WAChF,EACF,CAAA;AAAA,0BACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,iCAAA,EACxB,QAAA,kBAAAK,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAL,GAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAY,kBAAA,EAAmB,WAAU,mBAAA,EAAoB,CAAA;AAAA,4BAC3EK,KAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAAC,gBAAa,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,8BAC9BA,GAAAA,CAAC,YAAA,EAAA,EACE,+BAAqB,GAAA,CAAI,CAAC,0BACzBK,IAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBAEC,OAAO,KAAA,CAAM,KAAA;AAAA,kBACb,QAAA,EAAU,MAAM,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAAA,kBAC1C,SAAA,EAAU,kBAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAL,GAAAA;AAAA,sBAACQ,KAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,EAAA;AAAA,0BACT,6BAAA;AAAA,0BACwB;AAAA;AAC1B;AAAA,qBACF;AAAA,oBACC,KAAA,CAAM;AAAA;AAAA,iBAAA;AAAA,gBAXF,KAAA,CAAM;AAAA,eAad,CAAA,EACH;AAAA,aAAA,EACF;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAGC,YAAA,CAAa,MAAA,GAAS,CAAA,mBACrBR,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,YAAA,KAAiB;AAClC,UAAA,MAAM,WAAA,GAAc,cAAA,CAAe,YAAA,CAAa,KAAK,CAAA;AACrD,UAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,UAAA,uBACEA,GAAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cAEC,YAAA;AAAA,cACA,WAAA;AAAA,cACA,eAAe,CAAC,KAAA,KAAU,iBAAA,CAAkB,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,cACrE,kBAAkB,CAAC,QAAA,KAAa,oBAAA,CAAqB,YAAA,CAAa,OAAO,QAAQ,CAAA;AAAA,cACjF,QAAA,EAAU,MAAM,iBAAA,CAAkB,YAAA,CAAa,KAAK;AAAA,aAAA;AAAA,YAL/C,YAAA,CAAa;AAAA,WAMpB;AAAA,QAEJ,CAAC,GACH,CAAA,mBAEAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0EAAyE,QAAA,EAAA,sEAAA,EAExF;AAAA,OAAA,EAEJ,CAAA;AAAA,sBACAK,KAAC,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,MAAA,GAAS,qBACrBA,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,cAAA;AAAA,YACT,SAAA,EAAU,mBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAL,GAAAA,CAACS,CAAAA,EAAA,EAAE,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAEnD;AAAA,wBAEFT,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,SAAA,EAAU,eAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,gBAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","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 <CommandEmpty>No fields found.</CommandEmpty>\n <CommandGroup>\n {availableFieldsToAdd.map((field) => (\n <CommandItem\n key={field.value}\n value={field.value}\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 </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"]}
|