import type {
    ReactNode
} from "react";
import {
    type ViewStyle,
    type StyleProp,
    type TextStyle
} from "react-native";

export type NotificationIndicatorDynamicStyleType = {
    floorBackgroundColor: keyof NCoreUIKit.ContainerContentColors;
    radiuses: NCoreUIKit.ActivePalette["radiuses"];
    borders: NCoreUIKit.ActivePalette["borders"];
    spaces: NCoreUIKit.ActivePalette["spaces"];
    colors: NCoreUIKit.ActivePalette["colors"];
    spreadBehaviour?: SwitchSpreadBehaviour;
    currentType: NotificationIndicatorTypes;
    type: NotificationIndicatorType;
    isDisabled?: boolean;
    isLoading?: boolean;
};

export type NotificationIndicatorTypes = {
    containerColor: keyof NCoreUIKit.ContainerContentColors;
    subTitleColor: keyof NCoreUIKit.TextContentColors;
    titleColor: keyof NCoreUIKit.TextContentColors;
};

export type NotificationIndicatorTypeConstantType = {
    type: NotificationIndicatorType;
};

export type NotificationIndicatorType = "primary" | "danger" | "warning" | "neutral" | "success" | "info";

export type SwitchSpreadBehaviour = "baseline" | "stretch" | "free";

interface INotificationIndicatorProps {
    floorBackgroundColor?: keyof NCoreUIKit.ContainerContentColors;
    titleStyle?: StyleProp<TextStyle>[] | StyleProp<TextStyle>;
    style?: StyleProp<ViewStyle>[] | StyleProp<ViewStyle>;
    customTheme?: {
        gapPropagation?: NCoreUIKit.GapPropagationKey;
        sharpness?: NCoreUIKit.SharpnessKey;
        paletteKey?: NCoreUIKit.PaletteKey;
        themeKey?: NCoreUIKit.ThemeKey;
    };
    titleVariant?: keyof NCoreUIKit.Typography;
    spreadBehaviour?: SwitchSpreadBehaviour;
    type?: NotificationIndicatorType;
    isDisabled?: boolean;
    isLoading?: boolean;
    children: ReactNode;
    title?: number;
    location?: {
        bottom?: number;
        right?: number;
        left?: number;
        top?: number;
    };
}
export type {
    INotificationIndicatorProps as default
};
