shekel-fe-shared-lib 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +24 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1256 -1190
- package/dist/index.mjs.map +1 -1
- package/dist/shekel-fe-shared-lib.css +1 -1
- package/dist/types/components/NotificationDropdown/NotificationDropdown.d.ts +55 -1
- package/dist/types/components/StatCard/StatCard.d.ts +18 -0
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","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","isSelected","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","isActive","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","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","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","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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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","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 /**\n * Render the icon slot in detailed mode. Defaults to true.\n * When false, the icon (and its row, if no badge is present) is omitted entirely\n * so the label/value sit flush with the card padding.\n */\n showIcon?: boolean;\n valuePrefix?: string;\n progressText?: string | React.ReactNode;\n badge?: string | React.ReactNode;\n width?: string | number;\n className?: string;\n /** Extra classes appended to the label element. Overrides defaults via cascade. */\n labelClassName?: string;\n /** Extra classes appended to the value element. Overrides defaults via cascade. */\n valueClassName?: string;\n /** Extra classes appended to the progress-text element (detailed mode). */\n progressTextClassName?: string;\n /** Inline style merged onto the label element. */\n labelStyle?: React.CSSProperties;\n /** Inline style merged onto the value element. */\n valueStyle?: React.CSSProperties;\n /** Inline style merged onto the progress-text element (detailed mode). */\n progressTextStyle?: React.CSSProperties;\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 showIcon = true,\n valuePrefix = '₦',\n progressText,\n badge,\n width = 200,\n className = '',\n labelClassName = '',\n valueClassName = '',\n progressTextClassName = '',\n labelStyle,\n valueStyle,\n progressTextStyle,\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 {(showIcon || badge) && (\n <div\n className={`flex items-center mb-6 ${\n showIcon ? 'justify-between' : 'justify-end'\n }`}\n >\n {showIcon && (\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 )}\n {badge && badge}\n </div>\n )}\n <div\n className={`text-sm text-[#181918] font-light transition-colors duration-200 ${labelClassName}`}\n style={labelStyle}\n >\n {label}\n </div>\n <div\n className={`text-[20px] font-bold text-[#181918] transition-all duration-200 ${valueClassName}`}\n style={valueStyle}\n >\n {valuePrefix} {value}\n </div>\n </div>\n {progressText && (\n <div\n className={`text-xs text-gray-400 font-normal mt-4 transition-colors duration-200 ${progressTextClassName}`}\n style={progressTextStyle}\n >\n {progressText}\n </div>\n )}\n </>\n ) : (\n <div className=\"mt-auto flex flex-col\">\n <div\n className={`text-lg sm:text-xl text-[#181918] font-normal transition-colors duration-200 truncate ${labelClassName}`}\n style={labelStyle}\n >\n {label}\n </div>\n <div\n className={`text-2xl sm:text-3xl font-bold text-[#181918] transition-all duration-200 break-words leading-tight ${valueClassName}`}\n style={valueStyle}\n >\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 /** Extra classes appended to this item's row (cascades over defaults). */\n className?: string;\n}\n\nexport interface NotificationDropdownProps {\n /** Header label. Defaults to \"Issues\". */\n title?: string;\n count?: number;\n notifications: NotificationItem[];\n onViewMore?: () => void;\n /** Outer container classes. */\n className?: string;\n maxHeight?: string | number;\n width?: string | number;\n /**\n * Enable fluid mobile behaviour. Below the `sm` breakpoint (640px) the panel\n * stretches to the available width (capped by `maxWidth`); from `sm` upwards\n * it snaps to the configured `width`. Defaults to `false` for backwards\n * compatibility.\n */\n responsive?: boolean;\n /**\n * Cap on the panel width. Honoured both in fixed and responsive modes.\n * Defaults to `calc(100vw - 16px)` so the panel never crosses the viewport.\n */\n maxWidth?: string | number;\n\n // ── Header ────────────────────────────────────────────────────────────────\n /** Label of the \"View More\" action. Defaults to \"View More\". */\n viewMoreLabel?: string;\n /** Hide the header strip entirely. */\n showHeader?: boolean;\n /** Extra classes for the header strip. */\n headerClassName?: string;\n /** Extra classes for the title text. */\n titleClassName?: string;\n /** Extra classes for the count badge. */\n countBadgeClassName?: string;\n /** Extra classes for the View More button. */\n viewMoreClassName?: string;\n\n // ── Empty state ───────────────────────────────────────────────────────────\n emptyTitle?: string;\n emptyDescription?: string;\n /** Override the empty-state illustration. Pass `null` to hide it. */\n emptyIcon?: React.ReactNode | null;\n /** Extra classes for the empty-state wrapper. */\n emptyClassName?: string;\n /** Extra classes for the empty-state title. */\n emptyTitleClassName?: string;\n /** Extra classes for the empty-state description. */\n emptyDescriptionClassName?: string;\n\n // ── List items ────────────────────────────────────────────────────────────\n /** Fallback icon bg color when an item doesn't supply its own. */\n defaultIconBackgroundColor?: string;\n /** Fallback icon color when an item doesn't supply its own. */\n defaultIconColor?: string;\n /** Classes appended to every item row. */\n itemClassName?: string;\n /** Classes appended to each item's title text. */\n itemTitleClassName?: string;\n /** Classes appended to each item's description text. */\n itemDescriptionClassName?: string;\n /** Classes appended to each item's timestamp text. */\n itemTimestampClassName?: string;\n /** Classes appended to the \"New\" badge on `isNew` items. */\n newBadgeClassName?: string;\n /** Label for the \"New\" badge. Defaults to \"New\". */\n newBadgeLabel?: string;\n}\n\nexport const NotificationDropdown: React.FC<NotificationDropdownProps> = ({\n title = 'Issues',\n count,\n notifications,\n onViewMore,\n className = '',\n width = 380,\n maxHeight = 400,\n responsive = false,\n maxWidth,\n viewMoreLabel = 'View More',\n showHeader = true,\n headerClassName = '',\n titleClassName = '',\n countBadgeClassName = '',\n viewMoreClassName = '',\n emptyTitle = 'No issues available',\n emptyDescription = 'All recent activities will appear here',\n emptyIcon,\n emptyClassName = '',\n emptyTitleClassName = '',\n emptyDescriptionClassName = '',\n defaultIconBackgroundColor = '#FCE7E6',\n defaultIconColor = '#EC615B',\n itemClassName = '',\n itemTitleClassName = '',\n itemDescriptionClassName = '',\n itemTimestampClassName = '',\n newBadgeClassName = '',\n newBadgeLabel = 'New',\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 const resolvedEmptyIcon =\n emptyIcon === undefined ? (\n <img src={emptyNotificationSvg} alt=\"No notifications\" className=\"w-16 h-16 mb-4\" />\n ) : (\n emptyIcon\n );\n\n const widthValue = typeof width === 'number' ? `${width}px` : width;\n const maxWidthValue =\n maxWidth === undefined\n ? 'calc(100vw - 16px)'\n : typeof maxWidth === 'number'\n ? `${maxWidth}px`\n : maxWidth;\n\n const containerClasses = responsive\n ? `bg-white rounded-2xl shadow-lg border border-gray-100 overflow-hidden w-full sm:w-[var(--ndd-width)] ${className}`\n : `bg-white rounded-2xl shadow-lg border border-gray-100 overflow-hidden ${className}`;\n\n const containerStyle: React.CSSProperties = responsive\n ? ({ ['--ndd-width' as any]: widthValue, maxWidth: maxWidthValue } as React.CSSProperties)\n : { width: widthValue, maxWidth: maxWidthValue };\n\n return (\n <div className={containerClasses} style={containerStyle}>\n {showHeader && (\n <div\n className={`flex items-center justify-between gap-2 px-3 sm:px-4 py-2.5 sm:py-3 bg-gray-50 ${headerClassName}`}\n >\n <div className=\"flex items-center gap-2\">\n <span className={`text-sm font-medium text-[#181918] ${titleClassName}`}>{title}</span>\n {count !== undefined && (\n <span\n 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 ${countBadgeClassName}`}\n >\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 ${viewMoreClassName}`}\n >\n {viewMoreLabel}\n </button>\n )}\n </div>\n )}\n\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 ${emptyClassName}`}>\n {resolvedEmptyIcon}\n <h4 className={`text-sm font-medium text-[#181918] mb-1 ${emptyTitleClassName}`}>\n {emptyTitle}\n </h4>\n <p className={`text-xs text-gray-500 font-light ${emptyDescriptionClassName}`}>\n {emptyDescription}\n </p>\n </div>\n ) : (\n notifications.map((notification) => (\n <div\n key={notification.id}\n onClick={notification.onClick}\n className={`flex gap-2 sm:gap-3 px-3 sm:px-4 py-2.5 sm:py-3 border-b border-[#E6E6E6] hover:bg-[#FDEFEF] transition-colors duration-200 cursor-pointer ${itemClassName} ${notification.className ?? ''}`}\n >\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 || defaultIconBackgroundColor,\n color: notification.iconColor || defaultIconColor,\n }}\n >\n {notification.icon || defaultIcon}\n </div>\n\n <div className=\"flex-1 min-w-0\">\n <h4 className={`text-sm font-medium text-[#181918] mb-1 ${itemTitleClassName}`}>\n {notification.title}\n </h4>\n <p className={`text-xs text-[#181918] font-light line-clamp-2 ${itemDescriptionClassName}`}>\n {notification.description}\n </p>\n </div>\n\n <div className=\"flex-shrink-0\">\n {notification.isNew ? (\n <span className={`text-[#EC615B] text-xs font-medium px-2 py-1 rounded ${newBadgeClassName}`}>\n {newBadgeLabel}\n </span>\n ) : (\n <span className={`text-xs text-gray-400 ${itemTimestampClassName}`}>\n {notification.timestamp}\n </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","showIcon","valuePrefix","progressText","badge","width","labelClassName","valueClassName","progressTextClassName","labelStyle","valueStyle","progressTextStyle","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","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","isSelected","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","isActive","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","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","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","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","responsive","maxWidth","viewMoreLabel","showHeader","titleClassName","countBadgeClassName","viewMoreClassName","emptyTitle","emptyDescription","emptyIcon","emptyClassName","emptyTitleClassName","emptyDescriptionClassName","defaultIconBackgroundColor","itemTitleClassName","itemDescriptionClassName","itemTimestampClassName","newBadgeClassName","newBadgeLabel","resolvedEmptyIcon","widthValue","maxWidthValue","containerClasses","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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"}
|