ICS React Native App
1import { TouchableOpacity } from "react-native";
2import { ThemedText, ThemedView } from "@/components/theme";
3import { useToggle } from "@/hooks/use-toggle";
4import { blurAccountNumber } from "@/services/blur-accountnumber";
5import { PropsWithChildren } from "react";
6
7interface AccountNumberProps {
8 children: string;
9 hidden?: boolean;
10 size?: "default" | "small";
11}
12
13export const AccountNumber = ({
14 children,
15 hidden = false,
16 size = "default",
17}: AccountNumberProps) => {
18 const { isHidden, toggleHidden } = useToggle(true);
19
20 return (
21 <Wrapper onPress={toggleHidden} toggleable={!hidden}>
22 <ThemedText type={size}>
23 {isHidden ? blurAccountNumber(children.toString()) : children}
24 </ThemedText>
25 </Wrapper>
26 );
27};
28
29type WrapperProps = PropsWithChildren<{
30 toggleable: boolean;
31 onPress: () => void | Promise<void>;
32}>;
33
34const Wrapper = ({ children, toggleable, onPress }: WrapperProps) =>
35 toggleable ? (
36 <TouchableOpacity onPressOut={onPress}>{children}</TouchableOpacity>
37 ) : (
38 <ThemedView>{children}</ThemedView>
39 );