diff --git a/.changeset/fuzzy-badges-focus.md b/.changeset/fuzzy-badges-focus.md new file mode 100644 index 0000000000..c2e0601a9b --- /dev/null +++ b/.changeset/fuzzy-badges-focus.md @@ -0,0 +1,5 @@ +--- +"@cloudflare/kumo": patch +--- + +Match a linkable Badge's focus outline to its pill shape. diff --git a/packages/kumo/src/components/badge/badge.test.tsx b/packages/kumo/src/components/badge/badge.test.tsx index d9fb4b640e..d4597d00fd 100644 --- a/packages/kumo/src/components/badge/badge.test.tsx +++ b/packages/kumo/src/components/badge/badge.test.tsx @@ -13,6 +13,7 @@ describe("Badge", () => { render(Status); const el = screen.getByText("Status"); expect(el.tagName).toBe("SPAN"); + expect(el.getAttribute("data-kumo-component")).toBe("Badge"); }); it("merges custom className", () => { diff --git a/packages/kumo/src/components/badge/badge.tsx b/packages/kumo/src/components/badge/badge.tsx index f9b6355097..188cd56d71 100644 --- a/packages/kumo/src/components/badge/badge.tsx +++ b/packages/kumo/src/components/badge/badge.tsx @@ -276,6 +276,7 @@ export function Badge({ : ""; return ( { @@ -78,6 +79,18 @@ describe("Link", () => { expect(() => createElement(Link, props)).not.toThrow(); }); + it("matches the pill shape of a direct Badge child", () => { + render( + + View changelog + , + ); + + expect(screen.getByRole("link").classList).toContain( + "has-[>[data-kumo-component=Badge]]:rounded-full", + ); + }); + it("should generate variant classes via linkVariants helper", () => { expect(linkVariants({ variant: "inline" })).toContain("text-kumo-link"); expect(linkVariants({ variant: "current" })).toContain("text-current"); diff --git a/packages/kumo/src/components/link/link.tsx b/packages/kumo/src/components/link/link.tsx index 9d4012b9fd..cd08867d9e 100644 --- a/packages/kumo/src/components/link/link.tsx +++ b/packages/kumo/src/components/link/link.tsx @@ -185,7 +185,7 @@ const LinkBase = forwardRef(function Link( "data-kumo-component": "Link", className: cn( linkVariants({ variant }), - "group/link inline-flex items-center gap-[0.1875em]", + "group/link inline-flex items-center gap-[0.1875em] has-[>[data-kumo-component=Badge]]:rounded-full", ), } as useRender.ElementProps<"a">;