From b8c9486e87561d34871212bee477073742daa3a7 Mon Sep 17 00:00:00 2001 From: chris-doucette-stack Date: Thu, 12 Mar 2026 10:26:56 -0400 Subject: [PATCH 1/4] adding linkClass property --- .../src/components/Menu/Menu.test.ts | 15 +++++++++++++++ .../src/components/Menu/MenuItem.svelte | 8 +++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/stacks-svelte/src/components/Menu/Menu.test.ts b/packages/stacks-svelte/src/components/Menu/Menu.test.ts index d8c12d54db..d969409237 100644 --- a/packages/stacks-svelte/src/components/Menu/Menu.test.ts +++ b/packages/stacks-svelte/src/components/Menu/Menu.test.ts @@ -125,6 +125,21 @@ describe("Menu", () => { expect(link).to.have.class("s-menu--action__danger"); }); + it("should render with arbitrary link classes", () => { + const menuItems = createSvelteComponentsSnippet([ + createMenuItem({ + href: "#", + linkClass: "custom-link-class", + children: children("Delete"), + }), + ]); + + render(Menu, { children: menuItems }); + + const link =screen.getByRole("menuitem").querySelector("a"); + expect(link).to.have.class("custom-link-class"); + }); + // Menu Check Item it("should render menu check item with required props", () => { const menuCheckItems = createSvelteComponentsSnippet([ diff --git a/packages/stacks-svelte/src/components/Menu/MenuItem.svelte b/packages/stacks-svelte/src/components/Menu/MenuItem.svelte index 39bfc0856b..e10b10fe4a 100644 --- a/packages/stacks-svelte/src/components/Menu/MenuItem.svelte +++ b/packages/stacks-svelte/src/components/Menu/MenuItem.svelte @@ -39,6 +39,11 @@ */ class?: string; + /** + * Additional CSS classes added to the link element + */ + linkClass?: string; + /** * Snippet for the menu item content */ @@ -51,6 +56,7 @@ icon, selected = false, class: className = "", + linkClass = "", onclick, children, ...restProps @@ -84,7 +90,7 @@ }; const itemClasses = $derived(getItemClasses(className)); - const linkClasses = $derived(getLinkClasses("", danger, selected)); + const linkClasses = $derived(getLinkClasses(linkClass, danger, selected));