xref: /MusicFree/src/components/base/chip.tsx (revision fe32deaa67e69870228108e3ac35afbeeeef61d4)
1*fe32deaaS猫头猫import React, {ReactNode} from 'react';
2*fe32deaaS猫头猫import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native';
3*fe32deaaS猫头猫import rpx from '@/utils/rpx';
4*fe32deaaS猫头猫import ThemeText from './themeText';
5*fe32deaaS猫头猫import useColors from '@/hooks/useColors';
6*fe32deaaS猫头猫import IconButton from './iconButton';
7*fe32deaaS猫头猫
8*fe32deaaS猫头猫interface IChipProps {
9*fe32deaaS猫头猫    containerStyle?: StyleProp<ViewStyle>;
10*fe32deaaS猫头猫    children?: ReactNode;
11*fe32deaaS猫头猫    onPress?: () => void;
12*fe32deaaS猫头猫    onClose?: () => void;
13*fe32deaaS猫头猫}
14*fe32deaaS猫头猫export default function Chip(props: IChipProps) {
15*fe32deaaS猫头猫    const {containerStyle, children, onPress, onClose} = props;
16*fe32deaaS猫头猫    const colors = useColors();
17*fe32deaaS猫头猫
18*fe32deaaS猫头猫    return (
19*fe32deaaS猫头猫        <Pressable
20*fe32deaaS猫头猫            onPress={onPress}
21*fe32deaaS猫头猫            style={[
22*fe32deaaS猫头猫                styles.container,
23*fe32deaaS猫头猫                {
24*fe32deaaS猫头猫                    backgroundColor: colors.placeholder,
25*fe32deaaS猫头猫                },
26*fe32deaaS猫头猫                containerStyle,
27*fe32deaaS猫头猫            ]}>
28*fe32deaaS猫头猫            {typeof children === 'string' ? (
29*fe32deaaS猫头猫                <ThemeText fontSize="subTitle">{children}</ThemeText>
30*fe32deaaS猫头猫            ) : (
31*fe32deaaS猫头猫                children
32*fe32deaaS猫头猫            )}
33*fe32deaaS猫头猫            <IconButton
34*fe32deaaS猫头猫                onPress={onClose}
35*fe32deaaS猫头猫                name="close"
36*fe32deaaS猫头猫                sizeType="small"
37*fe32deaaS猫头猫                style={styles.icon}
38*fe32deaaS猫头猫            />
39*fe32deaaS猫头猫        </Pressable>
40*fe32deaaS猫头猫    );
41*fe32deaaS猫头猫}
42*fe32deaaS猫头猫
43*fe32deaaS猫头猫const styles = StyleSheet.create({
44*fe32deaaS猫头猫    container: {
45*fe32deaaS猫头猫        height: rpx(56),
46*fe32deaaS猫头猫        paddingHorizontal: rpx(18),
47*fe32deaaS猫头猫        borderRadius: rpx(28),
48*fe32deaaS猫头猫        flexDirection: 'row',
49*fe32deaaS猫头猫        alignItems: 'center',
50*fe32deaaS猫头猫        justifyContent: 'center',
51*fe32deaaS猫头猫    },
52*fe32deaaS猫头猫    icon: {
53*fe32deaaS猫头猫        marginLeft: rpx(8),
54*fe32deaaS猫头猫    },
55*fe32deaaS猫头猫});
56