Skip to content

Commit dd1a0b5

Browse files
fix(button): keep emphasis active ring color (#606)
1 parent ebc5cf8 commit dd1a0b5

3 files changed

Lines changed: 23 additions & 3 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@cloudflare/kumo": patch
3+
---
4+
5+
Keep primary and destructive button active/focus rings matched to their variant color.

packages/kumo/src/components/button/button.test.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from "react";
22
import { describe, expect, it } from "vitest";
33
import { render, screen } from "@testing-library/react";
44
import { Plus } from "@phosphor-icons/react";
5-
import { Button, RefreshButton, LinkButton } from "./button";
5+
import { Button, RefreshButton, LinkButton, buttonVariants } from "./button";
66

77
describe("Button", () => {
88
describe("children wrapper", () => {
@@ -112,6 +112,21 @@ describe("Button", () => {
112112
// title is intercepted by Tooltip wrapper, not set as native attribute
113113
expect(button.getAttribute("title")).toBeNull();
114114
});
115+
116+
it("keeps emphasized variant rings color-matched when pressed or focused", () => {
117+
for (const variant of ["primary", "destructive"] as const) {
118+
const className = buttonVariants({ variant });
119+
120+
expect(className).toContain("ring-(--kumo-button-emphasis-ring)");
121+
expect(className).toContain("focus:ring-(--kumo-button-emphasis-ring)");
122+
expect(className).toContain(
123+
"focus-visible:ring-(--kumo-button-emphasis-ring)",
124+
);
125+
expect(className).toContain("active:ring-(--kumo-button-emphasis-ring)");
126+
expect(className).not.toContain("focus:ring-kumo-focus/50");
127+
expect(className).not.toContain("focus-visible:ring-kumo-brand");
128+
}
129+
});
115130
});
116131

117132
describe("RefreshButton", () => {

packages/kumo/src/components/button/button.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export const KUMO_BUTTON_VARIANTS = {
4949
variant: {
5050
primary: {
5151
classes:
52-
"relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) disabled:opacity-50",
52+
"relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) focus:ring-(--kumo-button-emphasis-ring) focus-visible:ring-(--kumo-button-emphasis-ring) active:ring-(--kumo-button-emphasis-ring) disabled:opacity-50",
5353
description: "High-emphasis button for primary actions",
5454
},
5555
secondary: {
@@ -63,7 +63,7 @@ export const KUMO_BUTTON_VARIANTS = {
6363
},
6464
destructive: {
6565
classes:
66-
"relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) disabled:opacity-50",
66+
"relative overflow-hidden bg-(--kumo-button-emphasis-bg) !text-white ring ring-(--kumo-button-emphasis-ring) focus:ring-(--kumo-button-emphasis-ring) focus-visible:ring-(--kumo-button-emphasis-ring) active:ring-(--kumo-button-emphasis-ring) disabled:opacity-50",
6767
description: "Danger button for destructive actions like delete",
6868
},
6969
"secondary-destructive": {

0 commit comments

Comments
 (0)