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" :ui="dashboardSidebarUi"
> >
<template #header="{ collapsed }"> <template #header="{ collapsed }">
<div <UTooltip :text="connectionStatusLabel">
class="flex w-full min-w-0 items-center gap-2" <NuxtLink
:class="collapsed ? 'justify-center' : ''" 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"
<span :class="collapsed ? 'justify-center p-1' : 'px-1.5 py-1'"
class="inline-flex shrink-0 items-center justify-center transition-all duration-200" aria-label="Go to home"
:class="
collapsed
? 'size-10 rounded-xl bg-elevated/80 ring ring-default shadow-xs'
: ''
"
> >
<UIcon <span
v-if="'connecting' === socket.connectionStatus" class="relative inline-flex shrink-0 items-center justify-center transition-all duration-200"
name="i-lucide-loader-circle" :class="
:class="[collapsed ? 'size-6' : 'size-4', 'animate-spin']" collapsed
/> ? 'size-10 rounded-xl bg-elevated/80 ring ring-default shadow-xs'
<UIcon v-else name="i-lucide-house" :class="collapsed ? 'size-6' : 'size-4'" /> : 'size-9 rounded-lg'
</span> "
>
<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"> <div v-if="false === collapsed" class="min-w-0">
<UTooltip :text="connectionStatusLabel">
<p class="truncate text-sm font-semibold" :class="connectionStatusColor"> <p class="truncate text-sm font-semibold" :class="connectionStatusColor">
YTPTube YTPTube
</p> </p>
</UTooltip> <p v-if="config?.app?.instance_title" class="truncate text-xs text-toned">
<p v-if="config?.app?.instance_title" class="truncate text-xs text-toned"> {{ config.app.instance_title }}
{{ config.app.instance_title }} </p>
</p> </div>
</div> </NuxtLink>
</div> </UTooltip>
</template> </template>
<template #default="{ collapsed }"> <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(() => { const connectionStatusLabel = computed(() => {
switch (socket.connectionStatus) { switch (socket.connectionStatus) {
case 'connected': case 'connected':

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 63 KiB