@khraben/flowui 1.0.2 → 1.0.4
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/LICENSE +21 -0
- package/dist/README.md +758 -0
- package/{index.js → dist/index.js} +311 -2858
- package/dist/index.js.map +1 -0
- package/{index.mjs → dist/index.mjs} +311 -2858
- package/dist/index.mjs.map +1 -0
- package/dist/package.json +41 -0
- package/package.json +59 -23
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
- /package/{index.d.mts → dist/index.d.mts} +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/types/colors.ts","../src/app/utils/colorUtils.ts","../src/app/components/Button/Button.tsx","../src/app/components/Input/Input.tsx","../src/app/components/DatePicker/DatePicker.tsx","../src/app/components/LanguageSelector/flags/FlagEN.tsx","../src/app/components/LanguageSelector/flags/FlagES.tsx","../src/app/components/LanguageSelector/flags/FlagDE.tsx","../src/app/components/LanguageSelector/flags/FlagFR.tsx","../src/app/components/LanguageSelector/flags/FlagIT.tsx","../src/app/components/LanguageSelector/flags/FlagJA.tsx","../src/app/components/LanguageSelector/flags/FlagPT.tsx","../src/app/components/LanguageSelector/flags/FlagRU.tsx","../src/app/components/LanguageSelector/flags/FlagZH.tsx","../src/app/constants/components/languageselector/languages.constants.ts","../src/app/constants/components/table/styles.constants.ts","../src/app/constants/components/modal/styles.constants.ts","../src/app/constants/components/gallery/styles.constants.ts","../src/app/components/LanguageSelector/LanguageSelector.tsx","../src/app/components/ThemeSelector/icons/ThemeIcon.tsx","../src/app/components/ThemeSelector/ThemeSelector.tsx","../src/app/constants/components/actionicon/styles.constants.ts","../src/app/components/ActionIcon/ActionIcon.tsx","../src/app/components/Loader/Loader.tsx","../src/app/components/Table/Table.tsx","../src/app/components/BaseModal/BaseModal.tsx","../src/app/components/ConfirmationModal/ConfirmationModal.tsx","../src/app/components/SideBar/SideBar.tsx","../src/app/components/NavBar/NavBar.tsx","../src/app/components/Gallery/ImagePlaceholder.tsx","../src/app/components/Gallery/Gallery.tsx"],"names":["forwardRef","useMemo","jsxs","Fragment","jsx","useState","value","useId","getLabelStyles","locale","Calendar","X","enUS","useEffect","registerLocale","ReactDatePicker","createPortal","getButtonSizeStyles","getButtonBaseStyles","React","useRef","useCallback","getIconSizeStyles","getIconStyles","CheckCircle","usePathname","useRouter","getContainerStyles","getContentStyles","Menu","getOverlayStyles","motion"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Base color configuration required for all components\n */\nexport interface BaseColorConfig {\n primary: string;\n secondary: string;\n accent: string;\n}\n\n/**\n * Extended color configuration with status colors\n * Use this for components that need warning, success, or danger states\n */\nexport interface ExtendedColorConfig extends BaseColorConfig {\n warning: string;\n success: string;\n danger: string;\n}\n\n/**\n * Type guard to check if color config has extended colors\n */\nexport function hasExtendedColors(\n config: BaseColorConfig | ExtendedColorConfig,\n): config is ExtendedColorConfig {\n return 'warning' in config && 'success' in config && 'danger' in config;\n}\n\n/**\n * Default color configuration\n */\nexport const DEFAULT_COLOR_CONFIG: ExtendedColorConfig = {\n primary: '#3B82F6', // Blue-500\n secondary: '#8B5CF6', // Violet-500\n accent: '#EC4899', // Pink-500\n warning: '#F59E0B', // Amber-500\n success: '#10B981', // Emerald-500\n danger: '#EF4444', // Red-500\n};\n","/**\n * Color utility functions for dynamic color manipulation\n */\n\n/**\n * Converts hex color to RGB values\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\n/**\n * Converts RGB values to hex color\n */\nfunction rgbToHex(r: number, g: number, b: number): string {\n return (\n '#' +\n [r, g, b]\n .map((x) => {\n const hex = Math.round(Math.max(0, Math.min(255, x))).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n })\n .join('')\n );\n}\n\n/**\n * Calculates relative luminance of a color\n * Used to determine if a color is light or dark\n */\nfunction getLuminance(hex: string): number {\n const rgb = hexToRgb(hex);\n if (!rgb) return 0;\n\n const [r, g, b] = [rgb.r, rgb.g, rgb.b].map((val) => {\n const channel = val / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n });\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Determines if a color is dark based on its luminance\n */\nexport function isDarkColor(hex: string): boolean {\n return getLuminance(hex) < 0.5;\n}\n\n/**\n * Darkens a color by a given percentage\n * @param hex - Hex color string (e.g., '#FF5733')\n * @param percent - Percentage to darken (0-100)\n */\nexport function darkenColor(hex: string, percent: number = 10): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n const factor = 1 - percent / 100;\n return rgbToHex(rgb.r * factor, rgb.g * factor, rgb.b * factor);\n}\n\n/**\n * Lightens a color by a given percentage\n * @param hex - Hex color string (e.g., '#FF5733')\n * @param percent - Percentage to lighten (0-100)\n */\nexport function lightenColor(hex: string, percent: number = 10): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n const factor = percent / 100;\n return rgbToHex(\n rgb.r + (255 - rgb.r) * factor,\n rgb.g + (255 - rgb.g) * factor,\n rgb.b + (255 - rgb.b) * factor,\n );\n}\n\n/**\n * Automatically calculates the hover color for a given base color\n * Darkens light colors and lightens dark colors\n * @param hex - Hex color string\n * @param intensity - Intensity of the effect (default: 10)\n */\nexport function getHoverColor(hex: string, intensity: number = 10): string {\n return isDarkColor(hex) ? lightenColor(hex, intensity) : darkenColor(hex, intensity);\n}\n\n/**\n * Gets a contrast color (black or white) for text based on background color\n */\nexport function getContrastColor(hex: string): string {\n return isDarkColor(hex) ? '#FFFFFF' : '#000000';\n}\n\n/**\n * Adjusts color opacity\n * @param hex - Hex color string\n * @param opacity - Opacity value (0-1)\n */\nexport function adjustOpacity(hex: string, opacity: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${Math.max(0, Math.min(1, opacity))})`;\n}\n","import { forwardRef, useMemo, CSSProperties } from 'react';\nimport { ButtonProps } from './models/Button.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { getHoverColor, adjustOpacity, getContrastColor } from '@/app/utils/colorUtils';\n\nconst BUTTON_DISPLAY_NAME = 'Button';\nconst BUTTON_EMPTY_VALUE = '';\n\nconst BUTTON_VARIANTS = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SUCCESS: 'success',\n DANGER: 'danger',\n CLOSE: 'close',\n CLEAR: 'clear',\n ICON: 'icon',\n} as const;\n\nconst BUTTON_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nconst BUTTON_ICON_POSITIONS = {\n LEFT: 'left',\n RIGHT: 'right',\n} as const;\n\nconst getButtonBaseStyles = (): CSSProperties => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 500,\n transition: 'all 300ms',\n outline: 'none',\n border: '2px solid',\n cursor: 'pointer',\n});\n\nconst getButtonSizeStyles = (size: string, variant: string): CSSProperties => {\n if (variant === BUTTON_VARIANTS.ICON) {\n const iconSizes: Record<string, CSSProperties> = {\n sm: { padding: '0.375rem', fontSize: '0.75rem' },\n md: { padding: '0.5rem', fontSize: '0.875rem' },\n lg: { padding: '0.75rem', fontSize: '1rem' },\n };\n return iconSizes[size] || iconSizes.md;\n }\n\n if (variant === BUTTON_VARIANTS.CLOSE) {\n return {\n width: '2.5rem',\n height: '2.5rem',\n };\n }\n\n if (variant === BUTTON_VARIANTS.CLEAR) {\n const clearSizes: Record<string, CSSProperties> = {\n sm: { padding: '0.25rem', fontSize: '0.75rem' },\n md: { padding: '0.25rem', fontSize: '1rem' },\n lg: { padding: '0.25rem', fontSize: '1.125rem' },\n };\n return clearSizes[size] || clearSizes.md;\n }\n\n const defaultSizes: Record<string, CSSProperties> = {\n sm: {\n paddingLeft: '1rem',\n paddingRight: '1rem',\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n fontSize: '0.75rem',\n },\n md: {\n paddingLeft: '1.25rem',\n paddingRight: '1.25rem',\n paddingTop: '0.625rem',\n paddingBottom: '0.625rem',\n fontSize: '0.875rem',\n },\n lg: {\n paddingLeft: '1.5rem',\n paddingRight: '1.5rem',\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n fontSize: '1rem',\n },\n };\n return defaultSizes[size] || defaultSizes.md;\n};\n\nconst getButtonRoundedStyles = (rounded?: string, variant?: string): CSSProperties => {\n if (rounded) {\n const roundedMap: Record<string, string> = {\n none: '0',\n sm: '0.125rem',\n md: '0.375rem',\n lg: '0.5rem',\n full: '9999px',\n };\n return { borderRadius: roundedMap[rounded] || '0.5rem' };\n }\n\n if (variant === BUTTON_VARIANTS.CLOSE || variant === BUTTON_VARIANTS.CLEAR) {\n return { borderRadius: '9999px' };\n }\n\n return { borderRadius: '0.5rem' };\n};\n\nconst getButtonVariantStyles = (variant: string): CSSProperties => {\n if (variant === BUTTON_VARIANTS.CLOSE) {\n return {\n width: '2.5rem',\n height: '2.5rem',\n borderRadius: '9999px',\n };\n }\n\n if (variant === BUTTON_VARIANTS.CLEAR) {\n return {\n position: 'absolute',\n right: '2.8125rem',\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: 10,\n borderRadius: '9999px',\n minWidth: '1.5rem',\n minHeight: '1.5rem',\n };\n }\n\n return {};\n};\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = BUTTON_VARIANTS.PRIMARY,\n size = BUTTON_SIZES.MD,\n icon,\n iconPosition = BUTTON_ICON_POSITIONS.LEFT,\n isLoading = false,\n loadingText,\n fullWidth = false,\n rounded,\n className = BUTTON_EMPTY_VALUE,\n disableDefaultStyles = false,\n children,\n disabled,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n style,\n ...props\n },\n ref,\n ) => {\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const variantColors = useMemo(() => {\n let baseColor: string;\n let textColor: string;\n let borderColor: string;\n\n switch (variant) {\n case BUTTON_VARIANTS.PRIMARY:\n baseColor = customBg || colorConfig.primary;\n textColor = customTextColor || getContrastColor(baseColor);\n borderColor = customBorderColor || 'transparent';\n break;\n case BUTTON_VARIANTS.SECONDARY:\n baseColor = customBg || colorConfig.secondary;\n textColor = customTextColor || colorConfig.primary;\n borderColor = customBorderColor || colorConfig.primary;\n break;\n default:\n baseColor = customBg || colorConfig.accent;\n textColor = customTextColor || getContrastColor(baseColor);\n borderColor = customBorderColor || 'transparent';\n break;\n }\n\n const hoverBg = getHoverColor(baseColor);\n const hoverTextColor =\n variant === BUTTON_VARIANTS.SECONDARY\n ? getHoverColor(textColor)\n : getContrastColor(hoverBg);\n const disabledBg = adjustOpacity(baseColor, 0.5);\n const disabledTextColor = adjustOpacity(textColor, 0.6);\n const focusRing = adjustOpacity(\n variant === BUTTON_VARIANTS.SECONDARY ? colorConfig.primary : baseColor,\n 0.5,\n );\n\n return {\n bg: baseColor,\n textColor,\n borderColor,\n hoverBg,\n hoverTextColor,\n disabledBg,\n disabledTextColor,\n disabledBorderColor: customBorderColor\n ? adjustOpacity(customBorderColor, 0.5)\n : adjustOpacity(borderColor, 0.5),\n focusRing,\n };\n }, [variant, customBg, customTextColor, customBorderColor, colorConfig]);\n\n const buttonStyle: CSSProperties = useMemo(() => {\n if (disableDefaultStyles) return style || {};\n\n const baseStyles = getButtonBaseStyles();\n const sizeStyles = getButtonSizeStyles(size, variant);\n const roundedStyles = getButtonRoundedStyles(rounded, variant);\n const variantSpecificStyles = getButtonVariantStyles(variant);\n\n const spacingStyles: CSSProperties =\n variant !== BUTTON_VARIANTS.CLOSE &&\n variant !== BUTTON_VARIANTS.CLEAR &&\n variant !== BUTTON_VARIANTS.ICON\n ? { marginLeft: '0.375rem', marginRight: '0.375rem', marginTop: '0.625rem' }\n : {};\n\n const widthStyles: CSSProperties = fullWidth ? { width: '100%' } : {};\n\n return {\n ...baseStyles,\n ...sizeStyles,\n ...roundedStyles,\n ...variantSpecificStyles,\n ...spacingStyles,\n ...widthStyles,\n backgroundColor: disabled ? variantColors.disabledBg : variantColors.bg,\n color: disabled ? variantColors.disabledTextColor : variantColors.textColor,\n borderColor: disabled ? variantColors.disabledBorderColor : variantColors.borderColor,\n cursor: disabled || isLoading ? 'not-allowed' : 'pointer',\n ...style,\n };\n }, [\n disableDefaultStyles,\n size,\n variant,\n rounded,\n fullWidth,\n disabled,\n isLoading,\n variantColors,\n style,\n ]);\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled && !isLoading) {\n e.currentTarget.style.backgroundColor = variantColors.hoverBg;\n e.currentTarget.style.color = variantColors.hoverTextColor;\n if (variant === BUTTON_VARIANTS.CLOSE) {\n e.currentTarget.style.transform = 'rotate(90deg)';\n }\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled && !isLoading) {\n e.currentTarget.style.backgroundColor = variantColors.bg;\n e.currentTarget.style.color = variantColors.textColor;\n if (variant === BUTTON_VARIANTS.CLOSE) {\n e.currentTarget.style.transform = 'rotate(0deg)';\n }\n }\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n e.currentTarget.style.boxShadow = `0 0 0 2px ${variantColors.focusRing}`;\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n e.currentTarget.style.boxShadow = 'none';\n };\n\n const spinnerStyle: CSSProperties = {\n animation: 'spin 1s linear infinite',\n height: '1.25rem',\n width: '1.25rem',\n };\n\n const iconSpacingStyle: CSSProperties =\n iconPosition === BUTTON_ICON_POSITIONS.LEFT\n ? { marginRight: '0.5rem' }\n : { marginLeft: '0.5rem' };\n\n const loadingTextStyle: CSSProperties = { marginLeft: '0.5rem' };\n\n return (\n <>\n <style>\n {`\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `}\n </style>\n <button\n ref={ref}\n disabled={disabled || isLoading}\n style={buttonStyle}\n className={className}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n {isLoading ? (\n <>\n <svg\n style={spinnerStyle}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n style={{ opacity: 0.25 }}\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n style={{ opacity: 0.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 {loadingText && <span style={loadingTextStyle}>{loadingText}</span>}\n </>\n ) : (\n <>\n {icon && iconPosition === BUTTON_ICON_POSITIONS.LEFT && (\n <span style={iconSpacingStyle}>{icon}</span>\n )}\n {children}\n {icon && iconPosition === BUTTON_ICON_POSITIONS.RIGHT && (\n <span style={iconSpacingStyle}>{icon}</span>\n )}\n </>\n )}\n </button>\n </>\n );\n },\n);\n\nButton.displayName = BUTTON_DISPLAY_NAME;\n\nexport default Button;\n","import { forwardRef, useState, useMemo, CSSProperties, useId } from 'react';\nimport { InputProps } from './models/Input.interface';\nimport { SelectInputProps } from './models/SelectInput.interface';\nimport { TimeInputProps } from './models/TimeInput.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport {\n getHoverColor,\n adjustOpacity,\n getContrastColor,\n lightenColor,\n} from '@/app/utils/colorUtils';\n\nconst INPUT_DISPLAY_NAME = 'Input';\nconst SELECT_INPUT_DISPLAY_NAME = 'SelectInput';\nconst TIME_INPUT_DISPLAY_NAME = 'TimeInput';\nconst INPUT_PLACEHOLDER_CHAR = ' ';\nconst INPUT_EMPTY_VALUE = '';\nconst INPUT_BUTTON_TYPE = 'button';\n\nconst INPUT_VARIANTS = {\n TEXT: 'text',\n NUMBER: 'number',\n SEARCH: 'search',\n SELECT: 'select',\n PASSWORD: 'password',\n TIME: 'time',\n DATE: 'date',\n} as const;\n\nconst INPUT_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nconst INPUT_TIME_PERIODS = {\n AM: 'am',\n PM: 'pm',\n} as const;\n\nconst INPUT_TIME_DEFAULTS = {\n START_HOUR: 0,\n END_HOUR: 23,\n INTERVAL: 30,\n DISPLAY_12H: 12,\n} as const;\n\nconst INPUT_TIME_FORMAT = {\n MINUTES_PER_HOUR: 60,\n NOON_HOUR: 12,\n ZERO_HOUR: 0,\n ZERO_MINUTE_PAD: '00',\n TIME_SEPARATOR: ':',\n} as const;\n\nconst INPUT_AUTOCOMPLETE_VALUES = {\n OFF: 'off',\n ON: 'on',\n} as const;\n\nconst generateTimeOptions = (startHour: number, endHour: number, interval: number) => {\n const times = [];\n for (let hour = startHour; hour <= endHour; hour++) {\n for (\n let minute = INPUT_TIME_FORMAT.ZERO_HOUR;\n minute < INPUT_TIME_FORMAT.MINUTES_PER_HOUR;\n minute += interval\n ) {\n const period =\n hour < INPUT_TIME_FORMAT.NOON_HOUR ? INPUT_TIME_PERIODS.AM : INPUT_TIME_PERIODS.PM;\n const displayHour =\n hour % INPUT_TIME_FORMAT.NOON_HOUR === INPUT_TIME_FORMAT.ZERO_HOUR\n ? INPUT_TIME_DEFAULTS.DISPLAY_12H\n : hour % INPUT_TIME_FORMAT.NOON_HOUR;\n const time = `${displayHour}${INPUT_TIME_FORMAT.TIME_SEPARATOR}${minute === INPUT_TIME_FORMAT.ZERO_HOUR ? INPUT_TIME_FORMAT.ZERO_MINUTE_PAD : minute}${period}`;\n times.push(time);\n }\n }\n return times;\n};\n\nconst getInputSizeStyles = (size: string): CSSProperties => {\n const baseStyles: CSSProperties = {\n width: '100%',\n border: '2px solid',\n borderRadius: '1.5625rem',\n outline: 'none',\n transition: 'all 300ms',\n backgroundColor: 'var(--input-bg, #313335)',\n color: 'var(--input-text, #A9B7C6)',\n };\n\n const sizeMap: Record<string, CSSProperties> = {\n sm: {\n padding: '0.5rem 0.625rem',\n fontSize: '0.75rem',\n },\n md: {\n padding: '0.625rem 0.75rem',\n fontSize: '0.875rem',\n },\n lg: {\n padding: '0.75rem 0.9375rem',\n fontSize: '0.875rem',\n },\n };\n\n return { ...baseStyles, ...(sizeMap[size] || sizeMap.md) };\n};\n\nconst getLabelStyles = (\n hasValue: boolean,\n isFocused: boolean,\n customStyle?: CSSProperties,\n): CSSProperties => {\n const baseStyles: CSSProperties = {\n position: 'absolute',\n left: '1rem',\n top: '0.75rem',\n fontSize: hasValue || isFocused ? '0.75rem' : '1rem',\n color: hasValue || isFocused ? 'var(--input-accent, #00D4FF)' : 'var(--input-label, #808080)',\n transition: 'all 300ms ease-in-out',\n pointerEvents: 'none',\n transform: hasValue || isFocused ? 'translateY(-1.75rem)' : 'translateY(0)',\n };\n\n return { ...baseStyles, ...customStyle };\n};\n\nconst getIconButtonStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: {\n minWidth: '1.0625rem',\n minHeight: '1.0625rem',\n },\n md: {\n minWidth: '1.125rem',\n minHeight: '1.125rem',\n },\n lg: {\n minWidth: '1.25rem',\n minHeight: '1.25rem',\n },\n };\n\n return {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: 'var(--input-accent, #00D4FF)',\n transition: 'color 300ms',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...(sizeMap[size] || sizeMap.md),\n };\n};\n\nconst getPasswordButtonFontSize = (size: string): string => {\n const sizeMap: Record<string, string> = {\n sm: '0.6875rem',\n md: '0.75rem',\n lg: '0.875rem',\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = INPUT_VARIANTS.TEXT,\n size = INPUT_SIZES.MD,\n label,\n labelStyle,\n onClear,\n showPasswordToggle = true,\n passwordIcon,\n passwordIconHidden,\n searchIcon,\n clearIcon,\n fullWidth = true,\n className = INPUT_EMPTY_VALUE,\n baseClassName,\n labelClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n value,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n style,\n onFocus,\n onBlur,\n onChange,\n ...props\n },\n ref,\n ) => {\n const [showPassword, setShowPassword] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [internalValue, setInternalValue] = useState('');\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const inputColors = useMemo(() => {\n const accentColor = colorConfig.accent || colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const defaultTextColor = getContrastColor(defaultBg);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n const focusBorderColor = accentColor;\n const focusShadow = adjustOpacity(accentColor, 0.1);\n\n return {\n bg: customBg || defaultBg,\n textColor: textColor,\n borderColor,\n focusBorderColor,\n focusShadow,\n accentColor,\n labelColor: adjustOpacity(textColor, 0.7),\n placeholderColor: adjustOpacity(textColor, 0.4),\n };\n }, [colorConfig, customBg, customTextColor, customBorderColor]);\n\n const cssVariables = useMemo(() => {\n if (!colors && !customBg && !customTextColor && !customBorderColor) return {};\n\n return {\n '--input-bg': inputColors.bg,\n '--input-text': inputColors.textColor,\n '--input-border': inputColors.borderColor,\n '--input-focus-border': inputColors.focusBorderColor,\n '--input-focus-shadow': inputColors.focusShadow,\n '--input-label': inputColors.labelColor,\n '--input-accent': inputColors.accentColor,\n '--input-placeholder': inputColors.placeholderColor,\n } as React.CSSProperties;\n }, [inputColors, colors, customBg, customTextColor, customBorderColor]);\n\n const getInputType = () => {\n if (variant === INPUT_VARIANTS.PASSWORD && showPasswordToggle) {\n return showPassword ? INPUT_VARIANTS.TEXT : INPUT_VARIANTS.PASSWORD;\n }\n return variant === INPUT_VARIANTS.SEARCH ? INPUT_VARIANTS.TEXT : variant;\n };\n\n const toggleShowPassword = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setShowPassword(!showPassword);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (variant === INPUT_VARIANTS.NUMBER) {\n const value = e.target.value;\n // Allow empty string, minus sign at start, and valid numbers\n if (value === '' || value === '-' || /^-?\\d*\\.?\\d*$/.test(value)) {\n setInternalValue(value);\n onChange?.(e);\n } else {\n // Prevent the change by not updating state\n e.preventDefault();\n }\n } else {\n setInternalValue(e.target.value);\n onChange?.(e);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (variant === INPUT_VARIANTS.NUMBER) {\n const key = e.key;\n const currentVal = (e.target as HTMLInputElement).value;\n const cursorPosition = (e.target as HTMLInputElement).selectionStart || 0;\n\n // Allow: backspace, delete, tab, escape, enter, arrows\n if (\n [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n ].includes(key) ||\n // Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X\n (e.ctrlKey && ['a', 'c', 'v', 'x'].includes(key.toLowerCase())) ||\n // Allow: Cmd+A, Cmd+C, Cmd+V, Cmd+X (Mac)\n (e.metaKey && ['a', 'c', 'v', 'x'].includes(key.toLowerCase()))\n ) {\n return;\n }\n\n // Allow minus only at the beginning and if not already present\n if (key === '-') {\n if (cursorPosition !== 0 || currentVal.includes('-')) {\n e.preventDefault();\n }\n return;\n }\n\n // Allow decimal point only once\n if (key === '.') {\n if (currentVal.includes('.')) {\n e.preventDefault();\n }\n return;\n }\n\n // Allow only digits\n if (!/^\\d$/.test(key)) {\n e.preventDefault();\n }\n }\n };\n\n const wrapperStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n position: 'relative',\n marginBottom: '0.625rem',\n width: fullWidth ? '100%' : 'auto',\n ...cssVariables,\n };\n\n const inputStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getInputSizeStyles(size),\n borderColor: isFocused\n ? 'var(--input-focus-border, #00D4FF)'\n : 'var(--input-border, #4A5A6A)',\n boxShadow: isFocused\n ? '0 0 0 0.1875rem var(--input-focus-shadow, rgba(0,212,255,0.1))'\n : 'none',\n paddingRight:\n variant === INPUT_VARIANTS.SEARCH\n ? '2.5rem'\n : variant === INPUT_VARIANTS.PASSWORD && showPasswordToggle\n ? '2rem'\n : undefined,\n };\n\n const passwordButtonStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '0.5rem',\n padding: 0,\n fontSize: getPasswordButtonFontSize(size),\n };\n\n const searchIconStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '0.5rem',\n padding: 0,\n pointerEvents: 'none',\n };\n\n const clearButtonStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '2rem',\n padding: '0.25rem',\n borderRadius: '9999px',\n zIndex: 2,\n };\n\n const currentValue = value !== undefined ? value : internalValue;\n const hasValue = Boolean(currentValue && String(currentValue).trim().length > 0);\n\n const uniqueId = useId();\n\n const handleIncrement = () => {\n if (variant === INPUT_VARIANTS.NUMBER && onChange) {\n const currentVal = Number(currentValue) || 0;\n const step = props.step ? Number(props.step) : 1;\n const max = props.max !== undefined ? Number(props.max) : Infinity;\n const newValue = Math.min(currentVal + step, max);\n\n const event = {\n target: { value: String(newValue) },\n currentTarget: { value: String(newValue) },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(event);\n }\n };\n\n const handleDecrement = () => {\n if (variant === INPUT_VARIANTS.NUMBER && onChange) {\n const currentVal = Number(currentValue) || 0;\n const step = props.step ? Number(props.step) : 1;\n const min = props.min !== undefined ? Number(props.min) : -Infinity;\n const newValue = Math.max(currentVal - step, min);\n\n const event = {\n target: { value: String(newValue) },\n currentTarget: { value: String(newValue) },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(event);\n }\n };\n\n return (\n <>\n {variant === INPUT_VARIANTS.NUMBER && (\n <style>{`\n #${uniqueId}::-webkit-inner-spin-button,\n #${uniqueId}::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n #${uniqueId}[type=\"number\"] {\n -moz-appearance: textfield;\n appearance: textfield;\n }\n `}</style>\n )}\n <div className={wrapperClassName} style={{ ...wrapperStyle, ...style }}>\n <input\n id={uniqueId}\n ref={ref}\n type={getInputType()}\n placeholder={INPUT_PLACEHOLDER_CHAR}\n value={value}\n autoComplete={INPUT_AUTOCOMPLETE_VALUES.OFF}\n className={disableDefaultStyles ? baseClassName : className}\n style={{\n ...inputStyle,\n paddingRight: variant === INPUT_VARIANTS.NUMBER ? '2.5rem' : inputStyle.paddingRight,\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...props}\n />\n {label && (\n <label\n className={labelClassName}\n style={getLabelStyles(hasValue, isFocused, labelStyle)}\n >\n {label}\n </label>\n )}\n\n {variant === INPUT_VARIANTS.NUMBER && (\n <div\n style={{\n position: 'absolute',\n right: '0.75rem',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.0625rem',\n }}\n >\n <button\n type={INPUT_BUTTON_TYPE}\n onClick={handleIncrement}\n tabIndex={-1}\n style={{\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n padding: '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: inputColors.accentColor,\n fontSize: '0.875rem',\n lineHeight: 1,\n transition: 'all 200ms',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n e.currentTarget.style.transform = 'scale(1.2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = inputColors.accentColor;\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n ▲\n </button>\n <button\n type={INPUT_BUTTON_TYPE}\n onClick={handleDecrement}\n tabIndex={-1}\n style={{\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n padding: '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: inputColors.accentColor,\n fontSize: '0.875rem',\n lineHeight: 1,\n transition: 'all 200ms',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n e.currentTarget.style.transform = 'scale(1.2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = inputColors.accentColor;\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n ▼\n </button>\n </div>\n )}\n\n {variant === INPUT_VARIANTS.PASSWORD &&\n showPasswordToggle &&\n passwordIcon &&\n passwordIconHidden && (\n <button\n type={INPUT_BUTTON_TYPE}\n onClick={toggleShowPassword}\n style={passwordButtonStyle}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = 'var(--input-accent, #00D4FF)';\n }}\n >\n {showPassword ? passwordIconHidden : passwordIcon}\n </button>\n )}\n\n {variant === INPUT_VARIANTS.SEARCH && (\n <>\n {value && onClear && clearIcon && (\n <button\n onClick={onClear}\n type={INPUT_BUTTON_TYPE}\n style={clearButtonStyle}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = adjustOpacity(\n inputColors.accentColor,\n 0.1,\n );\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = 'var(--input-accent, #00D4FF)';\n }}\n >\n {clearIcon}\n </button>\n )}\n {searchIcon && <div style={searchIconStyle}>{searchIcon}</div>}\n </>\n )}\n </div>\n </>\n );\n },\n);\n\nInput.displayName = INPUT_DISPLAY_NAME;\n\nexport const SelectInput = forwardRef<HTMLSelectElement, SelectInputProps>(\n (\n {\n size = INPUT_SIZES.MD,\n label,\n labelStyle,\n children,\n selectIcon,\n fullWidth = true,\n className = INPUT_EMPTY_VALUE,\n baseClassName,\n labelClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n value,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n style,\n onFocus,\n onBlur,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const selectColors = useMemo(() => {\n const accentColor = colorConfig.accent || colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const defaultTextColor = getContrastColor(defaultBg);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n const focusBorderColor = accentColor;\n const focusShadow = adjustOpacity(accentColor, 0.1);\n\n return {\n bg: customBg || defaultBg,\n textColor: textColor,\n borderColor,\n focusBorderColor,\n focusShadow,\n accentColor,\n labelColor: adjustOpacity(textColor, 0.7),\n };\n }, [colorConfig, customBg, customTextColor, customBorderColor]);\n\n const cssVariables = useMemo(() => {\n if (!colors && !customBg && !customTextColor && !customBorderColor) return {};\n\n return {\n '--input-bg': selectColors.bg,\n '--input-text': selectColors.textColor,\n '--input-border': selectColors.borderColor,\n '--input-focus-border': selectColors.focusBorderColor,\n '--input-focus-shadow': selectColors.focusShadow,\n '--input-label': selectColors.labelColor,\n '--input-accent': selectColors.accentColor,\n } as React.CSSProperties;\n }, [selectColors, colors, customBg, customTextColor, customBorderColor]);\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLSelectElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const wrapperStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n position: 'relative',\n marginBottom: '0.625rem',\n width: fullWidth ? '100%' : 'auto',\n ...cssVariables,\n };\n\n const selectStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getInputSizeStyles(size),\n paddingRight: '2rem',\n appearance: 'none',\n cursor: 'pointer',\n borderColor: isFocused\n ? 'var(--input-focus-border, #00D4FF)'\n : 'var(--input-border, #4A5A6A)',\n boxShadow: isFocused\n ? '0 0 0 0.1875rem var(--input-focus-shadow, rgba(0,212,255,0.1))'\n : 'none',\n };\n\n const iconStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '0.5rem',\n padding: 0,\n pointerEvents: 'none',\n };\n\n const hasValue = true;\n\n return (\n <div className={wrapperClassName} style={{ ...wrapperStyle, ...style }}>\n <select\n ref={ref}\n value={value}\n className={disableDefaultStyles ? baseClassName : className}\n style={selectStyle}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n <option value={INPUT_EMPTY_VALUE} disabled hidden></option>\n {children}\n </select>\n {label && (\n <label className={labelClassName} style={getLabelStyles(hasValue, isFocused, labelStyle)}>\n {label}\n </label>\n )}\n {selectIcon && <div style={iconStyle}>{selectIcon}</div>}\n </div>\n );\n },\n);\n\nSelectInput.displayName = SELECT_INPUT_DISPLAY_NAME;\n\nexport const TimeInput = forwardRef<HTMLSelectElement, TimeInputProps>(\n (\n {\n size = INPUT_SIZES.MD,\n label,\n value,\n onChange,\n startHour = INPUT_TIME_DEFAULTS.START_HOUR,\n endHour = INPUT_TIME_DEFAULTS.END_HOUR,\n interval = INPUT_TIME_DEFAULTS.INTERVAL,\n selectIcon,\n fullWidth = true,\n className = INPUT_EMPTY_VALUE,\n baseClassName,\n labelClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n },\n ref,\n ) => {\n return (\n <SelectInput\n ref={ref}\n size={size}\n label={label}\n value={value}\n onChange={onChange}\n selectIcon={selectIcon}\n fullWidth={fullWidth}\n className={className}\n baseClassName={baseClassName}\n labelClassName={labelClassName}\n wrapperClassName={wrapperClassName}\n disableDefaultStyles={disableDefaultStyles}\n colors={colors}\n customBg={customBg}\n customTextColor={customTextColor}\n customBorderColor={customBorderColor}\n >\n {generateTimeOptions(startHour, endHour, interval).map((time, index) => (\n <option key={index} value={time}>\n {time}\n </option>\n ))}\n </SelectInput>\n );\n },\n);\n\nTimeInput.displayName = TIME_INPUT_DISPLAY_NAME;\n\nexport default Input;\n","import { forwardRef, useEffect, useMemo, CSSProperties, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport ReactDatePicker, { registerLocale } from 'react-datepicker';\nimport { Calendar, X } from 'lucide-react';\nimport { enUS } from 'date-fns/locale';\nimport { DatePickerProps } from './models/DatePicker.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor, lightenColor } from '@/app/utils/colorUtils';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nconst DATEPICKER_DISPLAY_NAME = 'DatePicker';\nconst DATEPICKER_EMPTY_VALUE = '';\n\nconst DATEPICKER_CALENDAR_SIZES = {\n MIN_WIDTH: '10.5rem',\n MONTH_PICKER_WIDTH: '10rem',\n BORDER_RADIUS: '0.625rem',\n BORDER_WIDTH: '0.125rem',\n DAY_SIZE: '2rem',\n DAY_MARGIN: '0.166rem',\n MONTH_MARGIN: '0.4rem',\n HEADER_PADDING_TOP: '0.5rem',\n HEADER_PADDING_SIDE: '0.25rem',\n NAVIGATION_SIZE: '2rem',\n NAVIGATION_TOP: '0.625rem',\n NAVIGATION_SIDE: '0.25rem',\n ICON_SIZE: '0.5rem',\n ICON_TOP: '0.375rem',\n MONTH_TEXT_WIDTH: '2.75rem',\n MONTH_TEXT_HEIGHT: '1.75rem',\n MONTH_GAP: '0.25rem',\n MONTH_PADDING: '0.5rem',\n} as const;\n\nconst DATEPICKER_CALENDAR_Z_INDEX = '1000';\n\nconst getDatePickerSizeStyles = (size: string, showClearButton: boolean): CSSProperties => {\n const basePadding = {\n sm: {\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n paddingLeft: '0.625rem',\n fontSize: '0.75rem',\n },\n md: {\n paddingTop: '0.625rem',\n paddingBottom: '0.625rem',\n paddingLeft: '0.75rem',\n fontSize: '0.875rem',\n },\n lg: {\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n paddingLeft: '0.9375rem',\n fontSize: '0.875rem',\n },\n };\n\n const paddingRight = showClearButton\n ? { sm: '3.5rem', md: '4rem', lg: '4.5rem' }\n : { sm: '2rem', md: '2.5rem', lg: '2.8125rem' };\n\n const sizeStyle = basePadding[size as keyof typeof basePadding] || basePadding.md;\n const pr = paddingRight[size as keyof typeof paddingRight] || paddingRight.md;\n\n return {\n ...sizeStyle,\n paddingRight: pr,\n };\n};\n\nconst getLabelStyles = (\n hasValue: boolean,\n isFocused: boolean,\n customStyle?: CSSProperties,\n): CSSProperties => {\n const baseStyles: CSSProperties = {\n position: 'absolute',\n left: '1rem',\n top: '0.75rem',\n fontSize: hasValue || isFocused ? '0.75rem' : '1rem',\n color: hasValue || isFocused ? 'var(--input-accent, #00D4FF)' : 'var(--input-label, #808080)',\n transition: 'all 300ms ease-in-out',\n pointerEvents: 'none',\n transform: hasValue || isFocused ? 'translateY(-1.75rem)' : 'translateY(0)',\n };\n\n return { ...baseStyles, ...customStyle };\n};\n\nconst getIconPositionStyles = (size: string): CSSProperties => {\n const positions = {\n sm: { right: '0.375rem' },\n md: { right: '0.5rem' },\n lg: { right: '0.75rem' },\n };\n return positions[size as keyof typeof positions] || positions.md;\n};\n\nconst getClearButtonPositionStyles = (size: string): CSSProperties => {\n const positions = {\n sm: { right: '1.5rem', minWidth: '1.0625rem', minHeight: '1.0625rem' },\n md: { right: '2rem', minWidth: '1.375rem', minHeight: '1.375rem' },\n lg: { right: '2.75rem', minWidth: '1.5rem', minHeight: '1.5rem' },\n };\n return positions[size as keyof typeof positions] || positions.md;\n};\n\nconst getIconSizeStyles = (size: string): CSSProperties => {\n const sizes = {\n sm: { minWidth: '0.875rem', minHeight: '0.875rem' },\n md: { minWidth: '1rem', minHeight: '1rem' },\n lg: { minWidth: '1.25rem', minHeight: '1.25rem' },\n };\n return sizes[size as keyof typeof sizes] || sizes.md;\n};\n\nconst getWidthStyles = (size: string, fullWidth: boolean): CSSProperties => {\n if (fullWidth) return { width: '100%' };\n\n const widths = {\n sm: { maxWidth: '12rem' },\n md: { maxWidth: '14rem' },\n lg: { maxWidth: '16rem' },\n };\n return widths[size as keyof typeof widths] || widths.md;\n};\n\nexport const DatePicker = forwardRef<ReactDatePicker, DatePickerProps>(\n (\n {\n size = 'md',\n onClear,\n calendarIcon,\n clearIcon,\n fullWidth = false,\n baseClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n selected,\n onChange,\n locale,\n className = DATEPICKER_EMPTY_VALUE,\n minDate,\n maxDate,\n startDate,\n endDate,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n label,\n labelStyle,\n placeholderText = ' ',\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const [inputClassName] = useState(\n () => `datepicker-input-${Math.random().toString(36).substr(2, 9)}`,\n );\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const calendarColors = useMemo(() => {\n const primaryColor = colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const bgColor = customBg || defaultBg;\n const defaultTextColor = getContrastColor(bgColor);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n\n return {\n inputBg: bgColor,\n inputText: textColor,\n inputBorder: borderColor,\n inputFocusBorder: primaryColor,\n border: borderColor,\n headerBg: primaryColor,\n headerText: getContrastColor(primaryColor),\n dayText: textColor,\n dayHoverBg: adjustOpacity(primaryColor, 0.1),\n selectedBg: primaryColor,\n selectedText: getContrastColor(primaryColor),\n keyboardBg: adjustOpacity(primaryColor, 0.15),\n disabledText: adjustOpacity(textColor, 0.4),\n disabledBg: 'transparent',\n outsideMonthText: adjustOpacity(textColor, 0.5),\n navigationHover: adjustOpacity(getContrastColor(primaryColor), 0.1),\n navigationIcon: getContrastColor(primaryColor),\n monthBg: bgColor,\n todayBorder: colorConfig.secondary,\n };\n }, [colorConfig, customBg, customTextColor, customBorderColor]);\n\n const showClearButton = Boolean(onClear);\n\n const cssVariables = useMemo(() => {\n if (!colors && !customBg && !customTextColor && !customBorderColor) return {};\n\n const accentColor = colorConfig.accent || colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const defaultTextColor = getContrastColor(customBg || defaultBg);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n\n return {\n '--input-bg': customBg || defaultBg,\n '--input-text': textColor,\n '--input-border': borderColor,\n '--input-label': adjustOpacity(textColor, 0.7),\n '--input-accent': accentColor,\n } as React.CSSProperties;\n }, [colorConfig, customBg, customTextColor, customBorderColor, colors]);\n\n const wrapperStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n position: 'relative',\n marginBottom: '0.625rem',\n width: '100%',\n ...getWidthStyles(size, fullWidth),\n ...cssVariables,\n };\n\n const iconButtonStyle: CSSProperties = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: colorConfig.accent || colorConfig.primary,\n transition: 'color 300ms',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n zIndex: 1,\n ...getIconPositionStyles(size),\n ...getIconSizeStyles(size),\n };\n\n const clearButtonStyle: CSSProperties = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n backgroundColor: 'transparent',\n border: 'none',\n color: colorConfig.accent || colorConfig.primary,\n cursor: 'pointer',\n zIndex: 2,\n padding: '0.25rem',\n borderRadius: '9999px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'color 300ms',\n ...getClearButtonPositionStyles(size),\n };\n\n const defaultCalendarIcon = <Calendar size={18} />;\n const defaultClearIcon = <X size={16} />;\n\n const localeToUse = (locale || enUS) as unknown;\n\n useEffect(() => {\n registerLocale('datepicker-locale', localeToUse as never);\n }, [localeToUse]);\n\n const handleChange = (\n date: Date | Date[] | null,\n event?:\n | React.SyntheticEvent<unknown>\n | React.MouseEvent<HTMLElement>\n | React.KeyboardEvent<HTMLElement>,\n ) => {\n if (!onChange) return;\n\n if (Array.isArray(date)) {\n (\n onChange as (\n dates: Date[] | null,\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => void\n )(date, event as React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>);\n } else {\n (onChange as (date: Date | null, event?: React.SyntheticEvent<unknown>) => void)(\n date,\n event as React.SyntheticEvent<unknown>,\n );\n }\n };\n\n const reactDatePickerProps = {\n ...props,\n ...(minDate !== null && minDate !== undefined && { minDate }),\n ...(maxDate !== null && maxDate !== undefined && { maxDate }),\n ...(startDate !== null && startDate !== undefined && { startDate }),\n ...(endDate !== null && endDate !== undefined && { endDate }),\n };\n\n const sizeStyles = getDatePickerSizeStyles(size, showClearButton);\n\n return (\n <>\n <style>{`\n .${inputClassName} {\n width: 100%;\n border: 2px solid ${isFocused ? calendarColors.inputFocusBorder : calendarColors.inputBorder};\n border-radius: 1.5625rem !important;\n outline: none;\n transition: all 300ms;\n background-color: ${calendarColors.inputBg};\n color: ${calendarColors.inputText};\n cursor: pointer;\n box-sizing: border-box;\n padding-top: ${sizeStyles.paddingTop};\n padding-bottom: ${sizeStyles.paddingBottom};\n padding-left: ${sizeStyles.paddingLeft};\n padding-right: ${sizeStyles.paddingRight};\n font-size: ${sizeStyles.fontSize};\n ${isFocused ? `box-shadow: 0 0 0 0.1875rem ${adjustOpacity(calendarColors.inputFocusBorder, 0.1)};` : ''}\n }\n\n .react-datepicker-popper[data-placement^='bottom'] {\n padding-top: 8px !important;\n }\n\n .react-datepicker-popper[data-placement^='top'] {\n padding-top: 0 !important;\n padding-bottom: 8px !important;\n }\n\n .react-datepicker-popper {\n z-index: 9999 !important;\n }\n\n .react-datepicker {\n border: ${DATEPICKER_CALENDAR_SIZES.BORDER_WIDTH} solid ${calendarColors.border} !important;\n border-radius: ${DATEPICKER_CALENDAR_SIZES.BORDER_RADIUS} !important;\n font-family: inherit !important;\n box-shadow: 0 0.25rem 0.5rem ${adjustOpacity(calendarColors.border, 0.3)} !important;\n min-width: ${DATEPICKER_CALENDAR_SIZES.MIN_WIDTH} !important;\n }\n\n .react-datepicker--show-month-year-picker {\n min-width: ${DATEPICKER_CALENDAR_SIZES.MONTH_PICKER_WIDTH} !important;\n width: ${DATEPICKER_CALENDAR_SIZES.MONTH_PICKER_WIDTH} !important;\n }\n\n .react-datepicker__header {\n background-color: ${calendarColors.headerBg} !important;\n border-bottom: 0.0625rem solid ${calendarColors.headerBg} !important;\n border-top-left-radius: 0.5rem !important;\n border-top-right-radius: 0.5rem !important;\n color: ${calendarColors.headerText} !important;\n padding-top: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_TOP} !important;\n padding-left: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_SIDE} !important;\n padding-right: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_SIDE} !important;\n }\n\n .react-datepicker__current-month,\n .react-datepicker-time__header,\n .react-datepicker-year-header {\n color: ${calendarColors.headerText} !important;\n font-weight: bold !important;\n font-size: 1rem !important;\n padding-bottom: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_TOP} !important;\n }\n\n .react-datepicker__day-names {\n background-color: ${calendarColors.headerBg} !important;\n padding-bottom: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_TOP} !important;\n }\n\n .react-datepicker__day-name {\n color: ${calendarColors.headerText} !important;\n display: inline-block !important;\n width: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n line-height: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n text-align: center !important;\n margin: ${DATEPICKER_CALENDAR_SIZES.DAY_MARGIN} !important;\n border-radius: 0.25rem !important;\n font-weight: bold !important;\n font-size: 0.75rem !important;\n }\n\n .react-datepicker__month {\n margin: ${DATEPICKER_CALENDAR_SIZES.MONTH_MARGIN} !important;\n background-color: ${calendarColors.monthBg} !important;\n }\n\n .react-datepicker__week {\n display: flex !important;\n justify-content: space-around !important;\n }\n\n .react-datepicker__day,\n .react-datepicker__month-text,\n .react-datepicker__quarter-text,\n .react-datepicker__year-text {\n color: ${calendarColors.dayText} !important;\n display: inline-block !important;\n width: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n line-height: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n text-align: center !important;\n margin: ${DATEPICKER_CALENDAR_SIZES.DAY_MARGIN} !important;\n border-radius: 0.25rem !important;\n font-size: 0.875rem !important;\n }\n\n .react-datepicker__day:hover,\n .react-datepicker__month-text:hover,\n .react-datepicker__quarter-text:hover,\n .react-datepicker__year-text:hover {\n background-color: ${calendarColors.dayHoverBg} !important;\n border-radius: 0.25rem !important;\n }\n\n .react-datepicker__day--selected,\n .react-datepicker__day--in-selecting-range,\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--selected,\n .react-datepicker__quarter-text--selected,\n .react-datepicker__year-text--selected {\n background-color: ${calendarColors.selectedBg} !important;\n color: ${calendarColors.selectedText} !important;\n border-radius: 0.25rem !important;\n font-weight: bold !important;\n }\n\n .react-datepicker__day--keyboard-selected,\n .react-datepicker__month-text--keyboard-selected,\n .react-datepicker__quarter-text--keyboard-selected,\n .react-datepicker__year-text--keyboard-selected {\n background-color: ${calendarColors.keyboardBg} !important;\n color: ${calendarColors.selectedText} !important;\n border-radius: 0.25rem !important;\n }\n\n .react-datepicker__day--today,\n .react-datepicker__month-text--today,\n .react-datepicker__quarter-text--today,\n .react-datepicker__year-text--today {\n font-weight: normal !important;\n color: inherit !important;\n background-color: transparent !important;\n }\n\n .react-datepicker__navigation {\n top: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_TOP} !important;\n width: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIZE} !important;\n height: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIZE} !important;\n border-radius: 0.25rem !important;\n }\n\n .react-datepicker__navigation:hover {\n background-color: ${calendarColors.navigationHover} !important;\n }\n\n .react-datepicker__navigation-icon::before {\n border-color: ${calendarColors.navigationIcon} !important;\n border-width: ${DATEPICKER_CALENDAR_SIZES.BORDER_WIDTH}\n ${DATEPICKER_CALENDAR_SIZES.BORDER_WIDTH} 0 0 !important;\n height: ${DATEPICKER_CALENDAR_SIZES.ICON_SIZE} !important;\n width: ${DATEPICKER_CALENDAR_SIZES.ICON_SIZE} !important;\n top: ${DATEPICKER_CALENDAR_SIZES.ICON_TOP} !important;\n }\n\n .react-datepicker__navigation--previous {\n left: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIDE} !important;\n }\n\n .react-datepicker__navigation--next {\n right: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIDE} !important;\n }\n\n .react-datepicker__day--disabled,\n .react-datepicker__month-text--disabled,\n .react-datepicker__quarter-text--disabled,\n .react-datepicker__year-text--disabled {\n color: ${calendarColors.disabledText} !important;\n cursor: not-allowed !important;\n background-color: ${calendarColors.disabledBg} !important;\n }\n\n .react-datepicker__day--disabled:hover,\n .react-datepicker__month-text--disabled:hover,\n .react-datepicker__quarter-text--disabled:hover,\n .react-datepicker__year-text--disabled:hover {\n background-color: ${calendarColors.disabledBg} !important;\n }\n\n .react-datepicker__day--outside-month {\n color: ${calendarColors.outsideMonthText} !important;\n }\n\n .react-datepicker-popper {\n z-index: ${DATEPICKER_CALENDAR_Z_INDEX} !important;\n }\n\n .react-datepicker__month-container {\n float: left !important;\n width: 100% !important;\n }\n\n .react-datepicker__month-wrapper {\n display: flex !important;\n flex-wrap: wrap !important;\n justify-content: center !important;\n gap: ${DATEPICKER_CALENDAR_SIZES.MONTH_GAP} !important;\n padding: ${DATEPICKER_CALENDAR_SIZES.MONTH_PADDING} 0 !important;\n }\n\n .react-datepicker__month-text,\n .react-datepicker__quarter-text,\n .react-datepicker__year-text {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: ${DATEPICKER_CALENDAR_SIZES.MONTH_TEXT_WIDTH} !important;\n height: ${DATEPICKER_CALENDAR_SIZES.MONTH_TEXT_HEIGHT} !important;\n margin: 0 !important;\n padding: 0.25rem 0.125rem !important;\n border-radius: 0.25rem !important;\n cursor: pointer !important;\n text-align: center !important;\n font-size: 0.75rem !important;\n font-weight: 500 !important;\n }\n `}</style>\n\n <div style={wrapperStyle} className={wrapperClassName || className}>\n <ReactDatePicker\n ref={ref}\n className={`${baseClassName || ''} ${inputClassName}`.trim()}\n wrapperClassName={DATEPICKER_EMPTY_VALUE}\n popperPlacement=\"bottom-start\"\n locale=\"datepicker-locale\"\n selected={selected}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n placeholderText={placeholderText}\n {...(reactDatePickerProps as Record<string, unknown>)}\n popperContainer={({ children }) => {\n if (typeof document !== 'undefined') {\n return createPortal(children, document.body);\n }\n return children;\n }}\n />\n {label && (\n <label style={getLabelStyles(Boolean(selected), isFocused, labelStyle)}>{label}</label>\n )}\n {selected && onClear && (\n <button\n onClick={onClear}\n style={clearButtonStyle}\n type=\"button\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = adjustOpacity(\n colorConfig.accent || colorConfig.primary,\n 0.1,\n );\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n {clearIcon || defaultClearIcon}\n </button>\n )}\n <div style={iconButtonStyle}>{calendarIcon || defaultCalendarIcon}</div>\n </div>\n </>\n );\n },\n);\n\nDatePicker.displayName = DATEPICKER_DISPLAY_NAME;\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagEN = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#29337A\"\n d=\"M496,369.6c0,27.2-21.6,46.4-48,46.4H48c-26.4,0-48-19.2-48-46.4V126.4C0,99.2,21.6,80,48,80h400c26.4,0,48,19.2,48,46.4V369.6z\"\n />\n <path fill=\"#1B265B\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4v243.2c0,27.2-25.6,46.4-52,46.4\" />\n <path fill=\"#111D49\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4V216\" />\n <path fill=\"#111D49\" d=\"M496,368.8c0,27.2-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n <polygon\n fill=\"#FFFFFF\"\n points=\"272,248 442.4,80 394.4,80 248,226.4 101.6,80 53.6,80 224,248 53.6,416 101.6,416 248,269.6 394.4,416 442.4,416\"\n />\n <polygon fill=\"#D9ECED\" points=\"102.4,368 53.6,416 101.6,416 149.6,368\" />\n <polygon fill=\"#D9ECED\" points=\"346.4,368 394.4,416 442.4,416 393.6,368\" />\n <polygon\n fill=\"#D9ECED\"\n points=\"411.2,386.4 272,249.6 442.4,80 394.4,80 248,226.4 101.6,80 53.6,80 85.6,110.4\"\n />\n <polygon\n fill=\"#FFFFFF\"\n points=\"496,216 280,216 280,80 216,80 216,216 0,216 0,280 216,280 216,416 280,416 280,280 496,280\"\n />\n <rect x=\"216\" y=\"368\" fill=\"#D9ECED\" width=\"64\" height=\"48\" />\n <polygon\n fill=\"#D9ECED\"\n points=\"280,80 216,80 216,216 210.4,216 285.6,280 496,280 496,216 280,216\"\n />\n <polygon\n fill=\"#E51D35\"\n points=\"496,232 264,232 273.6,232 432.8,80 416.8,80 264,232 264,80 232,80 232,232 232,232 77.6,80 63.2,80 216,232 0,232 0,264 216.8,264 67.2,416 81.6,416 232,264 232,416 264,416 264,265.6 418.4,416 432.8,416 280,264 496,264\"\n />\n <rect x=\"232\" y=\"368\" fill=\"#AF0026\" width=\"32\" height=\"48\" />\n <polygon fill=\"#AF0026\" points=\"114.4,368 67.2,416 81.6,416 129.6,368\" />\n <polygon fill=\"#AF0026\" points=\"369.6,368 418.4,416 432.8,416 384,368\" />\n <polygon\n fill=\"#AF0026\"\n points=\"278.4,232 432.8,80 416.8,80 264,232 264,80 232,80 232,232 232,232 77.6,80 63.2,80 151.2,167.2 343.2,328.8 280,264 496,264 496,232 264,232\"\n />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagES = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n {/* Franja roja inferior */}\n <path\n style={{ fill: '#D32030' }}\n d=\"M0,304.8v64.8c0,27.2,21.6,48.8,48,48.8h400c26.4,0,48-21.6,48-48.8v-64.8H0z\"\n />\n <path\n style={{ fill: '#C11025' }}\n d=\"M448,418.4c26.4,0,48-21.6,48-48.8v-64.8H315.2L448,418.4z\"\n />\n\n {/* Franja roja superior */}\n <path\n style={{ fill: '#D32030' }}\n d=\"M448,77.6H48c-26.4,0-48,21.6-48,48.8v64.8h496v-64.8C496,99.2,474.4,77.6,448,77.6z\"\n />\n <path\n style={{ fill: '#C11025' }}\n d=\"M448,77.6H48l132.8,113.6H496v-64.8C496,99.2,474.4,77.6,448,77.6z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M448,77.6H48l370.4,113.6H496v-64.8C496,99.2,474.4,77.6,448,77.6z\"\n />\n\n {/* Franja amarilla central (más grande - proporción 2:1:2) */}\n <polygon\n style={{ fill: '#FFD034' }}\n points=\"0,140.8 0,189.6 0,191.2 0,304.8 0,306.4 0,355.2 496,355.2 496,306.4 496,304.8 496,191.2 496,189.6 496,140.8\"\n />\n <polygon\n style={{ fill: '#FFBC00' }}\n points=\"180,189.6 180,189.6 316,306.4 373.6,355.2 496,355.2 496,306.4 496,304.8 496,191.2 496,189.6 496,140.8 122.4,140.8\"\n />\n <polygon\n style={{ fill: '#FFAA00' }}\n points=\"255.2,140.8 414.4,189.6 414.4,189.6 496,214.4 496,191.2 496,189.6 496,140.8\"\n />\n\n {/* Escudo (detalles decorativos) */}\n <g>\n <path\n style={{ fill: '#A5001C' }}\n d=\"M496,369.6c0,27.2-21.6,48.8-48,48.8H48c-26.4,0-48-21.6-48-48.8\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M69.6,244.8v33.6c0,16.8,13.6,30.4,30.4,30.4s30.4-13.6,30.4-30.4v-33.6L69.6,244.8L69.6,244.8z\"\n />\n <rect x=\"137.6\" y=\"249.6\" style={{ fill: '#A5001C' }} width=\"9.6\" height=\"46.4\" />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M151.2,301.6c-0.8-0.8-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8s-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8s2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s2.4,0.8,3.2,0.8v-1.6C153.6,302.4,152,302.4,151.2,301.6z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,304.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8s-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8s2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8C150.4,304.8,149.6,304.8,148.8,304.8z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,308c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8s-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8s2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8C150.4,308.8,149.6,308,148.8,308z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,296.8c0,0.8-0.8,1.6-1.6,1.6h-10.4c-0.8,0-1.6-0.8-1.6-1.6l0,0c0-0.8,0.8-1.6,1.6-1.6h10.4C148,295.2,148.8,296,148.8,296.8L148.8,296.8z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,248.8c0,0.8-0.8,1.6-1.6,1.6h-10.4c-0.8,0-1.6-0.8-1.6-1.6l0,0c0-0.8,0.8-1.6,1.6-1.6h10.4C148,248,148.8,248,148.8,248.8L148.8,248.8z\"\n />\n </g>\n <g>\n <rect x=\"53.6\" y=\"249.6\" style={{ fill: '#D32030' }} width=\"9.6\" height=\"46.4\" />\n <path\n style={{ fill: '#D32030' }}\n d=\"M67.2,301.6c-0.8-0.8-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8c-0.8,0.8-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c1.6,0.8,2.4,0.8,4,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c0,0.8,0.8,0.8,2.4,0.8v-1.6C68.8,302.4,68,302.4,67.2,301.6z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64,304.8c-0.8,0-2.4,0-3.2,0.8c-0.8,0.8-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c0.8,0.8,1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8S65.6,304.8,64,304.8z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64,308c-0.8,0-2.4,0-3.2,0.8c-0.8,0.8-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c0.8,0.8,1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8C66.4,308.8,65.6,308,64,308z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64.8,296.8c0,0.8-0.8,1.6-1.6,1.6H52.8c-0.8,0-1.6-0.8-1.6-1.6l0,0c0-0.8,0.8-1.6,1.6-1.6h10.4C64,295.2,64.8,296,64.8,296.8L64.8,296.8z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64.8,248.8c0,0.8-0.8,1.6-1.6,1.6H52.8c-0.8,0-1.6-0.8-1.6-1.6l0,0c0.8-0.8,1.6-0.8,1.6-0.8h10.4C64,248,64.8,248,64.8,248.8L64.8,248.8z\"\n />\n </g>\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagDE = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#F8D12E\"\n d=\"M0,304v65.6C0,396.8,21.6,416,48,416h400c26.4,0,48-19.2,48-46.4V304H0z\"\n />\n <path\n fill=\"#333333\"\n d=\"M448,80H48C21.6,80,0,99.2,0,126.4V192h496v-65.6C496,99.2,474.4,80,448,80z\"\n />\n <rect y=\"192\" fill=\"#DB2727\" width=\"496\" height=\"112\" />\n <path fill=\"#DBB30F\" d=\"M446.4,416c26.4,0,49.6-19.2,49.6-46.4V304H315.2L446.4,416z\" />\n <path fill=\"#202121\" d=\"M448,80H48l132.8,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#C10E0E\" points=\"316,304 496,304 496,192 180,192\" />\n <path d=\"M448,80H48l370.4,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#A00808\" points=\"496,214.4 496,192 414.4,192\" />\n <path fill=\"#D89F12\" d=\"M496,368.8c0,29.6-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagFR = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"160\" y=\"80\" fill=\"#FFFFFF\" width=\"176\" height=\"336\" />\n <path\n fill=\"#3757A6\"\n d=\"M160,80H48C21.6,80,0,99.2,0,126.4v243.2C0,396.8,21.6,416,48,416h112V80z\"\n />\n <path\n fill=\"#EF4F4E\"\n d=\"M448,80H336v336h112c26.4,0,48-19.2,48-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <path\n fill=\"#DD4545\"\n d=\"M448,80H336v240.8L446.4,416c26.4,0,49.6-19.2,49.6-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <polygon fill=\"#E2F2F1\" points=\"336,320.8 336,80 160,80 160,175.2\" />\n <polygon fill=\"#2A4D93\" points=\"160,80 48,80 160,175.2\" />\n <path fill=\"#CC3E3E\" d=\"M336,416h112c26.4,0,48-16,48-48H336V416z\" />\n <rect x=\"160\" y=\"368\" fill=\"#D6EAE8\" width=\"176\" height=\"48\" />\n <path fill=\"#133970\" d=\"M0,368c0,32,21.6,48,48,48h112v-48H0z\" />\n <path fill=\"#CC3E3E\" d=\"M448,80H336v84.8l160,49.6v-88C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#D6EAE8\" points=\"336,164.8 336,80 160,80 160,112.8\" />\n <polygon fill=\"#133970\" points=\"160,80 48,80 160,112.8\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagIT = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"160\" y=\"80\" fill=\"#EBF7F7\" width=\"176\" height=\"336\" />\n <path\n fill=\"#359846\"\n d=\"M160,80H48C21.6,80,0,99.2,0,126.4v243.2C0,396.8,21.6,416,48,416h112V80z\"\n />\n <path\n fill=\"#EF4C4C\"\n d=\"M448,80H336v336h112c26.4,0,48-19.2,48-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <path\n fill=\"#DD4545\"\n d=\"M448,80H336v240.8L446.4,416c26.4,0,49.6-19.2,49.6-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <polygon fill=\"#E2F2F1\" points=\"336,320.8 336,80 160,80 160,175.2\" />\n <polygon fill=\"#258933\" points=\"160,80 48,80 160,175.2\" />\n <path fill=\"#CC3E3E\" d=\"M336,416h112c26.4,0,48-16,48-48H336V416z\" />\n <rect x=\"160\" y=\"368\" fill=\"#D6EAE8\" width=\"176\" height=\"48\" />\n <path fill=\"#15721E\" d=\"M0,368c0,32,21.6,48,48,48h112v-48H0z\" />\n <path fill=\"#CC3E3E\" d=\"M448,80H336v84.8l160,49.6v-88C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#D6EAE8\" points=\"336,164.8 336,80 160,80 160,112.8\" />\n <polygon fill=\"#15721E\" points=\"160,80 48,80 160,112.8\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagJA = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#FFFFFF\"\n d=\"M496,369.6c0,27.2-21.6,46.4-48,46.4H48c-26.4,0-48-19.2-48-46.4V126.4C0,99.2,21.6,80,48,80h400c26.4,0,48,19.2,48,46.4V369.6z\"\n />\n <path fill=\"#E9F3F4\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4v243.2c0,27.2-25.6,46.4-52,46.4\" />\n <path fill=\"#D9ECED\" d=\"M496,368.8c0,27.2-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n <path fill=\"#D9ECED\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4V216\" />\n <circle fill=\"#EC1C24\" cx=\"248\" cy=\"248\" r=\"103.2\" />\n <path fill=\"#CE0909\" d=\"M175.2,175.2c40-40,105.6-40,146.4,0c40,40,40,105.6,0,146.4\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagPT = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n style={{ fill: '#006600' }}\n d=\"M162.4,77.6H48c-26.4,0-48,21.6-48,48.8v243.2c0,27.2,21.6,48.8,48,48.8h115.2V77.6H162.4z\"\n />\n <path\n style={{ fill: '#FF0000' }}\n d=\"M448,77.6H333.6H162.4v340.8h170.4H448c26.4,0,48-21.6,48-48.8V126.4C496,99.2,474.4,77.6,448,77.6z\"\n />\n <path\n style={{ fill: '#E20000' }}\n d=\"M448,77.6H333.6H162.4v97.6L332.8,320L448,418.4c26.4,0,48-21.6,48-48.8V126.4C496,99.2,474.4,77.6,448,77.6z\"\n />\n <polygon style={{ fill: '#004F00' }} points=\"162.4,77.6 48,77.6 162.4,175.2\" />\n <path\n style={{ fill: '#CE0000' }}\n d=\"M333.6,369.6H162.4v48.8h170.4H448c26.4,0,48-21.6,48-48.8H333.6z\"\n />\n <path style={{ fill: '#013F01' }} d=\"M0,369.6c0,27.2,21.6,48.8,48,48.8h115.2v-48.8H0z\" />\n <path\n style={{ fill: '#CE0000' }}\n d=\"M448,77.6H333.6H162.4v35.2l170.4,52L496,214.4v-88C496,99.2,474.4,77.6,448,77.6z\"\n />\n <polygon style={{ fill: '#013F01' }} points=\"162.4,77.6 48,77.6 162.4,112.8\" />\n <circle style={{ fill: '#FFFFFF' }} cx=\"163.2\" cy=\"243.2\" r=\"68.8\" />\n <path\n style={{ fill: '#F2EFCE' }}\n d=\"M163.2,173.6c38.4,0,68.8,31.2,68.8,68.8c0,38.4-31.2,68.8-68.8,68.8\"\n />\n <path\n style={{ fill: '#C60606' }}\n d=\"M116.8,256.8L116.8,256.8c0,12,4.8,23.2,13.6,32c8,8,19.2,13.6,32,13.6c12,0,24-4.8,32-12.8s13.6-19.2,13.6-32l0,0v-60.8h-90.4L116.8,256.8 M188.8,214.4v38.4v4l0,0c0,0.8,0,2.4,0,3.2c-0.8,6.4-3.2,11.2-8,15.2c-4.8,4.8-12,8-19.2,8s-13.6-3.2-19.2-8c-4.8-4.8-8-12-8-19.2v-42.4L188.8,214.4\"\n />\n <path\n style={{ fill: '#FF0000' }}\n d=\"M116.8,256.8L116.8,256.8L116.8,256.8c0,12,4.8,23.2,13.6,32c8,8,19.2,13.6,32,13.6v-17.6l0,0c-7.2,0-13.6-3.2-19.2-8c-4.8-4.8-8-12-8-19.2v-42.4h27.2v-18.4h-44.8L116.8,256.8z\"\n />\n <g>\n <path\n style={{ fill: '#1477EF' }}\n d=\"M156.8,249.6L156.8,249.6L156.8,249.6c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6c0.8-0.8,1.6-2.4,1.6-4.8v-8.8h-12L156.8,249.6z\"\n />\n <path\n style={{ fill: '#1477EF' }}\n d=\"M156.8,270.4L156.8,270.4L156.8,270.4c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6c1.6-1.6,1.6-3.2,1.6-4.8v-8.8h-12L156.8,270.4z\"\n />\n <path\n style={{ fill: '#1477EF' }}\n d=\"M140,249.6L140,249.6c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6c0.8-0.8,1.6-2.4,1.6-4.8v-8.8h-12L140,249.6z\"\n />\n </g>\n <path\n style={{ fill: '#005CB7' }}\n d=\"M184.8,249.6v-8.8h-12v8.8l0,0l0,0c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6S184.8,252,184.8,249.6z\"\n />\n <path\n style={{ fill: '#1477EF' }}\n d=\"M158.4,233.6c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6s1.6-2.4,1.6-4.8V220h-12v8.8l0,0l0,0C156.8,231.2,157.6,232.8,158.4,233.6z\"\n />\n <g>\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M119.2,212.8h13.6c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8h-3.2l0,0h3.2l0,0l0,0l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H120C119.2,211.2,119.2,212,119.2,212.8L119.2,212.8z M124,208c-0.8,0.8-0.8,1.6-0.8,2.4C123.2,209.6,124,208.8,124,208z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M124.8,199.2h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H128v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8h-0.8l0,0l0,0l0,0l0,0l0,0L124.8,199.2C124,199.2,124,199.2,124.8,199.2z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M168.8,211.2h-3.2l0,0H168.8L168.8,211.2L168.8,211.2l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8l0,0l-0.8,4.8l0,0l0,0h3.2l0,0h-3.2c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8h13.6C169.6,212.8,169.6,212.8,168.8,211.2C169.6,212,169.6,211.2,168.8,211.2z M159.2,210.4c0-0.8,0.8-1.6,0.8-2.4C160,208.8,159.2,209.6,159.2,210.4z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M120,205.6h12.8c0,0,0.8,0,0.8-0.8l0,0l0,0c0,0,0-0.8-0.8-0.8H120C119.2,204.8,119.2,204.8,120,205.6L120,205.6L120,205.6C119.2,205.6,119.2,205.6,120,205.6z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"128,199.2 124.8,199.2 124.8,199.2 124.8,199.2 124.8,204 124.8,204.8 124.8,204.8 128,204.8 128,204.8 128,199.2\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"128.8,201.6 128.8,201.6 128.8,204.8 128.8,204.8 132,204.8 132,201.6 132,201.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M129.6,200H128l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V200H132l0,0l0,0l0,0h-0.8l0,0H129.6L129.6,200L129.6,200L129.6,200L129.6,200L129.6,200L129.6,200z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M120,201.6L120,201.6L120,201.6h4c0,0,0.8,0,0.8-0.8V200H124l0,0h-0.8l0,0l0,0h-0.8l0,0l0,0h-0.8l0,0H120l0,0l0,0V201.6L120,201.6z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"120.8,204.8 120.8,204.8 124,204.8 123.2,201.6 120.8,201.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M156,205.6h12.8c0,0,0.8,0,0.8-0.8l0,0l0,0c0,0,0-0.8-0.8-0.8H156C156,204.8,155.2,204.8,156,205.6L156,205.6L156,205.6C155.2,205.6,156,205.6,156,205.6z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M160.8,199.2h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H164v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8H160l0,0l0,0l0,0l0,0l0,0L160.8,199.2C160,199.2,160.8,199.2,160.8,199.2z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"164,199.2 160.8,199.2 160.8,204.8 160.8,204.8 164,204.8 164,204.8 164,199.2\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"164.8,201.6 164.8,201.6 164.8,204.8 164.8,204.8 168,204.8 168,201.6 168,201.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M165.6,200h-0.8l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h2.4c0,0,0.8,0,0.8-0.8l0,0l0,0V200H168l0,0l0,0l0,0h-0.8l0,0H165.6L165.6,200L165.6,200L165.6,200L165.6,200L165.6,200L165.6,200z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M156.8,201.6h3.2c0,0,0.8,0,0.8-0.8V200H160l0,0h-0.8l0,0l0,0h-0.8l0,0l0,0h-0.8l0,0h-0.8l0,0L156.8,201.6C156,201.6,156,201.6,156.8,201.6z\"\n />\n <polygon style={{ fill: '#FFFF00' }} points=\"156.8,201.6 156.8,204.8 160,204.8 160,201.6\" />\n </g>\n <g>\n <path\n style={{ fill: '#FFE600' }}\n d=\"M191.2,212.8h13.6c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8h-3.2l0,0h3.2l0,0l0,0l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H192C191.2,211.2,191.2,212,191.2,212.8L191.2,212.8z M196,208c-0.8,0.8-0.8,1.6-0.8,2.4C195.2,209.6,196,208.8,196,208z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192,205.6h12.8c0,0,0.8,0,0.8-0.8l0,0l0,0c0,0,0-0.8-0.8-0.8H192C191.2,204.8,191.2,204.8,192,205.6L192,205.6L192,205.6C191.2,205.6,191.2,205.6,192,205.6z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M196.8,199.2h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H200v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8h-0.8l0,0l0,0l0,0l0,0l0,0L196.8,199.2C196,199.2,196,199.2,196.8,199.2z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"200,199.2 196.8,199.2 196.8,204.8 196.8,204.8 200,204.8 200,204.8 200,199.2\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"200.8,201.6 200.8,201.6 200.8,204.8 200.8,204.8 204,204.8 204,201.6 204,201.6\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M200.8,200H200l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V200H204l0,0l0,0l0,0h-0.8l0,0H200.8L200.8,200L200.8,200L200.8,200L200.8,200L200.8,200L200.8,200z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192,201.6L192,201.6L192,201.6h4c0,0,0.8,0,0.8-0.8v-1.6H196v0.8h-0.8l0,0l0,0h-0.8l0,0l0,0h-0.8l0,0H192l0,0l0,0V201.6L192,201.6z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"192.8,201.6 192,204.8 192,204.8 195.2,204.8 195.2,201.6\"\n />\n </g>\n <g>\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M133.6,248.8C133.6,248.8,133.6,248,133.6,248.8l-4-0.8l0,0L133.6,248.8L133.6,248.8L133.6,248.8l-1.6-5.6l0,0l0,0c0,0,0.8,0,0.8-0.8s0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8s0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H120c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8L133.6,248.8C133.6,249.6,133.6,248.8,133.6,248.8z M123.2,247.2c0-0.8,0.8-1.6,0.8-2.4C124,245.6,123.2,246.4,123.2,247.2z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M132.8,240.8H120c0,0-0.8,0-0.8,0.8l0,0l0,0c0,0,0,0.8,0.8,0.8h12.8C132.8,242.4,132.8,241.6,132.8,240.8L132.8,240.8L132.8,240.8C132.8,241.6,132.8,240.8,132.8,240.8z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M124,233.6L124,233.6L124,233.6L124,233.6L124,233.6L124,233.6v1.6c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H128v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8H124z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"128,236 124.8,236 124.8,236 124.8,236 124.8,240.8 124.8,240.8 124.8,240.8 128,240.8 128,240.8 128,236\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"132,238.4 128.8,238.4 128.8,238.4 128.8,240.8 128.8,240.8 132,240.8 132,238.4\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M129.6,236h-0.8l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V236h-0.8l0,0l0,0v0.8H132V236H129.6L129.6,236L129.6,236L129.6,236L129.6,236L129.6,236L129.6,236z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M120,236L120,236L120,236v1.6l0,0l0,0l0,0l0,0h3.2c0,0,0.8,0,0.8-0.8v-1.6h-0.8v0.8h-0.8v-0.8h-0.8v0.8h-0.8v-0.8H120V236z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"120.8,238.4 120.8,240.8 120.8,240.8 124,240.8 123.2,238.4 123.2,238.4\"\n />\n </g>\n <g>\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"195.2,280 194.4,279.2 192,280.8 194.4,283.2 196,281.6 196,281.6 196,281.6\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M185.6,274.4L185.6,274.4L185.6,274.4L185.6,274.4c-0.8,0-0.8,0.8-0.8,0.8l8.8,8.8h0.8l0,0l0,0v-0.8L185.6,274.4z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M193.6,284l-8.8-8.8H184v0.8l0,0l-4,3.2l0,0l0,0l2.4,2.4l0,0l-2.4-2.4h-0.8v0.8l9.6,9.6h0.8v-0.8l-2.4-2.4l0,0l2.4,2.4l0,0l0,0l3.2-4L193.6,284C193.6,285.6,193.6,285.6,193.6,284C193.6,284.8,193.6,284.8,193.6,284L193.6,284z M184,280.8c0.8-0.8,1.6-0.8,2.4-0.8C185.6,280,184.8,280.8,184,280.8z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192.8,273.6C192.8,273.6,192.8,274.4,192.8,273.6l2.4,3.2h0.8l0.8-0.8l0,0l0,0l-0.8-0.8l-0.8,0.8l-0.8-0.8l0.8-0.8l0,0l0,0l-0.8-0.8l0,0l0,0l-0.8,0.8L192.8,273.6l0.8-0.8l-0.8-0.8l0,0l0,0l0,0l0,0L192.8,273.6z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"188.8,277.6 191.2,280 191.2,280 195.2,276.8 195.2,276.8 195.2,276.8 192.8,274.4\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M197.6,279.2L197.6,279.2L197.6,279.2h-0.8H197.6l-0.8-0.8l0,0l-0.8,0.8l-0.8-0.8l0.8-0.8l-0.8-0.8l0,0l0,0l0,0l-0.8,0.8l0,0v0.8l2.4,2.4h0.8l0,0l0,0L197.6,279.2L197.6,279.2L197.6,279.2z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M190.4,275.2L190.4,275.2L190.4,275.2C191.2,275.2,191.2,275.2,190.4,275.2l1.6-0.8l-0.8-0.8l-0.8,0.8l-0.8-0.8l0.8-0.8l-0.8-0.8l-0.8,0.8L188,272l0.8-0.8l-0.8-0.8l0,0l0,0l0,1.6v0.8L190.4,275.2z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"188.8,277.6 190.4,275.2 190.4,275.2 188,272.8 186.4,275.2 186.4,275.2\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M204.8,248h-3.2l0,0H204.8L204.8,248L204.8,248l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8s0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8s0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H192c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8h13.6C204.8,249.6,205.6,248.8,204.8,248C205.6,248.8,204.8,248,204.8,248z M195.2,247.2c0-0.8,0.8-1.6,0.8-2.4C195.2,245.6,195.2,246.4,195.2,247.2z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M204.8,240.8H192c0,0-0.8,0-0.8,0.8l0,0l0,0c0,0,0,0.8,0.8,0.8h12.8C204.8,242.4,204.8,241.6,204.8,240.8C204.8,241.6,204.8,241.6,204.8,240.8L204.8,240.8C204.8,241.6,204.8,240.8,204.8,240.8z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M196,233.6L196,233.6L196,233.6v1.6c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H200v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8H196L196,233.6L196,233.6L196,233.6z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"199.2,236 196.8,236 196,240.8 196,240.8 200,240.8 200,240.8 199.2,236\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"204,238.4 200.8,238.4 200.8,238.4 200.8,240.8 200.8,240.8 204,240.8 204,238.4\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M200.8,236H200l0,0l0,0v0.8v0.8c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V236H204l0,0l0,0v0.8h-0.8V236H200.8L200.8,236L200.8,236L200.8,236L200.8,236L200.8,236L200.8,236z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192.8,236H192l0,0l0,0v1.6l0,0l0,0h3.2c0,0,0.8,0,0.8-0.8v-1.6h-0.8v0.8h-0.8v-0.8L192.8,236L192.8,236L192.8,236L192.8,236L192.8,236z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"192,238.4 192,238.4 192,240.8 192,240.8 195.2,240.8 195.2,238.4 195.2,238.4\"\n />\n </g>\n <g>\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"138.4,275.2 136,272.8 136,272.8 136,272.8 134.4,275.2 134.4,275.2 136,277.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M144.8,279.2C144,279.2,144,279.2,144.8,279.2l-3.2,2.4l0,0L144.8,279.2L144.8,279.2L144.8,279.2l-4-3.2l0,0v-0.8H140l0,0v-0.8h-0.8l-8.8,8.8v0.8l0,0l0,0l0,0v0.8l0,0l0,0l0,0l0,0l3.2,4l2.4-2.4l0,0l-2.4,2.4v0.8h0.8l9.6-9.6C144.8,280,144.8,280,144.8,279.2L144.8,279.2z M135.2,283.2c0,0.8,0,1.6,0.8,2.4C136,284.8,135.2,284,135.2,283.2z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M128,275.2l0.8,0.8h0.8l2.4-2.4v-0.8l-1.6-0.8l0,0l0,0l0.8,0.8l-0.8,0.8l-0.8-0.8l0,0l-0.8,0.8l0,0l0,0l0.8,0.8l-0.8,0.8L128,275.2L128,275.2L128,275.2L128,275.2L128,275.2z\"\n />\n <path style={{ fill: '#FFFF00' }} d=\"M132,274.4L132,274.4L132,274.4z\" />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"132,274.4 129.6,276.8 129.6,276.8 129.6,276.8 132.8,280 135.2,277.6 135.2,277.6 135.2,277.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M133.6,272.8L133.6,272.8v0.8V272.8l-0.8,0.8l0,0l0,0l0,0l0,0l0.8,0.8h0.8l2.4-2.4v-0.8l0,0l0,0l-0.8-0.8l-1.6,1.6l0,0l0,0l0.8,0.8l-0.8,0.8L133.6,272.8L133.6,272.8L133.6,272.8L133.6,272.8z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M130.4,278.4l-0.8-0.8l-0.8,0.8l0.8,0.8l-0.8,0.8l-0.8-1.6v0.8l0.8,0.8H128l-0.8-0.8l-0.8,0.8l0,0l0.8,0.8c0,0,0,0,0.8,0l0,0L130.4,278.4L130.4,278.4z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"132.8,280.8 130.4,279.2 130.4,279.2 130.4,279.2 128,280.8 130.4,283.2\"\n />\n </g>\n <path\n style={{ fill: '#FFE600' }}\n d=\"M162.4,169.6c-43.2,0-78.4,35.2-78.4,78.4s35.2,78.4,78.4,78.4s78.4-35.2,78.4-78.4C240.8,204.8,204.8,169.6,162.4,169.6z M209.6,194.4v62.4l0,0c0,12.8-5.6,24.8-13.6,32.8c-8.8,8.8-20,13.6-33.6,13.6c-12.8,0-24.8-5.6-32.8-13.6c-8.8-8.8-13.6-20-13.6-32.8l0,0v-62.4H209.6z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M84,248c0,43.2,35.2,78.4,78.4,78.4l0,0V304l0,0c-12.8,0-24.8-5.6-32.8-13.6c-8.8-8.8-13.6-20-13.6-32.8l0,0v-62.4h47.2v-24l0,0C119.2,169.6,84,204.8,84,248z\"\n />\n <g>\n <path\n style={{ fill: '#005CB7' }}\n d=\"M162.4,256L162.4,256c1.6,0,3.2-0.8,4.8-1.6c0.8-0.8,1.6-2.4,1.6-4.8v-8.8h-6.4L162.4,256L162.4,256z\"\n />\n <path\n style={{ fill: '#005CB7' }}\n d=\"M162.4,236L162.4,236c1.6,0,3.2-0.8,4.8-1.6s1.6-2.4,1.6-4.8v-8.8h-6.4L162.4,236L162.4,236z\"\n />\n <path\n style={{ fill: '#005CB7' }}\n d=\"M162.4,276.8L162.4,276.8c1.6,0,3.2-0.8,4.8-1.6s1.6-2.4,1.6-4.8v-8.8h-6.4L162.4,276.8L162.4,276.8z\"\n />\n </g>\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagRU = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#E73B36\"\n d=\"M0,304v65.6C0,396.8,21.6,416,48,416h400c26.4,0,48-19.2,48-46.4V304H0z\"\n />\n <path\n fill=\"#F0F7F6\"\n d=\"M448,80H48C21.6,80,0,99.2,0,126.4V192h496v-65.6C496,99.2,474.4,80,448,80z\"\n />\n <rect y=\"192\" fill=\"#3757A6\" width=\"496\" height=\"112\" />\n <path fill=\"#D31C1C\" d=\"M446.4,416c26.4,0,49.6-19.2,49.6-46.4V304H315.2L446.4,416z\" />\n <path fill=\"#DFF2EF\" d=\"M448,80H48l132.8,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#20448E\" points=\"316,304 496,304 496,192 180,192\" />\n <path fill=\"#CAEAE4\" d=\"M448,80H48l370.4,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#103577\" points=\"496,214.4 496,192 414.4,192\" />\n <path fill=\"#C41010\" d=\"M496,368.8c0,29.6-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagZH = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n style={{ fill: '#ED3432' }}\n d=\"M496,369.6c0,27.2-21.6,46.4-48,46.4H48c-26.4,0-48-19.2-48-46.4V126.4C0,99.2,21.6,80,48,80h400c26.4,0,48,19.2,48,46.4V369.6z\"\n />\n <path\n style={{ fill: '#DD0000' }}\n d=\"M48,80h400c26.4,0,48,19.2,48,46.4v243.2c0,27.2-24.8,46.4-51.2,46.4\"\n />\n <g>\n <path style={{ fill: '#CC0202' }} d=\"M48,80h400c26.4,0,48,19.2,48,46.4V216\" />\n <path\n style={{ fill: '#CC0202' }}\n d=\"M496,368.8c0,29.6-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\"\n />\n </g>\n <polygon\n style={{ fill: '#fdce0c' }}\n points=\"227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224\"\n transform=\"matrix(0.52254464,0,0,0.52254464,25.408929,115.59402)\"\n />\n <polygon\n style={{ fill: '#fdce0c' }}\n points=\"227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224\"\n transform=\"matrix(0,0.14397321,-0.14397321,0,243.1174,258.65464)\"\n />\n <polygon\n style={{ fill: '#fdce0c' }}\n points=\"227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224\"\n transform=\"matrix(-0.14397321,0,0,-0.14397321,275.02536,297.53741)\"\n />\n <polygon\n style={{ fill: '#fc9c10' }}\n points=\"248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224 227.2,224\"\n transform=\"matrix(-0.14397321,0,0,-0.14397321,275.02536,260.33741)\"\n />\n <polygon\n style={{ fill: '#fc9c10' }}\n points=\"158.4,224 227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6\"\n transform=\"matrix(0,0.14397321,-0.14397321,0,243.11741,156.35464)\"\n />\n </svg>\n);\n","import {\n FlagEN,\n FlagES,\n FlagPT,\n FlagFR,\n FlagIT,\n FlagRU,\n FlagJA,\n FlagDE,\n FlagZH,\n} from '@/app/components/LanguageSelector/flags';\n\nexport const ALL_LANGUAGES = {\n en: {\n name: {\n en: 'English',\n es: 'Inglés',\n pt: 'Inglês',\n fr: 'Anglais',\n it: 'Inglese',\n ru: 'Английский',\n ja: '英語',\n de: 'Englisch',\n zh: '英语',\n },\n flag: FlagEN,\n code: 'en',\n },\n es: {\n name: {\n en: 'Spanish',\n es: 'Español',\n pt: 'Espanhol',\n fr: 'Espagnol',\n it: 'Spagnolo',\n ru: 'Испанский',\n ja: 'スペイン語',\n de: 'Spanisch',\n zh: '西班牙语',\n },\n flag: FlagES,\n code: 'es',\n },\n pt: {\n name: {\n en: 'Portuguese',\n es: 'Portugués',\n pt: 'Português',\n fr: 'Portugais',\n it: 'Portoghese',\n ru: 'Португальский',\n ja: 'ポルトガル語',\n de: 'Portugiesisch',\n zh: '葡萄牙语',\n },\n flag: FlagPT,\n code: 'pt',\n },\n fr: {\n name: {\n en: 'French',\n es: 'Francés',\n pt: 'Francês',\n fr: 'Français',\n it: 'Francese',\n ru: 'Французский',\n ja: 'フランス語',\n de: 'Französisch',\n zh: '法语',\n },\n flag: FlagFR,\n code: 'fr',\n },\n it: {\n name: {\n en: 'Italian',\n es: 'Italiano',\n pt: 'Italiano',\n fr: 'Italien',\n it: 'Italiano',\n ru: 'Итальянский',\n ja: 'イタリア語',\n de: 'Italienisch',\n zh: '意大利语',\n },\n flag: FlagIT,\n code: 'it',\n },\n ru: {\n name: {\n en: 'Russian',\n es: 'Ruso',\n pt: 'Russo',\n fr: 'Russe',\n it: 'Russo',\n ru: 'Русский',\n ja: 'ロシア語',\n de: 'Russisch',\n zh: '俄语',\n },\n flag: FlagRU,\n code: 'ru',\n },\n ja: {\n name: {\n en: 'Japanese',\n es: 'Japonés',\n pt: 'Japonês',\n fr: 'Japonais',\n it: 'Giapponese',\n ru: 'Японский',\n ja: '日本語',\n de: 'Japanisch',\n zh: '日语',\n },\n flag: FlagJA,\n code: 'ja',\n },\n de: {\n name: {\n en: 'German',\n es: 'Alemán',\n pt: 'Alemão',\n fr: 'Allemand',\n it: 'Tedesco',\n ru: 'Немецкий',\n ja: 'ドイツ語',\n de: 'Deutsch',\n zh: '德语',\n },\n flag: FlagDE,\n code: 'de',\n },\n zh: {\n name: {\n en: 'Chinese (Simplified)',\n es: 'Chino (Simplificado)',\n pt: 'Chinês (Simplificado)',\n fr: 'Chinois (Simplifié)',\n it: 'Cinese (Semplificato)',\n ru: 'Китайский (Упрощенный)',\n ja: '中国語(簡体字)',\n de: 'Chinesisch (Vereinfacht)',\n zh: '简体中文',\n },\n flag: FlagZH,\n code: 'zh',\n },\n} as const;\n\nexport const DEFAULT_LANGUAGES = {\n en: ALL_LANGUAGES.en,\n es: ALL_LANGUAGES.es,\n} as const;\n\nexport const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'es'] as const;\n\nexport const DEFAULT_SELECTED_LANGUAGE = 'en';\n\nexport const LANGUAGE_SELECTOR_DISPLAY_NAME = 'LanguageSelector';\n\nexport const LANGUAGE_SELECTOR_DROPDOWN_OFFSET = 8;\n","export const TABLE_CONTAINER_CLASS =\n 'w-full max-w-[75rem] border-separate border-spacing-0 bg-white rounded-xl overflow-hidden shadow-[0_0.25rem_0.75rem_rgba(0,0,0,0.08)]';\n\nexport const TABLE_HEADER_CELL_BASE =\n 'p-4 px-5 text-left uppercase text-[0.8125rem] font-semibold tracking-[0.08em] border-b-2';\n\nexport const TABLE_HEADER_CELL_SORTABLE =\n 'cursor-pointer select-none transition-all duration-200 relative active:scale-[0.98]';\n\nexport const TABLE_HEADER_CELL_RESPONSIVE =\n 'md:text-xs md:p-3 md:px-[0.9375rem] max-xs:text-[0.625rem] max-xs:tracking-[0.05em] max-xs:p-2.5 max-xs:px-3';\n\nexport const TABLE_ACTIONS_HEADER_CLASS =\n 'text-center w-[9.375rem] md:w-[7.5rem] max-xs:w-[6.25rem]';\n\nexport const TABLE_ACTIONS_CELL_CLASS = 'text-center whitespace-nowrap';\n\nexport const TABLE_SORT_ICON_CLASS =\n 'ml-1.5 inline-flex items-center opacity-80 transition-opacity duration-200 hover:opacity-100';\n\nexport const TABLE_SORT_ICON_SIZE = 'w-3.5 h-3.5';\n\nexport const TABLE_DEFAULT_NO_DATA_MESSAGE = 'No data available';\nexport const TABLE_DEFAULT_ACTIONS_LABEL = 'Actions';\n\n// Default colors\nexport const TABLE_DEFAULT_HEADER_BG_FROM = '#1F2937'; // gray-800\nexport const TABLE_DEFAULT_HEADER_BG_TO = '#111827'; // gray-900\nexport const TABLE_DEFAULT_HEADER_TEXT_COLOR = '#FFFFFF'; // white\nexport const TABLE_DEFAULT_HEADER_BORDER_COLOR = 'rgba(255, 255, 255, 0.2)';\nexport const TABLE_DEFAULT_HEADER_HOVER_BG = 'rgba(255, 255, 255, 0.15)';\nexport const TABLE_DEFAULT_ROW_BG = '#FFFFFF'; // white\nexport const TABLE_DEFAULT_ROW_EVEN_BG = '#F9FAFB'; // gray-50\nexport const TABLE_DEFAULT_ROW_HOVER_BG = 'rgba(37, 99, 235, 0.08)'; // blue-600/8%\nexport const TABLE_DEFAULT_CELL_TEXT_COLOR = '#111827'; // gray-900\nexport const TABLE_DEFAULT_CELL_BORDER_COLOR = '#E5E7EB'; // gray-200\nexport const TABLE_DEFAULT_ACTION_COLOR = '#2563EB'; // blue-600\nexport const TABLE_DEFAULT_ACTION_HOVER_COLOR = '#1D4ED8'; // blue-700\nexport const TABLE_DEFAULT_ACTION_DELETE_HOVER_COLOR = '#EF4444'; // red-500\nexport const TABLE_DEFAULT_NO_DATA_BG =\n 'linear-gradient(to bottom right, rgba(37, 99, 235, 0.03), rgba(37, 99, 235, 0.08))';\nexport const TABLE_DEFAULT_NO_DATA_TEXT_COLOR = '#4B5563'; // gray-600\nexport const TABLE_DEFAULT_NO_DATA_BORDER_COLOR = '#D1D5DB'; // gray-300\n\nexport const TABLE_DISPLAY_NAME = 'Table';\n","/**\n * Default color constants for BaseModal component\n */\n\n// Overlay colors\nexport const MODAL_DEFAULT_OVERLAY_BG = 'rgba(0, 0, 0, 0.5)';\nexport const MODAL_DEFAULT_BG = '#FFFFFF';\n\n// Header colors\nexport const MODAL_DEFAULT_HEADER_BG_FROM = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_HEADER_BG_TO = '#1873CC'; // PRIMARY_HOVER\nexport const MODAL_DEFAULT_HEADER_TEXT_COLOR = '#FFFFFF';\n\n// Close button colors\nexport const MODAL_DEFAULT_CLOSE_BTN_BG = 'rgba(255, 255, 255, 0.2)';\nexport const MODAL_DEFAULT_CLOSE_BTN_HOVER_BG = 'rgba(255, 255, 255, 0.3)';\nexport const MODAL_DEFAULT_CLOSE_BTN_COLOR = '#FFFFFF';\n\n// Stats section colors\nexport const MODAL_DEFAULT_STATS_BG_FROM = '#F9FAFB';\nexport const MODAL_DEFAULT_STATS_BG_TO = '#E5E7EB';\nexport const MODAL_DEFAULT_STATS_BORDER_COLOR = '#D1D5DB';\nexport const MODAL_DEFAULT_STATS_NUMBER_COLOR = '#111827';\nexport const MODAL_DEFAULT_STATS_LABEL_COLOR = '#4B5563';\n\n// Scrollbar colors\nexport const MODAL_DEFAULT_SCROLLBAR_TRACK_COLOR = '#F3F4F6';\nexport const MODAL_DEFAULT_SCROLLBAR_THUMB_COLOR = '#1E90FF'; // PRIMARY\n\n// Confirmation modal colors\nexport const MODAL_DEFAULT_CONFIRM_OVERLAY_BG = 'rgba(0, 0, 0, 0.7)';\nexport const MODAL_DEFAULT_CONFIRM_HEADER_BG_FROM = '#EF4444'; // DANGER\nexport const MODAL_DEFAULT_CONFIRM_HEADER_BG_TO = '#DC2626'; // DANGER dark\nexport const MODAL_DEFAULT_CONFIRM_HEADER_TEXT_COLOR = '#FFFFFF';\nexport const MODAL_DEFAULT_CONFIRM_TEXT_COLOR = '#111827';\nexport const MODAL_DEFAULT_CONFIRM_FOOTER_BG = '#F9FAFB';\n\n// Confirmation buttons\nexport const MODAL_DEFAULT_CONTINUE_BTN_BORDER = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_CONTINUE_BTN_COLOR = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_CONTINUE_BTN_HOVER_BG = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_CONTINUE_BTN_HOVER_COLOR = '#FFFFFF';\nexport const MODAL_DEFAULT_DISCARD_BTN_BG_FROM = '#EF4444'; // DANGER\nexport const MODAL_DEFAULT_DISCARD_BTN_BG_TO = '#DC2626'; // DANGER dark\nexport const MODAL_DEFAULT_DISCARD_BTN_COLOR = '#FFFFFF';\n\n// Default texts for i18n\nexport const MODAL_DEFAULT_TEXTS = {\n discardChangesTitle: 'Discard Changes?',\n unsavedChangesWarning:\n 'You have unsaved changes. Are you sure you want to close this modal? All changes will be lost.',\n continueEditing: 'Continue Editing',\n discardButton: 'Discard Changes',\n};\n","// Gallery Display Name\nexport const GALLERY_DISPLAY_NAME = 'Gallery';\n\n// Gallery Defaults\nexport const GALLERY_DEFAULTS = {\n BATCH_SIZE: 12,\n ENABLE_ANIMATION: true,\n OBSERVER_ROOT_MARGIN: '200px',\n ANIMATION_VIEWPORT_MARGIN: '-50px',\n} as const;\n\n// Gallery Animation\nexport const GALLERY_ANIMATION = {\n INITIAL: { opacity: 0, y: 20 },\n ANIMATE: { opacity: 1, y: 0 },\n DURATION: 0.4,\n EASE: 'easeOut',\n} as const;\n\n// Gallery Layout\nexport const GALLERY_LAYOUT = {\n CONTAINER: 'columns-1 sm:columns-2 lg:columns-3 gap-4',\n LOADER_HEIGHT: 'h-24',\n} as const;\n\n// Gallery Item Styles\nexport const GALLERY_ITEM = {\n WRAPPER: 'mb-4 break-inside-avoid',\n CONTAINER: 'relative overflow-hidden rounded-xl border bg-gray-100 cursor-pointer',\n SKELETON: 'absolute inset-0 animate-pulse',\n IMAGE: 'w-full h-auto transition-all duration-500 ease-out',\n OVERLAY: 'pointer-events-none absolute inset-0 transition-colors duration-300',\n} as const;\n\n// Gallery Border\nexport const GALLERY_BORDER = {\n RADIUS: 'rounded-xl',\n WIDTH: 'border',\n} as const;\n\n// Gallery Hover\nexport const GALLERY_HOVER = {\n SCALE: 'group-hover:scale-[1.03]',\n TRANSITION: 'transition-all duration-500 ease-out',\n} as const;\n","'use client';\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo, CSSProperties } from 'react';\nimport { LanguageSelectorProps } from './models/LanguageSelector.interface';\nimport {\n LANGUAGE_SELECTOR_DROPDOWN_OFFSET,\n ALL_LANGUAGES,\n DEFAULT_AVAILABLE_LANGUAGES,\n DEFAULT_SELECTED_LANGUAGE,\n LANGUAGE_SELECTOR_DISPLAY_NAME,\n} from '@/app/constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor, lightenColor } from '@/app/utils/colorUtils';\n\nconst getButtonSizeStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: { width: '2rem', height: '2rem' },\n md: { width: '2.5rem', height: '2.5rem' },\n lg: { width: '3rem', height: '3rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getFlagSizeStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: { width: '1.5rem', height: '1.5rem' },\n md: { width: '2rem', height: '2rem' },\n lg: { width: '2.5rem', height: '2.5rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getButtonBaseStyles = (): CSSProperties => ({\n borderRadius: '9999px',\n overflow: 'hidden',\n transition: 'all 300ms',\n outline: 'none',\n border: '2px solid',\n cursor: 'pointer',\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getDropdownBaseStyles = (): CSSProperties => ({\n position: 'fixed' as const,\n width: '12rem',\n borderRadius: '0.5rem',\n overflow: 'hidden',\n zIndex: 150,\n border: '2px solid',\n boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',\n});\n\nconst getItemBaseStyles = (): CSSProperties => ({\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem 1rem',\n transition: 'background-color 150ms, color 150ms',\n border: 'none',\n cursor: 'pointer',\n fontSize: '0.875rem',\n fontWeight: 500,\n textAlign: 'left' as const,\n});\n\nconst getFlagContainerStyles = (): CSSProperties => ({\n borderRadius: '9999px',\n overflow: 'hidden',\n flexShrink: 0,\n backgroundColor: '#ffffff',\n border: '2px solid',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getCheckIconStyles = (): CSSProperties => ({\n width: '1.25rem',\n height: '1.25rem',\n marginLeft: 'auto',\n flexShrink: 0,\n});\n\nconst getFlagScaleStyles = (size: string): CSSProperties => {\n const scaleMap: Record<string, string> = {\n sm: 'scale(1.2, 1.7)',\n md: 'scale(2, 2.15)',\n lg: 'scale(2.2, 2.65)',\n };\n return {\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n transform: scaleMap[size] || scaleMap.md,\n };\n};\n\nexport const LanguageSelector = React.forwardRef<HTMLButtonElement, LanguageSelectorProps>(\n (\n {\n selectedLanguage = DEFAULT_SELECTED_LANGUAGE,\n onLanguageChange,\n availableLanguages = DEFAULT_AVAILABLE_LANGUAGES as unknown as string[],\n size = 'md',\n buttonClassName,\n dropdownClassName,\n itemClassName,\n activeItemClassName,\n disableDefaultStyles = false,\n colors,\n customBorderColor,\n customBgColor,\n customTextColor,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n openUpward: false,\n });\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const selectorColors = useMemo(() => {\n const defaultButtonBg = lightenColor(colorConfig.secondary, 70);\n const buttonBg = customBgColor || defaultButtonBg;\n const textColor = customTextColor || getContrastColor(buttonBg);\n const buttonBorder = customBorderColor || adjustOpacity(textColor, 0.2);\n const buttonBorderHover = colorConfig.accent || colorConfig.primary;\n const buttonBorderFocus = colorConfig.accent || colorConfig.primary;\n const dropdownBg = colorConfig.secondary;\n const dropdownBorder = adjustOpacity(colorConfig.primary, 0.2);\n const itemText = customTextColor || getContrastColor(dropdownBg);\n const itemHoverBg = adjustOpacity(colorConfig.primary, 0.1);\n const activeItemBg = adjustOpacity(colorConfig.primary, 0.15);\n const checkIconColor = colorConfig.primary;\n\n return {\n buttonBg,\n buttonBorder,\n buttonBorderHover,\n buttonBorderFocus,\n dropdownBg,\n dropdownBorder,\n itemText,\n itemHoverBg,\n activeItemBg,\n checkIconColor,\n };\n }, [colorConfig, customBorderColor, customBgColor, customTextColor]);\n\n const updateDropdownPosition = useCallback(() => {\n if (isOpen && buttonRef.current && dropdownRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n const dropdownHeight = dropdownRef.current.offsetHeight;\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenUpward = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenUpward ? rect.top : rect.bottom,\n left: rect.left,\n openUpward: shouldOpenUpward,\n });\n }\n }, [isOpen]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n buttonRef.current &&\n !buttonRef.current.contains(event.target as Node)\n ) {\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 useEffect(() => {\n updateDropdownPosition();\n }, [isOpen, updateDropdownPosition]);\n\n useEffect(() => {\n if (isOpen) {\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition);\n };\n }\n }, [isOpen, updateDropdownPosition]);\n\n const handleLanguageChange = (langKey: string) => {\n onLanguageChange?.(langKey);\n setIsOpen(false);\n };\n\n const filteredLanguages = availableLanguages.reduce(\n (acc, langCode) => {\n if (ALL_LANGUAGES[langCode as keyof typeof ALL_LANGUAGES]) {\n acc[langCode] = ALL_LANGUAGES[langCode as keyof typeof ALL_LANGUAGES];\n }\n return acc;\n },\n {} as Record<string, (typeof ALL_LANGUAGES)[keyof typeof ALL_LANGUAGES]>,\n );\n\n const currentLanguage =\n filteredLanguages[selectedLanguage as keyof typeof filteredLanguages] ||\n Object.values(filteredLanguages)[0];\n\n const getLanguageName = (lang: {\n name: string | Record<string, string>;\n flag: React.ComponentType<{ className?: string }>;\n code: string;\n }) => {\n if (typeof lang.name === 'string') {\n return lang.name;\n }\n return lang.name[selectedLanguage] || lang.name[Object.keys(lang.name)[0]] || '';\n };\n const languageEntries = Object.entries(filteredLanguages);\n\n const buttonStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getButtonBaseStyles(),\n ...getButtonSizeStyles(size),\n backgroundColor: selectorColors.buttonBg,\n borderColor: selectorColors.buttonBorder,\n };\n\n const dropdownStyle: CSSProperties = {\n ...getDropdownBaseStyles(),\n top: dropdownPosition.openUpward\n ? 'auto'\n : `${dropdownPosition.top + LANGUAGE_SELECTOR_DROPDOWN_OFFSET}px`,\n bottom: dropdownPosition.openUpward\n ? `calc(100vh - ${dropdownPosition.top}px + ${LANGUAGE_SELECTOR_DROPDOWN_OFFSET}px)`\n : 'auto',\n left: `${dropdownPosition.left}px`,\n backgroundColor: selectorColors.dropdownBg,\n borderColor: selectorColors.dropdownBorder,\n };\n\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n buttonRef.current = node;\n },\n [ref],\n );\n\n return (\n <>\n <button\n ref={setRefs}\n onClick={() => setIsOpen(!isOpen)}\n className={buttonClassName}\n style={buttonStyle}\n onMouseEnter={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorderHover;\n e.currentTarget.style.transform = 'scale(1.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorder;\n e.currentTarget.style.transform = 'scale(1)';\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorderFocus;\n e.currentTarget.style.boxShadow = `0 0 0 0.1875rem ${adjustOpacity(selectorColors.buttonBorderFocus, 0.1)}`;\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorder;\n e.currentTarget.style.boxShadow = 'none';\n }}\n aria-label=\"Select language\"\n title={getLanguageName(currentLanguage)}\n >\n {currentLanguage?.flag && (\n <div style={getFlagScaleStyles(size)}>\n <currentLanguage.flag />\n </div>\n )}\n </button>\n\n {isOpen && (\n <div ref={dropdownRef} className={dropdownClassName} style={dropdownStyle}>\n {languageEntries.map(([key, lang]) => {\n const isActive = selectedLanguage === key;\n\n const itemStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getItemBaseStyles(),\n color: selectorColors.itemText,\n backgroundColor: isActive ? selectorColors.activeItemBg : 'transparent',\n };\n\n const flagContainerStyle: CSSProperties = {\n ...getFlagContainerStyles(),\n ...getFlagSizeStyles(size),\n borderColor: selectorColors.dropdownBorder,\n };\n\n return (\n <button\n key={key}\n onClick={() => handleLanguageChange(key)}\n className={isActive ? activeItemClassName : itemClassName}\n style={itemStyle}\n onMouseEnter={(e) => {\n if (!isActive) {\n e.currentTarget.style.backgroundColor = selectorColors.itemHoverBg;\n }\n }}\n onMouseLeave={(e) => {\n if (!isActive) {\n e.currentTarget.style.backgroundColor = 'transparent';\n }\n }}\n >\n <div style={flagContainerStyle}>\n <div style={getFlagScaleStyles(size)}>\n <lang.flag />\n </div>\n </div>\n <span>{getLanguageName(lang)}</span>\n {isActive && (\n <svg\n style={{\n ...getCheckIconStyles(),\n color: selectorColors.checkIconColor,\n }}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n },\n);\n\nLanguageSelector.displayName = LANGUAGE_SELECTOR_DISPLAY_NAME;\n","type ThemeIconProps = {\n mode: 'light' | 'dark';\n size?: number;\n className?: string;\n};\n\nexport const ThemeIcon = ({ mode, size = 24, className }: ThemeIconProps) => {\n const zoomAnimation = `\n @keyframes zoomInSun {\n 0% { \n transform: scale(0.7) rotate(-90deg); \n opacity: 0; \n }\n 60% { \n transform: scale(1.15) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n }\n\n @keyframes zoomInMoon {\n 0% { \n transform: scale(0.7) rotate(90deg); \n opacity: 0; \n }\n 60% { \n transform: scale(1.15) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n }\n\n @keyframes zoomOutSun {\n 0% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(0.7) rotate(90deg); \n opacity: 0; \n }\n }\n\n @keyframes zoomOutMoon {\n 0% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(0.7) rotate(-90deg); \n opacity: 0; \n }\n }\n `;\n\n return (\n <>\n <style>{zoomAnimation}</style>\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g\n style={{\n transformOrigin: 'center',\n animation:\n mode === 'light'\n ? 'zoomInSun 0.5s ease-out forwards'\n : 'zoomOutSun 0.4s ease-in forwards',\n }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" fill=\"#E6B95C\" />\n <path d=\"M12 2L13.5 6.5L12 5L10.5 6.5L12 2Z\" fill=\"#E6B95C\" />\n <path d=\"M12 22L13.5 17.5L12 19L10.5 17.5L12 22Z\" fill=\"#E6B95C\" />\n <path d=\"M2 12L6.5 10.5L5 12L6.5 13.5L2 12Z\" fill=\"#E6B95C\" />\n <path d=\"M22 12L17.5 10.5L19 12L17.5 13.5L22 12Z\" fill=\"#E6B95C\" />\n <path d=\"M5.6 5.6L9.2 9.2L7.8 7.8L9.2 6.4L5.6 5.6Z\" fill=\"#E6B95C\" />\n <path d=\"M18.4 18.4L14.8 14.8L16.2 16.2L14.8 17.6L18.4 18.4Z\" fill=\"#E6B95C\" />\n <path d=\"M18.4 5.6L14.8 9.2L16.2 7.8L14.8 6.4L18.4 5.6Z\" fill=\"#E6B95C\" />\n <path d=\"M5.6 18.4L9.2 14.8L7.8 16.2L9.2 17.6L5.6 18.4Z\" fill=\"#E6B95C\" />\n </g>\n\n <g\n style={{\n transformOrigin: 'center',\n animation:\n mode === 'dark'\n ? 'zoomInMoon 0.5s ease-out forwards'\n : 'zoomOutMoon 0.4s ease-in forwards',\n }}\n >\n <path\n d=\"M20 15.31C18.76 16.42 17.11 17.1 15.3 17.1C11.42 17.1 8.28 13.96 8.28 10.08C8.28 8.27 8.96 6.62 10.07 5.38C6.12 6.05 3.18 9.52 3.18 13.68C3.18 18.27 6.91 22 11.5 22C15.66 22 19.13 19.06 19.8 15.11L20 15.31Z\"\n fill=\"#C9D1D9\"\n />\n <circle cx=\"11\" cy=\"9\" r=\"1.2\" fill=\"#C9D1D9\" opacity=\"0.6\" />\n <circle cx=\"14\" cy=\"11\" r=\"0.8\" fill=\"#C9D1D9\" opacity=\"0.5\" />\n <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"#C9D1D9\" opacity=\"0.4\" />\n <path d=\"M15 7L15.8 8.5L15 8L14.2 8.5L15 7Z\" fill=\"#C9D1D9\" opacity=\"0.7\" />\n <path d=\"M17.5 11L18.2 12.2L17.5 11.8L16.8 12.2L17.5 11Z\" fill=\"#C9D1D9\" opacity=\"0.6\" />\n </g>\n </svg>\n </>\n );\n};\n","'use client';\n\nimport React, { useMemo, CSSProperties } from 'react';\nimport { ThemeSelectorProps } from './models/ThemeSelector.interface';\nimport { ThemeIcon } from './icons/ThemeIcon';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor } from '@/app/utils/colorUtils';\n\nconst getButtonSizeStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: { width: '2rem', height: '2rem' },\n md: { width: '2.5rem', height: '2.5rem' },\n lg: { width: '3rem', height: '3rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getIconSizeStyles = (size: string): number => {\n const sizeMap: Record<string, number> = {\n sm: 32,\n md: 42,\n lg: 54,\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getButtonBaseStyles = (): CSSProperties => ({\n borderRadius: '9999px',\n overflow: 'hidden',\n transition: 'all 300ms',\n outline: 'none',\n border: '2px solid',\n cursor: 'pointer',\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n});\n\nexport const ThemeSelector = React.forwardRef<HTMLButtonElement, ThemeSelectorProps>(\n (\n {\n theme = 'light',\n onThemeChange,\n size = 'md',\n buttonClassName,\n disableDefaultStyles = false,\n colors,\n customBorderColor,\n customBgColor,\n },\n ref,\n ) => {\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const selectorColors = useMemo(() => {\n const buttonBg = customBgColor || '#000000';\n const textColor = getContrastColor(buttonBg);\n const buttonBorder = customBorderColor || adjustOpacity(textColor, 0.2);\n const buttonBorderHover = colorConfig.accent || colorConfig.primary;\n\n return {\n buttonBg,\n buttonBorder,\n buttonBorderHover,\n };\n }, [colorConfig, customBorderColor, customBgColor]);\n\n const handleThemeToggle = () => {\n const newTheme = theme === 'light' ? 'dark' : 'light';\n onThemeChange?.(newTheme);\n };\n\n const buttonStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getButtonBaseStyles(),\n ...getButtonSizeStyles(size),\n backgroundColor: selectorColors.buttonBg,\n borderColor: selectorColors.buttonBorder,\n };\n\n const iconSize = getIconSizeStyles(size);\n\n return (\n <button\n ref={ref}\n onClick={handleThemeToggle}\n className={buttonClassName}\n style={\n disableDefaultStyles\n ? {}\n : {\n ...buttonStyle,\n ...(buttonClassName\n ? {}\n : { '&:hover': { borderColor: selectorColors.buttonBorderHover } }),\n }\n }\n onMouseEnter={(e) => {\n if (!disableDefaultStyles) {\n e.currentTarget.style.borderColor = selectorColors.buttonBorderHover;\n }\n }}\n onMouseLeave={(e) => {\n if (!disableDefaultStyles) {\n e.currentTarget.style.borderColor = selectorColors.buttonBorder;\n }\n }}\n aria-label={`Switch to ${theme === 'light' ? 'dark' : 'light'} theme`}\n >\n <ThemeIcon mode={theme} size={iconSize} />\n </button>\n );\n },\n);\n\nThemeSelector.displayName = 'ThemeSelector';\n","// Display name constant\nexport const ACTION_ICON_DISPLAY_NAME = 'ActionIcon';\n","'use client';\n\nimport React, { useState, useMemo, CSSProperties } from 'react';\nimport { ActionIconProps } from './models/ActionIcon.interface';\nimport { ACTION_ICON_DISPLAY_NAME } from '@/app/constants/components/actionicon/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { getHoverColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst SIZE_CONFIG = {\n sm: {\n padding: '0.1875rem',\n margin: '0.0625rem',\n iconSize: '0.875rem',\n },\n md: {\n padding: '0.25rem',\n margin: '0.0625rem',\n iconSize: '1rem',\n },\n lg: {\n padding: '0.375rem',\n margin: '0.125rem',\n iconSize: '1.25rem',\n },\n} as const;\n\nexport const ActionIcon: React.FC<ActionIconProps> = ({\n icon: Icon,\n onClick,\n title,\n size = 'md',\n className = '',\n disabled = false,\n colors,\n customColor,\n customBg,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n const sizeConfig = SIZE_CONFIG[size];\n\n const iconColors = useMemo(() => {\n const baseColor = customColor || colorConfig.primary;\n const hoverColor = getHoverColor(baseColor);\n const hoverBg = customBg ? getHoverColor(customBg, 5) : adjustOpacity(baseColor, 0.1);\n const disabledColor = adjustOpacity(baseColor, 0.4);\n\n return {\n color: baseColor,\n hoverColor,\n hoverBg,\n disabledColor,\n };\n }, [colorConfig, customColor, customBg]);\n\n const getButtonStyles = (): CSSProperties => {\n const baseStyles: CSSProperties = {\n background: 'transparent',\n border: 'none',\n cursor: disabled ? 'not-allowed' : 'pointer',\n transition: 'all 200ms ease-in-out',\n borderRadius: '0.375rem',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: sizeConfig.padding,\n marginLeft: sizeConfig.margin,\n marginRight: sizeConfig.margin,\n opacity: disabled ? 0.5 : 1,\n color: disabled ? iconColors.disabledColor : iconColors.color,\n backgroundColor: isHovered && !disabled ? iconColors.hoverBg : 'transparent',\n transform:\n isHovered && !disabled\n ? 'translateY(-0.125rem)'\n : isActive && !disabled\n ? 'translateY(0)'\n : 'none',\n };\n\n return baseStyles;\n };\n\n const getIconStyles = (): CSSProperties => ({\n width: sizeConfig.iconSize,\n height: sizeConfig.iconSize,\n transition: 'transform 200ms ease-in-out',\n transform: isHovered && !disabled ? 'scale(1.1)' : 'scale(1)',\n });\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n title={title}\n className={className}\n disabled={disabled}\n type=\"button\"\n style={getButtonStyles()}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsActive(false);\n }}\n onMouseDown={() => setIsActive(true)}\n onMouseUp={() => setIsActive(false)}\n >\n <Icon style={getIconStyles()} />\n </button>\n );\n};\n\nActionIcon.displayName = ACTION_ICON_DISPLAY_NAME;\n\nexport default ActionIcon;\n","'use client';\n\nimport React, { useState, useEffect, useMemo, CSSProperties } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LoaderProps } from './models/Loader.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, darkenColor } from '@/app/utils/colorUtils';\n\nconst LOADER_DISPLAY_NAME = 'Loader';\nconst LOADER_DEFAULT_SIZE = 'md';\nconst LOADER_DEFAULT_VARIANT = 'spinner';\n\nconst getLoaderSizeStyles = (size: string): { width: string; height: string } => {\n const sizeMap: Record<string, { width: string; height: string }> = {\n sm: { width: '2rem', height: '2rem' },\n md: { width: '3rem', height: '3rem' },\n lg: { width: '4rem', height: '4rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getTextSizeStyles = (size: string): { fontSize: string } => {\n const sizeMap: Record<string, { fontSize: string }> = {\n sm: { fontSize: '0.875rem' },\n md: { fontSize: '1rem' },\n lg: { fontSize: '1.125rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getDotSizeStyles = (size: string): { width: string; height: string } => {\n const sizeMap: Record<string, { width: string; height: string }> = {\n sm: { width: '0.5rem', height: '0.5rem' },\n md: { width: '0.75rem', height: '0.75rem' },\n lg: { width: '1rem', height: '1rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nexport const Loader: React.FC<LoaderProps> = ({\n text,\n size = LOADER_DEFAULT_SIZE,\n variant = LOADER_DEFAULT_VARIANT,\n fullScreen = false,\n overlay = true,\n colors,\n customOverlayColor,\n customSpinnerColor,\n}) => {\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const loaderColors = useMemo(() => {\n const spinnerColor = customSpinnerColor || colorConfig.primary;\n const overlayColor =\n customOverlayColor || adjustOpacity(darkenColor(colorConfig.secondary, 80), 0.5);\n\n return {\n spinner: spinnerColor,\n overlay: overlayColor,\n };\n }, [colorConfig, customSpinnerColor, customOverlayColor]);\n\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => setMounted(true), fullScreen ? 0 : 0);\n return () => {\n clearTimeout(timer);\n setMounted(false);\n };\n }, [fullScreen]);\n\n if (fullScreen && !mounted) return null;\n\n const sizeStyles = getLoaderSizeStyles(size);\n const textSizeStyles = getTextSizeStyles(size);\n const dotSizeStyles = getDotSizeStyles(size);\n\n const containerStyle: CSSProperties = fullScreen\n ? {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1005,\n backdropFilter: overlay ? 'blur(4px)' : undefined,\n backgroundColor: overlay ? loaderColors.overlay : undefined,\n }\n : {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: overlay ? loaderColors.overlay : undefined,\n };\n\n const contentContainerStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '1rem',\n };\n\n const spinnerContainerStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n };\n\n const dotsContainerStyle: CSSProperties = {\n display: 'flex',\n gap: '0.5rem',\n };\n\n const pulseContainerStyle: CSSProperties = {\n position: 'relative',\n };\n\n const textStyle: CSSProperties = {\n ...textSizeStyles,\n color: 'white',\n fontWeight: 500,\n animation: 'pulse-text 1.5s ease-in-out infinite',\n };\n\n const renderSpinner = () => (\n <div style={spinnerContainerStyle}>\n <style>{`\n @keyframes spin-modern {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n @keyframes pulse-ring {\n 0% { transform: scale(0.8); opacity: 0.8; }\n 50% { transform: scale(1); opacity: 0.4; }\n 100% { transform: scale(0.8); opacity: 0.8; }\n }\n .modern-spinner {\n border: 3px solid transparent;\n border-top-color: ${loaderColors.spinner};\n border-right-color: ${loaderColors.spinner};\n border-radius: 50%;\n animation: spin-modern 0.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n position: relative;\n }\n .modern-spinner::before {\n content: '';\n position: absolute;\n top: -3px;\n left: -3px;\n right: -3px;\n bottom: -3px;\n border: 3px solid ${loaderColors.spinner}20;\n border-radius: 50%;\n animation: pulse-ring 1.5s ease-in-out infinite;\n }\n `}</style>\n <div className=\"modern-spinner\" style={sizeStyles} />\n </div>\n );\n\n const renderDots = () => (\n <div style={dotsContainerStyle}>\n <style>{`\n @keyframes bounce-dot {\n 0%, 80%, 100% { transform: translateY(0) scale(1); }\n 40% { transform: translateY(-10px) scale(1.1); }\n }\n .dot-1 { animation: bounce-dot 1.4s infinite ease-in-out; }\n .dot-2 { animation: bounce-dot 1.4s infinite ease-in-out 0.2s; }\n .dot-3 { animation: bounce-dot 1.4s infinite ease-in-out 0.4s; }\n `}</style>\n <div\n className=\"dot-1\"\n style={{ ...dotSizeStyles, borderRadius: '9999px', backgroundColor: loaderColors.spinner }}\n />\n <div\n className=\"dot-2\"\n style={{ ...dotSizeStyles, borderRadius: '9999px', backgroundColor: loaderColors.spinner }}\n />\n <div\n className=\"dot-3\"\n style={{ ...dotSizeStyles, borderRadius: '9999px', backgroundColor: loaderColors.spinner }}\n />\n </div>\n );\n\n const renderPulse = () => (\n <div style={pulseContainerStyle}>\n <style>{`\n @keyframes pulse-scale {\n 0%, 100% { transform: scale(0.8); opacity: 1; }\n 50% { transform: scale(1.2); opacity: 0.6; }\n }\n @keyframes pulse-outer {\n 0% { transform: scale(0.8); opacity: 0.8; }\n 100% { transform: scale(1.5); opacity: 0; }\n }\n .pulse-core {\n border-radius: 50%;\n animation: pulse-scale 1.5s ease-in-out infinite;\n }\n .pulse-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 50%;\n border: 2px solid ${loaderColors.spinner};\n animation: pulse-outer 1.5s ease-out infinite;\n }\n @keyframes pulse-text {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n `}</style>\n <div style={{ position: 'relative', width: '4rem', height: '4rem' }}>\n <div\n className=\"pulse-core\"\n style={{ ...sizeStyles, backgroundColor: loaderColors.spinner }}\n />\n <div className=\"pulse-ring\" style={{ ...sizeStyles, width: '100%', height: '100%' }} />\n </div>\n </div>\n );\n\n const loaderContent = (\n <div style={containerStyle}>\n <div style={contentContainerStyle}>\n {variant === 'spinner' && renderSpinner()}\n {variant === 'dots' && renderDots()}\n {variant === 'pulse' && renderPulse()}\n {text && <p style={textStyle}>{text}</p>}\n </div>\n </div>\n );\n\n return fullScreen ? createPortal(loaderContent, document.body) : loaderContent;\n};\n\nLoader.displayName = LOADER_DISPLAY_NAME;\n\nexport default Loader;\n","'use client';\n\nimport React, { CSSProperties } from 'react';\nimport { TableProps } from './models/Table.interface';\nimport ActionIcon from '../ActionIcon/ActionIcon';\nimport {\n TABLE_DEFAULT_NO_DATA_MESSAGE,\n TABLE_DEFAULT_ACTIONS_LABEL,\n TABLE_DISPLAY_NAME,\n} from '@/app/constants/components/table/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { darkenColor, lightenColor, getContrastColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst getTableContainerStyles = (): CSSProperties => ({\n width: '100%',\n maxWidth: '75rem',\n borderCollapse: 'separate' as const,\n borderSpacing: 0,\n borderRadius: '0.75rem',\n overflow: 'hidden',\n boxShadow: '0 0.25rem 0.75rem rgba(0, 0, 0, 0.08)',\n});\n\nconst getNoDataStyles = (): CSSProperties => ({\n textAlign: 'center' as const,\n padding: '2rem 1.25rem',\n fontSize: '1rem',\n fontWeight: 500,\n borderRadius: '0.75rem',\n border: '2px dashed',\n maxWidth: '75rem',\n width: '100%',\n});\n\nconst getHeaderCellBaseStyles = (): CSSProperties => ({\n padding: '0.625rem 1.25rem',\n textAlign: 'left' as const,\n textTransform: 'uppercase' as const,\n fontSize: '0.8125rem',\n fontWeight: 600,\n letterSpacing: '0.08em',\n borderBottom: '2px solid',\n userSelect: 'none' as const,\n whiteSpace: 'nowrap' as const,\n});\n\nconst getHeaderCellSortableStyles = (): CSSProperties => ({\n cursor: 'pointer',\n transition: 'all 200ms',\n position: 'relative' as const,\n});\n\nconst getTheadStyles = (): CSSProperties => ({\n position: 'sticky' as const,\n top: 0,\n zIndex: 10,\n});\n\nconst getActionsHeaderStyles = (): CSSProperties => ({\n textAlign: 'center' as const,\n width: '9.375rem',\n});\n\nconst getSortIconContainerStyles = (): CSSProperties => ({\n marginLeft: '0.375rem',\n display: 'inline-flex',\n alignItems: 'center',\n verticalAlign: 'middle',\n opacity: 0.8,\n transition: 'opacity 200ms',\n});\n\nconst getSortIconStyles = (): CSSProperties => ({\n width: '0.875rem',\n height: '0.875rem',\n});\n\nconst getBodyCellStyles = (): CSSProperties => ({\n padding: '0.5rem 1.25rem',\n textAlign: 'left' as const,\n fontSize: '0.875rem',\n fontWeight: 500,\n borderBottom: '1px solid',\n});\n\nconst getActionsCellStyles = (): CSSProperties => ({\n textAlign: 'center' as const,\n whiteSpace: 'nowrap' as const,\n lineHeight: 1,\n verticalAlign: 'middle' as const,\n});\n\nconst getRowStyles = (): CSSProperties => ({\n transition: 'all 200ms',\n});\n\nconst ArrowUpDown: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m21 16-4 4-4-4\" />\n <path d=\"M17 20V4\" />\n <path d=\"m3 8 4-4 4 4\" />\n <path d=\"M7 4v16\" />\n </svg>\n);\n\nconst ArrowUp: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n);\n\nconst ArrowDown: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n);\n\nconst InfoIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n);\n\nconst EditIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n <path d=\"m15 5 4 4\" />\n </svg>\n);\n\nconst TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n);\n\nexport const Table = <T extends Record<string, unknown>>({\n columns = [],\n data = [],\n onInfo,\n onEdit,\n onDelete,\n sortField,\n sortDirection = 'asc',\n onSort,\n noDataMessage = TABLE_DEFAULT_NO_DATA_MESSAGE,\n showActions = true,\n actionConfig = { info: true, edit: true, delete: true },\n actionsLabel = TABLE_DEFAULT_ACTIONS_LABEL,\n infoIcon = InfoIcon,\n editIcon = EditIcon,\n deleteIcon = TrashIcon,\n colors = DEFAULT_COLOR_CONFIG,\n customHeaderBg,\n customRowBg,\n}: TableProps<T>) => {\n const headerBgFrom = customHeaderBg || colors.primary;\n const headerBgTo = customHeaderBg || colors.secondary;\n const headerTextColor = getContrastColor(headerBgFrom);\n const headerBorderColor = adjustOpacity(headerTextColor, 0.1);\n const headerHoverBg = adjustOpacity(headerTextColor, 0.1);\n const rowBg = customRowBg || darkenColor(colors.secondary, 60);\n const rowEvenBg = customRowBg || darkenColor(colors.secondary, 55);\n const rowHoverBg = lightenColor(rowBg, 8);\n const cellTextColor = getContrastColor(rowBg);\n const cellBorderColor = adjustOpacity(cellTextColor, 0.1);\n const actionDeleteHoverColor = colors.danger || darkenColor(colors.accent, 20);\n const noDataBg = rowBg;\n const noDataTextColor = adjustOpacity(cellTextColor, 0.6);\n const noDataBorderColor = adjustOpacity(cellTextColor, 0.1);\n\n const noDataStyle: CSSProperties = {\n ...getNoDataStyles(),\n background: noDataBg,\n color: noDataTextColor,\n borderColor: noDataBorderColor,\n };\n\n const getSortIcon = (field: string) => {\n if (sortField !== field) {\n return <ArrowUpDown style={getSortIconStyles()} />;\n }\n return sortDirection === 'asc' ? (\n <ArrowUp style={getSortIconStyles()} />\n ) : (\n <ArrowDown style={getSortIconStyles()} />\n );\n };\n\n const handleSort = (field: string) => {\n if (onSort && field) {\n onSort(field);\n }\n };\n\n if (data.length === 0) {\n return <div style={noDataStyle}>{noDataMessage}</div>;\n }\n\n return (\n <table style={getTableContainerStyles()}>\n <thead style={getTheadStyles()}>\n <tr\n style={{\n background: `linear-gradient(to right, ${headerBgFrom}, ${headerBgTo})`,\n color: headerTextColor,\n }}\n >\n {columns.map((column, index) =>\n column.sortable ? (\n <th\n key={column.key || index}\n onClick={() => handleSort(column.key)}\n style={{\n ...getHeaderCellBaseStyles(),\n ...getHeaderCellSortableStyles(),\n borderBottomColor: headerBorderColor,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = headerHoverBg;\n const icon = e.currentTarget.querySelector('.sort-icon') as HTMLElement;\n if (icon) icon.style.opacity = '1';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n const icon = e.currentTarget.querySelector('.sort-icon') as HTMLElement;\n if (icon) icon.style.opacity = '0.8';\n }}\n onMouseDown={(e) => {\n e.currentTarget.style.transform = 'scale(0.98)';\n }}\n onMouseUp={(e) => {\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n {column.label}{' '}\n <span className=\"sort-icon\" style={getSortIconContainerStyles()}>\n {getSortIcon(column.key)}\n </span>\n </th>\n ) : (\n <th\n key={column.key || index}\n style={{\n ...getHeaderCellBaseStyles(),\n borderBottomColor: headerBorderColor,\n }}\n >\n {column.label}\n </th>\n ),\n )}\n {showActions && (\n <th\n style={{\n ...getHeaderCellBaseStyles(),\n ...getActionsHeaderStyles(),\n borderBottomColor: headerBorderColor,\n }}\n >\n {actionsLabel}\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {data.map((item, rowIndex) => (\n <tr\n key={(item as { id?: string | number }).id || rowIndex}\n style={{\n ...getRowStyles(),\n backgroundColor: rowIndex % 2 === 0 ? rowBg : rowEvenBg,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = rowHoverBg;\n e.currentTarget.style.transform = 'translateY(-0.0625rem)';\n e.currentTarget.style.boxShadow = '0 0.125rem 0.5rem rgba(0, 0, 0, 0.06)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = rowIndex % 2 === 0 ? rowBg : rowEvenBg;\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }}\n >\n {columns.map((column, colIndex) => (\n <td\n key={column.key || colIndex}\n style={{\n ...getBodyCellStyles(),\n color: cellTextColor,\n borderBottomColor: cellBorderColor,\n paddingTop: rowIndex === 0 ? '0.25rem' : undefined,\n }}\n >\n {column.render\n ? column.render(item[column.key], item)\n : (String(item[column.key] ?? '-') as React.ReactNode)}\n </td>\n ))}\n {showActions && (\n <td\n style={{\n ...getBodyCellStyles(),\n ...getActionsCellStyles(),\n color: cellTextColor,\n borderBottomColor: cellBorderColor,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.125rem',\n }}\n >\n {actionConfig.info && onInfo && (\n <ActionIcon\n icon={infoIcon}\n onClick={() => onInfo(item)}\n colors={colors}\n size=\"sm\"\n />\n )}\n {actionConfig.edit && onEdit && (\n <ActionIcon\n icon={editIcon}\n onClick={() => onEdit(item)}\n colors={colors}\n size=\"sm\"\n />\n )}\n {actionConfig.delete && onDelete && (\n <ActionIcon\n icon={deleteIcon}\n onClick={() => onDelete(item)}\n colors={colors}\n customColor={actionDeleteHoverColor}\n size=\"sm\"\n />\n )}\n </div>\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nTable.displayName = TABLE_DISPLAY_NAME;\n\nexport default Table;\n","import React, { useState, CSSProperties } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport type { BaseModalProps } from './models/BaseModal.interface';\nimport { MODAL_DEFAULT_TEXTS } from '@/app/constants/components/modal/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { darkenColor, getContrastColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst getOverlayStyles = (overlayBg: string): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1002,\n padding: '1.25rem',\n backgroundColor: overlayBg,\n});\n\nconst getModalContainerStyles = (maxWidth: string, modalBg: string): CSSProperties => ({\n borderRadius: '1rem',\n width: '90%',\n maxWidth,\n maxHeight: '85vh',\n overflow: 'hidden',\n boxShadow: '0 0.625rem 2.5rem rgba(0,0,0,0.3)',\n display: 'flex',\n flexDirection: 'column' as const,\n backgroundColor: modalBg,\n});\n\nconst getHeaderStyles = (\n headerBgFrom: string,\n headerBgTo: string,\n headerTextColor: string,\n): CSSProperties => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '1.25rem 1.875rem',\n borderRadius: '1rem 1rem 0 0',\n background: `linear-gradient(to bottom right, ${headerBgFrom}, ${headerBgTo})`,\n color: headerTextColor,\n});\n\nconst getHeaderTitleContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.9375rem',\n});\n\nconst getHeaderIconStyles = (): CSSProperties => ({\n fontSize: '1.75rem',\n display: 'flex',\n alignItems: 'center',\n});\n\nconst getHeaderTitleStyles = (): CSSProperties => ({\n fontSize: '1.5rem',\n fontWeight: 'bold',\n margin: 0,\n});\n\nconst getCloseButtonStyles = (closeBtnBg: string, closeBtnColor: string): CSSProperties => ({\n border: 'none',\n fontSize: '1.5rem',\n cursor: 'pointer',\n padding: '0.5rem',\n borderRadius: '9999px',\n width: '2.5rem',\n height: '2.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 300ms',\n backgroundColor: closeBtnBg,\n color: closeBtnColor,\n});\n\nconst getStatsContainerStyles = (\n statsCount: number,\n statsBgFrom: string,\n statsBgTo: string,\n statsBorderColor: string,\n): CSSProperties => ({\n display: 'flex',\n justifyContent: statsCount === 1 ? 'center' : 'space-around',\n padding: '1.25rem',\n borderBottom: '1px solid',\n background: `linear-gradient(to right, ${statsBgFrom}, ${statsBgTo})`,\n borderColor: statsBorderColor,\n});\n\nconst getStatItemStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n flexDirection: 'column' as const,\n textAlign: 'center' as const,\n});\n\nconst getStatIconStyles = (color: string): CSSProperties => ({\n fontSize: '2rem',\n color,\n});\n\nconst getStatContentStyles = (): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n});\n\nconst getStatNumberStyles = (color: string): CSSProperties => ({\n fontSize: '1.5rem',\n fontWeight: 'bold',\n lineHeight: 1,\n color,\n});\n\nconst getStatLabelStyles = (color: string): CSSProperties => ({\n fontSize: '0.75rem',\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n marginTop: '0.125rem',\n color,\n});\n\nconst getContentStyles = (): CSSProperties => ({\n padding: '1.5625rem 1.875rem',\n overflowY: 'auto' as const,\n flex: 1,\n});\n\nconst getConfirmOverlayStyles = (confirmOverlayBg: string): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1003,\n padding: '1.25rem',\n backgroundColor: confirmOverlayBg,\n});\n\nconst getConfirmModalStyles = (modalBg: string): CSSProperties => ({\n borderRadius: '1rem',\n width: '90%',\n maxWidth: '28.125rem',\n boxShadow: '0 10px 40px rgba(0,0,0,0.4)',\n overflow: 'hidden',\n backgroundColor: modalBg,\n padding: '2rem',\n});\n\nconst getConfirmTitleStyles = (confirmTextColor: string): CSSProperties => ({\n margin: '0 0 0.5rem 0',\n fontSize: '1.5rem',\n fontWeight: 'bold',\n color: confirmTextColor,\n});\n\nconst getConfirmTextStyles = (confirmDangerTextColor: string): CSSProperties => ({\n margin: '0 0 1.5rem 0',\n fontSize: '0.9375rem',\n lineHeight: 1.6,\n color: confirmDangerTextColor,\n});\n\nconst getConfirmFooterStyles = (): CSSProperties => ({\n display: 'flex',\n gap: '0.75rem',\n justifyContent: 'flex-end',\n});\n\nconst getContinueButtonStyles = (\n modalBg: string,\n continueBtnBorder: string,\n continueBtnColor: string,\n): CSSProperties => ({\n padding: '0.625rem 1.25rem',\n border: `1px solid ${continueBtnBorder}`,\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n fontWeight: '600',\n cursor: 'pointer',\n transition: 'all 200ms',\n backgroundColor: modalBg,\n color: continueBtnColor,\n});\n\nconst getDiscardButtonStyles = (\n modalBg: string,\n discardBtnBorder: string,\n discardBtnColor: string,\n): CSSProperties => ({\n padding: '0.625rem 1.25rem',\n border: `1px solid ${discardBtnBorder}`,\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n fontWeight: '600',\n cursor: 'pointer',\n transition: 'all 200ms',\n backgroundColor: modalBg,\n color: discardBtnColor,\n});\n\nexport const BaseModal: React.FC<BaseModalProps> = ({\n isOpen,\n onClose,\n title,\n icon: Icon,\n children,\n stats,\n maxWidth = '56.25rem',\n showCloseButton = true,\n hasUnsavedChanges = false,\n texts = MODAL_DEFAULT_TEXTS,\n colors = DEFAULT_COLOR_CONFIG,\n customOverlayBg,\n customModalBg,\n}) => {\n const [showConfirmation, setShowConfirmation] = useState(false);\n\n if (!isOpen) return null;\n\n const overlayBg = customOverlayBg || adjustOpacity(darkenColor(colors.secondary, 80), 0.6);\n const modalBg = customModalBg || darkenColor(colors.secondary, 60);\n const headerBgFrom = colors.primary;\n const headerBgTo = colors.secondary;\n const headerTextColor = getContrastColor(headerBgFrom);\n const closeBtnBg = adjustOpacity(headerTextColor, 0.2);\n const closeBtnHoverBg = adjustOpacity(headerTextColor, 0.3);\n const closeBtnColor = headerTextColor;\n\n const statsBgFrom = adjustOpacity(headerTextColor, 0.05);\n const statsBgTo = adjustOpacity(headerTextColor, 0.02);\n const statsBorderColor = adjustOpacity(headerTextColor, 0.1);\n const statsNumberColor = getContrastColor(modalBg);\n const statsLabelColor = adjustOpacity(statsNumberColor, 0.7);\n\n const scrollbarTrackColor = adjustOpacity(statsNumberColor, 0.05);\n const scrollbarThumbColor = adjustOpacity(statsNumberColor, 0.15);\n\n const confirmOverlayBg = adjustOpacity(darkenColor(colors.secondary, 80), 0.7);\n const dangerColor = colors.danger || darkenColor(colors.accent, 20);\n const confirmTextColor = getContrastColor(modalBg);\n const confirmDangerTextColor = dangerColor;\n\n const continueBtnBorder = adjustOpacity(confirmTextColor, 0.2);\n const continueBtnColor = confirmTextColor;\n const continueBtnHoverBg = adjustOpacity(confirmTextColor, 0.1);\n const discardBtnBorder = dangerColor;\n const discardBtnColor = dangerColor;\n const discardBtnHoverBg = adjustOpacity(dangerColor, 0.1);\n\n const handleClose = () => {\n if (hasUnsavedChanges) {\n setShowConfirmation(true);\n } else {\n onClose();\n }\n };\n\n const handleConfirmClose = () => {\n setShowConfirmation(false);\n onClose();\n };\n\n const handleCancelClose = () => {\n setShowConfirmation(false);\n };\n\n const mergedTexts = { ...MODAL_DEFAULT_TEXTS, ...texts };\n\n const modalContent = (\n <>\n <style>{`\n @media (max-width: 768px) {\n .modal-container {\n width: 95% !important;\n max-height: 90vh !important;\n }\n .modal-header {\n padding: 0.9375rem 1.25rem !important;\n }\n .modal-header-icon {\n font-size: 1.5rem !important;\n }\n .modal-header-title {\n font-size: 1.25rem !important;\n }\n .modal-close-btn {\n width: 2.25rem !important;\n height: 2.25rem !important;\n font-size: 1.25rem !important;\n }\n .modal-stats {\n padding: 0.9375rem 0.625rem !important;\n }\n .modal-stat-item {\n gap: 0.5rem !important;\n }\n .modal-stat-icon {\n font-size: 1.5rem !important;\n }\n .modal-stat-number {\n font-size: 1.25rem !important;\n }\n .modal-content {\n padding: 1.25rem !important;\n }\n .modal-content::-webkit-scrollbar {\n width: 0.5rem;\n }\n .modal-content::-webkit-scrollbar-track {\n background-color: var(--scrollbar-track);\n border-radius: 0.75rem;\n }\n .modal-content::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb);\n border-radius: 0.75rem;\n }\n .confirm-footer {\n flex-direction: column-reverse !important;\n }\n .confirm-footer button {\n width: 100% !important;\n }\n }\n @media (max-width: 480px) {\n .modal-header-title {\n font-size: 1.125rem !important;\n }\n .modal-content {\n padding: 0.9375rem !important;\n }\n }\n .modal-content::-webkit-scrollbar {\n width: 0.5rem;\n }\n .modal-content::-webkit-scrollbar-track {\n background-color: var(--scrollbar-track);\n border-radius: 0.75rem;\n }\n .modal-content::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb);\n border-radius: 0.75rem;\n }\n `}</style>\n <div style={getOverlayStyles(overlayBg)}>\n <div\n onClick={(e) => e.stopPropagation()}\n className=\"modal-container\"\n style={getModalContainerStyles(maxWidth, modalBg)}\n >\n <div\n className=\"modal-header\"\n style={getHeaderStyles(headerBgFrom, headerBgTo, headerTextColor)}\n >\n <div style={getHeaderTitleContainerStyles()}>\n {Icon && (\n <div className=\"modal-header-icon\" style={getHeaderIconStyles()}>\n <Icon />\n </div>\n )}\n <h2 className=\"modal-header-title\" style={getHeaderTitleStyles()}>\n {title}\n </h2>\n </div>\n {showCloseButton && (\n <button\n onClick={handleClose}\n className=\"modal-close-btn\"\n style={getCloseButtonStyles(closeBtnBg, closeBtnColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = closeBtnHoverBg;\n e.currentTarget.style.transform = 'rotate(90deg)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = closeBtnBg;\n e.currentTarget.style.transform = 'rotate(0deg)';\n }}\n >\n <X />\n </button>\n )}\n </div>\n\n {stats && stats.length > 0 && (\n <div\n className=\"modal-stats\"\n style={getStatsContainerStyles(\n stats.length,\n statsBgFrom,\n statsBgTo,\n statsBorderColor,\n )}\n >\n {stats.map((stat, index) => (\n <div key={index} className=\"modal-stat-item\" style={getStatItemStyles()}>\n <div\n className=\"modal-stat-icon\"\n style={getStatIconStyles(stat.color || headerBgFrom)}\n >\n {stat.icon && <stat.icon />}\n </div>\n <div style={getStatContentStyles()}>\n <div\n className=\"modal-stat-number\"\n style={getStatNumberStyles(statsNumberColor)}\n >\n {stat.number}\n </div>\n <div style={getStatLabelStyles(statsLabelColor)}>{stat.label}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n <div\n className=\"modal-content\"\n style={{\n ...getContentStyles(),\n // @ts-expect-error - CSS custom properties for scrollbar\n '--scrollbar-track': scrollbarTrackColor,\n '--scrollbar-thumb': scrollbarThumbColor,\n }}\n >\n {children}\n </div>\n </div>\n </div>\n\n {showConfirmation && (\n <div style={getConfirmOverlayStyles(confirmOverlayBg)}>\n <div style={getConfirmModalStyles(modalBg)}>\n <h3 style={getConfirmTitleStyles(confirmTextColor)}>\n {mergedTexts.discardChangesTitle}\n </h3>\n <p style={getConfirmTextStyles(confirmDangerTextColor)}>\n {mergedTexts.unsavedChangesWarning}\n </p>\n <div className=\"confirm-footer\" style={getConfirmFooterStyles()}>\n <button\n onClick={handleCancelClose}\n style={getContinueButtonStyles(modalBg, continueBtnBorder, continueBtnColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = continueBtnHoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = modalBg;\n }}\n >\n {mergedTexts.continueEditing}\n </button>\n <button\n onClick={handleConfirmClose}\n style={getDiscardButtonStyles(modalBg, discardBtnBorder, discardBtnColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = discardBtnHoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = modalBg;\n }}\n >\n {mergedTexts.discardButton}\n </button>\n </div>\n </div>\n </div>\n )}\n </>\n );\n\n return createPortal(modalContent, document.body);\n};\n\nexport default BaseModal;\n","import React, { useState, ReactNode, CSSProperties } from 'react';\nimport { CheckCircle } from 'lucide-react';\nimport { BaseModal } from '../BaseModal/BaseModal';\nimport Button from '../Button/Button';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport type { ExtendedColorConfig } from '@/app/types/colors';\nimport { getContrastColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst getLoadingContainerStyles = (): CSSProperties => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '2.5rem 0',\n});\n\nconst getMessageStyles = (modalBg: string): CSSProperties => ({\n fontSize: '1rem',\n textAlign: 'center' as const,\n margin: '1.25rem 0',\n lineHeight: 1.5,\n color: adjustOpacity(getContrastColor(modalBg), 0.9),\n});\n\nconst getButtonContainerStyles = (): CSSProperties => ({\n display: 'flex',\n justifyContent: 'space-between',\n gap: '0.625rem',\n marginTop: '1.25rem',\n});\n\nexport interface ConfirmationModalProps {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => Promise<void> | void;\n message: string;\n confirmText?: string;\n cancelText?: string;\n loadingContent?: ReactNode;\n colors?: ExtendedColorConfig;\n}\n\nconst ConfirmationModal: React.FC<ConfirmationModalProps> = ({\n isOpen,\n onClose,\n onConfirm,\n message,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n loadingContent,\n colors,\n}) => {\n const [loading, setLoading] = useState(false);\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n if (!isOpen) return null;\n if (loading && loadingContent)\n return (\n <>\n <style>{`\n @media (max-width: 480px) {\n .confirm-message {\n font-size: 0.875rem !important;\n }\n .confirm-buttons {\n flex-direction: column !important;\n gap: 0.375rem !important;\n }\n }\n `}</style>\n <BaseModal\n isOpen={true}\n onClose={onClose}\n title=\"Processing\"\n icon={CheckCircle}\n maxWidth=\"28.125rem\"\n colors={colorConfig}\n >\n <div style={getLoadingContainerStyles()}>{loadingContent}</div>\n </BaseModal>\n </>\n );\n\n const handleConfirm = async () => {\n setLoading(true);\n try {\n await onConfirm();\n } finally {\n setLoading(false);\n onClose();\n }\n };\n\n const modalBg = colorConfig.secondary;\n\n return (\n <BaseModal\n isOpen={isOpen}\n onClose={onClose}\n title={confirmText}\n icon={CheckCircle}\n maxWidth=\"28.125rem\"\n colors={colorConfig}\n >\n <p className=\"confirm-message\" style={getMessageStyles(modalBg)}>\n {message}\n </p>\n <div className=\"confirm-buttons\" style={getButtonContainerStyles()}>\n <Button variant=\"secondary\" onClick={onClose} colors={colorConfig}>\n {cancelText}\n </Button>\n <Button variant=\"primary\" onClick={handleConfirm} colors={colorConfig}>\n {confirmText}\n </Button>\n </div>\n </BaseModal>\n );\n};\n\nexport default ConfirmationModal;\n","'use client';\n\nimport { useState, useCallback, useMemo, CSSProperties } from 'react';\nimport { usePathname, useRouter } from 'next/navigation';\nimport { SideBarProps, SideBarMenuItem } from './models/SideBar.interface';\nimport { DEFAULT_COLOR_CONFIG, hasExtendedColors } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor, lightenColor } from '@/app/utils/colorUtils';\nimport { LanguageSelector } from '../LanguageSelector/LanguageSelector';\n\nconst SIDEBAR_DISPLAY_NAME = 'SideBar';\n\nconst getContainerStyles = (\n isOpen: boolean,\n openWidth: string,\n closedWidth: string,\n backgroundColor: string,\n): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n height: '100vh',\n display: 'flex',\n flexDirection: 'column' as const,\n boxShadow: `0.125rem 0 0.3125rem ${adjustOpacity('#000', 0.2)}`,\n transition: 'width 300ms ease-in-out',\n zIndex: 100,\n overflowY: 'auto' as const,\n overflowX: 'visible' as const,\n paddingTop: '3.75rem',\n paddingBottom: '1.25rem',\n paddingLeft: 0,\n paddingRight: 0,\n width: isOpen ? openWidth : closedWidth,\n backgroundColor,\n});\n\nconst getListStyles = (): CSSProperties => ({\n listStyle: 'none',\n width: '100%',\n padding: 0,\n margin: 0,\n display: 'flex',\n flexDirection: 'column' as const,\n flex: 1,\n});\n\nconst getListItemStyles = (): CSSProperties => ({\n width: '100%',\n position: 'relative' as const,\n});\n\nconst getToggleButtonStyles = (toggleBtnBg: string, textColor: string): CSSProperties => ({\n position: 'absolute' as const,\n top: '0.75rem',\n left: '0.75rem',\n border: 'none',\n padding: '0.5rem',\n cursor: 'pointer',\n borderRadius: '0.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 100,\n width: '2.5rem',\n height: '2.5rem',\n transition: 'background-color 300ms',\n backgroundColor: toggleBtnBg,\n color: textColor,\n});\n\nconst getMenuItemButtonStyles = (isOpen: boolean, textColor: string): CSSProperties => ({\n backgroundColor: 'transparent',\n border: 'none',\n textDecoration: 'none',\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n borderRadius: 0,\n transition:\n 'padding 300ms ease-in-out, justify-content 300ms ease-in-out, background-color 300ms ease-in-out, color 300ms ease-in-out',\n cursor: 'pointer',\n fontSize: '1rem',\n minHeight: '3rem',\n position: 'relative' as const,\n padding: isOpen ? '0.75rem 1.25rem' : '0.75rem',\n justifyContent: isOpen ? 'flex-start' : 'center',\n color: textColor,\n});\n\nconst getIconStyles = (isOpen: boolean): CSSProperties => ({\n fontSize: '1.25rem',\n flexShrink: 0,\n marginRight: isOpen ? '0.75rem' : 0,\n transition: 'margin-right 300ms ease-in-out',\n});\n\nconst getTextStyles = (): CSSProperties => ({\n whiteSpace: 'nowrap' as const,\n overflow: 'hidden',\n transition: 'opacity 300ms ease-in-out',\n});\n\nconst getBottomSectionStyles = (): CSSProperties => ({\n marginTop: 'auto',\n});\n\nexport const SideBar = ({\n menuItems,\n logoutButton,\n isOpen: controlledIsOpen,\n onToggle,\n openWidth = '17.5rem',\n closedWidth = '4.375rem',\n colors = DEFAULT_COLOR_CONFIG,\n customBg,\n customTextColor,\n customHoverBg,\n customToggleBtnBg,\n customToggleBtnHoverBg,\n customLogoutTextColor,\n customLogoutHoverBg,\n customLogoutHoverTextColor,\n languageSelector,\n}: SideBarProps) => {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const currentPathname = usePathname();\n const router = useRouter();\n const isOpen = controlledIsOpen ?? internalIsOpen;\n\n const backgroundColor = customBg || colors.secondary;\n const textColor = customTextColor || getContrastColor(backgroundColor);\n const hoverBackgroundColor = customHoverBg || adjustOpacity(colors.primary, 0.8);\n const toggleBtnBg = customToggleBtnBg || adjustOpacity(textColor, 0.2);\n const toggleBtnHoverBg = customToggleBtnHoverBg || adjustOpacity(textColor, 0.3);\n\n const dangerColor = hasExtendedColors(colors) ? colors.danger : lightenColor(colors.accent, 10);\n const logoutTextColor = customLogoutTextColor || dangerColor;\n const logoutHoverBg = customLogoutHoverBg || adjustOpacity(dangerColor, 0.2);\n const logoutHoverTextColor = customLogoutHoverTextColor || dangerColor;\n\n const handleToggle = useCallback(() => {\n const newState = !isOpen;\n if (controlledIsOpen === undefined) {\n setInternalIsOpen(newState);\n }\n onToggle?.(newState);\n }, [isOpen, controlledIsOpen, onToggle]);\n\n const isMenuItemActive = useCallback(\n (item: SideBarMenuItem) => {\n if (item.isActive !== undefined) {\n return item.isActive;\n }\n if (item.href) {\n return (\n currentPathname === item.href ||\n (item.href !== '/' && currentPathname.startsWith(item.href + '/'))\n );\n }\n return false;\n },\n [currentPathname],\n );\n\n const { topItems, bottomItems, logoutItem } = useMemo(() => {\n const top: SideBarMenuItem[] = [];\n const bottom: SideBarMenuItem[] = [];\n let logout: SideBarMenuItem | null = null;\n\n menuItems.forEach((item) => {\n if (item.section === 'bottom') {\n bottom.push(item);\n } else {\n top.push(item);\n }\n });\n\n if (logoutButton) {\n logout = {\n id: 'logout',\n label: logoutButton.label,\n icon: logoutButton.icon,\n onClick: logoutButton.onClick,\n section: 'top',\n };\n }\n\n return { topItems: top, bottomItems: bottom, logoutItem: logout };\n }, [menuItems, logoutButton]);\n\n const renderMenuItem = useCallback(\n (item: SideBarMenuItem, isLogout = false) => {\n const isActive = isMenuItemActive(item);\n const itemTextColor = isActive ? colors.accent : isLogout ? logoutTextColor : textColor;\n const itemHoverBg = isLogout ? logoutHoverBg : hoverBackgroundColor;\n const itemHoverTextColor = isLogout ? logoutHoverTextColor : itemTextColor;\n const itemId = item.id || item.href || item.label.toLowerCase().replace(/\\s+/g, '-');\n\n return (\n <li key={itemId} style={getListItemStyles()}>\n <button\n onClick={\n isActive\n ? undefined\n : (e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = itemTextColor;\n if (item.onClick) {\n item.onClick();\n } else if (item.href) {\n router.push(item.href);\n }\n }\n }\n className=\"sidebar-menu-item\"\n style={{\n ...getMenuItemButtonStyles(isOpen, itemTextColor),\n cursor: isActive ? 'default' : 'pointer',\n }}\n onMouseEnter={(e) => {\n if (isActive) return;\n e.currentTarget.style.backgroundColor = itemHoverBg;\n if (isLogout) {\n e.currentTarget.style.color = itemHoverTextColor;\n }\n }}\n onMouseLeave={(e) => {\n if (isActive) return;\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = itemTextColor;\n }}\n >\n <span className=\"sidebar-icon\" style={getIconStyles(isOpen)}>\n {item.icon}\n </span>\n {isOpen && <span style={getTextStyles()}>{item.label}</span>}\n </button>\n </li>\n );\n },\n [\n isOpen,\n colors.accent,\n textColor,\n hoverBackgroundColor,\n logoutTextColor,\n logoutHoverBg,\n logoutHoverTextColor,\n isMenuItemActive,\n router,\n ],\n );\n\n return (\n <>\n <style>{`\n @media (max-width: 48rem) {\n .sidebar-container {\n width: ${isOpen ? '20rem' : '3.75rem'} !important;\n padding-top: 3.4375rem !important;\n }\n .sidebar-toggle-btn {\n top: 0.625rem !important;\n width: 2.25rem !important;\n height: 2.25rem !important;\n }\n .sidebar-menu-item {\n font-size: 0.9375rem !important;\n min-height: 3.125rem !important;\n padding: ${isOpen ? '0.9375rem 1.5625rem' : '0.9375rem'} !important;\n }\n .sidebar-icon {\n font-size: 1.125rem !important;\n }\n }\n @media (max-width: 30rem) {\n .sidebar-container {\n width: ${isOpen ? '100vw' : '3.125rem'} !important;\n padding-top: 3.125rem !important;\n padding-bottom: 0.9375rem !important;\n }\n .sidebar-toggle-btn {\n top: 0.5rem !important;\n width: 2rem !important;\n height: 2rem !important;\n }\n .sidebar-menu-item {\n font-size: 0.875rem !important;\n min-height: 3.25rem !important;\n padding: ${isOpen ? '1.125rem 1.25rem' : '1.125rem'} !important;\n }\n .sidebar-icon {\n font-size: 1rem !important;\n }\n }\n `}</style>\n <nav\n className=\"sidebar-container\"\n style={getContainerStyles(isOpen, openWidth, closedWidth, backgroundColor)}\n >\n {/* Toggle Button */}\n <button\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = toggleBtnBg;\n handleToggle();\n }}\n className=\"sidebar-toggle-btn\"\n style={getToggleButtonStyles(toggleBtnBg, textColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = toggleBtnHoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = toggleBtnBg;\n }}\n >\n {isOpen ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\n </svg>\n )}\n </button>\n\n <ul style={getListStyles()}>\n {topItems.map((item) => renderMenuItem(item))}\n\n {logoutItem && renderMenuItem(logoutItem, true)}\n\n {bottomItems.length > 0 && (\n <li style={{ ...getListItemStyles(), ...getBottomSectionStyles() }}>\n <ul style={getListStyles()}>\n {bottomItems.map((item) => renderMenuItem(item))}\n {languageSelector && (\n <li style={getListItemStyles()}>\n <div\n style={{\n padding: isOpen ? '0.75rem 1.25rem' : '0.75rem',\n display: 'flex',\n justifyContent: isOpen ? 'flex-start' : 'center',\n }}\n >\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n </div>\n </li>\n )}\n </ul>\n </li>\n )}\n {bottomItems.length === 0 && languageSelector && (\n <li style={{ ...getListItemStyles(), ...getBottomSectionStyles() }}>\n <div\n style={{\n padding: isOpen ? '0.75rem 1.25rem' : '0.75rem',\n display: 'flex',\n justifyContent: isOpen ? 'flex-start' : 'center',\n }}\n >\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n </div>\n </li>\n )}\n </ul>\n </nav>\n </>\n );\n};\n\nSideBar.displayName = SIDEBAR_DISPLAY_NAME;\n\nexport default SideBar;\n","'use client';\n\nimport { useState, useCallback, useMemo, CSSProperties } from 'react';\nimport { usePathname, useRouter } from 'next/navigation';\nimport { Menu, X } from 'lucide-react';\nimport { NavBarProps } from './models/NavBar.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor } from '@/app/utils/colorUtils';\nimport Button from '../Button/Button';\nimport { LanguageSelector } from '../LanguageSelector/LanguageSelector';\n\nconst NAVBAR_DISPLAY_NAME = 'NavBar';\n\nconst getContainerStyles = (backgroundColor: string, height: string): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n zIndex: 50,\n width: '100%',\n borderBottom: `1px solid ${adjustOpacity('#000', 0.1)}`,\n transition: 'all 300ms',\n backgroundColor,\n height,\n});\n\nconst getContentStyles = (): CSSProperties => ({\n maxWidth: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n paddingLeft: '1.5rem',\n paddingRight: '1.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n height: '100%',\n});\n\nconst getLogoContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n flexShrink: 0,\n});\n\nconst getLogoLinkStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n textDecoration: 'none',\n cursor: 'pointer',\n transition: 'opacity 300ms',\n});\n\nconst getLogoImageStyles = (): CSSProperties => ({\n height: '2rem',\n width: 'auto',\n});\n\nconst getLogoTextStyles = (textColor: string): CSSProperties => ({\n fontSize: '1.25rem',\n fontWeight: 'bold',\n color: textColor,\n});\n\nconst getMenuContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '2rem',\n});\n\nconst getMenuItemStyles = (\n textColor: string,\n isActive: boolean,\n activeColor: string,\n): CSSProperties => ({\n fontWeight: 500,\n transition: 'all 300ms',\n textDecoration: 'none',\n cursor: 'pointer',\n fontSize: '0.875rem',\n color: isActive ? activeColor : textColor,\n borderBottom: isActive ? `2px solid ${activeColor}` : '2px solid transparent',\n paddingBottom: '0.25rem',\n});\n\nconst getActionsContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n});\n\nconst getMobileToggleStyles = (textColor: string): CSSProperties => ({\n padding: '0.5rem',\n cursor: 'pointer',\n transition: 'all 300ms',\n borderRadius: '0.5rem',\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getMobileMenuStyles = (): CSSProperties => ({\n position: 'fixed' as const,\n inset: 0,\n zIndex: 50,\n transition: 'all 300ms',\n});\n\nconst getMobileOverlayStyles = (): CSSProperties => ({\n position: 'absolute' as const,\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n});\n\nconst getMobilePanelStyles = (isOpen: boolean, bgColor: string): CSSProperties => ({\n position: 'absolute' as const,\n top: 0,\n right: 0,\n height: '100%',\n width: '20rem',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n transition: 'transform 300ms',\n backgroundColor: bgColor,\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n display: 'flex',\n flexDirection: 'column' as const,\n});\n\nconst getMobileHeaderStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '1rem',\n borderBottom: `1px solid ${adjustOpacity('#000', 0.1)}`,\n});\n\nconst getMobileCloseStyles = (textColor: string): CSSProperties => ({\n padding: '0.5rem',\n cursor: 'pointer',\n transition: 'all 300ms',\n borderRadius: '0.5rem',\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getMobileNavStyles = (): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n padding: '1rem',\n gap: '0.5rem',\n flex: 1,\n overflowY: 'auto' as const,\n});\n\nconst getMobileMenuItemStyles = (\n textColor: string,\n isActive: boolean,\n activeBg: string,\n activeColor: string,\n): CSSProperties => ({\n fontWeight: 500,\n transition: 'all 300ms',\n paddingLeft: '1rem',\n paddingRight: '1rem',\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n cursor: 'pointer',\n color: isActive ? activeColor : textColor,\n backgroundColor: isActive ? activeBg : 'transparent',\n});\n\nconst getMobileActionsStyles = (): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '0.5rem',\n padding: '1rem',\n borderTop: `1px solid ${adjustOpacity('#000', 0.1)}`,\n marginTop: 'auto',\n});\n\nexport const NavBar = ({\n logo,\n menuItems = [],\n actions = [],\n colors = DEFAULT_COLOR_CONFIG,\n customBgColor,\n customTextColor,\n customActiveColor,\n customHoverColor,\n height = '4rem',\n showMobileMenu: controlledMobileMenu,\n onMobileMenuToggle,\n languageSelector,\n}: NavBarProps) => {\n const [internalMobileMenu, setInternalMobileMenu] = useState(false);\n const currentPathname = usePathname();\n const router = useRouter();\n const isMobileMenuOpen = controlledMobileMenu ?? internalMobileMenu;\n\n const backgroundColor = customBgColor || colors.secondary;\n const textColor = customTextColor || getContrastColor(backgroundColor);\n const activeColor = customActiveColor || colors.accent;\n const hoverColor = customHoverColor || colors.primary;\n\n const dynamicColors = useMemo(\n () => ({\n hoverBg: adjustOpacity(textColor, 0.05),\n hoverBgActive: adjustOpacity(textColor, 0.1),\n secondaryBg: adjustOpacity(textColor, 0.05),\n activeItemBg: adjustOpacity(activeColor, 0.1),\n outlineHoverText: getContrastColor(activeColor),\n }),\n [textColor, activeColor],\n );\n\n const handleMobileMenuToggle = useCallback(() => {\n const newState = !isMobileMenuOpen;\n if (controlledMobileMenu === undefined) {\n setInternalMobileMenu(newState);\n }\n onMobileMenuToggle?.(newState);\n }, [isMobileMenuOpen, controlledMobileMenu, onMobileMenuToggle]);\n\n const handleLogoClick = useCallback(() => {\n if (logo?.onClick) {\n logo.onClick();\n } else if (logo?.href) {\n router.push(logo.href);\n }\n }, [logo, router]);\n\n const handleMenuItemClick = useCallback(\n (item: (typeof menuItems)[0]) => {\n if (item.onClick) {\n item.onClick();\n } else if (item.href) {\n router.push(item.href);\n }\n },\n [router],\n );\n\n const isMenuItemActive = useCallback(\n (item: (typeof menuItems)[0]) => {\n if (item.isActive !== undefined) {\n return item.isActive;\n }\n if (item.href) {\n return (\n currentPathname === item.href ||\n (item.href !== '/' && currentPathname.startsWith(item.href + '/'))\n );\n }\n return false;\n },\n [currentPathname],\n );\n\n return (\n <>\n <style>{`\n @media (max-width: 64rem) {\n .navbar-menu-container,\n .navbar-actions-container {\n display: none !important;\n }\n .navbar-mobile-toggle {\n display: flex !important;\n }\n }\n @media (min-width: 64rem) {\n .navbar-menu-container,\n .navbar-actions-container {\n display: flex !important;\n }\n .navbar-mobile-toggle {\n display: none !important;\n }\n }\n @media (max-width: 48rem) {\n .navbar-content {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .navbar-menu-container {\n gap: 1.5rem !important;\n }\n .navbar-actions-container {\n gap: 0.5rem !important;\n }\n .navbar-action-button {\n padding-left: 0.75rem !important;\n padding-right: 0.75rem !important;\n padding-top: 0.375rem !important;\n padding-bottom: 0.375rem !important;\n font-size: 0.75rem !important;\n }\n }\n @media (max-width: 40rem) {\n .navbar-content {\n padding-left: 0.75rem !important;\n padding-right: 0.75rem !important;\n }\n .navbar-logo-image {\n height: 1.5rem !important;\n }\n .navbar-logo-text {\n font-size: 1rem !important;\n }\n .navbar-mobile-panel {\n width: 18rem !important;\n }\n }\n `}</style>\n <nav style={getContainerStyles(backgroundColor, height)}>\n <div className=\"navbar-content\" style={getContentStyles()}>\n {logo && (\n <div style={getLogoContainerStyles()}>\n <div\n style={getLogoLinkStyles()}\n onClick={(e) => {\n e.currentTarget.style.opacity = '1';\n handleLogoClick();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.8';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n >\n {logo.src && (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={logo.src}\n alt={logo.alt || 'Logo'}\n className=\"navbar-logo-image\"\n style={getLogoImageStyles()}\n />\n )}\n {logo.text && (\n <span className=\"navbar-logo-text\" style={getLogoTextStyles(textColor)}>\n {logo.text}\n </span>\n )}\n </div>\n </div>\n )}\n\n <div className=\"navbar-menu-container\" style={getMenuContainerStyles()}>\n {menuItems.map((item, index) => {\n const isActive = isMenuItemActive(item);\n const itemId = item.id || item.href || `menu-item-${index}`;\n return (\n <div\n key={itemId}\n onClick={(e) => {\n if (!isActive) {\n e.currentTarget.style.color = textColor;\n }\n handleMenuItemClick(item);\n }}\n style={getMenuItemStyles(textColor, isActive, activeColor)}\n onMouseEnter={(e) => {\n if (!isActive) {\n e.currentTarget.style.color = hoverColor;\n }\n }}\n onMouseLeave={(e) => {\n if (!isActive) {\n e.currentTarget.style.color = textColor;\n }\n }}\n >\n {item.label}\n </div>\n );\n })}\n </div>\n\n <div className=\"navbar-actions-container\" style={getActionsContainerStyles()}>\n {languageSelector && (\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n )}\n {actions.map((action, index) => {\n const variant = action.variant === 'primary' ? 'primary' : 'secondary';\n const actionId = action.id || `action-${index}`;\n return (\n <Button\n key={actionId}\n variant={variant}\n size=\"sm\"\n onClick={action.onClick}\n icon={action.icon}\n iconPosition=\"left\"\n colors={{\n primary: activeColor,\n secondary: textColor,\n accent: activeColor,\n }}\n customBg={variant === 'secondary' ? dynamicColors.secondaryBg : undefined}\n customTextColor={variant === 'secondary' ? textColor : undefined}\n customBorderColor={action.variant === 'outline' ? activeColor : undefined}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n\n <div\n className=\"navbar-mobile-toggle\"\n style={getMobileToggleStyles(textColor)}\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n handleMobileMenuToggle();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = dynamicColors.hoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <Menu size={24} />\n </div>\n </div>\n </nav>\n\n {isMobileMenuOpen && (\n <div style={getMobileMenuStyles()}>\n <div style={getMobileOverlayStyles()} onClick={handleMobileMenuToggle} />\n <div\n className=\"navbar-mobile-panel\"\n style={getMobilePanelStyles(isMobileMenuOpen, backgroundColor)}\n >\n <div style={getMobileHeaderStyles()}>\n {logo?.text && (\n <span style={{ fontSize: '1.125rem', fontWeight: 'bold', color: textColor }}>\n {logo.text}\n </span>\n )}\n <div\n style={getMobileCloseStyles(textColor)}\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n handleMobileMenuToggle();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = dynamicColors.hoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <X size={24} />\n </div>\n </div>\n\n <div style={getMobileNavStyles()}>\n {menuItems.map((item, index) => {\n const isActive = isMenuItemActive(item);\n const itemId = item.id || item.href || `menu-item-${index}`;\n return (\n <div\n key={itemId}\n style={getMobileMenuItemStyles(\n textColor,\n isActive,\n dynamicColors.activeItemBg,\n activeColor,\n )}\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = isActive\n ? dynamicColors.activeItemBg\n : 'transparent';\n handleMenuItemClick(item);\n handleMobileMenuToggle();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = dynamicColors.hoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isActive\n ? dynamicColors.activeItemBg\n : 'transparent';\n }}\n >\n {item.label}\n </div>\n );\n })}\n </div>\n\n {languageSelector && (\n <div\n style={{\n padding: '1rem',\n borderTop: `1px solid ${adjustOpacity('#000', 0.1)}`,\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n </div>\n )}\n\n <div style={getMobileActionsStyles()}>\n {actions.map((action, index) => {\n const variant = action.variant === 'primary' ? 'primary' : 'secondary';\n const actionId = action.id || `action-${index}`;\n return (\n <Button\n key={actionId}\n variant={variant}\n size=\"sm\"\n onClick={() => {\n action.onClick();\n handleMobileMenuToggle();\n }}\n icon={action.icon}\n iconPosition=\"left\"\n colors={{\n primary: activeColor,\n secondary: textColor,\n accent: activeColor,\n }}\n customBg={variant === 'secondary' ? dynamicColors.secondaryBg : undefined}\n customTextColor={variant === 'secondary' ? textColor : undefined}\n customBorderColor={action.variant === 'outline' ? activeColor : undefined}\n style={{ width: '100%' }}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n </div>\n </div>\n )}\n </>\n );\n};\n\nNavBar.displayName = NAVBAR_DISPLAY_NAME;\n","import React from 'react';\n\ninterface ImagePlaceholderProps {\n width?: number;\n height?: number;\n backgroundColor?: string;\n}\n\nexport const ImagePlaceholder: React.FC<ImagePlaceholderProps> = ({\n width = 400,\n height = 300,\n backgroundColor = '#2a2d31',\n}) => {\n const iconColor = '#4a4d51';\n const iconSize = Math.min(width, height) * 0.15;\n const centerX = width / 2;\n const centerY = height / 2;\n\n return (\n <svg\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n display: 'block',\n width: '100%',\n height: '100%',\n }}\n >\n {/* Background */}\n <rect width={width} height={height} fill={backgroundColor} />\n\n {/* Animated gradient overlay */}\n <defs>\n <linearGradient id=\"shimmer\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={backgroundColor} stopOpacity=\"1\">\n <animate attributeName=\"offset\" values=\"-1; 1\" dur=\"2s\" repeatCount=\"indefinite\" />\n </stop>\n <stop offset=\"50%\" stopColor=\"#3a3d41\" stopOpacity=\"1\">\n <animate attributeName=\"offset\" values=\"-0.5; 1.5\" dur=\"2s\" repeatCount=\"indefinite\" />\n </stop>\n <stop offset=\"100%\" stopColor={backgroundColor} stopOpacity=\"1\">\n <animate attributeName=\"offset\" values=\"0; 2\" dur=\"2s\" repeatCount=\"indefinite\" />\n </stop>\n </linearGradient>\n </defs>\n\n <rect width={width} height={height} fill=\"url(#shimmer)\" opacity=\"0.3\" />\n\n {/* Image icon */}\n <g transform={`translate(${centerX - iconSize / 2}, ${centerY - iconSize / 2})`}>\n {/* Mountain/landscape icon */}\n <path\n d={`\n M ${iconSize * 0.1} ${iconSize * 0.8}\n L ${iconSize * 0.35} ${iconSize * 0.4}\n L ${iconSize * 0.55} ${iconSize * 0.6}\n L ${iconSize * 0.75} ${iconSize * 0.25}\n L ${iconSize * 0.9} ${iconSize * 0.8}\n Z\n `}\n fill={iconColor}\n />\n\n {/* Sun/moon circle */}\n <circle\n cx={iconSize * 0.25}\n cy={iconSize * 0.3}\n r={iconSize * 0.12}\n fill={iconColor}\n opacity=\"0.7\"\n />\n </g>\n </svg>\n );\n};\n","'use client';\n\nimport { useEffect, useRef, useState, useMemo, CSSProperties } from 'react';\nimport { motion } from 'framer-motion';\nimport type { GalleryProps, GalleryImage, GalleryItemProps } from './models/Gallery.interface';\nimport {\n GALLERY_DISPLAY_NAME,\n GALLERY_DEFAULTS,\n GALLERY_ANIMATION,\n} from '@/app/constants/components/gallery/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, lightenColor } from '@/app/utils/colorUtils';\nimport { ImagePlaceholder } from './ImagePlaceholder';\n\nconst getAspectRatioPadding = (width?: number, height?: number): string => {\n if (width && height && width > 0) {\n const ratio = (height / width) * 100;\n return `${ratio}%`;\n }\n return '75%';\n};\n\nconst getColumnStyles = (gap: string): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n gap,\n flex: 1,\n});\n\nconst getContainerStyles = (gap: string): CSSProperties => ({\n display: 'flex',\n gap,\n width: '100%',\n height: '100%',\n});\n\nconst getLoaderStyles = (): CSSProperties => ({\n height: '6rem',\n});\n\nconst getItemWrapperStyles = (): CSSProperties => ({\n width: '100%',\n});\n\nconst getItemContainerStyles = (aspectRatioPadding: string): CSSProperties => ({\n position: 'relative' as const,\n overflow: 'hidden',\n borderRadius: '0.75rem',\n border: '1px solid',\n backgroundColor: '#2a2d31',\n cursor: 'pointer',\n width: '100%',\n paddingBottom: aspectRatioPadding,\n height: 0,\n});\n\nconst getPlaceholderContainerStyles = (): CSSProperties => ({\n position: 'absolute' as const,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n});\n\nconst getImageStyles = (loaded: boolean, isHovered: boolean): CSSProperties => ({\n position: 'absolute' as const,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover' as const,\n display: 'block',\n transition: 'all 500ms ease-out',\n opacity: loaded ? 1 : 0,\n transform: isHovered ? 'scale(1.03)' : 'scale(1)',\n});\n\nconst getOverlayStyles = (isHovered: boolean, overlayColor: string): CSSProperties => ({\n pointerEvents: 'none' as const,\n position: 'absolute' as const,\n inset: 0,\n transition: 'background-color 300ms',\n backgroundColor: isHovered ? overlayColor : 'transparent',\n});\n\nconst GalleryItem = ({\n image,\n enableAnimation,\n borderColor,\n skeletonBg,\n overlayColor,\n}: GalleryItemProps) => {\n const [loaded, setLoaded] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const Wrapper = enableAnimation ? motion.div : 'div';\n\n const animationProps = enableAnimation\n ? {\n initial: GALLERY_ANIMATION.INITIAL,\n whileInView: GALLERY_ANIMATION.ANIMATE,\n viewport: { once: true, margin: GALLERY_DEFAULTS.ANIMATION_VIEWPORT_MARGIN },\n transition: { duration: GALLERY_ANIMATION.DURATION, ease: GALLERY_ANIMATION.EASE },\n }\n : {};\n\n const aspectRatioPadding = getAspectRatioPadding(image.width, image.height);\n\n return (\n <Wrapper {...animationProps} style={getItemWrapperStyles()}>\n <div\n style={{\n ...getItemContainerStyles(aspectRatioPadding),\n borderColor,\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {!loaded && (\n <div style={getPlaceholderContainerStyles()}>\n <ImagePlaceholder\n width={image.width || 400}\n height={image.height || 300}\n backgroundColor={skeletonBg}\n />\n </div>\n )}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.src}\n alt={image.alt ?? ''}\n loading=\"lazy\"\n onLoad={() => setLoaded(true)}\n style={getImageStyles(loaded, isHovered)}\n />\n\n <div style={getOverlayStyles(isHovered, overlayColor)} />\n </div>\n </Wrapper>\n );\n};\n\nconst distributeImages = (images: GalleryImage[], columnCount: number): GalleryImage[][] => {\n const columns: GalleryImage[][] = Array.from({ length: columnCount }, () => []);\n const columnHeights: number[] = Array.from({ length: columnCount }, () => 0);\n\n const imagesWithRatio = images.map((img) => {\n const ratio = img.width && img.height && img.width > 0 ? img.height / img.width : 0.75;\n return { image: img, ratio };\n });\n\n imagesWithRatio.forEach(({ image, ratio }) => {\n let minHeightIndex = 0;\n let minHeight = columnHeights[0];\n\n for (let i = 1; i < columnCount; i++) {\n if (columnHeights[i] < minHeight) {\n minHeight = columnHeights[i];\n minHeightIndex = i;\n }\n }\n\n columns[minHeightIndex].push(image);\n columnHeights[minHeightIndex] += ratio;\n });\n\n const maxHeight = Math.max(...columnHeights);\n const tolerance = 0.01;\n\n if (maxHeight > 0) {\n const heightDifference = Math.max(...columnHeights) - Math.min(...columnHeights);\n const needsAdjustment = heightDifference > tolerance * maxHeight;\n\n if (needsAdjustment && columnCount > 1) {\n const sortedByHeight = imagesWithRatio.sort((a, b) => b.ratio - a.ratio);\n const newColumns: GalleryImage[][] = Array.from({ length: columnCount }, () => []);\n const newHeights: number[] = Array.from({ length: columnCount }, () => 0);\n\n sortedByHeight.forEach(({ image, ratio }) => {\n const minIdx = newHeights.indexOf(Math.min(...newHeights));\n newColumns[minIdx].push(image);\n newHeights[minIdx] += ratio;\n });\n\n return newColumns;\n }\n }\n\n return columns;\n};\n\nexport const Gallery = ({\n images,\n batchSize = GALLERY_DEFAULTS.BATCH_SIZE,\n enableAnimation = GALLERY_DEFAULTS.ENABLE_ANIMATION,\n forceColumnCount,\n gap = '1rem',\n colors,\n customBorderColor,\n customSkeletonBg,\n customOverlayColor,\n}: GalleryProps) => {\n const [visibleImages, setVisibleImages] = useState<GalleryImage[]>([]);\n const [columnCount, setColumnCount] = useState(forceColumnCount || 3);\n const loaderRef = useRef<HTMLDivElement | null>(null);\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n const galleryColors = useMemo(() => {\n const borderColor = customBorderColor || adjustOpacity(colorConfig.primary, 0.1);\n const skeletonBg = customSkeletonBg || lightenColor(colorConfig.secondary, 50);\n const overlayColor = customOverlayColor || adjustOpacity(colorConfig.secondary, 0);\n\n return {\n border: borderColor,\n skeleton: skeletonBg,\n overlay: overlayColor,\n overlayHover: adjustOpacity(colorConfig.secondary, 0.2),\n };\n }, [colorConfig, customBorderColor, customSkeletonBg, customOverlayColor]);\n\n useEffect(() => {\n if (forceColumnCount) return;\n\n const handleResize = () => {\n const width = window.innerWidth;\n if (width < 480) {\n setColumnCount(1);\n } else if (width < 768) {\n setColumnCount(2);\n } else if (width < 1024) {\n setColumnCount(3);\n } else if (width < 1440) {\n setColumnCount(4);\n } else if (width < 1920) {\n setColumnCount(5);\n } else {\n setColumnCount(6);\n }\n };\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [forceColumnCount]);\n\n useEffect(() => {\n setVisibleImages(images.slice(0, batchSize));\n }, [images, batchSize]);\n\n useEffect(() => {\n if (!loaderRef.current) return;\n\n const currentLoader = loaderRef.current;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisibleImages((prev) => {\n const next = images.slice(0, prev.length + batchSize);\n return next.length === prev.length ? prev : next;\n });\n }\n },\n { rootMargin: GALLERY_DEFAULTS.OBSERVER_ROOT_MARGIN },\n );\n\n observer.observe(currentLoader);\n\n const checkInitialVisibility = () => {\n const rect = currentLoader.getBoundingClientRect();\n const isVisible = rect.top < window.innerHeight && rect.bottom > 0;\n if (isVisible) {\n setVisibleImages((prev) => {\n const next = images.slice(0, prev.length + batchSize);\n return next.length === prev.length ? prev : next;\n });\n }\n };\n\n const timeoutId = setTimeout(checkInitialVisibility, 100);\n\n return () => {\n observer.disconnect();\n clearTimeout(timeoutId);\n };\n }, [images, batchSize]);\n\n const columns = useMemo(\n () => distributeImages(visibleImages, columnCount),\n [visibleImages, columnCount],\n );\n\n return (\n <section style={{ width: '100%', height: '100%' }}>\n <div style={getContainerStyles(gap)}>\n {columns.map((column, columnIndex) => (\n <div key={columnIndex} style={getColumnStyles(gap)}>\n {column.map((img, imgIndex) => {\n const imageId = img.id || img.src || `gallery-img-${columnIndex}-${imgIndex}`;\n return (\n <GalleryItem\n key={imageId}\n image={img}\n enableAnimation={enableAnimation}\n borderColor={galleryColors.border}\n skeletonBg={galleryColors.skeleton}\n overlayColor={galleryColors.overlayHover}\n />\n );\n })}\n </div>\n ))}\n </div>\n\n {visibleImages.length < images.length && <div ref={loaderRef} style={getLoaderStyles()} />}\n </section>\n );\n};\n\nGallery.displayName = GALLERY_DISPLAY_NAME;\n"]}
|