refactor: use nuxtimg to improve performances

This commit is contained in:
2026-02-22 00:51:10 +01:00
parent 85febfb1c8
commit d7ba7da0f3
55 changed files with 424 additions and 16 deletions

View File

@@ -1,7 +1,6 @@
<script setup lang="ts">
import { z } from "zod";
import { LazyApiModal } from "#components";
import type { SelectMenuItem } from "@nuxt/ui";
const qrCode = ref("/default.webp");
const form = useTemplateRef("form");
@@ -12,19 +11,22 @@ const apiModal = overlay.create(LazyApiModal);
const isQRCodeEmpty = computed(() => qrCode.value === "/default.webp");
const { data: logos } = await useFetch<string[]>("/api/logos");
const { data: logos } = await useFetch("/api/logos");
const logoItems = computed<SelectMenuItem[]>(() =>
(logos.value ?? []).map((name) => ({
label: name,
value: name,
avatar: { src: `/icons/${name}.png`, alt: name },
})),
const logoItems = computed(
() =>
logos.value?.map((name) => ({
label: name,
value: name,
avatar: { src: `/logos/${name}.png`, alt: name },
})) ?? [],
);
const selectedLogoItem = computed({
get: () => logoItems.value.find((i) => i.value === formState.logo),
set: (item) => { formState.logo = item?.value as string | undefined; },
get: () => logoItems.value?.find((i) => i.value === formState.logo),
set: (item) => {
formState.logo = item?.value as string | undefined;
},
});
const formSchema = z
@@ -159,13 +161,19 @@ const {
class="w-full"
>
<template #leading>
<img
<NuxtImg
v-if="selectedLogoItem"
:src="selectedLogoItem.avatar?.src"
:alt="selectedLogoItem.label"
class="size-4 dark:invert"
width="16"
height="16"
class="dark:invert"
/>
<UIcon
v-else
name="i-heroicons-photo"
class="size-4 text-dimmed"
/>
<UIcon v-else name="i-heroicons-photo" class="size-4 text-dimmed" />
</template>
<template v-if="selectedLogoItem">{{
@@ -173,10 +181,12 @@ const {
}}</template>
<template #item-leading="{ item }">
<img
<NuxtImg
:src="item.avatar?.src"
:alt="item.label"
class="size-4 dark:invert"
width="16"
height="16"
class="dark:invert"
/>
</template>
</USelectMenu>