diff --git a/package.json b/package.json
index c33e14b..2922069 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "2026.es.pycon.org",
- "version": "1.17.21",
+ "version": "1.17.22",
"description": "",
"main": "index.js",
"scripts": {
diff --git a/src/components/ProgramaPage.astro b/src/components/ProgramaPage.astro
index 14fe914..73d8822 100644
--- a/src/components/ProgramaPage.astro
+++ b/src/components/ProgramaPage.astro
@@ -170,7 +170,6 @@ const schedule = await getSchedule()
;(function () {
const STORAGE_KEY = 'pycones-schedule-view'
const radios = document.querySelectorAll('input[name="schedule-view"]')
- const views = document.querySelectorAll('.schedule-view')
function applyView(value) {
// Visibility is driven declaratively from CSS via the
diff --git a/src/components/icons/Icon.astro b/src/components/icons/Icon.astro
index 97deaa0..02dde38 100644
--- a/src/components/icons/Icon.astro
+++ b/src/components/icons/Icon.astro
@@ -28,6 +28,11 @@ const classes = [sizeClasses, colorClasses, className, 'inline-block flex-shrink
// Build style object for CSS color values
const style = color.startsWith('#') || color.startsWith('rgb') || color.startsWith('hsl') ? { color } : {}
+// Lucide hardcodes width/height (24) as HTML attributes, which take precedence over
+// Tailwind's width/height utility classes. Neutralize them so the size classes
+// (IconSizes) actually control the rendered size.
+const lucideSizeProps = { width: '100%', height: '100%' }
+
// Log missing mappings in development
if (!LucideIconComponent && !svg && !fallback) {
try {
@@ -60,6 +65,7 @@ if (!LucideIconComponent && !svg && !fallback) {
aria-label={ariaHidden ? undefined : ariaLabel}
aria-hidden={ariaHidden ? 'true' : undefined}
focusable="false"
+ {...lucideSizeProps}
{...rest}
/>
) : fallback ? (
@@ -79,6 +85,7 @@ if (!LucideIconComponent && !svg && !fallback) {
aria-label={ariaHidden ? undefined : ariaLabel || `Unknown icon: ${name}`}
aria-hidden={ariaHidden ? 'true' : undefined}
focusable="false"
+ {...lucideSizeProps}
{...rest}
/>
)
diff --git a/src/i18n/components/footer/ca.ts b/src/i18n/components/footer/ca.ts
index c1e193c..a882cd7 100644
--- a/src/i18n/components/footer/ca.ts
+++ b/src/i18n/components/footer/ca.ts
@@ -1,6 +1,10 @@
export const ca = {
copyright: 'Copyright © Python España & PyConES 2026 Org',
links: [{ label: 'Codi de conducta', href: '/ca/code-of-conduct' }],
+ contact: {
+ label: 'Contacte',
+ email: 'contacto@2026.es.pycon.org',
+ },
social: {
title: 'Segueix-nos',
},
diff --git a/src/i18n/components/footer/en.ts b/src/i18n/components/footer/en.ts
index dcb250d..a3cf87a 100644
--- a/src/i18n/components/footer/en.ts
+++ b/src/i18n/components/footer/en.ts
@@ -1,6 +1,10 @@
export const en = {
copyright: 'Copyright © Python España & PyConES 2026 Org',
links: [{ label: 'Code of Conduct', href: '/en/code-of-conduct' }],
+ contact: {
+ label: 'Contact',
+ email: 'contacto@2026.es.pycon.org',
+ },
social: {
title: 'Follow us',
},
diff --git a/src/i18n/components/footer/es.ts b/src/i18n/components/footer/es.ts
index 1745a26..e5b00c8 100644
--- a/src/i18n/components/footer/es.ts
+++ b/src/i18n/components/footer/es.ts
@@ -1,6 +1,10 @@
export const es = {
copyright: 'Copyright © Python España & PyConES 2026 Org',
links: [{ label: 'Código de conducta', href: '/es/code-of-conduct' }],
+ contact: {
+ label: 'Contacto',
+ email: 'contacto@2026.es.pycon.org',
+ },
social: {
title: 'Síguenos en redes',
},
diff --git a/src/layouts/components/Footer.astro b/src/layouts/components/Footer.astro
index ef9fd2c..cbad97c 100644
--- a/src/layouts/components/Footer.astro
+++ b/src/layouts/components/Footer.astro
@@ -3,6 +3,7 @@ import { getRelativeLocaleUrl } from 'astro:i18n'
import { footerTexts } from '@/i18n/components/footer'
import { menuTexts } from '@/i18n/menu'
import SocialIcon from '@/components/icons/SocialIcon.astro'
+import Icon from '@/components/icons/Icon.astro'
interface Props {
lang?: string
@@ -92,6 +93,14 @@ const collaborators = [
))
}
+
+
+ {t.contact.label}
+
diff --git a/src/lib/icons/mappings/contact.ts b/src/lib/icons/mappings/contact.ts
new file mode 100644
index 0000000..683545b
--- /dev/null
+++ b/src/lib/icons/mappings/contact.ts
@@ -0,0 +1,13 @@
+import type { IconMappingWithFallback } from '@/lib/icons/types'
+import { Mail } from '@lucide/astro'
+
+/**
+ * Contact icon mappings
+ * Maps semantic names to Lucide icons with emoji fallbacks
+ */
+export const contactMapping: Record = {
+ mail: {
+ icon: Mail,
+ fallback: '✉️',
+ },
+}
diff --git a/src/lib/icons/mappings/index.ts b/src/lib/icons/mappings/index.ts
index 1a81434..45e52c5 100644
--- a/src/lib/icons/mappings/index.ts
+++ b/src/lib/icons/mappings/index.ts
@@ -3,6 +3,7 @@ import { socialMapping } from './social'
import { statisticsMapping } from './statistics'
import { technicalMapping } from './technical'
import { statusMapping } from './status'
+import { contactMapping } from './contact'
// Combine all category mappings
const allMappings = {
@@ -10,6 +11,7 @@ const allMappings = {
...statisticsMapping,
...technicalMapping,
...statusMapping,
+ ...contactMapping,
}
/**
diff --git a/src/lib/icons/types.ts b/src/lib/icons/types.ts
index 8c65e3a..fd9d37c 100644
--- a/src/lib/icons/types.ts
+++ b/src/lib/icons/types.ts
@@ -59,6 +59,8 @@ export type TechnicalIconName =
| 'devops-cloud'
| 'others'
+export type ContactIconName = 'mail'
+
export type StatusIconName =
| 'warning'
| 'allowed'
@@ -92,4 +94,5 @@ export type StatusIconName =
| 'main'
// Union type for all available icon names
-export type AvailableIconName = SocialIconName | StatisticIconName | TechnicalIconName | StatusIconName
+export type AvailableIconName =
+ SocialIconName | StatisticIconName | TechnicalIconName | StatusIconName | ContactIconName
diff --git a/src/pages/[lang]/becas.astro b/src/pages/[lang]/becas.astro
index c10f252..c82a6de 100644
--- a/src/pages/[lang]/becas.astro
+++ b/src/pages/[lang]/becas.astro
@@ -23,7 +23,6 @@ const {
documentation,
application,
contact,
- faq,
} = t
---
diff --git a/src/pages/[lang]/django-girls.astro b/src/pages/[lang]/django-girls.astro
index 9e81bb8..02f803a 100644
--- a/src/pages/[lang]/django-girls.astro
+++ b/src/pages/[lang]/django-girls.astro
@@ -36,7 +36,6 @@ const {
signupAttendeesUrl,
signupCoachesLabel,
signupCoachesUrl,
- shareText,
} = t
---