From 2283f733cc0591e1ac6737ff95c1f3d55821c4db Mon Sep 17 00:00:00 2001 From: Marcel Date: Fri, 8 May 2026 18:21:24 +0200 Subject: [PATCH] refactor(dashboard): align ReaderPersonChips cards with /persons overview style MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rounded, px-4 py-6, shadow-sm, gap-4 — matches overview card sizing - hover: left accent border + shadow-md (matches overview hover) - avatar: h-12 w-12, font-bold (djb2 palette colors kept) - name: font-bold, group-hover:underline - doc count: neutral bg-muted chip instead of mint pill Co-Authored-By: Claude Sonnet 4.6 --- .../shared/dashboard/ReaderPersonChips.svelte | 20 +++++++++++-------- .../ReaderPersonChips.svelte.spec.ts | 16 ++++++++------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte b/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte index 785fbe9a..45b4ec1a 100644 --- a/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte +++ b/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte @@ -31,24 +31,28 @@ const { persons }: Props = $props(); {#if persons.length === 0}

{m.dashboard_reader_no_persons()}

{/if} -
+ diff --git a/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte.spec.ts b/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte.spec.ts index 0ae40474..03c3e1f9 100644 --- a/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte.spec.ts +++ b/frontend/src/lib/shared/dashboard/ReaderPersonChips.svelte.spec.ts @@ -51,21 +51,23 @@ describe('ReaderPersonChips', () => { expect(cls).toMatch(/min-h-\[44px\]/); }); - it('doc count renders as mint pill with bg-mint-soft', async () => { + it('doc count renders as neutral chip with bg-muted', async () => { render(ReaderPersonChips, { persons: [person1] }); const link = page.getByRole('link', { name: /Anna Müller/ }); const el = (await link.element()) as HTMLElement; - const pill = el.querySelector('[class*="bg-mint-soft"]'); - expect(pill).not.toBeNull(); - expect(pill!.textContent).toContain('23'); + const chip = el.querySelector('[class*="bg-muted"]'); + expect(chip).not.toBeNull(); + expect(chip!.textContent).toContain('23'); }); - it('doc count pill has rounded-full class', async () => { + it('doc count chip has rounded-full and border-line classes', async () => { render(ReaderPersonChips, { persons: [person1] }); const link = page.getByRole('link', { name: /Anna Müller/ }); const el = (await link.element()) as HTMLElement; - const pill = el.querySelector('[class*="rounded-full"]'); - expect(pill).not.toBeNull(); + const chip = el.querySelector('[class*="bg-muted"]'); + expect(chip).not.toBeNull(); + expect(chip!.className).toMatch(/rounded-full/); + expect(chip!.className).toMatch(/border-line/); }); it('person grid uses grid layout', async () => {