cycles-quartz/apps/transfers/frontend/src/components/StyledText/StyledText.tsx
2024-07-10 21:11:07 +02:00

30 lines
624 B
TypeScript

import { ComponentProps, ElementType } from 'react'
import { twMerge } from 'tailwind-merge'
import { classNames } from './classNames'
type StyledTextVariant = keyof typeof classNames
type StyledTextProps<T extends ElementType = 'span'> = Omit<
ComponentProps<T>,
'variant'
> & {
as?: T
variant?: StyledTextVariant
}
export function StyledText<T extends ElementType = 'span'>({
as,
className,
variant,
...otherProps
}: StyledTextProps<T>) {
const Component = as || 'span'
return (
<Component
className={twMerge(variant && classNames[variant], className)}
{...otherProps}
/>
)
}