mirror of
https://github.com/theoludwig/theoludwig.git
synced 2025-02-08 21:59:39 +01:00
87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
import { GIT_REPO_LINK } from "@repo/utils/constants"
|
|
import { useTranslations } from "next-intl"
|
|
import { FaGit, FaMicrochip } from "react-icons/fa"
|
|
import { Link } from "../../Design/Link/Link.tsx"
|
|
import {
|
|
Section,
|
|
SectionContent,
|
|
SectionTitle,
|
|
} from "../../Layout/Section/Section.tsx"
|
|
import { InterestItem } from "./InterestItem.tsx"
|
|
|
|
export interface InterestsProps {}
|
|
|
|
export const Interests: React.FC<InterestsProps> = () => {
|
|
const t = useTranslations()
|
|
|
|
const items = [
|
|
{
|
|
id: "code",
|
|
title: t("home.interests.code.title"),
|
|
description: t.rich("home.interests.code.description", {
|
|
br: () => {
|
|
return <br />
|
|
},
|
|
strong: (children) => {
|
|
return <strong>{children}</strong>
|
|
},
|
|
"abbr-ux": (children) => {
|
|
return <abbr title="User Experience">{children}</abbr>
|
|
},
|
|
}),
|
|
Icon: FaMicrochip,
|
|
},
|
|
{
|
|
id: "open-source",
|
|
title: t("home.interests.open-source.title"),
|
|
description: t.rich("home.interests.open-source.description", {
|
|
br: () => {
|
|
return <br />
|
|
},
|
|
strong: (children) => {
|
|
return <strong>{children}</strong>
|
|
},
|
|
"github-link": (children) => {
|
|
return (
|
|
<Link href={GIT_REPO_LINK} target="_blank">
|
|
{children}
|
|
</Link>
|
|
)
|
|
},
|
|
}),
|
|
Icon: FaGit,
|
|
},
|
|
] as const
|
|
|
|
return (
|
|
<Section verticalSpacing horizontalSpacing id="interests">
|
|
<SectionTitle>{t("home.interests.title")}</SectionTitle>
|
|
<SectionContent shadowContainer>
|
|
<div className="max-w-full">
|
|
{items.map((item) => {
|
|
return (
|
|
<InterestItem
|
|
key={item.id}
|
|
title={item.title}
|
|
description={item.description}
|
|
/>
|
|
)
|
|
})}
|
|
</div>
|
|
|
|
<div className="my-4 flex justify-center">
|
|
<ul className="m-0 flex w-96 list-none justify-around p-0">
|
|
{items.map((item) => {
|
|
return (
|
|
<li className="m-2 size-8" key={item.id} title={item.title}>
|
|
<item.Icon className="text-primary dark:text-primary-dark block size-full" />
|
|
</li>
|
|
)
|
|
})}
|
|
</ul>
|
|
</div>
|
|
</SectionContent>
|
|
</Section>
|
|
)
|
|
}
|