@c15t/react 1.1.2-canary.2 → 1.1.2

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";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var a in t)__webpack_require__.o(t,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_consent_manager_dialog_cjs_namespaceObject=require("../consent-manager-dialog.cjs"),test_helpers_cjs_namespaceObject=require("../../../utils/test-helpers.cjs");var test_helpers_cjs_default=__webpack_require__.n(test_helpers_cjs_namespaceObject);let ALL_COMPONENTS=[{testId:"consent-manager-dialog-root",themeKey:"dialog.root",styles:"custom-dialog-root"},{testId:"consent-manager-dialog-overlay",themeKey:"dialog.overlay",styles:"custom-dialog-overlay"},{testId:"consent-manager-dialog-header",themeKey:"dialog.header",styles:"custom-dialog-header"},{testId:"consent-manager-dialog-title",themeKey:"dialog.title",styles:"custom-dialog-title"},{testId:"consent-manager-dialog-description",themeKey:"dialog.description",styles:"custom-dialog-description"},{testId:"consent-manager-dialog-content",themeKey:"dialog.content",styles:"custom-dialog-content"},{testId:"consent-manager-dialog-footer",themeKey:"dialog.footer",styles:"custom-dialog-footer"}];for(var __webpack_i__ in external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({isPrivacyDialogOpen:!0,getDisplayedConsents:external_vitest_namespaceObject.vi.fn(()=>[]),saveConsents:external_vitest_namespaceObject.vi.fn(),setShowPopup:external_vitest_namespaceObject.vi.fn(),setIsPrivacyDialogOpen:external_vitest_namespaceObject.vi.fn()})})),external_vitest_namespaceObject.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerDialog:{title:"Dialog Title",description:"Dialog Description",saveButton:"Save",rejectAllButton:"Reject All",acceptAllButton:"Accept All"},consentManagerWidget:{},cookieBanner:{},general:{}})})),(0,external_vitest_namespaceObject.test)("should apply string classNames from theme prop to all dialog elements",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:a})=>(e[t]=a,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,external_vitest_namespaceObject.test)("should apply className and style objects from theme prop to all dialog elements",async()=>{let e={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},t=ALL_COMPONENTS.map(({testId:t,themeKey:a,styles:s})=>({testId:t,themeKey:a,className:s,style:e})),a=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:t.reduce((e,{themeKey:t,className:a,style:s})=>(e[t]={className:a,style:s},e),{})});await test_helpers_cjs_default()({component:a,testCases:t.map(({testId:e,className:t,style:a})=>({testId:e,styles:{className:t,style:a}}))})}),(0,external_vitest_namespaceObject.test)("should remove default styles but keep custom classNames when top-level noStyle prop is true",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,noStyle:!0,open:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:a})=>(e[t]=a,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,external_vitest_namespaceObject.test)("should remove default styles but keep custom classNames when theme object provides noStyle: true",async()=>{let e=ALL_COMPONENTS.reduce((e,{themeKey:t,styles:a})=>(e[t]={className:a,noStyle:!0},e),{}),t=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,open:!0,theme:e});await test_helpers_cjs_default()({component:t,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:{className:t}}))})}),(0,external_vitest_namespaceObject.test)("should correctly apply styles when theme prop uses mixed string and object formats",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,theme:{"dialog.root":{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"dialog.overlay":"custom-dialog-overlay"},open:!0});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-dialog-root",styles:{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-dialog-overlay",styles:"custom-dialog-overlay"}]})}),(0,external_vitest_namespaceObject.test)("should handle empty strings and empty style objects in theme prop gracefully",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,open:!0,theme:{"dialog.root":"","dialog.overlay":"","dialog.content":{className:"",style:{margin:"0",padding:"0"}}}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-dialog-root",styles:""},{testId:"consent-manager-dialog-overlay",styles:""},{testId:"consent-manager-dialog-content",styles:{className:"",style:{margin:"0",padding:"0"}}}]})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var a in t)__webpack_require__.o(t,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_consent_manager_dialog_cjs_namespaceObject=require("../consent-manager-dialog.cjs"),test_helpers_cjs_namespaceObject=require("../../../utils/test-helpers.cjs");var test_helpers_cjs_default=__webpack_require__.n(test_helpers_cjs_namespaceObject);let ALL_COMPONENTS=[{testId:"consent-manager-dialog-root",themeKey:"dialog.root",styles:"custom-dialog-root"},{testId:"consent-manager-dialog-overlay",themeKey:"dialog.overlay",styles:"custom-dialog-overlay"},{testId:"consent-manager-dialog-header",themeKey:"dialog.header",styles:"custom-dialog-header"},{testId:"consent-manager-dialog-title",themeKey:"dialog.title",styles:"custom-dialog-title"},{testId:"consent-manager-dialog-description",themeKey:"dialog.description",styles:"custom-dialog-description"},{testId:"consent-manager-dialog-content",themeKey:"dialog.content",styles:"custom-dialog-content"},{testId:"consent-manager-dialog-footer",themeKey:"dialog.footer",styles:"custom-dialog-footer"}];for(var __webpack_i__ in external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({isPrivacyDialogOpen:!0,getDisplayedConsents:external_vitest_namespaceObject.vi.fn(()=>[]),saveConsents:external_vitest_namespaceObject.vi.fn(),setShowPopup:external_vitest_namespaceObject.vi.fn(),setIsPrivacyDialogOpen:external_vitest_namespaceObject.vi.fn()})})),external_vitest_namespaceObject.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerDialog:{title:"Dialog Title",description:"Dialog Description",saveButton:"Save",rejectAllButton:"Reject All",acceptAllButton:"Accept All"},consentManagerWidget:{},cookieBanner:{},general:{}})})),(0,external_vitest_namespaceObject.test)("Theme prop applies string classnames to all components",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:a})=>(e[t]=a,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,external_vitest_namespaceObject.test)("Theme prop supports object format with className and style for all components",async()=>{let e={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},t=ALL_COMPONENTS.map(({testId:t,themeKey:a,styles:s})=>({testId:t,themeKey:a,className:s,style:e})),a=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:t.reduce((e,{themeKey:t,className:a,style:s})=>(e[t]={className:a,style:s},e),{})});await test_helpers_cjs_default()({component:a,testCases:t.map(({testId:e,className:t,style:a})=>({testId:e,styles:{className:t,style:a}}))})}),(0,external_vitest_namespaceObject.test)("No style prop removes default styles but keeps custom classNames",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,noStyle:!0,open:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:a})=>(e[t]=a,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,external_vitest_namespaceObject.test)("Theme prop handles mixed format (string and object) correctly",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,theme:{"dialog.root":{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"dialog.overlay":"custom-dialog-overlay"},open:!0});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-dialog-root",styles:{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-dialog-overlay",styles:"custom-dialog-overlay"}]})}),(0,external_vitest_namespaceObject.test)("Theme prop handles edge cases gracefully",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{scrollLock:!0,open:!0,theme:{"dialog.root":"","dialog.overlay":"","dialog.content":{className:"",style:{margin:"0",padding:"0"}}}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-dialog-root",styles:""},{testId:"consent-manager-dialog-overlay",styles:""},{testId:"consent-manager-dialog-content",styles:{className:"",style:{margin:"0",padding:"0"}}}]})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- import*as e from"react/jsx-runtime";import*as t from"vitest";import*as o from"../consent-manager-dialog.js";import*as s from"../../../utils/test-helpers.js";let a=[{testId:"consent-manager-dialog-root",themeKey:"dialog.root",styles:"custom-dialog-root"},{testId:"consent-manager-dialog-overlay",themeKey:"dialog.overlay",styles:"custom-dialog-overlay"},{testId:"consent-manager-dialog-header",themeKey:"dialog.header",styles:"custom-dialog-header"},{testId:"consent-manager-dialog-title",themeKey:"dialog.title",styles:"custom-dialog-title"},{testId:"consent-manager-dialog-description",themeKey:"dialog.description",styles:"custom-dialog-description"},{testId:"consent-manager-dialog-content",themeKey:"dialog.content",styles:"custom-dialog-content"},{testId:"consent-manager-dialog-footer",themeKey:"dialog.footer",styles:"custom-dialog-footer"}];t.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({isPrivacyDialogOpen:!0,getDisplayedConsents:t.vi.fn(()=>[]),saveConsents:t.vi.fn(),setShowPopup:t.vi.fn(),setIsPrivacyDialogOpen:t.vi.fn()})})),t.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerDialog:{title:"Dialog Title",description:"Dialog Description",saveButton:"Save",rejectAllButton:"Reject All",acceptAllButton:"Accept All"},consentManagerWidget:{},cookieBanner:{},general:{}})})),(0,t.test)("should apply string classNames from theme prop to all dialog elements",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:a.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,s.default)({component:t,testCases:a.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,t.test)("should apply className and style objects from theme prop to all dialog elements",async()=>{let t={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},l=a.map(({testId:e,themeKey:o,styles:s})=>({testId:e,themeKey:o,className:s,style:t})),n=(0,e.jsx)(o.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:l.reduce((e,{themeKey:t,className:o,style:s})=>(e[t]={className:o,style:s},e),{})});await (0,s.default)({component:n,testCases:l.map(({testId:e,className:t,style:o})=>({testId:e,styles:{className:t,style:o}}))})}),(0,t.test)("should remove default styles but keep custom classNames when top-level noStyle prop is true",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,noStyle:!0,open:!0,theme:a.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,s.default)({component:t,testCases:a.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,t.test)("should remove default styles but keep custom classNames when theme object provides noStyle: true",async()=>{let t=a.reduce((e,{themeKey:t,styles:o})=>(e[t]={className:o,noStyle:!0},e),{}),l=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,open:!0,theme:t});await (0,s.default)({component:l,testCases:a.map(({testId:e,styles:t})=>({testId:e,styles:{className:t}}))})}),(0,t.test)("should correctly apply styles when theme prop uses mixed string and object formats",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,theme:{"dialog.root":{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"dialog.overlay":"custom-dialog-overlay"},open:!0});await (0,s.default)({component:t,testCases:[{testId:"consent-manager-dialog-root",styles:{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-dialog-overlay",styles:"custom-dialog-overlay"}]})}),(0,t.test)("should handle empty strings and empty style objects in theme prop gracefully",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,open:!0,theme:{"dialog.root":"","dialog.overlay":"","dialog.content":{className:"",style:{margin:"0",padding:"0"}}}});await (0,s.default)({component:t,testCases:[{testId:"consent-manager-dialog-root",styles:""},{testId:"consent-manager-dialog-overlay",styles:""},{testId:"consent-manager-dialog-content",styles:{className:"",style:{margin:"0",padding:"0"}}}]})});
1
+ import*as e from"react/jsx-runtime";import*as t from"vitest";import*as o from"../consent-manager-dialog.js";import*as a from"../../../utils/test-helpers.js";let s=[{testId:"consent-manager-dialog-root",themeKey:"dialog.root",styles:"custom-dialog-root"},{testId:"consent-manager-dialog-overlay",themeKey:"dialog.overlay",styles:"custom-dialog-overlay"},{testId:"consent-manager-dialog-header",themeKey:"dialog.header",styles:"custom-dialog-header"},{testId:"consent-manager-dialog-title",themeKey:"dialog.title",styles:"custom-dialog-title"},{testId:"consent-manager-dialog-description",themeKey:"dialog.description",styles:"custom-dialog-description"},{testId:"consent-manager-dialog-content",themeKey:"dialog.content",styles:"custom-dialog-content"},{testId:"consent-manager-dialog-footer",themeKey:"dialog.footer",styles:"custom-dialog-footer"}];t.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({isPrivacyDialogOpen:!0,getDisplayedConsents:t.vi.fn(()=>[]),saveConsents:t.vi.fn(),setShowPopup:t.vi.fn(),setIsPrivacyDialogOpen:t.vi.fn()})})),t.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerDialog:{title:"Dialog Title",description:"Dialog Description",saveButton:"Save",rejectAllButton:"Reject All",acceptAllButton:"Accept All"},consentManagerWidget:{},cookieBanner:{},general:{}})})),(0,t.test)("Theme prop applies string classnames to all components",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:s.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,a.default)({component:t,testCases:s.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,t.test)("Theme prop supports object format with className and style for all components",async()=>{let t={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},n=s.map(({testId:e,themeKey:o,styles:a})=>({testId:e,themeKey:o,className:a,style:t})),l=(0,e.jsx)(o.ConsentManagerDialog,{open:!0,scrollLock:!0,theme:n.reduce((e,{themeKey:t,className:o,style:a})=>(e[t]={className:o,style:a},e),{})});await (0,a.default)({component:l,testCases:n.map(({testId:e,className:t,style:o})=>({testId:e,styles:{className:t,style:o}}))})}),(0,t.test)("No style prop removes default styles but keeps custom classNames",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,noStyle:!0,open:!0,theme:s.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,a.default)({component:t,testCases:s.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,t.test)("Theme prop handles mixed format (string and object) correctly",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,theme:{"dialog.root":{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"dialog.overlay":"custom-dialog-overlay"},open:!0});await (0,a.default)({component:t,testCases:[{testId:"consent-manager-dialog-root",styles:{className:"custom-dialog-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-dialog-overlay",styles:"custom-dialog-overlay"}]})}),(0,t.test)("Theme prop handles edge cases gracefully",async()=>{let t=(0,e.jsx)(o.ConsentManagerDialog,{scrollLock:!0,open:!0,theme:{"dialog.root":"","dialog.overlay":"","dialog.content":{className:"",style:{margin:"0",padding:"0"}}}});await (0,a.default)({component:t,testCases:[{testId:"consent-manager-dialog-root",styles:""},{testId:"consent-manager-dialog-overlay",styles:""},{testId:"consent-manager-dialog-content",styles:{className:"",style:{margin:"0",padding:"0"}}}]})});
@@ -1 +1 @@
1
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_consent_manager_widget_cjs_namespaceObject=require("../consent-manager-widget.cjs"),test_helpers_cjs_namespaceObject=require("../../../utils/test-helpers.cjs");var test_helpers_cjs_default=__webpack_require__.n(test_helpers_cjs_namespaceObject);external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({getConsentCategory:external_vitest_namespaceObject.vi.fn(()=>({isEnabled:!0})),updateConsentCategory:external_vitest_namespaceObject.vi.fn(),saveConsents:external_vitest_namespaceObject.vi.fn(),getDisplayedConsents:external_vitest_namespaceObject.vi.fn(()=>[])})})),external_vitest_namespaceObject.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerWidget:{necessaryCookies:"Necessary",marketingCookies:"Marketing",analyticsCookies:"Analytics",preferencesCookies:"Preferences",unknownIntegration:"Unknown",alwaysActive:"Always Active",rejectAllButton:"Reject All",acceptAllButton:"Accept All",saveButton:"Save Settings"},consentManagerDialog:{},cookieBanner:{},general:{}})}));let ALL_COMPONENTS=[{testId:"consent-manager-widget-root",themeKey:"widget.root",styles:"custom-root"},{testId:"consent-manager-widget-footer",themeKey:"widget.footer",styles:"custom-footer"},{testId:"consent-manager-widget-footer-sub-group",themeKey:"widget.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"consent-manager-widget-reject-button",themeKey:"widget.footer.reject-button",styles:"custom-reject-button"},{testId:"consent-manager-widget-footer-accept-button",themeKey:"widget.footer.accept-button",styles:"custom-accept-button"},{testId:"consent-manager-widget-footer-save-button",themeKey:"widget.footer.save-button",styles:"custom-save-button"},{testId:"consent-manager-widget-accordion-trigger-marketing",themeKey:"widget.accordion.trigger",styles:"custom-accordion-trigger"},{testId:"consent-manager-widget-accordion-trigger-inner-marketing",themeKey:"widget.accordion.trigger-inner",styles:"custom-accordion-trigger-inner"},{testId:"consent-manager-widget-accordion-content-marketing",themeKey:"widget.accordion.content",styles:"custom-accordion-content"},{testId:"consent-manager-widget-switch-marketing",themeKey:"widget.switch",styles:"custom-switch"}];for(var __webpack_i__ in(0,external_vitest_namespaceObject.test)("should apply string classNames from theme prop to all widget elements",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,external_vitest_namespaceObject.test)("should apply className and style objects from theme prop to all widget elements",async()=>{let e={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},t=ALL_COMPONENTS.map(({testId:t,themeKey:s,styles:a})=>({testId:t,themeKey:s,className:a,style:e})),s=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:t.reduce((e,{themeKey:t,className:s,style:a})=>(e[t]={className:s,style:a},e),{})});await test_helpers_cjs_default()({component:s,testCases:t.map(({testId:e,className:t,style:s})=>({testId:e,styles:{className:t,style:s}}))})}),(0,external_vitest_namespaceObject.test)("should remove default styles but keep custom classNames when top-level noStyle prop is true",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{noStyle:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,external_vitest_namespaceObject.test)("should remove default styles but keep custom classNames when theme object provides noStyle: true",async()=>{let e=ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]={className:s,noStyle:!0},e),{}),t=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{noStyle:!0,theme:e});await test_helpers_cjs_default()({component:t,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:{className:t}}))})}),(0,external_vitest_namespaceObject.test)("should correctly apply styles when theme prop uses mixed string and object formats",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:{"widget.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"widget.accordion.trigger":"custom-accordion-trigger"}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-widget-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-widget-accordion-trigger-marketing",styles:"custom-accordion-trigger"}]})}),(0,external_vitest_namespaceObject.test)("should handle empty strings and empty style objects in theme prop gracefully",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:{"widget.root":"","widget.accordion":"","widget.footer":{className:"",style:{margin:"0",padding:"0"}}}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-widget-root",styles:""},{testId:"consent-manager-widget-accordion",styles:""},{testId:"consent-manager-widget-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_consent_manager_widget_cjs_namespaceObject=require("../consent-manager-widget.cjs"),test_helpers_cjs_namespaceObject=require("../../../utils/test-helpers.cjs");var test_helpers_cjs_default=__webpack_require__.n(test_helpers_cjs_namespaceObject);external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({getConsentCategory:external_vitest_namespaceObject.vi.fn(()=>({isEnabled:!0})),updateConsentCategory:external_vitest_namespaceObject.vi.fn(),saveConsents:external_vitest_namespaceObject.vi.fn(),getDisplayedConsents:external_vitest_namespaceObject.vi.fn(()=>[])})})),external_vitest_namespaceObject.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerWidget:{necessaryCookies:"Necessary",marketingCookies:"Marketing",analyticsCookies:"Analytics",preferencesCookies:"Preferences",unknownIntegration:"Unknown",alwaysActive:"Always Active",rejectAllButton:"Reject All",acceptAllButton:"Accept All",saveButton:"Save Settings"},consentManagerDialog:{},cookieBanner:{},general:{}})}));let ALL_COMPONENTS=[{testId:"consent-manager-widget-root",themeKey:"widget.root",styles:"custom-root"},{testId:"consent-manager-widget-footer",themeKey:"widget.footer",styles:"custom-footer"},{testId:"consent-manager-widget-footer-sub-group",themeKey:"widget.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"consent-manager-widget-reject-button",themeKey:"widget.footer.reject-button",styles:"custom-reject-button"},{testId:"consent-manager-widget-footer-accept-button",themeKey:"widget.footer.accept-button",styles:"custom-accept-button"},{testId:"consent-manager-widget-footer-save-button",themeKey:"widget.footer.save-button",styles:"custom-save-button"},{testId:"consent-manager-widget-accordion-trigger-marketing",themeKey:"widget.accordion.trigger",styles:"custom-accordion-trigger"},{testId:"consent-manager-widget-accordion-trigger-inner-marketing",themeKey:"widget.accordion.trigger-inner",styles:"custom-accordion-trigger-inner"},{testId:"consent-manager-widget-accordion-content-marketing",themeKey:"widget.accordion.content",styles:"custom-accordion-content"},{testId:"consent-manager-widget-switch-marketing",themeKey:"widget.switch",styles:"custom-switch"}];for(var __webpack_i__ in(0,external_vitest_namespaceObject.test)("Theme prop applies string classnames to all components",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,external_vitest_namespaceObject.test)("Theme prop supports object format with className and style for all components",async()=>{let e={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},t=ALL_COMPONENTS.map(({testId:t,themeKey:s,styles:a})=>({testId:t,themeKey:s,className:a,style:e})),s=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:t.reduce((e,{themeKey:t,className:s,style:a})=>(e[t]={className:s,style:a},e),{})});await test_helpers_cjs_default()({component:s,testCases:t.map(({testId:e,className:t,style:s})=>({testId:e,styles:{className:t,style:s}}))})}),(0,external_vitest_namespaceObject.test)("No style prop removes default styles but keeps custom classNames",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{noStyle:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,external_vitest_namespaceObject.test)("Theme prop handles mixed format (string and object) correctly",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:{"widget.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"widget.accordion.trigger":"custom-accordion-trigger"}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-widget-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-widget-accordion-trigger-marketing",styles:"custom-accordion-trigger"}]})}),(0,external_vitest_namespaceObject.test)("Theme prop handles edge cases gracefully",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_consent_manager_widget_cjs_namespaceObject.ConsentManagerWidget,{theme:{"widget.root":"","widget.accordion":"","widget.footer":{className:"",style:{margin:"0",padding:"0"}}}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"consent-manager-widget-root",styles:""},{testId:"consent-manager-widget-accordion",styles:""},{testId:"consent-manager-widget-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- import*as e from"react/jsx-runtime";import*as t from"vitest";import*as s from"../consent-manager-widget.js";import*as o from"../../../utils/test-helpers.js";t.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({getConsentCategory:t.vi.fn(()=>({isEnabled:!0})),updateConsentCategory:t.vi.fn(),saveConsents:t.vi.fn(),getDisplayedConsents:t.vi.fn(()=>[])})})),t.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerWidget:{necessaryCookies:"Necessary",marketingCookies:"Marketing",analyticsCookies:"Analytics",preferencesCookies:"Preferences",unknownIntegration:"Unknown",alwaysActive:"Always Active",rejectAllButton:"Reject All",acceptAllButton:"Accept All",saveButton:"Save Settings"},consentManagerDialog:{},cookieBanner:{},general:{}})}));let n=[{testId:"consent-manager-widget-root",themeKey:"widget.root",styles:"custom-root"},{testId:"consent-manager-widget-footer",themeKey:"widget.footer",styles:"custom-footer"},{testId:"consent-manager-widget-footer-sub-group",themeKey:"widget.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"consent-manager-widget-reject-button",themeKey:"widget.footer.reject-button",styles:"custom-reject-button"},{testId:"consent-manager-widget-footer-accept-button",themeKey:"widget.footer.accept-button",styles:"custom-accept-button"},{testId:"consent-manager-widget-footer-save-button",themeKey:"widget.footer.save-button",styles:"custom-save-button"},{testId:"consent-manager-widget-accordion-trigger-marketing",themeKey:"widget.accordion.trigger",styles:"custom-accordion-trigger"},{testId:"consent-manager-widget-accordion-trigger-inner-marketing",themeKey:"widget.accordion.trigger-inner",styles:"custom-accordion-trigger-inner"},{testId:"consent-manager-widget-accordion-content-marketing",themeKey:"widget.accordion.content",styles:"custom-accordion-content"},{testId:"consent-manager-widget-switch-marketing",themeKey:"widget.switch",styles:"custom-switch"}];(0,t.test)("should apply string classNames from theme prop to all widget elements",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{theme:n.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await (0,o.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,t.test)("should apply className and style objects from theme prop to all widget elements",async()=>{let t={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},a=n.map(({testId:e,themeKey:s,styles:o})=>({testId:e,themeKey:s,className:o,style:t})),r=(0,e.jsx)(s.ConsentManagerWidget,{theme:a.reduce((e,{themeKey:t,className:s,style:o})=>(e[t]={className:s,style:o},e),{})});await (0,o.default)({component:r,testCases:a.map(({testId:e,className:t,style:s})=>({testId:e,styles:{className:t,style:s}}))})}),(0,t.test)("should remove default styles but keep custom classNames when top-level noStyle prop is true",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{noStyle:!0,theme:n.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await (0,o.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,t.test)("should remove default styles but keep custom classNames when theme object provides noStyle: true",async()=>{let t=n.reduce((e,{themeKey:t,styles:s})=>(e[t]={className:s,noStyle:!0},e),{}),a=(0,e.jsx)(s.ConsentManagerWidget,{noStyle:!0,theme:t});await (0,o.default)({component:a,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:{className:t}}))})}),(0,t.test)("should correctly apply styles when theme prop uses mixed string and object formats",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{theme:{"widget.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"widget.accordion.trigger":"custom-accordion-trigger"}});await (0,o.default)({component:t,testCases:[{testId:"consent-manager-widget-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-widget-accordion-trigger-marketing",styles:"custom-accordion-trigger"}]})}),(0,t.test)("should handle empty strings and empty style objects in theme prop gracefully",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{theme:{"widget.root":"","widget.accordion":"","widget.footer":{className:"",style:{margin:"0",padding:"0"}}}});await (0,o.default)({component:t,testCases:[{testId:"consent-manager-widget-root",styles:""},{testId:"consent-manager-widget-accordion",styles:""},{testId:"consent-manager-widget-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})});
1
+ import*as e from"react/jsx-runtime";import*as t from"vitest";import*as s from"../consent-manager-widget.js";import*as o from"../../../utils/test-helpers.js";t.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({getConsentCategory:t.vi.fn(()=>({isEnabled:!0})),updateConsentCategory:t.vi.fn(),saveConsents:t.vi.fn(),getDisplayedConsents:t.vi.fn(()=>[])})})),t.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({consentManagerWidget:{necessaryCookies:"Necessary",marketingCookies:"Marketing",analyticsCookies:"Analytics",preferencesCookies:"Preferences",unknownIntegration:"Unknown",alwaysActive:"Always Active",rejectAllButton:"Reject All",acceptAllButton:"Accept All",saveButton:"Save Settings"},consentManagerDialog:{},cookieBanner:{},general:{}})}));let n=[{testId:"consent-manager-widget-root",themeKey:"widget.root",styles:"custom-root"},{testId:"consent-manager-widget-footer",themeKey:"widget.footer",styles:"custom-footer"},{testId:"consent-manager-widget-footer-sub-group",themeKey:"widget.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"consent-manager-widget-reject-button",themeKey:"widget.footer.reject-button",styles:"custom-reject-button"},{testId:"consent-manager-widget-footer-accept-button",themeKey:"widget.footer.accept-button",styles:"custom-accept-button"},{testId:"consent-manager-widget-footer-save-button",themeKey:"widget.footer.save-button",styles:"custom-save-button"},{testId:"consent-manager-widget-accordion-trigger-marketing",themeKey:"widget.accordion.trigger",styles:"custom-accordion-trigger"},{testId:"consent-manager-widget-accordion-trigger-inner-marketing",themeKey:"widget.accordion.trigger-inner",styles:"custom-accordion-trigger-inner"},{testId:"consent-manager-widget-accordion-content-marketing",themeKey:"widget.accordion.content",styles:"custom-accordion-content"},{testId:"consent-manager-widget-switch-marketing",themeKey:"widget.switch",styles:"custom-switch"}];(0,t.test)("Theme prop applies string classnames to all components",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{theme:n.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await (0,o.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,t.test)("Theme prop supports object format with className and style for all components",async()=>{let t={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},a=n.map(({testId:e,themeKey:s,styles:o})=>({testId:e,themeKey:s,className:o,style:t})),r=(0,e.jsx)(s.ConsentManagerWidget,{theme:a.reduce((e,{themeKey:t,className:s,style:o})=>(e[t]={className:s,style:o},e),{})});await (0,o.default)({component:r,testCases:a.map(({testId:e,className:t,style:s})=>({testId:e,styles:{className:t,style:s}}))})}),(0,t.test)("No style prop removes default styles but keeps custom classNames",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{noStyle:!0,theme:n.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await (0,o.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,t.test)("Theme prop handles mixed format (string and object) correctly",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{theme:{"widget.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"widget.accordion.trigger":"custom-accordion-trigger"}});await (0,o.default)({component:t,testCases:[{testId:"consent-manager-widget-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"consent-manager-widget-accordion-trigger-marketing",styles:"custom-accordion-trigger"}]})}),(0,t.test)("Theme prop handles edge cases gracefully",async()=>{let t=(0,e.jsx)(s.ConsentManagerWidget,{theme:{"widget.root":"","widget.accordion":"","widget.footer":{className:"",style:{margin:"0",padding:"0"}}}});await (0,o.default)({component:t,testCases:[{testId:"consent-manager-widget-root",styles:""},{testId:"consent-manager-widget-accordion",styles:""},{testId:"consent-manager-widget-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})});
@@ -1 +1 @@
1
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),consent_manager_dialog_cjs_namespaceObject=require("../../consent-manager-dialog/consent-manager-dialog.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../../providers/consent-manager-provider.cjs"),external_cookie_banner_cjs_namespaceObject=require("../cookie-banner.cjs"),mockShowPopup=!0,mockIsPrivacyDialogOpen=!1;external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:mockShowPopup,isPrivacyDialogOpen:mockIsPrivacyDialogOpen,setShowPopup:e=>{mockShowPopup=e},setIsPrivacyDialogOpen:e=>{mockIsPrivacyDialogOpen=e}})}});let localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});let defaultOptions={mode:"offline"};for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("CookieBanner End-to-End Behavior",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{window.localStorage.clear(),mockShowPopup=!0,external_vitest_namespaceObject.vi.clearAllMocks()}),(0,external_vitest_namespaceObject.test)("should show cookie banner on first visit",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!0),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("should accept all cookies when clicking Accept All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consentInfo.type).toBe("all")}),(0,external_vitest_namespaceObject.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consentInfo.type).toBe("necessary"),(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0),(0,external_vitest_namespaceObject.expect)(t.consents.experience).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.functionality).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.marketing).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.measurement).toBe(!1)}),(0,external_vitest_namespaceObject.test)("should open consent manager dialog when clicking Customize",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!0);let t=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,external_vitest_namespaceObject.expect)(t).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let n=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');n?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let a=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');a?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!1);let c=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(c.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(c.consentInfo.type).toBe("custom"),(0,external_vitest_namespaceObject.expect)(c.consents.marketing).toBe(!0)}),(0,external_vitest_namespaceObject.test)("should allow tabbing through interactive elements",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),t=document.querySelector('[data-testid="cookie-banner-customize-button"]'),n=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(e),t.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(t),n.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(n)}),(0,external_vitest_namespaceObject.test)("should apply and remove overlay correctly when scrollLock is enabled",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]})),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),consent_manager_dialog_cjs_namespaceObject=require("../../consent-manager-dialog/consent-manager-dialog.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../../providers/consent-manager-provider.cjs"),external_cookie_banner_cjs_namespaceObject=require("../cookie-banner.cjs"),mockShowPopup=!0,mockIsPrivacyDialogOpen=!1;external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:mockShowPopup,isPrivacyDialogOpen:mockIsPrivacyDialogOpen,setShowPopup:e=>{mockShowPopup=e},setIsPrivacyDialogOpen:e=>{mockIsPrivacyDialogOpen=e}})}});let localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});let defaultOptions={mode:"offline"};for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("CookieBanner E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{window.localStorage.clear(),mockShowPopup=!0,external_vitest_namespaceObject.vi.clearAllMocks()}),(0,external_vitest_namespaceObject.test)("should show cookie banner on first visit",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!0),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("should accept all cookies when clicking Accept All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consentInfo.type).toBe("all")}),(0,external_vitest_namespaceObject.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consentInfo.type).toBe("necessary"),(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0),(0,external_vitest_namespaceObject.expect)(t.consents.experience).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.functionality).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.marketing).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.measurement).toBe(!1)}),(0,external_vitest_namespaceObject.test)("should open consent manager dialog when clicking Customize",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!0);let t=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,external_vitest_namespaceObject.expect)(t).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let n=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');n?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let a=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');a?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!1);let c=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(c.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(c.consentInfo.type).toBe("custom"),(0,external_vitest_namespaceObject.expect)(c.consents.marketing).toBe(!0)}),(0,external_vitest_namespaceObject.test)("should be keyboard accessible",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),t=document.querySelector('[data-testid="cookie-banner-customize-button"]'),n=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(e),t.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(t),n.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(n)}),(0,external_vitest_namespaceObject.test)("should handle scroll lock properly",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]})),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- let e;import*as t from"react/jsx-runtime";import*as o from"vitest";import*as n from"vitest-browser-react";import*as c from"../../consent-manager-dialog/consent-manager-dialog.js";import*as a from"../../../providers/consent-manager-provider.js";import*as r from"../cookie-banner.js";let s=!0,i=!1;o.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:s,isPrivacyDialogOpen:i,setShowPopup:e=>{s=e},setIsPrivacyDialogOpen:e=>{i=e}})}}),Object.defineProperty(window,"localStorage",{value:(e={},{getItem:t=>e[t]||null,setItem:(t,o)=>{e[t]=o.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}})});let d={mode:"offline"};(0,o.describe)("CookieBanner End-to-End Behavior",()=>{(0,o.beforeEach)(()=>{window.localStorage.clear(),s=!0,o.vi.clearAllMocks()}),(0,o.test)("should show cookie banner on first visit",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(r.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,o.expect)(e).toBeInTheDocument(),(0,o.expect)(s).toBe(!0),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,o.test)("should accept all cookies when clicking Accept All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(r.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(s).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consentInfo.type).toBe("all")}),(0,o.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(r.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(s).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consentInfo.type).toBe("necessary"),(0,o.expect)(i.consents.necessary).toBe(!0),(0,o.expect)(i.consents.experience).toBe(!1),(0,o.expect)(i.consents.functionality).toBe(!1),(0,o.expect)(i.consents.marketing).toBe(!1),(0,o.expect)(i.consents.measurement).toBe(!1)}),(0,o.test)("should open consent manager dialog when clicking Customize",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(r.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(s).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,o.expect)(i).toBe(!0);let l=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,o.expect)(l).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let u=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');u?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let m=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');m?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(i).toBe(!1);let p=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(p.consents).toBeTruthy(),(0,o.expect)(p.consentInfo.type).toBe("custom"),(0,o.expect)(p.consents.marketing).toBe(!0)}),(0,o.test)("should allow tabbing through interactive elements",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(r.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),s=document.querySelector('[data-testid="cookie-banner-customize-button"]'),i=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,o.expect)(document.activeElement).toBe(e),s.focus(),(0,o.expect)(document.activeElement).toBe(s),i.focus(),(0,o.expect)(document.activeElement).toBe(i)}),(0,o.test)("should apply and remove overlay correctly when scrollLock is enabled",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(r.CookieBanner,{scrollLock:!0}),(0,t.jsx)(c.ConsentManagerDialog,{})]})),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})});
1
+ let e;import*as t from"react/jsx-runtime";import*as o from"vitest";import*as n from"vitest-browser-react";import*as c from"../../consent-manager-dialog/consent-manager-dialog.js";import*as a from"../../../providers/consent-manager-provider.js";import*as s from"../cookie-banner.js";let r=!0,i=!1;o.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:r,isPrivacyDialogOpen:i,setShowPopup:e=>{r=e},setIsPrivacyDialogOpen:e=>{i=e}})}}),Object.defineProperty(window,"localStorage",{value:(e={},{getItem:t=>e[t]||null,setItem:(t,o)=>{e[t]=o.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}})});let d={mode:"offline"};(0,o.describe)("CookieBanner E2E Tests",()=>{(0,o.beforeEach)(()=>{window.localStorage.clear(),r=!0,o.vi.clearAllMocks()}),(0,o.test)("should show cookie banner on first visit",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,o.expect)(e).toBeInTheDocument(),(0,o.expect)(r).toBe(!0),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,o.test)("should accept all cookies when clicking Accept All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consentInfo.type).toBe("all")}),(0,o.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consentInfo.type).toBe("necessary"),(0,o.expect)(i.consents.necessary).toBe(!0),(0,o.expect)(i.consents.experience).toBe(!1),(0,o.expect)(i.consents.functionality).toBe(!1),(0,o.expect)(i.consents.marketing).toBe(!1),(0,o.expect)(i.consents.measurement).toBe(!1)}),(0,o.test)("should open consent manager dialog when clicking Customize",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,o.expect)(i).toBe(!0);let l=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,o.expect)(l).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let u=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');u?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let m=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');m?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(i).toBe(!1);let p=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(p.consents).toBeTruthy(),(0,o.expect)(p.consentInfo.type).toBe("custom"),(0,o.expect)(p.consents.marketing).toBe(!0)}),(0,o.test)("should be keyboard accessible",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),r=document.querySelector('[data-testid="cookie-banner-customize-button"]'),i=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,o.expect)(document.activeElement).toBe(e),r.focus(),(0,o.expect)(document.activeElement).toBe(r),i.focus(),(0,o.expect)(document.activeElement).toBe(i)}),(0,o.test)("should handle scroll lock properly",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{scrollLock:!0}),(0,t.jsx)(c.ConsentManagerDialog,{})]})),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})});
@@ -1 +1 @@
1
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_cookie_banner_cjs_namespaceObject=require("../cookie-banner.cjs"),test_helpers_cjs_namespaceObject=require("../../../utils/test-helpers.cjs");var test_helpers_cjs_default=__webpack_require__.n(test_helpers_cjs_namespaceObject);external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({showPopup:!0,...external_vitest_namespaceObject.vi.fn()})})),external_vitest_namespaceObject.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({cookieBanner:{title:"Cookie Settings",description:"We use cookies to enhance your experience",acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize"}})}));let ALL_COMPONENTS=[{testId:"cookie-banner-root",themeKey:"banner.root",styles:"custom-root"},{testId:"cookie-banner-card",themeKey:"banner.card",styles:"custom-card"},{testId:"cookie-banner-header",themeKey:"banner.header.root",styles:"custom-header"},{testId:"cookie-banner-title",themeKey:"banner.header.title",styles:"custom-title"},{testId:"cookie-banner-description",themeKey:"banner.header.description",styles:"custom-description"},{testId:"cookie-banner-footer",themeKey:"banner.footer",styles:"custom-footer"},{testId:"cookie-banner-footer-sub-group",themeKey:"banner.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"cookie-banner-overlay",themeKey:"banner.overlay",styles:"custom-overlay"},{testId:"cookie-banner-reject-button",themeKey:"banner.footer.reject-button",styles:"custom-reject-button"},{testId:"cookie-banner-customize-button",themeKey:"banner.footer.customize-button",styles:"custom-customize-button"},{testId:"cookie-banner-accept-button",themeKey:"banner.footer.accept-button",styles:"custom-accept-button"}];for(var __webpack_i__ in(0,external_vitest_namespaceObject.test)("should apply string classNames from theme prop to all banner elements",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,external_vitest_namespaceObject.test)("should apply className and style objects from theme prop to all banner elements",async()=>{let e={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},t=ALL_COMPONENTS.map(({testId:t,themeKey:s,styles:a})=>({testId:t,themeKey:s,className:a,style:e})),s=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:t.reduce((e,{themeKey:t,className:s,style:a})=>(e[t]={className:s,style:a},e),{})});await test_helpers_cjs_default()({component:s,testCases:t.map(({testId:e,className:t,style:s})=>({testId:e,styles:{className:t,style:s}}))})}),(0,external_vitest_namespaceObject.test)("should remove default styles but keep custom classNames when top-level noStyle prop is true",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,noStyle:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,external_vitest_namespaceObject.test)("should remove default styles but keep custom classNames when theme object provides noStyle: true",async()=>{let e=ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]={className:s,noStyle:!0},e),{}),t=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,noStyle:!0,theme:e});await test_helpers_cjs_default()({component:t,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:{className:t}}))})}),(0,external_vitest_namespaceObject.test)("should correctly apply styles when theme prop uses mixed string and object formats",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:{"banner.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"banner.header.title":"custom-title"}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"cookie-banner-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"cookie-banner-title",styles:"custom-title"}]})}),(0,external_vitest_namespaceObject.test)("should handle empty strings and empty style objects in theme prop gracefully",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:{"banner.root":"","banner.card":"","banner.header.root":"","banner.header.title":"","banner.header.description":"","banner.footer":{className:"",style:{margin:"0",padding:"0"}}}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"cookie-banner-root",styles:""},{testId:"cookie-banner-title",styles:""},{testId:"cookie-banner-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_cookie_banner_cjs_namespaceObject=require("../cookie-banner.cjs"),test_helpers_cjs_namespaceObject=require("../../../utils/test-helpers.cjs");var test_helpers_cjs_default=__webpack_require__.n(test_helpers_cjs_namespaceObject);external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({showPopup:!0,...external_vitest_namespaceObject.vi.fn()})})),external_vitest_namespaceObject.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({cookieBanner:{title:"Cookie Settings",description:"We use cookies to enhance your experience",acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize"}})}));let ALL_COMPONENTS=[{testId:"cookie-banner-root",themeKey:"banner.root",styles:"custom-root"},{testId:"cookie-banner-card",themeKey:"banner.card",styles:"custom-card"},{testId:"cookie-banner-header",themeKey:"banner.header.root",styles:"custom-header"},{testId:"cookie-banner-title",themeKey:"banner.header.title",styles:"custom-title"},{testId:"cookie-banner-description",themeKey:"banner.header.description",styles:"custom-description"},{testId:"cookie-banner-footer",themeKey:"banner.footer",styles:"custom-footer"},{testId:"cookie-banner-footer-sub-group",themeKey:"banner.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"cookie-banner-overlay",themeKey:"banner.overlay",styles:"custom-overlay"},{testId:"cookie-banner-reject-button",themeKey:"banner.footer.reject-button",styles:"custom-reject-button"},{testId:"cookie-banner-customize-button",themeKey:"banner.footer.customize-button",styles:"custom-customize-button"},{testId:"cookie-banner-accept-button",themeKey:"banner.footer.accept-button",styles:"custom-accept-button"}];for(var __webpack_i__ in(0,external_vitest_namespaceObject.test)("Theme prop applies string classnames to all components",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,external_vitest_namespaceObject.test)("Theme prop supports object format with className and style for all components",async()=>{let e={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},t=ALL_COMPONENTS.map(({testId:t,themeKey:s,styles:a})=>({testId:t,themeKey:s,className:a,style:e})),s=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:t.reduce((e,{themeKey:t,className:s,style:a})=>(e[t]={className:s,style:a},e),{})});await test_helpers_cjs_default()({component:s,testCases:t.map(({testId:e,className:t,style:s})=>({testId:e,styles:{className:t,style:s}}))})}),(0,external_vitest_namespaceObject.test)("No style prop removes default styles but keeps custom classNames",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,noStyle:!0,theme:ALL_COMPONENTS.reduce((e,{themeKey:t,styles:s})=>(e[t]=s,e),{})});await test_helpers_cjs_default()({component:e,testCases:ALL_COMPONENTS.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,external_vitest_namespaceObject.test)("Theme prop handles mixed format (string and object) correctly",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:{"banner.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"banner.header.title":"custom-title"}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"cookie-banner-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"cookie-banner-title",styles:"custom-title"}]})}),(0,external_vitest_namespaceObject.test)("Theme prop handles edge cases gracefully",async()=>{let e=(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0,theme:{"banner.root":"","banner.card":"","banner.header.root":"","banner.header.title":"","banner.header.description":"","banner.footer":{className:"",style:{margin:"0",padding:"0"}}}});await test_helpers_cjs_default()({component:e,testCases:[{testId:"cookie-banner-root",styles:""},{testId:"cookie-banner-title",styles:""},{testId:"cookie-banner-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- import*as e from"react/jsx-runtime";import*as t from"vitest";import*as o from"../cookie-banner.js";import*as s from"../../../utils/test-helpers.js";t.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({showPopup:!0,...t.vi.fn()})})),t.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({cookieBanner:{title:"Cookie Settings",description:"We use cookies to enhance your experience",acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize"}})}));let n=[{testId:"cookie-banner-root",themeKey:"banner.root",styles:"custom-root"},{testId:"cookie-banner-card",themeKey:"banner.card",styles:"custom-card"},{testId:"cookie-banner-header",themeKey:"banner.header.root",styles:"custom-header"},{testId:"cookie-banner-title",themeKey:"banner.header.title",styles:"custom-title"},{testId:"cookie-banner-description",themeKey:"banner.header.description",styles:"custom-description"},{testId:"cookie-banner-footer",themeKey:"banner.footer",styles:"custom-footer"},{testId:"cookie-banner-footer-sub-group",themeKey:"banner.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"cookie-banner-overlay",themeKey:"banner.overlay",styles:"custom-overlay"},{testId:"cookie-banner-reject-button",themeKey:"banner.footer.reject-button",styles:"custom-reject-button"},{testId:"cookie-banner-customize-button",themeKey:"banner.footer.customize-button",styles:"custom-customize-button"},{testId:"cookie-banner-accept-button",themeKey:"banner.footer.accept-button",styles:"custom-accept-button"}];(0,t.test)("should apply string classNames from theme prop to all banner elements",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:n.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,s.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,t.test)("should apply className and style objects from theme prop to all banner elements",async()=>{let t={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},a=n.map(({testId:e,themeKey:o,styles:s})=>({testId:e,themeKey:o,className:s,style:t})),r=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:a.reduce((e,{themeKey:t,className:o,style:s})=>(e[t]={className:o,style:s},e),{})});await (0,s.default)({component:r,testCases:a.map(({testId:e,className:t,style:o})=>({testId:e,styles:{className:t,style:o}}))})}),(0,t.test)("should remove default styles but keep custom classNames when top-level noStyle prop is true",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,noStyle:!0,theme:n.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,s.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,t.test)("should remove default styles but keep custom classNames when theme object provides noStyle: true",async()=>{let t=n.reduce((e,{themeKey:t,styles:o})=>(e[t]={className:o,noStyle:!0},e),{}),a=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,noStyle:!0,theme:t});await (0,s.default)({component:a,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:{className:t}}))})}),(0,t.test)("should correctly apply styles when theme prop uses mixed string and object formats",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:{"banner.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"banner.header.title":"custom-title"}});await (0,s.default)({component:t,testCases:[{testId:"cookie-banner-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"cookie-banner-title",styles:"custom-title"}]})}),(0,t.test)("should handle empty strings and empty style objects in theme prop gracefully",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:{"banner.root":"","banner.card":"","banner.header.root":"","banner.header.title":"","banner.header.description":"","banner.footer":{className:"",style:{margin:"0",padding:"0"}}}});await (0,s.default)({component:t,testCases:[{testId:"cookie-banner-root",styles:""},{testId:"cookie-banner-title",styles:""},{testId:"cookie-banner-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})});
1
+ import*as e from"react/jsx-runtime";import*as t from"vitest";import*as o from"../cookie-banner.js";import*as s from"../../../utils/test-helpers.js";t.vi.mock("~/hooks/use-consent-manager",()=>({useConsentManager:()=>({showPopup:!0,...t.vi.fn()})})),t.vi.mock("~/hooks/use-translations",()=>({useTranslations:()=>({cookieBanner:{title:"Cookie Settings",description:"We use cookies to enhance your experience",acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize"}})}));let n=[{testId:"cookie-banner-root",themeKey:"banner.root",styles:"custom-root"},{testId:"cookie-banner-card",themeKey:"banner.card",styles:"custom-card"},{testId:"cookie-banner-header",themeKey:"banner.header.root",styles:"custom-header"},{testId:"cookie-banner-title",themeKey:"banner.header.title",styles:"custom-title"},{testId:"cookie-banner-description",themeKey:"banner.header.description",styles:"custom-description"},{testId:"cookie-banner-footer",themeKey:"banner.footer",styles:"custom-footer"},{testId:"cookie-banner-footer-sub-group",themeKey:"banner.footer.sub-group",styles:"custom-footer-sub-group"},{testId:"cookie-banner-overlay",themeKey:"banner.overlay",styles:"custom-overlay"},{testId:"cookie-banner-reject-button",themeKey:"banner.footer.reject-button",styles:"custom-reject-button"},{testId:"cookie-banner-customize-button",themeKey:"banner.footer.customize-button",styles:"custom-customize-button"},{testId:"cookie-banner-accept-button",themeKey:"banner.footer.accept-button",styles:"custom-accept-button"}];(0,t.test)("Theme prop applies string classnames to all components",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:n.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,s.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t}))})}),(0,t.test)("Theme prop supports object format with className and style for all components",async()=>{let t={backgroundColor:"#ffffff",padding:"20px",border:"1px solid #000000"},r=n.map(({testId:e,themeKey:o,styles:s})=>({testId:e,themeKey:o,className:s,style:t})),a=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:r.reduce((e,{themeKey:t,className:o,style:s})=>(e[t]={className:o,style:s},e),{})});await (0,s.default)({component:a,testCases:r.map(({testId:e,className:t,style:o})=>({testId:e,styles:{className:t,style:o}}))})}),(0,t.test)("No style prop removes default styles but keeps custom classNames",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,noStyle:!0,theme:n.reduce((e,{themeKey:t,styles:o})=>(e[t]=o,e),{})});await (0,s.default)({component:t,testCases:n.map(({testId:e,styles:t})=>({testId:e,styles:t})),noStyle:!0})}),(0,t.test)("Theme prop handles mixed format (string and object) correctly",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:{"banner.root":{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}},"banner.header.title":"custom-title"}});await (0,s.default)({component:t,testCases:[{testId:"cookie-banner-root",styles:{className:"custom-root",style:{backgroundColor:"rgb(255, 255, 255)",padding:"16px"}}},{testId:"cookie-banner-title",styles:"custom-title"}]})}),(0,t.test)("Theme prop handles edge cases gracefully",async()=>{let t=(0,e.jsx)(o.CookieBanner,{scrollLock:!0,theme:{"banner.root":"","banner.card":"","banner.header.root":"","banner.header.title":"","banner.header.description":"","banner.footer":{className:"",style:{margin:"0",padding:"0"}}}});await (0,s.default)({component:t,testCases:[{testId:"cookie-banner-root",styles:""},{testId:"cookie-banner-title",styles:""},{testId:"cookie-banner-footer",styles:{className:"",style:{margin:"0",padding:"0"}}}]})});
@@ -1 +1 @@
1
- import*as e from"./use-theme.js";export*from"./use-consent-manager.js";export*from"./use-focus-trap.js";export*from"./use-translations.js";var o={"~/hooks/use-theme":function(o){o.exports=e}},r={};!function e(s){var t=r[s];if(void 0!==t)return t.exports;var n=r[s]={exports:{}};return o[s](n,n.exports,e),n.exports}("~/hooks/use-theme");
1
+ export*from"./use-consent-manager.js";export*from"./use-focus-trap.js";export*from"./use-theme.js";export*from"./use-translations.js";
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:_[t]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useStyles:()=>useStyles});let external_react_namespaceObject=require("react"),external_use_theme_cjs_namespaceObject=require("./use-theme.cjs"),merge_styles_cjs_namespaceObject=require("../utils/merge-styles.cjs");function useStyles(e,_){let{noStyle:t,theme:r}=(0,external_use_theme_cjs_namespaceObject.useTheme)(),s="object"==typeof _&&"noStyle"in _?_.noStyle:t,a=(0,external_react_namespaceObject.useMemo)(()=>e?r?.[e]:void 0,[e,r]),c=(0,external_react_namespaceObject.useMemo)(()=>(0,merge_styles_cjs_namespaceObject.mergeStyles)(a,_),[a,_]);return(0,external_react_namespaceObject.useMemo)(()=>s?a?"string"==typeof a?{className:a}:{className:a.className,style:a.style}:{}:{style:c.style,className:c.className||void 0},[c,s,a])}for(var __webpack_i__ in exports.useStyles=__webpack_exports__.useStyles,__webpack_exports__)-1===["useStyles"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
2
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var t in _)__webpack_require__.o(_,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:_[t]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useStyles:()=>useStyles});let external_react_namespaceObject=require("react"),external_use_theme_cjs_namespaceObject=require("./use-theme.cjs"),merge_styles_cjs_namespaceObject=require("../utils/merge-styles.cjs");function useStyles(e,_){let{noStyle:t,theme:r}=(0,external_use_theme_cjs_namespaceObject.useTheme)(),a="object"==typeof _&&"noStyle"in _?_.noStyle:t,s=(0,external_react_namespaceObject.useMemo)(()=>e?r?.[e]:null,[e,r]),c=(0,external_react_namespaceObject.useMemo)(()=>({className:"string"==typeof _?_:_?.className,style:void 0}),[_]),l=(0,external_react_namespaceObject.useMemo)(()=>s?(0,merge_styles_cjs_namespaceObject.mergeStyles)(c,s):c,[c,s]),n=(0,external_react_namespaceObject.useMemo)(()=>_?(0,merge_styles_cjs_namespaceObject.mergeStyles)(l,_):l,[l,_]);return(0,external_react_namespaceObject.useMemo)(()=>{if(a)return s?"string"==typeof s?{className:s}:{className:s.className,style:s.style}:{};let e=Array.from(new Set(["string"==typeof _?_:_?.className,n.className].filter(Boolean).flat())).join(" ");return{...n,className:e}},[n,a,s,_])}for(var __webpack_i__ in exports.useStyles=__webpack_exports__.useStyles,__webpack_exports__)-1===["useStyles"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- {"version":3,"file":"use-styles.d.ts","sourceRoot":"","sources":["../../src/hooks/use-styles.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,wBAAgB,SAAS,CACxB,QAAQ,EAAE,YAAY,EACtB,cAAc,CAAC,EAAE,UAAU,GACzB,cAAc,CA4ChB"}
1
+ {"version":3,"file":"use-styles.d.ts","sourceRoot":"","sources":["../../src/hooks/use-styles.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,wBAAgB,SAAS,CACxB,QAAQ,EAAE,YAAY,EACtB,cAAc,CAAC,EAAE,UAAU,GACzB,cAAc,CA+EhB"}
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import*as e from"react";import*as s from"./use-theme.js";import*as t from"../utils/merge-styles.js";function o(o,m){let{noStyle:l,theme:a}=(0,s.useTheme)(),r="object"==typeof m&&"noStyle"in m?m.noStyle:l,y=(0,e.useMemo)(()=>o?a?.[o]:void 0,[o,a]),i=(0,e.useMemo)(()=>(0,t.mergeStyles)(y,m),[y,m]);return(0,e.useMemo)(()=>r?y?"string"==typeof y?{className:y}:{className:y.className,style:y.style}:{}:{style:i.style,className:i.className||void 0},[i,r,y])}export{o as useStyles};
2
+ import*as e from"react";import*as s from"./use-theme.js";import*as t from"../utils/merge-styles.js";function l(l,o){let{noStyle:m,theme:r}=(0,s.useTheme)(),a="object"==typeof o&&"noStyle"in o?o.noStyle:m,n=(0,e.useMemo)(()=>l?r?.[l]:null,[l,r]),y=(0,e.useMemo)(()=>({className:"string"==typeof o?o:o?.className,style:void 0}),[o]),u=(0,e.useMemo)(()=>n?(0,t.mergeStyles)(y,n):y,[y,n]),i=(0,e.useMemo)(()=>o?(0,t.mergeStyles)(u,o):u,[u,o]);return(0,e.useMemo)(()=>{if(a)return n?"string"==typeof n?{className:n}:{className:n.className,style:n.style}:{};let e=Array.from(new Set(["string"==typeof o?o:o?.className,i.className].filter(Boolean).flat())).join(" ");return{...i,className:e}},[i,a,n,o])}export{l as useStyles};
@@ -1 +1 @@
1
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{mergeStyles:()=>mergeStyles});let external_cn_cjs_namespaceObject=require("./cn.cjs");function normalizeStyleValue(e){return"string"==typeof e?{className:e}:"object"==typeof e&&null!==e?{className:e.className,style:e.style}:{}}function mergeStyles(e,_){let r=normalizeStyleValue(e),t=normalizeStyleValue(_);return{className:(0,external_cn_cjs_namespaceObject.cnExt)([r.className,t.className])||void 0,style:r.style||t.style?{...r.style,...t.style}:void 0}}for(var __webpack_i__ in exports.mergeStyles=__webpack_exports__.mergeStyles,__webpack_exports__)-1===["mergeStyles"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{mergeStyles:()=>mergeStyles});let external_cn_cjs_namespaceObject=require("./cn.cjs");function mergeStyles(e,_){let r=e=>{if("string"==typeof e||void 0===e||"className"in e||"style"in e||"noStyle"in e)return e},t=r(Array.isArray(e)?e[0]:e),o=r(_);if("object"==typeof t&&t?.noStyle||"object"==typeof o&&o?.noStyle)return{className:void 0,style:void 0};let a=(0,external_cn_cjs_namespaceObject.cnExt)(["string"==typeof t?t:t?.className,"string"==typeof o?o:o?.className,"object"==typeof t&&t?.baseClassName,"object"==typeof o&&o?.baseClassName]),c={..."object"==typeof t&&t?.style,..."object"==typeof o&&o?.style};return{className:a||void 0,style:Object.keys(c).length>0?c:void 0}}for(var __webpack_i__ in exports.mergeStyles=__webpack_exports__.mergeStyles,__webpack_exports__)-1===["mergeStyles"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1,13 +1,11 @@
1
1
  import type { ClassNameStyle, ThemeValue } from '../types/theme';
2
2
  /**
3
- * Merges two style representations (ThemeValue) into a single ClassNameStyle object.
4
- * It combines classNames and deeply merges style objects.
5
- * Style properties from style2 take precedence over style1.
6
- * The `noStyle` property is ignored by this function; handling `noStyle` is the responsibility of the caller.
3
+ * Merges two styles objects, handling theme values and style properties.
7
4
  *
8
- * @param style1 - The base style object or className string.
9
- * @param style2 - The style object or className string to merge over style1.
10
- * @returns The merged ClassNameStyle object containing combined className and style.
5
+ * @param style1 - The first style object to merge
6
+ * @param style2 - The second style object to merge (Takes precedence over style1)
7
+ *
8
+ * @returns The merged styles object
11
9
  */
12
- export declare function mergeStyles(style1: ThemeValue | undefined, style2: ThemeValue | undefined): ClassNameStyle;
10
+ export declare function mergeStyles(style1: ThemeValue, style2?: ThemeValue): ClassNameStyle;
13
11
  //# sourceMappingURL=merge-styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-styles.d.ts","sourceRoot":"","sources":["../../src/utils/merge-styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA2BhE;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,MAAM,EAAE,UAAU,GAAG,SAAS,GAC5B,cAAc,CAmBhB"}
1
+ {"version":3,"file":"merge-styles.d.ts","sourceRoot":"","sources":["../../src/utils/merge-styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhE;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,UAAU,GACjB,cAAc,CA2ChB"}
@@ -1 +1 @@
1
- import*as e from"./cn.js";function s(e){return"string"==typeof e?{className:e}:"object"==typeof e&&null!==e?{className:e.className,style:e.style}:{}}function t(t,l){let a=s(t),c=s(l);return{className:(0,e.cnExt)([a.className,c.className])||void 0,style:a.style||c.style?{...a.style,...c.style}:void 0}}export{t as mergeStyles};
1
+ import*as e from"./cn.js";function t(t,s){let o=e=>{if("string"==typeof e||void 0===e||"className"in e||"style"in e||"noStyle"in e)return e},y=o(Array.isArray(t)?t[0]:t),a=o(s);if("object"==typeof y&&y?.noStyle||"object"==typeof a&&a?.noStyle)return{className:void 0,style:void 0};let l=(0,e.cnExt)(["string"==typeof y?y:y?.className,"string"==typeof a?a:a?.className,"object"==typeof y&&y?.baseClassName,"object"==typeof a&&a?.baseClassName]),n={..."object"==typeof y&&y?.style,..."object"==typeof a&&a?.style};return{className:l||void 0,style:Object.keys(n).length>0?n:void 0}}export{t as mergeStyles};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c15t/react",
3
- "version": "1.1.2-canary.2",
3
+ "version": "1.1.2",
4
4
  "license": "GPL-3.0-only",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -68,7 +68,7 @@
68
68
  "@radix-ui/react-switch": "1.1.4",
69
69
  "clsx": "2.1.1",
70
70
  "zustand": "^5.0.3",
71
- "c15t": "1.1.2-canary.2"
71
+ "c15t": "1.0.6"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@c15t/vitest-config": "1.0.0",