Files
cv-site/templates/partials/navigation/language-selector.html
T

45 lines
1.8 KiB
HTML
Raw Normal View History

2025-11-12 18:26:18 +00:00
{{define "language-selector"}}
2025-11-14 21:38:09 +00:00
<!-- Language selector with atomic updates via out-of-band swaps -->
2025-11-16 10:11:58 +00:00
<div class="language-selector-wrapper">
<!-- Loading indicators placed outside swap target so they persist -->
<!-- Using span wrapper to avoid shadow DOM issues with iconify-icon -->
<span id="lang-indicator-en" class="htmx-indicator small">
<iconify-icon icon="mdi:loading"
2025-11-16 10:11:58 +00:00
class="spinning light"
width="14"
height="14"
aria-label="Loading"></iconify-icon>
2025-11-16 10:11:58 +00:00
</span>
<span id="lang-indicator-es" class="htmx-indicator small">
<iconify-icon icon="mdi:loading"
2025-11-16 10:11:58 +00:00
class="spinning light"
width="14"
height="14"
aria-label="Loading"></iconify-icon>
2025-11-16 10:11:58 +00:00
</span>
<div class="language-selector" id="language-selector">
<button class="selector-btn {{if eq .Lang "en"}}active{{end}}"
data-short="EN"
hx-get="/switch-language?lang=en"
hx-target="#language-selector"
hx-swap="outerHTML swap:250ms settle:250ms"
hx-indicator="#lang-indicator-en"
hx-push-url="/?lang=en"
aria-label="English">
<span>English</span>
</button>
<button class="selector-btn {{if eq .Lang "es"}}active{{end}}"
data-short="ES"
hx-get="/switch-language?lang=es"
hx-target="#language-selector"
hx-swap="outerHTML swap:250ms settle:250ms"
hx-indicator="#lang-indicator-es"
hx-push-url="/?lang=es"
aria-label="Español">
<span>Español</span>
</button>
</div>
2025-11-12 18:26:18 +00:00
</div>
{{end}}