feat(header): icon nav redesign + migrate icons mdi→lucide
Deploy / verify (push) Successful in 1m26s
Deploy / deploy (push) Successful in 2m26s

- Header desktop nav: social icons grouped in a wald-tinted pill with
  labels, active-state (aria-current + bold), opacity hover (no per-item bg)
- Mobile overlay: social links as icon+label rows with active-state
- Search button: lucide:search, icon-only
- Migrate all icons mdi→lucide app-wide (234 refs); brand/language logos
  (google, whatsapp, mastodon, telegram, language-*) stay on mdi
- generate-icons: emit mdi + lucide subsets; add @iconify-json/lucide
- iconify-offline: register lucide collection
- scripts/icon-map|validate|apply: reusable migration tooling

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Peter Meier
2026-06-24 10:44:56 +02:00
parent e434ee3620
commit 0ab2c58eb4
46 changed files with 823 additions and 598 deletions
@@ -239,7 +239,7 @@
title={t(T.image_gallery_download)}
aria-label={t(T.image_gallery_download)}
>
<Icon icon="mdi:download-outline" class="text-xl" aria-hidden="true" />
<Icon icon="lucide:download" class="text-xl" aria-hidden="true" />
</a>
</div>
{#if withUrl.length > 1}
@@ -249,7 +249,7 @@
onclick={modalPrev}
aria-label={t(T.image_gallery_prev_aria)}
>
<Icon icon="mdi:chevron-left" class="text-2xl" aria-hidden="true" />
<Icon icon="lucide:chevron-left" class="text-2xl" aria-hidden="true" />
</button>
<button
type="button"
@@ -257,7 +257,7 @@
onclick={modalNext}
aria-label={t(T.image_gallery_next_aria)}
>
<Icon icon="mdi:chevron-right" class="text-2xl" aria-hidden="true" />
<Icon icon="lucide:chevron-right" class="text-2xl" aria-hidden="true" />
</button>
{/if}
<button
@@ -266,7 +266,7 @@
onclick={closeModal}
aria-label={t(T.image_gallery_close)}
>
<Icon icon="mdi:close" class="text-lg" aria-hidden="true" />
<Icon icon="lucide:x" class="text-lg" aria-hidden="true" />
</button>
</div>
</div>
@@ -337,7 +337,7 @@
aria-label={t(T.image_gallery_prev_aria)}
onclick={prev}
>
<Icon icon="mdi:chevron-left" class="text-2xl" aria-hidden="true" />
<Icon icon="lucide:chevron-left" class="text-2xl" aria-hidden="true" />
</button>
<button
type="button"
@@ -345,7 +345,7 @@
aria-label={t(T.image_gallery_next_aria)}
onclick={next}
>
<Icon icon="mdi:chevron-right" class="text-2xl" aria-hidden="true" />
<Icon icon="lucide:chevron-right" class="text-2xl" aria-hidden="true" />
</button>
<div class="flex justify-center gap-1.5 mt-2" role="tablist" aria-label={t(T.image_gallery_position_aria)}>