1
1
mirror of https://github.com/theoludwig/theoludwig.git synced 2024-11-14 00:03:12 +01:00
.profile/components/Skills/Skill.tsx

50 lines
1.1 KiB
TypeScript
Raw Normal View History

import Image from "next/image"
2021-04-18 01:56:23 +02:00
import { getTheme } from "@/theme/theme.server"
import type { SkillName } from "./skills"
import { skills } from "./skills"
2021-04-18 01:56:23 +02:00
2021-06-24 19:46:44 +02:00
export interface SkillComponentProps {
2022-10-20 22:24:01 +02:00
skill: SkillName
2021-04-18 01:56:23 +02:00
}
export const SkillComponent = (props: SkillComponentProps): JSX.Element => {
2021-04-18 01:56:23 +02:00
const { skill } = props
2021-04-18 01:56:23 +02:00
const skillProperties = skills[skill]
2021-06-24 19:46:44 +02:00
const theme = getTheme()
const getImage = (): string => {
if (typeof skillProperties.image === "string") {
2022-10-20 22:24:01 +02:00
return skillProperties.image
2021-06-24 19:46:44 +02:00
}
if (theme === "light") {
2022-10-20 22:24:01 +02:00
return skillProperties.image.light
}
return skillProperties.image.dark
}
2021-04-18 01:56:23 +02:00
return (
<li>
<a
href={skillProperties.link}
className="mx-2 flex max-w-xl flex-col items-center justify-center text-center text-primary hover:underline dark:text-primary-dark"
target="_blank"
rel="noopener noreferrer"
>
2022-10-27 19:13:29 +02:00
<Image
className="inline size-16"
2022-10-27 19:13:29 +02:00
quality={100}
2023-06-18 12:18:24 +02:00
width={64}
height={64}
2022-10-27 19:13:29 +02:00
alt={skill}
src={getImage()}
2022-10-27 19:13:29 +02:00
/>
2024-01-28 01:56:47 +01:00
<p className="mt-1 font-semibold">{skill}</p>
</a>
</li>
2021-04-18 01:56:23 +02:00
)
}