aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/SocialIcons.astro
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/SocialIcons.astro')
-rw-r--r--src/components/SocialIcons.astro37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/components/SocialIcons.astro b/src/components/SocialIcons.astro
new file mode 100644
index 0000000..236bb6a
--- /dev/null
+++ b/src/components/SocialIcons.astro
@@ -0,0 +1,37 @@
+---
+import Link from '@/components/Link.astro'
+import { buttonVariants } from '@/components/ui/button'
+import { ICON_MAP } from '@/consts'
+import type { SocialLink } from '@/types'
+import { Icon } from 'astro-icon/components'
+
+interface Props {
+ links: SocialLink[]
+}
+
+const { links } = Astro.props
+---
+
+<ul class="flex flex-wrap gap-2" role="list">
+ {
+ links.map(({ href, label }) => (
+ <li>
+ <Link
+ href={href}
+ aria-label={label}
+ title={label}
+ class={buttonVariants({ variant: 'outline', size: 'icon' })}
+ external
+ >
+ <Icon
+ name={
+ ICON_MAP[label as keyof typeof ICON_MAP] ||
+ 'lucide:message-circle-question'
+ }
+ class="size-4"
+ />
+ </Link>
+ </li>
+ ))
+ }
+</ul>