xref: /MusicFree/src/components/base/themeText.tsx (revision 19dc08ecf646164591cb30515347b693c01518c7)
1*19dc08ecS猫头猫import React from 'react';
2*19dc08ecS猫头猫import {StyleSheet, Text, TextProps} from 'react-native';
3*19dc08ecS猫头猫import rpx from '@/utils/rpx';
4*19dc08ecS猫头猫import Color from 'color';
5*19dc08ecS猫头猫import useTextColor from '@/hooks/useTextColor';
6*19dc08ecS猫头猫import {useTheme} from 'react-native-paper';
7*19dc08ecS猫头猫import {ColorKey, colorMap, fontSizeConst, fontWeightConst} from '@/constants/uiConst';
8*19dc08ecS猫头猫
9*19dc08ecS猫头猫
10*19dc08ecS猫头猫
11*19dc08ecS猫头猫type IThemeTextProps = TextProps & {
12*19dc08ecS猫头猫  fontColor?: ColorKey;
13*19dc08ecS猫头猫  fontSize?: keyof typeof fontSizeConst;
14*19dc08ecS猫头猫  fontWeight?: keyof typeof fontWeightConst;
15*19dc08ecS猫头猫};
16*19dc08ecS猫头猫
17*19dc08ecS猫头猫
18*19dc08ecS猫头猫export default function ThemeText(props: IThemeTextProps) {
19*19dc08ecS猫头猫  const theme = useTheme();
20*19dc08ecS猫头猫  const {style, children, fontSize = 'content', fontColor = 'normal', fontWeight='regular'} = props;
21*19dc08ecS猫头猫
22*19dc08ecS猫头猫  const themeStyle = {
23*19dc08ecS猫头猫    color: theme.colors[colorMap[fontColor]],
24*19dc08ecS猫头猫    fontSize: fontSizeConst[fontSize],
25*19dc08ecS猫头猫    fontWeight: fontWeightConst[fontWeight],
26*19dc08ecS猫头猫    includeFontPadding: false,
27*19dc08ecS猫头猫  };
28*19dc08ecS猫头猫
29*19dc08ecS猫头猫  const _style = Array.isArray(style)
30*19dc08ecS猫头猫    ? [themeStyle, ...style]
31*19dc08ecS猫头猫    : [themeStyle, style];
32*19dc08ecS猫头猫
33*19dc08ecS猫头猫  return (
34*19dc08ecS猫头猫    <Text {...props} style={_style}>
35*19dc08ecS猫头猫      {children}
36*19dc08ecS猫头猫    </Text>
37*19dc08ecS猫头猫  );
38*19dc08ecS猫头猫}
39*19dc08ecS猫头猫
40*19dc08ecS猫头猫const style = StyleSheet.create({
41*19dc08ecS猫头猫  wrapper: {
42*19dc08ecS猫头猫    width: rpx(750),
43*19dc08ecS猫头猫  },
44*19dc08ecS猫头猫});
45