@algodomain/smart-forms 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,6 +55,8 @@ interface FormConfig {
55
55
  showReset?: boolean;
56
56
  showTabNumbers?: boolean;
57
57
  authentication?: AuthenticationConfig;
58
+ includeQueryParams?: boolean;
59
+ queryParamsToInclude?: string[];
58
60
  }
59
61
  interface FormContextType {
60
62
  formData: any;
@@ -55,6 +55,8 @@ interface FormConfig {
55
55
  showReset?: boolean;
56
56
  showTabNumbers?: boolean;
57
57
  authentication?: AuthenticationConfig;
58
+ includeQueryParams?: boolean;
59
+ queryParamsToInclude?: string[];
58
60
  }
59
61
  interface FormContextType {
60
62
  formData: any;
@@ -1,4 +1,4 @@
1
- import { useFormField, useFieldDetection, Label, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, cn, Input } from './chunk-IG4XDQMV.js';
1
+ import { useFormField, useFieldDetection, Label, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, cn, Input } from './chunk-EE6VZXWC.js';
2
2
  import * as React4 from 'react';
3
3
  import { useRef, useEffect, useMemo, useState } from 'react';
4
4
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
@@ -945,5 +945,5 @@ var SmartTags = ({
945
945
  };
946
946
 
947
947
  export { Button, Popover, PopoverContent, PopoverTrigger, SmartCheckbox, SmartDatePicker, SmartRadioGroup, SmartSelect, SmartTags };
948
- //# sourceMappingURL=chunk-6WAEAWTD.js.map
949
- //# sourceMappingURL=chunk-6WAEAWTD.js.map
948
+ //# sourceMappingURL=chunk-5A5WAAED.js.map
949
+ //# sourceMappingURL=chunk-5A5WAAED.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/checkbox.tsx","../src/smart-fields/SmartCheckbox.tsx","../src/components/ui/radio-group.tsx","../src/smart-fields/SmartRadioGroup.tsx","../src/components/ui/select.tsx","../src/smart-fields/SmartSelect.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/smart-fields/SmartDatePicker.tsx","../src/smart-fields/SmartTags.tsx"],"names":["jsx","useRef","useEffect","jsxs","InfoIcon","CheckIcon","className","props","ChevronDownIcon","CalendarIcon","useState","value"],"mappings":"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","file":"chunk-6WAEAWTD.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Checkbox } from '../components/ui/checkbox';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\nexport interface SmartCheckboxProps {\n field: string;\n label?: string;\n className?: string;\n validation?: any;\n required?: boolean;\n defaultValue?: boolean; // Default value for the checkbox\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartCheckbox: React.FC<SmartCheckboxProps> = ({\n field,\n label,\n className = '',\n validation,\n required = false,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n ref={fieldRef}\n checked={value || false}\n onCheckedChange={(checked: boolean) => onChange(!!checked)}\n className={error ? 'border-destructive' : ''}\n data-field={field}\n id={`${field}-checkbox`}\n />\n <Label htmlFor={`${field}-checkbox`} className=\"text-sm font-normal cursor-pointer\">\n {label || field} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n </div>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground ml-6\">{subLabel}</p>\n )}\n </div>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\n\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { RadioGroup, RadioGroupItem } from '../components/ui/radio-group';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\nexport interface SmartRadioGroupOption {\n value: string;\n label: string;\n}\n\nexport interface SmartRadioGroupProps {\n field: string;\n label?: string;\n options: SmartRadioGroupOption[];\n name?: string;\n alignment?: 'vertical' | 'horizontal';\n className?: string;\n validation?: any;\n required?: boolean;\n defaultValue?: string; // Default value for the radio group\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartRadioGroup: React.FC<SmartRadioGroupProps> = ({\n field,\n label,\n options,\n name,\n alignment = 'vertical',\n className = '',\n validation,\n required = false,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n <RadioGroup\n value={value || ''}\n onValueChange={(newValue) => onChange(newValue)}\n className={alignment === 'horizontal' ? 'flex flex-wrap gap-4' : 'grid gap-3'}\n ref={fieldRef}\n data-field={field}\n name={name || field}\n >\n {options.map(option => (\n <div key={option.value} className=\"flex items-center space-x-2\">\n <RadioGroupItem\n value={option.value}\n id={`${field}-${option.value}`}\n />\n <Label\n htmlFor={`${field}-${option.value}`}\n className=\"text-sm font-normal cursor-pointer\"\n >\n {option.label}\n </Label>\n </div>\n ))}\n </RadioGroup>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\n\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\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)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import React, { useEffect, useRef } from 'react';\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../components/ui/select';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\n\nexport interface SmartSelectOption {\n value: string;\n label: string;\n}\n\nexport interface SmartSelectProps {\n field: string;\n label?: string;\n options: SmartSelectOption[];\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n defaultValue?: string; // Default value for the select\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartSelect: React.FC<SmartSelectProps> = ({\n field,\n label,\n options,\n className = '',\n placeholder,\n validation,\n required = false,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n <Select\n value={value || ''}\n onValueChange={(newValue) => onChange(newValue)}\n >\n <SelectTrigger \n ref={fieldRef}\n className={`w-full ${error ? 'border-destructive' : ''} ${className}`}\n data-field={field}\n >\n <SelectValue placeholder={placeholder || `Select ${label || field}`} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\n\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, buttonVariants } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { format } from 'date-fns';\nimport { Calendar as CalendarIcon, InfoIcon } from 'lucide-react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Button } from '../components/ui/button';\nimport { Calendar } from '../components/ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../components/ui/popover';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { Label } from '../components/ui/label';\nimport { cn } from '../lib/utils';\n\nexport interface SmartDatePickerProps {\n field: string;\n label?: string;\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n allowPast?: boolean;\n allowFuture?: boolean;\n /**\n * When true, value will be stored/returned as ISO string (yyyy-MM-dd).\n * Otherwise the underlying form value will be a Date instance.\n */\n valueAsString?: boolean;\n /** Optional minimum selectable date */\n minDate?: Date;\n /** Optional maximum selectable date */\n maxDate?: Date;\n /** Default value for the date picker (can be Date or string depending on valueAsString) */\n defaultValue?: Date | string;\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartDatePicker: React.FC<SmartDatePickerProps> = ({\n field,\n label,\n className = '',\n placeholder,\n validation,\n required = false,\n allowPast = true,\n allowFuture = true,\n valueAsString = true,\n minDate,\n maxDate,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n // Internal state mirrors the Date value for Calendar\n const parsedValue: Date | undefined = useMemo(() => {\n if (!value) return undefined;\n if (value instanceof Date) return value;\n const d = new Date(value);\n return isNaN(d.getTime()) ? undefined : d;\n }, [value]);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n const today = useMemo(() => new Date(), []);\n\n const disabledMatcher = (date: Date) => {\n // Enforce allowPast / allowFuture\n if (!allowPast) {\n const startOfToday = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n if (date < startOfToday) return true;\n }\n if (!allowFuture) {\n const startOfTomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);\n if (date >= startOfTomorrow) return true;\n }\n if (minDate && date < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return true;\n if (maxDate && date > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return true;\n return false;\n };\n\n const handleSelect = (selected: Date | undefined) => {\n if (!selected) {\n onChange(undefined);\n return;\n }\n if (valueAsString) {\n const iso = format(selected, 'yyyy-MM-dd');\n onChange(iso);\n } else {\n onChange(selected);\n }\n setOpen(false);\n };\n\n const buttonText = useMemo(() => {\n if (!parsedValue) return placeholder || `Select ${label || field}`;\n return format(parsedValue, 'dd/MM/yyyy');\n }, [parsedValue, placeholder, label, field]);\n\n return (\n <div className={cn('flex-1 min-w-0', className)}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={fieldRef as any}\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal',\n !parsedValue && 'text-muted-foreground',\n error && 'border-destructive'\n )}\n data-field={field}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {buttonText}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={parsedValue}\n onSelect={handleSelect}\n disabled={disabledMatcher}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartDatePicker;\n\n\n","import React, { useEffect, useRef, useState, type KeyboardEvent } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Input } from '../components/ui/input';\nimport { Button } from '../components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { X, InfoIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\n// =============================================================================\n// SMART TAGS TYPES\n// =============================================================================\n\nexport interface Tag {\n id: string;\n text: string;\n}\n\nexport interface SmartTagsProps {\n field: string;\n label?: string;\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n maxTags?: number; // Maximum number of tags allowed\n defaultValue?: string[]; // Default tag texts\n maxLength?: number; // Maximum length per tag\n minLength?: number; // Minimum length per tag\n allowDuplicates?: boolean; // Allow duplicate tags\n disabled?: boolean;\n onTagAdd?: (tagText: string) => void;\n onTagRemove?: (tagText: string) => void;\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\n// =============================================================================\n// SMART TAGS COMPONENT\n// =============================================================================\n\nexport const SmartTags: React.FC<SmartTagsProps> = ({\n field,\n label,\n className = '',\n placeholder = 'Type and press Enter...',\n validation,\n required = false,\n maxTags,\n defaultValue,\n maxLength,\n minLength,\n allowDuplicates = false,\n disabled = false,\n onTagAdd,\n onTagRemove,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n // Local state for tags and input\n const [tags, setTags] = useState<string[]>([]);\n const [inputValue, setInputValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Register validation for this field\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n // Auto-register field if in field detection context\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (!value || (Array.isArray(value) && value.length === 0))) {\n setTags(defaultValue);\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Sync local tags state with form value\n useEffect(() => {\n if (Array.isArray(value)) {\n setTags(value);\n }\n }, [value]);\n\n // Add a new tag\n const addTag = (text: string) => {\n const trimmedText = text.trim();\n \n if (!trimmedText) return;\n \n // Check min/max length\n if (minLength && trimmedText.length < minLength) return;\n if (maxLength && trimmedText.length > maxLength) return;\n \n // Check max tags limit\n if (maxTags && tags.length >= maxTags) return;\n \n // Check for duplicates if not allowed\n if (!allowDuplicates && tags.some(tag => tag.toLowerCase() === trimmedText.toLowerCase())) {\n return;\n }\n\n const newTags = [...tags, trimmedText];\n setTags(newTags);\n onChange(newTags);\n \n if (onTagAdd) {\n onTagAdd(trimmedText);\n }\n };\n\n // Remove a tag\n const removeTag = (tagText: string) => {\n const newTags = tags.filter(tag => tag !== tagText);\n \n setTags(newTags);\n onChange(newTags);\n \n if (onTagRemove) {\n onTagRemove(tagText);\n }\n };\n\n // Handle input key events\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' || e.key === ',') {\n e.preventDefault();\n addTag(inputValue);\n setInputValue('');\n } else if (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n // Remove last tag when backspace is pressed on empty input\n removeTag(tags[tags.length - 1]);\n }\n };\n\n // Handle input change\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setInputValue(value);\n };\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n {maxTags && (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n ({tags.length}/{maxTags})\n </span>\n )}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n \n <div className=\"relative\">\n {/* Tags container */}\n <div \n ref={fieldRef as any}\n className={cn(\n \"min-h-[40px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n \"flex flex-wrap items-center gap-2 cursor-text\",\n error && \"border-destructive focus-within:ring-destructive\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n data-field={field}\n onClick={() => inputRef.current?.focus()}\n >\n {/* Display tags */}\n {tags.map((tagText, index) => (\n <div\n key={`${tagText}-${index}`}\n className=\"inline-flex items-center gap-1 px-2 py-1 bg-primary text-primary-foreground rounded-md text-sm\"\n >\n <span>{tagText}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-4 w-4 p-0 hover:bg-primary-foreground/20 text-primary-foreground\"\n onClick={(e) => {\n e.stopPropagation();\n removeTag(tagText);\n }}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n \n {/* Input field */}\n <Input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={tags.length === 0 ? placeholder : ''}\n className=\"flex-1 min-w-[120px] border-0 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 p-0 h-auto\"\n disabled={disabled}\n maxLength={maxLength}\n />\n </div>\n\n </div>\n \n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartTags;\n\n"]}
1
+ {"version":3,"sources":["../src/components/ui/checkbox.tsx","../src/smart-fields/SmartCheckbox.tsx","../src/components/ui/radio-group.tsx","../src/smart-fields/SmartRadioGroup.tsx","../src/components/ui/select.tsx","../src/smart-fields/SmartSelect.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/smart-fields/SmartDatePicker.tsx","../src/smart-fields/SmartTags.tsx"],"names":["jsx","useRef","useEffect","jsxs","InfoIcon","CheckIcon","className","props","ChevronDownIcon","CalendarIcon","useState","value"],"mappings":"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","file":"chunk-5A5WAAED.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Checkbox } from '../components/ui/checkbox';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\nexport interface SmartCheckboxProps {\n field: string;\n label?: string;\n className?: string;\n validation?: any;\n required?: boolean;\n defaultValue?: boolean; // Default value for the checkbox\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartCheckbox: React.FC<SmartCheckboxProps> = ({\n field,\n label,\n className = '',\n validation,\n required = false,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n ref={fieldRef}\n checked={value || false}\n onCheckedChange={(checked: boolean) => onChange(!!checked)}\n className={error ? 'border-destructive' : ''}\n data-field={field}\n id={`${field}-checkbox`}\n />\n <Label htmlFor={`${field}-checkbox`} className=\"text-sm font-normal cursor-pointer\">\n {label || field} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n </div>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground ml-6\">{subLabel}</p>\n )}\n </div>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\n\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { RadioGroup, RadioGroupItem } from '../components/ui/radio-group';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\nexport interface SmartRadioGroupOption {\n value: string;\n label: string;\n}\n\nexport interface SmartRadioGroupProps {\n field: string;\n label?: string;\n options: SmartRadioGroupOption[];\n name?: string;\n alignment?: 'vertical' | 'horizontal';\n className?: string;\n validation?: any;\n required?: boolean;\n defaultValue?: string; // Default value for the radio group\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartRadioGroup: React.FC<SmartRadioGroupProps> = ({\n field,\n label,\n options,\n name,\n alignment = 'vertical',\n className = '',\n validation,\n required = false,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n <RadioGroup\n value={value || ''}\n onValueChange={(newValue) => onChange(newValue)}\n className={alignment === 'horizontal' ? 'flex flex-wrap gap-4' : 'grid gap-3'}\n ref={fieldRef}\n data-field={field}\n name={name || field}\n >\n {options.map(option => (\n <div key={option.value} className=\"flex items-center space-x-2\">\n <RadioGroupItem\n value={option.value}\n id={`${field}-${option.value}`}\n />\n <Label\n htmlFor={`${field}-${option.value}`}\n className=\"text-sm font-normal cursor-pointer\"\n >\n {option.label}\n </Label>\n </div>\n ))}\n </RadioGroup>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\n\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\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)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import React, { useEffect, useRef } from 'react';\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../components/ui/select';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\n\nexport interface SmartSelectOption {\n value: string;\n label: string;\n}\n\nexport interface SmartSelectProps {\n field: string;\n label?: string;\n options: SmartSelectOption[];\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n defaultValue?: string; // Default value for the select\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartSelect: React.FC<SmartSelectProps> = ({\n field,\n label,\n options,\n className = '',\n placeholder,\n validation,\n required = false,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n <Select\n value={value || ''}\n onValueChange={(newValue) => onChange(newValue)}\n >\n <SelectTrigger \n ref={fieldRef}\n className={`w-full ${error ? 'border-destructive' : ''} ${className}`}\n data-field={field}\n >\n <SelectValue placeholder={placeholder || `Select ${label || field}`} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\n\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, buttonVariants } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { format } from 'date-fns';\nimport { Calendar as CalendarIcon, InfoIcon } from 'lucide-react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Button } from '../components/ui/button';\nimport { Calendar } from '../components/ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../components/ui/popover';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { Label } from '../components/ui/label';\nimport { cn } from '../lib/utils';\n\nexport interface SmartDatePickerProps {\n field: string;\n label?: string;\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n allowPast?: boolean;\n allowFuture?: boolean;\n /**\n * When true, value will be stored/returned as ISO string (yyyy-MM-dd).\n * Otherwise the underlying form value will be a Date instance.\n */\n valueAsString?: boolean;\n /** Optional minimum selectable date */\n minDate?: Date;\n /** Optional maximum selectable date */\n maxDate?: Date;\n /** Default value for the date picker (can be Date or string depending on valueAsString) */\n defaultValue?: Date | string;\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\nexport const SmartDatePicker: React.FC<SmartDatePickerProps> = ({\n field,\n label,\n className = '',\n placeholder,\n validation,\n required = false,\n allowPast = true,\n allowFuture = true,\n valueAsString = true,\n minDate,\n maxDate,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n // Internal state mirrors the Date value for Calendar\n const parsedValue: Date | undefined = useMemo(() => {\n if (!value) return undefined;\n if (value instanceof Date) return value;\n const d = new Date(value);\n return isNaN(d.getTime()) ? undefined : d;\n }, [value]);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (value === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n const today = useMemo(() => new Date(), []);\n\n const disabledMatcher = (date: Date) => {\n // Enforce allowPast / allowFuture\n if (!allowPast) {\n const startOfToday = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n if (date < startOfToday) return true;\n }\n if (!allowFuture) {\n const startOfTomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);\n if (date >= startOfTomorrow) return true;\n }\n if (minDate && date < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return true;\n if (maxDate && date > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return true;\n return false;\n };\n\n const handleSelect = (selected: Date | undefined) => {\n if (!selected) {\n onChange(undefined);\n return;\n }\n if (valueAsString) {\n const iso = format(selected, 'yyyy-MM-dd');\n onChange(iso);\n } else {\n onChange(selected);\n }\n setOpen(false);\n };\n\n const buttonText = useMemo(() => {\n if (!parsedValue) return placeholder || `Select ${label || field}`;\n return format(parsedValue, 'dd/MM/yyyy');\n }, [parsedValue, placeholder, label, field]);\n\n return (\n <div className={cn('flex-1 min-w-0', className)}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={fieldRef as any}\n variant=\"outline\"\n className={cn(\n 'w-full justify-start text-left font-normal',\n !parsedValue && 'text-muted-foreground',\n error && 'border-destructive'\n )}\n data-field={field}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {buttonText}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={parsedValue}\n onSelect={handleSelect}\n disabled={disabledMatcher}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartDatePicker;\n\n\n","import React, { useEffect, useRef, useState, type KeyboardEvent } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Input } from '../components/ui/input';\nimport { Button } from '../components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { X, InfoIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\n// =============================================================================\n// SMART TAGS TYPES\n// =============================================================================\n\nexport interface Tag {\n id: string;\n text: string;\n}\n\nexport interface SmartTagsProps {\n field: string;\n label?: string;\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n maxTags?: number; // Maximum number of tags allowed\n defaultValue?: string[]; // Default tag texts\n maxLength?: number; // Maximum length per tag\n minLength?: number; // Minimum length per tag\n allowDuplicates?: boolean; // Allow duplicate tags\n disabled?: boolean;\n onTagAdd?: (tagText: string) => void;\n onTagRemove?: (tagText: string) => void;\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n}\n\n// =============================================================================\n// SMART TAGS COMPONENT\n// =============================================================================\n\nexport const SmartTags: React.FC<SmartTagsProps> = ({\n field,\n label,\n className = '',\n placeholder = 'Type and press Enter...',\n validation,\n required = false,\n maxTags,\n defaultValue,\n maxLength,\n minLength,\n allowDuplicates = false,\n disabled = false,\n onTagAdd,\n onTagRemove,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n\n // Local state for tags and input\n const [tags, setTags] = useState<string[]>([]);\n const [inputValue, setInputValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Register validation for this field\n useEffect(() => {\n if (validation && !hasRegistered.current) {\n hasRegistered.current = true;\n registerValidation(field, validation);\n }\n }, [validation, field, registerValidation]);\n\n // Auto-register field if in field detection context\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(field);\n }\n }, [field, fieldDetection]);\n\n // Set default value if provided and field is empty\n useEffect(() => {\n if (defaultValue !== undefined && !hasSetDefault.current && (!value || (Array.isArray(value) && value.length === 0))) {\n setTags(defaultValue);\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Sync local tags state with form value\n useEffect(() => {\n if (Array.isArray(value)) {\n setTags(value);\n }\n }, [value]);\n\n // Add a new tag\n const addTag = (text: string) => {\n const trimmedText = text.trim();\n \n if (!trimmedText) return;\n \n // Check min/max length\n if (minLength && trimmedText.length < minLength) return;\n if (maxLength && trimmedText.length > maxLength) return;\n \n // Check max tags limit\n if (maxTags && tags.length >= maxTags) return;\n \n // Check for duplicates if not allowed\n if (!allowDuplicates && tags.some(tag => tag.toLowerCase() === trimmedText.toLowerCase())) {\n return;\n }\n\n const newTags = [...tags, trimmedText];\n setTags(newTags);\n onChange(newTags);\n \n if (onTagAdd) {\n onTagAdd(trimmedText);\n }\n };\n\n // Remove a tag\n const removeTag = (tagText: string) => {\n const newTags = tags.filter(tag => tag !== tagText);\n \n setTags(newTags);\n onChange(newTags);\n \n if (onTagRemove) {\n onTagRemove(tagText);\n }\n };\n\n // Handle input key events\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' || e.key === ',') {\n e.preventDefault();\n addTag(inputValue);\n setInputValue('');\n } else if (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n // Remove last tag when backspace is pressed on empty input\n removeTag(tags[tags.length - 1]);\n }\n };\n\n // Handle input change\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setInputValue(value);\n };\n\n return (\n <div className={`flex-1 min-w-0 ${className}`}>\n {label && (\n <div className=\"mb-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <Label className=\"text-sm font-medium text-foreground\">\n {label} {required && <span className=\"text-destructive\">*</span>}\n {maxTags && (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n ({tags.length}/{maxTags})\n </span>\n )}\n </Label>\n {info && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <InfoIcon className=\"h-4 w-4 text-muted-foreground cursor-pointer mr-2\" />\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{info}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n {subLabel && (\n <p className=\"text-xs text-muted-foreground mt-1\">{subLabel}</p>\n )}\n </div>\n )}\n \n <div className=\"relative\">\n {/* Tags container */}\n <div \n ref={fieldRef as any}\n className={cn(\n \"min-h-[40px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n \"flex flex-wrap items-center gap-2 cursor-text\",\n error && \"border-destructive focus-within:ring-destructive\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n data-field={field}\n onClick={() => inputRef.current?.focus()}\n >\n {/* Display tags */}\n {tags.map((tagText, index) => (\n <div\n key={`${tagText}-${index}`}\n className=\"inline-flex items-center gap-1 px-2 py-1 bg-primary text-primary-foreground rounded-md text-sm\"\n >\n <span>{tagText}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-4 w-4 p-0 hover:bg-primary-foreground/20 text-primary-foreground\"\n onClick={(e) => {\n e.stopPropagation();\n removeTag(tagText);\n }}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n ))}\n \n {/* Input field */}\n <Input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={tags.length === 0 ? placeholder : ''}\n className=\"flex-1 min-w-[120px] border-0 shadow-none focus-visible:ring-0 focus-visible:ring-offset-0 p-0 h-auto\"\n disabled={disabled}\n maxLength={maxLength}\n />\n </div>\n\n </div>\n \n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartTags;\n\n"]}
@@ -1,4 +1,4 @@
1
- import { createContext, useState, useRef, useCallback, useContext, useEffect } from 'react';
1
+ import { createContext, useCallback, useState, useRef, useContext, useEffect } from 'react';
2
2
  import { z } from 'zod';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
  import { clsx } from 'clsx';
@@ -13,6 +13,23 @@ var SmartFormProvider = ({
13
13
  config,
14
14
  initialData = {}
15
15
  }) => {
16
+ const getQueryParams = useCallback((allowedParams) => {
17
+ const params = new URLSearchParams(window.location.search);
18
+ const result = {};
19
+ if (allowedParams && allowedParams.length > 0) {
20
+ allowedParams.forEach((key) => {
21
+ const value = params.get(key);
22
+ if (value !== null) {
23
+ result[key] = value;
24
+ }
25
+ });
26
+ } else {
27
+ params.forEach((value, key) => {
28
+ result[key] = value;
29
+ });
30
+ }
31
+ return result;
32
+ }, []);
16
33
  const getStorageKey = () => {
17
34
  return config.storageKey || "smart-form-data";
18
35
  };
@@ -148,8 +165,13 @@ var SmartFormProvider = ({
148
165
  console.warn("No API endpoint provided");
149
166
  return;
150
167
  }
168
+ let dataToSubmit = formData;
169
+ if (config.includeQueryParams) {
170
+ const queryParams = getQueryParams(config.queryParamsToInclude);
171
+ dataToSubmit = { ...queryParams, ...formData };
172
+ }
151
173
  if (config.logFormData) {
152
- console.log("\u{1F4E4} Submitting form data:", formData);
174
+ console.log("\u{1F4E4} Submitting form data:", dataToSubmit);
153
175
  console.log("\u{1F3AF} API endpoint:", config.api);
154
176
  }
155
177
  const toJsonSafe = (val) => {
@@ -165,7 +187,7 @@ var SmartFormProvider = ({
165
187
  }
166
188
  return val;
167
189
  };
168
- let jsonPayload = toJsonSafe(formData);
190
+ let jsonPayload = toJsonSafe(dataToSubmit);
169
191
  if (config.transformData) {
170
192
  jsonPayload = config.transformData(jsonPayload);
171
193
  }
@@ -245,7 +267,7 @@ var SmartFormProvider = ({
245
267
  } finally {
246
268
  setIsLoading(false);
247
269
  }
248
- }, [formData, config, validateAllFields]);
270
+ }, [formData, config, validateAllFields, getQueryParams]);
249
271
  const validateFormAndGetResult = useCallback(() => {
250
272
  return validateAllFields();
251
273
  }, [validateAllFields]);
@@ -288,8 +310,13 @@ var SmartFormProvider = ({
288
310
  console.warn("No save draft API endpoint provided");
289
311
  return;
290
312
  }
313
+ let dataToSave = formData;
314
+ if (config.includeQueryParams) {
315
+ const queryParams = getQueryParams(config.queryParamsToInclude);
316
+ dataToSave = { ...queryParams, ...formData };
317
+ }
291
318
  if (config.logFormData) {
292
- console.log("\u{1F4BE} Saving draft data:", formData);
319
+ console.log("\u{1F4BE} Saving draft data:", dataToSave);
293
320
  console.log("\u{1F3AF} Draft API endpoint:", config.saveDraftApi);
294
321
  }
295
322
  setIsDraftSaving(true);
@@ -307,7 +334,7 @@ var SmartFormProvider = ({
307
334
  const fetchOptions = {
308
335
  method: "POST",
309
336
  headers,
310
- body: JSON.stringify(formData)
337
+ body: JSON.stringify(dataToSave)
311
338
  };
312
339
  if (config.authentication?.enable) {
313
340
  fetchOptions.credentials = "include";
@@ -333,7 +360,7 @@ var SmartFormProvider = ({
333
360
  } finally {
334
361
  setIsDraftSaving(false);
335
362
  }
336
- }, [formData, config]);
363
+ }, [formData, config, getQueryParams]);
337
364
  const resetForm = useCallback(() => {
338
365
  setFormData(initialData);
339
366
  setErrors({});
@@ -600,5 +627,5 @@ var SmartInput = ({
600
627
  };
601
628
 
602
629
  export { FieldDetectionContext, Input, Label, SmartFormProvider, SmartInput, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, cn, useFieldDetection, useFormField, useSmartForm };
603
- //# sourceMappingURL=chunk-IG4XDQMV.js.map
604
- //# sourceMappingURL=chunk-IG4XDQMV.js.map
630
+ //# sourceMappingURL=chunk-EE6VZXWC.js.map
631
+ //# sourceMappingURL=chunk-EE6VZXWC.js.map