mirror of
https://github.com/kennethnym/aris.git
synced 2026-03-20 17:11:17 +00:00
61 lines
1.2 KiB
TypeScript
61 lines
1.2 KiB
TypeScript
|
|
import { StyleSheet, Text, type TextProps } from "react-native"
|
||
|
|
|
||
|
|
import { useThemeColor } from "@/hooks/use-theme-color"
|
||
|
|
|
||
|
|
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")
|
||
|
|
|
||
|
|
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}
|
||
|
|
/>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
const styles = StyleSheet.create({
|
||
|
|
default: {
|
||
|
|
fontSize: 16,
|
||
|
|
lineHeight: 24,
|
||
|
|
},
|
||
|
|
defaultSemiBold: {
|
||
|
|
fontSize: 16,
|
||
|
|
lineHeight: 24,
|
||
|
|
fontWeight: "600",
|
||
|
|
},
|
||
|
|
title: {
|
||
|
|
fontSize: 32,
|
||
|
|
fontWeight: "bold",
|
||
|
|
lineHeight: 32,
|
||
|
|
},
|
||
|
|
subtitle: {
|
||
|
|
fontSize: 20,
|
||
|
|
fontWeight: "bold",
|
||
|
|
},
|
||
|
|
link: {
|
||
|
|
lineHeight: 30,
|
||
|
|
fontSize: 16,
|
||
|
|
color: "#0a7ea4",
|
||
|
|
},
|
||
|
|
})
|