src/components/accent.tsx
import clsx from 'clsx'
import React from 'react'
interface AccentProps {
children: React.ReactNode
className?: string
size?: 'small' | 'medium' | 'large'
fontSize?: string
color?: string
fontFamily?: string
margin?: string
overflowFix?: string
textAlign?: string
textTransform?: string
display?: string
}
export function Accent({
children,
className = '',
size = 'large',
fontSize = '',
color = '',
fontFamily = '',
margin = '',
overflowFix = '',
textAlign = '',
textTransform = 'lowercase',
display = 'inline-block',
}: AccentProps) {
const sizeClasses = {
small: 'text-4xl sm:text-4xl lg:text-5xl xl:text-6xl',
medium: 'text-5xl sm:text-5xl lg:text-6xl xl:text-7xl',
large: 'text-6xl sm:text-7xl lg:text-8xl xl:text-9xl',
}
const finalFontSize = fontSize || sizeClasses[size]
const finalColor = color || 'text-accent5'
const finalFontFamily = fontFamily || 'font-accent'
const finalMargin = margin || 'mb-0'
const finalOverflowFix = overflowFix || 'px-2 -ml-2'
const textShadow =
finalColor === 'text-body' ? 'text-shadow-sm text-shadow-contrast/10' : ''
return (
<span
className={clsx(
'font-normal',
display,
finalFontSize,
finalColor,
finalFontFamily,
finalMargin,
finalOverflowFix,
textAlign,
textTransform,
textShadow,
className
)}
>
{children}
</span>
)
}