shekel-fe-shared-lib 1.0.36 → 1.0.37

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/components/Button/Button.tsx","../src/components/StatCard/StatCard.tsx","../src/components/SearchInput.tsx","../src/components/Card/Card.tsx","../src/components/Dropdown.tsx","../node_modules/react-hook-form/dist/index.esm.mjs","../src/components/Select.tsx","../src/components/Table.tsx","../src/components/TableTop.tsx","../src/components/Modal.tsx","../src/components/Badge.tsx","../src/components/Steps.tsx","../src/components/Progress.tsx","../src/components/Checkbox.tsx","../src/components/SelectedItemsList.tsx","../src/components/Input/Input.tsx","../src/components/Input/PasswordInput.tsx","../src/components/Input/OTPInput.tsx","../src/components/Input/PhoneInput.tsx","../src/components/Input/CurrencyInput.tsx","../src/components/UserPill/UserPill.tsx","../src/assets/card-border.svg","../src/components/UserCard/UserCard.tsx","../src/assets/flags/NG.svg","../src/assets/flags/US.svg","../src/assets/flags/GB.svg","../src/assets/flags/GH.svg","../src/assets/flags/KE.svg","../src/assets/flags/ZA.svg","../src/components/CountrySelector/CountrySelector.tsx","../src/components/UserProfileDropdown/UserProfileDropdown.tsx","../src/components/ActionCard/ActionCard.tsx","../src/assets/card-pattern.svg","../src/components/DashboardCard/DashboardCard.tsx","../src/assets/empty-notification.svg","../src/components/NotificationDropdown/NotificationDropdown.tsx","../src/components/TabsComponent/TabsComponent.tsx"],"sourcesContent":["import React from 'react';\nimport { Button as AntButton, ButtonProps as AntButtonProps } from 'antd';\n\nexport interface ButtonProps extends Omit<AntButtonProps, 'variant' | 'size'> {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost';\n size?: 'xsmall' | 'small' | 'medium' | 'large';\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'large',\n className = '',\n children,\n ...props\n}) => {\n const getSizeHeight = () => {\n switch (size) {\n case 'xsmall':\n return '32px';\n case 'small':\n return '40px';\n case 'medium':\n return '48px';\n case 'large':\n return '52px';\n default:\n return '52px';\n }\n };\n\n const getVariantStyles = () => {\n const height = getSizeHeight();\n\n switch (variant) {\n case 'primary':\n return {\n backgroundColor: '#EC615B',\n borderColor: '#EC615B',\n color: '#FFFFFF',\n height,\n borderRadius: '8px',\n };\n case 'secondary':\n return {\n backgroundColor: '#6B7280',\n borderColor: '#6B7280',\n color: '#FFFFFF',\n height,\n borderRadius: '8px',\n };\n case 'outline':\n return {\n backgroundColor: 'transparent',\n borderColor: '#EC615B',\n color: '#EC615B',\n height,\n borderRadius: '8px',\n };\n case 'ghost':\n return {\n backgroundColor: '#EFF2F3',\n borderColor: '#EFF2F3',\n color: '#181918',\n height,\n borderRadius: '8px',\n };\n default:\n return {};\n }\n };\n\n const disabledStyles = props.disabled && variant === 'primary'\n ? {\n backgroundColor: '#F9CECC',\n borderColor: '#F9CECC',\n color: '#FFFFFF',\n cursor: 'not-allowed',\n opacity: 1,\n }\n : {};\n\n return (\n <>\n <style>\n {variant === 'primary' && `\n .ant-btn-default:disabled,\n .ant-btn-default:disabled:hover {\n background-color: #F9CECC !important;\n border-color: #F9CECC !important;\n color: #FFFFFF !important;\n cursor: not-allowed !important;\n opacity: 1 !important;\n }\n `}\n </style>\n <AntButton\n className={className}\n {...props}\n style={{\n ...getVariantStyles(),\n ...disabledStyles,\n userSelect: 'none',\n ...props.style,\n }}\n onMouseEnter={(e) => {\n if (!props.disabled) {\n if (variant === 'primary') {\n (e.target as HTMLElement).style.backgroundColor = '#D8524D';\n } else if (variant === 'secondary') {\n (e.target as HTMLElement).style.backgroundColor = '#4B5563';\n } else if (variant === 'outline') {\n (e.target as HTMLElement).style.backgroundColor = '#F3F4F6';\n } else if (variant === 'ghost') {\n (e.target as HTMLElement).style.backgroundColor = '#E1E4E6';\n }\n }\n props.onMouseEnter?.(e as any);\n }}\n onMouseLeave={(e) => {\n if (!props.disabled) {\n const styles = getVariantStyles();\n (e.target as HTMLElement).style.backgroundColor = styles.backgroundColor || '';\n }\n props.onMouseLeave?.(e as any);\n }}\n >\n {children}\n </AntButton>\n </>\n );\n};\n","import React from 'react';\n\nexport interface StatCardProps {\n label: string;\n value: string | number;\n icon?: React.ReactNode;\n iconBackgroundColor?: string;\n iconColor?: string;\n valuePrefix?: string;\n progressText?: string | React.ReactNode;\n badge?: string | React.ReactNode;\n width?: string | number;\n className?: string;\n selected?: boolean;\n onClick?: () => void;\n size?: 'sm' | 'md' | 'lg';\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n}\n\nexport const StatCard: React.FC<StatCardProps> = ({\n label,\n value,\n icon,\n iconBackgroundColor = '#E8F4FD',\n iconColor = '#4A9FD8',\n valuePrefix = '₦',\n progressText,\n badge,\n width = 347,\n className = '',\n selected = false,\n onClick,\n size = 'md',\n rounded = '2xl',\n}) => {\n const sizeClass = size === 'sm' ? 'p-3' : size === 'lg' ? 'p-6' : 'p-4';\n\n const roundedMap: Record<string, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n full: 'rounded-full',\n };\n const roundedClass = roundedMap[rounded] ?? 'rounded-2xl';\n const defaultIcon = (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M3 10h18M7 14h4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n\n return (\n <div\n className={`bg-white border flex flex-col justify-between transition-all duration-300 ease-in-out hover:border-gray-300 hover:-translate-y-1 cursor-pointer ${sizeClass} ${roundedClass} ${selected ? 'border-[#EC615B]' : 'border-[#E6E6E6]'} ${className}`}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n boxShadow: selected ? '0 0 0 1px #EC615B' : '0 0 0 0 rgba(0, 0, 0, 0)',\n transition: 'all 0.3s ease-in-out',\n }}\n onClick={onClick}\n onMouseEnter={(e) => {\n e.currentTarget.style.boxShadow = selected ? '0 0 0 1px #EC615B' : '0 0 20px 0 rgba(0, 0, 0, 0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = selected ? '0 0 0 1px #EC615B' : '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n >\n <div>\n <div className=\"flex items-center justify-between mb-6\">\n <div\n className=\"w-9 h-9 rounded-full flex items-center justify-center shrink-0 [&>svg]:w-5 [&>svg]:h-5 transition-transform duration-300 ease-in-out group-hover:scale-110\"\n style={{\n backgroundColor: iconBackgroundColor,\n color: iconColor,\n }}\n >\n {icon || defaultIcon}\n </div>\n {badge && badge}\n </div>\n <div className=\"text-sm text-[#181918] font-light transition-colors duration-200\">\n {label}\n </div>\n <div className=\"text-[20px] font-bold text-[#181918] transition-all duration-200\">\n {valuePrefix} {value}\n </div>\n </div>\n {progressText && (\n <div className=\"text-xs text-gray-400 font-normal mt-4 transition-colors duration-200\">\n {progressText}\n </div>\n )}\n </div>\n );\n};\n","import type { FC, ReactNode, InputHTMLAttributes, CSSProperties } from 'react';\n\n/**\n * @deprecated SearchInput is deprecated as of v1.0.11. Please use the new Input component instead.\n * The new Input component provides better functionality and consistent styling with Ant Design.\n */\nexport interface SearchInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n fullWidth?: boolean;\n onIconClick?: () => void;\n bgColor?: string;\n borderColor?: string;\n focusBorderColor?: string;\n iconColor?: string;\n textColor?: string;\n placeholderColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n style?: CSSProperties;\n}\n\n/**\n * @deprecated SearchInput is deprecated as of v1.0.11. Please use the new Input component instead.\n */\nexport const SearchInput: FC<SearchInputProps> = ({\n icon,\n iconPosition = 'left',\n size = 'md',\n fullWidth = false,\n className = '',\n onIconClick,\n bgColor,\n borderColor,\n focusBorderColor,\n iconColor,\n textColor,\n placeholderColor,\n rounded = 'md',\n style,\n ...props\n}) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n '[Shekel Shared Lib] SearchInput is deprecated as of v1.0.11. Please use the new Input component instead for better functionality and consistent styling.'\n );\n }\n\n const containerBaseClasses = 'relative inline-flex items-center';\n\n const inputBaseClasses =\n 'border focus:outline-none focus:ring-1 transition-all duration-200 ease-in-out';\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n responsive: 'px-3 sm:px-4 md:px-5 py-1.5 sm:py-2 md:py-3 text-sm sm:text-base md:text-lg',\n };\n\n const iconSizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n responsive: 'w-4 sm:w-5 md:w-6 h-4 sm:h-5 md:h-6',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n full: 'rounded-full',\n };\n\n const paddingWithIcon =\n iconPosition === 'left'\n ? size === 'sm'\n ? 'pl-9'\n : size === 'md'\n ? 'pl-10'\n : size === 'lg'\n ? 'pl-12'\n : 'pl-9 sm:pl-10 md:pl-12'\n : size === 'sm'\n ? 'pr-9'\n : size === 'md'\n ? 'pr-10'\n : size === 'lg'\n ? 'pr-12'\n : 'pr-9 sm:pr-10 md:pr-12';\n\n const widthClass = fullWidth ? 'w-full' : '';\n\n // Build custom styles for colors\n const customStyles: CSSProperties = {\n backgroundColor: bgColor,\n borderColor: borderColor || '#D1D5DB',\n color: textColor,\n ...style,\n };\n\n // Determine placeholder color class\n const placeholderClass = placeholderColor\n ? ''\n : 'placeholder:text-gray-400';\n\n // Build border and default colors\n const defaultBorderClass = borderColor ? '' : 'border-gray-300';\n const defaultTextClass = textColor ? '' : 'text-gray-900';\n const defaultFocusClass = focusBorderColor\n ? ''\n : 'focus:ring-[#EC615B] focus:border-[#EC615B]';\n\n const inputClassName = `${inputBaseClasses} ${!className.includes('px-') && !className.includes('py-') ? sizeClasses[size] : ''} ${\n icon ? paddingWithIcon : ''\n } ${widthClass} ${!className.includes('rounded') ? roundedClasses[rounded] : ''} ${!className.includes('border-') ? defaultBorderClass : ''} ${defaultTextClass} ${defaultFocusClass} ${placeholderClass} ${className}`;\n\n const iconPositionClasses = iconPosition === 'left' ? 'left-3' : 'right-3';\n const defaultIconColor = iconColor || 'text-gray-400';\n const hoverIconColor = iconColor ? '' : 'hover:text-gray-600';\n\n const defaultSearchIcon = (\n <svg\n className={`${iconSizeClasses[size]} ${defaultIconColor}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n );\n\n return (\n <div className={`${containerBaseClasses} ${widthClass}`}>\n {icon && (\n <div\n className={`absolute ${iconPositionClasses} ${defaultIconColor} ${\n onIconClick ? 'cursor-pointer' : ''\n } ${hoverIconColor}`}\n onClick={onIconClick}\n >\n {icon === true ? defaultSearchIcon : icon}\n </div>\n )}\n <input\n type=\"text\"\n className={inputClassName}\n style={{\n ...customStyles,\n ...(focusBorderColor && {\n '--focus-border-color': focusBorderColor,\n } as CSSProperties),\n ...(placeholderColor && {\n '--placeholder-color': placeholderColor,\n } as CSSProperties),\n }}\n {...props}\n />\n </div>\n );\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport { Card as AntCard, CardProps as AntCardProps } from 'antd';\n\nexport interface CardProps extends AntCardProps {\n shadow?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Card: React.FC<CardProps> = ({\n shadow = 'md',\n className = '',\n children,\n ...props\n}) => {\n const shadowClasses = {\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n xl: 'shadow-xl'\n };\n\n const combinedClassName = `${shadowClasses[shadow]} rounded-lg ${className}`;\n\n return (\n <AntCard\n className={combinedClassName}\n {...props}\n >\n {children}\n </AntCard>\n );\n};\n","import { useState, useRef, useEffect } from 'react';\nimport type { FC, ReactNode, CSSProperties } from 'react';\n\nexport interface DropdownMenuItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n danger?: boolean;\n onClick?: () => void;\n}\n\nexport interface DropdownProps {\n items: DropdownMenuItem[];\n trigger?: 'click' | 'hover';\n placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n children: ReactNode;\n className?: string;\n overlayClassName?: string;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n menuBgColor?: string;\n menuItemHoverColor?: string;\n dangerColor?: string;\n borderColor?: string;\n style?: CSSProperties;\n}\n\nexport const Dropdown: FC<DropdownProps> = ({\n items,\n trigger = 'click',\n placement = 'bottomLeft',\n children,\n className = '',\n overlayClassName = '',\n disabled = false,\n size = 'md',\n menuBgColor,\n menuItemHoverColor,\n dangerColor,\n borderColor,\n style,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: Event) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n const handleTriggerClick = () => {\n if (!disabled && trigger === 'click') {\n setIsOpen(!isOpen);\n }\n };\n\n const handleTriggerMouseEnter = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(true);\n }\n };\n\n const handleTriggerMouseLeave = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(false);\n }\n };\n\n const handleMenuItemClick = (item: DropdownMenuItem) => {\n if (!item.disabled && item.onClick) {\n item.onClick();\n }\n setIsOpen(false);\n };\n\n const placementClasses = {\n bottomLeft: 'top-full left-0 mt-1',\n bottomRight: 'top-full right-0 mt-1',\n topLeft: 'bottom-full left-0 mb-1',\n topRight: 'bottom-full right-0 mb-1',\n };\n\n const animationClasses = placement.startsWith('bottom')\n ? 'dropdown-slide-down'\n : 'dropdown-slide-up';\n\n const sizeClasses = {\n sm: 'min-w-[120px] text-xs',\n md: 'min-w-[160px] text-sm',\n lg: 'min-w-[220px] text-base',\n responsive: 'min-w-[120px] sm:min-w-[160px] md:min-w-[200px] lg:min-w-[240px] text-xs sm:text-sm md:text-base',\n };\n\n const itemSizeClasses = {\n sm: 'px-3 py-1.5 text-xs gap-1.5',\n md: 'px-4 py-2 text-sm gap-2',\n lg: 'px-5 py-3 text-base gap-2.5',\n responsive: 'px-3 sm:px-4 md:px-5 py-1.5 sm:py-2 md:py-3 text-xs sm:text-sm md:text-base gap-1.5 sm:gap-2 md:gap-2.5',\n };\n\n // Color styling helpers\n const defaultHoverColor = 'hover:bg-gray-50';\n const defaultBorderColor = 'border-gray-200';\n const defaultDangerColor = 'text-red-600';\n\n // Hover color handling\n const hoverColorStyle = menuItemHoverColor ? { backgroundColor: menuItemHoverColor } : {};\n const customHoverClass = menuItemHoverColor ? '' : defaultHoverColor;\n\n // Danger color handling\n const customDangerStyle = dangerColor ? { color: dangerColor } : {};\n const dangerHoverBgStyle = dangerColor ? { backgroundColor: dangerColor + '15' } : {};\n\n // Border color handling\n const finalBorderColor = borderColor || defaultBorderColor;\n\n return (\n <div\n ref={dropdownRef}\n className={`relative inline-block ${className}`}\n onMouseEnter={handleTriggerMouseEnter}\n onMouseLeave={handleTriggerMouseLeave}\n style={style}\n >\n <div\n onClick={handleTriggerClick}\n className={`inline-flex ${disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'}`}\n >\n {children}\n </div>\n\n {isOpen && !disabled && (\n <div\n className={`absolute ${placementClasses[placement]} ${animationClasses} z-50 ${sizeClasses[size]} ${overlayClassName}`}\n >\n <div\n className={`dropdown-menu rounded-lg shadow-lg border py-1 overflow-hidden ${finalBorderColor}`}\n style={{ backgroundColor: menuBgColor || '#ffffff' }}\n >\n {items.map((item) => {\n // Determine item-specific styles\n let itemStyle: React.CSSProperties = {};\n\n if (!item.disabled) {\n if (item.danger) {\n // Danger items use custom danger color if provided\n itemStyle = {\n ...customDangerStyle,\n ...dangerHoverBgStyle,\n };\n } else if (menuItemHoverColor) {\n // Custom hover color applied inline\n itemStyle = hoverColorStyle;\n }\n }\n\n return (\n <div\n key={item.key}\n onClick={() => handleMenuItemClick(item)}\n className={`\n dropdown-menu-item\n flex items-center cursor-pointer transition-all duration-200 ease-out\n ${!overlayClassName.includes('px-') && !overlayClassName.includes('py-') ? itemSizeClasses[size] : ''}\n ${item.disabled ? 'opacity-50 cursor-not-allowed' : customHoverClass}\n ${item.danger ? (dangerColor ? '' : defaultDangerColor) : 'text-gray-700'}\n `}\n style={itemStyle}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar isNameInFieldArray = (names, name) => name\n .split('.')\n .some((part, index, arr) => !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n if (data instanceof Date) {\n return new Date(data);\n }\n const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n if (isWeb && (data instanceof Blob || isFileListInstance)) {\n return data;\n }\n const isArray = Array.isArray(data);\n if (!isArray && !(isObject(data) && isPlainObject(data))) {\n return data;\n }\n const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n return copy;\n}\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n SUBMIT: 'submit',\n TRIGGER: 'trigger',\n VALID: 'valid',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\nconst FORM_ERROR_TYPE = 'form';\nconst ROOT_ERROR_TYPE = 'root';\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = React.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => React.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const formControl = useFormControlContext();\n const { control = formControl, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: (formState) => {\n !disabled &&\n updateFormState({\n ...control._formState,\n ...formState,\n });\n },\n }), [name, disabled, exact]);\n React.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2, _internal_visited = new WeakSet()) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return Object.is(object1, object2);\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return Object.is(object1.getTime(), object2.getTime());\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n ((isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2)))\n ? !deepEqual(val1, val2, _internal_visited)\n : !Object.is(val1, val2)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n const _defaultValue = React.useRef(defaultValue);\n const _compute = React.useRef(compute);\n const _computeFormValues = React.useRef(undefined);\n const _prevControl = React.useRef(control);\n const _prevName = React.useRef(name);\n _compute.current = compute;\n const [value, updateValue] = React.useState(() => {\n const defaultValue = control._getWatch(name, _defaultValue.current);\n return _compute.current ? _compute.current(defaultValue) : defaultValue;\n });\n const getCurrentOutput = React.useCallback((values) => {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n return _compute.current ? _compute.current(formValues) : formValues;\n }, [control._formValues, control._names, name]);\n const refreshValue = React.useCallback((values) => {\n if (!disabled) {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n }\n else {\n updateValue(formValues);\n }\n }\n }, [control._formValues, control._names, disabled, name]);\n useIsomorphicLayoutEffect(() => {\n if (_prevControl.current !== control ||\n !deepEqual(_prevName.current, name)) {\n _prevControl.current = control;\n _prevName.current = name;\n refreshValue();\n }\n return control._subscribe({\n name,\n formState: {\n values: true,\n },\n exact,\n callback: (formState) => {\n refreshValue(formState.values);\n },\n });\n }, [control, exact, name, refreshValue]);\n React.useEffect(() => control._removeUnmounted());\n // If name or control changed for this render, synchronously reflect the\n // latest value so callers (like useController) see the correct value\n // immediately on the same render.\n // Optimize: Check control reference first before expensive deepEqual\n const controlChanged = _prevControl.current !== control;\n const prevName = _prevName.current;\n // Cache the computed output to avoid duplicate calls within the same render\n // We include shouldReturnImmediate in deps to ensure proper recomputation\n const computedOutput = React.useMemo(() => {\n if (disabled) {\n return null;\n }\n const nameChanged = !controlChanged && !deepEqual(prevName, name);\n const shouldReturnImmediate = controlChanged || nameChanged;\n return shouldReturnImmediate ? getCurrentOutput() : null;\n }, [disabled, controlChanged, name, prevName, getCurrentOutput]);\n return computedOutput !== null ? computedOutput : value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const formControl = useFormControlContext();\n const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact,\n });\n const formState = useFormState({\n control,\n name,\n exact,\n });\n const _props = React.useRef(props);\n const _previousNameRef = React.useRef(undefined);\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n _props.current = props;\n const fieldState = React.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }), [formState, name]);\n const onChange = React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]);\n const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control._formValues]);\n const ref = React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && field._f && elm) {\n field._f.ref = {\n focus: () => isFunction(elm.focus) && elm.focus(),\n select: () => isFunction(elm.select) && elm.select(),\n setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n };\n }\n }, [control._fields, name]);\n const field = React.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange,\n onBlur,\n ref,\n }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const previousName = _previousNameRef.current;\n if (previousName && previousName !== name && !isArrayField) {\n control.unregister(previousName);\n }\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled)\n ? { disabled: _props.current.disabled }\n : {}),\n });\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name, _props.current.defaultValue));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n _previousNameRef.current = name;\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n control._setDisabledField({\n disabled,\n name,\n });\n }, [disabled, name, control]);\n return React.useMemo(() => ({\n field,\n formState,\n fieldState,\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n }\n else {\n output[key] = obj[key];\n }\n }\n return output;\n};\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;\n const memoizedValue = React.useMemo(() => ({\n watch,\n getValues,\n getFieldState,\n setError,\n clearErrors,\n setValue,\n trigger,\n formState,\n resetField,\n reset,\n handleSubmit,\n unregister,\n control,\n register,\n setFocus,\n subscribe,\n }), [\n clearErrors,\n control,\n formState,\n getFieldState,\n getValues,\n handleSubmit,\n register,\n reset,\n resetField,\n setError,\n setFocus,\n setValue,\n subscribe,\n trigger,\n unregister,\n watch,\n ]);\n return (React.createElement(HookFormContext.Provider, { value: memoizedValue },\n React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data'\n ? { 'Content-Type': encType }\n : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nconst FormStateSubscribe = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n const values = {};\n for (const key in fieldsState) {\n if (fieldsState.hasOwnProperty(key)) {\n const fieldState = fieldsState[key];\n const fieldValue = formValues[key];\n if (fieldState && isObject(fieldState) && fieldValue) {\n const nestedFieldsState = extractFormValues(fieldState, fieldValue);\n if (isObject(nestedFieldsState)) {\n values[key] = nestedFieldsState;\n }\n }\n else if (fieldsState[key]) {\n values[key] = fieldValue;\n }\n }\n }\n return values;\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction isTraversable(value) {\n return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction markFieldsDirty(data, fields = {}) {\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n fields[key] = Array.isArray(value) ? [] : {};\n markFieldsDirty(value, fields[key]);\n }\n else if (!isUndefined(value)) {\n fields[key] = true;\n }\n }\n return fields;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues) {\n if (!dirtyFieldsFromValues) {\n dirtyFieldsFromValues = markFieldsDirty(formValues);\n }\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {});\n }\n else {\n getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n const formValue = formValues[key];\n dirtyFieldsFromValues[key] = !deepEqual(value, formValue);\n }\n }\n return dirtyFieldsFromValues;\n}\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n !!fieldReference.validate &&\n !!((isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n }\n else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, ROOT_ERROR_TYPE, error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isString(result) ||\n (Array.isArray(result) && result.every(isString)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isString(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isString(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isReady: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n keepIsValid: false,\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n registerName: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const defaultProxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _proxyFormState = {\n ...defaultProxyFormState,\n };\n let _proxySubscribeFormState = {\n ..._proxyFormState,\n };\n const _subjects = {\n array: createSubject(),\n state: createSubject(),\n };\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _setValid = async (shouldUpdateValid) => {\n if (_state.keepIsValid) {\n return;\n }\n if (!_options.disabled &&\n (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid ||\n shouldUpdateValid)) {\n let isValid;\n if (_options.resolver) {\n isValid = isEmptyObject((await _runSchema()).errors);\n _updateIsValidating();\n }\n else {\n isValid = await executeBuiltInValidation({\n fields: _fields,\n onlyCheckValid: true,\n eventType: EVENTS.VALID,\n });\n }\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled &&\n (_proxyFormState.isValidating ||\n _proxyFormState.validatingFields ||\n _proxySubscribeFormState.isValidating ||\n _proxySubscribeFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _updateDirtyFields = (name) => {\n const fullDirtyFields = getDirtyFields(_defaultValues, _formValues);\n const rootName = getNodeParentName(name);\n set(_formState.dirtyFields, rootName, get(fullDirtyFields, rootName));\n };\n const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n _updateDirtyFields(name);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && !_state.action && _setValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.dirtyFields ||\n _proxySubscribeFormState.dirtyFields) &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _runSchema = async (name) => {\n _updateIsValidating(name, true);\n return await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _runSchema(names);\n _updateIsValidating(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const validateForm = async ({ name, eventType, }) => {\n if (props.validate) {\n const result = await props.validate({\n formValues: _formValues,\n formState: _formState,\n name,\n eventType,\n });\n if (isObject(result)) {\n for (const key in result) {\n const error = result[key];\n if (error) {\n setError(`${FORM_ERROR_TYPE}.${key}`, {\n message: isString(result.message) ? result.message : '',\n type: INPUT_VALIDATION_RULES.validate,\n });\n }\n }\n }\n else if (isString(result) || !result) {\n setError(FORM_ERROR_TYPE, {\n message: result || '',\n type: INPUT_VALIDATION_RULES.validate,\n });\n }\n else {\n clearErrors(FORM_ERROR_TYPE);\n }\n return result;\n }\n return true;\n };\n const executeBuiltInValidation = async ({ fields, onlyCheckValid, name, eventType, context = {\n valid: true,\n runRootValidation: false,\n }, }) => {\n if (props.validate) {\n context.runRootValidation = true;\n const result = await validateForm({\n name,\n eventType,\n });\n if (!result) {\n context.valid = false;\n if (onlyCheckValid) {\n return context.valid;\n }\n }\n }\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !onlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (onlyCheckValid) {\n break;\n }\n }\n !onlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n if (props.shouldUseNativeValidation && fieldError[_f.name]) {\n break;\n }\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation({\n context,\n onlyCheckValid,\n fields: fieldValue,\n name: name,\n eventType,\n }));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.forEach((checkboxRef) => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n }\n else {\n checkboxRef.checked =\n fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.state.next({\n name,\n values: cloneObject(_formValues),\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n isObject(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: cloneObject(_formValues),\n });\n if ((_proxyFormState.isDirty ||\n _proxyFormState.dirtyFields ||\n _proxySubscribeFormState.isDirty ||\n _proxySubscribeFormState.dirtyFields) &&\n options.shouldDirty) {\n _updateDirtyFields(name);\n _subjects.state.next({\n name,\n dirtyFields: _formState.dirtyFields,\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n if (isWatched(name, _names)) {\n _subjects.state.next({\n ..._formState,\n name,\n values: cloneObject(_formValues),\n });\n }\n else {\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues),\n });\n }\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !props.validate &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues),\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n }\n else if (!isBlurEvent) {\n _setValid();\n }\n }\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n if (!_options.resolver && props.validate) {\n await validateForm({\n name: name,\n eventType: event.type,\n });\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _runSchema([name]);\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid) {\n isValid = await executeBuiltInValidation({\n fields: _fields,\n onlyCheckValid: true,\n name: name,\n eventType: event.type,\n });\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation({\n fields: field && field._f ? { [fieldName]: field } : field,\n eventType: EVENTS.TRIGGER,\n });\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _setValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation({\n fields: _fields,\n name,\n eventType: EVENTS.TRIGGER,\n });\n }\n _subjects.state.next({\n ...(!isString(name) ||\n ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames, config) => {\n let values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n if (config) {\n values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n }\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n const names = name ? convertToArrayPayload(name) : undefined;\n names === null || names === void 0 ? void 0 : names.forEach((inputName) => unset(_formState.errors, inputName));\n if (names) {\n // Emit for each cleared field with the field name so that\n // shouldSubscribeByName can filter and avoid broad re-renders\n names.forEach((inputName) => {\n _subjects.state.next({\n name: inputName,\n errors: _formState.errors,\n });\n });\n }\n else {\n // Clear all errors - emit without name to notify all subscribers\n _subjects.state.next({\n errors: {},\n });\n }\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.state.subscribe({\n next: (payload) => 'values' in payload &&\n name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const _subscribe = (props) => _subjects.state.subscribe({\n next: (formState) => {\n if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n props.callback({\n values: { ..._formValues },\n ..._formState,\n ...formState,\n defaultValues: _defaultValues,\n });\n }\n },\n }).unsubscribe;\n const subscribe = (props) => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState,\n };\n return _subscribe({\n ...props,\n formState: {\n ...defaultProxyFormState,\n ...props.formState,\n },\n });\n };\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.state.next({\n values: cloneObject(_formValues),\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _setValid();\n };\n const _setDisabledField = ({ disabled, name, }) => {\n if ((isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)) {\n const wasDisabled = _names.disabled.has(name);\n const isDisabled = !!disabled;\n const disabledStateChanged = wasDisabled !== isDisabled;\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n disabledStateChanged && _state.mount && !_state.action && _setValid();\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n const shouldRevalidateRemount = !_names.registerName.has(name) && field && !field._f.mount;\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field && !shouldRevalidateRemount) {\n _setDisabledField({\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n _names.registerName.add(name);\n register(name, options);\n _names.registerName.delete(name);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist &&\n e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _runSchema();\n _updateIsValidating();\n _formState.errors = errors;\n fieldValues = cloneObject(values);\n }\n else {\n await executeBuiltInValidation({\n fields: _fields,\n eventType: EVENTS.SUBMIT,\n });\n }\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\n }\n unset(_formState.errors, ROOT_ERROR_TYPE);\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _setValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n const isDirty = get(_formState.dirtyFields, fieldName);\n const existingValue = get(_formValues, fieldName);\n const newValue = get(values, fieldName);\n if (isDirty && !isUndefined(existingValue)) {\n set(values, fieldName, existingValue);\n }\n else if (!isDirty && !isUndefined(newValue)) {\n setValue(fieldName, newValue);\n }\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n _fields = {};\n }\n }\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.state.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n registerName: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues ||\n (!_options.shouldUnregister && !isEmptyObject(values));\n _state.watch = !!_options.shouldUnregister;\n _state.keepIsValid = !!keepStateOptions.keepIsValid;\n _state.action = false;\n // Clear errors synchronously to prevent validation errors on subsequent submissions\n // This fixes the issue where form.reset() causes validation errors on subsequent\n // submissions in Next.js 16 with Server Actions\n if (!keepStateOptions.keepErrors) {\n _formState.errors = {};\n }\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n defaultValues: _defaultValues,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, { ..._options.resetOptions, ...keepStateOptions });\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n // Use setTimeout to ensure focus happens after any pending state updates\n // This fixes the issue where setFocus doesn't work immediately after setError\n setTimeout(() => {\n fieldRef.focus();\n options.shouldSelect &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n });\n }\n }\n };\n const _setFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _updateIsValidating,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n subscribe,\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n return {\n ...methods,\n formControl: methods,\n };\n}\n\nvar generateId = () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((Math.random() * 16 + d) % 16) | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, keyName = 'id', shouldUnregister, rules, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _actioned = React.useRef(false);\n control._names.array.add(name);\n React.useMemo(() => rules &&\n fields.length >= 0 &&\n control.register(name, rules), [control, name, fields.length, rules]);\n useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n }).unsubscribe, [control, name]);\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) &&\n set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted) &&\n !getValidationModes(control._options.reValidateMode).isOnSubmit) {\n if (control._options.resolver) {\n control._runSchema([name]).then((result) => {\n control._updateIsValidating([name]);\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues),\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n return () => {\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n control._options.shouldUnregister || shouldUnregister\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef(undefined);\n const _values = React.useRef(undefined);\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n isReady: false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState,\n };\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n }\n else {\n const { formControl, ...rest } = createFormControl(props);\n _formControl.current = {\n ...rest,\n formState,\n };\n }\n }\n const control = _formControl.current.control;\n control._options = props;\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({ ...control._formState }),\n reRenderRoot: true,\n });\n updateFormState((data) => ({\n ...data,\n isReady: true,\n }));\n control._formState.isReady = true;\n return sub;\n }, [control]);\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.state.next({\n values: control._getWatch(),\n });\n }, [control, props.shouldUnregister]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n var _a;\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, {\n keepFieldsRef: true,\n ...control._options.resetOptions,\n });\n if (!((_a = control._options.resetOptions) === null || _a === void 0 ? void 0 : _a.keepIsValid)) {\n control._setValid();\n }\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n _formControl.current.formState = React.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n return _formControl.current;\n}\n\n/**\n * Watch component that subscribes to form field changes and re-renders when watched fields update.\n *\n * @param control - The form control object from useForm\n * @param name - Can be field name, array of field names, or undefined to watch the entire form\n * @param disabled - Disable subscription\n * @param exact - Whether to watch exact field names or not\n * @param defaultValue - The default value to use if the field is not yet set\n * @param compute - Function to compute derived values from watched fields\n * @param render - The function that receives watched values and returns ReactNode\n * @returns The result of calling render function with watched values\n *\n * @example\n * The `Watch` component only re-render when the values of `foo`, `bar`, and `baz.qux` change.\n * The types of `foo`, `bar`, and `baz.qux` are precisely inferred.\n *\n * ```tsx\n * const { control } = useForm();\n *\n * <Watch\n * control={control}\n * names={['foo', 'bar', 'baz.qux']}\n * render={([foo, bar, baz_qux]) => <div>{foo}{bar}{baz_qux}</div>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\nexport { Controller, Form, FormProvider, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import { useState, useRef, useEffect } from 'react';\nimport type { FC, MouseEvent, CSSProperties } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n value?: string | number;\n defaultValue?: string | number;\n placeholder?: string;\n onChange?: (value: string | number) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n fullWidth?: boolean;\n className?: string;\n allowClear?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n bgColor?: string;\n borderColor?: string;\n focusBorderColor?: string;\n selectedBgColor?: string;\n selectedTextColor?: string;\n hoverBgColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n style?: CSSProperties;\n label?: string;\n error?: string;\n helperText?: string;\n control?: Control<any>;\n}\n\nconst SelectBase: FC<Omit<SelectProps, 'control'>> = ({\n options,\n value: controlledValue,\n defaultValue,\n placeholder = 'Select an option',\n onChange,\n onBlur,\n name,\n disabled = false,\n size = 'md',\n fullWidth = false,\n className = '',\n allowClear = false,\n showSearch = false,\n searchPlaceholder = 'Search...',\n bgColor,\n borderColor,\n focusBorderColor = '#EC615B',\n selectedBgColor,\n selectedTextColor,\n hoverBgColor,\n rounded = 'lg',\n style,\n label,\n error,\n helperText,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<string | number | undefined>(defaultValue);\n const [searchQuery, setSearchQuery] = useState('');\n const selectRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n useEffect(() => {\n const handleClickOutside = (event: Event) => {\n if (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchQuery('');\n if (isOpen) onBlur?.();\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n if (showSearch && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, showSearch]);\n\n const handleSelect = (optionValue: string | number) => {\n if (controlledValue === undefined) {\n setInternalValue(optionValue);\n }\n onChange?.(optionValue);\n setIsOpen(false);\n setSearchQuery('');\n };\n\n const handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n if (controlledValue === undefined) {\n setInternalValue(undefined);\n }\n onChange?.('' as any);\n };\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const filteredOptions = showSearch\n ? options.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : options;\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n responsive: 'px-3 sm:px-4 md:px-5 py-1.5 sm:py-2 md:py-3 text-sm sm:text-base md:text-lg',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const widthClass = fullWidth ? 'w-full' : 'min-w-[200px]';\n\n const getTriggerStyles = (): CSSProperties => {\n const styles: CSSProperties = {};\n if (bgColor) styles.backgroundColor = bgColor;\n if (borderColor) styles.borderColor = borderColor;\n return styles;\n };\n\n const getSelectedOptionStyles = (): CSSProperties => {\n const styles: CSSProperties = {};\n if (selectedBgColor) styles.backgroundColor = selectedBgColor;\n if (selectedTextColor) styles.color = selectedTextColor;\n return styles;\n };\n\n const ChevronIcon = (\n <svg\n className={`w-4 h-4 transition-transform duration-200 ease-out ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n\n const ClearIcon = (\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n );\n\n return (\n <div className={`relative inline-block ${widthClass}`} style={style}>\n {label && (\n <label className=\"block text-sm font-medium mb-2\" style={{ color: error ? '#C21919' : '#181918' }}>\n {label}\n </label>\n )}\n <div ref={selectRef} className=\"relative\">\n <input type=\"hidden\" name={name} value={value ?? ''} readOnly />\n <div\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={`\n select-trigger\n flex items-center justify-between gap-2\n border transition-all duration-200 ease-out\n ${!className.includes('px-') && !className.includes('py-') && !className.includes('h-') ? sizeClasses[size] : ''}\n ${!className.includes('rounded') ? roundedClasses[rounded] : ''}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n ${isOpen ? 'ring-2 ring-opacity-20' : ''}\n ${className}\n `}\n style={{\n ...getTriggerStyles(),\n backgroundColor: bgColor || getTriggerStyles().backgroundColor || '#FFFFFF',\n borderColor: error\n ? '#C21919'\n : borderColor || getTriggerStyles().borderColor || '#D1D5DB',\n ...(isOpen && {\n borderColor: error ? '#C21919' : focusBorderColor,\n boxShadow: `0 0 0 2px ${error ? '#C21919' : focusBorderColor}20`,\n }),\n ...(!disabled && !isOpen && hoverBgColor && {\n cursor: 'pointer',\n }),\n }}\n onMouseEnter={(e) => {\n if (!disabled && hoverBgColor) {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n }\n }}\n onMouseLeave={(e) => {\n if (bgColor) {\n e.currentTarget.style.backgroundColor = bgColor;\n } else {\n e.currentTarget.style.backgroundColor = '#FFFFFF';\n }\n }}\n >\n <span className={selectedOption ? 'text-gray-900' : 'text-gray-400'}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && value && !disabled && (\n <span\n onClick={handleClear}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n {ClearIcon}\n </span>\n )}\n <span className=\"text-gray-400\">{ChevronIcon}</span>\n </div>\n </div>\n\n {isOpen && !disabled && (\n <div className=\"absolute top-full left-0 right-0 mt-1 z-50 dropdown-slide-down\">\n <div className={`select-dropdown bg-white shadow-lg border border-gray-200 py-1 max-h-[300px] overflow-auto ${roundedClasses[rounded]}`}>\n {showSearch && (\n <div className=\"px-2 py-2 border-b border-gray-200\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full px-3 py-1.5 text-sm border border-gray-300 rounded focus:outline-none focus:ring-2 transition-all duration-200 ease-out\"\n style={{\n borderColor: borderColor,\n boxShadow: `0 0 0 2px ${focusBorderColor}20`,\n }}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )}\n {filteredOptions.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-gray-500 text-center\">\n No results found\n </div>\n ) : (\n filteredOptions.map((option) => (\n <div\n key={option.value}\n onClick={() => !option.disabled && handleSelect(option.value)}\n className={`\n select-option\n px-4 py-2 text-sm transition-all duration-200 ease-out\n ${option.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n `}\n style={{\n ...(option.value === value ? getSelectedOptionStyles() : {}),\n backgroundColor: option.value === value ? (selectedBgColor || '#FCEAE9') : undefined,\n color: option.value === value ? (selectedTextColor || '#EC615B') : '#181918',\n fontWeight: option.value === value ? 'medium' : undefined,\n }}\n onMouseEnter={(e) => {\n if (!option.disabled && option.value !== value) {\n e.currentTarget.style.backgroundColor = hoverBgColor || '#F3F4F6';\n }\n }}\n onMouseLeave={(e) => {\n if (option.value !== value) {\n e.currentTarget.style.backgroundColor = 'transparent';\n }\n }}\n >\n {option.label}\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n};\n\nconst ControlledSelect: FC<SelectProps & { control: NonNullable<SelectProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <SelectBase\n {...rest}\n value={field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={name}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const Select: FC<SelectProps> = ({ control, name, ...props }) => {\n if (control && name) {\n return <ControlledSelect control={control} name={name} {...props} />;\n }\n return <SelectBase name={name} {...props} />;\n};\n\nexport default Select;\n","import { useState } from 'react';\nimport type { FC, ReactNode, HTMLAttributes, CSSProperties } from 'react';\nimport { Select } from './Select';\n\nexport interface ColumnDef<T = any> {\n key: string;\n title: string;\n dataIndex?: string;\n render?: (value: any, record: T, index: number) => ReactNode;\n width?: string | number;\n align?: 'left' | 'center' | 'right';\n sortable?: boolean;\n}\n\nexport interface TableProps<T = any> {\n columns: ColumnDef<T>[];\n dataSource: T[];\n rowKey?: string | ((record: T) => string);\n pagination?: PaginationConfig | false;\n loading?: boolean;\n onRow?: (record: T, index: number) => HTMLAttributes<HTMLTableRowElement>;\n className?: string;\n bordered?: boolean;\n striped?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n headerBgColor?: string;\n headerTextColor?: string;\n rowHoverColor?: string;\n borderColor?: string;\n stripedRowColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n style?: CSSProperties;\n}\n\nexport interface PaginationConfig {\n current?: number;\n pageSize?: number;\n total?: number;\n onChange?: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Table = <T extends Record<string, any>>({\n columns,\n dataSource,\n rowKey = 'id',\n pagination,\n loading = false,\n onRow,\n className = '',\n bordered = false,\n striped = false,\n size = 'md',\n headerBgColor,\n headerTextColor,\n rowHoverColor,\n borderColor,\n stripedRowColor,\n rounded = 'md',\n style,\n}: TableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(\n pagination && typeof pagination === 'object' ? pagination.current || 1 : 1\n );\n const [pageSize, setPageSize] = useState(\n pagination && typeof pagination === 'object' ? pagination.pageSize || 10 : 10\n );\n\n // Size configuration for responsive sizing\n const sizeConfig = {\n sm: {\n headerPadding: 'px-3 py-2',\n headerFontSize: 'text-xs',\n rowPadding: 'px-3 py-2',\n rowFontSize: 'text-xs',\n containerRounded: 'rounded-md',\n },\n md: {\n headerPadding: 'px-4 py-3',\n headerFontSize: 'text-xs',\n rowPadding: 'px-4 py-3',\n rowFontSize: 'text-sm',\n containerRounded: 'rounded-lg',\n },\n lg: {\n headerPadding: 'px-6 py-4',\n headerFontSize: 'text-sm',\n rowPadding: 'px-6 py-4',\n rowFontSize: 'text-base',\n containerRounded: 'rounded-xl',\n },\n responsive: {\n headerPadding: 'px-2 sm:px-3 md:px-4 py-2 sm:py-2.5 md:py-3',\n headerFontSize: 'text-xs sm:text-xs md:text-sm',\n rowPadding: 'px-2 sm:px-3 md:px-4 py-2 sm:py-2.5 md:py-3',\n rowFontSize: 'text-xs sm:text-xs md:text-sm',\n containerRounded: 'rounded-md sm:rounded-lg md:rounded-lg',\n },\n };\n\n // Rounded configuration\n const roundedClasses = {\n none: '',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n };\n\n const currentSizeConfig = sizeConfig[size];\n const currentRoundedClass = roundedClasses[rounded];\n\n const getRowKey = (record: T, index: number): string => {\n if (typeof rowKey === 'function') {\n return rowKey(record);\n }\n return record[rowKey] || String(index);\n };\n\n const getValue = (record: T, dataIndex?: string) => {\n if (!dataIndex) return record;\n return dataIndex.split('.').reduce((obj, key) => obj?.[key], record);\n };\n\n // Pagination logic\n const paginatedData =\n pagination === false\n ? dataSource\n : dataSource.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(page, pageSize);\n }\n };\n\n const handlePageSizeChange = (newPageSize: number) => {\n setPageSize(newPageSize);\n setCurrentPage(1);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(1, newPageSize);\n }\n };\n\n return (\n <div className=\"w-full\" style={style}>\n <div\n className={`overflow-x-auto ${currentRoundedClass || 'rounded-2xl'} border`}\n style={{ borderColor: borderColor || '#EEEEEE' }}\n >\n <table className={`w-full ${bordered ? 'border-collapse' : ''} ${className}`}>\n <thead\n style={{\n backgroundColor: headerBgColor || '#F5F6F7',\n color: headerTextColor || '#333333',\n }}\n >\n <tr>\n {columns.map((column, idx) => (\n <th\n key={column.key}\n className={`${currentSizeConfig.headerPadding} text-left ${currentSizeConfig.headerFontSize} font-medium uppercase tracking-wider ${\n bordered && idx !== columns.length - 1 ? 'border-r' : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n style={{\n width: column.width,\n borderColor: borderColor || '#EEEEEE',\n color: headerTextColor || '#333333',\n }}\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n className=\"bg-white divide-y\"\n style={{ borderColor: borderColor || '#e5e5e5' }}\n >\n {loading ? (\n <tr>\n <td\n colSpan={columns.length}\n className={`${currentSizeConfig.rowPadding} py-8 text-center`}\n style={{ color: '#333333' }}\n >\n <div className=\"flex justify-center items-center\">\n <svg\n className=\"animate-spin h-5 w-5 mr-2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n Loading...\n </div>\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length}\n className={`${currentSizeConfig.rowPadding} py-8 text-center`}\n style={{ color: '#333333' }}\n >\n No data\n </td>\n </tr>\n ) : (\n paginatedData.map((record, index) => {\n const rowProps = onRow ? onRow(record, index) : {};\n const stripedBg = striped && index % 2 === 1 ? (stripedRowColor || '#F5F6F7') : 'transparent';\n const hoverBg = rowHoverColor || '#f3f4f6';\n return (\n <tr\n key={getRowKey(record, index)}\n className=\"transition-colors duration-200 ease-out\"\n style={{\n backgroundColor: stripedBg,\n }}\n onMouseEnter={(e) => {\n if (rowHoverColor || !striped || index % 2 === 0) {\n e.currentTarget.style.backgroundColor = hoverBg;\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = stripedBg;\n }}\n {...rowProps}\n >\n {columns.map((column, colIdx) => {\n const value = getValue(record, column.dataIndex);\n const content = column.render ? column.render(value, record, index) : value;\n\n return (\n <td\n key={column.key}\n className={`${currentSizeConfig.rowPadding} ${currentSizeConfig.rowFontSize} text-gray-900 ${\n bordered && colIdx !== columns.length - 1 ? 'border-r' : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n style={{\n borderColor: borderColor || '#EEEEEE',\n }}\n >\n {content as ReactNode}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {pagination !== false && (\n <Pagination\n current={currentPage}\n pageSize={pageSize}\n total={dataSource.length}\n onChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n showSizeChanger={\n pagination && typeof pagination === 'object' ? pagination.showSizeChanger : true\n }\n pageSizeOptions={\n pagination && typeof pagination === 'object'\n ? pagination.pageSizeOptions\n : [10, 20, 50, 100]\n }\n showTotal={pagination && typeof pagination === 'object' ? pagination.showTotal : true}\n size={\n pagination && typeof pagination === 'object' && pagination.size\n ? pagination.size\n : size === 'responsive'\n ? 'md'\n : size\n }\n />\n )}\n </div>\n );\n};\n\ninterface PaginationProps {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst Pagination: FC<PaginationProps> = ({\n current,\n pageSize,\n total,\n onChange,\n onPageSizeChange,\n showSizeChanger = true,\n pageSizeOptions = [10, 20, 50, 100],\n showTotal = true,\n size = 'md',\n}) => {\n const totalPages = Math.ceil(total / pageSize);\n const startItem = (current - 1) * pageSize + 1;\n const endItem = Math.min(current * pageSize, total);\n\n const sizeClasses = {\n sm: {\n button: 'px-2.5 py-1 text-xs',\n icon: 'h-3.5 w-3.5',\n nav: 'px-1.5 py-1.5',\n },\n md: {\n button: 'px-4 py-2 text-sm',\n icon: 'h-5 w-5',\n nav: 'px-2 py-2',\n },\n lg: {\n button: 'px-5 py-2.5 text-base',\n icon: 'h-6 w-6',\n nav: 'px-3 py-3',\n },\n };\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisible = 7;\n\n if (totalPages <= maxVisible) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (current <= 3) {\n for (let i = 1; i <= 5; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n } else if (current >= totalPages - 2) {\n pages.push(1);\n pages.push('...');\n for (let i = totalPages - 4; i <= totalPages; i++) pages.push(i);\n } else {\n pages.push(1);\n pages.push('...');\n for (let i = current - 1; i <= current + 1; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-[#EEEEEE] sm:px-6 mt-4\">\n {showTotal && (\n <div className=\"text-sm text-[#181918]\">\n {startItem}-{endItem} of {total} items\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showSizeChanger && (\n <Select\n value={pageSize.toString()}\n onChange={(value) => onPageSizeChange(Number(value))}\n options={pageSizeOptions.map((size) => ({\n value: size.toString(),\n label: `${size} / page`,\n }))}\n size=\"sm\"\n className=\"w-32\"\n />\n )}\n\n <nav className=\"inline-flex gap-1 items-center\" aria-label=\"Pagination\">\n <button\n onClick={() => onChange(current - 1)}\n disabled={current === 1}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n\n {getPageNumbers().map((page, index) => {\n if (page === '...') {\n return (\n <span\n key={`ellipsis-${index}`}\n className={`relative inline-flex items-center justify-center ${sizeClasses[size].button} font-normal text-[#181918]`}\n >\n ...\n </span>\n );\n }\n\n return (\n <button\n key={page}\n onClick={() => onChange(page as number)}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].button} font-medium transition-all duration-300 ease-out focus:z-20 hover:scale-105 active:scale-95 ${\n current === page\n ? 'bg-[#EC615B] text-white shadow-sm'\n : 'text-[#181918] hover:bg-gray-100'\n }`}\n >\n {page}\n </button>\n );\n })}\n\n <button\n onClick={() => onChange(current + 1)}\n disabled={current === totalPages}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n </nav>\n </div>\n </div>\n );\n};\n\nexport default Table;\n","import type { FC, ReactNode, ChangeEvent, CSSProperties } from 'react';\n\nexport interface TableTopProps {\n // Existing props\n title?: string;\n description?: string;\n searchPlaceholder?: string;\n onSearch?: (value: string) => void;\n actions?: ReactNode;\n filters?: ReactNode;\n className?: string;\n\n // New responsive props\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n\n // Custom color props\n titleColor?: string;\n descriptionColor?: string;\n searchBgColor?: string;\n searchBorderColor?: string;\n searchFocusBorderColor?: string;\n\n // Search input border radius\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n // Custom styles\n style?: CSSProperties;\n\n // New props for conditional action button display\n hideActionButtons?: boolean;\n selectedActionButton?: ReactNode;\n}\n\nexport const TableTop: FC<TableTopProps> = ({\n title,\n description,\n searchPlaceholder = 'Search...',\n onSearch,\n actions,\n filters,\n className = '',\n size = 'responsive',\n titleColor,\n descriptionColor,\n searchBgColor = 'white',\n searchBorderColor = '#d1d5db',\n searchFocusBorderColor = '#3b82f6',\n rounded = 'md',\n style,\n hideActionButtons = false,\n selectedActionButton,\n}) => {\n const handleSearchChange = (e: ChangeEvent<HTMLInputElement>) => {\n onSearch?.(e.target.value);\n };\n\n // Size configuration\n const sizeConfig = {\n sm: {\n titleSize: 'text-lg',\n titleWeight: 'font-semibold',\n descriptionSize: 'text-xs',\n searchInputSize: 'text-xs',\n searchInputPy: 'py-1.5',\n searchPaddingLeft: 'pl-8',\n iconSize: 'h-4 w-4',\n spacing: 'space-y-2',\n gap: 'gap-2',\n maxWidth: 'max-w-sm',\n descriptionMargin: 'mt-0.5',\n },\n md: {\n titleSize: 'text-xl',\n titleWeight: 'font-semibold',\n descriptionSize: 'text-sm',\n searchInputSize: 'text-sm',\n searchInputPy: 'py-2',\n searchPaddingLeft: 'pl-10',\n iconSize: 'h-5 w-5',\n spacing: 'space-y-3',\n gap: 'gap-3',\n maxWidth: 'max-w-md',\n descriptionMargin: 'mt-1',\n },\n lg: {\n titleSize: 'text-2xl',\n titleWeight: 'font-bold',\n descriptionSize: 'text-base',\n searchInputSize: 'text-base',\n searchInputPy: 'py-2.5',\n searchPaddingLeft: 'pl-12',\n iconSize: 'h-6 w-6',\n spacing: 'space-y-4',\n gap: 'gap-4',\n maxWidth: 'max-w-lg',\n descriptionMargin: 'mt-2',\n },\n responsive: {\n titleSize: 'text-lg sm:text-xl md:text-2xl',\n titleWeight: 'font-semibold md:font-bold',\n descriptionSize: 'text-xs sm:text-sm md:text-base',\n searchInputSize: 'text-xs sm:text-sm md:text-base',\n searchInputPy: 'py-1.5 sm:py-2 md:py-2.5',\n searchPaddingLeft: 'pl-8 sm:pl-10 md:pl-12',\n iconSize: 'h-4 w-4 sm:h-5 sm:w-5 md:h-6 md:w-6',\n spacing: 'space-y-2 sm:space-y-3 md:space-y-4',\n gap: 'gap-2 sm:gap-3 md:gap-4',\n maxWidth: 'max-w-sm md:max-w-md lg:max-w-lg',\n descriptionMargin: 'mt-0.5 sm:mt-1 md:mt-2',\n },\n };\n\n const config = sizeConfig[size];\n\n // Border radius configuration\n const radiusConfig = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const radiusClass = radiusConfig[rounded];\n\n // Build inline styles for custom colors\n const searchInputStyle: CSSProperties = {\n backgroundColor: searchBgColor,\n borderColor: searchBorderColor,\n };\n\n return (\n <div\n className={`${config.spacing} mb-4 ${className}`}\n style={style}\n >\n {/* Title and Description */}\n {(title || description) && (\n <div>\n {title && (\n <h2\n className={`${config.titleSize} ${config.titleWeight}`}\n style={{ color: titleColor || '#111827' }}\n >\n {title}\n </h2>\n )}\n {description && (\n <p\n className={`${config.descriptionSize} ${config.descriptionMargin}`}\n style={{ color: descriptionColor || '#6b7280' }}\n >\n {description}\n </p>\n )}\n </div>\n )}\n\n {/* Search and Actions Row */}\n <div className={`flex flex-col sm:flex-row items-stretch sm:items-center justify-between ${config.gap}`}>\n {/* Search Input */}\n {onSearch && (\n <div className={`flex-1 ${config.maxWidth}`}>\n <div className=\"relative\">\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg\n className={`${config.iconSize} text-gray-400`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </div>\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n onChange={handleSearchChange}\n className={`block w-full ${config.searchPaddingLeft} pr-3 ${config.searchInputPy} border ${radiusClass} focus:outline-none focus:ring-2 focus:ring-opacity-50 ${config.searchInputSize} transition-colors duration-200`}\n style={searchInputStyle}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = searchFocusBorderColor;\n e.currentTarget.style.boxShadow = `0 0 0 2px rgba(59, 130, 246, 0.1)`;\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = searchBorderColor;\n e.currentTarget.style.boxShadow = 'none';\n }}\n />\n </div>\n </div>\n )}\n\n {/* Actions (Buttons) */}\n <div className={`flex items-center gap-2 w-full sm:w-auto`}>\n {hideActionButtons && selectedActionButton ? (\n selectedActionButton\n ) : (\n actions\n )}\n </div>\n </div>\n\n {/* Filters Row */}\n {filters && (\n <div className={`flex flex-wrap items-center ${config.gap}`}>\n {filters}\n </div>\n )}\n </div>\n );\n};\n\nexport default TableTop;\n","import { useEffect, useState, CSSProperties } from 'react';\nimport type { FC, ReactNode, MouseEvent } from 'react';\n\ntype ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'responsive';\n\nconst widthMap: Record<ModalSize, string> = {\n sm: '384px',\n md: '448px',\n lg: '512px',\n xl: '600px',\n full: '100%',\n responsive: '90vw',\n};\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title?: string;\n children: ReactNode;\n footer?: ReactNode;\n width?: string | number;\n size?: ModalSize;\n closable?: boolean;\n maskClosable?: boolean;\n centered?: boolean;\n className?: string;\n bgColor?: string;\n headerBgColor?: string;\n overlayColor?: string;\n bodyClassName?: string;\n headerClassName?: string;\n maxHeight?: string | number;\n}\n\nexport const Modal: FC<ModalProps> = ({\n open,\n onClose,\n title,\n children,\n footer,\n width,\n size = 'md',\n closable = true,\n maskClosable = true,\n centered = true,\n className = '',\n bgColor = '#ffffff',\n headerBgColor = '#ffffff',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n bodyClassName = '',\n headerClassName = '',\n maxHeight = '70vh',\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n\n // Determine effective width\n const effectiveWidth = width || widthMap[size];\n const effectiveWidthNum = typeof effectiveWidth === 'number' ? `${effectiveWidth}px` : effectiveWidth;\n\n // Prepare modal style\n const modalStyle: CSSProperties = {\n width: effectiveWidthNum,\n maxWidth: '90vw',\n backgroundColor: bgColor,\n };\n\n // Prepare header style\n const headerStyle: CSSProperties = {\n backgroundColor: headerBgColor,\n };\n\n // Prepare overlay style\n const overlayStyle: CSSProperties = {\n backgroundColor: overlayColor,\n };\n\n useEffect(() => {\n if (open) {\n setIsVisible(true);\n // Small delay to trigger animation\n setTimeout(() => setIsAnimating(true), 10);\n document.body.style.overflow = 'hidden';\n } else {\n setIsAnimating(false);\n // Wait for animation to complete before unmounting\n const timer = setTimeout(() => {\n setIsVisible(false);\n }, 200);\n document.body.style.overflow = 'unset';\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closable && open) {\n onClose();\n }\n };\n\n if (open) {\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open, onClose, closable]);\n\n if (!isVisible) return null;\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onClose();\n }\n };\n\n const handleModalClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 overflow-y-auto\"\n onClick={handleMaskClick}\n >\n {/* Backdrop */}\n <div\n className={`fixed inset-0 transition-opacity duration-200 ease-out ${\n isAnimating ? 'opacity-100' : 'opacity-0'\n }`}\n style={overlayStyle}\n />\n\n {/* Modal Container */}\n <div className={`flex min-h-full items-center justify-center p-4 ${centered ? 'items-center' : 'items-start pt-20'}`}>\n <div\n className={`relative rounded-lg shadow-xl transition-all duration-200 ease-out overflow-y-auto ${\n isAnimating\n ? 'opacity-100 scale-100 translate-y-0'\n : 'opacity-0 scale-95 -translate-y-4'\n } ${className}`}\n style={{...modalStyle, maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight}}\n onClick={handleModalClick}\n >\n {/* Header */}\n {(title || closable) && (\n <div\n className={`flex items-center justify-between px-6 py-4 border-b border-gray-200 ${headerClassName}`}\n style={headerStyle}\n >\n {title && <h3 className=\"text-lg font-semibold text-gray-900\">{title}</h3>}\n {closable && (\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Body */}\n <div\n className={`px-6 py-4 ${bodyClassName}`}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"px-6 py-4 border-t border-gray-200 flex justify-end gap-2\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import type { FC, ReactNode, CSSProperties } from 'react';\n\nexport interface BadgeProps {\n children: ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n dot?: boolean;\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n className?: string;\n bgColor?: string;\n textColor?: string;\n borderColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n style?: CSSProperties;\n}\n\nexport const Badge: FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n dot = false,\n icon,\n iconPosition = 'left',\n className = '',\n bgColor,\n textColor,\n borderColor,\n rounded = 'full',\n style,\n}) => {\n const variantClasses = {\n default: 'bg-gray-100 text-[#181918]',\n primary: 'bg-[#FCEAE9] text-[#EC615B]',\n success: 'bg-green-100 text-green-800',\n warning: 'bg-yellow-100 text-yellow-800',\n danger: 'bg-red-100 text-red-800',\n info: 'bg-cyan-100 text-cyan-800',\n };\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n responsive: 'px-1.5 py-0.5 text-[10px] sm:px-2 sm:py-0.5 sm:text-xs md:px-2.5 md:py-1 md:text-sm lg:px-3 lg:py-1.5 lg:text-base',\n };\n\n const dotSizeClasses = {\n sm: 'w-1.5 h-1.5',\n md: 'w-2 h-2',\n lg: 'w-2.5 h-2.5',\n responsive: 'w-1 h-1 sm:w-1.5 sm:h-1.5 md:w-2 md:h-2 lg:w-2.5 lg:h-2.5',\n };\n\n const dotColorClasses = {\n default: 'bg-gray-600',\n primary: 'bg-[#EC615B]',\n success: 'bg-green-600',\n warning: 'bg-yellow-600',\n danger: 'bg-red-600',\n info: 'bg-cyan-600',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n responsive: 'w-2.5 h-2.5 sm:w-3 sm:h-3 md:w-3.5 md:h-3.5 lg:w-4 lg:h-4',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const customStyles: CSSProperties = {\n ...(bgColor && { backgroundColor: bgColor }),\n ...(textColor && { color: textColor }),\n ...(borderColor && { borderColor, borderWidth: '1px', borderStyle: 'solid' }),\n ...style,\n };\n\n return (\n <span\n className={`inline-flex items-center gap-1.5 font-medium transition-all duration-200 ${!bgColor ? variantClasses[variant] : ''} ${sizeClasses[size]} ${roundedClasses[rounded]} ${className}`}\n style={customStyles}\n >\n {dot && (\n <span className={`rounded-full ${dotSizeClasses[size]} ${dotColorClasses[variant]}`} />\n )}\n {icon && iconPosition === 'left' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n {children}\n {icon && iconPosition === 'right' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n </span>\n );\n};\n\nexport default Badge;\n","import type { FC, ReactNode, CSSProperties } from 'react';\n\nexport interface StepItem {\n title: string;\n description?: string;\n status?: 'wait' | 'process' | 'finish' | 'error';\n icon?: ReactNode;\n}\n\nexport interface StepsProps {\n items: StepItem[];\n current?: number;\n direction?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n variant?: 'default' | 'outline';\n className?: string;\n style?: CSSProperties;\n finishColor?: string;\n processColor?: string;\n waitColor?: string;\n errorColor?: string;\n lineColor?: string;\n}\n\nexport const Steps: FC<StepsProps> = ({\n items,\n current = 0,\n direction = 'vertical',\n size = 'md',\n variant = 'default',\n className = '',\n style,\n finishColor,\n processColor,\n waitColor,\n errorColor,\n lineColor,\n}) => {\n const getStepStatus = (index: number, item: StepItem): StepItem['status'] => {\n if (item.status) return item.status;\n if (index < current) return 'finish';\n if (index === current) return 'process';\n return 'wait';\n };\n\n const iconSizeClasses = {\n sm: 'w-6 h-6',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n responsive: 'w-6 h-6 sm:w-7 sm:h-7 md:w-8 md:h-8 lg:w-10 lg:h-10',\n };\n\n const textSizeClasses = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n responsive: 'text-xs sm:text-sm md:text-base lg:text-lg',\n };\n\n const descriptionSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n responsive: 'text-xs sm:text-xs md:text-sm lg:text-base',\n };\n\n const renderIcon = (status: StepItem['status'], icon?: ReactNode) => {\n if (icon) return icon;\n\n if (status === 'finish') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'error') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const getStatusClasses = (status: StepItem['status']) => {\n const isOutline = variant === 'outline';\n\n switch (status) {\n case 'finish':\n return {\n icon: isOutline\n ? `bg-white text-white border ${finishColor ? `border-[${finishColor}]` : 'border-green-500'}`\n : `${finishColor ? `bg-[${finishColor}]` : 'bg-green-500'} text-white ${finishColor ? `border-[${finishColor}]` : 'border-green-500'}`,\n title: 'text-[#181918]',\n description: 'text-gray-600',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-green-500',\n iconColor: finishColor,\n };\n case 'process':\n return {\n icon: isOutline\n ? `bg-white text-white border ${processColor ? `border-[${processColor}]` : 'border-[#EC615B]'}`\n : `${processColor ? `bg-[${processColor}]` : 'bg-[#EC615B]'} text-white ${processColor ? `border-[${processColor}]` : 'border-[#EC615B]'}`,\n title: 'text-[#181918] font-semibold',\n description: 'text-gray-700',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-gray-300',\n iconColor: processColor,\n };\n case 'error':\n return {\n icon: isOutline\n ? `bg-white text-white border ${errorColor ? `border-[${errorColor}]` : 'border-red-500'}`\n : `${errorColor ? `bg-[${errorColor}]` : 'bg-red-500'} text-white ${errorColor ? `border-[${errorColor}]` : 'border-red-500'}`,\n title: 'text-red-600',\n description: 'text-red-500',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-gray-300',\n iconColor: errorColor,\n };\n default:\n return {\n icon: 'bg-white text-gray-400 border-gray-300',\n title: 'text-gray-500',\n description: 'text-gray-400',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-gray-300',\n iconColor: waitColor,\n };\n }\n };\n\n if (direction === 'horizontal') {\n return (\n <div className={`flex items-start ${className}`} style={style}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n const iconStyle: CSSProperties = {};\n if (statusClasses.iconColor) {\n iconStyle.color = statusClasses.iconColor;\n }\n\n return (\n <div key={index} className=\"flex flex-1 items-start\">\n <div className=\"flex flex-col items-center\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n style={iconStyle}\n >\n {renderIcon(status, item.icon)}\n </div>\n <div className=\"mt-2 text-center\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n {!isLast && (\n <div\n className={`flex-1 h-0.5 mt-4 mx-2 ${statusClasses.line} transition-colors duration-300`}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col ${className}`} style={style}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n const iconStyle: CSSProperties = {};\n if (statusClasses.iconColor) {\n iconStyle.color = statusClasses.iconColor;\n }\n\n return (\n <div key={index} className=\"flex\">\n <div className=\"flex flex-col items-center mr-4\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n style={iconStyle}\n >\n {renderIcon(status, item.icon)}\n </div>\n {!isLast && (\n <div\n className={`w-0.5 flex-1 my-1 ${statusClasses.line} transition-colors duration-300`}\n style={{ minHeight: '20px' }}\n />\n )}\n </div>\n <div className=\"flex-1 pb-6\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default Steps;\n","import type { FC, ReactNode } from 'react';\n\nexport interface ProgressProps {\n percent?: number;\n status?: 'normal' | 'success' | 'exception' | 'active';\n showInfo?: boolean;\n strokeColor?: string;\n strokeWidth?: number;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n className?: string;\n format?: (percent: number) => ReactNode;\n bgColor?: string;\n successColor?: string;\n exceptionColor?: string;\n trackColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n}\n\nexport const Progress: FC<ProgressProps> = ({\n percent = 0,\n status = 'normal',\n showInfo = true,\n strokeColor,\n strokeWidth,\n size = 'md',\n className = '',\n format,\n bgColor,\n successColor,\n exceptionColor,\n trackColor,\n rounded = 'full',\n}) => {\n const clampedPercent = Math.min(100, Math.max(0, percent));\n\n const heightClasses = {\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-3',\n responsive: 'h-1.5 sm:h-2 md:h-3 lg:h-4',\n };\n\n const textSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n responsive: 'text-xs sm:text-sm md:text-base lg:text-lg',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const getStatusColor = () => {\n if (strokeColor) return strokeColor;\n\n switch (status) {\n case 'success':\n return successColor || 'bg-green-500';\n case 'exception':\n return exceptionColor || 'bg-red-500';\n case 'active':\n return bgColor || 'bg-[#EC615B]';\n default:\n if (clampedPercent === 100) return successColor || 'bg-green-500';\n return bgColor || 'bg-[#EC615B]';\n }\n };\n\n const getTrackColor = () => {\n return trackColor || 'bg-gray-200';\n };\n\n const getStatusIcon = () => {\n if (status === 'success' || clampedPercent === 100) {\n return (\n <svg className=\"w-4 h-4 text-green-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'exception') {\n return (\n <svg className=\"w-4 h-4 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const formatPercent = () => {\n if (format) return format(clampedPercent);\n return `${Math.round(clampedPercent)}%`;\n };\n\n const height = strokeWidth ? `${strokeWidth}px` : undefined;\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n <div className=\"flex-1\">\n <div\n className={`w-full overflow-hidden ${heightClasses[size]} ${roundedClasses[rounded]} ${getTrackColor()}`}\n style={{ height }}\n >\n <div\n className={`${getStatusColor()} ${heightClasses[size]} ${roundedClasses[rounded]} transition-all duration-300 ease-out ${\n status === 'active' ? 'progress-active' : ''\n }`}\n style={{\n width: `${clampedPercent}%`,\n height,\n }}\n />\n </div>\n </div>\n\n {showInfo && (\n <div className={`flex items-center gap-1 ${textSizeClasses[size]} text-gray-600 font-normal`}>\n {getStatusIcon() || formatPercent()}\n </div>\n )}\n </div>\n );\n};\n\nexport default Progress;\n","import { useState } from 'react';\nimport type { FC, ChangeEvent, CSSProperties } from 'react';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n variant?: 'filled' | 'outline';\n className?: string;\n id?: string;\n name?: string;\n value?: string;\n checkedColor?: string;\n uncheckedColor?: string;\n checkedBorderColor?: string;\n style?: CSSProperties;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n size = 'md',\n variant = 'filled',\n className = '',\n id,\n name,\n value,\n checkedColor = '#EC615B',\n uncheckedColor = '#ffffff',\n checkedBorderColor = '#EC615B',\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n };\n\n const sizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n responsive: 'w-4 h-4 sm:w-5 sm:h-5 lg:w-6 lg:h-6',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n responsive: 'w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 lg:w-4 lg:h-4',\n };\n\n const isFilled = variant === 'filled';\n\n const getCheckboxClasses = () => {\n if (disabled) {\n return 'cursor-not-allowed opacity-50 border-gray-300 bg-gray-100';\n }\n\n if (isFilled) {\n // Filled variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return '';\n } else {\n // Outline variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return '';\n }\n };\n\n const getCheckboxInlineStyles = (): CSSProperties | undefined => {\n if (disabled) return undefined;\n\n if (!checked && !indeterminate) {\n return undefined;\n }\n\n if (isFilled) {\n return {\n borderColor: checkedBorderColor,\n backgroundColor: checkedColor,\n };\n } else {\n return {\n borderColor: checkedBorderColor,\n backgroundColor: uncheckedColor,\n };\n }\n };\n\n const getIconColor = () => {\n if (isFilled && (checked || indeterminate)) {\n return 'text-white';\n }\n return '';\n };\n\n return (\n <div className=\"inline-flex items-center\" style={style}>\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n value={value}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className=\"sr-only\"\n />\n <label\n htmlFor={id}\n className={`\n relative flex items-center justify-center\n ${sizeClasses[size]}\n ${variant === 'outline' ? 'border' : 'border-2'}\n rounded\n transition-all duration-200 ease-out\n cursor-pointer\n ${getCheckboxClasses()}\n ${className}\n `}\n style={getCheckboxInlineStyles()}\n >\n {/* Checkmark Icon */}\n {checked && !indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth={3}\n style={\n !isFilled && (checked || indeterminate)\n ? { color: checkedColor }\n : undefined\n }\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n\n {/* Indeterminate Icon */}\n {indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n style={\n !isFilled && (checked || indeterminate)\n ? { color: checkedColor }\n : undefined\n }\n >\n <rect x=\"4\" y=\"11\" width=\"16\" height=\"2\" rx=\"1\" />\n </svg>\n )}\n </label>\n </div>\n );\n};\n\nexport default Checkbox;\n","import type { FC, CSSProperties } from 'react';\n\nexport interface SelectedItem {\n id: string | number;\n label: string;\n sublabel?: string;\n}\n\nexport interface SelectedItemsListProps {\n items: SelectedItem[];\n onRemove: (id: string | number) => void;\n emptyMessage?: string;\n className?: string;\n itemClassName?: string;\n maxHeight?: string;\n // New size and responsive props\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n // New custom color props\n bgColor?: string;\n hoverBgColor?: string;\n textColor?: string;\n sublabelColor?: string;\n removeButtonColor?: string;\n removeButtonHoverColor?: string;\n // New border radius prop\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n // New style prop\n style?: CSSProperties;\n}\n\n// Helper function to get size-based classes\nconst getSizeClasses = (size: 'sm' | 'md' | 'lg' | 'responsive' = 'md') => {\n const baseClasses = {\n sm: {\n container: 'space-y-1',\n item: 'px-2 py-1.5',\n label: 'text-xs',\n sublabel: 'text-[10px]',\n button: 'w-5 h-5',\n icon: 'w-3 h-3',\n },\n md: {\n container: 'space-y-2',\n item: 'px-4 py-3',\n label: 'text-sm',\n sublabel: 'text-xs',\n button: 'w-6 h-6',\n icon: 'w-4 h-4',\n },\n lg: {\n container: 'space-y-3',\n item: 'px-5 py-4',\n label: 'text-base',\n sublabel: 'text-sm',\n button: 'w-7 h-7',\n icon: 'w-5 h-5',\n },\n responsive: {\n container: 'space-y-1 sm:space-y-2 md:space-y-3',\n item: 'px-2 py-1.5 sm:px-3 sm:py-2 md:px-4 md:py-3 lg:px-5 lg:py-4',\n label: 'text-xs sm:text-sm md:text-base',\n sublabel: 'text-[10px] sm:text-xs md:text-sm',\n button: 'w-5 h-5 sm:w-5 sm:h-5 md:w-6 md:h-6 lg:w-7 lg:h-7',\n icon: 'w-3 h-3 sm:w-3 sm:h-3 md:w-4 md:h-4 lg:w-5 lg:h-5',\n },\n };\n\n return baseClasses[size];\n};\n\n// Helper function to get rounded corner classes\nconst getRoundedClasses = (rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md') => {\n const roundedMap = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n full: 'rounded-full',\n };\n\n return roundedMap[rounded];\n};\n\nexport const SelectedItemsList: FC<SelectedItemsListProps> = ({\n items,\n onRemove,\n emptyMessage = 'No items selected',\n className = '',\n itemClassName = '',\n maxHeight = '300px',\n size = 'md',\n bgColor,\n hoverBgColor,\n textColor,\n sublabelColor,\n removeButtonColor,\n removeButtonHoverColor,\n rounded = 'md',\n style,\n}) => {\n const sizeClasses = getSizeClasses(size);\n const roundedClass = getRoundedClasses(rounded);\n\n // Default colors\n const defaultBgColor = '#F4F4F4';\n const defaultHoverBgColor = '#EBEBEB';\n const defaultTextColor = '#181918';\n const defaultSublabelColor = '#999999';\n const defaultRemoveButtonColor = '#9CA3AF';\n const defaultRemoveButtonHoverColor = '#EC615B';\n\n // Get final colors (use provided or default)\n const finalBgColor = bgColor || defaultBgColor;\n const finalHoverBgColor = hoverBgColor || defaultHoverBgColor;\n const finalTextColor = textColor || defaultTextColor;\n const finalSublabelColor = sublabelColor || defaultSublabelColor;\n const finalRemoveButtonColor = removeButtonColor || defaultRemoveButtonColor;\n const finalRemoveButtonHoverColor = removeButtonHoverColor || defaultRemoveButtonHoverColor;\n\n if (items.length === 0) {\n return (\n <div\n className={`text-center py-8 text-gray-500 text-sm ${className}`}\n style={{\n color: finalSublabelColor,\n ...style,\n }}\n >\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div\n className={`overflow-y-auto ${sizeClasses.container} ${className}`}\n style={{ maxHeight, ...style }}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n className={`\n group flex items-center justify-between\n ${roundedClass}\n transition-all duration-300 ease-out\n hover:shadow-sm\n animate-slide-in-item\n ${itemClassName}\n `}\n style={{\n backgroundColor: finalBgColor,\n animationDelay: `${index * 50}ms`,\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = finalHoverBgColor;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = finalBgColor;\n }}\n >\n <div className={`flex-1 min-w-0 ${sizeClasses.item}`}>\n {item.sublabel && (\n <div\n className={`font-normal mb-0.5 ${sizeClasses.sublabel}`}\n style={{ color: finalSublabelColor }}\n >\n {item.sublabel}\n </div>\n )}\n <div\n className={`font-medium truncate ${sizeClasses.label}`}\n style={{ color: finalTextColor }}\n >\n {item.label}\n </div>\n </div>\n\n <button\n onClick={() => onRemove(item.id)}\n className={`\n ml-3 flex-shrink-0 rounded-full\n flex items-center justify-center\n transition-all duration-200 ease-out\n hover:scale-110\n active:scale-95\n focus:outline-none focus:ring-2 focus:ring-opacity-50\n ${sizeClasses.button}\n `}\n style={{\n color: finalRemoveButtonColor,\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = 'white';\n (e.currentTarget as HTMLElement).style.color = finalRemoveButtonHoverColor;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = 'transparent';\n (e.currentTarget as HTMLElement).style.color = finalRemoveButtonColor;\n }}\n aria-label={`Remove ${item.label}`}\n >\n <svg\n className={sizeClasses.icon}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n ))}\n </div>\n );\n};\n\nexport default SelectedItemsList;\n","import React from 'react';\nimport { Input as AntInput, InputProps as AntInputProps, InputRef } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface InputProps extends AntInputProps {\n label?: string;\n error?: string;\n helperText?: string;\n control?: Control<any>;\n}\n\nconst InputBase = React.forwardRef<InputRef, Omit<InputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n status,\n ...props\n}, ref) => {\n const errorClass = error ? 'input-error-state' : '';\n\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"block text-sm font-medium mb-2\" style={{ color: error ? '#C21919' : '#181918' }}>\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {error && `\n .input-error-state .ant-input-group-addon {\n border-color: #C21919 !important;\n }\n .input-error-state .ant-input-group-addon:first-child {\n border-right: none !important;\n }\n .input-error-state .ant-input {\n border-color: #C21919 !important;\n }\n .input-error-state .ant-input:focus,\n .input-error-state .ant-input-focused {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n `}\n </style>\n <AntInput\n ref={ref}\n className={`${className} ${errorClass}`}\n status={error ? 'error' : status}\n {...props}\n style={{\n height: '44px',\n borderRadius: '12px',\n ...props.style,\n }}\n />\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg\n className=\"w-3 h-3 mr-1\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n});\nInputBase.displayName = 'InputBase';\n\nconst ControlledInput: React.FC<InputProps & { control: NonNullable<InputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <InputBase\n {...rest}\n {...field}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const Input = React.forwardRef<InputRef, InputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledInput control={control} name={name} {...props} />;\n }\n return <InputBase ref={ref} name={name} {...props} />;\n});\nInput.displayName = 'Input';\n","import React from 'react';\nimport { Input as AntInput, InputProps as AntInputProps, InputRef } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface PasswordInputProps extends Omit<AntInputProps, 'suffix'> {\n label?: string;\n error?: string;\n helperText?: string;\n control?: Control<any>;\n}\n\nconst PasswordInputBase = React.forwardRef<InputRef, Omit<PasswordInputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n status,\n ...props\n}, ref) => {\n const errorClass = error ? 'password-input-error-state' : '';\n const combinedClassName = `password-input-custom ${className} ${errorClass}`;\n\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"block text-sm font-medium mb-2\" style={{ color: error ? '#C21919' : '#181918' }}>\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {error && `\n .password-input-error-state .ant-input-group-addon {\n border-color: #C21919 !important;\n }\n .password-input-error-state .ant-input-group-addon:first-child {\n border-right: none !important;\n }\n .password-input-error-state .ant-input,\n .password-input-error-state .ant-input-password .ant-input {\n border-color: #C21919 !important;\n }\n .password-input-error-state .ant-input:focus,\n .password-input-error-state .ant-input-focused,\n .password-input-error-state .ant-input-password .ant-input:focus {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n `}\n </style>\n <AntInput.Password\n ref={ref}\n className={combinedClassName}\n status={error ? 'error' : status}\n {...props}\n style={{\n height: '44px',\n borderRadius: '12px',\n ...props.style,\n }}\n />\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg\n className=\"w-3 h-3 mr-1\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n});\nPasswordInputBase.displayName = 'PasswordInputBase';\n\nconst ControlledPasswordInput: React.FC<PasswordInputProps & { control: NonNullable<PasswordInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PasswordInputBase\n {...rest}\n {...field}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PasswordInput = React.forwardRef<InputRef, PasswordInputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledPasswordInput control={control} name={name} {...props} />;\n }\n return <PasswordInputBase ref={ref} name={name} {...props} />;\n});\nPasswordInput.displayName = 'PasswordInput';\n","import React, { useRef, useState, useEffect, KeyboardEvent, ClipboardEvent } from 'react';\nimport { Input, InputRef } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface OTPInputProps {\n length?: number;\n value?: string;\n onChange?: (value: string) => void;\n onBlur?: () => void;\n onComplete?: (value: string) => void;\n name?: string;\n error?: boolean;\n errorMessage?: string;\n disabled?: boolean;\n className?: string;\n control?: Control<any>;\n}\n\nconst OTPInputBase: React.FC<Omit<OTPInputProps, 'control'>> = ({\n length = 6,\n value = '',\n onChange,\n onBlur,\n onComplete,\n error = false,\n errorMessage,\n disabled = false,\n className = '',\n}) => {\n const [otp, setOtp] = useState<string[]>(Array(length).fill(''));\n const inputRefs = useRef<(InputRef | null)[]>([]);\n\n useEffect(() => {\n if (value) {\n const otpArray = value.split('').slice(0, length);\n const filledOtp = [...otpArray, ...Array(length - otpArray.length).fill('')];\n setOtp(filledOtp);\n }\n }, [value, length]);\n\n const handleChange = (index: number, val: string) => {\n if (val && !/^\\d+$/.test(val)) return;\n\n const newOtp = [...otp];\n newOtp[index] = val.slice(-1);\n setOtp(newOtp);\n\n const otpString = newOtp.join('');\n onChange?.(otpString);\n\n if (val && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n\n if (newOtp.every((digit) => digit !== '')) {\n onComplete?.(otpString);\n }\n };\n\n const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && !otp[index] && index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain');\n\n if (!/^\\d+$/.test(pastedData)) return;\n\n const pastedArray = pastedData.split('').slice(0, length);\n const newOtp = [...pastedArray, ...Array(length - pastedArray.length).fill('')];\n setOtp(newOtp);\n\n const otpString = newOtp.join('');\n onChange?.(otpString);\n\n const nextIndex = Math.min(pastedArray.length, length - 1);\n inputRefs.current[nextIndex]?.focus();\n\n if (newOtp.every((digit) => digit !== '')) {\n onComplete?.(otpString);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className={`flex gap-2 justify-center ${className}`} onBlur={onBlur}>\n {otp.map((digit, index) => (\n <React.Fragment key={index}>\n <Input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n placeholder=\"\"\n value={digit}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n disabled={disabled}\n maxLength={1}\n className=\"text-center text-lg font-semibold otp-input-field\"\n style={{\n width: '63px',\n height: '44px',\n borderRadius: '12px',\n borderColor: error ? '#C21919' : '#D1D1D1',\n }}\n />\n {index === Math.floor(length / 2) - 1 && (\n <div className=\"flex items-center justify-center px-1\">\n <span className=\"text-gray-400 text-xl\">—</span>\n </div>\n )}\n </React.Fragment>\n ))}\n </div>\n {error && errorMessage && (\n <div className=\"flex items-center justify-center mt-2 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n\nconst ControlledOTPInput: React.FC<OTPInputProps & { control: NonNullable<OTPInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n errorMessage: errorMessageProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n const hasError = errorProp ?? !!fieldState.error;\n return (\n <OTPInputBase\n {...rest}\n value={field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n error={hasError}\n errorMessage={errorMessageProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const OTPInput: React.FC<OTPInputProps> = ({ control, name, ...props }) => {\n if (control && name) {\n return <ControlledOTPInput control={control} name={name} {...props} />;\n }\n return <OTPInputBase {...props} />;\n};\n","import React, { useState, useEffect } from 'react';\nimport { Input as AntInput, Select, InputRef } from 'antd';\nimport type { InputProps as AntInputProps } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface PhoneInputProps\n extends Omit<AntInputProps, 'addonBefore' | 'value' | 'onChange'> {\n label?: string;\n error?: string;\n helperText?: string;\n countryCode?: string;\n onCountryCodeChange?: (value: string) => void;\n countryCodes?: { value: string; label: string }[];\n showCountryCodeDropdown?: boolean;\n format?: 'default' | 'spaced' | 'dashed' | 'none';\n customFormat?: (value: string) => string;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n control?: Control<any>;\n}\n\nconst PhoneInputBase = React.forwardRef<InputRef, Omit<PhoneInputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n countryCode = '+234',\n onCountryCodeChange,\n countryCodes = [\n { value: '+234', label: '+234' },\n { value: '+1', label: '+1' },\n { value: '+44', label: '+44' },\n { value: '+91', label: '+91' },\n ],\n showCountryCodeDropdown = true,\n format = 'spaced',\n customFormat,\n value,\n onChange,\n ...props\n}, ref) => {\n const errorClass = error ? 'phone-input-error-state' : '';\n const [displayValue, setDisplayValue] = useState('');\n\n useEffect(() => {\n if (value !== undefined) {\n const cleaned = String(value).replace(/\\D/g, '');\n const formatted = formatPhoneNumber(cleaned);\n setDisplayValue(formatted);\n }\n }, [value, format, countryCode]);\n\n const formatPhoneNumber = (val: string): string => {\n const cleaned = val.replace(/\\D/g, '');\n\n if (customFormat) {\n return customFormat(cleaned);\n }\n\n if (format === 'none') {\n return cleaned;\n }\n\n let formatted = '';\n\n if (format === 'spaced') {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n } else {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n }\n } else if (format === 'dashed') {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `${cleaned.slice(0, 3)}-${cleaned.slice(3)}`;\n } else {\n formatted = `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n } else {\n if (countryCode === '+1') {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`;\n } else {\n formatted = `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n } else {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n } else {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n }\n }\n }\n\n return formatted;\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n !/^\\d$/.test(e.key) &&\n e.key !== 'Backspace' &&\n e.key !== 'Delete' &&\n e.key !== 'Tab' &&\n e.key !== 'ArrowLeft' &&\n e.key !== 'ArrowRight' &&\n e.key !== 'Home' &&\n e.key !== 'End'\n ) {\n e.preventDefault();\n }\n props.onKeyDown?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const cursorPosition = input.selectionStart || 0;\n\n const cleaned = input.value.replace(/\\D/g, '');\n const formatted = formatPhoneNumber(cleaned);\n\n setDisplayValue(formatted);\n\n const oldLength = displayValue.length;\n const newLength = formatted.length;\n const diff = newLength - oldLength;\n\n requestAnimationFrame(() => {\n const newCursorPosition = Math.max(0, Math.min(cursorPosition + diff, formatted.length));\n input.setSelectionRange(newCursorPosition, newCursorPosition);\n });\n\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: cleaned },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain');\n const numericData = pastedData.replace(/\\D/g, '');\n\n const target = e.target as HTMLInputElement;\n const start = target.selectionStart || 0;\n const currentCleaned = displayValue.replace(/\\D/g, '');\n const newCleaned = currentCleaned.slice(0, start) + numericData;\n\n const formatted = formatPhoneNumber(newCleaned);\n setDisplayValue(formatted);\n\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: newCleaned },\n } as any;\n onChange(syntheticEvent);\n }\n\n props.onPaste?.(e);\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n className=\"block text-sm font-medium mb-2\"\n style={{ color: error ? '#C21919' : '#181918' }}\n >\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {`\n .phone-input-container {\n display: flex;\n gap: 8px;\n }\n\n .phone-input-error-state .ant-select-selector {\n border-color: #C21919 !important;\n }\n\n .phone-input-error-state .ant-select-focused .ant-select-selector {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n\n .phone-input-error-state .ant-input {\n border-color: #C21919 !important;\n }\n\n .phone-input-error-state .ant-input:focus {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n\n .phone-input-country-code-static {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 61px;\n height: 44px;\n border-radius: 12px;\n border: 1px solid;\n font-size: 14px;\n font-weight: 500;\n background-color: #FAFAFA;\n }\n\n .phone-input-error-state .phone-input-country-code-static {\n border-color: #C21919 !important;\n }\n `}\n </style>\n <div className={`phone-input-container ${errorClass}`}>\n {showCountryCodeDropdown ? (\n <Select\n value={countryCode}\n onChange={onCountryCodeChange}\n options={countryCodes}\n style={{\n width: '85px',\n borderRadius: '12px',\n }}\n className={errorClass}\n popupClassName=\"country-code-dropdown\"\n disabled={props.disabled}\n />\n ) : (\n <div\n className=\"phone-input-country-code-static\"\n style={{\n borderColor: error ? '#C21919' : '#D1D1D1',\n color: props.disabled ? '#00000040' : '#000000',\n backgroundColor: props.disabled ? '#f5f5f5' : '#FAFAFA',\n }}\n >\n {countryCode}\n </div>\n )}\n <AntInput\n {...props}\n ref={ref}\n value={displayValue}\n className={className}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onPaste={handlePaste}\n style={{\n flex: 1,\n height: '44px',\n borderRadius: '12px',\n borderColor: error ? '#C21919' : '#D1D1D1',\n ...props.style,\n }}\n />\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n});\nPhoneInputBase.displayName = 'PhoneInputBase';\n\nconst ControlledPhoneInput: React.FC<PhoneInputProps & { control: NonNullable<PhoneInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PhoneInputBase\n {...rest}\n value={field.value}\n onChange={(e) => field.onChange(e.target.value)}\n onBlur={field.onBlur}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PhoneInput = React.forwardRef<InputRef, PhoneInputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledPhoneInput control={control} name={name} {...props} />;\n }\n return <PhoneInputBase ref={ref} name={name} {...props} />;\n});\nPhoneInput.displayName = 'PhoneInput';\n","import React, { useState, useEffect } from 'react';\nimport { Input as AntInput, InputRef } from 'antd';\nimport type { InputProps as AntInputProps } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface CurrencyInputProps extends Omit<AntInputProps, 'onChange'> {\n label?: string;\n error?: string;\n helperText?: string;\n currencySymbol?: string;\n formatAmount?: boolean;\n onChange?: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;\n control?: Control<any>;\n}\n\nconst CurrencyInputBase = React.forwardRef<InputRef, Omit<CurrencyInputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n status,\n currencySymbol = '₦',\n formatAmount = false,\n onChange,\n value: externalValue,\n ...props\n}, ref) => {\n const errorClass = error ? 'currency-input-error-state' : '';\n const [displayValue, setDisplayValue] = useState<string>('');\n\n const formatNumber = (num: string): string => {\n const cleanNum = num.replace(/[^\\d.]/g, '');\n const parts = cleanNum.split('.');\n const integerPart = parts[0];\n const decimalPart = parts[1];\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return decimalPart !== undefined ? `${formattedInteger}.${decimalPart}` : formattedInteger;\n };\n\n const unformatNumber = (formatted: string): string => {\n return formatted.replace(/,/g, '');\n };\n\n useEffect(() => {\n if (externalValue !== undefined) {\n const stringValue = String(externalValue);\n setDisplayValue(formatAmount ? formatNumber(stringValue) : stringValue);\n }\n }, [externalValue, formatAmount]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n\n if (formatAmount) {\n const rawValue = unformatNumber(inputValue);\n const formatted = formatNumber(rawValue);\n setDisplayValue(formatted);\n if (onChange) {\n onChange(rawValue, e);\n }\n } else {\n setDisplayValue(inputValue);\n if (onChange) {\n onChange(inputValue, e);\n }\n }\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n className=\"block text-sm font-medium mb-2\"\n style={{ color: error ? '#C21919' : '#181918' }}\n >\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {`\n .currency-input-wrapper.ant-input-affix-wrapper {\n display: flex;\n align-items: center;\n padding: 0;\n height: 44px;\n border-radius: 12px;\n }\n\n .currency-input-wrapper .ant-input-prefix {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 37px;\n height: 41px;\n background-color: #F0F2F4;\n margin: 0;\n border-radius: 12px 0 0 12px;\n color: #000000;\n flex-shrink: 0;\n margin-right: 10px;\n }\n\n .currency-input-wrapper .ant-input {\n padding: 11px 16px 11px 20px;\n height: 44px;\n }\n\n .currency-input-error-state.ant-input-affix-wrapper {\n border-color: #C21919 !important;\n }\n\n .currency-input-error-state.ant-input-affix-wrapper:focus,\n .currency-input-error-state.ant-input-affix-wrapper-focused {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n `}\n </style>\n <AntInput\n ref={ref}\n className={`currency-input-wrapper ${className} ${errorClass}`}\n status={error ? 'error' : status}\n prefix={<span>{currencySymbol}</span>}\n {...props}\n value={formatAmount ? displayValue : externalValue}\n onChange={handleChange}\n style={{\n borderColor: error ? '#C21919' : '#D1D1D1',\n ...props.style,\n }}\n />\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n});\nCurrencyInputBase.displayName = 'CurrencyInputBase';\n\nconst ControlledCurrencyInput: React.FC<CurrencyInputProps & { control: NonNullable<CurrencyInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <CurrencyInputBase\n {...rest}\n value={field.value}\n onChange={(value) => field.onChange(value)}\n onBlur={field.onBlur}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const CurrencyInput = React.forwardRef<InputRef, CurrencyInputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledCurrencyInput control={control} name={name} {...props} />;\n }\n return <CurrencyInputBase ref={ref} name={name} {...props} />;\n});\nCurrencyInput.displayName = 'CurrencyInput';\n","import React from 'react';\nimport { Avatar } from 'antd';\nimport { UserOutlined } from '@ant-design/icons';\n\nexport interface UserPillProps {\n name: string;\n subtitle?: string;\n avatar?: string;\n className?: string;\n size?: 'small' | 'medium' | 'large';\n}\n\nexport const UserPill: React.FC<UserPillProps> = ({\n name,\n subtitle,\n avatar,\n className = '',\n}) => {\n const avatarSize = 30;\n\n return (\n <div\n className={`flex items-center ${className}`}\n style={{\n backgroundColor: '#E6E6E6',\n borderRadius: '40px',\n padding: '5px 12px 5px 5px',\n height: '40px',\n gap: '8px',\n }}\n >\n {avatar ? (\n <Avatar src={avatar} size={avatarSize} />\n ) : (\n <Avatar icon={<UserOutlined />} size={avatarSize} style={{ backgroundColor: '#6B7280' }} />\n )}\n <div className=\"flex flex-col\">\n <span\n style={{\n color: '#181918',\n fontSize: '14px',\n fontWeight: 600,\n lineHeight: '1.2',\n }}\n >\n {name}\n </span>\n {subtitle && (\n <span\n style={{\n color: '#181918',\n fontSize: '12px',\n fontWeight: 400,\n lineHeight: '1.2',\n marginTop: '2px',\n }}\n >\n {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='353'%20height='130'%20viewBox='0%200%20353%20130'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20opacity='0.1'%3e%3cpath%20d='M17%2024C17%2015.1634%2024.1634%208%2033%208H327C335.837%208%20343%2015.1634%20343%2024V98C343%20106.837%20335.837%20114%20327%20114H33C24.1635%20114%2017%20106.837%2017%2098V24Z'%20fill='url(%23paint0_linear_683_56525)'/%3e%3crect%20x='41'%20y='29'%20width='67'%20height='67'%20rx='33.5'%20fill='%231B1C1E'/%3e%3cpath%20d='M68.8552%2071V55.0216H75.5683C76.5263%2055.0216%2077.3484%2055.1932%2078.0347%2055.5363C78.7354%2055.8795%2079.2715%2056.3657%2079.6433%2056.9948C80.0294%2057.6096%2080.2224%2058.346%2080.2224%2059.2039C80.2224%2059.9903%2080.0151%2060.7052%2079.6004%2061.3486C79.2%2061.9777%2078.6067%2062.471%2077.8203%2062.8285L77.7988%2062.0349C78.4851%2062.2923%2079.0499%2062.6355%2079.4932%2063.0644C79.9507%2063.4791%2080.2939%2063.9652%2080.5226%2064.5229C80.7514%2065.0662%2080.8658%2065.6453%2080.8658%2066.2601C80.8658%2067.7328%2080.394%2068.891%2079.4503%2069.7346C78.5066%2070.5782%2077.2197%2071%2075.5897%2071H68.8552ZM70.9571%2069.0697H75.6755C76.6049%2069.0697%2077.3484%2068.8195%2077.906%2068.3191C78.4637%2067.8186%2078.7425%2067.1394%2078.7425%2066.2815C78.7425%2065.4236%2078.4637%2064.7445%2077.906%2064.244C77.3484%2063.7293%2076.6049%2063.4719%2075.6755%2063.4719H70.9571V69.0697ZM70.9571%2061.5845H75.5254C76.2975%2061.5845%2076.9195%2061.3629%2077.3913%2060.9197C77.8632%2060.4621%2078.0991%2059.883%2078.0991%2059.1824C78.0991%2058.4532%2077.8632%2057.8956%2077.3913%2057.5095C76.9195%2057.1235%2076.2975%2056.9304%2075.5254%2056.9304H70.9571V61.5845Z'%20fill='%23FDFDFE'/%3e%3cpath%20d='M133.44%2049V34.1H139.72C140.707%2034.1%20141.547%2034.2733%20142.24%2034.62C142.947%2034.9533%20143.487%2035.4333%20143.86%2036.06C144.247%2036.6733%20144.44%2037.42%20144.44%2038.3C144.44%2038.98%20144.253%2039.62%20143.88%2040.22C143.52%2040.8067%20142.94%2041.2933%20142.14%2041.68V40.42C142.873%2040.7%20143.453%2041.0467%20143.88%2041.46C144.307%2041.8733%20144.607%2042.3333%20144.78%2042.84C144.953%2043.3467%20145.04%2043.88%20145.04%2044.44C145.04%2045.8667%20144.567%2046.9867%20143.62%2047.8C142.687%2048.6%20141.387%2049%20139.72%2049H133.44ZM136.16%2046.6H140C140.707%2046.6%20141.267%2046.4067%20141.68%2046.02C142.107%2045.62%20142.32%2045.0933%20142.32%2044.44C142.32%2043.7867%20142.107%2043.26%20141.68%2042.86C141.267%2042.46%20140.707%2042.26%20140%2042.26H136.16V46.6ZM136.16%2039.88H139.86C140.42%2039.88%20140.867%2039.72%20141.2%2039.4C141.533%2039.0667%20141.7%2038.64%20141.7%2038.12C141.7%2037.6%20141.533%2037.1867%20141.2%2036.88C140.867%2036.5733%20140.42%2036.42%20139.86%2036.42H136.16V39.88ZM152.208%2049.24C151.088%2049.24%20150.108%2048.9867%20149.268%2048.48C148.428%2047.9733%20147.775%2047.2867%20147.308%2046.42C146.841%2045.5533%20146.608%2044.5933%20146.608%2043.54C146.608%2042.4467%20146.841%2041.48%20147.308%2040.64C147.788%2039.7867%20148.435%2039.1133%20149.248%2038.62C150.075%2038.1267%20150.995%2037.88%20152.008%2037.88C152.861%2037.88%20153.608%2038.02%20154.248%2038.3C154.901%2038.58%20155.455%2038.9667%20155.908%2039.46C156.361%2039.9533%20156.708%2040.52%20156.948%2041.16C157.188%2041.7867%20157.308%2042.4667%20157.308%2043.2C157.308%2043.3867%20157.295%2043.58%20157.268%2043.78C157.255%2043.98%20157.221%2044.1533%20157.168%2044.3H148.768V42.3H155.688L154.448%2043.24C154.568%2042.6267%20154.535%2042.08%20154.348%2041.6C154.175%2041.12%20153.881%2040.74%20153.468%2040.46C153.068%2040.18%20152.581%2040.04%20152.008%2040.04C151.461%2040.04%20150.975%2040.18%20150.548%2040.46C150.121%2040.7267%20149.795%2041.1267%20149.568%2041.66C149.355%2042.18%20149.275%2042.8133%20149.328%2043.56C149.275%2044.2267%20149.361%2044.82%20149.588%2045.34C149.828%2045.8467%20150.175%2046.24%20150.628%2046.52C151.095%2046.8%20151.628%2046.94%20152.228%2046.94C152.828%2046.94%20153.335%2046.8133%20153.748%2046.56C154.175%2046.3067%20154.508%2045.9667%20154.748%2045.54L156.868%2046.58C156.655%2047.1%20156.321%2047.56%20155.868%2047.96C155.415%2048.36%20154.875%2048.6733%20154.248%2048.9C153.635%2049.1267%20152.955%2049.24%20152.208%2049.24ZM159.294%2049V38.12H161.754V40.26L161.554%2039.88C161.808%2039.2267%20162.221%2038.7333%20162.794%2038.4C163.381%2038.0533%20164.061%2037.88%20164.834%2037.88C165.634%2037.88%20166.341%2038.0533%20166.954%2038.4C167.581%2038.7467%20168.068%2039.2333%20168.414%2039.86C168.761%2040.4733%20168.934%2041.1867%20168.934%2042V49H166.314V42.62C166.314%2042.14%20166.221%2041.7267%20166.034%2041.38C165.848%2041.0333%20165.588%2040.7667%20165.254%2040.58C164.934%2040.38%20164.554%2040.28%20164.114%2040.28C163.688%2040.28%20163.308%2040.38%20162.974%2040.58C162.641%2040.7667%20162.381%2041.0333%20162.194%2041.38C162.008%2041.7267%20161.914%2042.14%20161.914%2042.62V49H159.294ZM169.65%2053.42C169.476%2053.42%20169.296%2053.4133%20169.11%2053.4C168.923%2053.3867%20168.77%2053.3667%20168.65%2053.34V51.06C168.89%2051.1%20169.13%2051.12%20169.37%2051.12C169.93%2051.12%20170.363%2050.9867%20170.67%2050.72C170.99%2050.4667%20171.15%2050.0733%20171.15%2049.54V38.12H173.77V49.54C173.77%2050.3667%20173.603%2051.0667%20173.27%2051.64C172.936%2052.2267%20172.456%2052.6667%20171.83%2052.96C171.216%2053.2667%20170.49%2053.42%20169.65%2053.42ZM171.15%2036.9V34.1H173.77V36.9H171.15ZM179.489%2049.24C178.729%2049.24%20178.069%2049.1133%20177.509%2048.86C176.949%2048.6067%20176.515%2048.2467%20176.209%2047.78C175.902%2047.3%20175.749%2046.7467%20175.749%2046.12C175.749%2045.52%20175.882%2044.9867%20176.149%2044.52C176.415%2044.04%20176.829%2043.64%20177.389%2043.32C177.949%2043%20178.655%2042.7733%20179.509%2042.64L183.069%2042.06V44.06L180.009%2044.58C179.489%2044.6733%20179.102%2044.84%20178.849%2045.08C178.595%2045.32%20178.469%2045.6333%20178.469%2046.02C178.469%2046.3933%20178.609%2046.6933%20178.889%2046.92C179.182%2047.1333%20179.542%2047.24%20179.969%2047.24C180.515%2047.24%20180.995%2047.1267%20181.409%2046.9C181.835%2046.66%20182.162%2046.3333%20182.389%2045.92C182.629%2045.5067%20182.749%2045.0533%20182.749%2044.56V41.76C182.749%2041.2933%20182.562%2040.9067%20182.189%2040.6C181.829%2040.28%20181.349%2040.12%20180.749%2040.12C180.189%2040.12%20179.689%2040.2733%20179.249%2040.58C178.822%2040.8733%20178.509%2041.2667%20178.309%2041.76L176.169%2040.72C176.382%2040.1467%20176.715%2039.6533%20177.169%2039.24C177.635%2038.8133%20178.182%2038.48%20178.809%2038.24C179.435%2038%20180.115%2037.88%20180.849%2037.88C181.742%2037.88%20182.529%2038.0467%20183.209%2038.38C183.889%2038.7%20184.415%2039.1533%20184.789%2039.74C185.175%2040.3133%20185.369%2040.9867%20185.369%2041.76V49H182.889V47.14L183.449%2047.1C183.169%2047.5667%20182.835%2047.96%20182.449%2048.28C182.062%2048.5867%20181.622%2048.8267%20181.129%2049C180.635%2049.16%20180.089%2049.24%20179.489%2049.24ZM187.79%2049V38.12H190.25V40.64L189.97%2040.22C190.17%2039.4333%20190.57%2038.8467%20191.17%2038.46C191.77%2038.0733%20192.477%2037.88%20193.29%2037.88C194.184%2037.88%20194.97%2038.1133%20195.65%2038.58C196.33%2039.0467%20196.77%2039.66%20196.97%2040.42L196.23%2040.48C196.564%2039.6133%20197.064%2038.9667%20197.73%2038.54C198.397%2038.1%20199.164%2037.88%20200.03%2037.88C200.804%2037.88%20201.49%2038.0533%20202.09%2038.4C202.704%2038.7467%20203.184%2039.2333%20203.53%2039.86C203.877%2040.4733%20204.05%2041.1867%20204.05%2042V49H201.43V42.62C201.43%2042.14%20201.344%2041.7267%20201.17%2041.38C200.997%2041.0333%20200.757%2040.7667%20200.45%2040.58C200.144%2040.38%20199.77%2040.28%20199.33%2040.28C198.917%2040.28%20198.55%2040.38%20198.23%2040.58C197.91%2040.7667%20197.664%2041.0333%20197.49%2041.38C197.317%2041.7267%20197.23%2042.14%20197.23%2042.62V49H194.61V42.62C194.61%2042.14%20194.524%2041.7267%20194.35%2041.38C194.177%2041.0333%20193.93%2040.7667%20193.61%2040.58C193.304%2040.38%20192.937%2040.28%20192.51%2040.28C192.097%2040.28%20191.73%2040.38%20191.41%2040.58C191.09%2040.7667%20190.844%2041.0333%20190.67%2041.38C190.497%2041.7267%20190.41%2042.14%20190.41%2042.62V49H187.79ZM206.267%2049V38.12H208.887V49H206.267ZM206.267%2036.9V34.1H208.887V36.9H206.267ZM211.306%2049V38.12H213.766V40.26L213.566%2039.88C213.819%2039.2267%20214.233%2038.7333%20214.806%2038.4C215.393%2038.0533%20216.073%2037.88%20216.846%2037.88C217.646%2037.88%20218.353%2038.0533%20218.966%2038.4C219.593%2038.7467%20220.079%2039.2333%20220.426%2039.86C220.773%2040.4733%20220.946%2041.1867%20220.946%2042V49H218.326V42.62C218.326%2042.14%20218.233%2041.7267%20218.046%2041.38C217.859%2041.0333%20217.599%2040.7667%20217.266%2040.58C216.946%2040.38%20216.566%2040.28%20216.126%2040.28C215.699%2040.28%20215.319%2040.38%20214.986%2040.58C214.653%2040.7667%20214.393%2041.0333%20214.206%2041.38C214.019%2041.7267%20213.926%2042.14%20213.926%2042.62V49H211.306Z'%20fill='%23181918'/%3e%3cpath%20d='M136.872%2072.168C136.228%2072.168%20135.645%2072.0233%20135.122%2071.734C134.609%2071.4353%20134.221%2071.0153%20133.96%2070.474L134.128%2070.32V72H133.078V61.402H134.128V66.176L133.96%2065.882C134.259%2065.406%20134.655%2065.028%20135.15%2064.748C135.654%2064.468%20136.228%2064.328%20136.872%2064.328C137.581%2064.328%20138.211%2064.5007%20138.762%2064.846C139.322%2065.182%20139.761%2065.644%20140.078%2066.232C140.405%2066.82%20140.568%2067.492%20140.568%2068.248C140.568%2068.9947%20140.405%2069.6667%20140.078%2070.264C139.761%2070.852%20139.322%2071.3187%20138.762%2071.664C138.211%2072%20137.581%2072.168%20136.872%2072.168ZM136.816%2071.118C137.32%2071.118%20137.768%2070.992%20138.16%2070.74C138.561%2070.488%20138.874%2070.1473%20139.098%2069.718C139.331%2069.2793%20139.448%2068.7893%20139.448%2068.248C139.448%2067.6973%20139.331%2067.2073%20139.098%2066.778C138.874%2066.3487%20138.561%2066.008%20138.16%2065.756C137.768%2065.504%20137.32%2065.378%20136.816%2065.378C136.312%2065.378%20135.855%2065.504%20135.444%2065.756C135.043%2066.008%20134.721%2066.3533%20134.478%2066.792C134.245%2067.2213%20134.128%2067.7067%20134.128%2068.248C134.128%2068.7893%20134.245%2069.2793%20134.478%2069.718C134.721%2070.1473%20135.043%2070.488%20135.444%2070.74C135.855%2070.992%20136.312%2071.118%20136.816%2071.118ZM145.832%2072.168C145.132%2072.168%20144.497%2072%20143.928%2071.664C143.368%2071.3187%20142.925%2070.8473%20142.598%2070.25C142.271%2069.6527%20142.108%2068.976%20142.108%2068.22C142.108%2067.464%20142.267%2066.7967%20142.584%2066.218C142.901%2065.63%20143.331%2065.168%20143.872%2064.832C144.423%2064.496%20145.039%2064.328%20145.72%2064.328C146.261%2064.328%20146.742%2064.4307%20147.162%2064.636C147.591%2064.832%20147.955%2065.1027%20148.254%2065.448C148.553%2065.784%20148.781%2066.1667%20148.94%2066.596C149.099%2067.016%20149.178%2067.45%20149.178%2067.898C149.178%2067.9913%20149.173%2068.0987%20149.164%2068.22C149.155%2068.332%20149.141%2068.4487%20149.122%2068.57H142.78V67.59H148.52L148.016%2068.01C148.1%2067.4967%20148.039%2067.0393%20147.834%2066.638C147.638%2066.2273%20147.353%2065.9053%20146.98%2065.672C146.607%2065.4293%20146.187%2065.308%20145.72%2065.308C145.253%2065.308%20144.819%2065.4293%20144.418%2065.672C144.026%2065.9147%20143.718%2066.2553%20143.494%2066.694C143.27%2067.1233%20143.181%2067.6367%20143.228%2068.234C143.181%2068.8313%20143.275%2069.354%20143.508%2069.802C143.751%2070.2407%20144.077%2070.5813%20144.488%2070.824C144.908%2071.0667%20145.356%2071.188%20145.832%2071.188C146.383%2071.188%20146.845%2071.0573%20147.218%2070.796C147.591%2070.5347%20147.895%2070.208%20148.128%2069.816L149.024%2070.292C148.875%2070.628%20148.646%2070.9407%20148.338%2071.23C148.03%2071.51%20147.661%2071.7387%20147.232%2071.916C146.812%2072.084%20146.345%2072.168%20145.832%2072.168ZM151.029%2072V64.496H152.079V65.952L151.841%2065.896C152.028%2065.4107%20152.331%2065.028%20152.751%2064.748C153.181%2064.468%20153.675%2064.328%20154.235%2064.328C154.767%2064.328%20155.243%2064.4493%20155.663%2064.692C156.093%2064.9347%20156.429%2065.2707%20156.671%2065.7C156.923%2066.12%20157.049%2066.596%20157.049%2067.128V72H155.999V67.534C155.999%2067.0767%20155.915%2066.6893%20155.747%2066.372C155.589%2066.0547%20155.36%2065.812%20155.061%2065.644C154.772%2065.4667%20154.436%2065.378%20154.053%2065.378C153.671%2065.378%20153.33%2065.4667%20153.031%2065.644C152.733%2065.812%20152.499%2066.0593%20152.331%2066.386C152.163%2066.7033%20152.079%2067.086%20152.079%2067.534V72H151.029ZM164.725%2074.898C163.903%2074.898%20163.138%2074.7487%20162.429%2074.45C161.729%2074.1607%20161.113%2073.75%20160.581%2073.218C160.049%2072.686%20159.633%2072.07%20159.335%2071.37C159.045%2070.6607%20158.901%2069.9%20158.901%2069.088C158.901%2068.276%20159.05%2067.52%20159.349%2066.82C159.647%2066.12%20160.058%2065.5087%20160.581%2064.986C161.113%2064.4633%20161.733%2064.0573%20162.443%2063.768C163.152%2063.4693%20163.913%2063.32%20164.725%2063.32C165.565%2063.32%20166.339%2063.4787%20167.049%2063.796C167.758%2064.104%20168.369%2064.5287%20168.883%2065.07C169.405%2065.602%20169.807%2066.2087%20170.087%2066.89C170.376%2067.5713%20170.521%2068.2853%20170.521%2069.032C170.521%2069.62%20170.427%2070.138%20170.241%2070.586C170.063%2071.0247%20169.802%2071.37%20169.457%2071.622C169.111%2071.874%20168.696%2072%20168.211%2072C167.921%2072%20167.646%2071.9487%20167.385%2071.846C167.123%2071.734%20166.899%2071.58%20166.713%2071.384C166.535%2071.1787%20166.414%2070.936%20166.349%2070.656L166.573%2070.838C166.423%2071.09%20166.237%2071.3047%20166.013%2071.482C165.798%2071.65%20165.555%2071.7807%20165.285%2071.874C165.014%2071.958%20164.72%2072%20164.403%2072C163.861%2072%20163.371%2071.8693%20162.933%2071.608C162.503%2071.3467%20162.163%2070.992%20161.911%2070.544C161.659%2070.096%20161.533%2069.5873%20161.533%2069.018C161.533%2068.4487%20161.659%2067.94%20161.911%2067.492C162.163%2067.044%20162.503%2066.6893%20162.933%2066.428C163.371%2066.1573%20163.861%2066.022%20164.403%2066.022C164.86%2066.022%20165.275%2066.1153%20165.649%2066.302C166.031%2066.4887%20166.335%2066.75%20166.559%2067.086L166.461%2067.254V66.162H167.371V70.026C167.371%2070.3713%20167.445%2070.6233%20167.595%2070.782C167.753%2070.9407%20167.963%2071.02%20168.225%2071.02C168.617%2071.02%20168.92%2070.8567%20169.135%2070.53C169.359%2070.2033%20169.471%2069.7133%20169.471%2069.06C169.471%2068.388%20169.354%2067.7627%20169.121%2067.184C168.887%2066.6053%20168.561%2066.1013%20168.141%2065.672C167.721%2065.2427%20167.221%2064.9067%20166.643%2064.664C166.064%2064.4213%20165.425%2064.3%20164.725%2064.3C164.043%2064.3%20163.409%2064.4213%20162.821%2064.664C162.242%2064.8973%20161.738%2065.2287%20161.309%2065.658C160.879%2066.0873%20160.543%2066.5913%20160.301%2067.17C160.067%2067.7487%20159.951%2068.3833%20159.951%2069.074C159.951%2069.746%20160.063%2070.376%20160.287%2070.964C160.52%2071.5427%20160.847%2072.0513%20161.267%2072.49C161.696%2072.938%20162.205%2073.288%20162.793%2073.54C163.381%2073.792%20164.034%2073.918%20164.753%2073.918C165.173%2073.918%20165.579%2073.8713%20165.971%2073.778C166.363%2073.694%20166.717%2073.5633%20167.035%2073.386L167.483%2074.226C166.689%2074.674%20165.77%2074.898%20164.725%2074.898ZM164.445%2071.02C164.809%2071.02%20165.131%2070.9313%20165.411%2070.754C165.691%2070.5767%20165.91%2070.3387%20166.069%2070.04C166.237%2069.732%20166.321%2069.3867%20166.321%2069.004C166.321%2068.4253%20166.143%2067.954%20165.789%2067.59C165.434%2067.2167%20164.986%2067.03%20164.445%2067.03C164.09%2067.03%20163.768%2067.1187%20163.479%2067.296C163.199%2067.464%20162.979%2067.6973%20162.821%2067.996C162.662%2068.2947%20162.583%2068.6353%20162.583%2069.018C162.583%2069.3913%20162.662%2069.732%20162.821%2070.04C162.989%2070.3387%20163.213%2070.5767%20163.493%2070.754C163.773%2070.9313%20164.09%2071.02%20164.445%2071.02ZM174.661%2072.168C173.942%2072.168%20173.312%2071.986%20172.771%2071.622C172.229%2071.258%20171.837%2070.7633%20171.595%2070.138L172.477%2069.718C172.691%2070.1753%20172.99%2070.5393%20173.373%2070.81C173.765%2071.0807%20174.194%2071.216%20174.661%2071.216C175.109%2071.216%20175.487%2071.1087%20175.795%2070.894C176.103%2070.67%20176.257%2070.3807%20176.257%2070.026C176.257%2069.7647%20176.182%2069.5593%20176.033%2069.41C175.883%2069.2513%20175.711%2069.13%20175.515%2069.046C175.319%2068.962%20175.146%2068.9013%20174.997%2068.864L173.919%2068.556C173.228%2068.36%20172.729%2068.0847%20172.421%2067.73C172.113%2067.3753%20171.959%2066.9647%20171.959%2066.498C171.959%2066.0593%20172.071%2065.6767%20172.295%2065.35C172.519%2065.0233%20172.822%2064.7713%20173.205%2064.594C173.587%2064.4167%20174.012%2064.328%20174.479%2064.328C175.113%2064.328%20175.687%2064.496%20176.201%2064.832C176.723%2065.1587%20177.092%2065.616%20177.307%2066.204L176.411%2066.624C176.224%2066.204%20175.953%2065.8773%20175.599%2065.644C175.253%2065.4013%20174.866%2065.28%20174.437%2065.28C174.017%2065.28%20173.681%2065.3873%20173.429%2065.602C173.177%2065.8167%20173.051%2066.0873%20173.051%2066.414C173.051%2066.666%20173.116%2066.8667%20173.247%2067.016C173.377%2067.1653%20173.527%2067.2773%20173.695%2067.352C173.872%2067.4267%20174.026%2067.4827%20174.157%2067.52L175.403%2067.884C176.009%2068.0613%20176.481%2068.3367%20176.817%2068.71C177.162%2069.0833%20177.335%2069.522%20177.335%2070.026C177.335%2070.4367%20177.218%2070.8053%20176.985%2071.132C176.761%2071.4587%20176.448%2071.7153%20176.047%2071.902C175.645%2072.0793%20175.183%2072.168%20174.661%2072.168ZM179.18%2072V61.402H180.23V65.952L179.992%2065.896C180.178%2065.4107%20180.482%2065.028%20180.902%2064.748C181.331%2064.468%20181.826%2064.328%20182.386%2064.328C182.918%2064.328%20183.394%2064.4493%20183.814%2064.692C184.243%2064.9347%20184.579%2065.2707%20184.822%2065.7C185.074%2066.12%20185.2%2066.596%20185.2%2067.128V72H184.15V67.534C184.15%2067.0767%20184.066%2066.6893%20183.898%2066.372C183.73%2066.0547%20183.496%2065.812%20183.198%2065.644C182.908%2065.4667%20182.577%2065.378%20182.204%2065.378C181.83%2065.378%20181.494%2065.4667%20181.196%2065.644C180.897%2065.812%20180.659%2066.0593%20180.482%2066.386C180.314%2066.7033%20180.23%2067.086%20180.23%2067.534V72H179.18ZM190.621%2072.168C189.921%2072.168%20189.286%2072%20188.717%2071.664C188.157%2071.3187%20187.714%2070.8473%20187.387%2070.25C187.06%2069.6527%20186.897%2068.976%20186.897%2068.22C186.897%2067.464%20187.056%2066.7967%20187.373%2066.218C187.69%2065.63%20188.12%2065.168%20188.661%2064.832C189.212%2064.496%20189.828%2064.328%20190.509%2064.328C191.05%2064.328%20191.531%2064.4307%20191.951%2064.636C192.38%2064.832%20192.744%2065.1027%20193.043%2065.448C193.342%2065.784%20193.57%2066.1667%20193.729%2066.596C193.888%2067.016%20193.967%2067.45%20193.967%2067.898C193.967%2067.9913%20193.962%2068.0987%20193.953%2068.22C193.944%2068.332%20193.93%2068.4487%20193.911%2068.57H187.569V67.59H193.309L192.805%2068.01C192.889%2067.4967%20192.828%2067.0393%20192.623%2066.638C192.427%2066.2273%20192.142%2065.9053%20191.769%2065.672C191.396%2065.4293%20190.976%2065.308%20190.509%2065.308C190.042%2065.308%20189.608%2065.4293%20189.207%2065.672C188.815%2065.9147%20188.507%2066.2553%20188.283%2066.694C188.059%2067.1233%20187.97%2067.6367%20188.017%2068.234C187.97%2068.8313%20188.064%2069.354%20188.297%2069.802C188.54%2070.2407%20188.866%2070.5813%20189.277%2070.824C189.697%2071.0667%20190.145%2071.188%20190.621%2071.188C191.172%2071.188%20191.634%2071.0573%20192.007%2070.796C192.38%2070.5347%20192.684%2070.208%20192.917%2069.816L193.813%2070.292C193.664%2070.628%20193.435%2070.9407%20193.127%2071.23C192.819%2071.51%20192.45%2071.7387%20192.021%2071.916C191.601%2072.084%20191.134%2072.168%20190.621%2072.168ZM195.818%2072V61.402H196.868V68.822L196.42%2068.752L200.634%2064.496H201.992L199.052%2067.506L202.258%2072H200.998L197.988%2067.842L198.66%2067.898L196.518%2070.11L196.868%2069.242V72H195.818ZM206.767%2072.168C206.067%2072.168%20205.433%2072%20204.863%2071.664C204.303%2071.3187%20203.86%2070.8473%20203.533%2070.25C203.207%2069.6527%20203.043%2068.976%20203.043%2068.22C203.043%2067.464%20203.202%2066.7967%20203.519%2066.218C203.837%2065.63%20204.266%2065.168%20204.807%2064.832C205.358%2064.496%20205.974%2064.328%20206.655%2064.328C207.197%2064.328%20207.677%2064.4307%20208.097%2064.636C208.527%2064.832%20208.891%2065.1027%20209.189%2065.448C209.488%2065.784%20209.717%2066.1667%20209.875%2066.596C210.034%2067.016%20210.113%2067.45%20210.113%2067.898C210.113%2067.9913%20210.109%2068.0987%20210.099%2068.22C210.09%2068.332%20210.076%2068.4487%20210.057%2068.57H203.715V67.59H209.455L208.951%2068.01C209.035%2067.4967%20208.975%2067.0393%20208.769%2066.638C208.573%2066.2273%20208.289%2065.9053%20207.915%2065.672C207.542%2065.4293%20207.122%2065.308%20206.655%2065.308C206.189%2065.308%20205.755%2065.4293%20205.353%2065.672C204.961%2065.9147%20204.653%2066.2553%20204.429%2066.694C204.205%2067.1233%20204.117%2067.6367%20204.163%2068.234C204.117%2068.8313%20204.21%2069.354%20204.443%2069.802C204.686%2070.2407%20205.013%2070.5813%20205.423%2070.824C205.843%2071.0667%20206.291%2071.188%20206.767%2071.188C207.318%2071.188%20207.78%2071.0573%20208.153%2070.796C208.527%2070.5347%20208.83%2070.208%20209.063%2069.816L209.959%2070.292C209.81%2070.628%20209.581%2070.9407%20209.273%2071.23C208.965%2071.51%20208.597%2071.7387%20208.167%2071.916C207.747%2072.084%20207.281%2072.168%20206.767%2072.168ZM211.965%2072V61.402H213.015V72H211.965ZM215.528%2072V70.46H216.648V72H215.528ZM221.34%2072.168C220.864%2072.168%20220.439%2072.0793%20220.066%2071.902C219.692%2071.7153%20219.398%2071.4633%20219.184%2071.146C218.969%2070.8287%20218.862%2070.4647%20218.862%2070.054C218.862%2069.662%20218.946%2069.3073%20219.114%2068.99C219.282%2068.6633%20219.543%2068.388%20219.898%2068.164C220.252%2067.94%20220.705%2067.7813%20221.256%2067.688L224.196%2067.198V68.15L221.508%2068.598C220.966%2068.6913%20220.574%2068.864%20220.332%2069.116C220.098%2069.368%20219.982%2069.6667%20219.982%2070.012C219.982%2070.348%20220.112%2070.6327%20220.374%2070.866C220.644%2071.0993%20220.99%2071.216%20221.41%2071.216C221.923%2071.216%20222.371%2071.1087%20222.754%2070.894C223.136%2070.67%20223.435%2070.3713%20223.65%2069.998C223.864%2069.6247%20223.972%2069.2093%20223.972%2068.752V66.848C223.972%2066.4%20223.808%2066.036%20223.482%2065.756C223.155%2065.476%20222.73%2065.336%20222.208%2065.336C221.75%2065.336%20221.349%2065.4527%20221.004%2065.686C220.658%2065.91%20220.402%2066.204%20220.234%2066.568L219.282%2066.05C219.422%2065.7327%20219.641%2065.4433%20219.94%2065.182C220.248%2064.9207%20220.598%2064.7153%20220.99%2064.566C221.382%2064.4073%20221.788%2064.328%20222.208%2064.328C222.758%2064.328%20223.244%2064.4353%20223.664%2064.65C224.093%2064.8647%20224.424%2065.1633%20224.658%2065.546C224.9%2065.9193%20225.022%2066.3533%20225.022%2066.848V72H223.972V70.502L224.126%2070.656C223.995%2070.936%20223.79%2071.1927%20223.51%2071.426C223.239%2071.65%20222.917%2071.832%20222.544%2071.972C222.18%2072.1027%20221.778%2072.168%20221.34%2072.168ZM227.952%2072V65.546H226.454V64.496H227.952V63.824C227.952%2063.3013%20228.068%2062.8627%20228.302%2062.508C228.535%2062.144%20228.843%2061.8687%20229.226%2061.682C229.608%2061.4953%20230.019%2061.402%20230.458%2061.402C230.551%2061.402%20230.658%2061.4113%20230.78%2061.43C230.901%2061.4393%20230.999%2061.4533%20231.074%2061.472V62.424C231.008%2062.4053%20230.92%2062.396%20230.808%2062.396C230.696%2062.3867%20230.616%2062.382%20230.57%2062.382C230.122%2062.382%20229.748%2062.4893%20229.45%2062.704C229.151%2062.9187%20229.002%2063.292%20229.002%2063.824V64.496H230.836V65.546H229.002V72H227.952ZM232.541%2072V64.496H233.591V65.728L233.451%2065.546C233.628%2065.1913%20233.894%2064.9113%20234.249%2064.706C234.613%2064.5007%20235.052%2064.398%20235.565%2064.398H236.041V65.448H235.383C234.842%2065.448%20234.408%2065.616%20234.081%2065.952C233.754%2066.288%20233.591%2066.764%20233.591%2067.38V72H232.541ZM237.271%2072V64.496H238.321V72H237.271ZM237.271%2063.11V61.57H238.321V63.11H237.271ZM243.901%2072.168C243.163%2072.168%20242.515%2071.9953%20241.955%2071.65C241.395%2071.3047%20240.956%2070.838%20240.639%2070.25C240.321%2069.6527%20240.163%2068.9807%20240.163%2068.234C240.163%2067.4873%20240.321%2066.82%20240.639%2066.232C240.956%2065.644%20241.395%2065.182%20241.955%2064.846C242.515%2064.5007%20243.163%2064.328%20243.901%2064.328C244.367%2064.328%20244.806%2064.412%20245.217%2064.58C245.627%2064.748%20245.991%2064.9767%20246.309%2065.266C246.626%2065.546%20246.864%2065.8727%20247.023%2066.246L246.071%2066.736C245.884%2066.3347%20245.599%2066.008%20245.217%2065.756C244.834%2065.504%20244.395%2065.378%20243.901%2065.378C243.406%2065.378%20242.958%2065.504%20242.557%2065.756C242.165%2065.9987%20241.852%2066.3393%20241.619%2066.778C241.395%2067.2073%20241.283%2067.6973%20241.283%2068.248C241.283%2068.7893%20241.395%2069.2793%20241.619%2069.718C241.852%2070.1473%20242.165%2070.488%20242.557%2070.74C242.958%2070.992%20243.406%2071.118%20243.901%2071.118C244.395%2071.118%20244.829%2070.992%20245.203%2070.74C245.585%2070.488%20245.875%2070.152%20246.071%2069.732L247.023%2070.25C246.864%2070.614%20246.626%2070.9407%20246.309%2071.23C245.991%2071.5193%20245.627%2071.748%20245.217%2071.916C244.806%2072.084%20244.367%2072.168%20243.901%2072.168ZM250.898%2072.168C250.422%2072.168%20249.998%2072.0793%20249.624%2071.902C249.251%2071.7153%20248.957%2071.4633%20248.742%2071.146C248.528%2070.8287%20248.42%2070.4647%20248.42%2070.054C248.42%2069.662%20248.504%2069.3073%20248.672%2068.99C248.84%2068.6633%20249.102%2068.388%20249.456%2068.164C249.811%2067.94%20250.264%2067.7813%20250.814%2067.688L253.754%2067.198V68.15L251.066%2068.598C250.525%2068.6913%20250.133%2068.864%20249.89%2069.116C249.657%2069.368%20249.54%2069.6667%20249.54%2070.012C249.54%2070.348%20249.671%2070.6327%20249.932%2070.866C250.203%2071.0993%20250.548%2071.216%20250.968%2071.216C251.482%2071.216%20251.93%2071.1087%20252.312%2070.894C252.695%2070.67%20252.994%2070.3713%20253.208%2069.998C253.423%2069.6247%20253.53%2069.2093%20253.53%2068.752V66.848C253.53%2066.4%20253.367%2066.036%20253.04%2065.756C252.714%2065.476%20252.289%2065.336%20251.766%2065.336C251.309%2065.336%20250.908%2065.4527%20250.562%2065.686C250.217%2065.91%20249.96%2066.204%20249.792%2066.568L248.84%2066.05C248.98%2065.7327%20249.2%2065.4433%20249.498%2065.182C249.806%2064.9207%20250.156%2064.7153%20250.548%2064.566C250.94%2064.4073%20251.346%2064.328%20251.766%2064.328C252.317%2064.328%20252.802%2064.4353%20253.222%2064.65C253.652%2064.8647%20253.983%2065.1633%20254.216%2065.546C254.459%2065.9193%20254.58%2066.3533%20254.58%2066.848V72H253.53V70.502L253.684%2070.656C253.554%2070.936%20253.348%2071.1927%20253.068%2071.426C252.798%2071.65%20252.476%2071.832%20252.102%2071.972C251.738%2072.1027%20251.337%2072.168%20250.898%2072.168Z'%20fill='%23181918'/%3e%3cpath%20d='M137.992%2093.168C137.255%2093.168%20136.578%2093.0373%20135.962%2092.776C135.346%2092.5053%20134.809%2092.132%20134.352%2091.656C133.904%2091.1707%20133.554%2090.6013%20133.302%2089.948C133.05%2089.2947%20132.924%2088.576%20132.924%2087.792C132.924%2087.008%20133.05%2086.2893%20133.302%2085.636C133.554%2084.9827%20133.904%2084.4133%20134.352%2083.928C134.809%2083.4427%20135.346%2083.0693%20135.962%2082.808C136.578%2082.5373%20137.255%2082.402%20137.992%2082.402C138.701%2082.402%20139.336%2082.528%20139.896%2082.78C140.465%2083.032%20140.941%2083.3587%20141.324%2083.76C141.716%2084.152%20141.996%2084.5673%20142.164%2085.006L141.114%2085.468C140.853%2084.8613%20140.451%2084.376%20139.91%2084.012C139.378%2083.6387%20138.739%2083.452%20137.992%2083.452C137.227%2083.452%20136.545%2083.634%20135.948%2083.998C135.351%2084.362%20134.884%2084.8707%20134.548%2085.524C134.212%2086.168%20134.044%2086.924%20134.044%2087.792C134.044%2088.6507%20134.212%2089.4067%20134.548%2090.06C134.884%2090.7133%20135.351%2091.222%20135.948%2091.586C136.545%2091.9407%20137.227%2092.118%20137.992%2092.118C138.739%2092.118%20139.378%2091.936%20139.91%2091.572C140.451%2091.208%20140.853%2090.7227%20141.114%2090.116L142.164%2090.578C141.996%2091.0073%20141.716%2091.4227%20141.324%2091.824C140.941%2092.216%20140.465%2092.538%20139.896%2092.79C139.336%2093.042%20138.701%2093.168%20137.992%2093.168ZM147.393%2093.168C146.683%2093.168%20146.039%2093%20145.461%2092.664C144.882%2092.3187%20144.42%2091.852%20144.075%2091.264C143.739%2090.6667%20143.571%2089.99%20143.571%2089.234C143.571%2088.4873%20143.739%2087.82%20144.075%2087.232C144.411%2086.644%20144.863%2086.182%20145.433%2085.846C146.011%2085.5007%20146.665%2085.328%20147.393%2085.328C148.121%2085.328%20148.769%2085.496%20149.339%2085.832C149.917%2086.168%20150.37%2086.63%20150.697%2087.218C151.033%2087.806%20151.201%2088.478%20151.201%2089.234C151.201%2089.9993%20151.028%2090.6807%20150.683%2091.278C150.337%2091.866%20149.875%2092.328%20149.297%2092.664C148.727%2093%20148.093%2093.168%20147.393%2093.168ZM147.393%2092.118C147.897%2092.118%20148.349%2091.992%20148.751%2091.74C149.161%2091.488%20149.483%2091.1427%20149.717%2090.704C149.959%2090.2653%20150.081%2089.7753%20150.081%2089.234C150.081%2088.6927%20149.959%2088.2073%20149.717%2087.778C149.483%2087.3487%20149.161%2087.008%20148.751%2086.756C148.349%2086.504%20147.897%2086.378%20147.393%2086.378C146.889%2086.378%20146.431%2086.504%20146.021%2086.756C145.619%2087.008%20145.297%2087.3487%20145.055%2087.778C144.812%2088.2073%20144.691%2088.6927%20144.691%2089.234C144.691%2089.7753%20144.812%2090.2653%20145.055%2090.704C145.297%2091.1427%20145.619%2091.488%20146.021%2091.74C146.431%2091.992%20146.889%2092.118%20147.393%2092.118ZM153.417%2093V91.46H154.537V93H153.417ZM160.207%2093V86.546H158.709V85.496H160.207V84.824C160.207%2084.3013%20160.324%2083.8627%20160.557%2083.508C160.791%2083.144%20161.099%2082.8687%20161.481%2082.682C161.864%2082.4953%20162.275%2082.402%20162.713%2082.402C162.807%2082.402%20162.914%2082.4113%20163.035%2082.43C163.157%2082.4393%20163.255%2082.4533%20163.329%2082.472V83.424C163.264%2083.4053%20163.175%2083.396%20163.063%2083.396C162.951%2083.3867%20162.872%2083.382%20162.825%2083.382C162.377%2083.382%20162.004%2083.4893%20161.705%2083.704C161.407%2083.9187%20161.257%2084.292%20161.257%2084.824V85.496H163.091V86.546H161.257V93H160.207ZM168.024%2093.168C167.314%2093.168%20166.67%2093%20166.092%2092.664C165.513%2092.3187%20165.051%2091.852%20164.706%2091.264C164.37%2090.6667%20164.202%2089.99%20164.202%2089.234C164.202%2088.4873%20164.37%2087.82%20164.706%2087.232C165.042%2086.644%20165.494%2086.182%20166.064%2085.846C166.642%2085.5007%20167.296%2085.328%20168.024%2085.328C168.752%2085.328%20169.4%2085.496%20169.97%2085.832C170.548%2086.168%20171.001%2086.63%20171.328%2087.218C171.664%2087.806%20171.832%2088.478%20171.832%2089.234C171.832%2089.9993%20171.659%2090.6807%20171.314%2091.278C170.968%2091.866%20170.506%2092.328%20169.928%2092.664C169.358%2093%20168.724%2093.168%20168.024%2093.168ZM168.024%2092.118C168.528%2092.118%20168.98%2091.992%20169.382%2091.74C169.792%2091.488%20170.114%2091.1427%20170.348%2090.704C170.59%2090.2653%20170.712%2089.7753%20170.712%2089.234C170.712%2088.6927%20170.59%2088.2073%20170.348%2087.778C170.114%2087.3487%20169.792%2087.008%20169.382%2086.756C168.98%2086.504%20168.528%2086.378%20168.024%2086.378C167.52%2086.378%20167.062%2086.504%20166.652%2086.756C166.25%2087.008%20165.928%2087.3487%20165.686%2087.778C165.443%2088.2073%20165.322%2088.6927%20165.322%2089.234C165.322%2089.7753%20165.443%2090.2653%20165.686%2090.704C165.928%2091.1427%20166.25%2091.488%20166.652%2091.74C167.062%2091.992%20167.52%2092.118%20168.024%2092.118ZM176.343%2093.168C175.821%2093.168%20175.345%2093.0467%20174.915%2092.804C174.486%2092.552%20174.145%2092.2067%20173.893%2091.768C173.651%2091.32%20173.529%2090.8067%20173.529%2090.228V85.496H174.579V90.102C174.579%2090.5033%20174.659%2090.858%20174.817%2091.166C174.985%2091.4647%20175.214%2091.698%20175.503%2091.866C175.802%2092.034%20176.143%2092.118%20176.525%2092.118C176.908%2092.118%20177.249%2092.034%20177.547%2091.866C177.846%2091.6887%20178.079%2091.4413%20178.247%2091.124C178.415%2090.7973%20178.499%2090.41%20178.499%2089.962V85.496H179.549V93H178.499V91.544L178.737%2091.6C178.56%2092.0853%20178.257%2092.468%20177.827%2092.748C177.398%2093.028%20176.903%2093.168%20176.343%2093.168ZM181.709%2093V85.496H182.759V86.952L182.521%2086.896C182.708%2086.4107%20183.011%2086.028%20183.431%2085.748C183.86%2085.468%20184.355%2085.328%20184.915%2085.328C185.447%2085.328%20185.923%2085.4493%20186.343%2085.692C186.772%2085.9347%20187.108%2086.2707%20187.351%2086.7C187.603%2087.12%20187.729%2087.596%20187.729%2088.128V93H186.679V88.534C186.679%2088.0767%20186.595%2087.6893%20186.427%2087.372C186.268%2087.0547%20186.04%2086.812%20185.741%2086.644C185.452%2086.4667%20185.116%2086.378%20184.733%2086.378C184.35%2086.378%20184.01%2086.4667%20183.711%2086.644C183.412%2086.812%20183.179%2087.0593%20183.011%2087.386C182.843%2087.7033%20182.759%2088.086%20182.759%2088.534V93H181.709ZM193.122%2093.168C192.422%2093.168%20191.792%2093%20191.232%2092.664C190.672%2092.3187%20190.229%2091.852%20189.902%2091.264C189.585%2090.6667%20189.426%2089.9947%20189.426%2089.248C189.426%2088.492%20189.585%2087.82%20189.902%2087.232C190.229%2086.644%20190.668%2086.182%20191.218%2085.846C191.778%2085.5007%20192.413%2085.328%20193.122%2085.328C193.766%2085.328%20194.34%2085.468%20194.844%2085.748C195.348%2086.028%20195.745%2086.406%20196.034%2086.882L195.866%2087.176V82.402H196.916V93H195.866V91.32L196.034%2091.474C195.773%2092.0153%20195.381%2092.4353%20194.858%2092.734C194.345%2093.0233%20193.766%2093.168%20193.122%2093.168ZM193.178%2092.118C193.682%2092.118%20194.135%2091.992%20194.536%2091.74C194.947%2091.488%20195.269%2091.1473%20195.502%2090.718C195.745%2090.2793%20195.866%2089.7893%20195.866%2089.248C195.866%2088.7067%20195.745%2088.2213%20195.502%2087.792C195.269%2087.3533%20194.947%2087.008%20194.536%2086.756C194.135%2086.504%20193.682%2086.378%20193.178%2086.378C192.684%2086.378%20192.236%2086.504%20191.834%2086.756C191.433%2087.008%20191.116%2087.3487%20190.882%2087.778C190.658%2088.2073%20190.546%2088.6973%20190.546%2089.248C190.546%2089.7893%20190.658%2090.2793%20190.882%2090.718C191.116%2091.1473%20191.428%2091.488%20191.82%2091.74C192.222%2091.992%20192.674%2092.118%20193.178%2092.118ZM202.488%2093.168C201.788%2093.168%20201.153%2093%20200.584%2092.664C200.024%2092.3187%20199.581%2091.8473%20199.254%2091.25C198.927%2090.6527%20198.764%2089.976%20198.764%2089.22C198.764%2088.464%20198.923%2087.7967%20199.24%2087.218C199.557%2086.63%20199.987%2086.168%20200.528%2085.832C201.079%2085.496%20201.695%2085.328%20202.376%2085.328C202.917%2085.328%20203.398%2085.4307%20203.818%2085.636C204.247%2085.832%20204.611%2086.1027%20204.91%2086.448C205.209%2086.784%20205.437%2087.1667%20205.596%2087.596C205.755%2088.016%20205.834%2088.45%20205.834%2088.898C205.834%2088.9913%20205.829%2089.0987%20205.82%2089.22C205.811%2089.332%20205.797%2089.4487%20205.778%2089.57H199.436V88.59H205.176L204.672%2089.01C204.756%2088.4967%20204.695%2088.0393%20204.49%2087.638C204.294%2087.2273%20204.009%2086.9053%20203.636%2086.672C203.263%2086.4293%20202.843%2086.308%20202.376%2086.308C201.909%2086.308%20201.475%2086.4293%20201.074%2086.672C200.682%2086.9147%20200.374%2087.2553%20200.15%2087.694C199.926%2088.1233%20199.837%2088.6367%20199.884%2089.234C199.837%2089.8313%20199.931%2090.354%20200.164%2090.802C200.407%2091.2407%20200.733%2091.5813%20201.144%2091.824C201.564%2092.0667%20202.012%2092.188%20202.488%2092.188C203.039%2092.188%20203.501%2092.0573%20203.874%2091.796C204.247%2091.5347%20204.551%2091.208%20204.784%2090.816L205.68%2091.292C205.531%2091.628%20205.302%2091.9407%20204.994%2092.23C204.686%2092.51%20204.317%2092.7387%20203.888%2092.916C203.468%2093.084%20203.001%2093.168%20202.488%2093.168ZM207.685%2093V85.496H208.735V86.728L208.595%2086.546C208.773%2086.1913%20209.039%2085.9113%20209.393%2085.706C209.757%2085.5007%20210.196%2085.398%20210.709%2085.398H211.185V86.448H210.527C209.986%2086.448%20209.552%2086.616%20209.225%2086.952C208.899%2087.288%20208.735%2087.764%20208.735%2088.38V93H207.685Z'%20fill='%23181918'/%3e%3ccircle%20cx='219.5'%20cy='87'%20r='2.5'%20fill='%23181918'/%3e%3cpath%20d='M232.992%2093.168C232.255%2093.168%20231.578%2093.0373%20230.962%2092.776C230.346%2092.5053%20229.809%2092.132%20229.352%2091.656C228.904%2091.1707%20228.554%2090.6013%20228.302%2089.948C228.05%2089.2947%20227.924%2088.576%20227.924%2087.792C227.924%2087.008%20228.05%2086.2893%20228.302%2085.636C228.554%2084.9827%20228.904%2084.4133%20229.352%2083.928C229.809%2083.4427%20230.346%2083.0693%20230.962%2082.808C231.578%2082.5373%20232.255%2082.402%20232.992%2082.402C233.701%2082.402%20234.336%2082.528%20234.896%2082.78C235.465%2083.032%20235.941%2083.3587%20236.324%2083.76C236.716%2084.152%20236.996%2084.5673%20237.164%2085.006L236.156%2085.496C235.895%2084.8613%20235.493%2084.362%20234.952%2083.998C234.411%2083.634%20233.757%2083.452%20232.992%2083.452C232.227%2083.452%20231.545%2083.634%20230.948%2083.998C230.351%2084.362%20229.884%2084.8707%20229.548%2085.524C229.212%2086.168%20229.044%2086.924%20229.044%2087.792C229.044%2088.6507%20229.212%2089.4067%20229.548%2090.06C229.884%2090.7133%20230.351%2091.222%20230.948%2091.586C231.545%2091.9407%20232.227%2092.118%20232.992%2092.118C233.673%2092.118%20234.285%2091.9687%20234.826%2091.67C235.377%2091.3713%20235.811%2090.9653%20236.128%2090.452C236.445%2089.9293%20236.604%2089.332%20236.604%2088.66V88.086L237.108%2088.59H232.992V87.61H237.724V88.478C237.724%2089.1593%20237.603%2089.7893%20237.36%2090.368C237.117%2090.9373%20236.781%2091.432%20236.352%2091.852C235.923%2092.272%20235.419%2092.5987%20234.84%2092.832C234.271%2093.056%20233.655%2093.168%20232.992%2093.168ZM239.576%2093V82.402H240.626V93H239.576ZM246.289%2093.168C245.58%2093.168%20244.936%2093%20244.357%2092.664C243.779%2092.3187%20243.317%2091.852%20242.971%2091.264C242.635%2090.6667%20242.467%2089.99%20242.467%2089.234C242.467%2088.4873%20242.635%2087.82%20242.971%2087.232C243.307%2086.644%20243.76%2086.182%20244.329%2085.846C244.908%2085.5007%20245.561%2085.328%20246.289%2085.328C247.017%2085.328%20247.666%2085.496%20248.235%2085.832C248.814%2086.168%20249.267%2086.63%20249.593%2087.218C249.929%2087.806%20250.097%2088.478%20250.097%2089.234C250.097%2089.9993%20249.925%2090.6807%20249.579%2091.278C249.234%2091.866%20248.772%2092.328%20248.193%2092.664C247.624%2093%20246.989%2093.168%20246.289%2093.168ZM246.289%2092.118C246.793%2092.118%20247.246%2091.992%20247.647%2091.74C248.058%2091.488%20248.38%2091.1427%20248.613%2090.704C248.856%2090.2653%20248.977%2089.7753%20248.977%2089.234C248.977%2088.6927%20248.856%2088.2073%20248.613%2087.778C248.38%2087.3487%20248.058%2087.008%20247.647%2086.756C247.246%2086.504%20246.793%2086.378%20246.289%2086.378C245.785%2086.378%20245.328%2086.504%20244.917%2086.756C244.516%2087.008%20244.194%2087.3487%20243.951%2087.778C243.709%2088.2073%20243.587%2088.6927%20243.587%2089.234C243.587%2089.7753%20243.709%2090.2653%20243.951%2090.704C244.194%2091.1427%20244.516%2091.488%20244.917%2091.74C245.328%2091.992%20245.785%2092.118%20246.289%2092.118ZM255.743%2093.168C255.099%2093.168%20254.516%2093.0233%20253.993%2092.734C253.48%2092.4353%20253.092%2092.0153%20252.831%2091.474L252.999%2091.32V93H251.949V82.402H252.999V87.176L252.831%2086.882C253.13%2086.406%20253.526%2086.028%20254.021%2085.748C254.525%2085.468%20255.099%2085.328%20255.743%2085.328C256.452%2085.328%20257.082%2085.5007%20257.633%2085.846C258.193%2086.182%20258.632%2086.644%20258.949%2087.232C259.276%2087.82%20259.439%2088.492%20259.439%2089.248C259.439%2089.9947%20259.276%2090.6667%20258.949%2091.264C258.632%2091.852%20258.193%2092.3187%20257.633%2092.664C257.082%2093%20256.452%2093.168%20255.743%2093.168ZM255.687%2092.118C256.191%2092.118%20256.639%2091.992%20257.031%2091.74C257.432%2091.488%20257.745%2091.1473%20257.969%2090.718C258.202%2090.2793%20258.319%2089.7893%20258.319%2089.248C258.319%2088.6973%20258.202%2088.2073%20257.969%2087.778C257.745%2087.3487%20257.432%2087.008%20257.031%2086.756C256.639%2086.504%20256.191%2086.378%20255.687%2086.378C255.183%2086.378%20254.726%2086.504%20254.315%2086.756C253.914%2087.008%20253.592%2087.3533%20253.349%2087.792C253.116%2088.2213%20252.999%2088.7067%20252.999%2089.248C252.999%2089.7893%20253.116%2090.2793%20253.349%2090.718C253.592%2091.1473%20253.914%2091.488%20254.315%2091.74C254.726%2091.992%20255.183%2092.118%20255.687%2092.118ZM263.457%2093.168C262.981%2093.168%20262.556%2093.0793%20262.183%2092.902C261.81%2092.7153%20261.516%2092.4633%20261.301%2092.146C261.086%2091.8287%20260.979%2091.4647%20260.979%2091.054C260.979%2090.662%20261.063%2090.3073%20261.231%2089.99C261.399%2089.6633%20261.66%2089.388%20262.015%2089.164C262.37%2088.94%20262.822%2088.7813%20263.373%2088.688L266.313%2088.198V89.15L263.625%2089.598C263.084%2089.6913%20262.692%2089.864%20262.449%2090.116C262.216%2090.368%20262.099%2090.6667%20262.099%2091.012C262.099%2091.348%20262.23%2091.6327%20262.491%2091.866C262.762%2092.0993%20263.107%2092.216%20263.527%2092.216C264.04%2092.216%20264.488%2092.1087%20264.871%2091.894C265.254%2091.67%20265.552%2091.3713%20265.767%2090.998C265.982%2090.6247%20266.089%2090.2093%20266.089%2089.752V87.848C266.089%2087.4%20265.926%2087.036%20265.599%2086.756C265.272%2086.476%20264.848%2086.336%20264.325%2086.336C263.868%2086.336%20263.466%2086.4527%20263.121%2086.686C262.776%2086.91%20262.519%2087.204%20262.351%2087.568L261.399%2087.05C261.539%2086.7327%20261.758%2086.4433%20262.057%2086.182C262.365%2085.9207%20262.715%2085.7153%20263.107%2085.566C263.499%2085.4073%20263.905%2085.328%20264.325%2085.328C264.876%2085.328%20265.361%2085.4353%20265.781%2085.65C266.21%2085.8647%20266.542%2086.1633%20266.775%2086.546C267.018%2086.9193%20267.139%2087.3533%20267.139%2087.848V93H266.089V91.502L266.243%2091.656C266.112%2091.936%20265.907%2092.1927%20265.627%2092.426C265.356%2092.65%20265.034%2092.832%20264.661%2092.972C264.297%2093.1027%20263.896%2093.168%20263.457%2093.168ZM269.299%2093V82.402H270.349V93H269.299ZM273.953%2093L277.761%2082.57H278.965L282.773%2093H281.597L280.701%2090.452H276.039L275.129%2093H273.953ZM276.403%2089.402H280.309L278.195%2083.41H278.531L276.403%2089.402ZM287.124%2093.168C286.424%2093.168%20285.794%2093%20285.234%2092.664C284.674%2092.3187%20284.231%2091.852%20283.904%2091.264C283.587%2090.6667%20283.428%2089.9947%20283.428%2089.248C283.428%2088.492%20283.587%2087.82%20283.904%2087.232C284.231%2086.644%20284.67%2086.182%20285.22%2085.846C285.78%2085.5007%20286.415%2085.328%20287.124%2085.328C287.768%2085.328%20288.342%2085.468%20288.846%2085.748C289.35%2086.028%20289.747%2086.406%20290.036%2086.882L289.868%2087.176V82.402H290.918V93H289.868V91.32L290.036%2091.474C289.775%2092.0153%20289.383%2092.4353%20288.86%2092.734C288.347%2093.0233%20287.768%2093.168%20287.124%2093.168ZM287.18%2092.118C287.684%2092.118%20288.137%2091.992%20288.538%2091.74C288.949%2091.488%20289.271%2091.1473%20289.504%2090.718C289.747%2090.2793%20289.868%2089.7893%20289.868%2089.248C289.868%2088.7067%20289.747%2088.2213%20289.504%2087.792C289.271%2087.3533%20288.949%2087.008%20288.538%2086.756C288.137%2086.504%20287.684%2086.378%20287.18%2086.378C286.686%2086.378%20286.238%2086.504%20285.836%2086.756C285.435%2087.008%20285.118%2087.3487%20284.884%2087.778C284.66%2088.2073%20284.548%2088.6973%20284.548%2089.248C284.548%2089.7893%20284.66%2090.2793%20284.884%2090.718C285.118%2091.1473%20285.43%2091.488%20285.822%2091.74C286.224%2091.992%20286.676%2092.118%20287.18%2092.118ZM293.074%2093V85.496H294.124V86.924L293.956%2086.714C294.161%2086.2753%20294.465%2085.9347%20294.866%2085.692C295.277%2085.4493%20295.725%2085.328%20296.21%2085.328C296.789%2085.328%20297.311%2085.4913%20297.778%2085.818C298.245%2086.1447%20298.576%2086.5693%20298.772%2087.092L298.478%2087.106C298.665%2086.5273%20298.987%2086.0887%20299.444%2085.79C299.911%2085.482%20300.424%2085.328%20300.984%2085.328C301.488%2085.328%20301.95%2085.4493%20302.37%2085.692C302.799%2085.9347%20303.14%2086.2707%20303.392%2086.7C303.653%2087.12%20303.784%2087.596%20303.784%2088.128V93H302.734V88.534C302.734%2088.0767%20302.65%2087.6893%20302.482%2087.372C302.323%2087.0547%20302.104%2086.812%20301.824%2086.644C301.544%2086.4667%20301.222%2086.378%20300.858%2086.378C300.503%2086.378%20300.181%2086.4667%20299.892%2086.644C299.603%2086.812%20299.374%2087.0593%20299.206%2087.386C299.038%2087.7033%20298.954%2088.086%20298.954%2088.534V93H297.904V88.534C297.904%2088.0767%20297.82%2087.6893%20297.652%2087.372C297.493%2087.0547%20297.274%2086.812%20296.994%2086.644C296.714%2086.4667%20296.392%2086.378%20296.028%2086.378C295.664%2086.378%20295.337%2086.4667%20295.048%2086.644C294.768%2086.812%20294.544%2087.0593%20294.376%2087.386C294.208%2087.7033%20294.124%2088.086%20294.124%2088.534V93H293.074ZM305.789%2093V85.496H306.839V93H305.789ZM305.789%2084.11V82.57H306.839V84.11H305.789ZM308.988%2093V85.496H310.038V86.952L309.8%2086.896C309.987%2086.4107%20310.29%2086.028%20310.71%2085.748C311.139%2085.468%20311.634%2085.328%20312.194%2085.328C312.726%2085.328%20313.202%2085.4493%20313.622%2085.692C314.051%2085.9347%20314.387%2086.2707%20314.63%2086.7C314.882%2087.12%20315.008%2087.596%20315.008%2088.128V93H313.958V88.534C313.958%2088.0767%20313.874%2087.6893%20313.706%2087.372C313.547%2087.0547%20313.319%2086.812%20313.02%2086.644C312.731%2086.4667%20312.395%2086.378%20312.012%2086.378C311.629%2086.378%20311.289%2086.4667%20310.99%2086.644C310.691%2086.812%20310.458%2087.0593%20310.29%2087.386C310.122%2087.7033%20310.038%2088.086%20310.038%2088.534V93H308.988Z'%20fill='%23181918'/%3e%3c/g%3e%3cg%20opacity='0.1'%3e%3cpath%20d='M41%2016C41%207.16344%2048.1634%200%2057%200H315C323.837%200%20331%207.16344%20331%2016V111C331%20119.837%20323.837%20127%20315%20127H57C48.1635%20127%2041%20119.837%2041%20111V16Z'%20fill='url(%23paint1_linear_683_56525)'/%3e%3crect%20x='65'%20y='36'%20width='67'%20height='67'%20rx='33.5'%20fill='%231B1C1E'/%3e%3cpath%20d='M92.8552%2078V62.0216H99.5683C100.526%2062.0216%20101.348%2062.1932%20102.035%2062.5363C102.735%2062.8795%20103.272%2063.3657%20103.643%2063.9948C104.029%2064.6096%20104.222%2065.346%20104.222%2066.2039C104.222%2066.9903%20104.015%2067.7052%20103.6%2068.3486C103.2%2068.9777%20102.607%2069.471%20101.82%2069.8285L101.799%2069.0349C102.485%2069.2923%20103.05%2069.6355%20103.493%2070.0644C103.951%2070.4791%20104.294%2070.9652%20104.523%2071.5229C104.751%2072.0662%20104.866%2072.6453%20104.866%2073.2601C104.866%2074.7328%20104.394%2075.891%20103.45%2076.7346C102.507%2077.5782%20101.22%2078%2099.5897%2078H92.8552ZM94.9571%2076.0697H99.6755C100.605%2076.0697%20101.348%2075.8195%20101.906%2075.3191C102.464%2074.8186%20102.743%2074.1394%20102.743%2073.2815C102.743%2072.4236%20102.464%2071.7445%20101.906%2071.244C101.348%2070.7293%20100.605%2070.4719%2099.6755%2070.4719H94.9571V76.0697ZM94.9571%2068.5845H99.5254C100.297%2068.5845%20100.919%2068.3629%20101.391%2067.9197C101.863%2067.4621%20102.099%2066.883%20102.099%2066.1824C102.099%2065.4532%20101.863%2064.8956%20101.391%2064.5095C100.919%2064.1235%20100.297%2063.9304%2099.5254%2063.9304H94.9571V68.5845Z'%20fill='%23FDFDFE'/%3e%3cpath%20d='M157.44%2056V41.1H163.72C164.707%2041.1%20165.547%2041.2733%20166.24%2041.62C166.947%2041.9533%20167.487%2042.4333%20167.86%2043.06C168.247%2043.6733%20168.44%2044.42%20168.44%2045.3C168.44%2045.98%20168.253%2046.62%20167.88%2047.22C167.52%2047.8067%20166.94%2048.2933%20166.14%2048.68V47.42C166.873%2047.7%20167.453%2048.0467%20167.88%2048.46C168.307%2048.8733%20168.607%2049.3333%20168.78%2049.84C168.953%2050.3467%20169.04%2050.88%20169.04%2051.44C169.04%2052.8667%20168.567%2053.9867%20167.62%2054.8C166.687%2055.6%20165.387%2056%20163.72%2056H157.44ZM160.16%2053.6H164C164.707%2053.6%20165.267%2053.4067%20165.68%2053.02C166.107%2052.62%20166.32%2052.0933%20166.32%2051.44C166.32%2050.7867%20166.107%2050.26%20165.68%2049.86C165.267%2049.46%20164.707%2049.26%20164%2049.26H160.16V53.6ZM160.16%2046.88H163.86C164.42%2046.88%20164.867%2046.72%20165.2%2046.4C165.533%2046.0667%20165.7%2045.64%20165.7%2045.12C165.7%2044.6%20165.533%2044.1867%20165.2%2043.88C164.867%2043.5733%20164.42%2043.42%20163.86%2043.42H160.16V46.88ZM176.208%2056.24C175.088%2056.24%20174.108%2055.9867%20173.268%2055.48C172.428%2054.9733%20171.775%2054.2867%20171.308%2053.42C170.841%2052.5533%20170.608%2051.5933%20170.608%2050.54C170.608%2049.4467%20170.841%2048.48%20171.308%2047.64C171.788%2046.7867%20172.435%2046.1133%20173.248%2045.62C174.075%2045.1267%20174.995%2044.88%20176.008%2044.88C176.861%2044.88%20177.608%2045.02%20178.248%2045.3C178.901%2045.58%20179.455%2045.9667%20179.908%2046.46C180.361%2046.9533%20180.708%2047.52%20180.948%2048.16C181.188%2048.7867%20181.308%2049.4667%20181.308%2050.2C181.308%2050.3867%20181.295%2050.58%20181.268%2050.78C181.255%2050.98%20181.221%2051.1533%20181.168%2051.3H172.768V49.3H179.688L178.448%2050.24C178.568%2049.6267%20178.535%2049.08%20178.348%2048.6C178.175%2048.12%20177.881%2047.74%20177.468%2047.46C177.068%2047.18%20176.581%2047.04%20176.008%2047.04C175.461%2047.04%20174.975%2047.18%20174.548%2047.46C174.121%2047.7267%20173.795%2048.1267%20173.568%2048.66C173.355%2049.18%20173.275%2049.8133%20173.328%2050.56C173.275%2051.2267%20173.361%2051.82%20173.588%2052.34C173.828%2052.8467%20174.175%2053.24%20174.628%2053.52C175.095%2053.8%20175.628%2053.94%20176.228%2053.94C176.828%2053.94%20177.335%2053.8133%20177.748%2053.56C178.175%2053.3067%20178.508%2052.9667%20178.748%2052.54L180.868%2053.58C180.655%2054.1%20180.321%2054.56%20179.868%2054.96C179.415%2055.36%20178.875%2055.6733%20178.248%2055.9C177.635%2056.1267%20176.955%2056.24%20176.208%2056.24ZM183.294%2056V45.12H185.754V47.26L185.554%2046.88C185.808%2046.2267%20186.221%2045.7333%20186.794%2045.4C187.381%2045.0533%20188.061%2044.88%20188.834%2044.88C189.634%2044.88%20190.341%2045.0533%20190.954%2045.4C191.581%2045.7467%20192.068%2046.2333%20192.414%2046.86C192.761%2047.4733%20192.934%2048.1867%20192.934%2049V56H190.314V49.62C190.314%2049.14%20190.221%2048.7267%20190.034%2048.38C189.848%2048.0333%20189.588%2047.7667%20189.254%2047.58C188.934%2047.38%20188.554%2047.28%20188.114%2047.28C187.688%2047.28%20187.308%2047.38%20186.974%2047.58C186.641%2047.7667%20186.381%2048.0333%20186.194%2048.38C186.008%2048.7267%20185.914%2049.14%20185.914%2049.62V56H183.294ZM193.65%2060.42C193.476%2060.42%20193.296%2060.4133%20193.11%2060.4C192.923%2060.3867%20192.77%2060.3667%20192.65%2060.34V58.06C192.89%2058.1%20193.13%2058.12%20193.37%2058.12C193.93%2058.12%20194.363%2057.9867%20194.67%2057.72C194.99%2057.4667%20195.15%2057.0733%20195.15%2056.54V45.12H197.77V56.54C197.77%2057.3667%20197.603%2058.0667%20197.27%2058.64C196.936%2059.2267%20196.456%2059.6667%20195.83%2059.96C195.216%2060.2667%20194.49%2060.42%20193.65%2060.42ZM195.15%2043.9V41.1H197.77V43.9H195.15ZM203.489%2056.24C202.729%2056.24%20202.069%2056.1133%20201.509%2055.86C200.949%2055.6067%20200.515%2055.2467%20200.209%2054.78C199.902%2054.3%20199.749%2053.7467%20199.749%2053.12C199.749%2052.52%20199.882%2051.9867%20200.149%2051.52C200.415%2051.04%20200.829%2050.64%20201.389%2050.32C201.949%2050%20202.655%2049.7733%20203.509%2049.64L207.069%2049.06V51.06L204.009%2051.58C203.489%2051.6733%20203.102%2051.84%20202.849%2052.08C202.595%2052.32%20202.469%2052.6333%20202.469%2053.02C202.469%2053.3933%20202.609%2053.6933%20202.889%2053.92C203.182%2054.1333%20203.542%2054.24%20203.969%2054.24C204.515%2054.24%20204.995%2054.1267%20205.409%2053.9C205.835%2053.66%20206.162%2053.3333%20206.389%2052.92C206.629%2052.5067%20206.749%2052.0533%20206.749%2051.56V48.76C206.749%2048.2933%20206.562%2047.9067%20206.189%2047.6C205.829%2047.28%20205.349%2047.12%20204.749%2047.12C204.189%2047.12%20203.689%2047.2733%20203.249%2047.58C202.822%2047.8733%20202.509%2048.2667%20202.309%2048.76L200.169%2047.72C200.382%2047.1467%20200.715%2046.6533%20201.169%2046.24C201.635%2045.8133%20202.182%2045.48%20202.809%2045.24C203.435%2045%20204.115%2044.88%20204.849%2044.88C205.742%2044.88%20206.529%2045.0467%20207.209%2045.38C207.889%2045.7%20208.415%2046.1533%20208.789%2046.74C209.175%2047.3133%20209.369%2047.9867%20209.369%2048.76V56H206.889V54.14L207.449%2054.1C207.169%2054.5667%20206.835%2054.96%20206.449%2055.28C206.062%2055.5867%20205.622%2055.8267%20205.129%2056C204.635%2056.16%20204.089%2056.24%20203.489%2056.24ZM211.79%2056V45.12H214.25V47.64L213.97%2047.22C214.17%2046.4333%20214.57%2045.8467%20215.17%2045.46C215.77%2045.0733%20216.477%2044.88%20217.29%2044.88C218.184%2044.88%20218.97%2045.1133%20219.65%2045.58C220.33%2046.0467%20220.77%2046.66%20220.97%2047.42L220.23%2047.48C220.564%2046.6133%20221.064%2045.9667%20221.73%2045.54C222.397%2045.1%20223.164%2044.88%20224.03%2044.88C224.804%2044.88%20225.49%2045.0533%20226.09%2045.4C226.704%2045.7467%20227.184%2046.2333%20227.53%2046.86C227.877%2047.4733%20228.05%2048.1867%20228.05%2049V56H225.43V49.62C225.43%2049.14%20225.344%2048.7267%20225.17%2048.38C224.997%2048.0333%20224.757%2047.7667%20224.45%2047.58C224.144%2047.38%20223.77%2047.28%20223.33%2047.28C222.917%2047.28%20222.55%2047.38%20222.23%2047.58C221.91%2047.7667%20221.664%2048.0333%20221.49%2048.38C221.317%2048.7267%20221.23%2049.14%20221.23%2049.62V56H218.61V49.62C218.61%2049.14%20218.524%2048.7267%20218.35%2048.38C218.177%2048.0333%20217.93%2047.7667%20217.61%2047.58C217.304%2047.38%20216.937%2047.28%20216.51%2047.28C216.097%2047.28%20215.73%2047.38%20215.41%2047.58C215.09%2047.7667%20214.844%2048.0333%20214.67%2048.38C214.497%2048.7267%20214.41%2049.14%20214.41%2049.62V56H211.79ZM230.267%2056V45.12H232.887V56H230.267ZM230.267%2043.9V41.1H232.887V43.9H230.267ZM235.306%2056V45.12H237.766V47.26L237.566%2046.88C237.819%2046.2267%20238.233%2045.7333%20238.806%2045.4C239.393%2045.0533%20240.073%2044.88%20240.846%2044.88C241.646%2044.88%20242.353%2045.0533%20242.966%2045.4C243.593%2045.7467%20244.079%2046.2333%20244.426%2046.86C244.773%2047.4733%20244.946%2048.1867%20244.946%2049V56H242.326V49.62C242.326%2049.14%20242.233%2048.7267%20242.046%2048.38C241.859%2048.0333%20241.599%2047.7667%20241.266%2047.58C240.946%2047.38%20240.566%2047.28%20240.126%2047.28C239.699%2047.28%20239.319%2047.38%20238.986%2047.58C238.653%2047.7667%20238.393%2048.0333%20238.206%2048.38C238.019%2048.7267%20237.926%2049.14%20237.926%2049.62V56H235.306Z'%20fill='%23181918'/%3e%3cpath%20d='M160.872%2079.168C160.228%2079.168%20159.645%2079.0233%20159.122%2078.734C158.609%2078.4353%20158.221%2078.0153%20157.96%2077.474L158.128%2077.32V79H157.078V68.402H158.128V73.176L157.96%2072.882C158.259%2072.406%20158.655%2072.028%20159.15%2071.748C159.654%2071.468%20160.228%2071.328%20160.872%2071.328C161.581%2071.328%20162.211%2071.5007%20162.762%2071.846C163.322%2072.182%20163.761%2072.644%20164.078%2073.232C164.405%2073.82%20164.568%2074.492%20164.568%2075.248C164.568%2075.9947%20164.405%2076.6667%20164.078%2077.264C163.761%2077.852%20163.322%2078.3187%20162.762%2078.664C162.211%2079%20161.581%2079.168%20160.872%2079.168ZM160.816%2078.118C161.32%2078.118%20161.768%2077.992%20162.16%2077.74C162.561%2077.488%20162.874%2077.1473%20163.098%2076.718C163.331%2076.2793%20163.448%2075.7893%20163.448%2075.248C163.448%2074.6973%20163.331%2074.2073%20163.098%2073.778C162.874%2073.3487%20162.561%2073.008%20162.16%2072.756C161.768%2072.504%20161.32%2072.378%20160.816%2072.378C160.312%2072.378%20159.855%2072.504%20159.444%2072.756C159.043%2073.008%20158.721%2073.3533%20158.478%2073.792C158.245%2074.2213%20158.128%2074.7067%20158.128%2075.248C158.128%2075.7893%20158.245%2076.2793%20158.478%2076.718C158.721%2077.1473%20159.043%2077.488%20159.444%2077.74C159.855%2077.992%20160.312%2078.118%20160.816%2078.118ZM169.832%2079.168C169.132%2079.168%20168.497%2079%20167.928%2078.664C167.368%2078.3187%20166.925%2077.8473%20166.598%2077.25C166.271%2076.6527%20166.108%2075.976%20166.108%2075.22C166.108%2074.464%20166.267%2073.7967%20166.584%2073.218C166.901%2072.63%20167.331%2072.168%20167.872%2071.832C168.423%2071.496%20169.039%2071.328%20169.72%2071.328C170.261%2071.328%20170.742%2071.4307%20171.162%2071.636C171.591%2071.832%20171.955%2072.1027%20172.254%2072.448C172.553%2072.784%20172.781%2073.1667%20172.94%2073.596C173.099%2074.016%20173.178%2074.45%20173.178%2074.898C173.178%2074.9913%20173.173%2075.0987%20173.164%2075.22C173.155%2075.332%20173.141%2075.4487%20173.122%2075.57H166.78V74.59H172.52L172.016%2075.01C172.1%2074.4967%20172.039%2074.0393%20171.834%2073.638C171.638%2073.2273%20171.353%2072.9053%20170.98%2072.672C170.607%2072.4293%20170.187%2072.308%20169.72%2072.308C169.253%2072.308%20168.819%2072.4293%20168.418%2072.672C168.026%2072.9147%20167.718%2073.2553%20167.494%2073.694C167.27%2074.1233%20167.181%2074.6367%20167.228%2075.234C167.181%2075.8313%20167.275%2076.354%20167.508%2076.802C167.751%2077.2407%20168.077%2077.5813%20168.488%2077.824C168.908%2078.0667%20169.356%2078.188%20169.832%2078.188C170.383%2078.188%20170.845%2078.0573%20171.218%2077.796C171.591%2077.5347%20171.895%2077.208%20172.128%2076.816L173.024%2077.292C172.875%2077.628%20172.646%2077.9407%20172.338%2078.23C172.03%2078.51%20171.661%2078.7387%20171.232%2078.916C170.812%2079.084%20170.345%2079.168%20169.832%2079.168ZM175.029%2079V71.496H176.079V72.952L175.841%2072.896C176.028%2072.4107%20176.331%2072.028%20176.751%2071.748C177.181%2071.468%20177.675%2071.328%20178.235%2071.328C178.767%2071.328%20179.243%2071.4493%20179.663%2071.692C180.093%2071.9347%20180.429%2072.2707%20180.671%2072.7C180.923%2073.12%20181.049%2073.596%20181.049%2074.128V79H179.999V74.534C179.999%2074.0767%20179.915%2073.6893%20179.747%2073.372C179.589%2073.0547%20179.36%2072.812%20179.061%2072.644C178.772%2072.4667%20178.436%2072.378%20178.053%2072.378C177.671%2072.378%20177.33%2072.4667%20177.031%2072.644C176.733%2072.812%20176.499%2073.0593%20176.331%2073.386C176.163%2073.7033%20176.079%2074.086%20176.079%2074.534V79H175.029ZM188.725%2081.898C187.903%2081.898%20187.138%2081.7487%20186.429%2081.45C185.729%2081.1607%20185.113%2080.75%20184.581%2080.218C184.049%2079.686%20183.633%2079.07%20183.335%2078.37C183.045%2077.6607%20182.901%2076.9%20182.901%2076.088C182.901%2075.276%20183.05%2074.52%20183.349%2073.82C183.647%2073.12%20184.058%2072.5087%20184.581%2071.986C185.113%2071.4633%20185.733%2071.0573%20186.443%2070.768C187.152%2070.4693%20187.913%2070.32%20188.725%2070.32C189.565%2070.32%20190.339%2070.4787%20191.049%2070.796C191.758%2071.104%20192.369%2071.5287%20192.883%2072.07C193.405%2072.602%20193.807%2073.2087%20194.087%2073.89C194.376%2074.5713%20194.521%2075.2853%20194.521%2076.032C194.521%2076.62%20194.427%2077.138%20194.241%2077.586C194.063%2078.0247%20193.802%2078.37%20193.457%2078.622C193.111%2078.874%20192.696%2079%20192.211%2079C191.921%2079%20191.646%2078.9487%20191.385%2078.846C191.123%2078.734%20190.899%2078.58%20190.713%2078.384C190.535%2078.1787%20190.414%2077.936%20190.349%2077.656L190.573%2077.838C190.423%2078.09%20190.237%2078.3047%20190.013%2078.482C189.798%2078.65%20189.555%2078.7807%20189.285%2078.874C189.014%2078.958%20188.72%2079%20188.403%2079C187.861%2079%20187.371%2078.8693%20186.933%2078.608C186.503%2078.3467%20186.163%2077.992%20185.911%2077.544C185.659%2077.096%20185.533%2076.5873%20185.533%2076.018C185.533%2075.4487%20185.659%2074.94%20185.911%2074.492C186.163%2074.044%20186.503%2073.6893%20186.933%2073.428C187.371%2073.1573%20187.861%2073.022%20188.403%2073.022C188.86%2073.022%20189.275%2073.1153%20189.649%2073.302C190.031%2073.4887%20190.335%2073.75%20190.559%2074.086L190.461%2074.254V73.162H191.371V77.026C191.371%2077.3713%20191.445%2077.6233%20191.595%2077.782C191.753%2077.9407%20191.963%2078.02%20192.225%2078.02C192.617%2078.02%20192.92%2077.8567%20193.135%2077.53C193.359%2077.2033%20193.471%2076.7133%20193.471%2076.06C193.471%2075.388%20193.354%2074.7627%20193.121%2074.184C192.887%2073.6053%20192.561%2073.1013%20192.141%2072.672C191.721%2072.2427%20191.221%2071.9067%20190.643%2071.664C190.064%2071.4213%20189.425%2071.3%20188.725%2071.3C188.043%2071.3%20187.409%2071.4213%20186.821%2071.664C186.242%2071.8973%20185.738%2072.2287%20185.309%2072.658C184.879%2073.0873%20184.543%2073.5913%20184.301%2074.17C184.067%2074.7487%20183.951%2075.3833%20183.951%2076.074C183.951%2076.746%20184.063%2077.376%20184.287%2077.964C184.52%2078.5427%20184.847%2079.0513%20185.267%2079.49C185.696%2079.938%20186.205%2080.288%20186.793%2080.54C187.381%2080.792%20188.034%2080.918%20188.753%2080.918C189.173%2080.918%20189.579%2080.8713%20189.971%2080.778C190.363%2080.694%20190.717%2080.5633%20191.035%2080.386L191.483%2081.226C190.689%2081.674%20189.77%2081.898%20188.725%2081.898ZM188.445%2078.02C188.809%2078.02%20189.131%2077.9313%20189.411%2077.754C189.691%2077.5767%20189.91%2077.3387%20190.069%2077.04C190.237%2076.732%20190.321%2076.3867%20190.321%2076.004C190.321%2075.4253%20190.143%2074.954%20189.789%2074.59C189.434%2074.2167%20188.986%2074.03%20188.445%2074.03C188.09%2074.03%20187.768%2074.1187%20187.479%2074.296C187.199%2074.464%20186.979%2074.6973%20186.821%2074.996C186.662%2075.2947%20186.583%2075.6353%20186.583%2076.018C186.583%2076.3913%20186.662%2076.732%20186.821%2077.04C186.989%2077.3387%20187.213%2077.5767%20187.493%2077.754C187.773%2077.9313%20188.09%2078.02%20188.445%2078.02ZM198.661%2079.168C197.942%2079.168%20197.312%2078.986%20196.771%2078.622C196.229%2078.258%20195.837%2077.7633%20195.595%2077.138L196.477%2076.718C196.691%2077.1753%20196.99%2077.5393%20197.373%2077.81C197.765%2078.0807%20198.194%2078.216%20198.661%2078.216C199.109%2078.216%20199.487%2078.1087%20199.795%2077.894C200.103%2077.67%20200.257%2077.3807%20200.257%2077.026C200.257%2076.7647%20200.182%2076.5593%20200.033%2076.41C199.883%2076.2513%20199.711%2076.13%20199.515%2076.046C199.319%2075.962%20199.146%2075.9013%20198.997%2075.864L197.919%2075.556C197.228%2075.36%20196.729%2075.0847%20196.421%2074.73C196.113%2074.3753%20195.959%2073.9647%20195.959%2073.498C195.959%2073.0593%20196.071%2072.6767%20196.295%2072.35C196.519%2072.0233%20196.822%2071.7713%20197.205%2071.594C197.587%2071.4167%20198.012%2071.328%20198.479%2071.328C199.113%2071.328%20199.687%2071.496%20200.201%2071.832C200.723%2072.1587%20201.092%2072.616%20201.307%2073.204L200.411%2073.624C200.224%2073.204%20199.953%2072.8773%20199.599%2072.644C199.253%2072.4013%20198.866%2072.28%20198.437%2072.28C198.017%2072.28%20197.681%2072.3873%20197.429%2072.602C197.177%2072.8167%20197.051%2073.0873%20197.051%2073.414C197.051%2073.666%20197.116%2073.8667%20197.247%2074.016C197.377%2074.1653%20197.527%2074.2773%20197.695%2074.352C197.872%2074.4267%20198.026%2074.4827%20198.157%2074.52L199.403%2074.884C200.009%2075.0613%20200.481%2075.3367%20200.817%2075.71C201.162%2076.0833%20201.335%2076.522%20201.335%2077.026C201.335%2077.4367%20201.218%2077.8053%20200.985%2078.132C200.761%2078.4587%20200.448%2078.7153%20200.047%2078.902C199.645%2079.0793%20199.183%2079.168%20198.661%2079.168ZM203.18%2079V68.402H204.23V72.952L203.992%2072.896C204.178%2072.4107%20204.482%2072.028%20204.902%2071.748C205.331%2071.468%20205.826%2071.328%20206.386%2071.328C206.918%2071.328%20207.394%2071.4493%20207.814%2071.692C208.243%2071.9347%20208.579%2072.2707%20208.822%2072.7C209.074%2073.12%20209.2%2073.596%20209.2%2074.128V79H208.15V74.534C208.15%2074.0767%20208.066%2073.6893%20207.898%2073.372C207.73%2073.0547%20207.496%2072.812%20207.198%2072.644C206.908%2072.4667%20206.577%2072.378%20206.204%2072.378C205.83%2072.378%20205.494%2072.4667%20205.196%2072.644C204.897%2072.812%20204.659%2073.0593%20204.482%2073.386C204.314%2073.7033%20204.23%2074.086%20204.23%2074.534V79H203.18ZM214.621%2079.168C213.921%2079.168%20213.286%2079%20212.717%2078.664C212.157%2078.3187%20211.714%2077.8473%20211.387%2077.25C211.06%2076.6527%20210.897%2075.976%20210.897%2075.22C210.897%2074.464%20211.056%2073.7967%20211.373%2073.218C211.69%2072.63%20212.12%2072.168%20212.661%2071.832C213.212%2071.496%20213.828%2071.328%20214.509%2071.328C215.05%2071.328%20215.531%2071.4307%20215.951%2071.636C216.38%2071.832%20216.744%2072.1027%20217.043%2072.448C217.342%2072.784%20217.57%2073.1667%20217.729%2073.596C217.888%2074.016%20217.967%2074.45%20217.967%2074.898C217.967%2074.9913%20217.962%2075.0987%20217.953%2075.22C217.944%2075.332%20217.93%2075.4487%20217.911%2075.57H211.569V74.59H217.309L216.805%2075.01C216.889%2074.4967%20216.828%2074.0393%20216.623%2073.638C216.427%2073.2273%20216.142%2072.9053%20215.769%2072.672C215.396%2072.4293%20214.976%2072.308%20214.509%2072.308C214.042%2072.308%20213.608%2072.4293%20213.207%2072.672C212.815%2072.9147%20212.507%2073.2553%20212.283%2073.694C212.059%2074.1233%20211.97%2074.6367%20212.017%2075.234C211.97%2075.8313%20212.064%2076.354%20212.297%2076.802C212.54%2077.2407%20212.866%2077.5813%20213.277%2077.824C213.697%2078.0667%20214.145%2078.188%20214.621%2078.188C215.172%2078.188%20215.634%2078.0573%20216.007%2077.796C216.38%2077.5347%20216.684%2077.208%20216.917%2076.816L217.813%2077.292C217.664%2077.628%20217.435%2077.9407%20217.127%2078.23C216.819%2078.51%20216.45%2078.7387%20216.021%2078.916C215.601%2079.084%20215.134%2079.168%20214.621%2079.168ZM219.818%2079V68.402H220.868V75.822L220.42%2075.752L224.634%2071.496H225.992L223.052%2074.506L226.258%2079H224.998L221.988%2074.842L222.66%2074.898L220.518%2077.11L220.868%2076.242V79H219.818ZM230.767%2079.168C230.067%2079.168%20229.433%2079%20228.863%2078.664C228.303%2078.3187%20227.86%2077.8473%20227.533%2077.25C227.207%2076.6527%20227.043%2075.976%20227.043%2075.22C227.043%2074.464%20227.202%2073.7967%20227.519%2073.218C227.837%2072.63%20228.266%2072.168%20228.807%2071.832C229.358%2071.496%20229.974%2071.328%20230.655%2071.328C231.197%2071.328%20231.677%2071.4307%20232.097%2071.636C232.527%2071.832%20232.891%2072.1027%20233.189%2072.448C233.488%2072.784%20233.717%2073.1667%20233.875%2073.596C234.034%2074.016%20234.113%2074.45%20234.113%2074.898C234.113%2074.9913%20234.109%2075.0987%20234.099%2075.22C234.09%2075.332%20234.076%2075.4487%20234.057%2075.57H227.715V74.59H233.455L232.951%2075.01C233.035%2074.4967%20232.975%2074.0393%20232.769%2073.638C232.573%2073.2273%20232.289%2072.9053%20231.915%2072.672C231.542%2072.4293%20231.122%2072.308%20230.655%2072.308C230.189%2072.308%20229.755%2072.4293%20229.353%2072.672C228.961%2072.9147%20228.653%2073.2553%20228.429%2073.694C228.205%2074.1233%20228.117%2074.6367%20228.163%2075.234C228.117%2075.8313%20228.21%2076.354%20228.443%2076.802C228.686%2077.2407%20229.013%2077.5813%20229.423%2077.824C229.843%2078.0667%20230.291%2078.188%20230.767%2078.188C231.318%2078.188%20231.78%2078.0573%20232.153%2077.796C232.527%2077.5347%20232.83%2077.208%20233.063%2076.816L233.959%2077.292C233.81%2077.628%20233.581%2077.9407%20233.273%2078.23C232.965%2078.51%20232.597%2078.7387%20232.167%2078.916C231.747%2079.084%20231.281%2079.168%20230.767%2079.168ZM235.965%2079V68.402H237.015V79H235.965ZM239.528%2079V77.46H240.648V79H239.528ZM245.34%2079.168C244.864%2079.168%20244.439%2079.0793%20244.066%2078.902C243.692%2078.7153%20243.398%2078.4633%20243.184%2078.146C242.969%2077.8287%20242.862%2077.4647%20242.862%2077.054C242.862%2076.662%20242.946%2076.3073%20243.114%2075.99C243.282%2075.6633%20243.543%2075.388%20243.898%2075.164C244.252%2074.94%20244.705%2074.7813%20245.256%2074.688L248.196%2074.198V75.15L245.508%2075.598C244.966%2075.6913%20244.574%2075.864%20244.332%2076.116C244.098%2076.368%20243.982%2076.6667%20243.982%2077.012C243.982%2077.348%20244.112%2077.6327%20244.374%2077.866C244.644%2078.0993%20244.99%2078.216%20245.41%2078.216C245.923%2078.216%20246.371%2078.1087%20246.754%2077.894C247.136%2077.67%20247.435%2077.3713%20247.65%2076.998C247.864%2076.6247%20247.972%2076.2093%20247.972%2075.752V73.848C247.972%2073.4%20247.808%2073.036%20247.482%2072.756C247.155%2072.476%20246.73%2072.336%20246.208%2072.336C245.75%2072.336%20245.349%2072.4527%20245.004%2072.686C244.658%2072.91%20244.402%2073.204%20244.234%2073.568L243.282%2073.05C243.422%2072.7327%20243.641%2072.4433%20243.94%2072.182C244.248%2071.9207%20244.598%2071.7153%20244.99%2071.566C245.382%2071.4073%20245.788%2071.328%20246.208%2071.328C246.758%2071.328%20247.244%2071.4353%20247.664%2071.65C248.093%2071.8647%20248.424%2072.1633%20248.658%2072.546C248.9%2072.9193%20249.022%2073.3533%20249.022%2073.848V79H247.972V77.502L248.126%2077.656C247.995%2077.936%20247.79%2078.1927%20247.51%2078.426C247.239%2078.65%20246.917%2078.832%20246.544%2078.972C246.18%2079.1027%20245.778%2079.168%20245.34%2079.168ZM251.952%2079V72.546H250.454V71.496H251.952V70.824C251.952%2070.3013%20252.068%2069.8627%20252.302%2069.508C252.535%2069.144%20252.843%2068.8687%20253.226%2068.682C253.608%2068.4953%20254.019%2068.402%20254.458%2068.402C254.551%2068.402%20254.658%2068.4113%20254.78%2068.43C254.901%2068.4393%20254.999%2068.4533%20255.074%2068.472V69.424C255.008%2069.4053%20254.92%2069.396%20254.808%2069.396C254.696%2069.3867%20254.616%2069.382%20254.57%2069.382C254.122%2069.382%20253.748%2069.4893%20253.45%2069.704C253.151%2069.9187%20253.002%2070.292%20253.002%2070.824V71.496H254.836V72.546H253.002V79H251.952ZM256.541%2079V71.496H257.591V72.728L257.451%2072.546C257.628%2072.1913%20257.894%2071.9113%20258.249%2071.706C258.613%2071.5007%20259.052%2071.398%20259.565%2071.398H260.041V72.448H259.383C258.842%2072.448%20258.408%2072.616%20258.081%2072.952C257.754%2073.288%20257.591%2073.764%20257.591%2074.38V79H256.541ZM261.271%2079V71.496H262.321V79H261.271ZM261.271%2070.11V68.57H262.321V70.11H261.271ZM267.901%2079.168C267.163%2079.168%20266.515%2078.9953%20265.955%2078.65C265.395%2078.3047%20264.956%2077.838%20264.639%2077.25C264.321%2076.6527%20264.163%2075.9807%20264.163%2075.234C264.163%2074.4873%20264.321%2073.82%20264.639%2073.232C264.956%2072.644%20265.395%2072.182%20265.955%2071.846C266.515%2071.5007%20267.163%2071.328%20267.901%2071.328C268.367%2071.328%20268.806%2071.412%20269.217%2071.58C269.627%2071.748%20269.991%2071.9767%20270.309%2072.266C270.626%2072.546%20270.864%2072.8727%20271.023%2073.246L270.071%2073.736C269.884%2073.3347%20269.599%2073.008%20269.217%2072.756C268.834%2072.504%20268.395%2072.378%20267.901%2072.378C267.406%2072.378%20266.958%2072.504%20266.557%2072.756C266.165%2072.9987%20265.852%2073.3393%20265.619%2073.778C265.395%2074.2073%20265.283%2074.6973%20265.283%2075.248C265.283%2075.7893%20265.395%2076.2793%20265.619%2076.718C265.852%2077.1473%20266.165%2077.488%20266.557%2077.74C266.958%2077.992%20267.406%2078.118%20267.901%2078.118C268.395%2078.118%20268.829%2077.992%20269.203%2077.74C269.585%2077.488%20269.875%2077.152%20270.071%2076.732L271.023%2077.25C270.864%2077.614%20270.626%2077.9407%20270.309%2078.23C269.991%2078.5193%20269.627%2078.748%20269.217%2078.916C268.806%2079.084%20268.367%2079.168%20267.901%2079.168ZM274.898%2079.168C274.422%2079.168%20273.998%2079.0793%20273.624%2078.902C273.251%2078.7153%20272.957%2078.4633%20272.742%2078.146C272.528%2077.8287%20272.42%2077.4647%20272.42%2077.054C272.42%2076.662%20272.504%2076.3073%20272.672%2075.99C272.84%2075.6633%20273.102%2075.388%20273.456%2075.164C273.811%2074.94%20274.264%2074.7813%20274.814%2074.688L277.754%2074.198V75.15L275.066%2075.598C274.525%2075.6913%20274.133%2075.864%20273.89%2076.116C273.657%2076.368%20273.54%2076.6667%20273.54%2077.012C273.54%2077.348%20273.671%2077.6327%20273.932%2077.866C274.203%2078.0993%20274.548%2078.216%20274.968%2078.216C275.482%2078.216%20275.93%2078.1087%20276.312%2077.894C276.695%2077.67%20276.994%2077.3713%20277.208%2076.998C277.423%2076.6247%20277.53%2076.2093%20277.53%2075.752V73.848C277.53%2073.4%20277.367%2073.036%20277.04%2072.756C276.714%2072.476%20276.289%2072.336%20275.766%2072.336C275.309%2072.336%20274.908%2072.4527%20274.562%2072.686C274.217%2072.91%20273.96%2073.204%20273.792%2073.568L272.84%2073.05C272.98%2072.7327%20273.2%2072.4433%20273.498%2072.182C273.806%2071.9207%20274.156%2071.7153%20274.548%2071.566C274.94%2071.4073%20275.346%2071.328%20275.766%2071.328C276.317%2071.328%20276.802%2071.4353%20277.222%2071.65C277.652%2071.8647%20277.983%2072.1633%20278.216%2072.546C278.459%2072.9193%20278.58%2073.3533%20278.58%2073.848V79H277.53V77.502L277.684%2077.656C277.554%2077.936%20277.348%2078.1927%20277.068%2078.426C276.798%2078.65%20276.476%2078.832%20276.102%2078.972C275.738%2079.1027%20275.337%2079.168%20274.898%2079.168Z'%20fill='%23181918'/%3e%3cpath%20d='M161.992%20100.168C161.255%20100.168%20160.578%20100.037%20159.962%2099.776C159.346%2099.5053%20158.809%2099.132%20158.352%2098.656C157.904%2098.1707%20157.554%2097.6013%20157.302%2096.948C157.05%2096.2947%20156.924%2095.576%20156.924%2094.792C156.924%2094.008%20157.05%2093.2893%20157.302%2092.636C157.554%2091.9827%20157.904%2091.4133%20158.352%2090.928C158.809%2090.4427%20159.346%2090.0693%20159.962%2089.808C160.578%2089.5373%20161.255%2089.402%20161.992%2089.402C162.701%2089.402%20163.336%2089.528%20163.896%2089.78C164.465%2090.032%20164.941%2090.3587%20165.324%2090.76C165.716%2091.152%20165.996%2091.5673%20166.164%2092.006L165.114%2092.468C164.853%2091.8613%20164.451%2091.376%20163.91%2091.012C163.378%2090.6387%20162.739%2090.452%20161.992%2090.452C161.227%2090.452%20160.545%2090.634%20159.948%2090.998C159.351%2091.362%20158.884%2091.8707%20158.548%2092.524C158.212%2093.168%20158.044%2093.924%20158.044%2094.792C158.044%2095.6507%20158.212%2096.4067%20158.548%2097.06C158.884%2097.7133%20159.351%2098.222%20159.948%2098.586C160.545%2098.9407%20161.227%2099.118%20161.992%2099.118C162.739%2099.118%20163.378%2098.936%20163.91%2098.572C164.451%2098.208%20164.853%2097.7227%20165.114%2097.116L166.164%2097.578C165.996%2098.0073%20165.716%2098.4227%20165.324%2098.824C164.941%2099.216%20164.465%2099.538%20163.896%2099.79C163.336%20100.042%20162.701%20100.168%20161.992%20100.168ZM171.393%20100.168C170.683%20100.168%20170.039%20100%20169.461%2099.664C168.882%2099.3187%20168.42%2098.852%20168.075%2098.264C167.739%2097.6667%20167.571%2096.99%20167.571%2096.234C167.571%2095.4873%20167.739%2094.82%20168.075%2094.232C168.411%2093.644%20168.863%2093.182%20169.433%2092.846C170.011%2092.5007%20170.665%2092.328%20171.393%2092.328C172.121%2092.328%20172.769%2092.496%20173.339%2092.832C173.917%2093.168%20174.37%2093.63%20174.697%2094.218C175.033%2094.806%20175.201%2095.478%20175.201%2096.234C175.201%2096.9993%20175.028%2097.6807%20174.683%2098.278C174.337%2098.866%20173.875%2099.328%20173.297%2099.664C172.727%20100%20172.093%20100.168%20171.393%20100.168ZM171.393%2099.118C171.897%2099.118%20172.349%2098.992%20172.751%2098.74C173.161%2098.488%20173.483%2098.1427%20173.717%2097.704C173.959%2097.2653%20174.081%2096.7753%20174.081%2096.234C174.081%2095.6927%20173.959%2095.2073%20173.717%2094.778C173.483%2094.3487%20173.161%2094.008%20172.751%2093.756C172.349%2093.504%20171.897%2093.378%20171.393%2093.378C170.889%2093.378%20170.431%2093.504%20170.021%2093.756C169.619%2094.008%20169.297%2094.3487%20169.055%2094.778C168.812%2095.2073%20168.691%2095.6927%20168.691%2096.234C168.691%2096.7753%20168.812%2097.2653%20169.055%2097.704C169.297%2098.1427%20169.619%2098.488%20170.021%2098.74C170.431%2098.992%20170.889%2099.118%20171.393%2099.118ZM177.417%20100V98.46H178.537V100H177.417ZM184.207%20100V93.546H182.709V92.496H184.207V91.824C184.207%2091.3013%20184.324%2090.8627%20184.557%2090.508C184.791%2090.144%20185.099%2089.8687%20185.481%2089.682C185.864%2089.4953%20186.275%2089.402%20186.713%2089.402C186.807%2089.402%20186.914%2089.4113%20187.035%2089.43C187.157%2089.4393%20187.255%2089.4533%20187.329%2089.472V90.424C187.264%2090.4053%20187.175%2090.396%20187.063%2090.396C186.951%2090.3867%20186.872%2090.382%20186.825%2090.382C186.377%2090.382%20186.004%2090.4893%20185.705%2090.704C185.407%2090.9187%20185.257%2091.292%20185.257%2091.824V92.496H187.091V93.546H185.257V100H184.207ZM192.024%20100.168C191.314%20100.168%20190.67%20100%20190.092%2099.664C189.513%2099.3187%20189.051%2098.852%20188.706%2098.264C188.37%2097.6667%20188.202%2096.99%20188.202%2096.234C188.202%2095.4873%20188.37%2094.82%20188.706%2094.232C189.042%2093.644%20189.494%2093.182%20190.064%2092.846C190.642%2092.5007%20191.296%2092.328%20192.024%2092.328C192.752%2092.328%20193.4%2092.496%20193.97%2092.832C194.548%2093.168%20195.001%2093.63%20195.328%2094.218C195.664%2094.806%20195.832%2095.478%20195.832%2096.234C195.832%2096.9993%20195.659%2097.6807%20195.314%2098.278C194.968%2098.866%20194.506%2099.328%20193.928%2099.664C193.358%20100%20192.724%20100.168%20192.024%20100.168ZM192.024%2099.118C192.528%2099.118%20192.98%2098.992%20193.382%2098.74C193.792%2098.488%20194.114%2098.1427%20194.348%2097.704C194.59%2097.2653%20194.712%2096.7753%20194.712%2096.234C194.712%2095.6927%20194.59%2095.2073%20194.348%2094.778C194.114%2094.3487%20193.792%2094.008%20193.382%2093.756C192.98%2093.504%20192.528%2093.378%20192.024%2093.378C191.52%2093.378%20191.062%2093.504%20190.652%2093.756C190.25%2094.008%20189.928%2094.3487%20189.686%2094.778C189.443%2095.2073%20189.322%2095.6927%20189.322%2096.234C189.322%2096.7753%20189.443%2097.2653%20189.686%2097.704C189.928%2098.1427%20190.25%2098.488%20190.652%2098.74C191.062%2098.992%20191.52%2099.118%20192.024%2099.118ZM200.343%20100.168C199.821%20100.168%20199.345%20100.047%20198.915%2099.804C198.486%2099.552%20198.145%2099.2067%20197.893%2098.768C197.651%2098.32%20197.529%2097.8067%20197.529%2097.228V92.496H198.579V97.102C198.579%2097.5033%20198.659%2097.858%20198.817%2098.166C198.985%2098.4647%20199.214%2098.698%20199.503%2098.866C199.802%2099.034%20200.143%2099.118%20200.525%2099.118C200.908%2099.118%20201.249%2099.034%20201.547%2098.866C201.846%2098.6887%20202.079%2098.4413%20202.247%2098.124C202.415%2097.7973%20202.499%2097.41%20202.499%2096.962V92.496H203.549V100H202.499V98.544L202.737%2098.6C202.56%2099.0853%20202.257%2099.468%20201.827%2099.748C201.398%20100.028%20200.903%20100.168%20200.343%20100.168ZM205.709%20100V92.496H206.759V93.952L206.521%2093.896C206.708%2093.4107%20207.011%2093.028%20207.431%2092.748C207.86%2092.468%20208.355%2092.328%20208.915%2092.328C209.447%2092.328%20209.923%2092.4493%20210.343%2092.692C210.772%2092.9347%20211.108%2093.2707%20211.351%2093.7C211.603%2094.12%20211.729%2094.596%20211.729%2095.128V100H210.679V95.534C210.679%2095.0767%20210.595%2094.6893%20210.427%2094.372C210.268%2094.0547%20210.04%2093.812%20209.741%2093.644C209.452%2093.4667%20209.116%2093.378%20208.733%2093.378C208.35%2093.378%20208.01%2093.4667%20207.711%2093.644C207.412%2093.812%20207.179%2094.0593%20207.011%2094.386C206.843%2094.7033%20206.759%2095.086%20206.759%2095.534V100H205.709ZM217.122%20100.168C216.422%20100.168%20215.792%20100%20215.232%2099.664C214.672%2099.3187%20214.229%2098.852%20213.902%2098.264C213.585%2097.6667%20213.426%2096.9947%20213.426%2096.248C213.426%2095.492%20213.585%2094.82%20213.902%2094.232C214.229%2093.644%20214.668%2093.182%20215.218%2092.846C215.778%2092.5007%20216.413%2092.328%20217.122%2092.328C217.766%2092.328%20218.34%2092.468%20218.844%2092.748C219.348%2093.028%20219.745%2093.406%20220.034%2093.882L219.866%2094.176V89.402H220.916V100H219.866V98.32L220.034%2098.474C219.773%2099.0153%20219.381%2099.4353%20218.858%2099.734C218.345%20100.023%20217.766%20100.168%20217.122%20100.168ZM217.178%2099.118C217.682%2099.118%20218.135%2098.992%20218.536%2098.74C218.947%2098.488%20219.269%2098.1473%20219.502%2097.718C219.745%2097.2793%20219.866%2096.7893%20219.866%2096.248C219.866%2095.7067%20219.745%2095.2213%20219.502%2094.792C219.269%2094.3533%20218.947%2094.008%20218.536%2093.756C218.135%2093.504%20217.682%2093.378%20217.178%2093.378C216.684%2093.378%20216.236%2093.504%20215.834%2093.756C215.433%2094.008%20215.116%2094.3487%20214.882%2094.778C214.658%2095.2073%20214.546%2095.6973%20214.546%2096.248C214.546%2096.7893%20214.658%2097.2793%20214.882%2097.718C215.116%2098.1473%20215.428%2098.488%20215.82%2098.74C216.222%2098.992%20216.674%2099.118%20217.178%2099.118ZM226.488%20100.168C225.788%20100.168%20225.153%20100%20224.584%2099.664C224.024%2099.3187%20223.581%2098.8473%20223.254%2098.25C222.927%2097.6527%20222.764%2096.976%20222.764%2096.22C222.764%2095.464%20222.923%2094.7967%20223.24%2094.218C223.557%2093.63%20223.987%2093.168%20224.528%2092.832C225.079%2092.496%20225.695%2092.328%20226.376%2092.328C226.917%2092.328%20227.398%2092.4307%20227.818%2092.636C228.247%2092.832%20228.611%2093.1027%20228.91%2093.448C229.209%2093.784%20229.437%2094.1667%20229.596%2094.596C229.755%2095.016%20229.834%2095.45%20229.834%2095.898C229.834%2095.9913%20229.829%2096.0987%20229.82%2096.22C229.811%2096.332%20229.797%2096.4487%20229.778%2096.57H223.436V95.59H229.176L228.672%2096.01C228.756%2095.4967%20228.695%2095.0393%20228.49%2094.638C228.294%2094.2273%20228.009%2093.9053%20227.636%2093.672C227.263%2093.4293%20226.843%2093.308%20226.376%2093.308C225.909%2093.308%20225.475%2093.4293%20225.074%2093.672C224.682%2093.9147%20224.374%2094.2553%20224.15%2094.694C223.926%2095.1233%20223.837%2095.6367%20223.884%2096.234C223.837%2096.8313%20223.931%2097.354%20224.164%2097.802C224.407%2098.2407%20224.733%2098.5813%20225.144%2098.824C225.564%2099.0667%20226.012%2099.188%20226.488%2099.188C227.039%2099.188%20227.501%2099.0573%20227.874%2098.796C228.247%2098.5347%20228.551%2098.208%20228.784%2097.816L229.68%2098.292C229.531%2098.628%20229.302%2098.9407%20228.994%2099.23C228.686%2099.51%20228.317%2099.7387%20227.888%2099.916C227.468%20100.084%20227.001%20100.168%20226.488%20100.168ZM231.685%20100V92.496H232.735V93.728L232.595%2093.546C232.773%2093.1913%20233.039%2092.9113%20233.393%2092.706C233.757%2092.5007%20234.196%2092.398%20234.709%2092.398H235.185V93.448H234.527C233.986%2093.448%20233.552%2093.616%20233.225%2093.952C232.899%2094.288%20232.735%2094.764%20232.735%2095.38V100H231.685Z'%20fill='%23181918'/%3e%3ccircle%20cx='243.5'%20cy='94'%20r='2.5'%20fill='%23181918'/%3e%3cpath%20d='M256.992%20100.168C256.255%20100.168%20255.578%20100.037%20254.962%2099.776C254.346%2099.5053%20253.809%2099.132%20253.352%2098.656C252.904%2098.1707%20252.554%2097.6013%20252.302%2096.948C252.05%2096.2947%20251.924%2095.576%20251.924%2094.792C251.924%2094.008%20252.05%2093.2893%20252.302%2092.636C252.554%2091.9827%20252.904%2091.4133%20253.352%2090.928C253.809%2090.4427%20254.346%2090.0693%20254.962%2089.808C255.578%2089.5373%20256.255%2089.402%20256.992%2089.402C257.701%2089.402%20258.336%2089.528%20258.896%2089.78C259.465%2090.032%20259.941%2090.3587%20260.324%2090.76C260.716%2091.152%20260.996%2091.5673%20261.164%2092.006L260.156%2092.496C259.895%2091.8613%20259.493%2091.362%20258.952%2090.998C258.411%2090.634%20257.757%2090.452%20256.992%2090.452C256.227%2090.452%20255.545%2090.634%20254.948%2090.998C254.351%2091.362%20253.884%2091.8707%20253.548%2092.524C253.212%2093.168%20253.044%2093.924%20253.044%2094.792C253.044%2095.6507%20253.212%2096.4067%20253.548%2097.06C253.884%2097.7133%20254.351%2098.222%20254.948%2098.586C255.545%2098.9407%20256.227%2099.118%20256.992%2099.118C257.673%2099.118%20258.285%2098.9687%20258.826%2098.67C259.377%2098.3713%20259.811%2097.9653%20260.128%2097.452C260.445%2096.9293%20260.604%2096.332%20260.604%2095.66V95.086L261.108%2095.59H256.992V94.61H261.724V95.478C261.724%2096.1593%20261.603%2096.7893%20261.36%2097.368C261.117%2097.9373%20260.781%2098.432%20260.352%2098.852C259.923%2099.272%20259.419%2099.5987%20258.84%2099.832C258.271%20100.056%20257.655%20100.168%20256.992%20100.168ZM263.576%20100V89.402H264.626V100H263.576ZM270.289%20100.168C269.58%20100.168%20268.936%20100%20268.357%2099.664C267.779%2099.3187%20267.317%2098.852%20266.971%2098.264C266.635%2097.6667%20266.467%2096.99%20266.467%2096.234C266.467%2095.4873%20266.635%2094.82%20266.971%2094.232C267.307%2093.644%20267.76%2093.182%20268.329%2092.846C268.908%2092.5007%20269.561%2092.328%20270.289%2092.328C271.017%2092.328%20271.666%2092.496%20272.235%2092.832C272.814%2093.168%20273.267%2093.63%20273.593%2094.218C273.929%2094.806%20274.097%2095.478%20274.097%2096.234C274.097%2096.9993%20273.925%2097.6807%20273.579%2098.278C273.234%2098.866%20272.772%2099.328%20272.193%2099.664C271.624%20100%20270.989%20100.168%20270.289%20100.168ZM270.289%2099.118C270.793%2099.118%20271.246%2098.992%20271.647%2098.74C272.058%2098.488%20272.38%2098.1427%20272.613%2097.704C272.856%2097.2653%20272.977%2096.7753%20272.977%2096.234C272.977%2095.6927%20272.856%2095.2073%20272.613%2094.778C272.38%2094.3487%20272.058%2094.008%20271.647%2093.756C271.246%2093.504%20270.793%2093.378%20270.289%2093.378C269.785%2093.378%20269.328%2093.504%20268.917%2093.756C268.516%2094.008%20268.194%2094.3487%20267.951%2094.778C267.709%2095.2073%20267.587%2095.6927%20267.587%2096.234C267.587%2096.7753%20267.709%2097.2653%20267.951%2097.704C268.194%2098.1427%20268.516%2098.488%20268.917%2098.74C269.328%2098.992%20269.785%2099.118%20270.289%2099.118ZM279.743%20100.168C279.099%20100.168%20278.516%20100.023%20277.993%2099.734C277.48%2099.4353%20277.092%2099.0153%20276.831%2098.474L276.999%2098.32V100H275.949V89.402H276.999V94.176L276.831%2093.882C277.13%2093.406%20277.526%2093.028%20278.021%2092.748C278.525%2092.468%20279.099%2092.328%20279.743%2092.328C280.452%2092.328%20281.082%2092.5007%20281.633%2092.846C282.193%2093.182%20282.632%2093.644%20282.949%2094.232C283.276%2094.82%20283.439%2095.492%20283.439%2096.248C283.439%2096.9947%20283.276%2097.6667%20282.949%2098.264C282.632%2098.852%20282.193%2099.3187%20281.633%2099.664C281.082%20100%20280.452%20100.168%20279.743%20100.168ZM279.687%2099.118C280.191%2099.118%20280.639%2098.992%20281.031%2098.74C281.432%2098.488%20281.745%2098.1473%20281.969%2097.718C282.202%2097.2793%20282.319%2096.7893%20282.319%2096.248C282.319%2095.6973%20282.202%2095.2073%20281.969%2094.778C281.745%2094.3487%20281.432%2094.008%20281.031%2093.756C280.639%2093.504%20280.191%2093.378%20279.687%2093.378C279.183%2093.378%20278.726%2093.504%20278.315%2093.756C277.914%2094.008%20277.592%2094.3533%20277.349%2094.792C277.116%2095.2213%20276.999%2095.7067%20276.999%2096.248C276.999%2096.7893%20277.116%2097.2793%20277.349%2097.718C277.592%2098.1473%20277.914%2098.488%20278.315%2098.74C278.726%2098.992%20279.183%2099.118%20279.687%2099.118ZM287.457%20100.168C286.981%20100.168%20286.556%20100.079%20286.183%2099.902C285.81%2099.7153%20285.516%2099.4633%20285.301%2099.146C285.086%2098.8287%20284.979%2098.4647%20284.979%2098.054C284.979%2097.662%20285.063%2097.3073%20285.231%2096.99C285.399%2096.6633%20285.66%2096.388%20286.015%2096.164C286.37%2095.94%20286.822%2095.7813%20287.373%2095.688L290.313%2095.198V96.15L287.625%2096.598C287.084%2096.6913%20286.692%2096.864%20286.449%2097.116C286.216%2097.368%20286.099%2097.6667%20286.099%2098.012C286.099%2098.348%20286.23%2098.6327%20286.491%2098.866C286.762%2099.0993%20287.107%2099.216%20287.527%2099.216C288.04%2099.216%20288.488%2099.1087%20288.871%2098.894C289.254%2098.67%20289.552%2098.3713%20289.767%2097.998C289.982%2097.6247%20290.089%2097.2093%20290.089%2096.752V94.848C290.089%2094.4%20289.926%2094.036%20289.599%2093.756C289.272%2093.476%20288.848%2093.336%20288.325%2093.336C287.868%2093.336%20287.466%2093.4527%20287.121%2093.686C286.776%2093.91%20286.519%2094.204%20286.351%2094.568L285.399%2094.05C285.539%2093.7327%20285.758%2093.4433%20286.057%2093.182C286.365%2092.9207%20286.715%2092.7153%20287.107%2092.566C287.499%2092.4073%20287.905%2092.328%20288.325%2092.328C288.876%2092.328%20289.361%2092.4353%20289.781%2092.65C290.21%2092.8647%20290.542%2093.1633%20290.775%2093.546C291.018%2093.9193%20291.139%2094.3533%20291.139%2094.848V100H290.089V98.502L290.243%2098.656C290.112%2098.936%20289.907%2099.1927%20289.627%2099.426C289.356%2099.65%20289.034%2099.832%20288.661%2099.972C288.297%20100.103%20287.896%20100.168%20287.457%20100.168ZM293.299%20100V89.402H294.349V100H293.299ZM297.953%20100L301.761%2089.57H302.965L306.773%20100H305.597L304.701%2097.452H300.039L299.129%20100H297.953ZM300.403%2096.402H304.309L302.195%2090.41H302.531L300.403%2096.402ZM311.124%20100.168C310.424%20100.168%20309.794%20100%20309.234%2099.664C308.674%2099.3187%20308.231%2098.852%20307.904%2098.264C307.587%2097.6667%20307.428%2096.9947%20307.428%2096.248C307.428%2095.492%20307.587%2094.82%20307.904%2094.232C308.231%2093.644%20308.67%2093.182%20309.22%2092.846C309.78%2092.5007%20310.415%2092.328%20311.124%2092.328C311.768%2092.328%20312.342%2092.468%20312.846%2092.748C313.35%2093.028%20313.747%2093.406%20314.036%2093.882L313.868%2094.176V89.402H314.918V100H313.868V98.32L314.036%2098.474C313.775%2099.0153%20313.383%2099.4353%20312.86%2099.734C312.347%20100.023%20311.768%20100.168%20311.124%20100.168ZM311.18%2099.118C311.684%2099.118%20312.137%2098.992%20312.538%2098.74C312.949%2098.488%20313.271%2098.1473%20313.504%2097.718C313.747%2097.2793%20313.868%2096.7893%20313.868%2096.248C313.868%2095.7067%20313.747%2095.2213%20313.504%2094.792C313.271%2094.3533%20312.949%2094.008%20312.538%2093.756C312.137%2093.504%20311.684%2093.378%20311.18%2093.378C310.686%2093.378%20310.238%2093.504%20309.836%2093.756C309.435%2094.008%20309.118%2094.3487%20308.884%2094.778C308.66%2095.2073%20308.548%2095.6973%20308.548%2096.248C308.548%2096.7893%20308.66%2097.2793%20308.884%2097.718C309.118%2098.1473%20309.43%2098.488%20309.822%2098.74C310.224%2098.992%20310.676%2099.118%20311.18%2099.118ZM317.074%20100V92.496H318.124V93.924L317.956%2093.714C318.161%2093.2753%20318.465%2092.9347%20318.866%2092.692C319.277%2092.4493%20319.725%2092.328%20320.21%2092.328C320.789%2092.328%20321.311%2092.4913%20321.778%2092.818C322.245%2093.1447%20322.576%2093.5693%20322.772%2094.092L322.478%2094.106C322.665%2093.5273%20322.987%2093.0887%20323.444%2092.79C323.911%2092.482%20324.424%2092.328%20324.984%2092.328C325.488%2092.328%20325.95%2092.4493%20326.37%2092.692C326.799%2092.9347%20327.14%2093.2707%20327.392%2093.7C327.653%2094.12%20327.784%2094.596%20327.784%2095.128V100H326.734V95.534C326.734%2095.0767%20326.65%2094.6893%20326.482%2094.372C326.323%2094.0547%20326.104%2093.812%20325.824%2093.644C325.544%2093.4667%20325.222%2093.378%20324.858%2093.378C324.503%2093.378%20324.181%2093.4667%20323.892%2093.644C323.603%2093.812%20323.374%2094.0593%20323.206%2094.386C323.038%2094.7033%20322.954%2095.086%20322.954%2095.534V100H321.904V95.534C321.904%2095.0767%20321.82%2094.6893%20321.652%2094.372C321.493%2094.0547%20321.274%2093.812%20320.994%2093.644C320.714%2093.4667%20320.392%2093.378%20320.028%2093.378C319.664%2093.378%20319.337%2093.4667%20319.048%2093.644C318.768%2093.812%20318.544%2094.0593%20318.376%2094.386C318.208%2094.7033%20318.124%2095.086%20318.124%2095.534V100H317.074ZM329.789%20100V92.496H330.839V100H329.789ZM329.789%2091.11V89.57H330.839V91.11H329.789ZM332.988%20100V92.496H334.038V93.952L333.8%2093.896C333.987%2093.4107%20334.29%2093.028%20334.71%2092.748C335.139%2092.468%20335.634%2092.328%20336.194%2092.328C336.726%2092.328%20337.202%2092.4493%20337.622%2092.692C338.051%2092.9347%20338.387%2093.2707%20338.63%2093.7C338.882%2094.12%20339.008%2094.596%20339.008%2095.128V100H337.958V95.534C337.958%2095.0767%20337.874%2094.6893%20337.706%2094.372C337.547%2094.0547%20337.319%2093.812%20337.02%2093.644C336.731%2093.4667%20336.395%2093.378%20336.012%2093.378C335.629%2093.378%20335.289%2093.4667%20334.99%2093.644C334.691%2093.812%20334.458%2094.0593%20334.29%2094.386C334.122%2094.7033%20334.038%2095.086%20334.038%2095.534V100H332.988Z'%20fill='%23181918'/%3e%3c/g%3e%3cmask%20id='path-17-inside-1_683_56525'%20fill='white'%3e%3cpath%20d='M0%2031C0%2022.1634%207.16344%2015%2016%2015H330C338.837%2015%20346%2022.1634%20346%2031V114C346%20122.837%20338.837%20130%20330%20130H16C7.16344%20130%200%20122.837%200%20114V31Z'/%3e%3c/mask%3e%3cpath%20d='M0%2031C0%2022.1634%207.16344%2015%2016%2015H330C338.837%2015%20346%2022.1634%20346%2031V114C346%20122.837%20338.837%20130%20330%20130H16C7.16344%20130%200%20122.837%200%20114V31Z'%20fill='%23FDFDFD'/%3e%3cpath%20d='M-0.5%2031C-0.5%2021.8873%206.8873%2014.5%2016%2014.5H329.5C338.613%2014.5%20346%2021.8873%20346%2031C346%2022.4396%20338.837%2015.5%20330%2015.5H16C7.43959%2015.5%200.5%2022.4396%200.5%2031H-0.5ZM0.5%2031M346%20130H0H346M16%20130C6.8873%20130%20-0.5%20122.613%20-0.5%20113.5V31C-0.5%2021.8873%206.8873%2014.5%2016%2014.5V15.5C7.43959%2015.5%200.5%2022.4396%200.5%2031V114C0.5%20122.837%207.43959%20130%2016%20130ZM16%20130M346%2015V130V15'%20fill='url(%23paint2_linear_683_56525)'%20mask='url(%23path-17-inside-1_683_56525)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_683_56525'%20x1='59'%20y1='49'%20x2='286'%20y2='98'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%232B2A2A'/%3e%3cstop%20offset='1'%20stop-color='white'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_683_56525'%20x1='78.362'%20y1='49.1226'%20x2='284.411'%20y2='82.1461'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%232B2A2A'/%3e%3cstop%20offset='1'%20stop-color='white'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_683_56525'%20x1='-5.20861e-07'%20y1='-8.5'%20x2='70.9255'%20y2='193.231'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%238E3530'/%3e%3cstop%20offset='0.575999'%20stop-color='white'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\"","import React from 'react';\nimport { Avatar } from 'antd';\nimport cardBorderSvg from '../../assets/card-border.svg';\n\nexport interface UserCardProps {\n name: string;\n email: string;\n role?: string;\n avatar?: string;\n className?: string;\n}\n\nexport const UserCard: React.FC<UserCardProps> = ({\n name,\n email,\n role,\n avatar,\n className = '',\n}) => {\n return (\n <div\n style={{\n boxShadow: '0px -8px 30px rgba(236, 97, 91, 0.1)',\n borderRadius: '16px',\n background:\n 'linear-gradient(to bottom, rgba(236, 97, 91, 0.05) 0%, rgba(255, 255, 255, 0) 50%)',\n }}\n className=\"relative min-h-[120px] pt-8 pb-4 pl-4 pr-4\"\n >\n <img\n src={cardBorderSvg}\n alt=\"img-bg\"\n style={{\n position: 'absolute',\n top: -8,\n left: 0,\n objectFit: 'cover',\n }}\n />\n <div\n className={`flex gap-4 items-center relative ${className}`}\n style={{\n position: 'relative',\n }}\n >\n {avatar ? (\n <Avatar src={avatar} size={80} />\n ) : (\n <Avatar\n size={80}\n style={{ backgroundColor: '#181918', fontSize: '32px', fontWeight: 600 }}\n >\n {name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()}\n </Avatar>\n )}\n <div className=\"flex flex-col\">\n <span\n style={{\n color: '#181918',\n fontSize: '16px',\n fontWeight: 600,\n lineHeight: '1.3',\n }}\n >\n {name}\n </span>\n <span\n style={{\n color: '#181918',\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '1.4',\n marginTop: '4px',\n }}\n >\n {email}\n </span>\n {role && (\n <span\n style={{\n color: '#181918',\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '1.4',\n marginTop: '2px',\n }}\n >\n {role}\n </span>\n )}\n </div>\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%2085.5%20513%20342'%3e%3cpath%20fill='%23FFF'%20d='M0%2085.5h513v342H0z'/%3e%3cg%20fill='%23007b23'%3e%3cpath%20d='M0%2085.5h171v342H0zM342%2085.5h171v342H342z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20513%20342'%3e%3cpath%20fill='%23FFF'%20d='M0%200h513v342H0z'/%3e%3cg%20fill='%23D80027'%3e%3cpath%20d='M0%200h513v26.3H0zM0%2052.6h513v26.3H0zM0%20105.2h513v26.3H0zM0%20157.8h513v26.3H0zM0%20210.5h513v26.3H0zM0%20263.1h513v26.3H0zM0%20315.7h513V342H0z'/%3e%3c/g%3e%3cpath%20fill='%232E52B2'%20d='M0%200h256.5v184.1H0z'/%3e%3cg%20fill='%23FFF'%3e%3cpath%20d='m47.8%20138.9-4-12.8-4.4%2012.8H26.2l10.7%207.7-4%2012.8%2010.9-7.9%2010.6%207.9-4.1-12.8%2010.9-7.7zM104.1%20138.9l-4.1-12.8-4.2%2012.8H82.6l10.7%207.7-4%2012.8%2010.7-7.9%2010.8%207.9-4-12.8%2010.7-7.7zM160.6%20138.9l-4.3-12.8-4%2012.8h-13.5l11%207.7-4.2%2012.8%2010.7-7.9%2011%207.9-4.2-12.8%2010.7-7.7zM216.8%20138.9l-4-12.8-4.2%2012.8h-13.3l10.8%207.7-4%2012.8%2010.7-7.9%2010.8%207.9-4.3-12.8%2011-7.7zM100%2075.3l-4.2%2012.8H82.6L93.3%2096l-4%2012.6%2010.7-7.8%2010.8%207.8-4-12.6%2010.7-7.9h-13.4zM43.8%2075.3l-4.4%2012.8H26.2L36.9%2096l-4%2012.6%2010.9-7.8%2010.6%207.8L50.3%2096l10.9-7.9H47.8zM156.3%2075.3l-4%2012.8h-13.5l11%207.9-4.2%2012.6%2010.7-7.8%2011%207.8-4.2-12.6%2010.7-7.9h-13.2zM212.8%2075.3l-4.2%2012.8h-13.3l10.8%207.9-4%2012.6%2010.7-7.8%2010.8%207.8-4.3-12.6%2011-7.9h-13.5zM43.8%2024.7l-4.4%2012.6H26.2l10.7%207.9-4%2012.7L43.8%2050l10.6%207.9-4.1-12.7%2010.9-7.9H47.8zM100%2024.7l-4.2%2012.6H82.6l10.7%207.9-4%2012.7L100%2050l10.8%207.9-4-12.7%2010.7-7.9h-13.4zM156.3%2024.7l-4%2012.6h-13.5l11%207.9-4.2%2012.7%2010.7-7.9%2011%207.9-4.2-12.7%2010.7-7.9h-13.2zM212.8%2024.7l-4.2%2012.6h-13.3l10.8%207.9-4%2012.7%2010.7-7.9%2010.8%207.9-4.3-12.7%2011-7.9h-13.5z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20513%20342'%3e%3cg%20fill='%23FFF'%3e%3cpath%20d='M0%200h513v341.3H0V0z'/%3e%3cpath%20d='M311.7%20230%20513%20341.3v-31.5L369.3%20230h-57.6zM200.3%20111.3%200%200v31.5l143.7%2079.8h56.6z'/%3e%3c/g%3e%3cg%20fill='%230052B4'%3e%3cpath%20d='M393.8%20230%20513%20295.7V230H393.8zm-82.1%200L513%20341.3v-31.5L369.3%20230h-57.6zm146.9%20111.3-147-81.7v81.7h147zM90.3%20230%200%20280.2V230h90.3zm110%2014.2v97.2H25.5l174.8-97.2zM118.2%20111.3%200%2045.6v65.7h118.2zm82.1%200L0%200v31.5l143.7%2079.8h56.6zM53.4%200l147%2081.7V0h-147zM421.7%20111.3%20513%2061.1v50.2h-91.3zm-110-14.2V0h174.9L311.7%2097.1z'/%3e%3c/g%3e%3cg%20fill='%23D80027'%3e%3cpath%20d='M288%200h-64v138.7H0v64h224v138.7h64V202.7h224v-64H288V0z'/%3e%3cpath%20d='M311.7%20230%20513%20341.3v-31.5L369.3%20230h-57.6zM143.7%20230%200%20309.9v31.5L200.3%20230h-56.6zM200.3%20111.3%200%200v31.5l143.7%2079.8h56.6zM368.3%20111.3%20513%2031.5V0L311.7%20111.3h56.6z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20513%20342'%3e%3cpath%20fill='%23FFDA44'%20d='M0%200h513v342H0z'/%3e%3cpath%20fill='%23D80027'%20d='M0%200h513v114H0z'/%3e%3cpath%20fill='%23496E2D'%20d='M0%20228h513v114H0z'/%3e%3cpath%20d='m255.9%20113.8%2014.1%2043.4%2040.4%203.2-37%2026.9%2019.5%2040.3-37-26.9-37%2026.9%2014.1-43.5-36.9-26.9h45.7z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%2085.333%20512%20341.333'%3e%3cpath%20fill='%23FFF'%20d='M0%2085.331h512v341.337H0z'/%3e%3cpath%20d='M0%2085.331h512v90.579H0z'/%3e%3cpath%20fill='%23496E2D'%20d='M0%20336.089h512v90.568H0z'/%3e%3cpath%20fill='%23A2001D'%20d='M0%20198.606h512v114.799H0z'/%3e%3cg%20fill='%23FFF'%3e%3cpath%20d='m323.265%20139.803-25.583-11.809L256%20222.376l-41.682-94.382-25.583%2011.809%2051.749%20116.191-51.749%20116.192%2025.583%2011.808L256%20289.613l41.682%2094.381%2025.583-11.808-51.749-116.192z'/%3e%3cpath%20d='M273.376%20150.931C263.472%20140.115%20256%20133.898%20256%20133.898s-7.472%206.216-17.376%2017.032v210.127C248.528%20371.873%20256%20378.091%20256%20378.091s7.472-6.216%2017.376-17.033V150.931z'/%3e%3c/g%3e%3cg%20fill='%23A2001D'%3e%3cpath%20d='M209.04%20191.226v129.535c10.465%2018.542%2023.274%2033.742%2032.872%2043.818V147.408c-9.599%2010.076-22.408%2025.275-32.872%2043.818zM302.96%20191.226c-10.465-18.543-23.274-33.742-32.872-43.818V364.58c9.599-10.077%2022.407-25.276%2032.872-43.818V191.226z'/%3e%3c/g%3e%3cpath%20d='M302.96%20191.226v129.535c10.594-18.774%2018.784-40.973%2018.784-64.767s-8.19-45.993-18.784-64.768zM209.04%20191.226v129.535c-10.594-18.774-18.784-40.973-18.784-64.767s8.19-45.993%2018.784-64.768z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%2085.333%20512%20341.333'%3e%3cpath%20fill='%23FFF'%20d='M0%2085.337h512v341.326H0z'/%3e%3cpath%20d='M114.024%20256.001%200%20141.926v228.17z'/%3e%3cpath%20fill='%23ffb915'%20d='M161.192%20256%200%2094.7v47.226l114.024%20114.075L0%20370.096v47.138z'/%3e%3cpath%20fill='%23007847'%20d='M509.833%20289.391c.058-.44.804-.878%202.167-1.318v-65.464H222.602L85.33%2085.337H0V94.7L161.192%20256%200%20417.234v9.429h85.33l137.272-137.272h287.231z'/%3e%3cpath%20fill='%23000c8a'%20d='M503.181%20322.783H236.433l-103.881%20103.88H512v-103.88z'/%3e%3cpath%20fill='%23e1392d'%20d='M503.181%20189.217H512V85.337H132.552l103.881%20103.88z'/%3e%3c/svg%3e\"","import React from 'react';\nimport { Select } from 'antd';\nimport type { SelectProps } from 'antd';\nimport flagNG from '../../assets/flags/NG.svg';\nimport flagUS from '../../assets/flags/US.svg';\nimport flagGB from '../../assets/flags/GB.svg';\nimport flagGH from '../../assets/flags/GH.svg';\nimport flagKE from '../../assets/flags/KE.svg';\nimport flagZA from '../../assets/flags/ZA.svg';\n\nexport interface Country {\n code: string;\n name: string;\n flag: string;\n}\n\nexport interface CountrySelectorProps extends Omit<SelectProps, 'options'> {\n countries?: Country[];\n defaultCountry?: string;\n onCountryChange?: (countryCode: string) => void;\n showSearch?: boolean;\n}\n\nconst defaultCountries: Country[] = [\n { code: 'NG', name: 'Nigeria', flag: flagNG },\n { code: 'US', name: 'United States', flag: flagUS },\n { code: 'GB', name: 'United Kingdom', flag: flagGB },\n { code: 'GH', name: 'Ghana', flag: flagGH },\n { code: 'KE', name: 'Kenya', flag: flagKE },\n { code: 'ZA', name: 'South Africa', flag: flagZA },\n];\n\nexport const CountrySelector: React.FC<CountrySelectorProps> = ({\n countries = defaultCountries,\n defaultCountry = 'NG',\n onCountryChange,\n showSearch = false,\n className = '',\n ...props\n}) => {\n const handleChange = (value: string) => {\n if (onCountryChange) {\n onCountryChange(value);\n }\n };\n\n const renderFlag = (flag: string) => {\n return (\n <img\n src={flag}\n alt=\"flag\"\n className=\"w-7 h-7 rounded-full object-cover\"\n style={{ width: '28px', height: '28px' }}\n />\n );\n };\n\n const options = countries.map((country) => ({\n value: country.code,\n label: (\n <div className=\"flex items-center gap-2\">\n {renderFlag(country.flag)}\n <span>{country.code}</span>\n </div>\n ),\n // Add searchable text for filtering\n searchLabel: `${country.name} ${country.code}`.toLowerCase(),\n }));\n\n // Custom filter function for searching\n const handleFilter = (input: string, option: any) => {\n return option?.searchLabel?.includes(input.toLowerCase()) || false;\n };\n\n return (\n <>\n <style>\n {`\n .country-selector.ant-select {\n min-width: 90px;\n heigh: 40px;\n border-radius: 20px;\n padding: 5px !important;\n background: #EEEEEE;\n }\n\n .country-selector .ant-select-selector {\n border-radius: 20px !important;\n border: 1px solid #E5E7EB !important;\n height: 40px !important;\n display: flex;\n align-items: center;\n background: #FFFFFF !important;\n }\n\n .country-selector .ant-select-selection-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: #000000;\n }\n\n .country-selector:hover .ant-select-selector {\n border-color: #D1D5DB !important;\n }\n\n .country-selector.ant-select-focused .ant-select-selector {\n border-color: #EC615B !important;\n box-shadow: 0 0 0 2px rgba(236, 97, 91, 0.1) !important;\n }\n\n .country-selector .ant-select-arrow {\n color: #6B7280;\n }\n\n .country-selector .ant-select-dropdown {\n border-radius: 12px !important;\n }\n `}\n </style>\n <Select\n className={`country-selector ${className}`}\n defaultValue={defaultCountry}\n onChange={handleChange}\n options={options}\n showSearch={showSearch}\n filterOption={handleFilter}\n placeholder=\"Search country...\"\n suffixIcon={\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\">\n <path\n d=\"M1 1.5L6 6.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n }\n {...props}\n />\n </>\n );\n};\n","import React from 'react';\nimport { Dropdown } from 'antd';\nimport type { MenuProps } from 'antd';\n\nexport interface UserProfileDropdownProps {\n name: string;\n role?: string;\n avatarUrl?: string;\n menuItems?: MenuProps['items'];\n onMenuClick?: (key: string) => void;\n className?: string;\n width?: string | number;\n}\n\nexport const UserProfileDropdown: React.FC<UserProfileDropdownProps> = ({\n name,\n role,\n avatarUrl,\n menuItems,\n onMenuClick,\n className = '',\n width,\n}) => {\n const defaultMenuItems: MenuProps['items'] = [\n {\n key: 'profile',\n label: 'My Profile',\n },\n {\n key: 'settings',\n label: 'Settings',\n },\n {\n type: 'divider',\n },\n {\n key: 'logout',\n label: 'Logout',\n danger: true,\n },\n ];\n\n const handleMenuClick: MenuProps['onClick'] = ({ key }) => {\n if (onMenuClick) {\n onMenuClick(key);\n }\n };\n\n const getInitials = (name: string) => {\n const parts = name.split(' ');\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n }\n return name.substring(0, 2).toUpperCase();\n };\n\n return (\n <>\n <style>\n {`\n .user-profile-dropdown {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 5px;\n border-radius: 50px;\n background: #EEEEEE;\n border: 1px solid #E6E6E6;\n transition: background-color 0.2s;\n }\n\n .user-profile-dropdown:hover {\n background-color: #E5E5E5;\n }\n\n .user-profile-avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: 14px;\n color: #FFFFFF;\n background: linear-gradient(135deg, #EC615B 0%, #F59E95 100%);\n flex-shrink: 0;\n overflow: hidden;\n }\n\n .user-profile-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .user-profile-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n }\n\n .user-profile-name {\n font-weight: 700;\n font-size: 14px;\n color: #000000;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.2;\n }\n\n .user-profile-role {\n font-size: 12px;\n color: #666666;\n font-weight: 400;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.2;\n }\n\n .user-profile-dropdown-icon {\n color: #000000;\n flex-shrink: 0;\n transition: transform 0.2s;\n margin-left: auto;\n }\n\n .user-profile-dropdown[aria-expanded=\"true\"] .user-profile-dropdown-icon {\n transform: rotate(180deg);\n }\n `}\n </style>\n <Dropdown\n menu={{\n items: menuItems || defaultMenuItems,\n onClick: handleMenuClick,\n }}\n trigger={['click']}\n placement=\"bottomRight\"\n >\n <div\n className={`user-profile-dropdown ${className}`}\n style={{ width: typeof width === 'number' ? `${width}px` : width }}\n >\n <div className=\"user-profile-avatar\">\n {avatarUrl ? <img src={avatarUrl} alt={name} /> : getInitials(name)}\n </div>\n <div className=\"user-profile-info\">\n <div className=\"user-profile-name\">{name}</div>\n {role && <div className=\"user-profile-role\">{role}</div>}\n </div>\n <svg\n className=\"user-profile-dropdown-icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M6 9L12 15L18 9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </Dropdown>\n </>\n );\n};\n","import React from 'react';\n\nexport interface ActionCardProps {\n label: string;\n icon: React.ReactNode;\n iconColor?: 'red' | 'blue' | 'green' | 'purple' | 'orange' | 'yellow';\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const ActionCard: React.FC<ActionCardProps> = ({\n label,\n icon,\n iconColor = 'blue',\n onClick,\n disabled = false,\n className = '',\n}) => {\n const colorStyles = {\n red: {\n background: '#FFEAE8',\n color: '#EC615B',\n },\n blue: {\n background: '#E8F4FD',\n color: '#4A9FD8',\n },\n green: {\n background: '#E8F8F0',\n color: '#5FB894',\n },\n purple: {\n background: '#F3E8FD',\n color: '#9B59D8',\n },\n orange: {\n background: '#FFF3E8',\n color: '#F59E42',\n },\n yellow: {\n background: '#FFFBE8',\n color: '#F5D742',\n },\n };\n\n const currentColor = colorStyles[iconColor];\n\n return (\n <button\n className={`bg-[#FDFDFD] border border-[#E6E6E6] rounded-[14px] p-4 md:py-2.5 md:px-[18px] flex flex-col md:flex-row items-start md:items-center justify-start gap-2 md:gap-4 cursor-pointer transition-all duration-300 ease-in-out w-full md:h-[60px] hover:border-gray-300 hover:-translate-y-1 active:translate-y-0 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:border-[#E6E6E6] disabled:hover:translate-y-0 ${className}`}\n style={{\n boxShadow: '0 0 0 0 rgba(0, 0, 0, 0)',\n transition: 'all 0.3s ease-in-out',\n }}\n onMouseEnter={(e) => {\n if (!disabled) {\n e.currentTarget.style.boxShadow = '0 0 16px 0 rgba(0, 0, 0, 0.08)';\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n onClick={onClick}\n disabled={disabled}\n >\n <div\n className=\"w-10 h-10 rounded-full flex items-center justify-center shrink-0 [&>svg]:w-6 [&>svg]:h-6 transition-transform duration-300 ease-in-out\"\n style={{\n backgroundColor: currentColor.background,\n color: currentColor.color,\n }}\n >\n {icon}\n </div>\n <div className=\"text-sm font-medium text-[#181918] transition-colors duration-200 text-left\">{label}</div>\n </button>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='351'%20height='127'%20viewBox='0%200%20351%20127'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_704_66908)'%3e%3crect%20width='350.75'%20height='127'%20rx='20'%20fill='url(%23paint0_radial_704_66908)'/%3e%3cg%20clip-path='url(%23clip1_704_66908)'%3e%3cpath%20d='M-386.246%20144.789L274.742%20593.465C345.973%20641.816%20435.527%20629.713%20492.889%20563.989L1039.19%20-61.9766'%20stroke='url(%23paint1_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-331.201%2067.3087L243.14%20536.773C305.031%20587.364%20387.685%20584.956%20444.468%20530.912L985.275%2016.1953'%20stroke='url(%23paint2_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-275.756%202.40625L218.015%20482.418C271.224%20534.146%20346.924%20539.859%20402.405%20496.338L930.814%2081.8418'%20stroke='url(%23paint3_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-220.775%20-51.0859L198.662%20430.787C243.863%20482.715%20312.665%20495.121%20366.259%20461.006L876.689%20136.094'%20stroke='url(%23paint4_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-166.978%20-94.2812L184.397%20382.178C222.262%20433.521%20284.323%20451.328%20335.566%20425.551L823.623%20180.047'%20stroke='url(%23paint5_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-114.948%20-128.258L174.579%20336.795C205.78%20386.909%20261.318%20408.962%20309.861%20390.513L772.201%20214.791'%20stroke='url(%23paint6_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-65.1397%20-154.062L168.622%20294.755C193.812%20343.12%20243.108%20368.394%20288.699%20356.322L722.905%20241.336'%20stroke='url(%23paint7_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-17.9061%20-172.664L165.967%20256.127C185.782%20302.335%20229.158%20329.932%20271.628%20323.353L676.096%20260.69'%20stroke='url(%23paint8_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M26.4941%20-185.008L166.099%20220.879C181.142%20264.617%20218.955%20293.756%20258.207%20291.853L632.022%20273.731'%20stroke='url(%23paint9_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M67.8961%20-191.945L168.563%20188.973C179.41%20230.02%20212.036%20260.019%20248.036%20262.046L590.884%20281.336'%20stroke='url(%23paint10_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M106.194%20-194.273L172.927%20160.311C180.118%20198.521%20207.946%20228.805%20240.711%20234.078L552.773%20284.291'%20stroke='url(%23paint11_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M141.351%20-192.719L178.821%20134.777C182.86%20170.07%20206.283%20200.151%20235.881%20208.056L517.757%20283.335'%20stroke='url(%23paint12_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M173.377%20-187.961L185.898%20112.209C187.246%20144.554%20206.661%20174.038%20233.185%20184.021L485.809%20279.116'%20stroke='url(%23paint13_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M202.332%20-180.594L193.864%2092.446C192.952%20121.868%20208.739%20150.423%20232.318%20161.998L456.892%20272.246'%20stroke='url(%23paint14_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M228.308%20-171.148L202.454%2075.3143C199.67%20101.874%20212.202%20129.241%20232.985%20141.977L430.918%20263.267'%20stroke='url(%23paint15_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M251.421%20-160.117L211.446%2060.6205C207.139%2084.4079%20216.778%20110.387%20234.928%20123.906L407.783%20252.655'%20stroke='url(%23paint16_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M271.813%20-147.922L220.633%2048.1661C215.118%2069.2978%20222.203%2093.7483%20237.896%20107.724L387.334%20240.832'%20stroke='url(%23paint17_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M289.644%20-134.93L229.862%2037.766C223.421%2056.3761%20228.275%2079.1947%20241.688%2093.3523L369.436%20228.172'%20stroke='url(%23paint18_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M305.074%20-121.461L238.982%2029.2269C231.86%2045.4665%20234.784%2066.5949%20246.102%2080.6976L353.911%20214.995'%20stroke='url(%23paint19_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M318.286%20-107.789L247.884%2022.3683C240.297%2036.3954%20241.569%2055.8094%20250.98%2069.6613L340.602%20201.581'%20stroke='url(%23paint20_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M329.449%20-94.1406L256.474%2017.0081C248.611%2028.9842%20248.483%2046.6908%20256.164%2060.1339L329.324%20188.165'%20stroke='url(%23paint21_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M338.751%20-80.7266L264.682%2012.9664C256.701%2023.0633%20255.41%2039.083%20261.538%2051.9936L319.909%20174.93'%20stroke='url(%23paint22_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M346.359%20-67.6797L272.45%2010.0966C264.486%2018.4792%20262.243%2032.8636%20266.989%2045.1387L312.18%20162.049'%20stroke='url(%23paint23_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M352.453%20-55.1328L279.746%208.24527C271.911%2015.075%20268.907%2027.8894%20272.43%2039.4602L305.978%20149.654'%20stroke='url(%23paint24_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M357.186%20-43.1953L286.531%207.25843C278.918%2012.6968%20275.321%2024.0134%20277.772%2034.8283L301.124%20137.825'%20stroke='url(%23paint25_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M360.719%20-31.9375L292.798%207.00732C285.479%2011.2055%20281.443%2021.11%20282.965%2031.1383L297.475%20126.645'%20stroke='url(%23paint26_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M363.203%20-21.3984L298.545%207.38418C291.576%2010.4864%20287.23%2019.0717%20287.956%2028.2995L294.882%20116.18'%20stroke='url(%23paint27_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M364.774%20-11.6172L303.77%208.27432C297.194%2010.4181%20292.654%2017.7804%20292.706%2026.2042L293.204%20106.454'%20stroke='url(%23paint28_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M365.559%20-2.60938L308.485%209.57633C302.335%2010.8887%20297.695%2017.1207%20297.185%2024.7578L292.317%2097.4804'%20stroke='url(%23paint29_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M365.678%205.625L312.708%2011.2111C307%2011.8123%20302.348%2017.0137%20301.373%2023.8812L292.102%2089.2759'%20stroke='url(%23paint30_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M365.245%2013.0938H316.462C311.207%2013.0938%20306.606%2017.3606%20305.261%2023.4861L292.45%2081.8244'%20stroke='url(%23paint31_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M1051.6%20-62.0633L390.608%20-510.739C319.377%20-559.091%20229.823%20-546.987%20172.461%20-481.263L-373.835%20144.699'%20stroke='url(%23paint32_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M996.555%2015.4192L422.213%20-454.045C360.322%20-504.636%20277.669%20-502.228%20220.885%20-448.184L-319.922%2066.536'%20stroke='url(%23paint33_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M941.108%2080.3227L447.336%20-399.692C394.127%20-451.421%20318.428%20-457.134%20262.947%20-413.613L-265.465%200.883634'%20stroke='url(%23paint34_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M886.128%20133.817L466.691%20-348.057C421.49%20-399.984%20352.688%20-412.39%20299.094%20-378.276L-211.339%20-53.3597'%20stroke='url(%23paint35_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M832.333%20177.009L480.957%20-299.45C443.093%20-350.794%20381.031%20-368.6%20329.789%20-342.823L-158.268%20-97.319'%20stroke='url(%23paint36_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M780.301%20210.979L490.773%20-254.075C459.573%20-304.188%20404.035%20-326.241%20355.492%20-307.792L-106.848%20-132.07'%20stroke='url(%23paint37_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M730.491%20236.781L496.728%20-212.036C471.539%20-260.401%20422.243%20-285.676%20376.652%20-273.604L-57.554%20-158.618'%20stroke='url(%23paint38_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M683.261%20255.388L499.387%20-173.404C479.573%20-219.611%20436.197%20-247.209%20393.727%20-240.63L-10.7409%20-177.966'%20stroke='url(%23paint39_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M638.856%20267.73L499.251%20-138.157C484.208%20-181.894%20446.395%20-211.034%20407.143%20-209.131L33.3282%20-191.008'%20stroke='url(%23paint40_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M597.454%20274.664L496.788%20-106.254C485.94%20-147.301%20453.315%20-177.3%20417.315%20-179.327L74.4663%20-198.617'%20stroke='url(%23paint41_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M559.158%20276.995L492.425%20-77.59C485.234%20-115.8%20457.405%20-146.084%20424.64%20-151.357L112.579%20-201.57'%20stroke='url(%23paint42_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M524.004%20275.444L486.533%20-52.0515C482.495%20-87.3444%20459.072%20-117.426%20429.474%20-125.331L147.598%20-200.609'%20stroke='url(%23paint43_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M491.975%20270.694L479.455%20-29.476C478.107%20-61.8212%20458.692%20-91.3046%20432.168%20-101.288L179.544%20-196.383'%20stroke='url(%23paint44_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M463.018%20263.317L471.486%20-9.72316C472.398%20-39.1448%20456.611%20-67.7006%20433.032%20-79.2748L208.458%20-189.523'%20stroke='url(%23paint45_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M437.046%20253.876L462.9%207.41364C465.684%20-19.1462%20453.152%20-46.5134%20432.369%20-59.2488L234.436%20-180.539'%20stroke='url(%23paint46_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M413.93%20242.85L453.906%2022.1122C458.213%20-1.67519%20448.574%20-27.6544%20430.424%20-41.1731L257.569%20-169.922'%20stroke='url(%23paint47_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M393.537%20230.653L444.717%2034.5647C450.232%2013.4329%20443.147%20-11.0175%20427.454%20-24.9931L278.016%20-158.102'%20stroke='url(%23paint48_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M375.711%20217.656L435.492%2044.9603C441.933%2026.3502%20437.08%203.53165%20423.667%20-10.626L295.918%20-145.445'%20stroke='url(%23paint49_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M360.28%20204.19L426.372%2053.5021C433.494%2037.2625%20430.57%2016.1342%20419.252%202.03148L311.443%20-132.266'%20stroke='url(%23paint50_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M347.067%20190.511L417.468%2060.3534C425.055%2046.3263%20423.784%2026.9123%20414.373%2013.0604L324.751%20-118.859'%20stroke='url(%23paint51_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M335.903%20176.876L408.878%2065.7268C416.741%2053.7507%20416.87%2036.0442%20409.188%2022.6011L336.028%20-105.43'%20stroke='url(%23paint52_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M326.6%20163.445L400.669%2069.7522C408.649%2059.6553%20409.941%2043.6356%20403.813%2030.725L345.442%20-92.2109'%20stroke='url(%23paint53_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M318.988%20150.408L392.898%2072.6318C400.861%2064.2492%20403.104%2049.8648%20398.359%2037.5897L353.167%20-79.3203'%20stroke='url(%23paint54_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M312.902%20137.865L385.609%2074.4867C393.444%2067.6569%20396.448%2054.8425%20392.925%2043.2718L359.376%20-66.9219'%20stroke='url(%23paint55_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M308.168%20125.926L378.823%2075.4724C386.435%2070.034%20390.032%2058.7174%20387.581%2047.9025L364.23%20-55.0938'%20stroke='url(%23paint56_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M304.632%20114.661L372.554%2075.716C379.873%2071.5178%20383.909%2061.6132%20382.387%2051.585L367.877%20-43.9219'%20stroke='url(%23paint57_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M302.15%20104.125L366.808%2075.3422C373.777%2072.24%20378.123%2063.6547%20377.396%2054.4269L370.47%20-33.4531'%20stroke='url(%23paint58_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M300.581%2094.3447L361.586%2074.4531C368.161%2072.3094%20372.701%2064.9471%20372.65%2056.5233L372.151%20-23.7266'%20stroke='url(%23paint59_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M299.796%2085.3321L356.87%2073.1464C363.02%2071.834%20367.66%2065.602%20368.17%2057.9649L373.039%20-14.7578'%20stroke='url(%23paint60_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M299.672%2077.1041L352.641%2071.518C358.35%2070.9168%20363.001%2065.7154%20363.976%2058.8479L373.248%20-6.54688'%20stroke='url(%23paint61_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M300.107%2069.629H348.89C354.146%2069.629%20358.746%2065.3621%20360.091%2059.2366L372.902%200.898438'%20stroke='url(%23paint62_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cradialGradient%20id='paint0_radial_704_66908'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(175.06%20173.312)%20rotate(90)%20scale(110.767%20305.917)'%3e%3cstop%20stop-color='%237A7F7A'/%3e%3cstop%20offset='1'%20stop-color='%23181918'/%3e%3c/radialGradient%3e%3clinearGradient%20id='paint1_linear_704_66908'%20x1='-369.359'%20y1='-87.6741'%20x2='513.779'%20y2='796.17'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_704_66908'%20x1='-315.605'%20y1='-4.70151'%20x2='396.698'%20y2='804.933'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint3_linear_704_66908'%20x1='-261.462'%20y1='-17.2195'%20x2='409.401'%20y2='726.915'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint4_linear_704_66908'%20x1='-207.773'%20y1='-71.0173'%20x2='477.186'%20y2='609.453'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint5_linear_704_66908'%20x1='-155.243'%20y1='-114.225'%20x2='526.052'%20y2='496.327'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint6_linear_704_66908'%20x1='-104.438'%20y1='-147.965'%20x2='558.427'%20y2='390.428'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint7_linear_704_66908'%20x1='-55.8037'%20y1='-173.324'%20x2='576.784'%20y2='293.617'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint8_linear_704_66908'%20x1='-9.68412'%20y1='-191.311'%20x2='583.485'%20y2='207.001'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint9_linear_704_66908'%20x1='33.6679'%20y1='-202.903'%20x2='580.7'%20y2='131.061'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint10_linear_704_66908'%20x1='74.092'%20y1='-209.703'%20x2='579.849'%20y2='59.0414'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint11_linear_704_66908'%20x1='111.484'%20y1='-212.229'%20x2='572.467'%20y2='-5.37385'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint12_linear_704_66908'%20x1='145.81'%20y1='-210.58'%20x2='553.637'%20y2='-55.52'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint13_linear_704_66908'%20x1='177.079'%20y1='-205.486'%20x2='528.199'%20y2='-92.546'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint14_linear_704_66908'%20x1='196.943'%20y1='-197.584'%20x2='499.557'%20y2='-113.05'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint15_linear_704_66908'%20x1='204.78'%20y1='-187.448'%20x2='471.464'%20y2='-119.892'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint16_linear_704_66908'%20x1='212.765'%20y1='-175.605'%20x2='445.219'%20y2='-122.16'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint17_linear_704_66908'%20x1='220.775'%20y1='-162.508'%20x2='421.094'%20y2='-120.743'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint18_linear_704_66908'%20x1='228.727'%20y1='-148.553'%20x2='399.249'%20y2='-116.396'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint19_linear_704_66908'%20x1='236.526'%20y1='-134.085'%20x2='379.714'%20y2='-109.774'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint20_linear_704_66908'%20x1='244.11'%20y1='-119.397'%20x2='362.478'%20y2='-101.431'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint21_linear_704_66908'%20x1='251.424'%20y1='-104.733'%20x2='347.604'%20y2='-91.7969'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint22_linear_704_66908'%20x1='258.649'%20y1='-90.3189'%20x2='356.891'%20y2='-75.3399'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint23_linear_704_66908'%20x1='265.489'%20y1='-76.2992'%20x2='364.085'%20y2='-59.4091'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint24_linear_704_66908'%20x1='271.934'%20y1='-62.8165'%20x2='369.414'%20y2='-44.1649'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint25_linear_704_66908'%20x1='277.959'%20y1='-49.9872'%20x2='373.072'%20y2='-29.73'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint26_linear_704_66908'%20x1='283.571'%20y1='-37.8876'%20x2='375.252'%20y2='-16.1831'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint27_linear_704_66908'%20x1='288.77'%20y1='-26.5604'%20x2='376.126'%20y2='-3.56131'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint28_linear_704_66908'%20x1='293.559'%20y1='-16.0473'%20x2='375.843'%20y2='8.10432'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint29_linear_704_66908'%20x1='293.184'%20y1='-6.36478'%20x2='374.006'%20y2='22.0749'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint30_linear_704_66908'%20x1='292.974'%20y1='2.48639'%20x2='370.37'%20y2='35.2215'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint31_linear_704_66908'%20x1='293.312'%20y1='10.515'%20x2='364.993'%20y2='47.0221'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint32_linear_704_66908'%20x1='-356.948'%20y1='-565.893'%20x2='526.186'%20y2='317.951'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint33_linear_704_66908'%20x1='-304.325'%20y1='-511.311'%20x2='407.982'%20y2='298.324'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint34_linear_704_66908'%20x1='-251.17'%20y1='-462.376'%20x2='419.697'%20y2='281.761'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint35_linear_704_66908'%20x1='-198.337'%20y1='-417.33'%20x2='486.622'%20y2='263.142'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint36_linear_704_66908'%20x1='-146.532'%20y1='-374.475'%20x2='534.763'%20y2='236.077'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint37_linear_704_66908'%20x1='-96.3381'%20y1='-333.957'%20x2='566.528'%20y2='204.436'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint38_linear_704_66908'%20x1='-48.2179'%20y1='-295.856'%20x2='584.37'%20y2='171.086'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint39_linear_704_66908'%20x1='-2.51896'%20y1='-260.241'%20x2='590.65'%20y2='138.071'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint40_linear_704_66908'%20x1='40.502'%20y1='-227.114'%20x2='587.534'%20y2='106.85'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint41_linear_704_66908'%20x1='80.6623'%20y1='-216.375'%20x2='586.419'%20y2='52.3695'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint42_linear_704_66908'%20x1='117.87'%20y1='-219.526'%20x2='578.853'%20y2='-12.6707'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint43_linear_704_66908'%20x1='152.058'%20y1='-218.471'%20x2='559.884'%20y2='-63.4106'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint44_linear_704_66908'%20x1='183.245'%20y1='-213.908'%20x2='534.365'%20y2='-100.968'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint45_linear_704_66908'%20x1='211.575'%20y1='-206.514'%20x2='514.189'%20y2='-121.98'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint46_linear_704_66908'%20x1='237.147'%20y1='-196.838'%20x2='503.83'%20y2='-129.282'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint47_linear_704_66908'%20x1='259.907'%20y1='-185.409'%20x2='492.361'%20y2='-131.965'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint48_linear_704_66908'%20x1='280.013'%20y1='-172.688'%20x2='480.332'%20y2='-130.922'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint49_linear_704_66908'%20x1='297.605'%20y1='-159.069'%20x2='468.127'%20y2='-126.912'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint50_linear_704_66908'%20x1='312.851'%20y1='-144.89'%20x2='456.039'%20y2='-120.579'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint51_linear_704_66908'%20x1='325.907'%20y1='-130.467'%20x2='444.276'%20y2='-112.501'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint52_linear_704_66908'%20x1='336.838'%20y1='-116.022'%20x2='433.018'%20y2='-103.086'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint53_linear_704_66908'%20x1='327.56'%20y1='-101.803'%20x2='425.802'%20y2='-86.8243'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint54_linear_704_66908'%20x1='319.958'%20y1='-87.9398'%20x2='418.554'%20y2='-71.0497'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint55_linear_704_66908'%20x1='313.867'%20y1='-74.6055'%20x2='411.348'%20y2='-55.9539'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint56_linear_704_66908'%20x1='309.118'%20y1='-61.8857'%20x2='404.23'%20y2='-41.6284'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint57_linear_704_66908'%20x1='305.557'%20y1='-49.8719'%20x2='397.238'%20y2='-28.1675'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint58_linear_704_66908'%20x1='303.042'%20y1='-38.6151'%20x2='390.398'%20y2='-15.616'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint59_linear_704_66908'%20x1='301.435'%20y1='-28.1566'%20x2='383.719'%20y2='-4.00511'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint60_linear_704_66908'%20x1='300.663'%20y1='-18.5132'%20x2='381.485'%20y2='9.92646'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint61_linear_704_66908'%20x1='300.543'%20y1='-9.68549'%20x2='377.94'%20y2='23.0496'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint62_linear_704_66908'%20x1='300.97'%20y1='-1.68036'%20x2='372.65'%20y2='34.8268'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_704_66908'%3e%3crect%20width='350.75'%20height='127'%20rx='20'%20fill='white'/%3e%3c/clipPath%3e%3cclipPath%20id='clip1_704_66908'%3e%3crect%20width='397.467'%20height='156.514'%20fill='white'%20transform='translate(-24.4709%20-14.3125)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","import React, { useState } from 'react';\nimport cardPatternSvg from '../../assets/card-pattern.svg';\n\nexport interface DashboardCardProps {\n label: string;\n value: string | number;\n icon?: React.ReactNode;\n showVisibilityToggle?: boolean;\n onVisibilityToggle?: () => void;\n valuePrefix?: string;\n ledgerBalance?: string | number;\n backgroundPattern?: 'wave' | 'grid' | 'none';\n backgroundImage?: string;\n topRight?: React.ReactNode;\n width?: string | number;\n className?: string;\n}\n\nexport const DashboardCard: React.FC<DashboardCardProps> = ({\n label,\n value,\n icon,\n showVisibilityToggle = true,\n onVisibilityToggle,\n valuePrefix = '₦',\n ledgerBalance,\n backgroundPattern = 'wave',\n backgroundImage,\n topRight,\n width = 348,\n className = '',\n}) => {\n const [isVisible, setIsVisible] = useState(true);\n\n const handleToggleVisibility = () => {\n setIsVisible(!isVisible);\n if (onVisibilityToggle) {\n onVisibilityToggle();\n }\n };\n const defaultIcon = (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M3 10h18M7 14h4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n\n return (\n <div\n className={`relative overflow-hidden flex flex-col rounded-[20px] px-[18px] pt-3 transition-all duration-300 ease-in-out hover:-translate-y-1 cursor-pointer self-start ${ledgerBalance ? 'pb-1' : 'pb-3'} ${className}`}\n style={{\n background: backgroundImage\n ? `url(${backgroundImage}) center / cover no-repeat`\n : 'radial-gradient(circle at 50% 136%, #7A7F7A 0%, #181918 100%)',\n width: typeof width === 'number' ? `${width}px` : width,\n boxShadow: '0 0 0 0 rgba(0, 0, 0, 0)',\n transition: 'all 0.3s ease-in-out',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.boxShadow = '0 0 24px 0 rgba(0, 0, 0, 0.15)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n >\n {backgroundPattern !== 'none' && (\n <div\n className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full h-full pointer-events-none transition-opacity duration-300\"\n style={{\n backgroundImage: `url(${cardPatternSvg})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n }}\n />\n )}\n <div className=\"relative z-10\">\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"w-10 h-10 bg-[#616161] rounded-full flex items-center justify-center text-white transition-transform duration-300 ease-in-out hover:scale-110\">\n {icon || defaultIcon}\n </div>\n {topRight && <div>{topRight}</div>}\n </div>\n <div className=\"flex items-center gap-2 mt-3\">\n <span className=\"text-sm text-[#E6E6E6] font-light transition-colors duration-200\">\n {label}\n </span>\n {showVisibilityToggle && (\n <button\n className=\"bg-transparent border-none cursor-pointer p-1 flex items-center justify-center text-white hover:text-white/80 transition-colors duration-200\"\n onClick={handleToggleVisibility}\n aria-label=\"Toggle visibility\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.61342 8.47806C1.52262 8.3343 1.47723 8.26242 1.45182 8.15155C1.43273 8.06827 1.43273 7.93694 1.45182 7.85366C1.47723 7.74279 1.52262 7.67091 1.61341 7.52715C2.36369 6.33916 4.59693 3.33594 8.00027 3.33594C11.4036 3.33594 13.6369 6.33916 14.3871 7.52715C14.4779 7.67091 14.5233 7.74279 14.5487 7.85366C14.5678 7.93694 14.5678 8.06827 14.5487 8.15155C14.5233 8.26242 14.4779 8.3343 14.3871 8.47806C13.6369 9.66604 11.4036 12.6693 8.00027 12.6693C4.59693 12.6693 2.36369 9.66604 1.61342 8.47806Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8.00027 10.0026C9.10484 10.0026 10.0003 9.10717 10.0003 8.0026C10.0003 6.89803 9.10484 6.0026 8.00027 6.0026C6.8957 6.0026 6.00027 6.89803 6.00027 8.0026C6.00027 9.10717 6.8957 10.0026 8.00027 10.0026Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </div>\n <div className=\"text-[32px] font-bold text-white transition-all duration-200\">\n {isVisible ? `${valuePrefix} ${value}` : '****'}\n </div>\n {ledgerBalance && (\n <div className=\"mb-1\">\n <div className=\"w-full h-px bg-white/10 mb-2 transition-opacity duration-300\"></div>\n <div className=\"flex items-center gap-2 transition-all duration-200\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.0026 13.3307H3.46927C2.72253 13.3307 2.34917 13.3307 2.06395 13.1854C1.81307 13.0576 1.60909 12.8536 1.48126 12.6027C1.33594 12.3175 1.33594 11.9441 1.33594 11.1974V4.7974C1.33594 4.05066 1.33594 3.67729 1.48126 3.39208C1.60909 3.14119 1.81307 2.93722 2.06395 2.80939C2.34917 2.66406 2.72253 2.66406 3.46927 2.66406H3.73594C5.22941 2.66406 5.97615 2.66406 6.54658 2.95471C7.04834 3.21037 7.45629 3.61832 7.71195 4.12009C8.0026 4.69052 8.0026 5.43726 8.0026 6.93073M8.0026 13.3307V6.93073M8.0026 13.3307H12.5359C13.2827 13.3307 13.656 13.3307 13.9413 13.1854C14.1921 13.0576 14.3961 12.8536 14.5239 12.6027C14.6693 12.3175 14.6693 11.9441 14.6693 11.1974V4.7974C14.6693 4.05066 14.6693 3.67729 14.5239 3.39208C14.3961 3.14119 14.1921 2.93722 13.9413 2.80939C13.656 2.66406 13.2827 2.66406 12.5359 2.66406H12.2693C10.7758 2.66406 10.0291 2.66406 9.45863 2.95471C8.95686 3.21037 8.54892 3.61832 8.29325 4.12009C8.0026 4.69052 8.0026 5.43726 8.0026 6.93073\"\n stroke=\"#EC615B\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span className=\"text-xs text-[#E6E6E6] font-light transition-all duration-200\">\n Ledger Balance {isVisible ? `${valuePrefix} ${ledgerBalance}` : '****'}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='41'%20height='54'%20viewBox='0%200%2041%2054'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20opacity='0.5'%20d='M31.6185%2035.0654C24.3544%2030.874%2012.6094%2030.874%205.39141%2035.0654C-1.82664%2039.2567%20-1.79374%2046.0496%205.47036%2050.2344C12.741%2054.4257%2024.486%2054.4257%2031.7106%2050.2344C38.9286%2046.043%2038.8892%2039.2567%2031.6185%2035.0654Z'%20fill='%23AFAAA1'/%3e%3cpath%20d='M25.4769%2028.1137C25.4769%2028.1137%2025.4243%2028.0809%2025.398%2028.0677C24.5557%2027.5816%2023.1937%2027.5816%2022.3581%2028.0677L7.60617%2036.6278C7.15875%2036.884%206.92188%2037.2322%206.92188%2037.5804L7.57328%2048.6106L22.3252%2040.0505C23.1608%2039.5644%2024.5228%2039.5644%2025.3651%2040.0505C25.3914%2040.0636%2025.4177%2040.0834%2025.444%2040.0965C25.8059%2040.3264%2025.9704%2040.6155%2025.9704%2040.9045L26.0033%2028.9218C26.0033%2028.6327%2025.8322%2028.3437%2025.4769%2028.1137Z'%20fill='url(%23paint0_linear_3503_145677)'/%3e%3cpath%20d='M31.3807%2031.5213C31.3807%2031.5213%2031.3281%2031.4885%2031.3018%2031.4753C30.4267%2031.0221%2029.0778%2031.0943%2028.2619%2031.5739L23.9061%2034.1032C23.0968%2034.5696%2021.7874%2034.5696%2020.9781%2034.1032C20.5701%2033.8666%2020.3662%2033.5579%2020.3727%2033.2557L20.3398%2045.2385C20.3398%2045.5472%2020.5438%2045.856%2020.9452%2046.0859C21.7545%2046.5524%2023.0705%2046.5524%2023.8732%2046.0859L28.229%2043.5567C29.0449%2043.0837%2030.4004%2043.0114%2031.2689%2043.4581C31.2952%2043.4713%2031.3215%2043.491%2031.3478%2043.5041C31.769%2043.7472%2031.9795%2044.0691%2031.9795%2044.391L32.0124%2032.4082C32.0124%2032.0863%2031.8019%2031.7644%2031.3807%2031.5213Z'%20fill='url(%23paint1_linear_3503_145677)'/%3e%3cpath%20d='M37.4468%2035.02C37.4468%2035.02%2037.3941%2034.9871%2037.3678%2034.974C36.5256%2034.4878%2035.1636%2034.4878%2034.3279%2034.974L29.8866%2037.5558C29.0772%2038.0222%2027.7679%2038.0222%2026.9586%2037.5558C26.5506%2037.3193%2026.3466%2037.0105%2026.3532%2036.7083L26.3203%2048.6911C26.3203%2048.9999%2026.5243%2049.3086%2026.9257%2049.5386C27.735%2050.005%2029.0509%2050.005%2029.8537%2049.5386L34.295%2046.9568C35.1307%2046.4706%2036.4927%2046.4706%2037.3349%2046.9568C37.3612%2046.9699%2037.3875%2046.9896%2037.4139%2047.0027C37.7692%2047.2327%2037.9402%2047.5217%2037.9402%2047.8174L37.9731%2035.8346C37.9731%2035.5455%2037.8021%2035.2499%2037.4468%2035.02Z'%20fill='url(%23paint2_linear_3503_145677)'/%3e%3cpath%20d='M11.3281%2040.1915L12.9336%2048.7647C13.2363%2050.3677%2015.0391%2051.1954%2016.4538%2050.3743L17.9145%2049.5268C18.3159%2049.2969%2018.5133%2048.9947%2018.5133%2048.6859L18.5462%2036.7031L11.3281%2040.185V40.1915Z'%20fill='%23CFCFC7'/%3e%3cpath%20d='M23.9383%2041.0037L19.5561%2042.8892C19.1087%2043.1454%2018.3783%2043.5987%2018.3783%2043.9403C16.7531%2046.4367%2019.6285%2049.8791%2023.9054%2052.9799C24.3067%2052.75%2024.5041%2052.4478%2024.5041%2052.139L24.537%2040.1562C24.537%2040.4584%2024.3396%2040.7606%2023.9383%2040.9971V41.0037Z'%20fill='%23CFCFC7'/%3e%3cpath%20d='M35.6108%2044.29C28.3928%2048.4814%2016.6413%2048.4814%209.37059%2044.29C5.71222%2042.1812%203.88962%2039.4154%203.8962%2036.6562L3.8633%2042.5162C3.85672%2045.282%205.67932%2048.0478%209.33769%2050.15C16.6084%2054.3413%2028.3533%2054.3413%2035.5779%2050.15C39.1639%2048.0675%2040.9602%2045.3477%2040.9668%2042.6214L40.9997%2036.7614C40.9931%2039.4877%2039.1968%2042.214%2035.6108%2044.29Z'%20fill='url(%23paint3_linear_3503_145677)'/%3e%3cpath%20d='M35.5194%2029.1123C42.7901%2033.3036%2042.8296%2040.0965%2035.6115%2044.2812C28.3935%2048.4726%2016.642%2048.4726%209.37128%2044.2812C2.10718%2040.0899%202.0677%2033.297%209.29232%2029.1123C16.5104%2024.9209%2028.2553%2024.9209%2035.5194%2029.1123ZM22.544%2045.3324L37.2959%2036.7723C38.1118%2036.2993%2038.2303%2035.511%2037.4539%2035.0117C37.4275%2034.9985%2037.4012%2034.9788%2037.3749%2034.9657C36.5327%2034.4795%2035.1707%2034.4795%2034.335%2034.9657L29.8937%2037.5475C29.0844%2038.0139%2027.775%2038.0139%2026.9657%2037.5475C26.1563%2037.0811%2026.1563%2036.3256%2026.9657%2035.8526L31.407%2033.2708C32.2427%2032.7846%2032.2361%2031.9963%2031.3939%2031.5101C31.3675%2031.497%2031.3412%2031.4773%2031.3149%2031.4641C30.4464%2031.0108%2029.0909%2031.0831%2028.275%2031.5627L23.9192%2034.0919C23.1099%2034.5584%2021.8005%2034.5584%2020.9912%2034.0919C20.1819%2033.6255%2020.1819%2032.87%2020.9912%2032.397L25.347%2029.8677C26.1629%2029.3947%2026.2814%2028.613%2025.5049%2028.1071C25.4786%2028.094%2025.4523%2028.0743%2025.426%2028.0611C24.5838%2027.575%2023.2218%2027.575%2022.3861%2028.0611L7.63421%2036.6212C6.81173%2037.1008%206.6933%2037.8825%207.47629%2038.3818C7.50261%2038.395%207.52893%2038.4147%207.55525%2038.4278C8.39747%2038.914%209.75948%2038.914%2010.5951%2038.4278L15.0365%2035.846C15.8392%2035.3796%2017.1486%2035.3796%2017.9579%2035.846C18.7672%2036.3124%2018.7738%2037.0745%2017.9711%2037.5409L13.6152%2040.0702C12.7928%2040.5498%2012.6743%2041.3315%2013.4573%2041.8308C13.4837%2041.844%2013.51%2041.8637%2013.5363%2041.8768C14.3785%2042.3629%2015.7405%2042.3629%2016.5762%2041.8768L21.0175%2039.295C21.8203%2038.8285%2023.1296%2038.8285%2023.939%2039.295C24.7483%2039.7614%2024.7548%2040.5235%2023.9521%2040.9899L19.5963%2043.5192C18.7738%2043.9987%2018.6554%2044.7805%2019.4384%2045.2798C19.4647%2045.2929%2019.491%2045.3126%2019.5173%2045.3258C20.3595%2045.8119%2021.7216%2045.8119%2022.5638%2045.3258L22.544%2045.3324Z'%20fill='url(%23paint4_linear_3503_145677)'/%3e%3cpath%20d='M20.9974%2039.3094C21.5435%2038.994%2022.3199%2038.8955%2023.0174%2039.0072V9.10938H19.1484V40.3802L20.9908%2039.3094H20.9974Z'%20fill='%23403636'/%3e%3cpath%20d='M26.534%201.85938H15.7431C14.2429%203.28496%2013.3086%205.28865%2013.3086%207.51572C13.3086%2011.8319%2016.8156%2015.3334%2021.1386%2015.3334C25.4615%2015.3334%2028.9685%2011.8319%2028.9685%207.51572C28.9685%205.28865%2028.0276%203.28496%2026.534%201.85938Z'%20fill='url(%23paint5_radial_3503_145677)'/%3e%3cpath%20d='M25.5151%201.04455C27.9365%202.43728%2027.9365%204.69719%2025.5151%206.08993C23.0938%207.48266%2019.1788%207.48266%2016.7574%206.08993C14.3361%204.69719%2014.3361%202.43728%2016.7574%201.04455C19.1788%20-0.348184%2023.0938%20-0.348184%2025.5151%201.04455Z'%20fill='%23504444'/%3e%3cpath%20d='M24.6314%201.55925C22.7036%200.449001%2019.5847%200.449001%2017.6568%201.55925C15.729%202.66949%2015.729%204.46954%2017.6568%205.57978C19.5847%206.69003%2022.7036%206.69003%2024.6314%205.57978C26.5593%204.46954%2026.5593%202.66949%2024.6314%201.55925ZM24.1511%205.30386C22.4864%206.26301%2019.7953%206.26301%2018.1372%205.30386C16.4725%204.34472%2016.4725%202.79431%2018.1372%201.83517C19.8019%200.876019%2022.493%200.876019%2024.1511%201.83517C25.8158%202.79431%2025.8158%204.34472%2024.1511%205.30386Z'%20fill='%23FFCC33'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_3503_145677'%20x1='25.977'%20y1='38.1585'%20x2='14.8834'%20y2='38.1585'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_3503_145677'%20x1='32.4862'%20y1='38.8069'%20x2='14.4443'%20y2='38.8069'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_3503_145677'%20x1='38.006'%20y1='42.2464'%20x2='26.4519'%20y2='42.2464'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint3_linear_3503_145677'%20x1='3.8633'%20y1='44.9732'%20x2='40.9997'%20y2='44.9732'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint4_linear_3503_145677'%20x1='3.89688'%20y1='36.7'%20x2='41.0004'%20y2='36.7'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.61'%20stop-color='%23DCDCD3'/%3e%3cstop%20offset='0.62'%20stop-color='%23ECECE2'/%3e%3c/linearGradient%3e%3cradialGradient%20id='paint5_radial_3503_145677'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(23.2244%200.499489)%20scale(16.4956%2016.4697)'%3e%3cstop%20stop-color='%233F3535'/%3e%3cstop%20offset='1'%20stop-color='%23332C2C'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e\"","import React from 'react';\nimport emptyNotificationSvg from '../../assets/empty-notification.svg';\n\nexport interface NotificationItem {\n id: string;\n title: string;\n description: string;\n timestamp: string;\n isNew?: boolean;\n icon?: React.ReactNode;\n iconBackgroundColor?: string;\n iconColor?: string;\n onClick?: () => void;\n}\n\nexport interface NotificationDropdownProps {\n title: string;\n count?: number;\n notifications: NotificationItem[];\n onViewMore?: () => void;\n className?: string;\n maxHeight?: string | number;\n width?: string | number;\n}\n\nexport const NotificationDropdown: React.FC<NotificationDropdownProps> = ({\n count,\n notifications,\n onViewMore,\n className = '',\n width = 380,\n maxHeight = 400,\n}) => {\n const defaultIcon = (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M10 6v4M10 14h.01\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n\n return (\n <div\n className={`bg-white rounded-2xl shadow-lg border border-gray-100 overflow-hidden ${className}`}\n style={{ width: typeof width === 'number' ? `${width}px` : width }}\n >\n {/* Tab Section */}\n <div className=\"flex items-center justify-between px-4 py-3 bg-gray-50\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-[#181918]\">Issues</span>\n {count !== undefined && (\n <span className=\"flex flex-col items-center justify-center h-[22px] w-[22px] bg-[#FAE5B7] text-[#6C4D0B] border border-[#EFAC18] text-[11px] font-medium px-2 py-0.5 rounded-full\">\n {count}\n </span>\n )}\n </div>\n {onViewMore && (\n <button\n onClick={onViewMore}\n className=\"text-xs text-[#EC615B] font-normal hover:text-[#EC615B] transition-colors duration-200\"\n >\n View More\n </button>\n )}\n </div>\n\n {/* Notifications List */}\n <div\n className=\"overflow-y-auto\"\n style={{ maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight }}\n >\n {notifications.length === 0 ? (\n <div className=\"px-4 py-16 flex flex-col items-center justify-center\">\n <img\n src={emptyNotificationSvg}\n alt=\"No notifications\"\n className=\"w-16 h-16 mb-4\"\n />\n <h4 className=\"text-sm font-medium text-[#181918] mb-1\">\n No issues available\n </h4>\n <p className=\"text-xs text-gray-500 font-light\">\n All recent activities will appear here\n </p>\n </div>\n ) : (\n notifications.map((notification) => (\n <div\n key={notification.id}\n onClick={notification.onClick}\n className=\"flex gap-3 px-4 py-3 border-b border-[#E6E6E6] hover:bg-[#FDEFEF] transition-colors duration-200 cursor-pointer\"\n >\n {/* Icon */}\n <div\n className=\"flex items-center justify-center h-10 w-10 rounded-full flex-shrink-0 [&>svg]:w-5 [&>svg]:h-5\"\n style={{\n backgroundColor: notification.iconBackgroundColor || '#FCE7E6',\n color: notification.iconColor || '#EC615B',\n }}\n >\n {notification.icon || defaultIcon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-sm font-medium text-[#181918] mb-1\">{notification.title}</h4>\n <p className=\"text-xs text-[#181918] font-light line-clamp-2\">\n {notification.description}\n </p>\n </div>\n\n {/* Timestamp/Badge */}\n <div className=\"flex-shrink-0\">\n {notification.isNew ? (\n <span className=\"text-[#EC615B] text-xs font-medium px-2 py-1 rounded\">New</span>\n ) : (\n <span className=\"text-xs text-gray-400\">{notification.timestamp}</span>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { Tabs } from 'antd';\n\nexport interface TabItem {\n key: string;\n label: string;\n children: React.ReactNode;\n}\n\nexport interface TabsComponentProps {\n items: TabItem[];\n defaultActiveKey?: string;\n activeKey?: string;\n onChange?: (activeKey: string) => void;\n className?: string;\n}\n\nexport const TabsComponent: React.FC<TabsComponentProps> = ({\n items,\n defaultActiveKey,\n activeKey,\n onChange,\n className = '',\n}) => {\n return (\n <div className={className}>\n <style>\n {`\n .custom-tabs .ant-tabs-nav {\n margin-bottom: 0 !important;\n }\n\n .custom-tabs .ant-tabs-nav::before {\n border-bottom: 1px solid #E6E6E6 !important;\n }\n\n .custom-tabs .ant-tabs-tab {\n padding: 10px 0 !important;\n margin-right: 20px !important;\n color: #181918 !important;\n font-size: 14px !important;\n font-weight: 400 !important;\n font-family: 'Plus Jakarta Sans', sans-serif !important;\n }\n\n .custom-tabs .ant-tabs-tab:hover {\n color: #EC615B !important;\n }\n\n .custom-tabs .ant-tabs-tab-active .ant-tabs-tab-btn {\n color: #EC615B !important;\n font-weight: 400 !important;\n }\n\n .custom-tabs .ant-tabs-ink-bar {\n background: #EC615B !important;\n height: 2px !important;\n }\n\n .custom-tabs .ant-tabs-tab-btn {\n transition: color 0.3s ease !important;\n }\n\n .custom-tabs .ant-tabs-content-holder {\n padding-top: 16px;\n }\n `}\n </style>\n <Tabs\n className=\"custom-tabs\"\n items={items}\n defaultActiveKey={defaultActiveKey}\n activeKey={activeKey}\n onChange={onChange}\n />\n </div>\n );\n};\n"],"names":["Button","variant","size","className","children","props","getSizeHeight","getVariantStyles","height","disabledStyles","jsxs","Fragment","jsx","AntButton","e","_a","styles","StatCard","label","value","icon","iconBackgroundColor","iconColor","valuePrefix","progressText","badge","width","selected","onClick","rounded","sizeClass","roundedClass","defaultIcon","SearchInput","iconPosition","fullWidth","onIconClick","bgColor","borderColor","focusBorderColor","textColor","placeholderColor","style","containerBaseClasses","inputBaseClasses","sizeClasses","iconSizeClasses","roundedClasses","paddingWithIcon","widthClass","customStyles","placeholderClass","defaultBorderClass","defaultTextClass","defaultFocusClass","inputClassName","iconPositionClasses","defaultIconColor","hoverIconColor","defaultSearchIcon","Card","shadow","combinedClassName","AntCard","Dropdown","items","trigger","placement","overlayClassName","disabled","menuBgColor","menuItemHoverColor","dangerColor","isOpen","setIsOpen","useState","dropdownRef","useRef","useEffect","handleClickOutside","event","handleTriggerClick","handleTriggerMouseEnter","handleTriggerMouseLeave","handleMenuItemClick","item","placementClasses","animationClasses","itemSizeClasses","defaultHoverColor","defaultBorderColor","defaultDangerColor","hoverColorStyle","customHoverClass","customDangerStyle","dangerHoverBgStyle","finalBorderColor","itemStyle","isCheckBoxInput","element","isDateObject","isNullOrUndefined","isObjectType","isObject","getEventValue","isNameInFieldArray","names","name","part","index","arr","isPlainObject","tempObject","prototypeCopy","isWeb","cloneObject","data","isFileListInstance","isArray","copy","key","isKey","isUndefined","val","compact","stringToPath","input","get","object","path","defaultValue","result","isBoolean","isFunction","set","tempPath","length","lastIndex","newValue","objValue","EVENTS","VALIDATION_MODE","HookFormControlContext","React","useFormControlContext","getProxyFormState","formState","control","localProxyFormState","isRoot","_key","useIsomorphicLayoutEffect","useFormState","formControl","exact","updateFormState","_localProxyFormState","isString","generateWatchOutput","_names","formValues","isGlobal","fieldName","isPrimitive","deepEqual","object1","object2","_internal_visited","keys1","keys2","val1","val2","useWatch","compute","_defaultValue","_compute","_computeFormValues","_prevControl","_prevName","updateValue","getCurrentOutput","values","refreshValue","computedFormValues","controlChanged","prevName","computedOutput","nameChanged","useController","shouldUnregister","isArrayField","defaultValueMemo","_props","_previousNameRef","_registerProps","fieldState","onChange","onBlur","ref","elm","field","message","_shouldUnregisterField","previousName","updateMounted","HookFormContext","SelectBase","options","controlledValue","placeholder","allowClear","showSearch","searchPlaceholder","selectedBgColor","selectedTextColor","hoverBgColor","error","helperText","internalValue","setInternalValue","searchQuery","setSearchQuery","selectRef","searchInputRef","handleSelect","optionValue","handleClear","selectedOption","opt","filteredOptions","option","getTriggerStyles","getSelectedOptionStyles","ChevronIcon","ClearIcon","ControlledSelect","errorProp","rest","Select","Table","columns","dataSource","rowKey","pagination","loading","onRow","bordered","striped","headerBgColor","headerTextColor","rowHoverColor","stripedRowColor","currentPage","setCurrentPage","pageSize","setPageSize","sizeConfig","currentSizeConfig","currentRoundedClass","getRowKey","record","getValue","dataIndex","obj","paginatedData","handlePageChange","page","handlePageSizeChange","newPageSize","column","idx","rowProps","stripedBg","hoverBg","colIdx","content","Pagination","current","total","onPageSizeChange","showSizeChanger","pageSizeOptions","showTotal","totalPages","startItem","endItem","getPageNumbers","pages","i","TableTop","title","description","onSearch","actions","filters","titleColor","descriptionColor","searchBgColor","searchBorderColor","searchFocusBorderColor","hideActionButtons","selectedActionButton","handleSearchChange","config","radiusClass","searchInputStyle","widthMap","Modal","open","onClose","footer","closable","maskClosable","centered","overlayColor","bodyClassName","headerClassName","maxHeight","isVisible","setIsVisible","isAnimating","setIsAnimating","effectiveWidth","modalStyle","headerStyle","overlayStyle","timer","handleEscape","handleMaskClick","handleModalClick","Badge","dot","variantClasses","dotSizeClasses","dotColorClasses","Steps","direction","finishColor","processColor","waitColor","errorColor","lineColor","getStepStatus","textSizeClasses","descriptionSizeClasses","renderIcon","status","getStatusClasses","isOutline","statusClasses","isLast","iconStyle","Progress","percent","showInfo","strokeColor","strokeWidth","format","successColor","exceptionColor","trackColor","clampedPercent","heightClasses","getStatusColor","getTrackColor","getStatusIcon","formatPercent","Checkbox","controlledChecked","defaultChecked","indeterminate","id","checkedColor","uncheckedColor","checkedBorderColor","internalChecked","setInternalChecked","isControlled","checked","handleChange","newChecked","isFilled","getCheckboxClasses","getCheckboxInlineStyles","getIconColor","getSizeClasses","getRoundedClasses","SelectedItemsList","onRemove","emptyMessage","itemClassName","sublabelColor","removeButtonColor","removeButtonHoverColor","defaultBgColor","defaultHoverBgColor","defaultTextColor","defaultSublabelColor","defaultRemoveButtonColor","defaultRemoveButtonHoverColor","finalBgColor","finalHoverBgColor","finalTextColor","finalSublabelColor","finalRemoveButtonColor","finalRemoveButtonHoverColor","InputBase","errorClass","AntInput","ControlledInput","Input","PasswordInputBase","ControlledPasswordInput","PasswordInput","OTPInputBase","onComplete","errorMessage","otp","setOtp","inputRefs","otpArray","filledOtp","newOtp","otpString","digit","handleKeyDown","handlePaste","pastedData","pastedArray","nextIndex","el","ControlledOTPInput","errorMessageProp","hasError","OTPInput","PhoneInputBase","countryCode","onCountryCodeChange","countryCodes","showCountryCodeDropdown","customFormat","displayValue","setDisplayValue","cleaned","formatted","formatPhoneNumber","cursorPosition","oldLength","diff","newCursorPosition","syntheticEvent","numericData","start","newCleaned","ControlledPhoneInput","PhoneInput","CurrencyInputBase","currencySymbol","formatAmount","externalValue","formatNumber","num","parts","integerPart","decimalPart","formattedInteger","unformatNumber","stringValue","inputValue","rawValue","ControlledCurrencyInput","CurrencyInput","UserPill","subtitle","avatar","Avatar","UserOutlined","cardBorderSvg","UserCard","email","role","n","flagNG","flagUS","flagGB","flagGH","flagKE","flagZA","defaultCountries","CountrySelector","countries","defaultCountry","onCountryChange","renderFlag","flag","country","handleFilter","UserProfileDropdown","avatarUrl","menuItems","onMenuClick","defaultMenuItems","handleMenuClick","getInitials","ActionCard","currentColor","cardPatternSvg","DashboardCard","showVisibilityToggle","onVisibilityToggle","ledgerBalance","backgroundPattern","backgroundImage","topRight","handleToggleVisibility","emptyNotificationSvg","NotificationDropdown","count","notifications","onViewMore","notification","TabsComponent","defaultActiveKey","activeKey","Tabs"],"mappings":"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","x_google_ignoreList":[5]}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/Button/Button.tsx","../src/components/StatCard/StatCard.tsx","../src/components/SearchInput.tsx","../src/components/Card/Card.tsx","../src/components/Dropdown.tsx","../node_modules/react-hook-form/dist/index.esm.mjs","../src/components/Select.tsx","../src/components/Table.tsx","../src/components/TableTop.tsx","../src/components/Modal.tsx","../src/components/Badge.tsx","../src/components/Steps.tsx","../src/components/Progress.tsx","../src/components/Checkbox.tsx","../src/components/SelectedItemsList.tsx","../src/components/Input/Input.tsx","../src/components/Input/PasswordInput.tsx","../src/components/Input/OTPInput.tsx","../src/components/Input/PhoneInput.tsx","../src/components/Input/CurrencyInput.tsx","../src/components/UserPill/UserPill.tsx","../src/assets/card-border.svg","../src/components/UserCard/UserCard.tsx","../src/assets/flags/NG.svg","../src/assets/flags/US.svg","../src/assets/flags/GB.svg","../src/assets/flags/GH.svg","../src/assets/flags/KE.svg","../src/assets/flags/ZA.svg","../src/components/CountrySelector/CountrySelector.tsx","../src/components/UserProfileDropdown/UserProfileDropdown.tsx","../src/components/ActionCard/ActionCard.tsx","../src/assets/card-pattern.svg","../src/components/DashboardCard/DashboardCard.tsx","../src/assets/empty-notification.svg","../src/components/NotificationDropdown/NotificationDropdown.tsx","../src/components/TabsComponent/TabsComponent.tsx"],"sourcesContent":["import React from 'react';\nimport { Button as AntButton, ButtonProps as AntButtonProps } from 'antd';\n\nexport interface ButtonProps extends Omit<AntButtonProps, 'variant' | 'size'> {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost';\n size?: 'xsmall' | 'small' | 'medium' | 'large';\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'primary',\n size = 'large',\n className = '',\n children,\n ...props\n}) => {\n const getSizeHeight = () => {\n switch (size) {\n case 'xsmall':\n return '32px';\n case 'small':\n return '40px';\n case 'medium':\n return '48px';\n case 'large':\n return '52px';\n default:\n return '52px';\n }\n };\n\n const getVariantStyles = () => {\n const height = getSizeHeight();\n\n switch (variant) {\n case 'primary':\n return {\n backgroundColor: '#EC615B',\n borderColor: '#EC615B',\n color: '#FFFFFF',\n height,\n borderRadius: '8px',\n };\n case 'secondary':\n return {\n backgroundColor: '#6B7280',\n borderColor: '#6B7280',\n color: '#FFFFFF',\n height,\n borderRadius: '8px',\n };\n case 'outline':\n return {\n backgroundColor: 'transparent',\n borderColor: '#EC615B',\n color: '#EC615B',\n height,\n borderRadius: '8px',\n };\n case 'ghost':\n return {\n backgroundColor: '#EFF2F3',\n borderColor: '#EFF2F3',\n color: '#181918',\n height,\n borderRadius: '8px',\n };\n default:\n return {};\n }\n };\n\n const disabledStyles = props.disabled && variant === 'primary'\n ? {\n backgroundColor: '#F9CECC',\n borderColor: '#F9CECC',\n color: '#FFFFFF',\n cursor: 'not-allowed',\n opacity: 1,\n }\n : {};\n\n return (\n <>\n <style>\n {variant === 'primary' && `\n .ant-btn-default:disabled,\n .ant-btn-default:disabled:hover {\n background-color: #F9CECC !important;\n border-color: #F9CECC !important;\n color: #FFFFFF !important;\n cursor: not-allowed !important;\n opacity: 1 !important;\n }\n `}\n </style>\n <AntButton\n className={className}\n {...props}\n style={{\n ...getVariantStyles(),\n ...disabledStyles,\n userSelect: 'none',\n ...props.style,\n }}\n onMouseEnter={(e) => {\n if (!props.disabled) {\n if (variant === 'primary') {\n (e.target as HTMLElement).style.backgroundColor = '#D8524D';\n } else if (variant === 'secondary') {\n (e.target as HTMLElement).style.backgroundColor = '#4B5563';\n } else if (variant === 'outline') {\n (e.target as HTMLElement).style.backgroundColor = '#F3F4F6';\n } else if (variant === 'ghost') {\n (e.target as HTMLElement).style.backgroundColor = '#E1E4E6';\n }\n }\n props.onMouseEnter?.(e as any);\n }}\n onMouseLeave={(e) => {\n if (!props.disabled) {\n const styles = getVariantStyles();\n (e.target as HTMLElement).style.backgroundColor = styles.backgroundColor || '';\n }\n props.onMouseLeave?.(e as any);\n }}\n >\n {children}\n </AntButton>\n </>\n );\n};\n","import React from 'react';\n\nexport interface StatCardProps {\n label: string;\n value: string | number;\n icon?: React.ReactNode;\n iconBackgroundColor?: string;\n iconColor?: string;\n valuePrefix?: string;\n progressText?: string | React.ReactNode;\n badge?: string | React.ReactNode;\n width?: string | number;\n className?: string;\n selected?: boolean;\n onClick?: () => void;\n size?: 'sm' | 'md' | 'lg';\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n}\n\nexport const StatCard: React.FC<StatCardProps> = ({\n label,\n value,\n icon,\n iconBackgroundColor = '#E8F4FD',\n iconColor = '#4A9FD8',\n valuePrefix = '₦',\n progressText,\n badge,\n width = 347,\n className = '',\n selected = false,\n onClick,\n size = 'md',\n rounded = '2xl',\n}) => {\n const sizeClass = size === 'sm' ? 'p-3' : size === 'lg' ? 'p-6' : 'p-4';\n\n const roundedMap: Record<string, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n full: 'rounded-full',\n };\n const roundedClass = roundedMap[rounded] ?? 'rounded-2xl';\n const defaultIcon = (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M3 10h18M7 14h4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n\n return (\n <div\n className={`bg-white border flex flex-col justify-between transition-all duration-300 ease-in-out hover:border-gray-300 hover:-translate-y-1 cursor-pointer ${sizeClass} ${roundedClass} ${selected ? 'border-[#EC615B]' : 'border-[#E6E6E6]'} ${className}`}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n boxShadow: selected ? '0 0 0 1px #EC615B' : '0 0 0 0 rgba(0, 0, 0, 0)',\n transition: 'all 0.3s ease-in-out',\n }}\n onClick={onClick}\n onMouseEnter={(e) => {\n e.currentTarget.style.boxShadow = selected ? '0 0 0 1px #EC615B' : '0 0 20px 0 rgba(0, 0, 0, 0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = selected ? '0 0 0 1px #EC615B' : '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n >\n <div>\n <div className=\"flex items-center justify-between mb-6\">\n <div\n className=\"w-9 h-9 rounded-full flex items-center justify-center shrink-0 [&>svg]:w-5 [&>svg]:h-5 transition-transform duration-300 ease-in-out group-hover:scale-110\"\n style={{\n backgroundColor: iconBackgroundColor,\n color: iconColor,\n }}\n >\n {icon || defaultIcon}\n </div>\n {badge && badge}\n </div>\n <div className=\"text-sm text-[#181918] font-light transition-colors duration-200\">\n {label}\n </div>\n <div className=\"text-[20px] font-bold text-[#181918] transition-all duration-200\">\n {valuePrefix} {value}\n </div>\n </div>\n {progressText && (\n <div className=\"text-xs text-gray-400 font-normal mt-4 transition-colors duration-200\">\n {progressText}\n </div>\n )}\n </div>\n );\n};\n","import type { FC, ReactNode, InputHTMLAttributes, CSSProperties } from 'react';\n\n/**\n * @deprecated SearchInput is deprecated as of v1.0.11. Please use the new Input component instead.\n * The new Input component provides better functionality and consistent styling with Ant Design.\n */\nexport interface SearchInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n fullWidth?: boolean;\n onIconClick?: () => void;\n bgColor?: string;\n borderColor?: string;\n focusBorderColor?: string;\n iconColor?: string;\n textColor?: string;\n placeholderColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n style?: CSSProperties;\n}\n\n/**\n * @deprecated SearchInput is deprecated as of v1.0.11. Please use the new Input component instead.\n */\nexport const SearchInput: FC<SearchInputProps> = ({\n icon,\n iconPosition = 'left',\n size = 'md',\n fullWidth = false,\n className = '',\n onIconClick,\n bgColor,\n borderColor,\n focusBorderColor,\n iconColor,\n textColor,\n placeholderColor,\n rounded = 'md',\n style,\n ...props\n}) => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n '[Shekel Shared Lib] SearchInput is deprecated as of v1.0.11. Please use the new Input component instead for better functionality and consistent styling.'\n );\n }\n\n const containerBaseClasses = 'relative inline-flex items-center';\n\n const inputBaseClasses =\n 'border focus:outline-none focus:ring-1 transition-all duration-200 ease-in-out';\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n responsive: 'px-3 sm:px-4 md:px-5 py-1.5 sm:py-2 md:py-3 text-sm sm:text-base md:text-lg',\n };\n\n const iconSizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n responsive: 'w-4 sm:w-5 md:w-6 h-4 sm:h-5 md:h-6',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n full: 'rounded-full',\n };\n\n const paddingWithIcon =\n iconPosition === 'left'\n ? size === 'sm'\n ? 'pl-9'\n : size === 'md'\n ? 'pl-10'\n : size === 'lg'\n ? 'pl-12'\n : 'pl-9 sm:pl-10 md:pl-12'\n : size === 'sm'\n ? 'pr-9'\n : size === 'md'\n ? 'pr-10'\n : size === 'lg'\n ? 'pr-12'\n : 'pr-9 sm:pr-10 md:pr-12';\n\n const widthClass = fullWidth ? 'w-full' : '';\n\n // Build custom styles for colors\n const customStyles: CSSProperties = {\n backgroundColor: bgColor,\n borderColor: borderColor || '#D1D5DB',\n color: textColor,\n ...style,\n };\n\n // Determine placeholder color class\n const placeholderClass = placeholderColor\n ? ''\n : 'placeholder:text-gray-400';\n\n // Build border and default colors\n const defaultBorderClass = borderColor ? '' : 'border-gray-300';\n const defaultTextClass = textColor ? '' : 'text-gray-900';\n const defaultFocusClass = focusBorderColor\n ? ''\n : 'focus:ring-[#EC615B] focus:border-[#EC615B]';\n\n const inputClassName = `${inputBaseClasses} ${!className.includes('px-') && !className.includes('py-') ? sizeClasses[size] : ''} ${\n icon ? paddingWithIcon : ''\n } ${widthClass} ${!className.includes('rounded') ? roundedClasses[rounded] : ''} ${!className.includes('border-') ? defaultBorderClass : ''} ${defaultTextClass} ${defaultFocusClass} ${placeholderClass} ${className}`;\n\n const iconPositionClasses = iconPosition === 'left' ? 'left-3' : 'right-3';\n const defaultIconColor = iconColor || 'text-gray-400';\n const hoverIconColor = iconColor ? '' : 'hover:text-gray-600';\n\n const defaultSearchIcon = (\n <svg\n className={`${iconSizeClasses[size]} ${defaultIconColor}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n );\n\n return (\n <div className={`${containerBaseClasses} ${widthClass}`}>\n {icon && (\n <div\n className={`absolute ${iconPositionClasses} ${defaultIconColor} ${\n onIconClick ? 'cursor-pointer' : ''\n } ${hoverIconColor}`}\n onClick={onIconClick}\n >\n {icon === true ? defaultSearchIcon : icon}\n </div>\n )}\n <input\n type=\"text\"\n className={inputClassName}\n style={{\n ...customStyles,\n ...(focusBorderColor && {\n '--focus-border-color': focusBorderColor,\n } as CSSProperties),\n ...(placeholderColor && {\n '--placeholder-color': placeholderColor,\n } as CSSProperties),\n }}\n {...props}\n />\n </div>\n );\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport { Card as AntCard, CardProps as AntCardProps } from 'antd';\n\nexport interface CardProps extends AntCardProps {\n shadow?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const Card: React.FC<CardProps> = ({\n shadow = 'md',\n className = '',\n children,\n ...props\n}) => {\n const shadowClasses = {\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n xl: 'shadow-xl'\n };\n\n const combinedClassName = `${shadowClasses[shadow]} rounded-lg ${className}`;\n\n return (\n <AntCard\n className={combinedClassName}\n {...props}\n >\n {children}\n </AntCard>\n );\n};\n","import { useState, useRef, useEffect } from 'react';\nimport type { FC, ReactNode, CSSProperties } from 'react';\n\nexport interface DropdownMenuItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n danger?: boolean;\n onClick?: () => void;\n}\n\nexport interface DropdownProps {\n items: DropdownMenuItem[];\n trigger?: 'click' | 'hover';\n placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';\n children: ReactNode;\n className?: string;\n overlayClassName?: string;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n menuBgColor?: string;\n menuItemHoverColor?: string;\n dangerColor?: string;\n borderColor?: string;\n style?: CSSProperties;\n}\n\nexport const Dropdown: FC<DropdownProps> = ({\n items,\n trigger = 'click',\n placement = 'bottomLeft',\n children,\n className = '',\n overlayClassName = '',\n disabled = false,\n size = 'md',\n menuBgColor,\n menuItemHoverColor,\n dangerColor,\n borderColor,\n style,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: Event) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n const handleTriggerClick = () => {\n if (!disabled && trigger === 'click') {\n setIsOpen(!isOpen);\n }\n };\n\n const handleTriggerMouseEnter = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(true);\n }\n };\n\n const handleTriggerMouseLeave = () => {\n if (!disabled && trigger === 'hover') {\n setIsOpen(false);\n }\n };\n\n const handleMenuItemClick = (item: DropdownMenuItem) => {\n if (!item.disabled && item.onClick) {\n item.onClick();\n }\n setIsOpen(false);\n };\n\n const placementClasses = {\n bottomLeft: 'top-full left-0 mt-1',\n bottomRight: 'top-full right-0 mt-1',\n topLeft: 'bottom-full left-0 mb-1',\n topRight: 'bottom-full right-0 mb-1',\n };\n\n const animationClasses = placement.startsWith('bottom')\n ? 'dropdown-slide-down'\n : 'dropdown-slide-up';\n\n const sizeClasses = {\n sm: 'min-w-[120px] text-xs',\n md: 'min-w-[160px] text-sm',\n lg: 'min-w-[220px] text-base',\n responsive: 'min-w-[120px] sm:min-w-[160px] md:min-w-[200px] lg:min-w-[240px] text-xs sm:text-sm md:text-base',\n };\n\n const itemSizeClasses = {\n sm: 'px-3 py-1.5 text-xs gap-1.5',\n md: 'px-4 py-2 text-sm gap-2',\n lg: 'px-5 py-3 text-base gap-2.5',\n responsive: 'px-3 sm:px-4 md:px-5 py-1.5 sm:py-2 md:py-3 text-xs sm:text-sm md:text-base gap-1.5 sm:gap-2 md:gap-2.5',\n };\n\n // Color styling helpers\n const defaultHoverColor = 'hover:bg-gray-50';\n const defaultBorderColor = 'border-gray-200';\n const defaultDangerColor = 'text-red-600';\n\n // Hover color handling\n const hoverColorStyle = menuItemHoverColor ? { backgroundColor: menuItemHoverColor } : {};\n const customHoverClass = menuItemHoverColor ? '' : defaultHoverColor;\n\n // Danger color handling\n const customDangerStyle = dangerColor ? { color: dangerColor } : {};\n const dangerHoverBgStyle = dangerColor ? { backgroundColor: dangerColor + '15' } : {};\n\n // Border color handling\n const finalBorderColor = borderColor || defaultBorderColor;\n\n return (\n <div\n ref={dropdownRef}\n className={`relative inline-block ${className}`}\n onMouseEnter={handleTriggerMouseEnter}\n onMouseLeave={handleTriggerMouseLeave}\n style={style}\n >\n <div\n onClick={handleTriggerClick}\n className={`inline-flex ${disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'}`}\n >\n {children}\n </div>\n\n {isOpen && !disabled && (\n <div\n className={`absolute ${placementClasses[placement]} ${animationClasses} z-50 ${sizeClasses[size]} ${overlayClassName}`}\n >\n <div\n className={`dropdown-menu rounded-lg shadow-lg border py-1 overflow-hidden ${finalBorderColor}`}\n style={{ backgroundColor: menuBgColor || '#ffffff' }}\n >\n {items.map((item) => {\n // Determine item-specific styles\n let itemStyle: React.CSSProperties = {};\n\n if (!item.disabled) {\n if (item.danger) {\n // Danger items use custom danger color if provided\n itemStyle = {\n ...customDangerStyle,\n ...dangerHoverBgStyle,\n };\n } else if (menuItemHoverColor) {\n // Custom hover color applied inline\n itemStyle = hoverColorStyle;\n }\n }\n\n return (\n <div\n key={item.key}\n onClick={() => handleMenuItemClick(item)}\n className={`\n dropdown-menu-item\n flex items-center cursor-pointer transition-all duration-200 ease-out\n ${!overlayClassName.includes('px-') && !overlayClassName.includes('py-') ? itemSizeClasses[size] : ''}\n ${item.disabled ? 'opacity-50 cursor-not-allowed' : customHoverClass}\n ${item.danger ? (dangerColor ? '' : defaultDangerColor) : 'text-gray-700'}\n `}\n style={itemStyle}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar isNameInFieldArray = (names, name) => name\n .split('.')\n .some((part, index, arr) => !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n if (data instanceof Date) {\n return new Date(data);\n }\n const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n if (isWeb && (data instanceof Blob || isFileListInstance)) {\n return data;\n }\n const isArray = Array.isArray(data);\n if (!isArray && !(isObject(data) && isPlainObject(data))) {\n return data;\n }\n const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n return copy;\n}\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n SUBMIT: 'submit',\n TRIGGER: 'trigger',\n VALID: 'valid',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\nconst FORM_ERROR_TYPE = 'form';\nconst ROOT_ERROR_TYPE = 'root';\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = React.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => React.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const formControl = useFormControlContext();\n const { control = formControl, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: (formState) => {\n !disabled &&\n updateFormState({\n ...control._formState,\n ...formState,\n });\n },\n }), [name, disabled, exact]);\n React.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2, _internal_visited = new WeakSet()) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return Object.is(object1, object2);\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return Object.is(object1.getTime(), object2.getTime());\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n ((isObject(val1) || Array.isArray(val1)) &&\n (isObject(val2) || Array.isArray(val2)))\n ? !deepEqual(val1, val2, _internal_visited)\n : !Object.is(val1, val2)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n const _defaultValue = React.useRef(defaultValue);\n const _compute = React.useRef(compute);\n const _computeFormValues = React.useRef(undefined);\n const _prevControl = React.useRef(control);\n const _prevName = React.useRef(name);\n _compute.current = compute;\n const [value, updateValue] = React.useState(() => {\n const defaultValue = control._getWatch(name, _defaultValue.current);\n return _compute.current ? _compute.current(defaultValue) : defaultValue;\n });\n const getCurrentOutput = React.useCallback((values) => {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n return _compute.current ? _compute.current(formValues) : formValues;\n }, [control._formValues, control._names, name]);\n const refreshValue = React.useCallback((values) => {\n if (!disabled) {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n }\n else {\n updateValue(formValues);\n }\n }\n }, [control._formValues, control._names, disabled, name]);\n useIsomorphicLayoutEffect(() => {\n if (_prevControl.current !== control ||\n !deepEqual(_prevName.current, name)) {\n _prevControl.current = control;\n _prevName.current = name;\n refreshValue();\n }\n return control._subscribe({\n name,\n formState: {\n values: true,\n },\n exact,\n callback: (formState) => {\n refreshValue(formState.values);\n },\n });\n }, [control, exact, name, refreshValue]);\n React.useEffect(() => control._removeUnmounted());\n // If name or control changed for this render, synchronously reflect the\n // latest value so callers (like useController) see the correct value\n // immediately on the same render.\n // Optimize: Check control reference first before expensive deepEqual\n const controlChanged = _prevControl.current !== control;\n const prevName = _prevName.current;\n // Cache the computed output to avoid duplicate calls within the same render\n // We include shouldReturnImmediate in deps to ensure proper recomputation\n const computedOutput = React.useMemo(() => {\n if (disabled) {\n return null;\n }\n const nameChanged = !controlChanged && !deepEqual(prevName, name);\n const shouldReturnImmediate = controlChanged || nameChanged;\n return shouldReturnImmediate ? getCurrentOutput() : null;\n }, [disabled, controlChanged, name, prevName, getCurrentOutput]);\n return computedOutput !== null ? computedOutput : value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const formControl = useFormControlContext();\n const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact,\n });\n const formState = useFormState({\n control,\n name,\n exact,\n });\n const _props = React.useRef(props);\n const _previousNameRef = React.useRef(undefined);\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n _props.current = props;\n const fieldState = React.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }), [formState, name]);\n const onChange = React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]);\n const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control._formValues]);\n const ref = React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && field._f && elm) {\n field._f.ref = {\n focus: () => isFunction(elm.focus) && elm.focus(),\n select: () => isFunction(elm.select) && elm.select(),\n setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n };\n }\n }, [control._fields, name]);\n const field = React.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange,\n onBlur,\n ref,\n }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const previousName = _previousNameRef.current;\n if (previousName && previousName !== name && !isArrayField) {\n control.unregister(previousName);\n }\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled)\n ? { disabled: _props.current.disabled }\n : {}),\n });\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name, _props.current.defaultValue));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n _previousNameRef.current = name;\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n control._setDisabledField({\n disabled,\n name,\n });\n }, [disabled, name, control]);\n return React.useMemo(() => ({\n field,\n formState,\n fieldState,\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n }\n else {\n output[key] = obj[key];\n }\n }\n return output;\n};\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;\n const memoizedValue = React.useMemo(() => ({\n watch,\n getValues,\n getFieldState,\n setError,\n clearErrors,\n setValue,\n trigger,\n formState,\n resetField,\n reset,\n handleSubmit,\n unregister,\n control,\n register,\n setFocus,\n subscribe,\n }), [\n clearErrors,\n control,\n formState,\n getFieldState,\n getValues,\n handleSubmit,\n register,\n reset,\n resetField,\n setError,\n setFocus,\n setValue,\n subscribe,\n trigger,\n unregister,\n watch,\n ]);\n return (React.createElement(HookFormContext.Provider, { value: memoizedValue },\n React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data'\n ? { 'Content-Type': encType }\n : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nconst FormStateSubscribe = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n const values = {};\n for (const key in fieldsState) {\n if (fieldsState.hasOwnProperty(key)) {\n const fieldState = fieldsState[key];\n const fieldValue = formValues[key];\n if (fieldState && isObject(fieldState) && fieldValue) {\n const nestedFieldsState = extractFormValues(fieldState, fieldValue);\n if (isObject(nestedFieldsState)) {\n values[key] = nestedFieldsState;\n }\n }\n else if (fieldsState[key]) {\n values[key] = fieldValue;\n }\n }\n }\n return values;\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction isTraversable(value) {\n return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction markFieldsDirty(data, fields = {}) {\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n fields[key] = Array.isArray(value) ? [] : {};\n markFieldsDirty(value, fields[key]);\n }\n else if (!isUndefined(value)) {\n fields[key] = true;\n }\n }\n return fields;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues) {\n if (!dirtyFieldsFromValues) {\n dirtyFieldsFromValues = markFieldsDirty(formValues);\n }\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {});\n }\n else {\n getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n const formValue = formValues[key];\n dirtyFieldsFromValues[key] = !deepEqual(value, formValue);\n }\n }\n return dirtyFieldsFromValues;\n}\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n !!fieldReference.validate &&\n !!((isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n }\n else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, ROOT_ERROR_TYPE, error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isString(result) ||\n (Array.isArray(result) && result.every(isString)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isString(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isString(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isReady: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n keepIsValid: false,\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n registerName: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const defaultProxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _proxyFormState = {\n ...defaultProxyFormState,\n };\n let _proxySubscribeFormState = {\n ..._proxyFormState,\n };\n const _subjects = {\n array: createSubject(),\n state: createSubject(),\n };\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _setValid = async (shouldUpdateValid) => {\n if (_state.keepIsValid) {\n return;\n }\n if (!_options.disabled &&\n (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid ||\n shouldUpdateValid)) {\n let isValid;\n if (_options.resolver) {\n isValid = isEmptyObject((await _runSchema()).errors);\n _updateIsValidating();\n }\n else {\n isValid = await executeBuiltInValidation({\n fields: _fields,\n onlyCheckValid: true,\n eventType: EVENTS.VALID,\n });\n }\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled &&\n (_proxyFormState.isValidating ||\n _proxyFormState.validatingFields ||\n _proxySubscribeFormState.isValidating ||\n _proxySubscribeFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _updateDirtyFields = (name) => {\n const fullDirtyFields = getDirtyFields(_defaultValues, _formValues);\n const rootName = getNodeParentName(name);\n set(_formState.dirtyFields, rootName, get(fullDirtyFields, rootName));\n };\n const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n _updateDirtyFields(name);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && !_state.action && _setValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.dirtyFields ||\n _proxySubscribeFormState.dirtyFields) &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _runSchema = async (name) => {\n _updateIsValidating(name, true);\n return await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _runSchema(names);\n _updateIsValidating(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const validateForm = async ({ name, eventType, }) => {\n if (props.validate) {\n const result = await props.validate({\n formValues: _formValues,\n formState: _formState,\n name,\n eventType,\n });\n if (isObject(result)) {\n for (const key in result) {\n const error = result[key];\n if (error) {\n setError(`${FORM_ERROR_TYPE}.${key}`, {\n message: isString(result.message) ? result.message : '',\n type: INPUT_VALIDATION_RULES.validate,\n });\n }\n }\n }\n else if (isString(result) || !result) {\n setError(FORM_ERROR_TYPE, {\n message: result || '',\n type: INPUT_VALIDATION_RULES.validate,\n });\n }\n else {\n clearErrors(FORM_ERROR_TYPE);\n }\n return result;\n }\n return true;\n };\n const executeBuiltInValidation = async ({ fields, onlyCheckValid, name, eventType, context = {\n valid: true,\n runRootValidation: false,\n }, }) => {\n if (props.validate) {\n context.runRootValidation = true;\n const result = await validateForm({\n name,\n eventType,\n });\n if (!result) {\n context.valid = false;\n if (onlyCheckValid) {\n return context.valid;\n }\n }\n }\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !onlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (onlyCheckValid) {\n break;\n }\n }\n !onlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n if (props.shouldUseNativeValidation && fieldError[_f.name]) {\n break;\n }\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation({\n context,\n onlyCheckValid,\n fields: fieldValue,\n name: name,\n eventType,\n }));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.forEach((checkboxRef) => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n }\n else {\n checkboxRef.checked =\n fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.state.next({\n name,\n values: cloneObject(_formValues),\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n isObject(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: cloneObject(_formValues),\n });\n if ((_proxyFormState.isDirty ||\n _proxyFormState.dirtyFields ||\n _proxySubscribeFormState.isDirty ||\n _proxySubscribeFormState.dirtyFields) &&\n options.shouldDirty) {\n _updateDirtyFields(name);\n _subjects.state.next({\n name,\n dirtyFields: _formState.dirtyFields,\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n if (isWatched(name, _names)) {\n _subjects.state.next({\n ..._formState,\n name,\n values: cloneObject(_formValues),\n });\n }\n else {\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues),\n });\n }\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !props.validate &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues),\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n }\n else if (!isBlurEvent) {\n _setValid();\n }\n }\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n if (!_options.resolver && props.validate) {\n await validateForm({\n name: name,\n eventType: event.type,\n });\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _runSchema([name]);\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid) {\n isValid = await executeBuiltInValidation({\n fields: _fields,\n onlyCheckValid: true,\n name: name,\n eventType: event.type,\n });\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation({\n fields: field && field._f ? { [fieldName]: field } : field,\n eventType: EVENTS.TRIGGER,\n });\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _setValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation({\n fields: _fields,\n name,\n eventType: EVENTS.TRIGGER,\n });\n }\n _subjects.state.next({\n ...(!isString(name) ||\n ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames, config) => {\n let values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n if (config) {\n values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n }\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n const names = name ? convertToArrayPayload(name) : undefined;\n names === null || names === void 0 ? void 0 : names.forEach((inputName) => unset(_formState.errors, inputName));\n if (names) {\n // Emit for each cleared field with the field name so that\n // shouldSubscribeByName can filter and avoid broad re-renders\n names.forEach((inputName) => {\n _subjects.state.next({\n name: inputName,\n errors: _formState.errors,\n });\n });\n }\n else {\n // Clear all errors - emit without name to notify all subscribers\n _subjects.state.next({\n errors: {},\n });\n }\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.state.subscribe({\n next: (payload) => 'values' in payload &&\n name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const _subscribe = (props) => _subjects.state.subscribe({\n next: (formState) => {\n if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n props.callback({\n values: { ..._formValues },\n ..._formState,\n ...formState,\n defaultValues: _defaultValues,\n });\n }\n },\n }).unsubscribe;\n const subscribe = (props) => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState,\n };\n return _subscribe({\n ...props,\n formState: {\n ...defaultProxyFormState,\n ...props.formState,\n },\n });\n };\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.state.next({\n values: cloneObject(_formValues),\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _setValid();\n };\n const _setDisabledField = ({ disabled, name, }) => {\n if ((isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)) {\n const wasDisabled = _names.disabled.has(name);\n const isDisabled = !!disabled;\n const disabledStateChanged = wasDisabled !== isDisabled;\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n disabledStateChanged && _state.mount && !_state.action && _setValid();\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n const shouldRevalidateRemount = !_names.registerName.has(name) && field && !field._f.mount;\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field && !shouldRevalidateRemount) {\n _setDisabledField({\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n _names.registerName.add(name);\n register(name, options);\n _names.registerName.delete(name);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist &&\n e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _runSchema();\n _updateIsValidating();\n _formState.errors = errors;\n fieldValues = cloneObject(values);\n }\n else {\n await executeBuiltInValidation({\n fields: _fields,\n eventType: EVENTS.SUBMIT,\n });\n }\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\n }\n unset(_formState.errors, ROOT_ERROR_TYPE);\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _setValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n const isDirty = get(_formState.dirtyFields, fieldName);\n const existingValue = get(_formValues, fieldName);\n const newValue = get(values, fieldName);\n if (isDirty && !isUndefined(existingValue)) {\n set(values, fieldName, existingValue);\n }\n else if (!isDirty && !isUndefined(newValue)) {\n setValue(fieldName, newValue);\n }\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n _fields = {};\n }\n }\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.state.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n registerName: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues ||\n (!_options.shouldUnregister && !isEmptyObject(values));\n _state.watch = !!_options.shouldUnregister;\n _state.keepIsValid = !!keepStateOptions.keepIsValid;\n _state.action = false;\n // Clear errors synchronously to prevent validation errors on subsequent submissions\n // This fixes the issue where form.reset() causes validation errors on subsequent\n // submissions in Next.js 16 with Server Actions\n if (!keepStateOptions.keepErrors) {\n _formState.errors = {};\n }\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n defaultValues: _defaultValues,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, { ..._options.resetOptions, ...keepStateOptions });\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n // Use setTimeout to ensure focus happens after any pending state updates\n // This fixes the issue where setFocus doesn't work immediately after setError\n setTimeout(() => {\n fieldRef.focus();\n options.shouldSelect &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n });\n }\n }\n };\n const _setFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _updateIsValidating,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n subscribe,\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n return {\n ...methods,\n formControl: methods,\n };\n}\n\nvar generateId = () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((Math.random() * 16 + d) % 16) | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, keyName = 'id', shouldUnregister, rules, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _actioned = React.useRef(false);\n control._names.array.add(name);\n React.useMemo(() => rules &&\n fields.length >= 0 &&\n control.register(name, rules), [control, name, fields.length, rules]);\n useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n }).unsubscribe, [control, name]);\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) &&\n set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted) &&\n !getValidationModes(control._options.reValidateMode).isOnSubmit) {\n if (control._options.resolver) {\n control._runSchema([name]).then((result) => {\n control._updateIsValidating([name]);\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues),\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n return () => {\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n control._options.shouldUnregister || shouldUnregister\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef(undefined);\n const _values = React.useRef(undefined);\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n isReady: false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState,\n };\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n }\n else {\n const { formControl, ...rest } = createFormControl(props);\n _formControl.current = {\n ...rest,\n formState,\n };\n }\n }\n const control = _formControl.current.control;\n control._options = props;\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({ ...control._formState }),\n reRenderRoot: true,\n });\n updateFormState((data) => ({\n ...data,\n isReady: true,\n }));\n control._formState.isReady = true;\n return sub;\n }, [control]);\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.state.next({\n values: control._getWatch(),\n });\n }, [control, props.shouldUnregister]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n var _a;\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, {\n keepFieldsRef: true,\n ...control._options.resetOptions,\n });\n if (!((_a = control._options.resetOptions) === null || _a === void 0 ? void 0 : _a.keepIsValid)) {\n control._setValid();\n }\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n _formControl.current.formState = React.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n return _formControl.current;\n}\n\n/**\n * Watch component that subscribes to form field changes and re-renders when watched fields update.\n *\n * @param control - The form control object from useForm\n * @param name - Can be field name, array of field names, or undefined to watch the entire form\n * @param disabled - Disable subscription\n * @param exact - Whether to watch exact field names or not\n * @param defaultValue - The default value to use if the field is not yet set\n * @param compute - Function to compute derived values from watched fields\n * @param render - The function that receives watched values and returns ReactNode\n * @returns The result of calling render function with watched values\n *\n * @example\n * The `Watch` component only re-render when the values of `foo`, `bar`, and `baz.qux` change.\n * The types of `foo`, `bar`, and `baz.qux` are precisely inferred.\n *\n * ```tsx\n * const { control } = useForm();\n *\n * <Watch\n * control={control}\n * names={['foo', 'bar', 'baz.qux']}\n * render={([foo, bar, baz_qux]) => <div>{foo}{bar}{baz_qux}</div>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\nexport { Controller, Form, FormProvider, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import { useState, useRef, useEffect } from 'react';\nimport type { FC, MouseEvent, CSSProperties } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n value?: string | number;\n defaultValue?: string | number;\n placeholder?: string;\n onChange?: (value: string | number) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n fullWidth?: boolean;\n className?: string;\n allowClear?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n bgColor?: string;\n borderColor?: string;\n focusBorderColor?: string;\n selectedBgColor?: string;\n selectedTextColor?: string;\n hoverBgColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n style?: CSSProperties;\n label?: string;\n error?: string;\n helperText?: string;\n control?: Control<any>;\n}\n\nconst SelectBase: FC<Omit<SelectProps, 'control'>> = ({\n options,\n value: controlledValue,\n defaultValue,\n placeholder = 'Select an option',\n onChange,\n onBlur,\n name,\n disabled = false,\n size = 'md',\n fullWidth = false,\n className = '',\n allowClear = false,\n showSearch = false,\n searchPlaceholder = 'Search...',\n bgColor,\n borderColor,\n focusBorderColor = '#EC615B',\n selectedBgColor,\n selectedTextColor,\n hoverBgColor,\n rounded = 'lg',\n style,\n label,\n error,\n helperText,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<string | number | undefined>(defaultValue);\n const [searchQuery, setSearchQuery] = useState('');\n const selectRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n useEffect(() => {\n const handleClickOutside = (event: Event) => {\n if (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchQuery('');\n if (isOpen) onBlur?.();\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n if (showSearch && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, showSearch]);\n\n const handleSelect = (optionValue: string | number) => {\n if (controlledValue === undefined) {\n setInternalValue(optionValue);\n }\n onChange?.(optionValue);\n setIsOpen(false);\n setSearchQuery('');\n };\n\n const handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n if (controlledValue === undefined) {\n setInternalValue(undefined);\n }\n onChange?.('' as any);\n };\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const filteredOptions = showSearch\n ? options.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : options;\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-5 py-3 text-lg',\n responsive: 'px-3 sm:px-4 md:px-5 py-1.5 sm:py-2 md:py-3 text-sm sm:text-base md:text-lg',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const widthClass = fullWidth ? 'w-full' : 'min-w-[200px]';\n\n const getTriggerStyles = (): CSSProperties => {\n const styles: CSSProperties = {};\n if (bgColor) styles.backgroundColor = bgColor;\n if (borderColor) styles.borderColor = borderColor;\n return styles;\n };\n\n const getSelectedOptionStyles = (): CSSProperties => {\n const styles: CSSProperties = {};\n if (selectedBgColor) styles.backgroundColor = selectedBgColor;\n if (selectedTextColor) styles.color = selectedTextColor;\n return styles;\n };\n\n const ChevronIcon = (\n <svg\n className={`w-4 h-4 transition-transform duration-200 ease-out ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n );\n\n const ClearIcon = (\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n );\n\n return (\n <div className={`relative inline-block ${widthClass}`} style={style}>\n {label && (\n <label className=\"block text-sm font-medium mb-2\" style={{ color: error ? '#C21919' : '#181918' }}>\n {label}\n </label>\n )}\n <div ref={selectRef} className=\"relative\">\n <input type=\"hidden\" name={name} value={value ?? ''} readOnly />\n <div\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className={`\n select-trigger\n flex items-center justify-between gap-2\n border transition-all duration-200 ease-out\n ${!className.includes('px-') && !className.includes('py-') && !className.includes('h-') ? sizeClasses[size] : ''}\n ${!className.includes('rounded') ? roundedClasses[rounded] : ''}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n ${isOpen ? 'ring-2 ring-opacity-20' : ''}\n ${className}\n `}\n style={{\n ...getTriggerStyles(),\n backgroundColor: bgColor || getTriggerStyles().backgroundColor || '#FFFFFF',\n borderColor: error\n ? '#C21919'\n : borderColor || getTriggerStyles().borderColor || '#D1D5DB',\n ...(isOpen && {\n borderColor: error ? '#C21919' : focusBorderColor,\n boxShadow: `0 0 0 2px ${error ? '#C21919' : focusBorderColor}20`,\n }),\n ...(!disabled && !isOpen && hoverBgColor && {\n cursor: 'pointer',\n }),\n }}\n onMouseEnter={(e) => {\n if (!disabled && hoverBgColor) {\n e.currentTarget.style.backgroundColor = hoverBgColor;\n }\n }}\n onMouseLeave={(e) => {\n if (bgColor) {\n e.currentTarget.style.backgroundColor = bgColor;\n } else {\n e.currentTarget.style.backgroundColor = '#FFFFFF';\n }\n }}\n >\n <span className={selectedOption ? 'text-gray-900' : 'text-gray-400'}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && value && !disabled && (\n <span\n onClick={handleClear}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n {ClearIcon}\n </span>\n )}\n <span className=\"text-gray-400\">{ChevronIcon}</span>\n </div>\n </div>\n\n {isOpen && !disabled && (\n <div className=\"absolute top-full left-0 right-0 mt-1 z-50 dropdown-slide-down\">\n <div className={`select-dropdown bg-white shadow-lg border border-gray-200 py-1 max-h-[300px] overflow-auto ${roundedClasses[rounded]}`}>\n {showSearch && (\n <div className=\"px-2 py-2 border-b border-gray-200\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={searchPlaceholder}\n className=\"w-full px-3 py-1.5 text-sm border border-gray-300 rounded focus:outline-none focus:ring-2 transition-all duration-200 ease-out\"\n style={{\n borderColor: borderColor,\n boxShadow: `0 0 0 2px ${focusBorderColor}20`,\n }}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )}\n {filteredOptions.length === 0 ? (\n <div className=\"px-4 py-3 text-sm text-gray-500 text-center\">\n No results found\n </div>\n ) : (\n filteredOptions.map((option) => (\n <div\n key={option.value}\n onClick={() => !option.disabled && handleSelect(option.value)}\n className={`\n select-option\n px-4 py-2 text-sm transition-all duration-200 ease-out\n ${option.disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n `}\n style={{\n ...(option.value === value ? getSelectedOptionStyles() : {}),\n backgroundColor: option.value === value ? (selectedBgColor || '#FCEAE9') : undefined,\n color: option.value === value ? (selectedTextColor || '#EC615B') : '#181918',\n fontWeight: option.value === value ? 'medium' : undefined,\n }}\n onMouseEnter={(e) => {\n if (!option.disabled && option.value !== value) {\n e.currentTarget.style.backgroundColor = hoverBgColor || '#F3F4F6';\n }\n }}\n onMouseLeave={(e) => {\n if (option.value !== value) {\n e.currentTarget.style.backgroundColor = 'transparent';\n }\n }}\n >\n {option.label}\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n};\n\nconst ControlledSelect: FC<SelectProps & { control: NonNullable<SelectProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <SelectBase\n {...rest}\n value={field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n name={name}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const Select: FC<SelectProps> = ({ control, name, ...props }) => {\n if (control && name) {\n return <ControlledSelect control={control} name={name} {...props} />;\n }\n return <SelectBase name={name} {...props} />;\n};\n\nexport default Select;\n","import { useState } from 'react';\nimport type { FC, ReactNode, HTMLAttributes, CSSProperties } from 'react';\nimport { Select } from './Select';\n\nexport interface ColumnDef<T = any> {\n key: string;\n title: string;\n dataIndex?: string;\n render?: (value: any, record: T, index: number) => ReactNode;\n width?: string | number;\n align?: 'left' | 'center' | 'right';\n sortable?: boolean;\n}\n\nexport interface TableProps<T = any> {\n columns: ColumnDef<T>[];\n dataSource: T[];\n rowKey?: string | ((record: T) => string);\n pagination?: PaginationConfig | false;\n loading?: boolean;\n onRow?: (record: T, index: number) => HTMLAttributes<HTMLTableRowElement>;\n className?: string;\n bordered?: boolean;\n striped?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n headerBgColor?: string;\n headerTextColor?: string;\n rowHoverColor?: string;\n borderColor?: string;\n stripedRowColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n style?: CSSProperties;\n}\n\nexport interface PaginationConfig {\n current?: number;\n pageSize?: number;\n total?: number;\n onChange?: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const Table = <T extends Record<string, any>>({\n columns,\n dataSource,\n rowKey = 'id',\n pagination,\n loading = false,\n onRow,\n className = '',\n bordered = false,\n striped = false,\n size = 'md',\n headerBgColor,\n headerTextColor,\n rowHoverColor,\n borderColor,\n stripedRowColor,\n rounded = 'md',\n style,\n}: TableProps<T>) => {\n const [currentPage, setCurrentPage] = useState(\n pagination && typeof pagination === 'object' ? pagination.current || 1 : 1\n );\n const [pageSize, setPageSize] = useState(\n pagination && typeof pagination === 'object' ? pagination.pageSize || 10 : 10\n );\n\n // Size configuration for responsive sizing\n const sizeConfig = {\n sm: {\n headerPadding: 'px-3 py-2',\n headerFontSize: 'text-xs',\n rowPadding: 'px-3 py-2',\n rowFontSize: 'text-xs',\n containerRounded: 'rounded-md',\n },\n md: {\n headerPadding: 'px-4 py-3',\n headerFontSize: 'text-xs',\n rowPadding: 'px-4 py-3',\n rowFontSize: 'text-sm',\n containerRounded: 'rounded-lg',\n },\n lg: {\n headerPadding: 'px-6 py-4',\n headerFontSize: 'text-sm',\n rowPadding: 'px-6 py-4',\n rowFontSize: 'text-base',\n containerRounded: 'rounded-xl',\n },\n responsive: {\n headerPadding: 'px-2 sm:px-3 md:px-4 py-2 sm:py-2.5 md:py-3',\n headerFontSize: 'text-xs sm:text-xs md:text-sm',\n rowPadding: 'px-2 sm:px-3 md:px-4 py-2 sm:py-2.5 md:py-3',\n rowFontSize: 'text-xs sm:text-xs md:text-sm',\n containerRounded: 'rounded-md sm:rounded-lg md:rounded-lg',\n },\n };\n\n // Rounded configuration\n const roundedClasses = {\n none: '',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n };\n\n const currentSizeConfig = sizeConfig[size];\n const currentRoundedClass = roundedClasses[rounded];\n\n const getRowKey = (record: T, index: number): string => {\n if (typeof rowKey === 'function') {\n return rowKey(record);\n }\n return record[rowKey] || String(index);\n };\n\n const getValue = (record: T, dataIndex?: string) => {\n if (!dataIndex) return record;\n return dataIndex.split('.').reduce((obj, key) => obj?.[key], record);\n };\n\n // Pagination logic\n const paginatedData =\n pagination === false\n ? dataSource\n : dataSource.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(page, pageSize);\n }\n };\n\n const handlePageSizeChange = (newPageSize: number) => {\n setPageSize(newPageSize);\n setCurrentPage(1);\n if (pagination && typeof pagination === 'object' && pagination.onChange) {\n pagination.onChange(1, newPageSize);\n }\n };\n\n return (\n <div className=\"w-full\" style={style}>\n <div\n className={`overflow-x-auto ${currentRoundedClass || 'rounded-2xl'} border`}\n style={{ borderColor: borderColor || '#EEEEEE' }}\n >\n <table className={`w-full ${bordered ? 'border-collapse' : ''} ${className}`}>\n <thead\n style={{\n backgroundColor: headerBgColor || '#F5F6F7',\n color: headerTextColor || '#333333',\n }}\n >\n <tr>\n {columns.map((column, idx) => (\n <th\n key={column.key}\n className={`${currentSizeConfig.headerPadding} text-left ${currentSizeConfig.headerFontSize} font-medium uppercase tracking-wider ${\n bordered && idx !== columns.length - 1 ? 'border-r' : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n style={{\n width: column.width,\n borderColor: borderColor || '#EEEEEE',\n color: headerTextColor || '#333333',\n }}\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n className=\"bg-white divide-y\"\n style={{ borderColor: borderColor || '#e5e5e5' }}\n >\n {loading ? (\n <tr>\n <td\n colSpan={columns.length}\n className={`${currentSizeConfig.rowPadding} py-8 text-center`}\n style={{ color: '#333333' }}\n >\n <div className=\"flex justify-center items-center\">\n <svg\n className=\"animate-spin h-5 w-5 mr-2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n Loading...\n </div>\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length}\n className={`${currentSizeConfig.rowPadding} py-8 text-center`}\n style={{ color: '#333333' }}\n >\n No data\n </td>\n </tr>\n ) : (\n paginatedData.map((record, index) => {\n const rowProps = onRow ? onRow(record, index) : {};\n const stripedBg = striped && index % 2 === 1 ? (stripedRowColor || '#F5F6F7') : 'transparent';\n const hoverBg = rowHoverColor || '#f3f4f6';\n return (\n <tr\n key={getRowKey(record, index)}\n className=\"transition-colors duration-200 ease-out\"\n style={{\n backgroundColor: stripedBg,\n }}\n onMouseEnter={(e) => {\n if (rowHoverColor || !striped || index % 2 === 0) {\n e.currentTarget.style.backgroundColor = hoverBg;\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = stripedBg;\n }}\n {...rowProps}\n >\n {columns.map((column, colIdx) => {\n const value = getValue(record, column.dataIndex);\n const content = column.render ? column.render(value, record, index) : value;\n\n return (\n <td\n key={column.key}\n className={`${currentSizeConfig.rowPadding} ${currentSizeConfig.rowFontSize} text-gray-900 ${\n bordered && colIdx !== columns.length - 1 ? 'border-r' : ''\n } ${\n column.align === 'center'\n ? 'text-center'\n : column.align === 'right'\n ? 'text-right'\n : ''\n }`}\n style={{\n borderColor: borderColor || '#EEEEEE',\n }}\n >\n {content as ReactNode}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {pagination !== false && (\n <Pagination\n current={currentPage}\n pageSize={pageSize}\n total={dataSource.length}\n onChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n showSizeChanger={\n pagination && typeof pagination === 'object' ? pagination.showSizeChanger : true\n }\n pageSizeOptions={\n pagination && typeof pagination === 'object'\n ? pagination.pageSizeOptions\n : [10, 20, 50, 100]\n }\n showTotal={pagination && typeof pagination === 'object' ? pagination.showTotal : true}\n size={\n pagination && typeof pagination === 'object' && pagination.size\n ? pagination.size\n : size === 'responsive'\n ? 'md'\n : size\n }\n />\n )}\n </div>\n );\n};\n\ninterface PaginationProps {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n showTotal?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst Pagination: FC<PaginationProps> = ({\n current,\n pageSize,\n total,\n onChange,\n onPageSizeChange,\n showSizeChanger = true,\n pageSizeOptions = [10, 20, 50, 100],\n showTotal = true,\n size = 'md',\n}) => {\n const totalPages = Math.ceil(total / pageSize);\n const startItem = (current - 1) * pageSize + 1;\n const endItem = Math.min(current * pageSize, total);\n\n const sizeClasses = {\n sm: {\n button: 'px-2.5 py-1 text-xs',\n icon: 'h-3.5 w-3.5',\n nav: 'px-1.5 py-1.5',\n },\n md: {\n button: 'px-4 py-2 text-sm',\n icon: 'h-5 w-5',\n nav: 'px-2 py-2',\n },\n lg: {\n button: 'px-5 py-2.5 text-base',\n icon: 'h-6 w-6',\n nav: 'px-3 py-3',\n },\n };\n\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const maxVisible = 7;\n\n if (totalPages <= maxVisible) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (current <= 3) {\n for (let i = 1; i <= 5; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n } else if (current >= totalPages - 2) {\n pages.push(1);\n pages.push('...');\n for (let i = totalPages - 4; i <= totalPages; i++) pages.push(i);\n } else {\n pages.push(1);\n pages.push('...');\n for (let i = current - 1; i <= current + 1; i++) pages.push(i);\n pages.push('...');\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-[#EEEEEE] sm:px-6 mt-4\">\n {showTotal && (\n <div className=\"text-sm text-[#181918]\">\n {startItem}-{endItem} of {total} items\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n {showSizeChanger && (\n <Select\n value={pageSize.toString()}\n onChange={(value) => onPageSizeChange(Number(value))}\n options={pageSizeOptions.map((size) => ({\n value: size.toString(),\n label: `${size} / page`,\n }))}\n size=\"sm\"\n className=\"w-32\"\n />\n )}\n\n <nav className=\"inline-flex gap-1 items-center\" aria-label=\"Pagination\">\n <button\n onClick={() => onChange(current - 1)}\n disabled={current === 1}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n\n {getPageNumbers().map((page, index) => {\n if (page === '...') {\n return (\n <span\n key={`ellipsis-${index}`}\n className={`relative inline-flex items-center justify-center ${sizeClasses[size].button} font-normal text-[#181918]`}\n >\n ...\n </span>\n );\n }\n\n return (\n <button\n key={page}\n onClick={() => onChange(page as number)}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].button} font-medium transition-all duration-300 ease-out focus:z-20 hover:scale-105 active:scale-95 ${\n current === page\n ? 'bg-[#EC615B] text-white shadow-sm'\n : 'text-[#181918] hover:bg-gray-100'\n }`}\n >\n {page}\n </button>\n );\n })}\n\n <button\n onClick={() => onChange(current + 1)}\n disabled={current === totalPages}\n className={`relative inline-flex items-center justify-center rounded-md ${sizeClasses[size].nav} text-[#181918] hover:bg-gray-100 focus:z-20 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:bg-transparent transition-all duration-300 ease-out hover:scale-110 active:scale-95`}\n >\n <svg className={sizeClasses[size].icon} viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n </nav>\n </div>\n </div>\n );\n};\n\nexport default Table;\n","import type { FC, ReactNode, ChangeEvent, CSSProperties } from 'react';\n\nexport interface TableTopProps {\n // Existing props\n title?: string;\n description?: string;\n searchPlaceholder?: string;\n onSearch?: (value: string) => void;\n actions?: ReactNode;\n filters?: ReactNode;\n className?: string;\n\n // New responsive props\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n\n // Custom color props\n titleColor?: string;\n descriptionColor?: string;\n searchBgColor?: string;\n searchBorderColor?: string;\n searchFocusBorderColor?: string;\n\n // Search input border radius\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n // Custom styles\n style?: CSSProperties;\n\n // New props for conditional action button display\n hideActionButtons?: boolean;\n selectedActionButton?: ReactNode;\n}\n\nexport const TableTop: FC<TableTopProps> = ({\n title,\n description,\n searchPlaceholder = 'Search...',\n onSearch,\n actions,\n filters,\n className = '',\n size = 'responsive',\n titleColor,\n descriptionColor,\n searchBgColor = 'white',\n searchBorderColor = '#d1d5db',\n searchFocusBorderColor = '#3b82f6',\n rounded = 'md',\n style,\n hideActionButtons = false,\n selectedActionButton,\n}) => {\n const handleSearchChange = (e: ChangeEvent<HTMLInputElement>) => {\n onSearch?.(e.target.value);\n };\n\n // Size configuration\n const sizeConfig = {\n sm: {\n titleSize: 'text-lg',\n titleWeight: 'font-semibold',\n descriptionSize: 'text-xs',\n searchInputSize: 'text-xs',\n searchInputPy: 'py-1.5',\n searchPaddingLeft: 'pl-8',\n iconSize: 'h-4 w-4',\n spacing: 'space-y-2',\n gap: 'gap-2',\n maxWidth: 'max-w-sm',\n descriptionMargin: 'mt-0.5',\n },\n md: {\n titleSize: 'text-xl',\n titleWeight: 'font-semibold',\n descriptionSize: 'text-sm',\n searchInputSize: 'text-sm',\n searchInputPy: 'py-2',\n searchPaddingLeft: 'pl-10',\n iconSize: 'h-5 w-5',\n spacing: 'space-y-3',\n gap: 'gap-3',\n maxWidth: 'max-w-md',\n descriptionMargin: 'mt-1',\n },\n lg: {\n titleSize: 'text-2xl',\n titleWeight: 'font-bold',\n descriptionSize: 'text-base',\n searchInputSize: 'text-base',\n searchInputPy: 'py-2.5',\n searchPaddingLeft: 'pl-12',\n iconSize: 'h-6 w-6',\n spacing: 'space-y-4',\n gap: 'gap-4',\n maxWidth: 'max-w-lg',\n descriptionMargin: 'mt-2',\n },\n responsive: {\n titleSize: 'text-lg sm:text-xl md:text-2xl',\n titleWeight: 'font-semibold md:font-bold',\n descriptionSize: 'text-xs sm:text-sm md:text-base',\n searchInputSize: 'text-xs sm:text-sm md:text-base',\n searchInputPy: 'py-1.5 sm:py-2 md:py-2.5',\n searchPaddingLeft: 'pl-8 sm:pl-10 md:pl-12',\n iconSize: 'h-4 w-4 sm:h-5 sm:w-5 md:h-6 md:w-6',\n spacing: 'space-y-2 sm:space-y-3 md:space-y-4',\n gap: 'gap-2 sm:gap-3 md:gap-4',\n maxWidth: 'max-w-sm md:max-w-md lg:max-w-lg',\n descriptionMargin: 'mt-0.5 sm:mt-1 md:mt-2',\n },\n };\n\n const config = sizeConfig[size];\n\n // Border radius configuration\n const radiusConfig = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const radiusClass = radiusConfig[rounded];\n\n // Build inline styles for custom colors\n const searchInputStyle: CSSProperties = {\n backgroundColor: searchBgColor,\n borderColor: searchBorderColor,\n };\n\n return (\n <div\n className={`${config.spacing} mb-4 ${className}`}\n style={style}\n >\n {/* Title and Description */}\n {(title || description) && (\n <div>\n {title && (\n <h2\n className={`${config.titleSize} ${config.titleWeight}`}\n style={{ color: titleColor || '#111827' }}\n >\n {title}\n </h2>\n )}\n {description && (\n <p\n className={`${config.descriptionSize} ${config.descriptionMargin}`}\n style={{ color: descriptionColor || '#6b7280' }}\n >\n {description}\n </p>\n )}\n </div>\n )}\n\n {/* Search and Actions Row */}\n <div className={`flex flex-col sm:flex-row items-stretch sm:items-center justify-between ${config.gap}`}>\n {/* Search Input */}\n {onSearch && (\n <div className={`flex-1 ${config.maxWidth}`}>\n <div className=\"relative\">\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <svg\n className={`${config.iconSize} text-gray-400`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n </div>\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n onChange={handleSearchChange}\n className={`block w-full ${config.searchPaddingLeft} pr-3 ${config.searchInputPy} border ${radiusClass} focus:outline-none focus:ring-2 focus:ring-opacity-50 ${config.searchInputSize} transition-colors duration-200`}\n style={searchInputStyle}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = searchFocusBorderColor;\n e.currentTarget.style.boxShadow = `0 0 0 2px rgba(59, 130, 246, 0.1)`;\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = searchBorderColor;\n e.currentTarget.style.boxShadow = 'none';\n }}\n />\n </div>\n </div>\n )}\n\n {/* Actions (Buttons) */}\n <div className={`flex items-center gap-2 w-full sm:w-auto`}>\n {hideActionButtons && selectedActionButton ? (\n selectedActionButton\n ) : (\n actions\n )}\n </div>\n </div>\n\n {/* Filters Row */}\n {filters && (\n <div className={`flex flex-wrap items-center ${config.gap}`}>\n {filters}\n </div>\n )}\n </div>\n );\n};\n\nexport default TableTop;\n","import { useEffect, useState, CSSProperties } from 'react';\nimport type { FC, ReactNode, MouseEvent } from 'react';\n\ntype ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'responsive';\n\nconst widthMap: Record<ModalSize, string> = {\n sm: '384px',\n md: '448px',\n lg: '512px',\n xl: '600px',\n full: '100%',\n responsive: '90vw',\n};\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title?: string;\n children: ReactNode;\n footer?: ReactNode;\n width?: string | number;\n size?: ModalSize;\n closable?: boolean;\n maskClosable?: boolean;\n centered?: boolean;\n className?: string;\n bgColor?: string;\n headerBgColor?: string;\n overlayColor?: string;\n bodyClassName?: string;\n headerClassName?: string;\n maxHeight?: string | number;\n}\n\nexport const Modal: FC<ModalProps> = ({\n open,\n onClose,\n title,\n children,\n footer,\n width,\n size = 'md',\n closable = true,\n maskClosable = true,\n centered = true,\n className = '',\n bgColor = '#ffffff',\n headerBgColor = '#ffffff',\n overlayColor = 'rgba(0, 0, 0, 0.5)',\n bodyClassName = '',\n headerClassName = '',\n maxHeight = '70vh',\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n\n // Determine effective width\n const effectiveWidth = width || widthMap[size];\n const effectiveWidthNum = typeof effectiveWidth === 'number' ? `${effectiveWidth}px` : effectiveWidth;\n\n // Prepare modal style\n const modalStyle: CSSProperties = {\n width: effectiveWidthNum,\n maxWidth: '90vw',\n backgroundColor: bgColor,\n };\n\n // Prepare header style\n const headerStyle: CSSProperties = {\n backgroundColor: headerBgColor,\n };\n\n // Prepare overlay style\n const overlayStyle: CSSProperties = {\n backgroundColor: overlayColor,\n };\n\n useEffect(() => {\n if (open) {\n setIsVisible(true);\n // Small delay to trigger animation\n setTimeout(() => setIsAnimating(true), 10);\n document.body.style.overflow = 'hidden';\n } else {\n setIsAnimating(false);\n // Wait for animation to complete before unmounting\n const timer = setTimeout(() => {\n setIsVisible(false);\n }, 200);\n document.body.style.overflow = 'unset';\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closable && open) {\n onClose();\n }\n };\n\n if (open) {\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open, onClose, closable]);\n\n if (!isVisible) return null;\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onClose();\n }\n };\n\n const handleModalClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 overflow-y-auto\"\n onClick={handleMaskClick}\n >\n {/* Backdrop */}\n <div\n className={`fixed inset-0 transition-opacity duration-200 ease-out ${\n isAnimating ? 'opacity-100' : 'opacity-0'\n }`}\n style={overlayStyle}\n />\n\n {/* Modal Container */}\n <div className={`flex min-h-full items-center justify-center p-4 ${centered ? 'items-center' : 'items-start pt-20'}`}>\n <div\n className={`relative rounded-lg shadow-xl transition-all duration-200 ease-out overflow-y-auto ${\n isAnimating\n ? 'opacity-100 scale-100 translate-y-0'\n : 'opacity-0 scale-95 -translate-y-4'\n } ${className}`}\n style={{...modalStyle, maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight}}\n onClick={handleModalClick}\n >\n {/* Header */}\n {(title || closable) && (\n <div\n className={`flex items-center justify-between px-6 py-4 border-b border-gray-200 ${headerClassName}`}\n style={headerStyle}\n >\n {title && <h3 className=\"text-lg font-semibold text-gray-900\">{title}</h3>}\n {closable && (\n <button\n onClick={onClose}\n className=\"text-gray-400 hover:text-gray-600 transition-colors duration-200 ease-out\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n\n {/* Body */}\n <div\n className={`px-6 py-4 ${bodyClassName}`}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"px-6 py-4 border-t border-gray-200 flex justify-end gap-2\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import type { FC, ReactNode, CSSProperties } from 'react';\n\nexport interface BadgeProps {\n children: ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n dot?: boolean;\n icon?: ReactNode;\n iconPosition?: 'left' | 'right';\n className?: string;\n bgColor?: string;\n textColor?: string;\n borderColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n style?: CSSProperties;\n}\n\nexport const Badge: FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n dot = false,\n icon,\n iconPosition = 'left',\n className = '',\n bgColor,\n textColor,\n borderColor,\n rounded = 'full',\n style,\n}) => {\n const variantClasses = {\n default: 'bg-gray-100 text-[#181918]',\n primary: 'bg-[#FCEAE9] text-[#EC615B]',\n success: 'bg-green-100 text-green-800',\n warning: 'bg-yellow-100 text-yellow-800',\n danger: 'bg-red-100 text-red-800',\n info: 'bg-cyan-100 text-cyan-800',\n };\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n responsive: 'px-1.5 py-0.5 text-[10px] sm:px-2 sm:py-0.5 sm:text-xs md:px-2.5 md:py-1 md:text-sm lg:px-3 lg:py-1.5 lg:text-base',\n };\n\n const dotSizeClasses = {\n sm: 'w-1.5 h-1.5',\n md: 'w-2 h-2',\n lg: 'w-2.5 h-2.5',\n responsive: 'w-1 h-1 sm:w-1.5 sm:h-1.5 md:w-2 md:h-2 lg:w-2.5 lg:h-2.5',\n };\n\n const dotColorClasses = {\n default: 'bg-gray-600',\n primary: 'bg-[#EC615B]',\n success: 'bg-green-600',\n warning: 'bg-yellow-600',\n danger: 'bg-red-600',\n info: 'bg-cyan-600',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n responsive: 'w-2.5 h-2.5 sm:w-3 sm:h-3 md:w-3.5 md:h-3.5 lg:w-4 lg:h-4',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const customStyles: CSSProperties = {\n ...(bgColor && { backgroundColor: bgColor }),\n ...(textColor && { color: textColor }),\n ...(borderColor && { borderColor, borderWidth: '1px', borderStyle: 'solid' }),\n ...style,\n };\n\n return (\n <span\n className={`inline-flex items-center gap-1.5 font-medium transition-all duration-200 ${!bgColor ? variantClasses[variant] : ''} ${sizeClasses[size]} ${roundedClasses[rounded]} ${className}`}\n style={customStyles}\n >\n {dot && (\n <span className={`rounded-full ${dotSizeClasses[size]} ${dotColorClasses[variant]}`} />\n )}\n {icon && iconPosition === 'left' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n {children}\n {icon && iconPosition === 'right' && (\n <span className={`inline-flex items-center ${iconSizeClasses[size]}`}>\n {icon}\n </span>\n )}\n </span>\n );\n};\n\nexport default Badge;\n","import type { FC, ReactNode, CSSProperties } from 'react';\n\nexport interface StepItem {\n title: string;\n description?: string;\n status?: 'wait' | 'process' | 'finish' | 'error';\n icon?: ReactNode;\n}\n\nexport interface StepsProps {\n items: StepItem[];\n current?: number;\n direction?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n variant?: 'default' | 'outline';\n className?: string;\n style?: CSSProperties;\n finishColor?: string;\n processColor?: string;\n waitColor?: string;\n errorColor?: string;\n lineColor?: string;\n}\n\nexport const Steps: FC<StepsProps> = ({\n items,\n current = 0,\n direction = 'vertical',\n size = 'md',\n variant = 'default',\n className = '',\n style,\n finishColor,\n processColor,\n waitColor,\n errorColor,\n lineColor,\n}) => {\n const getStepStatus = (index: number, item: StepItem): StepItem['status'] => {\n if (item.status) return item.status;\n if (index < current) return 'finish';\n if (index === current) return 'process';\n return 'wait';\n };\n\n const iconSizeClasses = {\n sm: 'w-6 h-6',\n md: 'w-8 h-8',\n lg: 'w-10 h-10',\n responsive: 'w-6 h-6 sm:w-7 sm:h-7 md:w-8 md:h-8 lg:w-10 lg:h-10',\n };\n\n const textSizeClasses = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n responsive: 'text-xs sm:text-sm md:text-base lg:text-lg',\n };\n\n const descriptionSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n responsive: 'text-xs sm:text-xs md:text-sm lg:text-base',\n };\n\n const renderIcon = (status: StepItem['status'], icon?: ReactNode) => {\n if (icon) return icon;\n\n if (status === 'finish') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'error') {\n return (\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const getStatusClasses = (status: StepItem['status']) => {\n const isOutline = variant === 'outline';\n\n switch (status) {\n case 'finish':\n return {\n icon: isOutline\n ? `bg-white text-white border ${finishColor ? `border-[${finishColor}]` : 'border-green-500'}`\n : `${finishColor ? `bg-[${finishColor}]` : 'bg-green-500'} text-white ${finishColor ? `border-[${finishColor}]` : 'border-green-500'}`,\n title: 'text-[#181918]',\n description: 'text-gray-600',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-green-500',\n iconColor: finishColor,\n };\n case 'process':\n return {\n icon: isOutline\n ? `bg-white text-white border ${processColor ? `border-[${processColor}]` : 'border-[#EC615B]'}`\n : `${processColor ? `bg-[${processColor}]` : 'bg-[#EC615B]'} text-white ${processColor ? `border-[${processColor}]` : 'border-[#EC615B]'}`,\n title: 'text-[#181918] font-semibold',\n description: 'text-gray-700',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-gray-300',\n iconColor: processColor,\n };\n case 'error':\n return {\n icon: isOutline\n ? `bg-white text-white border ${errorColor ? `border-[${errorColor}]` : 'border-red-500'}`\n : `${errorColor ? `bg-[${errorColor}]` : 'bg-red-500'} text-white ${errorColor ? `border-[${errorColor}]` : 'border-red-500'}`,\n title: 'text-red-600',\n description: 'text-red-500',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-gray-300',\n iconColor: errorColor,\n };\n default:\n return {\n icon: 'bg-white text-gray-400 border-gray-300',\n title: 'text-gray-500',\n description: 'text-gray-400',\n line: lineColor ? `bg-[${lineColor}]` : 'bg-gray-300',\n iconColor: waitColor,\n };\n }\n };\n\n if (direction === 'horizontal') {\n return (\n <div className={`flex items-start ${className}`} style={style}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n const iconStyle: CSSProperties = {};\n if (statusClasses.iconColor) {\n iconStyle.color = statusClasses.iconColor;\n }\n\n return (\n <div key={index} className=\"flex flex-1 items-start\">\n <div className=\"flex flex-col items-center\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n style={iconStyle}\n >\n {renderIcon(status, item.icon)}\n </div>\n <div className=\"mt-2 text-center\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n {!isLast && (\n <div\n className={`flex-1 h-0.5 mt-4 mx-2 ${statusClasses.line} transition-colors duration-300`}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className={`flex flex-col ${className}`} style={style}>\n {items.map((item, index) => {\n const status = getStepStatus(index, item);\n const statusClasses = getStatusClasses(status);\n const isLast = index === items.length - 1;\n const iconStyle: CSSProperties = {};\n if (statusClasses.iconColor) {\n iconStyle.color = statusClasses.iconColor;\n }\n\n return (\n <div key={index} className=\"flex\">\n <div className=\"flex flex-col items-center mr-4\">\n <div\n className={`flex items-center justify-center ${iconSizeClasses[size]} rounded-full border transition-all duration-300 ${statusClasses.icon}`}\n style={iconStyle}\n >\n {renderIcon(status, item.icon)}\n </div>\n {!isLast && (\n <div\n className={`w-0.5 flex-1 my-1 ${statusClasses.line} transition-colors duration-300`}\n style={{ minHeight: '20px' }}\n />\n )}\n </div>\n <div className=\"flex-1 pb-6\">\n <div\n className={`${textSizeClasses[size]} ${statusClasses.title} transition-colors duration-300`}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className={`${descriptionSizeClasses[size]} ${statusClasses.description} mt-1 transition-colors duration-300`}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default Steps;\n","import type { FC, ReactNode } from 'react';\n\nexport interface ProgressProps {\n percent?: number;\n status?: 'normal' | 'success' | 'exception' | 'active';\n showInfo?: boolean;\n strokeColor?: string;\n strokeWidth?: number;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n className?: string;\n format?: (percent: number) => ReactNode;\n bgColor?: string;\n successColor?: string;\n exceptionColor?: string;\n trackColor?: string;\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n}\n\nexport const Progress: FC<ProgressProps> = ({\n percent = 0,\n status = 'normal',\n showInfo = true,\n strokeColor,\n strokeWidth,\n size = 'md',\n className = '',\n format,\n bgColor,\n successColor,\n exceptionColor,\n trackColor,\n rounded = 'full',\n}) => {\n const clampedPercent = Math.min(100, Math.max(0, percent));\n\n const heightClasses = {\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-3',\n responsive: 'h-1.5 sm:h-2 md:h-3 lg:h-4',\n };\n\n const textSizeClasses = {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n responsive: 'text-xs sm:text-sm md:text-base lg:text-lg',\n };\n\n const roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const getStatusColor = () => {\n if (strokeColor) return strokeColor;\n\n switch (status) {\n case 'success':\n return successColor || 'bg-green-500';\n case 'exception':\n return exceptionColor || 'bg-red-500';\n case 'active':\n return bgColor || 'bg-[#EC615B]';\n default:\n if (clampedPercent === 100) return successColor || 'bg-green-500';\n return bgColor || 'bg-[#EC615B]';\n }\n };\n\n const getTrackColor = () => {\n return trackColor || 'bg-gray-200';\n };\n\n const getStatusIcon = () => {\n if (status === 'success' || clampedPercent === 100) {\n return (\n <svg className=\"w-4 h-4 text-green-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n if (status === 'exception') {\n return (\n <svg className=\"w-4 h-4 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n\n return null;\n };\n\n const formatPercent = () => {\n if (format) return format(clampedPercent);\n return `${Math.round(clampedPercent)}%`;\n };\n\n const height = strokeWidth ? `${strokeWidth}px` : undefined;\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n <div className=\"flex-1\">\n <div\n className={`w-full overflow-hidden ${heightClasses[size]} ${roundedClasses[rounded]} ${getTrackColor()}`}\n style={{ height }}\n >\n <div\n className={`${getStatusColor()} ${heightClasses[size]} ${roundedClasses[rounded]} transition-all duration-300 ease-out ${\n status === 'active' ? 'progress-active' : ''\n }`}\n style={{\n width: `${clampedPercent}%`,\n height,\n }}\n />\n </div>\n </div>\n\n {showInfo && (\n <div className={`flex items-center gap-1 ${textSizeClasses[size]} text-gray-600 font-normal`}>\n {getStatusIcon() || formatPercent()}\n </div>\n )}\n </div>\n );\n};\n\nexport default Progress;\n","import { useState } from 'react';\nimport type { FC, ChangeEvent, CSSProperties } from 'react';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n variant?: 'filled' | 'outline';\n className?: string;\n id?: string;\n name?: string;\n value?: string;\n checkedColor?: string;\n uncheckedColor?: string;\n checkedBorderColor?: string;\n style?: CSSProperties;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({\n checked: controlledChecked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n size = 'md',\n variant = 'filled',\n className = '',\n id,\n name,\n value,\n checkedColor = '#EC615B',\n uncheckedColor = '#ffffff',\n checkedBorderColor = '#EC615B',\n style,\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? controlledChecked : internalChecked;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const newChecked = e.target.checked;\n\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n\n onChange?.(newChecked);\n };\n\n const sizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n responsive: 'w-4 h-4 sm:w-5 sm:h-5 lg:w-6 lg:h-6',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-3.5 h-3.5',\n lg: 'w-4 h-4',\n responsive: 'w-2.5 h-2.5 sm:w-3.5 sm:h-3.5 lg:w-4 lg:h-4',\n };\n\n const isFilled = variant === 'filled';\n\n const getCheckboxClasses = () => {\n if (disabled) {\n return 'cursor-not-allowed opacity-50 border-gray-300 bg-gray-100';\n }\n\n if (isFilled) {\n // Filled variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return '';\n } else {\n // Outline variant\n if (!checked && !indeterminate) {\n return 'border-gray-300 bg-white hover:border-gray-400';\n }\n return '';\n }\n };\n\n const getCheckboxInlineStyles = (): CSSProperties | undefined => {\n if (disabled) return undefined;\n\n if (!checked && !indeterminate) {\n return undefined;\n }\n\n if (isFilled) {\n return {\n borderColor: checkedBorderColor,\n backgroundColor: checkedColor,\n };\n } else {\n return {\n borderColor: checkedBorderColor,\n backgroundColor: uncheckedColor,\n };\n }\n };\n\n const getIconColor = () => {\n if (isFilled && (checked || indeterminate)) {\n return 'text-white';\n }\n return '';\n };\n\n return (\n <div className=\"inline-flex items-center\" style={style}>\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n value={value}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n className=\"sr-only\"\n />\n <label\n htmlFor={id}\n className={`\n relative flex items-center justify-center\n ${sizeClasses[size]}\n ${variant === 'outline' ? 'border' : 'border-2'}\n rounded\n transition-all duration-200 ease-out\n cursor-pointer\n ${getCheckboxClasses()}\n ${className}\n `}\n style={getCheckboxInlineStyles()}\n >\n {/* Checkmark Icon */}\n {checked && !indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n strokeWidth={3}\n style={\n !isFilled && (checked || indeterminate)\n ? { color: checkedColor }\n : undefined\n }\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n )}\n\n {/* Indeterminate Icon */}\n {indeterminate && (\n <svg\n className={`${iconSizeClasses[size]} ${getIconColor()}`}\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n style={\n !isFilled && (checked || indeterminate)\n ? { color: checkedColor }\n : undefined\n }\n >\n <rect x=\"4\" y=\"11\" width=\"16\" height=\"2\" rx=\"1\" />\n </svg>\n )}\n </label>\n </div>\n );\n};\n\nexport default Checkbox;\n","import type { FC, CSSProperties } from 'react';\n\nexport interface SelectedItem {\n id: string | number;\n label: string;\n sublabel?: string;\n}\n\nexport interface SelectedItemsListProps {\n items: SelectedItem[];\n onRemove: (id: string | number) => void;\n emptyMessage?: string;\n className?: string;\n itemClassName?: string;\n maxHeight?: string;\n // New size and responsive props\n size?: 'sm' | 'md' | 'lg' | 'responsive';\n // New custom color props\n bgColor?: string;\n hoverBgColor?: string;\n textColor?: string;\n sublabelColor?: string;\n removeButtonColor?: string;\n removeButtonHoverColor?: string;\n // New border radius prop\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n // New style prop\n style?: CSSProperties;\n}\n\n// Helper function to get size-based classes\nconst getSizeClasses = (size: 'sm' | 'md' | 'lg' | 'responsive' = 'md') => {\n const baseClasses = {\n sm: {\n container: 'space-y-1',\n item: 'px-2 py-1.5',\n label: 'text-xs',\n sublabel: 'text-[10px]',\n button: 'w-5 h-5',\n icon: 'w-3 h-3',\n },\n md: {\n container: 'space-y-2',\n item: 'px-4 py-3',\n label: 'text-sm',\n sublabel: 'text-xs',\n button: 'w-6 h-6',\n icon: 'w-4 h-4',\n },\n lg: {\n container: 'space-y-3',\n item: 'px-5 py-4',\n label: 'text-base',\n sublabel: 'text-sm',\n button: 'w-7 h-7',\n icon: 'w-5 h-5',\n },\n responsive: {\n container: 'space-y-1 sm:space-y-2 md:space-y-3',\n item: 'px-2 py-1.5 sm:px-3 sm:py-2 md:px-4 md:py-3 lg:px-5 lg:py-4',\n label: 'text-xs sm:text-sm md:text-base',\n sublabel: 'text-[10px] sm:text-xs md:text-sm',\n button: 'w-5 h-5 sm:w-5 sm:h-5 md:w-6 md:h-6 lg:w-7 lg:h-7',\n icon: 'w-3 h-3 sm:w-3 sm:h-3 md:w-4 md:h-4 lg:w-5 lg:h-5',\n },\n };\n\n return baseClasses[size];\n};\n\n// Helper function to get rounded corner classes\nconst getRoundedClasses = (rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md') => {\n const roundedMap = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n full: 'rounded-full',\n };\n\n return roundedMap[rounded];\n};\n\nexport const SelectedItemsList: FC<SelectedItemsListProps> = ({\n items,\n onRemove,\n emptyMessage = 'No items selected',\n className = '',\n itemClassName = '',\n maxHeight = '300px',\n size = 'md',\n bgColor,\n hoverBgColor,\n textColor,\n sublabelColor,\n removeButtonColor,\n removeButtonHoverColor,\n rounded = 'md',\n style,\n}) => {\n const sizeClasses = getSizeClasses(size);\n const roundedClass = getRoundedClasses(rounded);\n\n // Default colors\n const defaultBgColor = '#F4F4F4';\n const defaultHoverBgColor = '#EBEBEB';\n const defaultTextColor = '#181918';\n const defaultSublabelColor = '#999999';\n const defaultRemoveButtonColor = '#9CA3AF';\n const defaultRemoveButtonHoverColor = '#EC615B';\n\n // Get final colors (use provided or default)\n const finalBgColor = bgColor || defaultBgColor;\n const finalHoverBgColor = hoverBgColor || defaultHoverBgColor;\n const finalTextColor = textColor || defaultTextColor;\n const finalSublabelColor = sublabelColor || defaultSublabelColor;\n const finalRemoveButtonColor = removeButtonColor || defaultRemoveButtonColor;\n const finalRemoveButtonHoverColor = removeButtonHoverColor || defaultRemoveButtonHoverColor;\n\n if (items.length === 0) {\n return (\n <div\n className={`text-center py-8 text-gray-500 text-sm ${className}`}\n style={{\n color: finalSublabelColor,\n ...style,\n }}\n >\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div\n className={`overflow-y-auto ${sizeClasses.container} ${className}`}\n style={{ maxHeight, ...style }}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n className={`\n group flex items-center justify-between\n ${roundedClass}\n transition-all duration-300 ease-out\n hover:shadow-sm\n animate-slide-in-item\n ${itemClassName}\n `}\n style={{\n backgroundColor: finalBgColor,\n animationDelay: `${index * 50}ms`,\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = finalHoverBgColor;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = finalBgColor;\n }}\n >\n <div className={`flex-1 min-w-0 ${sizeClasses.item}`}>\n {item.sublabel && (\n <div\n className={`font-normal mb-0.5 ${sizeClasses.sublabel}`}\n style={{ color: finalSublabelColor }}\n >\n {item.sublabel}\n </div>\n )}\n <div\n className={`font-medium truncate ${sizeClasses.label}`}\n style={{ color: finalTextColor }}\n >\n {item.label}\n </div>\n </div>\n\n <button\n onClick={() => onRemove(item.id)}\n className={`\n ml-3 flex-shrink-0 rounded-full\n flex items-center justify-center\n transition-all duration-200 ease-out\n hover:scale-110\n active:scale-95\n focus:outline-none focus:ring-2 focus:ring-opacity-50\n ${sizeClasses.button}\n `}\n style={{\n color: finalRemoveButtonColor,\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = 'white';\n (e.currentTarget as HTMLElement).style.color = finalRemoveButtonHoverColor;\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.backgroundColor = 'transparent';\n (e.currentTarget as HTMLElement).style.color = finalRemoveButtonColor;\n }}\n aria-label={`Remove ${item.label}`}\n >\n <svg\n className={sizeClasses.icon}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n ))}\n </div>\n );\n};\n\nexport default SelectedItemsList;\n","import React from 'react';\nimport { Input as AntInput, InputProps as AntInputProps, InputRef } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface InputProps extends AntInputProps {\n label?: string;\n error?: string;\n helperText?: string;\n placeholder?: string;\n control?: Control<any>;\n}\n\nconst InputBase = React.forwardRef<InputRef, Omit<InputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n status,\n ...props\n}, ref) => {\n const errorClass = error ? 'input-error-state' : '';\n\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"block text-sm font-medium mb-2\" style={{ color: error ? '#C21919' : '#181918' }}>\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {error && `\n .input-error-state .ant-input-group-addon {\n border-color: #C21919 !important;\n }\n .input-error-state .ant-input-group-addon:first-child {\n border-right: none !important;\n }\n .input-error-state .ant-input {\n border-color: #C21919 !important;\n }\n .input-error-state .ant-input:focus,\n .input-error-state .ant-input-focused {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n `}\n </style>\n <AntInput\n ref={ref}\n className={`${className} ${errorClass}`}\n status={error ? 'error' : status}\n {...props}\n style={{\n height: '44px',\n borderRadius: '12px',\n ...props.style,\n }}\n />\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg\n className=\"w-3 h-3 mr-1\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n});\nInputBase.displayName = 'InputBase';\n\nconst ControlledInput: React.FC<InputProps & { control: NonNullable<InputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <InputBase\n {...rest}\n {...field}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const Input = React.forwardRef<InputRef, InputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledInput control={control} name={name} {...props} />;\n }\n return <InputBase ref={ref} name={name} {...props} />;\n});\nInput.displayName = 'Input';\n","import React from 'react';\nimport { Input as AntInput, InputProps as AntInputProps, InputRef } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface PasswordInputProps extends Omit<AntInputProps, 'suffix'> {\n label?: string;\n error?: string;\n helperText?: string;\n placeholder?: string;\n control?: Control<any>;\n}\n\nconst PasswordInputBase = React.forwardRef<InputRef, Omit<PasswordInputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n status,\n ...props\n}, ref) => {\n const errorClass = error ? 'password-input-error-state' : '';\n const combinedClassName = `password-input-custom ${className} ${errorClass}`;\n\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"block text-sm font-medium mb-2\" style={{ color: error ? '#C21919' : '#181918' }}>\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {error && `\n .password-input-error-state .ant-input-group-addon {\n border-color: #C21919 !important;\n }\n .password-input-error-state .ant-input-group-addon:first-child {\n border-right: none !important;\n }\n .password-input-error-state .ant-input,\n .password-input-error-state .ant-input-password .ant-input {\n border-color: #C21919 !important;\n }\n .password-input-error-state .ant-input:focus,\n .password-input-error-state .ant-input-focused,\n .password-input-error-state .ant-input-password .ant-input:focus {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n `}\n </style>\n <AntInput.Password\n ref={ref}\n className={combinedClassName}\n status={error ? 'error' : status}\n {...props}\n style={{\n height: '44px',\n borderRadius: '12px',\n ...props.style,\n }}\n />\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg\n className=\"w-3 h-3 mr-1\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n});\nPasswordInputBase.displayName = 'PasswordInputBase';\n\nconst ControlledPasswordInput: React.FC<PasswordInputProps & { control: NonNullable<PasswordInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PasswordInputBase\n {...rest}\n {...field}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PasswordInput = React.forwardRef<InputRef, PasswordInputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledPasswordInput control={control} name={name} {...props} />;\n }\n return <PasswordInputBase ref={ref} name={name} {...props} />;\n});\nPasswordInput.displayName = 'PasswordInput';\n","import React, { useRef, useState, useEffect, KeyboardEvent, ClipboardEvent } from 'react';\nimport { Input, InputRef } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface OTPInputProps {\n length?: number;\n value?: string;\n onChange?: (value: string) => void;\n onBlur?: () => void;\n onComplete?: (value: string) => void;\n name?: string;\n error?: boolean;\n errorMessage?: string;\n disabled?: boolean;\n className?: string;\n control?: Control<any>;\n}\n\nconst OTPInputBase: React.FC<Omit<OTPInputProps, 'control'>> = ({\n length = 6,\n value = '',\n onChange,\n onBlur,\n onComplete,\n error = false,\n errorMessage,\n disabled = false,\n className = '',\n}) => {\n const [otp, setOtp] = useState<string[]>(Array(length).fill(''));\n const inputRefs = useRef<(InputRef | null)[]>([]);\n\n useEffect(() => {\n if (value) {\n const otpArray = value.split('').slice(0, length);\n const filledOtp = [...otpArray, ...Array(length - otpArray.length).fill('')];\n setOtp(filledOtp);\n }\n }, [value, length]);\n\n const handleChange = (index: number, val: string) => {\n if (val && !/^\\d+$/.test(val)) return;\n\n const newOtp = [...otp];\n newOtp[index] = val.slice(-1);\n setOtp(newOtp);\n\n const otpString = newOtp.join('');\n onChange?.(otpString);\n\n if (val && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n\n if (newOtp.every((digit) => digit !== '')) {\n onComplete?.(otpString);\n }\n };\n\n const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && !otp[index] && index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain');\n\n if (!/^\\d+$/.test(pastedData)) return;\n\n const pastedArray = pastedData.split('').slice(0, length);\n const newOtp = [...pastedArray, ...Array(length - pastedArray.length).fill('')];\n setOtp(newOtp);\n\n const otpString = newOtp.join('');\n onChange?.(otpString);\n\n const nextIndex = Math.min(pastedArray.length, length - 1);\n inputRefs.current[nextIndex]?.focus();\n\n if (newOtp.every((digit) => digit !== '')) {\n onComplete?.(otpString);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className={`flex gap-2 justify-center ${className}`} onBlur={onBlur}>\n {otp.map((digit, index) => (\n <React.Fragment key={index}>\n <Input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n placeholder=\"\"\n value={digit}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n disabled={disabled}\n maxLength={1}\n className=\"text-center text-lg font-semibold otp-input-field\"\n style={{\n width: '63px',\n height: '44px',\n borderRadius: '12px',\n borderColor: error ? '#C21919' : '#D1D1D1',\n }}\n />\n {index === Math.floor(length / 2) - 1 && (\n <div className=\"flex items-center justify-center px-1\">\n <span className=\"text-gray-400 text-xl\">—</span>\n </div>\n )}\n </React.Fragment>\n ))}\n </div>\n {error && errorMessage && (\n <div className=\"flex items-center justify-center mt-2 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n\nconst ControlledOTPInput: React.FC<OTPInputProps & { control: NonNullable<OTPInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n errorMessage: errorMessageProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n const hasError = errorProp ?? !!fieldState.error;\n return (\n <OTPInputBase\n {...rest}\n value={field.value}\n onChange={field.onChange}\n onBlur={field.onBlur}\n error={hasError}\n errorMessage={errorMessageProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const OTPInput: React.FC<OTPInputProps> = ({ control, name, ...props }) => {\n if (control && name) {\n return <ControlledOTPInput control={control} name={name} {...props} />;\n }\n return <OTPInputBase {...props} />;\n};\n","import React, { useState, useEffect } from 'react';\nimport { Input as AntInput, Select, InputRef } from 'antd';\nimport type { InputProps as AntInputProps } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface PhoneInputProps\n extends Omit<AntInputProps, 'addonBefore' | 'value' | 'onChange'> {\n label?: string;\n error?: string;\n helperText?: string;\n countryCode?: string;\n onCountryCodeChange?: (value: string) => void;\n countryCodes?: { value: string; label: string }[];\n showCountryCodeDropdown?: boolean;\n format?: 'default' | 'spaced' | 'dashed' | 'none';\n customFormat?: (value: string) => string;\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n control?: Control<any>;\n}\n\nconst PhoneInputBase = React.forwardRef<InputRef, Omit<PhoneInputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n countryCode = '+234',\n onCountryCodeChange,\n countryCodes = [\n { value: '+234', label: '+234' },\n { value: '+1', label: '+1' },\n { value: '+44', label: '+44' },\n { value: '+91', label: '+91' },\n ],\n showCountryCodeDropdown = true,\n format = 'spaced',\n customFormat,\n value,\n onChange,\n ...props\n}, ref) => {\n const errorClass = error ? 'phone-input-error-state' : '';\n const [displayValue, setDisplayValue] = useState('');\n\n useEffect(() => {\n if (value !== undefined) {\n const cleaned = String(value).replace(/\\D/g, '');\n const formatted = formatPhoneNumber(cleaned);\n setDisplayValue(formatted);\n }\n }, [value, format, countryCode]);\n\n const formatPhoneNumber = (val: string): string => {\n const cleaned = val.replace(/\\D/g, '');\n\n if (customFormat) {\n return customFormat(cleaned);\n }\n\n if (format === 'none') {\n return cleaned;\n }\n\n let formatted = '';\n\n if (format === 'spaced') {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n } else {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n }\n } else if (format === 'dashed') {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `${cleaned.slice(0, 3)}-${cleaned.slice(3)}`;\n } else {\n formatted = `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n } else {\n if (countryCode === '+1') {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`;\n } else {\n formatted = `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n } else {\n if (cleaned.length <= 3) {\n formatted = cleaned;\n } else if (cleaned.length <= 6) {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n } else {\n formatted = `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n }\n }\n }\n\n return formatted;\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n !/^\\d$/.test(e.key) &&\n e.key !== 'Backspace' &&\n e.key !== 'Delete' &&\n e.key !== 'Tab' &&\n e.key !== 'ArrowLeft' &&\n e.key !== 'ArrowRight' &&\n e.key !== 'Home' &&\n e.key !== 'End'\n ) {\n e.preventDefault();\n }\n props.onKeyDown?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const cursorPosition = input.selectionStart || 0;\n\n const cleaned = input.value.replace(/\\D/g, '');\n const formatted = formatPhoneNumber(cleaned);\n\n setDisplayValue(formatted);\n\n const oldLength = displayValue.length;\n const newLength = formatted.length;\n const diff = newLength - oldLength;\n\n requestAnimationFrame(() => {\n const newCursorPosition = Math.max(0, Math.min(cursorPosition + diff, formatted.length));\n input.setSelectionRange(newCursorPosition, newCursorPosition);\n });\n\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: cleaned },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain');\n const numericData = pastedData.replace(/\\D/g, '');\n\n const target = e.target as HTMLInputElement;\n const start = target.selectionStart || 0;\n const currentCleaned = displayValue.replace(/\\D/g, '');\n const newCleaned = currentCleaned.slice(0, start) + numericData;\n\n const formatted = formatPhoneNumber(newCleaned);\n setDisplayValue(formatted);\n\n if (onChange) {\n const syntheticEvent = {\n ...e,\n target: { ...e.target, value: newCleaned },\n } as any;\n onChange(syntheticEvent);\n }\n\n props.onPaste?.(e);\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n className=\"block text-sm font-medium mb-2\"\n style={{ color: error ? '#C21919' : '#181918' }}\n >\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {`\n .phone-input-container {\n display: flex;\n gap: 8px;\n }\n\n .phone-input-error-state .ant-select-selector {\n border-color: #C21919 !important;\n }\n\n .phone-input-error-state .ant-select-focused .ant-select-selector {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n\n .phone-input-error-state .ant-input {\n border-color: #C21919 !important;\n }\n\n .phone-input-error-state .ant-input:focus {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n\n .phone-input-country-code-static {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 61px;\n height: 44px;\n border-radius: 12px;\n border: 1px solid;\n font-size: 14px;\n font-weight: 500;\n background-color: #FAFAFA;\n }\n\n .phone-input-error-state .phone-input-country-code-static {\n border-color: #C21919 !important;\n }\n `}\n </style>\n <div className={`phone-input-container ${errorClass}`}>\n {showCountryCodeDropdown ? (\n <Select\n value={countryCode}\n onChange={onCountryCodeChange}\n options={countryCodes}\n style={{\n width: '85px',\n borderRadius: '12px',\n }}\n className={errorClass}\n popupClassName=\"country-code-dropdown\"\n disabled={props.disabled}\n />\n ) : (\n <div\n className=\"phone-input-country-code-static\"\n style={{\n borderColor: error ? '#C21919' : '#D1D1D1',\n color: props.disabled ? '#00000040' : '#000000',\n backgroundColor: props.disabled ? '#f5f5f5' : '#FAFAFA',\n }}\n >\n {countryCode}\n </div>\n )}\n <AntInput\n {...props}\n ref={ref}\n value={displayValue}\n className={className}\n onKeyDown={handleKeyDown}\n onChange={handleChange}\n onPaste={handlePaste}\n style={{\n flex: 1,\n height: '44px',\n borderRadius: '12px',\n borderColor: error ? '#C21919' : '#D1D1D1',\n ...props.style,\n }}\n />\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n});\nPhoneInputBase.displayName = 'PhoneInputBase';\n\nconst ControlledPhoneInput: React.FC<PhoneInputProps & { control: NonNullable<PhoneInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PhoneInputBase\n {...rest}\n value={field.value}\n onChange={(e) => field.onChange(e.target.value)}\n onBlur={field.onBlur}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PhoneInput = React.forwardRef<InputRef, PhoneInputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledPhoneInput control={control} name={name} {...props} />;\n }\n return <PhoneInputBase ref={ref} name={name} {...props} />;\n});\nPhoneInput.displayName = 'PhoneInput';\n","import React, { useState, useEffect } from 'react';\nimport { Input as AntInput, InputRef } from 'antd';\nimport type { InputProps as AntInputProps } from 'antd';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface CurrencyInputProps extends Omit<AntInputProps, 'onChange'> {\n label?: string;\n error?: string;\n helperText?: string;\n currencySymbol?: string;\n formatAmount?: boolean;\n onChange?: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;\n control?: Control<any>;\n}\n\nconst CurrencyInputBase = React.forwardRef<InputRef, Omit<CurrencyInputProps, 'control'>>(({\n label,\n error,\n helperText,\n className = '',\n status,\n currencySymbol = '₦',\n formatAmount = false,\n onChange,\n value: externalValue,\n ...props\n}, ref) => {\n const errorClass = error ? 'currency-input-error-state' : '';\n const [displayValue, setDisplayValue] = useState<string>('');\n\n const formatNumber = (num: string): string => {\n const cleanNum = num.replace(/[^\\d.]/g, '');\n const parts = cleanNum.split('.');\n const integerPart = parts[0];\n const decimalPart = parts[1];\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return decimalPart !== undefined ? `${formattedInteger}.${decimalPart}` : formattedInteger;\n };\n\n const unformatNumber = (formatted: string): string => {\n return formatted.replace(/,/g, '');\n };\n\n useEffect(() => {\n if (externalValue !== undefined) {\n const stringValue = String(externalValue);\n setDisplayValue(formatAmount ? formatNumber(stringValue) : stringValue);\n }\n }, [externalValue, formatAmount]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n\n if (formatAmount) {\n const rawValue = unformatNumber(inputValue);\n const formatted = formatNumber(rawValue);\n setDisplayValue(formatted);\n if (onChange) {\n onChange(rawValue, e);\n }\n } else {\n setDisplayValue(inputValue);\n if (onChange) {\n onChange(inputValue, e);\n }\n }\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <label\n className=\"block text-sm font-medium mb-2\"\n style={{ color: error ? '#C21919' : '#181918' }}\n >\n {label}\n {props.required && <span style={{ color: '#C21919' }}>*</span>}\n </label>\n )}\n <style>\n {`\n .currency-input-wrapper.ant-input-affix-wrapper {\n display: flex;\n align-items: center;\n padding: 0;\n height: 44px;\n border-radius: 12px;\n }\n\n .currency-input-wrapper .ant-input-prefix {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 37px;\n height: 41px;\n background-color: #F0F2F4;\n margin: 0;\n border-radius: 12px 0 0 12px;\n color: #000000;\n flex-shrink: 0;\n margin-right: 10px;\n }\n\n .currency-input-wrapper .ant-input {\n padding: 11px 16px 11px 20px;\n height: 44px;\n }\n\n .currency-input-error-state.ant-input-affix-wrapper {\n border-color: #C21919 !important;\n }\n\n .currency-input-error-state.ant-input-affix-wrapper:focus,\n .currency-input-error-state.ant-input-affix-wrapper-focused {\n border-color: #C21919 !important;\n box-shadow: 0 0 0 2px rgba(194, 25, 25, 0.1) !important;\n }\n `}\n </style>\n <AntInput\n ref={ref}\n className={`currency-input-wrapper ${className} ${errorClass}`}\n status={error ? 'error' : status}\n prefix={<span>{currencySymbol}</span>}\n {...props}\n value={formatAmount ? displayValue : externalValue}\n onChange={handleChange}\n style={{\n borderColor: error ? '#C21919' : '#D1D1D1',\n ...props.style,\n }}\n />\n {error && (\n <div className=\"flex items-center mt-1 text-xs text-[#C21919]\">\n <svg className=\"w-3 h-3 mr-1\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n});\nCurrencyInputBase.displayName = 'CurrencyInputBase';\n\nconst ControlledCurrencyInput: React.FC<CurrencyInputProps & { control: NonNullable<CurrencyInputProps['control']>; name: string }> = ({\n control,\n name,\n error: errorProp,\n ...rest\n}) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <CurrencyInputBase\n {...rest}\n value={field.value}\n onChange={(value) => field.onChange(value)}\n onBlur={field.onBlur}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const CurrencyInput = React.forwardRef<InputRef, CurrencyInputProps>(({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledCurrencyInput control={control} name={name} {...props} />;\n }\n return <CurrencyInputBase ref={ref} name={name} {...props} />;\n});\nCurrencyInput.displayName = 'CurrencyInput';\n","import React from 'react';\nimport { Avatar } from 'antd';\nimport { UserOutlined } from '@ant-design/icons';\n\nexport interface UserPillProps {\n name: string;\n subtitle?: string;\n avatar?: string;\n className?: string;\n size?: 'small' | 'medium' | 'large';\n}\n\nexport const UserPill: React.FC<UserPillProps> = ({\n name,\n subtitle,\n avatar,\n className = '',\n}) => {\n const avatarSize = 30;\n\n return (\n <div\n className={`flex items-center ${className}`}\n style={{\n backgroundColor: '#E6E6E6',\n borderRadius: '40px',\n padding: '5px 12px 5px 5px',\n height: '40px',\n gap: '8px',\n }}\n >\n {avatar ? (\n <Avatar src={avatar} size={avatarSize} />\n ) : (\n <Avatar icon={<UserOutlined />} size={avatarSize} style={{ backgroundColor: '#6B7280' }} />\n )}\n <div className=\"flex flex-col\">\n <span\n style={{\n color: '#181918',\n fontSize: '14px',\n fontWeight: 600,\n lineHeight: '1.2',\n }}\n >\n {name}\n </span>\n {subtitle && (\n <span\n style={{\n color: '#181918',\n fontSize: '12px',\n fontWeight: 400,\n lineHeight: '1.2',\n marginTop: '2px',\n }}\n >\n {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='353'%20height='130'%20viewBox='0%200%20353%20130'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20opacity='0.1'%3e%3cpath%20d='M17%2024C17%2015.1634%2024.1634%208%2033%208H327C335.837%208%20343%2015.1634%20343%2024V98C343%20106.837%20335.837%20114%20327%20114H33C24.1635%20114%2017%20106.837%2017%2098V24Z'%20fill='url(%23paint0_linear_683_56525)'/%3e%3crect%20x='41'%20y='29'%20width='67'%20height='67'%20rx='33.5'%20fill='%231B1C1E'/%3e%3cpath%20d='M68.8552%2071V55.0216H75.5683C76.5263%2055.0216%2077.3484%2055.1932%2078.0347%2055.5363C78.7354%2055.8795%2079.2715%2056.3657%2079.6433%2056.9948C80.0294%2057.6096%2080.2224%2058.346%2080.2224%2059.2039C80.2224%2059.9903%2080.0151%2060.7052%2079.6004%2061.3486C79.2%2061.9777%2078.6067%2062.471%2077.8203%2062.8285L77.7988%2062.0349C78.4851%2062.2923%2079.0499%2062.6355%2079.4932%2063.0644C79.9507%2063.4791%2080.2939%2063.9652%2080.5226%2064.5229C80.7514%2065.0662%2080.8658%2065.6453%2080.8658%2066.2601C80.8658%2067.7328%2080.394%2068.891%2079.4503%2069.7346C78.5066%2070.5782%2077.2197%2071%2075.5897%2071H68.8552ZM70.9571%2069.0697H75.6755C76.6049%2069.0697%2077.3484%2068.8195%2077.906%2068.3191C78.4637%2067.8186%2078.7425%2067.1394%2078.7425%2066.2815C78.7425%2065.4236%2078.4637%2064.7445%2077.906%2064.244C77.3484%2063.7293%2076.6049%2063.4719%2075.6755%2063.4719H70.9571V69.0697ZM70.9571%2061.5845H75.5254C76.2975%2061.5845%2076.9195%2061.3629%2077.3913%2060.9197C77.8632%2060.4621%2078.0991%2059.883%2078.0991%2059.1824C78.0991%2058.4532%2077.8632%2057.8956%2077.3913%2057.5095C76.9195%2057.1235%2076.2975%2056.9304%2075.5254%2056.9304H70.9571V61.5845Z'%20fill='%23FDFDFE'/%3e%3cpath%20d='M133.44%2049V34.1H139.72C140.707%2034.1%20141.547%2034.2733%20142.24%2034.62C142.947%2034.9533%20143.487%2035.4333%20143.86%2036.06C144.247%2036.6733%20144.44%2037.42%20144.44%2038.3C144.44%2038.98%20144.253%2039.62%20143.88%2040.22C143.52%2040.8067%20142.94%2041.2933%20142.14%2041.68V40.42C142.873%2040.7%20143.453%2041.0467%20143.88%2041.46C144.307%2041.8733%20144.607%2042.3333%20144.78%2042.84C144.953%2043.3467%20145.04%2043.88%20145.04%2044.44C145.04%2045.8667%20144.567%2046.9867%20143.62%2047.8C142.687%2048.6%20141.387%2049%20139.72%2049H133.44ZM136.16%2046.6H140C140.707%2046.6%20141.267%2046.4067%20141.68%2046.02C142.107%2045.62%20142.32%2045.0933%20142.32%2044.44C142.32%2043.7867%20142.107%2043.26%20141.68%2042.86C141.267%2042.46%20140.707%2042.26%20140%2042.26H136.16V46.6ZM136.16%2039.88H139.86C140.42%2039.88%20140.867%2039.72%20141.2%2039.4C141.533%2039.0667%20141.7%2038.64%20141.7%2038.12C141.7%2037.6%20141.533%2037.1867%20141.2%2036.88C140.867%2036.5733%20140.42%2036.42%20139.86%2036.42H136.16V39.88ZM152.208%2049.24C151.088%2049.24%20150.108%2048.9867%20149.268%2048.48C148.428%2047.9733%20147.775%2047.2867%20147.308%2046.42C146.841%2045.5533%20146.608%2044.5933%20146.608%2043.54C146.608%2042.4467%20146.841%2041.48%20147.308%2040.64C147.788%2039.7867%20148.435%2039.1133%20149.248%2038.62C150.075%2038.1267%20150.995%2037.88%20152.008%2037.88C152.861%2037.88%20153.608%2038.02%20154.248%2038.3C154.901%2038.58%20155.455%2038.9667%20155.908%2039.46C156.361%2039.9533%20156.708%2040.52%20156.948%2041.16C157.188%2041.7867%20157.308%2042.4667%20157.308%2043.2C157.308%2043.3867%20157.295%2043.58%20157.268%2043.78C157.255%2043.98%20157.221%2044.1533%20157.168%2044.3H148.768V42.3H155.688L154.448%2043.24C154.568%2042.6267%20154.535%2042.08%20154.348%2041.6C154.175%2041.12%20153.881%2040.74%20153.468%2040.46C153.068%2040.18%20152.581%2040.04%20152.008%2040.04C151.461%2040.04%20150.975%2040.18%20150.548%2040.46C150.121%2040.7267%20149.795%2041.1267%20149.568%2041.66C149.355%2042.18%20149.275%2042.8133%20149.328%2043.56C149.275%2044.2267%20149.361%2044.82%20149.588%2045.34C149.828%2045.8467%20150.175%2046.24%20150.628%2046.52C151.095%2046.8%20151.628%2046.94%20152.228%2046.94C152.828%2046.94%20153.335%2046.8133%20153.748%2046.56C154.175%2046.3067%20154.508%2045.9667%20154.748%2045.54L156.868%2046.58C156.655%2047.1%20156.321%2047.56%20155.868%2047.96C155.415%2048.36%20154.875%2048.6733%20154.248%2048.9C153.635%2049.1267%20152.955%2049.24%20152.208%2049.24ZM159.294%2049V38.12H161.754V40.26L161.554%2039.88C161.808%2039.2267%20162.221%2038.7333%20162.794%2038.4C163.381%2038.0533%20164.061%2037.88%20164.834%2037.88C165.634%2037.88%20166.341%2038.0533%20166.954%2038.4C167.581%2038.7467%20168.068%2039.2333%20168.414%2039.86C168.761%2040.4733%20168.934%2041.1867%20168.934%2042V49H166.314V42.62C166.314%2042.14%20166.221%2041.7267%20166.034%2041.38C165.848%2041.0333%20165.588%2040.7667%20165.254%2040.58C164.934%2040.38%20164.554%2040.28%20164.114%2040.28C163.688%2040.28%20163.308%2040.38%20162.974%2040.58C162.641%2040.7667%20162.381%2041.0333%20162.194%2041.38C162.008%2041.7267%20161.914%2042.14%20161.914%2042.62V49H159.294ZM169.65%2053.42C169.476%2053.42%20169.296%2053.4133%20169.11%2053.4C168.923%2053.3867%20168.77%2053.3667%20168.65%2053.34V51.06C168.89%2051.1%20169.13%2051.12%20169.37%2051.12C169.93%2051.12%20170.363%2050.9867%20170.67%2050.72C170.99%2050.4667%20171.15%2050.0733%20171.15%2049.54V38.12H173.77V49.54C173.77%2050.3667%20173.603%2051.0667%20173.27%2051.64C172.936%2052.2267%20172.456%2052.6667%20171.83%2052.96C171.216%2053.2667%20170.49%2053.42%20169.65%2053.42ZM171.15%2036.9V34.1H173.77V36.9H171.15ZM179.489%2049.24C178.729%2049.24%20178.069%2049.1133%20177.509%2048.86C176.949%2048.6067%20176.515%2048.2467%20176.209%2047.78C175.902%2047.3%20175.749%2046.7467%20175.749%2046.12C175.749%2045.52%20175.882%2044.9867%20176.149%2044.52C176.415%2044.04%20176.829%2043.64%20177.389%2043.32C177.949%2043%20178.655%2042.7733%20179.509%2042.64L183.069%2042.06V44.06L180.009%2044.58C179.489%2044.6733%20179.102%2044.84%20178.849%2045.08C178.595%2045.32%20178.469%2045.6333%20178.469%2046.02C178.469%2046.3933%20178.609%2046.6933%20178.889%2046.92C179.182%2047.1333%20179.542%2047.24%20179.969%2047.24C180.515%2047.24%20180.995%2047.1267%20181.409%2046.9C181.835%2046.66%20182.162%2046.3333%20182.389%2045.92C182.629%2045.5067%20182.749%2045.0533%20182.749%2044.56V41.76C182.749%2041.2933%20182.562%2040.9067%20182.189%2040.6C181.829%2040.28%20181.349%2040.12%20180.749%2040.12C180.189%2040.12%20179.689%2040.2733%20179.249%2040.58C178.822%2040.8733%20178.509%2041.2667%20178.309%2041.76L176.169%2040.72C176.382%2040.1467%20176.715%2039.6533%20177.169%2039.24C177.635%2038.8133%20178.182%2038.48%20178.809%2038.24C179.435%2038%20180.115%2037.88%20180.849%2037.88C181.742%2037.88%20182.529%2038.0467%20183.209%2038.38C183.889%2038.7%20184.415%2039.1533%20184.789%2039.74C185.175%2040.3133%20185.369%2040.9867%20185.369%2041.76V49H182.889V47.14L183.449%2047.1C183.169%2047.5667%20182.835%2047.96%20182.449%2048.28C182.062%2048.5867%20181.622%2048.8267%20181.129%2049C180.635%2049.16%20180.089%2049.24%20179.489%2049.24ZM187.79%2049V38.12H190.25V40.64L189.97%2040.22C190.17%2039.4333%20190.57%2038.8467%20191.17%2038.46C191.77%2038.0733%20192.477%2037.88%20193.29%2037.88C194.184%2037.88%20194.97%2038.1133%20195.65%2038.58C196.33%2039.0467%20196.77%2039.66%20196.97%2040.42L196.23%2040.48C196.564%2039.6133%20197.064%2038.9667%20197.73%2038.54C198.397%2038.1%20199.164%2037.88%20200.03%2037.88C200.804%2037.88%20201.49%2038.0533%20202.09%2038.4C202.704%2038.7467%20203.184%2039.2333%20203.53%2039.86C203.877%2040.4733%20204.05%2041.1867%20204.05%2042V49H201.43V42.62C201.43%2042.14%20201.344%2041.7267%20201.17%2041.38C200.997%2041.0333%20200.757%2040.7667%20200.45%2040.58C200.144%2040.38%20199.77%2040.28%20199.33%2040.28C198.917%2040.28%20198.55%2040.38%20198.23%2040.58C197.91%2040.7667%20197.664%2041.0333%20197.49%2041.38C197.317%2041.7267%20197.23%2042.14%20197.23%2042.62V49H194.61V42.62C194.61%2042.14%20194.524%2041.7267%20194.35%2041.38C194.177%2041.0333%20193.93%2040.7667%20193.61%2040.58C193.304%2040.38%20192.937%2040.28%20192.51%2040.28C192.097%2040.28%20191.73%2040.38%20191.41%2040.58C191.09%2040.7667%20190.844%2041.0333%20190.67%2041.38C190.497%2041.7267%20190.41%2042.14%20190.41%2042.62V49H187.79ZM206.267%2049V38.12H208.887V49H206.267ZM206.267%2036.9V34.1H208.887V36.9H206.267ZM211.306%2049V38.12H213.766V40.26L213.566%2039.88C213.819%2039.2267%20214.233%2038.7333%20214.806%2038.4C215.393%2038.0533%20216.073%2037.88%20216.846%2037.88C217.646%2037.88%20218.353%2038.0533%20218.966%2038.4C219.593%2038.7467%20220.079%2039.2333%20220.426%2039.86C220.773%2040.4733%20220.946%2041.1867%20220.946%2042V49H218.326V42.62C218.326%2042.14%20218.233%2041.7267%20218.046%2041.38C217.859%2041.0333%20217.599%2040.7667%20217.266%2040.58C216.946%2040.38%20216.566%2040.28%20216.126%2040.28C215.699%2040.28%20215.319%2040.38%20214.986%2040.58C214.653%2040.7667%20214.393%2041.0333%20214.206%2041.38C214.019%2041.7267%20213.926%2042.14%20213.926%2042.62V49H211.306Z'%20fill='%23181918'/%3e%3cpath%20d='M136.872%2072.168C136.228%2072.168%20135.645%2072.0233%20135.122%2071.734C134.609%2071.4353%20134.221%2071.0153%20133.96%2070.474L134.128%2070.32V72H133.078V61.402H134.128V66.176L133.96%2065.882C134.259%2065.406%20134.655%2065.028%20135.15%2064.748C135.654%2064.468%20136.228%2064.328%20136.872%2064.328C137.581%2064.328%20138.211%2064.5007%20138.762%2064.846C139.322%2065.182%20139.761%2065.644%20140.078%2066.232C140.405%2066.82%20140.568%2067.492%20140.568%2068.248C140.568%2068.9947%20140.405%2069.6667%20140.078%2070.264C139.761%2070.852%20139.322%2071.3187%20138.762%2071.664C138.211%2072%20137.581%2072.168%20136.872%2072.168ZM136.816%2071.118C137.32%2071.118%20137.768%2070.992%20138.16%2070.74C138.561%2070.488%20138.874%2070.1473%20139.098%2069.718C139.331%2069.2793%20139.448%2068.7893%20139.448%2068.248C139.448%2067.6973%20139.331%2067.2073%20139.098%2066.778C138.874%2066.3487%20138.561%2066.008%20138.16%2065.756C137.768%2065.504%20137.32%2065.378%20136.816%2065.378C136.312%2065.378%20135.855%2065.504%20135.444%2065.756C135.043%2066.008%20134.721%2066.3533%20134.478%2066.792C134.245%2067.2213%20134.128%2067.7067%20134.128%2068.248C134.128%2068.7893%20134.245%2069.2793%20134.478%2069.718C134.721%2070.1473%20135.043%2070.488%20135.444%2070.74C135.855%2070.992%20136.312%2071.118%20136.816%2071.118ZM145.832%2072.168C145.132%2072.168%20144.497%2072%20143.928%2071.664C143.368%2071.3187%20142.925%2070.8473%20142.598%2070.25C142.271%2069.6527%20142.108%2068.976%20142.108%2068.22C142.108%2067.464%20142.267%2066.7967%20142.584%2066.218C142.901%2065.63%20143.331%2065.168%20143.872%2064.832C144.423%2064.496%20145.039%2064.328%20145.72%2064.328C146.261%2064.328%20146.742%2064.4307%20147.162%2064.636C147.591%2064.832%20147.955%2065.1027%20148.254%2065.448C148.553%2065.784%20148.781%2066.1667%20148.94%2066.596C149.099%2067.016%20149.178%2067.45%20149.178%2067.898C149.178%2067.9913%20149.173%2068.0987%20149.164%2068.22C149.155%2068.332%20149.141%2068.4487%20149.122%2068.57H142.78V67.59H148.52L148.016%2068.01C148.1%2067.4967%20148.039%2067.0393%20147.834%2066.638C147.638%2066.2273%20147.353%2065.9053%20146.98%2065.672C146.607%2065.4293%20146.187%2065.308%20145.72%2065.308C145.253%2065.308%20144.819%2065.4293%20144.418%2065.672C144.026%2065.9147%20143.718%2066.2553%20143.494%2066.694C143.27%2067.1233%20143.181%2067.6367%20143.228%2068.234C143.181%2068.8313%20143.275%2069.354%20143.508%2069.802C143.751%2070.2407%20144.077%2070.5813%20144.488%2070.824C144.908%2071.0667%20145.356%2071.188%20145.832%2071.188C146.383%2071.188%20146.845%2071.0573%20147.218%2070.796C147.591%2070.5347%20147.895%2070.208%20148.128%2069.816L149.024%2070.292C148.875%2070.628%20148.646%2070.9407%20148.338%2071.23C148.03%2071.51%20147.661%2071.7387%20147.232%2071.916C146.812%2072.084%20146.345%2072.168%20145.832%2072.168ZM151.029%2072V64.496H152.079V65.952L151.841%2065.896C152.028%2065.4107%20152.331%2065.028%20152.751%2064.748C153.181%2064.468%20153.675%2064.328%20154.235%2064.328C154.767%2064.328%20155.243%2064.4493%20155.663%2064.692C156.093%2064.9347%20156.429%2065.2707%20156.671%2065.7C156.923%2066.12%20157.049%2066.596%20157.049%2067.128V72H155.999V67.534C155.999%2067.0767%20155.915%2066.6893%20155.747%2066.372C155.589%2066.0547%20155.36%2065.812%20155.061%2065.644C154.772%2065.4667%20154.436%2065.378%20154.053%2065.378C153.671%2065.378%20153.33%2065.4667%20153.031%2065.644C152.733%2065.812%20152.499%2066.0593%20152.331%2066.386C152.163%2066.7033%20152.079%2067.086%20152.079%2067.534V72H151.029ZM164.725%2074.898C163.903%2074.898%20163.138%2074.7487%20162.429%2074.45C161.729%2074.1607%20161.113%2073.75%20160.581%2073.218C160.049%2072.686%20159.633%2072.07%20159.335%2071.37C159.045%2070.6607%20158.901%2069.9%20158.901%2069.088C158.901%2068.276%20159.05%2067.52%20159.349%2066.82C159.647%2066.12%20160.058%2065.5087%20160.581%2064.986C161.113%2064.4633%20161.733%2064.0573%20162.443%2063.768C163.152%2063.4693%20163.913%2063.32%20164.725%2063.32C165.565%2063.32%20166.339%2063.4787%20167.049%2063.796C167.758%2064.104%20168.369%2064.5287%20168.883%2065.07C169.405%2065.602%20169.807%2066.2087%20170.087%2066.89C170.376%2067.5713%20170.521%2068.2853%20170.521%2069.032C170.521%2069.62%20170.427%2070.138%20170.241%2070.586C170.063%2071.0247%20169.802%2071.37%20169.457%2071.622C169.111%2071.874%20168.696%2072%20168.211%2072C167.921%2072%20167.646%2071.9487%20167.385%2071.846C167.123%2071.734%20166.899%2071.58%20166.713%2071.384C166.535%2071.1787%20166.414%2070.936%20166.349%2070.656L166.573%2070.838C166.423%2071.09%20166.237%2071.3047%20166.013%2071.482C165.798%2071.65%20165.555%2071.7807%20165.285%2071.874C165.014%2071.958%20164.72%2072%20164.403%2072C163.861%2072%20163.371%2071.8693%20162.933%2071.608C162.503%2071.3467%20162.163%2070.992%20161.911%2070.544C161.659%2070.096%20161.533%2069.5873%20161.533%2069.018C161.533%2068.4487%20161.659%2067.94%20161.911%2067.492C162.163%2067.044%20162.503%2066.6893%20162.933%2066.428C163.371%2066.1573%20163.861%2066.022%20164.403%2066.022C164.86%2066.022%20165.275%2066.1153%20165.649%2066.302C166.031%2066.4887%20166.335%2066.75%20166.559%2067.086L166.461%2067.254V66.162H167.371V70.026C167.371%2070.3713%20167.445%2070.6233%20167.595%2070.782C167.753%2070.9407%20167.963%2071.02%20168.225%2071.02C168.617%2071.02%20168.92%2070.8567%20169.135%2070.53C169.359%2070.2033%20169.471%2069.7133%20169.471%2069.06C169.471%2068.388%20169.354%2067.7627%20169.121%2067.184C168.887%2066.6053%20168.561%2066.1013%20168.141%2065.672C167.721%2065.2427%20167.221%2064.9067%20166.643%2064.664C166.064%2064.4213%20165.425%2064.3%20164.725%2064.3C164.043%2064.3%20163.409%2064.4213%20162.821%2064.664C162.242%2064.8973%20161.738%2065.2287%20161.309%2065.658C160.879%2066.0873%20160.543%2066.5913%20160.301%2067.17C160.067%2067.7487%20159.951%2068.3833%20159.951%2069.074C159.951%2069.746%20160.063%2070.376%20160.287%2070.964C160.52%2071.5427%20160.847%2072.0513%20161.267%2072.49C161.696%2072.938%20162.205%2073.288%20162.793%2073.54C163.381%2073.792%20164.034%2073.918%20164.753%2073.918C165.173%2073.918%20165.579%2073.8713%20165.971%2073.778C166.363%2073.694%20166.717%2073.5633%20167.035%2073.386L167.483%2074.226C166.689%2074.674%20165.77%2074.898%20164.725%2074.898ZM164.445%2071.02C164.809%2071.02%20165.131%2070.9313%20165.411%2070.754C165.691%2070.5767%20165.91%2070.3387%20166.069%2070.04C166.237%2069.732%20166.321%2069.3867%20166.321%2069.004C166.321%2068.4253%20166.143%2067.954%20165.789%2067.59C165.434%2067.2167%20164.986%2067.03%20164.445%2067.03C164.09%2067.03%20163.768%2067.1187%20163.479%2067.296C163.199%2067.464%20162.979%2067.6973%20162.821%2067.996C162.662%2068.2947%20162.583%2068.6353%20162.583%2069.018C162.583%2069.3913%20162.662%2069.732%20162.821%2070.04C162.989%2070.3387%20163.213%2070.5767%20163.493%2070.754C163.773%2070.9313%20164.09%2071.02%20164.445%2071.02ZM174.661%2072.168C173.942%2072.168%20173.312%2071.986%20172.771%2071.622C172.229%2071.258%20171.837%2070.7633%20171.595%2070.138L172.477%2069.718C172.691%2070.1753%20172.99%2070.5393%20173.373%2070.81C173.765%2071.0807%20174.194%2071.216%20174.661%2071.216C175.109%2071.216%20175.487%2071.1087%20175.795%2070.894C176.103%2070.67%20176.257%2070.3807%20176.257%2070.026C176.257%2069.7647%20176.182%2069.5593%20176.033%2069.41C175.883%2069.2513%20175.711%2069.13%20175.515%2069.046C175.319%2068.962%20175.146%2068.9013%20174.997%2068.864L173.919%2068.556C173.228%2068.36%20172.729%2068.0847%20172.421%2067.73C172.113%2067.3753%20171.959%2066.9647%20171.959%2066.498C171.959%2066.0593%20172.071%2065.6767%20172.295%2065.35C172.519%2065.0233%20172.822%2064.7713%20173.205%2064.594C173.587%2064.4167%20174.012%2064.328%20174.479%2064.328C175.113%2064.328%20175.687%2064.496%20176.201%2064.832C176.723%2065.1587%20177.092%2065.616%20177.307%2066.204L176.411%2066.624C176.224%2066.204%20175.953%2065.8773%20175.599%2065.644C175.253%2065.4013%20174.866%2065.28%20174.437%2065.28C174.017%2065.28%20173.681%2065.3873%20173.429%2065.602C173.177%2065.8167%20173.051%2066.0873%20173.051%2066.414C173.051%2066.666%20173.116%2066.8667%20173.247%2067.016C173.377%2067.1653%20173.527%2067.2773%20173.695%2067.352C173.872%2067.4267%20174.026%2067.4827%20174.157%2067.52L175.403%2067.884C176.009%2068.0613%20176.481%2068.3367%20176.817%2068.71C177.162%2069.0833%20177.335%2069.522%20177.335%2070.026C177.335%2070.4367%20177.218%2070.8053%20176.985%2071.132C176.761%2071.4587%20176.448%2071.7153%20176.047%2071.902C175.645%2072.0793%20175.183%2072.168%20174.661%2072.168ZM179.18%2072V61.402H180.23V65.952L179.992%2065.896C180.178%2065.4107%20180.482%2065.028%20180.902%2064.748C181.331%2064.468%20181.826%2064.328%20182.386%2064.328C182.918%2064.328%20183.394%2064.4493%20183.814%2064.692C184.243%2064.9347%20184.579%2065.2707%20184.822%2065.7C185.074%2066.12%20185.2%2066.596%20185.2%2067.128V72H184.15V67.534C184.15%2067.0767%20184.066%2066.6893%20183.898%2066.372C183.73%2066.0547%20183.496%2065.812%20183.198%2065.644C182.908%2065.4667%20182.577%2065.378%20182.204%2065.378C181.83%2065.378%20181.494%2065.4667%20181.196%2065.644C180.897%2065.812%20180.659%2066.0593%20180.482%2066.386C180.314%2066.7033%20180.23%2067.086%20180.23%2067.534V72H179.18ZM190.621%2072.168C189.921%2072.168%20189.286%2072%20188.717%2071.664C188.157%2071.3187%20187.714%2070.8473%20187.387%2070.25C187.06%2069.6527%20186.897%2068.976%20186.897%2068.22C186.897%2067.464%20187.056%2066.7967%20187.373%2066.218C187.69%2065.63%20188.12%2065.168%20188.661%2064.832C189.212%2064.496%20189.828%2064.328%20190.509%2064.328C191.05%2064.328%20191.531%2064.4307%20191.951%2064.636C192.38%2064.832%20192.744%2065.1027%20193.043%2065.448C193.342%2065.784%20193.57%2066.1667%20193.729%2066.596C193.888%2067.016%20193.967%2067.45%20193.967%2067.898C193.967%2067.9913%20193.962%2068.0987%20193.953%2068.22C193.944%2068.332%20193.93%2068.4487%20193.911%2068.57H187.569V67.59H193.309L192.805%2068.01C192.889%2067.4967%20192.828%2067.0393%20192.623%2066.638C192.427%2066.2273%20192.142%2065.9053%20191.769%2065.672C191.396%2065.4293%20190.976%2065.308%20190.509%2065.308C190.042%2065.308%20189.608%2065.4293%20189.207%2065.672C188.815%2065.9147%20188.507%2066.2553%20188.283%2066.694C188.059%2067.1233%20187.97%2067.6367%20188.017%2068.234C187.97%2068.8313%20188.064%2069.354%20188.297%2069.802C188.54%2070.2407%20188.866%2070.5813%20189.277%2070.824C189.697%2071.0667%20190.145%2071.188%20190.621%2071.188C191.172%2071.188%20191.634%2071.0573%20192.007%2070.796C192.38%2070.5347%20192.684%2070.208%20192.917%2069.816L193.813%2070.292C193.664%2070.628%20193.435%2070.9407%20193.127%2071.23C192.819%2071.51%20192.45%2071.7387%20192.021%2071.916C191.601%2072.084%20191.134%2072.168%20190.621%2072.168ZM195.818%2072V61.402H196.868V68.822L196.42%2068.752L200.634%2064.496H201.992L199.052%2067.506L202.258%2072H200.998L197.988%2067.842L198.66%2067.898L196.518%2070.11L196.868%2069.242V72H195.818ZM206.767%2072.168C206.067%2072.168%20205.433%2072%20204.863%2071.664C204.303%2071.3187%20203.86%2070.8473%20203.533%2070.25C203.207%2069.6527%20203.043%2068.976%20203.043%2068.22C203.043%2067.464%20203.202%2066.7967%20203.519%2066.218C203.837%2065.63%20204.266%2065.168%20204.807%2064.832C205.358%2064.496%20205.974%2064.328%20206.655%2064.328C207.197%2064.328%20207.677%2064.4307%20208.097%2064.636C208.527%2064.832%20208.891%2065.1027%20209.189%2065.448C209.488%2065.784%20209.717%2066.1667%20209.875%2066.596C210.034%2067.016%20210.113%2067.45%20210.113%2067.898C210.113%2067.9913%20210.109%2068.0987%20210.099%2068.22C210.09%2068.332%20210.076%2068.4487%20210.057%2068.57H203.715V67.59H209.455L208.951%2068.01C209.035%2067.4967%20208.975%2067.0393%20208.769%2066.638C208.573%2066.2273%20208.289%2065.9053%20207.915%2065.672C207.542%2065.4293%20207.122%2065.308%20206.655%2065.308C206.189%2065.308%20205.755%2065.4293%20205.353%2065.672C204.961%2065.9147%20204.653%2066.2553%20204.429%2066.694C204.205%2067.1233%20204.117%2067.6367%20204.163%2068.234C204.117%2068.8313%20204.21%2069.354%20204.443%2069.802C204.686%2070.2407%20205.013%2070.5813%20205.423%2070.824C205.843%2071.0667%20206.291%2071.188%20206.767%2071.188C207.318%2071.188%20207.78%2071.0573%20208.153%2070.796C208.527%2070.5347%20208.83%2070.208%20209.063%2069.816L209.959%2070.292C209.81%2070.628%20209.581%2070.9407%20209.273%2071.23C208.965%2071.51%20208.597%2071.7387%20208.167%2071.916C207.747%2072.084%20207.281%2072.168%20206.767%2072.168ZM211.965%2072V61.402H213.015V72H211.965ZM215.528%2072V70.46H216.648V72H215.528ZM221.34%2072.168C220.864%2072.168%20220.439%2072.0793%20220.066%2071.902C219.692%2071.7153%20219.398%2071.4633%20219.184%2071.146C218.969%2070.8287%20218.862%2070.4647%20218.862%2070.054C218.862%2069.662%20218.946%2069.3073%20219.114%2068.99C219.282%2068.6633%20219.543%2068.388%20219.898%2068.164C220.252%2067.94%20220.705%2067.7813%20221.256%2067.688L224.196%2067.198V68.15L221.508%2068.598C220.966%2068.6913%20220.574%2068.864%20220.332%2069.116C220.098%2069.368%20219.982%2069.6667%20219.982%2070.012C219.982%2070.348%20220.112%2070.6327%20220.374%2070.866C220.644%2071.0993%20220.99%2071.216%20221.41%2071.216C221.923%2071.216%20222.371%2071.1087%20222.754%2070.894C223.136%2070.67%20223.435%2070.3713%20223.65%2069.998C223.864%2069.6247%20223.972%2069.2093%20223.972%2068.752V66.848C223.972%2066.4%20223.808%2066.036%20223.482%2065.756C223.155%2065.476%20222.73%2065.336%20222.208%2065.336C221.75%2065.336%20221.349%2065.4527%20221.004%2065.686C220.658%2065.91%20220.402%2066.204%20220.234%2066.568L219.282%2066.05C219.422%2065.7327%20219.641%2065.4433%20219.94%2065.182C220.248%2064.9207%20220.598%2064.7153%20220.99%2064.566C221.382%2064.4073%20221.788%2064.328%20222.208%2064.328C222.758%2064.328%20223.244%2064.4353%20223.664%2064.65C224.093%2064.8647%20224.424%2065.1633%20224.658%2065.546C224.9%2065.9193%20225.022%2066.3533%20225.022%2066.848V72H223.972V70.502L224.126%2070.656C223.995%2070.936%20223.79%2071.1927%20223.51%2071.426C223.239%2071.65%20222.917%2071.832%20222.544%2071.972C222.18%2072.1027%20221.778%2072.168%20221.34%2072.168ZM227.952%2072V65.546H226.454V64.496H227.952V63.824C227.952%2063.3013%20228.068%2062.8627%20228.302%2062.508C228.535%2062.144%20228.843%2061.8687%20229.226%2061.682C229.608%2061.4953%20230.019%2061.402%20230.458%2061.402C230.551%2061.402%20230.658%2061.4113%20230.78%2061.43C230.901%2061.4393%20230.999%2061.4533%20231.074%2061.472V62.424C231.008%2062.4053%20230.92%2062.396%20230.808%2062.396C230.696%2062.3867%20230.616%2062.382%20230.57%2062.382C230.122%2062.382%20229.748%2062.4893%20229.45%2062.704C229.151%2062.9187%20229.002%2063.292%20229.002%2063.824V64.496H230.836V65.546H229.002V72H227.952ZM232.541%2072V64.496H233.591V65.728L233.451%2065.546C233.628%2065.1913%20233.894%2064.9113%20234.249%2064.706C234.613%2064.5007%20235.052%2064.398%20235.565%2064.398H236.041V65.448H235.383C234.842%2065.448%20234.408%2065.616%20234.081%2065.952C233.754%2066.288%20233.591%2066.764%20233.591%2067.38V72H232.541ZM237.271%2072V64.496H238.321V72H237.271ZM237.271%2063.11V61.57H238.321V63.11H237.271ZM243.901%2072.168C243.163%2072.168%20242.515%2071.9953%20241.955%2071.65C241.395%2071.3047%20240.956%2070.838%20240.639%2070.25C240.321%2069.6527%20240.163%2068.9807%20240.163%2068.234C240.163%2067.4873%20240.321%2066.82%20240.639%2066.232C240.956%2065.644%20241.395%2065.182%20241.955%2064.846C242.515%2064.5007%20243.163%2064.328%20243.901%2064.328C244.367%2064.328%20244.806%2064.412%20245.217%2064.58C245.627%2064.748%20245.991%2064.9767%20246.309%2065.266C246.626%2065.546%20246.864%2065.8727%20247.023%2066.246L246.071%2066.736C245.884%2066.3347%20245.599%2066.008%20245.217%2065.756C244.834%2065.504%20244.395%2065.378%20243.901%2065.378C243.406%2065.378%20242.958%2065.504%20242.557%2065.756C242.165%2065.9987%20241.852%2066.3393%20241.619%2066.778C241.395%2067.2073%20241.283%2067.6973%20241.283%2068.248C241.283%2068.7893%20241.395%2069.2793%20241.619%2069.718C241.852%2070.1473%20242.165%2070.488%20242.557%2070.74C242.958%2070.992%20243.406%2071.118%20243.901%2071.118C244.395%2071.118%20244.829%2070.992%20245.203%2070.74C245.585%2070.488%20245.875%2070.152%20246.071%2069.732L247.023%2070.25C246.864%2070.614%20246.626%2070.9407%20246.309%2071.23C245.991%2071.5193%20245.627%2071.748%20245.217%2071.916C244.806%2072.084%20244.367%2072.168%20243.901%2072.168ZM250.898%2072.168C250.422%2072.168%20249.998%2072.0793%20249.624%2071.902C249.251%2071.7153%20248.957%2071.4633%20248.742%2071.146C248.528%2070.8287%20248.42%2070.4647%20248.42%2070.054C248.42%2069.662%20248.504%2069.3073%20248.672%2068.99C248.84%2068.6633%20249.102%2068.388%20249.456%2068.164C249.811%2067.94%20250.264%2067.7813%20250.814%2067.688L253.754%2067.198V68.15L251.066%2068.598C250.525%2068.6913%20250.133%2068.864%20249.89%2069.116C249.657%2069.368%20249.54%2069.6667%20249.54%2070.012C249.54%2070.348%20249.671%2070.6327%20249.932%2070.866C250.203%2071.0993%20250.548%2071.216%20250.968%2071.216C251.482%2071.216%20251.93%2071.1087%20252.312%2070.894C252.695%2070.67%20252.994%2070.3713%20253.208%2069.998C253.423%2069.6247%20253.53%2069.2093%20253.53%2068.752V66.848C253.53%2066.4%20253.367%2066.036%20253.04%2065.756C252.714%2065.476%20252.289%2065.336%20251.766%2065.336C251.309%2065.336%20250.908%2065.4527%20250.562%2065.686C250.217%2065.91%20249.96%2066.204%20249.792%2066.568L248.84%2066.05C248.98%2065.7327%20249.2%2065.4433%20249.498%2065.182C249.806%2064.9207%20250.156%2064.7153%20250.548%2064.566C250.94%2064.4073%20251.346%2064.328%20251.766%2064.328C252.317%2064.328%20252.802%2064.4353%20253.222%2064.65C253.652%2064.8647%20253.983%2065.1633%20254.216%2065.546C254.459%2065.9193%20254.58%2066.3533%20254.58%2066.848V72H253.53V70.502L253.684%2070.656C253.554%2070.936%20253.348%2071.1927%20253.068%2071.426C252.798%2071.65%20252.476%2071.832%20252.102%2071.972C251.738%2072.1027%20251.337%2072.168%20250.898%2072.168Z'%20fill='%23181918'/%3e%3cpath%20d='M137.992%2093.168C137.255%2093.168%20136.578%2093.0373%20135.962%2092.776C135.346%2092.5053%20134.809%2092.132%20134.352%2091.656C133.904%2091.1707%20133.554%2090.6013%20133.302%2089.948C133.05%2089.2947%20132.924%2088.576%20132.924%2087.792C132.924%2087.008%20133.05%2086.2893%20133.302%2085.636C133.554%2084.9827%20133.904%2084.4133%20134.352%2083.928C134.809%2083.4427%20135.346%2083.0693%20135.962%2082.808C136.578%2082.5373%20137.255%2082.402%20137.992%2082.402C138.701%2082.402%20139.336%2082.528%20139.896%2082.78C140.465%2083.032%20140.941%2083.3587%20141.324%2083.76C141.716%2084.152%20141.996%2084.5673%20142.164%2085.006L141.114%2085.468C140.853%2084.8613%20140.451%2084.376%20139.91%2084.012C139.378%2083.6387%20138.739%2083.452%20137.992%2083.452C137.227%2083.452%20136.545%2083.634%20135.948%2083.998C135.351%2084.362%20134.884%2084.8707%20134.548%2085.524C134.212%2086.168%20134.044%2086.924%20134.044%2087.792C134.044%2088.6507%20134.212%2089.4067%20134.548%2090.06C134.884%2090.7133%20135.351%2091.222%20135.948%2091.586C136.545%2091.9407%20137.227%2092.118%20137.992%2092.118C138.739%2092.118%20139.378%2091.936%20139.91%2091.572C140.451%2091.208%20140.853%2090.7227%20141.114%2090.116L142.164%2090.578C141.996%2091.0073%20141.716%2091.4227%20141.324%2091.824C140.941%2092.216%20140.465%2092.538%20139.896%2092.79C139.336%2093.042%20138.701%2093.168%20137.992%2093.168ZM147.393%2093.168C146.683%2093.168%20146.039%2093%20145.461%2092.664C144.882%2092.3187%20144.42%2091.852%20144.075%2091.264C143.739%2090.6667%20143.571%2089.99%20143.571%2089.234C143.571%2088.4873%20143.739%2087.82%20144.075%2087.232C144.411%2086.644%20144.863%2086.182%20145.433%2085.846C146.011%2085.5007%20146.665%2085.328%20147.393%2085.328C148.121%2085.328%20148.769%2085.496%20149.339%2085.832C149.917%2086.168%20150.37%2086.63%20150.697%2087.218C151.033%2087.806%20151.201%2088.478%20151.201%2089.234C151.201%2089.9993%20151.028%2090.6807%20150.683%2091.278C150.337%2091.866%20149.875%2092.328%20149.297%2092.664C148.727%2093%20148.093%2093.168%20147.393%2093.168ZM147.393%2092.118C147.897%2092.118%20148.349%2091.992%20148.751%2091.74C149.161%2091.488%20149.483%2091.1427%20149.717%2090.704C149.959%2090.2653%20150.081%2089.7753%20150.081%2089.234C150.081%2088.6927%20149.959%2088.2073%20149.717%2087.778C149.483%2087.3487%20149.161%2087.008%20148.751%2086.756C148.349%2086.504%20147.897%2086.378%20147.393%2086.378C146.889%2086.378%20146.431%2086.504%20146.021%2086.756C145.619%2087.008%20145.297%2087.3487%20145.055%2087.778C144.812%2088.2073%20144.691%2088.6927%20144.691%2089.234C144.691%2089.7753%20144.812%2090.2653%20145.055%2090.704C145.297%2091.1427%20145.619%2091.488%20146.021%2091.74C146.431%2091.992%20146.889%2092.118%20147.393%2092.118ZM153.417%2093V91.46H154.537V93H153.417ZM160.207%2093V86.546H158.709V85.496H160.207V84.824C160.207%2084.3013%20160.324%2083.8627%20160.557%2083.508C160.791%2083.144%20161.099%2082.8687%20161.481%2082.682C161.864%2082.4953%20162.275%2082.402%20162.713%2082.402C162.807%2082.402%20162.914%2082.4113%20163.035%2082.43C163.157%2082.4393%20163.255%2082.4533%20163.329%2082.472V83.424C163.264%2083.4053%20163.175%2083.396%20163.063%2083.396C162.951%2083.3867%20162.872%2083.382%20162.825%2083.382C162.377%2083.382%20162.004%2083.4893%20161.705%2083.704C161.407%2083.9187%20161.257%2084.292%20161.257%2084.824V85.496H163.091V86.546H161.257V93H160.207ZM168.024%2093.168C167.314%2093.168%20166.67%2093%20166.092%2092.664C165.513%2092.3187%20165.051%2091.852%20164.706%2091.264C164.37%2090.6667%20164.202%2089.99%20164.202%2089.234C164.202%2088.4873%20164.37%2087.82%20164.706%2087.232C165.042%2086.644%20165.494%2086.182%20166.064%2085.846C166.642%2085.5007%20167.296%2085.328%20168.024%2085.328C168.752%2085.328%20169.4%2085.496%20169.97%2085.832C170.548%2086.168%20171.001%2086.63%20171.328%2087.218C171.664%2087.806%20171.832%2088.478%20171.832%2089.234C171.832%2089.9993%20171.659%2090.6807%20171.314%2091.278C170.968%2091.866%20170.506%2092.328%20169.928%2092.664C169.358%2093%20168.724%2093.168%20168.024%2093.168ZM168.024%2092.118C168.528%2092.118%20168.98%2091.992%20169.382%2091.74C169.792%2091.488%20170.114%2091.1427%20170.348%2090.704C170.59%2090.2653%20170.712%2089.7753%20170.712%2089.234C170.712%2088.6927%20170.59%2088.2073%20170.348%2087.778C170.114%2087.3487%20169.792%2087.008%20169.382%2086.756C168.98%2086.504%20168.528%2086.378%20168.024%2086.378C167.52%2086.378%20167.062%2086.504%20166.652%2086.756C166.25%2087.008%20165.928%2087.3487%20165.686%2087.778C165.443%2088.2073%20165.322%2088.6927%20165.322%2089.234C165.322%2089.7753%20165.443%2090.2653%20165.686%2090.704C165.928%2091.1427%20166.25%2091.488%20166.652%2091.74C167.062%2091.992%20167.52%2092.118%20168.024%2092.118ZM176.343%2093.168C175.821%2093.168%20175.345%2093.0467%20174.915%2092.804C174.486%2092.552%20174.145%2092.2067%20173.893%2091.768C173.651%2091.32%20173.529%2090.8067%20173.529%2090.228V85.496H174.579V90.102C174.579%2090.5033%20174.659%2090.858%20174.817%2091.166C174.985%2091.4647%20175.214%2091.698%20175.503%2091.866C175.802%2092.034%20176.143%2092.118%20176.525%2092.118C176.908%2092.118%20177.249%2092.034%20177.547%2091.866C177.846%2091.6887%20178.079%2091.4413%20178.247%2091.124C178.415%2090.7973%20178.499%2090.41%20178.499%2089.962V85.496H179.549V93H178.499V91.544L178.737%2091.6C178.56%2092.0853%20178.257%2092.468%20177.827%2092.748C177.398%2093.028%20176.903%2093.168%20176.343%2093.168ZM181.709%2093V85.496H182.759V86.952L182.521%2086.896C182.708%2086.4107%20183.011%2086.028%20183.431%2085.748C183.86%2085.468%20184.355%2085.328%20184.915%2085.328C185.447%2085.328%20185.923%2085.4493%20186.343%2085.692C186.772%2085.9347%20187.108%2086.2707%20187.351%2086.7C187.603%2087.12%20187.729%2087.596%20187.729%2088.128V93H186.679V88.534C186.679%2088.0767%20186.595%2087.6893%20186.427%2087.372C186.268%2087.0547%20186.04%2086.812%20185.741%2086.644C185.452%2086.4667%20185.116%2086.378%20184.733%2086.378C184.35%2086.378%20184.01%2086.4667%20183.711%2086.644C183.412%2086.812%20183.179%2087.0593%20183.011%2087.386C182.843%2087.7033%20182.759%2088.086%20182.759%2088.534V93H181.709ZM193.122%2093.168C192.422%2093.168%20191.792%2093%20191.232%2092.664C190.672%2092.3187%20190.229%2091.852%20189.902%2091.264C189.585%2090.6667%20189.426%2089.9947%20189.426%2089.248C189.426%2088.492%20189.585%2087.82%20189.902%2087.232C190.229%2086.644%20190.668%2086.182%20191.218%2085.846C191.778%2085.5007%20192.413%2085.328%20193.122%2085.328C193.766%2085.328%20194.34%2085.468%20194.844%2085.748C195.348%2086.028%20195.745%2086.406%20196.034%2086.882L195.866%2087.176V82.402H196.916V93H195.866V91.32L196.034%2091.474C195.773%2092.0153%20195.381%2092.4353%20194.858%2092.734C194.345%2093.0233%20193.766%2093.168%20193.122%2093.168ZM193.178%2092.118C193.682%2092.118%20194.135%2091.992%20194.536%2091.74C194.947%2091.488%20195.269%2091.1473%20195.502%2090.718C195.745%2090.2793%20195.866%2089.7893%20195.866%2089.248C195.866%2088.7067%20195.745%2088.2213%20195.502%2087.792C195.269%2087.3533%20194.947%2087.008%20194.536%2086.756C194.135%2086.504%20193.682%2086.378%20193.178%2086.378C192.684%2086.378%20192.236%2086.504%20191.834%2086.756C191.433%2087.008%20191.116%2087.3487%20190.882%2087.778C190.658%2088.2073%20190.546%2088.6973%20190.546%2089.248C190.546%2089.7893%20190.658%2090.2793%20190.882%2090.718C191.116%2091.1473%20191.428%2091.488%20191.82%2091.74C192.222%2091.992%20192.674%2092.118%20193.178%2092.118ZM202.488%2093.168C201.788%2093.168%20201.153%2093%20200.584%2092.664C200.024%2092.3187%20199.581%2091.8473%20199.254%2091.25C198.927%2090.6527%20198.764%2089.976%20198.764%2089.22C198.764%2088.464%20198.923%2087.7967%20199.24%2087.218C199.557%2086.63%20199.987%2086.168%20200.528%2085.832C201.079%2085.496%20201.695%2085.328%20202.376%2085.328C202.917%2085.328%20203.398%2085.4307%20203.818%2085.636C204.247%2085.832%20204.611%2086.1027%20204.91%2086.448C205.209%2086.784%20205.437%2087.1667%20205.596%2087.596C205.755%2088.016%20205.834%2088.45%20205.834%2088.898C205.834%2088.9913%20205.829%2089.0987%20205.82%2089.22C205.811%2089.332%20205.797%2089.4487%20205.778%2089.57H199.436V88.59H205.176L204.672%2089.01C204.756%2088.4967%20204.695%2088.0393%20204.49%2087.638C204.294%2087.2273%20204.009%2086.9053%20203.636%2086.672C203.263%2086.4293%20202.843%2086.308%20202.376%2086.308C201.909%2086.308%20201.475%2086.4293%20201.074%2086.672C200.682%2086.9147%20200.374%2087.2553%20200.15%2087.694C199.926%2088.1233%20199.837%2088.6367%20199.884%2089.234C199.837%2089.8313%20199.931%2090.354%20200.164%2090.802C200.407%2091.2407%20200.733%2091.5813%20201.144%2091.824C201.564%2092.0667%20202.012%2092.188%20202.488%2092.188C203.039%2092.188%20203.501%2092.0573%20203.874%2091.796C204.247%2091.5347%20204.551%2091.208%20204.784%2090.816L205.68%2091.292C205.531%2091.628%20205.302%2091.9407%20204.994%2092.23C204.686%2092.51%20204.317%2092.7387%20203.888%2092.916C203.468%2093.084%20203.001%2093.168%20202.488%2093.168ZM207.685%2093V85.496H208.735V86.728L208.595%2086.546C208.773%2086.1913%20209.039%2085.9113%20209.393%2085.706C209.757%2085.5007%20210.196%2085.398%20210.709%2085.398H211.185V86.448H210.527C209.986%2086.448%20209.552%2086.616%20209.225%2086.952C208.899%2087.288%20208.735%2087.764%20208.735%2088.38V93H207.685Z'%20fill='%23181918'/%3e%3ccircle%20cx='219.5'%20cy='87'%20r='2.5'%20fill='%23181918'/%3e%3cpath%20d='M232.992%2093.168C232.255%2093.168%20231.578%2093.0373%20230.962%2092.776C230.346%2092.5053%20229.809%2092.132%20229.352%2091.656C228.904%2091.1707%20228.554%2090.6013%20228.302%2089.948C228.05%2089.2947%20227.924%2088.576%20227.924%2087.792C227.924%2087.008%20228.05%2086.2893%20228.302%2085.636C228.554%2084.9827%20228.904%2084.4133%20229.352%2083.928C229.809%2083.4427%20230.346%2083.0693%20230.962%2082.808C231.578%2082.5373%20232.255%2082.402%20232.992%2082.402C233.701%2082.402%20234.336%2082.528%20234.896%2082.78C235.465%2083.032%20235.941%2083.3587%20236.324%2083.76C236.716%2084.152%20236.996%2084.5673%20237.164%2085.006L236.156%2085.496C235.895%2084.8613%20235.493%2084.362%20234.952%2083.998C234.411%2083.634%20233.757%2083.452%20232.992%2083.452C232.227%2083.452%20231.545%2083.634%20230.948%2083.998C230.351%2084.362%20229.884%2084.8707%20229.548%2085.524C229.212%2086.168%20229.044%2086.924%20229.044%2087.792C229.044%2088.6507%20229.212%2089.4067%20229.548%2090.06C229.884%2090.7133%20230.351%2091.222%20230.948%2091.586C231.545%2091.9407%20232.227%2092.118%20232.992%2092.118C233.673%2092.118%20234.285%2091.9687%20234.826%2091.67C235.377%2091.3713%20235.811%2090.9653%20236.128%2090.452C236.445%2089.9293%20236.604%2089.332%20236.604%2088.66V88.086L237.108%2088.59H232.992V87.61H237.724V88.478C237.724%2089.1593%20237.603%2089.7893%20237.36%2090.368C237.117%2090.9373%20236.781%2091.432%20236.352%2091.852C235.923%2092.272%20235.419%2092.5987%20234.84%2092.832C234.271%2093.056%20233.655%2093.168%20232.992%2093.168ZM239.576%2093V82.402H240.626V93H239.576ZM246.289%2093.168C245.58%2093.168%20244.936%2093%20244.357%2092.664C243.779%2092.3187%20243.317%2091.852%20242.971%2091.264C242.635%2090.6667%20242.467%2089.99%20242.467%2089.234C242.467%2088.4873%20242.635%2087.82%20242.971%2087.232C243.307%2086.644%20243.76%2086.182%20244.329%2085.846C244.908%2085.5007%20245.561%2085.328%20246.289%2085.328C247.017%2085.328%20247.666%2085.496%20248.235%2085.832C248.814%2086.168%20249.267%2086.63%20249.593%2087.218C249.929%2087.806%20250.097%2088.478%20250.097%2089.234C250.097%2089.9993%20249.925%2090.6807%20249.579%2091.278C249.234%2091.866%20248.772%2092.328%20248.193%2092.664C247.624%2093%20246.989%2093.168%20246.289%2093.168ZM246.289%2092.118C246.793%2092.118%20247.246%2091.992%20247.647%2091.74C248.058%2091.488%20248.38%2091.1427%20248.613%2090.704C248.856%2090.2653%20248.977%2089.7753%20248.977%2089.234C248.977%2088.6927%20248.856%2088.2073%20248.613%2087.778C248.38%2087.3487%20248.058%2087.008%20247.647%2086.756C247.246%2086.504%20246.793%2086.378%20246.289%2086.378C245.785%2086.378%20245.328%2086.504%20244.917%2086.756C244.516%2087.008%20244.194%2087.3487%20243.951%2087.778C243.709%2088.2073%20243.587%2088.6927%20243.587%2089.234C243.587%2089.7753%20243.709%2090.2653%20243.951%2090.704C244.194%2091.1427%20244.516%2091.488%20244.917%2091.74C245.328%2091.992%20245.785%2092.118%20246.289%2092.118ZM255.743%2093.168C255.099%2093.168%20254.516%2093.0233%20253.993%2092.734C253.48%2092.4353%20253.092%2092.0153%20252.831%2091.474L252.999%2091.32V93H251.949V82.402H252.999V87.176L252.831%2086.882C253.13%2086.406%20253.526%2086.028%20254.021%2085.748C254.525%2085.468%20255.099%2085.328%20255.743%2085.328C256.452%2085.328%20257.082%2085.5007%20257.633%2085.846C258.193%2086.182%20258.632%2086.644%20258.949%2087.232C259.276%2087.82%20259.439%2088.492%20259.439%2089.248C259.439%2089.9947%20259.276%2090.6667%20258.949%2091.264C258.632%2091.852%20258.193%2092.3187%20257.633%2092.664C257.082%2093%20256.452%2093.168%20255.743%2093.168ZM255.687%2092.118C256.191%2092.118%20256.639%2091.992%20257.031%2091.74C257.432%2091.488%20257.745%2091.1473%20257.969%2090.718C258.202%2090.2793%20258.319%2089.7893%20258.319%2089.248C258.319%2088.6973%20258.202%2088.2073%20257.969%2087.778C257.745%2087.3487%20257.432%2087.008%20257.031%2086.756C256.639%2086.504%20256.191%2086.378%20255.687%2086.378C255.183%2086.378%20254.726%2086.504%20254.315%2086.756C253.914%2087.008%20253.592%2087.3533%20253.349%2087.792C253.116%2088.2213%20252.999%2088.7067%20252.999%2089.248C252.999%2089.7893%20253.116%2090.2793%20253.349%2090.718C253.592%2091.1473%20253.914%2091.488%20254.315%2091.74C254.726%2091.992%20255.183%2092.118%20255.687%2092.118ZM263.457%2093.168C262.981%2093.168%20262.556%2093.0793%20262.183%2092.902C261.81%2092.7153%20261.516%2092.4633%20261.301%2092.146C261.086%2091.8287%20260.979%2091.4647%20260.979%2091.054C260.979%2090.662%20261.063%2090.3073%20261.231%2089.99C261.399%2089.6633%20261.66%2089.388%20262.015%2089.164C262.37%2088.94%20262.822%2088.7813%20263.373%2088.688L266.313%2088.198V89.15L263.625%2089.598C263.084%2089.6913%20262.692%2089.864%20262.449%2090.116C262.216%2090.368%20262.099%2090.6667%20262.099%2091.012C262.099%2091.348%20262.23%2091.6327%20262.491%2091.866C262.762%2092.0993%20263.107%2092.216%20263.527%2092.216C264.04%2092.216%20264.488%2092.1087%20264.871%2091.894C265.254%2091.67%20265.552%2091.3713%20265.767%2090.998C265.982%2090.6247%20266.089%2090.2093%20266.089%2089.752V87.848C266.089%2087.4%20265.926%2087.036%20265.599%2086.756C265.272%2086.476%20264.848%2086.336%20264.325%2086.336C263.868%2086.336%20263.466%2086.4527%20263.121%2086.686C262.776%2086.91%20262.519%2087.204%20262.351%2087.568L261.399%2087.05C261.539%2086.7327%20261.758%2086.4433%20262.057%2086.182C262.365%2085.9207%20262.715%2085.7153%20263.107%2085.566C263.499%2085.4073%20263.905%2085.328%20264.325%2085.328C264.876%2085.328%20265.361%2085.4353%20265.781%2085.65C266.21%2085.8647%20266.542%2086.1633%20266.775%2086.546C267.018%2086.9193%20267.139%2087.3533%20267.139%2087.848V93H266.089V91.502L266.243%2091.656C266.112%2091.936%20265.907%2092.1927%20265.627%2092.426C265.356%2092.65%20265.034%2092.832%20264.661%2092.972C264.297%2093.1027%20263.896%2093.168%20263.457%2093.168ZM269.299%2093V82.402H270.349V93H269.299ZM273.953%2093L277.761%2082.57H278.965L282.773%2093H281.597L280.701%2090.452H276.039L275.129%2093H273.953ZM276.403%2089.402H280.309L278.195%2083.41H278.531L276.403%2089.402ZM287.124%2093.168C286.424%2093.168%20285.794%2093%20285.234%2092.664C284.674%2092.3187%20284.231%2091.852%20283.904%2091.264C283.587%2090.6667%20283.428%2089.9947%20283.428%2089.248C283.428%2088.492%20283.587%2087.82%20283.904%2087.232C284.231%2086.644%20284.67%2086.182%20285.22%2085.846C285.78%2085.5007%20286.415%2085.328%20287.124%2085.328C287.768%2085.328%20288.342%2085.468%20288.846%2085.748C289.35%2086.028%20289.747%2086.406%20290.036%2086.882L289.868%2087.176V82.402H290.918V93H289.868V91.32L290.036%2091.474C289.775%2092.0153%20289.383%2092.4353%20288.86%2092.734C288.347%2093.0233%20287.768%2093.168%20287.124%2093.168ZM287.18%2092.118C287.684%2092.118%20288.137%2091.992%20288.538%2091.74C288.949%2091.488%20289.271%2091.1473%20289.504%2090.718C289.747%2090.2793%20289.868%2089.7893%20289.868%2089.248C289.868%2088.7067%20289.747%2088.2213%20289.504%2087.792C289.271%2087.3533%20288.949%2087.008%20288.538%2086.756C288.137%2086.504%20287.684%2086.378%20287.18%2086.378C286.686%2086.378%20286.238%2086.504%20285.836%2086.756C285.435%2087.008%20285.118%2087.3487%20284.884%2087.778C284.66%2088.2073%20284.548%2088.6973%20284.548%2089.248C284.548%2089.7893%20284.66%2090.2793%20284.884%2090.718C285.118%2091.1473%20285.43%2091.488%20285.822%2091.74C286.224%2091.992%20286.676%2092.118%20287.18%2092.118ZM293.074%2093V85.496H294.124V86.924L293.956%2086.714C294.161%2086.2753%20294.465%2085.9347%20294.866%2085.692C295.277%2085.4493%20295.725%2085.328%20296.21%2085.328C296.789%2085.328%20297.311%2085.4913%20297.778%2085.818C298.245%2086.1447%20298.576%2086.5693%20298.772%2087.092L298.478%2087.106C298.665%2086.5273%20298.987%2086.0887%20299.444%2085.79C299.911%2085.482%20300.424%2085.328%20300.984%2085.328C301.488%2085.328%20301.95%2085.4493%20302.37%2085.692C302.799%2085.9347%20303.14%2086.2707%20303.392%2086.7C303.653%2087.12%20303.784%2087.596%20303.784%2088.128V93H302.734V88.534C302.734%2088.0767%20302.65%2087.6893%20302.482%2087.372C302.323%2087.0547%20302.104%2086.812%20301.824%2086.644C301.544%2086.4667%20301.222%2086.378%20300.858%2086.378C300.503%2086.378%20300.181%2086.4667%20299.892%2086.644C299.603%2086.812%20299.374%2087.0593%20299.206%2087.386C299.038%2087.7033%20298.954%2088.086%20298.954%2088.534V93H297.904V88.534C297.904%2088.0767%20297.82%2087.6893%20297.652%2087.372C297.493%2087.0547%20297.274%2086.812%20296.994%2086.644C296.714%2086.4667%20296.392%2086.378%20296.028%2086.378C295.664%2086.378%20295.337%2086.4667%20295.048%2086.644C294.768%2086.812%20294.544%2087.0593%20294.376%2087.386C294.208%2087.7033%20294.124%2088.086%20294.124%2088.534V93H293.074ZM305.789%2093V85.496H306.839V93H305.789ZM305.789%2084.11V82.57H306.839V84.11H305.789ZM308.988%2093V85.496H310.038V86.952L309.8%2086.896C309.987%2086.4107%20310.29%2086.028%20310.71%2085.748C311.139%2085.468%20311.634%2085.328%20312.194%2085.328C312.726%2085.328%20313.202%2085.4493%20313.622%2085.692C314.051%2085.9347%20314.387%2086.2707%20314.63%2086.7C314.882%2087.12%20315.008%2087.596%20315.008%2088.128V93H313.958V88.534C313.958%2088.0767%20313.874%2087.6893%20313.706%2087.372C313.547%2087.0547%20313.319%2086.812%20313.02%2086.644C312.731%2086.4667%20312.395%2086.378%20312.012%2086.378C311.629%2086.378%20311.289%2086.4667%20310.99%2086.644C310.691%2086.812%20310.458%2087.0593%20310.29%2087.386C310.122%2087.7033%20310.038%2088.086%20310.038%2088.534V93H308.988Z'%20fill='%23181918'/%3e%3c/g%3e%3cg%20opacity='0.1'%3e%3cpath%20d='M41%2016C41%207.16344%2048.1634%200%2057%200H315C323.837%200%20331%207.16344%20331%2016V111C331%20119.837%20323.837%20127%20315%20127H57C48.1635%20127%2041%20119.837%2041%20111V16Z'%20fill='url(%23paint1_linear_683_56525)'/%3e%3crect%20x='65'%20y='36'%20width='67'%20height='67'%20rx='33.5'%20fill='%231B1C1E'/%3e%3cpath%20d='M92.8552%2078V62.0216H99.5683C100.526%2062.0216%20101.348%2062.1932%20102.035%2062.5363C102.735%2062.8795%20103.272%2063.3657%20103.643%2063.9948C104.029%2064.6096%20104.222%2065.346%20104.222%2066.2039C104.222%2066.9903%20104.015%2067.7052%20103.6%2068.3486C103.2%2068.9777%20102.607%2069.471%20101.82%2069.8285L101.799%2069.0349C102.485%2069.2923%20103.05%2069.6355%20103.493%2070.0644C103.951%2070.4791%20104.294%2070.9652%20104.523%2071.5229C104.751%2072.0662%20104.866%2072.6453%20104.866%2073.2601C104.866%2074.7328%20104.394%2075.891%20103.45%2076.7346C102.507%2077.5782%20101.22%2078%2099.5897%2078H92.8552ZM94.9571%2076.0697H99.6755C100.605%2076.0697%20101.348%2075.8195%20101.906%2075.3191C102.464%2074.8186%20102.743%2074.1394%20102.743%2073.2815C102.743%2072.4236%20102.464%2071.7445%20101.906%2071.244C101.348%2070.7293%20100.605%2070.4719%2099.6755%2070.4719H94.9571V76.0697ZM94.9571%2068.5845H99.5254C100.297%2068.5845%20100.919%2068.3629%20101.391%2067.9197C101.863%2067.4621%20102.099%2066.883%20102.099%2066.1824C102.099%2065.4532%20101.863%2064.8956%20101.391%2064.5095C100.919%2064.1235%20100.297%2063.9304%2099.5254%2063.9304H94.9571V68.5845Z'%20fill='%23FDFDFE'/%3e%3cpath%20d='M157.44%2056V41.1H163.72C164.707%2041.1%20165.547%2041.2733%20166.24%2041.62C166.947%2041.9533%20167.487%2042.4333%20167.86%2043.06C168.247%2043.6733%20168.44%2044.42%20168.44%2045.3C168.44%2045.98%20168.253%2046.62%20167.88%2047.22C167.52%2047.8067%20166.94%2048.2933%20166.14%2048.68V47.42C166.873%2047.7%20167.453%2048.0467%20167.88%2048.46C168.307%2048.8733%20168.607%2049.3333%20168.78%2049.84C168.953%2050.3467%20169.04%2050.88%20169.04%2051.44C169.04%2052.8667%20168.567%2053.9867%20167.62%2054.8C166.687%2055.6%20165.387%2056%20163.72%2056H157.44ZM160.16%2053.6H164C164.707%2053.6%20165.267%2053.4067%20165.68%2053.02C166.107%2052.62%20166.32%2052.0933%20166.32%2051.44C166.32%2050.7867%20166.107%2050.26%20165.68%2049.86C165.267%2049.46%20164.707%2049.26%20164%2049.26H160.16V53.6ZM160.16%2046.88H163.86C164.42%2046.88%20164.867%2046.72%20165.2%2046.4C165.533%2046.0667%20165.7%2045.64%20165.7%2045.12C165.7%2044.6%20165.533%2044.1867%20165.2%2043.88C164.867%2043.5733%20164.42%2043.42%20163.86%2043.42H160.16V46.88ZM176.208%2056.24C175.088%2056.24%20174.108%2055.9867%20173.268%2055.48C172.428%2054.9733%20171.775%2054.2867%20171.308%2053.42C170.841%2052.5533%20170.608%2051.5933%20170.608%2050.54C170.608%2049.4467%20170.841%2048.48%20171.308%2047.64C171.788%2046.7867%20172.435%2046.1133%20173.248%2045.62C174.075%2045.1267%20174.995%2044.88%20176.008%2044.88C176.861%2044.88%20177.608%2045.02%20178.248%2045.3C178.901%2045.58%20179.455%2045.9667%20179.908%2046.46C180.361%2046.9533%20180.708%2047.52%20180.948%2048.16C181.188%2048.7867%20181.308%2049.4667%20181.308%2050.2C181.308%2050.3867%20181.295%2050.58%20181.268%2050.78C181.255%2050.98%20181.221%2051.1533%20181.168%2051.3H172.768V49.3H179.688L178.448%2050.24C178.568%2049.6267%20178.535%2049.08%20178.348%2048.6C178.175%2048.12%20177.881%2047.74%20177.468%2047.46C177.068%2047.18%20176.581%2047.04%20176.008%2047.04C175.461%2047.04%20174.975%2047.18%20174.548%2047.46C174.121%2047.7267%20173.795%2048.1267%20173.568%2048.66C173.355%2049.18%20173.275%2049.8133%20173.328%2050.56C173.275%2051.2267%20173.361%2051.82%20173.588%2052.34C173.828%2052.8467%20174.175%2053.24%20174.628%2053.52C175.095%2053.8%20175.628%2053.94%20176.228%2053.94C176.828%2053.94%20177.335%2053.8133%20177.748%2053.56C178.175%2053.3067%20178.508%2052.9667%20178.748%2052.54L180.868%2053.58C180.655%2054.1%20180.321%2054.56%20179.868%2054.96C179.415%2055.36%20178.875%2055.6733%20178.248%2055.9C177.635%2056.1267%20176.955%2056.24%20176.208%2056.24ZM183.294%2056V45.12H185.754V47.26L185.554%2046.88C185.808%2046.2267%20186.221%2045.7333%20186.794%2045.4C187.381%2045.0533%20188.061%2044.88%20188.834%2044.88C189.634%2044.88%20190.341%2045.0533%20190.954%2045.4C191.581%2045.7467%20192.068%2046.2333%20192.414%2046.86C192.761%2047.4733%20192.934%2048.1867%20192.934%2049V56H190.314V49.62C190.314%2049.14%20190.221%2048.7267%20190.034%2048.38C189.848%2048.0333%20189.588%2047.7667%20189.254%2047.58C188.934%2047.38%20188.554%2047.28%20188.114%2047.28C187.688%2047.28%20187.308%2047.38%20186.974%2047.58C186.641%2047.7667%20186.381%2048.0333%20186.194%2048.38C186.008%2048.7267%20185.914%2049.14%20185.914%2049.62V56H183.294ZM193.65%2060.42C193.476%2060.42%20193.296%2060.4133%20193.11%2060.4C192.923%2060.3867%20192.77%2060.3667%20192.65%2060.34V58.06C192.89%2058.1%20193.13%2058.12%20193.37%2058.12C193.93%2058.12%20194.363%2057.9867%20194.67%2057.72C194.99%2057.4667%20195.15%2057.0733%20195.15%2056.54V45.12H197.77V56.54C197.77%2057.3667%20197.603%2058.0667%20197.27%2058.64C196.936%2059.2267%20196.456%2059.6667%20195.83%2059.96C195.216%2060.2667%20194.49%2060.42%20193.65%2060.42ZM195.15%2043.9V41.1H197.77V43.9H195.15ZM203.489%2056.24C202.729%2056.24%20202.069%2056.1133%20201.509%2055.86C200.949%2055.6067%20200.515%2055.2467%20200.209%2054.78C199.902%2054.3%20199.749%2053.7467%20199.749%2053.12C199.749%2052.52%20199.882%2051.9867%20200.149%2051.52C200.415%2051.04%20200.829%2050.64%20201.389%2050.32C201.949%2050%20202.655%2049.7733%20203.509%2049.64L207.069%2049.06V51.06L204.009%2051.58C203.489%2051.6733%20203.102%2051.84%20202.849%2052.08C202.595%2052.32%20202.469%2052.6333%20202.469%2053.02C202.469%2053.3933%20202.609%2053.6933%20202.889%2053.92C203.182%2054.1333%20203.542%2054.24%20203.969%2054.24C204.515%2054.24%20204.995%2054.1267%20205.409%2053.9C205.835%2053.66%20206.162%2053.3333%20206.389%2052.92C206.629%2052.5067%20206.749%2052.0533%20206.749%2051.56V48.76C206.749%2048.2933%20206.562%2047.9067%20206.189%2047.6C205.829%2047.28%20205.349%2047.12%20204.749%2047.12C204.189%2047.12%20203.689%2047.2733%20203.249%2047.58C202.822%2047.8733%20202.509%2048.2667%20202.309%2048.76L200.169%2047.72C200.382%2047.1467%20200.715%2046.6533%20201.169%2046.24C201.635%2045.8133%20202.182%2045.48%20202.809%2045.24C203.435%2045%20204.115%2044.88%20204.849%2044.88C205.742%2044.88%20206.529%2045.0467%20207.209%2045.38C207.889%2045.7%20208.415%2046.1533%20208.789%2046.74C209.175%2047.3133%20209.369%2047.9867%20209.369%2048.76V56H206.889V54.14L207.449%2054.1C207.169%2054.5667%20206.835%2054.96%20206.449%2055.28C206.062%2055.5867%20205.622%2055.8267%20205.129%2056C204.635%2056.16%20204.089%2056.24%20203.489%2056.24ZM211.79%2056V45.12H214.25V47.64L213.97%2047.22C214.17%2046.4333%20214.57%2045.8467%20215.17%2045.46C215.77%2045.0733%20216.477%2044.88%20217.29%2044.88C218.184%2044.88%20218.97%2045.1133%20219.65%2045.58C220.33%2046.0467%20220.77%2046.66%20220.97%2047.42L220.23%2047.48C220.564%2046.6133%20221.064%2045.9667%20221.73%2045.54C222.397%2045.1%20223.164%2044.88%20224.03%2044.88C224.804%2044.88%20225.49%2045.0533%20226.09%2045.4C226.704%2045.7467%20227.184%2046.2333%20227.53%2046.86C227.877%2047.4733%20228.05%2048.1867%20228.05%2049V56H225.43V49.62C225.43%2049.14%20225.344%2048.7267%20225.17%2048.38C224.997%2048.0333%20224.757%2047.7667%20224.45%2047.58C224.144%2047.38%20223.77%2047.28%20223.33%2047.28C222.917%2047.28%20222.55%2047.38%20222.23%2047.58C221.91%2047.7667%20221.664%2048.0333%20221.49%2048.38C221.317%2048.7267%20221.23%2049.14%20221.23%2049.62V56H218.61V49.62C218.61%2049.14%20218.524%2048.7267%20218.35%2048.38C218.177%2048.0333%20217.93%2047.7667%20217.61%2047.58C217.304%2047.38%20216.937%2047.28%20216.51%2047.28C216.097%2047.28%20215.73%2047.38%20215.41%2047.58C215.09%2047.7667%20214.844%2048.0333%20214.67%2048.38C214.497%2048.7267%20214.41%2049.14%20214.41%2049.62V56H211.79ZM230.267%2056V45.12H232.887V56H230.267ZM230.267%2043.9V41.1H232.887V43.9H230.267ZM235.306%2056V45.12H237.766V47.26L237.566%2046.88C237.819%2046.2267%20238.233%2045.7333%20238.806%2045.4C239.393%2045.0533%20240.073%2044.88%20240.846%2044.88C241.646%2044.88%20242.353%2045.0533%20242.966%2045.4C243.593%2045.7467%20244.079%2046.2333%20244.426%2046.86C244.773%2047.4733%20244.946%2048.1867%20244.946%2049V56H242.326V49.62C242.326%2049.14%20242.233%2048.7267%20242.046%2048.38C241.859%2048.0333%20241.599%2047.7667%20241.266%2047.58C240.946%2047.38%20240.566%2047.28%20240.126%2047.28C239.699%2047.28%20239.319%2047.38%20238.986%2047.58C238.653%2047.7667%20238.393%2048.0333%20238.206%2048.38C238.019%2048.7267%20237.926%2049.14%20237.926%2049.62V56H235.306Z'%20fill='%23181918'/%3e%3cpath%20d='M160.872%2079.168C160.228%2079.168%20159.645%2079.0233%20159.122%2078.734C158.609%2078.4353%20158.221%2078.0153%20157.96%2077.474L158.128%2077.32V79H157.078V68.402H158.128V73.176L157.96%2072.882C158.259%2072.406%20158.655%2072.028%20159.15%2071.748C159.654%2071.468%20160.228%2071.328%20160.872%2071.328C161.581%2071.328%20162.211%2071.5007%20162.762%2071.846C163.322%2072.182%20163.761%2072.644%20164.078%2073.232C164.405%2073.82%20164.568%2074.492%20164.568%2075.248C164.568%2075.9947%20164.405%2076.6667%20164.078%2077.264C163.761%2077.852%20163.322%2078.3187%20162.762%2078.664C162.211%2079%20161.581%2079.168%20160.872%2079.168ZM160.816%2078.118C161.32%2078.118%20161.768%2077.992%20162.16%2077.74C162.561%2077.488%20162.874%2077.1473%20163.098%2076.718C163.331%2076.2793%20163.448%2075.7893%20163.448%2075.248C163.448%2074.6973%20163.331%2074.2073%20163.098%2073.778C162.874%2073.3487%20162.561%2073.008%20162.16%2072.756C161.768%2072.504%20161.32%2072.378%20160.816%2072.378C160.312%2072.378%20159.855%2072.504%20159.444%2072.756C159.043%2073.008%20158.721%2073.3533%20158.478%2073.792C158.245%2074.2213%20158.128%2074.7067%20158.128%2075.248C158.128%2075.7893%20158.245%2076.2793%20158.478%2076.718C158.721%2077.1473%20159.043%2077.488%20159.444%2077.74C159.855%2077.992%20160.312%2078.118%20160.816%2078.118ZM169.832%2079.168C169.132%2079.168%20168.497%2079%20167.928%2078.664C167.368%2078.3187%20166.925%2077.8473%20166.598%2077.25C166.271%2076.6527%20166.108%2075.976%20166.108%2075.22C166.108%2074.464%20166.267%2073.7967%20166.584%2073.218C166.901%2072.63%20167.331%2072.168%20167.872%2071.832C168.423%2071.496%20169.039%2071.328%20169.72%2071.328C170.261%2071.328%20170.742%2071.4307%20171.162%2071.636C171.591%2071.832%20171.955%2072.1027%20172.254%2072.448C172.553%2072.784%20172.781%2073.1667%20172.94%2073.596C173.099%2074.016%20173.178%2074.45%20173.178%2074.898C173.178%2074.9913%20173.173%2075.0987%20173.164%2075.22C173.155%2075.332%20173.141%2075.4487%20173.122%2075.57H166.78V74.59H172.52L172.016%2075.01C172.1%2074.4967%20172.039%2074.0393%20171.834%2073.638C171.638%2073.2273%20171.353%2072.9053%20170.98%2072.672C170.607%2072.4293%20170.187%2072.308%20169.72%2072.308C169.253%2072.308%20168.819%2072.4293%20168.418%2072.672C168.026%2072.9147%20167.718%2073.2553%20167.494%2073.694C167.27%2074.1233%20167.181%2074.6367%20167.228%2075.234C167.181%2075.8313%20167.275%2076.354%20167.508%2076.802C167.751%2077.2407%20168.077%2077.5813%20168.488%2077.824C168.908%2078.0667%20169.356%2078.188%20169.832%2078.188C170.383%2078.188%20170.845%2078.0573%20171.218%2077.796C171.591%2077.5347%20171.895%2077.208%20172.128%2076.816L173.024%2077.292C172.875%2077.628%20172.646%2077.9407%20172.338%2078.23C172.03%2078.51%20171.661%2078.7387%20171.232%2078.916C170.812%2079.084%20170.345%2079.168%20169.832%2079.168ZM175.029%2079V71.496H176.079V72.952L175.841%2072.896C176.028%2072.4107%20176.331%2072.028%20176.751%2071.748C177.181%2071.468%20177.675%2071.328%20178.235%2071.328C178.767%2071.328%20179.243%2071.4493%20179.663%2071.692C180.093%2071.9347%20180.429%2072.2707%20180.671%2072.7C180.923%2073.12%20181.049%2073.596%20181.049%2074.128V79H179.999V74.534C179.999%2074.0767%20179.915%2073.6893%20179.747%2073.372C179.589%2073.0547%20179.36%2072.812%20179.061%2072.644C178.772%2072.4667%20178.436%2072.378%20178.053%2072.378C177.671%2072.378%20177.33%2072.4667%20177.031%2072.644C176.733%2072.812%20176.499%2073.0593%20176.331%2073.386C176.163%2073.7033%20176.079%2074.086%20176.079%2074.534V79H175.029ZM188.725%2081.898C187.903%2081.898%20187.138%2081.7487%20186.429%2081.45C185.729%2081.1607%20185.113%2080.75%20184.581%2080.218C184.049%2079.686%20183.633%2079.07%20183.335%2078.37C183.045%2077.6607%20182.901%2076.9%20182.901%2076.088C182.901%2075.276%20183.05%2074.52%20183.349%2073.82C183.647%2073.12%20184.058%2072.5087%20184.581%2071.986C185.113%2071.4633%20185.733%2071.0573%20186.443%2070.768C187.152%2070.4693%20187.913%2070.32%20188.725%2070.32C189.565%2070.32%20190.339%2070.4787%20191.049%2070.796C191.758%2071.104%20192.369%2071.5287%20192.883%2072.07C193.405%2072.602%20193.807%2073.2087%20194.087%2073.89C194.376%2074.5713%20194.521%2075.2853%20194.521%2076.032C194.521%2076.62%20194.427%2077.138%20194.241%2077.586C194.063%2078.0247%20193.802%2078.37%20193.457%2078.622C193.111%2078.874%20192.696%2079%20192.211%2079C191.921%2079%20191.646%2078.9487%20191.385%2078.846C191.123%2078.734%20190.899%2078.58%20190.713%2078.384C190.535%2078.1787%20190.414%2077.936%20190.349%2077.656L190.573%2077.838C190.423%2078.09%20190.237%2078.3047%20190.013%2078.482C189.798%2078.65%20189.555%2078.7807%20189.285%2078.874C189.014%2078.958%20188.72%2079%20188.403%2079C187.861%2079%20187.371%2078.8693%20186.933%2078.608C186.503%2078.3467%20186.163%2077.992%20185.911%2077.544C185.659%2077.096%20185.533%2076.5873%20185.533%2076.018C185.533%2075.4487%20185.659%2074.94%20185.911%2074.492C186.163%2074.044%20186.503%2073.6893%20186.933%2073.428C187.371%2073.1573%20187.861%2073.022%20188.403%2073.022C188.86%2073.022%20189.275%2073.1153%20189.649%2073.302C190.031%2073.4887%20190.335%2073.75%20190.559%2074.086L190.461%2074.254V73.162H191.371V77.026C191.371%2077.3713%20191.445%2077.6233%20191.595%2077.782C191.753%2077.9407%20191.963%2078.02%20192.225%2078.02C192.617%2078.02%20192.92%2077.8567%20193.135%2077.53C193.359%2077.2033%20193.471%2076.7133%20193.471%2076.06C193.471%2075.388%20193.354%2074.7627%20193.121%2074.184C192.887%2073.6053%20192.561%2073.1013%20192.141%2072.672C191.721%2072.2427%20191.221%2071.9067%20190.643%2071.664C190.064%2071.4213%20189.425%2071.3%20188.725%2071.3C188.043%2071.3%20187.409%2071.4213%20186.821%2071.664C186.242%2071.8973%20185.738%2072.2287%20185.309%2072.658C184.879%2073.0873%20184.543%2073.5913%20184.301%2074.17C184.067%2074.7487%20183.951%2075.3833%20183.951%2076.074C183.951%2076.746%20184.063%2077.376%20184.287%2077.964C184.52%2078.5427%20184.847%2079.0513%20185.267%2079.49C185.696%2079.938%20186.205%2080.288%20186.793%2080.54C187.381%2080.792%20188.034%2080.918%20188.753%2080.918C189.173%2080.918%20189.579%2080.8713%20189.971%2080.778C190.363%2080.694%20190.717%2080.5633%20191.035%2080.386L191.483%2081.226C190.689%2081.674%20189.77%2081.898%20188.725%2081.898ZM188.445%2078.02C188.809%2078.02%20189.131%2077.9313%20189.411%2077.754C189.691%2077.5767%20189.91%2077.3387%20190.069%2077.04C190.237%2076.732%20190.321%2076.3867%20190.321%2076.004C190.321%2075.4253%20190.143%2074.954%20189.789%2074.59C189.434%2074.2167%20188.986%2074.03%20188.445%2074.03C188.09%2074.03%20187.768%2074.1187%20187.479%2074.296C187.199%2074.464%20186.979%2074.6973%20186.821%2074.996C186.662%2075.2947%20186.583%2075.6353%20186.583%2076.018C186.583%2076.3913%20186.662%2076.732%20186.821%2077.04C186.989%2077.3387%20187.213%2077.5767%20187.493%2077.754C187.773%2077.9313%20188.09%2078.02%20188.445%2078.02ZM198.661%2079.168C197.942%2079.168%20197.312%2078.986%20196.771%2078.622C196.229%2078.258%20195.837%2077.7633%20195.595%2077.138L196.477%2076.718C196.691%2077.1753%20196.99%2077.5393%20197.373%2077.81C197.765%2078.0807%20198.194%2078.216%20198.661%2078.216C199.109%2078.216%20199.487%2078.1087%20199.795%2077.894C200.103%2077.67%20200.257%2077.3807%20200.257%2077.026C200.257%2076.7647%20200.182%2076.5593%20200.033%2076.41C199.883%2076.2513%20199.711%2076.13%20199.515%2076.046C199.319%2075.962%20199.146%2075.9013%20198.997%2075.864L197.919%2075.556C197.228%2075.36%20196.729%2075.0847%20196.421%2074.73C196.113%2074.3753%20195.959%2073.9647%20195.959%2073.498C195.959%2073.0593%20196.071%2072.6767%20196.295%2072.35C196.519%2072.0233%20196.822%2071.7713%20197.205%2071.594C197.587%2071.4167%20198.012%2071.328%20198.479%2071.328C199.113%2071.328%20199.687%2071.496%20200.201%2071.832C200.723%2072.1587%20201.092%2072.616%20201.307%2073.204L200.411%2073.624C200.224%2073.204%20199.953%2072.8773%20199.599%2072.644C199.253%2072.4013%20198.866%2072.28%20198.437%2072.28C198.017%2072.28%20197.681%2072.3873%20197.429%2072.602C197.177%2072.8167%20197.051%2073.0873%20197.051%2073.414C197.051%2073.666%20197.116%2073.8667%20197.247%2074.016C197.377%2074.1653%20197.527%2074.2773%20197.695%2074.352C197.872%2074.4267%20198.026%2074.4827%20198.157%2074.52L199.403%2074.884C200.009%2075.0613%20200.481%2075.3367%20200.817%2075.71C201.162%2076.0833%20201.335%2076.522%20201.335%2077.026C201.335%2077.4367%20201.218%2077.8053%20200.985%2078.132C200.761%2078.4587%20200.448%2078.7153%20200.047%2078.902C199.645%2079.0793%20199.183%2079.168%20198.661%2079.168ZM203.18%2079V68.402H204.23V72.952L203.992%2072.896C204.178%2072.4107%20204.482%2072.028%20204.902%2071.748C205.331%2071.468%20205.826%2071.328%20206.386%2071.328C206.918%2071.328%20207.394%2071.4493%20207.814%2071.692C208.243%2071.9347%20208.579%2072.2707%20208.822%2072.7C209.074%2073.12%20209.2%2073.596%20209.2%2074.128V79H208.15V74.534C208.15%2074.0767%20208.066%2073.6893%20207.898%2073.372C207.73%2073.0547%20207.496%2072.812%20207.198%2072.644C206.908%2072.4667%20206.577%2072.378%20206.204%2072.378C205.83%2072.378%20205.494%2072.4667%20205.196%2072.644C204.897%2072.812%20204.659%2073.0593%20204.482%2073.386C204.314%2073.7033%20204.23%2074.086%20204.23%2074.534V79H203.18ZM214.621%2079.168C213.921%2079.168%20213.286%2079%20212.717%2078.664C212.157%2078.3187%20211.714%2077.8473%20211.387%2077.25C211.06%2076.6527%20210.897%2075.976%20210.897%2075.22C210.897%2074.464%20211.056%2073.7967%20211.373%2073.218C211.69%2072.63%20212.12%2072.168%20212.661%2071.832C213.212%2071.496%20213.828%2071.328%20214.509%2071.328C215.05%2071.328%20215.531%2071.4307%20215.951%2071.636C216.38%2071.832%20216.744%2072.1027%20217.043%2072.448C217.342%2072.784%20217.57%2073.1667%20217.729%2073.596C217.888%2074.016%20217.967%2074.45%20217.967%2074.898C217.967%2074.9913%20217.962%2075.0987%20217.953%2075.22C217.944%2075.332%20217.93%2075.4487%20217.911%2075.57H211.569V74.59H217.309L216.805%2075.01C216.889%2074.4967%20216.828%2074.0393%20216.623%2073.638C216.427%2073.2273%20216.142%2072.9053%20215.769%2072.672C215.396%2072.4293%20214.976%2072.308%20214.509%2072.308C214.042%2072.308%20213.608%2072.4293%20213.207%2072.672C212.815%2072.9147%20212.507%2073.2553%20212.283%2073.694C212.059%2074.1233%20211.97%2074.6367%20212.017%2075.234C211.97%2075.8313%20212.064%2076.354%20212.297%2076.802C212.54%2077.2407%20212.866%2077.5813%20213.277%2077.824C213.697%2078.0667%20214.145%2078.188%20214.621%2078.188C215.172%2078.188%20215.634%2078.0573%20216.007%2077.796C216.38%2077.5347%20216.684%2077.208%20216.917%2076.816L217.813%2077.292C217.664%2077.628%20217.435%2077.9407%20217.127%2078.23C216.819%2078.51%20216.45%2078.7387%20216.021%2078.916C215.601%2079.084%20215.134%2079.168%20214.621%2079.168ZM219.818%2079V68.402H220.868V75.822L220.42%2075.752L224.634%2071.496H225.992L223.052%2074.506L226.258%2079H224.998L221.988%2074.842L222.66%2074.898L220.518%2077.11L220.868%2076.242V79H219.818ZM230.767%2079.168C230.067%2079.168%20229.433%2079%20228.863%2078.664C228.303%2078.3187%20227.86%2077.8473%20227.533%2077.25C227.207%2076.6527%20227.043%2075.976%20227.043%2075.22C227.043%2074.464%20227.202%2073.7967%20227.519%2073.218C227.837%2072.63%20228.266%2072.168%20228.807%2071.832C229.358%2071.496%20229.974%2071.328%20230.655%2071.328C231.197%2071.328%20231.677%2071.4307%20232.097%2071.636C232.527%2071.832%20232.891%2072.1027%20233.189%2072.448C233.488%2072.784%20233.717%2073.1667%20233.875%2073.596C234.034%2074.016%20234.113%2074.45%20234.113%2074.898C234.113%2074.9913%20234.109%2075.0987%20234.099%2075.22C234.09%2075.332%20234.076%2075.4487%20234.057%2075.57H227.715V74.59H233.455L232.951%2075.01C233.035%2074.4967%20232.975%2074.0393%20232.769%2073.638C232.573%2073.2273%20232.289%2072.9053%20231.915%2072.672C231.542%2072.4293%20231.122%2072.308%20230.655%2072.308C230.189%2072.308%20229.755%2072.4293%20229.353%2072.672C228.961%2072.9147%20228.653%2073.2553%20228.429%2073.694C228.205%2074.1233%20228.117%2074.6367%20228.163%2075.234C228.117%2075.8313%20228.21%2076.354%20228.443%2076.802C228.686%2077.2407%20229.013%2077.5813%20229.423%2077.824C229.843%2078.0667%20230.291%2078.188%20230.767%2078.188C231.318%2078.188%20231.78%2078.0573%20232.153%2077.796C232.527%2077.5347%20232.83%2077.208%20233.063%2076.816L233.959%2077.292C233.81%2077.628%20233.581%2077.9407%20233.273%2078.23C232.965%2078.51%20232.597%2078.7387%20232.167%2078.916C231.747%2079.084%20231.281%2079.168%20230.767%2079.168ZM235.965%2079V68.402H237.015V79H235.965ZM239.528%2079V77.46H240.648V79H239.528ZM245.34%2079.168C244.864%2079.168%20244.439%2079.0793%20244.066%2078.902C243.692%2078.7153%20243.398%2078.4633%20243.184%2078.146C242.969%2077.8287%20242.862%2077.4647%20242.862%2077.054C242.862%2076.662%20242.946%2076.3073%20243.114%2075.99C243.282%2075.6633%20243.543%2075.388%20243.898%2075.164C244.252%2074.94%20244.705%2074.7813%20245.256%2074.688L248.196%2074.198V75.15L245.508%2075.598C244.966%2075.6913%20244.574%2075.864%20244.332%2076.116C244.098%2076.368%20243.982%2076.6667%20243.982%2077.012C243.982%2077.348%20244.112%2077.6327%20244.374%2077.866C244.644%2078.0993%20244.99%2078.216%20245.41%2078.216C245.923%2078.216%20246.371%2078.1087%20246.754%2077.894C247.136%2077.67%20247.435%2077.3713%20247.65%2076.998C247.864%2076.6247%20247.972%2076.2093%20247.972%2075.752V73.848C247.972%2073.4%20247.808%2073.036%20247.482%2072.756C247.155%2072.476%20246.73%2072.336%20246.208%2072.336C245.75%2072.336%20245.349%2072.4527%20245.004%2072.686C244.658%2072.91%20244.402%2073.204%20244.234%2073.568L243.282%2073.05C243.422%2072.7327%20243.641%2072.4433%20243.94%2072.182C244.248%2071.9207%20244.598%2071.7153%20244.99%2071.566C245.382%2071.4073%20245.788%2071.328%20246.208%2071.328C246.758%2071.328%20247.244%2071.4353%20247.664%2071.65C248.093%2071.8647%20248.424%2072.1633%20248.658%2072.546C248.9%2072.9193%20249.022%2073.3533%20249.022%2073.848V79H247.972V77.502L248.126%2077.656C247.995%2077.936%20247.79%2078.1927%20247.51%2078.426C247.239%2078.65%20246.917%2078.832%20246.544%2078.972C246.18%2079.1027%20245.778%2079.168%20245.34%2079.168ZM251.952%2079V72.546H250.454V71.496H251.952V70.824C251.952%2070.3013%20252.068%2069.8627%20252.302%2069.508C252.535%2069.144%20252.843%2068.8687%20253.226%2068.682C253.608%2068.4953%20254.019%2068.402%20254.458%2068.402C254.551%2068.402%20254.658%2068.4113%20254.78%2068.43C254.901%2068.4393%20254.999%2068.4533%20255.074%2068.472V69.424C255.008%2069.4053%20254.92%2069.396%20254.808%2069.396C254.696%2069.3867%20254.616%2069.382%20254.57%2069.382C254.122%2069.382%20253.748%2069.4893%20253.45%2069.704C253.151%2069.9187%20253.002%2070.292%20253.002%2070.824V71.496H254.836V72.546H253.002V79H251.952ZM256.541%2079V71.496H257.591V72.728L257.451%2072.546C257.628%2072.1913%20257.894%2071.9113%20258.249%2071.706C258.613%2071.5007%20259.052%2071.398%20259.565%2071.398H260.041V72.448H259.383C258.842%2072.448%20258.408%2072.616%20258.081%2072.952C257.754%2073.288%20257.591%2073.764%20257.591%2074.38V79H256.541ZM261.271%2079V71.496H262.321V79H261.271ZM261.271%2070.11V68.57H262.321V70.11H261.271ZM267.901%2079.168C267.163%2079.168%20266.515%2078.9953%20265.955%2078.65C265.395%2078.3047%20264.956%2077.838%20264.639%2077.25C264.321%2076.6527%20264.163%2075.9807%20264.163%2075.234C264.163%2074.4873%20264.321%2073.82%20264.639%2073.232C264.956%2072.644%20265.395%2072.182%20265.955%2071.846C266.515%2071.5007%20267.163%2071.328%20267.901%2071.328C268.367%2071.328%20268.806%2071.412%20269.217%2071.58C269.627%2071.748%20269.991%2071.9767%20270.309%2072.266C270.626%2072.546%20270.864%2072.8727%20271.023%2073.246L270.071%2073.736C269.884%2073.3347%20269.599%2073.008%20269.217%2072.756C268.834%2072.504%20268.395%2072.378%20267.901%2072.378C267.406%2072.378%20266.958%2072.504%20266.557%2072.756C266.165%2072.9987%20265.852%2073.3393%20265.619%2073.778C265.395%2074.2073%20265.283%2074.6973%20265.283%2075.248C265.283%2075.7893%20265.395%2076.2793%20265.619%2076.718C265.852%2077.1473%20266.165%2077.488%20266.557%2077.74C266.958%2077.992%20267.406%2078.118%20267.901%2078.118C268.395%2078.118%20268.829%2077.992%20269.203%2077.74C269.585%2077.488%20269.875%2077.152%20270.071%2076.732L271.023%2077.25C270.864%2077.614%20270.626%2077.9407%20270.309%2078.23C269.991%2078.5193%20269.627%2078.748%20269.217%2078.916C268.806%2079.084%20268.367%2079.168%20267.901%2079.168ZM274.898%2079.168C274.422%2079.168%20273.998%2079.0793%20273.624%2078.902C273.251%2078.7153%20272.957%2078.4633%20272.742%2078.146C272.528%2077.8287%20272.42%2077.4647%20272.42%2077.054C272.42%2076.662%20272.504%2076.3073%20272.672%2075.99C272.84%2075.6633%20273.102%2075.388%20273.456%2075.164C273.811%2074.94%20274.264%2074.7813%20274.814%2074.688L277.754%2074.198V75.15L275.066%2075.598C274.525%2075.6913%20274.133%2075.864%20273.89%2076.116C273.657%2076.368%20273.54%2076.6667%20273.54%2077.012C273.54%2077.348%20273.671%2077.6327%20273.932%2077.866C274.203%2078.0993%20274.548%2078.216%20274.968%2078.216C275.482%2078.216%20275.93%2078.1087%20276.312%2077.894C276.695%2077.67%20276.994%2077.3713%20277.208%2076.998C277.423%2076.6247%20277.53%2076.2093%20277.53%2075.752V73.848C277.53%2073.4%20277.367%2073.036%20277.04%2072.756C276.714%2072.476%20276.289%2072.336%20275.766%2072.336C275.309%2072.336%20274.908%2072.4527%20274.562%2072.686C274.217%2072.91%20273.96%2073.204%20273.792%2073.568L272.84%2073.05C272.98%2072.7327%20273.2%2072.4433%20273.498%2072.182C273.806%2071.9207%20274.156%2071.7153%20274.548%2071.566C274.94%2071.4073%20275.346%2071.328%20275.766%2071.328C276.317%2071.328%20276.802%2071.4353%20277.222%2071.65C277.652%2071.8647%20277.983%2072.1633%20278.216%2072.546C278.459%2072.9193%20278.58%2073.3533%20278.58%2073.848V79H277.53V77.502L277.684%2077.656C277.554%2077.936%20277.348%2078.1927%20277.068%2078.426C276.798%2078.65%20276.476%2078.832%20276.102%2078.972C275.738%2079.1027%20275.337%2079.168%20274.898%2079.168Z'%20fill='%23181918'/%3e%3cpath%20d='M161.992%20100.168C161.255%20100.168%20160.578%20100.037%20159.962%2099.776C159.346%2099.5053%20158.809%2099.132%20158.352%2098.656C157.904%2098.1707%20157.554%2097.6013%20157.302%2096.948C157.05%2096.2947%20156.924%2095.576%20156.924%2094.792C156.924%2094.008%20157.05%2093.2893%20157.302%2092.636C157.554%2091.9827%20157.904%2091.4133%20158.352%2090.928C158.809%2090.4427%20159.346%2090.0693%20159.962%2089.808C160.578%2089.5373%20161.255%2089.402%20161.992%2089.402C162.701%2089.402%20163.336%2089.528%20163.896%2089.78C164.465%2090.032%20164.941%2090.3587%20165.324%2090.76C165.716%2091.152%20165.996%2091.5673%20166.164%2092.006L165.114%2092.468C164.853%2091.8613%20164.451%2091.376%20163.91%2091.012C163.378%2090.6387%20162.739%2090.452%20161.992%2090.452C161.227%2090.452%20160.545%2090.634%20159.948%2090.998C159.351%2091.362%20158.884%2091.8707%20158.548%2092.524C158.212%2093.168%20158.044%2093.924%20158.044%2094.792C158.044%2095.6507%20158.212%2096.4067%20158.548%2097.06C158.884%2097.7133%20159.351%2098.222%20159.948%2098.586C160.545%2098.9407%20161.227%2099.118%20161.992%2099.118C162.739%2099.118%20163.378%2098.936%20163.91%2098.572C164.451%2098.208%20164.853%2097.7227%20165.114%2097.116L166.164%2097.578C165.996%2098.0073%20165.716%2098.4227%20165.324%2098.824C164.941%2099.216%20164.465%2099.538%20163.896%2099.79C163.336%20100.042%20162.701%20100.168%20161.992%20100.168ZM171.393%20100.168C170.683%20100.168%20170.039%20100%20169.461%2099.664C168.882%2099.3187%20168.42%2098.852%20168.075%2098.264C167.739%2097.6667%20167.571%2096.99%20167.571%2096.234C167.571%2095.4873%20167.739%2094.82%20168.075%2094.232C168.411%2093.644%20168.863%2093.182%20169.433%2092.846C170.011%2092.5007%20170.665%2092.328%20171.393%2092.328C172.121%2092.328%20172.769%2092.496%20173.339%2092.832C173.917%2093.168%20174.37%2093.63%20174.697%2094.218C175.033%2094.806%20175.201%2095.478%20175.201%2096.234C175.201%2096.9993%20175.028%2097.6807%20174.683%2098.278C174.337%2098.866%20173.875%2099.328%20173.297%2099.664C172.727%20100%20172.093%20100.168%20171.393%20100.168ZM171.393%2099.118C171.897%2099.118%20172.349%2098.992%20172.751%2098.74C173.161%2098.488%20173.483%2098.1427%20173.717%2097.704C173.959%2097.2653%20174.081%2096.7753%20174.081%2096.234C174.081%2095.6927%20173.959%2095.2073%20173.717%2094.778C173.483%2094.3487%20173.161%2094.008%20172.751%2093.756C172.349%2093.504%20171.897%2093.378%20171.393%2093.378C170.889%2093.378%20170.431%2093.504%20170.021%2093.756C169.619%2094.008%20169.297%2094.3487%20169.055%2094.778C168.812%2095.2073%20168.691%2095.6927%20168.691%2096.234C168.691%2096.7753%20168.812%2097.2653%20169.055%2097.704C169.297%2098.1427%20169.619%2098.488%20170.021%2098.74C170.431%2098.992%20170.889%2099.118%20171.393%2099.118ZM177.417%20100V98.46H178.537V100H177.417ZM184.207%20100V93.546H182.709V92.496H184.207V91.824C184.207%2091.3013%20184.324%2090.8627%20184.557%2090.508C184.791%2090.144%20185.099%2089.8687%20185.481%2089.682C185.864%2089.4953%20186.275%2089.402%20186.713%2089.402C186.807%2089.402%20186.914%2089.4113%20187.035%2089.43C187.157%2089.4393%20187.255%2089.4533%20187.329%2089.472V90.424C187.264%2090.4053%20187.175%2090.396%20187.063%2090.396C186.951%2090.3867%20186.872%2090.382%20186.825%2090.382C186.377%2090.382%20186.004%2090.4893%20185.705%2090.704C185.407%2090.9187%20185.257%2091.292%20185.257%2091.824V92.496H187.091V93.546H185.257V100H184.207ZM192.024%20100.168C191.314%20100.168%20190.67%20100%20190.092%2099.664C189.513%2099.3187%20189.051%2098.852%20188.706%2098.264C188.37%2097.6667%20188.202%2096.99%20188.202%2096.234C188.202%2095.4873%20188.37%2094.82%20188.706%2094.232C189.042%2093.644%20189.494%2093.182%20190.064%2092.846C190.642%2092.5007%20191.296%2092.328%20192.024%2092.328C192.752%2092.328%20193.4%2092.496%20193.97%2092.832C194.548%2093.168%20195.001%2093.63%20195.328%2094.218C195.664%2094.806%20195.832%2095.478%20195.832%2096.234C195.832%2096.9993%20195.659%2097.6807%20195.314%2098.278C194.968%2098.866%20194.506%2099.328%20193.928%2099.664C193.358%20100%20192.724%20100.168%20192.024%20100.168ZM192.024%2099.118C192.528%2099.118%20192.98%2098.992%20193.382%2098.74C193.792%2098.488%20194.114%2098.1427%20194.348%2097.704C194.59%2097.2653%20194.712%2096.7753%20194.712%2096.234C194.712%2095.6927%20194.59%2095.2073%20194.348%2094.778C194.114%2094.3487%20193.792%2094.008%20193.382%2093.756C192.98%2093.504%20192.528%2093.378%20192.024%2093.378C191.52%2093.378%20191.062%2093.504%20190.652%2093.756C190.25%2094.008%20189.928%2094.3487%20189.686%2094.778C189.443%2095.2073%20189.322%2095.6927%20189.322%2096.234C189.322%2096.7753%20189.443%2097.2653%20189.686%2097.704C189.928%2098.1427%20190.25%2098.488%20190.652%2098.74C191.062%2098.992%20191.52%2099.118%20192.024%2099.118ZM200.343%20100.168C199.821%20100.168%20199.345%20100.047%20198.915%2099.804C198.486%2099.552%20198.145%2099.2067%20197.893%2098.768C197.651%2098.32%20197.529%2097.8067%20197.529%2097.228V92.496H198.579V97.102C198.579%2097.5033%20198.659%2097.858%20198.817%2098.166C198.985%2098.4647%20199.214%2098.698%20199.503%2098.866C199.802%2099.034%20200.143%2099.118%20200.525%2099.118C200.908%2099.118%20201.249%2099.034%20201.547%2098.866C201.846%2098.6887%20202.079%2098.4413%20202.247%2098.124C202.415%2097.7973%20202.499%2097.41%20202.499%2096.962V92.496H203.549V100H202.499V98.544L202.737%2098.6C202.56%2099.0853%20202.257%2099.468%20201.827%2099.748C201.398%20100.028%20200.903%20100.168%20200.343%20100.168ZM205.709%20100V92.496H206.759V93.952L206.521%2093.896C206.708%2093.4107%20207.011%2093.028%20207.431%2092.748C207.86%2092.468%20208.355%2092.328%20208.915%2092.328C209.447%2092.328%20209.923%2092.4493%20210.343%2092.692C210.772%2092.9347%20211.108%2093.2707%20211.351%2093.7C211.603%2094.12%20211.729%2094.596%20211.729%2095.128V100H210.679V95.534C210.679%2095.0767%20210.595%2094.6893%20210.427%2094.372C210.268%2094.0547%20210.04%2093.812%20209.741%2093.644C209.452%2093.4667%20209.116%2093.378%20208.733%2093.378C208.35%2093.378%20208.01%2093.4667%20207.711%2093.644C207.412%2093.812%20207.179%2094.0593%20207.011%2094.386C206.843%2094.7033%20206.759%2095.086%20206.759%2095.534V100H205.709ZM217.122%20100.168C216.422%20100.168%20215.792%20100%20215.232%2099.664C214.672%2099.3187%20214.229%2098.852%20213.902%2098.264C213.585%2097.6667%20213.426%2096.9947%20213.426%2096.248C213.426%2095.492%20213.585%2094.82%20213.902%2094.232C214.229%2093.644%20214.668%2093.182%20215.218%2092.846C215.778%2092.5007%20216.413%2092.328%20217.122%2092.328C217.766%2092.328%20218.34%2092.468%20218.844%2092.748C219.348%2093.028%20219.745%2093.406%20220.034%2093.882L219.866%2094.176V89.402H220.916V100H219.866V98.32L220.034%2098.474C219.773%2099.0153%20219.381%2099.4353%20218.858%2099.734C218.345%20100.023%20217.766%20100.168%20217.122%20100.168ZM217.178%2099.118C217.682%2099.118%20218.135%2098.992%20218.536%2098.74C218.947%2098.488%20219.269%2098.1473%20219.502%2097.718C219.745%2097.2793%20219.866%2096.7893%20219.866%2096.248C219.866%2095.7067%20219.745%2095.2213%20219.502%2094.792C219.269%2094.3533%20218.947%2094.008%20218.536%2093.756C218.135%2093.504%20217.682%2093.378%20217.178%2093.378C216.684%2093.378%20216.236%2093.504%20215.834%2093.756C215.433%2094.008%20215.116%2094.3487%20214.882%2094.778C214.658%2095.2073%20214.546%2095.6973%20214.546%2096.248C214.546%2096.7893%20214.658%2097.2793%20214.882%2097.718C215.116%2098.1473%20215.428%2098.488%20215.82%2098.74C216.222%2098.992%20216.674%2099.118%20217.178%2099.118ZM226.488%20100.168C225.788%20100.168%20225.153%20100%20224.584%2099.664C224.024%2099.3187%20223.581%2098.8473%20223.254%2098.25C222.927%2097.6527%20222.764%2096.976%20222.764%2096.22C222.764%2095.464%20222.923%2094.7967%20223.24%2094.218C223.557%2093.63%20223.987%2093.168%20224.528%2092.832C225.079%2092.496%20225.695%2092.328%20226.376%2092.328C226.917%2092.328%20227.398%2092.4307%20227.818%2092.636C228.247%2092.832%20228.611%2093.1027%20228.91%2093.448C229.209%2093.784%20229.437%2094.1667%20229.596%2094.596C229.755%2095.016%20229.834%2095.45%20229.834%2095.898C229.834%2095.9913%20229.829%2096.0987%20229.82%2096.22C229.811%2096.332%20229.797%2096.4487%20229.778%2096.57H223.436V95.59H229.176L228.672%2096.01C228.756%2095.4967%20228.695%2095.0393%20228.49%2094.638C228.294%2094.2273%20228.009%2093.9053%20227.636%2093.672C227.263%2093.4293%20226.843%2093.308%20226.376%2093.308C225.909%2093.308%20225.475%2093.4293%20225.074%2093.672C224.682%2093.9147%20224.374%2094.2553%20224.15%2094.694C223.926%2095.1233%20223.837%2095.6367%20223.884%2096.234C223.837%2096.8313%20223.931%2097.354%20224.164%2097.802C224.407%2098.2407%20224.733%2098.5813%20225.144%2098.824C225.564%2099.0667%20226.012%2099.188%20226.488%2099.188C227.039%2099.188%20227.501%2099.0573%20227.874%2098.796C228.247%2098.5347%20228.551%2098.208%20228.784%2097.816L229.68%2098.292C229.531%2098.628%20229.302%2098.9407%20228.994%2099.23C228.686%2099.51%20228.317%2099.7387%20227.888%2099.916C227.468%20100.084%20227.001%20100.168%20226.488%20100.168ZM231.685%20100V92.496H232.735V93.728L232.595%2093.546C232.773%2093.1913%20233.039%2092.9113%20233.393%2092.706C233.757%2092.5007%20234.196%2092.398%20234.709%2092.398H235.185V93.448H234.527C233.986%2093.448%20233.552%2093.616%20233.225%2093.952C232.899%2094.288%20232.735%2094.764%20232.735%2095.38V100H231.685Z'%20fill='%23181918'/%3e%3ccircle%20cx='243.5'%20cy='94'%20r='2.5'%20fill='%23181918'/%3e%3cpath%20d='M256.992%20100.168C256.255%20100.168%20255.578%20100.037%20254.962%2099.776C254.346%2099.5053%20253.809%2099.132%20253.352%2098.656C252.904%2098.1707%20252.554%2097.6013%20252.302%2096.948C252.05%2096.2947%20251.924%2095.576%20251.924%2094.792C251.924%2094.008%20252.05%2093.2893%20252.302%2092.636C252.554%2091.9827%20252.904%2091.4133%20253.352%2090.928C253.809%2090.4427%20254.346%2090.0693%20254.962%2089.808C255.578%2089.5373%20256.255%2089.402%20256.992%2089.402C257.701%2089.402%20258.336%2089.528%20258.896%2089.78C259.465%2090.032%20259.941%2090.3587%20260.324%2090.76C260.716%2091.152%20260.996%2091.5673%20261.164%2092.006L260.156%2092.496C259.895%2091.8613%20259.493%2091.362%20258.952%2090.998C258.411%2090.634%20257.757%2090.452%20256.992%2090.452C256.227%2090.452%20255.545%2090.634%20254.948%2090.998C254.351%2091.362%20253.884%2091.8707%20253.548%2092.524C253.212%2093.168%20253.044%2093.924%20253.044%2094.792C253.044%2095.6507%20253.212%2096.4067%20253.548%2097.06C253.884%2097.7133%20254.351%2098.222%20254.948%2098.586C255.545%2098.9407%20256.227%2099.118%20256.992%2099.118C257.673%2099.118%20258.285%2098.9687%20258.826%2098.67C259.377%2098.3713%20259.811%2097.9653%20260.128%2097.452C260.445%2096.9293%20260.604%2096.332%20260.604%2095.66V95.086L261.108%2095.59H256.992V94.61H261.724V95.478C261.724%2096.1593%20261.603%2096.7893%20261.36%2097.368C261.117%2097.9373%20260.781%2098.432%20260.352%2098.852C259.923%2099.272%20259.419%2099.5987%20258.84%2099.832C258.271%20100.056%20257.655%20100.168%20256.992%20100.168ZM263.576%20100V89.402H264.626V100H263.576ZM270.289%20100.168C269.58%20100.168%20268.936%20100%20268.357%2099.664C267.779%2099.3187%20267.317%2098.852%20266.971%2098.264C266.635%2097.6667%20266.467%2096.99%20266.467%2096.234C266.467%2095.4873%20266.635%2094.82%20266.971%2094.232C267.307%2093.644%20267.76%2093.182%20268.329%2092.846C268.908%2092.5007%20269.561%2092.328%20270.289%2092.328C271.017%2092.328%20271.666%2092.496%20272.235%2092.832C272.814%2093.168%20273.267%2093.63%20273.593%2094.218C273.929%2094.806%20274.097%2095.478%20274.097%2096.234C274.097%2096.9993%20273.925%2097.6807%20273.579%2098.278C273.234%2098.866%20272.772%2099.328%20272.193%2099.664C271.624%20100%20270.989%20100.168%20270.289%20100.168ZM270.289%2099.118C270.793%2099.118%20271.246%2098.992%20271.647%2098.74C272.058%2098.488%20272.38%2098.1427%20272.613%2097.704C272.856%2097.2653%20272.977%2096.7753%20272.977%2096.234C272.977%2095.6927%20272.856%2095.2073%20272.613%2094.778C272.38%2094.3487%20272.058%2094.008%20271.647%2093.756C271.246%2093.504%20270.793%2093.378%20270.289%2093.378C269.785%2093.378%20269.328%2093.504%20268.917%2093.756C268.516%2094.008%20268.194%2094.3487%20267.951%2094.778C267.709%2095.2073%20267.587%2095.6927%20267.587%2096.234C267.587%2096.7753%20267.709%2097.2653%20267.951%2097.704C268.194%2098.1427%20268.516%2098.488%20268.917%2098.74C269.328%2098.992%20269.785%2099.118%20270.289%2099.118ZM279.743%20100.168C279.099%20100.168%20278.516%20100.023%20277.993%2099.734C277.48%2099.4353%20277.092%2099.0153%20276.831%2098.474L276.999%2098.32V100H275.949V89.402H276.999V94.176L276.831%2093.882C277.13%2093.406%20277.526%2093.028%20278.021%2092.748C278.525%2092.468%20279.099%2092.328%20279.743%2092.328C280.452%2092.328%20281.082%2092.5007%20281.633%2092.846C282.193%2093.182%20282.632%2093.644%20282.949%2094.232C283.276%2094.82%20283.439%2095.492%20283.439%2096.248C283.439%2096.9947%20283.276%2097.6667%20282.949%2098.264C282.632%2098.852%20282.193%2099.3187%20281.633%2099.664C281.082%20100%20280.452%20100.168%20279.743%20100.168ZM279.687%2099.118C280.191%2099.118%20280.639%2098.992%20281.031%2098.74C281.432%2098.488%20281.745%2098.1473%20281.969%2097.718C282.202%2097.2793%20282.319%2096.7893%20282.319%2096.248C282.319%2095.6973%20282.202%2095.2073%20281.969%2094.778C281.745%2094.3487%20281.432%2094.008%20281.031%2093.756C280.639%2093.504%20280.191%2093.378%20279.687%2093.378C279.183%2093.378%20278.726%2093.504%20278.315%2093.756C277.914%2094.008%20277.592%2094.3533%20277.349%2094.792C277.116%2095.2213%20276.999%2095.7067%20276.999%2096.248C276.999%2096.7893%20277.116%2097.2793%20277.349%2097.718C277.592%2098.1473%20277.914%2098.488%20278.315%2098.74C278.726%2098.992%20279.183%2099.118%20279.687%2099.118ZM287.457%20100.168C286.981%20100.168%20286.556%20100.079%20286.183%2099.902C285.81%2099.7153%20285.516%2099.4633%20285.301%2099.146C285.086%2098.8287%20284.979%2098.4647%20284.979%2098.054C284.979%2097.662%20285.063%2097.3073%20285.231%2096.99C285.399%2096.6633%20285.66%2096.388%20286.015%2096.164C286.37%2095.94%20286.822%2095.7813%20287.373%2095.688L290.313%2095.198V96.15L287.625%2096.598C287.084%2096.6913%20286.692%2096.864%20286.449%2097.116C286.216%2097.368%20286.099%2097.6667%20286.099%2098.012C286.099%2098.348%20286.23%2098.6327%20286.491%2098.866C286.762%2099.0993%20287.107%2099.216%20287.527%2099.216C288.04%2099.216%20288.488%2099.1087%20288.871%2098.894C289.254%2098.67%20289.552%2098.3713%20289.767%2097.998C289.982%2097.6247%20290.089%2097.2093%20290.089%2096.752V94.848C290.089%2094.4%20289.926%2094.036%20289.599%2093.756C289.272%2093.476%20288.848%2093.336%20288.325%2093.336C287.868%2093.336%20287.466%2093.4527%20287.121%2093.686C286.776%2093.91%20286.519%2094.204%20286.351%2094.568L285.399%2094.05C285.539%2093.7327%20285.758%2093.4433%20286.057%2093.182C286.365%2092.9207%20286.715%2092.7153%20287.107%2092.566C287.499%2092.4073%20287.905%2092.328%20288.325%2092.328C288.876%2092.328%20289.361%2092.4353%20289.781%2092.65C290.21%2092.8647%20290.542%2093.1633%20290.775%2093.546C291.018%2093.9193%20291.139%2094.3533%20291.139%2094.848V100H290.089V98.502L290.243%2098.656C290.112%2098.936%20289.907%2099.1927%20289.627%2099.426C289.356%2099.65%20289.034%2099.832%20288.661%2099.972C288.297%20100.103%20287.896%20100.168%20287.457%20100.168ZM293.299%20100V89.402H294.349V100H293.299ZM297.953%20100L301.761%2089.57H302.965L306.773%20100H305.597L304.701%2097.452H300.039L299.129%20100H297.953ZM300.403%2096.402H304.309L302.195%2090.41H302.531L300.403%2096.402ZM311.124%20100.168C310.424%20100.168%20309.794%20100%20309.234%2099.664C308.674%2099.3187%20308.231%2098.852%20307.904%2098.264C307.587%2097.6667%20307.428%2096.9947%20307.428%2096.248C307.428%2095.492%20307.587%2094.82%20307.904%2094.232C308.231%2093.644%20308.67%2093.182%20309.22%2092.846C309.78%2092.5007%20310.415%2092.328%20311.124%2092.328C311.768%2092.328%20312.342%2092.468%20312.846%2092.748C313.35%2093.028%20313.747%2093.406%20314.036%2093.882L313.868%2094.176V89.402H314.918V100H313.868V98.32L314.036%2098.474C313.775%2099.0153%20313.383%2099.4353%20312.86%2099.734C312.347%20100.023%20311.768%20100.168%20311.124%20100.168ZM311.18%2099.118C311.684%2099.118%20312.137%2098.992%20312.538%2098.74C312.949%2098.488%20313.271%2098.1473%20313.504%2097.718C313.747%2097.2793%20313.868%2096.7893%20313.868%2096.248C313.868%2095.7067%20313.747%2095.2213%20313.504%2094.792C313.271%2094.3533%20312.949%2094.008%20312.538%2093.756C312.137%2093.504%20311.684%2093.378%20311.18%2093.378C310.686%2093.378%20310.238%2093.504%20309.836%2093.756C309.435%2094.008%20309.118%2094.3487%20308.884%2094.778C308.66%2095.2073%20308.548%2095.6973%20308.548%2096.248C308.548%2096.7893%20308.66%2097.2793%20308.884%2097.718C309.118%2098.1473%20309.43%2098.488%20309.822%2098.74C310.224%2098.992%20310.676%2099.118%20311.18%2099.118ZM317.074%20100V92.496H318.124V93.924L317.956%2093.714C318.161%2093.2753%20318.465%2092.9347%20318.866%2092.692C319.277%2092.4493%20319.725%2092.328%20320.21%2092.328C320.789%2092.328%20321.311%2092.4913%20321.778%2092.818C322.245%2093.1447%20322.576%2093.5693%20322.772%2094.092L322.478%2094.106C322.665%2093.5273%20322.987%2093.0887%20323.444%2092.79C323.911%2092.482%20324.424%2092.328%20324.984%2092.328C325.488%2092.328%20325.95%2092.4493%20326.37%2092.692C326.799%2092.9347%20327.14%2093.2707%20327.392%2093.7C327.653%2094.12%20327.784%2094.596%20327.784%2095.128V100H326.734V95.534C326.734%2095.0767%20326.65%2094.6893%20326.482%2094.372C326.323%2094.0547%20326.104%2093.812%20325.824%2093.644C325.544%2093.4667%20325.222%2093.378%20324.858%2093.378C324.503%2093.378%20324.181%2093.4667%20323.892%2093.644C323.603%2093.812%20323.374%2094.0593%20323.206%2094.386C323.038%2094.7033%20322.954%2095.086%20322.954%2095.534V100H321.904V95.534C321.904%2095.0767%20321.82%2094.6893%20321.652%2094.372C321.493%2094.0547%20321.274%2093.812%20320.994%2093.644C320.714%2093.4667%20320.392%2093.378%20320.028%2093.378C319.664%2093.378%20319.337%2093.4667%20319.048%2093.644C318.768%2093.812%20318.544%2094.0593%20318.376%2094.386C318.208%2094.7033%20318.124%2095.086%20318.124%2095.534V100H317.074ZM329.789%20100V92.496H330.839V100H329.789ZM329.789%2091.11V89.57H330.839V91.11H329.789ZM332.988%20100V92.496H334.038V93.952L333.8%2093.896C333.987%2093.4107%20334.29%2093.028%20334.71%2092.748C335.139%2092.468%20335.634%2092.328%20336.194%2092.328C336.726%2092.328%20337.202%2092.4493%20337.622%2092.692C338.051%2092.9347%20338.387%2093.2707%20338.63%2093.7C338.882%2094.12%20339.008%2094.596%20339.008%2095.128V100H337.958V95.534C337.958%2095.0767%20337.874%2094.6893%20337.706%2094.372C337.547%2094.0547%20337.319%2093.812%20337.02%2093.644C336.731%2093.4667%20336.395%2093.378%20336.012%2093.378C335.629%2093.378%20335.289%2093.4667%20334.99%2093.644C334.691%2093.812%20334.458%2094.0593%20334.29%2094.386C334.122%2094.7033%20334.038%2095.086%20334.038%2095.534V100H332.988Z'%20fill='%23181918'/%3e%3c/g%3e%3cmask%20id='path-17-inside-1_683_56525'%20fill='white'%3e%3cpath%20d='M0%2031C0%2022.1634%207.16344%2015%2016%2015H330C338.837%2015%20346%2022.1634%20346%2031V114C346%20122.837%20338.837%20130%20330%20130H16C7.16344%20130%200%20122.837%200%20114V31Z'/%3e%3c/mask%3e%3cpath%20d='M0%2031C0%2022.1634%207.16344%2015%2016%2015H330C338.837%2015%20346%2022.1634%20346%2031V114C346%20122.837%20338.837%20130%20330%20130H16C7.16344%20130%200%20122.837%200%20114V31Z'%20fill='%23FDFDFD'/%3e%3cpath%20d='M-0.5%2031C-0.5%2021.8873%206.8873%2014.5%2016%2014.5H329.5C338.613%2014.5%20346%2021.8873%20346%2031C346%2022.4396%20338.837%2015.5%20330%2015.5H16C7.43959%2015.5%200.5%2022.4396%200.5%2031H-0.5ZM0.5%2031M346%20130H0H346M16%20130C6.8873%20130%20-0.5%20122.613%20-0.5%20113.5V31C-0.5%2021.8873%206.8873%2014.5%2016%2014.5V15.5C7.43959%2015.5%200.5%2022.4396%200.5%2031V114C0.5%20122.837%207.43959%20130%2016%20130ZM16%20130M346%2015V130V15'%20fill='url(%23paint2_linear_683_56525)'%20mask='url(%23path-17-inside-1_683_56525)'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_683_56525'%20x1='59'%20y1='49'%20x2='286'%20y2='98'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%232B2A2A'/%3e%3cstop%20offset='1'%20stop-color='white'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_683_56525'%20x1='78.362'%20y1='49.1226'%20x2='284.411'%20y2='82.1461'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%232B2A2A'/%3e%3cstop%20offset='1'%20stop-color='white'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_683_56525'%20x1='-5.20861e-07'%20y1='-8.5'%20x2='70.9255'%20y2='193.231'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%238E3530'/%3e%3cstop%20offset='0.575999'%20stop-color='white'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\"","import React from 'react';\nimport { Avatar } from 'antd';\nimport cardBorderSvg from '../../assets/card-border.svg';\n\nexport interface UserCardProps {\n name: string;\n email: string;\n role?: string;\n avatar?: string;\n className?: string;\n}\n\nexport const UserCard: React.FC<UserCardProps> = ({\n name,\n email,\n role,\n avatar,\n className = '',\n}) => {\n return (\n <div\n style={{\n boxShadow: '0px -8px 30px rgba(236, 97, 91, 0.1)',\n borderRadius: '16px',\n background:\n 'linear-gradient(to bottom, rgba(236, 97, 91, 0.05) 0%, rgba(255, 255, 255, 0) 50%)',\n }}\n className=\"relative min-h-[120px] pt-8 pb-4 pl-4 pr-4\"\n >\n <img\n src={cardBorderSvg}\n alt=\"img-bg\"\n style={{\n position: 'absolute',\n top: -8,\n left: 0,\n objectFit: 'cover',\n }}\n />\n <div\n className={`flex gap-4 items-center relative ${className}`}\n style={{\n position: 'relative',\n }}\n >\n {avatar ? (\n <Avatar src={avatar} size={80} />\n ) : (\n <Avatar\n size={80}\n style={{ backgroundColor: '#181918', fontSize: '32px', fontWeight: 600 }}\n >\n {name\n .split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()}\n </Avatar>\n )}\n <div className=\"flex flex-col\">\n <span\n style={{\n color: '#181918',\n fontSize: '16px',\n fontWeight: 600,\n lineHeight: '1.3',\n }}\n >\n {name}\n </span>\n <span\n style={{\n color: '#181918',\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '1.4',\n marginTop: '4px',\n }}\n >\n {email}\n </span>\n {role && (\n <span\n style={{\n color: '#181918',\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '1.4',\n marginTop: '2px',\n }}\n >\n {role}\n </span>\n )}\n </div>\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%2085.5%20513%20342'%3e%3cpath%20fill='%23FFF'%20d='M0%2085.5h513v342H0z'/%3e%3cg%20fill='%23007b23'%3e%3cpath%20d='M0%2085.5h171v342H0zM342%2085.5h171v342H342z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20513%20342'%3e%3cpath%20fill='%23FFF'%20d='M0%200h513v342H0z'/%3e%3cg%20fill='%23D80027'%3e%3cpath%20d='M0%200h513v26.3H0zM0%2052.6h513v26.3H0zM0%20105.2h513v26.3H0zM0%20157.8h513v26.3H0zM0%20210.5h513v26.3H0zM0%20263.1h513v26.3H0zM0%20315.7h513V342H0z'/%3e%3c/g%3e%3cpath%20fill='%232E52B2'%20d='M0%200h256.5v184.1H0z'/%3e%3cg%20fill='%23FFF'%3e%3cpath%20d='m47.8%20138.9-4-12.8-4.4%2012.8H26.2l10.7%207.7-4%2012.8%2010.9-7.9%2010.6%207.9-4.1-12.8%2010.9-7.7zM104.1%20138.9l-4.1-12.8-4.2%2012.8H82.6l10.7%207.7-4%2012.8%2010.7-7.9%2010.8%207.9-4-12.8%2010.7-7.7zM160.6%20138.9l-4.3-12.8-4%2012.8h-13.5l11%207.7-4.2%2012.8%2010.7-7.9%2011%207.9-4.2-12.8%2010.7-7.7zM216.8%20138.9l-4-12.8-4.2%2012.8h-13.3l10.8%207.7-4%2012.8%2010.7-7.9%2010.8%207.9-4.3-12.8%2011-7.7zM100%2075.3l-4.2%2012.8H82.6L93.3%2096l-4%2012.6%2010.7-7.8%2010.8%207.8-4-12.6%2010.7-7.9h-13.4zM43.8%2075.3l-4.4%2012.8H26.2L36.9%2096l-4%2012.6%2010.9-7.8%2010.6%207.8L50.3%2096l10.9-7.9H47.8zM156.3%2075.3l-4%2012.8h-13.5l11%207.9-4.2%2012.6%2010.7-7.8%2011%207.8-4.2-12.6%2010.7-7.9h-13.2zM212.8%2075.3l-4.2%2012.8h-13.3l10.8%207.9-4%2012.6%2010.7-7.8%2010.8%207.8-4.3-12.6%2011-7.9h-13.5zM43.8%2024.7l-4.4%2012.6H26.2l10.7%207.9-4%2012.7L43.8%2050l10.6%207.9-4.1-12.7%2010.9-7.9H47.8zM100%2024.7l-4.2%2012.6H82.6l10.7%207.9-4%2012.7L100%2050l10.8%207.9-4-12.7%2010.7-7.9h-13.4zM156.3%2024.7l-4%2012.6h-13.5l11%207.9-4.2%2012.7%2010.7-7.9%2011%207.9-4.2-12.7%2010.7-7.9h-13.2zM212.8%2024.7l-4.2%2012.6h-13.3l10.8%207.9-4%2012.7%2010.7-7.9%2010.8%207.9-4.3-12.7%2011-7.9h-13.5z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20513%20342'%3e%3cg%20fill='%23FFF'%3e%3cpath%20d='M0%200h513v341.3H0V0z'/%3e%3cpath%20d='M311.7%20230%20513%20341.3v-31.5L369.3%20230h-57.6zM200.3%20111.3%200%200v31.5l143.7%2079.8h56.6z'/%3e%3c/g%3e%3cg%20fill='%230052B4'%3e%3cpath%20d='M393.8%20230%20513%20295.7V230H393.8zm-82.1%200L513%20341.3v-31.5L369.3%20230h-57.6zm146.9%20111.3-147-81.7v81.7h147zM90.3%20230%200%20280.2V230h90.3zm110%2014.2v97.2H25.5l174.8-97.2zM118.2%20111.3%200%2045.6v65.7h118.2zm82.1%200L0%200v31.5l143.7%2079.8h56.6zM53.4%200l147%2081.7V0h-147zM421.7%20111.3%20513%2061.1v50.2h-91.3zm-110-14.2V0h174.9L311.7%2097.1z'/%3e%3c/g%3e%3cg%20fill='%23D80027'%3e%3cpath%20d='M288%200h-64v138.7H0v64h224v138.7h64V202.7h224v-64H288V0z'/%3e%3cpath%20d='M311.7%20230%20513%20341.3v-31.5L369.3%20230h-57.6zM143.7%20230%200%20309.9v31.5L200.3%20230h-56.6zM200.3%20111.3%200%200v31.5l143.7%2079.8h56.6zM368.3%20111.3%20513%2031.5V0L311.7%20111.3h56.6z'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20513%20342'%3e%3cpath%20fill='%23FFDA44'%20d='M0%200h513v342H0z'/%3e%3cpath%20fill='%23D80027'%20d='M0%200h513v114H0z'/%3e%3cpath%20fill='%23496E2D'%20d='M0%20228h513v114H0z'/%3e%3cpath%20d='m255.9%20113.8%2014.1%2043.4%2040.4%203.2-37%2026.9%2019.5%2040.3-37-26.9-37%2026.9%2014.1-43.5-36.9-26.9h45.7z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%2085.333%20512%20341.333'%3e%3cpath%20fill='%23FFF'%20d='M0%2085.331h512v341.337H0z'/%3e%3cpath%20d='M0%2085.331h512v90.579H0z'/%3e%3cpath%20fill='%23496E2D'%20d='M0%20336.089h512v90.568H0z'/%3e%3cpath%20fill='%23A2001D'%20d='M0%20198.606h512v114.799H0z'/%3e%3cg%20fill='%23FFF'%3e%3cpath%20d='m323.265%20139.803-25.583-11.809L256%20222.376l-41.682-94.382-25.583%2011.809%2051.749%20116.191-51.749%20116.192%2025.583%2011.808L256%20289.613l41.682%2094.381%2025.583-11.808-51.749-116.192z'/%3e%3cpath%20d='M273.376%20150.931C263.472%20140.115%20256%20133.898%20256%20133.898s-7.472%206.216-17.376%2017.032v210.127C248.528%20371.873%20256%20378.091%20256%20378.091s7.472-6.216%2017.376-17.033V150.931z'/%3e%3c/g%3e%3cg%20fill='%23A2001D'%3e%3cpath%20d='M209.04%20191.226v129.535c10.465%2018.542%2023.274%2033.742%2032.872%2043.818V147.408c-9.599%2010.076-22.408%2025.275-32.872%2043.818zM302.96%20191.226c-10.465-18.543-23.274-33.742-32.872-43.818V364.58c9.599-10.077%2022.407-25.276%2032.872-43.818V191.226z'/%3e%3c/g%3e%3cpath%20d='M302.96%20191.226v129.535c10.594-18.774%2018.784-40.973%2018.784-64.767s-8.19-45.993-18.784-64.768zM209.04%20191.226v129.535c-10.594-18.774-18.784-40.973-18.784-64.767s8.19-45.993%2018.784-64.768z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%2085.333%20512%20341.333'%3e%3cpath%20fill='%23FFF'%20d='M0%2085.337h512v341.326H0z'/%3e%3cpath%20d='M114.024%20256.001%200%20141.926v228.17z'/%3e%3cpath%20fill='%23ffb915'%20d='M161.192%20256%200%2094.7v47.226l114.024%20114.075L0%20370.096v47.138z'/%3e%3cpath%20fill='%23007847'%20d='M509.833%20289.391c.058-.44.804-.878%202.167-1.318v-65.464H222.602L85.33%2085.337H0V94.7L161.192%20256%200%20417.234v9.429h85.33l137.272-137.272h287.231z'/%3e%3cpath%20fill='%23000c8a'%20d='M503.181%20322.783H236.433l-103.881%20103.88H512v-103.88z'/%3e%3cpath%20fill='%23e1392d'%20d='M503.181%20189.217H512V85.337H132.552l103.881%20103.88z'/%3e%3c/svg%3e\"","import React from 'react';\nimport { Select } from 'antd';\nimport type { SelectProps } from 'antd';\nimport flagNG from '../../assets/flags/NG.svg';\nimport flagUS from '../../assets/flags/US.svg';\nimport flagGB from '../../assets/flags/GB.svg';\nimport flagGH from '../../assets/flags/GH.svg';\nimport flagKE from '../../assets/flags/KE.svg';\nimport flagZA from '../../assets/flags/ZA.svg';\n\nexport interface Country {\n code: string;\n name: string;\n flag: string;\n}\n\nexport interface CountrySelectorProps extends Omit<SelectProps, 'options'> {\n countries?: Country[];\n defaultCountry?: string;\n onCountryChange?: (countryCode: string) => void;\n showSearch?: boolean;\n}\n\nconst defaultCountries: Country[] = [\n { code: 'NG', name: 'Nigeria', flag: flagNG },\n { code: 'US', name: 'United States', flag: flagUS },\n { code: 'GB', name: 'United Kingdom', flag: flagGB },\n { code: 'GH', name: 'Ghana', flag: flagGH },\n { code: 'KE', name: 'Kenya', flag: flagKE },\n { code: 'ZA', name: 'South Africa', flag: flagZA },\n];\n\nexport const CountrySelector: React.FC<CountrySelectorProps> = ({\n countries = defaultCountries,\n defaultCountry = 'NG',\n onCountryChange,\n showSearch = false,\n className = '',\n ...props\n}) => {\n const handleChange = (value: string) => {\n if (onCountryChange) {\n onCountryChange(value);\n }\n };\n\n const renderFlag = (flag: string) => {\n return (\n <img\n src={flag}\n alt=\"flag\"\n className=\"w-7 h-7 rounded-full object-cover\"\n style={{ width: '28px', height: '28px' }}\n />\n );\n };\n\n const options = countries.map((country) => ({\n value: country.code,\n label: (\n <div className=\"flex items-center gap-2\">\n {renderFlag(country.flag)}\n <span>{country.code}</span>\n </div>\n ),\n // Add searchable text for filtering\n searchLabel: `${country.name} ${country.code}`.toLowerCase(),\n }));\n\n // Custom filter function for searching\n const handleFilter = (input: string, option: any) => {\n return option?.searchLabel?.includes(input.toLowerCase()) || false;\n };\n\n return (\n <>\n <style>\n {`\n .country-selector.ant-select {\n min-width: 90px;\n heigh: 40px;\n border-radius: 20px;\n padding: 5px !important;\n background: #EEEEEE;\n }\n\n .country-selector .ant-select-selector {\n border-radius: 20px !important;\n border: 1px solid #E5E7EB !important;\n height: 40px !important;\n display: flex;\n align-items: center;\n background: #FFFFFF !important;\n }\n\n .country-selector .ant-select-selection-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: #000000;\n }\n\n .country-selector:hover .ant-select-selector {\n border-color: #D1D5DB !important;\n }\n\n .country-selector.ant-select-focused .ant-select-selector {\n border-color: #EC615B !important;\n box-shadow: 0 0 0 2px rgba(236, 97, 91, 0.1) !important;\n }\n\n .country-selector .ant-select-arrow {\n color: #6B7280;\n }\n\n .country-selector .ant-select-dropdown {\n border-radius: 12px !important;\n }\n `}\n </style>\n <Select\n className={`country-selector ${className}`}\n defaultValue={defaultCountry}\n onChange={handleChange}\n options={options}\n showSearch={showSearch}\n filterOption={handleFilter}\n placeholder=\"Search country...\"\n suffixIcon={\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\">\n <path\n d=\"M1 1.5L6 6.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n }\n {...props}\n />\n </>\n );\n};\n","import React from 'react';\nimport { Dropdown } from 'antd';\nimport type { MenuProps } from 'antd';\n\nexport interface UserProfileDropdownProps {\n name: string;\n role?: string;\n avatarUrl?: string;\n menuItems?: MenuProps['items'];\n onMenuClick?: (key: string) => void;\n className?: string;\n width?: string | number;\n}\n\nexport const UserProfileDropdown: React.FC<UserProfileDropdownProps> = ({\n name,\n role,\n avatarUrl,\n menuItems,\n onMenuClick,\n className = '',\n width,\n}) => {\n const defaultMenuItems: MenuProps['items'] = [\n {\n key: 'profile',\n label: 'My Profile',\n },\n {\n key: 'settings',\n label: 'Settings',\n },\n {\n type: 'divider',\n },\n {\n key: 'logout',\n label: 'Logout',\n danger: true,\n },\n ];\n\n const handleMenuClick: MenuProps['onClick'] = ({ key }) => {\n if (onMenuClick) {\n onMenuClick(key);\n }\n };\n\n const getInitials = (name: string) => {\n const parts = name.split(' ');\n if (parts.length >= 2) {\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n }\n return name.substring(0, 2).toUpperCase();\n };\n\n return (\n <>\n <style>\n {`\n .user-profile-dropdown {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 5px;\n border-radius: 50px;\n background: #EEEEEE;\n border: 1px solid #E6E6E6;\n transition: background-color 0.2s;\n }\n\n .user-profile-dropdown:hover {\n background-color: #E5E5E5;\n }\n\n .user-profile-avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: 14px;\n color: #FFFFFF;\n background: linear-gradient(135deg, #EC615B 0%, #F59E95 100%);\n flex-shrink: 0;\n overflow: hidden;\n }\n\n .user-profile-avatar img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n .user-profile-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n }\n\n .user-profile-name {\n font-weight: 700;\n font-size: 14px;\n color: #000000;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.2;\n }\n\n .user-profile-role {\n font-size: 12px;\n color: #666666;\n font-weight: 400;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.2;\n }\n\n .user-profile-dropdown-icon {\n color: #000000;\n flex-shrink: 0;\n transition: transform 0.2s;\n margin-left: auto;\n }\n\n .user-profile-dropdown[aria-expanded=\"true\"] .user-profile-dropdown-icon {\n transform: rotate(180deg);\n }\n `}\n </style>\n <Dropdown\n menu={{\n items: menuItems || defaultMenuItems,\n onClick: handleMenuClick,\n }}\n trigger={['click']}\n placement=\"bottomRight\"\n >\n <div\n className={`user-profile-dropdown ${className}`}\n style={{ width: typeof width === 'number' ? `${width}px` : width }}\n >\n <div className=\"user-profile-avatar\">\n {avatarUrl ? <img src={avatarUrl} alt={name} /> : getInitials(name)}\n </div>\n <div className=\"user-profile-info\">\n <div className=\"user-profile-name\">{name}</div>\n {role && <div className=\"user-profile-role\">{role}</div>}\n </div>\n <svg\n className=\"user-profile-dropdown-icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M6 9L12 15L18 9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </Dropdown>\n </>\n );\n};\n","import React from 'react';\n\nexport interface ActionCardProps {\n label: string;\n icon: React.ReactNode;\n iconColor?: 'red' | 'blue' | 'green' | 'purple' | 'orange' | 'yellow';\n onClick?: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport const ActionCard: React.FC<ActionCardProps> = ({\n label,\n icon,\n iconColor = 'blue',\n onClick,\n disabled = false,\n className = '',\n}) => {\n const colorStyles = {\n red: {\n background: '#FFEAE8',\n color: '#EC615B',\n },\n blue: {\n background: '#E8F4FD',\n color: '#4A9FD8',\n },\n green: {\n background: '#E8F8F0',\n color: '#5FB894',\n },\n purple: {\n background: '#F3E8FD',\n color: '#9B59D8',\n },\n orange: {\n background: '#FFF3E8',\n color: '#F59E42',\n },\n yellow: {\n background: '#FFFBE8',\n color: '#F5D742',\n },\n };\n\n const currentColor = colorStyles[iconColor];\n\n return (\n <button\n className={`bg-[#FDFDFD] border border-[#E6E6E6] rounded-[14px] p-4 md:py-2.5 md:px-[18px] flex flex-col md:flex-row items-start md:items-center justify-start gap-2 md:gap-4 cursor-pointer transition-all duration-300 ease-in-out w-full md:h-[60px] hover:border-gray-300 hover:-translate-y-1 active:translate-y-0 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:border-[#E6E6E6] disabled:hover:translate-y-0 ${className}`}\n style={{\n boxShadow: '0 0 0 0 rgba(0, 0, 0, 0)',\n transition: 'all 0.3s ease-in-out',\n }}\n onMouseEnter={(e) => {\n if (!disabled) {\n e.currentTarget.style.boxShadow = '0 0 16px 0 rgba(0, 0, 0, 0.08)';\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n onClick={onClick}\n disabled={disabled}\n >\n <div\n className=\"w-10 h-10 rounded-full flex items-center justify-center shrink-0 [&>svg]:w-6 [&>svg]:h-6 transition-transform duration-300 ease-in-out\"\n style={{\n backgroundColor: currentColor.background,\n color: currentColor.color,\n }}\n >\n {icon}\n </div>\n <div className=\"text-sm font-medium text-[#181918] transition-colors duration-200 text-left\">{label}</div>\n </button>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='351'%20height='127'%20viewBox='0%200%20351%20127'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_704_66908)'%3e%3crect%20width='350.75'%20height='127'%20rx='20'%20fill='url(%23paint0_radial_704_66908)'/%3e%3cg%20clip-path='url(%23clip1_704_66908)'%3e%3cpath%20d='M-386.246%20144.789L274.742%20593.465C345.973%20641.816%20435.527%20629.713%20492.889%20563.989L1039.19%20-61.9766'%20stroke='url(%23paint1_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-331.201%2067.3087L243.14%20536.773C305.031%20587.364%20387.685%20584.956%20444.468%20530.912L985.275%2016.1953'%20stroke='url(%23paint2_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-275.756%202.40625L218.015%20482.418C271.224%20534.146%20346.924%20539.859%20402.405%20496.338L930.814%2081.8418'%20stroke='url(%23paint3_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-220.775%20-51.0859L198.662%20430.787C243.863%20482.715%20312.665%20495.121%20366.259%20461.006L876.689%20136.094'%20stroke='url(%23paint4_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-166.978%20-94.2812L184.397%20382.178C222.262%20433.521%20284.323%20451.328%20335.566%20425.551L823.623%20180.047'%20stroke='url(%23paint5_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-114.948%20-128.258L174.579%20336.795C205.78%20386.909%20261.318%20408.962%20309.861%20390.513L772.201%20214.791'%20stroke='url(%23paint6_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-65.1397%20-154.062L168.622%20294.755C193.812%20343.12%20243.108%20368.394%20288.699%20356.322L722.905%20241.336'%20stroke='url(%23paint7_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M-17.9061%20-172.664L165.967%20256.127C185.782%20302.335%20229.158%20329.932%20271.628%20323.353L676.096%20260.69'%20stroke='url(%23paint8_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M26.4941%20-185.008L166.099%20220.879C181.142%20264.617%20218.955%20293.756%20258.207%20291.853L632.022%20273.731'%20stroke='url(%23paint9_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M67.8961%20-191.945L168.563%20188.973C179.41%20230.02%20212.036%20260.019%20248.036%20262.046L590.884%20281.336'%20stroke='url(%23paint10_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M106.194%20-194.273L172.927%20160.311C180.118%20198.521%20207.946%20228.805%20240.711%20234.078L552.773%20284.291'%20stroke='url(%23paint11_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M141.351%20-192.719L178.821%20134.777C182.86%20170.07%20206.283%20200.151%20235.881%20208.056L517.757%20283.335'%20stroke='url(%23paint12_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M173.377%20-187.961L185.898%20112.209C187.246%20144.554%20206.661%20174.038%20233.185%20184.021L485.809%20279.116'%20stroke='url(%23paint13_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M202.332%20-180.594L193.864%2092.446C192.952%20121.868%20208.739%20150.423%20232.318%20161.998L456.892%20272.246'%20stroke='url(%23paint14_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M228.308%20-171.148L202.454%2075.3143C199.67%20101.874%20212.202%20129.241%20232.985%20141.977L430.918%20263.267'%20stroke='url(%23paint15_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M251.421%20-160.117L211.446%2060.6205C207.139%2084.4079%20216.778%20110.387%20234.928%20123.906L407.783%20252.655'%20stroke='url(%23paint16_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M271.813%20-147.922L220.633%2048.1661C215.118%2069.2978%20222.203%2093.7483%20237.896%20107.724L387.334%20240.832'%20stroke='url(%23paint17_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M289.644%20-134.93L229.862%2037.766C223.421%2056.3761%20228.275%2079.1947%20241.688%2093.3523L369.436%20228.172'%20stroke='url(%23paint18_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M305.074%20-121.461L238.982%2029.2269C231.86%2045.4665%20234.784%2066.5949%20246.102%2080.6976L353.911%20214.995'%20stroke='url(%23paint19_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M318.286%20-107.789L247.884%2022.3683C240.297%2036.3954%20241.569%2055.8094%20250.98%2069.6613L340.602%20201.581'%20stroke='url(%23paint20_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M329.449%20-94.1406L256.474%2017.0081C248.611%2028.9842%20248.483%2046.6908%20256.164%2060.1339L329.324%20188.165'%20stroke='url(%23paint21_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M338.751%20-80.7266L264.682%2012.9664C256.701%2023.0633%20255.41%2039.083%20261.538%2051.9936L319.909%20174.93'%20stroke='url(%23paint22_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M346.359%20-67.6797L272.45%2010.0966C264.486%2018.4792%20262.243%2032.8636%20266.989%2045.1387L312.18%20162.049'%20stroke='url(%23paint23_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M352.453%20-55.1328L279.746%208.24527C271.911%2015.075%20268.907%2027.8894%20272.43%2039.4602L305.978%20149.654'%20stroke='url(%23paint24_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M357.186%20-43.1953L286.531%207.25843C278.918%2012.6968%20275.321%2024.0134%20277.772%2034.8283L301.124%20137.825'%20stroke='url(%23paint25_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M360.719%20-31.9375L292.798%207.00732C285.479%2011.2055%20281.443%2021.11%20282.965%2031.1383L297.475%20126.645'%20stroke='url(%23paint26_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M363.203%20-21.3984L298.545%207.38418C291.576%2010.4864%20287.23%2019.0717%20287.956%2028.2995L294.882%20116.18'%20stroke='url(%23paint27_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M364.774%20-11.6172L303.77%208.27432C297.194%2010.4181%20292.654%2017.7804%20292.706%2026.2042L293.204%20106.454'%20stroke='url(%23paint28_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M365.559%20-2.60938L308.485%209.57633C302.335%2010.8887%20297.695%2017.1207%20297.185%2024.7578L292.317%2097.4804'%20stroke='url(%23paint29_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M365.678%205.625L312.708%2011.2111C307%2011.8123%20302.348%2017.0137%20301.373%2023.8812L292.102%2089.2759'%20stroke='url(%23paint30_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M365.245%2013.0938H316.462C311.207%2013.0938%20306.606%2017.3606%20305.261%2023.4861L292.45%2081.8244'%20stroke='url(%23paint31_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M1051.6%20-62.0633L390.608%20-510.739C319.377%20-559.091%20229.823%20-546.987%20172.461%20-481.263L-373.835%20144.699'%20stroke='url(%23paint32_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M996.555%2015.4192L422.213%20-454.045C360.322%20-504.636%20277.669%20-502.228%20220.885%20-448.184L-319.922%2066.536'%20stroke='url(%23paint33_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M941.108%2080.3227L447.336%20-399.692C394.127%20-451.421%20318.428%20-457.134%20262.947%20-413.613L-265.465%200.883634'%20stroke='url(%23paint34_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M886.128%20133.817L466.691%20-348.057C421.49%20-399.984%20352.688%20-412.39%20299.094%20-378.276L-211.339%20-53.3597'%20stroke='url(%23paint35_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M832.333%20177.009L480.957%20-299.45C443.093%20-350.794%20381.031%20-368.6%20329.789%20-342.823L-158.268%20-97.319'%20stroke='url(%23paint36_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M780.301%20210.979L490.773%20-254.075C459.573%20-304.188%20404.035%20-326.241%20355.492%20-307.792L-106.848%20-132.07'%20stroke='url(%23paint37_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M730.491%20236.781L496.728%20-212.036C471.539%20-260.401%20422.243%20-285.676%20376.652%20-273.604L-57.554%20-158.618'%20stroke='url(%23paint38_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M683.261%20255.388L499.387%20-173.404C479.573%20-219.611%20436.197%20-247.209%20393.727%20-240.63L-10.7409%20-177.966'%20stroke='url(%23paint39_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M638.856%20267.73L499.251%20-138.157C484.208%20-181.894%20446.395%20-211.034%20407.143%20-209.131L33.3282%20-191.008'%20stroke='url(%23paint40_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M597.454%20274.664L496.788%20-106.254C485.94%20-147.301%20453.315%20-177.3%20417.315%20-179.327L74.4663%20-198.617'%20stroke='url(%23paint41_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M559.158%20276.995L492.425%20-77.59C485.234%20-115.8%20457.405%20-146.084%20424.64%20-151.357L112.579%20-201.57'%20stroke='url(%23paint42_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M524.004%20275.444L486.533%20-52.0515C482.495%20-87.3444%20459.072%20-117.426%20429.474%20-125.331L147.598%20-200.609'%20stroke='url(%23paint43_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M491.975%20270.694L479.455%20-29.476C478.107%20-61.8212%20458.692%20-91.3046%20432.168%20-101.288L179.544%20-196.383'%20stroke='url(%23paint44_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M463.018%20263.317L471.486%20-9.72316C472.398%20-39.1448%20456.611%20-67.7006%20433.032%20-79.2748L208.458%20-189.523'%20stroke='url(%23paint45_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M437.046%20253.876L462.9%207.41364C465.684%20-19.1462%20453.152%20-46.5134%20432.369%20-59.2488L234.436%20-180.539'%20stroke='url(%23paint46_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M413.93%20242.85L453.906%2022.1122C458.213%20-1.67519%20448.574%20-27.6544%20430.424%20-41.1731L257.569%20-169.922'%20stroke='url(%23paint47_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M393.537%20230.653L444.717%2034.5647C450.232%2013.4329%20443.147%20-11.0175%20427.454%20-24.9931L278.016%20-158.102'%20stroke='url(%23paint48_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M375.711%20217.656L435.492%2044.9603C441.933%2026.3502%20437.08%203.53165%20423.667%20-10.626L295.918%20-145.445'%20stroke='url(%23paint49_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M360.28%20204.19L426.372%2053.5021C433.494%2037.2625%20430.57%2016.1342%20419.252%202.03148L311.443%20-132.266'%20stroke='url(%23paint50_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M347.067%20190.511L417.468%2060.3534C425.055%2046.3263%20423.784%2026.9123%20414.373%2013.0604L324.751%20-118.859'%20stroke='url(%23paint51_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M335.903%20176.876L408.878%2065.7268C416.741%2053.7507%20416.87%2036.0442%20409.188%2022.6011L336.028%20-105.43'%20stroke='url(%23paint52_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M326.6%20163.445L400.669%2069.7522C408.649%2059.6553%20409.941%2043.6356%20403.813%2030.725L345.442%20-92.2109'%20stroke='url(%23paint53_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M318.988%20150.408L392.898%2072.6318C400.861%2064.2492%20403.104%2049.8648%20398.359%2037.5897L353.167%20-79.3203'%20stroke='url(%23paint54_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M312.902%20137.865L385.609%2074.4867C393.444%2067.6569%20396.448%2054.8425%20392.925%2043.2718L359.376%20-66.9219'%20stroke='url(%23paint55_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M308.168%20125.926L378.823%2075.4724C386.435%2070.034%20390.032%2058.7174%20387.581%2047.9025L364.23%20-55.0938'%20stroke='url(%23paint56_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M304.632%20114.661L372.554%2075.716C379.873%2071.5178%20383.909%2061.6132%20382.387%2051.585L367.877%20-43.9219'%20stroke='url(%23paint57_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M302.15%20104.125L366.808%2075.3422C373.777%2072.24%20378.123%2063.6547%20377.396%2054.4269L370.47%20-33.4531'%20stroke='url(%23paint58_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M300.581%2094.3447L361.586%2074.4531C368.161%2072.3094%20372.701%2064.9471%20372.65%2056.5233L372.151%20-23.7266'%20stroke='url(%23paint59_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M299.796%2085.3321L356.87%2073.1464C363.02%2071.834%20367.66%2065.602%20368.17%2057.9649L373.039%20-14.7578'%20stroke='url(%23paint60_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M299.672%2077.1041L352.641%2071.518C358.35%2070.9168%20363.001%2065.7154%20363.976%2058.8479L373.248%20-6.54688'%20stroke='url(%23paint61_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3cpath%20d='M300.107%2069.629H348.89C354.146%2069.629%20358.746%2065.3621%20360.091%2059.2366L372.902%200.898438'%20stroke='url(%23paint62_linear_704_66908)'%20stroke-width='0.687784'%20stroke-miterlimit='10'%20stroke-linecap='round'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cradialGradient%20id='paint0_radial_704_66908'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(175.06%20173.312)%20rotate(90)%20scale(110.767%20305.917)'%3e%3cstop%20stop-color='%237A7F7A'/%3e%3cstop%20offset='1'%20stop-color='%23181918'/%3e%3c/radialGradient%3e%3clinearGradient%20id='paint1_linear_704_66908'%20x1='-369.359'%20y1='-87.6741'%20x2='513.779'%20y2='796.17'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_704_66908'%20x1='-315.605'%20y1='-4.70151'%20x2='396.698'%20y2='804.933'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint3_linear_704_66908'%20x1='-261.462'%20y1='-17.2195'%20x2='409.401'%20y2='726.915'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint4_linear_704_66908'%20x1='-207.773'%20y1='-71.0173'%20x2='477.186'%20y2='609.453'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint5_linear_704_66908'%20x1='-155.243'%20y1='-114.225'%20x2='526.052'%20y2='496.327'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint6_linear_704_66908'%20x1='-104.438'%20y1='-147.965'%20x2='558.427'%20y2='390.428'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint7_linear_704_66908'%20x1='-55.8037'%20y1='-173.324'%20x2='576.784'%20y2='293.617'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint8_linear_704_66908'%20x1='-9.68412'%20y1='-191.311'%20x2='583.485'%20y2='207.001'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint9_linear_704_66908'%20x1='33.6679'%20y1='-202.903'%20x2='580.7'%20y2='131.061'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint10_linear_704_66908'%20x1='74.092'%20y1='-209.703'%20x2='579.849'%20y2='59.0414'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint11_linear_704_66908'%20x1='111.484'%20y1='-212.229'%20x2='572.467'%20y2='-5.37385'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint12_linear_704_66908'%20x1='145.81'%20y1='-210.58'%20x2='553.637'%20y2='-55.52'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint13_linear_704_66908'%20x1='177.079'%20y1='-205.486'%20x2='528.199'%20y2='-92.546'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint14_linear_704_66908'%20x1='196.943'%20y1='-197.584'%20x2='499.557'%20y2='-113.05'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint15_linear_704_66908'%20x1='204.78'%20y1='-187.448'%20x2='471.464'%20y2='-119.892'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint16_linear_704_66908'%20x1='212.765'%20y1='-175.605'%20x2='445.219'%20y2='-122.16'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint17_linear_704_66908'%20x1='220.775'%20y1='-162.508'%20x2='421.094'%20y2='-120.743'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint18_linear_704_66908'%20x1='228.727'%20y1='-148.553'%20x2='399.249'%20y2='-116.396'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint19_linear_704_66908'%20x1='236.526'%20y1='-134.085'%20x2='379.714'%20y2='-109.774'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint20_linear_704_66908'%20x1='244.11'%20y1='-119.397'%20x2='362.478'%20y2='-101.431'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint21_linear_704_66908'%20x1='251.424'%20y1='-104.733'%20x2='347.604'%20y2='-91.7969'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint22_linear_704_66908'%20x1='258.649'%20y1='-90.3189'%20x2='356.891'%20y2='-75.3399'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint23_linear_704_66908'%20x1='265.489'%20y1='-76.2992'%20x2='364.085'%20y2='-59.4091'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint24_linear_704_66908'%20x1='271.934'%20y1='-62.8165'%20x2='369.414'%20y2='-44.1649'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint25_linear_704_66908'%20x1='277.959'%20y1='-49.9872'%20x2='373.072'%20y2='-29.73'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint26_linear_704_66908'%20x1='283.571'%20y1='-37.8876'%20x2='375.252'%20y2='-16.1831'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint27_linear_704_66908'%20x1='288.77'%20y1='-26.5604'%20x2='376.126'%20y2='-3.56131'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint28_linear_704_66908'%20x1='293.559'%20y1='-16.0473'%20x2='375.843'%20y2='8.10432'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint29_linear_704_66908'%20x1='293.184'%20y1='-6.36478'%20x2='374.006'%20y2='22.0749'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint30_linear_704_66908'%20x1='292.974'%20y1='2.48639'%20x2='370.37'%20y2='35.2215'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint31_linear_704_66908'%20x1='293.312'%20y1='10.515'%20x2='364.993'%20y2='47.0221'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint32_linear_704_66908'%20x1='-356.948'%20y1='-565.893'%20x2='526.186'%20y2='317.951'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint33_linear_704_66908'%20x1='-304.325'%20y1='-511.311'%20x2='407.982'%20y2='298.324'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint34_linear_704_66908'%20x1='-251.17'%20y1='-462.376'%20x2='419.697'%20y2='281.761'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint35_linear_704_66908'%20x1='-198.337'%20y1='-417.33'%20x2='486.622'%20y2='263.142'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint36_linear_704_66908'%20x1='-146.532'%20y1='-374.475'%20x2='534.763'%20y2='236.077'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint37_linear_704_66908'%20x1='-96.3381'%20y1='-333.957'%20x2='566.528'%20y2='204.436'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint38_linear_704_66908'%20x1='-48.2179'%20y1='-295.856'%20x2='584.37'%20y2='171.086'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint39_linear_704_66908'%20x1='-2.51896'%20y1='-260.241'%20x2='590.65'%20y2='138.071'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint40_linear_704_66908'%20x1='40.502'%20y1='-227.114'%20x2='587.534'%20y2='106.85'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint41_linear_704_66908'%20x1='80.6623'%20y1='-216.375'%20x2='586.419'%20y2='52.3695'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint42_linear_704_66908'%20x1='117.87'%20y1='-219.526'%20x2='578.853'%20y2='-12.6707'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint43_linear_704_66908'%20x1='152.058'%20y1='-218.471'%20x2='559.884'%20y2='-63.4106'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint44_linear_704_66908'%20x1='183.245'%20y1='-213.908'%20x2='534.365'%20y2='-100.968'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint45_linear_704_66908'%20x1='211.575'%20y1='-206.514'%20x2='514.189'%20y2='-121.98'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint46_linear_704_66908'%20x1='237.147'%20y1='-196.838'%20x2='503.83'%20y2='-129.282'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint47_linear_704_66908'%20x1='259.907'%20y1='-185.409'%20x2='492.361'%20y2='-131.965'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint48_linear_704_66908'%20x1='280.013'%20y1='-172.688'%20x2='480.332'%20y2='-130.922'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint49_linear_704_66908'%20x1='297.605'%20y1='-159.069'%20x2='468.127'%20y2='-126.912'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint50_linear_704_66908'%20x1='312.851'%20y1='-144.89'%20x2='456.039'%20y2='-120.579'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint51_linear_704_66908'%20x1='325.907'%20y1='-130.467'%20x2='444.276'%20y2='-112.501'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint52_linear_704_66908'%20x1='336.838'%20y1='-116.022'%20x2='433.018'%20y2='-103.086'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint53_linear_704_66908'%20x1='327.56'%20y1='-101.803'%20x2='425.802'%20y2='-86.8243'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint54_linear_704_66908'%20x1='319.958'%20y1='-87.9398'%20x2='418.554'%20y2='-71.0497'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint55_linear_704_66908'%20x1='313.867'%20y1='-74.6055'%20x2='411.348'%20y2='-55.9539'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint56_linear_704_66908'%20x1='309.118'%20y1='-61.8857'%20x2='404.23'%20y2='-41.6284'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint57_linear_704_66908'%20x1='305.557'%20y1='-49.8719'%20x2='397.238'%20y2='-28.1675'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint58_linear_704_66908'%20x1='303.042'%20y1='-38.6151'%20x2='390.398'%20y2='-15.616'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint59_linear_704_66908'%20x1='301.435'%20y1='-28.1566'%20x2='383.719'%20y2='-4.00511'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint60_linear_704_66908'%20x1='300.663'%20y1='-18.5132'%20x2='381.485'%20y2='9.92646'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint61_linear_704_66908'%20x1='300.543'%20y1='-9.68549'%20x2='377.94'%20y2='23.0496'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint62_linear_704_66908'%20x1='300.97'%20y1='-1.68036'%20x2='372.65'%20y2='34.8268'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.14'%20stop-color='%23F96058'%20stop-opacity='0.1'/%3e%3cstop%20offset='0.62'%20stop-color='%23F96058'%20stop-opacity='0.5'/%3e%3cstop%20offset='0.905'%20stop-color='%23F96058'%20stop-opacity='0.2'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_704_66908'%3e%3crect%20width='350.75'%20height='127'%20rx='20'%20fill='white'/%3e%3c/clipPath%3e%3cclipPath%20id='clip1_704_66908'%3e%3crect%20width='397.467'%20height='156.514'%20fill='white'%20transform='translate(-24.4709%20-14.3125)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","import React, { useState } from 'react';\nimport cardPatternSvg from '../../assets/card-pattern.svg';\n\nexport interface DashboardCardProps {\n label: string;\n value: string | number;\n icon?: React.ReactNode;\n showVisibilityToggle?: boolean;\n onVisibilityToggle?: () => void;\n valuePrefix?: string;\n ledgerBalance?: string | number;\n backgroundPattern?: 'wave' | 'grid' | 'none';\n backgroundImage?: string;\n topRight?: React.ReactNode;\n width?: string | number;\n className?: string;\n}\n\nexport const DashboardCard: React.FC<DashboardCardProps> = ({\n label,\n value,\n icon,\n showVisibilityToggle = true,\n onVisibilityToggle,\n valuePrefix = '₦',\n ledgerBalance,\n backgroundPattern = 'wave',\n backgroundImage,\n topRight,\n width = 348,\n className = '',\n}) => {\n const [isVisible, setIsVisible] = useState(true);\n\n const handleToggleVisibility = () => {\n setIsVisible(!isVisible);\n if (onVisibilityToggle) {\n onVisibilityToggle();\n }\n };\n const defaultIcon = (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M3 10h18M7 14h4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n\n return (\n <div\n className={`relative overflow-hidden flex flex-col rounded-[20px] px-[18px] pt-3 transition-all duration-300 ease-in-out hover:-translate-y-1 cursor-pointer self-start ${ledgerBalance ? 'pb-1' : 'pb-3'} ${className}`}\n style={{\n background: backgroundImage\n ? `url(${backgroundImage}) center / cover no-repeat`\n : 'radial-gradient(circle at 50% 136%, #7A7F7A 0%, #181918 100%)',\n width: typeof width === 'number' ? `${width}px` : width,\n boxShadow: '0 0 0 0 rgba(0, 0, 0, 0)',\n transition: 'all 0.3s ease-in-out',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.boxShadow = '0 0 24px 0 rgba(0, 0, 0, 0.15)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n >\n {backgroundPattern !== 'none' && (\n <div\n className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full h-full pointer-events-none transition-opacity duration-300\"\n style={{\n backgroundImage: `url(${cardPatternSvg})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n }}\n />\n )}\n <div className=\"relative z-10\">\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"w-10 h-10 bg-[#616161] rounded-full flex items-center justify-center text-white transition-transform duration-300 ease-in-out hover:scale-110\">\n {icon || defaultIcon}\n </div>\n {topRight && <div>{topRight}</div>}\n </div>\n <div className=\"flex items-center gap-2 mt-3\">\n <span className=\"text-sm text-[#E6E6E6] font-light transition-colors duration-200\">\n {label}\n </span>\n {showVisibilityToggle && (\n <button\n className=\"bg-transparent border-none cursor-pointer p-1 flex items-center justify-center text-white hover:text-white/80 transition-colors duration-200\"\n onClick={handleToggleVisibility}\n aria-label=\"Toggle visibility\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.61342 8.47806C1.52262 8.3343 1.47723 8.26242 1.45182 8.15155C1.43273 8.06827 1.43273 7.93694 1.45182 7.85366C1.47723 7.74279 1.52262 7.67091 1.61341 7.52715C2.36369 6.33916 4.59693 3.33594 8.00027 3.33594C11.4036 3.33594 13.6369 6.33916 14.3871 7.52715C14.4779 7.67091 14.5233 7.74279 14.5487 7.85366C14.5678 7.93694 14.5678 8.06827 14.5487 8.15155C14.5233 8.26242 14.4779 8.3343 14.3871 8.47806C13.6369 9.66604 11.4036 12.6693 8.00027 12.6693C4.59693 12.6693 2.36369 9.66604 1.61342 8.47806Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M8.00027 10.0026C9.10484 10.0026 10.0003 9.10717 10.0003 8.0026C10.0003 6.89803 9.10484 6.0026 8.00027 6.0026C6.8957 6.0026 6.00027 6.89803 6.00027 8.0026C6.00027 9.10717 6.8957 10.0026 8.00027 10.0026Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </div>\n <div className=\"text-[32px] font-bold text-white transition-all duration-200\">\n {isVisible ? `${valuePrefix} ${value}` : '****'}\n </div>\n {ledgerBalance && (\n <div className=\"mb-1\">\n <div className=\"w-full h-px bg-white/10 mb-2 transition-opacity duration-300\"></div>\n <div className=\"flex items-center gap-2 transition-all duration-200\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.0026 13.3307H3.46927C2.72253 13.3307 2.34917 13.3307 2.06395 13.1854C1.81307 13.0576 1.60909 12.8536 1.48126 12.6027C1.33594 12.3175 1.33594 11.9441 1.33594 11.1974V4.7974C1.33594 4.05066 1.33594 3.67729 1.48126 3.39208C1.60909 3.14119 1.81307 2.93722 2.06395 2.80939C2.34917 2.66406 2.72253 2.66406 3.46927 2.66406H3.73594C5.22941 2.66406 5.97615 2.66406 6.54658 2.95471C7.04834 3.21037 7.45629 3.61832 7.71195 4.12009C8.0026 4.69052 8.0026 5.43726 8.0026 6.93073M8.0026 13.3307V6.93073M8.0026 13.3307H12.5359C13.2827 13.3307 13.656 13.3307 13.9413 13.1854C14.1921 13.0576 14.3961 12.8536 14.5239 12.6027C14.6693 12.3175 14.6693 11.9441 14.6693 11.1974V4.7974C14.6693 4.05066 14.6693 3.67729 14.5239 3.39208C14.3961 3.14119 14.1921 2.93722 13.9413 2.80939C13.656 2.66406 13.2827 2.66406 12.5359 2.66406H12.2693C10.7758 2.66406 10.0291 2.66406 9.45863 2.95471C8.95686 3.21037 8.54892 3.61832 8.29325 4.12009C8.0026 4.69052 8.0026 5.43726 8.0026 6.93073\"\n stroke=\"#EC615B\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span className=\"text-xs text-[#E6E6E6] font-light transition-all duration-200\">\n Ledger Balance {isVisible ? `${valuePrefix} ${ledgerBalance}` : '****'}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n","export default \"data:image/svg+xml,%3csvg%20width='41'%20height='54'%20viewBox='0%200%2041%2054'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20opacity='0.5'%20d='M31.6185%2035.0654C24.3544%2030.874%2012.6094%2030.874%205.39141%2035.0654C-1.82664%2039.2567%20-1.79374%2046.0496%205.47036%2050.2344C12.741%2054.4257%2024.486%2054.4257%2031.7106%2050.2344C38.9286%2046.043%2038.8892%2039.2567%2031.6185%2035.0654Z'%20fill='%23AFAAA1'/%3e%3cpath%20d='M25.4769%2028.1137C25.4769%2028.1137%2025.4243%2028.0809%2025.398%2028.0677C24.5557%2027.5816%2023.1937%2027.5816%2022.3581%2028.0677L7.60617%2036.6278C7.15875%2036.884%206.92188%2037.2322%206.92188%2037.5804L7.57328%2048.6106L22.3252%2040.0505C23.1608%2039.5644%2024.5228%2039.5644%2025.3651%2040.0505C25.3914%2040.0636%2025.4177%2040.0834%2025.444%2040.0965C25.8059%2040.3264%2025.9704%2040.6155%2025.9704%2040.9045L26.0033%2028.9218C26.0033%2028.6327%2025.8322%2028.3437%2025.4769%2028.1137Z'%20fill='url(%23paint0_linear_3503_145677)'/%3e%3cpath%20d='M31.3807%2031.5213C31.3807%2031.5213%2031.3281%2031.4885%2031.3018%2031.4753C30.4267%2031.0221%2029.0778%2031.0943%2028.2619%2031.5739L23.9061%2034.1032C23.0968%2034.5696%2021.7874%2034.5696%2020.9781%2034.1032C20.5701%2033.8666%2020.3662%2033.5579%2020.3727%2033.2557L20.3398%2045.2385C20.3398%2045.5472%2020.5438%2045.856%2020.9452%2046.0859C21.7545%2046.5524%2023.0705%2046.5524%2023.8732%2046.0859L28.229%2043.5567C29.0449%2043.0837%2030.4004%2043.0114%2031.2689%2043.4581C31.2952%2043.4713%2031.3215%2043.491%2031.3478%2043.5041C31.769%2043.7472%2031.9795%2044.0691%2031.9795%2044.391L32.0124%2032.4082C32.0124%2032.0863%2031.8019%2031.7644%2031.3807%2031.5213Z'%20fill='url(%23paint1_linear_3503_145677)'/%3e%3cpath%20d='M37.4468%2035.02C37.4468%2035.02%2037.3941%2034.9871%2037.3678%2034.974C36.5256%2034.4878%2035.1636%2034.4878%2034.3279%2034.974L29.8866%2037.5558C29.0772%2038.0222%2027.7679%2038.0222%2026.9586%2037.5558C26.5506%2037.3193%2026.3466%2037.0105%2026.3532%2036.7083L26.3203%2048.6911C26.3203%2048.9999%2026.5243%2049.3086%2026.9257%2049.5386C27.735%2050.005%2029.0509%2050.005%2029.8537%2049.5386L34.295%2046.9568C35.1307%2046.4706%2036.4927%2046.4706%2037.3349%2046.9568C37.3612%2046.9699%2037.3875%2046.9896%2037.4139%2047.0027C37.7692%2047.2327%2037.9402%2047.5217%2037.9402%2047.8174L37.9731%2035.8346C37.9731%2035.5455%2037.8021%2035.2499%2037.4468%2035.02Z'%20fill='url(%23paint2_linear_3503_145677)'/%3e%3cpath%20d='M11.3281%2040.1915L12.9336%2048.7647C13.2363%2050.3677%2015.0391%2051.1954%2016.4538%2050.3743L17.9145%2049.5268C18.3159%2049.2969%2018.5133%2048.9947%2018.5133%2048.6859L18.5462%2036.7031L11.3281%2040.185V40.1915Z'%20fill='%23CFCFC7'/%3e%3cpath%20d='M23.9383%2041.0037L19.5561%2042.8892C19.1087%2043.1454%2018.3783%2043.5987%2018.3783%2043.9403C16.7531%2046.4367%2019.6285%2049.8791%2023.9054%2052.9799C24.3067%2052.75%2024.5041%2052.4478%2024.5041%2052.139L24.537%2040.1562C24.537%2040.4584%2024.3396%2040.7606%2023.9383%2040.9971V41.0037Z'%20fill='%23CFCFC7'/%3e%3cpath%20d='M35.6108%2044.29C28.3928%2048.4814%2016.6413%2048.4814%209.37059%2044.29C5.71222%2042.1812%203.88962%2039.4154%203.8962%2036.6562L3.8633%2042.5162C3.85672%2045.282%205.67932%2048.0478%209.33769%2050.15C16.6084%2054.3413%2028.3533%2054.3413%2035.5779%2050.15C39.1639%2048.0675%2040.9602%2045.3477%2040.9668%2042.6214L40.9997%2036.7614C40.9931%2039.4877%2039.1968%2042.214%2035.6108%2044.29Z'%20fill='url(%23paint3_linear_3503_145677)'/%3e%3cpath%20d='M35.5194%2029.1123C42.7901%2033.3036%2042.8296%2040.0965%2035.6115%2044.2812C28.3935%2048.4726%2016.642%2048.4726%209.37128%2044.2812C2.10718%2040.0899%202.0677%2033.297%209.29232%2029.1123C16.5104%2024.9209%2028.2553%2024.9209%2035.5194%2029.1123ZM22.544%2045.3324L37.2959%2036.7723C38.1118%2036.2993%2038.2303%2035.511%2037.4539%2035.0117C37.4275%2034.9985%2037.4012%2034.9788%2037.3749%2034.9657C36.5327%2034.4795%2035.1707%2034.4795%2034.335%2034.9657L29.8937%2037.5475C29.0844%2038.0139%2027.775%2038.0139%2026.9657%2037.5475C26.1563%2037.0811%2026.1563%2036.3256%2026.9657%2035.8526L31.407%2033.2708C32.2427%2032.7846%2032.2361%2031.9963%2031.3939%2031.5101C31.3675%2031.497%2031.3412%2031.4773%2031.3149%2031.4641C30.4464%2031.0108%2029.0909%2031.0831%2028.275%2031.5627L23.9192%2034.0919C23.1099%2034.5584%2021.8005%2034.5584%2020.9912%2034.0919C20.1819%2033.6255%2020.1819%2032.87%2020.9912%2032.397L25.347%2029.8677C26.1629%2029.3947%2026.2814%2028.613%2025.5049%2028.1071C25.4786%2028.094%2025.4523%2028.0743%2025.426%2028.0611C24.5838%2027.575%2023.2218%2027.575%2022.3861%2028.0611L7.63421%2036.6212C6.81173%2037.1008%206.6933%2037.8825%207.47629%2038.3818C7.50261%2038.395%207.52893%2038.4147%207.55525%2038.4278C8.39747%2038.914%209.75948%2038.914%2010.5951%2038.4278L15.0365%2035.846C15.8392%2035.3796%2017.1486%2035.3796%2017.9579%2035.846C18.7672%2036.3124%2018.7738%2037.0745%2017.9711%2037.5409L13.6152%2040.0702C12.7928%2040.5498%2012.6743%2041.3315%2013.4573%2041.8308C13.4837%2041.844%2013.51%2041.8637%2013.5363%2041.8768C14.3785%2042.3629%2015.7405%2042.3629%2016.5762%2041.8768L21.0175%2039.295C21.8203%2038.8285%2023.1296%2038.8285%2023.939%2039.295C24.7483%2039.7614%2024.7548%2040.5235%2023.9521%2040.9899L19.5963%2043.5192C18.7738%2043.9987%2018.6554%2044.7805%2019.4384%2045.2798C19.4647%2045.2929%2019.491%2045.3126%2019.5173%2045.3258C20.3595%2045.8119%2021.7216%2045.8119%2022.5638%2045.3258L22.544%2045.3324Z'%20fill='url(%23paint4_linear_3503_145677)'/%3e%3cpath%20d='M20.9974%2039.3094C21.5435%2038.994%2022.3199%2038.8955%2023.0174%2039.0072V9.10938H19.1484V40.3802L20.9908%2039.3094H20.9974Z'%20fill='%23403636'/%3e%3cpath%20d='M26.534%201.85938H15.7431C14.2429%203.28496%2013.3086%205.28865%2013.3086%207.51572C13.3086%2011.8319%2016.8156%2015.3334%2021.1386%2015.3334C25.4615%2015.3334%2028.9685%2011.8319%2028.9685%207.51572C28.9685%205.28865%2028.0276%203.28496%2026.534%201.85938Z'%20fill='url(%23paint5_radial_3503_145677)'/%3e%3cpath%20d='M25.5151%201.04455C27.9365%202.43728%2027.9365%204.69719%2025.5151%206.08993C23.0938%207.48266%2019.1788%207.48266%2016.7574%206.08993C14.3361%204.69719%2014.3361%202.43728%2016.7574%201.04455C19.1788%20-0.348184%2023.0938%20-0.348184%2025.5151%201.04455Z'%20fill='%23504444'/%3e%3cpath%20d='M24.6314%201.55925C22.7036%200.449001%2019.5847%200.449001%2017.6568%201.55925C15.729%202.66949%2015.729%204.46954%2017.6568%205.57978C19.5847%206.69003%2022.7036%206.69003%2024.6314%205.57978C26.5593%204.46954%2026.5593%202.66949%2024.6314%201.55925ZM24.1511%205.30386C22.4864%206.26301%2019.7953%206.26301%2018.1372%205.30386C16.4725%204.34472%2016.4725%202.79431%2018.1372%201.83517C19.8019%200.876019%2022.493%200.876019%2024.1511%201.83517C25.8158%202.79431%2025.8158%204.34472%2024.1511%205.30386Z'%20fill='%23FFCC33'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_3503_145677'%20x1='25.977'%20y1='38.1585'%20x2='14.8834'%20y2='38.1585'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint1_linear_3503_145677'%20x1='32.4862'%20y1='38.8069'%20x2='14.4443'%20y2='38.8069'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint2_linear_3503_145677'%20x1='38.006'%20y1='42.2464'%20x2='26.4519'%20y2='42.2464'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint3_linear_3503_145677'%20x1='3.8633'%20y1='44.9732'%20x2='40.9997'%20y2='44.9732'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23B2B1AB'/%3e%3cstop%20offset='1'%20stop-color='%23CFCFC7'/%3e%3c/linearGradient%3e%3clinearGradient%20id='paint4_linear_3503_145677'%20x1='3.89688'%20y1='36.7'%20x2='41.0004'%20y2='36.7'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0.61'%20stop-color='%23DCDCD3'/%3e%3cstop%20offset='0.62'%20stop-color='%23ECECE2'/%3e%3c/linearGradient%3e%3cradialGradient%20id='paint5_radial_3503_145677'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(23.2244%200.499489)%20scale(16.4956%2016.4697)'%3e%3cstop%20stop-color='%233F3535'/%3e%3cstop%20offset='1'%20stop-color='%23332C2C'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e\"","import React from 'react';\nimport emptyNotificationSvg from '../../assets/empty-notification.svg';\n\nexport interface NotificationItem {\n id: string;\n title: string;\n description: string;\n timestamp: string;\n isNew?: boolean;\n icon?: React.ReactNode;\n iconBackgroundColor?: string;\n iconColor?: string;\n onClick?: () => void;\n}\n\nexport interface NotificationDropdownProps {\n title: string;\n count?: number;\n notifications: NotificationItem[];\n onViewMore?: () => void;\n className?: string;\n maxHeight?: string | number;\n width?: string | number;\n}\n\nexport const NotificationDropdown: React.FC<NotificationDropdownProps> = ({\n count,\n notifications,\n onViewMore,\n className = '',\n width = 380,\n maxHeight = 400,\n}) => {\n const defaultIcon = (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M10 6v4M10 14h.01\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n\n return (\n <div\n className={`bg-white rounded-2xl shadow-lg border border-gray-100 overflow-hidden ${className}`}\n style={{ width: typeof width === 'number' ? `${width}px` : width }}\n >\n {/* Tab Section */}\n <div className=\"flex items-center justify-between px-4 py-3 bg-gray-50\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-[#181918]\">Issues</span>\n {count !== undefined && (\n <span className=\"flex flex-col items-center justify-center h-[22px] w-[22px] bg-[#FAE5B7] text-[#6C4D0B] border border-[#EFAC18] text-[11px] font-medium px-2 py-0.5 rounded-full\">\n {count}\n </span>\n )}\n </div>\n {onViewMore && (\n <button\n onClick={onViewMore}\n className=\"text-xs text-[#EC615B] font-normal hover:text-[#EC615B] transition-colors duration-200\"\n >\n View More\n </button>\n )}\n </div>\n\n {/* Notifications List */}\n <div\n className=\"overflow-y-auto\"\n style={{ maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight }}\n >\n {notifications.length === 0 ? (\n <div className=\"px-4 py-16 flex flex-col items-center justify-center\">\n <img\n src={emptyNotificationSvg}\n alt=\"No notifications\"\n className=\"w-16 h-16 mb-4\"\n />\n <h4 className=\"text-sm font-medium text-[#181918] mb-1\">\n No issues available\n </h4>\n <p className=\"text-xs text-gray-500 font-light\">\n All recent activities will appear here\n </p>\n </div>\n ) : (\n notifications.map((notification) => (\n <div\n key={notification.id}\n onClick={notification.onClick}\n className=\"flex gap-3 px-4 py-3 border-b border-[#E6E6E6] hover:bg-[#FDEFEF] transition-colors duration-200 cursor-pointer\"\n >\n {/* Icon */}\n <div\n className=\"flex items-center justify-center h-10 w-10 rounded-full flex-shrink-0 [&>svg]:w-5 [&>svg]:h-5\"\n style={{\n backgroundColor: notification.iconBackgroundColor || '#FCE7E6',\n color: notification.iconColor || '#EC615B',\n }}\n >\n {notification.icon || defaultIcon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-sm font-medium text-[#181918] mb-1\">{notification.title}</h4>\n <p className=\"text-xs text-[#181918] font-light line-clamp-2\">\n {notification.description}\n </p>\n </div>\n\n {/* Timestamp/Badge */}\n <div className=\"flex-shrink-0\">\n {notification.isNew ? (\n <span className=\"text-[#EC615B] text-xs font-medium px-2 py-1 rounded\">New</span>\n ) : (\n <span className=\"text-xs text-gray-400\">{notification.timestamp}</span>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { Tabs } from 'antd';\n\nexport interface TabItem {\n key: string;\n label: string;\n children: React.ReactNode;\n}\n\nexport interface TabsComponentProps {\n items: TabItem[];\n defaultActiveKey?: string;\n activeKey?: string;\n onChange?: (activeKey: string) => void;\n className?: string;\n}\n\nexport const TabsComponent: React.FC<TabsComponentProps> = ({\n items,\n defaultActiveKey,\n activeKey,\n onChange,\n className = '',\n}) => {\n return (\n <div className={className}>\n <style>\n {`\n .custom-tabs .ant-tabs-nav {\n margin-bottom: 0 !important;\n }\n\n .custom-tabs .ant-tabs-nav::before {\n border-bottom: 1px solid #E6E6E6 !important;\n }\n\n .custom-tabs .ant-tabs-tab {\n padding: 10px 0 !important;\n margin-right: 20px !important;\n color: #181918 !important;\n font-size: 14px !important;\n font-weight: 400 !important;\n font-family: 'Plus Jakarta Sans', sans-serif !important;\n }\n\n .custom-tabs .ant-tabs-tab:hover {\n color: #EC615B !important;\n }\n\n .custom-tabs .ant-tabs-tab-active .ant-tabs-tab-btn {\n color: #EC615B !important;\n font-weight: 400 !important;\n }\n\n .custom-tabs .ant-tabs-ink-bar {\n background: #EC615B !important;\n height: 2px !important;\n }\n\n .custom-tabs .ant-tabs-tab-btn {\n transition: color 0.3s ease !important;\n }\n\n .custom-tabs .ant-tabs-content-holder {\n padding-top: 16px;\n }\n `}\n </style>\n <Tabs\n className=\"custom-tabs\"\n items={items}\n defaultActiveKey={defaultActiveKey}\n activeKey={activeKey}\n onChange={onChange}\n />\n </div>\n );\n};\n"],"names":["Button","variant","size","className","children","props","getSizeHeight","getVariantStyles","height","disabledStyles","jsxs","Fragment","jsx","AntButton","e","_a","styles","StatCard","label","value","icon","iconBackgroundColor","iconColor","valuePrefix","progressText","badge","width","selected","onClick","rounded","sizeClass","roundedClass","defaultIcon","SearchInput","iconPosition","fullWidth","onIconClick","bgColor","borderColor","focusBorderColor","textColor","placeholderColor","style","containerBaseClasses","inputBaseClasses","sizeClasses","iconSizeClasses","roundedClasses","paddingWithIcon","widthClass","customStyles","placeholderClass","defaultBorderClass","defaultTextClass","defaultFocusClass","inputClassName","iconPositionClasses","defaultIconColor","hoverIconColor","defaultSearchIcon","Card","shadow","combinedClassName","AntCard","Dropdown","items","trigger","placement","overlayClassName","disabled","menuBgColor","menuItemHoverColor","dangerColor","isOpen","setIsOpen","useState","dropdownRef","useRef","useEffect","handleClickOutside","event","handleTriggerClick","handleTriggerMouseEnter","handleTriggerMouseLeave","handleMenuItemClick","item","placementClasses","animationClasses","itemSizeClasses","defaultHoverColor","defaultBorderColor","defaultDangerColor","hoverColorStyle","customHoverClass","customDangerStyle","dangerHoverBgStyle","finalBorderColor","itemStyle","isCheckBoxInput","element","isDateObject","isNullOrUndefined","isObjectType","isObject","getEventValue","isNameInFieldArray","names","name","part","index","arr","isPlainObject","tempObject","prototypeCopy","isWeb","cloneObject","data","isFileListInstance","isArray","copy","key","isKey","isUndefined","val","compact","stringToPath","input","get","object","path","defaultValue","result","isBoolean","isFunction","set","tempPath","length","lastIndex","newValue","objValue","EVENTS","VALIDATION_MODE","HookFormControlContext","React","useFormControlContext","getProxyFormState","formState","control","localProxyFormState","isRoot","_key","useIsomorphicLayoutEffect","useFormState","formControl","exact","updateFormState","_localProxyFormState","isString","generateWatchOutput","_names","formValues","isGlobal","fieldName","isPrimitive","deepEqual","object1","object2","_internal_visited","keys1","keys2","val1","val2","useWatch","compute","_defaultValue","_compute","_computeFormValues","_prevControl","_prevName","updateValue","getCurrentOutput","values","refreshValue","computedFormValues","controlChanged","prevName","computedOutput","nameChanged","useController","shouldUnregister","isArrayField","defaultValueMemo","_props","_previousNameRef","_registerProps","fieldState","onChange","onBlur","ref","elm","field","message","_shouldUnregisterField","previousName","updateMounted","HookFormContext","SelectBase","options","controlledValue","placeholder","allowClear","showSearch","searchPlaceholder","selectedBgColor","selectedTextColor","hoverBgColor","error","helperText","internalValue","setInternalValue","searchQuery","setSearchQuery","selectRef","searchInputRef","handleSelect","optionValue","handleClear","selectedOption","opt","filteredOptions","option","getTriggerStyles","getSelectedOptionStyles","ChevronIcon","ClearIcon","ControlledSelect","errorProp","rest","Select","Table","columns","dataSource","rowKey","pagination","loading","onRow","bordered","striped","headerBgColor","headerTextColor","rowHoverColor","stripedRowColor","currentPage","setCurrentPage","pageSize","setPageSize","sizeConfig","currentSizeConfig","currentRoundedClass","getRowKey","record","getValue","dataIndex","obj","paginatedData","handlePageChange","page","handlePageSizeChange","newPageSize","column","idx","rowProps","stripedBg","hoverBg","colIdx","content","Pagination","current","total","onPageSizeChange","showSizeChanger","pageSizeOptions","showTotal","totalPages","startItem","endItem","getPageNumbers","pages","i","TableTop","title","description","onSearch","actions","filters","titleColor","descriptionColor","searchBgColor","searchBorderColor","searchFocusBorderColor","hideActionButtons","selectedActionButton","handleSearchChange","config","radiusClass","searchInputStyle","widthMap","Modal","open","onClose","footer","closable","maskClosable","centered","overlayColor","bodyClassName","headerClassName","maxHeight","isVisible","setIsVisible","isAnimating","setIsAnimating","effectiveWidth","modalStyle","headerStyle","overlayStyle","timer","handleEscape","handleMaskClick","handleModalClick","Badge","dot","variantClasses","dotSizeClasses","dotColorClasses","Steps","direction","finishColor","processColor","waitColor","errorColor","lineColor","getStepStatus","textSizeClasses","descriptionSizeClasses","renderIcon","status","getStatusClasses","isOutline","statusClasses","isLast","iconStyle","Progress","percent","showInfo","strokeColor","strokeWidth","format","successColor","exceptionColor","trackColor","clampedPercent","heightClasses","getStatusColor","getTrackColor","getStatusIcon","formatPercent","Checkbox","controlledChecked","defaultChecked","indeterminate","id","checkedColor","uncheckedColor","checkedBorderColor","internalChecked","setInternalChecked","isControlled","checked","handleChange","newChecked","isFilled","getCheckboxClasses","getCheckboxInlineStyles","getIconColor","getSizeClasses","getRoundedClasses","SelectedItemsList","onRemove","emptyMessage","itemClassName","sublabelColor","removeButtonColor","removeButtonHoverColor","defaultBgColor","defaultHoverBgColor","defaultTextColor","defaultSublabelColor","defaultRemoveButtonColor","defaultRemoveButtonHoverColor","finalBgColor","finalHoverBgColor","finalTextColor","finalSublabelColor","finalRemoveButtonColor","finalRemoveButtonHoverColor","InputBase","errorClass","AntInput","ControlledInput","Input","PasswordInputBase","ControlledPasswordInput","PasswordInput","OTPInputBase","onComplete","errorMessage","otp","setOtp","inputRefs","otpArray","filledOtp","newOtp","otpString","digit","handleKeyDown","handlePaste","pastedData","pastedArray","nextIndex","el","ControlledOTPInput","errorMessageProp","hasError","OTPInput","PhoneInputBase","countryCode","onCountryCodeChange","countryCodes","showCountryCodeDropdown","customFormat","displayValue","setDisplayValue","cleaned","formatted","formatPhoneNumber","cursorPosition","oldLength","diff","newCursorPosition","syntheticEvent","numericData","start","newCleaned","ControlledPhoneInput","PhoneInput","CurrencyInputBase","currencySymbol","formatAmount","externalValue","formatNumber","num","parts","integerPart","decimalPart","formattedInteger","unformatNumber","stringValue","inputValue","rawValue","ControlledCurrencyInput","CurrencyInput","UserPill","subtitle","avatar","Avatar","UserOutlined","cardBorderSvg","UserCard","email","role","n","flagNG","flagUS","flagGB","flagGH","flagKE","flagZA","defaultCountries","CountrySelector","countries","defaultCountry","onCountryChange","renderFlag","flag","country","handleFilter","UserProfileDropdown","avatarUrl","menuItems","onMenuClick","defaultMenuItems","handleMenuClick","getInitials","ActionCard","currentColor","cardPatternSvg","DashboardCard","showVisibilityToggle","onVisibilityToggle","ledgerBalance","backgroundPattern","backgroundImage","topRight","handleToggleVisibility","emptyNotificationSvg","NotificationDropdown","count","notifications","onViewMore","notification","TabsComponent","defaultActiveKey","activeKey","Tabs"],"mappings":"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","x_google_ignoreList":[5]}