/**
 * EN: Brand Constants - Easy access to brand values
 * VI: Hằng số thương hiệu - Truy cập dễ dàng các giá trị thương hiệu
 * 
 * This file provides type-safe constants for brand colors, fonts, and assets.
 * Use these instead of hardcoding values for consistency and maintainability.
 * 
 * File này cung cấp constants type-safe cho màu sắc, fonts và assets thương hiệu.
 * Sử dụng các constants này thay vì hardcode giá trị để đảm bảo tính nhất quán và dễ bảo trì.
 */

export const BRAND = {
    /** EN: Brand name and tagline / VI: Tên thương hiệu và slogan */
    name: 'GoodGo Platform',
    tagline: 'Enterprise Microservices Platform',
    description: 'Build, deploy, and scale microservices with confidence',

    /** 
     * EN: Brand color palette - Use these for consistent branding
     * VI: Bảng màu thương hiệu - Sử dụng để đảm bảo tính nhất quán
     */
    colors: {
        /** Primary brand color - Main identity color (Blue) */
        primary: {
            main: 'var(--brand-primary)',
            light: 'var(--brand-primary-light)',
            dark: 'var(--brand-primary-dark)',
            contrast: 'var(--brand-primary-contrast)',
            hex: '#3B82F6', // For use outside CSS
        },
        /** Secondary brand color - Supporting color (Purple) */
        secondary: {
            main: 'var(--brand-secondary)',
            light: 'var(--brand-secondary-light)',
            dark: 'var(--brand-secondary-dark)',
            hex: '#8B5CF6',
        },
        /** Accent color - Call-to-action color (Cyan) */
        accent: {
            main: 'var(--brand-accent)',
            hex: '#06B6D4',
        },
        /** Brand gradients - For backgrounds and special elements */
        gradients: {
            primary: 'var(--brand-gradient-primary)',
            accent: 'var(--brand-gradient-accent)',
        },
    },

    /**
     * EN: Typography system - Font families for different use cases
     * VI: Hệ thống typography - Font families cho các trường hợp khác nhau
     */
    fonts: {
        display: 'var(--font-display)', // For hero titles (48px+)
        heading: 'var(--font-heading)', // For section headings (24-36px)
        body: 'var(--font-sans)',       // For body text (16px)
        mono: 'var(--font-mono)',       // For code blocks
    },

    /**
     * EN: Brand assets paths - Logo, icons, illustrations
     * VI: Đường dẫn brand assets - Logo, icons, illustrations
     */
    assets: {
        logo: {
            full: '/brand-assets/logo/logo-full.svg',
            icon: '/brand-assets/logo/logo-icon.svg',
            wordmark: '/brand-assets/logo/logo-wordmark.svg',
        },
        icons: {
            favicon: '/brand-assets/icons/favicon.svg',
        },
        illustrations: {
            empty: '/brand-assets/illustrations/empty-state.svg',
            error: '/brand-assets/illustrations/error-state.svg',
        },
    },
} as const;

/**
 * EN: Type-safe brand color getter
 * VI: Hàm lấy màu thương hiệu type-safe
 * 
 * @example
 * ```tsx
 * const primaryColor = getBrandColor('primary.main');
 * const secondaryHex = getBrandColor('secondary.hex');
 * ```
 */
export const getBrandColor = (path: string): string => {
    const keys = path.split('.');
    let value: any = BRAND.colors;

    for (const key of keys) {
        value = value?.[key];
    }

    return value || '';
};

/**
 * EN: Brand logo path getter
 * VI: Hàm lấy đường dẫn logo thương hiệu
 * 
 * @param variant - Logo variant: 'full' | 'icon' | 'wordmark'
 * @returns Logo file path
 */
export const getBrandLogo = (variant: 'full' | 'icon' | 'wordmark' = 'full'): string => {
    return BRAND.assets.logo[variant];
};

/**
 * EN: Brand illustration path getter
 * VI: Hàm lấy đường dẫn illustration thương hiệu
 * 
 * @param type - Illustration type: 'empty' | 'error'
 * @returns Illustration file path
 */
export const getBrandIllustration = (type: 'empty' | 'error'): string => {
    return BRAND.assets.illustrations[type];
};
