quirk-ui 0.1.175 → 0.1.176

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 n=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),r=require("../../../index-0SVQqhAg.cjs");require("../../../index-CW_Ehh1q.cjs");const a=e.vi.fn();e.vi.mock("../../context/ModalContext",()=>({useModal:()=>({open:a})}));e.describe("Button",()=>{e.describe("Rendering as button",()=>{e.it("renders as a button by default",()=>{e.render(n.jsx(r.Button,{variant:"primary",children:"Click Me"}));const t=e.screen.getByRole("button",{name:"Click Me"});e.globalExpect(t).toBeInTheDocument(),e.globalExpect(t.tagName).toBe("BUTTON")}),e.it("renders as a button when 'as' is set to 'button'",()=>{e.render(n.jsx(r.Button,{as:"button",variant:"primary",children:"Click Me"}));const t=e.screen.getByRole("button",{name:"Click Me"});e.globalExpect(t).toBeInTheDocument(),e.globalExpect(t).toHaveClass("button","primary")}),e.it("has type='button' by default",()=>{e.render(n.jsx(r.Button,{variant:"primary",children:"Click Me"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveAttribute("type","button")}),e.it("respects the disabled prop on buttons",()=>{e.render(n.jsx(r.Button,{as:"button",variant:"primary",disabled:!0,children:"Disabled"}));const t=e.screen.getByRole("button",{name:"Disabled"});e.globalExpect(t).toBeDisabled()}),e.it("calls onClick when clicked",()=>{const t=e.vi.fn();e.render(n.jsx(r.Button,{variant:"primary",onClick:t,children:"Click Me"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(t).toHaveBeenCalledTimes(1)}),e.it("does not call onClick when disabled",()=>{const t=e.vi.fn();e.render(n.jsx(r.Button,{variant:"primary",onClick:t,disabled:!0,children:"Disabled"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(t).not.toHaveBeenCalled()})}),e.describe("Rendering as anchor",()=>{e.it("renders as an anchor when 'as' is set to 'a'",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",children:"Click Me"}));const t=e.screen.getByRole("link",{name:"Click Me"});e.globalExpect(t).toBeInTheDocument(),e.globalExpect(t.tagName).toBe("A"),e.globalExpect(t).toHaveAttribute("href","/test"),e.globalExpect(t).toHaveClass("button","link")}),e.it("adds rel='noopener noreferrer' when target is '_blank'",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",target:"_blank",variant:"link",children:"External"})),e.globalExpect(e.screen.getByRole("link",{name:"External"})).toHaveAttribute("rel","noopener noreferrer")}),e.it("preserves custom rel attribute and adds security",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",target:"_blank",rel:"author",variant:"link",children:"External"})),e.globalExpect(e.screen.getByRole("link")).toHaveAttribute("rel","author noopener noreferrer")}),e.it("does not add security rel for internal links",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",children:"Internal"})),e.globalExpect(e.screen.getByRole("link")).not.toHaveAttribute("rel")}),e.it("adds aria-disabled when disabled",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",disabled:!0,children:"Disabled Link"})),e.globalExpect(e.screen.getByRole("link")).toHaveAttribute("aria-disabled","true")})}),e.describe("Scroll button",()=>{e.it("renders as a scroll button when 'as' is set to 'scroll'",()=>{e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"section-1",variant:"primary",children:"Scroll Down"})),e.globalExpect(e.screen.getByRole("button",{name:"Scroll to section-1"})).toBeInTheDocument()}),e.it("has proper aria-label for scroll button",()=>{e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"footer",variant:"primary",children:"To Footer"})),e.globalExpect(e.screen.getByRole("button")).toHaveAttribute("aria-label","Scroll to footer")}),e.it("scrolls to target element when clicked",()=>{const t=document.createElement("div");t.id="target-section",document.body.appendChild(t);const o=e.vi.fn();t.scrollIntoView=o,e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"target-section",variant:"primary",children:"Scroll"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(o).toHaveBeenCalledWith({behavior:"smooth",block:"start"}),document.body.removeChild(t)}),e.it("uses scrollTo with offset when scrollOffset is set",()=>{const t=document.createElement("div");t.id="offset-section",document.body.appendChild(t);const o=e.vi.fn();window.scrollTo=o,e.vi.spyOn(t,"getBoundingClientRect").mockReturnValue({top:200}),e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"offset-section",scrollOffset:80,variant:"primary",children:"Scroll"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(o).toHaveBeenCalledWith({top:e.globalExpect.any(Number),behavior:"smooth"}),document.body.removeChild(t)}),e.it("does not error if scroll target does not exist",()=>{e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"non-existent",variant:"primary",children:"Scroll"})),e.globalExpect(()=>e.fireEvent.click(e.screen.getByRole("button"))).not.toThrow()})}),e.describe("Modal button",()=>{e.it("renders as a button when 'as' is set to 'modal'",()=>{e.render(n.jsx(r.Button,{as:"modal",modalPayload:{heading:{title:[{_type:"block",_key:"a",children:[{_type:"span",_key:"b",text:"Contact Us",marks:[]}],markDefs:[],style:"normal"}]}},variant:"primary",children:"Open Modal"})),e.globalExpect(e.screen.getByRole("button",{name:"Open Modal"})).toBeInTheDocument()}),e.it("calls useModal open with the payload when clicked",()=>{const t={heading:{title:[{_type:"block",_key:"a",children:[{_type:"span",_key:"b",text:"Contact Us",marks:[]}],markDefs:[],style:"normal"}]},formReference:{_id:"form-123",heading:{title:[{_type:"block",_key:"c",children:[{_type:"span",_key:"d",text:"Contact",marks:[]}],markDefs:[],style:"normal"}]}}};e.render(n.jsx(r.Button,{as:"modal",modalPayload:t,variant:"primary",children:"Open Form"})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Form"})),e.globalExpect(a).toHaveBeenCalledWith(t)}),e.it("is disabled when disabled prop is set",()=>{e.render(n.jsx(r.Button,{as:"modal",modalPayload:{heading:{title:[{_type:"block",_key:"a",children:[{_type:"span",_key:"b",text:"Test",marks:[]}],markDefs:[],style:"normal"}]}},variant:"primary",disabled:!0,children:"Disabled Modal"})),e.globalExpect(e.screen.getByRole("button")).toBeDisabled()}),e.it("does not call open when disabled",()=>{a.mockClear(),e.render(n.jsx(r.Button,{as:"modal",modalPayload:{heading:{title:[{_type:"block",_key:"a",children:[{_type:"span",_key:"b",text:"Test",marks:[]}],markDefs:[],style:"normal"}]}},variant:"primary",disabled:!0,children:"Disabled"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(a).not.toHaveBeenCalled()})}),e.describe("Variants",()=>{["primary","primaryInverted","secondary","secondaryInverted","link","linkInverted","underline","underlineInverted","blurred","blurredInverted"].forEach(o=>{e.it(`applies ${o} variant class`,()=>{e.render(n.jsx(r.Button,{variant:o,children:"Button"})),e.globalExpect(e.screen.getByRole("button")).toHaveClass(o)})}),e.it("uses primary variant by default",()=>{e.render(n.jsx(r.Button,{children:"Default"})),e.globalExpect(e.screen.getByRole("button")).toHaveClass("primary")})}),e.describe("Icons",()=>{e.it("includes icon when icon prop is provided",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-right",children:"Next"})),e.globalExpect(document.querySelector(".icon")).toBeInTheDocument(),e.globalExpect(document.querySelector(".icon svg")).toBeInTheDocument()}),e.it("places icon on the left when iconAlignment is 'left'",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-left",iconAlignment:"left",children:"Back"})),e.globalExpect(document.querySelector(".content")).toHaveClass("iconLeft")}),e.it("places icon on the right when iconAlignment is 'right'",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-right",iconAlignment:"right",children:"Next"})),e.globalExpect(document.querySelector(".content")).toHaveClass("iconRight")}),e.it("uses right alignment by default",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-right",children:"Default Icon"})),e.globalExpect(document.querySelector(".content")).toHaveClass("iconRight")}),e.it("icon has aria-hidden attribute",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"settings",children:"Settings"})),e.globalExpect(document.querySelector(".icon")).toHaveAttribute("aria-hidden","true")})}),e.describe("Image display",()=>{e.it("renders image when displayType is 'image' and imageSrc is provided",()=>{e.render(n.jsx(r.Button,{variant:"primary",displayType:"image",imageSrc:"/logo.png",imageAlt:"Company Logo",children:"Text not shown"}));const t=document.querySelector("img");e.globalExpect(t).toHaveAttribute("src","/logo.png"),e.globalExpect(t).toHaveAttribute("alt","Company Logo")}),e.it("renders ImageComponent when provided",()=>{const t=()=>n.jsx("div",{"data-testid":"custom-image",children:"Custom"});e.render(n.jsx(r.Button,{variant:"primary",displayType:"image",ImageComponent:n.jsx(t,{}),children:"Text"})),e.globalExpect(e.screen.getByTestId("custom-image")).toBeInTheDocument()}),e.it("applies image class when displayType is image",()=>{e.render(n.jsx(r.Button,{variant:"primary",displayType:"image",imageSrc:"/logo.png",children:"Text"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveClass("image"),e.globalExpect(t).not.toHaveClass("primary")})}),e.describe("Custom className",()=>{e.it("applies custom className",()=>{e.render(n.jsx(r.Button,{variant:"primary",className:"custom-button",children:"Custom"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveClass("custom-button","button","primary")})}),e.describe("Accessibility",()=>{e.it("has button role for button element",()=>{e.render(n.jsx(r.Button,{variant:"primary",children:"Click"})),e.globalExpect(e.screen.getByRole("button")).toBeInTheDocument()}),e.it("has link role for anchor element",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",children:"Link"})),e.globalExpect(e.screen.getByRole("link")).toBeInTheDocument()}),e.it("supports aria attributes",()=>{e.render(n.jsx(r.Button,{variant:"primary","aria-label":"Custom Label","aria-describedby":"desc",children:"Button"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveAttribute("aria-label","Custom Label"),e.globalExpect(t).toHaveAttribute("aria-describedby","desc")})}),e.describe("Edge cases",()=>{e.it("handles undefined variant",()=>{e.render(n.jsx(r.Button,{variant:void 0,children:"No Variant"})),e.globalExpect(e.screen.getByRole("button")).toHaveClass("button")}),e.it("handles complex children",()=>{e.render(n.jsxs(r.Button,{variant:"primary",children:[n.jsx("span",{children:"Complex"}),n.jsx("strong",{children:"Children"})]})),e.globalExpect(e.screen.getByText("Complex")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Children")).toBeInTheDocument()})})});
1
+ "use strict";const n=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),r=require("../../../index-0SVQqhAg.cjs");require("../../../index-CW_Ehh1q.cjs");const a=e.vi.fn();e.vi.mock("../../context/ModalContext",()=>({useModal:()=>({open:a})}));e.describe("Button",()=>{e.describe("Rendering as button",()=>{e.it("renders as a button by default",()=>{e.render(n.jsx(r.Button,{variant:"primary",children:"Click Me"}));const t=e.screen.getByRole("button",{name:"Click Me"});e.globalExpect(t).toBeInTheDocument(),e.globalExpect(t.tagName).toBe("BUTTON")}),e.it("renders as a button when 'as' is set to 'button'",()=>{e.render(n.jsx(r.Button,{as:"button",variant:"primary",children:"Click Me"}));const t=e.screen.getByRole("button",{name:"Click Me"});e.globalExpect(t).toBeInTheDocument(),e.globalExpect(t).toHaveClass("button","primary")}),e.it("has type='button' by default",()=>{e.render(n.jsx(r.Button,{variant:"primary",children:"Click Me"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveAttribute("type","button")}),e.it("respects the disabled prop on buttons",()=>{e.render(n.jsx(r.Button,{as:"button",variant:"primary",disabled:!0,children:"Disabled"}));const t=e.screen.getByRole("button",{name:"Disabled"});e.globalExpect(t).toBeDisabled()}),e.it("calls onClick when clicked",()=>{const t=e.vi.fn();e.render(n.jsx(r.Button,{variant:"primary",onClick:t,children:"Click Me"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(t).toHaveBeenCalledTimes(1)}),e.it("does not call onClick when disabled",()=>{const t=e.vi.fn();e.render(n.jsx(r.Button,{variant:"primary",onClick:t,disabled:!0,children:"Disabled"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(t).not.toHaveBeenCalled()})}),e.describe("Rendering as anchor",()=>{e.it("renders as an anchor when 'as' is set to 'a'",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",children:"Click Me"}));const t=e.screen.getByRole("link",{name:"Click Me"});e.globalExpect(t).toBeInTheDocument(),e.globalExpect(t.tagName).toBe("A"),e.globalExpect(t).toHaveAttribute("href","/test"),e.globalExpect(t).toHaveClass("button","link")}),e.it("adds rel='noopener noreferrer' when target is '_blank'",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",target:"_blank",variant:"link",children:"External"})),e.globalExpect(e.screen.getByRole("link",{name:"External"})).toHaveAttribute("rel","noopener noreferrer")}),e.it("preserves custom rel attribute and adds security",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",target:"_blank",rel:"author",variant:"link",children:"External"})),e.globalExpect(e.screen.getByRole("link")).toHaveAttribute("rel","author noopener noreferrer")}),e.it("does not add security rel for internal links",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",children:"Internal"})),e.globalExpect(e.screen.getByRole("link")).not.toHaveAttribute("rel")}),e.it("adds aria-disabled when disabled",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",disabled:!0,children:"Disabled Link"})),e.globalExpect(e.screen.getByRole("link")).toHaveAttribute("aria-disabled","true")})}),e.describe("Scroll button",()=>{e.it("renders as a scroll button when 'as' is set to 'scroll'",()=>{e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"section-1",variant:"primary",children:"Scroll Down"})),e.globalExpect(e.screen.getByRole("button",{name:"Scroll to section-1"})).toBeInTheDocument()}),e.it("has proper aria-label for scroll button",()=>{e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"footer",variant:"primary",children:"To Footer"})),e.globalExpect(e.screen.getByRole("button")).toHaveAttribute("aria-label","Scroll to footer")}),e.it("scrolls to target element when clicked",()=>{const t=document.createElement("div");t.id="target-section",document.body.appendChild(t);const o=e.vi.fn();t.scrollIntoView=o,e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"target-section",variant:"primary",children:"Scroll"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(o).toHaveBeenCalledWith({behavior:"smooth",block:"start"}),document.body.removeChild(t)}),e.it("uses scrollTo with offset when scrollOffset is set",()=>{const t=document.createElement("div");t.id="offset-section",document.body.appendChild(t);const o=e.vi.fn();window.scrollTo=o,e.vi.spyOn(t,"getBoundingClientRect").mockReturnValue({top:200}),e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"offset-section",scrollOffset:80,variant:"primary",children:"Scroll"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(o).toHaveBeenCalledWith({top:e.globalExpect.any(Number),behavior:"smooth"}),document.body.removeChild(t)}),e.it("does not error if scroll target does not exist",()=>{e.render(n.jsx(r.Button,{as:"scroll",scrollTarget:"non-existent",variant:"primary",children:"Scroll"})),e.globalExpect(()=>e.fireEvent.click(e.screen.getByRole("button"))).not.toThrow()})}),e.describe("Modal button",()=>{e.it("renders as a button when 'as' is set to 'modal'",()=>{e.render(n.jsx(r.Button,{as:"modal",modalPayload:{formReference:{_id:"form-modal",heading:{title:[{_type:"block",_key:"a",children:[{_type:"span",_key:"b",text:"Contact Us",marks:[]}],markDefs:[],style:"normal"}]}}},variant:"primary",children:"Open Modal"})),e.globalExpect(e.screen.getByRole("button",{name:"Open Modal"})).toBeInTheDocument()}),e.it("calls useModal open with the payload when clicked",()=>{const t={formReference:{_id:"form-123",heading:{title:[{_type:"block",_key:"c",children:[{_type:"span",_key:"d",text:"Contact",marks:[]}],markDefs:[],style:"normal"}]}}};e.render(n.jsx(r.Button,{as:"modal",modalPayload:t,variant:"primary",children:"Open Form"})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Form"})),e.globalExpect(a).toHaveBeenCalledWith(t)}),e.it("is disabled when disabled prop is set",()=>{e.render(n.jsx(r.Button,{as:"modal",modalPayload:{formReference:{_id:"form-disabled"}},variant:"primary",disabled:!0,children:"Disabled Modal"})),e.globalExpect(e.screen.getByRole("button")).toBeDisabled()}),e.it("does not call open when disabled",()=>{a.mockClear(),e.render(n.jsx(r.Button,{as:"modal",modalPayload:{formReference:{_id:"form-disabled"}},variant:"primary",disabled:!0,children:"Disabled"})),e.fireEvent.click(e.screen.getByRole("button")),e.globalExpect(a).not.toHaveBeenCalled()})}),e.describe("Variants",()=>{["primary","primaryInverted","secondary","secondaryInverted","link","linkInverted","underline","underlineInverted","blurred","blurredInverted"].forEach(o=>{e.it(`applies ${o} variant class`,()=>{e.render(n.jsx(r.Button,{variant:o,children:"Button"})),e.globalExpect(e.screen.getByRole("button")).toHaveClass(o)})}),e.it("uses primary variant by default",()=>{e.render(n.jsx(r.Button,{children:"Default"})),e.globalExpect(e.screen.getByRole("button")).toHaveClass("primary")})}),e.describe("Icons",()=>{e.it("includes icon when icon prop is provided",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-right",children:"Next"})),e.globalExpect(document.querySelector(".icon")).toBeInTheDocument(),e.globalExpect(document.querySelector(".icon svg")).toBeInTheDocument()}),e.it("places icon on the left when iconAlignment is 'left'",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-left",iconAlignment:"left",children:"Back"})),e.globalExpect(document.querySelector(".content")).toHaveClass("iconLeft")}),e.it("places icon on the right when iconAlignment is 'right'",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-right",iconAlignment:"right",children:"Next"})),e.globalExpect(document.querySelector(".content")).toHaveClass("iconRight")}),e.it("uses right alignment by default",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"arrow-right",children:"Default Icon"})),e.globalExpect(document.querySelector(".content")).toHaveClass("iconRight")}),e.it("icon has aria-hidden attribute",()=>{e.render(n.jsx(r.Button,{variant:"primary",icon:"settings",children:"Settings"})),e.globalExpect(document.querySelector(".icon")).toHaveAttribute("aria-hidden","true")})}),e.describe("Image display",()=>{e.it("renders image when displayType is 'image' and imageSrc is provided",()=>{e.render(n.jsx(r.Button,{variant:"primary",displayType:"image",imageSrc:"/logo.png",imageAlt:"Company Logo",children:"Text not shown"}));const t=document.querySelector("img");e.globalExpect(t).toHaveAttribute("src","/logo.png"),e.globalExpect(t).toHaveAttribute("alt","Company Logo")}),e.it("renders ImageComponent when provided",()=>{const t=()=>n.jsx("div",{"data-testid":"custom-image",children:"Custom"});e.render(n.jsx(r.Button,{variant:"primary",displayType:"image",ImageComponent:n.jsx(t,{}),children:"Text"})),e.globalExpect(e.screen.getByTestId("custom-image")).toBeInTheDocument()}),e.it("applies image class when displayType is image",()=>{e.render(n.jsx(r.Button,{variant:"primary",displayType:"image",imageSrc:"/logo.png",children:"Text"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveClass("image"),e.globalExpect(t).not.toHaveClass("primary")})}),e.describe("Custom className",()=>{e.it("applies custom className",()=>{e.render(n.jsx(r.Button,{variant:"primary",className:"custom-button",children:"Custom"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveClass("custom-button","button","primary")})}),e.describe("Accessibility",()=>{e.it("has button role for button element",()=>{e.render(n.jsx(r.Button,{variant:"primary",children:"Click"})),e.globalExpect(e.screen.getByRole("button")).toBeInTheDocument()}),e.it("has link role for anchor element",()=>{e.render(n.jsx(r.Button,{as:"a",href:"/test",variant:"link",children:"Link"})),e.globalExpect(e.screen.getByRole("link")).toBeInTheDocument()}),e.it("supports aria attributes",()=>{e.render(n.jsx(r.Button,{variant:"primary","aria-label":"Custom Label","aria-describedby":"desc",children:"Button"}));const t=e.screen.getByRole("button");e.globalExpect(t).toHaveAttribute("aria-label","Custom Label"),e.globalExpect(t).toHaveAttribute("aria-describedby","desc")})}),e.describe("Edge cases",()=>{e.it("handles undefined variant",()=>{e.render(n.jsx(r.Button,{variant:void 0,children:"No Variant"})),e.globalExpect(e.screen.getByRole("button")).toHaveClass("button")}),e.it("handles complex children",()=>{e.render(n.jsxs(r.Button,{variant:"primary",children:[n.jsx("span",{children:"Complex"}),n.jsx("strong",{children:"Children"})]})),e.globalExpect(e.screen.getByText("Complex")).toBeInTheDocument(),e.globalExpect(e.screen.getByText("Children")).toBeInTheDocument()})})});
@@ -1,106 +1,106 @@
1
- import { jsx as a, jsxs as u } from "react/jsx-runtime";
2
- import { v as d, d as i, i as n, r as o, s as l, g as e, f as c } from "../../../react.esm-DjxyacK8.js";
1
+ import { jsx as o, jsxs as u } from "react/jsx-runtime";
2
+ import { v as d, d as l, i as a, r as n, s as i, g as e, f as c } from "../../../react.esm-DjxyacK8.js";
3
3
  import { B as r } from "../../../index-aWdsapYP.js";
4
4
  import "../../../index-DPGXWTtt.js";
5
5
  const m = d.fn();
6
6
  d.mock("../../context/ModalContext", () => ({
7
7
  useModal: () => ({ open: m })
8
8
  }));
9
- i("Button", () => {
10
- i("Rendering as button", () => {
11
- n("renders as a button by default", () => {
12
- o(/* @__PURE__ */ a(r, { variant: "primary", children: "Click Me" }));
13
- const t = l.getByRole("button", { name: "Click Me" });
9
+ l("Button", () => {
10
+ l("Rendering as button", () => {
11
+ a("renders as a button by default", () => {
12
+ n(/* @__PURE__ */ o(r, { variant: "primary", children: "Click Me" }));
13
+ const t = i.getByRole("button", { name: "Click Me" });
14
14
  e(t).toBeInTheDocument(), e(t.tagName).toBe("BUTTON");
15
- }), n("renders as a button when 'as' is set to 'button'", () => {
16
- o(
17
- /* @__PURE__ */ a(r, { as: "button", variant: "primary", children: "Click Me" })
15
+ }), a("renders as a button when 'as' is set to 'button'", () => {
16
+ n(
17
+ /* @__PURE__ */ o(r, { as: "button", variant: "primary", children: "Click Me" })
18
18
  );
19
- const t = l.getByRole("button", { name: "Click Me" });
19
+ const t = i.getByRole("button", { name: "Click Me" });
20
20
  e(t).toBeInTheDocument(), e(t).toHaveClass("button", "primary");
21
- }), n("has type='button' by default", () => {
22
- o(/* @__PURE__ */ a(r, { variant: "primary", children: "Click Me" }));
23
- const t = l.getByRole("button");
21
+ }), a("has type='button' by default", () => {
22
+ n(/* @__PURE__ */ o(r, { variant: "primary", children: "Click Me" }));
23
+ const t = i.getByRole("button");
24
24
  e(t).toHaveAttribute("type", "button");
25
- }), n("respects the disabled prop on buttons", () => {
26
- o(
27
- /* @__PURE__ */ a(r, { as: "button", variant: "primary", disabled: !0, children: "Disabled" })
25
+ }), a("respects the disabled prop on buttons", () => {
26
+ n(
27
+ /* @__PURE__ */ o(r, { as: "button", variant: "primary", disabled: !0, children: "Disabled" })
28
28
  );
29
- const t = l.getByRole("button", { name: "Disabled" });
29
+ const t = i.getByRole("button", { name: "Disabled" });
30
30
  e(t).toBeDisabled();
31
- }), n("calls onClick when clicked", () => {
31
+ }), a("calls onClick when clicked", () => {
32
32
  const t = d.fn();
33
- o(
34
- /* @__PURE__ */ a(r, { variant: "primary", onClick: t, children: "Click Me" })
35
- ), c.click(l.getByRole("button")), e(t).toHaveBeenCalledTimes(1);
36
- }), n("does not call onClick when disabled", () => {
33
+ n(
34
+ /* @__PURE__ */ o(r, { variant: "primary", onClick: t, children: "Click Me" })
35
+ ), c.click(i.getByRole("button")), e(t).toHaveBeenCalledTimes(1);
36
+ }), a("does not call onClick when disabled", () => {
37
37
  const t = d.fn();
38
- o(
39
- /* @__PURE__ */ a(r, { variant: "primary", onClick: t, disabled: !0, children: "Disabled" })
40
- ), c.click(l.getByRole("button")), e(t).not.toHaveBeenCalled();
38
+ n(
39
+ /* @__PURE__ */ o(r, { variant: "primary", onClick: t, disabled: !0, children: "Disabled" })
40
+ ), c.click(i.getByRole("button")), e(t).not.toHaveBeenCalled();
41
41
  });
42
- }), i("Rendering as anchor", () => {
43
- n("renders as an anchor when 'as' is set to 'a'", () => {
44
- o(
45
- /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", children: "Click Me" })
42
+ }), l("Rendering as anchor", () => {
43
+ a("renders as an anchor when 'as' is set to 'a'", () => {
44
+ n(
45
+ /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", children: "Click Me" })
46
46
  );
47
- const t = l.getByRole("link", { name: "Click Me" });
47
+ const t = i.getByRole("link", { name: "Click Me" });
48
48
  e(t).toBeInTheDocument(), e(t.tagName).toBe("A"), e(t).toHaveAttribute("href", "/test"), e(t).toHaveClass("button", "link");
49
- }), n("adds rel='noopener noreferrer' when target is '_blank'", () => {
50
- o(
51
- /* @__PURE__ */ a(r, { as: "a", href: "/test", target: "_blank", variant: "link", children: "External" })
52
- ), e(l.getByRole("link", { name: "External" })).toHaveAttribute(
49
+ }), a("adds rel='noopener noreferrer' when target is '_blank'", () => {
50
+ n(
51
+ /* @__PURE__ */ o(r, { as: "a", href: "/test", target: "_blank", variant: "link", children: "External" })
52
+ ), e(i.getByRole("link", { name: "External" })).toHaveAttribute(
53
53
  "rel",
54
54
  "noopener noreferrer"
55
55
  );
56
- }), n("preserves custom rel attribute and adds security", () => {
57
- o(
58
- /* @__PURE__ */ a(r, { as: "a", href: "/test", target: "_blank", rel: "author", variant: "link", children: "External" })
59
- ), e(l.getByRole("link")).toHaveAttribute(
56
+ }), a("preserves custom rel attribute and adds security", () => {
57
+ n(
58
+ /* @__PURE__ */ o(r, { as: "a", href: "/test", target: "_blank", rel: "author", variant: "link", children: "External" })
59
+ ), e(i.getByRole("link")).toHaveAttribute(
60
60
  "rel",
61
61
  "author noopener noreferrer"
62
62
  );
63
- }), n("does not add security rel for internal links", () => {
64
- o(
65
- /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", children: "Internal" })
66
- ), e(l.getByRole("link")).not.toHaveAttribute("rel");
67
- }), n("adds aria-disabled when disabled", () => {
68
- o(
69
- /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", disabled: !0, children: "Disabled Link" })
70
- ), e(l.getByRole("link")).toHaveAttribute("aria-disabled", "true");
63
+ }), a("does not add security rel for internal links", () => {
64
+ n(
65
+ /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", children: "Internal" })
66
+ ), e(i.getByRole("link")).not.toHaveAttribute("rel");
67
+ }), a("adds aria-disabled when disabled", () => {
68
+ n(
69
+ /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", disabled: !0, children: "Disabled Link" })
70
+ ), e(i.getByRole("link")).toHaveAttribute("aria-disabled", "true");
71
71
  });
72
- }), i("Scroll button", () => {
73
- n("renders as a scroll button when 'as' is set to 'scroll'", () => {
74
- o(
75
- /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "section-1", variant: "primary", children: "Scroll Down" })
72
+ }), l("Scroll button", () => {
73
+ a("renders as a scroll button when 'as' is set to 'scroll'", () => {
74
+ n(
75
+ /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "section-1", variant: "primary", children: "Scroll Down" })
76
76
  ), e(
77
- l.getByRole("button", { name: "Scroll to section-1" })
77
+ i.getByRole("button", { name: "Scroll to section-1" })
78
78
  ).toBeInTheDocument();
79
- }), n("has proper aria-label for scroll button", () => {
80
- o(
81
- /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "footer", variant: "primary", children: "To Footer" })
82
- ), e(l.getByRole("button")).toHaveAttribute(
79
+ }), a("has proper aria-label for scroll button", () => {
80
+ n(
81
+ /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "footer", variant: "primary", children: "To Footer" })
82
+ ), e(i.getByRole("button")).toHaveAttribute(
83
83
  "aria-label",
84
84
  "Scroll to footer"
85
85
  );
86
- }), n("scrolls to target element when clicked", () => {
86
+ }), a("scrolls to target element when clicked", () => {
87
87
  const t = document.createElement("div");
88
88
  t.id = "target-section", document.body.appendChild(t);
89
89
  const s = d.fn();
90
- t.scrollIntoView = s, o(
91
- /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "target-section", variant: "primary", children: "Scroll" })
92
- ), c.click(l.getByRole("button")), e(s).toHaveBeenCalledWith({
90
+ t.scrollIntoView = s, n(
91
+ /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "target-section", variant: "primary", children: "Scroll" })
92
+ ), c.click(i.getByRole("button")), e(s).toHaveBeenCalledWith({
93
93
  behavior: "smooth",
94
94
  block: "start"
95
95
  }), document.body.removeChild(t);
96
- }), n("uses scrollTo with offset when scrollOffset is set", () => {
96
+ }), a("uses scrollTo with offset when scrollOffset is set", () => {
97
97
  const t = document.createElement("div");
98
98
  t.id = "offset-section", document.body.appendChild(t);
99
99
  const s = d.fn();
100
100
  window.scrollTo = s, d.spyOn(t, "getBoundingClientRect").mockReturnValue({
101
101
  top: 200
102
- }), o(
103
- /* @__PURE__ */ a(
102
+ }), n(
103
+ /* @__PURE__ */ o(
104
104
  r,
105
105
  {
106
106
  as: "scroll",
@@ -110,35 +110,43 @@ i("Button", () => {
110
110
  children: "Scroll"
111
111
  }
112
112
  )
113
- ), c.click(l.getByRole("button")), e(s).toHaveBeenCalledWith({
113
+ ), c.click(i.getByRole("button")), e(s).toHaveBeenCalledWith({
114
114
  top: e.any(Number),
115
115
  behavior: "smooth"
116
116
  }), document.body.removeChild(t);
117
- }), n("does not error if scroll target does not exist", () => {
118
- o(
119
- /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "non-existent", variant: "primary", children: "Scroll" })
120
- ), e(() => c.click(l.getByRole("button"))).not.toThrow();
117
+ }), a("does not error if scroll target does not exist", () => {
118
+ n(
119
+ /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "non-existent", variant: "primary", children: "Scroll" })
120
+ ), e(() => c.click(i.getByRole("button"))).not.toThrow();
121
121
  });
122
- }), i("Modal button", () => {
123
- n("renders as a button when 'as' is set to 'modal'", () => {
124
- o(
125
- /* @__PURE__ */ a(
122
+ }), l("Modal button", () => {
123
+ a("renders as a button when 'as' is set to 'modal'", () => {
124
+ n(
125
+ /* @__PURE__ */ o(
126
126
  r,
127
127
  {
128
128
  as: "modal",
129
129
  modalPayload: {
130
- heading: {
131
- title: [
132
- {
133
- _type: "block",
134
- _key: "a",
135
- children: [
136
- { _type: "span", _key: "b", text: "Contact Us", marks: [] }
137
- ],
138
- markDefs: [],
139
- style: "normal"
140
- }
141
- ]
130
+ formReference: {
131
+ _id: "form-modal",
132
+ heading: {
133
+ title: [
134
+ {
135
+ _type: "block",
136
+ _key: "a",
137
+ children: [
138
+ {
139
+ _type: "span",
140
+ _key: "b",
141
+ text: "Contact Us",
142
+ marks: []
143
+ }
144
+ ],
145
+ markDefs: [],
146
+ style: "normal"
147
+ }
148
+ ]
149
+ }
142
150
  }
143
151
  },
144
152
  variant: "primary",
@@ -146,23 +154,10 @@ i("Button", () => {
146
154
  }
147
155
  )
148
156
  ), e(
149
- l.getByRole("button", { name: "Open Modal" })
157
+ i.getByRole("button", { name: "Open Modal" })
150
158
  ).toBeInTheDocument();
151
- }), n("calls useModal open with the payload when clicked", () => {
159
+ }), a("calls useModal open with the payload when clicked", () => {
152
160
  const t = {
153
- heading: {
154
- title: [
155
- {
156
- _type: "block",
157
- _key: "a",
158
- children: [
159
- { _type: "span", _key: "b", text: "Contact Us", marks: [] }
160
- ],
161
- markDefs: [],
162
- style: "normal"
163
- }
164
- ]
165
- },
166
161
  formReference: {
167
162
  _id: "form-123",
168
163
  heading: {
@@ -180,65 +175,37 @@ i("Button", () => {
180
175
  }
181
176
  }
182
177
  };
183
- o(
184
- /* @__PURE__ */ a(r, { as: "modal", modalPayload: t, variant: "primary", children: "Open Form" })
185
- ), c.click(l.getByRole("button", { name: "Open Form" })), e(m).toHaveBeenCalledWith(t);
186
- }), n("is disabled when disabled prop is set", () => {
187
- o(
188
- /* @__PURE__ */ a(
178
+ n(
179
+ /* @__PURE__ */ o(r, { as: "modal", modalPayload: t, variant: "primary", children: "Open Form" })
180
+ ), c.click(i.getByRole("button", { name: "Open Form" })), e(m).toHaveBeenCalledWith(t);
181
+ }), a("is disabled when disabled prop is set", () => {
182
+ n(
183
+ /* @__PURE__ */ o(
189
184
  r,
190
185
  {
191
186
  as: "modal",
192
- modalPayload: {
193
- heading: {
194
- title: [
195
- {
196
- _type: "block",
197
- _key: "a",
198
- children: [
199
- { _type: "span", _key: "b", text: "Test", marks: [] }
200
- ],
201
- markDefs: [],
202
- style: "normal"
203
- }
204
- ]
205
- }
206
- },
187
+ modalPayload: { formReference: { _id: "form-disabled" } },
207
188
  variant: "primary",
208
189
  disabled: !0,
209
190
  children: "Disabled Modal"
210
191
  }
211
192
  )
212
- ), e(l.getByRole("button")).toBeDisabled();
213
- }), n("does not call open when disabled", () => {
214
- m.mockClear(), o(
215
- /* @__PURE__ */ a(
193
+ ), e(i.getByRole("button")).toBeDisabled();
194
+ }), a("does not call open when disabled", () => {
195
+ m.mockClear(), n(
196
+ /* @__PURE__ */ o(
216
197
  r,
217
198
  {
218
199
  as: "modal",
219
- modalPayload: {
220
- heading: {
221
- title: [
222
- {
223
- _type: "block",
224
- _key: "a",
225
- children: [
226
- { _type: "span", _key: "b", text: "Test", marks: [] }
227
- ],
228
- markDefs: [],
229
- style: "normal"
230
- }
231
- ]
232
- }
233
- },
200
+ modalPayload: { formReference: { _id: "form-disabled" } },
234
201
  variant: "primary",
235
202
  disabled: !0,
236
203
  children: "Disabled"
237
204
  }
238
205
  )
239
- ), c.click(l.getByRole("button")), e(m).not.toHaveBeenCalled();
206
+ ), c.click(i.getByRole("button")), e(m).not.toHaveBeenCalled();
240
207
  });
241
- }), i("Variants", () => {
208
+ }), l("Variants", () => {
242
209
  [
243
210
  "primary",
244
211
  "primaryInverted",
@@ -251,41 +218,41 @@ i("Button", () => {
251
218
  "blurred",
252
219
  "blurredInverted"
253
220
  ].forEach((s) => {
254
- n(`applies ${s} variant class`, () => {
255
- o(/* @__PURE__ */ a(r, { variant: s, children: "Button" })), e(l.getByRole("button")).toHaveClass(s);
221
+ a(`applies ${s} variant class`, () => {
222
+ n(/* @__PURE__ */ o(r, { variant: s, children: "Button" })), e(i.getByRole("button")).toHaveClass(s);
256
223
  });
257
- }), n("uses primary variant by default", () => {
258
- o(/* @__PURE__ */ a(r, { children: "Default" })), e(l.getByRole("button")).toHaveClass("primary");
224
+ }), a("uses primary variant by default", () => {
225
+ n(/* @__PURE__ */ o(r, { children: "Default" })), e(i.getByRole("button")).toHaveClass("primary");
259
226
  });
260
- }), i("Icons", () => {
261
- n("includes icon when icon prop is provided", () => {
262
- o(
263
- /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-right", children: "Next" })
227
+ }), l("Icons", () => {
228
+ a("includes icon when icon prop is provided", () => {
229
+ n(
230
+ /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-right", children: "Next" })
264
231
  ), e(document.querySelector(".icon")).toBeInTheDocument(), e(document.querySelector(".icon svg")).toBeInTheDocument();
265
- }), n("places icon on the left when iconAlignment is 'left'", () => {
266
- o(
267
- /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-left", iconAlignment: "left", children: "Back" })
232
+ }), a("places icon on the left when iconAlignment is 'left'", () => {
233
+ n(
234
+ /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-left", iconAlignment: "left", children: "Back" })
268
235
  ), e(document.querySelector(".content")).toHaveClass("iconLeft");
269
- }), n("places icon on the right when iconAlignment is 'right'", () => {
270
- o(
271
- /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-right", iconAlignment: "right", children: "Next" })
236
+ }), a("places icon on the right when iconAlignment is 'right'", () => {
237
+ n(
238
+ /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-right", iconAlignment: "right", children: "Next" })
272
239
  ), e(document.querySelector(".content")).toHaveClass("iconRight");
273
- }), n("uses right alignment by default", () => {
274
- o(
275
- /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-right", children: "Default Icon" })
240
+ }), a("uses right alignment by default", () => {
241
+ n(
242
+ /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-right", children: "Default Icon" })
276
243
  ), e(document.querySelector(".content")).toHaveClass("iconRight");
277
- }), n("icon has aria-hidden attribute", () => {
278
- o(
279
- /* @__PURE__ */ a(r, { variant: "primary", icon: "settings", children: "Settings" })
244
+ }), a("icon has aria-hidden attribute", () => {
245
+ n(
246
+ /* @__PURE__ */ o(r, { variant: "primary", icon: "settings", children: "Settings" })
280
247
  ), e(document.querySelector(".icon")).toHaveAttribute(
281
248
  "aria-hidden",
282
249
  "true"
283
250
  );
284
251
  });
285
- }), i("Image display", () => {
286
- n("renders image when displayType is 'image' and imageSrc is provided", () => {
287
- o(
288
- /* @__PURE__ */ a(
252
+ }), l("Image display", () => {
253
+ a("renders image when displayType is 'image' and imageSrc is provided", () => {
254
+ n(
255
+ /* @__PURE__ */ o(
289
256
  r,
290
257
  {
291
258
  variant: "primary",
@@ -298,43 +265,43 @@ i("Button", () => {
298
265
  );
299
266
  const t = document.querySelector("img");
300
267
  e(t).toHaveAttribute("src", "/logo.png"), e(t).toHaveAttribute("alt", "Company Logo");
301
- }), n("renders ImageComponent when provided", () => {
302
- o(
303
- /* @__PURE__ */ a(
268
+ }), a("renders ImageComponent when provided", () => {
269
+ n(
270
+ /* @__PURE__ */ o(
304
271
  r,
305
272
  {
306
273
  variant: "primary",
307
274
  displayType: "image",
308
- ImageComponent: /* @__PURE__ */ a(() => /* @__PURE__ */ a("div", { "data-testid": "custom-image", children: "Custom" }), {}),
275
+ ImageComponent: /* @__PURE__ */ o(() => /* @__PURE__ */ o("div", { "data-testid": "custom-image", children: "Custom" }), {}),
309
276
  children: "Text"
310
277
  }
311
278
  )
312
- ), e(l.getByTestId("custom-image")).toBeInTheDocument();
313
- }), n("applies image class when displayType is image", () => {
314
- o(
315
- /* @__PURE__ */ a(r, { variant: "primary", displayType: "image", imageSrc: "/logo.png", children: "Text" })
279
+ ), e(i.getByTestId("custom-image")).toBeInTheDocument();
280
+ }), a("applies image class when displayType is image", () => {
281
+ n(
282
+ /* @__PURE__ */ o(r, { variant: "primary", displayType: "image", imageSrc: "/logo.png", children: "Text" })
316
283
  );
317
- const t = l.getByRole("button");
284
+ const t = i.getByRole("button");
318
285
  e(t).toHaveClass("image"), e(t).not.toHaveClass("primary");
319
286
  });
320
- }), i("Custom className", () => {
321
- n("applies custom className", () => {
322
- o(
323
- /* @__PURE__ */ a(r, { variant: "primary", className: "custom-button", children: "Custom" })
287
+ }), l("Custom className", () => {
288
+ a("applies custom className", () => {
289
+ n(
290
+ /* @__PURE__ */ o(r, { variant: "primary", className: "custom-button", children: "Custom" })
324
291
  );
325
- const t = l.getByRole("button");
292
+ const t = i.getByRole("button");
326
293
  e(t).toHaveClass("custom-button", "button", "primary");
327
294
  });
328
- }), i("Accessibility", () => {
329
- n("has button role for button element", () => {
330
- o(/* @__PURE__ */ a(r, { variant: "primary", children: "Click" })), e(l.getByRole("button")).toBeInTheDocument();
331
- }), n("has link role for anchor element", () => {
332
- o(
333
- /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", children: "Link" })
334
- ), e(l.getByRole("link")).toBeInTheDocument();
335
- }), n("supports aria attributes", () => {
336
- o(
337
- /* @__PURE__ */ a(
295
+ }), l("Accessibility", () => {
296
+ a("has button role for button element", () => {
297
+ n(/* @__PURE__ */ o(r, { variant: "primary", children: "Click" })), e(i.getByRole("button")).toBeInTheDocument();
298
+ }), a("has link role for anchor element", () => {
299
+ n(
300
+ /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", children: "Link" })
301
+ ), e(i.getByRole("link")).toBeInTheDocument();
302
+ }), a("supports aria attributes", () => {
303
+ n(
304
+ /* @__PURE__ */ o(
338
305
  r,
339
306
  {
340
307
  variant: "primary",
@@ -344,19 +311,19 @@ i("Button", () => {
344
311
  }
345
312
  )
346
313
  );
347
- const t = l.getByRole("button");
314
+ const t = i.getByRole("button");
348
315
  e(t).toHaveAttribute("aria-label", "Custom Label"), e(t).toHaveAttribute("aria-describedby", "desc");
349
316
  });
350
- }), i("Edge cases", () => {
351
- n("handles undefined variant", () => {
352
- o(/* @__PURE__ */ a(r, { variant: void 0, children: "No Variant" })), e(l.getByRole("button")).toHaveClass("button");
353
- }), n("handles complex children", () => {
354
- o(
317
+ }), l("Edge cases", () => {
318
+ a("handles undefined variant", () => {
319
+ n(/* @__PURE__ */ o(r, { variant: void 0, children: "No Variant" })), e(i.getByRole("button")).toHaveClass("button");
320
+ }), a("handles complex children", () => {
321
+ n(
355
322
  /* @__PURE__ */ u(r, { variant: "primary", children: [
356
- /* @__PURE__ */ a("span", { children: "Complex" }),
357
- /* @__PURE__ */ a("strong", { children: "Children" })
323
+ /* @__PURE__ */ o("span", { children: "Complex" }),
324
+ /* @__PURE__ */ o("strong", { children: "Children" })
358
325
  ] })
359
- ), e(l.getByText("Complex")).toBeInTheDocument(), e(l.getByText("Children")).toBeInTheDocument();
326
+ ), e(i.getByText("Complex")).toBeInTheDocument(), e(i.getByText("Children")).toBeInTheDocument();
360
327
  });
361
328
  });
362
329
  });
@@ -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()}));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:{title:[{_type:"block",_key:"cua",children:[{_type:"span",_key:"cub",text:"Contact Us",marks:[]}],markDefs:[],style:"normal"}]}}}];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:{title:[{_type:"block",_key:"cua",children:[{_type:"span",_key:"cub",text:"Contact Us",marks:[]}],markDefs:[],style:"normal"}]},formReference:{_id:"form-1",heading:{title:[{_type:"block",_key:"coa",children:[{_type:"span",_key:"cob",text:"Contact",marks:[]}],markDefs:[],style:"normal"}]}}},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:{title:[{_type:"block",_key:"coa",children:[{_type:"span",_key:"cob",text:"Contact",marks:[]}],markDefs:[],style:"normal"}]}}}];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
+ "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:{formReference:{_id:"form-contact",heading:{title:[{_type:"block",_key:"cua",children:[{_type:"span",_key:"cub",text:"Contact Us",marks:[]}],markDefs:[],style:"normal"}]}}}}];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={formReference:{_id:"form-1",heading:{title:[{_type:"block",_key:"coa",children:[{_type:"span",_key:"cob",text:"Contact",marks:[]}],markDefs:[],style:"normal"}]}}},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:{formReference:{_id:"form-contact-2",heading:{title:[{_type:"block",_key:"coa",children:[{_type:"span",_key:"cob",text:"Contact",marks:[]}],markDefs:[],style:"normal"}]}}}}];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))})})});
@@ -219,23 +219,26 @@ c("Navbar", () => {
219
219
  ariaLabel: "Contact Us",
220
220
  variant: "primary",
221
221
  modalPayload: {
222
- heading: {
223
- title: [
224
- {
225
- _type: "block",
226
- _key: "cua",
227
- children: [
228
- {
229
- _type: "span",
230
- _key: "cub",
231
- text: "Contact Us",
232
- marks: []
233
- }
234
- ],
235
- markDefs: [],
236
- style: "normal"
237
- }
238
- ]
222
+ formReference: {
223
+ _id: "form-contact",
224
+ heading: {
225
+ title: [
226
+ {
227
+ _type: "block",
228
+ _key: "cua",
229
+ children: [
230
+ {
231
+ _type: "span",
232
+ _key: "cub",
233
+ text: "Contact Us",
234
+ marks: []
235
+ }
236
+ ],
237
+ markDefs: [],
238
+ style: "normal"
239
+ }
240
+ ]
241
+ }
239
242
  }
240
243
  }
241
244
  }
@@ -245,19 +248,6 @@ c("Navbar", () => {
245
248
  }), a("calls useModal open with correct payload when modal utility item is clicked", () => {
246
249
  v.mockClear();
247
250
  const r = {
248
- heading: {
249
- title: [
250
- {
251
- _type: "block",
252
- _key: "cua",
253
- children: [
254
- { _type: "span", _key: "cub", text: "Contact Us", marks: [] }
255
- ],
256
- markDefs: [],
257
- style: "normal"
258
- }
259
- ]
260
- },
261
251
  formReference: {
262
252
  _id: "form-1",
263
253
  heading: {
@@ -301,18 +291,26 @@ c("Navbar", () => {
301
291
  ariaLabel: "Contact Us",
302
292
  variant: "primary",
303
293
  modalPayload: {
304
- heading: {
305
- title: [
306
- {
307
- _type: "block",
308
- _key: "coa",
309
- children: [
310
- { _type: "span", _key: "cob", text: "Contact", marks: [] }
311
- ],
312
- markDefs: [],
313
- style: "normal"
314
- }
315
- ]
294
+ formReference: {
295
+ _id: "form-contact-2",
296
+ heading: {
297
+ title: [
298
+ {
299
+ _type: "block",
300
+ _key: "coa",
301
+ children: [
302
+ {
303
+ _type: "span",
304
+ _key: "cob",
305
+ text: "Contact",
306
+ marks: []
307
+ }
308
+ ],
309
+ markDefs: [],
310
+ style: "normal"
311
+ }
312
+ ]
313
+ }
316
314
  }
317
315
  }
318
316
  }
package/dist/core.d.ts CHANGED
@@ -1002,13 +1002,6 @@ declare type ModalForm = {
1002
1002
  };
1003
1003
 
1004
1004
  declare type ModalPayload = {
1005
- /** Optional heading shown at the top of the modal */
1006
- /** heading object matching FormBlock's heading prop shape */
1007
- heading?: {
1008
- eyebrow?: unknown[];
1009
- title?: unknown[];
1010
- description?: unknown[];
1011
- };
1012
1005
  /** Optional rich text — renders above the form as a description/intro */
1013
1006
  modalContent?: PortableTextBlock[];
1014
1007
  /** Optional form document — renders a FormBlock inside the modal */
package/dist/main.d.ts CHANGED
@@ -1251,13 +1251,6 @@ declare type ModalForm = {
1251
1251
  };
1252
1252
 
1253
1253
  declare type ModalPayload = {
1254
- /** Optional heading shown at the top of the modal */
1255
- /** heading object matching FormBlock's heading prop shape */
1256
- heading?: {
1257
- eyebrow?: unknown[];
1258
- title?: unknown[];
1259
- description?: unknown[];
1260
- };
1261
1254
  /** Optional rich text — renders above the form as a description/intro */
1262
1255
  modalContent?: PortableTextBlock[];
1263
1256
  /** Optional form document — renders a FormBlock inside the modal */
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),U=require("react"),B=require("next/image"),G=require("../../../core/components/ButtonGroup/index.cjs"),l=require("../../../index-0SVQqhAg.cjs"),H=require("../../../core/components/Modal/index.cjs"),C=require("../../utils/resolveLinkUrl.cjs"),Q=require("../../../core/context/ThemeContext.cjs"),W=require("../../hooks/useMediaQuery.cjs");function E({items:r,alignment:I,spacing:M,mobileOrientation:O="column",className:P}){const[S,$]=U.useState([]),{mode:t}=Q.useTheme(),g=W.useMediaQuery("(max-width: 767px)");return U.useEffect(()=>{if(!(r!=null&&r.length)||!C.resolveLinkURL)return;async function e(){const o=await Promise.all(r.map(a=>C.resolveLinkURL(a)));$(o)}e()},[r]),r!=null&&r.length?n.jsx(G.ButtonGroup,{className:P,alignment:I,spacing:M,mobileOrientation:O,children:r.slice(0,3).map((e,o)=>{var u,d,p,c,f,h,b,y,v,x,_,k,j,T,A,w,q,L,R;const a=S[o]??"#",i={};if(i.height="auto",((u=e.image)==null?void 0:u.layout)==="cover")i.objectFit="cover",(d=e.image)!=null&&d.position&&(i.objectPosition=g?"top":(p=e.image)==null?void 0:p.position);else if(((c=e.image)==null?void 0:c.layout)==="contain"){if(i.objectFit="contain",((f=e.image)==null?void 0:f.sizing)==="half"?i.width=g?"100%":"50%":((h=e.image)==null?void 0:h.sizing)==="inset"?(i.width="100%",i.maxWidth=e.image.maxWidth??"unset"):i.width="100%",(b=e.image)!=null&&b.aspectRatio){const[F,z]=(y=e.image)==null?void 0:y.aspectRatio.split(":").map(Number);i.aspectRatio=`${F}/${z}`}}else i.objectFit="none";let s;(v=e.image)!=null&&v.imageUrls&&(s=t==="dark"&&((x=e.image.imageUrls.dark)==null?void 0:x.medium)||e.image.imageUrls.default.medium);let m=((j=(k=(_=e.image)==null?void 0:_[t==="dark"?"darkImage":"defaultImage"])==null?void 0:k.asset)==null?void 0:j.altText)||((w=(A=(T=e.image)==null?void 0:T[t==="dark"?"darkImage":"defaultImage"])==null?void 0:A.asset)==null?void 0:w.description)||"Card image";switch(e.type){case"link":return n.jsx(l.Button,{as:"a",variant:e.variant,href:a,target:((q=e.linkOptions)==null?void 0:q.linkType)==="external"?"_blank":"_self",rel:((L=e.linkOptions)==null?void 0:L.linkType)==="external"?"noopener noreferrer":"","aria-label":e.ariaLabel||e.label,icon:e.icon,iconAlignment:e.iconAlignment??"right",displayType:e.displayType,ImageComponent:n.jsx(B,{src:s??"",alt:m,width:600,height:658,priority:!1,style:i}),children:e.label},o);case"scroll":return n.jsx(l.Button,{as:"scroll",variant:e.variant,scrollTarget:e.scrollTarget??"","aria-label":e.ariaLabel||e.label,icon:e.icon,iconAlignment:e.iconAlignment??"right",displayType:e.displayType,scrollOffset:e.scrollOffset,ImageComponent:n.jsx(B,{src:s??"",alt:m,width:600,height:658,priority:!1,style:i}),children:e.label},o);case"modal":return n.jsx(l.Button,{as:"modal",variant:e.variant??"primary",icon:e.icon,iconAlignment:e.iconAlignment??"right","aria-label":e.ariaLabel||e.label,modalPayload:{heading:(R=e.formReference)==null?void 0:R.heading,formReference:e.formReference,modalContent:e.modalContent},children:e.label??"Open"},o);case"video":return n.jsx(H.Modal,{trigger:n.jsx(l.Button,{as:"button",variant:e.variant??"primary",icon:e.icon,iconAlignment:e.iconAlignment??"right","aria-label":e.ariaLabel||e.label,children:e.label}),content:n.jsx("video",{src:e.videoUrl,controls:!0,autoPlay:!0})},o);case"download":return n.jsx(l.Button,{as:"a",variant:e.variant??"primary",href:a,download:!0,target:"_blank",rel:"noopener noreferrer","aria-label":e.ariaLabel||e.label,icon:e.icon,iconAlignment:e.iconAlignment??"right",children:e.label},o)}})}):null}exports.CallToAction=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),U=require("react"),B=require("next/image"),z=require("../../../core/components/ButtonGroup/index.cjs"),l=require("../../../index-0SVQqhAg.cjs"),G=require("../../../core/components/Modal/index.cjs"),C=require("../../utils/resolveLinkUrl.cjs"),H=require("../../../core/context/ThemeContext.cjs"),Q=require("../../hooks/useMediaQuery.cjs");function W({items:r,alignment:I,spacing:R,mobileOrientation:M="column",className:O}){const[P,S]=U.useState([]),{mode:t}=H.useTheme(),m=Q.useMediaQuery("(max-width: 767px)");return U.useEffect(()=>{if(!(r!=null&&r.length)||!C.resolveLinkURL)return;async function e(){const o=await Promise.all(r.map(a=>C.resolveLinkURL(a)));S(o)}e()},[r]),r!=null&&r.length?n.jsx(z.ButtonGroup,{className:O,alignment:I,spacing:R,mobileOrientation:M,children:r.slice(0,3).map((e,o)=>{var g,d,p,c,f,h,b,y,v,x,_,k,j,T,A,w,q,L;const a=P[o]??"#",i={};if(i.height="auto",((g=e.image)==null?void 0:g.layout)==="cover")i.objectFit="cover",(d=e.image)!=null&&d.position&&(i.objectPosition=m?"top":(p=e.image)==null?void 0:p.position);else if(((c=e.image)==null?void 0:c.layout)==="contain"){if(i.objectFit="contain",((f=e.image)==null?void 0:f.sizing)==="half"?i.width=m?"100%":"50%":((h=e.image)==null?void 0:h.sizing)==="inset"?(i.width="100%",i.maxWidth=e.image.maxWidth??"unset"):i.width="100%",(b=e.image)!=null&&b.aspectRatio){const[$,F]=(y=e.image)==null?void 0:y.aspectRatio.split(":").map(Number);i.aspectRatio=`${$}/${F}`}}else i.objectFit="none";let s;(v=e.image)!=null&&v.imageUrls&&(s=t==="dark"&&((x=e.image.imageUrls.dark)==null?void 0:x.medium)||e.image.imageUrls.default.medium);let u=((j=(k=(_=e.image)==null?void 0:_[t==="dark"?"darkImage":"defaultImage"])==null?void 0:k.asset)==null?void 0:j.altText)||((w=(A=(T=e.image)==null?void 0:T[t==="dark"?"darkImage":"defaultImage"])==null?void 0:A.asset)==null?void 0:w.description)||"Card image";switch(e.type){case"link":return n.jsx(l.Button,{as:"a",variant:e.variant,href:a,target:((q=e.linkOptions)==null?void 0:q.linkType)==="external"?"_blank":"_self",rel:((L=e.linkOptions)==null?void 0:L.linkType)==="external"?"noopener noreferrer":"","aria-label":e.ariaLabel||e.label,icon:e.icon,iconAlignment:e.iconAlignment??"right",displayType:e.displayType,ImageComponent:n.jsx(B,{src:s??"",alt:u,width:600,height:658,priority:!1,style:i}),children:e.label},o);case"scroll":return n.jsx(l.Button,{as:"scroll",variant:e.variant,scrollTarget:e.scrollTarget??"","aria-label":e.ariaLabel||e.label,icon:e.icon,iconAlignment:e.iconAlignment??"right",displayType:e.displayType,scrollOffset:e.scrollOffset,ImageComponent:n.jsx(B,{src:s??"",alt:u,width:600,height:658,priority:!1,style:i}),children:e.label},o);case"modal":return n.jsx(l.Button,{as:"modal",variant:e.variant??"primary",icon:e.icon,iconAlignment:e.iconAlignment??"right","aria-label":e.ariaLabel||e.label,modalPayload:{formReference:e.formReference,modalContent:e.modalContent},children:e.label??"Open"},o);case"video":return n.jsx(G.Modal,{trigger:n.jsx(l.Button,{as:"button",variant:e.variant??"primary",icon:e.icon,iconAlignment:e.iconAlignment??"right","aria-label":e.ariaLabel||e.label,children:e.label}),content:n.jsx("video",{src:e.videoUrl,controls:!0,autoPlay:!0})},o);case"download":return n.jsx(l.Button,{as:"a",variant:e.variant??"primary",href:a,download:!0,target:"_blank",rel:"noopener noreferrer","aria-label":e.ariaLabel||e.label,icon:e.icon,iconAlignment:e.iconAlignment??"right",children:e.label},o)}})}):null}exports.CallToAction=W;
@@ -1,51 +1,51 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { useState as W, useEffect as $ } from "react";
3
- import x from "next/image";
4
- import { ButtonGroup as E } from "../../../core/components/ButtonGroup/index.mjs";
2
+ import { useState as S, useEffect as W } from "react";
3
+ import j from "next/image";
4
+ import { ButtonGroup as $ } from "../../../core/components/ButtonGroup/index.mjs";
5
5
  import { B as o } from "../../../index-aWdsapYP.js";
6
- import { Modal as G } from "../../../core/components/Modal/index.mjs";
7
- import { resolveLinkURL as O } from "../../utils/resolveLinkUrl.mjs";
8
- import { useTheme as N } from "../../../core/context/ThemeContext.mjs";
9
- import { useMediaQuery as Q } from "../../hooks/useMediaQuery.mjs";
10
- function ie({
6
+ import { Modal as E } from "../../../core/components/Modal/index.mjs";
7
+ import { resolveLinkURL as x } from "../../utils/resolveLinkUrl.mjs";
8
+ import { useTheme as G } from "../../../core/context/ThemeContext.mjs";
9
+ import { useMediaQuery as N } from "../../hooks/useMediaQuery.mjs";
10
+ function ee({
11
11
  items: l,
12
- alignment: P,
13
- spacing: B,
14
- mobileOrientation: F = "column",
15
- className: M
12
+ alignment: O,
13
+ spacing: P,
14
+ mobileOrientation: B = "column",
15
+ className: F
16
16
  }) {
17
- const [_, z] = W([]), { mode: t } = N(), s = Q("(max-width: 767px)");
18
- return $(() => {
19
- if (!(l != null && l.length) || !O) return;
17
+ const [M, _] = S([]), { mode: t } = G(), s = N("(max-width: 767px)");
18
+ return W(() => {
19
+ if (!(l != null && l.length) || !x) return;
20
20
  async function e() {
21
21
  const n = await Promise.all(
22
- l.map((a) => O(a))
22
+ l.map((a) => x(a))
23
23
  );
24
- z(n);
24
+ _(n);
25
25
  }
26
26
  e();
27
27
  }, [l]), l != null && l.length ? /* @__PURE__ */ r(
28
- E,
28
+ $,
29
29
  {
30
- className: M,
31
- alignment: P,
32
- spacing: B,
33
- mobileOrientation: F,
30
+ className: F,
31
+ alignment: O,
32
+ spacing: P,
33
+ mobileOrientation: B,
34
34
  children: l.slice(0, 3).map((e, n) => {
35
- var d, f, p, u, h, b, y, c, v, k, A, T, w, I, L, R, U, C, j;
36
- const a = _[n] ?? "#", i = {};
37
- if (i.height = "auto", ((d = e.image) == null ? void 0 : d.layout) === "cover")
38
- i.objectFit = "cover", (f = e.image) != null && f.position && (i.objectPosition = s ? "top" : (p = e.image) == null ? void 0 : p.position);
35
+ var p, d, f, u, h, b, y, c, v, k, A, T, w, I, L, U, C, R;
36
+ const a = M[n] ?? "#", i = {};
37
+ if (i.height = "auto", ((p = e.image) == null ? void 0 : p.layout) === "cover")
38
+ i.objectFit = "cover", (d = e.image) != null && d.position && (i.objectPosition = s ? "top" : (f = e.image) == null ? void 0 : f.position);
39
39
  else if (((u = e.image) == null ? void 0 : u.layout) === "contain") {
40
40
  if (i.objectFit = "contain", ((h = e.image) == null ? void 0 : h.sizing) === "half" ? i.width = s ? "100%" : "50%" : ((b = e.image) == null ? void 0 : b.sizing) === "inset" ? (i.width = "100%", i.maxWidth = e.image.maxWidth ?? "unset") : i.width = "100%", (y = e.image) != null && y.aspectRatio) {
41
- const [H, S] = (c = e.image) == null ? void 0 : c.aspectRatio.split(":").map(Number);
42
- i.aspectRatio = `${H}/${S}`;
41
+ const [z, H] = (c = e.image) == null ? void 0 : c.aspectRatio.split(":").map(Number);
42
+ i.aspectRatio = `${z}/${H}`;
43
43
  }
44
44
  } else
45
45
  i.objectFit = "none";
46
46
  let m;
47
47
  (v = e.image) != null && v.imageUrls && (m = t === "dark" && ((k = e.image.imageUrls.dark) == null ? void 0 : k.medium) || e.image.imageUrls.default.medium);
48
- let g = ((w = (T = (A = e.image) == null ? void 0 : A[t === "dark" ? "darkImage" : "defaultImage"]) == null ? void 0 : T.asset) == null ? void 0 : w.altText) || ((R = (L = (I = e.image) == null ? void 0 : I[t === "dark" ? "darkImage" : "defaultImage"]) == null ? void 0 : L.asset) == null ? void 0 : R.description) || "Card image";
48
+ let g = ((w = (T = (A = e.image) == null ? void 0 : A[t === "dark" ? "darkImage" : "defaultImage"]) == null ? void 0 : T.asset) == null ? void 0 : w.altText) || ((U = (L = (I = e.image) == null ? void 0 : I[t === "dark" ? "darkImage" : "defaultImage"]) == null ? void 0 : L.asset) == null ? void 0 : U.description) || "Card image";
49
49
  switch (e.type) {
50
50
  case "link":
51
51
  return /* @__PURE__ */ r(
@@ -54,14 +54,14 @@ function ie({
54
54
  as: "a",
55
55
  variant: e.variant,
56
56
  href: a,
57
- target: ((U = e.linkOptions) == null ? void 0 : U.linkType) === "external" ? "_blank" : "_self",
58
- rel: ((C = e.linkOptions) == null ? void 0 : C.linkType) === "external" ? "noopener noreferrer" : "",
57
+ target: ((C = e.linkOptions) == null ? void 0 : C.linkType) === "external" ? "_blank" : "_self",
58
+ rel: ((R = e.linkOptions) == null ? void 0 : R.linkType) === "external" ? "noopener noreferrer" : "",
59
59
  "aria-label": e.ariaLabel || e.label,
60
60
  icon: e.icon,
61
61
  iconAlignment: e.iconAlignment ?? "right",
62
62
  displayType: e.displayType,
63
63
  ImageComponent: /* @__PURE__ */ r(
64
- x,
64
+ j,
65
65
  {
66
66
  src: m ?? "",
67
67
  alt: g,
@@ -88,7 +88,7 @@ function ie({
88
88
  displayType: e.displayType,
89
89
  scrollOffset: e.scrollOffset,
90
90
  ImageComponent: /* @__PURE__ */ r(
91
- x,
91
+ j,
92
92
  {
93
93
  src: m ?? "",
94
94
  alt: g,
@@ -112,7 +112,6 @@ function ie({
112
112
  iconAlignment: e.iconAlignment ?? "right",
113
113
  "aria-label": e.ariaLabel || e.label,
114
114
  modalPayload: {
115
- heading: (j = e.formReference) == null ? void 0 : j.heading,
116
115
  formReference: e.formReference,
117
116
  modalContent: e.modalContent
118
117
  },
@@ -122,7 +121,7 @@ function ie({
122
121
  );
123
122
  case "video":
124
123
  return /* @__PURE__ */ r(
125
- G,
124
+ E,
126
125
  {
127
126
  trigger: /* @__PURE__ */ r(
128
127
  o,
@@ -162,5 +161,5 @@ function ie({
162
161
  ) : null;
163
162
  }
164
163
  export {
165
- ie as CallToAction
164
+ ee as CallToAction
166
165
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quirk-ui",
3
3
  "private": false,
4
- "version": "0.1.175",
4
+ "version": "0.1.176",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {