shekel-fe-shared-lib 3.0.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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","../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/_theme.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/Input/SelectInput.tsx","../src/components/Input/DatePicker.tsx","../src/components/Input/DateRangePicker.tsx","../src/components/Input/AmountInput.tsx","../src/components/Input/FileUpload.tsx","../src/components/Input/RadioCardGroup.tsx","../src/components/Input/Toggle.tsx","../src/components/_Avatar.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","../src/theme.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\n\ntype NativeButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'>;\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'text';\nexport type ButtonSize = 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\nexport type ButtonShape = 'default' | 'circle' | 'square';\nexport type ButtonRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface ButtonProps extends NativeButtonProps {\n variant?: ButtonVariant;\n size?: ButtonSize;\n shape?: ButtonShape;\n rounded?: ButtonRounded;\n htmlType?: 'button' | 'submit' | 'reset';\n block?: boolean;\n loading?: boolean;\n loadingText?: React.ReactNode;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n danger?: boolean;\n ripple?: boolean;\n hoverLift?: boolean;\n pressScale?: boolean;\n\n // Fine-grained color overrides (all optional)\n bgColor?: string;\n textColor?: string;\n borderColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n hoverBorderColor?: string;\n disabledBgColor?: string;\n disabledTextColor?: string;\n focusRingColor?: string;\n}\n\nconst SIZE_HEIGHT: Record<ButtonSize, number> = {\n xxsmall: 24,\n xsmall: 32,\n small: 40,\n medium: 48,\n large: 52,\n xlarge: 60,\n};\nconst SIZE_FONT: Record<ButtonSize, number> = {\n xxsmall: 11,\n xsmall: 12,\n small: 13,\n medium: 14,\n large: 15,\n xlarge: 16,\n};\nconst SIZE_PADDING: Record<ButtonSize, number> = {\n xxsmall: 8,\n xsmall: 12,\n small: 16,\n medium: 20,\n large: 24,\n xlarge: 28,\n};\nconst SIZE_GAP: Record<ButtonSize, number> = {\n xxsmall: 4,\n xsmall: 6,\n small: 6,\n medium: 8,\n large: 8,\n xlarge: 10,\n};\n\nconst ROUNDED_MAP: Record<ButtonRounded, number | string> = {\n none: 0,\n sm: 4,\n md: 6,\n lg: 8,\n xl: 12,\n full: 9999,\n};\n\nconst SHEKEL_RED = '#EC615B';\nconst SHEKEL_RED_HOVER = '#D8524D';\nconst SHEKEL_RED_DISABLED = '#F9CECC';\n\ninterface PaletteEntry {\n bg: string;\n border: string;\n color: string;\n hoverBg: string;\n hoverColor?: string;\n hoverBorder?: string;\n disabledBg: string;\n disabledColor?: string;\n focusRing: string;\n}\n\nconst palette = (danger: boolean): Record<ButtonVariant, PaletteEntry> => {\n const accent = danger ? '#C21919' : SHEKEL_RED;\n const accentHover = danger ? '#9F1313' : SHEKEL_RED_HOVER;\n const accentDisabled = danger ? '#EABABA' : SHEKEL_RED_DISABLED;\n const ring = danger ? 'rgba(194, 25, 25, 0.2)' : 'rgba(236, 97, 91, 0.2)';\n return {\n primary: {\n bg: accent,\n border: accent,\n color: '#FFFFFF',\n hoverBg: accentHover,\n hoverBorder: accentHover,\n disabledBg: accentDisabled,\n focusRing: ring,\n },\n secondary: {\n bg: '#6B7280',\n border: '#6B7280',\n color: '#FFFFFF',\n hoverBg: '#4B5563',\n hoverBorder: '#4B5563',\n disabledBg: '#D1D5DB',\n focusRing: 'rgba(107,114,128,0.2)',\n },\n outline: {\n bg: 'transparent',\n border: accent,\n color: accent,\n hoverBg: danger ? '#FDEBEB' : '#FDECEB',\n hoverBorder: accentHover,\n hoverColor: accentHover,\n disabledBg: 'transparent',\n disabledColor: accentDisabled,\n focusRing: ring,\n },\n ghost: {\n bg: '#EFF2F3',\n border: '#EFF2F3',\n color: '#181918',\n hoverBg: '#E1E4E6',\n hoverBorder: '#E1E4E6',\n disabledBg: '#F5F5F5',\n disabledColor: '#B0B0B0',\n focusRing: 'rgba(0,0,0,0.06)',\n },\n link: {\n bg: 'transparent',\n border: 'transparent',\n color: accent,\n hoverBg: 'transparent',\n hoverBorder: 'transparent',\n hoverColor: accentHover,\n disabledBg: 'transparent',\n disabledColor: accentDisabled,\n focusRing: ring,\n },\n text: {\n bg: 'transparent',\n border: 'transparent',\n color: '#181918',\n hoverBg: 'rgba(0,0,0,0.04)',\n hoverBorder: 'transparent',\n disabledBg: 'transparent',\n disabledColor: '#B0B0B0',\n focusRing: 'rgba(0,0,0,0.08)',\n },\n };\n};\n\nconst Spinner: React.FC<{ size: number }> = ({ size }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n style={{ animation: 'shekel-btn-spin 0.8s linear infinite', transformOrigin: 'center' }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'large',\n shape = 'default',\n rounded,\n htmlType = 'button',\n block,\n loading,\n loadingText,\n icon,\n iconPosition = 'left',\n danger = false,\n ripple = true,\n hoverLift = false,\n pressScale = true,\n disabled,\n className = '',\n style,\n children,\n bgColor,\n textColor,\n borderColor,\n hoverBgColor,\n hoverTextColor,\n hoverBorderColor,\n disabledBgColor,\n disabledTextColor,\n focusRingColor,\n ...props\n },\n ref\n ) => {\n const [hovered, setHovered] = useState(false);\n const [pressed, setPressed] = useState(false);\n const [focusVisible, setFocusVisible] = useState(false);\n const [ripples, setRipples] = useState<{ id: number; x: number; y: number; size: number }[]>([]);\n const btnRef = useRef<HTMLButtonElement | null>(null);\n\n const v = palette(danger)[variant];\n const height = SIZE_HEIGHT[size];\n const fontSize = SIZE_FONT[size];\n const gap = SIZE_GAP[size];\n const isIconOnly = shape === 'circle' || shape === 'square';\n const iconBoxPadding = isIconOnly ? 0 : SIZE_PADDING[size];\n const resolvedRadius =\n rounded !== undefined\n ? ROUNDED_MAP[rounded]\n : shape === 'circle'\n ? 9999\n : shape === 'square'\n ? 8\n : 8;\n\n const isDisabled = disabled || loading;\n const iconSize = Math.max(12, Math.round(fontSize * 1.2));\n\n const finalBg = isDisabled\n ? disabledBgColor ?? v.disabledBg\n : hovered\n ? hoverBgColor ?? v.hoverBg\n : bgColor ?? v.bg;\n const finalBorder = isDisabled\n ? disabledBgColor ?? v.disabledBg\n : hovered\n ? hoverBorderColor ?? v.hoverBorder ?? v.border\n : borderColor ?? v.border;\n const finalColor = isDisabled\n ? disabledTextColor ?? v.disabledColor ?? v.color\n : hovered\n ? hoverTextColor ?? v.hoverColor ?? v.color\n : textColor ?? v.color;\n\n const handleMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n setPressed(true);\n if (ripple && !isDisabled && btnRef.current) {\n const rect = btnRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const size = Math.max(rect.width, rect.height) * 2;\n const id = Date.now() + Math.random();\n setRipples((r) => [...r, { id, x, y, size }]);\n setTimeout(() => setRipples((r) => r.filter((p) => p.id !== id)), 600);\n }\n props.onMouseDown?.(e);\n };\n const handleMouseUp = (e: React.MouseEvent<HTMLButtonElement>) => {\n setPressed(false);\n props.onMouseUp?.(e);\n };\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n setHovered(true);\n props.onMouseEnter?.(e);\n };\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n setHovered(false);\n setPressed(false);\n props.onMouseLeave?.(e);\n };\n\n const transformParts: string[] = [];\n if (hoverLift && hovered && !isDisabled) transformParts.push('translateY(-1px)');\n if (pressScale && pressed && !isDisabled) transformParts.push('scale(0.97)');\n const finalTransform = transformParts.length ? transformParts.join(' ') : 'none';\n\n const boxShadow = focusVisible\n ? `0 0 0 3px ${focusRingColor ?? v.focusRing}`\n : hoverLift && hovered && !isDisabled\n ? '0 4px 12px rgba(0,0,0,0.08)'\n : 'none';\n\n return (\n <>\n <style>{`\n @keyframes shekel-btn-spin { to { transform: rotate(360deg); } }\n @keyframes shekel-btn-ripple { to { transform: scale(1); opacity: 0; } }\n `}</style>\n <button\n ref={(el) => {\n btnRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = el;\n }}\n type={htmlType}\n disabled={isDisabled}\n aria-busy={loading}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n onFocus={(e) => {\n const target = e.target as HTMLButtonElement & { matches?: (sel: string) => boolean };\n if (target.matches?.(':focus-visible')) setFocusVisible(true);\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n setFocusVisible(false);\n props.onBlur?.(e);\n }}\n className={`inline-flex items-center justify-center font-medium select-none relative overflow-hidden ${\n block ? 'w-full' : ''\n } ${isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'} ${className}`}\n style={{\n height,\n width: isIconOnly ? height : block ? '100%' : undefined,\n padding: isIconOnly ? 0 : `0 ${iconBoxPadding}px`,\n borderRadius: resolvedRadius,\n border:\n variant === 'link' || variant === 'text' ? 'none' : `1px solid ${finalBorder}`,\n backgroundColor: finalBg,\n color: finalColor,\n fontSize,\n gap,\n transform: finalTransform,\n boxShadow,\n opacity: variant === 'outline' && isDisabled ? 0.55 : 1,\n transition:\n 'background-color 180ms cubic-bezier(0.23, 1, 0.32, 1), color 150ms ease-out, border-color 180ms cubic-bezier(0.23, 1, 0.32, 1), transform 120ms cubic-bezier(0.23, 1, 0.32, 1), box-shadow 180ms ease-out',\n textDecoration: variant === 'link' && hovered && !isDisabled ? 'underline' : undefined,\n ...style,\n }}\n {...props}\n >\n {loading && iconPosition === 'left' && <Spinner size={iconSize} />}\n {!loading && icon && iconPosition === 'left' && (\n <span className=\"inline-flex items-center\" style={{ width: iconSize, height: iconSize }}>\n {icon}\n </span>\n )}\n {!isIconOnly && (loading && loadingText ? loadingText : children)}\n {isIconOnly && !loading && (icon ?? children)}\n {!loading && icon && iconPosition === 'right' && (\n <span className=\"inline-flex items-center\" style={{ width: iconSize, height: iconSize }}>\n {icon}\n </span>\n )}\n {loading && iconPosition === 'right' && <Spinner size={iconSize} />}\n\n {ripple && ripples.map((r) => (\n <span\n key={r.id}\n aria-hidden\n style={{\n position: 'absolute',\n left: r.x - r.size / 2,\n top: r.y - r.size / 2,\n width: r.size,\n height: r.size,\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n opacity: 0.25,\n pointerEvents: 'none',\n transform: 'scale(0)',\n animation: 'shekel-btn-ripple 500ms ease-out forwards',\n }}\n />\n ))}\n </button>\n </>\n );\n }\n);\nButton.displayName = 'Button';\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 detailed?: boolean;\n minHeight?: number | string;\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 = 200,\n className = '',\n selected = false,\n onClick,\n size = 'md',\n rounded = '2xl',\n detailed = false,\n minHeight = 120,\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 const variantClasses = detailed\n ? `bg-white justify-between hover:border-gray-300 ${selected ? 'border-[#EC615B]' : 'border-[#E6E6E6]'}`\n : `bg-[#FDFDFD] hover:bg-[#F4F4F4] focus:bg-[#F4F4F4] hover:border-[#181918] focus:border-[#181918] ${selected ? 'bg-[#F4F4F4] border-[#181918]' : 'border-[#EEEEEE]'}`;\n\n const activeShadow = detailed ? '0 0 0 1px #EC615B' : '0 0 0 1px #181918';\n\n return (\n <div\n className={`border flex flex-col transition-all duration-300 ease-in-out hover:-translate-y-1 cursor-pointer ${variantClasses} ${sizeClass} ${roundedClass} ${className}`}\n style={{\n width: typeof width === 'number' ? `${width}px` : width || '96px',\n minHeight: typeof minHeight === 'number' ? `${minHeight}px` : minHeight,\n boxShadow: selected ? activeShadow : '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\n ? activeShadow\n : '0 0 20px 0 rgba(0, 0, 0, 0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = selected\n ? activeShadow\n : '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n >\n {detailed ? (\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 </>\n ) : (\n <div className=\"mt-auto flex flex-col\">\n <div className=\"text-lg sm:text-xl text-[#181918] font-normal transition-colors duration-200 truncate\">\n {label}\n </div>\n <div className=\"text-2xl sm:text-3xl font-bold text-[#181918] transition-all duration-200 break-words leading-tight\">\n {valuePrefix ? `${valuePrefix} ${value}` : value}\n </div>\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';\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode;\n extra?: React.ReactNode;\n cover?: React.ReactNode;\n bordered?: boolean;\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n hoverable?: boolean;\n bodyClassName?: string;\n bodyStyle?: React.CSSProperties;\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n}\n\nconst SHADOWS: Record<NonNullable<CardProps['shadow']>, string> = {\n none: 'none',\n sm: '0 1px 2px rgba(0,0,0,0.05)',\n md: '0 2px 8px rgba(0,0,0,0.06), 0 4px 12px rgba(0,0,0,0.04)',\n lg: '0 6px 16px rgba(0,0,0,0.08), 0 3px 6px rgba(0,0,0,0.04)',\n xl: '0 12px 32px rgba(0,0,0,0.1), 0 6px 12px rgba(0,0,0,0.06)',\n};\n\nexport const Card: React.FC<CardProps> = ({\n title,\n extra,\n cover,\n bordered = true,\n shadow = 'md',\n hoverable = false,\n className = '',\n bodyClassName = '',\n bodyStyle,\n headerClassName = '',\n headerStyle,\n style,\n children,\n ...rest\n}) => {\n const [hovered, setHovered] = React.useState(false);\n const shadowValue = hoverable && hovered ? SHADOWS.lg : SHADOWS[shadow];\n\n return (\n <div\n {...rest}\n onMouseEnter={(e) => {\n if (hoverable) setHovered(true);\n rest.onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n if (hoverable) setHovered(false);\n rest.onMouseLeave?.(e);\n }}\n className={`bg-white rounded-xl overflow-hidden transition-shadow duration-200 ${\n bordered ? 'border border-[#E6E6E6]' : ''\n } ${className}`}\n style={{\n boxShadow: shadowValue,\n ...style,\n }}\n >\n {cover && <div className=\"w-full\">{cover}</div>}\n {(title || extra) && (\n <div\n className={`flex items-center justify-between gap-3 px-5 py-4 border-b border-[#F0F0F0] ${headerClassName}`}\n style={headerStyle}\n >\n {typeof title === 'string' ? (\n <h3 className=\"text-base font-semibold text-[#181918] m-0\">{title}</h3>\n ) : (\n title\n )}\n {extra && <div className=\"shrink-0\">{extra}</div>}\n </div>\n )}\n <div className={`px-5 py-5 ${bodyClassName}`} style={bodyStyle}>\n {children}\n </div>\n </div>\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 style={{ maxWidth: 'calc(100vw - 16px)' }}\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 { 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 React, {\n useState,\n useEffect,\n useRef,\n useCallback,\n ReactNode,\n CSSProperties,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport type ModalPlacement =\n | 'top-left'\n | 'top'\n | 'top-right'\n | 'left'\n | 'center'\n | 'right'\n | 'bottom-left'\n | 'bottom'\n | 'bottom-right';\n\nexport type ModalMotion = 'auto' | 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';\n\nexport type ModalBackdrop = 'normal' | 'blur' | 'none';\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n\n okText?: ReactNode;\n cancelText?: ReactNode;\n onOk?: () => void | Promise<void>;\n onCancel?: () => void;\n confirmLoading?: boolean;\n okDanger?: boolean;\n okDisabled?: boolean;\n hideCancel?: boolean;\n\n size?: ModalSize;\n width?: number | string;\n maxHeight?: number | string;\n\n /** Position on screen. `center` is the classic dead-center dialog. Sets also drive the enter animation direction. */\n placement?: ModalPlacement;\n /** Alias for placement === 'center' when set. Kept for backwards compat; placement wins if both passed. */\n centered?: boolean;\n /** Margin from the nearest viewport edge (applies to non-center placements). */\n edgeOffset?: number | string;\n /** Override the entrance/exit motion. `auto` picks based on placement. */\n motion?: ModalMotion;\n\n /** Backdrop style: normal (dark tint), blur (dark + blur), or none. */\n backdrop?: ModalBackdrop;\n\n /** Custom close icon (replaces the default ×). */\n closeIcon?: ReactNode;\n\n /** Submit on Enter when focus is inside a non-textarea field. */\n submitOnEnter?: boolean;\n\n /** Bare mode: hides the chromed header/body/footer layout and gives you a blank panel to fill however you like. */\n bare?: boolean;\n /** Remove the default 16px body padding when content wants to draw edge-to-edge (e.g. a full-bleed image header). */\n noPadding?: boolean;\n\n closable?: boolean;\n maskClosable?: boolean;\n closeOnEsc?: boolean;\n destroyOnClose?: boolean;\n lockScroll?: boolean;\n\n bgColor?: string;\n overlayColor?: string;\n borderRadius?: number | string;\n shadow?: string;\n animationDuration?: number;\n zIndex?: number;\n\n className?: string;\n style?: CSSProperties;\n headerClassName?: string;\n headerStyle?: CSSProperties;\n bodyClassName?: string;\n bodyStyle?: CSSProperties;\n footerClassName?: string;\n footerStyle?: CSSProperties;\n\n ariaLabel?: string;\n ariaLabelledBy?: string;\n\n afterOpen?: () => void;\n afterClose?: () => void;\n\n getContainer?: () => HTMLElement;\n}\n\nconst SIZE_WIDTHS: Record<ModalSize, string> = {\n sm: '400px',\n md: '480px',\n lg: '560px',\n xl: '640px',\n '2xl': '768px',\n full: '100vw',\n};\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], area[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]';\n\nconst CloseIcon: React.FC<{ size?: number; color?: string }> = ({ size = 20, color = '#181918' }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6L6 18\" stroke={color} strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst DefaultButton: React.FC<\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n variant?: 'primary' | 'outline' | 'danger';\n loading?: boolean;\n }\n> = ({ variant = 'outline', loading, children, className = '', style, ...props }) => {\n const styles: Record<string, CSSProperties> = {\n primary: {\n backgroundColor: props.disabled ? '#F9CECC' : '#EC615B',\n color: '#FFFFFF',\n borderColor: props.disabled ? '#F9CECC' : '#EC615B',\n },\n danger: {\n backgroundColor: props.disabled ? '#F9CECC' : '#C21919',\n color: '#FFFFFF',\n borderColor: props.disabled ? '#F9CECC' : '#C21919',\n },\n outline: {\n backgroundColor: '#FFFFFF',\n color: '#181918',\n borderColor: '#D9D9D9',\n },\n };\n return (\n <button\n {...props}\n disabled={props.disabled || loading}\n className={`inline-flex items-center justify-center gap-2 px-4 h-10 rounded-lg text-sm font-medium border transition-colors ${\n props.disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer hover:opacity-90'\n } ${className}`}\n style={{ ...styles[variant], ...style }}\n >\n {loading && (\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n style={{ animation: 'shekel-modal-spin 0.8s linear infinite', transformOrigin: 'center' }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.3\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n )}\n {children}\n </button>\n );\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n title,\n description,\n children,\n footer,\n okText = 'OK',\n cancelText = 'Cancel',\n onOk,\n onCancel,\n confirmLoading,\n okDanger,\n okDisabled,\n hideCancel,\n size = 'md',\n width,\n maxHeight,\n placement,\n centered = true,\n edgeOffset = 40,\n motion = 'auto',\n backdrop = 'normal',\n closeIcon,\n submitOnEnter = false,\n bare = false,\n noPadding = false,\n closable = true,\n maskClosable = true,\n closeOnEsc = true,\n destroyOnClose = false,\n lockScroll = true,\n bgColor = '#FFFFFF',\n overlayColor = 'rgba(0, 0, 0, 0.45)',\n borderRadius = 16,\n shadow = '0 6px 16px rgba(0,0,0,0.08), 0 9px 28px 8px rgba(0,0,0,0.05)',\n animationDuration = 200,\n zIndex = 1000,\n className = '',\n style,\n headerClassName = '',\n headerStyle,\n bodyClassName = '',\n bodyStyle,\n footerClassName = '',\n footerStyle,\n ariaLabel,\n ariaLabelledBy,\n afterOpen,\n afterClose,\n getContainer,\n}) => {\n const [mounted, setMounted] = useState<boolean>(open);\n const [entered, setEntered] = useState<boolean>(false);\n const [internalConfirmLoading, setInternalConfirmLoading] = useState(false);\n\n const overlayRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const titleId = useRef(`shekel-modal-title-${Math.random().toString(36).slice(2, 8)}`);\n const prevActiveEl = useRef<HTMLElement | null>(null);\n\n const requestClose = useCallback(() => {\n onCancel?.();\n onClose?.();\n }, [onCancel, onClose]);\n\n useEffect(() => {\n if (open) {\n prevActiveEl.current = (typeof document !== 'undefined'\n ? document.activeElement\n : null) as HTMLElement | null;\n setMounted(true);\n let raf2: number | undefined;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => {\n setEntered(true);\n afterOpen?.();\n });\n });\n return () => {\n cancelAnimationFrame(raf1);\n if (raf2) cancelAnimationFrame(raf2);\n };\n } else {\n if (!mounted) return;\n setEntered(false);\n const t = setTimeout(() => {\n setMounted(false);\n afterClose?.();\n if (prevActiveEl.current && typeof prevActiveEl.current.focus === 'function') {\n prevActiveEl.current.focus();\n }\n }, animationDuration);\n return () => clearTimeout(t);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, animationDuration]);\n\n useEffect(() => {\n if (!lockScroll || !mounted) return;\n const body = document.body;\n const prevOverflow = body.style.overflow;\n const prevPaddingRight = body.style.paddingRight;\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n if (scrollbarWidth > 0) body.style.paddingRight = `${scrollbarWidth}px`;\n body.style.overflow = 'hidden';\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPaddingRight;\n };\n }, [mounted, lockScroll]);\n\n useEffect(() => {\n if (!mounted) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (closeOnEsc && e.key === 'Escape') {\n e.stopPropagation();\n requestClose();\n return;\n }\n if (e.key !== 'Tab' || !contentRef.current) return;\n const focusables = contentRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement as HTMLElement | null;\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [mounted, closeOnEsc, requestClose]);\n\n useEffect(() => {\n if (!entered || !contentRef.current) return;\n const focusables = contentRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n const first = focusables[0];\n if (first) first.focus();\n else contentRef.current.focus();\n }, [entered]);\n\n const handleMaskClick = (e: React.MouseEvent) => {\n if (!maskClosable) return;\n if (e.target === overlayRef.current) requestClose();\n };\n\n const handleOk = async () => {\n if (!onOk) return;\n try {\n const maybe = onOk();\n if (maybe && typeof (maybe as Promise<void>).then === 'function') {\n setInternalConfirmLoading(true);\n await maybe;\n }\n } finally {\n setInternalConfirmLoading(false);\n }\n };\n\n if (!mounted) return null;\n void destroyOnClose; // reserved for future use\n\n const resolvedPlacement: ModalPlacement = placement ?? (centered ? 'center' : 'top');\n const placementAlignment: Record<ModalPlacement, { justify: string; align: string }> = {\n 'top-left': { justify: 'flex-start', align: 'flex-start' },\n top: { justify: 'center', align: 'flex-start' },\n 'top-right': { justify: 'flex-end', align: 'flex-start' },\n left: { justify: 'flex-start', align: 'center' },\n center: { justify: 'center', align: 'center' },\n right: { justify: 'flex-end', align: 'center' },\n 'bottom-left': { justify: 'flex-start', align: 'flex-end' },\n bottom: { justify: 'center', align: 'flex-end' },\n 'bottom-right': { justify: 'flex-end', align: 'flex-end' },\n };\n const { justify, align } = placementAlignment[resolvedPlacement];\n\n const autoMotionForPlacement: Record<ModalPlacement, ModalMotion> = {\n 'top-left': 'slide-down',\n top: 'slide-down',\n 'top-right': 'slide-down',\n left: 'slide-right',\n center: 'scale',\n right: 'slide-left',\n 'bottom-left': 'slide-up',\n bottom: 'slide-up',\n 'bottom-right': 'slide-up',\n };\n const resolvedMotion: ModalMotion = motion === 'auto' ? autoMotionForPlacement[resolvedPlacement] : motion;\n\n const motionTransforms: Record<Exclude<ModalMotion, 'auto'>, { closed: string; open: string }> = {\n fade: { closed: 'none', open: 'none' },\n scale: { closed: 'translateY(-10px) scale(0.96)', open: 'translateY(0) scale(1)' },\n 'slide-up': { closed: 'translateY(20px)', open: 'translateY(0)' },\n 'slide-down': { closed: 'translateY(-20px)', open: 'translateY(0)' },\n 'slide-left': { closed: 'translateX(20px)', open: 'translateX(0)' },\n 'slide-right': { closed: 'translateX(-20px)', open: 'translateX(0)' },\n };\n const motionKey = (resolvedMotion === 'auto' ? 'scale' : resolvedMotion) as Exclude<ModalMotion, 'auto'>;\n const { closed: closedTransform, open: openTransform } = motionTransforms[motionKey];\n\n const resolvedEdgeOffset =\n typeof edgeOffset === 'number' ? `${edgeOffset}px` : edgeOffset;\n\n const resolvedBackdrop: CSSProperties =\n backdrop === 'none'\n ? { backgroundColor: 'transparent' }\n : backdrop === 'blur'\n ? {\n backgroundColor: overlayColor,\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)' as any,\n }\n : { backgroundColor: overlayColor };\n\n const resolvedWidth = width ?? SIZE_WIDTHS[size];\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n const resolvedMaxHeight =\n maxHeight !== undefined\n ? typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n : size === 'full'\n ? '100vh'\n : 'calc(100vh - 40px)';\n\n const showDefaultFooter = footer === undefined && (onOk || onCancel);\n const resolvedFooter =\n footer === null || footer === false\n ? null\n : footer === undefined\n ? showDefaultFooter\n ? (\n <>\n {!hideCancel && (\n <DefaultButton variant=\"outline\" onClick={() => requestClose()}>\n {cancelText}\n </DefaultButton>\n )}\n {onOk && (\n <DefaultButton\n variant={okDanger ? 'danger' : 'primary'}\n onClick={handleOk}\n disabled={okDisabled}\n loading={confirmLoading ?? internalConfirmLoading}\n >\n {okText}\n </DefaultButton>\n )}\n </>\n )\n : null\n : footer;\n\n const labelId = ariaLabelledBy ?? (typeof title === 'string' ? titleId.current : undefined);\n\n const container =\n getContainer ? getContainer() : typeof document !== 'undefined' ? document.body : null;\n if (!container) return null;\n\n const modalNode = (\n <div\n ref={overlayRef}\n onMouseDown={handleMaskClick}\n role=\"presentation\"\n aria-hidden={!entered}\n className=\"shekel-modal-overlay\"\n style={{\n position: 'fixed',\n inset: 0,\n zIndex,\n display: 'flex',\n alignItems: align,\n justifyContent: justify,\n padding: size === 'full' ? 0 : resolvedEdgeOffset,\n opacity: entered ? 1 : 0,\n transition: `opacity ${animationDuration}ms ease-out, backdrop-filter ${animationDuration}ms ease-out`,\n overflowY: 'auto',\n willChange: 'opacity',\n ...resolvedBackdrop,\n }}\n >\n <style>{`\n @keyframes shekel-modal-spin { to { transform: rotate(360deg); } }\n @media (max-width: 640px) {\n .shekel-modal-overlay { padding: 12px !important; }\n .shekel-modal-panel { max-height: calc(100vh - 24px) !important; }\n .shekel-modal-panel .shekel-modal-header { padding-left: 16px !important; padding-right: 16px !important; }\n .shekel-modal-panel .shekel-modal-body { padding-left: 16px !important; padding-right: 16px !important; }\n .shekel-modal-panel .shekel-modal-footer { padding-left: 16px !important; padding-right: 16px !important; flex-direction: column-reverse !important; gap: 8px !important; }\n .shekel-modal-panel .shekel-modal-footer > * { width: 100% !important; }\n }\n `}</style>\n <div\n ref={contentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel}\n aria-labelledby={labelId}\n tabIndex={-1}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (\n submitOnEnter &&\n e.key === 'Enter' &&\n !e.shiftKey &&\n (e.target as HTMLElement).tagName !== 'TEXTAREA' &&\n onOk\n ) {\n e.preventDefault();\n handleOk();\n }\n }}\n className={`shekel-modal-panel ${className}`}\n style={{\n position: 'relative',\n width: '100%',\n maxWidth: resolvedWidth,\n maxHeight: resolvedMaxHeight,\n backgroundColor: bgColor,\n borderRadius: size === 'full' ? 0 : resolvedRadius,\n boxShadow: shadow,\n display: 'flex',\n flexDirection: 'column',\n opacity: entered ? 1 : 0,\n transform: entered ? openTransform : closedTransform,\n transition: `opacity ${animationDuration}ms cubic-bezier(0.23, 1, 0.32, 1), transform ${animationDuration}ms cubic-bezier(0.23, 1, 0.32, 1)`,\n outline: 'none',\n ...style,\n }}\n >\n {bare ? (\n <>\n {closable && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={requestClose}\n className=\"absolute top-3 right-3 z-10 flex items-center justify-center w-8 h-8 rounded-md bg-white/80 hover:bg-white shadow-sm transition-colors\"\n >\n {closeIcon ?? <CloseIcon />}\n </button>\n )}\n <div\n className={`flex-1 overflow-auto ${bodyClassName}`}\n style={bodyStyle}\n >\n {children}\n </div>\n </>\n ) : (\n <>\n {(title || closable) && (\n <div\n className={`shekel-modal-header flex items-start justify-between gap-4 px-6 pt-5 pb-3 ${headerClassName}`}\n style={headerStyle}\n >\n <div className=\"min-w-0 flex-1\">\n {title && (\n <div id={labelId} className=\"text-lg font-semibold text-[#181918]\">\n {title}\n </div>\n )}\n {description && (\n <div className=\"text-sm text-[#595959] mt-1\">{description}</div>\n )}\n </div>\n {closable && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={requestClose}\n className=\"shrink-0 flex items-center justify-center w-8 h-8 rounded-md hover:bg-[#F5F5F5] transition-colors\"\n >\n {closeIcon ?? <CloseIcon />}\n </button>\n )}\n </div>\n )}\n\n <div\n className={`shekel-modal-body flex-1 overflow-auto ${noPadding ? '' : 'px-6'} ${title || closable ? '' : noPadding ? '' : 'pt-5'} ${\n resolvedFooter || noPadding ? '' : 'pb-5'\n } ${bodyClassName}`}\n style={bodyStyle}\n >\n {children}\n </div>\n\n {resolvedFooter && (\n <div\n className={`shekel-modal-footer flex items-center justify-end gap-2 px-6 py-4 ${footerClassName}`}\n style={footerStyle}\n >\n {resolvedFooter}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n\n return createPortal(modalNode, container);\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: ReactNode;\n description?: ReactNode;\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';\n className?: string;\n style?: CSSProperties;\n\n // Colors\n activeColor?: string;\n inactiveColor?: string;\n errorColor?: string;\n textColor?: string;\n activeTextColor?: string;\n\n // Structural\n showConnector?: boolean;\n connectorColor?: string;\n gap?: number | string;\n iconSize?: number;\n checkSize?: number;\n borderWidth?: number;\n checkStrokeWidth?: number;\n\n // Events\n onStepClick?: (index: number) => void;\n}\n\nconst CheckIcon: FC<{ size: number; color: string; strokeWidth?: number }> = ({ size, color, strokeWidth = 2 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 12.5l4.5 4.5L19 7.5\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst XIcon: FC<{ size: number; color: string; strokeWidth?: number }> = ({ size, color, strokeWidth = 2 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" stroke={color} strokeWidth={strokeWidth} strokeLinecap=\"round\" />\n </svg>\n);\n\nexport const Steps: FC<StepsProps> = ({\n items,\n current = 0,\n direction = 'vertical',\n size = 'md',\n className = '',\n style,\n activeColor = '#EC615B',\n inactiveColor = '#101828',\n errorColor = '#C21919',\n textColor = '#494B4D',\n activeTextColor = '#181918',\n showConnector = false,\n connectorColor,\n gap,\n iconSize: iconSizeProp,\n checkSize: checkSizeProp,\n borderWidth: borderWidthProp,\n checkStrokeWidth: checkStrokeWidthProp,\n onStepClick,\n}) => {\n const iconSize = iconSizeProp ?? (size === 'sm' ? 28 : size === 'lg' ? 44 : 36);\n const checkSize = checkSizeProp ?? (size === 'sm' ? 18 : size === 'lg' ? 30 : 24);\n const iconBorderWidth = borderWidthProp ?? 2;\n const checkStrokeWidth = checkStrokeWidthProp ?? 2;\n const titleSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 18;\n const descriptionSize = size === 'sm' ? 12 : size === 'lg' ? 14 : 13;\n const resolvedGap =\n gap !== undefined ? (typeof gap === 'number' ? `${gap}px` : gap) : direction === 'vertical' ? '28px' : '16px';\n\n const getStatus = (index: number, item: StepItem): NonNullable<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 colorForStatus = (status: StepItem['status']): string => {\n if (status === 'error') return errorColor;\n if (status === 'finish') return activeColor;\n if (status === 'process') return inactiveColor;\n return inactiveColor;\n };\n\n const renderIcon = (status: StepItem['status'], custom?: ReactNode): ReactNode => {\n if (custom) return custom;\n if (status === 'error') return <XIcon size={checkSize} color={errorColor} strokeWidth={checkStrokeWidth} />;\n if (status === 'finish') return <CheckIcon size={checkSize} color={activeColor} strokeWidth={checkStrokeWidth} />;\n if (status === 'process') return <CheckIcon size={checkSize} color={inactiveColor} strokeWidth={checkStrokeWidth} />;\n return null;\n };\n\n const isVertical = direction === 'vertical';\n\n const renderStep = (item: StepItem, index: number) => {\n const status = getStatus(index, item);\n const circleColor = colorForStatus(status);\n const isLast = index === items.length - 1;\n const clickable = !!onStepClick;\n\n return (\n <div\n key={index}\n className={`flex ${isVertical ? 'flex-row' : 'flex-col items-center'} ${clickable ? 'cursor-pointer' : ''}`}\n onClick={clickable ? () => onStepClick!(index) : undefined}\n style={!isLast ? { marginBottom: isVertical ? resolvedGap : 0, marginRight: !isVertical ? resolvedGap : 0 } : undefined}\n >\n <div className={`flex ${isVertical ? 'flex-col items-center' : 'flex-row items-center'} shrink-0`}>\n <div\n className=\"rounded-full flex items-center justify-center transition-colors duration-200 shrink-0\"\n style={{\n width: iconSize,\n height: iconSize,\n border: `${iconBorderWidth}px solid ${circleColor}`,\n backgroundColor: 'transparent',\n }}\n >\n {renderIcon(status, item.icon)}\n </div>\n {showConnector && !isLast && (\n <div\n className={isVertical ? 'w-px' : 'h-px'}\n style={{\n backgroundColor: connectorColor ?? '#E6E6E6',\n flex: 1,\n minHeight: isVertical ? 16 : undefined,\n minWidth: !isVertical ? 16 : undefined,\n margin: isVertical ? '6px 0' : '0 6px',\n }}\n />\n )}\n </div>\n <div\n className={isVertical ? 'flex-1 pl-4' : 'pt-2 text-center'}\n style={{ paddingBottom: isVertical && !isLast ? 2 : 0 }}\n >\n <div\n className=\"font-medium transition-colors duration-200\"\n style={{\n fontSize: titleSize,\n lineHeight: `${iconSize}px`,\n color: status === 'wait' ? textColor : activeTextColor,\n }}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className=\"transition-colors duration-200\"\n style={{\n fontSize: descriptionSize,\n color: '#8C8C8C',\n marginTop: 2,\n }}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n );\n };\n\n return (\n <div\n className={`flex ${isVertical ? 'flex-col' : 'flex-row items-start'} ${className}`}\n style={style}\n >\n {items.map(renderStep)}\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 React, { useState } from 'react';\nimport type { FC, ChangeEvent, CSSProperties, ReactNode } from 'react';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean, event?: ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'outline' | 'filled';\n label?: ReactNode;\n labelClassName?: string;\n labelStyle?: CSSProperties;\n labelPosition?: 'left' | 'right';\n className?: string;\n id?: string;\n name?: string;\n value?: string;\n accentColor?: string;\n borderColor?: string;\n boxBgColor?: string;\n boxRadius?: number | string;\n style?: CSSProperties;\n required?: boolean;\n autoFocus?: boolean;\n tabIndex?: number;\n}\n\nconst SIZE = {\n sm: { box: 16, icon: 10 },\n md: { box: 20, icon: 14 },\n lg: { box: 24, icon: 16 },\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 = 'outline',\n label,\n labelClassName = '',\n labelStyle,\n labelPosition = 'right',\n className = '',\n id,\n name,\n value,\n accentColor = '#EC615B',\n borderColor = '#181918',\n boxBgColor = '#FFFFFF',\n boxRadius = 6,\n style,\n required,\n autoFocus,\n tabIndex,\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? !!controlledChecked : internalChecked;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const active = checked || indeterminate;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e.target.checked, e);\n };\n\n const dims = SIZE[size];\n const boxRad = typeof boxRadius === 'number' ? `${boxRadius}px` : boxRadius;\n const isFilled = variant === 'filled';\n const activeBg = isFilled ? accentColor : boxBgColor;\n const activeBorder = accentColor;\n\n const boxStyle: CSSProperties = {\n width: dims.box,\n height: dims.box,\n borderRadius: boxRad,\n border: `1.5px solid ${active ? activeBorder : borderColor}`,\n backgroundColor: disabled ? '#F5F5F5' : active ? activeBg : boxBgColor,\n transition: 'all 0.15s ease-out',\n };\n\n const iconColor = isFilled ? '#FFFFFF' : accentColor;\n\n const box = (\n <span\n aria-hidden\n className=\"relative inline-flex items-center justify-center shrink-0\"\n style={boxStyle}\n >\n <input\n type=\"checkbox\"\n id={inputId}\n name={name}\n value={value}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n required={required}\n autoFocus={autoFocus}\n tabIndex={tabIndex}\n className=\"absolute inset-0 w-full h-full opacity-0 m-0 p-0 cursor-inherit\"\n style={{ appearance: 'none' }}\n />\n <span\n className=\"absolute inset-0 flex items-center justify-center pointer-events-none transition-opacity duration-150 ease-out\"\n style={{\n opacity: indeterminate || checked ? 1 : 0,\n transform: indeterminate || checked ? 'scale(1)' : 'scale(0.6)',\n transition: 'opacity 150ms ease-out, transform 150ms ease-out',\n }}\n >\n {indeterminate ? (\n <svg width={dims.icon} height={dims.icon} viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M3 8h10\" stroke={iconColor} strokeWidth=\"2.2\" strokeLinecap=\"round\" />\n </svg>\n ) : (\n <svg width={dims.icon} height={dims.icon} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3 8.5l3.2 3.2L13 5\"\n stroke={iconColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </span>\n );\n\n const labelEl = label ? (\n <span className={`select-none ${labelClassName}`} style={{ color: '#181918', ...labelStyle }}>\n {label}\n </span>\n ) : null;\n\n return (\n <label\n htmlFor={inputId}\n className={`inline-flex items-center gap-2 align-middle ${\n disabled ? 'cursor-not-allowed opacity-60' : 'cursor-pointer'\n } ${className}`}\n style={style}\n onMouseDown={(e) => {\n // Prevent text selection / scroll-into-view from stealing layout\n if (e.detail > 1) e.preventDefault();\n }}\n >\n {labelPosition === 'left' && labelEl}\n {box}\n {labelPosition === 'right' && labelEl}\n </label>\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';\n\nexport const SHEKEL_DEFAULTS = {\n accent: '#EC615B',\n error: '#C21919',\n warning: '#FAAD14',\n border: '#D9D9D9',\n filledBorder: '#181918',\n text: '#181918',\n placeholder: '#8C8C8C',\n addonBg: '#FAFAFA',\n disabledBg: '#F5F5F5',\n hoverBg: 'rgba(0, 0, 0, 0.04)',\n};\n\nexport const hexWithAlpha = (hex: string, alpha: number): string => {\n if (hex.startsWith('rgb')) return hex;\n const h = hex.replace('#', '');\n const full = h.length === 3 ? h.split('').map((c) => c + c).join('') : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nexport interface ErrorIconProps {\n color?: string;\n size?: number;\n className?: string;\n}\n\nexport const ErrorIcon: React.FC<ErrorIconProps> = ({ color = '#C21919', size = 14, className = '' }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden=\"true\"\n >\n <path\n d=\"M6.9974 9.33464V7.0013M6.9974 4.66797H7.00323M12.8307 7.0013C12.8307 10.223 10.2191 12.8346 6.9974 12.8346C3.77573 12.8346 1.16406 10.223 1.16406 7.0013C1.16406 3.77964 3.77573 1.16797 6.9974 1.16797C10.2191 1.16797 12.8307 3.77964 12.8307 7.0013Z\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha as sharedHexWithAlpha, ErrorIcon } from './_theme';\n\ntype NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'>;\n\nexport interface InputProps extends NativeInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n addonBefore?: React.ReactNode;\n addonAfter?: React.ReactNode;\n allowClear?: boolean;\n status?: 'error' | 'warning';\n wrapperClassName?: string;\n wrapperStyle?: React.CSSProperties;\n onClear?: () => void;\n control?: Control<any>;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n addonBackgroundColor?: string;\n}\n\nconst hexWithAlpha = sharedHexWithAlpha;\n\nconst InputBase = React.forwardRef<HTMLInputElement, Omit<InputProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n allowClear,\n status,\n className = '',\n style,\n wrapperClassName = '',\n wrapperStyle,\n onClear,\n required,\n disabled,\n readOnly,\n id,\n value,\n defaultValue,\n onChange,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n addonBackgroundColor = '#FAFAFA',\n ...rest\n } = props;\n\n const [innerValue, setInnerValue] = React.useState<string | number | readonly string[] | undefined>(\n defaultValue\n );\n const isControlled = value !== undefined;\n const displayValue = isControlled ? value : innerValue;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n\n const isError = !!error || status === 'error';\n const isWarning = status === 'warning';\n\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInnerValue(e.target.value);\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) setInnerValue('');\n const synthetic = {\n target: { value: '' },\n currentTarget: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(synthetic);\n onClear?.();\n };\n\n const hasValue =\n displayValue !== undefined && displayValue !== '' && displayValue !== null;\n\n const resolvedBorder = isError\n ? errorColor\n : isWarning\n ? '#FAAD14'\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const focusShadow = isError\n ? hexWithAlpha(errorColor, 0.1)\n : isWarning\n ? 'rgba(250,173,20,0.1)'\n : hexWithAlpha(accentColor, 0.2);\n\n const themeVars = {\n '--shekel-accent': accentColor,\n '--shekel-border': resolvedBorder,\n '--shekel-focus-shadow': focusShadow,\n } as React.CSSProperties;\n\n const borderBase =\n 'border-[color:var(--shekel-border)] hover:border-[color:var(--shekel-accent)] focus-within:border-[color:var(--shekel-accent)]';\n const shadowBase = 'focus-within:shadow-[0_0_0_2px_var(--shekel-focus-shadow)]';\n const disabledClasses = disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white';\n\n const addonClasses = 'flex items-center px-3 text-sm border border-[color:var(--shekel-border)]';\n const addonStyle: React.CSSProperties = {\n backgroundColor: addonBackgroundColor,\n color: '#181918',\n whiteSpace: 'nowrap',\n };\n\n const showClear = allowClear && hasValue && !disabled && !readOnly;\n\n return (\n <div className=\"w-full\" style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className={`flex w-full ${wrapperClassName}`} style={wrapperStyle}>\n {addonBefore && (\n <div\n className={`${addonClasses} border-r-0 rounded-l-[12px]`}\n style={addonStyle}\n >\n {addonBefore}\n </div>\n )}\n <div\n className={`flex items-center flex-1 min-w-0 border transition-all duration-200 ${borderBase} ${shadowBase} ${disabledClasses} ${\n addonBefore ? 'rounded-l-none' : 'rounded-l-[12px]'\n } ${addonAfter ? 'rounded-r-none' : 'rounded-r-[12px]'}`}\n style={{ height: 44 }}\n >\n {prefix && (\n <span className=\"pl-3 flex items-center text-[#181918] shrink-0\">{prefix}</span>\n )}\n <input\n ref={ref}\n id={inputId}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n value={displayValue as any}\n onChange={handleChange}\n className={`flex-1 min-w-0 h-full bg-transparent outline-none text-sm text-[#181918] placeholder:text-[#8C8C8C] ${className}`}\n style={{\n padding: '4px 11px',\n paddingLeft: prefix ? 8 : 11,\n paddingRight: suffix || showClear ? 8 : 11,\n ...style,\n }}\n {...rest}\n />\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-5 h-5 mr-2 text-[#BFBFBF] hover:text-[#595959] transition-colors shrink-0\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path\n d=\"M4 4l4 4M8 4l-4 4\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n {suffix && (\n <span className=\"pr-3 flex items-center text-[#181918] shrink-0\">{suffix}</span>\n )}\n </div>\n {addonAfter && (\n <div\n className={`${addonClasses} border-l-0 rounded-r-[12px]`}\n style={addonStyle}\n >\n {addonAfter}\n </div>\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nInputBase.displayName = 'InputBase';\n\nconst ControlledInput: React.FC<\n InputProps & { control: NonNullable<InputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <InputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(e) => {\n field.onChange(e);\n rest.onChange?.(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n rest.onBlur?.(e);\n }}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ 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 }\n);\nInput.displayName = 'Input';\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { Input } from './Input';\nimport type { InputProps } from './Input';\n\nexport interface PasswordInputProps extends Omit<InputProps, 'type' | 'suffix' | 'control'> {\n control?: Control<any>;\n visibilityToggle?: boolean;\n}\n\nconst EyeIcon: React.FC<{ visible: boolean }> = ({ visible }) =>\n visible ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.7\" />\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M9.88 9.88a3 3 0 104.24 4.24M10.73 5.08A10.43 10.43 0 0112 5c6.5 0 10 7 10 7a13.16 13.16 0 01-1.67 2.68M6.61 6.61A13.53 13.53 0 002 12s3.5 7 10 7a9.74 9.74 0 005.39-1.61\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2 2l20 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n\nconst PasswordInputBase = React.forwardRef<HTMLInputElement, Omit<PasswordInputProps, 'control'>>(\n ({ visibilityToggle = true, ...props }, ref) => {\n const [visible, setVisible] = React.useState(false);\n\n const toggle = (\n <button\n type=\"button\"\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? 'Hide password' : 'Show password'}\n tabIndex={-1}\n className=\"flex items-center justify-center text-[#8C8C8C] hover:text-[#181918] transition-colors\"\n >\n <EyeIcon visible={visible} />\n </button>\n );\n\n const isError = !!props.error;\n const errColor = props.errorColor ?? '#C21919';\n return (\n <>\n <style>{`\n .shekel-password-input::placeholder {\n transform: translateY(-2px);\n }\n `}</style>\n <Input\n ref={ref}\n {...props}\n type={visible ? 'text' : 'password'}\n suffix={visibilityToggle ? toggle : undefined}\n className={`shekel-password-input placeholder:text-sm placeholder:tracking-normal ${props.className ?? ''}`}\n style={{\n fontSize: visible ? undefined : 20,\n letterSpacing: visible ? 'normal' : '0.15em',\n color: isError && !visible ? errColor : undefined,\n caretColor: isError ? errColor : undefined,\n ...props.style,\n }}\n />\n </>\n );\n }\n);\nPasswordInputBase.displayName = 'PasswordInputBase';\n\nconst ControlledPasswordInput: React.FC<\n PasswordInputProps & { control: NonNullable<PasswordInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PasswordInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(e) => {\n field.onChange(e);\n rest.onChange?.(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n rest.onBlur?.(e);\n }}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>(\n ({ 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 }\n);\nPasswordInput.displayName = 'PasswordInput';\n","import React, { useRef, useState, useEffect, KeyboardEvent, ClipboardEvent } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\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 boxClassName?: string;\n showSeparator?: boolean;\n control?: Control<any>;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n boxWidth?: number | string;\n boxHeight?: number | string;\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 boxClassName = '',\n showSeparator = true,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n boxWidth = 63,\n boxHeight = 44,\n}) => {\n const [otp, setOtp] = useState<string[]>(Array(length).fill(''));\n const inputRefs = useRef<(HTMLInputElement | 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 } else {\n setOtp(Array(length).fill(''));\n }\n }, [value, length]);\n\n const handleChange = (index: number, val: string) => {\n if (val && !/^\\d+$/.test(val)) return;\n const newOtp = [...otp];\n newOtp[index] = val.slice(-1);\n setOtp(newOtp);\n const otpString = newOtp.join('');\n onChange?.(otpString);\n if (val && index < length - 1) inputRefs.current[index + 1]?.focus();\n if (newOtp.every((digit) => digit !== '')) onComplete?.(otpString);\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 } else if (e.key === 'ArrowLeft' && index > 0) {\n inputRefs.current[index - 1]?.focus();\n } else if (e.key === 'ArrowRight' && index < length - 1) {\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 if (!/^\\d+$/.test(pastedData)) return;\n const pastedArray = pastedData.split('').slice(0, length);\n const newOtp = [...pastedArray, ...Array(length - pastedArray.length).fill('')];\n setOtp(newOtp);\n const otpString = newOtp.join('');\n onChange?.(otpString);\n const nextIndex = Math.min(pastedArray.length, length - 1);\n inputRefs.current[nextIndex]?.focus();\n if (newOtp.every((digit) => digit !== '')) onComplete?.(otpString);\n };\n\n const resolvedBoxBorder = (filled: boolean) =>\n error ? errorColor : filled ? filledBorderColor : borderColor;\n const focusShadow = error ? hexWithAlpha(errorColor, 0.1) : hexWithAlpha(accentColor, 0.2);\n const boxBaseClass =\n 'border-[color:var(--shekel-box-border)] hover:border-[color:var(--shekel-accent)] focus-within:border-[color:var(--shekel-accent)]';\n const boxShadow = 'focus-within:shadow-[0_0_0_2px_var(--shekel-focus-shadow)]';\n\n return (\n <div className=\"w-full\">\n <div\n className={`flex flex-nowrap gap-2 justify-center w-full ${className}`}\n onBlur={onBlur}\n >\n {otp.map((digit, index) => (\n <React.Fragment key={index}>\n <div\n className={`flex-1 min-w-0 border rounded-[12px] transition-all duration-200 ${boxBaseClass} ${boxShadow} ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white'\n } ${boxClassName}`}\n style={{\n maxWidth: typeof boxWidth === 'number' ? `${boxWidth}px` : boxWidth,\n height: typeof boxHeight === 'number' ? `${boxHeight}px` : boxHeight,\n aspectRatio: '63 / 44',\n ['--shekel-box-border' as any]: resolvedBoxBorder(digit !== ''),\n ['--shekel-accent' as any]: accentColor,\n ['--shekel-focus-shadow' as any]: focusShadow,\n }}\n >\n <input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\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 inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n className=\"w-full h-full bg-transparent outline-none text-center text-lg font-semibold text-[#181918]\"\n />\n </div>\n {showSeparator && index === Math.floor(length / 2) - 1 && (\n <div className=\"flex items-center justify-center shrink-0 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 gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n\nconst ControlledOTPInput: React.FC<\n OTPInputProps & { control: NonNullable<OTPInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, errorMessage: errorMessageProp, ...rest }) => {\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, useRef } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\ninterface CountryCodeSelectProps {\n value: string;\n onChange: (value: string) => void;\n options: PhoneCodeOption[];\n disabled?: boolean;\n error?: boolean;\n accentColor: string;\n errorColor: string;\n}\n\nconst CountryCodeSelect: React.FC<CountryCodeSelectProps> = ({\n value,\n onChange,\n options,\n disabled,\n error,\n accentColor,\n errorColor,\n}) => {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n setActiveIndex(-1);\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n useEffect(() => {\n if (open) setActiveIndex(options.findIndex((o) => o.value === value));\n }, [open, value, options]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n setOpen(false);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(options.length - 1, i + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(0, i - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (activeIndex >= 0) {\n onChange(options[activeIndex].value);\n setOpen(false);\n }\n }\n };\n\n const selected = options.find((o) => o.value === value) ?? options[0];\n const borderColor = error ? errorColor : open ? accentColor : '#D9D9D9';\n const triggerStyle: React.CSSProperties = {\n height: 44,\n borderColor,\n boxShadow: open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined,\n };\n const hasAnyFlag = options.some((o) => !!o.flag);\n const triggerWidth = hasAnyFlag ? 108 : 85;\n\n return (\n <div ref={wrapperRef} className=\"relative\" style={{ width: triggerWidth }}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={`flex items-center justify-between w-full bg-[#FAFAFA] border rounded-[12px] pl-3 pr-2 text-sm text-[#181918] transition-all duration-200 ${\n disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\n }`}\n style={triggerStyle}\n >\n <span className=\"flex items-center min-w-0 gap-1.5\">\n {selected?.flag && (\n <img\n src={selected.flag}\n alt=\"\"\n aria-hidden\n className=\"shrink-0 object-cover rounded-full\"\n style={{ width: 22, height: 22 }}\n />\n )}\n <span className=\"truncate\">{selected?.label ?? value}</span>\n </span>\n <span\n className={`shrink-0 ml-1 flex items-center justify-center text-[#8C8C8C] transition-transform duration-200 ${\n open ? 'rotate-180' : ''\n }`}\n style={{ width: 12, height: 12 }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M2.5 4.5l3.5 3.5 3.5-3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </button>\n {open && (\n <div\n role=\"listbox\"\n className=\"absolute left-0 top-full z-50 bg-white overflow-auto max-h-60\"\n style={{\n width: hasAnyFlag ? 180 : 120,\n marginTop: 4,\n padding: 4,\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n }}\n >\n {options.map((opt, i) => {\n const isSelected = opt.value === value;\n const isActive = i === activeIndex;\n return (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => {\n onChange(opt.value);\n setOpen(false);\n }}\n onMouseEnter={() => setActiveIndex(i)}\n className=\"flex items-center justify-between cursor-pointer transition-colors duration-150\"\n style={{\n padding: '5px 12px',\n minHeight: 32,\n borderRadius: 4,\n fontSize: 14,\n lineHeight: '22px',\n backgroundColor: isSelected\n ? hexWithAlpha(accentColor, 0.08)\n : isActive\n ? 'rgba(0, 0, 0, 0.04)'\n : 'transparent',\n color: isSelected ? accentColor : '#181918',\n fontWeight: isSelected ? 600 : 400,\n }}\n >\n <span className=\"flex items-center min-w-0 gap-2\">\n {opt.flag && (\n <img\n src={opt.flag}\n alt=\"\"\n aria-hidden\n className=\"shrink-0 object-cover rounded-full\"\n style={{ width: 24, height: 24 }}\n />\n )}\n <span className=\"truncate\">{opt.label}</span>\n </span>\n {isSelected && (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0 ml-2\">\n <path\n d=\"M2 6l3 3 5-6\"\n stroke={accentColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'prefix' | 'value' | 'onChange'\n>;\n\nexport interface PhoneCodeOption {\n value: string;\n label: string;\n flag?: string;\n}\n\nexport interface PhoneInputProps extends NativeInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n countryCode?: string;\n defaultCountryCode?: string;\n onCountryCodeChange?: (value: string) => void;\n countryCodes?: PhoneCodeOption[];\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 wrapperClassName?: string;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n}\n\nconst PhoneInputBase = React.forwardRef<HTMLInputElement, Omit<PhoneInputProps, 'control'>>(\n (\n {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n className = '',\n countryCode,\n defaultCountryCode = '+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 required,\n disabled,\n id,\n wrapperClassName = '',\n style,\n onKeyDown,\n onPaste,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n ...rest\n },\n ref\n ) => {\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const [displayValue, setDisplayValue] = useState('');\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n const isCodeControlled = countryCode !== undefined;\n const [innerCode, setInnerCode] = useState<string>(defaultCountryCode);\n const activeCode = isCodeControlled ? (countryCode as string) : innerCode;\n\n const handleCodeChange = (next: string) => {\n if (!isCodeControlled) setInnerCode(next);\n onCountryCodeChange?.(next);\n };\n\n useEffect(() => {\n if (value !== undefined) {\n const cleaned = String(value).replace(/\\D/g, '');\n setDisplayValue(formatPhoneNumber(cleaned));\n }\n }, [value, format, activeCode]);\n\n const formatPhoneNumber = (val: string): string => {\n const cleaned = val.replace(/\\D/g, '');\n if (customFormat) return customFormat(cleaned);\n if (format === 'none') return cleaned;\n\n if (format === 'spaced') {\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n return `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n }\n if (format === 'dashed') {\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `${cleaned.slice(0, 3)}-${cleaned.slice(3)}`;\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n if (activeCode === '+1') {\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`;\n return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n return `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n !/^\\d$/.test(e.key) &&\n !['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(e.key) &&\n !(e.metaKey || e.ctrlKey)\n ) {\n e.preventDefault();\n }\n onKeyDown?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const cursorPosition = input.selectionStart || 0;\n const cleaned = input.value.replace(/\\D/g, '');\n const formatted = formatPhoneNumber(cleaned);\n const oldLength = displayValue.length;\n const newLength = formatted.length;\n const diff = newLength - oldLength;\n\n setDisplayValue(formatted);\n\n requestAnimationFrame(() => {\n const newCursor = Math.max(0, Math.min(cursorPosition + diff, formatted.length));\n input.setSelectionRange(newCursor, newCursor);\n });\n\n if (onChange) {\n const synthetic = { ...e, target: { ...e.target, value: cleaned } } as React.ChangeEvent<HTMLInputElement>;\n onChange(synthetic);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pasted = e.clipboardData.getData('text/plain').replace(/\\D/g, '');\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) + pasted;\n const formatted = formatPhoneNumber(newCleaned);\n setDisplayValue(formatted);\n if (onChange) {\n const synthetic = { ...e, target: { ...e.target, value: newCleaned } } as any;\n onChange(synthetic);\n }\n onPaste?.(e);\n };\n\n const isError = !!error;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const hasValue = displayValue !== '';\n const resolvedBorder = isError ? errorColor : hasValue ? filledBorderColor : defaultBorderColor;\n const focusShadow = isError ? hexWithAlpha(errorColor, 0.1) : hexWithAlpha(accentColor, 0.2);\n const themeVars = {\n '--shekel-accent': accentColor,\n '--shekel-border': resolvedBorder,\n '--shekel-focus-shadow': focusShadow,\n } as React.CSSProperties;\n const phoneBorder =\n 'border-[color:var(--shekel-border)] hover:border-[color:var(--shekel-accent)] focus-within:border-[color:var(--shekel-accent)]';\n const phoneShadow = 'focus-within:shadow-[0_0_0_2px_var(--shekel-focus-shadow)]';\n\n return (\n <div className=\"w-full\" style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className={`flex gap-2 ${wrapperClassName}`}>\n {showCountryCodeDropdown ? (\n <CountryCodeSelect\n value={activeCode}\n onChange={handleCodeChange}\n options={countryCodes}\n disabled={disabled}\n error={isError}\n accentColor={accentColor}\n errorColor={errorColor}\n />\n ) : (\n <div\n className=\"flex items-center justify-center border rounded-[12px] text-sm font-medium\"\n style={{\n width: 61,\n height: 44,\n borderColor: isError ? errorColor : defaultBorderColor,\n backgroundColor: disabled ? '#F5F5F5' : '#FAFAFA',\n color: disabled ? '#00000040' : '#000000',\n }}\n >\n {activeCode}\n </div>\n )}\n <div\n className={`flex items-center flex-1 min-w-0 border rounded-[12px] transition-all duration-200 ${phoneBorder} ${phoneShadow} ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white'\n }`}\n style={{ height: 44 }}\n >\n <input\n ref={(el) => {\n innerRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }}\n id={inputId}\n type=\"tel\"\n inputMode=\"tel\"\n required={required}\n disabled={disabled}\n value={displayValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={`flex-1 min-w-0 h-full bg-transparent outline-none text-sm text-[#181918] placeholder:text-[#8C8C8C] ${className}`}\n style={{ padding: '4px 11px', ...style }}\n {...rest}\n />\n </div>\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nPhoneInputBase.displayName = 'PhoneInputBase';\n\nconst ControlledPhoneInput: React.FC<\n PhoneInputProps & { control: NonNullable<PhoneInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PhoneInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(e) => field.onChange(e.target.value)}\n onBlur={() => field.onBlur()}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({ 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 }\n);\nPhoneInput.displayName = 'PhoneInput';\n","import React, { useState, useEffect } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { ErrorIcon } from './_theme';\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'prefix' | 'value' | 'onChange'\n>;\n\nexport interface CurrencyInputProps extends NativeInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n currencySymbol?: string;\n formatAmount?: boolean;\n value?: string | number;\n onChange?: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;\n control?: Control<any>;\n wrapperClassName?: string;\n addonAfter?: React.ReactNode;\n addonBefore?: React.ReactNode;\n currencyPillBgColor?: string;\n currencyPillColor?: string;\n hideCurrencyPill?: boolean;\n}\n\nconst 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\nconst unformatNumber = (formatted: string): string => formatted.replace(/,/g, '');\n\nconst CurrencyInputBase = React.forwardRef<HTMLInputElement, Omit<CurrencyInputProps, 'control'>>(\n (\n {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n currencySymbol = '₦',\n formatAmount = false,\n value: externalValue,\n onChange,\n required,\n disabled,\n id,\n className = '',\n style,\n wrapperClassName = '',\n addonAfter,\n addonBefore,\n currencyPillBgColor = '#F0F2F4',\n currencyPillColor = '#000000',\n hideCurrencyPill = false,\n ...rest\n },\n ref\n ) => {\n const [displayValue, setDisplayValue] = useState<string>('');\n const reactId = React.useId();\n const inputId = id ?? reactId;\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 if (formatAmount) {\n const rawValue = unformatNumber(inputValue);\n const formatted = formatNumber(rawValue);\n setDisplayValue(formatted);\n onChange?.(rawValue, e);\n } else {\n setDisplayValue(inputValue);\n onChange?.(inputValue, e);\n }\n };\n\n const isError = !!error;\n const hasValue = displayValue !== '' && displayValue !== undefined;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const borderClass = isError\n ? 'border-[#C21919] focus-within:shadow-[0_0_0_2px_rgba(194,25,25,0.1)]'\n : hasValue\n ? 'border-[#181918] hover:border-[#EC615B] focus-within:border-[#EC615B] focus-within:shadow-[0_0_0_2px_rgba(236,97,91,0.2)]'\n : 'border-[#D9D9D9] hover:border-[#EC615B] focus-within:border-[#EC615B] focus-within:shadow-[0_0_0_2px_rgba(236,97,91,0.2)]';\n\n return (\n <div className=\"w-full\">\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? '#C21919' : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div\n className={`flex items-stretch w-full border rounded-[12px] transition-all duration-200 overflow-hidden ${borderClass} ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white'\n } ${wrapperClassName}`}\n style={{ height: 44 }}\n >\n {addonBefore && (\n <div\n className=\"flex items-center justify-center shrink-0 px-3 text-sm font-medium\"\n style={{ backgroundColor: currencyPillBgColor, color: currencyPillColor }}\n >\n {addonBefore}\n </div>\n )}\n {!hideCurrencyPill && (\n <div\n className=\"flex items-center justify-center shrink-0 font-medium\"\n style={{\n width: 37,\n backgroundColor: currencyPillBgColor,\n color: currencyPillColor,\n }}\n >\n {currencySymbol}\n </div>\n )}\n <input\n ref={ref}\n id={inputId}\n required={required}\n disabled={disabled}\n value={displayValue}\n onChange={handleChange}\n inputMode={formatAmount ? 'decimal' : rest.inputMode}\n className={`flex-1 min-w-0 h-full bg-transparent outline-none text-sm text-[#181918] placeholder:text-[#8C8C8C] ${className}`}\n style={{ padding: '4px 16px', ...style }}\n {...rest}\n />\n {addonAfter && (\n <div\n className=\"flex items-center justify-center shrink-0 px-3\"\n style={{ backgroundColor: currencyPillBgColor }}\n >\n {addonAfter}\n </div>\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: '#C21919' }}>\n <ErrorIcon color=\"#C21919\" size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nCurrencyInputBase.displayName = 'CurrencyInputBase';\n\nconst ControlledCurrencyInput: React.FC<\n CurrencyInputProps & { control: NonNullable<CurrencyInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <CurrencyInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(value) => field.onChange(value)}\n onBlur={() => field.onBlur()}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ 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 }\n);\nCurrencyInput.displayName = 'CurrencyInput';\n","import React, { useState, useRef, useEffect, useMemo, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport interface SelectInputOption {\n value: string | number;\n label: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n [key: string]: any;\n}\n\nexport type SelectInputValue = string | number | (string | number)[] | undefined;\n\nexport interface SelectInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n required?: boolean;\n disabled?: boolean;\n value?: SelectInputValue;\n defaultValue?: SelectInputValue;\n onChange?: (\n value: SelectInputValue,\n option?: SelectInputOption | SelectInputOption[]\n ) => void;\n options?: SelectInputOption[];\n placeholder?: string;\n showSearch?: boolean;\n searchPlaceholder?: string;\n optionFilterProp?: 'label' | 'value';\n filterOption?: boolean | ((input: string, option: SelectInputOption) => boolean);\n onSearch?: (value: string) => void;\n mode?: 'single' | 'multiple';\n allowClear?: boolean;\n height?: number | string;\n borderRadius?: number | string;\n className?: string;\n style?: React.CSSProperties;\n popupClassName?: string;\n popupStyle?: React.CSSProperties;\n onBlur?: () => void;\n onFocus?: () => void;\n onDropdownVisibleChange?: (open: boolean) => void;\n control?: Control<any>;\n name?: string;\n id?: string;\n notFoundContent?: React.ReactNode;\n status?: 'error' | 'warning';\n optionRender?: (option: SelectInputOption, info: { selected: boolean }) => React.ReactNode;\n suffixIcon?: React.ReactNode;\n prefixIcon?: React.ReactNode;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n selectedBgColor?: string;\n selectedTextColor?: string;\n optionHoverColor?: string;\n tagBgColor?: string;\n tagBorderColor?: string;\n}\n\nconst defaultFilter = (\n input: string,\n option: SelectInputOption,\n prop: 'label' | 'value' = 'label'\n): boolean => {\n const search = input.toLowerCase();\n const labelStr = typeof option.label === 'string' ? option.label.toLowerCase() : '';\n const valueStr = String(option.value).toLowerCase();\n if (prop === 'value') return valueStr.includes(search);\n return labelStr.includes(search) || valueStr.includes(search);\n};\n\nconst Chevron: React.FC<{ open: boolean; color?: string }> = ({ open, color = '#8C8C8C' }) => (\n <span\n className={`shrink-0 flex items-center justify-center transition-transform duration-200 ${\n open ? 'rotate-180' : ''\n }`}\n style={{ width: 16, height: 16, color }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n);\n\nconst ClearIcon: React.FC = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path d=\"M4 4l4 4M8 4l-4 4\" stroke=\"#FFFFFF\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CheckIcon: React.FC<{ color?: string }> = ({ color = '#EC615B' }) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0 ml-2\">\n <path\n d=\"M3 8l3.5 3.5L13 5\"\n stroke={color}\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst SelectInputBase = React.forwardRef<HTMLDivElement, Omit<SelectInputProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n required,\n disabled,\n value: externalValue,\n defaultValue,\n onChange,\n options = [],\n placeholder = 'Select an option',\n showSearch = true,\n searchPlaceholder = 'Search',\n optionFilterProp = 'label',\n filterOption,\n onSearch,\n mode = 'single',\n allowClear = true,\n height = 44,\n borderRadius = 12,\n className = '',\n style,\n popupClassName = '',\n popupStyle,\n onBlur,\n onFocus,\n onDropdownVisibleChange,\n id,\n notFoundContent = 'No results found',\n status,\n optionRender,\n suffixIcon,\n prefixIcon,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n selectedBgColor,\n selectedTextColor,\n optionHoverColor = 'rgba(0, 0, 0, 0.04)',\n tagBgColor = '#F5F5F5',\n tagBorderColor = '#E8E8E8',\n } = props;\n const resolvedSelectedBg = selectedBgColor ?? hexWithAlpha(accentColor, 0.08);\n const resolvedSelectedText = selectedTextColor ?? accentColor;\n\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = useState<SelectInputValue>(\n defaultValue ?? (mode === 'multiple' ? [] : undefined)\n );\n const value = isControlled ? externalValue : innerValue;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const [hovered, setHovered] = useState(false);\n\n const reactId = React.useId();\n const selectId = id ?? reactId;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [panelPos, setPanelPos] = useState<{ top: number; left: number; width: number }>({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const updatePanelPos = () => {\n if (!triggerRef.current) return;\n const r = triggerRef.current.getBoundingClientRect();\n const dropdownMaxHeight = 300;\n const spaceBelow = window.innerHeight - r.bottom;\n const spaceAbove = r.top;\n const openUpward = spaceBelow < dropdownMaxHeight && spaceAbove > spaceBelow;\n const top = openUpward ? r.top - dropdownMaxHeight - 4 : r.bottom + 4;\n setPanelPos({ top: Math.max(4, top), left: r.left, width: r.width });\n };\n\n useEffect(() => {\n if (!open) return;\n updatePanelPos();\n const h = () => updatePanelPos();\n window.addEventListener('resize', h);\n window.addEventListener('scroll', h, true);\n return () => {\n window.removeEventListener('resize', h);\n window.removeEventListener('scroll', h, true);\n };\n }, [open]);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const inlineInputRef = useRef<HTMLInputElement>(null);\n\n const isError = !!error || status === 'error';\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n const filterFn = useCallback(\n (input: string, option: SelectInputOption) => {\n if (filterOption === false) return true;\n if (typeof filterOption === 'function') return filterOption(input, option);\n return defaultFilter(input, option, optionFilterProp);\n },\n [filterOption, optionFilterProp]\n );\n\n const filteredOptions = useMemo(() => {\n if (!showSearch || !searchQuery) return options;\n return options.filter((o) => filterFn(searchQuery, o));\n }, [options, searchQuery, showSearch, filterFn]);\n\n const isMultiple = mode === 'multiple';\n const selectedValues: (string | number)[] = isMultiple\n ? Array.isArray(value)\n ? value\n : []\n : value !== undefined && value !== null && value !== ''\n ? [value as string | number]\n : [];\n\n const selectedOptions: SelectInputOption[] = selectedValues\n .map((v) => options.find((o) => o.value === v))\n .filter(Boolean) as SelectInputOption[];\n\n const hasValue = selectedValues.length > 0;\n\n const openPanel = () => {\n if (disabled) return;\n setOpen(true);\n onDropdownVisibleChange?.(true);\n onFocus?.();\n };\n const closePanel = () => {\n setOpen(false);\n setSearchQuery('');\n setActiveIndex(-1);\n onDropdownVisibleChange?.(false);\n onBlur?.();\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n const insideWrapper = wrapperRef.current?.contains(target);\n const insidePanel = panelRef.current?.contains(target);\n if (!insideWrapper && !insidePanel) {\n if (open) closePanel();\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n useEffect(() => {\n if (open && showSearch) {\n if (inlineInputRef.current) inlineInputRef.current.focus();\n else if (searchInputRef.current) searchInputRef.current.focus();\n }\n if (open) {\n const firstSelectedIndex = filteredOptions.findIndex((o) =>\n selectedValues.includes(o.value)\n );\n setActiveIndex(firstSelectedIndex >= 0 ? firstSelectedIndex : 0);\n }\n }, [open]);\n\n const commitChange = (next: SelectInputValue, option?: SelectInputOption | SelectInputOption[]) => {\n if (!isControlled) setInnerValue(next);\n onChange?.(next, option);\n };\n\n const handleSelect = (option: SelectInputOption) => {\n if (option.disabled) return;\n if (isMultiple) {\n const current = Array.isArray(value) ? value : [];\n const isSelected = current.includes(option.value);\n const next = isSelected\n ? current.filter((v) => v !== option.value)\n : [...current, option.value];\n const nextOptions = options.filter((o) => next.includes(o.value));\n commitChange(next, nextOptions);\n } else {\n commitChange(option.value, option);\n closePanel();\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n const empty: SelectInputValue = isMultiple ? [] : undefined;\n commitChange(empty, isMultiple ? [] : undefined);\n };\n\n const handleRemoveTag = (e: React.MouseEvent, optionValue: string | number) => {\n e.stopPropagation();\n if (!isMultiple) return;\n const current = Array.isArray(value) ? value : [];\n const next = current.filter((v) => v !== optionValue);\n const nextOptions = options.filter((o) => next.includes(o.value));\n commitChange(next, nextOptions);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n e.preventDefault();\n openPanel();\n }\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closePanel();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(filteredOptions.length - 1, i + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(0, i - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (activeIndex >= 0 && filteredOptions[activeIndex]) {\n handleSelect(filteredOptions[activeIndex]);\n }\n } else if (e.key === 'Backspace' && isMultiple && !searchQuery && selectedValues.length > 0) {\n const last = selectedValues[selectedValues.length - 1];\n const current = Array.isArray(value) ? value : [];\n const next = current.filter((v) => v !== last);\n const nextOptions = options.filter((o) => next.includes(o.value));\n commitChange(next, nextOptions);\n }\n };\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n onSearch?.(e.target.value);\n setActiveIndex(0);\n };\n\n const resolvedBorder = isError\n ? errorColor\n : open\n ? accentColor\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const openShadow = open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined;\n const themeVars = {\n '--shekel-accent': accentColor,\n } as React.CSSProperties;\n\n const showClearBtn = allowClear && hasValue && !disabled;\n\n return (\n <div className=\"w-full\" ref={ref} style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={selectId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className=\"relative\" ref={wrapperRef}>\n <div\n ref={triggerRef as any}\n id={selectId}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n onClick={() => (open ? closePanel() : openPanel())}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={`flex items-center w-full bg-white border transition-colors duration-200 hover:border-[color:var(--shekel-accent)] ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'cursor-pointer'\n } ${className}`}\n style={{\n minHeight: resolvedHeight,\n borderRadius: resolvedRadius,\n padding: isMultiple && selectedValues.length > 0 ? '4px 8px 4px 8px' : '4px 11px',\n borderColor: resolvedBorder,\n boxShadow: openShadow,\n ...style,\n }}\n >\n {prefixIcon && (\n <span className=\"shrink-0 mr-2 flex items-center text-[#8C8C8C]\">{prefixIcon}</span>\n )}\n <div className=\"flex-1 min-w-0 flex flex-wrap items-center gap-1 relative\">\n {isMultiple &&\n selectedOptions.map((opt) => (\n <span\n key={opt.value}\n className=\"inline-flex items-center gap-1 rounded px-2 text-xs text-[#181918] border\"\n style={{\n height: 24,\n lineHeight: '22px',\n backgroundColor: tagBgColor,\n borderColor: tagBorderColor,\n }}\n >\n <span className=\"truncate max-w-[140px]\">{opt.label}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={(e) => handleRemoveTag(e, opt.value)}\n className=\"flex items-center justify-center text-[#8C8C8C] hover:text-[#181918]\"\n aria-label=\"Remove\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path\n d=\"M2 2l6 6M8 2l-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n </span>\n ))}\n\n {open && showSearch ? (\n <input\n ref={inlineInputRef}\n value={searchQuery}\n onChange={handleSearchChange}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n placeholder={\n !isMultiple && selectedOptions[0]\n ? typeof selectedOptions[0].label === 'string'\n ? selectedOptions[0].label\n : placeholder\n : placeholder\n }\n className=\"flex-1 min-w-[40px] outline-none bg-transparent text-sm text-[#181918] placeholder:text-[#8C8C8C]\"\n />\n ) : !isMultiple && selectedOptions[0] ? (\n <span className=\"truncate text-sm text-[#181918]\">{selectedOptions[0].label}</span>\n ) : selectedOptions.length === 0 ? (\n <span className=\"truncate text-sm text-[#8C8C8C]\">{placeholder}</span>\n ) : null}\n </div>\n <div className=\"flex items-center shrink-0 ml-2\">\n {showClearBtn && hovered ? (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-4 h-4 text-[#BFBFBF] hover:text-[#595959] transition-colors\"\n >\n <ClearIcon />\n </button>\n ) : suffixIcon !== undefined ? (\n <span className=\"flex items-center text-[#8C8C8C]\">{suffixIcon}</span>\n ) : (\n <Chevron open={open} />\n )}\n </div>\n </div>\n {open && !disabled && typeof document !== 'undefined' && createPortal(\n <>\n <style>{`\n @keyframes shekel-dropdown-in {\n from { opacity: 0; transform: scaleY(0.9) translateY(-4px); }\n to { opacity: 1; transform: scaleY(1) translateY(0); }\n }\n .shekel-dropdown-anim {\n transform-origin: top center;\n animation: shekel-dropdown-in 180ms cubic-bezier(0.23, 1, 0.32, 1);\n }\n `}</style>\n <div\n ref={panelRef}\n className={`fixed z-[1000] bg-white overflow-hidden shekel-dropdown-anim ${popupClassName}`}\n style={{\n top: panelPos.top,\n left: panelPos.left,\n width: panelPos.width,\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n ...popupStyle,\n }}\n >\n {showSearch && (\n <div className=\"px-2 py-2 border-b border-[#F0F0F0]\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={handleSearchChange}\n onKeyDown={handleKeyDown}\n placeholder={searchPlaceholder}\n className=\"w-full outline-none text-sm bg-transparent px-2 py-1 text-[#181918] placeholder:text-[#8C8C8C]\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )}\n <div role=\"listbox\" className=\"overflow-auto flex flex-col gap-0.5\" style={{ maxHeight: 256, padding: 4 }}>\n {filteredOptions.length === 0 ? (\n <div className=\"px-3 py-3 text-sm text-[#8C8C8C] text-center\">\n {notFoundContent}\n </div>\n ) : (\n filteredOptions.map((opt, i) => {\n const isSelected = selectedValues.includes(opt.value);\n const isActive = i === activeIndex;\n return (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled}\n onClick={(e) => {\n e.stopPropagation();\n handleSelect(opt);\n }}\n onMouseEnter={() => !opt.disabled && setActiveIndex(i)}\n className={`flex items-center justify-between transition-colors duration-150 ${\n opt.disabled ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer'\n }`}\n style={{\n padding: '10px 16px',\n minHeight: 42,\n borderRadius: 6,\n fontSize: 14,\n lineHeight: '22px',\n backgroundColor: isSelected\n ? resolvedSelectedBg\n : isActive && !opt.disabled\n ? optionHoverColor\n : 'transparent',\n color: isSelected ? resolvedSelectedText : '#181918',\n fontWeight: isSelected ? 600 : 400,\n }}\n >\n <div className=\"min-w-0 flex-1\">\n {optionRender ? (\n optionRender(opt, { selected: isSelected })\n ) : opt.description ? (\n <>\n <div className=\"truncate font-semibold\">{opt.label}</div>\n <div className=\"truncate text-xs text-[#8C8C8C] font-normal mt-0.5\">\n {opt.description}\n </div>\n </>\n ) : (\n <span className=\"truncate\">{opt.label}</span>\n )}\n </div>\n {isSelected && <CheckIcon color={resolvedSelectedText} />}\n </div>\n );\n })\n )}\n </div>\n </div>\n </>,\n document.body\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nSelectInputBase.displayName = 'SelectInputBase';\n\nconst ControlledSelectInput: React.FC<\n SelectInputProps & { control: NonNullable<SelectInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <SelectInputBase\n {...rest}\n value={field.value}\n onChange={(v, opt) => {\n field.onChange(v);\n rest.onChange?.(v, opt);\n }}\n onBlur={() => {\n field.onBlur();\n rest.onBlur?.();\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const SelectInput = React.forwardRef<HTMLDivElement, SelectInputProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledSelectInput control={control} name={name} {...props} />;\n }\n return <SelectInputBase ref={ref} name={name} {...props} />;\n }\n);\nSelectInput.displayName = 'SelectInput';\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport type DateInput = Date | string | number | null | undefined;\n\nexport interface DatePickerProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n required?: boolean;\n disabled?: boolean;\n\n value?: DateInput;\n defaultValue?: DateInput;\n onChange?: (date: Date | null, dateString: string) => void;\n\n placeholder?: string;\n format?: string; // e.g. \"YYYY-MM-DD\", \"DD/MM/YYYY\", \"MMM D, YYYY\"\n\n minDate?: DateInput;\n maxDate?: DateInput;\n disabledDate?: (date: Date) => boolean;\n\n showToday?: boolean;\n allowClear?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n\n height?: number | string;\n borderRadius?: number | string;\n\n className?: string;\n style?: React.CSSProperties;\n popupClassName?: string;\n\n onOpenChange?: (open: boolean) => void;\n\n control?: Control<any>;\n name?: string;\n id?: string;\n status?: 'error' | 'warning';\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n}\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\nconst DAY_NAMES_SUN = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst DAY_NAMES_MON = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\nconst toDate = (v: DateInput): Date | null => {\n if (v === null || v === undefined || v === '') return null;\n if (v instanceof Date) return isNaN(v.getTime()) ? null : v;\n const d = new Date(v);\n return isNaN(d.getTime()) ? null : d;\n};\n\nconst pad = (n: number, len = 2) => String(n).padStart(len, '0');\n\nconst formatDate = (date: Date, format: string): string => {\n const y = date.getFullYear();\n const M = date.getMonth() + 1;\n const D = date.getDate();\n return format\n .replace(/YYYY/g, String(y))\n .replace(/YY/g, String(y).slice(-2))\n .replace(/MMMM/g, MONTH_NAMES[date.getMonth()])\n .replace(/MMM/g, MONTH_NAMES[date.getMonth()].slice(0, 3))\n .replace(/MM/g, pad(M))\n .replace(/M/g, String(M))\n .replace(/DD/g, pad(D))\n .replace(/D/g, String(D));\n};\n\nconst isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nconst startOfDay = (d: Date) => {\n const c = new Date(d);\n c.setHours(0, 0, 0, 0);\n return c;\n};\n\nconst CalendarIcon: React.FC<{ color?: string; size?: number }> = ({ color = '#181918', size = 20 }) => (\n <svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M17.5 8.33464H2.5M13.3333 1.66797V5.0013M6.66667 1.66797V5.0013M6.5 18.3346H13.5C14.9001 18.3346 15.6002 18.3346 16.135 18.0622C16.6054 17.8225 16.9878 17.44 17.2275 16.9696C17.5 16.4348 17.5 15.7348 17.5 14.3346V7.33464C17.5 5.9345 17.5 5.23444 17.2275 4.69966C16.9878 4.22925 16.6054 3.8468 16.135 3.60712C15.6002 3.33464 14.9001 3.33464 13.5 3.33464H6.5C5.09987 3.33464 4.3998 3.33464 3.86502 3.60712C3.39462 3.8468 3.01217 4.22925 2.77248 4.69966C2.5 5.23444 2.5 5.9345 2.5 7.33464V14.3346C2.5 15.7348 2.5 16.4348 2.77248 16.9696C3.01217 17.44 3.39462 17.8225 3.86502 18.0622C4.3998 18.3346 5.09987 18.3346 6.5 18.3346Z\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ChevronLeft: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M9 3l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ChevronRight: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M5 3l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst DoubleChevronLeft: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M11 3l-4 4 4 4M6 3L2 7l4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst DoubleChevronRight: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M3 3l4 4-4 4M8 3l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ClearX: React.FC = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path d=\"M4 4l4 4M8 4l-4 4\" stroke=\"#FFFFFF\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst DatePickerBase = React.forwardRef<HTMLDivElement, Omit<DatePickerProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n required,\n disabled,\n value: externalValue,\n defaultValue,\n onChange,\n placeholder = 'Select date',\n format = 'YYYY-MM-DD',\n minDate,\n maxDate,\n disabledDate,\n showToday = true,\n allowClear = true,\n firstDayOfWeek = 0,\n height = 44,\n borderRadius = 12,\n className = '',\n style,\n popupClassName = '',\n onOpenChange,\n id,\n status,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n } = props;\n\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = useState<Date | null>(toDate(defaultValue));\n const resolvedValue = isControlled ? toDate(externalValue) : innerValue;\n\n const [open, setOpen] = useState(false);\n const [hovered, setHovered] = useState(false);\n const [viewDate, setViewDate] = useState<Date>(resolvedValue ?? new Date());\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const wrapperRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [panelPos, setPanelPos] = useState<{ top: number; left: number; width: number }>({\n top: 0,\n left: 0,\n width: 280,\n });\n\n const updatePanelPos = () => {\n if (!triggerRef.current) return;\n const r = triggerRef.current.getBoundingClientRect();\n const panelWidth = 280;\n const vw = typeof window !== 'undefined' ? window.innerWidth : 0;\n const vh = typeof window !== 'undefined' ? window.innerHeight : 0;\n let left = r.left;\n if (left + panelWidth + 8 > vw) left = Math.max(8, vw - panelWidth - 8);\n const panelHeight = 340;\n let top = r.bottom + 4;\n if (top + panelHeight + 8 > vh && r.top > panelHeight + 8) {\n top = r.top - panelHeight - 4;\n }\n setPanelPos({ top, left, width: panelWidth });\n };\n\n useEffect(() => {\n if (!open) return;\n updatePanelPos();\n const handler = () => updatePanelPos();\n window.addEventListener('resize', handler);\n window.addEventListener('scroll', handler, true);\n return () => {\n window.removeEventListener('resize', handler);\n window.removeEventListener('scroll', handler, true);\n };\n }, [open]);\n\n const isError = !!error || status === 'error';\n const hasValue = resolvedValue !== null;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n const min = useMemo(() => (minDate ? startOfDay(toDate(minDate)!) : null), [minDate]);\n const max = useMemo(() => (maxDate ? startOfDay(toDate(maxDate)!) : null), [maxDate]);\n\n const isDisabledDate = (d: Date): boolean => {\n const day = startOfDay(d);\n if (min && day < min) return true;\n if (max && day > max) return true;\n if (disabledDate && disabledDate(day)) return true;\n return false;\n };\n\n useEffect(() => {\n if (resolvedValue) setViewDate(resolvedValue);\n }, [resolvedValue?.getTime()]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n const insideWrapper = wrapperRef.current?.contains(target);\n const insidePanel = panelRef.current?.contains(target);\n if (!insideWrapper && !insidePanel) {\n if (open) {\n setOpen(false);\n onOpenChange?.(false);\n }\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open, onOpenChange]);\n\n const commit = (next: Date | null) => {\n if (!isControlled) setInnerValue(next);\n onChange?.(next, next ? formatDate(next, format) : '');\n };\n\n const handleToggle = () => {\n if (disabled) return;\n const next = !open;\n setOpen(next);\n onOpenChange?.(next);\n if (next && resolvedValue) setViewDate(resolvedValue);\n };\n\n const handleDayClick = (day: Date) => {\n if (isDisabledDate(day)) return;\n commit(day);\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n commit(null);\n };\n\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const resolvedBorder = isError\n ? errorColor\n : open\n ? accentColor\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const openShadow = open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined;\n const themeVars = { '--shekel-accent': accentColor } as React.CSSProperties;\n\n const showClearBtn = allowClear && hasValue && !disabled && hovered;\n\n const dayNames = firstDayOfWeek === 1 ? DAY_NAMES_MON : DAY_NAMES_SUN;\n\n const calendarGrid = useMemo(() => {\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const shift = firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const prevMonthDays = new Date(year, month, 0).getDate();\n\n const cells: { date: Date; outside: boolean }[] = [];\n for (let i = shift - 1; i >= 0; i--) {\n cells.push({ date: new Date(year, month - 1, prevMonthDays - i), outside: true });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ date: new Date(year, month, d), outside: false });\n }\n while (cells.length < 42) {\n const lastDate = cells[cells.length - 1].date;\n const next = new Date(lastDate);\n next.setDate(next.getDate() + 1);\n cells.push({ date: next, outside: true });\n }\n return cells;\n }, [viewDate, firstDayOfWeek]);\n\n const goMonth = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1));\n };\n const goYear = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear() + delta, viewDate.getMonth(), 1));\n };\n\n const displayText = resolvedValue ? formatDate(resolvedValue, format) : '';\n\n return (\n <div className=\"w-full\" ref={ref} style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className=\"relative\" ref={wrapperRef}>\n <div\n ref={triggerRef as any}\n id={inputId}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n onClick={handleToggle}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n handleToggle();\n }\n if (e.key === 'Escape' && open) {\n e.preventDefault();\n setOpen(false);\n onOpenChange?.(false);\n }\n }}\n className={`flex items-center w-full bg-white border transition-colors duration-200 hover:border-[color:var(--shekel-accent)] ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'cursor-pointer'\n } ${className}`}\n style={{\n height: resolvedHeight,\n borderRadius: resolvedRadius,\n padding: '4px 11px',\n borderColor: resolvedBorder,\n boxShadow: openShadow,\n ...style,\n }}\n >\n <span\n className={`flex-1 min-w-0 truncate text-sm ${\n resolvedValue ? 'text-[#181918]' : 'text-[#8C8C8C]'\n }`}\n >\n {displayText || placeholder}\n </span>\n <div className=\"flex items-center shrink-0 ml-2\">\n {showClearBtn ? (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-4 h-4 text-[#BFBFBF] hover:text-[#595959] transition-colors\"\n >\n <ClearX />\n </button>\n ) : (\n <CalendarIcon />\n )}\n </div>\n </div>\n {open && !disabled && typeof document !== 'undefined' && createPortal(\n <>\n <style>{`\n @keyframes shekel-picker-in { from { opacity: 0; transform: scaleY(0.9) translateY(-4px); } to { opacity: 1; transform: scaleY(1) translateY(0); } }\n .shekel-picker-anim { transform-origin: top center; animation: shekel-picker-in 180ms cubic-bezier(0.23, 1, 0.32, 1); }\n `}</style>\n <div\n ref={panelRef}\n className={`fixed z-[1000] bg-white shekel-picker-anim ${popupClassName}`}\n style={{\n top: panelPos.top,\n left: panelPos.left,\n width: panelPos.width,\n maxWidth: 'calc(100vw - 16px)',\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n padding: 8,\n }}\n >\n <div className=\"flex items-center justify-between px-2 py-1\">\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => goYear(-1)}\n aria-label=\"Previous year\"\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <DoubleChevronLeft />\n </button>\n <button\n type=\"button\"\n onClick={() => goMonth(-1)}\n aria-label=\"Previous month\"\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <ChevronLeft />\n </button>\n </div>\n <div className=\"text-sm font-medium text-[#181918]\">\n {MONTH_NAMES[viewDate.getMonth()]} {viewDate.getFullYear()}\n </div>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => goMonth(1)}\n aria-label=\"Next month\"\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <ChevronRight />\n </button>\n <button\n type=\"button\"\n onClick={() => goYear(1)}\n aria-label=\"Next year\"\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <DoubleChevronRight />\n </button>\n </div>\n </div>\n <div className=\"grid grid-cols-7 gap-0 px-1 pt-2 pb-1\">\n {dayNames.map((d) => (\n <div\n key={d}\n className=\"text-xs text-[#8C8C8C] text-center py-1\"\n style={{ height: 28 }}\n >\n {d}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-7 gap-0 px-1\">\n {calendarGrid.map(({ date, outside }, i) => {\n const selected = resolvedValue && isSameDay(date, resolvedValue);\n const isToday = isSameDay(date, today);\n const disabledDay = isDisabledDate(date);\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabledDay}\n onClick={() => handleDayClick(date)}\n className=\"flex items-center justify-center text-sm transition-colors\"\n style={{\n height: 32,\n margin: '1px 0',\n }}\n >\n <span\n className={`flex items-center justify-center rounded-full transition-colors ${\n disabledDay\n ? 'text-[#D9D9D9] cursor-not-allowed'\n : outside\n ? 'text-[#BFBFBF] hover:bg-[#F5F5F5]'\n : 'text-[#181918] hover:bg-[#F5F5F5]'\n }`}\n style={{\n width: 28,\n height: 28,\n backgroundColor: selected ? accentColor : undefined,\n color: selected ? '#FFFFFF' : undefined,\n fontWeight: selected ? 600 : 400,\n border: isToday && !selected ? `1px solid ${accentColor}` : undefined,\n }}\n >\n {date.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n {showToday && (\n <div className=\"border-t border-[#F0F0F0] mt-2 pt-2 text-center\">\n <button\n type=\"button\"\n onClick={() => {\n if (!isDisabledDate(today)) handleDayClick(today);\n }}\n disabled={isDisabledDate(today)}\n className=\"text-sm hover:underline disabled:text-[#D9D9D9] disabled:no-underline\"\n style={{ color: accentColor }}\n >\n Today\n </button>\n </div>\n )}\n </div>\n </>,\n document.body\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nDatePickerBase.displayName = 'DatePickerBase';\n\nconst ControlledDatePicker: React.FC<\n DatePickerProps & { control: NonNullable<DatePickerProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <DatePickerBase\n {...rest}\n value={field.value}\n onChange={(date, dateString) => {\n field.onChange(date);\n rest.onChange?.(date, dateString);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledDatePicker control={control} name={name} {...props} />;\n }\n return <DatePickerBase ref={ref} name={name} {...props} />;\n }\n);\nDatePicker.displayName = 'DatePicker';\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport type DateRangeInput = Date | string | number | null | undefined;\n\nexport interface DateRangeValue {\n from: Date | null;\n to: Date | null;\n}\n\nexport interface DateRangePickerProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n required?: boolean;\n disabled?: boolean;\n\n value?: [DateRangeInput, DateRangeInput];\n defaultValue?: [DateRangeInput, DateRangeInput];\n onChange?: (range: [Date | null, Date | null], rangeString: [string, string]) => void;\n\n placeholder?: [string, string];\n format?: string;\n separator?: React.ReactNode;\n\n minDate?: DateRangeInput;\n maxDate?: DateRangeInput;\n disabledDate?: (date: Date) => boolean;\n\n allowClear?: boolean;\n firstDayOfWeek?: 0 | 1;\n\n height?: number | string;\n borderRadius?: number | string;\n\n className?: string;\n style?: React.CSSProperties;\n popupClassName?: string;\n\n onOpenChange?: (open: boolean) => void;\n\n control?: Control<any>;\n name?: string;\n id?: string;\n status?: 'error' | 'warning';\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n rangeBgColor?: string;\n rangeTextColor?: string;\n singlePanel?: boolean;\n presets?: Array<{ label: React.ReactNode; value: [Date | string, Date | string] }>;\n}\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\nconst DAY_NAMES_SUN = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst DAY_NAMES_MON = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\nconst toDate = (v: DateRangeInput): Date | null => {\n if (v === null || v === undefined || v === '') return null;\n if (v instanceof Date) return isNaN(v.getTime()) ? null : v;\n const d = new Date(v);\n return isNaN(d.getTime()) ? null : d;\n};\nconst pad = (n: number, len = 2) => String(n).padStart(len, '0');\nconst formatDate = (date: Date, format: string): string => {\n const y = date.getFullYear();\n const M = date.getMonth() + 1;\n const D = date.getDate();\n return format\n .replace(/YYYY/g, String(y))\n .replace(/YY/g, String(y).slice(-2))\n .replace(/MMMM/g, MONTH_NAMES[date.getMonth()])\n .replace(/MMM/g, MONTH_NAMES[date.getMonth()].slice(0, 3))\n .replace(/MM/g, pad(M))\n .replace(/M/g, String(M))\n .replace(/DD/g, pad(D))\n .replace(/D/g, String(D));\n};\nconst isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\nconst startOfDay = (d: Date) => {\n const c = new Date(d);\n c.setHours(0, 0, 0, 0);\n return c;\n};\nconst isBetween = (d: Date, a: Date, b: Date) => {\n const t = startOfDay(d).getTime();\n const s = Math.min(a.getTime(), b.getTime());\n const e = Math.max(a.getTime(), b.getTime());\n return t > s && t < e;\n};\n\nconst CalendarIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M17.5 8.33464H2.5M13.3333 1.66797V5.0013M6.66667 1.66797V5.0013M6.5 18.3346H13.5C14.9001 18.3346 15.6002 18.3346 16.135 18.0622C16.6054 17.8225 16.9878 17.44 17.2275 16.9696C17.5 16.4348 17.5 15.7348 17.5 14.3346V7.33464C17.5 5.9345 17.5 5.23444 17.2275 4.69966C16.9878 4.22925 16.6054 3.8468 16.135 3.60712C15.6002 3.33464 14.9001 3.33464 13.5 3.33464H6.5C5.09987 3.33464 4.3998 3.33464 3.86502 3.60712C3.39462 3.8468 3.01217 4.22925 2.77248 4.69966C2.5 5.23444 2.5 5.9345 2.5 7.33464V14.3346C2.5 15.7348 2.5 16.4348 2.77248 16.9696C3.01217 17.44 3.39462 17.8225 3.86502 18.0622C4.3998 18.3346 5.09987 18.3346 6.5 18.3346Z\"\n stroke=\"#181918\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\nconst ClearX: React.FC = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path d=\"M4 4l4 4M8 4l-4 4\" stroke=\"#FFFFFF\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\nconst Arrow: React.FC<{ dir: 'left' | 'right'; double?: boolean }> = ({ dir, double }) => {\n const single = dir === 'left' ? 'M9 3l-4 4 4 4' : 'M5 3l4 4-4 4';\n const dbl = dir === 'left' ? 'M11 3l-4 4 4 4M6 3L2 7l4 4' : 'M3 3l4 4-4 4M8 3l4 4-4 4';\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d={double ? dbl : single} stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n};\n\ninterface CalendarPaneProps {\n viewDate: Date;\n from: Date | null;\n to: Date | null;\n hoverDate: Date | null;\n onHoverDate: (d: Date | null) => void;\n onDayClick: (d: Date) => void;\n isDisabledDate: (d: Date) => boolean;\n firstDayOfWeek: 0 | 1;\n showLeftArrows: boolean;\n showRightArrows: boolean;\n onShiftMonth: (delta: number) => void;\n onShiftYear: (delta: number) => void;\n accentColor: string;\n rangeBgColor: string;\n rangeTextColor: string;\n}\n\nconst CalendarPane: React.FC<CalendarPaneProps> = ({\n viewDate,\n from,\n to,\n hoverDate,\n onHoverDate,\n onDayClick,\n isDisabledDate,\n firstDayOfWeek,\n showLeftArrows,\n showRightArrows,\n onShiftMonth,\n onShiftYear,\n accentColor,\n rangeBgColor,\n rangeTextColor,\n}) => {\n const dayNames = firstDayOfWeek === 1 ? DAY_NAMES_MON : DAY_NAMES_SUN;\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const calendarGrid = useMemo(() => {\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const shift = firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const prevMonthDays = new Date(year, month, 0).getDate();\n const cells: { date: Date; outside: boolean }[] = [];\n for (let i = shift - 1; i >= 0; i--) {\n cells.push({ date: new Date(year, month - 1, prevMonthDays - i), outside: true });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ date: new Date(year, month, d), outside: false });\n }\n while (cells.length < 42) {\n const last = cells[cells.length - 1].date;\n const n = new Date(last);\n n.setDate(n.getDate() + 1);\n cells.push({ date: n, outside: true });\n }\n return cells;\n }, [viewDate, firstDayOfWeek]);\n\n const activeRangeEnd = to ?? hoverDate;\n const rangeLo =\n from && activeRangeEnd\n ? from.getTime() <= activeRangeEnd.getTime()\n ? from\n : activeRangeEnd\n : null;\n const rangeHi =\n from && activeRangeEnd\n ? from.getTime() <= activeRangeEnd.getTime()\n ? activeRangeEnd\n : from\n : null;\n\n return (\n <div style={{ width: 280 }}>\n <div className=\"flex items-center justify-between px-2 py-1\">\n <div className=\"flex items-center gap-1\" style={{ minWidth: 64 }}>\n {showLeftArrows && (\n <>\n <button\n type=\"button\"\n onClick={() => onShiftYear(-1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Previous year\"\n >\n <Arrow dir=\"left\" double />\n </button>\n <button\n type=\"button\"\n onClick={() => onShiftMonth(-1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Previous month\"\n >\n <Arrow dir=\"left\" />\n </button>\n </>\n )}\n </div>\n <div className=\"text-sm font-medium text-[#181918]\">\n {MONTH_NAMES[viewDate.getMonth()]} {viewDate.getFullYear()}\n </div>\n <div className=\"flex items-center gap-1 justify-end\" style={{ minWidth: 64 }}>\n {showRightArrows && (\n <>\n <button\n type=\"button\"\n onClick={() => onShiftMonth(1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Next month\"\n >\n <Arrow dir=\"right\" />\n </button>\n <button\n type=\"button\"\n onClick={() => onShiftYear(1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Next year\"\n >\n <Arrow dir=\"right\" double />\n </button>\n </>\n )}\n </div>\n </div>\n <div className=\"grid grid-cols-7 px-1 pt-2 pb-1\">\n {dayNames.map((d) => (\n <div key={d} className=\"text-xs text-[#8C8C8C] text-center py-1\" style={{ height: 28 }}>\n {d}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-7 px-1\" onMouseLeave={() => onHoverDate(null)}>\n {calendarGrid.map(({ date, outside }, i) => {\n const isFrom = !!(from && isSameDay(date, from));\n const isTo = !!(to && isSameDay(date, to));\n const inRange =\n rangeLo && rangeHi && !isSameDay(rangeLo, rangeHi)\n ? isBetween(date, rangeLo, rangeHi)\n : false;\n const isEdgeLo = rangeLo && isSameDay(date, rangeLo);\n const isEdgeHi = rangeHi && isSameDay(date, rangeHi);\n const selected = isFrom || isTo;\n const isToday = isSameDay(date, today);\n const disabledDay = isDisabledDate(date);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabledDay}\n onClick={() => onDayClick(date)}\n onMouseEnter={() => !disabledDay && onHoverDate(date)}\n className=\"flex items-center justify-center text-sm\"\n style={{\n height: 32,\n backgroundColor: inRange ? rangeBgColor : undefined,\n borderTopLeftRadius: isEdgeLo ? 999 : inRange ? 0 : 999,\n borderBottomLeftRadius: isEdgeLo ? 999 : inRange ? 0 : 999,\n borderTopRightRadius: isEdgeHi ? 999 : inRange ? 0 : 999,\n borderBottomRightRadius: isEdgeHi ? 999 : inRange ? 0 : 999,\n }}\n >\n <span\n className=\"flex items-center justify-center rounded-full transition-colors\"\n style={{\n width: 28,\n height: 28,\n backgroundColor: selected ? accentColor : undefined,\n color: selected\n ? '#FFFFFF'\n : disabledDay\n ? '#D9D9D9'\n : outside\n ? '#BFBFBF'\n : inRange\n ? rangeTextColor\n : '#181918',\n fontWeight: selected ? 600 : 400,\n border: isToday && !selected ? `1px solid ${accentColor}` : undefined,\n }}\n >\n {date.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nconst DateRangePickerBase = React.forwardRef<HTMLDivElement, Omit<DateRangePickerProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n required,\n disabled,\n value: externalValue,\n defaultValue,\n onChange,\n placeholder = ['Start date', 'End date'],\n format = 'YYYY-MM-DD',\n separator,\n minDate,\n maxDate,\n disabledDate,\n allowClear = true,\n firstDayOfWeek = 0,\n height = 44,\n borderRadius = 12,\n className = '',\n style,\n popupClassName = '',\n onOpenChange,\n id,\n status,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n rangeBgColor,\n rangeTextColor,\n singlePanel = false,\n presets,\n } = props;\n const resolvedRangeBg = rangeBgColor ?? hexWithAlpha(accentColor, 0.12);\n const resolvedRangeText = rangeTextColor ?? accentColor;\n\n const [isNarrow, setIsNarrow] = useState<boolean>(\n typeof window !== 'undefined' ? window.innerWidth < 640 : false\n );\n useEffect(() => {\n const handler = () => setIsNarrow(window.innerWidth < 640);\n window.addEventListener('resize', handler);\n return () => window.removeEventListener('resize', handler);\n }, []);\n const effectiveSinglePanel = singlePanel || isNarrow;\n\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = useState<[Date | null, Date | null]>(() => [\n toDate(defaultValue?.[0]),\n toDate(defaultValue?.[1]),\n ]);\n const resolved: [Date | null, Date | null] = isControlled\n ? [toDate(externalValue![0]), toDate(externalValue![1])]\n : innerValue;\n const [from, to] = resolved;\n\n const [open, setOpen] = useState(false);\n const [hovered, setHovered] = useState(false);\n const [activeSlot, setActiveSlot] = useState<'from' | 'to'>('from');\n const [hoverDate, setHoverDate] = useState<Date | null>(null);\n const [viewDate, setViewDate] = useState<Date>(from ?? new Date());\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const wrapperRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [panelPos, setPanelPos] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n\n const updatePanelPos = () => {\n if (!triggerRef.current) return;\n const r = triggerRef.current.getBoundingClientRect();\n const vw = typeof window !== 'undefined' ? window.innerWidth : 0;\n const panelWidth = effectiveSinglePanel ? 296 : 580;\n let left = r.left;\n if (left + panelWidth + 8 > vw) left = Math.max(8, vw - panelWidth - 8);\n setPanelPos({ top: r.bottom + 4, left });\n };\n\n const isError = !!error || status === 'error';\n const hasValue = !!from || !!to;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n const min = useMemo(() => (minDate ? startOfDay(toDate(minDate)!) : null), [minDate]);\n const max = useMemo(() => (maxDate ? startOfDay(toDate(maxDate)!) : null), [maxDate]);\n const isDisabledDate = (d: Date): boolean => {\n const day = startOfDay(d);\n if (min && day < min) return true;\n if (max && day > max) return true;\n if (disabledDate && disabledDate(day)) return true;\n return false;\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n const insideWrapper = wrapperRef.current?.contains(target);\n const insidePanel = panelRef.current?.contains(target);\n if (!insideWrapper && !insidePanel) {\n if (open) {\n setOpen(false);\n onOpenChange?.(false);\n setHoverDate(null);\n }\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open, onOpenChange]);\n\n useEffect(() => {\n if (!open) return;\n updatePanelPos();\n const h = () => updatePanelPos();\n window.addEventListener('resize', h);\n window.addEventListener('scroll', h, true);\n return () => {\n window.removeEventListener('resize', h);\n window.removeEventListener('scroll', h, true);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, effectiveSinglePanel]);\n\n const commit = (f: Date | null, t: Date | null) => {\n if (!isControlled) setInnerValue([f, t]);\n onChange?.(\n [f, t],\n [f ? formatDate(f, format) : '', t ? formatDate(t, format) : '']\n );\n };\n\n const handleDayClick = (d: Date) => {\n if (isDisabledDate(d)) return;\n if (activeSlot === 'from' || !from) {\n commit(d, null);\n setActiveSlot('to');\n setHoverDate(null);\n } else {\n // Ensure from <= to; swap if needed\n if (d.getTime() < from.getTime()) {\n commit(d, from);\n } else {\n commit(from, d);\n }\n setActiveSlot('from');\n setOpen(false);\n onOpenChange?.(false);\n setHoverDate(null);\n }\n };\n\n const handleToggle = (slot?: 'from' | 'to') => {\n if (disabled) return;\n if (slot) setActiveSlot(slot);\n const next = !open;\n setOpen(next);\n onOpenChange?.(next);\n if (next && (from || to)) setViewDate(from ?? to ?? new Date());\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n commit(null, null);\n setActiveSlot('from');\n };\n\n const resolvedBorder = isError\n ? errorColor\n : open\n ? accentColor\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const openShadow = open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined;\n const themeVars = { '--shekel-accent': accentColor } as React.CSSProperties;\n\n const showClearBtn = allowClear && hasValue && !disabled && hovered;\n\n const fromText = from ? formatDate(from, format) : '';\n const toText = to ? formatDate(to, format) : '';\n\n const defaultSeparator = (\n <span className=\"mx-2 text-[#8C8C8C] flex items-center\">\n <svg width=\"14\" height=\"10\" viewBox=\"0 0 14 10\" fill=\"none\">\n <path d=\"M1 5h12M9 1l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n );\n\n return (\n <div className=\"w-full\" ref={ref} style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className=\"relative\" ref={wrapperRef}>\n <div\n ref={triggerRef as any}\n id={inputId}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-disabled={disabled}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={`flex items-center w-full bg-white border transition-colors duration-200 hover:border-[color:var(--shekel-accent)] ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'cursor-pointer'\n } ${className}`}\n style={{\n height: resolvedHeight,\n borderRadius: resolvedRadius,\n padding: '4px 11px',\n borderColor: resolvedBorder,\n boxShadow: openShadow,\n ...style,\n }}\n >\n <div className=\"relative flex-1 min-w-0\">\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => handleToggle('from')}\n className={`w-full text-left text-sm truncate ${\n fromText ? 'text-[#181918]' : 'text-[#8C8C8C]'\n }`}\n >\n {fromText || placeholder[0]}\n </button>\n {open && activeSlot === 'from' && (\n <div className=\"absolute left-0 right-2 bottom-[-6px] h-[2px] transition-all\" style={{ backgroundColor: accentColor }} />\n )}\n </div>\n {separator === undefined ? defaultSeparator : separator}\n <div className=\"relative flex-1 min-w-0\">\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => handleToggle('to')}\n className={`w-full text-left text-sm truncate ${\n toText ? 'text-[#181918]' : 'text-[#8C8C8C]'\n }`}\n >\n {toText || placeholder[1]}\n </button>\n {open && activeSlot === 'to' && (\n <div className=\"absolute left-0 right-2 bottom-[-6px] h-[2px] transition-all\" style={{ backgroundColor: accentColor }} />\n )}\n </div>\n <div className=\"flex items-center shrink-0 ml-2\">\n {showClearBtn ? (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-4 h-4 text-[#BFBFBF] hover:text-[#595959] transition-colors\"\n >\n <ClearX />\n </button>\n ) : (\n <CalendarIcon />\n )}\n </div>\n </div>\n {open && !disabled && typeof document !== 'undefined' && createPortal(\n <>\n <style>{`\n @keyframes shekel-range-in { from { opacity: 0; transform: scaleY(0.9) translateY(-4px); } to { opacity: 1; transform: scaleY(1) translateY(0); } }\n .shekel-range-anim { transform-origin: top center; animation: shekel-range-in 180ms cubic-bezier(0.23, 1, 0.32, 1); }\n `}</style>\n <div\n ref={panelRef}\n className={`fixed z-[1000] bg-white flex shekel-range-anim ${popupClassName}`}\n style={{\n top: panelPos.top,\n left: panelPos.left,\n maxWidth: 'calc(100vw - 16px)',\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n padding: 8,\n }}\n >\n {presets && presets.length > 0 && (\n <div\n className=\"flex flex-col py-1 pr-2 mr-2 border-r border-[#F0F0F0]\"\n style={{ minWidth: 120 }}\n >\n {presets.map((preset, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => {\n const f = toDate(preset.value[0]);\n const t = toDate(preset.value[1]);\n commit(f, t);\n setOpen(false);\n onOpenChange?.(false);\n }}\n className=\"text-left px-3 py-1.5 text-sm text-[#181918] rounded hover:bg-[rgba(0,0,0,0.04)] transition-colors\"\n >\n {preset.label}\n </button>\n ))}\n </div>\n )}\n <CalendarPane\n viewDate={viewDate}\n from={from}\n to={to}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n onDayClick={handleDayClick}\n isDisabledDate={isDisabledDate}\n firstDayOfWeek={firstDayOfWeek}\n showLeftArrows\n showRightArrows={effectiveSinglePanel}\n onShiftMonth={(delta) =>\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1))\n }\n onShiftYear={(delta) =>\n setViewDate(new Date(viewDate.getFullYear() + delta, viewDate.getMonth(), 1))\n }\n accentColor={accentColor}\n rangeBgColor={resolvedRangeBg}\n rangeTextColor={resolvedRangeText}\n />\n {!effectiveSinglePanel && (\n <>\n <div className=\"w-px bg-[#F0F0F0] mx-2\" />\n <CalendarPane\n viewDate={new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1)}\n from={from}\n to={to}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n onDayClick={handleDayClick}\n isDisabledDate={isDisabledDate}\n firstDayOfWeek={firstDayOfWeek}\n showLeftArrows={false}\n showRightArrows\n onShiftMonth={(delta) =>\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1))\n }\n onShiftYear={(delta) =>\n setViewDate(new Date(viewDate.getFullYear() + delta, viewDate.getMonth(), 1))\n }\n accentColor={accentColor}\n rangeBgColor={resolvedRangeBg}\n rangeTextColor={resolvedRangeText}\n />\n </>\n )}\n </div>\n </>,\n document.body\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nDateRangePickerBase.displayName = 'DateRangePickerBase';\n\nconst ControlledDateRangePicker: React.FC<\n DateRangePickerProps & { control: NonNullable<DateRangePickerProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <DateRangePickerBase\n {...rest}\n value={field.value}\n onChange={(range, strRange) => {\n field.onChange(range);\n rest.onChange?.(range, strRange);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledDateRangePicker control={control} name={name} {...props} />;\n }\n return <DateRangePickerBase ref={ref} name={name} {...props} />;\n }\n);\nDateRangePicker.displayName = 'DateRangePicker';\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { Input } from './Input';\nimport type { InputProps } from './Input';\n\nexport interface AmountInputProps\n extends Omit<InputProps, 'onChange' | 'value' | 'control' | 'type'> {\n value?: string | number;\n onChange?: (value: string, event?: React.ChangeEvent<HTMLInputElement>) => void;\n decimals?: number;\n enforceDecimals?: boolean;\n allowDecimals?: boolean;\n thousandSeparator?: string;\n decimalSeparator?: string;\n control?: Control<any>;\n}\n\nconst escapeRegex = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst buildFormat = (\n raw: string,\n opts: {\n decimals: number;\n allowDecimals: boolean;\n thousandSep: string;\n decimalSep: string;\n }\n): string => {\n const { decimals, allowDecimals, thousandSep, decimalSep } = opts;\n if (!raw) return '';\n\n const parts = raw.split('.');\n const integerPart = parts[0].replace(/\\D/g, '');\n const decimalPart = parts[1] !== undefined ? parts[1].replace(/\\D/g, '').slice(0, decimals) : undefined;\n\n const formattedInt = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSep);\n\n if (!allowDecimals) return formattedInt;\n if (decimalPart === undefined) return formattedInt;\n return `${formattedInt}${decimalSep}${decimalPart}`;\n};\n\nconst toRawNumber = (\n display: string,\n opts: { thousandSep: string; decimalSep: string }\n): string => {\n if (!display) return '';\n const { thousandSep, decimalSep } = opts;\n const noThousand = display.split(escapeRegex(thousandSep)).join('');\n // Convert local decimal separator → '.' for the raw value\n if (decimalSep === '.') return noThousand;\n return noThousand.replace(decimalSep, '.');\n};\n\nconst padDecimals = (raw: string, decimals: number): string => {\n if (!raw) return '';\n const parts = raw.split('.');\n const intPart = parts[0] || '0';\n let decPart = parts[1] ?? '';\n if (decPart.length < decimals) decPart = decPart.padEnd(decimals, '0');\n else decPart = decPart.slice(0, decimals);\n return decimals > 0 ? `${intPart}.${decPart}` : intPart;\n};\n\nconst AmountInputBase = React.forwardRef<HTMLInputElement, Omit<AmountInputProps, 'control'>>(\n (\n {\n value: externalValue,\n onChange,\n decimals = 2,\n enforceDecimals = false,\n allowDecimals = true,\n thousandSeparator = ',',\n decimalSeparator = '.',\n onBlur,\n onFocus,\n inputMode,\n ...props\n },\n ref\n ) => {\n const formatOpts = {\n decimals,\n allowDecimals,\n thousandSep: thousandSeparator,\n decimalSep: decimalSeparator,\n };\n const rawOpts = { thousandSep: thousandSeparator, decimalSep: decimalSeparator };\n\n const [displayValue, setDisplayValue] = useState<string>(() => {\n if (externalValue === undefined || externalValue === null || externalValue === '') return '';\n const raw = String(externalValue);\n const padded = enforceDecimals && allowDecimals ? padDecimals(raw, decimals) : raw;\n return buildFormat(padded, formatOpts);\n });\n\n const innerRef = useRef<HTMLInputElement | null>(null);\n const setRef = (el: HTMLInputElement | null) => {\n innerRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n };\n\n useEffect(() => {\n if (externalValue === undefined) return;\n const raw = externalValue === null || externalValue === '' ? '' : String(externalValue);\n const padded = enforceDecimals && allowDecimals && raw ? padDecimals(raw, decimals) : raw;\n setDisplayValue(buildFormat(padded, formatOpts));\n }, [externalValue, enforceDecimals, allowDecimals, decimals, thousandSeparator, decimalSeparator]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const cursor = input.selectionStart ?? 0;\n const before = displayValue;\n\n const rawIn = toRawNumber(input.value, rawOpts);\n\n // Only digits and at most one decimal separator\n const cleaned = (() => {\n if (!allowDecimals) return rawIn.replace(/\\D/g, '');\n const [intP, ...rest] = rawIn.split('.');\n const intOnly = intP.replace(/\\D/g, '');\n if (rest.length === 0) return intOnly;\n const decOnly = rest.join('').replace(/\\D/g, '').slice(0, decimals);\n return `${intOnly}.${decOnly}`;\n })();\n\n const formatted = buildFormat(cleaned, formatOpts);\n setDisplayValue(formatted);\n\n // Re-position cursor\n const diff = formatted.length - before.length;\n requestAnimationFrame(() => {\n if (!innerRef.current) return;\n const next = Math.max(0, Math.min(formatted.length, cursor + diff));\n innerRef.current.setSelectionRange(next, next);\n });\n\n onChange?.(cleaned, e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (enforceDecimals && allowDecimals && displayValue) {\n const raw = toRawNumber(displayValue, rawOpts);\n const padded = padDecimals(raw, decimals);\n const formatted = buildFormat(padded, formatOpts);\n setDisplayValue(formatted);\n onChange?.(padded);\n }\n onBlur?.(e);\n };\n\n return (\n <Input\n ref={setRef}\n {...props}\n value={displayValue}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={handleBlur}\n inputMode={inputMode ?? (allowDecimals ? 'decimal' : 'numeric')}\n />\n );\n }\n);\nAmountInputBase.displayName = 'AmountInputBase';\n\nconst ControlledAmountInput: React.FC<\n AmountInputProps & { control: NonNullable<AmountInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <AmountInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(value) => field.onChange(value)}\n onBlur={() => field.onBlur()}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const AmountInput = React.forwardRef<HTMLInputElement, AmountInputProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledAmountInput control={control} name={name} {...props} />;\n }\n return <AmountInputBase ref={ref} name={name} {...props} />;\n }\n);\nAmountInput.displayName = 'AmountInput';\n","import React, { useState, useRef, useEffect } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport type FileUploadStatus = 'idle' | 'uploading' | 'done' | 'error';\n\nexport interface UploadedFile {\n id: string;\n file: File;\n name: string;\n size: number;\n type: string;\n url?: string;\n thumbnailUrl?: string;\n status: FileUploadStatus;\n progress: number;\n error?: string;\n}\n\nexport interface FileUploadProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: React.ReactNode;\n error?: string;\n helperText?: string;\n\n value?: UploadedFile[];\n defaultValue?: UploadedFile[];\n onChange?: (files: UploadedFile[]) => void;\n onRemove?: (file: UploadedFile) => void;\n onPreview?: (file: UploadedFile) => void;\n showPreviewAction?: boolean;\n previewActionText?: string;\n previewButtonVariant?: 'pill' | 'text';\n showRemove?: boolean;\n\n accept?: string;\n multiple?: boolean;\n maxSize?: number;\n maxFiles?: number;\n fileTypesLabel?: string;\n\n uploadText?: React.ReactNode;\n browseText?: string | React.ReactNode;\n hintText?: React.ReactNode;\n dropZoneIcon?: React.ReactNode;\n\n onUpload?: (\n file: File,\n helpers: {\n onProgress: (pct: number) => void;\n }\n ) => Promise<{ url?: string; thumbnailUrl?: string } | void>;\n\n showPreview?: boolean;\n previewLayout?: 'list' | 'grid';\n keepInputOnUpload?: boolean;\n\n className?: string;\n style?: React.CSSProperties;\n dropzoneClassName?: string;\n dropzoneStyle?: React.CSSProperties;\n\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n dropzoneBgColor?: string;\n\n control?: Control<any>;\n name?: string;\n id?: string;\n}\n\nconst formatBytes = (bytes: number): string => {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;\n};\n\nconst getFileExt = (name: string): string => {\n const parts = name.split('.');\n return parts.length > 1 ? (parts.pop() as string).toLowerCase() : '';\n};\n\nconst isImage = (file: File | UploadedFile): boolean => {\n const type = 'type' in file ? file.type : (file as File).type;\n return type?.startsWith('image/') || false;\n};\n\nconst makeId = () => `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n\nconst DownloadArrowIcon: React.FC<{ color?: string; size?: number }> = ({\n color = '#181918',\n size = 20,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17.5 12.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V12.5M14.1667 8.33333L10 12.5M10 12.5L5.83333 8.33333M10 12.5V2.5\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst FileIcon: React.FC<{ ext: string; size?: number }> = ({ ext, size = 36 }) => {\n const palette: Record<string, string> = {\n pdf: '#EC615B',\n doc: '#4A9FD8',\n docx: '#4A9FD8',\n xls: '#5FB894',\n xlsx: '#5FB894',\n png: '#9B59D8',\n jpg: '#9B59D8',\n jpeg: '#9B59D8',\n };\n const color = palette[ext] ?? '#8C8C8C';\n return (\n <svg width={size} height={size} viewBox=\"0 0 36 36\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M8 4h14l6 6v22a2 2 0 01-2 2H8a2 2 0 01-2-2V6a2 2 0 012-2z\"\n fill={hexWithAlpha(color, 0.1)}\n stroke={color}\n strokeWidth=\"1.3\"\n />\n <path d=\"M22 4v6h6\" stroke={color} strokeWidth=\"1.3\" strokeLinejoin=\"round\" />\n <text\n x=\"18\"\n y=\"26\"\n textAnchor=\"middle\"\n fill={color}\n fontSize=\"7\"\n fontFamily=\"sans-serif\"\n fontWeight=\"700\"\n >\n {ext.toUpperCase().slice(0, 4)}\n </text>\n </svg>\n );\n};\n\nconst TrashIcon: React.FC<{ color?: string; size?: number }> = ({\n color = '#181918',\n size = 20,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.5 2.5H12.5M2.5 5H17.5M15.8333 5L15.2489 13.7661C15.1612 15.0813 15.1174 15.7389 14.8333 16.2375C14.5833 16.6765 14.206 17.0294 13.7514 17.2497C13.235 17.5 12.5759 17.5 11.2578 17.5H8.74221C7.42409 17.5 6.76503 17.5 6.24861 17.2497C5.79396 17.0294 5.41674 16.6765 5.16665 16.2375C4.88259 15.7389 4.83875 15.0813 4.75107 13.7661L4.16667 5M8.33333 8.75V12.9167M11.6667 8.75V12.9167\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst Spinner: React.FC<{ size?: number; color?: string }> = ({ size = 20, color = '#EC615B' }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"shekel-spin\"\n style={{ color }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.2\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst FileUploadBase: React.FC<Omit<FileUploadProps, 'control'>> = (props) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n required,\n disabled,\n loading,\n loadingText = 'Uploading…',\n error,\n helperText,\n value: externalValue,\n defaultValue,\n onChange,\n onRemove,\n onPreview,\n showPreviewAction = true,\n previewActionText = 'View',\n previewButtonVariant = 'pill',\n showRemove = true,\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n fileTypesLabel,\n uploadText = 'Drag and drop your document here or',\n browseText = 'Browse',\n hintText,\n dropZoneIcon,\n onUpload,\n showPreview = true,\n previewLayout = 'list',\n keepInputOnUpload = true,\n className = '',\n style,\n dropzoneClassName = '',\n dropzoneStyle,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor = '#D9D9D9',\n dropzoneBgColor = '#FFFFFF',\n id,\n } = props;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const inputRef = useRef<HTMLInputElement>(null);\n const isControlled = externalValue !== undefined;\n const [innerFiles, setInnerFiles] = useState<UploadedFile[]>(defaultValue ?? []);\n const files = isControlled ? (externalValue as UploadedFile[]) : innerFiles;\n\n const [isDragging, setIsDragging] = useState(false);\n const [dropError, setDropError] = useState<string>('');\n\n const isError = !!error || !!dropError;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: errorColor }}>*</span> : requiredMark;\n\n const resolvedHint =\n hintText ??\n (fileTypesLabel\n ? `Supported file types: ${fileTypesLabel}${\n maxSize ? `. Max file size, ${formatBytes(maxSize)}` : ''\n }`\n : null);\n\n const commit = (next: UploadedFile[]) => {\n if (!isControlled) setInnerFiles(next);\n onChange?.(next);\n };\n\n const updateFile = (id: string, patch: Partial<UploadedFile>) => {\n setInnerFiles((prev) => {\n const next = prev.map((f) => (f.id === id ? { ...f, ...patch } : f));\n if (!isControlled) return next;\n return prev;\n });\n if (isControlled && externalValue) {\n const next = externalValue.map((f) => (f.id === id ? { ...f, ...patch } : f));\n onChange?.(next);\n }\n };\n\n const validate = (file: File): string | null => {\n if (maxSize && file.size > maxSize) {\n return `\"${file.name}\" exceeds max size of ${formatBytes(maxSize)}`;\n }\n if (accept) {\n const accepted = accept.split(',').map((a) => a.trim().toLowerCase());\n const ext = '.' + getFileExt(file.name);\n const typeMatch = accepted.some((a) => {\n if (a.startsWith('.')) return a === ext;\n if (a.endsWith('/*')) return file.type.startsWith(a.replace('/*', '/'));\n return file.type === a;\n });\n if (!typeMatch) return `\"${file.name}\" is not an allowed file type`;\n }\n return null;\n };\n\n const addFiles = async (newFiles: File[]) => {\n setDropError('');\n if (newFiles.length === 0) return;\n\n if (!multiple) newFiles = newFiles.slice(0, 1);\n if (maxFiles && files.length + newFiles.length > maxFiles) {\n setDropError(`Max ${maxFiles} files allowed`);\n return;\n }\n\n const validationErrors: string[] = [];\n const accepted: UploadedFile[] = [];\n\n for (const file of newFiles) {\n const err = validate(file);\n if (err) {\n validationErrors.push(err);\n continue;\n }\n const thumbnailUrl = isImage(file) ? URL.createObjectURL(file) : undefined;\n accepted.push({\n id: makeId(),\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n thumbnailUrl,\n status: onUpload ? 'uploading' : 'done',\n progress: onUpload ? 0 : 100,\n });\n }\n\n if (validationErrors.length > 0) setDropError(validationErrors[0]);\n\n let next = multiple ? [...files, ...accepted] : accepted;\n if (maxFiles) next = next.slice(0, maxFiles);\n commit(next);\n\n if (onUpload) {\n for (const uploaded of accepted) {\n try {\n const result = await onUpload(uploaded.file, {\n onProgress: (pct) => updateFile(uploaded.id, { progress: pct }),\n });\n updateFile(uploaded.id, { status: 'done', progress: 100, ...(result ?? {}) });\n } catch (e: any) {\n updateFile(uploaded.id, {\n status: 'error',\n progress: 0,\n error: e?.message ?? 'Upload failed',\n });\n }\n }\n }\n };\n\n const handleFileInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!e.target.files) return;\n addFiles(Array.from(e.target.files));\n if (!keepInputOnUpload && inputRef.current) inputRef.current.value = '';\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n const dt = e.dataTransfer;\n addFiles(Array.from(dt.files));\n };\n\n const handleRemove = (file: UploadedFile) => {\n if (file.thumbnailUrl) URL.revokeObjectURL(file.thumbnailUrl);\n const next = files.filter((f) => f.id !== file.id);\n commit(next);\n onRemove?.(file);\n };\n\n useEffect(() => {\n return () => {\n files.forEach((f) => {\n if (f.thumbnailUrl) URL.revokeObjectURL(f.thumbnailUrl);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const anyUploading = files.some((f) => f.status === 'uploading');\n const isBusy = !!loading || anyUploading;\n const zoneDisabled = disabled || isBusy;\n\n const dropzoneBorder = isError\n ? errorColor\n : isDragging\n ? accentColor\n : isBusy\n ? accentColor\n : borderColor;\n const dropzoneBg = isDragging\n ? hexWithAlpha(accentColor, 0.04)\n : isBusy\n ? hexWithAlpha(accentColor, 0.02)\n : dropzoneBgColor;\n\n const shouldHideDropzone =\n !multiple && files.length > 0 && showPreview && previewLayout === 'list';\n\n return (\n <div className={`w-full ${className}`} style={style}>\n <style>{`\n @keyframes shekel-spin { to { transform: rotate(360deg); } }\n .shekel-spin { animation: shekel-spin 0.8s linear infinite; transform-origin: center; }\n `}</style>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n\n {!shouldHideDropzone && (\n <div\n onClick={() => !zoneDisabled && inputRef.current?.click()}\n onDragOver={(e) => {\n e.preventDefault();\n if (!zoneDisabled) setIsDragging(true);\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={handleDrop}\n aria-busy={isBusy}\n className={`flex flex-col sm:flex-row items-center gap-4 sm:gap-6 px-4 sm:px-6 py-5 sm:py-6 rounded-[12px] transition-all duration-200 ${\n zoneDisabled ? 'cursor-not-allowed' : 'cursor-pointer'\n } ${disabled ? 'opacity-60' : ''} ${dropzoneClassName}`}\n style={{\n border: `1.5px dashed ${dropzoneBorder}`,\n backgroundColor: dropzoneBg,\n ...dropzoneStyle,\n }}\n >\n <div className=\"shrink-0\">\n {isBusy ? (\n <Spinner size={40} color={accentColor} />\n ) : (\n dropZoneIcon ?? (\n <DownloadArrowIcon color={isDragging ? accentColor : '#181918'} size={20} />\n )\n )}\n </div>\n <div className=\"flex-1 min-w-0 text-center\">\n {isBusy ? (\n <div className=\"text-[#181918] text-sm\" style={{ color: accentColor }}>\n {loadingText}\n </div>\n ) : (\n <div className=\"text-[#181918] text-sm\">\n {uploadText}{' '}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n if (!zoneDisabled) inputRef.current?.click();\n }}\n className=\"underline font-medium\"\n style={{ color: accentColor }}\n disabled={zoneDisabled}\n >\n {browseText}\n </button>{' '}\n to upload\n </div>\n )}\n {resolvedHint && !isBusy && (\n <div className=\"text-xs text-[#616161] mt-1\">{resolvedHint}</div>\n )}\n </div>\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={zoneDisabled}\n onChange={handleFileInput}\n className=\"hidden\"\n />\n </div>\n )}\n\n {showPreview && files.length > 0 && (\n <div\n className={\n previewLayout === 'grid'\n ? 'grid grid-cols-2 md:grid-cols-3 gap-3 mt-3'\n : 'flex flex-col gap-2 mt-3'\n }\n >\n {files.map((file) =>\n previewLayout === 'grid' ? (\n <GridPreviewItem\n key={file.id}\n file={file}\n onRemove={handleRemove}\n onPreview={onPreview}\n showPreviewAction={showPreviewAction}\n previewActionText={previewActionText}\n previewButtonVariant={previewButtonVariant}\n showRemove={showRemove}\n accentColor={accentColor}\n errorColor={errorColor}\n disabled={disabled}\n />\n ) : (\n <ListPreviewItem\n key={file.id}\n file={file}\n onRemove={handleRemove}\n onPreview={onPreview}\n showPreviewAction={showPreviewAction}\n previewActionText={previewActionText}\n previewButtonVariant={previewButtonVariant}\n showRemove={showRemove}\n accentColor={accentColor}\n errorColor={errorColor}\n disabled={disabled}\n />\n )\n )}\n </div>\n )}\n\n {(error || dropError) && (\n <div className=\"flex items-center mt-2 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error || dropError}\n </div>\n )}\n {!error && !dropError && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n};\n\ninterface PreviewItemProps {\n file: UploadedFile;\n onRemove: (f: UploadedFile) => void;\n onPreview?: (f: UploadedFile) => void;\n showPreviewAction?: boolean;\n previewActionText?: string;\n previewButtonVariant?: 'pill' | 'text';\n showRemove?: boolean;\n accentColor: string;\n errorColor: string;\n disabled?: boolean;\n}\n\nconst defaultPreview = (file: UploadedFile) => {\n const url = file.url ?? file.thumbnailUrl;\n if (!url) return;\n if (typeof window !== 'undefined') window.open(url, '_blank', 'noopener');\n};\n\nconst ListPreviewItem: React.FC<PreviewItemProps> = ({\n file,\n onRemove,\n onPreview,\n showPreviewAction = true,\n previewActionText = 'View',\n previewButtonVariant = 'pill',\n showRemove = true,\n accentColor,\n errorColor,\n disabled,\n}) => {\n const ext = getFileExt(file.name);\n const isImg = isImage(file);\n const isUploading = file.status === 'uploading';\n const isErr = file.status === 'error';\n const handlePreview = () => {\n if (onPreview) onPreview(file);\n else defaultPreview(file);\n };\n const canPreview = !!(onPreview || file.url || file.thumbnailUrl);\n\n return (\n <div className=\"flex items-center gap-3 border border-[#E6E6E6] rounded-[12px] px-3 py-2 bg-white\">\n <div className=\"shrink-0 flex items-center justify-center w-10 h-10 rounded-lg bg-[#F5F5F5] overflow-hidden\">\n {isImg && file.thumbnailUrl ? (\n <img src={file.thumbnailUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n ) : (\n <FileIcon ext={ext} size={28} />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-[#181918] truncate\">{file.name}</div>\n {(isUploading || isErr) && (\n <div className=\"text-xs mt-0.5 flex items-center gap-2\">\n {isUploading && <span className=\"text-[#8C8C8C]\">Uploading {file.progress}%</span>}\n {isErr && <span style={{ color: errorColor }}>{file.error ?? 'Upload failed'}</span>}\n </div>\n )}\n {isUploading && (\n <div className=\"mt-1 h-1 bg-[#F0F0F0] rounded overflow-hidden\">\n <div\n className=\"h-full transition-all duration-200\"\n style={{ width: `${file.progress}%`, backgroundColor: accentColor }}\n />\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-2 shrink-0\">\n {showPreviewAction && canPreview && !isUploading && (\n previewButtonVariant === 'pill' ? (\n <button\n type=\"button\"\n onClick={handlePreview}\n className=\"inline-flex items-center gap-1.5 px-3 h-8 rounded-lg bg-[#F5F5F5] text-sm font-medium text-[#181918] hover:bg-[#EBEBEB] transition-colors\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M1.6 8c1-2.4 3.6-4.4 6.4-4.4s5.4 2 6.4 4.4c-1 2.4-3.6 4.4-6.4 4.4s-5.4-2-6.4-4.4z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n </svg>\n {previewActionText}\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handlePreview}\n className=\"text-sm font-medium hover:underline\"\n style={{ color: accentColor }}\n >\n {previewActionText}\n </button>\n )\n )}\n {showRemove && !disabled && (\n <button\n type=\"button\"\n onClick={() => onRemove(file)}\n className=\"flex items-center justify-center w-8 h-8 rounded-md hover:bg-[#F5F5F5] transition-colors\"\n aria-label=\"Remove file\"\n >\n <TrashIcon color=\"#181918\" size={20} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nconst GridPreviewItem: React.FC<PreviewItemProps> = ({\n file,\n onRemove,\n onPreview,\n showPreviewAction = true,\n previewActionText = 'Preview',\n accentColor,\n errorColor,\n disabled,\n}) => {\n const ext = getFileExt(file.name);\n const isImg = isImage(file);\n const handlePreview = () => {\n if (onPreview) onPreview(file);\n else defaultPreview(file);\n };\n const canPreview = !!(onPreview || file.url || file.thumbnailUrl);\n\n return (\n <div className=\"relative border border-[#E6E6E6] rounded-[12px] overflow-hidden bg-white group\">\n <div className=\"aspect-square flex items-center justify-center bg-[#F5F5F5]\">\n {isImg && file.thumbnailUrl ? (\n <img src={file.thumbnailUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n ) : (\n <FileIcon ext={ext} size={48} />\n )}\n </div>\n <div className=\"p-2\">\n <div className=\"text-xs text-[#181918] truncate font-medium\">{file.name}</div>\n <div className=\"text-[10px] text-[#8C8C8C] mt-0.5 flex items-center gap-1\">\n <span>{formatBytes(file.size)}</span>\n {file.status === 'uploading' && <span>· {file.progress}%</span>}\n {file.status === 'error' && <span style={{ color: errorColor }}>· Failed</span>}\n </div>\n {file.status === 'uploading' && (\n <div className=\"mt-1 h-1 bg-[#F0F0F0] rounded overflow-hidden\">\n <div\n className=\"h-full transition-all duration-200\"\n style={{ width: `${file.progress}%`, backgroundColor: accentColor }}\n />\n </div>\n )}\n </div>\n <div className=\"absolute top-2 right-2 flex gap-1\">\n {showPreviewAction && canPreview && file.status !== 'uploading' && (\n <button\n type=\"button\"\n onClick={handlePreview}\n aria-label={previewActionText}\n className=\"flex items-center justify-center w-7 h-7 rounded-full bg-white/90 border border-[#E6E6E6] hover:bg-white shadow-sm text-xs font-medium\"\n style={{ color: accentColor }}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M1.6 8c1-2.4 3.6-4.4 6.4-4.4s5.4 2 6.4 4.4c-1 2.4-3.6 4.4-6.4 4.4s-5.4-2-6.4-4.4z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n </svg>\n </button>\n )}\n {!disabled && (\n <button\n type=\"button\"\n onClick={() => onRemove(file)}\n aria-label=\"Remove file\"\n className=\"flex items-center justify-center w-7 h-7 rounded-full bg-white/90 border border-[#E6E6E6] hover:bg-white shadow-sm\"\n >\n <TrashIcon color=\"#181918\" size={14} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nconst ControlledFileUpload: React.FC<\n FileUploadProps & { control: NonNullable<FileUploadProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <FileUploadBase\n {...rest}\n value={field.value ?? []}\n onChange={(files) => {\n field.onChange(files);\n rest.onChange?.(files);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const FileUpload: React.FC<FileUploadProps> = ({ control, name, ...props }) => {\n if (control && name) {\n return <ControlledFileUpload control={control} name={name} {...props} />;\n }\n return <FileUploadBase name={name} {...props} />;\n};\n\nexport default FileUpload;\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport interface RadioCardOption<V extends string | number = string> {\n value: V;\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioCardGroupProps<V extends string | number = string> {\n options: RadioCardOption<V>[];\n value?: V;\n defaultValue?: V;\n onChange?: (value: V, option: RadioCardOption<V>) => void;\n\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n required?: boolean;\n error?: string;\n helperText?: string;\n disabled?: boolean;\n\n layout?: 'row' | 'column';\n columns?: number;\n gap?: number | string;\n equalWidth?: boolean;\n cardHeight?: number | string;\n iconSize?: number;\n titleSize?: number;\n descriptionSize?: number;\n radioSize?: number;\n\n className?: string;\n style?: React.CSSProperties;\n cardClassName?: string;\n cardStyle?: React.CSSProperties;\n\n // Colors\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n selectedBorderColor?: string;\n selectedGlowColor?: string;\n textColor?: string;\n descriptionColor?: string;\n cardBgColor?: string;\n selectedCardBgColor?: string;\n\n // Radio button\n radioBorderWidth?: number;\n radioBorderColor?: string;\n\n // Card border / shadow\n variant?: 'border' | 'shadow' | 'both';\n cardBorderWidth?: number;\n cardBorderRadius?: number;\n cardShadow?: string;\n selectedCardShadow?: string;\n\n // Typography\n titleWeight?: number | string;\n descriptionWeight?: number | string;\n titleLineHeight?: number;\n descriptionLineHeight?: number;\n\n name?: string;\n control?: Control<any>;\n id?: string;\n}\n\nconst RadioIcon: React.FC<{\n selected: boolean;\n disabled?: boolean;\n accentColor: string;\n size?: number;\n borderWidth?: number;\n borderColor?: string;\n}> = ({ selected, disabled, accentColor, size = 24, borderWidth = 1.5, borderColor = '#D1D1D1' }) => {\n if (selected) {\n return (\n <span\n className=\"shrink-0 inline-flex items-center justify-center rounded-full\"\n style={{\n width: size,\n height: size,\n border: `${borderWidth}px solid ${accentColor}`,\n }}\n >\n <span\n className=\"block rounded-full\"\n style={{\n width: Math.max(8, size - 12),\n height: Math.max(8, size - 12),\n backgroundColor: accentColor,\n }}\n />\n </span>\n );\n }\n return (\n <span\n className=\"shrink-0 block rounded-full\"\n style={{\n width: size,\n height: size,\n border: `${borderWidth}px solid ${disabled ? '#D9D9D9' : borderColor}`,\n backgroundColor: 'transparent',\n }}\n />\n );\n};\n\nfunction RadioCardGroupBase<V extends string | number = string>({\n options,\n value: externalValue,\n defaultValue,\n onChange,\n\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n required,\n error,\n helperText,\n disabled,\n\n layout = 'row',\n columns,\n gap = 16,\n equalWidth = true,\n cardHeight = 94,\n iconSize = 20,\n titleSize = 12,\n descriptionSize = 12,\n radioSize = 24,\n\n className = '',\n style,\n cardClassName = '',\n cardStyle,\n\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor = '#EEEEEE',\n selectedBorderColor,\n selectedGlowColor,\n textColor = '#131413',\n descriptionColor = '#8C8C8C',\n cardBgColor = 'white',\n selectedCardBgColor,\n radioBorderWidth = 1.5,\n radioBorderColor = '#D1D1D1',\n variant = 'border',\n cardBorderWidth = 1.5,\n cardBorderRadius = 16,\n cardShadow,\n selectedCardShadow,\n titleWeight = 600,\n descriptionWeight = 400,\n titleLineHeight = 1.3,\n descriptionLineHeight = 1.3,\n\n name,\n id,\n}: Omit<RadioCardGroupProps<V>, 'control'>) {\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = React.useState<V | undefined>(defaultValue);\n const value = isControlled ? externalValue : innerValue;\n\n const reactId = React.useId();\n const groupId = id ?? reactId;\n\n const isError = !!error;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: errorColor }}>*</span> : requiredMark;\n\n const resolvedGap = typeof gap === 'number' ? `${gap}px` : gap;\n const resolvedSelectedBorder = selectedBorderColor ?? accentColor;\n const resolvedGlow = selectedGlowColor ?? hexWithAlpha(accentColor, 0.2);\n\n const handleSelect = (opt: RadioCardOption<V>) => {\n if (disabled || opt.disabled) return;\n if (!isControlled) setInnerValue(opt.value);\n onChange?.(opt.value, opt);\n };\n\n const containerStyle: React.CSSProperties = {\n display: 'grid',\n gap: resolvedGap,\n gridTemplateColumns: columns\n ? `repeat(${columns}, minmax(0, 1fr))`\n : layout === 'row'\n ? equalWidth\n ? 'repeat(auto-fit, minmax(180px, 1fr))'\n : `repeat(${options.length}, auto)`\n : '1fr',\n ...style,\n };\n\n return (\n <div className=\"w-full\" id={groupId}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <span\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </span>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n\n <div role=\"radiogroup\" aria-labelledby={label ? groupId : undefined} className={className} style={containerStyle}>\n {options.map((opt) => {\n const selected = value === opt.value;\n const optDisabled = !!disabled || !!opt.disabled;\n\n return (\n <div\n key={opt.value}\n role=\"radio\"\n aria-checked={selected}\n aria-disabled={optDisabled}\n tabIndex={optDisabled ? -1 : 0}\n onClick={() => handleSelect(opt)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleSelect(opt);\n }\n }}\n className={`relative transition-all duration-200 ${\n optDisabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\n } ${cardClassName}`}\n style={{\n height: typeof cardHeight === 'number' ? `${cardHeight}px` : cardHeight,\n padding: '14px 16px',\n borderRadius: cardBorderRadius,\n backgroundColor: selected && selectedCardBgColor ? selectedCardBgColor : cardBgColor,\n border: variant === 'shadow' ? 'none' : `${cardBorderWidth}px solid ${selected ? resolvedSelectedBorder : borderColor}`,\n boxShadow: selected\n ? selectedCardShadow ?? (variant === 'border' ? `0 0 0 4px ${resolvedGlow}` : `0 4px 16px ${resolvedGlow}`)\n : cardShadow ?? (variant === 'shadow' || variant === 'both' ? '0 1px 4px rgba(0,0,0,0.08)' : 'none'),\n ...cardStyle,\n }}\n >\n <div className=\"flex items-center gap-3 h-full\">\n <div className=\"flex-1 min-w-0 flex flex-col justify-center\">\n {opt.icon && (\n <div\n className=\"shrink-0 flex items-center\"\n style={{ color: textColor, height: iconSize }}\n >\n <span\n className=\"inline-flex items-center justify-center\"\n style={{ width: iconSize, height: iconSize }}\n >\n {opt.icon}\n </span>\n </div>\n )}\n <div\n className=\"truncate\"\n style={{ color: textColor, fontSize: titleSize, fontWeight: titleWeight, marginTop: opt.icon ? 6 : 0, lineHeight: titleLineHeight }}\n >\n {opt.label}\n </div>\n {opt.description && (\n <div\n className=\"truncate\"\n style={{ color: descriptionColor, fontSize: descriptionSize, fontWeight: descriptionWeight, marginTop: 2, lineHeight: descriptionLineHeight }}\n >\n {opt.description}\n </div>\n )}\n </div>\n <div className=\"shrink-0 flex items-center\">\n <RadioIcon\n selected={selected}\n disabled={optDisabled}\n accentColor={accentColor}\n size={radioSize}\n borderWidth={radioBorderWidth}\n borderColor={radioBorderColor}\n />\n </div>\n </div>\n {name && (\n <input type=\"hidden\" name={name} value={selected ? String(opt.value) : ''} readOnly />\n )}\n </div>\n );\n })}\n </div>\n\n {error && (\n <div className=\"flex items-center mt-2 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n}\n\nfunction ControlledRadioCardGroup<V extends string | number = string>({\n control,\n name,\n error: errorProp,\n ...rest\n}: RadioCardGroupProps<V> & { control: NonNullable<RadioCardGroupProps<V>['control']>; name: string }) {\n const { field, fieldState } = useController({ control, name });\n return (\n <RadioCardGroupBase<V>\n {...rest}\n name={name}\n value={field.value}\n onChange={(v, opt) => {\n field.onChange(v);\n rest.onChange?.(v, opt);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n}\n\nexport function RadioCardGroup<V extends string | number = string>({\n control,\n name,\n ...props\n}: RadioCardGroupProps<V>) {\n if (control && name) {\n return <ControlledRadioCardGroup<V> control={control} name={name} {...props} />;\n }\n return <RadioCardGroupBase<V> name={name} {...props} />;\n}\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface ToggleProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean, event: React.SyntheticEvent) => void;\n\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelPosition?: 'left' | 'right';\n\n disabled?: boolean;\n loading?: boolean;\n\n size?: 'sm' | 'md' | 'lg';\n trackWidth?: number;\n trackHeight?: number;\n knobSize?: number;\n\n onColor?: string;\n offColor?: string;\n knobColor?: string;\n loadingColor?: string;\n\n checkedIcon?: React.ReactNode;\n uncheckedIcon?: React.ReactNode;\n\n name?: string;\n id?: string;\n className?: string;\n style?: React.CSSProperties;\n\n control?: Control<any>;\n autoFocus?: boolean;\n tabIndex?: number;\n}\n\nconst SIZE_MAP = {\n sm: { trackWidth: 28, trackHeight: 16, knobSize: 12 },\n md: { trackWidth: 36, trackHeight: 20, knobSize: 16 },\n lg: { trackWidth: 48, trackHeight: 26, knobSize: 22 },\n};\n\nconst ToggleBase = React.forwardRef<HTMLButtonElement, Omit<ToggleProps, 'control'>>(\n (props, ref) => {\n const {\n checked: externalChecked,\n defaultChecked,\n onChange,\n label,\n labelClassName = '',\n labelStyle,\n labelPosition = 'right',\n disabled,\n loading,\n size = 'md',\n trackWidth: tw,\n trackHeight: th,\n knobSize: ks,\n onColor = '#EC615B',\n offColor = '#8C9196',\n knobColor = '#FFFFFF',\n loadingColor,\n checkedIcon,\n uncheckedIcon,\n name,\n id,\n className = '',\n style,\n autoFocus,\n tabIndex,\n } = props;\n\n const isControlled = externalChecked !== undefined;\n const [innerChecked, setInnerChecked] = React.useState<boolean>(defaultChecked ?? false);\n const checked = isControlled ? !!externalChecked : innerChecked;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n\n const { trackWidth: dtw, trackHeight: dth, knobSize: dks } = SIZE_MAP[size];\n const trackWidth = tw ?? dtw;\n const trackHeight = th ?? dth;\n const knobSize = ks ?? dks;\n const padding = (trackHeight - knobSize) / 2;\n const knobOffset = checked ? trackWidth - knobSize - padding : padding;\n\n const handleToggle = (e: React.SyntheticEvent) => {\n if (disabled || loading) return;\n const next = !checked;\n if (!isControlled) setInnerChecked(next);\n onChange?.(next, e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n handleToggle(e);\n } else if (e.key === 'ArrowRight' && !checked) {\n e.preventDefault();\n handleToggle(e);\n } else if (e.key === 'ArrowLeft' && checked) {\n e.preventDefault();\n handleToggle(e);\n }\n };\n\n const trackBg = checked ? onColor : offColor;\n\n const toggleEl = (\n <button\n ref={ref}\n id={inputId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-disabled={disabled || loading}\n disabled={disabled || loading}\n autoFocus={autoFocus}\n tabIndex={tabIndex}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n className={`relative inline-flex items-center shrink-0 rounded-full transition-colors duration-200 ${\n disabled || loading ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\n } ${className}`}\n style={{\n width: trackWidth,\n height: trackHeight,\n backgroundColor: loading ? loadingColor ?? trackBg : trackBg,\n ...style,\n }}\n >\n <span\n aria-hidden\n className=\"absolute top-1/2 rounded-full flex items-center justify-center transition-all duration-200\"\n style={{\n left: knobOffset,\n transform: 'translateY(-50%)',\n width: knobSize,\n height: knobSize,\n backgroundColor: knobColor,\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.15)',\n }}\n >\n {loading ? (\n <svg\n width={knobSize * 0.6}\n height={knobSize * 0.6}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className=\"shekel-toggle-spin\"\n style={{ color: trackBg }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n ) : checked && checkedIcon ? (\n <span style={{ color: trackBg, fontSize: knobSize * 0.5, lineHeight: 1 }}>{checkedIcon}</span>\n ) : !checked && uncheckedIcon ? (\n <span style={{ color: trackBg, fontSize: knobSize * 0.5, lineHeight: 1 }}>{uncheckedIcon}</span>\n ) : null}\n </span>\n {name && <input type=\"hidden\" name={name} value={checked ? 'true' : 'false'} />}\n </button>\n );\n\n if (!label) return toggleEl;\n\n return (\n <>\n <style>{`\n @keyframes shekel-toggle-spin { to { transform: rotate(360deg); } }\n .shekel-toggle-spin { animation: shekel-toggle-spin 0.8s linear infinite; transform-origin: center; }\n `}</style>\n <label\n htmlFor={inputId}\n className={`inline-flex items-center gap-3 ${\n disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer'\n } ${labelClassName}`}\n style={labelStyle}\n >\n {labelPosition === 'left' && (\n <span className=\"text-base text-[#181918] select-none\">{label}</span>\n )}\n {toggleEl}\n {labelPosition === 'right' && (\n <span className=\"text-base text-[#181918] select-none\">{label}</span>\n )}\n </label>\n </>\n );\n }\n);\nToggleBase.displayName = 'ToggleBase';\n\nconst ControlledToggle: React.FC<\n ToggleProps & { control: NonNullable<ToggleProps['control']>; name: string }\n> = ({ control, name, ...rest }) => {\n const { field } = useController({ control, name });\n return (\n <ToggleBase\n {...rest}\n name={name}\n checked={!!field.value}\n onChange={(val, e) => {\n field.onChange(val);\n rest.onChange?.(val, e);\n }}\n />\n );\n};\n\nexport const Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledToggle control={control} name={name} {...props} />;\n }\n return <ToggleBase ref={ref} name={name} {...props} />;\n }\n);\nToggle.displayName = 'Toggle';\n","import React from 'react';\n\nexport interface AvatarProps {\n src?: string;\n name?: string;\n size?: number | 'sm' | 'md' | 'lg' | 'xl';\n shape?: 'circle' | 'square';\n bgColor?: string;\n textColor?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst SIZE_MAP: Record<string, number> = {\n sm: 24,\n md: 32,\n lg: 40,\n xl: 56,\n};\n\nconst initialsFromName = (name?: string) => {\n if (!name) return '';\n const parts = name.trim().split(/\\s+/).slice(0, 2);\n return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n name,\n size = 'md',\n shape = 'circle',\n bgColor = '#F5F5F5',\n textColor = '#181918',\n className = '',\n style,\n}) => {\n const px = typeof size === 'number' ? size : SIZE_MAP[size] ?? 32;\n const initials = initialsFromName(name);\n const fontSize = Math.max(10, Math.round(px * 0.42));\n const shapeClass = shape === 'circle' ? 'rounded-full' : 'rounded-lg';\n\n return (\n <span\n aria-hidden\n className={`inline-flex items-center justify-center shrink-0 overflow-hidden ${shapeClass} ${className}`}\n style={{\n width: px,\n height: px,\n backgroundColor: bgColor,\n color: textColor,\n fontSize,\n fontWeight: 600,\n ...style,\n }}\n >\n {src ? (\n <img src={src} alt={name ?? ''} className=\"w-full h-full object-cover\" />\n ) : initials ? (\n initials\n ) : (\n <svg width={px * 0.6} height={px * 0.6} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 12a4 4 0 100-8 4 4 0 000 8zm0 2c-3.5 0-8 1.8-8 5v1h16v-1c0-3.2-4.5-5-8-5z\"\n fill=\"currentColor\"\n opacity=\"0.4\"\n />\n </svg>\n )}\n </span>\n );\n};\n","import React from 'react';\nimport { Avatar } from '../_Avatar';\n\nexport interface UserPillProps {\n name: string;\n subtitle?: string;\n avatar?: string;\n className?: string;\n size?: 'small' | 'medium' | 'large';\n bgColor?: string;\n onClick?: () => void;\n}\n\nconst SIZE_MAP = {\n small: { avatar: 24, name: 12, subtitle: 10, padding: '4px 10px 4px 4px', gap: 6 },\n medium: { avatar: 30, name: 14, subtitle: 12, padding: '5px 12px 5px 5px', gap: 8 },\n large: { avatar: 36, name: 16, subtitle: 13, padding: '6px 14px 6px 6px', gap: 10 },\n};\n\nexport const UserPill: React.FC<UserPillProps> = ({\n name,\n subtitle,\n avatar,\n className = '',\n size = 'medium',\n bgColor = '#E6E6E6',\n onClick,\n}) => {\n const s = SIZE_MAP[size];\n const clickable = !!onClick;\n return (\n <div\n onClick={onClick}\n className={`inline-flex items-center rounded-full transition-colors ${\n clickable ? 'cursor-pointer hover:opacity-90' : ''\n } ${className}`}\n style={{ backgroundColor: bgColor, padding: s.padding, gap: s.gap }}\n >\n <Avatar src={avatar} name={name} size={s.avatar} bgColor=\"#6B7280\" textColor=\"#FFFFFF\" />\n <div className=\"flex flex-col min-w-0\">\n <span\n className=\"text-[#181918] truncate\"\n style={{ fontSize: s.name, lineHeight: 1.2, fontWeight: 600 }}\n >\n {name}\n </span>\n {subtitle && (\n <span\n className=\"text-[#181918] truncate\"\n style={{ fontSize: s.subtitle, lineHeight: 1.2, marginTop: 2 }}\n >\n {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport default UserPill;\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 '../_Avatar';\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 avatarBgColor?: string;\n avatarTextColor?: string;\n}\n\nexport const UserCard: React.FC<UserCardProps> = ({\n name,\n email,\n role,\n avatar,\n className = '',\n avatarBgColor = '#181918',\n avatarTextColor = '#FFFFFF',\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 px-4 ${className}`}\n >\n <img\n src={cardBorderSvg}\n alt=\"\"\n aria-hidden\n style={{ position: 'absolute', top: -8, left: 0, objectFit: 'cover' }}\n />\n <div className=\"flex gap-4 items-center relative\">\n <Avatar\n src={avatar}\n name={name}\n size={80}\n bgColor={avatarBgColor}\n textColor={avatarTextColor}\n />\n <div className=\"flex flex-col min-w-0\">\n <span\n className=\"text-[#181918]\"\n style={{ fontSize: 16, fontWeight: 600, lineHeight: 1.3 }}\n >\n {name}\n </span>\n <span\n className=\"text-[#181918]\"\n style={{ fontSize: 14, fontWeight: 400, lineHeight: 1.4, marginTop: 4 }}\n >\n {email}\n </span>\n {role && (\n <span\n className=\"text-[#181918]\"\n style={{ fontSize: 14, fontWeight: 400, lineHeight: 1.4, marginTop: 2 }}\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 { SelectInput } from '../Input/SelectInput';\nimport type { SelectInputProps } from '../Input/SelectInput';\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\n extends Omit<SelectInputProps, 'options' | 'value' | 'onChange'> {\n countries?: Country[];\n defaultCountry?: string;\n value?: string;\n onCountryChange?: (countryCode: string) => void;\n showSearch?: boolean;\n flagSize?: number;\n}\n\nconst DEFAULT_COUNTRIES: 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 = DEFAULT_COUNTRIES,\n defaultCountry = 'NG',\n value,\n onCountryChange,\n showSearch = false,\n flagSize = 24,\n ...props\n}) => {\n const options = countries.map((c) => ({\n value: c.code,\n label: (\n <span className=\"inline-flex items-center gap-2\">\n <img\n src={c.flag}\n alt=\"\"\n aria-hidden\n className=\"shrink-0 rounded-full object-cover\"\n style={{ width: flagSize, height: flagSize }}\n />\n <span>{c.code}</span>\n </span>\n ),\n searchLabel: `${c.name} ${c.code}`.toLowerCase(),\n }));\n\n return (\n <SelectInput\n {...props}\n value={value}\n defaultValue={value === undefined ? defaultCountry : undefined}\n options={options}\n showSearch={showSearch}\n filterOption={\n showSearch\n ? (input, opt: any) => opt?.searchLabel?.includes(input.toLowerCase()) ?? false\n : false\n }\n onChange={(v) => onCountryChange?.(v as string)}\n />\n );\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Avatar } from '../_Avatar';\n\nexport interface UserProfileMenuItem {\n key: string;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n danger?: boolean;\n disabled?: boolean;\n divider?: boolean;\n type?: 'divider';\n onClick?: () => void;\n}\n\nexport interface UserProfileDropdownProps {\n name: string;\n role?: string;\n avatarUrl?: string;\n menuItems?: UserProfileMenuItem[];\n onMenuClick?: (key: string) => void;\n className?: string;\n width?: string | number;\n bgColor?: string;\n hoverBgColor?: string;\n}\n\nconst DEFAULT_MENU: UserProfileMenuItem[] = [\n { key: 'profile', label: 'My Profile' },\n { key: 'settings', label: 'Settings' },\n { key: '__div', type: 'divider' },\n { key: 'logout', label: 'Logout', danger: true },\n];\n\nexport const UserProfileDropdown: React.FC<UserProfileDropdownProps> = ({\n name,\n role,\n avatarUrl,\n menuItems = DEFAULT_MENU,\n onMenuClick,\n className = '',\n width,\n bgColor = '#EEEEEE',\n hoverBgColor = '#E5E5E5',\n}) => {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) setOpen(false);\n };\n if (open) document.addEventListener('mousedown', handleOutside);\n return () => document.removeEventListener('mousedown', handleOutside);\n }, [open]);\n\n const handleItemClick = (item: UserProfileMenuItem) => {\n if (item.disabled) return;\n item.onClick?.();\n onMenuClick?.(item.key);\n setOpen(false);\n };\n\n return (\n <div ref={wrapperRef} className={`relative inline-block ${className}`} style={{ width }}>\n <style>{`\n @keyframes shekel-profile-in { from { opacity: 0; transform: scaleY(0.9) translateY(-4px); } to { opacity: 1; transform: scaleY(1) translateY(0); } }\n .shekel-profile-menu { transform-origin: top right; animation: shekel-profile-in 180ms cubic-bezier(0.23, 1, 0.32, 1); }\n `}</style>\n <button\n type=\"button\"\n onClick={() => setOpen((o) => !o)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n className=\"flex items-center gap-2.5 rounded-full border border-[#E6E6E6] transition-colors\"\n style={{\n padding: '5px',\n backgroundColor: open ? hoverBgColor : bgColor,\n width: width ? '100%' : undefined,\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = hoverBgColor)}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = open ? hoverBgColor : bgColor)}\n >\n <Avatar\n src={avatarUrl}\n name={name}\n size={30}\n bgColor=\"#EC615B\"\n textColor=\"#FFFFFF\"\n style={{\n background: 'linear-gradient(135deg, #EC615B 0%, #F59E95 100%)',\n }}\n />\n <div className=\"flex flex-col min-w-0 text-left\">\n <span className=\"text-sm font-bold text-[#000] truncate leading-tight\">{name}</span>\n {role && <span className=\"text-xs text-[#666] truncate leading-tight\">{role}</span>}\n </div>\n <svg\n className={`ml-auto transition-transform duration-200 ${open ? 'rotate-180' : ''}`}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M6 9l6 6 6-6\" stroke=\"#000\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n\n {open && (\n <div\n role=\"menu\"\n className=\"shekel-profile-menu absolute right-0 top-full mt-2 z-50 bg-white rounded-lg overflow-hidden\"\n style={{\n minWidth: 180,\n maxWidth: 'calc(100vw - 16px)',\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n padding: 4,\n }}\n >\n {menuItems.map((item) =>\n item.type === 'divider' || item.divider ? (\n <div key={item.key} className=\"h-px bg-[#F0F0F0] my-1\" />\n ) : (\n <button\n key={item.key}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleItemClick(item)}\n className={`flex items-center gap-2 w-full text-left px-3 py-2 text-sm rounded transition-colors ${\n item.disabled\n ? 'opacity-40 cursor-not-allowed'\n : 'hover:bg-[rgba(0,0,0,0.04)]'\n }`}\n style={{\n color: item.danger ? '#C21919' : '#181918',\n }}\n >\n {item.icon && <span className=\"shrink-0 flex items-center\">{item.icon}</span>}\n {item.label}\n </button>\n )\n )}\n </div>\n )}\n </div>\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 bottomLabel?: string;\n bottomValue?: string | number;\n showLedgerValuePrefix?: boolean;\n bottomIcon?: React.ReactNode | null;\n showCopyButton?: boolean;\n copyValue?: string;\n onCopy?: (value: string) => void;\n copyIconColor?: string;\n bottomTextColor?: string;\n valueFontSize?: number | string;\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 bottomLabel = 'Ledger Balance',\n bottomValue,\n showLedgerValuePrefix = true,\n bottomIcon,\n showCopyButton = false,\n copyValue,\n onCopy,\n copyIconColor,\n bottomTextColor,\n valueFontSize = 32,\n backgroundPattern = 'wave',\n backgroundImage,\n topRight,\n width = 348,\n className = '',\n}) => {\n const [isVisible, setIsVisible] = useState(true);\n const [copied, setCopied] = useState(false);\n\n const handleToggleVisibility = () => {\n setIsVisible(!isVisible);\n if (onVisibilityToggle) {\n onVisibilityToggle();\n }\n };\n\n const resolvedBottomValue = bottomValue ?? ledgerBalance;\n const hasBottomSection = resolvedBottomValue !== undefined && resolvedBottomValue !== null && resolvedBottomValue !== '';\n const formattedValueFontSize =\n typeof valueFontSize === 'number'\n ? `clamp(${Math.max(18, Math.round(valueFontSize * 0.7))}px, 6vw, ${valueFontSize}px)`\n : valueFontSize;\n\n const handleCopy = async () => {\n const textToCopy = copyValue ?? (resolvedBottomValue !== undefined ? String(resolvedBottomValue) : '');\n if (!textToCopy) return;\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(textToCopy);\n }\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n onCopy?.(textToCopy);\n } catch {\n onCopy?.(textToCopy);\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-3 sm:px-[18px] pt-3 transition-all duration-300 ease-in-out hover:-translate-y-1 cursor-pointer self-start ${hasBottomSection ? '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 maxWidth: '100%',\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 min-w-0\">\n <div className=\"flex items-center justify-between gap-2 mb-4\">\n <div className=\"w-9 h-9 sm:w-10 sm:h-10 bg-[#616161] rounded-full flex items-center justify-center text-white transition-transform duration-300 ease-in-out hover:scale-110 shrink-0\">\n {icon || defaultIcon}\n </div>\n {topRight && <div className=\"shrink-0\">{topRight}</div>}\n </div>\n <div className=\"flex items-center gap-2 mt-3 min-w-0\">\n <span className=\"text-xs sm:text-sm text-[#E6E6E6] font-light transition-colors duration-200 truncate\">\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={isVisible ? 'Hide value' : 'Show value'}\n >\n {isVisible ? (\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 ) : (\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=\"M6.59 6.59a2 2 0 102.82 2.82M7.15 3.38A8 8 0 018 3.33c3.4 0 5.63 3 6.39 4.19.09.14.13.22.16.33.02.08.02.21 0 .29-.02.11-.07.19-.16.33a11.57 11.57 0 01-1.33 1.7M4.41 4.41A11.6 11.6 0 001.61 7.53c-.09.14-.13.22-.16.33-.02.08-.02.21 0 .29.02.11.07.19.16.33.75 1.19 2.98 4.19 6.39 4.19 1.38 0 2.55-.5 3.49-1.15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2 2l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </button>\n )}\n </div>\n <div\n className=\"font-bold text-white transition-all duration-200 break-words leading-tight\"\n style={{ fontSize: formattedValueFontSize }}\n >\n {isVisible ? `${valuePrefix} ${value}` : '****'}\n </div>\n {hasBottomSection && (\n <div className=\"mt-1.5 mb-1\">\n <div className=\"w-full h-px bg-white/10 mb-1.5 transition-opacity duration-300\"></div>\n <div className=\"flex items-center justify-between gap-2 transition-all duration-200\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {bottomIcon === undefined ? (\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 ) : (\n bottomIcon\n )}\n <span\n className=\"text-xs font-light transition-all duration-200 truncate\"\n style={{ color: bottomTextColor ?? '#E6E6E6' }}\n >\n {isVisible\n ? showLedgerValuePrefix\n ? `${bottomLabel} ${valuePrefix} ${resolvedBottomValue}`\n : `${bottomLabel}${resolvedBottomValue !== undefined && resolvedBottomValue !== '' ? ` ${resolvedBottomValue}` : ''}`\n : '****'}\n </span>\n </div>\n {showCopyButton && (\n <button\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy'}\n className=\"bg-transparent border-none cursor-pointer p-0.5 flex items-center justify-center transition-colors duration-200 shrink-0 hover:opacity-80\"\n style={{ color: copyIconColor ?? '#EC615B' }}\n >\n {copied ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3.3335 8.33594L6.66683 11.6693L13.3335 4.33594\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"5.33594\" y=\"5.33594\" width=\"8.66667\" height=\"8.66667\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path d=\"M10.6693 5.33594V4.16927C10.6693 3.05036 10.6693 2.4909 10.4515 2.0633C10.2598 1.68723 9.95418 1.3816 9.57811 1.18987C9.15051 0.972097 8.59105 0.972097 7.47214 0.972097H4.16927C3.05036 0.972097 2.4909 0.972097 2.0633 1.18987C1.68723 1.3816 1.3816 1.68723 1.18987 2.0633C0.972097 2.4909 0.972097 3.05036 0.972097 4.16927V7.47214C0.972097 8.59105 0.972097 9.15051 1.18987 9.57811C1.3816 9.95418 1.68723 10.2598 2.0633 10.4515C2.4909 10.6693 3.05036 10.6693 4.16927 10.6693H5.33594\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" />\n </svg>\n )}\n </button>\n )}\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={{\n width: typeof width === 'number' ? `${width}px` : width,\n maxWidth: 'calc(100vw - 16px)',\n }}\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, { useState, useRef, useEffect, useLayoutEffect } from 'react';\n\nexport interface TabItem {\n key: string;\n label: React.ReactNode;\n children: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsComponentProps {\n items: TabItem[];\n defaultActiveKey?: string;\n activeKey?: string;\n onChange?: (activeKey: string) => void;\n className?: string;\n tabBarClassName?: string;\n contentClassName?: string;\n accentColor?: string;\n borderColor?: string;\n animated?: boolean;\n}\n\nexport const TabsComponent: React.FC<TabsComponentProps> = ({\n items,\n defaultActiveKey,\n activeKey: controlledKey,\n onChange,\n className = '',\n tabBarClassName = '',\n contentClassName = '',\n accentColor = '#EC615B',\n borderColor = '#E6E6E6',\n animated = true,\n}) => {\n const firstKey = items[0]?.key;\n const [innerKey, setInnerKey] = useState<string>(defaultActiveKey ?? firstKey ?? '');\n const active = controlledKey ?? innerKey;\n const prevActiveRef = useRef<string>(active);\n\n const tabBarRef = useRef<HTMLDivElement>(null);\n const tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n const [inkStyle, setInkStyle] = useState<{ left: number; width: number; ready: boolean }>({\n left: 0,\n width: 0,\n ready: false,\n });\n const [slideDir, setSlideDir] = useState<'right' | 'left' | null>(null);\n\n const measureInk = () => {\n const el = tabRefs.current[active];\n const bar = tabBarRef.current;\n if (!el || !bar) return;\n const barRect = bar.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n setInkStyle({\n left: elRect.left - barRect.left,\n width: elRect.width,\n ready: true,\n });\n };\n\n useLayoutEffect(() => {\n measureInk();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active, items.length]);\n\n useEffect(() => {\n const handleResize = () => measureInk();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active]);\n\n useEffect(() => {\n const prev = prevActiveRef.current;\n if (prev === active) return;\n const prevIdx = items.findIndex((i) => i.key === prev);\n const nextIdx = items.findIndex((i) => i.key === active);\n setSlideDir(nextIdx > prevIdx ? 'right' : 'left');\n prevActiveRef.current = active;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active]);\n\n const handleSelect = (key: string, disabled?: boolean) => {\n if (disabled) return;\n if (controlledKey === undefined) setInnerKey(key);\n onChange?.(key);\n };\n\n const activeItem = items.find((i) => i.key === active);\n\n return (\n <div className={className}>\n <style>{`\n @keyframes shekel-tab-slide-in-right { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } }\n @keyframes shekel-tab-slide-in-left { from { opacity: 0; transform: translateX(-16px); } to { opacity: 1; transform: translateX(0); } }\n @keyframes shekel-tab-fade-in { from { opacity: 0; } to { opacity: 1; } }\n .shekel-tab-panel-right { animation: shekel-tab-slide-in-right 220ms cubic-bezier(0.23, 1, 0.32, 1); }\n .shekel-tab-panel-left { animation: shekel-tab-slide-in-left 220ms cubic-bezier(0.23, 1, 0.32, 1); }\n .shekel-tab-panel-fade { animation: shekel-tab-fade-in 220ms ease-out; }\n `}</style>\n <style>{`\n .shekel-tabs-bar::-webkit-scrollbar { display: none; }\n .shekel-tabs-bar { scrollbar-width: none; -ms-overflow-style: none; }\n `}</style>\n <div\n ref={tabBarRef}\n role=\"tablist\"\n className={`shekel-tabs-bar relative flex items-stretch gap-6 overflow-x-auto overflow-y-hidden flex-nowrap ${tabBarClassName}`}\n style={{ borderBottom: `1px solid ${borderColor}` }}\n >\n {items.map((item) => {\n const isActive = item.key === active;\n return (\n <button\n key={item.key}\n ref={(el) => {\n tabRefs.current[item.key] = el;\n }}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n disabled={item.disabled}\n onClick={() => handleSelect(item.key, item.disabled)}\n className=\"shrink-0 whitespace-nowrap relative text-sm font-medium transition-colors duration-200 bg-transparent outline-none\"\n style={{\n padding: '10px 0',\n color: item.disabled ? '#BFBFBF' : isActive ? accentColor : '#181918',\n cursor: item.disabled ? 'not-allowed' : 'pointer',\n }}\n onMouseEnter={(e) => {\n if (!item.disabled && !isActive) e.currentTarget.style.color = accentColor;\n }}\n onMouseLeave={(e) => {\n if (!item.disabled && !isActive) e.currentTarget.style.color = '#181918';\n }}\n >\n {item.label}\n </button>\n );\n })}\n <span\n aria-hidden\n className=\"absolute bottom-0\"\n style={{\n left: 0,\n transform: `translateX(${inkStyle.left}px)`,\n width: inkStyle.width,\n height: 2,\n backgroundColor: accentColor,\n borderRadius: 2,\n transition: inkStyle.ready && animated\n ? 'transform 280ms cubic-bezier(0.645, 0.045, 0.355, 1), width 280ms cubic-bezier(0.645, 0.045, 0.355, 1)'\n : 'none',\n opacity: inkStyle.ready ? 1 : 0,\n }}\n />\n </div>\n <div\n role=\"tabpanel\"\n key={active}\n className={`pt-4 ${\n animated\n ? slideDir === 'right'\n ? 'shekel-tab-panel-right'\n : slideDir === 'left'\n ? 'shekel-tab-panel-left'\n : 'shekel-tab-panel-fade'\n : ''\n } ${contentClassName}`}\n >\n {activeItem?.children}\n </div>\n </div>\n );\n};\n","import React, { createContext, useContext, useMemo } from 'react';\n\nexport interface ShekelTheme {\n accentColor: string;\n errorColor: string;\n warningColor: string;\n borderColor: string;\n filledBorderColor: string;\n textColor: string;\n mutedTextColor: string;\n fontFamily: string;\n borderRadius: number;\n}\n\nexport const defaultTheme: ShekelTheme = {\n accentColor: '#EC615B',\n errorColor: '#C21919',\n warningColor: '#FAAD14',\n borderColor: '#D9D9D9',\n filledBorderColor: '#181918',\n textColor: '#181918',\n mutedTextColor: '#8C8C8C',\n fontFamily: \"'Plus Jakarta Sans', sans-serif\",\n borderRadius: 8,\n};\n\n/** Kept for backwards compatibility — prefer the `accentColor`/`errorColor` props on individual components. */\nexport const shekelTheme = defaultTheme;\n\nconst ThemeContext = createContext<ShekelTheme>(defaultTheme);\n\nexport const useShekelTheme = () => useContext(ThemeContext);\n\nexport type ShekelProviderProps = {\n children: React.ReactNode;\n /** Partial overrides merged into defaults. */\n theme?: Partial<ShekelTheme>;\n};\n\n/**\n * Wraps your app to set the Shekel design tokens as CSS variables + context.\n * You no longer need antd's ConfigProvider — every Shekel component reads its\n * accent/error colors from its own props (which now fall back to these tokens).\n */\nexport const ShekelProvider: React.FC<ShekelProviderProps> = ({ children, theme }) => {\n const merged = useMemo<ShekelTheme>(() => ({ ...defaultTheme, ...theme }), [theme]);\n const cssVars = useMemo<React.CSSProperties>(\n () => ({\n ['--shekel-accent' as any]: merged.accentColor,\n ['--shekel-error' as any]: merged.errorColor,\n ['--shekel-warning' as any]: merged.warningColor,\n ['--shekel-border' as any]: merged.borderColor,\n ['--shekel-filled-border' as any]: merged.filledBorderColor,\n ['--shekel-text' as any]: merged.textColor,\n ['--shekel-muted' as any]: merged.mutedTextColor,\n fontFamily: merged.fontFamily,\n }),\n [merged]\n );\n\n return (\n <ThemeContext.Provider value={merged}>\n <div style={cssVars}>{children}</div>\n </ThemeContext.Provider>\n );\n};\n"],"names":["SIZE_HEIGHT","SIZE_FONT","SIZE_PADDING","SIZE_GAP","ROUNDED_MAP","SHEKEL_RED","SHEKEL_RED_HOVER","SHEKEL_RED_DISABLED","palette","danger","accent","accentHover","accentDisabled","ring","Spinner","size","jsxs","jsx","Button","React","variant","shape","rounded","htmlType","block","loading","loadingText","icon","iconPosition","ripple","hoverLift","pressScale","disabled","className","style","children","bgColor","textColor","borderColor","hoverBgColor","hoverTextColor","hoverBorderColor","disabledBgColor","disabledTextColor","focusRingColor","props","ref","hovered","setHovered","useState","pressed","setPressed","focusVisible","setFocusVisible","ripples","setRipples","btnRef","useRef","v","height","fontSize","gap","isIconOnly","iconBoxPadding","resolvedRadius","isDisabled","iconSize","finalBg","finalBorder","finalColor","handleMouseDown","e","rect","x","y","id","r","p","_a","handleMouseUp","handleMouseEnter","handleMouseLeave","transformParts","finalTransform","boxShadow","Fragment","el","target","_b","StatCard","label","value","iconBackgroundColor","iconColor","valuePrefix","progressText","badge","width","selected","onClick","detailed","minHeight","sizeClass","roundedClass","defaultIcon","variantClasses","activeShadow","SearchInput","fullWidth","onIconClick","focusBorderColor","placeholderColor","containerBaseClasses","inputBaseClasses","sizeClasses","iconSizeClasses","roundedClasses","paddingWithIcon","widthClass","customStyles","placeholderClass","defaultBorderClass","defaultTextClass","defaultFocusClass","inputClassName","iconPositionClasses","defaultIconColor","hoverIconColor","defaultSearchIcon","SHADOWS","Card","title","extra","cover","bordered","shadow","hoverable","bodyClassName","bodyStyle","headerClassName","headerStyle","rest","shadowValue","Dropdown","items","trigger","placement","overlayClassName","menuBgColor","menuItemHoverColor","dangerColor","isOpen","setIsOpen","dropdownRef","useEffect","handleClickOutside","event","handleTriggerClick","handleTriggerMouseEnter","handleTriggerMouseLeave","handleMenuItemClick","item","placementClasses","animationClasses","itemSizeClasses","defaultHoverColor","defaultBorderColor","defaultDangerColor","hoverColorStyle","customHoverClass","customDangerStyle","dangerHoverBgStyle","finalBorderColor","itemStyle","SelectBase","options","controlledValue","defaultValue","placeholder","onChange","onBlur","name","allowClear","showSearch","searchPlaceholder","selectedBgColor","selectedTextColor","error","helperText","internalValue","setInternalValue","searchQuery","setSearchQuery","selectRef","searchInputRef","handleSelect","optionValue","handleClear","selectedOption","opt","filteredOptions","option","getTriggerStyles","styles","getSelectedOptionStyles","ChevronIcon","ClearIcon","ControlledSelect","control","errorProp","field","fieldState","useController","Select","Table","columns","dataSource","rowKey","pagination","onRow","striped","headerBgColor","headerTextColor","rowHoverColor","stripedRowColor","currentPage","setCurrentPage","pageSize","setPageSize","sizeConfig","currentSizeConfig","currentRoundedClass","getRowKey","record","index","getValue","dataIndex","obj","key","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","description","onSearch","actions","filters","titleColor","descriptionColor","searchBgColor","searchBorderColor","searchFocusBorderColor","hideActionButtons","selectedActionButton","handleSearchChange","config","radiusClass","searchInputStyle","SIZE_WIDTHS","FOCUSABLE_SELECTOR","CloseIcon","color","DefaultButton","Modal","open","onClose","footer","okText","cancelText","onOk","onCancel","confirmLoading","okDanger","okDisabled","hideCancel","maxHeight","centered","edgeOffset","motion","backdrop","closeIcon","submitOnEnter","bare","noPadding","closable","maskClosable","closeOnEsc","destroyOnClose","lockScroll","overlayColor","borderRadius","animationDuration","zIndex","footerClassName","footerStyle","ariaLabel","ariaLabelledBy","afterOpen","afterClose","getContainer","mounted","setMounted","entered","setEntered","internalConfirmLoading","setInternalConfirmLoading","overlayRef","contentRef","titleId","prevActiveEl","requestClose","useCallback","raf2","raf1","t","body","prevOverflow","prevPaddingRight","scrollbarWidth","handleKeyDown","focusables","first","last","active","handleMaskClick","handleOk","maybe","resolvedPlacement","placementAlignment","justify","align","resolvedMotion","motionTransforms","motionKey","closedTransform","openTransform","resolvedEdgeOffset","resolvedBackdrop","resolvedWidth","resolvedMaxHeight","resolvedFooter","labelId","container","modalNode","createPortal","Badge","dot","dotSizeClasses","dotColorClasses","CheckIcon","strokeWidth","XIcon","Steps","direction","activeColor","inactiveColor","errorColor","activeTextColor","showConnector","connectorColor","iconSizeProp","checkSizeProp","borderWidthProp","checkStrokeWidthProp","onStepClick","checkSize","iconBorderWidth","checkStrokeWidth","titleSize","descriptionSize","resolvedGap","getStatus","colorForStatus","status","renderIcon","custom","isVertical","renderStep","circleColor","isLast","clickable","Progress","percent","showInfo","strokeColor","format","successColor","exceptionColor","trackColor","clampedPercent","heightClasses","textSizeClasses","getStatusColor","getTrackColor","getStatusIcon","formatPercent","SIZE","Checkbox","controlledChecked","defaultChecked","indeterminate","labelClassName","labelStyle","labelPosition","accentColor","boxBgColor","boxRadius","required","autoFocus","tabIndex","internalChecked","setInternalChecked","isControlled","checked","reactId","inputId","handleChange","dims","boxRad","isFilled","activeBg","activeBorder","boxStyle","box","labelEl","getSizeClasses","getRoundedClasses","SelectedItemsList","onRemove","emptyMessage","itemClassName","sublabelColor","removeButtonColor","removeButtonHoverColor","defaultBgColor","defaultHoverBgColor","defaultTextColor","defaultSublabelColor","defaultRemoveButtonColor","defaultRemoveButtonHoverColor","finalBgColor","finalHoverBgColor","finalTextColor","finalSublabelColor","finalRemoveButtonColor","finalRemoveButtonHoverColor","hexWithAlpha","hex","alpha","h","full","c","g","b","ErrorIcon","sharedHexWithAlpha","InputBase","labelExtra","requiredMark","prefix","suffix","addonBefore","addonAfter","wrapperClassName","wrapperStyle","onClear","readOnly","filledBorderColor","addonBackgroundColor","innerValue","setInnerValue","displayValue","isError","isWarning","resolvedRequiredMark","synthetic","hasValue","resolvedBorder","focusShadow","themeVars","borderBase","shadowBase","disabledClasses","addonClasses","addonStyle","showClear","ControlledInput","Input","EyeIcon","visible","PasswordInputBase","visibilityToggle","setVisible","toggle","errColor","ControlledPasswordInput","PasswordInput","OTPInputBase","length","onComplete","errorMessage","boxClassName","showSeparator","boxWidth","boxHeight","otp","setOtp","inputRefs","otpArray","filledOtp","val","newOtp","otpString","digit","_c","handlePaste","pastedData","pastedArray","nextIndex","resolvedBoxBorder","filled","boxBaseClass","ControlledOTPInput","errorMessageProp","hasError","OTPInput","CountryCodeSelect","setOpen","activeIndex","setActiveIndex","wrapperRef","o","triggerStyle","hasAnyFlag","triggerWidth","isSelected","isActive","PhoneInputBase","countryCode","defaultCountryCode","onCountryCodeChange","countryCodes","showCountryCodeDropdown","customFormat","onKeyDown","onPaste","setDisplayValue","innerRef","isCodeControlled","innerCode","setInnerCode","activeCode","handleCodeChange","next","cleaned","formatPhoneNumber","input","cursorPosition","formatted","oldLength","diff","newCursor","pasted","start","newCleaned","ControlledPhoneInput","PhoneInput","formatNumber","num","parts","integerPart","decimalPart","formattedInteger","unformatNumber","CurrencyInputBase","currencySymbol","formatAmount","externalValue","currencyPillBgColor","currencyPillColor","hideCurrencyPill","stringValue","inputValue","rawValue","borderClass","ControlledCurrencyInput","CurrencyInput","defaultFilter","prop","search","labelStr","valueStr","Chevron","SelectInputBase","optionFilterProp","filterOption","mode","popupClassName","popupStyle","onFocus","onDropdownVisibleChange","notFoundContent","optionRender","suffixIcon","prefixIcon","optionHoverColor","tagBgColor","tagBorderColor","resolvedSelectedBg","resolvedSelectedText","selectId","triggerRef","panelRef","panelPos","setPanelPos","updatePanelPos","dropdownMaxHeight","spaceBelow","spaceAbove","top","inlineInputRef","resolvedHeight","filterFn","useMemo","isMultiple","selectedValues","selectedOptions","openPanel","closePanel","insideWrapper","insidePanel","firstSelectedIndex","commitChange","nextOptions","handleRemoveTag","openShadow","showClearBtn","ControlledSelectInput","SelectInput","MONTH_NAMES","DAY_NAMES_SUN","DAY_NAMES_MON","toDate","d","pad","n","len","formatDate","date","M","D","isSameDay","a","startOfDay","CalendarIcon","ChevronLeft","ChevronRight","DoubleChevronLeft","DoubleChevronRight","ClearX","DatePickerBase","minDate","maxDate","disabledDate","showToday","firstDayOfWeek","onOpenChange","resolvedValue","viewDate","setViewDate","panelWidth","vw","vh","left","panelHeight","handler","min","max","isDisabledDate","day","commit","handleToggle","handleDayClick","today","dayNames","calendarGrid","year","month","firstDay","shift","daysInMonth","prevMonthDays","cells","lastDate","goMonth","delta","goYear","displayText","outside","isToday","disabledDay","ControlledDatePicker","dateString","DatePicker","isBetween","s","Arrow","dir","double","single","dbl","CalendarPane","from","to","hoverDate","onHoverDate","onDayClick","showLeftArrows","showRightArrows","onShiftMonth","onShiftYear","rangeBgColor","rangeTextColor","activeRangeEnd","rangeLo","rangeHi","isFrom","isTo","inRange","isEdgeLo","isEdgeHi","DateRangePickerBase","separator","singlePanel","presets","resolvedRangeBg","resolvedRangeText","isNarrow","setIsNarrow","effectiveSinglePanel","resolved","activeSlot","setActiveSlot","setHoverDate","f","slot","fromText","toText","defaultSeparator","preset","ControlledDateRangePicker","range","strRange","DateRangePicker","escapeRegex","buildFormat","raw","opts","decimals","allowDecimals","thousandSep","decimalSep","formattedInt","toRawNumber","display","noThousand","padDecimals","intPart","decPart","AmountInputBase","enforceDecimals","thousandSeparator","decimalSeparator","inputMode","formatOpts","rawOpts","padded","setRef","cursor","before","rawIn","intP","intOnly","decOnly","handleBlur","ControlledAmountInput","AmountInput","formatBytes","bytes","k","sizes","getFileExt","isImage","file","type","makeId","DownloadArrowIcon","FileIcon","ext","TrashIcon","FileUploadBase","onPreview","showPreviewAction","previewActionText","previewButtonVariant","showRemove","accept","multiple","maxSize","maxFiles","fileTypesLabel","uploadText","browseText","hintText","dropZoneIcon","onUpload","showPreview","previewLayout","keepInputOnUpload","dropzoneClassName","dropzoneStyle","dropzoneBgColor","inputRef","innerFiles","setInnerFiles","files","isDragging","setIsDragging","dropError","setDropError","resolvedHint","updateFile","patch","prev","validate","accepted","addFiles","newFiles","validationErrors","err","thumbnailUrl","uploaded","result","pct","handleFileInput","handleDrop","dt","handleRemove","anyUploading","isBusy","zoneDisabled","dropzoneBorder","dropzoneBg","shouldHideDropzone","GridPreviewItem","ListPreviewItem","defaultPreview","url","isImg","isUploading","isErr","handlePreview","canPreview","ControlledFileUpload","FileUpload","RadioIcon","borderWidth","RadioCardGroupBase","layout","equalWidth","cardHeight","radioSize","cardClassName","cardStyle","selectedBorderColor","selectedGlowColor","cardBgColor","selectedCardBgColor","radioBorderWidth","radioBorderColor","cardBorderWidth","cardBorderRadius","cardShadow","selectedCardShadow","titleWeight","descriptionWeight","titleLineHeight","descriptionLineHeight","groupId","resolvedSelectedBorder","resolvedGlow","containerStyle","optDisabled","ControlledRadioCardGroup","RadioCardGroup","SIZE_MAP","ToggleBase","externalChecked","tw","th","ks","onColor","offColor","knobColor","loadingColor","checkedIcon","uncheckedIcon","innerChecked","setInnerChecked","dtw","dth","dks","trackWidth","trackHeight","knobSize","padding","knobOffset","trackBg","toggleEl","ControlledToggle","Toggle","initialsFromName","Avatar","src","px","initials","shapeClass","UserPill","subtitle","avatar","cardBorderSvg","UserCard","email","role","avatarBgColor","avatarTextColor","flagNG","flagUS","flagGB","flagGH","flagKE","flagZA","DEFAULT_COUNTRIES","CountrySelector","countries","defaultCountry","onCountryChange","flagSize","DEFAULT_MENU","UserProfileDropdown","avatarUrl","menuItems","onMenuClick","handleOutside","handleItemClick","ActionCard","currentColor","cardPatternSvg","DashboardCard","showVisibilityToggle","onVisibilityToggle","ledgerBalance","bottomLabel","bottomValue","showLedgerValuePrefix","bottomIcon","showCopyButton","copyValue","onCopy","copyIconColor","bottomTextColor","valueFontSize","backgroundPattern","backgroundImage","topRight","isVisible","setIsVisible","copied","setCopied","handleToggleVisibility","resolvedBottomValue","hasBottomSection","formattedValueFontSize","handleCopy","textToCopy","emptyNotificationSvg","NotificationDropdown","count","notifications","onViewMore","notification","TabsComponent","defaultActiveKey","controlledKey","tabBarClassName","contentClassName","animated","firstKey","innerKey","setInnerKey","prevActiveRef","tabBarRef","tabRefs","inkStyle","setInkStyle","slideDir","setSlideDir","measureInk","bar","barRect","elRect","useLayoutEffect","handleResize","prevIdx","nextIdx","activeItem","defaultTheme","shekelTheme","ThemeContext","createContext","ShekelProvider","theme","merged","cssVars"],"mappings":"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"}
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","../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/_theme.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/Input/SelectInput.tsx","../src/components/Input/DatePicker.tsx","../src/components/Input/DateRangePicker.tsx","../src/components/Input/AmountInput.tsx","../src/components/Input/FileUpload.tsx","../src/components/Input/RadioCardGroup.tsx","../src/components/Input/Toggle.tsx","../src/components/_Avatar.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","../src/theme.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\n\ntype NativeButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'>;\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'text';\nexport type ButtonSize = 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\nexport type ButtonShape = 'default' | 'circle' | 'square';\nexport type ButtonRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface ButtonProps extends NativeButtonProps {\n variant?: ButtonVariant;\n size?: ButtonSize;\n shape?: ButtonShape;\n rounded?: ButtonRounded;\n htmlType?: 'button' | 'submit' | 'reset';\n block?: boolean;\n loading?: boolean;\n loadingText?: React.ReactNode;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n danger?: boolean;\n ripple?: boolean;\n hoverLift?: boolean;\n pressScale?: boolean;\n\n // Fine-grained color overrides (all optional)\n bgColor?: string;\n textColor?: string;\n borderColor?: string;\n hoverBgColor?: string;\n hoverTextColor?: string;\n hoverBorderColor?: string;\n disabledBgColor?: string;\n disabledTextColor?: string;\n focusRingColor?: string;\n}\n\nconst SIZE_HEIGHT: Record<ButtonSize, number> = {\n xxsmall: 24,\n xsmall: 32,\n small: 40,\n medium: 48,\n large: 52,\n xlarge: 60,\n};\nconst SIZE_FONT: Record<ButtonSize, number> = {\n xxsmall: 11,\n xsmall: 12,\n small: 13,\n medium: 14,\n large: 15,\n xlarge: 16,\n};\nconst SIZE_PADDING: Record<ButtonSize, number> = {\n xxsmall: 8,\n xsmall: 12,\n small: 16,\n medium: 20,\n large: 24,\n xlarge: 28,\n};\nconst SIZE_GAP: Record<ButtonSize, number> = {\n xxsmall: 4,\n xsmall: 6,\n small: 6,\n medium: 8,\n large: 8,\n xlarge: 10,\n};\n\nconst ROUNDED_MAP: Record<ButtonRounded, number | string> = {\n none: 0,\n sm: 4,\n md: 6,\n lg: 8,\n xl: 12,\n full: 9999,\n};\n\nconst SHEKEL_RED = '#EC615B';\nconst SHEKEL_RED_HOVER = '#D8524D';\nconst SHEKEL_RED_DISABLED = '#F9CECC';\n\ninterface PaletteEntry {\n bg: string;\n border: string;\n color: string;\n hoverBg: string;\n hoverColor?: string;\n hoverBorder?: string;\n disabledBg: string;\n disabledColor?: string;\n focusRing: string;\n}\n\nconst palette = (danger: boolean): Record<ButtonVariant, PaletteEntry> => {\n const accent = danger ? '#C21919' : SHEKEL_RED;\n const accentHover = danger ? '#9F1313' : SHEKEL_RED_HOVER;\n const accentDisabled = danger ? '#EABABA' : SHEKEL_RED_DISABLED;\n const ring = danger ? 'rgba(194, 25, 25, 0.2)' : 'rgba(236, 97, 91, 0.2)';\n return {\n primary: {\n bg: accent,\n border: accent,\n color: '#FFFFFF',\n hoverBg: accentHover,\n hoverBorder: accentHover,\n disabledBg: accentDisabled,\n focusRing: ring,\n },\n secondary: {\n bg: '#6B7280',\n border: '#6B7280',\n color: '#FFFFFF',\n hoverBg: '#4B5563',\n hoverBorder: '#4B5563',\n disabledBg: '#D1D5DB',\n focusRing: 'rgba(107,114,128,0.2)',\n },\n outline: {\n bg: 'transparent',\n border: accent,\n color: accent,\n hoverBg: danger ? '#FDEBEB' : '#FDECEB',\n hoverBorder: accentHover,\n hoverColor: accentHover,\n disabledBg: 'transparent',\n disabledColor: accentDisabled,\n focusRing: ring,\n },\n ghost: {\n bg: '#EFF2F3',\n border: '#EFF2F3',\n color: '#181918',\n hoverBg: '#E1E4E6',\n hoverBorder: '#E1E4E6',\n disabledBg: '#F5F5F5',\n disabledColor: '#B0B0B0',\n focusRing: 'rgba(0,0,0,0.06)',\n },\n link: {\n bg: 'transparent',\n border: 'transparent',\n color: accent,\n hoverBg: 'transparent',\n hoverBorder: 'transparent',\n hoverColor: accentHover,\n disabledBg: 'transparent',\n disabledColor: accentDisabled,\n focusRing: ring,\n },\n text: {\n bg: 'transparent',\n border: 'transparent',\n color: '#181918',\n hoverBg: 'rgba(0,0,0,0.04)',\n hoverBorder: 'transparent',\n disabledBg: 'transparent',\n disabledColor: '#B0B0B0',\n focusRing: 'rgba(0,0,0,0.08)',\n },\n };\n};\n\nconst Spinner: React.FC<{ size: number }> = ({ size }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n style={{ animation: 'shekel-btn-spin 0.8s linear infinite', transformOrigin: 'center' }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'large',\n shape = 'default',\n rounded,\n htmlType = 'button',\n block,\n loading,\n loadingText,\n icon,\n iconPosition = 'left',\n danger = false,\n ripple = true,\n hoverLift = false,\n pressScale = true,\n disabled,\n className = '',\n style,\n children,\n bgColor,\n textColor,\n borderColor,\n hoverBgColor,\n hoverTextColor,\n hoverBorderColor,\n disabledBgColor,\n disabledTextColor,\n focusRingColor,\n ...props\n },\n ref\n ) => {\n const [hovered, setHovered] = useState(false);\n const [pressed, setPressed] = useState(false);\n const [focusVisible, setFocusVisible] = useState(false);\n const [ripples, setRipples] = useState<{ id: number; x: number; y: number; size: number }[]>([]);\n const btnRef = useRef<HTMLButtonElement | null>(null);\n\n const v = palette(danger)[variant];\n const height = SIZE_HEIGHT[size];\n const fontSize = SIZE_FONT[size];\n const gap = SIZE_GAP[size];\n const isIconOnly = shape === 'circle' || shape === 'square';\n const iconBoxPadding = isIconOnly ? 0 : SIZE_PADDING[size];\n const resolvedRadius =\n rounded !== undefined\n ? ROUNDED_MAP[rounded]\n : shape === 'circle'\n ? 9999\n : shape === 'square'\n ? 8\n : 8;\n\n const isDisabled = disabled || loading;\n const iconSize = Math.max(12, Math.round(fontSize * 1.2));\n\n const finalBg = isDisabled\n ? disabledBgColor ?? v.disabledBg\n : hovered\n ? hoverBgColor ?? v.hoverBg\n : bgColor ?? v.bg;\n const finalBorder = isDisabled\n ? disabledBgColor ?? v.disabledBg\n : hovered\n ? hoverBorderColor ?? v.hoverBorder ?? v.border\n : borderColor ?? v.border;\n const finalColor = isDisabled\n ? disabledTextColor ?? v.disabledColor ?? v.color\n : hovered\n ? hoverTextColor ?? v.hoverColor ?? v.color\n : textColor ?? v.color;\n\n const handleMouseDown = (e: React.MouseEvent<HTMLButtonElement>) => {\n setPressed(true);\n if (ripple && !isDisabled && btnRef.current) {\n const rect = btnRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const size = Math.max(rect.width, rect.height) * 2;\n const id = Date.now() + Math.random();\n setRipples((r) => [...r, { id, x, y, size }]);\n setTimeout(() => setRipples((r) => r.filter((p) => p.id !== id)), 600);\n }\n props.onMouseDown?.(e);\n };\n const handleMouseUp = (e: React.MouseEvent<HTMLButtonElement>) => {\n setPressed(false);\n props.onMouseUp?.(e);\n };\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n setHovered(true);\n props.onMouseEnter?.(e);\n };\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n setHovered(false);\n setPressed(false);\n props.onMouseLeave?.(e);\n };\n\n const transformParts: string[] = [];\n if (hoverLift && hovered && !isDisabled) transformParts.push('translateY(-1px)');\n if (pressScale && pressed && !isDisabled) transformParts.push('scale(0.97)');\n const finalTransform = transformParts.length ? transformParts.join(' ') : 'none';\n\n const boxShadow = focusVisible\n ? `0 0 0 3px ${focusRingColor ?? v.focusRing}`\n : hoverLift && hovered && !isDisabled\n ? '0 4px 12px rgba(0,0,0,0.08)'\n : 'none';\n\n return (\n <>\n <style>{`\n @keyframes shekel-btn-spin { to { transform: rotate(360deg); } }\n @keyframes shekel-btn-ripple { to { transform: scale(1); opacity: 0; } }\n `}</style>\n <button\n ref={(el) => {\n btnRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = el;\n }}\n type={htmlType}\n disabled={isDisabled}\n aria-busy={loading}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n onFocus={(e) => {\n const target = e.target as HTMLButtonElement & { matches?: (sel: string) => boolean };\n if (target.matches?.(':focus-visible')) setFocusVisible(true);\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n setFocusVisible(false);\n props.onBlur?.(e);\n }}\n className={`inline-flex items-center justify-center font-medium select-none relative overflow-hidden ${\n block ? 'w-full' : ''\n } ${isDisabled ? 'cursor-not-allowed' : 'cursor-pointer'} ${className}`}\n style={{\n height,\n width: isIconOnly ? height : block ? '100%' : undefined,\n padding: isIconOnly ? 0 : `0 ${iconBoxPadding}px`,\n borderRadius: resolvedRadius,\n border:\n variant === 'link' || variant === 'text' ? 'none' : `1px solid ${finalBorder}`,\n backgroundColor: finalBg,\n color: finalColor,\n fontSize,\n gap,\n transform: finalTransform,\n boxShadow,\n opacity: variant === 'outline' && isDisabled ? 0.55 : 1,\n transition:\n 'background-color 180ms cubic-bezier(0.23, 1, 0.32, 1), color 150ms ease-out, border-color 180ms cubic-bezier(0.23, 1, 0.32, 1), transform 120ms cubic-bezier(0.23, 1, 0.32, 1), box-shadow 180ms ease-out',\n textDecoration: variant === 'link' && hovered && !isDisabled ? 'underline' : undefined,\n ...style,\n }}\n {...props}\n >\n {loading && iconPosition === 'left' && <Spinner size={iconSize} />}\n {!loading && icon && iconPosition === 'left' && (\n <span className=\"inline-flex items-center\" style={{ width: iconSize, height: iconSize }}>\n {icon}\n </span>\n )}\n {!isIconOnly && (loading && loadingText ? loadingText : children)}\n {isIconOnly && !loading && (icon ?? children)}\n {!loading && icon && iconPosition === 'right' && (\n <span className=\"inline-flex items-center\" style={{ width: iconSize, height: iconSize }}>\n {icon}\n </span>\n )}\n {loading && iconPosition === 'right' && <Spinner size={iconSize} />}\n\n {ripple && ripples.map((r) => (\n <span\n key={r.id}\n aria-hidden\n style={{\n position: 'absolute',\n left: r.x - r.size / 2,\n top: r.y - r.size / 2,\n width: r.size,\n height: r.size,\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n opacity: 0.25,\n pointerEvents: 'none',\n transform: 'scale(0)',\n animation: 'shekel-btn-ripple 500ms ease-out forwards',\n }}\n />\n ))}\n </button>\n </>\n );\n }\n);\nButton.displayName = 'Button';\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 detailed?: boolean;\n minHeight?: number | string;\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 = 200,\n className = '',\n selected = false,\n onClick,\n size = 'md',\n rounded = '2xl',\n detailed = false,\n minHeight = 120,\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 const variantClasses = detailed\n ? `bg-white justify-between hover:border-gray-300 ${selected ? 'border-[#EC615B]' : 'border-[#E6E6E6]'}`\n : `bg-[#FDFDFD] hover:bg-[#F4F4F4] focus:bg-[#F4F4F4] hover:border-[#181918] focus:border-[#181918] ${selected ? 'bg-[#F4F4F4] border-[#181918]' : 'border-[#EEEEEE]'}`;\n\n const activeShadow = detailed ? '0 0 0 1px #EC615B' : '0 0 0 1px #181918';\n\n return (\n <div\n className={`border flex flex-col transition-all duration-300 ease-in-out hover:-translate-y-1 cursor-pointer ${variantClasses} ${sizeClass} ${roundedClass} ${className}`}\n style={{\n width: typeof width === 'number' ? `${width}px` : width || '96px',\n minHeight: typeof minHeight === 'number' ? `${minHeight}px` : minHeight,\n boxShadow: selected ? activeShadow : '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\n ? activeShadow\n : '0 0 20px 0 rgba(0, 0, 0, 0.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.boxShadow = selected\n ? activeShadow\n : '0 0 0 0 rgba(0, 0, 0, 0)';\n }}\n >\n {detailed ? (\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 </>\n ) : (\n <div className=\"mt-auto flex flex-col\">\n <div className=\"text-lg sm:text-xl text-[#181918] font-normal transition-colors duration-200 truncate\">\n {label}\n </div>\n <div className=\"text-2xl sm:text-3xl font-bold text-[#181918] transition-all duration-200 break-words leading-tight\">\n {valuePrefix ? `${valuePrefix} ${value}` : value}\n </div>\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';\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode;\n extra?: React.ReactNode;\n cover?: React.ReactNode;\n bordered?: boolean;\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n hoverable?: boolean;\n bodyClassName?: string;\n bodyStyle?: React.CSSProperties;\n headerClassName?: string;\n headerStyle?: React.CSSProperties;\n}\n\nconst SHADOWS: Record<NonNullable<CardProps['shadow']>, string> = {\n none: 'none',\n sm: '0 1px 2px rgba(0,0,0,0.05)',\n md: '0 2px 8px rgba(0,0,0,0.06), 0 4px 12px rgba(0,0,0,0.04)',\n lg: '0 6px 16px rgba(0,0,0,0.08), 0 3px 6px rgba(0,0,0,0.04)',\n xl: '0 12px 32px rgba(0,0,0,0.1), 0 6px 12px rgba(0,0,0,0.06)',\n};\n\nexport const Card: React.FC<CardProps> = ({\n title,\n extra,\n cover,\n bordered = true,\n shadow = 'md',\n hoverable = false,\n className = '',\n bodyClassName = '',\n bodyStyle,\n headerClassName = '',\n headerStyle,\n style,\n children,\n ...rest\n}) => {\n const [hovered, setHovered] = React.useState(false);\n const shadowValue = hoverable && hovered ? SHADOWS.lg : SHADOWS[shadow];\n\n return (\n <div\n {...rest}\n onMouseEnter={(e) => {\n if (hoverable) setHovered(true);\n rest.onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n if (hoverable) setHovered(false);\n rest.onMouseLeave?.(e);\n }}\n className={`bg-white rounded-xl overflow-hidden transition-shadow duration-200 ${\n bordered ? 'border border-[#E6E6E6]' : ''\n } ${className}`}\n style={{\n boxShadow: shadowValue,\n ...style,\n }}\n >\n {cover && <div className=\"w-full\">{cover}</div>}\n {(title || extra) && (\n <div\n className={`flex items-center justify-between gap-3 px-5 py-4 border-b border-[#F0F0F0] ${headerClassName}`}\n style={headerStyle}\n >\n {typeof title === 'string' ? (\n <h3 className=\"text-base font-semibold text-[#181918] m-0\">{title}</h3>\n ) : (\n title\n )}\n {extra && <div className=\"shrink-0\">{extra}</div>}\n </div>\n )}\n <div className={`px-5 py-5 ${bodyClassName}`} style={bodyStyle}>\n {children}\n </div>\n </div>\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 style={{ maxWidth: 'calc(100vw - 16px)' }}\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 { 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 React, {\n useState,\n useEffect,\n useRef,\n useCallback,\n ReactNode,\n CSSProperties,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport type ModalPlacement =\n | 'top-left'\n | 'top'\n | 'top-right'\n | 'left'\n | 'center'\n | 'right'\n | 'bottom-left'\n | 'bottom'\n | 'bottom-right';\n\nexport type ModalMotion = 'auto' | 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';\n\nexport type ModalBackdrop = 'normal' | 'blur' | 'none';\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n\n okText?: ReactNode;\n cancelText?: ReactNode;\n onOk?: () => void | Promise<void>;\n onCancel?: () => void;\n confirmLoading?: boolean;\n okDanger?: boolean;\n okDisabled?: boolean;\n hideCancel?: boolean;\n\n size?: ModalSize;\n width?: number | string;\n maxHeight?: number | string;\n\n /** Position on screen. `center` is the classic dead-center dialog. Sets also drive the enter animation direction. */\n placement?: ModalPlacement;\n /** Alias for placement === 'center' when set. Kept for backwards compat; placement wins if both passed. */\n centered?: boolean;\n /** Margin from the nearest viewport edge (applies to non-center placements). */\n edgeOffset?: number | string;\n /** Override the entrance/exit motion. `auto` picks based on placement. */\n motion?: ModalMotion;\n\n /** Backdrop style: normal (dark tint), blur (dark + blur), or none. */\n backdrop?: ModalBackdrop;\n\n /** Custom close icon (replaces the default ×). */\n closeIcon?: ReactNode;\n\n /** Submit on Enter when focus is inside a non-textarea field. */\n submitOnEnter?: boolean;\n\n /** Bare mode: hides the chromed header/body/footer layout and gives you a blank panel to fill however you like. */\n bare?: boolean;\n /** Remove the default 16px body padding when content wants to draw edge-to-edge (e.g. a full-bleed image header). */\n noPadding?: boolean;\n\n closable?: boolean;\n maskClosable?: boolean;\n closeOnEsc?: boolean;\n destroyOnClose?: boolean;\n lockScroll?: boolean;\n\n bgColor?: string;\n overlayColor?: string;\n borderRadius?: number | string;\n shadow?: string;\n animationDuration?: number;\n zIndex?: number;\n\n className?: string;\n style?: CSSProperties;\n headerClassName?: string;\n headerStyle?: CSSProperties;\n bodyClassName?: string;\n bodyStyle?: CSSProperties;\n footerClassName?: string;\n footerStyle?: CSSProperties;\n\n ariaLabel?: string;\n ariaLabelledBy?: string;\n\n afterOpen?: () => void;\n afterClose?: () => void;\n\n getContainer?: () => HTMLElement;\n}\n\nconst SIZE_WIDTHS: Record<ModalSize, string> = {\n sm: '400px',\n md: '480px',\n lg: '560px',\n xl: '640px',\n '2xl': '768px',\n full: '100vw',\n};\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], area[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]';\n\nconst CloseIcon: React.FC<{ size?: number; color?: string }> = ({ size = 20, color = '#181918' }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6L6 18\" stroke={color} strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst DefaultButton: React.FC<\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n variant?: 'primary' | 'outline' | 'danger';\n loading?: boolean;\n }\n> = ({ variant = 'outline', loading, children, className = '', style, ...props }) => {\n const styles: Record<string, CSSProperties> = {\n primary: {\n backgroundColor: props.disabled ? '#F9CECC' : '#EC615B',\n color: '#FFFFFF',\n borderColor: props.disabled ? '#F9CECC' : '#EC615B',\n },\n danger: {\n backgroundColor: props.disabled ? '#F9CECC' : '#C21919',\n color: '#FFFFFF',\n borderColor: props.disabled ? '#F9CECC' : '#C21919',\n },\n outline: {\n backgroundColor: '#FFFFFF',\n color: '#181918',\n borderColor: '#D9D9D9',\n },\n };\n return (\n <button\n {...props}\n disabled={props.disabled || loading}\n className={`inline-flex items-center justify-center gap-2 px-4 h-10 rounded-lg text-sm font-medium border transition-colors ${\n props.disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer hover:opacity-90'\n } ${className}`}\n style={{ ...styles[variant], ...style }}\n >\n {loading && (\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n style={{ animation: 'shekel-modal-spin 0.8s linear infinite', transformOrigin: 'center' }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.3\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n )}\n {children}\n </button>\n );\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n title,\n description,\n children,\n footer,\n okText = 'OK',\n cancelText = 'Cancel',\n onOk,\n onCancel,\n confirmLoading,\n okDanger,\n okDisabled,\n hideCancel,\n size = 'md',\n width,\n maxHeight,\n placement,\n centered = true,\n edgeOffset = 40,\n motion = 'auto',\n backdrop = 'normal',\n closeIcon,\n submitOnEnter = false,\n bare = false,\n noPadding = false,\n closable = true,\n maskClosable = true,\n closeOnEsc = true,\n destroyOnClose = false,\n lockScroll = true,\n bgColor = '#FFFFFF',\n overlayColor = 'rgba(0, 0, 0, 0.45)',\n borderRadius = 16,\n shadow = '0 6px 16px rgba(0,0,0,0.08), 0 9px 28px 8px rgba(0,0,0,0.05)',\n animationDuration = 200,\n zIndex = 1000,\n className = '',\n style,\n headerClassName = '',\n headerStyle,\n bodyClassName = '',\n bodyStyle,\n footerClassName = '',\n footerStyle,\n ariaLabel,\n ariaLabelledBy,\n afterOpen,\n afterClose,\n getContainer,\n}) => {\n const [mounted, setMounted] = useState<boolean>(open);\n const [entered, setEntered] = useState<boolean>(false);\n const [internalConfirmLoading, setInternalConfirmLoading] = useState(false);\n\n const overlayRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const titleId = useRef(`shekel-modal-title-${Math.random().toString(36).slice(2, 8)}`);\n const prevActiveEl = useRef<HTMLElement | null>(null);\n\n const requestClose = useCallback(() => {\n onCancel?.();\n onClose?.();\n }, [onCancel, onClose]);\n\n useEffect(() => {\n if (open) {\n prevActiveEl.current = (typeof document !== 'undefined'\n ? document.activeElement\n : null) as HTMLElement | null;\n setMounted(true);\n let raf2: number | undefined;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => {\n setEntered(true);\n afterOpen?.();\n });\n });\n return () => {\n cancelAnimationFrame(raf1);\n if (raf2) cancelAnimationFrame(raf2);\n };\n } else {\n if (!mounted) return;\n setEntered(false);\n const t = setTimeout(() => {\n setMounted(false);\n afterClose?.();\n if (prevActiveEl.current && typeof prevActiveEl.current.focus === 'function') {\n prevActiveEl.current.focus();\n }\n }, animationDuration);\n return () => clearTimeout(t);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, animationDuration]);\n\n useEffect(() => {\n if (!lockScroll || !mounted) return;\n const body = document.body;\n const prevOverflow = body.style.overflow;\n const prevPaddingRight = body.style.paddingRight;\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n if (scrollbarWidth > 0) body.style.paddingRight = `${scrollbarWidth}px`;\n body.style.overflow = 'hidden';\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPaddingRight;\n };\n }, [mounted, lockScroll]);\n\n useEffect(() => {\n if (!mounted) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (closeOnEsc && e.key === 'Escape') {\n e.stopPropagation();\n requestClose();\n return;\n }\n if (e.key !== 'Tab' || !contentRef.current) return;\n const focusables = contentRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement as HTMLElement | null;\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [mounted, closeOnEsc, requestClose]);\n\n useEffect(() => {\n if (!entered || !contentRef.current) return;\n const focusables = contentRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n const first = focusables[0];\n if (first) first.focus();\n else contentRef.current.focus();\n }, [entered]);\n\n const handleMaskClick = (e: React.MouseEvent) => {\n if (!maskClosable) return;\n if (e.target === overlayRef.current) requestClose();\n };\n\n const handleOk = async () => {\n if (!onOk) return;\n try {\n const maybe = onOk();\n if (maybe && typeof (maybe as Promise<void>).then === 'function') {\n setInternalConfirmLoading(true);\n await maybe;\n }\n } finally {\n setInternalConfirmLoading(false);\n }\n };\n\n if (!mounted) return null;\n void destroyOnClose; // reserved for future use\n\n const resolvedPlacement: ModalPlacement = placement ?? (centered ? 'center' : 'top');\n const placementAlignment: Record<ModalPlacement, { justify: string; align: string }> = {\n 'top-left': { justify: 'flex-start', align: 'flex-start' },\n top: { justify: 'center', align: 'flex-start' },\n 'top-right': { justify: 'flex-end', align: 'flex-start' },\n left: { justify: 'flex-start', align: 'center' },\n center: { justify: 'center', align: 'center' },\n right: { justify: 'flex-end', align: 'center' },\n 'bottom-left': { justify: 'flex-start', align: 'flex-end' },\n bottom: { justify: 'center', align: 'flex-end' },\n 'bottom-right': { justify: 'flex-end', align: 'flex-end' },\n };\n const { justify, align } = placementAlignment[resolvedPlacement];\n\n const autoMotionForPlacement: Record<ModalPlacement, ModalMotion> = {\n 'top-left': 'slide-down',\n top: 'slide-down',\n 'top-right': 'slide-down',\n left: 'slide-right',\n center: 'scale',\n right: 'slide-left',\n 'bottom-left': 'slide-up',\n bottom: 'slide-up',\n 'bottom-right': 'slide-up',\n };\n const resolvedMotion: ModalMotion = motion === 'auto' ? autoMotionForPlacement[resolvedPlacement] : motion;\n\n const motionTransforms: Record<Exclude<ModalMotion, 'auto'>, { closed: string; open: string }> = {\n fade: { closed: 'none', open: 'none' },\n scale: { closed: 'translateY(-10px) scale(0.96)', open: 'translateY(0) scale(1)' },\n 'slide-up': { closed: 'translateY(20px)', open: 'translateY(0)' },\n 'slide-down': { closed: 'translateY(-20px)', open: 'translateY(0)' },\n 'slide-left': { closed: 'translateX(20px)', open: 'translateX(0)' },\n 'slide-right': { closed: 'translateX(-20px)', open: 'translateX(0)' },\n };\n const motionKey = (resolvedMotion === 'auto' ? 'scale' : resolvedMotion) as Exclude<ModalMotion, 'auto'>;\n const { closed: closedTransform, open: openTransform } = motionTransforms[motionKey];\n\n const resolvedEdgeOffset =\n typeof edgeOffset === 'number' ? `${edgeOffset}px` : edgeOffset;\n\n const resolvedBackdrop: CSSProperties =\n backdrop === 'none'\n ? { backgroundColor: 'transparent' }\n : backdrop === 'blur'\n ? {\n backgroundColor: overlayColor,\n backdropFilter: 'blur(6px)',\n WebkitBackdropFilter: 'blur(6px)' as any,\n }\n : { backgroundColor: overlayColor };\n\n const resolvedWidth = width ?? SIZE_WIDTHS[size];\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n const resolvedMaxHeight =\n maxHeight !== undefined\n ? typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n : size === 'full'\n ? '100vh'\n : 'calc(100vh - 40px)';\n\n const showDefaultFooter = footer === undefined && (onOk || onCancel);\n const resolvedFooter =\n footer === null || footer === false\n ? null\n : footer === undefined\n ? showDefaultFooter\n ? (\n <>\n {!hideCancel && (\n <DefaultButton variant=\"outline\" onClick={() => requestClose()}>\n {cancelText}\n </DefaultButton>\n )}\n {onOk && (\n <DefaultButton\n variant={okDanger ? 'danger' : 'primary'}\n onClick={handleOk}\n disabled={okDisabled}\n loading={confirmLoading ?? internalConfirmLoading}\n >\n {okText}\n </DefaultButton>\n )}\n </>\n )\n : null\n : footer;\n\n const labelId = ariaLabelledBy ?? (typeof title === 'string' ? titleId.current : undefined);\n\n const container =\n getContainer ? getContainer() : typeof document !== 'undefined' ? document.body : null;\n if (!container) return null;\n\n const modalNode = (\n <div\n ref={overlayRef}\n onMouseDown={handleMaskClick}\n role=\"presentation\"\n aria-hidden={!entered}\n className=\"shekel-modal-overlay\"\n style={{\n position: 'fixed',\n inset: 0,\n zIndex,\n display: 'flex',\n alignItems: align,\n justifyContent: justify,\n padding: size === 'full' ? 0 : resolvedEdgeOffset,\n opacity: entered ? 1 : 0,\n transition: `opacity ${animationDuration}ms ease-out, backdrop-filter ${animationDuration}ms ease-out`,\n overflowY: 'auto',\n willChange: 'opacity',\n ...resolvedBackdrop,\n }}\n >\n <style>{`\n @keyframes shekel-modal-spin { to { transform: rotate(360deg); } }\n @media (max-width: 640px) {\n .shekel-modal-overlay { padding: 12px !important; }\n .shekel-modal-panel { max-height: calc(100vh - 24px) !important; }\n .shekel-modal-panel .shekel-modal-header { padding-left: 16px !important; padding-right: 16px !important; }\n .shekel-modal-panel .shekel-modal-body { padding-left: 16px !important; padding-right: 16px !important; }\n .shekel-modal-panel .shekel-modal-footer { padding-left: 16px !important; padding-right: 16px !important; flex-direction: column-reverse !important; gap: 8px !important; }\n .shekel-modal-panel .shekel-modal-footer > * { width: 100% !important; }\n }\n `}</style>\n <div\n ref={contentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel}\n aria-labelledby={labelId}\n tabIndex={-1}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (\n submitOnEnter &&\n e.key === 'Enter' &&\n !e.shiftKey &&\n (e.target as HTMLElement).tagName !== 'TEXTAREA' &&\n onOk\n ) {\n e.preventDefault();\n handleOk();\n }\n }}\n className={`shekel-modal-panel ${className}`}\n style={{\n position: 'relative',\n width: '100%',\n maxWidth: resolvedWidth,\n maxHeight: resolvedMaxHeight,\n backgroundColor: bgColor,\n borderRadius: size === 'full' ? 0 : resolvedRadius,\n boxShadow: shadow,\n display: 'flex',\n flexDirection: 'column',\n opacity: entered ? 1 : 0,\n transform: entered ? openTransform : closedTransform,\n transition: `opacity ${animationDuration}ms cubic-bezier(0.23, 1, 0.32, 1), transform ${animationDuration}ms cubic-bezier(0.23, 1, 0.32, 1)`,\n outline: 'none',\n ...style,\n }}\n >\n {bare ? (\n <>\n {closable && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={requestClose}\n className=\"absolute top-3 right-3 z-10 flex items-center justify-center w-8 h-8 rounded-md bg-white/80 hover:bg-white shadow-sm transition-colors\"\n >\n {closeIcon ?? <CloseIcon />}\n </button>\n )}\n <div\n className={`flex-1 overflow-auto ${bodyClassName}`}\n style={bodyStyle}\n >\n {children}\n </div>\n </>\n ) : (\n <>\n {(title || closable) && (\n <div\n className={`shekel-modal-header flex items-start justify-between gap-4 px-6 pt-5 pb-3 ${headerClassName}`}\n style={headerStyle}\n >\n <div className=\"min-w-0 flex-1\">\n {title && (\n <div id={labelId} className=\"text-lg font-semibold text-[#181918]\">\n {title}\n </div>\n )}\n {description && (\n <div className=\"text-sm text-[#595959] mt-1\">{description}</div>\n )}\n </div>\n {closable && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={requestClose}\n className=\"shrink-0 flex items-center justify-center w-8 h-8 rounded-md hover:bg-[#F5F5F5] transition-colors\"\n >\n {closeIcon ?? <CloseIcon />}\n </button>\n )}\n </div>\n )}\n\n <div\n className={`shekel-modal-body flex-1 overflow-auto ${noPadding ? '' : 'px-6'} ${title || closable ? '' : noPadding ? '' : 'pt-5'} ${\n resolvedFooter || noPadding ? '' : 'pb-5'\n } ${bodyClassName}`}\n style={bodyStyle}\n >\n {children}\n </div>\n\n {resolvedFooter && (\n <div\n className={`shekel-modal-footer flex items-center justify-end gap-2 px-6 py-4 ${footerClassName}`}\n style={footerStyle}\n >\n {resolvedFooter}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n\n return createPortal(modalNode, container);\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: ReactNode;\n description?: ReactNode;\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';\n className?: string;\n style?: CSSProperties;\n\n // Colors\n activeColor?: string;\n inactiveColor?: string;\n errorColor?: string;\n textColor?: string;\n activeTextColor?: string;\n\n // Structural\n showConnector?: boolean;\n connectorColor?: string;\n gap?: number | string;\n iconSize?: number;\n checkSize?: number;\n borderWidth?: number;\n checkStrokeWidth?: number;\n\n // Events\n onStepClick?: (index: number) => void;\n}\n\nconst CheckIcon: FC<{ size: number; color: string; strokeWidth?: number }> = ({ size, color, strokeWidth = 2 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 12.5l4.5 4.5L19 7.5\"\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst XIcon: FC<{ size: number; color: string; strokeWidth?: number }> = ({ size, color, strokeWidth = 2 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" stroke={color} strokeWidth={strokeWidth} strokeLinecap=\"round\" />\n </svg>\n);\n\nexport const Steps: FC<StepsProps> = ({\n items,\n current = 0,\n direction = 'vertical',\n size = 'md',\n className = '',\n style,\n activeColor = '#EC615B',\n inactiveColor = '#101828',\n errorColor = '#C21919',\n textColor = '#494B4D',\n activeTextColor = '#181918',\n showConnector = false,\n connectorColor,\n gap,\n iconSize: iconSizeProp,\n checkSize: checkSizeProp,\n borderWidth: borderWidthProp,\n checkStrokeWidth: checkStrokeWidthProp,\n onStepClick,\n}) => {\n const iconSize = iconSizeProp ?? (size === 'sm' ? 28 : size === 'lg' ? 44 : 36);\n const checkSize = checkSizeProp ?? (size === 'sm' ? 18 : size === 'lg' ? 30 : 24);\n const iconBorderWidth = borderWidthProp ?? 2;\n const checkStrokeWidth = checkStrokeWidthProp ?? 2;\n const titleSize = size === 'sm' ? 14 : size === 'lg' ? 20 : 18;\n const descriptionSize = size === 'sm' ? 12 : size === 'lg' ? 14 : 13;\n const resolvedGap =\n gap !== undefined ? (typeof gap === 'number' ? `${gap}px` : gap) : direction === 'vertical' ? '28px' : '16px';\n\n const getStatus = (index: number, item: StepItem): NonNullable<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 colorForStatus = (status: StepItem['status']): string => {\n if (status === 'error') return errorColor;\n if (status === 'finish') return activeColor;\n if (status === 'process') return inactiveColor;\n return inactiveColor;\n };\n\n const renderIcon = (status: StepItem['status'], custom?: ReactNode): ReactNode => {\n if (custom) return custom;\n if (status === 'error') return <XIcon size={checkSize} color={errorColor} strokeWidth={checkStrokeWidth} />;\n if (status === 'finish') return <CheckIcon size={checkSize} color={activeColor} strokeWidth={checkStrokeWidth} />;\n if (status === 'process') return <CheckIcon size={checkSize} color={inactiveColor} strokeWidth={checkStrokeWidth} />;\n return null;\n };\n\n const isVertical = direction === 'vertical';\n\n const renderStep = (item: StepItem, index: number) => {\n const status = getStatus(index, item);\n const circleColor = colorForStatus(status);\n const isLast = index === items.length - 1;\n const clickable = !!onStepClick;\n\n return (\n <div\n key={index}\n className={`flex ${isVertical ? 'flex-row' : 'flex-col items-center'} ${clickable ? 'cursor-pointer' : ''}`}\n onClick={clickable ? () => onStepClick!(index) : undefined}\n style={!isLast ? { marginBottom: isVertical ? resolvedGap : 0, marginRight: !isVertical ? resolvedGap : 0 } : undefined}\n >\n <div className={`flex ${isVertical ? 'flex-col items-center' : 'flex-row items-center'} shrink-0`}>\n <div\n className=\"rounded-full flex items-center justify-center transition-colors duration-200 shrink-0\"\n style={{\n width: iconSize,\n height: iconSize,\n border: `${iconBorderWidth}px solid ${circleColor}`,\n backgroundColor: 'transparent',\n }}\n >\n {renderIcon(status, item.icon)}\n </div>\n {showConnector && !isLast && (\n <div\n className={isVertical ? 'w-px' : 'h-px'}\n style={{\n backgroundColor: connectorColor ?? '#E6E6E6',\n flex: 1,\n minHeight: isVertical ? 16 : undefined,\n minWidth: !isVertical ? 16 : undefined,\n margin: isVertical ? '6px 0' : '0 6px',\n }}\n />\n )}\n </div>\n <div\n className={isVertical ? 'flex-1 pl-4' : 'pt-2 text-center'}\n style={{ paddingBottom: isVertical && !isLast ? 2 : 0 }}\n >\n <div\n className=\"font-medium transition-colors duration-200\"\n style={{\n fontSize: titleSize,\n lineHeight: `${iconSize}px`,\n color: status === 'wait' ? textColor : activeTextColor,\n }}\n >\n {item.title}\n </div>\n {item.description && (\n <div\n className=\"transition-colors duration-200\"\n style={{\n fontSize: descriptionSize,\n color: '#8C8C8C',\n marginTop: 2,\n }}\n >\n {item.description}\n </div>\n )}\n </div>\n </div>\n );\n };\n\n return (\n <div\n className={`flex ${isVertical ? 'flex-col' : 'flex-row items-start'} ${className}`}\n style={style}\n >\n {items.map(renderStep)}\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 React, { useState } from 'react';\nimport type { FC, ChangeEvent, CSSProperties, ReactNode } from 'react';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean, event?: ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n indeterminate?: boolean;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'outline' | 'filled';\n label?: ReactNode;\n labelClassName?: string;\n labelStyle?: CSSProperties;\n labelPosition?: 'left' | 'right';\n className?: string;\n id?: string;\n name?: string;\n value?: string;\n accentColor?: string;\n borderColor?: string;\n boxBgColor?: string;\n boxRadius?: number | string;\n style?: CSSProperties;\n required?: boolean;\n autoFocus?: boolean;\n tabIndex?: number;\n}\n\nconst SIZE = {\n sm: { box: 16, icon: 10 },\n md: { box: 20, icon: 14 },\n lg: { box: 24, icon: 16 },\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 = 'outline',\n label,\n labelClassName = '',\n labelStyle,\n labelPosition = 'right',\n className = '',\n id,\n name,\n value,\n accentColor = '#EC615B',\n borderColor = '#181918',\n boxBgColor = '#FFFFFF',\n boxRadius = 6,\n style,\n required,\n autoFocus,\n tabIndex,\n}) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isControlled = controlledChecked !== undefined;\n const checked = isControlled ? !!controlledChecked : internalChecked;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const active = checked || indeterminate;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e.target.checked, e);\n };\n\n const dims = SIZE[size];\n const boxRad = typeof boxRadius === 'number' ? `${boxRadius}px` : boxRadius;\n const isFilled = variant === 'filled';\n const activeBg = isFilled ? accentColor : boxBgColor;\n const activeBorder = accentColor;\n\n const boxStyle: CSSProperties = {\n width: dims.box,\n height: dims.box,\n borderRadius: boxRad,\n border: `1.5px solid ${active ? activeBorder : borderColor}`,\n backgroundColor: disabled ? '#F5F5F5' : active ? activeBg : boxBgColor,\n transition: 'all 0.15s ease-out',\n };\n\n const iconColor = isFilled ? '#FFFFFF' : accentColor;\n\n const box = (\n <span\n aria-hidden\n className=\"relative inline-flex items-center justify-center shrink-0\"\n style={boxStyle}\n >\n <input\n type=\"checkbox\"\n id={inputId}\n name={name}\n value={value}\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n required={required}\n autoFocus={autoFocus}\n tabIndex={tabIndex}\n className=\"absolute inset-0 w-full h-full opacity-0 m-0 p-0 cursor-inherit\"\n style={{ appearance: 'none' }}\n />\n <span\n className=\"absolute inset-0 flex items-center justify-center pointer-events-none transition-opacity duration-150 ease-out\"\n style={{\n opacity: indeterminate || checked ? 1 : 0,\n transform: indeterminate || checked ? 'scale(1)' : 'scale(0.6)',\n transition: 'opacity 150ms ease-out, transform 150ms ease-out',\n }}\n >\n {indeterminate ? (\n <svg width={dims.icon} height={dims.icon} viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M3 8h10\" stroke={iconColor} strokeWidth=\"2.2\" strokeLinecap=\"round\" />\n </svg>\n ) : (\n <svg width={dims.icon} height={dims.icon} viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3 8.5l3.2 3.2L13 5\"\n stroke={iconColor}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </span>\n );\n\n const labelEl = label ? (\n <span className={`select-none ${labelClassName}`} style={{ color: '#181918', ...labelStyle }}>\n {label}\n </span>\n ) : null;\n\n return (\n <label\n htmlFor={inputId}\n className={`inline-flex items-center gap-2 align-middle ${\n disabled ? 'cursor-not-allowed opacity-60' : 'cursor-pointer'\n } ${className}`}\n style={style}\n onMouseDown={(e) => {\n // Prevent text selection / scroll-into-view from stealing layout\n if (e.detail > 1) e.preventDefault();\n }}\n >\n {labelPosition === 'left' && labelEl}\n {box}\n {labelPosition === 'right' && labelEl}\n </label>\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';\n\nexport const SHEKEL_DEFAULTS = {\n accent: '#EC615B',\n error: '#C21919',\n warning: '#FAAD14',\n border: '#D9D9D9',\n filledBorder: '#181918',\n text: '#181918',\n placeholder: '#8C8C8C',\n addonBg: '#FAFAFA',\n disabledBg: '#F5F5F5',\n hoverBg: 'rgba(0, 0, 0, 0.04)',\n};\n\nexport const hexWithAlpha = (hex: string, alpha: number): string => {\n if (hex.startsWith('rgb')) return hex;\n const h = hex.replace('#', '');\n const full = h.length === 3 ? h.split('').map((c) => c + c).join('') : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nexport interface ErrorIconProps {\n color?: string;\n size?: number;\n className?: string;\n}\n\nexport const ErrorIcon: React.FC<ErrorIconProps> = ({ color = '#C21919', size = 14, className = '' }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-hidden=\"true\"\n >\n <path\n d=\"M6.9974 9.33464V7.0013M6.9974 4.66797H7.00323M12.8307 7.0013C12.8307 10.223 10.2191 12.8346 6.9974 12.8346C3.77573 12.8346 1.16406 10.223 1.16406 7.0013C1.16406 3.77964 3.77573 1.16797 6.9974 1.16797C10.2191 1.16797 12.8307 3.77964 12.8307 7.0013Z\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha as sharedHexWithAlpha, ErrorIcon } from './_theme';\n\ntype NativeInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'>;\n\nexport interface InputProps extends NativeInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n addonBefore?: React.ReactNode;\n addonAfter?: React.ReactNode;\n allowClear?: boolean;\n status?: 'error' | 'warning';\n wrapperClassName?: string;\n wrapperStyle?: React.CSSProperties;\n onClear?: () => void;\n control?: Control<any>;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n addonBackgroundColor?: string;\n}\n\nconst hexWithAlpha = sharedHexWithAlpha;\n\nconst InputBase = React.forwardRef<HTMLInputElement, Omit<InputProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n allowClear,\n status,\n className = '',\n style,\n wrapperClassName = '',\n wrapperStyle,\n onClear,\n required,\n disabled,\n readOnly,\n id,\n value,\n defaultValue,\n onChange,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n addonBackgroundColor = '#FAFAFA',\n ...rest\n } = props;\n\n const [innerValue, setInnerValue] = React.useState<string | number | readonly string[] | undefined>(\n defaultValue\n );\n const isControlled = value !== undefined;\n const displayValue = isControlled ? value : innerValue;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n\n const isError = !!error || status === 'error';\n const isWarning = status === 'warning';\n\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInnerValue(e.target.value);\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) setInnerValue('');\n const synthetic = {\n target: { value: '' },\n currentTarget: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(synthetic);\n onClear?.();\n };\n\n const hasValue =\n displayValue !== undefined && displayValue !== '' && displayValue !== null;\n\n const resolvedBorder = isError\n ? errorColor\n : isWarning\n ? '#FAAD14'\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const focusShadow = isError\n ? hexWithAlpha(errorColor, 0.1)\n : isWarning\n ? 'rgba(250,173,20,0.1)'\n : hexWithAlpha(accentColor, 0.2);\n\n const themeVars = {\n '--shekel-accent': accentColor,\n '--shekel-border': resolvedBorder,\n '--shekel-focus-shadow': focusShadow,\n } as React.CSSProperties;\n\n const borderBase =\n 'border-[color:var(--shekel-border)] hover:border-[color:var(--shekel-accent)] focus-within:border-[color:var(--shekel-accent)]';\n const shadowBase = 'focus-within:shadow-[0_0_0_2px_var(--shekel-focus-shadow)]';\n const disabledClasses = disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white';\n\n const addonClasses = 'flex items-center px-3 text-sm border border-[color:var(--shekel-border)]';\n const addonStyle: React.CSSProperties = {\n backgroundColor: addonBackgroundColor,\n color: '#181918',\n whiteSpace: 'nowrap',\n };\n\n const showClear = allowClear && hasValue && !disabled && !readOnly;\n\n return (\n <div className=\"w-full\" style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className={`flex w-full ${wrapperClassName}`} style={wrapperStyle}>\n {addonBefore && (\n <div\n className={`${addonClasses} border-r-0 rounded-l-[12px]`}\n style={addonStyle}\n >\n {addonBefore}\n </div>\n )}\n <div\n className={`flex items-center flex-1 min-w-0 border transition-all duration-200 ${borderBase} ${shadowBase} ${disabledClasses} ${\n addonBefore ? 'rounded-l-none' : 'rounded-l-[12px]'\n } ${addonAfter ? 'rounded-r-none' : 'rounded-r-[12px]'}`}\n style={{ height: 44 }}\n >\n {prefix && (\n <span className=\"pl-3 flex items-center text-[#181918] shrink-0\">{prefix}</span>\n )}\n <input\n ref={ref}\n id={inputId}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n value={displayValue as any}\n onChange={handleChange}\n className={`flex-1 min-w-0 h-full bg-transparent outline-none text-sm text-[#181918] placeholder:text-[#8C8C8C] ${className}`}\n style={{\n padding: '4px 11px',\n paddingLeft: prefix ? 8 : 11,\n paddingRight: suffix || showClear ? 8 : 11,\n ...style,\n }}\n {...rest}\n />\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-5 h-5 mr-2 text-[#BFBFBF] hover:text-[#595959] transition-colors shrink-0\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path\n d=\"M4 4l4 4M8 4l-4 4\"\n stroke=\"#FFFFFF\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n {suffix && (\n <span className=\"pr-3 flex items-center text-[#181918] shrink-0\">{suffix}</span>\n )}\n </div>\n {addonAfter && (\n <div\n className={`${addonClasses} border-l-0 rounded-r-[12px]`}\n style={addonStyle}\n >\n {addonAfter}\n </div>\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nInputBase.displayName = 'InputBase';\n\nconst ControlledInput: React.FC<\n InputProps & { control: NonNullable<InputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <InputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(e) => {\n field.onChange(e);\n rest.onChange?.(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n rest.onBlur?.(e);\n }}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ 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 }\n);\nInput.displayName = 'Input';\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { Input } from './Input';\nimport type { InputProps } from './Input';\n\nexport interface PasswordInputProps extends Omit<InputProps, 'type' | 'suffix' | 'control'> {\n control?: Control<any>;\n visibilityToggle?: boolean;\n}\n\nconst EyeIcon: React.FC<{ visible: boolean }> = ({ visible }) =>\n visible ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"12\" r=\"3\" stroke=\"currentColor\" strokeWidth=\"1.7\" />\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M9.88 9.88a3 3 0 104.24 4.24M10.73 5.08A10.43 10.43 0 0112 5c6.5 0 10 7 10 7a13.16 13.16 0 01-1.67 2.68M6.61 6.61A13.53 13.53 0 002 12s3.5 7 10 7a9.74 9.74 0 005.39-1.61\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2 2l20 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n\nconst PasswordInputBase = React.forwardRef<HTMLInputElement, Omit<PasswordInputProps, 'control'>>(\n ({ visibilityToggle = true, ...props }, ref) => {\n const [visible, setVisible] = React.useState(false);\n\n const toggle = (\n <button\n type=\"button\"\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? 'Hide password' : 'Show password'}\n tabIndex={-1}\n className=\"flex items-center justify-center text-[#8C8C8C] hover:text-[#181918] transition-colors\"\n >\n <EyeIcon visible={visible} />\n </button>\n );\n\n const isError = !!props.error;\n const errColor = props.errorColor ?? '#C21919';\n return (\n <>\n <style>{`\n .shekel-password-input::placeholder {\n transform: translateY(-2px);\n }\n `}</style>\n <Input\n ref={ref}\n {...props}\n type={visible ? 'text' : 'password'}\n suffix={visibilityToggle ? toggle : undefined}\n className={`shekel-password-input placeholder:text-sm placeholder:tracking-normal ${props.className ?? ''}`}\n style={{\n fontSize: visible ? undefined : 20,\n letterSpacing: visible ? 'normal' : '0.15em',\n color: isError && !visible ? errColor : undefined,\n caretColor: isError ? errColor : undefined,\n ...props.style,\n }}\n />\n </>\n );\n }\n);\nPasswordInputBase.displayName = 'PasswordInputBase';\n\nconst ControlledPasswordInput: React.FC<\n PasswordInputProps & { control: NonNullable<PasswordInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PasswordInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(e) => {\n field.onChange(e);\n rest.onChange?.(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n rest.onBlur?.(e);\n }}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>(\n ({ 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 }\n);\nPasswordInput.displayName = 'PasswordInput';\n","import React, { useRef, useState, useEffect, KeyboardEvent, ClipboardEvent } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\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 boxClassName?: string;\n showSeparator?: boolean;\n control?: Control<any>;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n boxWidth?: number | string;\n boxHeight?: number | string;\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 boxClassName = '',\n showSeparator = true,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n boxWidth = 63,\n boxHeight = 44,\n}) => {\n const [otp, setOtp] = useState<string[]>(Array(length).fill(''));\n const inputRefs = useRef<(HTMLInputElement | 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 } else {\n setOtp(Array(length).fill(''));\n }\n }, [value, length]);\n\n const handleChange = (index: number, val: string) => {\n if (val && !/^\\d+$/.test(val)) return;\n const newOtp = [...otp];\n newOtp[index] = val.slice(-1);\n setOtp(newOtp);\n const otpString = newOtp.join('');\n onChange?.(otpString);\n if (val && index < length - 1) inputRefs.current[index + 1]?.focus();\n if (newOtp.every((digit) => digit !== '')) onComplete?.(otpString);\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 } else if (e.key === 'ArrowLeft' && index > 0) {\n inputRefs.current[index - 1]?.focus();\n } else if (e.key === 'ArrowRight' && index < length - 1) {\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 if (!/^\\d+$/.test(pastedData)) return;\n const pastedArray = pastedData.split('').slice(0, length);\n const newOtp = [...pastedArray, ...Array(length - pastedArray.length).fill('')];\n setOtp(newOtp);\n const otpString = newOtp.join('');\n onChange?.(otpString);\n const nextIndex = Math.min(pastedArray.length, length - 1);\n inputRefs.current[nextIndex]?.focus();\n if (newOtp.every((digit) => digit !== '')) onComplete?.(otpString);\n };\n\n const resolvedBoxBorder = (filled: boolean) =>\n error ? errorColor : filled ? filledBorderColor : borderColor;\n const focusShadow = error ? hexWithAlpha(errorColor, 0.1) : hexWithAlpha(accentColor, 0.2);\n const boxBaseClass =\n 'border-[color:var(--shekel-box-border)] hover:border-[color:var(--shekel-accent)] focus-within:border-[color:var(--shekel-accent)]';\n const boxShadow = 'focus-within:shadow-[0_0_0_2px_var(--shekel-focus-shadow)]';\n\n return (\n <div className=\"w-full\">\n <div\n className={`flex flex-nowrap gap-2 justify-center w-full ${className}`}\n onBlur={onBlur}\n >\n {otp.map((digit, index) => (\n <React.Fragment key={index}>\n <div\n className={`flex-1 min-w-0 border rounded-[12px] transition-all duration-200 ${boxBaseClass} ${boxShadow} ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white'\n } ${boxClassName}`}\n style={{\n maxWidth: typeof boxWidth === 'number' ? `${boxWidth}px` : boxWidth,\n height: typeof boxHeight === 'number' ? `${boxHeight}px` : boxHeight,\n aspectRatio: '63 / 44',\n ['--shekel-box-border' as any]: resolvedBoxBorder(digit !== ''),\n ['--shekel-accent' as any]: accentColor,\n ['--shekel-focus-shadow' as any]: focusShadow,\n }}\n >\n <input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\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 inputMode=\"numeric\"\n autoComplete=\"one-time-code\"\n className=\"w-full h-full bg-transparent outline-none text-center text-lg font-semibold text-[#181918]\"\n />\n </div>\n {showSeparator && index === Math.floor(length / 2) - 1 && (\n <div className=\"flex items-center justify-center shrink-0 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 gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n\nconst ControlledOTPInput: React.FC<\n OTPInputProps & { control: NonNullable<OTPInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, errorMessage: errorMessageProp, ...rest }) => {\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, useRef } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\ninterface CountryCodeSelectProps {\n value: string;\n onChange: (value: string) => void;\n options: PhoneCodeOption[];\n disabled?: boolean;\n error?: boolean;\n accentColor: string;\n errorColor: string;\n}\n\nconst CountryCodeSelect: React.FC<CountryCodeSelectProps> = ({\n value,\n onChange,\n options,\n disabled,\n error,\n accentColor,\n errorColor,\n}) => {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setOpen(false);\n setActiveIndex(-1);\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n useEffect(() => {\n if (open) setActiveIndex(options.findIndex((o) => o.value === value));\n }, [open, value, options]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n }\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n setOpen(false);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(options.length - 1, i + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(0, i - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (activeIndex >= 0) {\n onChange(options[activeIndex].value);\n setOpen(false);\n }\n }\n };\n\n const selected = options.find((o) => o.value === value) ?? options[0];\n const borderColor = error ? errorColor : open ? accentColor : '#D9D9D9';\n const triggerStyle: React.CSSProperties = {\n height: 44,\n borderColor,\n boxShadow: open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined,\n };\n const hasAnyFlag = options.some((o) => !!o.flag);\n const triggerWidth = hasAnyFlag ? 108 : 85;\n\n return (\n <div ref={wrapperRef} className=\"relative\" style={{ width: triggerWidth }}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => !disabled && setOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={`flex items-center justify-between w-full bg-[#FAFAFA] border rounded-[12px] pl-3 pr-2 text-sm text-[#181918] transition-all duration-200 ${\n disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\n }`}\n style={triggerStyle}\n >\n <span className=\"flex items-center min-w-0 gap-1.5\">\n {selected?.flag && (\n <img\n src={selected.flag}\n alt=\"\"\n aria-hidden\n className=\"shrink-0 object-cover rounded-full\"\n style={{ width: 22, height: 22 }}\n />\n )}\n <span className=\"truncate\">{selected?.label ?? value}</span>\n </span>\n <span\n className={`shrink-0 ml-1 flex items-center justify-center text-[#8C8C8C] transition-transform duration-200 ${\n open ? 'rotate-180' : ''\n }`}\n style={{ width: 12, height: 12 }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path\n d=\"M2.5 4.5l3.5 3.5 3.5-3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </button>\n {open && (\n <div\n role=\"listbox\"\n className=\"absolute left-0 top-full z-50 bg-white overflow-auto max-h-60\"\n style={{\n width: hasAnyFlag ? 180 : 120,\n marginTop: 4,\n padding: 4,\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n }}\n >\n {options.map((opt, i) => {\n const isSelected = opt.value === value;\n const isActive = i === activeIndex;\n return (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => {\n onChange(opt.value);\n setOpen(false);\n }}\n onMouseEnter={() => setActiveIndex(i)}\n className=\"flex items-center justify-between cursor-pointer transition-colors duration-150\"\n style={{\n padding: '5px 12px',\n minHeight: 32,\n borderRadius: 4,\n fontSize: 14,\n lineHeight: '22px',\n backgroundColor: isSelected\n ? hexWithAlpha(accentColor, 0.08)\n : isActive\n ? 'rgba(0, 0, 0, 0.04)'\n : 'transparent',\n color: isSelected ? accentColor : '#181918',\n fontWeight: isSelected ? 600 : 400,\n }}\n >\n <span className=\"flex items-center min-w-0 gap-2\">\n {opt.flag && (\n <img\n src={opt.flag}\n alt=\"\"\n aria-hidden\n className=\"shrink-0 object-cover rounded-full\"\n style={{ width: 24, height: 24 }}\n />\n )}\n <span className=\"truncate\">{opt.label}</span>\n </span>\n {isSelected && (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0 ml-2\">\n <path\n d=\"M2 6l3 3 5-6\"\n stroke={accentColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'prefix' | 'value' | 'onChange'\n>;\n\nexport interface PhoneCodeOption {\n value: string;\n label: string;\n flag?: string;\n}\n\nexport interface PhoneInputProps extends NativeInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n countryCode?: string;\n defaultCountryCode?: string;\n onCountryCodeChange?: (value: string) => void;\n countryCodes?: PhoneCodeOption[];\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 wrapperClassName?: string;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n}\n\nconst PhoneInputBase = React.forwardRef<HTMLInputElement, Omit<PhoneInputProps, 'control'>>(\n (\n {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n className = '',\n countryCode,\n defaultCountryCode = '+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 required,\n disabled,\n id,\n wrapperClassName = '',\n style,\n onKeyDown,\n onPaste,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n ...rest\n },\n ref\n ) => {\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const [displayValue, setDisplayValue] = useState('');\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n const isCodeControlled = countryCode !== undefined;\n const [innerCode, setInnerCode] = useState<string>(defaultCountryCode);\n const activeCode = isCodeControlled ? (countryCode as string) : innerCode;\n\n const handleCodeChange = (next: string) => {\n if (!isCodeControlled) setInnerCode(next);\n onCountryCodeChange?.(next);\n };\n\n useEffect(() => {\n if (value !== undefined) {\n const cleaned = String(value).replace(/\\D/g, '');\n setDisplayValue(formatPhoneNumber(cleaned));\n }\n }, [value, format, activeCode]);\n\n const formatPhoneNumber = (val: string): string => {\n const cleaned = val.replace(/\\D/g, '');\n if (customFormat) return customFormat(cleaned);\n if (format === 'none') return cleaned;\n\n if (format === 'spaced') {\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n return `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n }\n if (format === 'dashed') {\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `${cleaned.slice(0, 3)}-${cleaned.slice(3)}`;\n return `${cleaned.slice(0, 3)}-${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n if (activeCode === '+1') {\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`;\n return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`;\n }\n if (cleaned.length <= 3) return cleaned;\n if (cleaned.length <= 6) return `${cleaned.slice(0, 3)} ${cleaned.slice(3)}`;\n return `${cleaned.slice(0, 3)} ${cleaned.slice(3, 6)} ${cleaned.slice(6, 10)}`;\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n !/^\\d$/.test(e.key) &&\n !['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(e.key) &&\n !(e.metaKey || e.ctrlKey)\n ) {\n e.preventDefault();\n }\n onKeyDown?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const cursorPosition = input.selectionStart || 0;\n const cleaned = input.value.replace(/\\D/g, '');\n const formatted = formatPhoneNumber(cleaned);\n const oldLength = displayValue.length;\n const newLength = formatted.length;\n const diff = newLength - oldLength;\n\n setDisplayValue(formatted);\n\n requestAnimationFrame(() => {\n const newCursor = Math.max(0, Math.min(cursorPosition + diff, formatted.length));\n input.setSelectionRange(newCursor, newCursor);\n });\n\n if (onChange) {\n const synthetic = { ...e, target: { ...e.target, value: cleaned } } as React.ChangeEvent<HTMLInputElement>;\n onChange(synthetic);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pasted = e.clipboardData.getData('text/plain').replace(/\\D/g, '');\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) + pasted;\n const formatted = formatPhoneNumber(newCleaned);\n setDisplayValue(formatted);\n if (onChange) {\n const synthetic = { ...e, target: { ...e.target, value: newCleaned } } as any;\n onChange(synthetic);\n }\n onPaste?.(e);\n };\n\n const isError = !!error;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const hasValue = displayValue !== '';\n const resolvedBorder = isError ? errorColor : hasValue ? filledBorderColor : defaultBorderColor;\n const focusShadow = isError ? hexWithAlpha(errorColor, 0.1) : hexWithAlpha(accentColor, 0.2);\n const themeVars = {\n '--shekel-accent': accentColor,\n '--shekel-border': resolvedBorder,\n '--shekel-focus-shadow': focusShadow,\n } as React.CSSProperties;\n const phoneBorder =\n 'border-[color:var(--shekel-border)] hover:border-[color:var(--shekel-accent)] focus-within:border-[color:var(--shekel-accent)]';\n const phoneShadow = 'focus-within:shadow-[0_0_0_2px_var(--shekel-focus-shadow)]';\n\n return (\n <div className=\"w-full\" style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className={`flex gap-2 ${wrapperClassName}`}>\n {showCountryCodeDropdown ? (\n <CountryCodeSelect\n value={activeCode}\n onChange={handleCodeChange}\n options={countryCodes}\n disabled={disabled}\n error={isError}\n accentColor={accentColor}\n errorColor={errorColor}\n />\n ) : (\n <div\n className=\"flex items-center justify-center border rounded-[12px] text-sm font-medium\"\n style={{\n width: 61,\n height: 44,\n borderColor: isError ? errorColor : defaultBorderColor,\n backgroundColor: disabled ? '#F5F5F5' : '#FAFAFA',\n color: disabled ? '#00000040' : '#000000',\n }}\n >\n {activeCode}\n </div>\n )}\n <div\n className={`flex items-center flex-1 min-w-0 border rounded-[12px] transition-all duration-200 ${phoneBorder} ${phoneShadow} ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white'\n }`}\n style={{ height: 44 }}\n >\n <input\n ref={(el) => {\n innerRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }}\n id={inputId}\n type=\"tel\"\n inputMode=\"tel\"\n required={required}\n disabled={disabled}\n value={displayValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={`flex-1 min-w-0 h-full bg-transparent outline-none text-sm text-[#181918] placeholder:text-[#8C8C8C] ${className}`}\n style={{ padding: '4px 11px', ...style }}\n {...rest}\n />\n </div>\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nPhoneInputBase.displayName = 'PhoneInputBase';\n\nconst ControlledPhoneInput: React.FC<\n PhoneInputProps & { control: NonNullable<PhoneInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <PhoneInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(e) => field.onChange(e.target.value)}\n onBlur={() => field.onBlur()}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({ 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 }\n);\nPhoneInput.displayName = 'PhoneInput';\n","import React, { useState, useEffect } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { ErrorIcon } from './_theme';\n\ntype NativeInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'prefix' | 'value' | 'onChange'\n>;\n\nexport interface CurrencyInputProps extends NativeInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n currencySymbol?: string;\n formatAmount?: boolean;\n value?: string | number;\n onChange?: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;\n control?: Control<any>;\n wrapperClassName?: string;\n addonAfter?: React.ReactNode;\n addonBefore?: React.ReactNode;\n currencyPillBgColor?: string;\n currencyPillColor?: string;\n hideCurrencyPill?: boolean;\n}\n\nconst 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\nconst unformatNumber = (formatted: string): string => formatted.replace(/,/g, '');\n\nconst CurrencyInputBase = React.forwardRef<HTMLInputElement, Omit<CurrencyInputProps, 'control'>>(\n (\n {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n currencySymbol = '₦',\n formatAmount = false,\n value: externalValue,\n onChange,\n required,\n disabled,\n id,\n className = '',\n style,\n wrapperClassName = '',\n addonAfter,\n addonBefore,\n currencyPillBgColor = '#F0F2F4',\n currencyPillColor = '#000000',\n hideCurrencyPill = false,\n ...rest\n },\n ref\n ) => {\n const [displayValue, setDisplayValue] = useState<string>('');\n const reactId = React.useId();\n const inputId = id ?? reactId;\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 if (formatAmount) {\n const rawValue = unformatNumber(inputValue);\n const formatted = formatNumber(rawValue);\n setDisplayValue(formatted);\n onChange?.(rawValue, e);\n } else {\n setDisplayValue(inputValue);\n onChange?.(inputValue, e);\n }\n };\n\n const isError = !!error;\n const hasValue = displayValue !== '' && displayValue !== undefined;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const borderClass = isError\n ? 'border-[#C21919] focus-within:shadow-[0_0_0_2px_rgba(194,25,25,0.1)]'\n : hasValue\n ? 'border-[#181918] hover:border-[#EC615B] focus-within:border-[#EC615B] focus-within:shadow-[0_0_0_2px_rgba(236,97,91,0.2)]'\n : 'border-[#D9D9D9] hover:border-[#EC615B] focus-within:border-[#EC615B] focus-within:shadow-[0_0_0_2px_rgba(236,97,91,0.2)]';\n\n return (\n <div className=\"w-full\">\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? '#C21919' : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div\n className={`flex items-stretch w-full border rounded-[12px] transition-all duration-200 overflow-hidden ${borderClass} ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'bg-white'\n } ${wrapperClassName}`}\n style={{ height: 44 }}\n >\n {addonBefore && (\n <div\n className=\"flex items-center justify-center shrink-0 px-3 text-sm font-medium\"\n style={{ backgroundColor: currencyPillBgColor, color: currencyPillColor }}\n >\n {addonBefore}\n </div>\n )}\n {!hideCurrencyPill && (\n <div\n className=\"flex items-center justify-center shrink-0 font-medium\"\n style={{\n width: 37,\n backgroundColor: currencyPillBgColor,\n color: currencyPillColor,\n }}\n >\n {currencySymbol}\n </div>\n )}\n <input\n ref={ref}\n id={inputId}\n required={required}\n disabled={disabled}\n value={displayValue}\n onChange={handleChange}\n inputMode={formatAmount ? 'decimal' : rest.inputMode}\n className={`flex-1 min-w-0 h-full bg-transparent outline-none text-sm text-[#181918] placeholder:text-[#8C8C8C] ${className}`}\n style={{ padding: '4px 16px', ...style }}\n {...rest}\n />\n {addonAfter && (\n <div\n className=\"flex items-center justify-center shrink-0 px-3\"\n style={{ backgroundColor: currencyPillBgColor }}\n >\n {addonAfter}\n </div>\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: '#C21919' }}>\n <ErrorIcon color=\"#C21919\" size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nCurrencyInputBase.displayName = 'CurrencyInputBase';\n\nconst ControlledCurrencyInput: React.FC<\n CurrencyInputProps & { control: NonNullable<CurrencyInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <CurrencyInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(value) => field.onChange(value)}\n onBlur={() => field.onBlur()}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const CurrencyInput = React.forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ 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 }\n);\nCurrencyInput.displayName = 'CurrencyInput';\n","import React, { useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport interface SelectInputOption {\n value: string | number;\n label: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n [key: string]: any;\n}\n\nexport type SelectInputValue = string | number | (string | number)[] | undefined;\n\nexport interface SelectInputProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n required?: boolean;\n disabled?: boolean;\n value?: SelectInputValue;\n defaultValue?: SelectInputValue;\n onChange?: (\n value: SelectInputValue,\n option?: SelectInputOption | SelectInputOption[]\n ) => void;\n options?: SelectInputOption[];\n placeholder?: string;\n showSearch?: boolean;\n searchPlaceholder?: string;\n optionFilterProp?: 'label' | 'value';\n filterOption?: boolean | ((input: string, option: SelectInputOption) => boolean);\n onSearch?: (value: string) => void;\n mode?: 'single' | 'multiple';\n allowClear?: boolean;\n height?: number | string;\n borderRadius?: number | string;\n className?: string;\n style?: React.CSSProperties;\n popupClassName?: string;\n popupStyle?: React.CSSProperties;\n onBlur?: () => void;\n onFocus?: () => void;\n onDropdownVisibleChange?: (open: boolean) => void;\n control?: Control<any>;\n name?: string;\n id?: string;\n notFoundContent?: React.ReactNode;\n status?: 'error' | 'warning';\n optionRender?: (option: SelectInputOption, info: { selected: boolean }) => React.ReactNode;\n suffixIcon?: React.ReactNode;\n prefixIcon?: React.ReactNode;\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n selectedBgColor?: string;\n selectedTextColor?: string;\n optionHoverColor?: string;\n tagBgColor?: string;\n tagBorderColor?: string;\n}\n\nconst defaultFilter = (\n input: string,\n option: SelectInputOption,\n prop: 'label' | 'value' = 'label'\n): boolean => {\n const search = input.toLowerCase();\n const labelStr = typeof option.label === 'string' ? option.label.toLowerCase() : '';\n const valueStr = String(option.value).toLowerCase();\n if (prop === 'value') return valueStr.includes(search);\n return labelStr.includes(search) || valueStr.includes(search);\n};\n\nconst Chevron: React.FC<{ open: boolean; color?: string }> = ({ open, color = '#8C8C8C' }) => (\n <span\n className={`shrink-0 flex items-center justify-center transition-transform duration-200 ${\n open ? 'rotate-180' : ''\n }`}\n style={{ width: 16, height: 16, color }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n);\n\nconst ClearIcon: React.FC = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path d=\"M4 4l4 4M8 4l-4 4\" stroke=\"#FFFFFF\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst CheckIcon: React.FC<{ color?: string }> = ({ color = '#EC615B' }) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0 ml-2\">\n <path\n d=\"M3 8l3.5 3.5L13 5\"\n stroke={color}\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst SelectInputBase = React.forwardRef<HTMLDivElement, Omit<SelectInputProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n required,\n disabled,\n value: externalValue,\n defaultValue,\n onChange,\n options = [],\n placeholder = 'Select an option',\n showSearch = true,\n searchPlaceholder = 'Search',\n optionFilterProp = 'label',\n filterOption,\n onSearch,\n mode = 'single',\n allowClear = true,\n height = 44,\n borderRadius = 12,\n className = '',\n style,\n popupClassName = '',\n popupStyle,\n onBlur,\n onFocus,\n onDropdownVisibleChange,\n id,\n notFoundContent = 'No results found',\n status,\n optionRender,\n suffixIcon,\n prefixIcon,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n selectedBgColor,\n selectedTextColor,\n optionHoverColor = 'rgba(0, 0, 0, 0.04)',\n tagBgColor = '#F5F5F5',\n tagBorderColor = '#E8E8E8',\n } = props;\n const resolvedSelectedBg = selectedBgColor ?? hexWithAlpha(accentColor, 0.08);\n const resolvedSelectedText = selectedTextColor ?? accentColor;\n\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = useState<SelectInputValue>(\n defaultValue ?? (mode === 'multiple' ? [] : undefined)\n );\n const value = isControlled ? externalValue : innerValue;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const [hovered, setHovered] = useState(false);\n\n const reactId = React.useId();\n const selectId = id ?? reactId;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [panelPos, setPanelPos] = useState<{ top: number; left: number; width: number }>({\n top: 0,\n left: 0,\n width: 0,\n });\n\n const updatePanelPos = useCallback(() => {\n if (!triggerRef.current) return;\n const r = triggerRef.current.getBoundingClientRect();\n const measured = panelRef.current?.offsetHeight ?? 0;\n const fallbackMaxHeight = 300;\n const panelH = measured || fallbackMaxHeight;\n const spaceBelow = window.innerHeight - r.bottom;\n const spaceAbove = r.top;\n const openUpward = spaceBelow < panelH && spaceAbove > spaceBelow;\n const top = openUpward ? r.top - panelH - 4 : r.bottom + 4;\n setPanelPos({ top: Math.max(4, top), left: r.left, width: r.width });\n }, []);\n\n useEffect(() => {\n if (!open) return;\n updatePanelPos();\n const h = () => updatePanelPos();\n window.addEventListener('resize', h);\n window.addEventListener('scroll', h, true);\n return () => {\n window.removeEventListener('resize', h);\n window.removeEventListener('scroll', h, true);\n };\n }, [open, updatePanelPos]);\n\n const searchInputRef = useRef<HTMLInputElement>(null);\n const inlineInputRef = useRef<HTMLInputElement>(null);\n\n const isError = !!error || status === 'error';\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n const filterFn = useCallback(\n (input: string, option: SelectInputOption) => {\n if (filterOption === false) return true;\n if (typeof filterOption === 'function') return filterOption(input, option);\n return defaultFilter(input, option, optionFilterProp);\n },\n [filterOption, optionFilterProp]\n );\n\n const filteredOptions = useMemo(() => {\n if (!showSearch || !searchQuery) return options;\n return options.filter((o) => filterFn(searchQuery, o));\n }, [options, searchQuery, showSearch, filterFn]);\n\n useLayoutEffect(() => {\n if (!open) return;\n updatePanelPos();\n }, [open, filteredOptions.length, updatePanelPos]);\n\n const isMultiple = mode === 'multiple';\n const selectedValues: (string | number)[] = isMultiple\n ? Array.isArray(value)\n ? value\n : []\n : value !== undefined && value !== null && value !== ''\n ? [value as string | number]\n : [];\n\n const selectedOptions: SelectInputOption[] = selectedValues\n .map((v) => options.find((o) => o.value === v))\n .filter(Boolean) as SelectInputOption[];\n\n const hasValue = selectedValues.length > 0;\n\n const openPanel = () => {\n if (disabled) return;\n setOpen(true);\n onDropdownVisibleChange?.(true);\n onFocus?.();\n };\n const closePanel = () => {\n setOpen(false);\n setSearchQuery('');\n setActiveIndex(-1);\n onDropdownVisibleChange?.(false);\n onBlur?.();\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n const insideWrapper = wrapperRef.current?.contains(target);\n const insidePanel = panelRef.current?.contains(target);\n if (!insideWrapper && !insidePanel) {\n if (open) closePanel();\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n useEffect(() => {\n if (open && showSearch) {\n if (inlineInputRef.current) inlineInputRef.current.focus();\n else if (searchInputRef.current) searchInputRef.current.focus();\n }\n if (open) {\n const firstSelectedIndex = filteredOptions.findIndex((o) =>\n selectedValues.includes(o.value)\n );\n setActiveIndex(firstSelectedIndex >= 0 ? firstSelectedIndex : 0);\n }\n }, [open]);\n\n const commitChange = (next: SelectInputValue, option?: SelectInputOption | SelectInputOption[]) => {\n if (!isControlled) setInnerValue(next);\n onChange?.(next, option);\n };\n\n const handleSelect = (option: SelectInputOption) => {\n if (option.disabled) return;\n if (isMultiple) {\n const current = Array.isArray(value) ? value : [];\n const isSelected = current.includes(option.value);\n const next = isSelected\n ? current.filter((v) => v !== option.value)\n : [...current, option.value];\n const nextOptions = options.filter((o) => next.includes(o.value));\n commitChange(next, nextOptions);\n } else {\n commitChange(option.value, option);\n closePanel();\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n const empty: SelectInputValue = isMultiple ? [] : undefined;\n commitChange(empty, isMultiple ? [] : undefined);\n };\n\n const handleRemoveTag = (e: React.MouseEvent, optionValue: string | number) => {\n e.stopPropagation();\n if (!isMultiple) return;\n const current = Array.isArray(value) ? value : [];\n const next = current.filter((v) => v !== optionValue);\n const nextOptions = options.filter((o) => next.includes(o.value));\n commitChange(next, nextOptions);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n e.preventDefault();\n openPanel();\n }\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closePanel();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(filteredOptions.length - 1, i + 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(0, i - 1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (activeIndex >= 0 && filteredOptions[activeIndex]) {\n handleSelect(filteredOptions[activeIndex]);\n }\n } else if (e.key === 'Backspace' && isMultiple && !searchQuery && selectedValues.length > 0) {\n const last = selectedValues[selectedValues.length - 1];\n const current = Array.isArray(value) ? value : [];\n const next = current.filter((v) => v !== last);\n const nextOptions = options.filter((o) => next.includes(o.value));\n commitChange(next, nextOptions);\n }\n };\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n onSearch?.(e.target.value);\n setActiveIndex(0);\n };\n\n const resolvedBorder = isError\n ? errorColor\n : open\n ? accentColor\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const openShadow = open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined;\n const themeVars = {\n '--shekel-accent': accentColor,\n } as React.CSSProperties;\n\n const showClearBtn = allowClear && hasValue && !disabled;\n\n return (\n <div className=\"w-full\" ref={ref} style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={selectId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className=\"relative\" ref={wrapperRef}>\n <div\n ref={triggerRef as any}\n id={selectId}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n onClick={() => (open ? closePanel() : openPanel())}\n onKeyDown={handleKeyDown}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={`flex items-center w-full bg-white border transition-colors duration-200 hover:border-[color:var(--shekel-accent)] ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'cursor-pointer'\n } ${className}`}\n style={{\n minHeight: resolvedHeight,\n borderRadius: resolvedRadius,\n padding: isMultiple && selectedValues.length > 0 ? '4px 8px 4px 8px' : '4px 11px',\n borderColor: resolvedBorder,\n boxShadow: openShadow,\n ...style,\n }}\n >\n {prefixIcon && (\n <span className=\"shrink-0 mr-2 flex items-center text-[#8C8C8C]\">{prefixIcon}</span>\n )}\n <div className=\"flex-1 min-w-0 flex flex-wrap items-center gap-1 relative\">\n {isMultiple &&\n selectedOptions.map((opt) => (\n <span\n key={opt.value}\n className=\"inline-flex items-center gap-1 rounded px-2 text-xs text-[#181918] border\"\n style={{\n height: 24,\n lineHeight: '22px',\n backgroundColor: tagBgColor,\n borderColor: tagBorderColor,\n }}\n >\n <span className=\"truncate max-w-[140px]\">{opt.label}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={(e) => handleRemoveTag(e, opt.value)}\n className=\"flex items-center justify-center text-[#8C8C8C] hover:text-[#181918]\"\n aria-label=\"Remove\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path\n d=\"M2 2l6 6M8 2l-6 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n </span>\n ))}\n\n {open && showSearch ? (\n <input\n ref={inlineInputRef}\n value={searchQuery}\n onChange={handleSearchChange}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n placeholder={\n !isMultiple && selectedOptions[0]\n ? typeof selectedOptions[0].label === 'string'\n ? selectedOptions[0].label\n : placeholder\n : placeholder\n }\n className=\"flex-1 min-w-[40px] outline-none bg-transparent text-sm text-[#181918] placeholder:text-[#8C8C8C]\"\n />\n ) : !isMultiple && selectedOptions[0] ? (\n <span className=\"truncate text-sm text-[#181918]\">{selectedOptions[0].label}</span>\n ) : selectedOptions.length === 0 ? (\n <span className=\"truncate text-sm text-[#8C8C8C]\">{placeholder}</span>\n ) : null}\n </div>\n <div className=\"flex items-center shrink-0 ml-2\">\n {showClearBtn && hovered ? (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-4 h-4 text-[#BFBFBF] hover:text-[#595959] transition-colors\"\n >\n <ClearIcon />\n </button>\n ) : suffixIcon !== undefined ? (\n <span className=\"flex items-center text-[#8C8C8C]\">{suffixIcon}</span>\n ) : (\n <Chevron open={open} />\n )}\n </div>\n </div>\n {open && !disabled && typeof document !== 'undefined' && createPortal(\n <>\n <style>{`\n @keyframes shekel-dropdown-in {\n from { opacity: 0; transform: scaleY(0.9) translateY(-4px); }\n to { opacity: 1; transform: scaleY(1) translateY(0); }\n }\n .shekel-dropdown-anim {\n transform-origin: top center;\n animation: shekel-dropdown-in 180ms cubic-bezier(0.23, 1, 0.32, 1);\n }\n `}</style>\n <div\n ref={panelRef}\n className={`fixed z-[1000] bg-white overflow-hidden shekel-dropdown-anim ${popupClassName}`}\n style={{\n top: panelPos.top,\n left: panelPos.left,\n width: panelPos.width,\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n ...popupStyle,\n }}\n >\n {showSearch && (\n <div className=\"px-2 py-2 border-b border-[#F0F0F0]\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={handleSearchChange}\n onKeyDown={handleKeyDown}\n placeholder={searchPlaceholder}\n className=\"w-full outline-none text-sm bg-transparent px-2 py-1 text-[#181918] placeholder:text-[#8C8C8C]\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )}\n <div role=\"listbox\" className=\"overflow-auto flex flex-col gap-0.5\" style={{ maxHeight: 256, padding: 4 }}>\n {filteredOptions.length === 0 ? (\n <div className=\"px-3 py-3 text-sm text-[#8C8C8C] text-center\">\n {notFoundContent}\n </div>\n ) : (\n filteredOptions.map((opt, i) => {\n const isSelected = selectedValues.includes(opt.value);\n const isActive = i === activeIndex;\n return (\n <div\n key={opt.value}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled}\n onClick={(e) => {\n e.stopPropagation();\n handleSelect(opt);\n }}\n onMouseEnter={() => !opt.disabled && setActiveIndex(i)}\n className={`flex items-center justify-between transition-colors duration-150 ${\n opt.disabled ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer'\n }`}\n style={{\n padding: '10px 16px',\n minHeight: 42,\n borderRadius: 6,\n fontSize: 14,\n lineHeight: '22px',\n backgroundColor: isSelected\n ? resolvedSelectedBg\n : isActive && !opt.disabled\n ? optionHoverColor\n : 'transparent',\n color: isSelected ? resolvedSelectedText : '#181918',\n fontWeight: isSelected ? 600 : 400,\n }}\n >\n <div className=\"min-w-0 flex-1\">\n {optionRender ? (\n optionRender(opt, { selected: isSelected })\n ) : opt.description ? (\n <>\n <div className=\"truncate font-semibold\">{opt.label}</div>\n <div className=\"truncate text-xs text-[#8C8C8C] font-normal mt-0.5\">\n {opt.description}\n </div>\n </>\n ) : (\n <span className=\"truncate\">{opt.label}</span>\n )}\n </div>\n {isSelected && <CheckIcon color={resolvedSelectedText} />}\n </div>\n );\n })\n )}\n </div>\n </div>\n </>,\n document.body\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nSelectInputBase.displayName = 'SelectInputBase';\n\nconst ControlledSelectInput: React.FC<\n SelectInputProps & { control: NonNullable<SelectInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <SelectInputBase\n {...rest}\n value={field.value}\n onChange={(v, opt) => {\n field.onChange(v);\n rest.onChange?.(v, opt);\n }}\n onBlur={() => {\n field.onBlur();\n rest.onBlur?.();\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const SelectInput = React.forwardRef<HTMLDivElement, SelectInputProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledSelectInput control={control} name={name} {...props} />;\n }\n return <SelectInputBase ref={ref} name={name} {...props} />;\n }\n);\nSelectInput.displayName = 'SelectInput';\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport type DateInput = Date | string | number | null | undefined;\n\nexport interface DatePickerProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n required?: boolean;\n disabled?: boolean;\n\n value?: DateInput;\n defaultValue?: DateInput;\n onChange?: (date: Date | null, dateString: string) => void;\n\n placeholder?: string;\n format?: string; // e.g. \"YYYY-MM-DD\", \"DD/MM/YYYY\", \"MMM D, YYYY\"\n\n minDate?: DateInput;\n maxDate?: DateInput;\n disabledDate?: (date: Date) => boolean;\n\n showToday?: boolean;\n allowClear?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n\n height?: number | string;\n borderRadius?: number | string;\n\n className?: string;\n style?: React.CSSProperties;\n popupClassName?: string;\n\n onOpenChange?: (open: boolean) => void;\n\n control?: Control<any>;\n name?: string;\n id?: string;\n status?: 'error' | 'warning';\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n}\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\nconst DAY_NAMES_SUN = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst DAY_NAMES_MON = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\nconst toDate = (v: DateInput): Date | null => {\n if (v === null || v === undefined || v === '') return null;\n if (v instanceof Date) return isNaN(v.getTime()) ? null : v;\n const d = new Date(v);\n return isNaN(d.getTime()) ? null : d;\n};\n\nconst pad = (n: number, len = 2) => String(n).padStart(len, '0');\n\nconst formatDate = (date: Date, format: string): string => {\n const y = date.getFullYear();\n const M = date.getMonth() + 1;\n const D = date.getDate();\n return format\n .replace(/YYYY/g, String(y))\n .replace(/YY/g, String(y).slice(-2))\n .replace(/MMMM/g, MONTH_NAMES[date.getMonth()])\n .replace(/MMM/g, MONTH_NAMES[date.getMonth()].slice(0, 3))\n .replace(/MM/g, pad(M))\n .replace(/M/g, String(M))\n .replace(/DD/g, pad(D))\n .replace(/D/g, String(D));\n};\n\nconst isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nconst startOfDay = (d: Date) => {\n const c = new Date(d);\n c.setHours(0, 0, 0, 0);\n return c;\n};\n\nconst CalendarIcon: React.FC<{ color?: string; size?: number }> = ({ color = '#181918', size = 20 }) => (\n <svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M17.5 8.33464H2.5M13.3333 1.66797V5.0013M6.66667 1.66797V5.0013M6.5 18.3346H13.5C14.9001 18.3346 15.6002 18.3346 16.135 18.0622C16.6054 17.8225 16.9878 17.44 17.2275 16.9696C17.5 16.4348 17.5 15.7348 17.5 14.3346V7.33464C17.5 5.9345 17.5 5.23444 17.2275 4.69966C16.9878 4.22925 16.6054 3.8468 16.135 3.60712C15.6002 3.33464 14.9001 3.33464 13.5 3.33464H6.5C5.09987 3.33464 4.3998 3.33464 3.86502 3.60712C3.39462 3.8468 3.01217 4.22925 2.77248 4.69966C2.5 5.23444 2.5 5.9345 2.5 7.33464V14.3346C2.5 15.7348 2.5 16.4348 2.77248 16.9696C3.01217 17.44 3.39462 17.8225 3.86502 18.0622C4.3998 18.3346 5.09987 18.3346 6.5 18.3346Z\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ChevronLeft: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M9 3l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ChevronRight: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M5 3l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst DoubleChevronLeft: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M11 3l-4 4 4 4M6 3L2 7l4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst DoubleChevronRight: React.FC = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M3 3l4 4-4 4M8 3l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ClearX: React.FC = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path d=\"M4 4l4 4M8 4l-4 4\" stroke=\"#FFFFFF\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst DatePickerBase = React.forwardRef<HTMLDivElement, Omit<DatePickerProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n required,\n disabled,\n value: externalValue,\n defaultValue,\n onChange,\n placeholder = 'Select date',\n format = 'YYYY-MM-DD',\n minDate,\n maxDate,\n disabledDate,\n showToday = true,\n allowClear = true,\n firstDayOfWeek = 0,\n height = 44,\n borderRadius = 12,\n className = '',\n style,\n popupClassName = '',\n onOpenChange,\n id,\n status,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n } = props;\n\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = useState<Date | null>(toDate(defaultValue));\n const resolvedValue = isControlled ? toDate(externalValue) : innerValue;\n\n const [open, setOpen] = useState(false);\n const [hovered, setHovered] = useState(false);\n const [viewDate, setViewDate] = useState<Date>(resolvedValue ?? new Date());\n const [mode, setMode] = useState<'date' | 'month' | 'year'>('date');\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const wrapperRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [panelPos, setPanelPos] = useState<{ top: number; left: number; width: number }>({\n top: 0,\n left: 0,\n width: 280,\n });\n\n const updatePanelPos = () => {\n if (!triggerRef.current) return;\n const r = triggerRef.current.getBoundingClientRect();\n const panelWidth = 280;\n const vw = typeof window !== 'undefined' ? window.innerWidth : 0;\n const vh = typeof window !== 'undefined' ? window.innerHeight : 0;\n let left = r.left;\n if (left + panelWidth + 8 > vw) left = Math.max(8, vw - panelWidth - 8);\n const panelHeight = 340;\n let top = r.bottom + 4;\n if (top + panelHeight + 8 > vh && r.top > panelHeight + 8) {\n top = r.top - panelHeight - 4;\n }\n setPanelPos({ top, left, width: panelWidth });\n };\n\n useEffect(() => {\n if (!open) return;\n updatePanelPos();\n const handler = () => updatePanelPos();\n window.addEventListener('resize', handler);\n window.addEventListener('scroll', handler, true);\n return () => {\n window.removeEventListener('resize', handler);\n window.removeEventListener('scroll', handler, true);\n };\n }, [open]);\n\n const isError = !!error || status === 'error';\n const hasValue = resolvedValue !== null;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n const min = useMemo(() => (minDate ? startOfDay(toDate(minDate)!) : null), [minDate]);\n const max = useMemo(() => (maxDate ? startOfDay(toDate(maxDate)!) : null), [maxDate]);\n\n const isDisabledDate = (d: Date): boolean => {\n const day = startOfDay(d);\n if (min && day < min) return true;\n if (max && day > max) return true;\n if (disabledDate && disabledDate(day)) return true;\n return false;\n };\n\n useEffect(() => {\n if (resolvedValue) setViewDate(resolvedValue);\n }, [resolvedValue?.getTime()]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n const insideWrapper = wrapperRef.current?.contains(target);\n const insidePanel = panelRef.current?.contains(target);\n if (!insideWrapper && !insidePanel) {\n if (open) {\n setOpen(false);\n onOpenChange?.(false);\n }\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open, onOpenChange]);\n\n const commit = (next: Date | null) => {\n if (!isControlled) setInnerValue(next);\n onChange?.(next, next ? formatDate(next, format) : '');\n };\n\n const handleToggle = () => {\n if (disabled) return;\n const next = !open;\n setOpen(next);\n onOpenChange?.(next);\n if (next) {\n setMode('date');\n if (resolvedValue) setViewDate(resolvedValue);\n }\n };\n\n const handleDayClick = (day: Date) => {\n if (isDisabledDate(day)) return;\n commit(day);\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n commit(null);\n };\n\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const resolvedBorder = isError\n ? errorColor\n : open\n ? accentColor\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const openShadow = open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined;\n const themeVars = { '--shekel-accent': accentColor } as React.CSSProperties;\n\n const showClearBtn = allowClear && hasValue && !disabled && hovered;\n\n const dayNames = firstDayOfWeek === 1 ? DAY_NAMES_MON : DAY_NAMES_SUN;\n\n const calendarGrid = useMemo(() => {\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const shift = firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const prevMonthDays = new Date(year, month, 0).getDate();\n\n const cells: { date: Date; outside: boolean }[] = [];\n for (let i = shift - 1; i >= 0; i--) {\n cells.push({ date: new Date(year, month - 1, prevMonthDays - i), outside: true });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ date: new Date(year, month, d), outside: false });\n }\n while (cells.length < 42) {\n const lastDate = cells[cells.length - 1].date;\n const next = new Date(lastDate);\n next.setDate(next.getDate() + 1);\n cells.push({ date: next, outside: true });\n }\n return cells;\n }, [viewDate, firstDayOfWeek]);\n\n const goMonth = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1));\n };\n const goYear = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear() + delta, viewDate.getMonth(), 1));\n };\n const goDecade = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear() + delta * 10, viewDate.getMonth(), 1));\n };\n\n const decadeStart = Math.floor(viewDate.getFullYear() / 10) * 10;\n const yearCells = useMemo(() => {\n const cells: { year: number; outside: boolean }[] = [];\n for (let y = decadeStart - 1; y <= decadeStart + 10; y++) {\n cells.push({ year: y, outside: y < decadeStart || y > decadeStart + 9 });\n }\n return cells;\n }, [decadeStart]);\n\n const isDisabledMonth = (year: number, month: number): boolean => {\n const first = new Date(year, month, 1);\n const last = new Date(year, month + 1, 0);\n if (min && last < min) return true;\n if (max && first > max) return true;\n return false;\n };\n const isDisabledYear = (year: number): boolean => {\n if (min && new Date(year, 11, 31) < min) return true;\n if (max && new Date(year, 0, 1) > max) return true;\n return false;\n };\n\n const displayText = resolvedValue ? formatDate(resolvedValue, format) : '';\n\n return (\n <div className=\"w-full\" ref={ref} style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className=\"relative\" ref={wrapperRef}>\n <div\n ref={triggerRef as any}\n id={inputId}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n onClick={handleToggle}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n handleToggle();\n }\n if (e.key === 'Escape' && open) {\n e.preventDefault();\n setOpen(false);\n onOpenChange?.(false);\n }\n }}\n className={`flex items-center w-full bg-white border transition-colors duration-200 hover:border-[color:var(--shekel-accent)] ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'cursor-pointer'\n } ${className}`}\n style={{\n height: resolvedHeight,\n borderRadius: resolvedRadius,\n padding: '4px 11px',\n borderColor: resolvedBorder,\n boxShadow: openShadow,\n ...style,\n }}\n >\n <span\n className={`flex-1 min-w-0 truncate text-sm ${\n resolvedValue ? 'text-[#181918]' : 'text-[#8C8C8C]'\n }`}\n >\n {displayText || placeholder}\n </span>\n <div className=\"flex items-center shrink-0 ml-2\">\n {showClearBtn ? (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-4 h-4 text-[#BFBFBF] hover:text-[#595959] transition-colors\"\n >\n <ClearX />\n </button>\n ) : (\n <CalendarIcon />\n )}\n </div>\n </div>\n {open && !disabled && typeof document !== 'undefined' && createPortal(\n <>\n <style>{`\n @keyframes shekel-picker-in { from { opacity: 0; transform: scaleY(0.9) translateY(-4px); } to { opacity: 1; transform: scaleY(1) translateY(0); } }\n .shekel-picker-anim { transform-origin: top center; animation: shekel-picker-in 180ms cubic-bezier(0.23, 1, 0.32, 1); }\n `}</style>\n <div\n ref={panelRef}\n className={`fixed z-[1000] bg-white shekel-picker-anim ${popupClassName}`}\n style={{\n top: panelPos.top,\n left: panelPos.left,\n width: panelPos.width,\n maxWidth: 'calc(100vw - 16px)',\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n padding: 8,\n }}\n >\n <div className=\"flex items-center justify-between px-2 py-1\">\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => (mode === 'year' ? goDecade(-1) : goYear(-1))}\n aria-label={mode === 'year' ? 'Previous decade' : 'Previous year'}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <DoubleChevronLeft />\n </button>\n {mode === 'date' && (\n <button\n type=\"button\"\n onClick={() => goMonth(-1)}\n aria-label=\"Previous month\"\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <ChevronLeft />\n </button>\n )}\n </div>\n <div className=\"text-sm font-medium text-[#181918] flex items-center gap-1\">\n {mode === 'date' && (\n <>\n <button\n type=\"button\"\n onClick={() => setMode('month')}\n className=\"px-1 hover:text-[color:var(--shekel-accent)] transition-colors\"\n >\n {MONTH_NAMES[viewDate.getMonth()]}\n </button>\n <button\n type=\"button\"\n onClick={() => setMode('year')}\n className=\"px-1 hover:text-[color:var(--shekel-accent)] transition-colors\"\n >\n {viewDate.getFullYear()}\n </button>\n </>\n )}\n {mode === 'month' && (\n <button\n type=\"button\"\n onClick={() => setMode('year')}\n className=\"px-1 hover:text-[color:var(--shekel-accent)] transition-colors\"\n >\n {viewDate.getFullYear()}\n </button>\n )}\n {mode === 'year' && (\n <span className=\"px-1\">\n {decadeStart}-{decadeStart + 9}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n {mode === 'date' && (\n <button\n type=\"button\"\n onClick={() => goMonth(1)}\n aria-label=\"Next month\"\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <ChevronRight />\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => (mode === 'year' ? goDecade(1) : goYear(1))}\n aria-label={mode === 'year' ? 'Next decade' : 'Next year'}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] hover:text-[color:var(--shekel-accent)] rounded transition-colors\"\n >\n <DoubleChevronRight />\n </button>\n </div>\n </div>\n {mode === 'date' && (\n <>\n <div className=\"grid grid-cols-7 gap-0 px-1 pt-2 pb-1\">\n {dayNames.map((d) => (\n <div\n key={d}\n className=\"text-xs text-[#8C8C8C] text-center py-1\"\n style={{ height: 28 }}\n >\n {d}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-7 gap-0 px-1\">\n {calendarGrid.map(({ date, outside }, i) => {\n const selected = resolvedValue && isSameDay(date, resolvedValue);\n const isToday = isSameDay(date, today);\n const disabledDay = isDisabledDate(date);\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabledDay}\n onClick={() => handleDayClick(date)}\n className=\"flex items-center justify-center text-sm transition-colors\"\n style={{\n height: 32,\n margin: '1px 0',\n }}\n >\n <span\n className={`flex items-center justify-center rounded-full transition-colors ${\n disabledDay\n ? 'text-[#D9D9D9] cursor-not-allowed'\n : outside\n ? 'text-[#BFBFBF] hover:bg-[#F5F5F5]'\n : 'text-[#181918] hover:bg-[#F5F5F5]'\n }`}\n style={{\n width: 28,\n height: 28,\n backgroundColor: selected ? accentColor : undefined,\n color: selected ? '#FFFFFF' : undefined,\n fontWeight: selected ? 600 : 400,\n border: isToday && !selected ? `1px solid ${accentColor}` : undefined,\n }}\n >\n {date.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n </>\n )}\n {mode === 'month' && (\n <div className=\"grid grid-cols-3 gap-1 px-1 pt-2 pb-1\">\n {MONTH_NAMES.map((m, mi) => {\n const isCurrent =\n resolvedValue &&\n resolvedValue.getFullYear() === viewDate.getFullYear() &&\n resolvedValue.getMonth() === mi;\n const monthDisabled = isDisabledMonth(viewDate.getFullYear(), mi);\n return (\n <button\n key={m}\n type=\"button\"\n disabled={monthDisabled}\n onClick={() => {\n setViewDate(new Date(viewDate.getFullYear(), mi, 1));\n setMode('date');\n }}\n className=\"flex items-center justify-center text-sm rounded transition-colors\"\n style={{\n height: 52,\n backgroundColor: isCurrent ? accentColor : undefined,\n color: monthDisabled\n ? '#D9D9D9'\n : isCurrent\n ? '#FFFFFF'\n : '#181918',\n fontWeight: isCurrent ? 600 : 400,\n cursor: monthDisabled ? 'not-allowed' : 'pointer',\n }}\n onMouseEnter={(e) => {\n if (!isCurrent && !monthDisabled)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = '#F5F5F5';\n }}\n onMouseLeave={(e) => {\n if (!isCurrent)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = '';\n }}\n >\n {m.slice(0, 3)}\n </button>\n );\n })}\n </div>\n )}\n {mode === 'year' && (\n <div className=\"grid grid-cols-3 gap-1 px-1 pt-2 pb-1\">\n {yearCells.map(({ year, outside }) => {\n const isCurrent = resolvedValue && resolvedValue.getFullYear() === year;\n const yearDisabled = isDisabledYear(year);\n return (\n <button\n key={year}\n type=\"button\"\n disabled={yearDisabled}\n onClick={() => {\n setViewDate(new Date(year, viewDate.getMonth(), 1));\n setMode('month');\n }}\n className=\"flex items-center justify-center text-sm rounded transition-colors\"\n style={{\n height: 52,\n backgroundColor: isCurrent ? accentColor : undefined,\n color: yearDisabled\n ? '#D9D9D9'\n : isCurrent\n ? '#FFFFFF'\n : outside\n ? '#BFBFBF'\n : '#181918',\n fontWeight: isCurrent ? 600 : 400,\n cursor: yearDisabled ? 'not-allowed' : 'pointer',\n }}\n onMouseEnter={(e) => {\n if (!isCurrent && !yearDisabled)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = '#F5F5F5';\n }}\n onMouseLeave={(e) => {\n if (!isCurrent)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = '';\n }}\n >\n {year}\n </button>\n );\n })}\n </div>\n )}\n {mode === 'date' && showToday && (\n <div className=\"border-t border-[#F0F0F0] mt-2 pt-2 text-center\">\n <button\n type=\"button\"\n onClick={() => {\n if (!isDisabledDate(today)) handleDayClick(today);\n }}\n disabled={isDisabledDate(today)}\n className=\"text-sm hover:underline disabled:text-[#D9D9D9] disabled:no-underline\"\n style={{ color: accentColor }}\n >\n Today\n </button>\n </div>\n )}\n </div>\n </>,\n document.body\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nDatePickerBase.displayName = 'DatePickerBase';\n\nconst ControlledDatePicker: React.FC<\n DatePickerProps & { control: NonNullable<DatePickerProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <DatePickerBase\n {...rest}\n value={field.value}\n onChange={(date, dateString) => {\n field.onChange(date);\n rest.onChange?.(date, dateString);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledDatePicker control={control} name={name} {...props} />;\n }\n return <DatePickerBase ref={ref} name={name} {...props} />;\n }\n);\nDatePicker.displayName = 'DatePicker';\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport type DateRangeInput = Date | string | number | null | undefined;\n\nexport interface DateRangeValue {\n from: Date | null;\n to: Date | null;\n}\n\nexport interface DateRangePickerProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n error?: string;\n helperText?: string;\n required?: boolean;\n disabled?: boolean;\n\n value?: [DateRangeInput, DateRangeInput];\n defaultValue?: [DateRangeInput, DateRangeInput];\n onChange?: (range: [Date | null, Date | null], rangeString: [string, string]) => void;\n\n placeholder?: [string, string];\n format?: string;\n separator?: React.ReactNode;\n\n minDate?: DateRangeInput;\n maxDate?: DateRangeInput;\n disabledDate?: (date: Date) => boolean;\n\n allowClear?: boolean;\n firstDayOfWeek?: 0 | 1;\n\n height?: number | string;\n borderRadius?: number | string;\n\n className?: string;\n style?: React.CSSProperties;\n popupClassName?: string;\n\n onOpenChange?: (open: boolean) => void;\n\n control?: Control<any>;\n name?: string;\n id?: string;\n status?: 'error' | 'warning';\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n filledBorderColor?: string;\n rangeBgColor?: string;\n rangeTextColor?: string;\n singlePanel?: boolean;\n presets?: Array<{ label: React.ReactNode; value: [Date | string, Date | string] }>;\n}\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\nconst DAY_NAMES_SUN = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst DAY_NAMES_MON = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n\nconst toDate = (v: DateRangeInput): Date | null => {\n if (v === null || v === undefined || v === '') return null;\n if (v instanceof Date) return isNaN(v.getTime()) ? null : v;\n const d = new Date(v);\n return isNaN(d.getTime()) ? null : d;\n};\nconst pad = (n: number, len = 2) => String(n).padStart(len, '0');\nconst formatDate = (date: Date, format: string): string => {\n const y = date.getFullYear();\n const M = date.getMonth() + 1;\n const D = date.getDate();\n return format\n .replace(/YYYY/g, String(y))\n .replace(/YY/g, String(y).slice(-2))\n .replace(/MMMM/g, MONTH_NAMES[date.getMonth()])\n .replace(/MMM/g, MONTH_NAMES[date.getMonth()].slice(0, 3))\n .replace(/MM/g, pad(M))\n .replace(/M/g, String(M))\n .replace(/DD/g, pad(D))\n .replace(/D/g, String(D));\n};\nconst isSameDay = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\nconst startOfDay = (d: Date) => {\n const c = new Date(d);\n c.setHours(0, 0, 0, 0);\n return c;\n};\nconst isBetween = (d: Date, a: Date, b: Date) => {\n const t = startOfDay(d).getTime();\n const s = Math.min(a.getTime(), b.getTime());\n const e = Math.max(a.getTime(), b.getTime());\n return t > s && t < e;\n};\n\nconst CalendarIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M17.5 8.33464H2.5M13.3333 1.66797V5.0013M6.66667 1.66797V5.0013M6.5 18.3346H13.5C14.9001 18.3346 15.6002 18.3346 16.135 18.0622C16.6054 17.8225 16.9878 17.44 17.2275 16.9696C17.5 16.4348 17.5 15.7348 17.5 14.3346V7.33464C17.5 5.9345 17.5 5.23444 17.2275 4.69966C16.9878 4.22925 16.6054 3.8468 16.135 3.60712C15.6002 3.33464 14.9001 3.33464 13.5 3.33464H6.5C5.09987 3.33464 4.3998 3.33464 3.86502 3.60712C3.39462 3.8468 3.01217 4.22925 2.77248 4.69966C2.5 5.23444 2.5 5.9345 2.5 7.33464V14.3346C2.5 15.7348 2.5 16.4348 2.77248 16.9696C3.01217 17.44 3.39462 17.8225 3.86502 18.0622C4.3998 18.3346 5.09987 18.3346 6.5 18.3346Z\"\n stroke=\"#181918\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\nconst ClearX: React.FC = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"currentColor\" />\n <path d=\"M4 4l4 4M8 4l-4 4\" stroke=\"#FFFFFF\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\nconst Arrow: React.FC<{ dir: 'left' | 'right'; double?: boolean }> = ({ dir, double }) => {\n const single = dir === 'left' ? 'M9 3l-4 4 4 4' : 'M5 3l4 4-4 4';\n const dbl = dir === 'left' ? 'M11 3l-4 4 4 4M6 3L2 7l4 4' : 'M3 3l4 4-4 4M8 3l4 4-4 4';\n return (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d={double ? dbl : single} stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n};\n\ninterface CalendarPaneProps {\n viewDate: Date;\n from: Date | null;\n to: Date | null;\n hoverDate: Date | null;\n onHoverDate: (d: Date | null) => void;\n onDayClick: (d: Date) => void;\n isDisabledDate: (d: Date) => boolean;\n firstDayOfWeek: 0 | 1;\n showLeftArrows: boolean;\n showRightArrows: boolean;\n onShiftMonth: (delta: number) => void;\n onShiftYear: (delta: number) => void;\n accentColor: string;\n rangeBgColor: string;\n rangeTextColor: string;\n}\n\nconst CalendarPane: React.FC<CalendarPaneProps> = ({\n viewDate,\n from,\n to,\n hoverDate,\n onHoverDate,\n onDayClick,\n isDisabledDate,\n firstDayOfWeek,\n showLeftArrows,\n showRightArrows,\n onShiftMonth,\n onShiftYear,\n accentColor,\n rangeBgColor,\n rangeTextColor,\n}) => {\n const dayNames = firstDayOfWeek === 1 ? DAY_NAMES_MON : DAY_NAMES_SUN;\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const calendarGrid = useMemo(() => {\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const shift = firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const prevMonthDays = new Date(year, month, 0).getDate();\n const cells: { date: Date; outside: boolean }[] = [];\n for (let i = shift - 1; i >= 0; i--) {\n cells.push({ date: new Date(year, month - 1, prevMonthDays - i), outside: true });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ date: new Date(year, month, d), outside: false });\n }\n while (cells.length < 42) {\n const last = cells[cells.length - 1].date;\n const n = new Date(last);\n n.setDate(n.getDate() + 1);\n cells.push({ date: n, outside: true });\n }\n return cells;\n }, [viewDate, firstDayOfWeek]);\n\n const activeRangeEnd = to ?? hoverDate;\n const rangeLo =\n from && activeRangeEnd\n ? from.getTime() <= activeRangeEnd.getTime()\n ? from\n : activeRangeEnd\n : null;\n const rangeHi =\n from && activeRangeEnd\n ? from.getTime() <= activeRangeEnd.getTime()\n ? activeRangeEnd\n : from\n : null;\n\n return (\n <div style={{ width: 280 }}>\n <div className=\"flex items-center justify-between px-2 py-1\">\n <div className=\"flex items-center gap-1\" style={{ minWidth: 64 }}>\n {showLeftArrows && (\n <>\n <button\n type=\"button\"\n onClick={() => onShiftYear(-1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Previous year\"\n >\n <Arrow dir=\"left\" double />\n </button>\n <button\n type=\"button\"\n onClick={() => onShiftMonth(-1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Previous month\"\n >\n <Arrow dir=\"left\" />\n </button>\n </>\n )}\n </div>\n <div className=\"text-sm font-medium text-[#181918]\">\n {MONTH_NAMES[viewDate.getMonth()]} {viewDate.getFullYear()}\n </div>\n <div className=\"flex items-center gap-1 justify-end\" style={{ minWidth: 64 }}>\n {showRightArrows && (\n <>\n <button\n type=\"button\"\n onClick={() => onShiftMonth(1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Next month\"\n >\n <Arrow dir=\"right\" />\n </button>\n <button\n type=\"button\"\n onClick={() => onShiftYear(1)}\n className=\"w-7 h-7 flex items-center justify-center text-[#595959] rounded\"\n style={{ color: undefined }}\n onMouseEnter={(e) => (e.currentTarget.style.color = accentColor)}\n onMouseLeave={(e) => (e.currentTarget.style.color = '')}\n aria-label=\"Next year\"\n >\n <Arrow dir=\"right\" double />\n </button>\n </>\n )}\n </div>\n </div>\n <div className=\"grid grid-cols-7 px-1 pt-2 pb-1\">\n {dayNames.map((d) => (\n <div key={d} className=\"text-xs text-[#8C8C8C] text-center py-1\" style={{ height: 28 }}>\n {d}\n </div>\n ))}\n </div>\n <div className=\"grid grid-cols-7 px-1\" onMouseLeave={() => onHoverDate(null)}>\n {calendarGrid.map(({ date, outside }, i) => {\n const isFrom = !!(from && isSameDay(date, from));\n const isTo = !!(to && isSameDay(date, to));\n const inRange =\n rangeLo && rangeHi && !isSameDay(rangeLo, rangeHi)\n ? isBetween(date, rangeLo, rangeHi)\n : false;\n const isEdgeLo = rangeLo && isSameDay(date, rangeLo);\n const isEdgeHi = rangeHi && isSameDay(date, rangeHi);\n const selected = isFrom || isTo;\n const isToday = isSameDay(date, today);\n const disabledDay = isDisabledDate(date);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabledDay}\n onClick={() => onDayClick(date)}\n onMouseEnter={() => !disabledDay && onHoverDate(date)}\n className=\"flex items-center justify-center text-sm\"\n style={{\n height: 32,\n backgroundColor: inRange ? rangeBgColor : undefined,\n borderTopLeftRadius: isEdgeLo ? 999 : inRange ? 0 : 999,\n borderBottomLeftRadius: isEdgeLo ? 999 : inRange ? 0 : 999,\n borderTopRightRadius: isEdgeHi ? 999 : inRange ? 0 : 999,\n borderBottomRightRadius: isEdgeHi ? 999 : inRange ? 0 : 999,\n }}\n >\n <span\n className=\"flex items-center justify-center rounded-full transition-colors\"\n style={{\n width: 28,\n height: 28,\n backgroundColor: selected ? accentColor : undefined,\n color: selected\n ? '#FFFFFF'\n : disabledDay\n ? '#D9D9D9'\n : outside\n ? '#BFBFBF'\n : inRange\n ? rangeTextColor\n : '#181918',\n fontWeight: selected ? 600 : 400,\n border: isToday && !selected ? `1px solid ${accentColor}` : undefined,\n }}\n >\n {date.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nconst DateRangePickerBase = React.forwardRef<HTMLDivElement, Omit<DateRangePickerProps, 'control'>>(\n (props, ref) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n error,\n helperText,\n required,\n disabled,\n value: externalValue,\n defaultValue,\n onChange,\n placeholder = ['Start date', 'End date'],\n format = 'YYYY-MM-DD',\n separator,\n minDate,\n maxDate,\n disabledDate,\n allowClear = true,\n firstDayOfWeek = 0,\n height = 44,\n borderRadius = 12,\n className = '',\n style,\n popupClassName = '',\n onOpenChange,\n id,\n status,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor: defaultBorderColor = '#D9D9D9',\n filledBorderColor = '#181918',\n rangeBgColor,\n rangeTextColor,\n singlePanel = false,\n presets,\n } = props;\n const resolvedRangeBg = rangeBgColor ?? hexWithAlpha(accentColor, 0.12);\n const resolvedRangeText = rangeTextColor ?? accentColor;\n\n const [isNarrow, setIsNarrow] = useState<boolean>(\n typeof window !== 'undefined' ? window.innerWidth < 640 : false\n );\n useEffect(() => {\n const handler = () => setIsNarrow(window.innerWidth < 640);\n window.addEventListener('resize', handler);\n return () => window.removeEventListener('resize', handler);\n }, []);\n const effectiveSinglePanel = singlePanel || isNarrow;\n\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = useState<[Date | null, Date | null]>(() => [\n toDate(defaultValue?.[0]),\n toDate(defaultValue?.[1]),\n ]);\n const resolved: [Date | null, Date | null] = isControlled\n ? [toDate(externalValue![0]), toDate(externalValue![1])]\n : innerValue;\n const [from, to] = resolved;\n\n const [open, setOpen] = useState(false);\n const [hovered, setHovered] = useState(false);\n const [activeSlot, setActiveSlot] = useState<'from' | 'to'>('from');\n const [hoverDate, setHoverDate] = useState<Date | null>(null);\n const [viewDate, setViewDate] = useState<Date>(from ?? new Date());\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const wrapperRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [panelPos, setPanelPos] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n\n const updatePanelPos = () => {\n if (!triggerRef.current) return;\n const r = triggerRef.current.getBoundingClientRect();\n const vw = typeof window !== 'undefined' ? window.innerWidth : 0;\n const panelWidth = effectiveSinglePanel ? 296 : 580;\n let left = r.left;\n if (left + panelWidth + 8 > vw) left = Math.max(8, vw - panelWidth - 8);\n setPanelPos({ top: r.bottom + 4, left });\n };\n\n const isError = !!error || status === 'error';\n const hasValue = !!from || !!to;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: '#C21919' }}>*</span> : requiredMark;\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const resolvedRadius = typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius;\n\n const min = useMemo(() => (minDate ? startOfDay(toDate(minDate)!) : null), [minDate]);\n const max = useMemo(() => (maxDate ? startOfDay(toDate(maxDate)!) : null), [maxDate]);\n const isDisabledDate = (d: Date): boolean => {\n const day = startOfDay(d);\n if (min && day < min) return true;\n if (max && day > max) return true;\n if (disabledDate && disabledDate(day)) return true;\n return false;\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n const insideWrapper = wrapperRef.current?.contains(target);\n const insidePanel = panelRef.current?.contains(target);\n if (!insideWrapper && !insidePanel) {\n if (open) {\n setOpen(false);\n onOpenChange?.(false);\n setHoverDate(null);\n }\n }\n };\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open, onOpenChange]);\n\n useEffect(() => {\n if (!open) return;\n updatePanelPos();\n const h = () => updatePanelPos();\n window.addEventListener('resize', h);\n window.addEventListener('scroll', h, true);\n return () => {\n window.removeEventListener('resize', h);\n window.removeEventListener('scroll', h, true);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, effectiveSinglePanel]);\n\n const commit = (f: Date | null, t: Date | null) => {\n if (!isControlled) setInnerValue([f, t]);\n onChange?.(\n [f, t],\n [f ? formatDate(f, format) : '', t ? formatDate(t, format) : '']\n );\n };\n\n const handleDayClick = (d: Date) => {\n if (isDisabledDate(d)) return;\n if (activeSlot === 'from' || !from) {\n commit(d, null);\n setActiveSlot('to');\n setHoverDate(null);\n } else {\n // Ensure from <= to; swap if needed\n if (d.getTime() < from.getTime()) {\n commit(d, from);\n } else {\n commit(from, d);\n }\n setActiveSlot('from');\n setOpen(false);\n onOpenChange?.(false);\n setHoverDate(null);\n }\n };\n\n const handleToggle = (slot?: 'from' | 'to') => {\n if (disabled) return;\n if (slot) setActiveSlot(slot);\n const next = !open;\n setOpen(next);\n onOpenChange?.(next);\n if (next && (from || to)) setViewDate(from ?? to ?? new Date());\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n commit(null, null);\n setActiveSlot('from');\n };\n\n const resolvedBorder = isError\n ? errorColor\n : open\n ? accentColor\n : hasValue\n ? filledBorderColor\n : defaultBorderColor;\n const openShadow = open ? `0 0 0 2px ${hexWithAlpha(accentColor, 0.2)}` : undefined;\n const themeVars = { '--shekel-accent': accentColor } as React.CSSProperties;\n\n const showClearBtn = allowClear && hasValue && !disabled && hovered;\n\n const fromText = from ? formatDate(from, format) : '';\n const toText = to ? formatDate(to, format) : '';\n\n const defaultSeparator = (\n <span className=\"mx-2 text-[#8C8C8C] flex items-center\">\n <svg width=\"14\" height=\"10\" viewBox=\"0 0 14 10\" fill=\"none\">\n <path d=\"M1 5h12M9 1l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n );\n\n return (\n <div className=\"w-full\" ref={ref} style={themeVars}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n <div className=\"relative\" ref={wrapperRef}>\n <div\n ref={triggerRef as any}\n id={inputId}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-disabled={disabled}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={`flex items-center w-full bg-white border transition-colors duration-200 hover:border-[color:var(--shekel-accent)] ${\n disabled ? 'opacity-60 cursor-not-allowed bg-[#F5F5F5]' : 'cursor-pointer'\n } ${className}`}\n style={{\n height: resolvedHeight,\n borderRadius: resolvedRadius,\n padding: '4px 11px',\n borderColor: resolvedBorder,\n boxShadow: openShadow,\n ...style,\n }}\n >\n <div className=\"relative flex-1 min-w-0\">\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => handleToggle('from')}\n className={`w-full text-left text-sm truncate ${\n fromText ? 'text-[#181918]' : 'text-[#8C8C8C]'\n }`}\n >\n {fromText || placeholder[0]}\n </button>\n {open && activeSlot === 'from' && (\n <div className=\"absolute left-0 right-2 bottom-[-6px] h-[2px] transition-all\" style={{ backgroundColor: accentColor }} />\n )}\n </div>\n {separator === undefined ? defaultSeparator : separator}\n <div className=\"relative flex-1 min-w-0\">\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => handleToggle('to')}\n className={`w-full text-left text-sm truncate ${\n toText ? 'text-[#181918]' : 'text-[#8C8C8C]'\n }`}\n >\n {toText || placeholder[1]}\n </button>\n {open && activeSlot === 'to' && (\n <div className=\"absolute left-0 right-2 bottom-[-6px] h-[2px] transition-all\" style={{ backgroundColor: accentColor }} />\n )}\n </div>\n <div className=\"flex items-center shrink-0 ml-2\">\n {showClearBtn ? (\n <button\n type=\"button\"\n onClick={handleClear}\n aria-label=\"Clear\"\n className=\"flex items-center justify-center w-4 h-4 text-[#BFBFBF] hover:text-[#595959] transition-colors\"\n >\n <ClearX />\n </button>\n ) : (\n <CalendarIcon />\n )}\n </div>\n </div>\n {open && !disabled && typeof document !== 'undefined' && createPortal(\n <>\n <style>{`\n @keyframes shekel-range-in { from { opacity: 0; transform: scaleY(0.9) translateY(-4px); } to { opacity: 1; transform: scaleY(1) translateY(0); } }\n .shekel-range-anim { transform-origin: top center; animation: shekel-range-in 180ms cubic-bezier(0.23, 1, 0.32, 1); }\n `}</style>\n <div\n ref={panelRef}\n className={`fixed z-[1000] bg-white flex shekel-range-anim ${popupClassName}`}\n style={{\n top: panelPos.top,\n left: panelPos.left,\n maxWidth: 'calc(100vw - 16px)',\n borderRadius: 8,\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n padding: 8,\n }}\n >\n {presets && presets.length > 0 && (\n <div\n className=\"flex flex-col py-1 pr-2 mr-2 border-r border-[#F0F0F0]\"\n style={{ minWidth: 120 }}\n >\n {presets.map((preset, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => {\n const f = toDate(preset.value[0]);\n const t = toDate(preset.value[1]);\n commit(f, t);\n setOpen(false);\n onOpenChange?.(false);\n }}\n className=\"text-left px-3 py-1.5 text-sm text-[#181918] rounded hover:bg-[rgba(0,0,0,0.04)] transition-colors\"\n >\n {preset.label}\n </button>\n ))}\n </div>\n )}\n <CalendarPane\n viewDate={viewDate}\n from={from}\n to={to}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n onDayClick={handleDayClick}\n isDisabledDate={isDisabledDate}\n firstDayOfWeek={firstDayOfWeek}\n showLeftArrows\n showRightArrows={effectiveSinglePanel}\n onShiftMonth={(delta) =>\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1))\n }\n onShiftYear={(delta) =>\n setViewDate(new Date(viewDate.getFullYear() + delta, viewDate.getMonth(), 1))\n }\n accentColor={accentColor}\n rangeBgColor={resolvedRangeBg}\n rangeTextColor={resolvedRangeText}\n />\n {!effectiveSinglePanel && (\n <>\n <div className=\"w-px bg-[#F0F0F0] mx-2\" />\n <CalendarPane\n viewDate={new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1)}\n from={from}\n to={to}\n hoverDate={hoverDate}\n onHoverDate={setHoverDate}\n onDayClick={handleDayClick}\n isDisabledDate={isDisabledDate}\n firstDayOfWeek={firstDayOfWeek}\n showLeftArrows={false}\n showRightArrows\n onShiftMonth={(delta) =>\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1))\n }\n onShiftYear={(delta) =>\n setViewDate(new Date(viewDate.getFullYear() + delta, viewDate.getMonth(), 1))\n }\n accentColor={accentColor}\n rangeBgColor={resolvedRangeBg}\n rangeTextColor={resolvedRangeText}\n />\n </>\n )}\n </div>\n </>,\n document.body\n )}\n </div>\n {error && (\n <div className=\"flex items-center mt-1 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n }\n);\nDateRangePickerBase.displayName = 'DateRangePickerBase';\n\nconst ControlledDateRangePicker: React.FC<\n DateRangePickerProps & { control: NonNullable<DateRangePickerProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <DateRangePickerBase\n {...rest}\n value={field.value}\n onChange={(range, strRange) => {\n field.onChange(range);\n rest.onChange?.(range, strRange);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledDateRangePicker control={control} name={name} {...props} />;\n }\n return <DateRangePickerBase ref={ref} name={name} {...props} />;\n }\n);\nDateRangePicker.displayName = 'DateRangePicker';\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { Input } from './Input';\nimport type { InputProps } from './Input';\n\nexport interface AmountInputProps\n extends Omit<InputProps, 'onChange' | 'value' | 'control' | 'type'> {\n value?: string | number;\n onChange?: (value: string, event?: React.ChangeEvent<HTMLInputElement>) => void;\n decimals?: number;\n enforceDecimals?: boolean;\n allowDecimals?: boolean;\n thousandSeparator?: string;\n decimalSeparator?: string;\n control?: Control<any>;\n}\n\nconst escapeRegex = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst buildFormat = (\n raw: string,\n opts: {\n decimals: number;\n allowDecimals: boolean;\n thousandSep: string;\n decimalSep: string;\n }\n): string => {\n const { decimals, allowDecimals, thousandSep, decimalSep } = opts;\n if (!raw) return '';\n\n const parts = raw.split('.');\n const integerPart = parts[0].replace(/\\D/g, '');\n const decimalPart = parts[1] !== undefined ? parts[1].replace(/\\D/g, '').slice(0, decimals) : undefined;\n\n const formattedInt = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSep);\n\n if (!allowDecimals) return formattedInt;\n if (decimalPart === undefined) return formattedInt;\n return `${formattedInt}${decimalSep}${decimalPart}`;\n};\n\nconst toRawNumber = (\n display: string,\n opts: { thousandSep: string; decimalSep: string }\n): string => {\n if (!display) return '';\n const { thousandSep, decimalSep } = opts;\n const noThousand = display.split(escapeRegex(thousandSep)).join('');\n // Convert local decimal separator → '.' for the raw value\n if (decimalSep === '.') return noThousand;\n return noThousand.replace(decimalSep, '.');\n};\n\nconst padDecimals = (raw: string, decimals: number): string => {\n if (!raw) return '';\n const parts = raw.split('.');\n const intPart = parts[0] || '0';\n let decPart = parts[1] ?? '';\n if (decPart.length < decimals) decPart = decPart.padEnd(decimals, '0');\n else decPart = decPart.slice(0, decimals);\n return decimals > 0 ? `${intPart}.${decPart}` : intPart;\n};\n\nconst AmountInputBase = React.forwardRef<HTMLInputElement, Omit<AmountInputProps, 'control'>>(\n (\n {\n value: externalValue,\n onChange,\n decimals = 2,\n enforceDecimals = false,\n allowDecimals = true,\n thousandSeparator = ',',\n decimalSeparator = '.',\n onBlur,\n onFocus,\n inputMode,\n ...props\n },\n ref\n ) => {\n const formatOpts = {\n decimals,\n allowDecimals,\n thousandSep: thousandSeparator,\n decimalSep: decimalSeparator,\n };\n const rawOpts = { thousandSep: thousandSeparator, decimalSep: decimalSeparator };\n\n const [displayValue, setDisplayValue] = useState<string>(() => {\n if (externalValue === undefined || externalValue === null || externalValue === '') return '';\n const raw = String(externalValue);\n const padded = enforceDecimals && allowDecimals ? padDecimals(raw, decimals) : raw;\n return buildFormat(padded, formatOpts);\n });\n\n const innerRef = useRef<HTMLInputElement | null>(null);\n const setRef = (el: HTMLInputElement | null) => {\n innerRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n };\n\n useEffect(() => {\n if (externalValue === undefined) return;\n const raw = externalValue === null || externalValue === '' ? '' : String(externalValue);\n const padded = enforceDecimals && allowDecimals && raw ? padDecimals(raw, decimals) : raw;\n setDisplayValue(buildFormat(padded, formatOpts));\n }, [externalValue, enforceDecimals, allowDecimals, decimals, thousandSeparator, decimalSeparator]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target;\n const cursor = input.selectionStart ?? 0;\n const before = displayValue;\n\n const rawIn = toRawNumber(input.value, rawOpts);\n\n // Only digits and at most one decimal separator\n const cleaned = (() => {\n if (!allowDecimals) return rawIn.replace(/\\D/g, '');\n const [intP, ...rest] = rawIn.split('.');\n const intOnly = intP.replace(/\\D/g, '');\n if (rest.length === 0) return intOnly;\n const decOnly = rest.join('').replace(/\\D/g, '').slice(0, decimals);\n return `${intOnly}.${decOnly}`;\n })();\n\n const formatted = buildFormat(cleaned, formatOpts);\n setDisplayValue(formatted);\n\n // Re-position cursor\n const diff = formatted.length - before.length;\n requestAnimationFrame(() => {\n if (!innerRef.current) return;\n const next = Math.max(0, Math.min(formatted.length, cursor + diff));\n innerRef.current.setSelectionRange(next, next);\n });\n\n onChange?.(cleaned, e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (enforceDecimals && allowDecimals && displayValue) {\n const raw = toRawNumber(displayValue, rawOpts);\n const padded = padDecimals(raw, decimals);\n const formatted = buildFormat(padded, formatOpts);\n setDisplayValue(formatted);\n onChange?.(padded);\n }\n onBlur?.(e);\n };\n\n return (\n <Input\n ref={setRef}\n {...props}\n value={displayValue}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={handleBlur}\n inputMode={inputMode ?? (allowDecimals ? 'decimal' : 'numeric')}\n />\n );\n }\n);\nAmountInputBase.displayName = 'AmountInputBase';\n\nconst ControlledAmountInput: React.FC<\n AmountInputProps & { control: NonNullable<AmountInputProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <AmountInputBase\n {...rest}\n name={name}\n value={field.value ?? ''}\n onChange={(value) => field.onChange(value)}\n onBlur={() => field.onBlur()}\n ref={field.ref}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const AmountInput = React.forwardRef<HTMLInputElement, AmountInputProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledAmountInput control={control} name={name} {...props} />;\n }\n return <AmountInputBase ref={ref} name={name} {...props} />;\n }\n);\nAmountInput.displayName = 'AmountInput';\n","import React, { useState, useRef, useEffect } from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport type FileUploadStatus = 'idle' | 'uploading' | 'done' | 'error';\n\nexport interface UploadedFile {\n id: string;\n file: File;\n name: string;\n size: number;\n type: string;\n url?: string;\n thumbnailUrl?: string;\n status: FileUploadStatus;\n progress: number;\n error?: string;\n}\n\nexport interface FileUploadProps {\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n loading?: boolean;\n loadingText?: React.ReactNode;\n error?: string;\n helperText?: string;\n\n value?: UploadedFile[];\n defaultValue?: UploadedFile[];\n onChange?: (files: UploadedFile[]) => void;\n onRemove?: (file: UploadedFile) => void;\n onPreview?: (file: UploadedFile) => void;\n showPreviewAction?: boolean;\n previewActionText?: string;\n previewButtonVariant?: 'pill' | 'text';\n showRemove?: boolean;\n\n accept?: string;\n multiple?: boolean;\n maxSize?: number;\n maxFiles?: number;\n fileTypesLabel?: string;\n\n uploadText?: React.ReactNode;\n browseText?: string | React.ReactNode;\n hintText?: React.ReactNode;\n dropZoneIcon?: React.ReactNode;\n\n onUpload?: (\n file: File,\n helpers: {\n onProgress: (pct: number) => void;\n }\n ) => Promise<{ url?: string; thumbnailUrl?: string } | void>;\n\n showPreview?: boolean;\n previewLayout?: 'list' | 'grid';\n keepInputOnUpload?: boolean;\n showCount?: boolean;\n\n className?: string;\n style?: React.CSSProperties;\n dropzoneClassName?: string;\n dropzoneStyle?: React.CSSProperties;\n\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n dropzoneBgColor?: string;\n\n control?: Control<any>;\n name?: string;\n id?: string;\n}\n\nconst formatBytes = (bytes: number): string => {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;\n};\n\nconst getFileExt = (name: string): string => {\n const parts = name.split('.');\n return parts.length > 1 ? (parts.pop() as string).toLowerCase() : '';\n};\n\nconst isImage = (file: File | UploadedFile): boolean => {\n const type = 'type' in file ? file.type : (file as File).type;\n return type?.startsWith('image/') || false;\n};\n\nconst makeId = () => `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n\nconst DownloadArrowIcon: React.FC<{ color?: string; size?: number }> = ({\n color = '#181918',\n size = 20,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17.5 12.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V12.5M14.1667 8.33333L10 12.5M10 12.5L5.83333 8.33333M10 12.5V2.5\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst FileIcon: React.FC<{ ext: string; size?: number }> = ({ ext, size = 36 }) => {\n const palette: Record<string, string> = {\n pdf: '#EC615B',\n doc: '#4A9FD8',\n docx: '#4A9FD8',\n xls: '#5FB894',\n xlsx: '#5FB894',\n png: '#9B59D8',\n jpg: '#9B59D8',\n jpeg: '#9B59D8',\n };\n const color = palette[ext] ?? '#8C8C8C';\n return (\n <svg width={size} height={size} viewBox=\"0 0 36 36\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M8 4h14l6 6v22a2 2 0 01-2 2H8a2 2 0 01-2-2V6a2 2 0 012-2z\"\n fill={hexWithAlpha(color, 0.1)}\n stroke={color}\n strokeWidth=\"1.3\"\n />\n <path d=\"M22 4v6h6\" stroke={color} strokeWidth=\"1.3\" strokeLinejoin=\"round\" />\n <text\n x=\"18\"\n y=\"26\"\n textAnchor=\"middle\"\n fill={color}\n fontSize=\"7\"\n fontFamily=\"sans-serif\"\n fontWeight=\"700\"\n >\n {ext.toUpperCase().slice(0, 4)}\n </text>\n </svg>\n );\n};\n\nconst TrashIcon: React.FC<{ color?: string; size?: number }> = ({\n color = '#181918',\n size = 20,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.5 2.5H12.5M2.5 5H17.5M15.8333 5L15.2489 13.7661C15.1612 15.0813 15.1174 15.7389 14.8333 16.2375C14.5833 16.6765 14.206 17.0294 13.7514 17.2497C13.235 17.5 12.5759 17.5 11.2578 17.5H8.74221C7.42409 17.5 6.76503 17.5 6.24861 17.2497C5.79396 17.0294 5.41674 16.6765 5.16665 16.2375C4.88259 15.7389 4.83875 15.0813 4.75107 13.7661L4.16667 5M8.33333 8.75V12.9167M11.6667 8.75V12.9167\"\n stroke={color}\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst Spinner: React.FC<{ size?: number; color?: string }> = ({ size = 20, color = '#EC615B' }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n className=\"shekel-spin\"\n style={{ color }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.2\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst FileUploadBase: React.FC<Omit<FileUploadProps, 'control'>> = (props) => {\n const {\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n required,\n disabled,\n loading,\n loadingText = 'Uploading…',\n error,\n helperText,\n value: externalValue,\n defaultValue,\n onChange,\n onRemove,\n onPreview,\n showPreviewAction = true,\n previewActionText = 'View',\n previewButtonVariant = 'pill',\n showRemove = true,\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n fileTypesLabel,\n uploadText = 'Drag and drop your document here or',\n browseText = 'Browse',\n hintText,\n dropZoneIcon,\n onUpload,\n showPreview = true,\n previewLayout = 'list',\n keepInputOnUpload = true,\n showCount = true,\n className = '',\n style,\n dropzoneClassName = '',\n dropzoneStyle,\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor = '#D9D9D9',\n dropzoneBgColor = '#FFFFFF',\n id,\n } = props;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n const inputRef = useRef<HTMLInputElement>(null);\n const isControlled = externalValue !== undefined;\n const [innerFiles, setInnerFiles] = useState<UploadedFile[]>(defaultValue ?? []);\n const files = isControlled ? (externalValue as UploadedFile[]) : innerFiles;\n\n const [isDragging, setIsDragging] = useState(false);\n const [dropError, setDropError] = useState<string>('');\n\n const isError = !!error || !!dropError;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: errorColor }}>*</span> : requiredMark;\n\n const resolvedHint =\n hintText ??\n (fileTypesLabel\n ? `Supported file types: ${fileTypesLabel}${\n maxSize ? `. Max file size, ${formatBytes(maxSize)}` : ''\n }`\n : null);\n\n const commit = (next: UploadedFile[]) => {\n if (!isControlled) setInnerFiles(next);\n onChange?.(next);\n };\n\n const updateFile = (id: string, patch: Partial<UploadedFile>) => {\n setInnerFiles((prev) => {\n const next = prev.map((f) => (f.id === id ? { ...f, ...patch } : f));\n if (!isControlled) return next;\n return prev;\n });\n if (isControlled && externalValue) {\n const next = externalValue.map((f) => (f.id === id ? { ...f, ...patch } : f));\n onChange?.(next);\n }\n };\n\n const validate = (file: File): string | null => {\n if (maxSize && file.size > maxSize) {\n return `\"${file.name}\" exceeds max size of ${formatBytes(maxSize)}`;\n }\n if (accept) {\n const accepted = accept.split(',').map((a) => a.trim().toLowerCase());\n const ext = '.' + getFileExt(file.name);\n const typeMatch = accepted.some((a) => {\n if (a.startsWith('.')) return a === ext;\n if (a.endsWith('/*')) return file.type.startsWith(a.replace('/*', '/'));\n return file.type === a;\n });\n if (!typeMatch) return `\"${file.name}\" is not an allowed file type`;\n }\n return null;\n };\n\n const addFiles = async (newFiles: File[]) => {\n setDropError('');\n if (newFiles.length === 0) return;\n\n if (!multiple) newFiles = newFiles.slice(0, 1);\n if (maxFiles && files.length + newFiles.length > maxFiles) {\n setDropError(`Max ${maxFiles} files allowed`);\n return;\n }\n\n const validationErrors: string[] = [];\n const accepted: UploadedFile[] = [];\n\n for (const file of newFiles) {\n const err = validate(file);\n if (err) {\n validationErrors.push(err);\n continue;\n }\n const thumbnailUrl = isImage(file) ? URL.createObjectURL(file) : undefined;\n accepted.push({\n id: makeId(),\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n thumbnailUrl,\n status: onUpload ? 'uploading' : 'done',\n progress: onUpload ? 0 : 100,\n });\n }\n\n if (validationErrors.length > 0) setDropError(validationErrors[0]);\n\n let next = multiple ? [...files, ...accepted] : accepted;\n if (maxFiles) next = next.slice(0, maxFiles);\n commit(next);\n\n if (onUpload) {\n for (const uploaded of accepted) {\n try {\n const result = await onUpload(uploaded.file, {\n onProgress: (pct) => updateFile(uploaded.id, { progress: pct }),\n });\n updateFile(uploaded.id, { status: 'done', progress: 100, ...(result ?? {}) });\n } catch (e: any) {\n updateFile(uploaded.id, {\n status: 'error',\n progress: 0,\n error: e?.message ?? 'Upload failed',\n });\n }\n }\n }\n };\n\n const handleFileInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!e.target.files) return;\n addFiles(Array.from(e.target.files));\n if (!keepInputOnUpload && inputRef.current) inputRef.current.value = '';\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n const dt = e.dataTransfer;\n addFiles(Array.from(dt.files));\n };\n\n const handleRemove = (file: UploadedFile) => {\n if (file.thumbnailUrl) URL.revokeObjectURL(file.thumbnailUrl);\n const next = files.filter((f) => f.id !== file.id);\n commit(next);\n onRemove?.(file);\n };\n\n useEffect(() => {\n return () => {\n files.forEach((f) => {\n if (f.thumbnailUrl) URL.revokeObjectURL(f.thumbnailUrl);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const anyUploading = files.some((f) => f.status === 'uploading');\n const doneCount = files.filter((f) => f.status === 'done').length;\n const totalCount = files.length;\n const isBusy = !!loading || anyUploading;\n const zoneDisabled = disabled || isBusy;\n\n const dropzoneBorder = isError\n ? errorColor\n : isDragging\n ? accentColor\n : isBusy\n ? accentColor\n : borderColor;\n const dropzoneBg = isDragging\n ? hexWithAlpha(accentColor, 0.04)\n : isBusy\n ? hexWithAlpha(accentColor, 0.02)\n : dropzoneBgColor;\n\n const busyText = isBusy\n ? anyUploading && multiple && totalCount > 1 && showCount\n ? `Uploading ${doneCount + 1} of ${totalCount}…`\n : loadingText\n : null;\n\n const shouldHideDropzone =\n !multiple && files.length > 0 && showPreview && previewLayout === 'list';\n\n return (\n <div className={`w-full ${className}`} style={style}>\n <style>{`\n @keyframes shekel-spin { to { transform: rotate(360deg); } }\n .shekel-spin { animation: shekel-spin 0.8s linear infinite; transform-origin: center; }\n @keyframes shekel-file-in {\n from { opacity: 0; transform: translateY(-4px) scale(0.98); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n .shekel-file-item {\n animation: shekel-file-in 220ms cubic-bezier(0.23, 1, 0.32, 1);\n transition: box-shadow 200ms ease, transform 200ms ease, border-color 200ms ease;\n }\n .shekel-file-item:hover {\n box-shadow: 0 4px 12px rgba(17, 24, 39, 0.06);\n transform: translateY(-1px);\n }\n .shekel-progress-bar {\n transition: width 220ms cubic-bezier(0.4, 0, 0.2, 1), background-color 200ms ease;\n }\n .shekel-dropzone-dragging {\n transform: scale(1.01);\n box-shadow: 0 6px 20px rgba(17, 24, 39, 0.08);\n }\n `}</style>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <label\n htmlFor={inputId}\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </label>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n\n {!shouldHideDropzone && (\n <div\n onClick={() => !zoneDisabled && inputRef.current?.click()}\n onDragOver={(e) => {\n e.preventDefault();\n if (!zoneDisabled) setIsDragging(true);\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={handleDrop}\n aria-busy={isBusy}\n className={`flex flex-col sm:flex-row items-center gap-4 sm:gap-6 px-4 sm:px-6 py-5 sm:py-6 rounded-[12px] transition-all duration-200 ${\n zoneDisabled ? 'cursor-not-allowed' : 'cursor-pointer'\n } ${disabled ? 'opacity-60' : ''} ${isDragging ? 'shekel-dropzone-dragging' : ''} ${dropzoneClassName}`}\n style={{\n border: `1.5px dashed ${dropzoneBorder}`,\n backgroundColor: dropzoneBg,\n ...dropzoneStyle,\n }}\n >\n <div className=\"shrink-0\">\n {isBusy ? (\n <Spinner size={40} color={accentColor} />\n ) : (\n dropZoneIcon ?? (\n <DownloadArrowIcon color={isDragging ? accentColor : '#181918'} size={20} />\n )\n )}\n </div>\n <div className=\"flex-1 min-w-0 text-center\">\n {isBusy ? (\n <div className=\"text-[#181918] text-sm\" style={{ color: accentColor }}>\n {busyText}\n </div>\n ) : (\n <div className=\"text-[#181918] text-sm\">\n {uploadText}{' '}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n if (!zoneDisabled) inputRef.current?.click();\n }}\n className=\"underline font-medium\"\n style={{ color: accentColor }}\n disabled={zoneDisabled}\n >\n {browseText}\n </button>{' '}\n to upload\n </div>\n )}\n {resolvedHint && !isBusy && (\n <div className=\"text-xs text-[#616161] mt-1\">{resolvedHint}</div>\n )}\n </div>\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={zoneDisabled}\n onChange={handleFileInput}\n className=\"hidden\"\n />\n </div>\n )}\n\n {showPreview && showCount && files.length > 0 && multiple && totalCount > 1 && (\n <div className=\"flex items-center justify-between mt-3 mb-1 text-xs text-[#616161]\">\n <span>\n {anyUploading\n ? `Uploading ${doneCount} of ${totalCount}`\n : `${totalCount} ${totalCount === 1 ? 'file' : 'files'}`}\n </span>\n {maxFiles && (\n <span className=\"text-[#8C8C8C]\">\n {totalCount} / {maxFiles}\n </span>\n )}\n </div>\n )}\n {showPreview && files.length > 0 && (\n <div\n className={\n previewLayout === 'grid'\n ? 'grid grid-cols-2 md:grid-cols-3 gap-3 mt-3'\n : 'flex flex-col gap-2 mt-3'\n }\n >\n {files.map((file) =>\n previewLayout === 'grid' ? (\n <GridPreviewItem\n key={file.id}\n file={file}\n onRemove={handleRemove}\n onPreview={onPreview}\n showPreviewAction={showPreviewAction}\n previewActionText={previewActionText}\n previewButtonVariant={previewButtonVariant}\n showRemove={showRemove}\n accentColor={accentColor}\n errorColor={errorColor}\n disabled={disabled}\n />\n ) : (\n <ListPreviewItem\n key={file.id}\n file={file}\n onRemove={handleRemove}\n onPreview={onPreview}\n showPreviewAction={showPreviewAction}\n previewActionText={previewActionText}\n previewButtonVariant={previewButtonVariant}\n showRemove={showRemove}\n accentColor={accentColor}\n errorColor={errorColor}\n disabled={disabled}\n />\n )\n )}\n </div>\n )}\n\n {(error || dropError) && (\n <div className=\"flex items-center mt-2 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error || dropError}\n </div>\n )}\n {!error && !dropError && helperText && (\n <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>\n )}\n </div>\n );\n};\n\ninterface PreviewItemProps {\n file: UploadedFile;\n onRemove: (f: UploadedFile) => void;\n onPreview?: (f: UploadedFile) => void;\n showPreviewAction?: boolean;\n previewActionText?: string;\n previewButtonVariant?: 'pill' | 'text';\n showRemove?: boolean;\n accentColor: string;\n errorColor: string;\n disabled?: boolean;\n}\n\nconst defaultPreview = (file: UploadedFile) => {\n const url = file.url ?? file.thumbnailUrl;\n if (!url) return;\n if (typeof window !== 'undefined') window.open(url, '_blank', 'noopener');\n};\n\nconst ListPreviewItem: React.FC<PreviewItemProps> = ({\n file,\n onRemove,\n onPreview,\n showPreviewAction = true,\n previewActionText = 'View',\n previewButtonVariant = 'pill',\n showRemove = true,\n accentColor,\n errorColor,\n disabled,\n}) => {\n const ext = getFileExt(file.name);\n const isImg = isImage(file);\n const isUploading = file.status === 'uploading';\n const isErr = file.status === 'error';\n const handlePreview = () => {\n if (onPreview) onPreview(file);\n else defaultPreview(file);\n };\n const canPreview = !!(onPreview || file.url || file.thumbnailUrl);\n\n return (\n <div className=\"shekel-file-item flex items-center gap-3 border border-[#E6E6E6] rounded-[12px] px-3 py-2 bg-white\">\n <div className=\"shrink-0 flex items-center justify-center w-10 h-10 rounded-lg bg-[#F5F5F5] overflow-hidden\">\n {isImg && file.thumbnailUrl ? (\n <img src={file.thumbnailUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n ) : (\n <FileIcon ext={ext} size={28} />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-[#181918] truncate\">{file.name}</div>\n {(isUploading || isErr) && (\n <div className=\"text-xs mt-0.5 flex items-center gap-2\">\n {isUploading && <span className=\"text-[#8C8C8C]\">Uploading {file.progress}%</span>}\n {isErr && <span style={{ color: errorColor }}>{file.error ?? 'Upload failed'}</span>}\n </div>\n )}\n {isUploading && (\n <div className=\"mt-1 h-1 bg-[#F0F0F0] rounded overflow-hidden\">\n <div\n className=\"h-full shekel-progress-bar\"\n style={{ width: `${file.progress}%`, backgroundColor: accentColor }}\n />\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-2 shrink-0\">\n {showPreviewAction && canPreview && !isUploading && (\n previewButtonVariant === 'pill' ? (\n <button\n type=\"button\"\n onClick={handlePreview}\n className=\"inline-flex items-center gap-1.5 px-3 h-8 rounded-lg bg-[#F5F5F5] text-sm font-medium text-[#181918] hover:bg-[#EBEBEB] transition-colors\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M1.6 8c1-2.4 3.6-4.4 6.4-4.4s5.4 2 6.4 4.4c-1 2.4-3.6 4.4-6.4 4.4s-5.4-2-6.4-4.4z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n </svg>\n {previewActionText}\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handlePreview}\n className=\"text-sm font-medium hover:underline\"\n style={{ color: accentColor }}\n >\n {previewActionText}\n </button>\n )\n )}\n {showRemove && !disabled && (\n <button\n type=\"button\"\n onClick={() => onRemove(file)}\n className=\"flex items-center justify-center w-8 h-8 rounded-md hover:bg-[#F5F5F5] transition-colors\"\n aria-label=\"Remove file\"\n >\n <TrashIcon color=\"#181918\" size={20} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nconst GridPreviewItem: React.FC<PreviewItemProps> = ({\n file,\n onRemove,\n onPreview,\n showPreviewAction = true,\n previewActionText = 'Preview',\n accentColor,\n errorColor,\n disabled,\n}) => {\n const ext = getFileExt(file.name);\n const isImg = isImage(file);\n const handlePreview = () => {\n if (onPreview) onPreview(file);\n else defaultPreview(file);\n };\n const canPreview = !!(onPreview || file.url || file.thumbnailUrl);\n\n return (\n <div className=\"shekel-file-item relative border border-[#E6E6E6] rounded-[12px] overflow-hidden bg-white group\">\n <div className=\"aspect-square flex items-center justify-center bg-[#F5F5F5]\">\n {isImg && file.thumbnailUrl ? (\n <img src={file.thumbnailUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n ) : (\n <FileIcon ext={ext} size={48} />\n )}\n </div>\n <div className=\"p-2\">\n <div className=\"text-xs text-[#181918] truncate font-medium\">{file.name}</div>\n <div className=\"text-[10px] text-[#8C8C8C] mt-0.5 flex items-center gap-1\">\n <span>{formatBytes(file.size)}</span>\n {file.status === 'uploading' && <span>· {file.progress}%</span>}\n {file.status === 'error' && <span style={{ color: errorColor }}>· Failed</span>}\n </div>\n {file.status === 'uploading' && (\n <div className=\"mt-1 h-1 bg-[#F0F0F0] rounded overflow-hidden\">\n <div\n className=\"h-full shekel-progress-bar\"\n style={{ width: `${file.progress}%`, backgroundColor: accentColor }}\n />\n </div>\n )}\n </div>\n <div className=\"absolute top-2 right-2 flex gap-1\">\n {showPreviewAction && canPreview && file.status !== 'uploading' && (\n <button\n type=\"button\"\n onClick={handlePreview}\n aria-label={previewActionText}\n className=\"flex items-center justify-center w-7 h-7 rounded-full bg-white/90 border border-[#E6E6E6] hover:bg-white shadow-sm text-xs font-medium\"\n style={{ color: accentColor }}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M1.6 8c1-2.4 3.6-4.4 6.4-4.4s5.4 2 6.4 4.4c-1 2.4-3.6 4.4-6.4 4.4s-5.4-2-6.4-4.4z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"8\" cy=\"8\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n </svg>\n </button>\n )}\n {!disabled && (\n <button\n type=\"button\"\n onClick={() => onRemove(file)}\n aria-label=\"Remove file\"\n className=\"flex items-center justify-center w-7 h-7 rounded-full bg-white/90 border border-[#E6E6E6] hover:bg-white shadow-sm\"\n >\n <TrashIcon color=\"#181918\" size={14} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nconst ControlledFileUpload: React.FC<\n FileUploadProps & { control: NonNullable<FileUploadProps['control']>; name: string }\n> = ({ control, name, error: errorProp, ...rest }) => {\n const { field, fieldState } = useController({ control, name });\n return (\n <FileUploadBase\n {...rest}\n value={field.value ?? []}\n onChange={(files) => {\n field.onChange(files);\n rest.onChange?.(files);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n};\n\nexport const FileUpload: React.FC<FileUploadProps> = ({ control, name, ...props }) => {\n if (control && name) {\n return <ControlledFileUpload control={control} name={name} {...props} />;\n }\n return <FileUploadBase name={name} {...props} />;\n};\n\nexport default FileUpload;\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\nimport { hexWithAlpha, ErrorIcon } from './_theme';\n\nexport interface RadioCardOption<V extends string | number = string> {\n value: V;\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioCardGroupProps<V extends string | number = string> {\n options: RadioCardOption<V>[];\n value?: V;\n defaultValue?: V;\n onChange?: (value: V, option: RadioCardOption<V>) => void;\n\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelExtra?: React.ReactNode;\n requiredMark?: React.ReactNode;\n required?: boolean;\n error?: string;\n helperText?: string;\n disabled?: boolean;\n\n layout?: 'row' | 'column';\n columns?: number;\n gap?: number | string;\n equalWidth?: boolean;\n cardHeight?: number | string;\n iconSize?: number;\n titleSize?: number;\n descriptionSize?: number;\n radioSize?: number;\n\n className?: string;\n style?: React.CSSProperties;\n cardClassName?: string;\n cardStyle?: React.CSSProperties;\n\n // Colors\n accentColor?: string;\n errorColor?: string;\n borderColor?: string;\n selectedBorderColor?: string;\n selectedGlowColor?: string;\n textColor?: string;\n descriptionColor?: string;\n cardBgColor?: string;\n selectedCardBgColor?: string;\n\n // Radio button\n radioBorderWidth?: number;\n radioBorderColor?: string;\n\n // Card border / shadow\n variant?: 'border' | 'shadow' | 'both';\n cardBorderWidth?: number;\n cardBorderRadius?: number;\n cardShadow?: string;\n selectedCardShadow?: string;\n\n // Typography\n titleWeight?: number | string;\n descriptionWeight?: number | string;\n titleLineHeight?: number;\n descriptionLineHeight?: number;\n\n name?: string;\n control?: Control<any>;\n id?: string;\n}\n\nconst RadioIcon: React.FC<{\n selected: boolean;\n disabled?: boolean;\n accentColor: string;\n size?: number;\n borderWidth?: number;\n borderColor?: string;\n}> = ({ selected, disabled, accentColor, size = 24, borderWidth = 1.5, borderColor = '#D1D1D1' }) => {\n if (selected) {\n return (\n <span\n className=\"shrink-0 inline-flex items-center justify-center rounded-full\"\n style={{\n width: size,\n height: size,\n border: `${borderWidth}px solid ${accentColor}`,\n }}\n >\n <span\n className=\"block rounded-full\"\n style={{\n width: Math.max(8, size - 12),\n height: Math.max(8, size - 12),\n backgroundColor: accentColor,\n }}\n />\n </span>\n );\n }\n return (\n <span\n className=\"shrink-0 block rounded-full\"\n style={{\n width: size,\n height: size,\n border: `${borderWidth}px solid ${disabled ? '#D9D9D9' : borderColor}`,\n backgroundColor: 'transparent',\n }}\n />\n );\n};\n\nfunction RadioCardGroupBase<V extends string | number = string>({\n options,\n value: externalValue,\n defaultValue,\n onChange,\n\n label,\n labelClassName = '',\n labelStyle,\n labelExtra,\n requiredMark,\n required,\n error,\n helperText,\n disabled,\n\n layout = 'row',\n columns,\n gap = 16,\n equalWidth = true,\n cardHeight = 94,\n iconSize = 20,\n titleSize = 12,\n descriptionSize = 12,\n radioSize = 24,\n\n className = '',\n style,\n cardClassName = '',\n cardStyle,\n\n accentColor = '#EC615B',\n errorColor = '#C21919',\n borderColor = '#EEEEEE',\n selectedBorderColor,\n selectedGlowColor,\n textColor = '#131413',\n descriptionColor = '#8C8C8C',\n cardBgColor = 'white',\n selectedCardBgColor,\n radioBorderWidth = 1.5,\n radioBorderColor = '#D1D1D1',\n variant = 'border',\n cardBorderWidth = 1.5,\n cardBorderRadius = 16,\n cardShadow,\n selectedCardShadow,\n titleWeight = 600,\n descriptionWeight = 400,\n titleLineHeight = 1.3,\n descriptionLineHeight = 1.3,\n\n name,\n id,\n}: Omit<RadioCardGroupProps<V>, 'control'>) {\n const isControlled = externalValue !== undefined;\n const [innerValue, setInnerValue] = React.useState<V | undefined>(defaultValue);\n const value = isControlled ? externalValue : innerValue;\n\n const reactId = React.useId();\n const groupId = id ?? reactId;\n\n const isError = !!error;\n const resolvedRequiredMark =\n requiredMark === undefined ? <span style={{ color: errorColor }}>*</span> : requiredMark;\n\n const resolvedGap = typeof gap === 'number' ? `${gap}px` : gap;\n const resolvedSelectedBorder = selectedBorderColor ?? accentColor;\n const resolvedGlow = selectedGlowColor ?? hexWithAlpha(accentColor, 0.2);\n\n const handleSelect = (opt: RadioCardOption<V>) => {\n if (disabled || opt.disabled) return;\n if (!isControlled) setInnerValue(opt.value);\n onChange?.(opt.value, opt);\n };\n\n const containerStyle: React.CSSProperties = {\n display: 'grid',\n gap: resolvedGap,\n gridTemplateColumns: columns\n ? `repeat(${columns}, minmax(0, 1fr))`\n : layout === 'row'\n ? equalWidth\n ? 'repeat(auto-fit, minmax(180px, 1fr))'\n : `repeat(${options.length}, auto)`\n : '1fr',\n ...style,\n };\n\n return (\n <div className=\"w-full\" id={groupId}>\n {label && (\n <div className=\"flex items-center justify-between mb-2 gap-2\">\n <span\n className={`block text-sm font-medium ${labelClassName}`}\n style={{ color: isError ? errorColor : '#181918', ...labelStyle }}\n >\n {label}\n {required && resolvedRequiredMark}\n </span>\n {labelExtra && <div className=\"shrink-0\">{labelExtra}</div>}\n </div>\n )}\n\n <div role=\"radiogroup\" aria-labelledby={label ? groupId : undefined} className={className} style={containerStyle}>\n {options.map((opt) => {\n const selected = value === opt.value;\n const optDisabled = !!disabled || !!opt.disabled;\n\n return (\n <div\n key={opt.value}\n role=\"radio\"\n aria-checked={selected}\n aria-disabled={optDisabled}\n tabIndex={optDisabled ? -1 : 0}\n onClick={() => handleSelect(opt)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleSelect(opt);\n }\n }}\n className={`relative transition-all duration-200 ${\n optDisabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\n } ${cardClassName}`}\n style={{\n height: typeof cardHeight === 'number' ? `${cardHeight}px` : cardHeight,\n padding: '14px 16px',\n borderRadius: cardBorderRadius,\n backgroundColor: selected && selectedCardBgColor ? selectedCardBgColor : cardBgColor,\n border:\n variant === 'shadow' && !selected\n ? `${cardBorderWidth}px solid transparent`\n : `${cardBorderWidth}px solid ${selected ? resolvedSelectedBorder : borderColor}`,\n boxShadow: selected\n ? selectedCardShadow ?? (variant === 'shadow' ? `0 4px 16px ${resolvedGlow}` : `0 0 0 4px ${resolvedGlow}`)\n : cardShadow ?? (variant === 'shadow' || variant === 'both' ? '0 1px 4px rgba(0,0,0,0.08)' : 'none'),\n ...cardStyle,\n }}\n >\n <div className=\"flex items-center gap-3 h-full\">\n <div className=\"flex-1 min-w-0 flex flex-col justify-center\">\n {opt.icon && (\n <div\n className=\"shrink-0 flex items-center\"\n style={{ color: textColor, height: iconSize }}\n >\n <span\n className=\"inline-flex items-center justify-center\"\n style={{ width: iconSize, height: iconSize }}\n >\n {opt.icon}\n </span>\n </div>\n )}\n <div\n className=\"truncate\"\n style={{ color: textColor, fontSize: titleSize, fontWeight: titleWeight, marginTop: opt.icon ? 6 : 0, lineHeight: titleLineHeight }}\n >\n {opt.label}\n </div>\n {opt.description && (\n <div\n className=\"truncate\"\n style={{ color: descriptionColor, fontSize: descriptionSize, fontWeight: descriptionWeight, marginTop: 2, lineHeight: descriptionLineHeight }}\n >\n {opt.description}\n </div>\n )}\n </div>\n <div className=\"shrink-0 flex items-center\">\n <RadioIcon\n selected={selected}\n disabled={optDisabled}\n accentColor={accentColor}\n size={radioSize}\n borderWidth={radioBorderWidth}\n borderColor={radioBorderColor}\n />\n </div>\n </div>\n {name && (\n <input type=\"hidden\" name={name} value={selected ? String(opt.value) : ''} readOnly />\n )}\n </div>\n );\n })}\n </div>\n\n {error && (\n <div className=\"flex items-center mt-2 text-xs gap-1\" style={{ color: errorColor }}>\n <ErrorIcon color={errorColor} size={14} />\n {error}\n </div>\n )}\n {!error && helperText && <div className=\"mt-1 text-xs text-gray-500\">{helperText}</div>}\n </div>\n );\n}\n\nfunction ControlledRadioCardGroup<V extends string | number = string>({\n control,\n name,\n error: errorProp,\n ...rest\n}: RadioCardGroupProps<V> & { control: NonNullable<RadioCardGroupProps<V>['control']>; name: string }) {\n const { field, fieldState } = useController({ control, name });\n return (\n <RadioCardGroupBase<V>\n {...rest}\n name={name}\n value={field.value}\n onChange={(v, opt) => {\n field.onChange(v);\n rest.onChange?.(v, opt);\n }}\n error={errorProp ?? fieldState.error?.message}\n />\n );\n}\n\nexport function RadioCardGroup<V extends string | number = string>({\n control,\n name,\n ...props\n}: RadioCardGroupProps<V>) {\n if (control && name) {\n return <ControlledRadioCardGroup<V> control={control} name={name} {...props} />;\n }\n return <RadioCardGroupBase<V> name={name} {...props} />;\n}\n","import React from 'react';\nimport { useController } from 'react-hook-form';\nimport type { Control } from 'react-hook-form';\n\nexport interface ToggleProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean, event: React.SyntheticEvent) => void;\n\n label?: React.ReactNode;\n labelClassName?: string;\n labelStyle?: React.CSSProperties;\n labelPosition?: 'left' | 'right';\n\n disabled?: boolean;\n loading?: boolean;\n\n size?: 'sm' | 'md' | 'lg';\n trackWidth?: number;\n trackHeight?: number;\n knobSize?: number;\n\n onColor?: string;\n offColor?: string;\n knobColor?: string;\n loadingColor?: string;\n\n checkedIcon?: React.ReactNode;\n uncheckedIcon?: React.ReactNode;\n\n name?: string;\n id?: string;\n className?: string;\n style?: React.CSSProperties;\n\n control?: Control<any>;\n autoFocus?: boolean;\n tabIndex?: number;\n}\n\nconst SIZE_MAP = {\n sm: { trackWidth: 28, trackHeight: 16, knobSize: 12 },\n md: { trackWidth: 36, trackHeight: 20, knobSize: 16 },\n lg: { trackWidth: 48, trackHeight: 26, knobSize: 22 },\n};\n\nconst ToggleBase = React.forwardRef<HTMLButtonElement, Omit<ToggleProps, 'control'>>(\n (props, ref) => {\n const {\n checked: externalChecked,\n defaultChecked,\n onChange,\n label,\n labelClassName = '',\n labelStyle,\n labelPosition = 'right',\n disabled,\n loading,\n size = 'md',\n trackWidth: tw,\n trackHeight: th,\n knobSize: ks,\n onColor = '#EC615B',\n offColor = '#8C9196',\n knobColor = '#FFFFFF',\n loadingColor,\n checkedIcon,\n uncheckedIcon,\n name,\n id,\n className = '',\n style,\n autoFocus,\n tabIndex,\n } = props;\n\n const isControlled = externalChecked !== undefined;\n const [innerChecked, setInnerChecked] = React.useState<boolean>(defaultChecked ?? false);\n const checked = isControlled ? !!externalChecked : innerChecked;\n\n const reactId = React.useId();\n const inputId = id ?? reactId;\n\n const { trackWidth: dtw, trackHeight: dth, knobSize: dks } = SIZE_MAP[size];\n const trackWidth = tw ?? dtw;\n const trackHeight = th ?? dth;\n const knobSize = ks ?? dks;\n const padding = (trackHeight - knobSize) / 2;\n const knobOffset = checked ? trackWidth - knobSize - padding : padding;\n\n const handleToggle = (e: React.SyntheticEvent) => {\n if (disabled || loading) return;\n const next = !checked;\n if (!isControlled) setInnerChecked(next);\n onChange?.(next, e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n handleToggle(e);\n } else if (e.key === 'ArrowRight' && !checked) {\n e.preventDefault();\n handleToggle(e);\n } else if (e.key === 'ArrowLeft' && checked) {\n e.preventDefault();\n handleToggle(e);\n }\n };\n\n const trackBg = checked ? onColor : offColor;\n\n const toggleEl = (\n <button\n ref={ref}\n id={inputId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-disabled={disabled || loading}\n disabled={disabled || loading}\n autoFocus={autoFocus}\n tabIndex={tabIndex}\n onClick={handleToggle}\n onKeyDown={handleKeyDown}\n className={`relative inline-flex items-center shrink-0 rounded-full transition-colors duration-200 ${\n disabled || loading ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'\n } ${className}`}\n style={{\n width: trackWidth,\n height: trackHeight,\n backgroundColor: loading ? loadingColor ?? trackBg : trackBg,\n ...style,\n }}\n >\n <span\n aria-hidden\n className=\"absolute top-1/2 rounded-full flex items-center justify-center transition-all duration-200\"\n style={{\n left: knobOffset,\n transform: 'translateY(-50%)',\n width: knobSize,\n height: knobSize,\n backgroundColor: knobColor,\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.15)',\n }}\n >\n {loading ? (\n <svg\n width={knobSize * 0.6}\n height={knobSize * 0.6}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className=\"shekel-toggle-spin\"\n style={{ color: trackBg }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <path d=\"M12 3a9 9 0 019 9\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n </svg>\n ) : checked && checkedIcon ? (\n <span style={{ color: trackBg, fontSize: knobSize * 0.5, lineHeight: 1 }}>{checkedIcon}</span>\n ) : !checked && uncheckedIcon ? (\n <span style={{ color: trackBg, fontSize: knobSize * 0.5, lineHeight: 1 }}>{uncheckedIcon}</span>\n ) : null}\n </span>\n {name && <input type=\"hidden\" name={name} value={checked ? 'true' : 'false'} />}\n </button>\n );\n\n if (!label) return toggleEl;\n\n return (\n <>\n <style>{`\n @keyframes shekel-toggle-spin { to { transform: rotate(360deg); } }\n .shekel-toggle-spin { animation: shekel-toggle-spin 0.8s linear infinite; transform-origin: center; }\n `}</style>\n <label\n htmlFor={inputId}\n className={`inline-flex items-center gap-3 ${\n disabled || loading ? 'cursor-not-allowed' : 'cursor-pointer'\n } ${labelClassName}`}\n style={labelStyle}\n >\n {labelPosition === 'left' && (\n <span className=\"text-base text-[#181918] select-none\">{label}</span>\n )}\n {toggleEl}\n {labelPosition === 'right' && (\n <span className=\"text-base text-[#181918] select-none\">{label}</span>\n )}\n </label>\n </>\n );\n }\n);\nToggleBase.displayName = 'ToggleBase';\n\nconst ControlledToggle: React.FC<\n ToggleProps & { control: NonNullable<ToggleProps['control']>; name: string }\n> = ({ control, name, ...rest }) => {\n const { field } = useController({ control, name });\n return (\n <ToggleBase\n {...rest}\n name={name}\n checked={!!field.value}\n onChange={(val, e) => {\n field.onChange(val);\n rest.onChange?.(val, e);\n }}\n />\n );\n};\n\nexport const Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n ({ control, name, ...props }, ref) => {\n if (control && name) {\n return <ControlledToggle control={control} name={name} {...props} />;\n }\n return <ToggleBase ref={ref} name={name} {...props} />;\n }\n);\nToggle.displayName = 'Toggle';\n","import React from 'react';\n\nexport interface AvatarProps {\n src?: string;\n name?: string;\n size?: number | 'sm' | 'md' | 'lg' | 'xl';\n shape?: 'circle' | 'square';\n bgColor?: string;\n textColor?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst SIZE_MAP: Record<string, number> = {\n sm: 24,\n md: 32,\n lg: 40,\n xl: 56,\n};\n\nconst initialsFromName = (name?: string) => {\n if (!name) return '';\n const parts = name.trim().split(/\\s+/).slice(0, 2);\n return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n name,\n size = 'md',\n shape = 'circle',\n bgColor = '#F5F5F5',\n textColor = '#181918',\n className = '',\n style,\n}) => {\n const px = typeof size === 'number' ? size : SIZE_MAP[size] ?? 32;\n const initials = initialsFromName(name);\n const fontSize = Math.max(10, Math.round(px * 0.42));\n const shapeClass = shape === 'circle' ? 'rounded-full' : 'rounded-lg';\n\n return (\n <span\n aria-hidden\n className={`inline-flex items-center justify-center shrink-0 overflow-hidden ${shapeClass} ${className}`}\n style={{\n width: px,\n height: px,\n backgroundColor: bgColor,\n color: textColor,\n fontSize,\n fontWeight: 600,\n ...style,\n }}\n >\n {src ? (\n <img src={src} alt={name ?? ''} className=\"w-full h-full object-cover\" />\n ) : initials ? (\n initials\n ) : (\n <svg width={px * 0.6} height={px * 0.6} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M12 12a4 4 0 100-8 4 4 0 000 8zm0 2c-3.5 0-8 1.8-8 5v1h16v-1c0-3.2-4.5-5-8-5z\"\n fill=\"currentColor\"\n opacity=\"0.4\"\n />\n </svg>\n )}\n </span>\n );\n};\n","import React from 'react';\nimport { Avatar } from '../_Avatar';\n\nexport interface UserPillProps {\n name: string;\n subtitle?: string;\n avatar?: string;\n className?: string;\n size?: 'small' | 'medium' | 'large';\n bgColor?: string;\n onClick?: () => void;\n}\n\nconst SIZE_MAP = {\n small: { avatar: 24, name: 12, subtitle: 10, padding: '4px 10px 4px 4px', gap: 6 },\n medium: { avatar: 30, name: 14, subtitle: 12, padding: '5px 12px 5px 5px', gap: 8 },\n large: { avatar: 36, name: 16, subtitle: 13, padding: '6px 14px 6px 6px', gap: 10 },\n};\n\nexport const UserPill: React.FC<UserPillProps> = ({\n name,\n subtitle,\n avatar,\n className = '',\n size = 'medium',\n bgColor = '#E6E6E6',\n onClick,\n}) => {\n const s = SIZE_MAP[size];\n const clickable = !!onClick;\n return (\n <div\n onClick={onClick}\n className={`inline-flex items-center rounded-full transition-colors ${\n clickable ? 'cursor-pointer hover:opacity-90' : ''\n } ${className}`}\n style={{ backgroundColor: bgColor, padding: s.padding, gap: s.gap }}\n >\n <Avatar src={avatar} name={name} size={s.avatar} bgColor=\"#6B7280\" textColor=\"#FFFFFF\" />\n <div className=\"flex flex-col min-w-0\">\n <span\n className=\"text-[#181918] truncate\"\n style={{ fontSize: s.name, lineHeight: 1.2, fontWeight: 600 }}\n >\n {name}\n </span>\n {subtitle && (\n <span\n className=\"text-[#181918] truncate\"\n style={{ fontSize: s.subtitle, lineHeight: 1.2, marginTop: 2 }}\n >\n {subtitle}\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport default UserPill;\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 '../_Avatar';\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 avatarBgColor?: string;\n avatarTextColor?: string;\n}\n\nexport const UserCard: React.FC<UserCardProps> = ({\n name,\n email,\n role,\n avatar,\n className = '',\n avatarBgColor = '#181918',\n avatarTextColor = '#FFFFFF',\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 px-4 ${className}`}\n >\n <img\n src={cardBorderSvg}\n alt=\"\"\n aria-hidden\n style={{ position: 'absolute', top: -8, left: 0, objectFit: 'cover' }}\n />\n <div className=\"flex gap-4 items-center relative\">\n <Avatar\n src={avatar}\n name={name}\n size={80}\n bgColor={avatarBgColor}\n textColor={avatarTextColor}\n />\n <div className=\"flex flex-col min-w-0\">\n <span\n className=\"text-[#181918]\"\n style={{ fontSize: 16, fontWeight: 600, lineHeight: 1.3 }}\n >\n {name}\n </span>\n <span\n className=\"text-[#181918]\"\n style={{ fontSize: 14, fontWeight: 400, lineHeight: 1.4, marginTop: 4 }}\n >\n {email}\n </span>\n {role && (\n <span\n className=\"text-[#181918]\"\n style={{ fontSize: 14, fontWeight: 400, lineHeight: 1.4, marginTop: 2 }}\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 { SelectInput } from '../Input/SelectInput';\nimport type { SelectInputProps } from '../Input/SelectInput';\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\n extends Omit<SelectInputProps, 'options' | 'value' | 'onChange'> {\n countries?: Country[];\n defaultCountry?: string;\n value?: string;\n onCountryChange?: (countryCode: string) => void;\n showSearch?: boolean;\n flagSize?: number;\n}\n\nconst DEFAULT_COUNTRIES: 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 = DEFAULT_COUNTRIES,\n defaultCountry = 'NG',\n value,\n onCountryChange,\n showSearch = false,\n flagSize = 24,\n ...props\n}) => {\n const options = countries.map((c) => ({\n value: c.code,\n label: (\n <span className=\"inline-flex items-center gap-2\">\n <img\n src={c.flag}\n alt=\"\"\n aria-hidden\n className=\"shrink-0 rounded-full object-cover\"\n style={{ width: flagSize, height: flagSize }}\n />\n <span>{c.code}</span>\n </span>\n ),\n searchLabel: `${c.name} ${c.code}`.toLowerCase(),\n }));\n\n return (\n <SelectInput\n {...props}\n value={value}\n defaultValue={value === undefined ? defaultCountry : undefined}\n options={options}\n showSearch={showSearch}\n filterOption={\n showSearch\n ? (input, opt: any) => opt?.searchLabel?.includes(input.toLowerCase()) ?? false\n : false\n }\n onChange={(v) => onCountryChange?.(v as string)}\n />\n );\n};\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Avatar } from '../_Avatar';\n\nexport interface UserProfileMenuItem {\n key: string;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n danger?: boolean;\n disabled?: boolean;\n divider?: boolean;\n type?: 'divider';\n onClick?: () => void;\n}\n\nexport interface UserProfileDropdownProps {\n name: string;\n role?: string;\n avatarUrl?: string;\n menuItems?: UserProfileMenuItem[];\n onMenuClick?: (key: string) => void;\n className?: string;\n width?: string | number;\n bgColor?: string;\n hoverBgColor?: string;\n}\n\nconst DEFAULT_MENU: UserProfileMenuItem[] = [\n { key: 'profile', label: 'My Profile' },\n { key: 'settings', label: 'Settings' },\n { key: '__div', type: 'divider' },\n { key: 'logout', label: 'Logout', danger: true },\n];\n\nexport const UserProfileDropdown: React.FC<UserProfileDropdownProps> = ({\n name,\n role,\n avatarUrl,\n menuItems = DEFAULT_MENU,\n onMenuClick,\n className = '',\n width,\n bgColor = '#EEEEEE',\n hoverBgColor = '#E5E5E5',\n}) => {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) setOpen(false);\n };\n if (open) document.addEventListener('mousedown', handleOutside);\n return () => document.removeEventListener('mousedown', handleOutside);\n }, [open]);\n\n const handleItemClick = (item: UserProfileMenuItem) => {\n if (item.disabled) return;\n item.onClick?.();\n onMenuClick?.(item.key);\n setOpen(false);\n };\n\n return (\n <div ref={wrapperRef} className={`relative inline-block ${className}`} style={{ width }}>\n <style>{`\n @keyframes shekel-profile-in { from { opacity: 0; transform: scaleY(0.9) translateY(-4px); } to { opacity: 1; transform: scaleY(1) translateY(0); } }\n .shekel-profile-menu { transform-origin: top right; animation: shekel-profile-in 180ms cubic-bezier(0.23, 1, 0.32, 1); }\n `}</style>\n <button\n type=\"button\"\n onClick={() => setOpen((o) => !o)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n className=\"flex items-center gap-2.5 rounded-full border border-[#E6E6E6] transition-colors\"\n style={{\n padding: '5px',\n backgroundColor: open ? hoverBgColor : bgColor,\n width: width ? '100%' : undefined,\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = hoverBgColor)}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = open ? hoverBgColor : bgColor)}\n >\n <Avatar\n src={avatarUrl}\n name={name}\n size={30}\n bgColor=\"#EC615B\"\n textColor=\"#FFFFFF\"\n style={{\n background: 'linear-gradient(135deg, #EC615B 0%, #F59E95 100%)',\n }}\n />\n <div className=\"flex flex-col min-w-0 text-left\">\n <span className=\"text-sm font-bold text-[#000] truncate leading-tight\">{name}</span>\n {role && <span className=\"text-xs text-[#666] truncate leading-tight\">{role}</span>}\n </div>\n <svg\n className={`ml-auto transition-transform duration-200 ${open ? 'rotate-180' : ''}`}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden\n >\n <path d=\"M6 9l6 6 6-6\" stroke=\"#000\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n\n {open && (\n <div\n role=\"menu\"\n className=\"shekel-profile-menu absolute right-0 top-full mt-2 z-50 bg-white rounded-lg overflow-hidden\"\n style={{\n minWidth: 180,\n maxWidth: 'calc(100vw - 16px)',\n boxShadow:\n '0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.12), 0 9px 28px 8px rgba(0,0,0,0.05)',\n padding: 4,\n }}\n >\n {menuItems.map((item) =>\n item.type === 'divider' || item.divider ? (\n <div key={item.key} className=\"h-px bg-[#F0F0F0] my-1\" />\n ) : (\n <button\n key={item.key}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleItemClick(item)}\n className={`flex items-center gap-2 w-full text-left px-3 py-2 text-sm rounded transition-colors ${\n item.disabled\n ? 'opacity-40 cursor-not-allowed'\n : 'hover:bg-[rgba(0,0,0,0.04)]'\n }`}\n style={{\n color: item.danger ? '#C21919' : '#181918',\n }}\n >\n {item.icon && <span className=\"shrink-0 flex items-center\">{item.icon}</span>}\n {item.label}\n </button>\n )\n )}\n </div>\n )}\n </div>\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 bottomLabel?: string;\n bottomValue?: string | number;\n showLedgerValuePrefix?: boolean;\n bottomIcon?: React.ReactNode | null;\n showCopyButton?: boolean;\n copyValue?: string;\n onCopy?: (value: string) => void;\n copyIconColor?: string;\n bottomTextColor?: string;\n valueFontSize?: number | string;\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 bottomLabel = 'Ledger Balance',\n bottomValue,\n showLedgerValuePrefix = true,\n bottomIcon,\n showCopyButton = false,\n copyValue,\n onCopy,\n copyIconColor,\n bottomTextColor,\n valueFontSize = 32,\n backgroundPattern = 'wave',\n backgroundImage,\n topRight,\n width = 348,\n className = '',\n}) => {\n const [isVisible, setIsVisible] = useState(true);\n const [copied, setCopied] = useState(false);\n\n const handleToggleVisibility = () => {\n setIsVisible(!isVisible);\n if (onVisibilityToggle) {\n onVisibilityToggle();\n }\n };\n\n const resolvedBottomValue = bottomValue ?? ledgerBalance;\n const hasBottomSection = resolvedBottomValue !== undefined && resolvedBottomValue !== null && resolvedBottomValue !== '';\n const formattedValueFontSize =\n typeof valueFontSize === 'number'\n ? `clamp(${Math.max(18, Math.round(valueFontSize * 0.7))}px, 6vw, ${valueFontSize}px)`\n : valueFontSize;\n\n const handleCopy = async () => {\n const textToCopy = copyValue ?? (resolvedBottomValue !== undefined ? String(resolvedBottomValue) : '');\n if (!textToCopy) return;\n try {\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(textToCopy);\n }\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n onCopy?.(textToCopy);\n } catch {\n onCopy?.(textToCopy);\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-3 sm:px-[18px] pt-3 transition-all duration-300 ease-in-out hover:-translate-y-1 cursor-pointer self-start ${hasBottomSection ? '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 maxWidth: '100%',\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 min-w-0\">\n <div className=\"flex items-center justify-between gap-2 mb-4\">\n <div className=\"w-9 h-9 sm:w-10 sm:h-10 bg-[#616161] rounded-full flex items-center justify-center text-white transition-transform duration-300 ease-in-out hover:scale-110 shrink-0\">\n {icon || defaultIcon}\n </div>\n {topRight && <div className=\"shrink-0\">{topRight}</div>}\n </div>\n <div className=\"flex items-center gap-2 mt-3 min-w-0\">\n <span className=\"text-xs sm:text-sm text-[#E6E6E6] font-light transition-colors duration-200 truncate\">\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={isVisible ? 'Hide value' : 'Show value'}\n >\n {isVisible ? (\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 ) : (\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=\"M6.59 6.59a2 2 0 102.82 2.82M7.15 3.38A8 8 0 018 3.33c3.4 0 5.63 3 6.39 4.19.09.14.13.22.16.33.02.08.02.21 0 .29-.02.11-.07.19-.16.33a11.57 11.57 0 01-1.33 1.7M4.41 4.41A11.6 11.6 0 001.61 7.53c-.09.14-.13.22-.16.33-.02.08-.02.21 0 .29.02.11.07.19.16.33.75 1.19 2.98 4.19 6.39 4.19 1.38 0 2.55-.5 3.49-1.15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M2 2l12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </button>\n )}\n </div>\n <div\n className=\"font-bold text-white transition-all duration-200 break-words leading-tight\"\n style={{ fontSize: formattedValueFontSize }}\n >\n {isVisible ? `${valuePrefix} ${value}` : '****'}\n </div>\n {hasBottomSection && (\n <div className=\"mt-1.5 mb-1\">\n <div className=\"w-full h-px bg-white/10 mb-1.5 transition-opacity duration-300\"></div>\n <div className=\"flex items-center justify-between gap-2 transition-all duration-200\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {bottomIcon === undefined ? (\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 ) : (\n bottomIcon\n )}\n <span\n className=\"text-xs font-light transition-all duration-200 truncate\"\n style={{ color: bottomTextColor ?? '#E6E6E6' }}\n >\n {isVisible\n ? showLedgerValuePrefix\n ? `${bottomLabel} ${valuePrefix} ${resolvedBottomValue}`\n : `${bottomLabel}${resolvedBottomValue !== undefined && resolvedBottomValue !== '' ? ` ${resolvedBottomValue}` : ''}`\n : '****'}\n </span>\n </div>\n {showCopyButton && (\n <button\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy'}\n className=\"bg-transparent border-none cursor-pointer p-0.5 flex items-center justify-center transition-colors duration-200 shrink-0 hover:opacity-80\"\n style={{ color: copyIconColor ?? '#EC615B' }}\n >\n {copied ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3.3335 8.33594L6.66683 11.6693L13.3335 4.33594\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"5.33594\" y=\"5.33594\" width=\"8.66667\" height=\"8.66667\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.3\" />\n <path d=\"M10.6693 5.33594V4.16927C10.6693 3.05036 10.6693 2.4909 10.4515 2.0633C10.2598 1.68723 9.95418 1.3816 9.57811 1.18987C9.15051 0.972097 8.59105 0.972097 7.47214 0.972097H4.16927C3.05036 0.972097 2.4909 0.972097 2.0633 1.18987C1.68723 1.3816 1.3816 1.68723 1.18987 2.0633C0.972097 2.4909 0.972097 3.05036 0.972097 4.16927V7.47214C0.972097 8.59105 0.972097 9.15051 1.18987 9.57811C1.3816 9.95418 1.68723 10.2598 2.0633 10.4515C2.4909 10.6693 3.05036 10.6693 4.16927 10.6693H5.33594\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" />\n </svg>\n )}\n </button>\n )}\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={{\n width: typeof width === 'number' ? `${width}px` : width,\n maxWidth: 'calc(100vw - 16px)',\n }}\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, { useState, useRef, useEffect, useLayoutEffect } from 'react';\n\nexport interface TabItem {\n key: string;\n label: React.ReactNode;\n children: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsComponentProps {\n items: TabItem[];\n defaultActiveKey?: string;\n activeKey?: string;\n onChange?: (activeKey: string) => void;\n className?: string;\n tabBarClassName?: string;\n contentClassName?: string;\n accentColor?: string;\n borderColor?: string;\n animated?: boolean;\n}\n\nexport const TabsComponent: React.FC<TabsComponentProps> = ({\n items,\n defaultActiveKey,\n activeKey: controlledKey,\n onChange,\n className = '',\n tabBarClassName = '',\n contentClassName = '',\n accentColor = '#EC615B',\n borderColor = '#E6E6E6',\n animated = true,\n}) => {\n const firstKey = items[0]?.key;\n const [innerKey, setInnerKey] = useState<string>(defaultActiveKey ?? firstKey ?? '');\n const active = controlledKey ?? innerKey;\n const prevActiveRef = useRef<string>(active);\n\n const tabBarRef = useRef<HTMLDivElement>(null);\n const tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n const [inkStyle, setInkStyle] = useState<{ left: number; width: number; ready: boolean }>({\n left: 0,\n width: 0,\n ready: false,\n });\n const [slideDir, setSlideDir] = useState<'right' | 'left' | null>(null);\n\n const measureInk = () => {\n const el = tabRefs.current[active];\n const bar = tabBarRef.current;\n if (!el || !bar) return;\n const barRect = bar.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n setInkStyle({\n left: elRect.left - barRect.left,\n width: elRect.width,\n ready: true,\n });\n };\n\n useLayoutEffect(() => {\n measureInk();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active, items.length]);\n\n useEffect(() => {\n const handleResize = () => measureInk();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active]);\n\n useEffect(() => {\n const prev = prevActiveRef.current;\n if (prev === active) return;\n const prevIdx = items.findIndex((i) => i.key === prev);\n const nextIdx = items.findIndex((i) => i.key === active);\n setSlideDir(nextIdx > prevIdx ? 'right' : 'left');\n prevActiveRef.current = active;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [active]);\n\n const handleSelect = (key: string, disabled?: boolean) => {\n if (disabled) return;\n if (controlledKey === undefined) setInnerKey(key);\n onChange?.(key);\n };\n\n const activeItem = items.find((i) => i.key === active);\n\n return (\n <div className={className}>\n <style>{`\n @keyframes shekel-tab-slide-in-right { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } }\n @keyframes shekel-tab-slide-in-left { from { opacity: 0; transform: translateX(-16px); } to { opacity: 1; transform: translateX(0); } }\n @keyframes shekel-tab-fade-in { from { opacity: 0; } to { opacity: 1; } }\n .shekel-tab-panel-right { animation: shekel-tab-slide-in-right 220ms cubic-bezier(0.23, 1, 0.32, 1); }\n .shekel-tab-panel-left { animation: shekel-tab-slide-in-left 220ms cubic-bezier(0.23, 1, 0.32, 1); }\n .shekel-tab-panel-fade { animation: shekel-tab-fade-in 220ms ease-out; }\n `}</style>\n <style>{`\n .shekel-tabs-bar::-webkit-scrollbar { display: none; }\n .shekel-tabs-bar { scrollbar-width: none; -ms-overflow-style: none; }\n `}</style>\n <div\n ref={tabBarRef}\n role=\"tablist\"\n className={`shekel-tabs-bar relative flex items-stretch gap-6 overflow-x-auto overflow-y-hidden flex-nowrap ${tabBarClassName}`}\n style={{ borderBottom: `1px solid ${borderColor}` }}\n >\n {items.map((item) => {\n const isActive = item.key === active;\n return (\n <button\n key={item.key}\n ref={(el) => {\n tabRefs.current[item.key] = el;\n }}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n disabled={item.disabled}\n onClick={() => handleSelect(item.key, item.disabled)}\n className=\"shrink-0 whitespace-nowrap relative text-sm font-medium transition-colors duration-200 bg-transparent outline-none\"\n style={{\n padding: '10px 0',\n color: item.disabled ? '#BFBFBF' : isActive ? accentColor : '#181918',\n cursor: item.disabled ? 'not-allowed' : 'pointer',\n }}\n onMouseEnter={(e) => {\n if (!item.disabled && !isActive) e.currentTarget.style.color = accentColor;\n }}\n onMouseLeave={(e) => {\n if (!item.disabled && !isActive) e.currentTarget.style.color = '#181918';\n }}\n >\n {item.label}\n </button>\n );\n })}\n <span\n aria-hidden\n className=\"absolute bottom-0\"\n style={{\n left: 0,\n transform: `translateX(${inkStyle.left}px)`,\n width: inkStyle.width,\n height: 2,\n backgroundColor: accentColor,\n borderRadius: 2,\n transition: inkStyle.ready && animated\n ? 'transform 280ms cubic-bezier(0.645, 0.045, 0.355, 1), width 280ms cubic-bezier(0.645, 0.045, 0.355, 1)'\n : 'none',\n opacity: inkStyle.ready ? 1 : 0,\n }}\n />\n </div>\n <div\n role=\"tabpanel\"\n key={active}\n className={`pt-4 ${\n animated\n ? slideDir === 'right'\n ? 'shekel-tab-panel-right'\n : slideDir === 'left'\n ? 'shekel-tab-panel-left'\n : 'shekel-tab-panel-fade'\n : ''\n } ${contentClassName}`}\n >\n {activeItem?.children}\n </div>\n </div>\n );\n};\n","import React, { createContext, useContext, useMemo } from 'react';\n\nexport interface ShekelTheme {\n accentColor: string;\n errorColor: string;\n warningColor: string;\n borderColor: string;\n filledBorderColor: string;\n textColor: string;\n mutedTextColor: string;\n fontFamily: string;\n borderRadius: number;\n}\n\nexport const defaultTheme: ShekelTheme = {\n accentColor: '#EC615B',\n errorColor: '#C21919',\n warningColor: '#FAAD14',\n borderColor: '#D9D9D9',\n filledBorderColor: '#181918',\n textColor: '#181918',\n mutedTextColor: '#8C8C8C',\n fontFamily: \"'Plus Jakarta Sans', sans-serif\",\n borderRadius: 8,\n};\n\n/** Kept for backwards compatibility — prefer the `accentColor`/`errorColor` props on individual components. */\nexport const shekelTheme = defaultTheme;\n\nconst ThemeContext = createContext<ShekelTheme>(defaultTheme);\n\nexport const useShekelTheme = () => useContext(ThemeContext);\n\nexport type ShekelProviderProps = {\n children: React.ReactNode;\n /** Partial overrides merged into defaults. */\n theme?: Partial<ShekelTheme>;\n};\n\n/**\n * Wraps your app to set the Shekel design tokens as CSS variables + context.\n * You no longer need antd's ConfigProvider — every Shekel component reads its\n * accent/error colors from its own props (which now fall back to these tokens).\n */\nexport const ShekelProvider: React.FC<ShekelProviderProps> = ({ children, theme }) => {\n const merged = useMemo<ShekelTheme>(() => ({ ...defaultTheme, ...theme }), [theme]);\n const cssVars = useMemo<React.CSSProperties>(\n () => ({\n ['--shekel-accent' as any]: merged.accentColor,\n ['--shekel-error' as any]: merged.errorColor,\n ['--shekel-warning' as any]: merged.warningColor,\n ['--shekel-border' as any]: merged.borderColor,\n ['--shekel-filled-border' as any]: merged.filledBorderColor,\n ['--shekel-text' as any]: merged.textColor,\n ['--shekel-muted' as any]: merged.mutedTextColor,\n fontFamily: merged.fontFamily,\n }),\n [merged]\n );\n\n return (\n <ThemeContext.Provider value={merged}>\n <div style={cssVars}>{children}</div>\n </ThemeContext.Provider>\n );\n};\n"],"names":["SIZE_HEIGHT","SIZE_FONT","SIZE_PADDING","SIZE_GAP","ROUNDED_MAP","SHEKEL_RED","SHEKEL_RED_HOVER","SHEKEL_RED_DISABLED","palette","danger","accent","accentHover","accentDisabled","ring","Spinner","size","jsxs","jsx","Button","React","variant","shape","rounded","htmlType","block","loading","loadingText","icon","iconPosition","ripple","hoverLift","pressScale","disabled","className","style","children","bgColor","textColor","borderColor","hoverBgColor","hoverTextColor","hoverBorderColor","disabledBgColor","disabledTextColor","focusRingColor","props","ref","hovered","setHovered","useState","pressed","setPressed","focusVisible","setFocusVisible","ripples","setRipples","btnRef","useRef","v","height","fontSize","gap","isIconOnly","iconBoxPadding","resolvedRadius","isDisabled","iconSize","finalBg","finalBorder","finalColor","handleMouseDown","e","rect","x","y","id","r","p","_a","handleMouseUp","handleMouseEnter","handleMouseLeave","transformParts","finalTransform","boxShadow","Fragment","el","target","_b","StatCard","label","value","iconBackgroundColor","iconColor","valuePrefix","progressText","badge","width","selected","onClick","detailed","minHeight","sizeClass","roundedClass","defaultIcon","variantClasses","activeShadow","SearchInput","fullWidth","onIconClick","focusBorderColor","placeholderColor","containerBaseClasses","inputBaseClasses","sizeClasses","iconSizeClasses","roundedClasses","paddingWithIcon","widthClass","customStyles","placeholderClass","defaultBorderClass","defaultTextClass","defaultFocusClass","inputClassName","iconPositionClasses","defaultIconColor","hoverIconColor","defaultSearchIcon","SHADOWS","Card","title","extra","cover","bordered","shadow","hoverable","bodyClassName","bodyStyle","headerClassName","headerStyle","rest","shadowValue","Dropdown","items","trigger","placement","overlayClassName","menuBgColor","menuItemHoverColor","dangerColor","isOpen","setIsOpen","dropdownRef","useEffect","handleClickOutside","event","handleTriggerClick","handleTriggerMouseEnter","handleTriggerMouseLeave","handleMenuItemClick","item","placementClasses","animationClasses","itemSizeClasses","defaultHoverColor","defaultBorderColor","defaultDangerColor","hoverColorStyle","customHoverClass","customDangerStyle","dangerHoverBgStyle","finalBorderColor","itemStyle","SelectBase","options","controlledValue","defaultValue","placeholder","onChange","onBlur","name","allowClear","showSearch","searchPlaceholder","selectedBgColor","selectedTextColor","error","helperText","internalValue","setInternalValue","searchQuery","setSearchQuery","selectRef","searchInputRef","handleSelect","optionValue","handleClear","selectedOption","opt","filteredOptions","option","getTriggerStyles","styles","getSelectedOptionStyles","ChevronIcon","ClearIcon","ControlledSelect","control","errorProp","field","fieldState","useController","Select","Table","columns","dataSource","rowKey","pagination","onRow","striped","headerBgColor","headerTextColor","rowHoverColor","stripedRowColor","currentPage","setCurrentPage","pageSize","setPageSize","sizeConfig","currentSizeConfig","currentRoundedClass","getRowKey","record","index","getValue","dataIndex","obj","key","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","description","onSearch","actions","filters","titleColor","descriptionColor","searchBgColor","searchBorderColor","searchFocusBorderColor","hideActionButtons","selectedActionButton","handleSearchChange","config","radiusClass","searchInputStyle","SIZE_WIDTHS","FOCUSABLE_SELECTOR","CloseIcon","color","DefaultButton","Modal","open","onClose","footer","okText","cancelText","onOk","onCancel","confirmLoading","okDanger","okDisabled","hideCancel","maxHeight","centered","edgeOffset","motion","backdrop","closeIcon","submitOnEnter","bare","noPadding","closable","maskClosable","closeOnEsc","destroyOnClose","lockScroll","overlayColor","borderRadius","animationDuration","zIndex","footerClassName","footerStyle","ariaLabel","ariaLabelledBy","afterOpen","afterClose","getContainer","mounted","setMounted","entered","setEntered","internalConfirmLoading","setInternalConfirmLoading","overlayRef","contentRef","titleId","prevActiveEl","requestClose","useCallback","raf2","raf1","t","body","prevOverflow","prevPaddingRight","scrollbarWidth","handleKeyDown","focusables","first","last","active","handleMaskClick","handleOk","maybe","resolvedPlacement","placementAlignment","justify","align","resolvedMotion","motionTransforms","motionKey","closedTransform","openTransform","resolvedEdgeOffset","resolvedBackdrop","resolvedWidth","resolvedMaxHeight","resolvedFooter","labelId","container","modalNode","createPortal","Badge","dot","dotSizeClasses","dotColorClasses","CheckIcon","strokeWidth","XIcon","Steps","direction","activeColor","inactiveColor","errorColor","activeTextColor","showConnector","connectorColor","iconSizeProp","checkSizeProp","borderWidthProp","checkStrokeWidthProp","onStepClick","checkSize","iconBorderWidth","checkStrokeWidth","titleSize","descriptionSize","resolvedGap","getStatus","colorForStatus","status","renderIcon","custom","isVertical","renderStep","circleColor","isLast","clickable","Progress","percent","showInfo","strokeColor","format","successColor","exceptionColor","trackColor","clampedPercent","heightClasses","textSizeClasses","getStatusColor","getTrackColor","getStatusIcon","formatPercent","SIZE","Checkbox","controlledChecked","defaultChecked","indeterminate","labelClassName","labelStyle","labelPosition","accentColor","boxBgColor","boxRadius","required","autoFocus","tabIndex","internalChecked","setInternalChecked","isControlled","checked","reactId","inputId","handleChange","dims","boxRad","isFilled","activeBg","activeBorder","boxStyle","box","labelEl","getSizeClasses","getRoundedClasses","SelectedItemsList","onRemove","emptyMessage","itemClassName","sublabelColor","removeButtonColor","removeButtonHoverColor","defaultBgColor","defaultHoverBgColor","defaultTextColor","defaultSublabelColor","defaultRemoveButtonColor","defaultRemoveButtonHoverColor","finalBgColor","finalHoverBgColor","finalTextColor","finalSublabelColor","finalRemoveButtonColor","finalRemoveButtonHoverColor","hexWithAlpha","hex","alpha","h","full","c","g","b","ErrorIcon","sharedHexWithAlpha","InputBase","labelExtra","requiredMark","prefix","suffix","addonBefore","addonAfter","wrapperClassName","wrapperStyle","onClear","readOnly","filledBorderColor","addonBackgroundColor","innerValue","setInnerValue","displayValue","isError","isWarning","resolvedRequiredMark","synthetic","hasValue","resolvedBorder","focusShadow","themeVars","borderBase","shadowBase","disabledClasses","addonClasses","addonStyle","showClear","ControlledInput","Input","EyeIcon","visible","PasswordInputBase","visibilityToggle","setVisible","toggle","errColor","ControlledPasswordInput","PasswordInput","OTPInputBase","length","onComplete","errorMessage","boxClassName","showSeparator","boxWidth","boxHeight","otp","setOtp","inputRefs","otpArray","filledOtp","val","newOtp","otpString","digit","_c","handlePaste","pastedData","pastedArray","nextIndex","resolvedBoxBorder","filled","boxBaseClass","ControlledOTPInput","errorMessageProp","hasError","OTPInput","CountryCodeSelect","setOpen","activeIndex","setActiveIndex","wrapperRef","o","triggerStyle","hasAnyFlag","triggerWidth","isSelected","isActive","PhoneInputBase","countryCode","defaultCountryCode","onCountryCodeChange","countryCodes","showCountryCodeDropdown","customFormat","onKeyDown","onPaste","setDisplayValue","innerRef","isCodeControlled","innerCode","setInnerCode","activeCode","handleCodeChange","next","cleaned","formatPhoneNumber","input","cursorPosition","formatted","oldLength","diff","newCursor","pasted","start","newCleaned","ControlledPhoneInput","PhoneInput","formatNumber","num","parts","integerPart","decimalPart","formattedInteger","unformatNumber","CurrencyInputBase","currencySymbol","formatAmount","externalValue","currencyPillBgColor","currencyPillColor","hideCurrencyPill","stringValue","inputValue","rawValue","borderClass","ControlledCurrencyInput","CurrencyInput","defaultFilter","prop","search","labelStr","valueStr","Chevron","SelectInputBase","optionFilterProp","filterOption","mode","popupClassName","popupStyle","onFocus","onDropdownVisibleChange","notFoundContent","optionRender","suffixIcon","prefixIcon","optionHoverColor","tagBgColor","tagBorderColor","resolvedSelectedBg","resolvedSelectedText","selectId","triggerRef","panelRef","panelPos","setPanelPos","updatePanelPos","panelH","spaceBelow","spaceAbove","top","inlineInputRef","resolvedHeight","filterFn","useMemo","useLayoutEffect","isMultiple","selectedValues","selectedOptions","openPanel","closePanel","insideWrapper","insidePanel","firstSelectedIndex","commitChange","nextOptions","handleRemoveTag","openShadow","showClearBtn","ControlledSelectInput","SelectInput","MONTH_NAMES","DAY_NAMES_SUN","DAY_NAMES_MON","toDate","d","pad","n","len","formatDate","date","M","D","isSameDay","a","startOfDay","CalendarIcon","ChevronLeft","ChevronRight","DoubleChevronLeft","DoubleChevronRight","ClearX","DatePickerBase","minDate","maxDate","disabledDate","showToday","firstDayOfWeek","onOpenChange","resolvedValue","viewDate","setViewDate","setMode","panelWidth","vw","vh","left","panelHeight","handler","min","max","isDisabledDate","day","commit","handleToggle","handleDayClick","today","dayNames","calendarGrid","year","month","firstDay","shift","daysInMonth","prevMonthDays","cells","lastDate","goMonth","delta","goYear","goDecade","decadeStart","yearCells","isDisabledMonth","isDisabledYear","displayText","outside","isToday","disabledDay","m","mi","isCurrent","monthDisabled","yearDisabled","ControlledDatePicker","dateString","DatePicker","isBetween","s","Arrow","dir","double","single","dbl","CalendarPane","from","to","hoverDate","onHoverDate","onDayClick","showLeftArrows","showRightArrows","onShiftMonth","onShiftYear","rangeBgColor","rangeTextColor","activeRangeEnd","rangeLo","rangeHi","isFrom","isTo","inRange","isEdgeLo","isEdgeHi","DateRangePickerBase","separator","singlePanel","presets","resolvedRangeBg","resolvedRangeText","isNarrow","setIsNarrow","effectiveSinglePanel","resolved","activeSlot","setActiveSlot","setHoverDate","f","slot","fromText","toText","defaultSeparator","preset","ControlledDateRangePicker","range","strRange","DateRangePicker","escapeRegex","buildFormat","raw","opts","decimals","allowDecimals","thousandSep","decimalSep","formattedInt","toRawNumber","display","noThousand","padDecimals","intPart","decPart","AmountInputBase","enforceDecimals","thousandSeparator","decimalSeparator","inputMode","formatOpts","rawOpts","padded","setRef","cursor","before","rawIn","intP","intOnly","decOnly","handleBlur","ControlledAmountInput","AmountInput","formatBytes","bytes","k","sizes","getFileExt","isImage","file","type","makeId","DownloadArrowIcon","FileIcon","ext","TrashIcon","FileUploadBase","onPreview","showPreviewAction","previewActionText","previewButtonVariant","showRemove","accept","multiple","maxSize","maxFiles","fileTypesLabel","uploadText","browseText","hintText","dropZoneIcon","onUpload","showPreview","previewLayout","keepInputOnUpload","showCount","dropzoneClassName","dropzoneStyle","dropzoneBgColor","inputRef","innerFiles","setInnerFiles","files","isDragging","setIsDragging","dropError","setDropError","resolvedHint","updateFile","patch","prev","validate","accepted","addFiles","newFiles","validationErrors","err","thumbnailUrl","uploaded","result","pct","handleFileInput","handleDrop","dt","handleRemove","anyUploading","doneCount","totalCount","isBusy","zoneDisabled","dropzoneBorder","dropzoneBg","busyText","shouldHideDropzone","GridPreviewItem","ListPreviewItem","defaultPreview","url","isImg","isUploading","isErr","handlePreview","canPreview","ControlledFileUpload","FileUpload","RadioIcon","borderWidth","RadioCardGroupBase","layout","equalWidth","cardHeight","radioSize","cardClassName","cardStyle","selectedBorderColor","selectedGlowColor","cardBgColor","selectedCardBgColor","radioBorderWidth","radioBorderColor","cardBorderWidth","cardBorderRadius","cardShadow","selectedCardShadow","titleWeight","descriptionWeight","titleLineHeight","descriptionLineHeight","groupId","resolvedSelectedBorder","resolvedGlow","containerStyle","optDisabled","ControlledRadioCardGroup","RadioCardGroup","SIZE_MAP","ToggleBase","externalChecked","tw","th","ks","onColor","offColor","knobColor","loadingColor","checkedIcon","uncheckedIcon","innerChecked","setInnerChecked","dtw","dth","dks","trackWidth","trackHeight","knobSize","padding","knobOffset","trackBg","toggleEl","ControlledToggle","Toggle","initialsFromName","Avatar","src","px","initials","shapeClass","UserPill","subtitle","avatar","cardBorderSvg","UserCard","email","role","avatarBgColor","avatarTextColor","flagNG","flagUS","flagGB","flagGH","flagKE","flagZA","DEFAULT_COUNTRIES","CountrySelector","countries","defaultCountry","onCountryChange","flagSize","DEFAULT_MENU","UserProfileDropdown","avatarUrl","menuItems","onMenuClick","handleOutside","handleItemClick","ActionCard","currentColor","cardPatternSvg","DashboardCard","showVisibilityToggle","onVisibilityToggle","ledgerBalance","bottomLabel","bottomValue","showLedgerValuePrefix","bottomIcon","showCopyButton","copyValue","onCopy","copyIconColor","bottomTextColor","valueFontSize","backgroundPattern","backgroundImage","topRight","isVisible","setIsVisible","copied","setCopied","handleToggleVisibility","resolvedBottomValue","hasBottomSection","formattedValueFontSize","handleCopy","textToCopy","emptyNotificationSvg","NotificationDropdown","count","notifications","onViewMore","notification","TabsComponent","defaultActiveKey","controlledKey","tabBarClassName","contentClassName","animated","firstKey","innerKey","setInnerKey","prevActiveRef","tabBarRef","tabRefs","inkStyle","setInkStyle","slideDir","setSlideDir","measureInk","bar","barRect","elRect","handleResize","prevIdx","nextIdx","activeItem","defaultTheme","shekelTheme","ThemeContext","createContext","ShekelProvider","theme","merged","cssVars"],"mappings":"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"}