quirk-ui 0.1.148 → 0.1.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";const t=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),a=require("./index.cjs");require("../../../index-CW_Ehh1q.cjs");e.vi.mock("../../utils/NoScroll/noScroll",()=>({lockScroll:e.vi.fn(),unlockScroll:e.vi.fn()}));e.vi.mock("../Modal",()=>({Modal:({trigger:n,content:o})=>t.jsxs("div",{"data-testid":"modal-wrapper",children:[n,o]})}));const s=()=>{Object.defineProperty(window,"innerWidth",{writable:!0,configurable:!0,value:1024}),window.dispatchEvent(new Event("resize"))},p=()=>{Object.defineProperty(window,"innerWidth",{writable:!0,configurable:!0,value:375}),window.dispatchEvent(new Event("resize"))},r=[{_key:"home",label:"Home",href:"/"},{_key:"about",label:"About",href:"/about"},{_key:"ext",label:"External",href:"https://example.com",isExternal:!0}],c=[{_key:"products",label:"Products",sublinks:[{_key:"p1",label:"Widget",href:"/widget"},{_key:"p2",label:"Gadget",href:"/gadget"}]}],i=[{_key:"g1",title:"Solutions",primaryItems:[{_key:"s1",label:"Enterprise",href:"/enterprise",sublinks:[{_key:"e1",label:"SSO",href:"/sso"},{_key:"e2",label:"Security",href:"/security"}]},{_key:"s2",label:"Startup",href:"/startup"}],secondaryItems:[{_key:"r1",label:"Case Studies",href:"/case-studies"}]}],d=[{_key:"login",label:"Log in",ariaLabel:"Log in",href:"/login",variant:"secondary"},{_key:"signup",label:"Sign up",ariaLabel:"Sign up",href:"/signup",variant:"primary"}];e.describe("Navbar",()=>{e.describe("Rendering",()=>{e.it("renders the header element",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toBeInTheDocument()}),e.it("renders logo when provided",()=>{e.render(t.jsx(a.Navbar,{logo:t.jsx("img",{"data-testid":"logo",src:"/logo.svg",alt:"Logo"})})),e.globalExpect(e.screen.getByTestId("logo")).toBeInTheDocument()}),e.it("renders title when no logo provided",()=>{e.render(t.jsx(a.Navbar,{title:"My Site"})),e.globalExpect(e.screen.getByText("My Site")).toBeInTheDocument()}),e.it("renders nothing in logo slot when neither logo nor title given",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{}));e.globalExpect(n.querySelector(".logo")).not.toBeInTheDocument(),e.globalExpect(n.querySelector(".title")).not.toBeInTheDocument()}),e.it("renders navigation landmark",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByRole("navigation",{name:"Primary navigation"})).toBeInTheDocument()})}),e.describe("Flat navigation items",()=>{e.it("renders all flat nav links",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByText("Home")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("About")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("External")).toBeInTheDocument()}),e.it("renders correct hrefs",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByText("Home")).toHaveAttribute("href","/"),e.globalExpect(e.screen.getByText("About")).toHaveAttribute("href","/about")}),e.it("renders external links with target=_blank",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByText("External")).toHaveAttribute("target","_blank")}),e.it("renders external links with rel=noopener noreferrer",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByText("External")).toHaveAttribute("rel","noopener noreferrer")}),e.it("renders internal links with target=_self",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByText("Home")).toHaveAttribute("target","_self")})}),e.describe("Items with sublinks (default navigationType)",()=>{e.it("renders parent item as button when no href",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByRole("button",{name:/products/i})).toBeInTheDocument()}),e.it("toggle button has aria-haspopup=true",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByRole("button",{name:/products/i})).toHaveAttribute("aria-haspopup","true")}),e.it("toggle button starts with aria-expanded=false",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByRole("button",{name:/products/i})).toHaveAttribute("aria-expanded","false")}),e.it("sublink dropdown has role=menu and aria-label",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{items:c}));e.globalExpect(n.querySelector("[role='menu'][aria-label='Products submenu']")).toBeInTheDocument()}),e.it("clicking toggle button opens dropdown (aria-expanded=true)",()=>{e.render(t.jsx(a.Navbar,{items:c}));const n=e.screen.getByRole("button",{name:/products/i});e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","true")}),e.it("clicking toggle button twice closes dropdown (aria-expanded=false)",()=>{e.render(t.jsx(a.Navbar,{items:c}));const n=e.screen.getByRole("button",{name:/products/i});e.fireEvent.click(n),e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","false")}),e.it("sublinks are rendered inside the dropdown",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByText("Widget")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Gadget")).toBeInTheDocument()}),e.it("sublinks have correct hrefs",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByText("Widget")).toHaveAttribute("href","/widget"),e.globalExpect(e.screen.getByText("Gadget")).toHaveAttribute("href","/gadget")})}),e.describe("onClick callback",()=>{e.it("calls onClick when a flat link is clicked",()=>{const n=e.vi.fn(),o=[{_key:"click",label:"Click me",href:"#",onClick:n}];e.render(t.jsx(a.Navbar,{items:o})),e.fireEvent.click(e.screen.getByText("Click me")),e.globalExpect(n).toHaveBeenCalledOnce()})}),e.describe("Variant",()=>{e.it("applies standard variant class by default",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("standard")}),e.it("applies transparent variant class",()=>{e.render(t.jsx(a.Navbar,{variant:"transparent"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("transparent")})}),e.describe("Alignment",()=>{e.it("applies right alignment class by default",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("right")}),e.it("applies left alignment class",()=>{e.render(t.jsx(a.Navbar,{alignment:"left"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("left")}),e.it("applies center alignment class",()=>{e.render(t.jsx(a.Navbar,{alignment:"center"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("center")})}),e.describe("Sticky",()=>{e.it("does not apply sticky class by default",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).not.toHaveClass("sticky")}),e.it("applies sticky class when isSticky=true",()=>{e.render(t.jsx(a.Navbar,{isSticky:!0})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("sticky")})}),e.describe("Navigation type",()=>{e.it("applies default class when no groups",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("default")}),e.it("applies advanced class when groups provided",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("advanced")})}),e.describe("Utility items",()=>{e.it("renders both desktop and mobile utility navs",()=>{e.render(t.jsx(a.Navbar,{utilityItems:d}));const n=e.screen.getAllByRole("navigation",{name:"Utility navigation"});e.globalExpect(n).toHaveLength(2)}),e.it("renders all utility button labels",()=>{e.render(t.jsx(a.Navbar,{utilityItems:d})),e.globalExpect(e.screen.getAllByText("Log in").length).toBeGreaterThan(0),e.globalExpect(e.screen.getAllByText("Sign up").length).toBeGreaterThan(0)}),e.it("does not render utility nav when no items",()=>{e.render(t.jsx(a.Navbar,{utilityItems:[]})),e.globalExpect(e.screen.queryByRole("navigation",{name:"Utility navigation"})).not.toBeInTheDocument()}),e.it("does not crash when only one utility item provided (no index[1] access)",()=>{const n=[{_key:"cta",label:"Sign up",ariaLabel:"Sign up",href:"/signup"}];e.globalExpect(()=>e.render(t.jsx(a.Navbar,{utilityItems:n}))).not.toThrow()})}),e.describe("Mobile menu toggle",()=>{e.it("renders toggle button",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByRole("button",{name:/open menu/i})).toBeInTheDocument()}),e.it("toggle starts closed (aria-expanded=false)",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByRole("button",{name:/open menu/i})).toHaveAttribute("aria-expanded","false")}),e.it("opens menu on click",()=>{e.render(t.jsx(a.Navbar,{items:r}));const n=e.screen.getByRole("button",{name:/open menu/i});e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","true")}),e.it("closes menu on second click",()=>{e.render(t.jsx(a.Navbar,{items:r}));const n=e.screen.getByRole("button",{name:/open menu/i});e.fireEvent.click(n),e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","false")}),e.it("toggle has aria-controls pointing to main-menu",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByRole("button",{name:/open menu/i})).toHaveAttribute("aria-controls","main-menu")}),e.it("aria-label changes to 'Close menu' when menu is open",()=>{e.render(t.jsx(a.Navbar,{items:r}));const n=e.screen.getByRole("button",{name:/open menu/i});e.fireEvent.click(n),e.globalExpect(e.screen.getByRole("button",{name:/close menu/i})).toBeInTheDocument()})}),e.describe("Search button",()=>{e.it("does not render search button when showSearch=false",()=>{e.render(t.jsx(a.Navbar,{showSearch:!1})),e.globalExpect(e.screen.queryByRole("button",{name:/search/i})).not.toBeInTheDocument()}),e.it("renders search button in mobile bar when showSearch=true and on mobile",()=>{p(),e.render(t.jsx(a.Navbar,{showSearch:!0,items:r})),e.globalExpect(e.screen.getByRole("button",{name:/search/i})).toBeInTheDocument()}),e.it("renders search button in nav when showSearch=true and on desktop",()=>{s(),e.render(t.jsx(a.Navbar,{showSearch:!0,items:r})),e.globalExpect(e.screen.getByRole("button",{name:/search/i})).toBeInTheDocument()})}),e.describe("Custom styling",()=>{e.it("applies custom className",()=>{e.render(t.jsx(a.Navbar,{className:"my-navbar"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("my-navbar")}),e.it("preserves base navbar class alongside custom className",()=>{e.render(t.jsx(a.Navbar,{className:"my-navbar"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("navbar")}),e.it("applies inline style",()=>{e.render(t.jsx(a.Navbar,{style:{borderBottom:"2px solid red"}}));const n=e.screen.getByRole("banner");e.globalExpect(n.style.borderBottom).toBe("2px solid red")})}),e.describe("Accessibility",()=>{e.it("header has banner landmark role",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toBeInTheDocument()}),e.it("header has aria-label='Site header'",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toHaveAttribute("aria-label","Site header")}),e.it("primary nav has id=main-menu",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{items:r}));e.globalExpect(n.querySelector("#main-menu")).toBeInTheDocument()}),e.it("primary nav has aria-label='Primary navigation'",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(e.screen.getByRole("navigation",{name:"Primary navigation"})).toBeInTheDocument()}),e.it("decorative icons are aria-hidden",()=>{e.render(t.jsx(a.Navbar,{items:r})),e.globalExpect(document.querySelectorAll("[aria-hidden='true']").length).toBeGreaterThan(0)}),e.it("external link icons are aria-hidden",()=>{e.render(t.jsx(a.Navbar,{items:r}));const o=e.screen.getByText("External").querySelector("[aria-hidden='true']");e.globalExpect(o).toBeInTheDocument()})}),e.describe("Props forwarding",()=>{e.it("forwards data attributes to header",()=>{e.render(t.jsx(a.Navbar,{"data-testid":"my-navbar"})),e.globalExpect(e.screen.getByTestId("my-navbar")).toBeInTheDocument()})}),e.describe("Advanced navigation (groups)",()=>{e.beforeEach(()=>{s()}),e.it("renders group titles",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByText("Solutions")).toBeInTheDocument()}),e.it("group toggle button has aria-haspopup=true",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("button",{name:/solutions/i})).toHaveAttribute("aria-haspopup","true")}),e.it("group toggle starts with aria-expanded=false",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("button",{name:/solutions/i})).toHaveAttribute("aria-expanded","false")}),e.it("group submenu has role=menu and aria-label",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"}));e.globalExpect(n.querySelector("[aria-label='Solutions submenu']")).toBeInTheDocument()}),e.it("mouseenter on group wrapper opens the mega-menu (aria-expanded=true)",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"}));const n=e.screen.getByRole("button",{name:/solutions/i});e.fireEvent.mouseEnter(n.closest(".linkWrapper")),e.globalExpect(n).toHaveAttribute("aria-expanded","true")}),e.it("renders primary items inside the mega-menu",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByText("Enterprise")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Startup")).toBeInTheDocument()}),e.it("primary items with href are rendered as links",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"}));const n=e.screen.getByText("Enterprise").closest("a");e.globalExpect(n).not.toBeNull(),e.globalExpect(n.tagName).toBe("A"),e.globalExpect(n).toHaveAttribute("href","/enterprise")}),e.it("renders secondary items",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByText("Case Studies")).toBeInTheDocument()}),e.it("hovering a primary item with sublinks reveals column 2 children",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.fireEvent.mouseEnter(e.screen.getByText("Enterprise").closest("a")),e.globalExpect(e.screen.getByText("SSO")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Security")).toBeInTheDocument()}),e.it("column 2 disappears after hovering a primary item without sublinks",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.fireEvent.mouseEnter(e.screen.getByText("Enterprise").closest("a")),e.globalExpect(e.screen.getByText("SSO")).toBeInTheDocument(),e.fireEvent.mouseEnter(e.screen.getByText("Startup").closest("a")),e.globalExpect(e.screen.queryByText("SSO")).not.toBeInTheDocument()}),e.it("mouseleave on submenu panel closes the mega-menu",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),o=e.screen.getByRole("button",{name:/solutions/i}),l=o.closest(".linkWrapper"),g=n.querySelector("[aria-label='Solutions submenu']");e.fireEvent.mouseEnter(l),e.globalExpect(o).toHaveAttribute("aria-expanded","true"),e.fireEvent.mouseLeave(g),e.globalExpect(o).toHaveAttribute("aria-expanded","false")}),e.it("primary item click calls onClick and closes dropdown",()=>{const n=e.vi.fn(),o=[{_key:"g1",title:"Menu",primaryItems:[{_key:"item1",label:"Clickable",href:"/dest",onClick:n}]}];e.render(t.jsx(a.Navbar,{groups:o,navigationType:"advanced"})),e.fireEvent.click(e.screen.getByText("Clickable").closest("a")),e.globalExpect(n).toHaveBeenCalledOnce()})}),e.describe("Spotlight card",()=>{const o=[{_key:"spot",title:"Spotlight Group",primaryItems:[{_key:"p1",label:"Item One",href:"/one"}],spotlight:{title:"New Feature",description:"Check it out",callToAction:{label:"Learn more",ariaLabel:"Learn more about new feature",variant:"primary",linkOptions:{linkType:"internal",internalUrl:{slug:{current:"new-feature"}}}}}}];e.it("renders the spotlight CTA button",()=>{s(),e.render(t.jsx(a.Navbar,{groups:o,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("link",{name:/learn more/i})).toBeInTheDocument()}),e.it("spotlight CTA resolves internal href correctly",()=>{s(),e.render(t.jsx(a.Navbar,{groups:o,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("link",{name:/learn more/i})).toHaveAttribute("href","/new-feature")}),e.it("spotlight CTA resolves external href correctly",()=>{s();const g=[{_key:"g",title:"Ext Group",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{callToAction:{label:"Visit",ariaLabel:"Visit external site",linkOptions:{linkType:"external",externalUrl:"https://example.com"}}}}];e.render(t.jsx(a.Navbar,{groups:g,navigationType:"advanced"}));const b=e.screen.getByRole("link",{name:/visit/i});e.globalExpect(b).toHaveAttribute("href","https://example.com"),e.globalExpect(b).toHaveAttribute("target","_blank")}),e.it("renders spotlight image when provided",()=>{s();const l=[{_key:"g",title:"Img Group",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{callToAction:{label:"Go",linkOptions:{linkType:"internal",internalUrl:{slug:{current:"go"}}}},image:{asset:{_id:"1",url:"/img.jpg",altText:"Demo image",title:"Demo",description:"Demo desc"},imageUrls:{small:"/s.jpg",medium:"/m.jpg",large:"/l.jpg"}}}}];e.render(t.jsx(a.Navbar,{groups:l,navigationType:"advanced"}));const g=e.screen.getByAltText("Demo image");e.globalExpect(g).toBeInTheDocument(),e.globalExpect(g).toHaveAttribute("src","/m.jpg")}),e.it("renders nothing when callToAction is absent",()=>{s();const l=[{_key:"g",title:"No CTA",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{title:"Title only"}}];e.globalExpect(()=>e.render(t.jsx(a.Navbar,{groups:l,navigationType:"advanced"}))).not.toThrow()})}),e.describe("renderText prop",()=>{e.it("calls renderText for spotlight title when provided",()=>{s();const n=e.vi.fn(l=>typeof l=="string"?t.jsx("span",{children:l}):null),o=[{_key:"g",title:"Group",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{title:"Spotlight Title",callToAction:{label:"Go",linkOptions:{linkType:"internal",internalUrl:{slug:{current:"go"}}}}}}];e.render(t.jsx(a.Navbar,{groups:o,navigationType:"advanced",renderText:n})),e.globalExpect(n).toHaveBeenCalledWith("Spotlight Title",e.globalExpect.any(String))})})});
1
+ "use strict";const t=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),a=require("./index.cjs");require("../../../index-CW_Ehh1q.cjs");e.vi.mock("../../utils/NoScroll/noScroll",()=>({lockScroll:e.vi.fn(),unlockScroll:e.vi.fn()}));const d=e.vi.fn();e.vi.mock("../../../core/context/ModalContext",()=>({useModal:()=>({open:d})}));e.vi.mock("../Modal",()=>({Modal:({trigger:n,content:r})=>t.jsxs("div",{"data-testid":"modal-wrapper",children:[n,r]})}));const s=()=>{Object.defineProperty(window,"innerWidth",{writable:!0,configurable:!0,value:1024}),window.dispatchEvent(new Event("resize"))},u=()=>{Object.defineProperty(window,"innerWidth",{writable:!0,configurable:!0,value:375}),window.dispatchEvent(new Event("resize"))},o=[{_key:"home",label:"Home",href:"/"},{_key:"about",label:"About",href:"/about"},{_key:"ext",label:"External",href:"https://example.com",isExternal:!0}],c=[{_key:"products",label:"Products",sublinks:[{_key:"p1",label:"Widget",href:"/widget"},{_key:"p2",label:"Gadget",href:"/gadget"}]}],i=[{_key:"g1",title:"Solutions",primaryItems:[{_key:"s1",label:"Enterprise",href:"/enterprise",sublinks:[{_key:"e1",label:"SSO",href:"/sso"},{_key:"e2",label:"Security",href:"/security"}]},{_key:"s2",label:"Startup",href:"/startup"}],secondaryItems:[{_key:"r1",label:"Case Studies",href:"/case-studies"}]}],b=[{_key:"login",label:"Log in",ariaLabel:"Log in",href:"/login",variant:"secondary"},{_key:"signup",label:"Sign up",ariaLabel:"Sign up",href:"/signup",variant:"primary"}];e.describe("Navbar",()=>{e.describe("Rendering",()=>{e.it("renders the header element",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toBeInTheDocument()}),e.it("renders logo when provided",()=>{e.render(t.jsx(a.Navbar,{logo:t.jsx("img",{"data-testid":"logo",src:"/logo.svg",alt:"Logo"})})),e.globalExpect(e.screen.getByTestId("logo")).toBeInTheDocument()}),e.it("renders title when no logo provided",()=>{e.render(t.jsx(a.Navbar,{title:"My Site"})),e.globalExpect(e.screen.getByText("My Site")).toBeInTheDocument()}),e.it("renders nothing in logo slot when neither logo nor title given",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{}));e.globalExpect(n.querySelector(".logo")).not.toBeInTheDocument(),e.globalExpect(n.querySelector(".title")).not.toBeInTheDocument()}),e.it("renders navigation landmark",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByRole("navigation",{name:"Primary navigation"})).toBeInTheDocument()})}),e.describe("Flat navigation items",()=>{e.it("renders all flat nav links",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByText("Home")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("About")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("External")).toBeInTheDocument()}),e.it("renders correct hrefs",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByText("Home")).toHaveAttribute("href","/"),e.globalExpect(e.screen.getByText("About")).toHaveAttribute("href","/about")}),e.it("renders external links with target=_blank",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByText("External")).toHaveAttribute("target","_blank")}),e.it("renders external links with rel=noopener noreferrer",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByText("External")).toHaveAttribute("rel","noopener noreferrer")}),e.it("renders internal links with target=_self",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByText("Home")).toHaveAttribute("target","_self")})}),e.describe("Items with sublinks (default navigationType)",()=>{e.it("renders parent item as button when no href",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByRole("button",{name:/products/i})).toBeInTheDocument()}),e.it("toggle button has aria-haspopup=true",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByRole("button",{name:/products/i})).toHaveAttribute("aria-haspopup","true")}),e.it("toggle button starts with aria-expanded=false",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByRole("button",{name:/products/i})).toHaveAttribute("aria-expanded","false")}),e.it("sublink dropdown has role=menu and aria-label",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{items:c}));e.globalExpect(n.querySelector("[role='menu'][aria-label='Products submenu']")).toBeInTheDocument()}),e.it("clicking toggle button opens dropdown (aria-expanded=true)",()=>{e.render(t.jsx(a.Navbar,{items:c}));const n=e.screen.getByRole("button",{name:/products/i});e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","true")}),e.it("clicking toggle button twice closes dropdown (aria-expanded=false)",()=>{e.render(t.jsx(a.Navbar,{items:c}));const n=e.screen.getByRole("button",{name:/products/i});e.fireEvent.click(n),e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","false")}),e.it("sublinks are rendered inside the dropdown",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByText("Widget")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Gadget")).toBeInTheDocument()}),e.it("sublinks have correct hrefs",()=>{e.render(t.jsx(a.Navbar,{items:c})),e.globalExpect(e.screen.getByText("Widget")).toHaveAttribute("href","/widget"),e.globalExpect(e.screen.getByText("Gadget")).toHaveAttribute("href","/gadget")})}),e.describe("onClick callback",()=>{e.it("calls onClick when a flat link is clicked",()=>{const n=e.vi.fn(),r=[{_key:"click",label:"Click me",href:"#",onClick:n}];e.render(t.jsx(a.Navbar,{items:r})),e.fireEvent.click(e.screen.getByText("Click me")),e.globalExpect(n).toHaveBeenCalledOnce()})}),e.describe("Variant",()=>{e.it("applies standard variant class by default",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("standard")}),e.it("applies transparent variant class",()=>{e.render(t.jsx(a.Navbar,{variant:"transparent"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("transparent")})}),e.describe("Alignment",()=>{e.it("applies right alignment class by default",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("right")}),e.it("applies left alignment class",()=>{e.render(t.jsx(a.Navbar,{alignment:"left"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("left")}),e.it("applies center alignment class",()=>{e.render(t.jsx(a.Navbar,{alignment:"center"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("center")})}),e.describe("Sticky",()=>{e.it("does not apply sticky class by default",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).not.toHaveClass("sticky")}),e.it("applies sticky class when isSticky=true",()=>{e.render(t.jsx(a.Navbar,{isSticky:!0})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("sticky")})}),e.describe("Navigation type",()=>{e.it("applies default class when no groups",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("default")}),e.it("applies advanced class when groups provided",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("advanced")})}),e.describe("Utility items",()=>{e.it("renders both desktop and mobile utility navs",()=>{e.render(t.jsx(a.Navbar,{utilityItems:b}));const n=e.screen.getAllByRole("navigation",{name:"Utility navigation"});e.globalExpect(n).toHaveLength(2)}),e.it("renders all utility button labels",()=>{e.render(t.jsx(a.Navbar,{utilityItems:b})),e.globalExpect(e.screen.getAllByText("Log in").length).toBeGreaterThan(0),e.globalExpect(e.screen.getAllByText("Sign up").length).toBeGreaterThan(0)}),e.it("renders link utility items as anchors with correct href",()=>{e.render(t.jsx(a.Navbar,{utilityItems:b}));const n=e.screen.getAllByRole("link",{name:"Sign up"});e.globalExpect(n.length).toBeGreaterThan(0),n.forEach(r=>e.globalExpect(r).toHaveAttribute("href","/signup"))}),e.it("does not render utility nav when no items",()=>{e.render(t.jsx(a.Navbar,{utilityItems:[]})),e.globalExpect(e.screen.queryByRole("navigation",{name:"Utility navigation"})).not.toBeInTheDocument()}),e.it("does not crash when only one utility item provided",()=>{const n=[{_key:"cta",label:"Sign up",ariaLabel:"Sign up",href:"/signup"}];e.globalExpect(()=>e.render(t.jsx(a.Navbar,{utilityItems:n}))).not.toThrow()}),e.it("renders modal utility item as a button (not an anchor)",()=>{const n=[{_key:"contact",label:"Contact Us",ariaLabel:"Contact Us",variant:"primary",modalPayload:{heading:"Contact Us"}}];e.render(t.jsx(a.Navbar,{utilityItems:n}));const r=e.screen.getAllByRole("button",{name:"Contact Us"});e.globalExpect(r.length).toBeGreaterThan(0),r.forEach(l=>e.globalExpect(l.tagName).toBe("BUTTON"))}),e.it("calls useModal open with correct payload when modal utility item is clicked",()=>{d.mockClear();const n={heading:"Contact Us",formReference:{_id:"form-1",heading:"Contact"}},r=[{_key:"contact",label:"Contact Us",ariaLabel:"Contact Us",variant:"primary",modalPayload:n}];e.render(t.jsx(a.Navbar,{utilityItems:r}));const l=e.screen.getAllByRole("button",{name:"Contact Us"});e.fireEvent.click(l[0]),e.globalExpect(d).toHaveBeenCalledWith(n)}),e.it("renders mixed link and modal utility items correctly",()=>{const n=[{_key:"login",label:"Log in",ariaLabel:"Log in",href:"/login",variant:"secondary"},{_key:"contact",label:"Contact Us",ariaLabel:"Contact Us",variant:"primary",modalPayload:{heading:"Contact"}}];e.render(t.jsx(a.Navbar,{utilityItems:n}));const r=e.screen.getAllByRole("link",{name:"Log in"});e.globalExpect(r.length).toBeGreaterThan(0);const l=e.screen.getAllByRole("button",{name:"Contact Us"});e.globalExpect(l.length).toBeGreaterThan(0)})}),e.describe("Mobile menu toggle",()=>{e.it("renders toggle button",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByRole("button",{name:/open menu/i})).toBeInTheDocument()}),e.it("toggle starts closed (aria-expanded=false)",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByRole("button",{name:/open menu/i})).toHaveAttribute("aria-expanded","false")}),e.it("opens menu on click",()=>{e.render(t.jsx(a.Navbar,{items:o}));const n=e.screen.getByRole("button",{name:/open menu/i});e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","true")}),e.it("closes menu on second click",()=>{e.render(t.jsx(a.Navbar,{items:o}));const n=e.screen.getByRole("button",{name:/open menu/i});e.fireEvent.click(n),e.fireEvent.click(n),e.globalExpect(n).toHaveAttribute("aria-expanded","false")}),e.it("toggle has aria-controls pointing to main-menu",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByRole("button",{name:/open menu/i})).toHaveAttribute("aria-controls","main-menu")}),e.it("aria-label changes to 'Close menu' when menu is open",()=>{e.render(t.jsx(a.Navbar,{items:o}));const n=e.screen.getByRole("button",{name:/open menu/i});e.fireEvent.click(n),e.globalExpect(e.screen.getByRole("button",{name:/close menu/i})).toBeInTheDocument()})}),e.describe("Search button",()=>{e.it("does not render search button when showSearch=false",()=>{e.render(t.jsx(a.Navbar,{showSearch:!1})),e.globalExpect(e.screen.queryByRole("button",{name:/search/i})).not.toBeInTheDocument()}),e.it("renders search button in mobile bar when showSearch=true and on mobile",()=>{u(),e.render(t.jsx(a.Navbar,{showSearch:!0,items:o})),e.globalExpect(e.screen.getByRole("button",{name:/search/i})).toBeInTheDocument()}),e.it("renders search button in nav when showSearch=true and on desktop",()=>{s(),e.render(t.jsx(a.Navbar,{showSearch:!0,items:o})),e.globalExpect(e.screen.getByRole("button",{name:/search/i})).toBeInTheDocument()})}),e.describe("Custom styling",()=>{e.it("applies custom className",()=>{e.render(t.jsx(a.Navbar,{className:"my-navbar"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("my-navbar")}),e.it("preserves base navbar class alongside custom className",()=>{e.render(t.jsx(a.Navbar,{className:"my-navbar"})),e.globalExpect(e.screen.getByRole("banner")).toHaveClass("navbar")}),e.it("applies inline style",()=>{e.render(t.jsx(a.Navbar,{style:{borderBottom:"2px solid red"}}));const n=e.screen.getByRole("banner");e.globalExpect(n.style.borderBottom).toBe("2px solid red")})}),e.describe("Accessibility",()=>{e.it("header has banner landmark role",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toBeInTheDocument()}),e.it("header has aria-label='Site header'",()=>{e.render(t.jsx(a.Navbar,{})),e.globalExpect(e.screen.getByRole("banner")).toHaveAttribute("aria-label","Site header")}),e.it("primary nav has id=main-menu",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{items:o}));e.globalExpect(n.querySelector("#main-menu")).toBeInTheDocument()}),e.it("primary nav has aria-label='Primary navigation'",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(e.screen.getByRole("navigation",{name:"Primary navigation"})).toBeInTheDocument()}),e.it("decorative icons are aria-hidden",()=>{e.render(t.jsx(a.Navbar,{items:o})),e.globalExpect(document.querySelectorAll("[aria-hidden='true']").length).toBeGreaterThan(0)}),e.it("external link icons are aria-hidden",()=>{e.render(t.jsx(a.Navbar,{items:o}));const r=e.screen.getByText("External").querySelector("[aria-hidden='true']");e.globalExpect(r).toBeInTheDocument()})}),e.describe("Props forwarding",()=>{e.it("forwards data attributes to header",()=>{e.render(t.jsx(a.Navbar,{"data-testid":"my-navbar"})),e.globalExpect(e.screen.getByTestId("my-navbar")).toBeInTheDocument()})}),e.describe("Advanced navigation (groups)",()=>{e.beforeEach(()=>{s()}),e.it("renders group titles",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByText("Solutions")).toBeInTheDocument()}),e.it("group toggle button has aria-haspopup=true",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("button",{name:/solutions/i})).toHaveAttribute("aria-haspopup","true")}),e.it("group toggle starts with aria-expanded=false",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("button",{name:/solutions/i})).toHaveAttribute("aria-expanded","false")}),e.it("group submenu has role=menu and aria-label",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"}));e.globalExpect(n.querySelector("[aria-label='Solutions submenu']")).toBeInTheDocument()}),e.it("mouseenter on group wrapper opens the mega-menu (aria-expanded=true)",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"}));const n=e.screen.getByRole("button",{name:/solutions/i});e.fireEvent.mouseEnter(n.closest(".linkWrapper")),e.globalExpect(n).toHaveAttribute("aria-expanded","true")}),e.it("renders primary items inside the mega-menu",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByText("Enterprise")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Startup")).toBeInTheDocument()}),e.it("primary items with href are rendered as links",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"}));const n=e.screen.getByText("Enterprise").closest("a");e.globalExpect(n).not.toBeNull(),e.globalExpect(n.tagName).toBe("A"),e.globalExpect(n).toHaveAttribute("href","/enterprise")}),e.it("renders secondary items",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.globalExpect(e.screen.getByText("Case Studies")).toBeInTheDocument()}),e.it("hovering a primary item with sublinks reveals column 2 children",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.fireEvent.mouseEnter(e.screen.getByText("Enterprise").closest("a")),e.globalExpect(e.screen.getByText("SSO")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Security")).toBeInTheDocument()}),e.it("column 2 disappears after hovering a primary item without sublinks",()=>{e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),e.fireEvent.mouseEnter(e.screen.getByText("Enterprise").closest("a")),e.globalExpect(e.screen.getByText("SSO")).toBeInTheDocument(),e.fireEvent.mouseEnter(e.screen.getByText("Startup").closest("a")),e.globalExpect(e.screen.queryByText("SSO")).not.toBeInTheDocument()}),e.it("mouseleave on submenu panel closes the mega-menu",()=>{const{container:n}=e.render(t.jsx(a.Navbar,{groups:i,navigationType:"advanced"})),r=e.screen.getByRole("button",{name:/solutions/i}),l=r.closest(".linkWrapper"),g=n.querySelector("[aria-label='Solutions submenu']");e.fireEvent.mouseEnter(l),e.globalExpect(r).toHaveAttribute("aria-expanded","true"),e.fireEvent.mouseLeave(g),e.globalExpect(r).toHaveAttribute("aria-expanded","false")}),e.it("primary item click calls onClick and closes dropdown",()=>{const n=e.vi.fn(),r=[{_key:"g1",title:"Menu",primaryItems:[{_key:"item1",label:"Clickable",href:"/dest",onClick:n}]}];e.render(t.jsx(a.Navbar,{groups:r,navigationType:"advanced"})),e.fireEvent.click(e.screen.getByText("Clickable").closest("a")),e.globalExpect(n).toHaveBeenCalledOnce()})}),e.describe("Spotlight card",()=>{const r=[{_key:"spot",title:"Spotlight Group",primaryItems:[{_key:"p1",label:"Item One",href:"/one"}],spotlight:{title:"New Feature",description:"Check it out",callToAction:{label:"Learn more",ariaLabel:"Learn more about new feature",variant:"primary",linkOptions:{linkType:"internal",internalUrl:{slug:{current:"new-feature"}}}}}}];e.it("renders the spotlight CTA button",()=>{s(),e.render(t.jsx(a.Navbar,{groups:r,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("link",{name:/learn more/i})).toBeInTheDocument()}),e.it("spotlight CTA resolves internal href correctly",()=>{s(),e.render(t.jsx(a.Navbar,{groups:r,navigationType:"advanced"})),e.globalExpect(e.screen.getByRole("link",{name:/learn more/i})).toHaveAttribute("href","/new-feature")}),e.it("spotlight CTA resolves external href correctly",()=>{s();const g=[{_key:"g",title:"Ext Group",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{callToAction:{label:"Visit",ariaLabel:"Visit external site",linkOptions:{linkType:"external",externalUrl:"https://example.com"}}}}];e.render(t.jsx(a.Navbar,{groups:g,navigationType:"advanced"}));const p=e.screen.getByRole("link",{name:/visit/i});e.globalExpect(p).toHaveAttribute("href","https://example.com"),e.globalExpect(p).toHaveAttribute("target","_blank")}),e.it("renders spotlight image when provided",()=>{s();const l=[{_key:"g",title:"Img Group",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{callToAction:{label:"Go",linkOptions:{linkType:"internal",internalUrl:{slug:{current:"go"}}}},image:{asset:{_id:"1",url:"/img.jpg",altText:"Demo image",title:"Demo",description:"Demo desc"},imageUrls:{small:"/s.jpg",medium:"/m.jpg",large:"/l.jpg"}}}}];e.render(t.jsx(a.Navbar,{groups:l,navigationType:"advanced"}));const g=e.screen.getByAltText("Demo image");e.globalExpect(g).toBeInTheDocument(),e.globalExpect(g).toHaveAttribute("src","/m.jpg")}),e.it("renders nothing when callToAction is absent",()=>{s();const l=[{_key:"g",title:"No CTA",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{title:"Title only"}}];e.globalExpect(()=>e.render(t.jsx(a.Navbar,{groups:l,navigationType:"advanced"}))).not.toThrow()})}),e.describe("renderText prop",()=>{e.it("calls renderText for spotlight title when provided",()=>{s();const n=e.vi.fn(l=>typeof l=="string"?t.jsx("span",{children:l}):null),r=[{_key:"g",title:"Group",primaryItems:[{_key:"p1",label:"Item",href:"/item"}],spotlight:{title:"Spotlight Title",callToAction:{label:"Go",linkOptions:{linkType:"internal",internalUrl:{slug:{current:"go"}}}}}}];e.render(t.jsx(a.Navbar,{groups:r,navigationType:"advanced",renderText:n})),e.globalExpect(n).toHaveBeenCalledWith("Spotlight Title",e.globalExpect.any(String))})})});
@@ -1,33 +1,37 @@
1
- import { jsxs as B, jsx as n } from "react/jsx-runtime";
2
- import { v as y, d as s, i as a, r as o, g as e, s as t, f as c, b as T } from "../../../react.esm-DjxyacK8.js";
1
+ import { jsxs as k, jsx as n } from "react/jsx-runtime";
2
+ import { v as d, d as c, i as a, r as o, g as e, s as t, f as u, b as T } from "../../../react.esm-DjxyacK8.js";
3
3
  import { Navbar as i } from "./index.mjs";
4
4
  import "../../../index-DPGXWTtt.js";
5
- y.mock("../../utils/NoScroll/noScroll", () => ({
6
- lockScroll: y.fn(),
7
- unlockScroll: y.fn()
5
+ d.mock("../../utils/NoScroll/noScroll", () => ({
6
+ lockScroll: d.fn(),
7
+ unlockScroll: d.fn()
8
8
  }));
9
- y.mock("../Modal", () => ({
9
+ const v = d.fn();
10
+ d.mock("../../../core/context/ModalContext", () => ({
11
+ useModal: () => ({ open: v })
12
+ }));
13
+ d.mock("../Modal", () => ({
10
14
  Modal: ({
11
15
  trigger: r,
12
- content: u
13
- }) => /* @__PURE__ */ B("div", { "data-testid": "modal-wrapper", children: [
16
+ content: l
17
+ }) => /* @__PURE__ */ k("div", { "data-testid": "modal-wrapper", children: [
14
18
  r,
15
- u
19
+ l
16
20
  ] })
17
21
  }));
18
- const d = () => {
22
+ const p = () => {
19
23
  Object.defineProperty(window, "innerWidth", {
20
24
  writable: !0,
21
25
  configurable: !0,
22
26
  value: 1024
23
27
  }), window.dispatchEvent(new Event("resize"));
24
- }, k = () => {
28
+ }, f = () => {
25
29
  Object.defineProperty(window, "innerWidth", {
26
30
  writable: !0,
27
31
  configurable: !0,
28
32
  value: 375
29
33
  }), window.dispatchEvent(new Event("resize"));
30
- }, l = [
34
+ }, s = [
31
35
  { _key: "home", label: "Home", href: "/" },
32
36
  { _key: "about", label: "About", href: "/about" },
33
37
  {
@@ -36,7 +40,7 @@ const d = () => {
36
40
  href: "https://example.com",
37
41
  isExternal: !0
38
42
  }
39
- ], p = [
43
+ ], y = [
40
44
  {
41
45
  _key: "products",
42
46
  label: "Products",
@@ -65,7 +69,7 @@ const d = () => {
65
69
  { _key: "r1", label: "Case Studies", href: "/case-studies" }
66
70
  ]
67
71
  }
68
- ], v = [
72
+ ], b = [
69
73
  {
70
74
  _key: "login",
71
75
  label: "Log in",
@@ -81,8 +85,8 @@ const d = () => {
81
85
  variant: "primary"
82
86
  }
83
87
  ];
84
- s("Navbar", () => {
85
- s("Rendering", () => {
88
+ c("Navbar", () => {
89
+ c("Rendering", () => {
86
90
  a("renders the header element", () => {
87
91
  o(/* @__PURE__ */ n(i, {})), e(t.getByRole("banner")).toBeInTheDocument();
88
92
  }), a("renders logo when provided", () => {
@@ -95,72 +99,72 @@ s("Navbar", () => {
95
99
  const { container: r } = o(/* @__PURE__ */ n(i, {}));
96
100
  e(r.querySelector(".logo")).not.toBeInTheDocument(), e(r.querySelector(".title")).not.toBeInTheDocument();
97
101
  }), a("renders navigation landmark", () => {
98
- o(/* @__PURE__ */ n(i, { items: l })), e(
102
+ o(/* @__PURE__ */ n(i, { items: s })), e(
99
103
  t.getByRole("navigation", { name: "Primary navigation" })
100
104
  ).toBeInTheDocument();
101
105
  });
102
- }), s("Flat navigation items", () => {
106
+ }), c("Flat navigation items", () => {
103
107
  a("renders all flat nav links", () => {
104
- o(/* @__PURE__ */ n(i, { items: l })), e(t.getByText("Home")).toBeInTheDocument(), e(t.getByText("About")).toBeInTheDocument(), e(t.getByText("External")).toBeInTheDocument();
108
+ o(/* @__PURE__ */ n(i, { items: s })), e(t.getByText("Home")).toBeInTheDocument(), e(t.getByText("About")).toBeInTheDocument(), e(t.getByText("External")).toBeInTheDocument();
105
109
  }), a("renders correct hrefs", () => {
106
- o(/* @__PURE__ */ n(i, { items: l })), e(t.getByText("Home")).toHaveAttribute("href", "/"), e(t.getByText("About")).toHaveAttribute("href", "/about");
110
+ o(/* @__PURE__ */ n(i, { items: s })), e(t.getByText("Home")).toHaveAttribute("href", "/"), e(t.getByText("About")).toHaveAttribute("href", "/about");
107
111
  }), a("renders external links with target=_blank", () => {
108
- o(/* @__PURE__ */ n(i, { items: l })), e(t.getByText("External")).toHaveAttribute("target", "_blank");
112
+ o(/* @__PURE__ */ n(i, { items: s })), e(t.getByText("External")).toHaveAttribute("target", "_blank");
109
113
  }), a("renders external links with rel=noopener noreferrer", () => {
110
- o(/* @__PURE__ */ n(i, { items: l })), e(t.getByText("External")).toHaveAttribute(
114
+ o(/* @__PURE__ */ n(i, { items: s })), e(t.getByText("External")).toHaveAttribute(
111
115
  "rel",
112
116
  "noopener noreferrer"
113
117
  );
114
118
  }), a("renders internal links with target=_self", () => {
115
- o(/* @__PURE__ */ n(i, { items: l })), e(t.getByText("Home")).toHaveAttribute("target", "_self");
119
+ o(/* @__PURE__ */ n(i, { items: s })), e(t.getByText("Home")).toHaveAttribute("target", "_self");
116
120
  });
117
- }), s("Items with sublinks (default navigationType)", () => {
121
+ }), c("Items with sublinks (default navigationType)", () => {
118
122
  a("renders parent item as button when no href", () => {
119
- o(/* @__PURE__ */ n(i, { items: p })), e(
123
+ o(/* @__PURE__ */ n(i, { items: y })), e(
120
124
  t.getByRole("button", { name: /products/i })
121
125
  ).toBeInTheDocument();
122
126
  }), a("toggle button has aria-haspopup=true", () => {
123
- o(/* @__PURE__ */ n(i, { items: p })), e(t.getByRole("button", { name: /products/i })).toHaveAttribute(
127
+ o(/* @__PURE__ */ n(i, { items: y })), e(t.getByRole("button", { name: /products/i })).toHaveAttribute(
124
128
  "aria-haspopup",
125
129
  "true"
126
130
  );
127
131
  }), a("toggle button starts with aria-expanded=false", () => {
128
- o(/* @__PURE__ */ n(i, { items: p })), e(t.getByRole("button", { name: /products/i })).toHaveAttribute(
132
+ o(/* @__PURE__ */ n(i, { items: y })), e(t.getByRole("button", { name: /products/i })).toHaveAttribute(
129
133
  "aria-expanded",
130
134
  "false"
131
135
  );
132
136
  }), a("sublink dropdown has role=menu and aria-label", () => {
133
- const { container: r } = o(/* @__PURE__ */ n(i, { items: p }));
137
+ const { container: r } = o(/* @__PURE__ */ n(i, { items: y }));
134
138
  e(
135
139
  r.querySelector("[role='menu'][aria-label='Products submenu']")
136
140
  ).toBeInTheDocument();
137
141
  }), a("clicking toggle button opens dropdown (aria-expanded=true)", () => {
138
- o(/* @__PURE__ */ n(i, { items: p }));
142
+ o(/* @__PURE__ */ n(i, { items: y }));
139
143
  const r = t.getByRole("button", { name: /products/i });
140
- c.click(r), e(r).toHaveAttribute("aria-expanded", "true");
144
+ u.click(r), e(r).toHaveAttribute("aria-expanded", "true");
141
145
  }), a("clicking toggle button twice closes dropdown (aria-expanded=false)", () => {
142
- o(/* @__PURE__ */ n(i, { items: p }));
146
+ o(/* @__PURE__ */ n(i, { items: y }));
143
147
  const r = t.getByRole("button", { name: /products/i });
144
- c.click(r), c.click(r), e(r).toHaveAttribute("aria-expanded", "false");
148
+ u.click(r), u.click(r), e(r).toHaveAttribute("aria-expanded", "false");
145
149
  }), a("sublinks are rendered inside the dropdown", () => {
146
- o(/* @__PURE__ */ n(i, { items: p })), e(t.getByText("Widget")).toBeInTheDocument(), e(t.getByText("Gadget")).toBeInTheDocument();
150
+ o(/* @__PURE__ */ n(i, { items: y })), e(t.getByText("Widget")).toBeInTheDocument(), e(t.getByText("Gadget")).toBeInTheDocument();
147
151
  }), a("sublinks have correct hrefs", () => {
148
- o(/* @__PURE__ */ n(i, { items: p })), e(t.getByText("Widget")).toHaveAttribute("href", "/widget"), e(t.getByText("Gadget")).toHaveAttribute("href", "/gadget");
152
+ o(/* @__PURE__ */ n(i, { items: y })), e(t.getByText("Widget")).toHaveAttribute("href", "/widget"), e(t.getByText("Gadget")).toHaveAttribute("href", "/gadget");
149
153
  });
150
- }), s("onClick callback", () => {
154
+ }), c("onClick callback", () => {
151
155
  a("calls onClick when a flat link is clicked", () => {
152
- const r = y.fn();
156
+ const r = d.fn();
153
157
  o(/* @__PURE__ */ n(i, { items: [
154
158
  { _key: "click", label: "Click me", href: "#", onClick: r }
155
- ] })), c.click(t.getByText("Click me")), e(r).toHaveBeenCalledOnce();
159
+ ] })), u.click(t.getByText("Click me")), e(r).toHaveBeenCalledOnce();
156
160
  });
157
- }), s("Variant", () => {
161
+ }), c("Variant", () => {
158
162
  a("applies standard variant class by default", () => {
159
163
  o(/* @__PURE__ */ n(i, {})), e(t.getByRole("banner")).toHaveClass("standard");
160
164
  }), a("applies transparent variant class", () => {
161
165
  o(/* @__PURE__ */ n(i, { variant: "transparent" })), e(t.getByRole("banner")).toHaveClass("transparent");
162
166
  });
163
- }), s("Alignment", () => {
167
+ }), c("Alignment", () => {
164
168
  a("applies right alignment class by default", () => {
165
169
  o(/* @__PURE__ */ n(i, {})), e(t.getByRole("banner")).toHaveClass("right");
166
170
  }), a("applies left alignment class", () => {
@@ -168,32 +172,36 @@ s("Navbar", () => {
168
172
  }), a("applies center alignment class", () => {
169
173
  o(/* @__PURE__ */ n(i, { alignment: "center" })), e(t.getByRole("banner")).toHaveClass("center");
170
174
  });
171
- }), s("Sticky", () => {
175
+ }), c("Sticky", () => {
172
176
  a("does not apply sticky class by default", () => {
173
177
  o(/* @__PURE__ */ n(i, {})), e(t.getByRole("banner")).not.toHaveClass("sticky");
174
178
  }), a("applies sticky class when isSticky=true", () => {
175
179
  o(/* @__PURE__ */ n(i, { isSticky: !0 })), e(t.getByRole("banner")).toHaveClass("sticky");
176
180
  });
177
- }), s("Navigation type", () => {
181
+ }), c("Navigation type", () => {
178
182
  a("applies default class when no groups", () => {
179
- o(/* @__PURE__ */ n(i, { items: l })), e(t.getByRole("banner")).toHaveClass("default");
183
+ o(/* @__PURE__ */ n(i, { items: s })), e(t.getByRole("banner")).toHaveClass("default");
180
184
  }), a("applies advanced class when groups provided", () => {
181
185
  o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), e(t.getByRole("banner")).toHaveClass("advanced");
182
186
  });
183
- }), s("Utility items", () => {
187
+ }), c("Utility items", () => {
184
188
  a("renders both desktop and mobile utility navs", () => {
185
- o(/* @__PURE__ */ n(i, { utilityItems: v }));
189
+ o(/* @__PURE__ */ n(i, { utilityItems: b }));
186
190
  const r = t.getAllByRole("navigation", {
187
191
  name: "Utility navigation"
188
192
  });
189
193
  e(r).toHaveLength(2);
190
194
  }), a("renders all utility button labels", () => {
191
- o(/* @__PURE__ */ n(i, { utilityItems: v })), e(t.getAllByText("Log in").length).toBeGreaterThan(0), e(t.getAllByText("Sign up").length).toBeGreaterThan(0);
195
+ o(/* @__PURE__ */ n(i, { utilityItems: b })), e(t.getAllByText("Log in").length).toBeGreaterThan(0), e(t.getAllByText("Sign up").length).toBeGreaterThan(0);
196
+ }), a("renders link utility items as anchors with correct href", () => {
197
+ o(/* @__PURE__ */ n(i, { utilityItems: b }));
198
+ const r = t.getAllByRole("link", { name: "Sign up" });
199
+ e(r.length).toBeGreaterThan(0), r.forEach((l) => e(l).toHaveAttribute("href", "/signup"));
192
200
  }), a("does not render utility nav when no items", () => {
193
201
  o(/* @__PURE__ */ n(i, { utilityItems: [] })), e(
194
202
  t.queryByRole("navigation", { name: "Utility navigation" })
195
203
  ).not.toBeInTheDocument();
196
- }), a("does not crash when only one utility item provided (no index[1] access)", () => {
204
+ }), a("does not crash when only one utility item provided", () => {
197
205
  const r = [
198
206
  {
199
207
  _key: "cta",
@@ -203,50 +211,102 @@ s("Navbar", () => {
203
211
  }
204
212
  ];
205
213
  e(() => o(/* @__PURE__ */ n(i, { utilityItems: r }))).not.toThrow();
214
+ }), a("renders modal utility item as a button (not an anchor)", () => {
215
+ o(/* @__PURE__ */ n(i, { utilityItems: [
216
+ {
217
+ _key: "contact",
218
+ label: "Contact Us",
219
+ ariaLabel: "Contact Us",
220
+ variant: "primary",
221
+ modalPayload: { heading: "Contact Us" }
222
+ }
223
+ ] }));
224
+ const l = t.getAllByRole("button", { name: "Contact Us" });
225
+ e(l.length).toBeGreaterThan(0), l.forEach((m) => e(m.tagName).toBe("BUTTON"));
226
+ }), a("calls useModal open with correct payload when modal utility item is clicked", () => {
227
+ v.mockClear();
228
+ const r = {
229
+ heading: "Contact Us",
230
+ formReference: { _id: "form-1", heading: "Contact" }
231
+ };
232
+ o(/* @__PURE__ */ n(i, { utilityItems: [
233
+ {
234
+ _key: "contact",
235
+ label: "Contact Us",
236
+ ariaLabel: "Contact Us",
237
+ variant: "primary",
238
+ modalPayload: r
239
+ }
240
+ ] }));
241
+ const m = t.getAllByRole("button", { name: "Contact Us" });
242
+ u.click(m[0]), e(v).toHaveBeenCalledWith(r);
243
+ }), a("renders mixed link and modal utility items correctly", () => {
244
+ o(/* @__PURE__ */ n(i, { utilityItems: [
245
+ {
246
+ _key: "login",
247
+ label: "Log in",
248
+ ariaLabel: "Log in",
249
+ href: "/login",
250
+ variant: "secondary"
251
+ },
252
+ {
253
+ _key: "contact",
254
+ label: "Contact Us",
255
+ ariaLabel: "Contact Us",
256
+ variant: "primary",
257
+ modalPayload: { heading: "Contact" }
258
+ }
259
+ ] }));
260
+ const l = t.getAllByRole("link", { name: "Log in" });
261
+ e(l.length).toBeGreaterThan(0);
262
+ const m = t.getAllByRole("button", {
263
+ name: "Contact Us"
264
+ });
265
+ e(m.length).toBeGreaterThan(0);
206
266
  });
207
- }), s("Mobile menu toggle", () => {
267
+ }), c("Mobile menu toggle", () => {
208
268
  a("renders toggle button", () => {
209
- o(/* @__PURE__ */ n(i, { items: l })), e(
269
+ o(/* @__PURE__ */ n(i, { items: s })), e(
210
270
  t.getByRole("button", { name: /open menu/i })
211
271
  ).toBeInTheDocument();
212
272
  }), a("toggle starts closed (aria-expanded=false)", () => {
213
- o(/* @__PURE__ */ n(i, { items: l })), e(
273
+ o(/* @__PURE__ */ n(i, { items: s })), e(
214
274
  t.getByRole("button", { name: /open menu/i })
215
275
  ).toHaveAttribute("aria-expanded", "false");
216
276
  }), a("opens menu on click", () => {
217
- o(/* @__PURE__ */ n(i, { items: l }));
277
+ o(/* @__PURE__ */ n(i, { items: s }));
218
278
  const r = t.getByRole("button", { name: /open menu/i });
219
- c.click(r), e(r).toHaveAttribute("aria-expanded", "true");
279
+ u.click(r), e(r).toHaveAttribute("aria-expanded", "true");
220
280
  }), a("closes menu on second click", () => {
221
- o(/* @__PURE__ */ n(i, { items: l }));
281
+ o(/* @__PURE__ */ n(i, { items: s }));
222
282
  const r = t.getByRole("button", { name: /open menu/i });
223
- c.click(r), c.click(r), e(r).toHaveAttribute("aria-expanded", "false");
283
+ u.click(r), u.click(r), e(r).toHaveAttribute("aria-expanded", "false");
224
284
  }), a("toggle has aria-controls pointing to main-menu", () => {
225
- o(/* @__PURE__ */ n(i, { items: l })), e(
285
+ o(/* @__PURE__ */ n(i, { items: s })), e(
226
286
  t.getByRole("button", { name: /open menu/i })
227
287
  ).toHaveAttribute("aria-controls", "main-menu");
228
288
  }), a("aria-label changes to 'Close menu' when menu is open", () => {
229
- o(/* @__PURE__ */ n(i, { items: l }));
289
+ o(/* @__PURE__ */ n(i, { items: s }));
230
290
  const r = t.getByRole("button", { name: /open menu/i });
231
- c.click(r), e(
291
+ u.click(r), e(
232
292
  t.getByRole("button", { name: /close menu/i })
233
293
  ).toBeInTheDocument();
234
294
  });
235
- }), s("Search button", () => {
295
+ }), c("Search button", () => {
236
296
  a("does not render search button when showSearch=false", () => {
237
297
  o(/* @__PURE__ */ n(i, { showSearch: !1 })), e(
238
298
  t.queryByRole("button", { name: /search/i })
239
299
  ).not.toBeInTheDocument();
240
300
  }), a("renders search button in mobile bar when showSearch=true and on mobile", () => {
241
- k(), o(/* @__PURE__ */ n(i, { showSearch: !0, items: l })), e(
301
+ f(), o(/* @__PURE__ */ n(i, { showSearch: !0, items: s })), e(
242
302
  t.getByRole("button", { name: /search/i })
243
303
  ).toBeInTheDocument();
244
304
  }), a("renders search button in nav when showSearch=true and on desktop", () => {
245
- d(), o(/* @__PURE__ */ n(i, { showSearch: !0, items: l })), e(
305
+ p(), o(/* @__PURE__ */ n(i, { showSearch: !0, items: s })), e(
246
306
  t.getByRole("button", { name: /search/i })
247
307
  ).toBeInTheDocument();
248
308
  });
249
- }), s("Custom styling", () => {
309
+ }), c("Custom styling", () => {
250
310
  a("applies custom className", () => {
251
311
  o(/* @__PURE__ */ n(i, { className: "my-navbar" })), e(t.getByRole("banner")).toHaveClass("my-navbar");
252
312
  }), a("preserves base navbar class alongside custom className", () => {
@@ -256,7 +316,7 @@ s("Navbar", () => {
256
316
  const r = t.getByRole("banner");
257
317
  e(r.style.borderBottom).toBe("2px solid red");
258
318
  });
259
- }), s("Accessibility", () => {
319
+ }), c("Accessibility", () => {
260
320
  a("header has banner landmark role", () => {
261
321
  o(/* @__PURE__ */ n(i, {})), e(t.getByRole("banner")).toBeInTheDocument();
262
322
  }), a("header has aria-label='Site header'", () => {
@@ -265,28 +325,28 @@ s("Navbar", () => {
265
325
  "Site header"
266
326
  );
267
327
  }), a("primary nav has id=main-menu", () => {
268
- const { container: r } = o(/* @__PURE__ */ n(i, { items: l }));
328
+ const { container: r } = o(/* @__PURE__ */ n(i, { items: s }));
269
329
  e(r.querySelector("#main-menu")).toBeInTheDocument();
270
330
  }), a("primary nav has aria-label='Primary navigation'", () => {
271
- o(/* @__PURE__ */ n(i, { items: l })), e(
331
+ o(/* @__PURE__ */ n(i, { items: s })), e(
272
332
  t.getByRole("navigation", { name: "Primary navigation" })
273
333
  ).toBeInTheDocument();
274
334
  }), a("decorative icons are aria-hidden", () => {
275
- o(/* @__PURE__ */ n(i, { items: l })), e(
335
+ o(/* @__PURE__ */ n(i, { items: s })), e(
276
336
  document.querySelectorAll("[aria-hidden='true']").length
277
337
  ).toBeGreaterThan(0);
278
338
  }), a("external link icons are aria-hidden", () => {
279
- o(/* @__PURE__ */ n(i, { items: l }));
280
- const u = t.getByText("External").querySelector("[aria-hidden='true']");
281
- e(u).toBeInTheDocument();
339
+ o(/* @__PURE__ */ n(i, { items: s }));
340
+ const l = t.getByText("External").querySelector("[aria-hidden='true']");
341
+ e(l).toBeInTheDocument();
282
342
  });
283
- }), s("Props forwarding", () => {
343
+ }), c("Props forwarding", () => {
284
344
  a("forwards data attributes to header", () => {
285
345
  o(/* @__PURE__ */ n(i, { "data-testid": "my-navbar" })), e(t.getByTestId("my-navbar")).toBeInTheDocument();
286
346
  });
287
- }), s("Advanced navigation (groups)", () => {
347
+ }), c("Advanced navigation (groups)", () => {
288
348
  T(() => {
289
- d();
349
+ p();
290
350
  }), a("renders group titles", () => {
291
351
  o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), e(t.getByText("Solutions")).toBeInTheDocument();
292
352
  }), a("group toggle button has aria-haspopup=true", () => {
@@ -307,7 +367,7 @@ s("Navbar", () => {
307
367
  }), a("mouseenter on group wrapper opens the mega-menu (aria-expanded=true)", () => {
308
368
  o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" }));
309
369
  const r = t.getByRole("button", { name: /solutions/i });
310
- c.mouseEnter(r.closest(".linkWrapper")), e(r).toHaveAttribute("aria-expanded", "true");
370
+ u.mouseEnter(r.closest(".linkWrapper")), e(r).toHaveAttribute("aria-expanded", "true");
311
371
  }), a("renders primary items inside the mega-menu", () => {
312
372
  o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), e(t.getByText("Enterprise")).toBeInTheDocument(), e(t.getByText("Startup")).toBeInTheDocument();
313
373
  }), a("primary items with href are rendered as links", () => {
@@ -317,18 +377,18 @@ s("Navbar", () => {
317
377
  }), a("renders secondary items", () => {
318
378
  o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), e(t.getByText("Case Studies")).toBeInTheDocument();
319
379
  }), a("hovering a primary item with sublinks reveals column 2 children", () => {
320
- o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), c.mouseEnter(t.getByText("Enterprise").closest("a")), e(t.getByText("SSO")).toBeInTheDocument(), e(t.getByText("Security")).toBeInTheDocument();
380
+ o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), u.mouseEnter(t.getByText("Enterprise").closest("a")), e(t.getByText("SSO")).toBeInTheDocument(), e(t.getByText("Security")).toBeInTheDocument();
321
381
  }), a("column 2 disappears after hovering a primary item without sublinks", () => {
322
- o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), c.mouseEnter(t.getByText("Enterprise").closest("a")), e(t.getByText("SSO")).toBeInTheDocument(), c.mouseEnter(t.getByText("Startup").closest("a")), e(t.queryByText("SSO")).not.toBeInTheDocument();
382
+ o(/* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })), u.mouseEnter(t.getByText("Enterprise").closest("a")), e(t.getByText("SSO")).toBeInTheDocument(), u.mouseEnter(t.getByText("Startup").closest("a")), e(t.queryByText("SSO")).not.toBeInTheDocument();
323
383
  }), a("mouseleave on submenu panel closes the mega-menu", () => {
324
384
  const { container: r } = o(
325
385
  /* @__PURE__ */ n(i, { groups: g, navigationType: "advanced" })
326
- ), u = t.getByRole("button", { name: /solutions/i }), m = u.closest(".linkWrapper"), h = r.querySelector(
386
+ ), l = t.getByRole("button", { name: /solutions/i }), m = l.closest(".linkWrapper"), h = r.querySelector(
327
387
  "[aria-label='Solutions submenu']"
328
388
  );
329
- c.mouseEnter(m), e(u).toHaveAttribute("aria-expanded", "true"), c.mouseLeave(h), e(u).toHaveAttribute("aria-expanded", "false");
389
+ u.mouseEnter(m), e(l).toHaveAttribute("aria-expanded", "true"), u.mouseLeave(h), e(l).toHaveAttribute("aria-expanded", "false");
330
390
  }), a("primary item click calls onClick and closes dropdown", () => {
331
- const r = y.fn();
391
+ const r = d.fn();
332
392
  o(/* @__PURE__ */ n(i, { groups: [
333
393
  {
334
394
  _key: "g1",
@@ -337,10 +397,10 @@ s("Navbar", () => {
337
397
  { _key: "item1", label: "Clickable", href: "/dest", onClick: r }
338
398
  ]
339
399
  }
340
- ], navigationType: "advanced" })), c.click(t.getByText("Clickable").closest("a")), e(r).toHaveBeenCalledOnce();
400
+ ], navigationType: "advanced" })), u.click(t.getByText("Clickable").closest("a")), e(r).toHaveBeenCalledOnce();
341
401
  });
342
- }), s("Spotlight card", () => {
343
- const u = [
402
+ }), c("Spotlight card", () => {
403
+ const l = [
344
404
  {
345
405
  _key: "spot",
346
406
  title: "Spotlight Group",
@@ -361,16 +421,16 @@ s("Navbar", () => {
361
421
  }
362
422
  ];
363
423
  a("renders the spotlight CTA button", () => {
364
- d(), o(/* @__PURE__ */ n(i, { groups: u, navigationType: "advanced" })), e(
424
+ p(), o(/* @__PURE__ */ n(i, { groups: l, navigationType: "advanced" })), e(
365
425
  t.getByRole("link", { name: /learn more/i })
366
426
  ).toBeInTheDocument();
367
427
  }), a("spotlight CTA resolves internal href correctly", () => {
368
- d(), o(/* @__PURE__ */ n(i, { groups: u, navigationType: "advanced" })), e(t.getByRole("link", { name: /learn more/i })).toHaveAttribute(
428
+ p(), o(/* @__PURE__ */ n(i, { groups: l, navigationType: "advanced" })), e(t.getByRole("link", { name: /learn more/i })).toHaveAttribute(
369
429
  "href",
370
430
  "/new-feature"
371
431
  );
372
432
  }), a("spotlight CTA resolves external href correctly", () => {
373
- d(), o(/* @__PURE__ */ n(i, { groups: [
433
+ p(), o(/* @__PURE__ */ n(i, { groups: [
374
434
  {
375
435
  _key: "g",
376
436
  title: "Ext Group",
@@ -387,10 +447,10 @@ s("Navbar", () => {
387
447
  }
388
448
  }
389
449
  ], navigationType: "advanced" }));
390
- const b = t.getByRole("link", { name: /visit/i });
391
- e(b).toHaveAttribute("href", "https://example.com"), e(b).toHaveAttribute("target", "_blank");
450
+ const B = t.getByRole("link", { name: /visit/i });
451
+ e(B).toHaveAttribute("href", "https://example.com"), e(B).toHaveAttribute("target", "_blank");
392
452
  }), a("renders spotlight image when provided", () => {
393
- d(), o(/* @__PURE__ */ n(i, { groups: [
453
+ p(), o(/* @__PURE__ */ n(i, { groups: [
394
454
  {
395
455
  _key: "g",
396
456
  title: "Img Group",
@@ -419,7 +479,7 @@ s("Navbar", () => {
419
479
  const h = t.getByAltText("Demo image");
420
480
  e(h).toBeInTheDocument(), e(h).toHaveAttribute("src", "/m.jpg");
421
481
  }), a("renders nothing when callToAction is absent", () => {
422
- d();
482
+ p();
423
483
  const m = [
424
484
  {
425
485
  _key: "g",
@@ -432,10 +492,10 @@ s("Navbar", () => {
432
492
  () => o(/* @__PURE__ */ n(i, { groups: m, navigationType: "advanced" }))
433
493
  ).not.toThrow();
434
494
  });
435
- }), s("renderText prop", () => {
495
+ }), c("renderText prop", () => {
436
496
  a("calls renderText for spotlight title when provided", () => {
437
- d();
438
- const r = y.fn(
497
+ p();
498
+ const r = d.fn(
439
499
  (m) => typeof m == "string" ? /* @__PURE__ */ n("span", { children: m }) : null
440
500
  );
441
501
  o(