refactor: swap icon for real favicon and better status indicator

This commit is contained in:
arabcoders 2026-04-09 01:36:39 +03:00
parent 6553d0d957
commit c552c63274
2 changed files with 45 additions and 26 deletions

View file

@ -74,37 +74,44 @@
:ui="dashboardSidebarUi"
>
<template #header="{ collapsed }">
<div
class="flex w-full min-w-0 items-center gap-2"
:class="collapsed ? 'justify-center' : ''"
>
<span
class="inline-flex shrink-0 items-center justify-center transition-all duration-200"
:class="
collapsed
? 'size-10 rounded-xl bg-elevated/80 ring ring-default shadow-xs'
: ''
"
<UTooltip :text="connectionStatusLabel">
<NuxtLink
to="/"
class="flex w-full min-w-0 items-center gap-2 rounded-xl transition-colors hover:bg-elevated/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary"
:class="collapsed ? 'justify-center p-1' : 'px-1.5 py-1'"
aria-label="Go to home"
>
<UIcon
v-if="'connecting' === socket.connectionStatus"
name="i-lucide-loader-circle"
:class="[collapsed ? 'size-6' : 'size-4', 'animate-spin']"
/>
<UIcon v-else name="i-lucide-house" :class="collapsed ? 'size-6' : 'size-4'" />
</span>
<span
class="relative inline-flex shrink-0 items-center justify-center transition-all duration-200"
:class="
collapsed
? 'size-10 rounded-xl bg-elevated/80 ring ring-default shadow-xs'
: 'size-9 rounded-lg'
"
>
<img
:src="uri('/images/favicon.png')"
alt="YTPTube"
class="rounded-lg object-contain"
:class="collapsed ? 'size-6' : 'size-5'"
/>
<span
aria-hidden="true"
class="absolute right-0 bottom-0 size-2.5 rounded-full ring-2 ring-default"
:class="connectionStatusDotClass"
/>
</span>
<div v-if="false === collapsed" class="min-w-0">
<UTooltip :text="connectionStatusLabel">
<div v-if="false === collapsed" class="min-w-0">
<p class="truncate text-sm font-semibold" :class="connectionStatusColor">
YTPTube
</p>
</UTooltip>
<p v-if="config?.app?.instance_title" class="truncate text-xs text-toned">
{{ config.app.instance_title }}
</p>
</div>
</div>
<p v-if="config?.app?.instance_title" class="truncate text-xs text-toned">
{{ config.app.instance_title }}
</p>
</div>
</NuxtLink>
</UTooltip>
</template>
<template #default="{ collapsed }">
@ -1072,6 +1079,18 @@ const connectionStatusColor = computed(() => {
}
});
const connectionStatusDotClass = computed(() => {
switch (socket.connectionStatus) {
case 'connected':
return 'bg-success';
case 'connecting':
return 'bg-warning';
case 'disconnected':
default:
return 'bg-error';
}
});
const connectionStatusLabel = computed(() => {
switch (socket.connectionStatus) {
case 'connected':

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 63 KiB