Skip to content

Commit 7111c43

Browse files
committed
Refactor code structure for improved readability and maintainability
1 parent 6f345fb commit 7111c43

7 files changed

Lines changed: 112 additions & 68 deletions

File tree

dist/_astro/Footer.CJ-r0z0e.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

dist/_astro/Footer.D9fv-iK2.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/en/index.html

Lines changed: 2 additions & 6 deletions
Large diffs are not rendered by default.

dist/en/metodologia/index.html

Lines changed: 2 additions & 6 deletions
Large diffs are not rendered by default.

dist/index.html

Lines changed: 2 additions & 6 deletions
Large diffs are not rendered by default.

dist/metodologia/index.html

Lines changed: 2 additions & 6 deletions
Large diffs are not rendered by default.

src/components/Footer.astro

Lines changed: 103 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -5,47 +5,107 @@ const lang = getLangFromUrl(Astro.url);
55
const t = useTranslations(lang);
66
---
77

8-
<footer style="background: var(--bg-card); border-top: 1px solid var(--border-subtle); padding: 3rem 0;">
9-
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
10-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
11-
<div class="text-center lg:text-left">
12-
<h2 class="text-lg font-semibold mb-6" style="font-family: var(--font-heading);">
13-
RETARDO <span style="color: var(--text-accent);">CNE</span>
14-
</h2>
15-
<p class="text-gray-500 mb-1 text-sm" style="max-width: 440px; line-height: 1.6;">
16-
&copy; 2024–2026 {t('footer_rights')}
17-
<br/>
18-
{t('footer_built_by')} <a href="https://tooltician.com/" target="_blank" rel="noopener noreferrer" style="color: var(--text-accent); text-decoration: none; font-weight: 500;">Tooltician</a>
19-
</p>
20-
<div style="margin-top: 1rem; font-size: 0.78rem; line-height: 1.6; color: var(--text-secondary); max-width: 480px;">
21-
<p style="margin: 0 0 0.35rem;">
22-
{t('footer_disclaimer')}
23-
</p>
24-
<p style="margin: 0;">
25-
<a href="https://github.com/cortega26/retardo_cne/issues/new" target="_blank" rel="noopener noreferrer" style="color: var(--text-accent);">{t('footer_report_correction')}</a>
26-
<span aria-hidden="true"> · </span>
27-
CC BY 4.0
28-
<span aria-hidden="true"> · </span>
29-
{t('cred_update').replace('{{date}}', '2025-05-27')}
30-
</p>
31-
</div>
32-
</div>
33-
<div class="text-center lg:text-right">
34-
<div class="flex flex-wrap justify-center lg:justify-end gap-3 items-center">
35-
<a href="https://github.com/cortega26/retardo_cne" target="_blank" rel="noopener noreferrer"
36-
class="btn btn-outline-primary btn-sm font-bold">
37-
<svg viewBox="0 0 16 16" fill="currentColor" width="14" height="14" style="margin-right:0.35rem;vertical-align:-2px;" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
38-
{t('footer_opensource')}
39-
</a>
40-
</div>
41-
</div>
42-
</div>
43-
<div class="mt-6 pt-6" style="border-top: 1px solid var(--border-subtle);">
44-
<div class="flex justify-center gap-4 text-gray-500" style="font-size: 0.7rem; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.1em;">
45-
<a href="#inicio" class="story-link">{t('nav_home')}</a>
46-
<a href="#cronologia" class="story-link">{t('nav_evidence')}</a>
47-
<a href="#sistema" class="story-link">{t('nav_context')}</a>
48-
</div>
49-
</div>
50-
</div>
8+
<footer class="site-footer">
9+
<p class="footer-copy">&copy; 2024–2026 {t('footer_rights')}</p>
10+
<p class="footer-built">
11+
{t('footer_built_by')} <a href="https://tooltician.com/" target="_blank" rel="noopener noreferrer">Tooltician</a>
12+
</p>
5113
</footer>
14+
15+
<a href="#inicio" id="back-to-top" class="back-to-top" aria-label={lang === 'es' ? 'Volver al inicio' : 'Back to top'}>
16+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
17+
stroke-linecap="round" stroke-linejoin="round" width="18" height="18" aria-hidden="true">
18+
<polyline points="18 15 12 9 6 15"/>
19+
</svg>
20+
</a>
21+
22+
<script>
23+
const btn = document.getElementById('back-to-top');
24+
if (btn) {
25+
window.addEventListener('scroll', () => {
26+
btn.classList.toggle('visible', window.scrollY > 400);
27+
}, { passive: true });
28+
29+
btn.addEventListener('click', (e) => {
30+
e.preventDefault();
31+
document.getElementById('inicio')?.scrollIntoView({ behavior: 'smooth' });
32+
});
33+
}
34+
</script>
35+
36+
<style>
37+
.site-footer {
38+
text-align: center;
39+
padding: 2rem 1rem 2.5rem;
40+
border-top: 1px solid var(--border-subtle);
41+
background: var(--bg-card);
42+
}
43+
44+
.footer-copy {
45+
font-size: 0.84rem;
46+
color: var(--text-secondary);
47+
margin: 0 0 0.3rem;
48+
line-height: 1.5;
49+
}
50+
51+
.footer-built {
52+
font-size: 0.82rem;
53+
color: var(--text-secondary);
54+
margin: 0;
55+
}
56+
57+
.footer-built a {
58+
color: var(--text-accent);
59+
text-decoration: none;
60+
font-weight: 600;
61+
}
62+
63+
.footer-built a:hover {
64+
text-decoration: underline;
65+
}
66+
67+
/* Back-to-top button */
68+
.back-to-top {
69+
position: fixed;
70+
bottom: 1.75rem;
71+
right: 1.75rem;
72+
z-index: 200;
73+
width: 2.75rem;
74+
height: 2.75rem;
75+
border-radius: 50%;
76+
background: var(--color-brand-600);
77+
color: #fff;
78+
display: flex;
79+
align-items: center;
80+
justify-content: center;
81+
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.18);
82+
text-decoration: none;
83+
opacity: 0;
84+
transform: translateY(0.6rem);
85+
transition: opacity 0.22s ease, transform 0.22s ease, background 0.15s;
86+
pointer-events: none;
87+
}
88+
89+
.back-to-top.visible {
90+
opacity: 1;
91+
transform: translateY(0);
92+
pointer-events: auto;
93+
}
94+
95+
.back-to-top:hover,
96+
.back-to-top:focus-visible {
97+
background: var(--color-brand-700);
98+
outline: 2px solid var(--color-brand-400);
99+
outline-offset: 2px;
100+
}
101+
102+
:global([data-theme="dark"]) .back-to-top {
103+
background: var(--color-brand-500);
104+
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
105+
}
106+
107+
:global([data-theme="dark"]) .back-to-top:hover,
108+
:global([data-theme="dark"]) .back-to-top:focus-visible {
109+
background: var(--color-brand-400);
110+
}
111+
</style>

0 commit comments

Comments
 (0)