mirror of
https://github.com/hanzo-io/team.git
synced 2026-10-30 18:56:23 +00:00
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import { VariantProps, cva } from 'class-variance-authority';
|
|
import { cssInterop } from 'nativewind';
|
|
import * as React from 'react';
|
|
import { UITextView } from 'react-native-uitextview';
|
|
import { cn } from '@lib/cn';
|
|
|
|
cssInterop(UITextView, { className: 'style' });
|
|
|
|
const textVariants = cva('text-foreground', {
|
|
variants: {
|
|
variant: {
|
|
largeTitle: 'text-4xl',
|
|
title1: 'text-2xl',
|
|
title2: 'text-[22px] leading-7',
|
|
title3: 'text-xl',
|
|
heading: 'text-[17px] leading-6 font-semibold',
|
|
body: 'text-[17px] leading-6',
|
|
callout: 'text-base',
|
|
subhead: 'text-[15px] leading-6',
|
|
footnote: 'text-[13px] leading-5',
|
|
caption1: 'text-xs',
|
|
caption2: 'text-[11px] leading-4',
|
|
},
|
|
color: {
|
|
primary: '',
|
|
secondary: 'text-secondary-foreground/90',
|
|
tertiary: 'text-muted-foreground/90',
|
|
quarternary: 'text-muted-foreground/50',
|
|
},
|
|
},
|
|
defaultVariants: {
|
|
variant: 'body',
|
|
color: 'primary',
|
|
},
|
|
});
|
|
|
|
const TextClassContext = React.createContext<string | undefined>(undefined);
|
|
|
|
function Text({
|
|
className,
|
|
variant,
|
|
color,
|
|
...props
|
|
}: React.ComponentPropsWithoutRef<typeof UITextView> & VariantProps<typeof textVariants>) {
|
|
const textClassName = React.useContext(TextClassContext);
|
|
return (
|
|
<UITextView
|
|
className={cn(textVariants({ variant, color }), textClassName, className)}
|
|
{...props}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export { Text, TextClassContext, textVariants };
|