import { ComponentType, useCallback, useMemo } from 'react'; import { type ViewStyle, type TextProps, type ViewProps, View } from 'react-native'; import { Text } from '../Text'; // import { ProvideTheme } from '../../core/theme/ProvideTheme'; // import { extendTheme } from '../../core/theme/extendTheme'; import { Surface, type SurfaceProps } from '../Surface'; import { Button, type ButtonProps } from '../Button'; import { IconButton, type IconButtonProps } from '../IconButton'; import type { ToastHideParams, ToastPosition, ToastShowParams, ToastType, } from 'react-native-toast-message/lib/src/types'; import { styles } from './utils'; type CustomProps = Omit & { onPressAction?: () => void; actionButtonLabel?: string; displayActionButton?: boolean; displayCloseButton?: boolean; textsContainerProps?: ViewProps; titleProps?: TextProps; descriptionProps?: TextProps; actionButtonProps?: Omit; iconButtonProps?: Partial>; }; export type Props = { position?: ToastPosition; type?: ToastType; isVisible?: boolean; text1?: string; text2?: string; show?: (params: ToastShowParams) => void; hide?: (params: ToastHideParams) => void; props: CustomProps; }; const MaterialToast = ({ text1, text2, hide, props = {} }: Props) => { const { displayActionButton = false, onPressAction, actionButtonLabel = 'Action', displayCloseButton = false, style, textsContainerProps = {}, titleProps = {}, descriptionProps = {}, actionButtonProps = {}, iconButtonProps = {}, ...rest } = props; const onHide = useCallback(() => hide?.(), [hide]); const { containerStyle, textContainerStyle, titleStyle, descriptionStyle, actionButtonStyle, iconButtonStyle, } = useMemo(() => { return { containerStyle: [ styles.container, text1 && text2 ? { minHeight: 68 } : {}, style, ] as unknown as ViewStyle, textContainerStyle: [styles.textContainer, textsContainerProps.style], titleStyle: [styles.title, titleProps.style], descriptionStyle: [styles.description, descriptionProps.style], actionButtonStyle: [styles.actionButton, actionButtonProps.style], iconButtonStyle: [styles.iconButton, iconButtonProps.style], }; }, [ actionButtonProps.style, descriptionProps.style, iconButtonProps.style, style, text1, text2, textsContainerProps.style, titleProps.style, ]); return ( <> {text1} {text2 && ( {text2} )} {displayActionButton && ( )} {displayCloseButton && ( )} ); }; // TODO - fix this component const withInverseTheme = (Component: ComponentType

) => (props: P) => { // const { colorMode } = useColorMode(); // const inverseTheme = useMemo( // () => // extendTheme({ // colorMode: colorMode === 'dark' ? 'light' : 'dark', // }), // [colorMode], // ); // TODO - fix this component // @ts-expect-error return ; }; export default withInverseTheme(MaterialToast);