Files
OrionTV/components/ThemedText.tsx
zimplexing 7e6095d2bb Update
2025-07-04 18:10:28 +08:00

37 lines
953 B
TypeScript

import {Text, type TextProps} from 'react-native';
import {useThemeColor} from '@/hooks/useThemeColor';
import {useTextStyles} from '@/hooks/useTextStyles';
export type ThemedTextProps = TextProps & {
lightColor?: string;
darkColor?: string;
type?: 'default' | 'title' | 'defaultSemiBold' | 'subtitle' | 'link';
};
export function ThemedText({
style,
lightColor,
darkColor,
type = 'default',
...rest
}: ThemedTextProps) {
const color = useThemeColor({light: lightColor, dark: darkColor}, 'text');
const styles = useTextStyles();
return (
<Text
style={[
{color},
type === 'default' ? styles.default : undefined,
type === 'title' ? styles.title : undefined,
type === 'defaultSemiBold' ? styles.defaultSemiBold : undefined,
type === 'subtitle' ? styles.subtitle : undefined,
type === 'link' ? styles.link : undefined,
style,
]}
{...rest}
/>
);
}