diff --git a/src/components/header-user-identity.test.tsx b/src/components/header-user-identity.test.tsx new file mode 100644 index 00000000..0789e9a6 --- /dev/null +++ b/src/components/header-user-identity.test.tsx @@ -0,0 +1,21 @@ +import { renderToStaticMarkup } from "react-dom/server"; +import { describe, expect, it } from "vitest"; +import { HeaderUserIdentity } from "./header-user-identity"; + +describe("HeaderUserIdentity", () => { + it("keeps the 40px head separated from the username", () => { + const html = renderToStaticMarkup( + , + ); + + expect(html).toContain("gap-2"); + expect(html).toContain('width="40"'); + expect(html).toContain('height="40"'); + expect(html).toContain(">Life"); + expect(html).not.toContain("-ml-"); + }); +}); diff --git a/src/components/header-user-identity.tsx b/src/components/header-user-identity.tsx new file mode 100644 index 00000000..80f25641 --- /dev/null +++ b/src/components/header-user-identity.tsx @@ -0,0 +1,25 @@ +import { UserAvatarThumbnail } from "@/components/shared/user-avatar-thumbnail"; + +interface HeaderUserIdentityProps { + figure: string; + username: string; + textColor: string; +} + +export function HeaderUserIdentity({ + figure, + username, + textColor, +}: HeaderUserIdentityProps) { + return ( + + + + {username} + + + ); +} diff --git a/src/components/shared/public-avatar-contract.test.ts b/src/components/shared/public-avatar-contract.test.ts index 8d2563ed..de5681e8 100644 --- a/src/components/shared/public-avatar-contract.test.ts +++ b/src/components/shared/public-avatar-contract.test.ts @@ -3,7 +3,7 @@ import { resolve } from "node:path"; import { describe, expect, it } from "vitest"; const compactCallSites = new Map([ - ["src/components/top-header.tsx", 2], + ["src/components/top-header.tsx", 1], ["src/app/(site)/friends/page.tsx", 1], ["src/app/(site)/guilds/[id]/page.tsx", 1], ["src/app/(site)/leaderboard/page.tsx", 1], diff --git a/src/components/top-header.tsx b/src/components/top-header.tsx index f8df6397..646a7a67 100644 --- a/src/components/top-header.tsx +++ b/src/components/top-header.tsx @@ -3,6 +3,7 @@ import Image from "next/image"; import Link from "next/link"; import type { Session } from "next-auth"; import { getTranslations } from "next-intl/server"; +import { HeaderUserIdentity } from "@/components/header-user-identity"; import { RoomQuickEntry } from "@/components/room-quick-entry"; import { UserAvatarThumbnail } from "@/components/shared/user-avatar-thumbnail"; import { signOut } from "@/lib/auth"; @@ -317,17 +318,11 @@ export async function TopHeader({ session }: { session: Session | null }) { aria-label="User menu" className="list-none cursor-pointer flex items-center [&::-webkit-details-marker]:hidden" > - - - {session.user.name} -