Skip to content

Commit 3da01b7

Browse files
committed
Readd Heading.tsx
1 parent 5485f50 commit 3da01b7

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

src/components/layout/Heading.tsx

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import React, { ForwardedRef, forwardRef, useMemo } from "react";
2+
import { twMerge } from "tailwind-merge";
3+
4+
export type HeadingProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>;
5+
6+
const makeHeading = (level: number, defaultClassName: string) => forwardRef((
7+
{
8+
className,
9+
...props
10+
}: HeadingProps,
11+
ref: ForwardedRef<HTMLHeadingElement>
12+
) => {
13+
const Tag = `h${level}`;
14+
15+
const computedClassName = useMemo(
16+
() => twMerge(defaultClassName, className),
17+
[className]
18+
);
19+
20+
return <Tag
21+
ref={ref}
22+
//@ts-ignore
23+
className={computedClassName}
24+
{...props}
25+
/>;
26+
});
27+
28+
export const H1 = makeHeading(1, "text-5xl font-bold md:text-6xl");
29+
export const H2 = makeHeading(2, "text-4xl font-bold md:text-5xl");
30+
export const H3 = makeHeading(3, "text-3xl font-semibold md:text-4xl");
31+
export const H4 = makeHeading(4, "text-2xl font-semibold md:text-3xl");
32+
export const H5 = makeHeading(5, "text-xl font-semibold md:text-2xl");
33+
export const H6 = makeHeading(6, "text-lg font-semibold md:text-xl");
34+
35+
export default { H1, H2, H3, H4, H5, H6 };

0 commit comments

Comments
 (0)