@algodomain/smart-forms 0.1.2 → 0.1.3

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.
Files changed (35) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +243 -0
  3. package/dist/{SmartFormProvider-DyJoDBjQ.d.cts → SmartFormProvider-BdyRQakk.d.cts} +1 -0
  4. package/dist/{SmartFormProvider-DyJoDBjQ.d.ts → SmartFormProvider-BdyRQakk.d.ts} +1 -0
  5. package/dist/{SmartTags-HmvmCJPT.d.cts → SmartTags-DPqw9PG1.d.cts} +12 -1
  6. package/dist/{SmartTags-HmvmCJPT.d.ts → SmartTags-DPqw9PG1.d.ts} +12 -1
  7. package/dist/{chunk-5LRBJEZW.js → chunk-3L7TKJIB.js} +15 -6
  8. package/dist/chunk-3L7TKJIB.js.map +1 -0
  9. package/dist/{chunk-KDPN4CHW.js → chunk-CT6GW6PK.js} +44 -11
  10. package/dist/chunk-CT6GW6PK.js.map +1 -0
  11. package/dist/{chunk-4H5U5IHH.cjs → chunk-MBC5TYXA.cjs} +15 -6
  12. package/dist/chunk-MBC5TYXA.cjs.map +1 -0
  13. package/dist/{chunk-CJ55WKPC.cjs → chunk-TJ6EFR2O.cjs} +120 -87
  14. package/dist/chunk-TJ6EFR2O.cjs.map +1 -0
  15. package/dist/fields.cjs +172 -124
  16. package/dist/fields.cjs.map +1 -1
  17. package/dist/fields.d.cts +14 -2
  18. package/dist/fields.d.ts +14 -2
  19. package/dist/fields.js +70 -22
  20. package/dist/fields.js.map +1 -1
  21. package/dist/index.cjs +36 -30
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +5 -3
  24. package/dist/index.d.ts +5 -3
  25. package/dist/index.js +14 -8
  26. package/dist/index.js.map +1 -1
  27. package/dist/opinionated.cjs +18 -18
  28. package/dist/opinionated.d.cts +1 -1
  29. package/dist/opinionated.d.ts +1 -1
  30. package/dist/opinionated.js +2 -2
  31. package/package.json +1 -1
  32. package/dist/chunk-4H5U5IHH.cjs.map +0 -1
  33. package/dist/chunk-5LRBJEZW.js.map +0 -1
  34. package/dist/chunk-CJ55WKPC.cjs.map +0 -1
  35. package/dist/chunk-KDPN4CHW.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/command.tsx","../src/components/ui/badge.tsx","../src/components/ui/combobox.tsx","../src/smart-fields/SmartCombobox.tsx","../src/smart-fields/SmartFileUpload.tsx","../src/components/ui/slider.tsx","../src/smart-fields/SmartSlider.tsx","../src/smart-fields/SmartDualRangeSlider.tsx","../src/components/ui/shadcn-io/tags/index.tsx","../src/smart-fields/SmartAutoSuggestTags.tsx","../src/smart-fields/SmartBasicRichTextbox.tsx"],"names":["jsx","CommandPrimitive","cn","jsxs","SearchIcon","cva","Slot","React","useState","Popover","PopoverTrigger","Button","ChevronsUpDown","PopoverContent","Check","Plus","useFormField","useFieldDetection","useRef","useEffect","Label","TooltipProvider","Tooltip","TooltipTrigger","InfoIcon","TooltipContent","useSmartForm","useMemo","Input","React4","SliderPrimitive","createContext","useContext","XIcon","PlusIcon","CheckIcon","useCallback","value","Bold","Italic","Underline","List","ListOrdered"],"mappings":"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","file":"fields.cjs","sourcesContent":["import * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\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 badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import React, { useState } from \"react\";\nimport { Check, ChevronsUpDown, Plus } from \"lucide-react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Button } from \"./button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./command\";\nimport { Badge } from \"./badge\";\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n badge?: string;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n noResultsText?: string;\n width?: string;\n isDisabled?: boolean;\n allowCustom?: boolean;\n}\n\nexport function Combobox({\n options,\n value = \"\",\n onChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n noResultsText = \"No results found.\",\n width = \"100%\",\n isDisabled = false,\n allowCustom = false,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n\n const containerStyles = {\n width: width,\n } as React.CSSProperties;\n\n const combinedOptions = allowCustom\n ? [\n ...options,\n ...(searchValue &&\n !options.some(\n (opt) => opt.label.toLowerCase() === searchValue.toLowerCase()\n )\n ? [\n {\n value: searchValue.toLowerCase().replace(/\\s+/g, \"-\"),\n label: searchValue,\n },\n ]\n : []),\n ]\n : options;\n\n const filteredOptions = combinedOptions.filter((option) =>\n option.label.toLowerCase().includes(searchValue.toLowerCase())\n );\n\n return (\n <div style={containerStyles}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n style={containerStyles}\n className={`flex items-center justify-between relative ${\n isDisabled ? \"cursor-not-allowed opacity-50\" : \"\"\n }`}\n disabled={isDisabled}\n >\n <div className=\"flex-1 min-w-0 text-left\">\n <div className=\"truncate\">\n {value\n ? combinedOptions.find((option) => option.value === value)?.label || value\n : placeholder}\n </div>\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 flex-shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[var(--radix-popover-trigger-width)] p-0\">\n <Command className=\"w-full\">\n <CommandInput\n value={searchValue}\n onValueChange={setSearchValue}\n placeholder={searchPlaceholder}\n className=\"h-9\"\n />\n <CommandList>\n {filteredOptions.length > 0 ? (\n <CommandGroup className=\"max-h-[200px] overflow-y-auto\">\n {filteredOptions.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n onChange(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n setSearchValue(\"\");\n }}\n className=\"flex items-center\"\n style={{ width: \"100%\" }}\n >\n <div className=\"flex items-center w-full min-w-0\">\n <Check\n className={`mr-2 h-4 w-4 flex-shrink-0 ${\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n }`}\n />\n <span className=\"truncate flex-1\">{option.label}</span>\n </div>\n {option.badge && (\n <Badge\n variant=\"outline\"\n className=\"ml-2 text-[10px] px-2 py-0 h-5 font-normal\"\n >\n {option.badge}\n </Badge>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n ) : (\n <CommandEmpty>\n {allowCustom && searchValue && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start\"\n onClick={() => {\n const newOption = {\n value: searchValue.toLowerCase().replace(/\\s+/g, \"-\"),\n label: searchValue,\n };\n onChange(newOption.value);\n setOpen(false);\n setSearchValue(\"\");\n }}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Add &quot;{searchValue}&quot; as a new option\n </Button>\n )}\n {!searchValue && noResultsText}\n </CommandEmpty>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n\nexport default Combobox;\n\n\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Combobox } from '../components/ui/combobox';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\nexport interface SmartComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface SmartComboboxProps {\n field: string;\n label?: string;\n options: SmartComboboxOption[];\n className?: string;\n placeholder?: string;\n allowCustom?: boolean;\n validation?: any;\n required?: boolean;\n defaultValue?: string; // Default value for the combobox\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 SmartCombobox: React.FC<SmartComboboxProps> = ({\n field,\n label,\n options,\n className = '',\n placeholder,\n allowCustom = false,\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 <div ref={fieldRef} data-field={field}>\n <Combobox\n options={(options || []).map(o => ({ value: o.value, label: o.label }))}\n value={value || ''}\n onChange={(newValue) => onChange(newValue)}\n placeholder={placeholder || (label ? `Select ${label.toLowerCase()}` : `Select ${field}`)}\n allowCustom={allowCustom}\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 React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Button } from '../components/ui/button';\nimport { Input } from '../components/ui/input';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\nexport interface SmartFileUploadProps {\n field: string;\n label?: string;\n className?: string;\n validation?: any;\n required?: boolean;\n multiple?: boolean;\n accept?: string;\n maxFiles?: number;\n maxSizeBytes?: number;\n uploadApi?: string; // optional endpoint to upload files separately as multipart\n uploadOnSelect?: boolean; // if true, upload immediately after selection\n onSuccess?: (result: any) => void;\n onError?: (error: any) => void;\n defaultValue?: File | File[]; // Default value for the file upload (File or File[])\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 SmartFileUpload: React.FC<SmartFileUploadProps> = ({\n field,\n label,\n className = '',\n validation,\n required = false,\n multiple = false,\n accept,\n maxFiles,\n maxSizeBytes,\n uploadApi,\n uploadOnSelect = false,\n onSuccess,\n onError,\n defaultValue,\n info,\n subLabel\n}) => {\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const { registerSubmitHook, unregisterSubmitHook } = useSmartForm();\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\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 normalizedFiles: File[] = useMemo(() => {\n const filesAny: any[] = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n return filesAny.filter((f) => f instanceof File);\n }, [value]);\n\n // Store preview URLs with cleanup\n const [previewUrls, setPreviewUrls] = useState<Map<string, string>>(new Map());\n\n // Create preview URLs for images\n useEffect(() => {\n const newUrls = new Map<string, string>();\n \n normalizedFiles.forEach((file) => {\n if (file.type.startsWith('image/')) {\n const key = `${file.name}-${file.size}-${file.lastModified}`;\n if (!previewUrls.has(key)) {\n newUrls.set(key, URL.createObjectURL(file));\n } else {\n newUrls.set(key, previewUrls.get(key)!);\n }\n }\n });\n\n // Cleanup old URLs\n previewUrls.forEach((url: string, key: string) => {\n if (!newUrls.has(key)) {\n URL.revokeObjectURL(url);\n }\n });\n\n setPreviewUrls(newUrls);\n }, [normalizedFiles]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n previewUrls.forEach((url: string) => URL.revokeObjectURL(url));\n };\n }, []);\n\n const removeFileAt = (index: number) => {\n if (!multiple) {\n onChange(null);\n if (inputRef.current) inputRef.current.value = '';\n return;\n }\n const next = normalizedFiles.filter((_, i) => i !== index);\n onChange(next);\n if (next.length === 0 && inputRef.current) inputRef.current.value = '';\n };\n\n const handleFiles = (filesList: FileList | null) => {\n if (!filesList) return;\n let files = Array.from(filesList);\n\n if (maxFiles && files.length > maxFiles) {\n files = files.slice(0, maxFiles);\n }\n if (maxSizeBytes) {\n files = files.filter((f) => f.size <= maxSizeBytes);\n }\n\n if (multiple) {\n onChange(files);\n } else {\n onChange(files[0] || null);\n }\n };\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFiles(e.target.files);\n };\n\n const clearSelection = () => {\n onChange(multiple ? [] : null);\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n const performUpload = async () => {\n if (!uploadApi) return;\n const filesAny: any[] = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n const files: File[] = filesAny.filter((f) => f instanceof File);\n if (files.length === 0) return;\n\n const fd = new FormData();\n if (multiple) {\n for (const f of files) fd.append(`${field}[]`, f);\n } else if (files[0]) {\n fd.append(field, files[0]);\n }\n\n try {\n const response = await fetch(uploadApi, {\n method: 'POST',\n body: fd\n });\n const maybeJson = (() => {\n try { return response.headers.get('content-type')?.includes('application/json') ? true : false; } catch { return false; }\n })();\n const result = maybeJson ? await response.json() : await response.text();\n if (!response.ok) {\n if (onError) onError(result);\n return;\n }\n if (onSuccess) onSuccess(result);\n } catch (err) {\n if (onError) onError(err);\n }\n };\n\n // Upload immediately upon selection when enabled\n useEffect(() => {\n if (!uploadOnSelect || !uploadApi) return;\n const filesAny: any[] = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n const files: File[] = filesAny.filter((f) => f instanceof File);\n if (files.length > 0) {\n void performUpload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, uploadOnSelect, uploadApi]);\n\n // Register a submit hook if deferred upload is desired\n useEffect(() => {\n const key = `smart-file-upload:${field}`;\n if (uploadApi && !uploadOnSelect) {\n registerSubmitHook(key, performUpload);\n return () => unregisterSubmitHook(key);\n }\n return () => unregisterSubmitHook(key);\n }, [field, uploadApi, uploadOnSelect, registerSubmitHook, unregisterSubmitHook, value, multiple]);\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 <div className={cn('flex items-center gap-2', error && 'text-destructive')}>\n <Input\n ref={(el) => {\n inputRef.current = el as any;\n if (typeof fieldRef === 'function') fieldRef(el);\n }}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={onInputChange}\n className={cn(error && 'border-destructive')}\n data-field={field}\n />\n {(Array.isArray(value) ? value.length > 0 : !!value) && (\n <Button type=\"button\" variant=\"secondary\" onClick={clearSelection}>\n Clear\n </Button>\n )}\n </div>\n\n {normalizedFiles.length === 0 ? (\n <div className=\"mt-2 text-sm text-muted-foreground\">No file selected</div>\n ) : (\n <ul className=\"mt-2 space-y-1\">\n {normalizedFiles.map((f, idx) => {\n const isImage = f.type.startsWith('image/');\n const key = `${f.name}-${f.size}-${f.lastModified}`;\n const previewUrl = isImage ? previewUrls.get(key) : null;\n \n return (\n <li key={`${f.name}-${idx}`} className=\"flex items-center justify-between rounded border px-2 py-1\">\n <div className=\"flex items-center min-w-0 mr-2\">\n {isImage && previewUrl ? (\n <div className=\"relative group mr-2\">\n <img\n src={previewUrl}\n alt={`Preview of ${f.name}`}\n className=\"w-8 h-8 object-cover rounded border\"\n />\n </div>\n ) : (\n <div className=\"w-8 h-8 mr-2 flex items-center justify-center bg-gray-100 rounded border\">\n 📄\n </div>\n )}\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium\">{f.name}</div>\n <div className=\"text-xs text-muted-foreground\">{(f.size / 1024).toFixed(1)} KB</div>\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeFileAt(idx)}\n aria-label={`Remove ${f.name}`}\n >\n ✕\n </Button>\n </li>\n );\n })}\n </ul>\n )}\n\n\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartFileUpload;\n\n\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","import React, { useEffect, useRef } from 'react';\nimport { Slider } from '../components/ui/slider';\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\n// =============================================================================\n// SMART SLIDER TYPES\n// =============================================================================\n\nexport interface SmartSliderProps {\n field: string;\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n className?: string;\n validation?: any; // Zod schema\n required?: boolean;\n showValue?: boolean;\n valueFormatter?: (value: number) => string;\n defaultValue?: number; // Default value for the slider\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 SLIDER COMPONENT\n// =============================================================================\n\nexport const SmartSlider: React.FC<SmartSliderProps> = ({\n field,\n label,\n min = 0,\n max = 100,\n step = 1,\n className = '',\n validation,\n required = false,\n showValue = true,\n valueFormatter = (value) => value.toString(),\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 // 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 === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Handle slider value change\n const handleValueChange = (values: number[]) => {\n const newValue = values[0];\n onChange(newValue);\n };\n\n // Get current value or default to min\n const currentValue = value !== undefined ? value : min;\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 {showValue && (\n <span className=\"ml-2 text-muted-foreground\">\n ({valueFormatter(currentValue)})\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=\"space-y-2\">\n <Slider\n ref={fieldRef}\n value={[currentValue]}\n onValueChange={handleValueChange}\n min={min}\n max={max}\n step={step}\n className={`w-full ${error ? 'border-destructive' : ''}`}\n data-field={field}\n />\n \n <div className=\"flex justify-between text-sm text-muted-foreground\">\n <span>{valueFormatter(min)}</span>\n <span>{valueFormatter(max)}</span>\n </div>\n </div>\n \n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Slider } from '../components/ui/slider';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\n// =============================================================================\n// SMART DUAL RANGE SLIDER TYPES\n// =============================================================================\n\nexport interface SmartDualRangeSliderProps {\n minField: string;\n maxField: string;\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n className?: string;\n minValidation?: any; // Zod schema for min field\n maxValidation?: any; // Zod schema for max field\n required?: boolean;\n showValues?: boolean;\n valueFormatter?: (value: number) => string;\n minLabel?: string;\n maxLabel?: string;\n defaultMinValue?: number; // Default value for the min field\n defaultMaxValue?: number; // Default value for the max field\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 DUAL RANGE SLIDER COMPONENT\n// =============================================================================\n\nexport const SmartDualRangeSlider: React.FC<SmartDualRangeSliderProps> = ({\n minField,\n maxField,\n label,\n min = 0,\n max = 100,\n step = 1,\n className = '',\n minValidation,\n maxValidation,\n required = false,\n showValues = true,\n valueFormatter = (value) => value.toString(),\n minLabel = 'Min',\n maxLabel = 'Max',\n defaultMinValue,\n defaultMaxValue,\n info,\n subLabel\n}) => {\n // Use separate form fields for min and max values\n const minFormField = useFormField(minField);\n const maxFormField = useFormField(maxField);\n const fieldDetection = useFieldDetection();\n const hasRegisteredMin = useRef(false);\n const hasRegisteredMax = useRef(false);\n const hasSetDefaultMin = useRef(false);\n const hasSetDefaultMax = useRef(false);\n\n // Register validation for min field\n useEffect(() => {\n if (minValidation && !hasRegisteredMin.current) {\n hasRegisteredMin.current = true;\n minFormField.registerValidation(minField, minValidation);\n }\n }, [minValidation, minField, minFormField]);\n\n // Register validation for max field\n useEffect(() => {\n if (maxValidation && !hasRegisteredMax.current) {\n hasRegisteredMax.current = true;\n maxFormField.registerValidation(maxField, maxValidation);\n }\n }, [maxValidation, maxField, maxFormField]);\n\n // Auto-register fields if in field detection context\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(minField);\n fieldDetection.registerField(maxField);\n }\n }, [minField, maxField, fieldDetection]);\n\n // Set default value for min field if provided and field is empty\n useEffect(() => {\n if (defaultMinValue !== undefined && !hasSetDefaultMin.current && (minFormField.value === undefined || minFormField.value === null || minFormField.value === '')) {\n minFormField.onChange(defaultMinValue);\n hasSetDefaultMin.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultMinValue, minFormField.value]);\n\n // Set default value for max field if provided and field is empty\n useEffect(() => {\n if (defaultMaxValue !== undefined && !hasSetDefaultMax.current && (maxFormField.value === undefined || maxFormField.value === null || maxFormField.value === '')) {\n maxFormField.onChange(defaultMaxValue);\n hasSetDefaultMax.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultMaxValue, maxFormField.value]);\n\n // Handle slider value change\n const handleValueChange = (values: number[]) => {\n const [minValue, maxValue] = values;\n minFormField.onChange(minValue);\n maxFormField.onChange(maxValue);\n };\n\n // Get current values or defaults\n const currentMin = minFormField.value !== undefined ? minFormField.value : min;\n const currentMax = maxFormField.value !== undefined ? maxFormField.value : max;\n \n // Combine errors from both fields\n const combinedError = minFormField.error || maxFormField.error;\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 \n <div className=\"space-y-4\">\n <Slider\n ref={minFormField.fieldRef}\n value={[currentMin, currentMax]}\n onValueChange={handleValueChange}\n min={min}\n max={max}\n step={step}\n className={`w-full ${combinedError ? 'border-destructive' : ''}`}\n data-min-field={minField}\n data-max-field={maxField}\n />\n \n {showValues && (\n <div className=\"flex justify-between items-center text-sm\">\n <div className=\"flex flex-col items-center\">\n <span className=\"text-muted-foreground\">{minLabel}: {valueFormatter(currentMin)}</span>\n </div>\n <div className=\"flex flex-col items-center\">\n <span className=\"text-muted-foreground\">{maxLabel}: {valueFormatter(currentMax)}</span>\n </div>\n </div>\n )}\n </div>\n \n {combinedError && (\n <p className=\"text-destructive text-sm mt-1\">{combinedError}</p>\n )}\n </div>\n );\n};\n","'use client';\n\nimport { XIcon } from 'lucide-react';\nimport {\n type ComponentProps,\n createContext,\n type MouseEventHandler,\n type ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Badge } from '../../badge';\nimport { Button } from '../../button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../../command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '../../popover';\nimport { cn } from '../../../../lib/utils';\n\ntype TagsContextType = {\n value?: string;\n setValue?: (value: string) => void;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n width?: number;\n setWidth?: (width: number) => void;\n};\n\nconst TagsContext = createContext<TagsContextType>({\n value: undefined,\n setValue: undefined,\n open: false,\n onOpenChange: () => { },\n width: undefined,\n setWidth: undefined,\n});\n\nconst useTagsContext = () => {\n const context = useContext(TagsContext);\n\n if (!context) {\n throw new Error('useTagsContext must be used within a TagsProvider');\n }\n\n return context;\n};\n\nexport type TagsProps = {\n value?: string;\n setValue?: (value: string) => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: ReactNode;\n className?: string;\n};\n\nexport const Tags = ({\n value,\n setValue,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n children,\n className,\n}: TagsProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const [width, setWidth] = useState<number>();\n const ref = useRef<HTMLDivElement>(null);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const onOpenChange = controlledOnOpenChange ?? setUncontrolledOpen;\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n setWidth(entries[0].contentRect.width);\n });\n\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <TagsContext.Provider\n value={{ value, setValue, open, onOpenChange, width, setWidth }}\n >\n <Popover onOpenChange={onOpenChange} open={open}>\n <div className={cn('relative w-full', className)} ref={ref}>\n {children}\n </div>\n </Popover>\n </TagsContext.Provider>\n );\n};\n\nexport type TagsTriggerProps = ComponentProps<typeof Button>;\n\nexport const TagsTrigger = ({\n className,\n children,\n ...props\n}: TagsTriggerProps) => (\n <PopoverTrigger asChild>\n <Button\n className={cn('h-auto w-full justify-between p-2', className)}\n // biome-ignore lint/a11y/useSemanticElements: \"Required\"\n role=\"combobox\"\n variant=\"outline\"\n {...props}\n >\n <div className=\"flex flex-wrap items-center gap-1\">\n {children}\n <span className=\"px-2 py-px text-muted-foreground\">\n </span>\n </div>\n </Button>\n </PopoverTrigger>\n);\n\nexport type TagsValueProps = ComponentProps<typeof Badge>;\n\nexport const TagsValue = ({\n className,\n children,\n onRemove,\n ...props\n}: TagsValueProps & { onRemove?: () => void }) => {\n const handleRemove: MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove?.();\n };\n\n return (\n <Badge className={cn('flex items-center gap-2', className)} {...props}>\n {children}\n {onRemove && (\n // biome-ignore lint/a11y/noStaticElementInteractions: \"This is a clickable badge\"\n // biome-ignore lint/a11y/useKeyWithClickEvents: \"This is a clickable badge\"\n <div\n className=\"size-auto cursor-pointer hover:text-muted-foreground\"\n onClick={handleRemove}\n >\n <XIcon size={12} />\n </div>\n )}\n </Badge>\n );\n};\n\nexport type TagsContentProps = ComponentProps<typeof PopoverContent>;\n\nexport const TagsContent = ({\n className,\n children,\n ...props\n}: TagsContentProps) => {\n const { width } = useTagsContext();\n\n return (\n <PopoverContent\n className={cn('p-0', className)}\n style={{ width }}\n {...props}\n >\n <Command>{children}</Command>\n </PopoverContent>\n );\n};\n\nexport type TagsInputProps = ComponentProps<typeof CommandInput>;\n\nexport const TagsInput = ({ className, ...props }: TagsInputProps) => (\n <CommandInput className={cn('h-9', className)} {...props} />\n);\n\nexport type TagsListProps = ComponentProps<typeof CommandList>;\n\nexport const TagsList = ({ className, ...props }: TagsListProps) => (\n <CommandList className={cn('max-h-[200px]', className)} {...props} />\n);\n\nexport type TagsEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const TagsEmpty = ({\n children,\n className,\n ...props\n}: TagsEmptyProps) => (\n <CommandEmpty {...props}>{children ?? 'No tags found.'}</CommandEmpty>\n);\n\nexport type TagsGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const TagsGroup = CommandGroup;\n\nexport type TagsItemProps = ComponentProps<typeof CommandItem>;\n\nexport const TagsItem = ({ className, ...props }: TagsItemProps) => (\n <CommandItem\n className={cn('cursor-pointer items-center justify-between', className)}\n {...props}\n />\n);\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { cn } from '../lib/utils';\nimport {\n Tags,\n TagsContent,\n TagsEmpty,\n TagsGroup,\n TagsInput,\n TagsItem,\n TagsList,\n TagsTrigger,\n TagsValue,\n} from '../components/ui/shadcn-io/tags';\nimport { CheckIcon, PlusIcon, InfoIcon } from 'lucide-react';\n\n// =============================================================================\n// SMART AUTO SUGGEST TAGS TYPES\n// =============================================================================\n\nexport interface TagOption {\n id: string;\n label: string;\n}\n\nexport interface SmartAutoSuggestTagsProps {\n field: string;\n label?: string;\n options: TagOption[]; // Available tags to choose from\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n allowCreate?: boolean; // Allow creating new tags\n maxTags?: number; // Maximum number of tags allowed\n defaultValue?: string[]; // Default selected tag IDs\n onTagCreate?: (tag: TagOption) => void; // Callback when a new tag is created\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 AUTO SUGGEST TAGS COMPONENT\n// =============================================================================\n\nexport const SmartAutoSuggestTags: React.FC<SmartAutoSuggestTagsProps> = ({\n field,\n label,\n options: initialOptions,\n className = '',\n placeholder = 'Select tags...',\n validation,\n required = false,\n allowCreate = true,\n maxTags,\n defaultValue,\n onTagCreate,\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 available tags and search input\n const [tags, setTags] = useState<TagOption[]>(initialOptions);\n const [newTag, setNewTag] = useState<string>('');\n \n // Normalize value to array of strings\n const selected: string[] = Array.isArray(value) ? value : [];\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 onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Update tags when options change\n useEffect(() => {\n setTags(initialOptions);\n }, [initialOptions]);\n\n const handleRemove = (tagId: string) => {\n if (!selected.includes(tagId)) {\n return;\n }\n const newSelected = selected.filter((v) => v !== tagId);\n onChange(newSelected);\n };\n\n const handleSelect = (tagId: string) => {\n // Check if already selected\n if (selected.includes(tagId)) {\n handleRemove(tagId);\n return;\n }\n\n // Check max tags limit\n if (maxTags && selected.length >= maxTags) {\n return;\n }\n\n const newSelected = [...selected, tagId];\n onChange(newSelected);\n };\n\n const handleCreateTag = () => {\n if (!newTag.trim()) return;\n if (!allowCreate) return;\n\n const tagId = newTag.toLowerCase().replace(/\\s+/g, '-');\n const newTagOption: TagOption = {\n id: tagId,\n label: newTag,\n };\n\n // Add to available tags\n setTags((prev) => [...prev, newTagOption]);\n \n // Add to selected tags\n const newSelected = [...selected, tagId];\n onChange(newSelected);\n\n // Call callback if provided\n if (onTagCreate) {\n onTagCreate(newTagOption);\n }\n\n setNewTag('');\n };\n\n // Filter tags based on search input\n const filteredTags = tags.filter((tag) =>\n tag.label.toLowerCase().includes(newTag.toLowerCase())\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 ({selected.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 ref={fieldRef as any} data-field={field}>\n <div className={cn(\n \"w-full rounded-md border border-input bg-background text-sm ring-offset-background\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n error && \"border-destructive focus-within:ring-destructive\"\n )}>\n <Tags className=\"w-full\">\n <TagsTrigger className=\"w-full px-3 py-2 border-0 bg-transparent\">\n {selected.length === 0 && placeholder && (\n <span className=\"text-muted-foreground text-sm\">{placeholder}</span>\n )}\n {selected.map((tagId) => {\n const tag = tags.find((t) => t.id === tagId);\n return tag ? (\n <TagsValue \n key={tagId} \n onRemove={() => handleRemove(tagId)}\n className=\"px-2 py-1 text-sm gap-1\"\n >\n {tag.label}\n </TagsValue>\n ) : null;\n })}\n </TagsTrigger>\n <TagsContent>\n <TagsInput \n onValueChange={setNewTag} \n placeholder={`Search ${placeholder.toLowerCase()}...`}\n value={newTag}\n />\n <TagsList>\n {filteredTags.length === 0 && allowCreate && newTag.trim() && (\n <TagsEmpty>\n <button\n className=\"mx-auto flex cursor-pointer items-center gap-2 text-sm\"\n onClick={handleCreateTag}\n type=\"button\"\n >\n <PlusIcon className=\"text-muted-foreground\" size={14} />\n Create new tag: {newTag}\n </button>\n </TagsEmpty>\n )}\n {filteredTags.length === 0 && (!allowCreate || !newTag.trim()) && (\n <TagsEmpty>\n <span className=\"text-sm text-muted-foreground\">No tags found</span>\n </TagsEmpty>\n )}\n <TagsGroup>\n {filteredTags.map((tag) => (\n <TagsItem \n key={tag.id} \n onSelect={handleSelect} \n value={tag.id}\n disabled={maxTags ? selected.length >= maxTags && !selected.includes(tag.id) : false}\n >\n {tag.label}\n {selected.includes(tag.id) && (\n <CheckIcon className=\"text-muted-foreground\" size={14} />\n )}\n </TagsItem>\n ))}\n </TagsGroup>\n </TagsList>\n </TagsContent>\n </Tags>\n </div>\n </div>\n \n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartAutoSuggestTags;\n\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport { useFormField } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Button } from '../components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { Bold, Italic, Underline, List, ListOrdered, InfoIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\n// =============================================================================\n// SMART BASIC RICH TEXTBOX TYPES\n// =============================================================================\n\nexport interface SmartBasicRichTextboxProps {\n field: string;\n label?: string;\n placeholder?: string;\n validation?: any;\n className?: string;\n required?: boolean;\n defaultValue?: string; // Default HTML content\n minHeight?: string; // Minimum height of the editor (e.g., '200px')\n maxHeight?: string; // Maximum height of the editor (e.g., '400px')\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// HTML SANITIZATION\n// =============================================================================\n\n/**\n * Sanitizes HTML to only allow specific tags: p, strong, b, em, i, u, ul, ol, li, br\n * Removes all other tags and attributes\n */\nconst sanitizeHtml = (html: string): string => {\n // Create a temporary div to parse HTML\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = html;\n\n // Allowed tags\n const allowedTags = ['P', 'STRONG', 'B', 'EM', 'I', 'U', 'UL', 'OL', 'LI', 'BR', 'DIV'];\n\n // Recursively clean nodes\n const cleanNode = (node: Node): Node | null => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.cloneNode(false);\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n const tagName = element.tagName.toUpperCase();\n\n // Convert DIV to P\n if (tagName === 'DIV') {\n const p = document.createElement('p');\n Array.from(element.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) p.appendChild(cleanedChild);\n });\n return p;\n }\n\n // If tag is not allowed, return its children\n if (!allowedTags.includes(tagName)) {\n const fragment = document.createDocumentFragment();\n Array.from(element.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) fragment.appendChild(cleanedChild);\n });\n return fragment;\n }\n\n // Create clean element without attributes\n const cleanElement = document.createElement(tagName.toLowerCase());\n Array.from(element.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) cleanElement.appendChild(cleanedChild);\n });\n\n return cleanElement;\n }\n\n return null;\n };\n\n const cleanedDiv = document.createElement('div');\n Array.from(tempDiv.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) cleanedDiv.appendChild(cleanedChild);\n });\n\n return cleanedDiv.innerHTML;\n};\n\n// =============================================================================\n// SMART BASIC RICH TEXTBOX COMPONENT\n// =============================================================================\n\nexport const SmartBasicRichTextbox: React.FC<SmartBasicRichTextboxProps> = ({\n field,\n label,\n placeholder = 'Enter text...',\n validation,\n className = '',\n required = false,\n defaultValue,\n minHeight = '150px',\n maxHeight = '400px',\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 const editorRef = useRef<HTMLDivElement>(null);\n const [isFocused, setIsFocused] = useState(false);\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 === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Sync editor content with form value\n useEffect(() => {\n if (editorRef.current && value !== undefined) {\n const sanitized = sanitizeHtml(value || '');\n if (editorRef.current.innerHTML !== sanitized) {\n editorRef.current.innerHTML = sanitized;\n }\n }\n }, [value]);\n\n // Handle content change\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const html = editorRef.current.innerHTML;\n const sanitized = sanitizeHtml(html);\n onChange(sanitized);\n }\n }, [onChange]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n // Handle Enter key to create new paragraph\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n document.execCommand('insertParagraph', false);\n return;\n }\n }, []);\n\n // Format commands\n const execCommand = useCallback((command: string, value?: string) => {\n document.execCommand(command, false, value);\n editorRef.current?.focus();\n handleInput();\n }, [handleInput]);\n\n const toggleBold = () => execCommand('bold');\n const toggleItalic = () => execCommand('italic');\n const toggleUnderline = () => execCommand('underline');\n const toggleBulletList = () => execCommand('insertUnorderedList');\n const toggleNumberedList = () => execCommand('insertOrderedList');\n\n // Check if a format is currently active\n const isFormatActive = useCallback((format: string): boolean => {\n return document.queryCommandState(format);\n }, []);\n\n const [activeFormats, setActiveFormats] = useState({\n bold: false,\n italic: false,\n underline: false,\n bulletList: false,\n numberedList: false\n });\n\n // Update active formats on selection change\n const updateActiveFormats = useCallback(() => {\n if (isFocused) {\n setActiveFormats({\n bold: isFormatActive('bold'),\n italic: isFormatActive('italic'),\n underline: isFormatActive('underline'),\n bulletList: isFormatActive('insertUnorderedList'),\n numberedList: isFormatActive('insertOrderedList')\n });\n }\n }, [isFocused, isFormatActive]);\n\n // Update formats on selection change\n useEffect(() => {\n if (isFocused) {\n document.addEventListener('selectionchange', updateActiveFormats);\n return () => document.removeEventListener('selectionchange', updateActiveFormats);\n }\n }, [isFocused, updateActiveFormats]);\n\n const handleFocus = () => {\n setIsFocused(true);\n updateActiveFormats();\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\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\n <div\n ref={fieldRef as any}\n data-field={field}\n className={cn(\n 'w-full rounded-md border border-input bg-background',\n 'focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2',\n error && 'border-destructive focus-within:ring-destructive'\n )}\n >\n {/* Toolbar */}\n <div className=\"flex items-center gap-0.5 p-1.5 border-b border-border bg-muted/30\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.bold && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleBold}\n >\n <Bold className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Bold (Ctrl+B)</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.italic && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleItalic}\n >\n <Italic className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Italic (Ctrl+I)</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.underline && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleUnderline}\n >\n <Underline className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Underline (Ctrl+U)</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <div className=\"w-px h-5 bg-border mx-1\" />\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.bulletList && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleBulletList}\n >\n <List className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Bullet List</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.numberedList && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleNumberedList}\n >\n <ListOrdered className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Numbered List</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n {/* Editor */}\n <div\n ref={editorRef}\n contentEditable\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n 'w-full px-3 py-2 text-sm text-foreground',\n 'bg-background',\n 'focus:outline-none',\n 'overflow-y-auto',\n '[&>p]:my-2 [&>p]:leading-relaxed',\n '[&>ul]:my-2 [&>ul]:ml-6 [&>ul]:list-disc [&>ul]:list-inside',\n '[&_ul]:my-2 [&_ul]:ml-6 [&_ul]:list-disc [&_ul]:list-inside',\n '[&>ol]:my-2 [&>ol]:ml-6 [&>ol]:list-decimal [&>ol]:list-inside',\n '[&_ol]:my-2 [&_ol]:ml-6 [&_ol]:list-decimal [&_ol]:list-inside',\n '[&>li]:my-1 [&_li]:my-1',\n '[&_strong]:font-semibold [&_b]:font-semibold',\n '[&_em]:italic [&_i]:italic',\n '[&_u]:underline',\n !value && 'empty:before:content-[attr(data-placeholder)] empty:before:text-muted-foreground empty:before:pointer-events-none'\n )}\n style={{\n minHeight,\n maxHeight\n }}\n data-placeholder={placeholder}\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 SmartBasicRichTextbox;\n"]}
1
+ {"version":3,"sources":["../src/components/ui/command.tsx","../src/components/ui/badge.tsx","../src/components/ui/combobox.tsx","../src/smart-fields/SmartCombobox.tsx","../src/smart-fields/SmartFileUpload.tsx","../src/components/ui/slider.tsx","../src/smart-fields/SmartSlider.tsx","../src/smart-fields/SmartDualRangeSlider.tsx","../src/components/ui/shadcn-io/tags/index.tsx","../src/smart-fields/SmartAutoSuggestTags.tsx","../src/smart-fields/SmartBasicRichTextbox.tsx"],"names":["jsx","CommandPrimitive","cn","jsxs","SearchIcon","cva","Slot","React","useState","Popover","PopoverTrigger","Button","ChevronsUpDown","PopoverContent","Check","Plus","useSmartForm","useFormField","useFieldDetection","useRef","useEffect","Label","TooltipProvider","Tooltip","TooltipTrigger","InfoIcon","TooltipContent","useMemo","Input","React4","SliderPrimitive","createContext","useContext","XIcon","PlusIcon","CheckIcon","useCallback","value","Bold","Italic","Underline","List","ListOrdered"],"mappings":"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","file":"fields.cjs","sourcesContent":["import * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"./dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\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 badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import React, { useState } from \"react\";\nimport { Check, ChevronsUpDown, Plus } from \"lucide-react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { Button } from \"./button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./command\";\nimport { Badge } from \"./badge\";\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n badge?: string;\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n noResultsText?: string;\n width?: string;\n isDisabled?: boolean;\n allowCustom?: boolean;\n}\n\nexport function Combobox({\n options,\n value = \"\",\n onChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n noResultsText = \"No results found.\",\n width = \"100%\",\n isDisabled = false,\n allowCustom = false,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n\n const containerStyles = {\n width: width,\n } as React.CSSProperties;\n\n const combinedOptions = allowCustom\n ? [\n ...options,\n ...(searchValue &&\n !options.some(\n (opt) => opt.label.toLowerCase() === searchValue.toLowerCase()\n )\n ? [\n {\n value: searchValue.toLowerCase().replace(/\\s+/g, \"-\"),\n label: searchValue,\n },\n ]\n : []),\n ]\n : options;\n\n const filteredOptions = combinedOptions.filter((option) =>\n option.label.toLowerCase().includes(searchValue.toLowerCase())\n );\n\n return (\n <div style={containerStyles}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n style={containerStyles}\n className={`flex items-center justify-between relative ${\n isDisabled ? \"cursor-not-allowed opacity-50\" : \"\"\n }`}\n disabled={isDisabled}\n >\n <div className=\"flex-1 min-w-0 text-left\">\n <div className=\"truncate\">\n {value\n ? combinedOptions.find((option) => option.value === value)?.label || value\n : placeholder}\n </div>\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 flex-shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[var(--radix-popover-trigger-width)] p-0\">\n <Command className=\"w-full\">\n <CommandInput\n value={searchValue}\n onValueChange={setSearchValue}\n placeholder={searchPlaceholder}\n className=\"h-9\"\n />\n <CommandList>\n {filteredOptions.length > 0 ? (\n <CommandGroup className=\"max-h-[200px] overflow-y-auto\">\n {filteredOptions.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n onChange(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n setSearchValue(\"\");\n }}\n className=\"flex items-center\"\n style={{ width: \"100%\" }}\n >\n <div className=\"flex items-center w-full min-w-0\">\n <Check\n className={`mr-2 h-4 w-4 flex-shrink-0 ${\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n }`}\n />\n <span className=\"truncate flex-1\">{option.label}</span>\n </div>\n {option.badge && (\n <Badge\n variant=\"outline\"\n className=\"ml-2 text-[10px] px-2 py-0 h-5 font-normal\"\n >\n {option.badge}\n </Badge>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n ) : (\n <CommandEmpty>\n {allowCustom && searchValue && (\n <Button\n variant=\"ghost\"\n className=\"w-full justify-start\"\n onClick={() => {\n const newOption = {\n value: searchValue.toLowerCase().replace(/\\s+/g, \"-\"),\n label: searchValue,\n };\n onChange(newOption.value);\n setOpen(false);\n setSearchValue(\"\");\n }}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Add &quot;{searchValue}&quot; as a new option\n </Button>\n )}\n {!searchValue && noResultsText}\n </CommandEmpty>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n\nexport default Combobox;\n\n\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Combobox } from '../components/ui/combobox';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\nexport interface SmartComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface SmartComboboxProps {\n field: string;\n label?: string;\n options: SmartComboboxOption[];\n className?: string;\n placeholder?: string;\n allowCustom?: boolean;\n validation?: any;\n required?: boolean;\n defaultValue?: string; // Default value for the combobox\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n disabled?: boolean | ((formData: any) => boolean);\n hidden?: boolean | ((formData: any) => boolean); // Hide field conditionally\n}\n\nexport const SmartCombobox: React.FC<SmartComboboxProps> = ({\n field,\n label,\n options,\n className = '',\n placeholder,\n allowCustom = false,\n validation,\n required = false,\n defaultValue,\n info,\n subLabel,\n disabled,\n hidden\n}) => {\n const { formData } = useSmartForm();\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 // Evaluate disabled state\n const isDisabled = typeof disabled === 'function' ? disabled(formData) : disabled || false;\n \n // Evaluate hidden state\n const isHidden = typeof hidden === 'function' ? hidden(formData) : hidden || false;\n \n // Return null if field is hidden\n if (isHidden) return null;\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 <div ref={fieldRef} data-field={field}>\n <Combobox\n options={(options || []).map(o => ({ value: o.value, label: o.label }))}\n value={value || ''}\n onChange={(newValue) => onChange(newValue)}\n placeholder={placeholder || (label ? `Select ${label.toLowerCase()}` : `Select ${field}`)}\n allowCustom={allowCustom}\n isDisabled={isDisabled}\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 React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Button } from '../components/ui/button';\nimport { Input } from '../components/ui/input';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\nexport interface SmartFileUploadProps {\n field: string;\n label?: string;\n className?: string;\n validation?: any;\n required?: boolean;\n multiple?: boolean;\n accept?: string;\n maxFiles?: number;\n maxSizeBytes?: number;\n uploadApi?: string; // optional endpoint to upload files separately as multipart\n uploadOnSelect?: boolean; // if true, upload immediately after selection\n onSuccess?: (result: any) => void;\n onError?: (error: any) => void;\n defaultValue?: File | File[]; // Default value for the file upload (File or File[])\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n disabled?: boolean | ((formData: any) => boolean);\n hidden?: boolean | ((formData: any) => boolean); // Hide field conditionally\n}\n\nexport const SmartFileUpload: React.FC<SmartFileUploadProps> = ({\n field,\n label,\n className = '',\n validation,\n required = false,\n multiple = false,\n accept,\n maxFiles,\n maxSizeBytes,\n uploadApi,\n uploadOnSelect = false,\n onSuccess,\n onError,\n defaultValue,\n info,\n subLabel,\n disabled,\n hidden\n}) => {\n const { formData, registerSubmitHook, unregisterSubmitHook } = useSmartForm();\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Evaluate disabled state\n const isDisabled = typeof disabled === 'function' ? disabled(formData) : disabled || false;\n \n // Evaluate hidden state\n const isHidden = typeof hidden === 'function' ? hidden(formData) : hidden || false;\n \n // Return null if field is hidden\n if (isHidden) return null;\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 normalizedFiles: File[] = useMemo(() => {\n const filesAny: any[] = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n return filesAny.filter((f) => f instanceof File);\n }, [value]);\n\n // Store preview URLs with cleanup\n const [previewUrls, setPreviewUrls] = useState<Map<string, string>>(new Map());\n\n // Create preview URLs for images\n useEffect(() => {\n const newUrls = new Map<string, string>();\n \n normalizedFiles.forEach((file) => {\n if (file.type.startsWith('image/')) {\n const key = `${file.name}-${file.size}-${file.lastModified}`;\n if (!previewUrls.has(key)) {\n newUrls.set(key, URL.createObjectURL(file));\n } else {\n newUrls.set(key, previewUrls.get(key)!);\n }\n }\n });\n\n // Cleanup old URLs\n previewUrls.forEach((url: string, key: string) => {\n if (!newUrls.has(key)) {\n URL.revokeObjectURL(url);\n }\n });\n\n setPreviewUrls(newUrls);\n }, [normalizedFiles]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n previewUrls.forEach((url: string) => URL.revokeObjectURL(url));\n };\n }, []);\n\n const removeFileAt = (index: number) => {\n if (!multiple) {\n onChange(null);\n if (inputRef.current) inputRef.current.value = '';\n return;\n }\n const next = normalizedFiles.filter((_, i) => i !== index);\n onChange(next);\n if (next.length === 0 && inputRef.current) inputRef.current.value = '';\n };\n\n const handleFiles = (filesList: FileList | null) => {\n if (!filesList) return;\n let files = Array.from(filesList);\n\n if (maxFiles && files.length > maxFiles) {\n files = files.slice(0, maxFiles);\n }\n if (maxSizeBytes) {\n files = files.filter((f) => f.size <= maxSizeBytes);\n }\n\n if (multiple) {\n onChange(files);\n } else {\n onChange(files[0] || null);\n }\n };\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFiles(e.target.files);\n };\n\n const clearSelection = () => {\n onChange(multiple ? [] : null);\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n const performUpload = async () => {\n if (!uploadApi) return;\n const filesAny: any[] = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n const files: File[] = filesAny.filter((f) => f instanceof File);\n if (files.length === 0) return;\n\n const fd = new FormData();\n if (multiple) {\n for (const f of files) fd.append(`${field}[]`, f);\n } else if (files[0]) {\n fd.append(field, files[0]);\n }\n\n try {\n const response = await fetch(uploadApi, {\n method: 'POST',\n body: fd\n });\n const maybeJson = (() => {\n try { return response.headers.get('content-type')?.includes('application/json') ? true : false; } catch { return false; }\n })();\n const result = maybeJson ? await response.json() : await response.text();\n if (!response.ok) {\n if (onError) onError(result);\n return;\n }\n if (onSuccess) onSuccess(result);\n } catch (err) {\n if (onError) onError(err);\n }\n };\n\n // Upload immediately upon selection when enabled\n useEffect(() => {\n if (!uploadOnSelect || !uploadApi) return;\n const filesAny: any[] = Array.isArray(value)\n ? value\n : value\n ? [value]\n : [];\n const files: File[] = filesAny.filter((f) => f instanceof File);\n if (files.length > 0) {\n void performUpload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, uploadOnSelect, uploadApi]);\n\n // Register a submit hook if deferred upload is desired\n useEffect(() => {\n const key = `smart-file-upload:${field}`;\n if (uploadApi && !uploadOnSelect) {\n registerSubmitHook(key, performUpload);\n return () => unregisterSubmitHook(key);\n }\n return () => unregisterSubmitHook(key);\n }, [field, uploadApi, uploadOnSelect, registerSubmitHook, unregisterSubmitHook, value, multiple]);\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 <div className={cn('flex items-center gap-2', error && 'text-destructive')}>\n <Input\n ref={(el) => {\n inputRef.current = el as any;\n if (typeof fieldRef === 'function') fieldRef(el);\n }}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={onInputChange}\n className={cn(error && 'border-destructive')}\n data-field={field}\n disabled={isDisabled}\n />\n {(Array.isArray(value) ? value.length > 0 : !!value) && (\n <Button type=\"button\" variant=\"secondary\" onClick={clearSelection} disabled={isDisabled}>\n Clear\n </Button>\n )}\n </div>\n\n {normalizedFiles.length === 0 ? (\n <div className=\"mt-2 text-sm text-muted-foreground\">No file selected</div>\n ) : (\n <ul className=\"mt-2 space-y-1\">\n {normalizedFiles.map((f, idx) => {\n const isImage = f.type.startsWith('image/');\n const key = `${f.name}-${f.size}-${f.lastModified}`;\n const previewUrl = isImage ? previewUrls.get(key) : null;\n \n return (\n <li key={`${f.name}-${idx}`} className=\"flex items-center justify-between rounded border px-2 py-1\">\n <div className=\"flex items-center min-w-0 mr-2\">\n {isImage && previewUrl ? (\n <div className=\"relative group mr-2\">\n <img\n src={previewUrl}\n alt={`Preview of ${f.name}`}\n className=\"w-8 h-8 object-cover rounded border\"\n />\n </div>\n ) : (\n <div className=\"w-8 h-8 mr-2 flex items-center justify-center bg-gray-100 rounded border\">\n 📄\n </div>\n )}\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium\">{f.name}</div>\n <div className=\"text-xs text-muted-foreground\">{(f.size / 1024).toFixed(1)} KB</div>\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => removeFileAt(idx)}\n aria-label={`Remove ${f.name}`}\n disabled={isDisabled}\n >\n ✕\n </Button>\n </li>\n );\n })}\n </ul>\n )}\n\n\n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartFileUpload;\n\n\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","import React, { useEffect, useRef } from 'react';\nimport { Slider } from '../components/ui/slider';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\n\n// =============================================================================\n// SMART SLIDER TYPES\n// =============================================================================\n\nexport interface SmartSliderProps {\n field: string;\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n className?: string;\n validation?: any; // Zod schema\n required?: boolean;\n showValue?: boolean;\n valueFormatter?: (value: number) => string;\n defaultValue?: number; // Default value for the slider\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n disabled?: boolean | ((formData: any) => boolean);\n hidden?: boolean | ((formData: any) => boolean); // Hide field conditionally\n}\n\n// =============================================================================\n// SMART SLIDER COMPONENT\n// =============================================================================\n\nexport const SmartSlider: React.FC<SmartSliderProps> = ({\n field,\n label,\n min = 0,\n max = 100,\n step = 1,\n className = '',\n validation,\n required = false,\n showValue = true,\n valueFormatter = (value) => value.toString(),\n defaultValue,\n info,\n subLabel,\n disabled,\n hidden\n}) => {\n const { formData } = useSmartForm();\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 // Evaluate disabled state\n const isDisabled = typeof disabled === 'function' ? disabled(formData) : disabled || false;\n \n // Evaluate hidden state\n const isHidden = typeof hidden === 'function' ? hidden(formData) : hidden || false;\n \n // Return null if field is hidden\n if (isHidden) return 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 === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Handle slider value change\n const handleValueChange = (values: number[]) => {\n const newValue = values[0];\n onChange(newValue);\n };\n\n // Get current value or default to min\n const currentValue = value !== undefined ? value : min;\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 {showValue && (\n <span className=\"ml-2 text-muted-foreground\">\n ({valueFormatter(currentValue)})\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=\"space-y-2\">\n <Slider\n ref={fieldRef}\n value={[currentValue]}\n onValueChange={handleValueChange}\n min={min}\n max={max}\n step={step}\n className={`w-full ${error ? 'border-destructive' : ''}`}\n data-field={field}\n disabled={isDisabled}\n />\n \n <div className=\"flex justify-between text-sm text-muted-foreground\">\n <span>{valueFormatter(min)}</span>\n <span>{valueFormatter(max)}</span>\n </div>\n </div>\n \n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n","import React, { useEffect, useRef } from 'react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Slider } from '../components/ui/slider';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { InfoIcon } from 'lucide-react';\n\n// =============================================================================\n// SMART DUAL RANGE SLIDER TYPES\n// =============================================================================\n\nexport interface SmartDualRangeSliderProps {\n minField: string;\n maxField: string;\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n className?: string;\n minValidation?: any; // Zod schema for min field\n maxValidation?: any; // Zod schema for max field\n required?: boolean;\n showValues?: boolean;\n valueFormatter?: (value: number) => string;\n minLabel?: string;\n maxLabel?: string;\n defaultMinValue?: number; // Default value for the min field\n defaultMaxValue?: number; // Default value for the max field\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n disabled?: boolean | ((formData: any) => boolean);\n hidden?: boolean | ((formData: any) => boolean); // Hide field conditionally\n}\n\n// =============================================================================\n// SMART DUAL RANGE SLIDER COMPONENT\n// =============================================================================\n\nexport const SmartDualRangeSlider: React.FC<SmartDualRangeSliderProps> = ({\n minField,\n maxField,\n label,\n min = 0,\n max = 100,\n step = 1,\n className = '',\n minValidation,\n maxValidation,\n required = false,\n showValues = true,\n valueFormatter = (value) => value.toString(),\n minLabel = 'Min',\n maxLabel = 'Max',\n defaultMinValue,\n defaultMaxValue,\n info,\n subLabel,\n disabled,\n hidden\n}) => {\n const { formData } = useSmartForm();\n // Use separate form fields for min and max values\n const minFormField = useFormField(minField);\n const maxFormField = useFormField(maxField);\n const fieldDetection = useFieldDetection();\n const hasRegisteredMin = useRef(false);\n const hasRegisteredMax = useRef(false);\n const hasSetDefaultMin = useRef(false);\n const hasSetDefaultMax = useRef(false);\n\n // Evaluate disabled state\n const isDisabled = typeof disabled === 'function' ? disabled(formData) : disabled || false;\n \n // Evaluate hidden state\n const isHidden = typeof hidden === 'function' ? hidden(formData) : hidden || false;\n \n // Return null if field is hidden\n if (isHidden) return null;\n\n // Register validation for min field\n useEffect(() => {\n if (minValidation && !hasRegisteredMin.current) {\n hasRegisteredMin.current = true;\n minFormField.registerValidation(minField, minValidation);\n }\n }, [minValidation, minField, minFormField]);\n\n // Register validation for max field\n useEffect(() => {\n if (maxValidation && !hasRegisteredMax.current) {\n hasRegisteredMax.current = true;\n maxFormField.registerValidation(maxField, maxValidation);\n }\n }, [maxValidation, maxField, maxFormField]);\n\n // Auto-register fields if in field detection context\n useEffect(() => {\n if (fieldDetection?.registerField) {\n fieldDetection.registerField(minField);\n fieldDetection.registerField(maxField);\n }\n }, [minField, maxField, fieldDetection]);\n\n // Set default value for min field if provided and field is empty\n useEffect(() => {\n if (defaultMinValue !== undefined && !hasSetDefaultMin.current && (minFormField.value === undefined || minFormField.value === null || minFormField.value === '')) {\n minFormField.onChange(defaultMinValue);\n hasSetDefaultMin.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultMinValue, minFormField.value]);\n\n // Set default value for max field if provided and field is empty\n useEffect(() => {\n if (defaultMaxValue !== undefined && !hasSetDefaultMax.current && (maxFormField.value === undefined || maxFormField.value === null || maxFormField.value === '')) {\n maxFormField.onChange(defaultMaxValue);\n hasSetDefaultMax.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultMaxValue, maxFormField.value]);\n\n // Handle slider value change\n const handleValueChange = (values: number[]) => {\n const [minValue, maxValue] = values;\n minFormField.onChange(minValue);\n maxFormField.onChange(maxValue);\n };\n\n // Get current values or defaults\n const currentMin = minFormField.value !== undefined ? minFormField.value : min;\n const currentMax = maxFormField.value !== undefined ? maxFormField.value : max;\n \n // Combine errors from both fields\n const combinedError = minFormField.error || maxFormField.error;\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 \n <div className=\"space-y-4\">\n <Slider\n ref={minFormField.fieldRef}\n value={[currentMin, currentMax]}\n onValueChange={handleValueChange}\n min={min}\n max={max}\n step={step}\n className={`w-full ${combinedError ? 'border-destructive' : ''}`}\n data-min-field={minField}\n data-max-field={maxField}\n disabled={isDisabled}\n />\n \n {showValues && (\n <div className=\"flex justify-between items-center text-sm\">\n <div className=\"flex flex-col items-center\">\n <span className=\"text-muted-foreground\">{minLabel}: {valueFormatter(currentMin)}</span>\n </div>\n <div className=\"flex flex-col items-center\">\n <span className=\"text-muted-foreground\">{maxLabel}: {valueFormatter(currentMax)}</span>\n </div>\n </div>\n )}\n </div>\n \n {combinedError && (\n <p className=\"text-destructive text-sm mt-1\">{combinedError}</p>\n )}\n </div>\n );\n};\n","'use client';\n\nimport { XIcon } from 'lucide-react';\nimport {\n type ComponentProps,\n createContext,\n type MouseEventHandler,\n type ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Badge } from '../../badge';\nimport { Button } from '../../button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../../command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '../../popover';\nimport { cn } from '../../../../lib/utils';\n\ntype TagsContextType = {\n value?: string;\n setValue?: (value: string) => void;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n width?: number;\n setWidth?: (width: number) => void;\n};\n\nconst TagsContext = createContext<TagsContextType>({\n value: undefined,\n setValue: undefined,\n open: false,\n onOpenChange: () => { },\n width: undefined,\n setWidth: undefined,\n});\n\nconst useTagsContext = () => {\n const context = useContext(TagsContext);\n\n if (!context) {\n throw new Error('useTagsContext must be used within a TagsProvider');\n }\n\n return context;\n};\n\nexport type TagsProps = {\n value?: string;\n setValue?: (value: string) => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: ReactNode;\n className?: string;\n};\n\nexport const Tags = ({\n value,\n setValue,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n children,\n className,\n}: TagsProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const [width, setWidth] = useState<number>();\n const ref = useRef<HTMLDivElement>(null);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const onOpenChange = controlledOnOpenChange ?? setUncontrolledOpen;\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const resizeObserver = new ResizeObserver((entries) => {\n setWidth(entries[0].contentRect.width);\n });\n\n resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <TagsContext.Provider\n value={{ value, setValue, open, onOpenChange, width, setWidth }}\n >\n <Popover onOpenChange={onOpenChange} open={open}>\n <div className={cn('relative w-full', className)} ref={ref}>\n {children}\n </div>\n </Popover>\n </TagsContext.Provider>\n );\n};\n\nexport type TagsTriggerProps = ComponentProps<typeof Button>;\n\nexport const TagsTrigger = ({\n className,\n children,\n ...props\n}: TagsTriggerProps) => (\n <PopoverTrigger asChild>\n <Button\n className={cn('h-auto w-full justify-between p-2', className)}\n // biome-ignore lint/a11y/useSemanticElements: \"Required\"\n role=\"combobox\"\n variant=\"outline\"\n {...props}\n >\n <div className=\"flex flex-wrap items-center gap-1\">\n {children}\n <span className=\"px-2 py-px text-muted-foreground\">\n </span>\n </div>\n </Button>\n </PopoverTrigger>\n);\n\nexport type TagsValueProps = ComponentProps<typeof Badge>;\n\nexport const TagsValue = ({\n className,\n children,\n onRemove,\n ...props\n}: TagsValueProps & { onRemove?: () => void }) => {\n const handleRemove: MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove?.();\n };\n\n return (\n <Badge className={cn('flex items-center gap-2', className)} {...props}>\n {children}\n {onRemove && (\n // biome-ignore lint/a11y/noStaticElementInteractions: \"This is a clickable badge\"\n // biome-ignore lint/a11y/useKeyWithClickEvents: \"This is a clickable badge\"\n <div\n className=\"size-auto cursor-pointer hover:text-muted-foreground\"\n onClick={handleRemove}\n >\n <XIcon size={12} />\n </div>\n )}\n </Badge>\n );\n};\n\nexport type TagsContentProps = ComponentProps<typeof PopoverContent>;\n\nexport const TagsContent = ({\n className,\n children,\n ...props\n}: TagsContentProps) => {\n const { width } = useTagsContext();\n\n return (\n <PopoverContent\n className={cn('p-0', className)}\n style={{ width }}\n {...props}\n >\n <Command>{children}</Command>\n </PopoverContent>\n );\n};\n\nexport type TagsInputProps = ComponentProps<typeof CommandInput>;\n\nexport const TagsInput = ({ className, ...props }: TagsInputProps) => (\n <CommandInput className={cn('h-9', className)} {...props} />\n);\n\nexport type TagsListProps = ComponentProps<typeof CommandList>;\n\nexport const TagsList = ({ className, ...props }: TagsListProps) => (\n <CommandList className={cn('max-h-[200px]', className)} {...props} />\n);\n\nexport type TagsEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const TagsEmpty = ({\n children,\n className,\n ...props\n}: TagsEmptyProps) => (\n <CommandEmpty {...props}>{children ?? 'No tags found.'}</CommandEmpty>\n);\n\nexport type TagsGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const TagsGroup = CommandGroup;\n\nexport type TagsItemProps = ComponentProps<typeof CommandItem>;\n\nexport const TagsItem = ({ className, ...props }: TagsItemProps) => (\n <CommandItem\n className={cn('cursor-pointer items-center justify-between', className)}\n {...props}\n />\n);\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { cn } from '../lib/utils';\nimport {\n Tags,\n TagsContent,\n TagsEmpty,\n TagsGroup,\n TagsInput,\n TagsItem,\n TagsList,\n TagsTrigger,\n TagsValue,\n} from '../components/ui/shadcn-io/tags';\nimport { CheckIcon, PlusIcon, InfoIcon } from 'lucide-react';\n\n// =============================================================================\n// SMART AUTO SUGGEST TAGS TYPES\n// =============================================================================\n\nexport interface TagOption {\n id: string;\n label: string;\n}\n\nexport interface SmartAutoSuggestTagsProps {\n field: string;\n label?: string;\n options: TagOption[]; // Available tags to choose from\n className?: string;\n placeholder?: string;\n validation?: any;\n required?: boolean;\n allowCreate?: boolean; // Allow creating new tags\n maxTags?: number; // Maximum number of tags allowed\n defaultValue?: string[]; // Default selected tag IDs\n onTagCreate?: (tag: TagOption) => void; // Callback when a new tag is created\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n disabled?: boolean | ((formData: any) => boolean);\n hidden?: boolean | ((formData: any) => boolean); // Hide field conditionally\n}\n\n// =============================================================================\n// SMART AUTO SUGGEST TAGS COMPONENT\n// =============================================================================\n\nexport const SmartAutoSuggestTags: React.FC<SmartAutoSuggestTagsProps> = ({\n field,\n label,\n options: initialOptions,\n className = '',\n placeholder = 'Select tags...',\n validation,\n required = false,\n allowCreate = true,\n maxTags,\n defaultValue,\n onTagCreate,\n info,\n subLabel,\n disabled,\n hidden\n}) => {\n const { formData } = useSmartForm();\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 // Evaluate disabled state\n const isDisabled = typeof disabled === 'function' ? disabled(formData) : disabled || false;\n \n // Evaluate hidden state\n const isHidden = typeof hidden === 'function' ? hidden(formData) : hidden || false;\n \n // Return null if field is hidden\n if (isHidden) return null;\n\n // Local state for available tags and search input\n const [tags, setTags] = useState<TagOption[]>(initialOptions);\n const [newTag, setNewTag] = useState<string>('');\n \n // Normalize value to array of strings\n const selected: string[] = Array.isArray(value) ? value : [];\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 onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Update tags when options change\n useEffect(() => {\n setTags(initialOptions);\n }, [initialOptions]);\n\n const handleRemove = (tagId: string) => {\n if (!selected.includes(tagId)) {\n return;\n }\n const newSelected = selected.filter((v) => v !== tagId);\n onChange(newSelected);\n };\n\n const handleSelect = (tagId: string) => {\n // Check if already selected\n if (selected.includes(tagId)) {\n handleRemove(tagId);\n return;\n }\n\n // Check max tags limit\n if (maxTags && selected.length >= maxTags) {\n return;\n }\n\n const newSelected = [...selected, tagId];\n onChange(newSelected);\n };\n\n const handleCreateTag = () => {\n if (!newTag.trim()) return;\n if (!allowCreate) return;\n\n const tagId = newTag.toLowerCase().replace(/\\s+/g, '-');\n const newTagOption: TagOption = {\n id: tagId,\n label: newTag,\n };\n\n // Add to available tags\n setTags((prev) => [...prev, newTagOption]);\n \n // Add to selected tags\n const newSelected = [...selected, tagId];\n onChange(newSelected);\n\n // Call callback if provided\n if (onTagCreate) {\n onTagCreate(newTagOption);\n }\n\n setNewTag('');\n };\n\n // Filter tags based on search input\n const filteredTags = tags.filter((tag) =>\n tag.label.toLowerCase().includes(newTag.toLowerCase())\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 ({selected.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 ref={fieldRef as any} data-field={field}>\n <div className={cn(\n \"w-full rounded-md border border-input bg-background text-sm ring-offset-background\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n error && \"border-destructive focus-within:ring-destructive\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}>\n <Tags className=\"w-full\">\n <TagsTrigger className=\"w-full px-3 py-2 border-0 bg-transparent\" disabled={isDisabled}>\n {selected.length === 0 && placeholder && (\n <span className=\"text-muted-foreground text-sm\">{placeholder}</span>\n )}\n {selected.map((tagId) => {\n const tag = tags.find((t) => t.id === tagId);\n return tag ? (\n <TagsValue \n key={tagId} \n onRemove={() => handleRemove(tagId)}\n className=\"px-2 py-1 text-sm gap-1\"\n >\n {tag.label}\n </TagsValue>\n ) : null;\n })}\n </TagsTrigger>\n <TagsContent>\n <TagsInput \n onValueChange={setNewTag} \n placeholder={`Search ${placeholder.toLowerCase()}...`}\n value={newTag}\n disabled={isDisabled}\n />\n <TagsList>\n {filteredTags.length === 0 && allowCreate && newTag.trim() && (\n <TagsEmpty>\n <button\n className=\"mx-auto flex cursor-pointer items-center gap-2 text-sm\"\n onClick={handleCreateTag}\n type=\"button\"\n >\n <PlusIcon className=\"text-muted-foreground\" size={14} />\n Create new tag: {newTag}\n </button>\n </TagsEmpty>\n )}\n {filteredTags.length === 0 && (!allowCreate || !newTag.trim()) && (\n <TagsEmpty>\n <span className=\"text-sm text-muted-foreground\">No tags found</span>\n </TagsEmpty>\n )}\n <TagsGroup>\n {filteredTags.map((tag) => (\n <TagsItem \n key={tag.id} \n onSelect={handleSelect} \n value={tag.id}\n disabled={maxTags ? selected.length >= maxTags && !selected.includes(tag.id) : false}\n >\n {tag.label}\n {selected.includes(tag.id) && (\n <CheckIcon className=\"text-muted-foreground\" size={14} />\n )}\n </TagsItem>\n ))}\n </TagsGroup>\n </TagsList>\n </TagsContent>\n </Tags>\n </div>\n </div>\n \n {error && (\n <p className=\"text-destructive text-sm mt-1\">{error}</p>\n )}\n </div>\n );\n};\n\nexport default SmartAutoSuggestTags;\n\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport { useFormField, useSmartForm } from '../SmartFormProvider';\nimport { useFieldDetection } from '../FieldDetectionHook';\nimport { Label } from '../components/ui/label';\nimport { Button } from '../components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../components/ui/tooltip';\nimport { Bold, Italic, Underline, List, ListOrdered, InfoIcon } from 'lucide-react';\nimport { cn } from '../lib/utils';\n\n// =============================================================================\n// SMART BASIC RICH TEXTBOX TYPES\n// =============================================================================\n\nexport interface SmartBasicRichTextboxProps {\n field: string;\n label?: string;\n placeholder?: string;\n validation?: any;\n className?: string;\n required?: boolean;\n defaultValue?: string; // Default HTML content\n minHeight?: string; // Minimum height of the editor (e.g., '200px')\n maxHeight?: string; // Maximum height of the editor (e.g., '400px')\n info?: string; // Info text to show on hover of info icon\n subLabel?: string; // Additional label text shown below the main label\n disabled?: boolean | ((formData: any) => boolean);\n hidden?: boolean | ((formData: any) => boolean); // Hide field conditionally\n}\n\n// =============================================================================\n// HTML SANITIZATION\n// =============================================================================\n\n/**\n * Sanitizes HTML to only allow specific tags: p, strong, b, em, i, u, ul, ol, li, br\n * Removes all other tags and attributes\n */\nconst sanitizeHtml = (html: string): string => {\n // Create a temporary div to parse HTML\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = html;\n\n // Allowed tags\n const allowedTags = ['P', 'STRONG', 'B', 'EM', 'I', 'U', 'UL', 'OL', 'LI', 'BR', 'DIV'];\n\n // Recursively clean nodes\n const cleanNode = (node: Node): Node | null => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.cloneNode(false);\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n const tagName = element.tagName.toUpperCase();\n\n // Convert DIV to P\n if (tagName === 'DIV') {\n const p = document.createElement('p');\n Array.from(element.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) p.appendChild(cleanedChild);\n });\n return p;\n }\n\n // If tag is not allowed, return its children\n if (!allowedTags.includes(tagName)) {\n const fragment = document.createDocumentFragment();\n Array.from(element.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) fragment.appendChild(cleanedChild);\n });\n return fragment;\n }\n\n // Create clean element without attributes\n const cleanElement = document.createElement(tagName.toLowerCase());\n Array.from(element.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) cleanElement.appendChild(cleanedChild);\n });\n\n return cleanElement;\n }\n\n return null;\n };\n\n const cleanedDiv = document.createElement('div');\n Array.from(tempDiv.childNodes).forEach(child => {\n const cleanedChild = cleanNode(child);\n if (cleanedChild) cleanedDiv.appendChild(cleanedChild);\n });\n\n return cleanedDiv.innerHTML;\n};\n\n// =============================================================================\n// SMART BASIC RICH TEXTBOX COMPONENT\n// =============================================================================\n\nexport const SmartBasicRichTextbox: React.FC<SmartBasicRichTextboxProps> = ({\n field,\n label,\n placeholder = 'Enter text...',\n validation,\n className = '',\n required = false,\n defaultValue,\n minHeight = '150px',\n maxHeight = '400px',\n info,\n subLabel,\n disabled,\n hidden\n}) => {\n const { formData } = useSmartForm();\n const { value, error, onChange, fieldRef, registerValidation } = useFormField(field);\n const fieldDetection = useFieldDetection();\n const hasRegistered = useRef(false);\n const hasSetDefault = useRef(false);\n const editorRef = useRef<HTMLDivElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n\n // Evaluate disabled state\n const isDisabled = typeof disabled === 'function' ? disabled(formData) : disabled || false;\n \n // Evaluate hidden state\n const isHidden = typeof hidden === 'function' ? hidden(formData) : hidden || false;\n \n // Return null if field is hidden\n if (isHidden) return 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 === undefined || value === null || value === '')) {\n onChange(defaultValue);\n hasSetDefault.current = true;\n }\n }, [defaultValue, value, onChange]);\n\n // Sync editor content with form value\n useEffect(() => {\n if (editorRef.current && value !== undefined) {\n const sanitized = sanitizeHtml(value || '');\n if (editorRef.current.innerHTML !== sanitized) {\n editorRef.current.innerHTML = sanitized;\n }\n }\n }, [value]);\n\n // Handle content change\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const html = editorRef.current.innerHTML;\n const sanitized = sanitizeHtml(html);\n onChange(sanitized);\n }\n }, [onChange]);\n\n // Handle keyboard events\n const handleKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n // Handle Enter key to create new paragraph\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n document.execCommand('insertParagraph', false);\n return;\n }\n }, []);\n\n // Format commands\n const execCommand = useCallback((command: string, value?: string) => {\n document.execCommand(command, false, value);\n editorRef.current?.focus();\n handleInput();\n }, [handleInput]);\n\n const toggleBold = () => execCommand('bold');\n const toggleItalic = () => execCommand('italic');\n const toggleUnderline = () => execCommand('underline');\n const toggleBulletList = () => execCommand('insertUnorderedList');\n const toggleNumberedList = () => execCommand('insertOrderedList');\n\n // Check if a format is currently active\n const isFormatActive = useCallback((format: string): boolean => {\n return document.queryCommandState(format);\n }, []);\n\n const [activeFormats, setActiveFormats] = useState({\n bold: false,\n italic: false,\n underline: false,\n bulletList: false,\n numberedList: false\n });\n\n // Update active formats on selection change\n const updateActiveFormats = useCallback(() => {\n if (isFocused) {\n setActiveFormats({\n bold: isFormatActive('bold'),\n italic: isFormatActive('italic'),\n underline: isFormatActive('underline'),\n bulletList: isFormatActive('insertUnorderedList'),\n numberedList: isFormatActive('insertOrderedList')\n });\n }\n }, [isFocused, isFormatActive]);\n\n // Update formats on selection change\n useEffect(() => {\n if (isFocused) {\n document.addEventListener('selectionchange', updateActiveFormats);\n return () => document.removeEventListener('selectionchange', updateActiveFormats);\n }\n }, [isFocused, updateActiveFormats]);\n\n const handleFocus = () => {\n setIsFocused(true);\n updateActiveFormats();\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\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\n <div\n ref={fieldRef as any}\n data-field={field}\n className={cn(\n 'w-full rounded-md border border-input bg-background',\n 'focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2',\n error && 'border-destructive focus-within:ring-destructive',\n isDisabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {/* Toolbar */}\n <div className={cn(\"flex items-center gap-0.5 p-1.5 border-b border-border bg-muted/30\", isDisabled && \"pointer-events-none\")}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.bold && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleBold}\n disabled={isDisabled}\n >\n <Bold className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Bold (Ctrl+B)</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.italic && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleItalic}\n disabled={isDisabled}\n >\n <Italic className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Italic (Ctrl+I)</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.underline && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleUnderline}\n disabled={isDisabled}\n >\n <Underline className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Underline (Ctrl+U)</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <div className=\"w-px h-5 bg-border mx-1\" />\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.bulletList && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleBulletList}\n disabled={isDisabled}\n >\n <List className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Bullet List</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-8 w-8 p-0 hover:bg-accent hover:text-accent-foreground',\n activeFormats.numberedList && 'bg-primary text-primary-foreground hover:bg-primary/90'\n )}\n onClick={toggleNumberedList}\n disabled={isDisabled}\n >\n <ListOrdered className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>Numbered List</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n {/* Editor */}\n <div\n ref={editorRef}\n contentEditable={!isDisabled}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n 'w-full px-3 py-2 text-sm text-foreground',\n 'bg-background',\n 'focus:outline-none',\n 'overflow-y-auto',\n '[&>p]:my-2 [&>p]:leading-relaxed',\n '[&>ul]:my-2 [&>ul]:ml-6 [&>ul]:list-disc [&>ul]:list-inside',\n '[&_ul]:my-2 [&_ul]:ml-6 [&_ul]:list-disc [&_ul]:list-inside',\n '[&>ol]:my-2 [&>ol]:ml-6 [&>ol]:list-decimal [&>ol]:list-inside',\n '[&_ol]:my-2 [&_ol]:ml-6 [&_ol]:list-decimal [&_ol]:list-inside',\n '[&>li]:my-1 [&_li]:my-1',\n '[&_strong]:font-semibold [&_b]:font-semibold',\n '[&_em]:italic [&_i]:italic',\n '[&_u]:underline',\n !value && 'empty:before:content-[attr(data-placeholder)] empty:before:text-muted-foreground empty:before:pointer-events-none'\n )}\n style={{\n minHeight,\n maxHeight\n }}\n data-placeholder={placeholder}\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 SmartBasicRichTextbox;\n"]}