Files
myeasycms-v2/packages/ui/src/shadcn/heading.tsx
Giancarlo Buomprisco 6f9cf22fa8 EsLint v9 (#154)
* Upgrade ESLint and related configurations to version 9

- Update ESLint to version 9.19.0
- Migrate ESLint configurations to flat config format
- Remove deprecated ESLint config files
- Update package dependencies and configurations
- Simplify ESLint setup across packages
- Remove unnecessary ESLint config blocks from package.json files
- Improved CI caching with Turborepo tasks
- Removed duplicate styles
2025-02-07 11:38:29 +08:00

82 lines
1.7 KiB
TypeScript

import { cn } from '../lib/utils';
type Level = 1 | 2 | 3 | 4 | 5 | 6;
export function Heading({
level,
children,
className,
}: React.PropsWithChildren<{ level?: Level; className?: string }>) {
switch (level) {
case 1:
return (
<h1
className={cn(
`font-heading scroll-m-20 text-3xl font-bold tracking-tight lg:text-4xl dark:text-white`,
className,
)}
>
{children}
</h1>
);
case 2:
return (
<h2
className={cn(
`font-heading scroll-m-20 pb-2 text-2xl font-semibold tracking-tight transition-colors first:mt-0 lg:text-3xl`,
className,
)}
>
{children}
</h2>
);
case 3:
return (
<h3
className={cn(
'font-heading scroll-m-20 text-xl font-semibold tracking-tight lg:text-2xl',
className,
)}
>
{children}
</h3>
);
case 4:
return (
<h4
className={cn(
'font-heading scroll-m-20 text-lg font-semibold tracking-tight lg:text-xl',
className,
)}
>
{children}
</h4>
);
case 5:
return (
<h5
className={cn(
'font-heading scroll-m-20 text-base font-medium lg:text-lg',
className,
)}
>
{children}
</h5>
);
case 6:
return (
<h6
className={cn(
'font-heading scroll-m-20 text-base font-medium',
className,
)}
>
{children}
</h6>
);
default:
return <Heading level={1}>{children}</Heading>;
}
}