From 89a50b2240773e69efb3641fc21754f2c1f96743 Mon Sep 17 00:00:00 2001
From: itziarZG
Date: Thu, 12 Mar 2026 10:25:42 +0100
Subject: [PATCH] feat: add figma buttons
---
src/components/Button.astro | 43 +++++++++++++++++++++++++++++++++
src/pages/[lang]/sponsors.astro | 9 ++++---
2 files changed, 49 insertions(+), 3 deletions(-)
create mode 100644 src/components/Button.astro
diff --git a/src/components/Button.astro b/src/components/Button.astro
new file mode 100644
index 0000000..9741cd8
--- /dev/null
+++ b/src/components/Button.astro
@@ -0,0 +1,43 @@
+---
+interface Props {
+ variant?: 'primary' | 'secondary' | 'outline' | 'ghost';
+ size?: 'sm' | 'md' | 'lg';
+ href?: string;
+ class?: string;
+ [x: string]: any;
+}
+
+const {
+ variant = 'primary',
+ size = 'md',
+ href,
+ class: className,
+ ...rest
+} = Astro.props;
+
+const variants = {
+ primary: 'bg-orange-500 text-white hover:bg-orange-600',
+ secondary: 'bg-amber-400 text-stone-900 hover:bg-amber-500',
+ outline: 'outline outline-2 outline-offset-[-2px] outline-orange-500 text-orange-500 hover:bg-orange-50',
+ ghost: 'text-stone-900 dark:text-white hover:bg-gray-100 dark:hover:bg-gray-800'
+};
+
+// Map sizes based on exact Figma sizes
+const sizes = {
+ sm: 'h-8 px-3 py-1.5 text-sm leading-5',
+ md: 'h-10 px-4 py-2 text-base leading-6', // Uses h-10 based on size specs, though some variants export h-11
+ lg: 'h-12 px-6 py-3 text-lg leading-7'
+};
+
+const baseClasses = 'inline-flex items-center justify-center font-[\'Outfit\'] font-medium rounded-lg text-center transition-colors duration-200 cursor-pointer';
+
+const Element = href ? 'a' : 'button';
+---
+
+
+
+
diff --git a/src/pages/[lang]/sponsors.astro b/src/pages/[lang]/sponsors.astro
index aec0a8c..e660ad1 100644
--- a/src/pages/[lang]/sponsors.astro
+++ b/src/pages/[lang]/sponsors.astro
@@ -2,6 +2,7 @@
import Layout from '../../layouts/Layout.astro'
import { SPONSORS_EMAIL } from '../constants'
import { texts } from '../../i18n/sponsors'
+import Button from '../../components/Button.astro'
export function getStaticPaths() {
return [{ params: { lang: 'es' } }, { params: { lang: 'en' } }, { params: { lang: 'ca' } }]
@@ -510,12 +511,14 @@ const {
{contact.body}
{SPONSORS_EMAIL}