import type {
    ComponentType
} from "react";
import {
    type ImageURISource,
    type ImageProps,
    type StyleProp,
    type ViewStyle,
    type TextStyle
} from "react-native";
import type {
    NCoreUIKitIcon
} from "../../types";

export type SiteLogoDynamicStyleType = {
    backgroundColor?: keyof NCoreUIKit.ContainerContentColors | "transparent";
    borderColor?: keyof NCoreUIKit.BorderContentColors | "transparent";
    logoBackgroundColor: keyof NCoreUIKit.ContainerContentColors;
    imageSpace?: keyof NCoreUIKit.ActivePalette["spaces"];
    borders: NCoreUIKit.ActivePalette["borders"];
    colors: NCoreUIKit.ActivePalette["colors"];
    spaces: NCoreUIKit.ActivePalette["spaces"];
    image?: ComponentType<ImageProps>;
    currentSize: SiteLogoMeasures;
    isCustomImageSize?: boolean;
    isWorkWithFlex1?: boolean;
    isShowBorder?: boolean;
    isDisabled?: boolean;
    isLoading?: boolean;
    imageUrl?: string;
};

export type SiteLogoMeasuresKeys = {
    subTitleSize: keyof NCoreUIKit.Typography;
    titleSize: keyof NCoreUIKit.Typography;
    iconSize: number;
    size: number;
};

export type SiteLogoMeasures = {
    subTitleSize: keyof NCoreUIKit.Typography;
    titleSize: keyof NCoreUIKit.Typography;
    iconSize: number;
    size: number;
};

export type SiteLogoSizeConstantType = {
    spaces: NCoreUIKit.ActivePalette["spaces"];
    size: SiteLogoSizeType;
};

export type SiteLogoSizeType = "xxSmall" | "xSmall" | "small" | "medium" | "large" | "xLarge" | "xxLarge" | "xxxLarge";

interface ISiteLogoProps {
    backgroundColor?: keyof NCoreUIKit.ContainerContentColors | "transparent";
    borderColor?: keyof NCoreUIKit.BorderContentColors | "transparent";
    logoBackgroundColor?: keyof NCoreUIKit.ContainerContentColors;
    subTitleCustomColor?: keyof NCoreUIKit.ProjectColorPalette;
    titleCustomColor?: keyof NCoreUIKit.ProjectColorPalette;
    customTheme?: {
        gapPropagation?: keyof NCoreUIKit.GapPropagationKey;
        sharpness?: keyof NCoreUIKit.SharpnessKey;
        paletteKey?: keyof NCoreUIKit.PaletteKey;
        themeKey?: keyof NCoreUIKit.ThemeKey;
    };
    style?: StyleProp<ViewStyle>[] | StyleProp<ViewStyle>;
    imageSpace?: keyof NCoreUIKit.ActivePalette["spaces"];
    subTitleColor?: keyof NCoreUIKit.TextContentColors;
    iconColor?: keyof NCoreUIKit.ProjectColorPalette;
    titleColor?: keyof NCoreUIKit.TextContentColors;
    subTitleVariant?: keyof NCoreUIKit.Typography;
    customLocalize?: {
        activeLocale?: keyof NCoreUIKit.LocaleKey;
    };
    titleVariant?: keyof NCoreUIKit.Typography;
    subTitleKey?: keyof NCoreUIKit.Translation;
    titleKey?: keyof NCoreUIKit.Translation;
    image?: ComponentType<ImageProps>;
    imageSource?: ImageURISource;
    isCustomImageSize?: boolean;
    isWorkWithAction?: boolean;
    isWorkWithFlex1?: boolean;
    subTitleStyle?: TextStyle;
    imageProps?: ImageProps;
    size?: SiteLogoSizeType;
    isShowBorder?: boolean;
    titleStyle?: TextStyle;
    icon?: NCoreUIKitIcon;
    isShowIcon?: boolean;
    isDisabled?: boolean;
    onPress?: () => void;
    isLoading?: boolean;
    imageUrl?: string;
    subTitle?: string;
    title?: string;
}
export type {
    ISiteLogoProps as default
};
