quirk-ui 0.1.158 → 0.1.160

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:"Contact Us"},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:"Contact Us",formReference:{_id:"form-123",heading:"Contact"}};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:"Test"},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:"Test"},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:{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,85 +1,85 @@
1
- import { jsx as o, jsxs as u } from "react/jsx-runtime";
2
- import { v as d, d as l, i as n, r as a, s as i, g as e, f as c } from "../../../react.esm-DjxyacK8.js";
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";
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
- l("Button", () => {
10
- l("Rendering as button", () => {
9
+ i("Button", () => {
10
+ i("Rendering as button", () => {
11
11
  n("renders as a button by default", () => {
12
- a(/* @__PURE__ */ o(r, { variant: "primary", children: "Click Me" }));
13
- const t = i.getByRole("button", { name: "Click Me" });
12
+ o(/* @__PURE__ */ a(r, { variant: "primary", children: "Click Me" }));
13
+ const t = l.getByRole("button", { name: "Click Me" });
14
14
  e(t).toBeInTheDocument(), e(t.tagName).toBe("BUTTON");
15
15
  }), n("renders as a button when 'as' is set to 'button'", () => {
16
- a(
17
- /* @__PURE__ */ o(r, { as: "button", variant: "primary", children: "Click Me" })
16
+ o(
17
+ /* @__PURE__ */ a(r, { as: "button", variant: "primary", children: "Click Me" })
18
18
  );
19
- const t = i.getByRole("button", { name: "Click Me" });
19
+ const t = l.getByRole("button", { name: "Click Me" });
20
20
  e(t).toBeInTheDocument(), e(t).toHaveClass("button", "primary");
21
21
  }), n("has type='button' by default", () => {
22
- a(/* @__PURE__ */ o(r, { variant: "primary", children: "Click Me" }));
23
- const t = i.getByRole("button");
22
+ o(/* @__PURE__ */ a(r, { variant: "primary", children: "Click Me" }));
23
+ const t = l.getByRole("button");
24
24
  e(t).toHaveAttribute("type", "button");
25
25
  }), n("respects the disabled prop on buttons", () => {
26
- a(
27
- /* @__PURE__ */ o(r, { as: "button", variant: "primary", disabled: !0, children: "Disabled" })
26
+ o(
27
+ /* @__PURE__ */ a(r, { as: "button", variant: "primary", disabled: !0, children: "Disabled" })
28
28
  );
29
- const t = i.getByRole("button", { name: "Disabled" });
29
+ const t = l.getByRole("button", { name: "Disabled" });
30
30
  e(t).toBeDisabled();
31
31
  }), n("calls onClick when clicked", () => {
32
32
  const t = d.fn();
33
- a(
34
- /* @__PURE__ */ o(r, { variant: "primary", onClick: t, children: "Click Me" })
35
- ), c.click(i.getByRole("button")), e(t).toHaveBeenCalledTimes(1);
33
+ o(
34
+ /* @__PURE__ */ a(r, { variant: "primary", onClick: t, children: "Click Me" })
35
+ ), c.click(l.getByRole("button")), e(t).toHaveBeenCalledTimes(1);
36
36
  }), n("does not call onClick when disabled", () => {
37
37
  const t = d.fn();
38
- a(
39
- /* @__PURE__ */ o(r, { variant: "primary", onClick: t, disabled: !0, children: "Disabled" })
40
- ), c.click(i.getByRole("button")), e(t).not.toHaveBeenCalled();
38
+ o(
39
+ /* @__PURE__ */ a(r, { variant: "primary", onClick: t, disabled: !0, children: "Disabled" })
40
+ ), c.click(l.getByRole("button")), e(t).not.toHaveBeenCalled();
41
41
  });
42
- }), l("Rendering as anchor", () => {
42
+ }), i("Rendering as anchor", () => {
43
43
  n("renders as an anchor when 'as' is set to 'a'", () => {
44
- a(
45
- /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", children: "Click Me" })
44
+ o(
45
+ /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", children: "Click Me" })
46
46
  );
47
- const t = i.getByRole("link", { name: "Click Me" });
47
+ const t = l.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
49
  }), n("adds rel='noopener noreferrer' when target is '_blank'", () => {
50
- a(
51
- /* @__PURE__ */ o(r, { as: "a", href: "/test", target: "_blank", variant: "link", children: "External" })
52
- ), e(i.getByRole("link", { name: "External" })).toHaveAttribute(
50
+ o(
51
+ /* @__PURE__ */ a(r, { as: "a", href: "/test", target: "_blank", variant: "link", children: "External" })
52
+ ), e(l.getByRole("link", { name: "External" })).toHaveAttribute(
53
53
  "rel",
54
54
  "noopener noreferrer"
55
55
  );
56
56
  }), n("preserves custom rel attribute and adds security", () => {
57
- a(
58
- /* @__PURE__ */ o(r, { as: "a", href: "/test", target: "_blank", rel: "author", variant: "link", children: "External" })
59
- ), e(i.getByRole("link")).toHaveAttribute(
57
+ o(
58
+ /* @__PURE__ */ a(r, { as: "a", href: "/test", target: "_blank", rel: "author", variant: "link", children: "External" })
59
+ ), e(l.getByRole("link")).toHaveAttribute(
60
60
  "rel",
61
61
  "author noopener noreferrer"
62
62
  );
63
63
  }), n("does not add security rel for internal links", () => {
64
- a(
65
- /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", children: "Internal" })
66
- ), e(i.getByRole("link")).not.toHaveAttribute("rel");
64
+ o(
65
+ /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", children: "Internal" })
66
+ ), e(l.getByRole("link")).not.toHaveAttribute("rel");
67
67
  }), n("adds aria-disabled when disabled", () => {
68
- a(
69
- /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", disabled: !0, children: "Disabled Link" })
70
- ), e(i.getByRole("link")).toHaveAttribute("aria-disabled", "true");
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");
71
71
  });
72
- }), l("Scroll button", () => {
72
+ }), i("Scroll button", () => {
73
73
  n("renders as a scroll button when 'as' is set to 'scroll'", () => {
74
- a(
75
- /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "section-1", variant: "primary", children: "Scroll Down" })
74
+ o(
75
+ /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "section-1", variant: "primary", children: "Scroll Down" })
76
76
  ), e(
77
- i.getByRole("button", { name: "Scroll to section-1" })
77
+ l.getByRole("button", { name: "Scroll to section-1" })
78
78
  ).toBeInTheDocument();
79
79
  }), n("has proper aria-label for scroll button", () => {
80
- a(
81
- /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "footer", variant: "primary", children: "To Footer" })
82
- ), e(i.getByRole("button")).toHaveAttribute(
80
+ o(
81
+ /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "footer", variant: "primary", children: "To Footer" })
82
+ ), e(l.getByRole("button")).toHaveAttribute(
83
83
  "aria-label",
84
84
  "Scroll to footer"
85
85
  );
@@ -87,9 +87,9 @@ l("Button", () => {
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, a(
91
- /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "target-section", variant: "primary", children: "Scroll" })
92
- ), c.click(i.getByRole("button")), e(s).toHaveBeenCalledWith({
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({
93
93
  behavior: "smooth",
94
94
  block: "start"
95
95
  }), document.body.removeChild(t);
@@ -99,8 +99,8 @@ l("Button", () => {
99
99
  const s = d.fn();
100
100
  window.scrollTo = s, d.spyOn(t, "getBoundingClientRect").mockReturnValue({
101
101
  top: 200
102
- }), a(
103
- /* @__PURE__ */ o(
102
+ }), o(
103
+ /* @__PURE__ */ a(
104
104
  r,
105
105
  {
106
106
  as: "scroll",
@@ -110,66 +110,135 @@ l("Button", () => {
110
110
  children: "Scroll"
111
111
  }
112
112
  )
113
- ), c.click(i.getByRole("button")), e(s).toHaveBeenCalledWith({
113
+ ), c.click(l.getByRole("button")), e(s).toHaveBeenCalledWith({
114
114
  top: e.any(Number),
115
115
  behavior: "smooth"
116
116
  }), document.body.removeChild(t);
117
117
  }), n("does not error if scroll target does not exist", () => {
118
- a(
119
- /* @__PURE__ */ o(r, { as: "scroll", scrollTarget: "non-existent", variant: "primary", children: "Scroll" })
120
- ), e(() => c.click(i.getByRole("button"))).not.toThrow();
118
+ o(
119
+ /* @__PURE__ */ a(r, { as: "scroll", scrollTarget: "non-existent", variant: "primary", children: "Scroll" })
120
+ ), e(() => c.click(l.getByRole("button"))).not.toThrow();
121
121
  });
122
- }), l("Modal button", () => {
122
+ }), i("Modal button", () => {
123
123
  n("renders as a button when 'as' is set to 'modal'", () => {
124
- a(
125
- /* @__PURE__ */ o(
124
+ o(
125
+ /* @__PURE__ */ a(
126
126
  r,
127
127
  {
128
128
  as: "modal",
129
- modalPayload: { heading: "Contact Us" },
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
+ ]
142
+ }
143
+ },
130
144
  variant: "primary",
131
145
  children: "Open Modal"
132
146
  }
133
147
  )
134
148
  ), e(
135
- i.getByRole("button", { name: "Open Modal" })
149
+ l.getByRole("button", { name: "Open Modal" })
136
150
  ).toBeInTheDocument();
137
151
  }), n("calls useModal open with the payload when clicked", () => {
138
152
  const t = {
139
- heading: "Contact Us",
140
- formReference: { _id: "form-123", heading: "Contact" }
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
+ formReference: {
167
+ _id: "form-123",
168
+ heading: {
169
+ title: [
170
+ {
171
+ _type: "block",
172
+ _key: "c",
173
+ children: [
174
+ { _type: "span", _key: "d", text: "Contact", marks: [] }
175
+ ],
176
+ markDefs: [],
177
+ style: "normal"
178
+ }
179
+ ]
180
+ }
181
+ }
141
182
  };
142
- a(
143
- /* @__PURE__ */ o(r, { as: "modal", modalPayload: t, variant: "primary", children: "Open Form" })
144
- ), c.click(i.getByRole("button", { name: "Open Form" })), e(m).toHaveBeenCalledWith(t);
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);
145
186
  }), n("is disabled when disabled prop is set", () => {
146
- a(
147
- /* @__PURE__ */ o(
187
+ o(
188
+ /* @__PURE__ */ a(
148
189
  r,
149
190
  {
150
191
  as: "modal",
151
- modalPayload: { heading: "Test" },
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
+ },
152
207
  variant: "primary",
153
208
  disabled: !0,
154
209
  children: "Disabled Modal"
155
210
  }
156
211
  )
157
- ), e(i.getByRole("button")).toBeDisabled();
212
+ ), e(l.getByRole("button")).toBeDisabled();
158
213
  }), n("does not call open when disabled", () => {
159
- m.mockClear(), a(
160
- /* @__PURE__ */ o(
214
+ m.mockClear(), o(
215
+ /* @__PURE__ */ a(
161
216
  r,
162
217
  {
163
218
  as: "modal",
164
- modalPayload: { heading: "Test" },
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
+ },
165
234
  variant: "primary",
166
235
  disabled: !0,
167
236
  children: "Disabled"
168
237
  }
169
238
  )
170
- ), c.click(i.getByRole("button")), e(m).not.toHaveBeenCalled();
239
+ ), c.click(l.getByRole("button")), e(m).not.toHaveBeenCalled();
171
240
  });
172
- }), l("Variants", () => {
241
+ }), i("Variants", () => {
173
242
  [
174
243
  "primary",
175
244
  "primaryInverted",
@@ -183,40 +252,40 @@ l("Button", () => {
183
252
  "blurredInverted"
184
253
  ].forEach((s) => {
185
254
  n(`applies ${s} variant class`, () => {
186
- a(/* @__PURE__ */ o(r, { variant: s, children: "Button" })), e(i.getByRole("button")).toHaveClass(s);
255
+ o(/* @__PURE__ */ a(r, { variant: s, children: "Button" })), e(l.getByRole("button")).toHaveClass(s);
187
256
  });
188
257
  }), n("uses primary variant by default", () => {
189
- a(/* @__PURE__ */ o(r, { children: "Default" })), e(i.getByRole("button")).toHaveClass("primary");
258
+ o(/* @__PURE__ */ a(r, { children: "Default" })), e(l.getByRole("button")).toHaveClass("primary");
190
259
  });
191
- }), l("Icons", () => {
260
+ }), i("Icons", () => {
192
261
  n("includes icon when icon prop is provided", () => {
193
- a(
194
- /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-right", children: "Next" })
262
+ o(
263
+ /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-right", children: "Next" })
195
264
  ), e(document.querySelector(".icon")).toBeInTheDocument(), e(document.querySelector(".icon svg")).toBeInTheDocument();
196
265
  }), n("places icon on the left when iconAlignment is 'left'", () => {
197
- a(
198
- /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-left", iconAlignment: "left", children: "Back" })
266
+ o(
267
+ /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-left", iconAlignment: "left", children: "Back" })
199
268
  ), e(document.querySelector(".content")).toHaveClass("iconLeft");
200
269
  }), n("places icon on the right when iconAlignment is 'right'", () => {
201
- a(
202
- /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-right", iconAlignment: "right", children: "Next" })
270
+ o(
271
+ /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-right", iconAlignment: "right", children: "Next" })
203
272
  ), e(document.querySelector(".content")).toHaveClass("iconRight");
204
273
  }), n("uses right alignment by default", () => {
205
- a(
206
- /* @__PURE__ */ o(r, { variant: "primary", icon: "arrow-right", children: "Default Icon" })
274
+ o(
275
+ /* @__PURE__ */ a(r, { variant: "primary", icon: "arrow-right", children: "Default Icon" })
207
276
  ), e(document.querySelector(".content")).toHaveClass("iconRight");
208
277
  }), n("icon has aria-hidden attribute", () => {
209
- a(
210
- /* @__PURE__ */ o(r, { variant: "primary", icon: "settings", children: "Settings" })
278
+ o(
279
+ /* @__PURE__ */ a(r, { variant: "primary", icon: "settings", children: "Settings" })
211
280
  ), e(document.querySelector(".icon")).toHaveAttribute(
212
281
  "aria-hidden",
213
282
  "true"
214
283
  );
215
284
  });
216
- }), l("Image display", () => {
285
+ }), i("Image display", () => {
217
286
  n("renders image when displayType is 'image' and imageSrc is provided", () => {
218
- a(
219
- /* @__PURE__ */ o(
287
+ o(
288
+ /* @__PURE__ */ a(
220
289
  r,
221
290
  {
222
291
  variant: "primary",
@@ -230,42 +299,42 @@ l("Button", () => {
230
299
  const t = document.querySelector("img");
231
300
  e(t).toHaveAttribute("src", "/logo.png"), e(t).toHaveAttribute("alt", "Company Logo");
232
301
  }), n("renders ImageComponent when provided", () => {
233
- a(
234
- /* @__PURE__ */ o(
302
+ o(
303
+ /* @__PURE__ */ a(
235
304
  r,
236
305
  {
237
306
  variant: "primary",
238
307
  displayType: "image",
239
- ImageComponent: /* @__PURE__ */ o(() => /* @__PURE__ */ o("div", { "data-testid": "custom-image", children: "Custom" }), {}),
308
+ ImageComponent: /* @__PURE__ */ a(() => /* @__PURE__ */ a("div", { "data-testid": "custom-image", children: "Custom" }), {}),
240
309
  children: "Text"
241
310
  }
242
311
  )
243
- ), e(i.getByTestId("custom-image")).toBeInTheDocument();
312
+ ), e(l.getByTestId("custom-image")).toBeInTheDocument();
244
313
  }), n("applies image class when displayType is image", () => {
245
- a(
246
- /* @__PURE__ */ o(r, { variant: "primary", displayType: "image", imageSrc: "/logo.png", children: "Text" })
314
+ o(
315
+ /* @__PURE__ */ a(r, { variant: "primary", displayType: "image", imageSrc: "/logo.png", children: "Text" })
247
316
  );
248
- const t = i.getByRole("button");
317
+ const t = l.getByRole("button");
249
318
  e(t).toHaveClass("image"), e(t).not.toHaveClass("primary");
250
319
  });
251
- }), l("Custom className", () => {
320
+ }), i("Custom className", () => {
252
321
  n("applies custom className", () => {
253
- a(
254
- /* @__PURE__ */ o(r, { variant: "primary", className: "custom-button", children: "Custom" })
322
+ o(
323
+ /* @__PURE__ */ a(r, { variant: "primary", className: "custom-button", children: "Custom" })
255
324
  );
256
- const t = i.getByRole("button");
325
+ const t = l.getByRole("button");
257
326
  e(t).toHaveClass("custom-button", "button", "primary");
258
327
  });
259
- }), l("Accessibility", () => {
328
+ }), i("Accessibility", () => {
260
329
  n("has button role for button element", () => {
261
- a(/* @__PURE__ */ o(r, { variant: "primary", children: "Click" })), e(i.getByRole("button")).toBeInTheDocument();
330
+ o(/* @__PURE__ */ a(r, { variant: "primary", children: "Click" })), e(l.getByRole("button")).toBeInTheDocument();
262
331
  }), n("has link role for anchor element", () => {
263
- a(
264
- /* @__PURE__ */ o(r, { as: "a", href: "/test", variant: "link", children: "Link" })
265
- ), e(i.getByRole("link")).toBeInTheDocument();
332
+ o(
333
+ /* @__PURE__ */ a(r, { as: "a", href: "/test", variant: "link", children: "Link" })
334
+ ), e(l.getByRole("link")).toBeInTheDocument();
266
335
  }), n("supports aria attributes", () => {
267
- a(
268
- /* @__PURE__ */ o(
336
+ o(
337
+ /* @__PURE__ */ a(
269
338
  r,
270
339
  {
271
340
  variant: "primary",
@@ -275,19 +344,19 @@ l("Button", () => {
275
344
  }
276
345
  )
277
346
  );
278
- const t = i.getByRole("button");
347
+ const t = l.getByRole("button");
279
348
  e(t).toHaveAttribute("aria-label", "Custom Label"), e(t).toHaveAttribute("aria-describedby", "desc");
280
349
  });
281
- }), l("Edge cases", () => {
350
+ }), i("Edge cases", () => {
282
351
  n("handles undefined variant", () => {
283
- a(/* @__PURE__ */ o(r, { variant: void 0, children: "No Variant" })), e(i.getByRole("button")).toHaveClass("button");
352
+ o(/* @__PURE__ */ a(r, { variant: void 0, children: "No Variant" })), e(l.getByRole("button")).toHaveClass("button");
284
353
  }), n("handles complex children", () => {
285
- a(
354
+ o(
286
355
  /* @__PURE__ */ u(r, { variant: "primary", children: [
287
- /* @__PURE__ */ o("span", { children: "Complex" }),
288
- /* @__PURE__ */ o("strong", { children: "Children" })
356
+ /* @__PURE__ */ a("span", { children: "Complex" }),
357
+ /* @__PURE__ */ a("strong", { children: "Children" })
289
358
  ] })
290
- ), e(i.getByText("Complex")).toBeInTheDocument(), e(i.getByText("Children")).toBeInTheDocument();
359
+ ), e(l.getByText("Complex")).toBeInTheDocument(), e(l.getByText("Children")).toBeInTheDocument();
291
360
  });
292
361
  });
293
362
  });
@@ -1 +1 @@
1
- "use strict";const t=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),n=require("./index.cjs");require("../../../index-CW_Ehh1q.cjs");e.describe("Modal",()=>{e.beforeEach(()=>{document.body.innerHTML=""}),e.describe("Rendering",()=>{e.it("renders the trigger button",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.getByRole("button",{name:"Open Modal"})).toBeInTheDocument()}),e.it("does not render modal content initially",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("renders modal content when trigger is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Rich text + form render props",()=>{e.it("renders rich text via renderRichText when richTextBlocks provided",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Rich text content"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:r})),e.globalExpect(r).toHaveBeenCalledWith({blocks:o}),e.globalExpect(e.screen.getByText("Rich text content")).toBeInTheDocument()}),e.it("renders rich text inside .intro wrapper",()=>{const o=[{_type:"block",_key:"a"}];e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro text"})})),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("renders form via renderForm when formData provided",()=>{const o={_id:"form-1",heading:"Contact"},r=e.vi.fn(()=>t.jsx("form",{"data-testid":"the-form"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,formData:o,renderForm:r})),e.globalExpect(r).toHaveBeenCalledWith(o),e.globalExpect(e.screen.getByTestId("the-form")).toBeInTheDocument()}),e.it("renders both rich text and form together",()=>{const o=[{_type:"block",_key:"a"}],r={_id:"form-1"};e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro"}),formData:r,renderForm:()=>t.jsx("form",{"data-testid":"form"})})),e.globalExpect(e.screen.getByText("Intro")).toBeInTheDocument(),e.globalExpect(e.screen.getByTestId("form")).toBeInTheDocument(),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("explicit content prop takes priority over render props",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Should not render"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,content:t.jsx("p",{children:"Explicit content"}),richTextBlocks:o,renderRichText:r})),e.globalExpect(e.screen.getByText("Explicit content")).toBeInTheDocument(),e.globalExpect(r).not.toHaveBeenCalled()}),e.it("does not render intro when richTextBlocks is empty",()=>{e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:[],renderRichText:()=>t.jsx("p",{children:"Should not render"})})),e.globalExpect(document.querySelector(".intro")).not.toBeInTheDocument()})}),e.describe("Sizes",()=>{e.it("applies small size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"sm"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-sm")}),e.it("applies medium size by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-md")}),e.it("applies large size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"lg"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-lg")})}),e.describe("Title",()=>{e.it("renders title when provided",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),title:"Modal Title",isOpen:!0})),e.globalExpect(e.screen.getByText("Modal Title")).toBeInTheDocument()}),e.it("does not render title when not provided",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".title")).not.toBeInTheDocument()}),e.it("sets id on title for aria-labelledby",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),title:"My Modal",isOpen:!0})),e.globalExpect(e.screen.getByText("My Modal")).toHaveAttribute("id","modal-title")})}),e.describe("Close Button",()=>{e.it("shows close button by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("button",{name:/close/i})).toBeInTheDocument()}),e.it("hides close button when showCloseButton is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,showCloseButton:!1})),e.globalExpect(e.screen.queryByRole("button",{name:/close/i})).not.toBeInTheDocument()}),e.it("closes modal when close button is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument(),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.describe("Overlay Click",()=>{e.it("closes modal when clicking overlay by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("does not close when closeOnOverlayClick is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnOverlayClick:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("does not close when clicking modal content",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(e.screen.getByText("Modal Content")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Escape Key",()=>{e.it("closes modal on Escape key by default",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.it("does not close on Escape if closeOnEscape is false",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnEscape:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})})}),e.describe("Controlled Mode",()=>{e.it("respects controlled open state",()=>{const{rerender:o}=e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!1}));e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument(),o(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!0})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("calls onOpen when trigger is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!1,onOpen:o})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open"})),e.globalExpect(o).toHaveBeenCalled()}),e.it("calls onClose when close button is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,onClose:o})),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(o).toHaveBeenCalled()})}),e.describe("Accessibility",()=>{e.it("has dialog role",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toBeInTheDocument()}),e.it("has aria-modal attribute",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toHaveAttribute("aria-modal","true")}),e.it("links title with aria-labelledby",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),title:"My Modal",isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toHaveAttribute("aria-labelledby","modal-title")})}),e.describe("Custom Styling",()=>{e.it("applies custom className to modal",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),className:"custom-modal",isOpen:!0})),e.globalExpect(document.querySelector(".modal")).toHaveClass("custom-modal")}),e.it("applies custom className to overlay",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),overlayClassName:"custom-overlay",isOpen:!0})),e.globalExpect(document.querySelector(".overlay")).toHaveClass("custom-overlay")}),e.it("applies custom inline styles",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),style:{maxWidth:"500px"},isOpen:!0})),e.globalExpect(document.querySelector(".modal").style.maxWidth).toBe("500px")})})});
1
+ "use strict";const t=require("react/jsx-runtime"),e=require("../../../react.esm-C_9Ma9mj.cjs"),n=require("./index.cjs");require("../../../index-CW_Ehh1q.cjs");e.describe("Modal",()=>{e.beforeEach(()=>{document.body.innerHTML=""}),e.describe("Rendering",()=>{e.it("renders the trigger button",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.getByRole("button",{name:"Open Modal"})).toBeInTheDocument()}),e.it("does not render modal content initially",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("renders modal content when trigger is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Rich text + form render props",()=>{e.it("renders rich text via renderRichText when richTextBlocks provided",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Rich text content"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:r})),e.globalExpect(r).toHaveBeenCalledWith({blocks:o}),e.globalExpect(e.screen.getByText("Rich text content")).toBeInTheDocument()}),e.it("renders rich text inside .intro wrapper",()=>{const o=[{_type:"block",_key:"a"}];e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro text"})})),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("renders form via renderForm when formData provided",()=>{const o={_id:"form-1",heading:"Contact"},r=e.vi.fn(()=>t.jsx("form",{"data-testid":"the-form"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,formData:o,renderForm:r})),e.globalExpect(r).toHaveBeenCalledWith(o),e.globalExpect(e.screen.getByTestId("the-form")).toBeInTheDocument()}),e.it("renders both rich text and form together",()=>{const o=[{_type:"block",_key:"a"}],r={_id:"form-1"};e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:o,renderRichText:()=>t.jsx("p",{children:"Intro"}),formData:r,renderForm:()=>t.jsx("form",{"data-testid":"form"})})),e.globalExpect(e.screen.getByText("Intro")).toBeInTheDocument(),e.globalExpect(e.screen.getByTestId("form")).toBeInTheDocument(),e.globalExpect(document.querySelector(".intro")).toBeInTheDocument()}),e.it("explicit content prop takes priority over render props",()=>{const o=[{_type:"block",_key:"a"}],r=e.vi.fn(()=>t.jsx("p",{children:"Should not render"}));e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,content:t.jsx("p",{children:"Explicit content"}),richTextBlocks:o,renderRichText:r})),e.globalExpect(e.screen.getByText("Explicit content")).toBeInTheDocument(),e.globalExpect(r).not.toHaveBeenCalled()}),e.it("does not render intro when richTextBlocks is empty",()=>{e.render(t.jsx(n.Modal,{trigger:t.jsx("button",{children:"Open"}),isOpen:!0,richTextBlocks:[],renderRichText:()=>t.jsx("p",{children:"Should not render"})})),e.globalExpect(document.querySelector(".intro")).not.toBeInTheDocument()})}),e.describe("Sizes",()=>{e.it("applies small size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"sm"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-sm")}),e.it("applies medium size by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-md")}),e.it("applies large size",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,size:"lg"})),e.globalExpect(document.querySelector(".container")).toHaveClass("size-lg")})}),e.describe("Title",()=>{e.it("does not render title when not provided",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(document.querySelector(".title")).not.toBeInTheDocument()})}),e.describe("Close Button",()=>{e.it("shows close button by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("button",{name:/close/i})).toBeInTheDocument()}),e.it("hides close button when showCloseButton is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,showCloseButton:!1})),e.globalExpect(e.screen.queryByRole("button",{name:/close/i})).not.toBeInTheDocument()}),e.it("closes modal when close button is clicked",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument(),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.describe("Overlay Click",()=>{e.it("closes modal when clicking overlay by default",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()}),e.it("does not close when closeOnOverlayClick is false",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnOverlayClick:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(document.querySelector(".overlay")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("does not close when clicking modal content",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.click(e.screen.getByText("Modal Content")),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})}),e.describe("Escape Key",()=>{e.it("closes modal on Escape key by default",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"})})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument()})}),e.it("does not close on Escape if closeOnEscape is false",async()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),closeOnEscape:!1})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open Modal"})),e.fireEvent.keyDown(document,{key:"Escape"}),await e.waitForWrapper(()=>{e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()})})}),e.describe("Controlled Mode",()=>{e.it("respects controlled open state",()=>{const{rerender:o}=e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!1}));e.globalExpect(e.screen.queryByText("Modal Content")).not.toBeInTheDocument(),o(t.jsx(n.Modal,{content:t.jsx("div",{children:"Modal Content"}),trigger:t.jsx("button",{children:"Open Modal"}),isOpen:!0})),e.globalExpect(e.screen.getByText("Modal Content")).toBeInTheDocument()}),e.it("calls onOpen when trigger is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!1,onOpen:o})),e.fireEvent.click(e.screen.getByRole("button",{name:"Open"})),e.globalExpect(o).toHaveBeenCalled()}),e.it("calls onClose when close button is clicked in controlled mode",()=>{const o=e.vi.fn();e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0,onClose:o})),e.fireEvent.click(e.screen.getByRole("button",{name:/close/i})),e.globalExpect(o).toHaveBeenCalled()})}),e.describe("Accessibility",()=>{e.it("has dialog role",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toBeInTheDocument()}),e.it("has aria-modal attribute",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),isOpen:!0})),e.globalExpect(e.screen.getByRole("dialog")).toHaveAttribute("aria-modal","true")})}),e.describe("Custom Styling",()=>{e.it("applies custom className to modal",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),className:"custom-modal",isOpen:!0})),e.globalExpect(document.querySelector(".modal")).toHaveClass("custom-modal")}),e.it("applies custom className to overlay",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),overlayClassName:"custom-overlay",isOpen:!0})),e.globalExpect(document.querySelector(".overlay")).toHaveClass("custom-overlay")}),e.it("applies custom inline styles",()=>{e.render(t.jsx(n.Modal,{content:t.jsx("div",{children:"Content"}),trigger:t.jsx("button",{children:"Open"}),style:{maxWidth:"500px"},isOpen:!0})),e.globalExpect(document.querySelector(".modal").style.maxWidth).toBe("500px")})})});