Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 14 additions & 52 deletions app/components/Header/AccountMenu.client.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ const {
isConnected: isNpmConnected,
isConnecting: isNpmConnecting,
npmUser,
avatar: npmAvatar,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still wondering if it makes sense to show avatars in the dropdown, even if not in the top level .... 🤔

wdyt?

Copy link
Contributor Author

@MatteoGabriele MatteoGabriele Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it may look a bit confusing and inconsistent.
If I have to go with avatars, which I do like because they give the impression that I've actually connected, I prefer the initial proposal.

activeOperations,
hasPendingOperations,
} = useConnector()
Expand Down Expand Up @@ -71,42 +70,27 @@ function openAuthModal() {
:class="hasBothConnections ? '-space-x-2' : ''"
>
<!-- npm avatar (first/back) -->
<img
v-if="isNpmConnected && npmAvatar"
:src="npmAvatar"
:alt="npmUser || $t('account_menu.npm_cli')"
width="24"
height="24"
class="w-6 h-6 rounded-full ring-2 ring-bg object-cover"
/>
<span
v-else-if="isNpmConnected"
v-if="isNpmConnected"
class="w-6 h-6 rounded-full bg-bg-muted ring-2 ring-bg flex items-center justify-center"
>
<span class="i-carbon-terminal w-3 h-3 text-fg-muted" aria-hidden="true" />
<span class="i-simple-icons:npm w-3 h-3 text-fg-muted" aria-hidden="true" />
</span>

<!-- Atmosphere avatar (second/front, overlapping) -->
<img
v-if="atprotoUser?.avatar"
:src="atprotoUser.avatar"
:alt="atprotoUser.handle"
width="24"
height="24"
class="w-6 h-6 rounded-full ring-2 ring-bg object-cover"
:class="hasBothConnections ? 'relative z-10' : ''"
/>
<span
v-else-if="atprotoUser"
v-if="atprotoUser"
class="w-6 h-6 rounded-full bg-bg-muted ring-2 ring-bg flex items-center justify-center"
:class="hasBothConnections ? 'relative z-10' : ''"
>
<span class="i-carbon-cloud w-3 h-3 text-fg-muted" aria-hidden="true" />
<span class="i-simple-icons:maildotru w-3 h-3 text-fg-muted" aria-hidden="true" />
</span>
</div>

<!-- "connect" text when not connected -->
<span v-if="!hasAnyConnection" class="font-mono text-sm">
<span v-if="hasAnyConnection" class="sr-only">
{{ $t('account_menu.account') }}
</span>
<span v-else class="font-mono text-sm">
{{ $t('account_menu.connect') }}
</span>

Expand Down Expand Up @@ -149,19 +133,8 @@ function openAuthModal() {
class="w-full px-3 py-2.5 flex items-center gap-3 hover:bg-bg-muted transition-colors text-start rounded-md"
@click="openConnectorModal"
>
<img
v-if="npmAvatar"
:src="npmAvatar"
:alt="npmUser"
width="32"
height="32"
class="w-8 h-8 rounded-full object-cover"
/>
<span
v-else
class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center"
>
<span class="i-carbon-terminal w-4 h-4 text-fg-muted" aria-hidden="true" />
<span class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center">
<span class="i-simple-icons:npm w-4 h-4 text-fg-muted" aria-hidden="true" />
</span>
<div class="flex-1 min-w-0">
<div class="font-mono text-sm text-fg truncate">~{{ npmUser }}</div>
Expand Down Expand Up @@ -192,19 +165,8 @@ function openAuthModal() {
class="w-full px-3 py-2.5 flex items-center gap-3 hover:bg-bg-muted transition-colors text-start rounded-md"
@click="openAuthModal"
>
<img
v-if="atprotoUser.avatar"
:src="atprotoUser.avatar"
:alt="atprotoUser.handle"
width="32"
height="32"
class="w-8 h-8 rounded-full object-cover"
/>
<span
v-else
class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center"
>
<span class="i-carbon-cloud w-4 h-4 text-fg-muted" aria-hidden="true" />
<span class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center">
<span class="i-simple-icons:maildotru w-4 h-4 text-fg-muted" aria-hidden="true" />
</span>
<div class="flex-1 min-w-0">
<div class="font-mono text-sm text-fg truncate">@{{ atprotoUser.handle }}</div>
Expand Down Expand Up @@ -234,7 +196,7 @@ function openAuthModal() {
class="i-carbon-circle-dash w-4 h-4 text-yellow-500 animate-spin"
aria-hidden="true"
/>
<span v-else class="i-carbon-terminal w-4 h-4 text-fg-muted" aria-hidden="true" />
<span v-else class="i-simple-icons:npm w-4 h-4 text-fg-muted" aria-hidden="true" />
</span>
<div class="flex-1 min-w-0">
<div class="font-mono text-sm text-fg">
Expand All @@ -256,7 +218,7 @@ function openAuthModal() {
@click="openAuthModal"
>
<span class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center">
<span class="i-carbon-cloud w-4 h-4 text-fg-muted" aria-hidden="true" />
<span class="i-simple-icons:maildotru w-4 h-4 text-fg-muted" aria-hidden="true" />
</span>
<div class="flex-1 min-w-0">
<div class="font-mono text-sm text-fg">
Expand Down
34 changes: 6 additions & 28 deletions app/components/Header/MobileMenu.client.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useAtproto } from '~/composables/atproto/useAtproto'

const isOpen = defineModel<boolean>('open', { default: false })

const { isConnected, npmUser, avatar: npmAvatar } = useConnector()
const { isConnected, npmUser } = useConnector()
const { user: atprotoUser } = useAtproto()

const navRef = useTemplateRef('navRef')
Expand Down Expand Up @@ -114,19 +114,8 @@ onUnmounted(deactivate)
class="w-full flex items-center gap-3 px-3 py-3 rounded-md font-mono text-sm text-fg hover:bg-bg-subtle transition-colors duration-200 text-start"
@click="handleShowConnector"
>
<img
v-if="npmAvatar"
:src="npmAvatar"
:alt="npmUser"
width="20"
height="20"
class="w-5 h-5 rounded-full object-cover"
/>
<span
v-else
class="w-5 h-5 rounded-full bg-bg-muted flex items-center justify-center"
>
<span class="i-carbon-terminal w-3 h-3 text-fg-muted" aria-hidden="true" />
<span class="w-5 h-5 rounded-full bg-bg-muted flex items-center justify-center">
<span class="i-simple-icons:npm w-3 h-3 text-fg-muted" aria-hidden="true" />
</span>
<span class="flex-1">~{{ npmUser }}</span>
<span class="w-2 h-2 rounded-full bg-green-500" aria-hidden="true" />
Expand All @@ -139,19 +128,8 @@ onUnmounted(deactivate)
class="w-full flex items-center gap-3 px-3 py-3 rounded-md font-mono text-sm text-fg hover:bg-bg-subtle transition-colors duration-200 text-start"
@click="handleShowAuth"
>
<img
v-if="atprotoUser.avatar"
:src="atprotoUser.avatar"
:alt="atprotoUser.handle"
width="20"
height="20"
class="w-5 h-5 rounded-full object-cover"
/>
<span
v-else
class="w-5 h-5 rounded-full bg-bg-muted flex items-center justify-center"
>
<span class="i-carbon-cloud w-3 h-3 text-fg-muted" aria-hidden="true" />
<span class="w-5 h-5 rounded-full bg-bg-muted flex items-center justify-center">
<span class="i-simple-icons:maildotru w-3 h-3 text-fg-muted" aria-hidden="true" />
</span>
<span class="flex-1 truncate">@{{ atprotoUser.handle }}</span>
</button>
Expand All @@ -164,7 +142,7 @@ onUnmounted(deactivate)
@click="handleShowAuth"
>
<span class="w-5 h-5 rounded-full bg-bg-muted flex items-center justify-center">
<span class="i-carbon-cloud w-3 h-3 text-fg-muted" aria-hidden="true" />
<span class="i-simple-icons:maildotru w-3 h-3 text-fg-muted" aria-hidden="true" />
</span>
<span class="flex-1">{{ $t('account_menu.connect_atmosphere') }}</span>
</button>
Expand Down
Loading