import { ColorsStatus } from "@/constants/ColorsStatus"; import Styles from "@/constants/Styles"; import React, { useState } from "react"; import { Dimensions, Pressable, View } from "react-native"; import Text from "./Text"; type Props = { title?: string subtitle?: string | React.ReactNode icon: React.ReactNode desc?: string rightTopInfo?: string onPress?: () => void onLongPress?: () => void borderType: 'all' | 'bottom' | 'none' leftBottomInfo?: React.ReactNode | string rightBottomInfo?: React.ReactNode | string titleWeight?: 'normal' | 'bold' bgColor?: 'white' | 'transparent' width?: number descEllipsize?: boolean textColor?: string, colorPress?: boolean titleShowAll?: boolean } export default function BorderBottomItem({ title, subtitle, icon, desc, onPress, onLongPress, rightTopInfo, borderType, leftBottomInfo, rightBottomInfo, titleWeight, bgColor, width, descEllipsize, textColor, colorPress, titleShowAll }: Props) { const lebarDim = Dimensions.get("window").width; const lebar = width ? lebarDim * width / 100 : 'auto'; const textColorFix = textColor ? textColor : 'black'; const [isTap, setIsTap] = useState(false); return ( setIsTap(true)} onPressOut={() => setIsTap(false)} style={({ pressed }) => [ borderType == 'bottom' ? Styles.wrapItemBorderBottom : borderType == 'all' ? Styles.wrapItemBorderAll : Styles.wrapItemBorderNone, bgColor && bgColor == 'white' && ColorsStatus.white, // efek warna saat ditekan (sementara) isTap && colorPress && ColorsStatus.pressedGray, ]} > {icon} {title} { subtitle && typeof subtitle == "string" ? {subtitle} : {subtitle} } { rightTopInfo && {rightTopInfo} } {desc && {desc}} { (leftBottomInfo || rightBottomInfo) && ( { typeof leftBottomInfo == 'string' ? {leftBottomInfo} : leftBottomInfo } { typeof rightBottomInfo == 'string' ? {rightBottomInfo} : rightBottomInfo } ) } ) }