From 5d6159fe2954107f14dcf5e919431a261f123d16 Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Thu, 12 Feb 2026 19:08:11 +0500 Subject: [PATCH] fix: resolve label hover highlight first button issue, use radio inputs --- package.json | 1 + src/app.css | 4 +- src/components/layout/SettingsRow.svelte | 9 +- src/components/text/TextConfig.svelte | 2 +- src/components/ui/Alignment.svelte | 118 +++++++++++++++------ tests/unit/components/ui/Alignment.test.ts | 6 +- 6 files changed, 98 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index a642e2b..ba9f10e 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "lint:css": "stylelint '**/*.{css,svelte}", + "check:css": "node scripts/css-vars.js", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "test": "vitest", "test:ui": "vitest --ui", diff --git a/src/app.css b/src/app.css index 57a629c..65cf94d 100644 --- a/src/app.css +++ b/src/app.css @@ -21,7 +21,6 @@ --text-main: oklch(from var(--brand-main) 0.25 0.02 h); --text-muted: oklch(from var(--brand-main) 0.45 0.02 h); - --text-disabled: oklch(from var(--brand-main) 0.7 0.01 h); --text-action: oklch(from var(--brand-main) 0.99 0.02 h); --border-main: oklch(from var(--brand-main) 0.9 0.04 h); @@ -48,8 +47,7 @@ --action-secondary-hover: oklch(from var(--action-secondary) calc(l + var(--hover-step)) c h); --text-main: oklch(from var(--brand-main) 0.94 0.01 h); - --text-muted: oklch(from var(--brand-main) 0.75 0.02 h); - --text-disabled: oklch(from var(--brand-main) 0.5 0.02 h); + --text-muted: oklch(from var(--brand-main) 0.75 0.02 h); --text-action: oklch(from var(--brand-main) 0.12 0.02 h); --border-main: oklch(from var(--brand-main) 0.22 0.04 h); diff --git a/src/components/layout/SettingsRow.svelte b/src/components/layout/SettingsRow.svelte index b53b020..5150a7f 100644 --- a/src/components/layout/SettingsRow.svelte +++ b/src/components/layout/SettingsRow.svelte @@ -4,17 +4,20 @@ interface Props { label: string; children: Snippet; + noLabel?: boolean; } - let { label, children }: Props = $props(); + let { label, children, noLabel = false }: Props = $props(); + + let tag = $derived(noLabel ? "div" : "label"); - + diff --git a/tests/unit/components/ui/Alignment.test.ts b/tests/unit/components/ui/Alignment.test.ts index b16a92b..c512204 100644 --- a/tests/unit/components/ui/Alignment.test.ts +++ b/tests/unit/components/ui/Alignment.test.ts @@ -9,7 +9,7 @@ describe("Alignment.svelte", () => { const user = userEvent.setup(); render(AlignmentTest); - const buttons = screen.getAllByRole("button"); + const buttons = screen.getAllByRole("radio"); const stateDisplay = screen.getByTestId("align-value"); const allButtonsToClick = [...buttons, buttons[0]]; @@ -38,7 +38,7 @@ describe("Alignment.svelte", () => { await rerender({ align: TextAlign.CENTER }); - const centerBtn = screen.getByRole("button", { name: new RegExp(TextAlign.CENTER, "i") }); - expect(centerBtn).toHaveClass("active"); + const centerBtn = screen.getByRole("radio", { name: new RegExp(TextAlign.CENTER, "i") }); + expect(centerBtn).toBeChecked(); }); });