import { images_swirl_white } from "@flip.id/ui-kit"; import { Box, HStack, IconButton, Image, Input, Text, View, VStack, } from "native-base"; import type { InterfaceInputProps } from "native-base/lib/typescript/components/primitives/Input/types"; import type { ColorType } from "native-base/lib/typescript/components/types"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import type { ImageSourcePropType } from "react-native"; import { CloseMedium } from "../../../../icons/navigation"; import { addThousandSeparator, removeNonNumeric } from "../../../../utils"; export enum BeneficiaryCardType { red = "red", green = "green", blue = "blue", yellow = "yellow", } export interface IBeneficiaryCardProps { variant: keyof typeof BeneficiaryCardType; name: string; key: string; accountNumber: string; avatar: ImageSourcePropType; bankIcon: ImageSourcePropType; showNominalField?: boolean; nominalValue?: string | number; inputRef?: InterfaceInputProps["ref"]; onChangeNominal?: (text: string) => void; avatarImgComponent?: React.ReactElement; bankIconComponent?: React.ReactElement; } export const BeneficiaryCard: React.FC = (props) => { const { variant, name, accountNumber, bankIcon, avatar, showNominalField, onChangeNominal, nominalValue, key, inputRef, avatarImgComponent, bankIconComponent, } = props; const [nominalString, setNominalString] = useState(""); const backgroundColor = useMemo(() => { switch (variant) { case BeneficiaryCardType.blue: return "sapphireBlue.Minus3"; case BeneficiaryCardType.red: return "crimsonRed.Minus3"; case BeneficiaryCardType.green: return "jadeGreen.Minus3"; default: return "goldenYellow.Minus3"; } }, [variant]); const onChangeText = useCallback( (text: string) => { const cleanText = removeNonNumeric(text); const value = addThousandSeparator(cleanText); onChangeNominal?.(cleanText); setNominalString(value); }, [onChangeNominal] ); useEffect(() => { onChangeText(`${nominalValue}`); }, [nominalValue, onChangeText]); const onRemoveNominalValue = useCallback(() => { setNominalString(""); onChangeNominal?.(""); }, [onChangeNominal]); return ( {avatarImgComponent ? ( avatarImgComponent ) : ( {"image )} {name} {bankIconComponent ? ( bankIconComponent ) : ( image bankIcon )} {accountNumber} {"images_swirl_white"} {showNominalField && ( Nominal Rp } /> )} ); }; export default BeneficiaryCard;