1e650bfb3S猫头猫import React from 'react'; 2e650bfb3S猫头猫import {StyleProp, StyleSheet, View, ViewProps} from 'react-native'; 3e650bfb3S猫头猫import rpx from '@/utils/rpx'; 4e650bfb3S猫头猫import useColors from '@/hooks/useColors'; 5e650bfb3S猫头猫import {TouchableOpacity} from 'react-native-gesture-handler'; 6*5589cdf3S猫头猫import Icon from '@/components/base/icon.tsx'; 7e650bfb3S猫头猫 8e650bfb3S猫头猫interface ICheckboxProps { 9e650bfb3S猫头猫 checked?: boolean; 10e650bfb3S猫头猫 onPress?: () => void; 11e650bfb3S猫头猫 style?: StyleProp<ViewProps>; 12e650bfb3S猫头猫} 13e650bfb3S猫头猫 14e650bfb3S猫头猫const slop = rpx(24); 15e650bfb3S猫头猫 16e650bfb3S猫头猫export default function Checkbox(props: ICheckboxProps) { 17e650bfb3S猫头猫 const {checked, onPress, style} = props; 18e650bfb3S猫头猫 const colors = useColors(); 19e650bfb3S猫头猫 20e650bfb3S猫头猫 const innerNode = ( 21e650bfb3S猫头猫 <View 22e650bfb3S猫头猫 style={[ 23e650bfb3S猫头猫 styles.container, 24e650bfb3S猫头猫 checked 25e650bfb3S猫头猫 ? { 26e650bfb3S猫头猫 backgroundColor: colors.primary, 27e650bfb3S猫头猫 borderColor: colors.primary, 28e650bfb3S猫头猫 } 29e650bfb3S猫头猫 : { 30e650bfb3S猫头猫 borderColor: colors.text, 31e650bfb3S猫头猫 }, 32e650bfb3S猫头猫 style, 33e650bfb3S猫头猫 ]}> 34e650bfb3S猫头猫 {checked ? ( 35277c5280S猫头猫 <Icon name="check" color={colors.appBarText} size={rpx(34)} /> 36e650bfb3S猫头猫 ) : null} 37e650bfb3S猫头猫 </View> 38e650bfb3S猫头猫 ); 39e650bfb3S猫头猫 40e650bfb3S猫头猫 return onPress ? ( 41e650bfb3S猫头猫 <TouchableOpacity 42e650bfb3S猫头猫 hitSlop={{ 43e650bfb3S猫头猫 left: slop, 44e650bfb3S猫头猫 right: slop, 45e650bfb3S猫头猫 top: slop, 46e650bfb3S猫头猫 bottom: slop, 47e650bfb3S猫头猫 }} 48e650bfb3S猫头猫 onPress={onPress}> 49e650bfb3S猫头猫 {innerNode} 50e650bfb3S猫头猫 </TouchableOpacity> 51e650bfb3S猫头猫 ) : ( 52e650bfb3S猫头猫 innerNode 53e650bfb3S猫头猫 ); 54e650bfb3S猫头猫} 55e650bfb3S猫头猫 56e650bfb3S猫头猫const styles = StyleSheet.create({ 57e650bfb3S猫头猫 container: { 58e650bfb3S猫头猫 width: rpx(36), 59e650bfb3S猫头猫 height: rpx(36), 60e650bfb3S猫头猫 borderRadius: rpx(2), 61e650bfb3S猫头猫 borderWidth: rpx(1), 62e650bfb3S猫头猫 alignItems: 'center', 63e650bfb3S猫头猫 justifyContent: 'center', 64e650bfb3S猫头猫 }, 65e650bfb3S猫头猫}); 66