@c15t/react 0.0.1-rc.8 → 1.0.0

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.
Files changed (213) hide show
  1. package/dist/components/consent-manager-dialog/__tests__/styles.spec.cjs +41 -20
  2. package/dist/components/consent-manager-dialog/__tests__/styles.spec.js +34 -6
  3. package/dist/components/consent-manager-dialog/atoms/dialog-card.cjs +67 -32
  4. package/dist/components/consent-manager-dialog/atoms/dialog-card.d.ts +9 -3
  5. package/dist/components/consent-manager-dialog/atoms/dialog-card.d.ts.map +1 -1
  6. package/dist/components/consent-manager-dialog/atoms/dialog-card.js +26 -12
  7. package/dist/components/consent-manager-dialog/atoms/overlay.cjs +20 -19
  8. package/dist/components/consent-manager-dialog/atoms/overlay.d.ts.map +1 -1
  9. package/dist/components/consent-manager-dialog/atoms/overlay.js +7 -4
  10. package/dist/components/consent-manager-dialog/consent-manager-dialog.cjs +20 -16
  11. package/dist/components/consent-manager-dialog/consent-manager-dialog.d.ts +0 -2
  12. package/dist/components/consent-manager-dialog/consent-manager-dialog.d.ts.map +1 -1
  13. package/dist/components/consent-manager-dialog/consent-manager-dialog.js +10 -2
  14. package/dist/components/consent-manager-dialog/consent-manager-dialog.module.cjs +12 -10
  15. package/dist/components/consent-manager-dialog/consent-manager-dialog.module.js +4 -2
  16. package/dist/components/consent-manager-dialog/consent-manager-dialog_module.css +29 -15
  17. package/dist/components/consent-manager-dialog/index.cjs +43 -17
  18. package/dist/components/consent-manager-dialog/theme.cjs +3 -4
  19. package/dist/components/consent-manager-widget/__tests__/styles.spec.cjs +41 -20
  20. package/dist/components/consent-manager-widget/__tests__/styles.spec.js +34 -6
  21. package/dist/components/consent-manager-widget/atoms/accordion.cjs +50 -24
  22. package/dist/components/consent-manager-widget/atoms/accordion.d.ts.map +1 -1
  23. package/dist/components/consent-manager-widget/atoms/button.cjs +27 -13
  24. package/dist/components/consent-manager-widget/atoms/footer.cjs +19 -17
  25. package/dist/components/consent-manager-widget/atoms/root.cjs +10 -8
  26. package/dist/components/consent-manager-widget/consent-manager-widget.cjs +11 -22
  27. package/dist/components/consent-manager-widget/consent-manager-widget.d.ts.map +1 -1
  28. package/dist/components/consent-manager-widget/consent-manager-widget.js +3 -14
  29. package/dist/components/consent-manager-widget/consent-manager-widget.module.cjs +12 -13
  30. package/dist/components/consent-manager-widget/consent-manager-widget.module.js +4 -5
  31. package/dist/components/consent-manager-widget/consent-manager-widget_module.css +24 -29
  32. package/dist/components/consent-manager-widget/index.cjs +87 -29
  33. package/dist/components/consent-manager-widget/theme.cjs +3 -4
  34. package/dist/components/consent-manager-widget/types.cjs +3 -4
  35. package/dist/components/cookie-banner/__tests__/cookie-banner.e2e.test.cjs +189 -0
  36. package/dist/components/cookie-banner/__tests__/cookie-banner.e2e.test.d.ts +2 -0
  37. package/dist/components/cookie-banner/__tests__/cookie-banner.e2e.test.d.ts.map +1 -0
  38. package/dist/components/cookie-banner/__tests__/cookie-banner.e2e.test.js +183 -0
  39. package/dist/components/cookie-banner/__tests__/styles.spec.cjs +35 -20
  40. package/dist/components/cookie-banner/__tests__/styles.spec.js +28 -6
  41. package/dist/components/cookie-banner/atoms/overlay.cjs +18 -18
  42. package/dist/components/cookie-banner/atoms/overlay.d.ts.map +1 -1
  43. package/dist/components/cookie-banner/atoms/overlay.js +7 -5
  44. package/dist/components/cookie-banner/atoms/root.cjs +17 -17
  45. package/dist/components/cookie-banner/atoms/root.d.ts +14 -0
  46. package/dist/components/cookie-banner/atoms/root.d.ts.map +1 -1
  47. package/dist/components/cookie-banner/atoms/root.js +6 -4
  48. package/dist/components/cookie-banner/components.cjs +69 -28
  49. package/dist/components/cookie-banner/components.d.ts.map +1 -1
  50. package/dist/components/cookie-banner/components.js +14 -3
  51. package/dist/components/cookie-banner/cookie-banner.cjs +11 -9
  52. package/dist/components/cookie-banner/cookie-banner.d.ts +12 -0
  53. package/dist/components/cookie-banner/cookie-banner.d.ts.map +1 -1
  54. package/dist/components/cookie-banner/cookie-banner.js +3 -1
  55. package/dist/components/cookie-banner/cookie-banner.module.cjs +10 -10
  56. package/dist/components/cookie-banner/cookie-banner.module.js +2 -2
  57. package/dist/components/cookie-banner/cookie-banner_module.css +7 -7
  58. package/dist/components/cookie-banner/error-boundary.cjs +8 -9
  59. package/dist/components/cookie-banner/error-boundary.d.ts +1 -1
  60. package/dist/components/cookie-banner/error-boundary.js +0 -1
  61. package/dist/components/cookie-banner/index.cjs +65 -23
  62. package/dist/components/cookie-banner/theme.cjs +3 -4
  63. package/dist/components/shared/libs/polymorphic.cjs +3 -4
  64. package/dist/components/shared/libs/polymorphic.d.ts +1 -7
  65. package/dist/components/shared/libs/polymorphic.d.ts.map +1 -1
  66. package/dist/components/shared/libs/recursive-clone-children.cjs +8 -8
  67. package/dist/components/shared/primitives/box.cjs +10 -10
  68. package/dist/components/shared/primitives/box.d.ts.map +1 -1
  69. package/dist/components/shared/primitives/box.js +3 -3
  70. package/dist/components/shared/primitives/button.cjs +9 -9
  71. package/dist/components/shared/primitives/button.d.ts +2 -102
  72. package/dist/components/shared/primitives/button.d.ts.map +1 -1
  73. package/dist/components/shared/primitives/button.js +2 -2
  74. package/dist/components/shared/primitives/button.types.cjs +3 -4
  75. package/dist/components/shared/primitives/button.types.d.ts +1 -8
  76. package/dist/components/shared/primitives/button.types.d.ts.map +1 -1
  77. package/dist/components/shared/ui/accordion/accordion.cjs +25 -17
  78. package/dist/components/shared/ui/accordion/accordion.d.ts.map +1 -1
  79. package/dist/components/shared/ui/accordion/accordion.js +8 -8
  80. package/dist/components/shared/ui/accordion/accordion.module.cjs +11 -11
  81. package/dist/components/shared/ui/accordion/accordion.module.js +3 -3
  82. package/dist/components/shared/ui/accordion/accordion.types.cjs +3 -4
  83. package/dist/components/shared/ui/accordion/accordion.types.d.ts +0 -10
  84. package/dist/components/shared/ui/accordion/accordion.types.d.ts.map +1 -1
  85. package/dist/components/shared/ui/accordion/accordion_module.css +39 -19
  86. package/dist/components/shared/ui/accordion/index.cjs +7 -14
  87. package/dist/components/shared/ui/button/button.cjs +16 -16
  88. package/dist/components/shared/ui/button/button.d.ts +4 -204
  89. package/dist/components/shared/ui/button/button.d.ts.map +1 -1
  90. package/dist/components/shared/ui/button/button.module.cjs +10 -10
  91. package/dist/components/shared/ui/button/button.module.js +2 -2
  92. package/dist/components/shared/ui/button/button.types.cjs +3 -4
  93. package/dist/components/shared/ui/button/button_module.css +40 -19
  94. package/dist/components/shared/ui/button/index.cjs +7 -14
  95. package/dist/components/shared/ui/icon.cjs +8 -8
  96. package/dist/components/shared/ui/icon.d.ts.map +1 -1
  97. package/dist/components/shared/ui/logo.cjs +43 -54
  98. package/dist/components/shared/ui/logo.d.ts +3 -2
  99. package/dist/components/shared/ui/logo.d.ts.map +1 -1
  100. package/dist/components/shared/ui/logo.js +32 -46
  101. package/dist/components/shared/ui/switch/index.cjs +7 -14
  102. package/dist/components/shared/ui/switch/switch.cjs +11 -15
  103. package/dist/components/shared/ui/switch/switch.d.ts.map +1 -1
  104. package/dist/components/shared/ui/switch/switch.js +3 -3
  105. package/dist/components/shared/ui/switch/switch.module.cjs +10 -10
  106. package/dist/components/shared/ui/switch/switch.module.js +2 -2
  107. package/dist/components/shared/ui/switch/switch.types.cjs +3 -4
  108. package/dist/components/shared/ui/switch/switch_module.css +32 -10
  109. package/dist/context/consent-manager-context.cjs +9 -9
  110. package/dist/context/consent-manager-context.d.ts +29 -10
  111. package/dist/context/consent-manager-context.d.ts.map +1 -1
  112. package/dist/context/consent-manager-context.js +1 -1
  113. package/dist/context/theme-context.cjs +17 -9
  114. package/dist/context/theme-context.d.ts +16 -1
  115. package/dist/context/theme-context.d.ts.map +1 -1
  116. package/dist/context/theme-context.js +7 -1
  117. package/dist/hooks/__tests__/use-consent-manager.test.cjs +76 -0
  118. package/dist/hooks/__tests__/use-consent-manager.test.d.ts +2 -0
  119. package/dist/hooks/__tests__/use-consent-manager.test.d.ts.map +1 -0
  120. package/dist/hooks/__tests__/use-consent-manager.test.js +70 -0
  121. package/dist/hooks/__tests__/use-styles.test.cjs +76 -0
  122. package/dist/hooks/__tests__/use-styles.test.d.ts +2 -0
  123. package/dist/hooks/__tests__/use-styles.test.d.ts.map +1 -0
  124. package/dist/hooks/__tests__/use-styles.test.js +70 -0
  125. package/dist/hooks/__tests__/use-theme.test.cjs +86 -0
  126. package/dist/hooks/__tests__/use-theme.test.d.ts +2 -0
  127. package/dist/hooks/__tests__/use-theme.test.d.ts.map +1 -0
  128. package/dist/hooks/__tests__/use-theme.test.js +80 -0
  129. package/dist/hooks/index.cjs +23 -21
  130. package/dist/hooks/index.d.ts +1 -0
  131. package/dist/hooks/index.d.ts.map +1 -1
  132. package/dist/hooks/index.js +18 -1
  133. package/dist/hooks/use-color-scheme.cjs +66 -0
  134. package/dist/hooks/use-color-scheme.d.ts +16 -0
  135. package/dist/hooks/use-color-scheme.d.ts.map +1 -0
  136. package/dist/hooks/use-color-scheme.js +32 -0
  137. package/dist/hooks/use-consent-manager.cjs +13 -9
  138. package/dist/hooks/use-consent-manager.d.ts +13 -5
  139. package/dist/hooks/use-consent-manager.d.ts.map +1 -1
  140. package/dist/hooks/use-consent-manager.js +5 -1
  141. package/dist/hooks/use-focus-trap.cjs +76 -0
  142. package/dist/hooks/use-focus-trap.d.ts +15 -0
  143. package/dist/hooks/use-focus-trap.d.ts.map +1 -0
  144. package/dist/hooks/use-focus-trap.js +42 -0
  145. package/dist/hooks/use-scroll-lock.cjs +55 -0
  146. package/dist/hooks/use-scroll-lock.d.ts +26 -0
  147. package/dist/hooks/use-scroll-lock.d.ts.map +1 -0
  148. package/dist/hooks/use-scroll-lock.js +21 -0
  149. package/dist/{utils → hooks}/use-styles.cjs +13 -13
  150. package/dist/{utils → hooks}/use-styles.d.ts.map +1 -1
  151. package/dist/{utils → hooks}/use-styles.js +5 -5
  152. package/dist/hooks/use-theme.cjs +10 -12
  153. package/dist/hooks/use-theme.d.ts.map +1 -1
  154. package/dist/hooks/use-theme.js +2 -4
  155. package/dist/hooks/use-translations.cjs +8 -8
  156. package/dist/index.cjs +66 -30
  157. package/dist/index.d.ts +9 -10
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +12 -4
  160. package/dist/providers/__tests__/provider-basic.test.cjs +127 -0
  161. package/dist/providers/__tests__/provider-basic.test.d.ts +2 -0
  162. package/dist/providers/__tests__/provider-basic.test.d.ts.map +1 -0
  163. package/dist/providers/__tests__/provider-basic.test.js +121 -0
  164. package/dist/providers/__tests__/provider-context.test.cjs +139 -0
  165. package/dist/providers/__tests__/provider-context.test.d.ts +2 -0
  166. package/dist/providers/__tests__/provider-context.test.d.ts.map +1 -0
  167. package/dist/providers/__tests__/provider-context.test.js +133 -0
  168. package/dist/providers/__tests__/provider-errors.test.cjs +98 -0
  169. package/dist/providers/__tests__/provider-errors.test.d.ts +2 -0
  170. package/dist/providers/__tests__/provider-errors.test.d.ts.map +1 -0
  171. package/dist/providers/__tests__/provider-errors.test.js +92 -0
  172. package/dist/providers/__tests__/test-helpers.cjs +171 -0
  173. package/dist/providers/__tests__/test-helpers.d.ts +6 -0
  174. package/dist/providers/__tests__/test-helpers.d.ts.map +1 -0
  175. package/dist/providers/__tests__/test-helpers.js +134 -0
  176. package/dist/providers/consent-manager-provider.cjs +95 -38
  177. package/dist/providers/consent-manager-provider.d.ts +16 -2
  178. package/dist/providers/consent-manager-provider.d.ts.map +1 -1
  179. package/dist/providers/consent-manager-provider.js +87 -30
  180. package/dist/types/consent-manager.cjs +3 -4
  181. package/dist/types/consent-manager.d.ts +47 -72
  182. package/dist/types/consent-manager.d.ts.map +1 -1
  183. package/dist/types/theme/index.cjs +7 -14
  184. package/dist/types/theme/style-keys.cjs +3 -4
  185. package/dist/types/theme/style-types.cjs +3 -4
  186. package/dist/utils/cn.cjs +10 -16
  187. package/dist/utils/cn.d.ts +1 -5
  188. package/dist/utils/cn.d.ts.map +1 -1
  189. package/dist/utils/cn.js +1 -2
  190. package/dist/utils/merge-styles.cjs +8 -8
  191. package/dist/utils/test-helpers.cjs +70 -0
  192. package/dist/utils/test-helpers.d.ts +30 -0
  193. package/dist/utils/test-helpers.d.ts.map +1 -0
  194. package/dist/utils/test-helpers.js +33 -0
  195. package/dist/utils/translations.cjs +12 -8
  196. package/package.json +17 -12
  197. package/dist/components/consent-manager-dialog/__tests__/utils.cjs +0 -68
  198. package/dist/components/consent-manager-dialog/__tests__/utils.d.ts +0 -13
  199. package/dist/components/consent-manager-dialog/__tests__/utils.d.ts.map +0 -1
  200. package/dist/components/consent-manager-dialog/__tests__/utils.js +0 -34
  201. package/dist/components/consent-manager-widget/__tests__/utils.cjs +0 -68
  202. package/dist/components/consent-manager-widget/__tests__/utils.d.ts +0 -13
  203. package/dist/components/consent-manager-widget/__tests__/utils.d.ts.map +0 -1
  204. package/dist/components/consent-manager-widget/__tests__/utils.js +0 -34
  205. package/dist/components/consent-manager-widget/atoms/logo.cjs +0 -101
  206. package/dist/components/consent-manager-widget/atoms/logo.d.ts +0 -8
  207. package/dist/components/consent-manager-widget/atoms/logo.d.ts.map +0 -1
  208. package/dist/components/consent-manager-widget/atoms/logo.js +0 -67
  209. package/dist/components/cookie-banner/__tests__/utils.cjs +0 -67
  210. package/dist/components/cookie-banner/__tests__/utils.d.ts +0 -13
  211. package/dist/components/cookie-banner/__tests__/utils.d.ts.map +0 -1
  212. package/dist/components/cookie-banner/__tests__/utils.js +0 -33
  213. /package/dist/{utils → hooks}/use-styles.d.ts +0 -0
@@ -0,0 +1,183 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from "react/jsx-runtime";
2
+ import * as __WEBPACK_EXTERNAL_MODULE_vitest__ from "vitest";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__ from "vitest-browser-react";
4
+ import * as __WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__ from "../../consent-manager-dialog/consent-manager-dialog.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__ from "../../../providers/consent-manager-provider.js";
6
+ import * as __WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__ from "../cookie-banner.js";
7
+ let mockShowPopup = true;
8
+ let mockIsPrivacyDialogOpen = false;
9
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('~/hooks/use-consent-manager', async (importOriginal)=>{
10
+ const realModule = await importOriginal();
11
+ return {
12
+ useConsentManager: ()=>({
13
+ ...realModule.useConsentManager(),
14
+ showPopup: mockShowPopup,
15
+ isPrivacyDialogOpen: mockIsPrivacyDialogOpen,
16
+ setShowPopup: (value)=>{
17
+ mockShowPopup = value;
18
+ },
19
+ setIsPrivacyDialogOpen: (value)=>{
20
+ mockIsPrivacyDialogOpen = value;
21
+ }
22
+ })
23
+ };
24
+ });
25
+ const localStorageMock = (()=>{
26
+ let store = {};
27
+ return {
28
+ getItem: (key)=>store[key] || null,
29
+ setItem: (key, value)=>{
30
+ store[key] = value.toString();
31
+ },
32
+ removeItem: (key)=>{
33
+ delete store[key];
34
+ },
35
+ clear: ()=>{
36
+ store = {};
37
+ }
38
+ };
39
+ })();
40
+ Object.defineProperty(window, 'localStorage', {
41
+ value: localStorageMock
42
+ });
43
+ const defaultOptions = {
44
+ mode: 'offline'
45
+ };
46
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.describe)('CookieBanner E2E Tests', ()=>{
47
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.beforeEach)(()=>{
48
+ window.localStorage.clear();
49
+ mockShowPopup = true;
50
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.clearAllMocks();
51
+ });
52
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('should show cookie banner on first visit', async ()=>{
53
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__.ConsentManagerProvider, {
54
+ options: defaultOptions,
55
+ children: [
56
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {}),
57
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__.ConsentManagerDialog, {})
58
+ ]
59
+ }));
60
+ const element = document.body.querySelector('[data-testid="cookie-banner-root"]');
61
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(element).toBeInTheDocument();
62
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockShowPopup).toBe(true);
63
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument();
64
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument();
65
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument();
66
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument();
67
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument();
68
+ });
69
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('should accept all cookies when clicking Accept All', async ()=>{
70
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__.ConsentManagerProvider, {
71
+ options: defaultOptions,
72
+ children: [
73
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {}),
74
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__.ConsentManagerDialog, {})
75
+ ]
76
+ }));
77
+ const acceptButton = document.querySelector('[data-testid="cookie-banner-accept-button"]');
78
+ acceptButton?.dispatchEvent(new MouseEvent('click', {
79
+ bubbles: true
80
+ }));
81
+ await new Promise((resolve)=>setTimeout(resolve, 100));
82
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockShowPopup).toBe(false);
83
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();
84
+ const consent = JSON.parse(window.localStorage.getItem('privacy-consent-storage') || '{}');
85
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents).toBeTruthy();
86
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consentInfo.type).toBe('all');
87
+ });
88
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('should reject non-essential cookies when clicking Reject All', async ()=>{
89
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__.ConsentManagerProvider, {
90
+ options: defaultOptions,
91
+ children: [
92
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {}),
93
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__.ConsentManagerDialog, {})
94
+ ]
95
+ }));
96
+ const rejectButton = document.querySelector('[data-testid="cookie-banner-reject-button"]');
97
+ rejectButton?.dispatchEvent(new MouseEvent('click', {
98
+ bubbles: true
99
+ }));
100
+ await new Promise((resolve)=>setTimeout(resolve, 100));
101
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockShowPopup).toBe(false);
102
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();
103
+ const consent = JSON.parse(window.localStorage.getItem('privacy-consent-storage') || '{}');
104
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents).toBeTruthy();
105
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consentInfo.type).toBe('necessary');
106
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents.necessary).toBe(true);
107
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents.experience).toBe(false);
108
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents.functionality).toBe(false);
109
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents.marketing).toBe(false);
110
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents.measurement).toBe(false);
111
+ });
112
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('should open consent manager dialog when clicking Customize', async ()=>{
113
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__.ConsentManagerProvider, {
114
+ options: defaultOptions,
115
+ children: [
116
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {}),
117
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__.ConsentManagerDialog, {})
118
+ ]
119
+ }));
120
+ const customizeButton = document.querySelector('[data-testid="cookie-banner-customize-button"]');
121
+ customizeButton?.dispatchEvent(new MouseEvent('click', {
122
+ bubbles: true
123
+ }));
124
+ await new Promise((resolve)=>setTimeout(resolve, 100));
125
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockShowPopup).toBe(false);
126
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();
127
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockIsPrivacyDialogOpen).toBe(true);
128
+ const dialog = document.querySelector('[data-testid="consent-manager-dialog-root"]');
129
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(dialog).toBeInTheDocument();
130
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument();
131
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();
132
+ const marketingSwitch = document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');
133
+ marketingSwitch?.dispatchEvent(new MouseEvent('click', {
134
+ bubbles: true
135
+ }));
136
+ const saveButton = document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');
137
+ saveButton?.dispatchEvent(new MouseEvent('click', {
138
+ bubbles: true
139
+ }));
140
+ await new Promise((resolve)=>setTimeout(resolve, 100));
141
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockIsPrivacyDialogOpen).toBe(false);
142
+ const consent = JSON.parse(window.localStorage.getItem('privacy-consent-storage') || '{}');
143
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents).toBeTruthy();
144
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consentInfo.type).toBe('custom');
145
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(consent.consents.marketing).toBe(true);
146
+ });
147
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('should be keyboard accessible', async ()=>{
148
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__.ConsentManagerProvider, {
149
+ options: defaultOptions,
150
+ children: [
151
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {}),
152
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__.ConsentManagerDialog, {})
153
+ ]
154
+ }));
155
+ const rejectButton = document.querySelector('[data-testid="cookie-banner-reject-button"]');
156
+ const customizeButton = document.querySelector('[data-testid="cookie-banner-customize-button"]');
157
+ const acceptButton = document.querySelector('[data-testid="cookie-banner-accept-button"]');
158
+ rejectButton.focus();
159
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.activeElement).toBe(rejectButton);
160
+ customizeButton.focus();
161
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.activeElement).toBe(customizeButton);
162
+ acceptButton.focus();
163
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.activeElement).toBe(acceptButton);
164
+ });
165
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('should handle scroll lock properly', async ()=>{
166
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_47c65d87__.ConsentManagerProvider, {
167
+ options: defaultOptions,
168
+ children: [
169
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {
170
+ scrollLock: true
171
+ }),
172
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_dialog_consent_manager_dialog_js_9cbc4f9a__.ConsentManagerDialog, {})
173
+ ]
174
+ }));
175
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();
176
+ const acceptButton = document.querySelector('[data-testid="cookie-banner-accept-button"]');
177
+ acceptButton?.dispatchEvent(new MouseEvent('click', {
178
+ bubbles: true
179
+ }));
180
+ await new Promise((resolve)=>setTimeout(resolve, 100));
181
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument();
182
+ });
183
+ });
@@ -1,12 +1,8 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.n = function(module) {
5
- var getter = module && module.__esModule ? function() {
6
- return module['default'];
7
- } : function() {
8
- return module;
9
- };
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
10
6
  __webpack_require__.d(getter, {
11
7
  a: getter
12
8
  });
@@ -14,7 +10,7 @@ var __webpack_require__ = {};
14
10
  };
15
11
  })();
16
12
  (()=>{
17
- __webpack_require__.d = function(exports1, definition) {
13
+ __webpack_require__.d = (exports1, definition)=>{
18
14
  for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
19
15
  enumerable: true,
20
16
  get: definition[key]
@@ -22,16 +18,31 @@ var __webpack_require__ = {};
22
18
  };
23
19
  })();
24
20
  (()=>{
25
- __webpack_require__.o = function(obj, prop) {
26
- return Object.prototype.hasOwnProperty.call(obj, prop);
27
- };
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
28
22
  })();
29
23
  var __webpack_exports__ = {};
30
24
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
25
  const external_vitest_namespaceObject = require("vitest");
32
26
  const external_cookie_banner_cjs_namespaceObject = require("../cookie-banner.cjs");
33
- const external_utils_cjs_namespaceObject = require("./utils.cjs");
34
- var external_utils_cjs_default = /*#__PURE__*/ __webpack_require__.n(external_utils_cjs_namespaceObject);
27
+ const test_helpers_cjs_namespaceObject = require("../../../utils/test-helpers.cjs");
28
+ var test_helpers_cjs_default = /*#__PURE__*/ __webpack_require__.n(test_helpers_cjs_namespaceObject);
29
+ external_vitest_namespaceObject.vi.mock('~/hooks/use-consent-manager', ()=>({
30
+ useConsentManager: ()=>({
31
+ showPopup: true,
32
+ ...external_vitest_namespaceObject.vi.fn()
33
+ })
34
+ }));
35
+ external_vitest_namespaceObject.vi.mock('~/hooks/use-translations', ()=>({
36
+ useTranslations: ()=>({
37
+ cookieBanner: {
38
+ title: 'Cookie Settings',
39
+ description: 'We use cookies to enhance your experience',
40
+ acceptAll: 'Accept All',
41
+ rejectAll: 'Reject All',
42
+ customize: 'Customize'
43
+ }
44
+ })
45
+ }));
35
46
  const ALL_COMPONENTS = [
36
47
  {
37
48
  testId: 'cookie-banner-root',
@@ -91,12 +102,13 @@ const ALL_COMPONENTS = [
91
102
  ];
92
103
  (0, external_vitest_namespaceObject.test)('Theme prop applies string classnames to all components', async ()=>{
93
104
  const test = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner, {
105
+ scrollLock: true,
94
106
  theme: ALL_COMPONENTS.reduce((acc, { themeKey, styles })=>{
95
107
  acc[themeKey] = styles;
96
108
  return acc;
97
109
  }, {})
98
110
  });
99
- await external_utils_cjs_default()({
111
+ await test_helpers_cjs_default()({
100
112
  component: test,
101
113
  testCases: ALL_COMPONENTS.map(({ testId, styles })=>({
102
114
  testId,
@@ -117,6 +129,7 @@ const ALL_COMPONENTS = [
117
129
  style
118
130
  }));
119
131
  const test = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner, {
132
+ scrollLock: true,
120
133
  theme: testCases.reduce((acc, { themeKey, className, style })=>{
121
134
  acc[themeKey] = {
122
135
  className,
@@ -125,7 +138,7 @@ const ALL_COMPONENTS = [
125
138
  return acc;
126
139
  }, {})
127
140
  });
128
- await external_utils_cjs_default()({
141
+ await test_helpers_cjs_default()({
129
142
  component: test,
130
143
  testCases: testCases.map(({ testId, className, style })=>({
131
144
  testId,
@@ -138,13 +151,14 @@ const ALL_COMPONENTS = [
138
151
  });
139
152
  (0, external_vitest_namespaceObject.test)('No style prop removes default styles but keeps custom classNames', async ()=>{
140
153
  const test = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner, {
154
+ scrollLock: true,
141
155
  noStyle: true,
142
156
  theme: ALL_COMPONENTS.reduce((acc, { themeKey, styles })=>{
143
157
  acc[themeKey] = styles;
144
158
  return acc;
145
159
  }, {})
146
160
  });
147
- await external_utils_cjs_default()({
161
+ await test_helpers_cjs_default()({
148
162
  component: test,
149
163
  testCases: ALL_COMPONENTS.map(({ testId, styles })=>({
150
164
  testId,
@@ -165,9 +179,10 @@ const ALL_COMPONENTS = [
165
179
  'banner.header.title': 'custom-title'
166
180
  };
167
181
  const test = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner, {
182
+ scrollLock: true,
168
183
  theme: mixedTheme
169
184
  });
170
- await external_utils_cjs_default()({
185
+ await test_helpers_cjs_default()({
171
186
  component: test,
172
187
  testCases: [
173
188
  {
@@ -203,9 +218,10 @@ const ALL_COMPONENTS = [
203
218
  }
204
219
  };
205
220
  const test = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner, {
221
+ scrollLock: true,
206
222
  theme: edgeCaseTheme
207
223
  });
208
- await external_utils_cjs_default()({
224
+ await test_helpers_cjs_default()({
209
225
  component: test,
210
226
  testCases: [
211
227
  {
@@ -229,8 +245,7 @@ const ALL_COMPONENTS = [
229
245
  ]
230
246
  });
231
247
  });
232
- var __webpack_export_target__ = exports;
233
- for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
234
- if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
248
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
249
+ Object.defineProperty(exports, '__esModule', {
235
250
  value: true
236
251
  });
@@ -1,7 +1,24 @@
1
1
  import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from "react/jsx-runtime";
2
2
  import * as __WEBPACK_EXTERNAL_MODULE_vitest__ from "vitest";
3
3
  import * as __WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__ from "../cookie-banner.js";
4
- import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
4
+ import * as __WEBPACK_EXTERNAL_MODULE__utils_test_helpers_js_1e3d26b6__ from "../../../utils/test-helpers.js";
5
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('~/hooks/use-consent-manager', ()=>({
6
+ useConsentManager: ()=>({
7
+ showPopup: true,
8
+ ...__WEBPACK_EXTERNAL_MODULE_vitest__.vi.fn()
9
+ })
10
+ }));
11
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('~/hooks/use-translations', ()=>({
12
+ useTranslations: ()=>({
13
+ cookieBanner: {
14
+ title: 'Cookie Settings',
15
+ description: 'We use cookies to enhance your experience',
16
+ acceptAll: 'Accept All',
17
+ rejectAll: 'Reject All',
18
+ customize: 'Customize'
19
+ }
20
+ })
21
+ }));
5
22
  const ALL_COMPONENTS = [
6
23
  {
7
24
  testId: 'cookie-banner-root',
@@ -61,12 +78,13 @@ const ALL_COMPONENTS = [
61
78
  ];
62
79
  (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('Theme prop applies string classnames to all components', async ()=>{
63
80
  const test = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {
81
+ scrollLock: true,
64
82
  theme: ALL_COMPONENTS.reduce((acc, { themeKey, styles })=>{
65
83
  acc[themeKey] = styles;
66
84
  return acc;
67
85
  }, {})
68
86
  });
69
- await (0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__["default"])({
87
+ await (0, __WEBPACK_EXTERNAL_MODULE__utils_test_helpers_js_1e3d26b6__["default"])({
70
88
  component: test,
71
89
  testCases: ALL_COMPONENTS.map(({ testId, styles })=>({
72
90
  testId,
@@ -87,6 +105,7 @@ const ALL_COMPONENTS = [
87
105
  style
88
106
  }));
89
107
  const test = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {
108
+ scrollLock: true,
90
109
  theme: testCases.reduce((acc, { themeKey, className, style })=>{
91
110
  acc[themeKey] = {
92
111
  className,
@@ -95,7 +114,7 @@ const ALL_COMPONENTS = [
95
114
  return acc;
96
115
  }, {})
97
116
  });
98
- await (0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__["default"])({
117
+ await (0, __WEBPACK_EXTERNAL_MODULE__utils_test_helpers_js_1e3d26b6__["default"])({
99
118
  component: test,
100
119
  testCases: testCases.map(({ testId, className, style })=>({
101
120
  testId,
@@ -108,13 +127,14 @@ const ALL_COMPONENTS = [
108
127
  });
109
128
  (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('No style prop removes default styles but keeps custom classNames', async ()=>{
110
129
  const test = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {
130
+ scrollLock: true,
111
131
  noStyle: true,
112
132
  theme: ALL_COMPONENTS.reduce((acc, { themeKey, styles })=>{
113
133
  acc[themeKey] = styles;
114
134
  return acc;
115
135
  }, {})
116
136
  });
117
- await (0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__["default"])({
137
+ await (0, __WEBPACK_EXTERNAL_MODULE__utils_test_helpers_js_1e3d26b6__["default"])({
118
138
  component: test,
119
139
  testCases: ALL_COMPONENTS.map(({ testId, styles })=>({
120
140
  testId,
@@ -135,9 +155,10 @@ const ALL_COMPONENTS = [
135
155
  'banner.header.title': 'custom-title'
136
156
  };
137
157
  const test = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {
158
+ scrollLock: true,
138
159
  theme: mixedTheme
139
160
  });
140
- await (0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__["default"])({
161
+ await (0, __WEBPACK_EXTERNAL_MODULE__utils_test_helpers_js_1e3d26b6__["default"])({
141
162
  component: test,
142
163
  testCases: [
143
164
  {
@@ -173,9 +194,10 @@ const ALL_COMPONENTS = [
173
194
  }
174
195
  };
175
196
  const test = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__cookie_banner_js_0a2d98b7__.CookieBanner, {
197
+ scrollLock: true,
176
198
  theme: edgeCaseTheme
177
199
  });
178
- await (0, __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__["default"])({
200
+ await (0, __WEBPACK_EXTERNAL_MODULE__utils_test_helpers_js_1e3d26b6__["default"])({
179
201
  component: test,
180
202
  testCases: [
181
203
  {
@@ -1,12 +1,8 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.n = function(module) {
5
- var getter = module && module.__esModule ? function() {
6
- return module['default'];
7
- } : function() {
8
- return module;
9
- };
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
10
6
  __webpack_require__.d(getter, {
11
7
  a: getter
12
8
  });
@@ -14,7 +10,7 @@ var __webpack_require__ = {};
14
10
  };
15
11
  })();
16
12
  (()=>{
17
- __webpack_require__.d = function(exports1, definition) {
13
+ __webpack_require__.d = (exports1, definition)=>{
18
14
  for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
19
15
  enumerable: true,
20
16
  get: definition[key]
@@ -22,12 +18,10 @@ var __webpack_require__ = {};
22
18
  };
23
19
  })();
24
20
  (()=>{
25
- __webpack_require__.o = function(obj, prop) {
26
- return Object.prototype.hasOwnProperty.call(obj, prop);
27
- };
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
28
22
  })();
29
23
  (()=>{
30
- __webpack_require__.r = function(exports1) {
24
+ __webpack_require__.r = (exports1)=>{
31
25
  if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
32
26
  value: 'Module'
33
27
  });
@@ -45,19 +39,21 @@ __webpack_require__.d(__webpack_exports__, {
45
39
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
46
40
  const react_namespaceObject = require("motion/react");
47
41
  const external_react_namespaceObject = require("react");
48
- const index_cjs_namespaceObject = require("../../../hooks/index.cjs");
49
42
  const use_consent_manager_cjs_namespaceObject = require("../../../hooks/use-consent-manager.cjs");
50
- const use_styles_cjs_namespaceObject = require("../../../utils/use-styles.cjs");
43
+ const use_scroll_lock_cjs_namespaceObject = require("../../../hooks/use-scroll-lock.cjs");
44
+ const use_styles_cjs_namespaceObject = require("../../../hooks/use-styles.cjs");
45
+ const use_theme_cjs_namespaceObject = require("../../../hooks/use-theme.cjs");
51
46
  const external_cookie_banner_module_cjs_namespaceObject = require("../cookie-banner.module.cjs");
52
47
  var external_cookie_banner_module_cjs_default = /*#__PURE__*/ __webpack_require__.n(external_cookie_banner_module_cjs_namespaceObject);
53
48
  const CookieBannerOverlay = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)(({ className, style, noStyle, asChild, ...props }, ref)=>{
54
49
  const { showPopup } = (0, use_consent_manager_cjs_namespaceObject.useConsentManager)();
55
- const { disableAnimation, noStyle: contextNoStyle } = (0, index_cjs_namespaceObject.useTheme)();
50
+ const { disableAnimation, noStyle: contextNoStyle, scrollLock } = (0, use_theme_cjs_namespaceObject.useTheme)();
56
51
  const theme = (0, use_styles_cjs_namespaceObject.useStyles)('banner.overlay', {
57
52
  baseClassName: !(contextNoStyle || noStyle) && external_cookie_banner_module_cjs_default().overlay,
58
53
  noStyle
59
54
  });
60
- return showPopup ? disableAnimation ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
55
+ (0, use_scroll_lock_cjs_namespaceObject.useScrollLock)(!!(showPopup && scrollLock));
56
+ return showPopup && scrollLock ? disableAnimation ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
61
57
  ref: ref,
62
58
  ...props,
63
59
  ...theme,
@@ -80,8 +76,12 @@ const CookieBannerOverlay = /*#__PURE__*/ (0, external_react_namespaceObject.for
80
76
  }) : null;
81
77
  });
82
78
  const Overlay = CookieBannerOverlay;
83
- var __webpack_export_target__ = exports;
84
- for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
85
- if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
79
+ exports.CookieBannerOverlay = __webpack_exports__.CookieBannerOverlay;
80
+ exports.Overlay = __webpack_exports__.Overlay;
81
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
82
+ "CookieBannerOverlay",
83
+ "Overlay"
84
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
85
+ Object.defineProperty(exports, '__esModule', {
86
86
  value: true
87
87
  });
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/cookie-banner/atoms/overlay.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,OAAO,CAAC;AAQxD;;;;;;;;GAQG;AACH,UAAU,YAAa,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC5D;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,mBAAmB,yGA+BxB,CAAC;AAEF,QAAA,MAAM,OAAO,yGAAsB,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/cookie-banner/atoms/overlay.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,OAAO,CAAC;AASxD;;;;;;;;GAQG;AACH,UAAU,YAAa,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC5D;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,mBAAmB,yGAqCxB,CAAC;AAEF,QAAA,MAAM,OAAO,yGAAsB,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,18 +1,20 @@
1
1
  import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from "react/jsx-runtime";
2
2
  import * as __WEBPACK_EXTERNAL_MODULE_motion_react_9decfa63__ from "motion/react";
3
3
  import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
4
- import * as __WEBPACK_EXTERNAL_MODULE__hooks_index_js_d5d998a4__ from "../../../hooks/index.js";
5
4
  import * as __WEBPACK_EXTERNAL_MODULE__hooks_use_consent_manager_js_8a30bd26__ from "../../../hooks/use-consent-manager.js";
6
- import * as __WEBPACK_EXTERNAL_MODULE__utils_use_styles_js_413e0e0a__ from "../../../utils/use-styles.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__hooks_use_scroll_lock_js_ebd470d2__ from "../../../hooks/use-scroll-lock.js";
6
+ import * as __WEBPACK_EXTERNAL_MODULE__hooks_use_styles_js_ffc85ca5__ from "../../../hooks/use-styles.js";
7
+ import * as __WEBPACK_EXTERNAL_MODULE__hooks_use_theme_js_3abff3d7__ from "../../../hooks/use-theme.js";
7
8
  import * as __WEBPACK_EXTERNAL_MODULE__cookie_banner_module_js_af314f6d__ from "../cookie-banner.module.js";
8
9
  const CookieBannerOverlay = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react__.forwardRef)(({ className, style, noStyle, asChild, ...props }, ref)=>{
9
10
  const { showPopup } = (0, __WEBPACK_EXTERNAL_MODULE__hooks_use_consent_manager_js_8a30bd26__.useConsentManager)();
10
- const { disableAnimation, noStyle: contextNoStyle } = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_d5d998a4__.useTheme)();
11
- const theme = (0, __WEBPACK_EXTERNAL_MODULE__utils_use_styles_js_413e0e0a__.useStyles)('banner.overlay', {
11
+ const { disableAnimation, noStyle: contextNoStyle, scrollLock } = (0, __WEBPACK_EXTERNAL_MODULE__hooks_use_theme_js_3abff3d7__.useTheme)();
12
+ const theme = (0, __WEBPACK_EXTERNAL_MODULE__hooks_use_styles_js_ffc85ca5__.useStyles)('banner.overlay', {
12
13
  baseClassName: !(contextNoStyle || noStyle) && __WEBPACK_EXTERNAL_MODULE__cookie_banner_module_js_af314f6d__["default"].overlay,
13
14
  noStyle
14
15
  });
15
- return showPopup ? disableAnimation ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
16
+ (0, __WEBPACK_EXTERNAL_MODULE__hooks_use_scroll_lock_js_ebd470d2__.useScrollLock)(!!(showPopup && scrollLock));
17
+ return showPopup && scrollLock ? disableAnimation ? /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
16
18
  ref: ref,
17
19
  ...props,
18
20
  ...theme,
@@ -2,12 +2,8 @@
2
2
  "use strict";
3
3
  var __webpack_require__ = {};
4
4
  (()=>{
5
- __webpack_require__.n = function(module) {
6
- var getter = module && module.__esModule ? function() {
7
- return module['default'];
8
- } : function() {
9
- return module;
10
- };
5
+ __webpack_require__.n = (module)=>{
6
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
11
7
  __webpack_require__.d(getter, {
12
8
  a: getter
13
9
  });
@@ -15,7 +11,7 @@ var __webpack_require__ = {};
15
11
  };
16
12
  })();
17
13
  (()=>{
18
- __webpack_require__.d = function(exports1, definition) {
14
+ __webpack_require__.d = (exports1, definition)=>{
19
15
  for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
20
16
  enumerable: true,
21
17
  get: definition[key]
@@ -23,12 +19,10 @@ var __webpack_require__ = {};
23
19
  };
24
20
  })();
25
21
  (()=>{
26
- __webpack_require__.o = function(obj, prop) {
27
- return Object.prototype.hasOwnProperty.call(obj, prop);
28
- };
22
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
29
23
  })();
30
24
  (()=>{
31
- __webpack_require__.r = function(exports1) {
25
+ __webpack_require__.r = (exports1)=>{
32
26
  if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
33
27
  value: 'Module'
34
28
  });
@@ -50,14 +44,16 @@ const external_react_dom_namespaceObject = require("react-dom");
50
44
  const external_overlay_cjs_namespaceObject = require("./overlay.cjs");
51
45
  const theme_context_cjs_namespaceObject = require("../../../context/theme-context.cjs");
52
46
  const use_consent_manager_cjs_namespaceObject = require("../../../hooks/use-consent-manager.cjs");
53
- const use_styles_cjs_namespaceObject = require("../../../utils/use-styles.cjs");
47
+ const use_styles_cjs_namespaceObject = require("../../../hooks/use-styles.cjs");
54
48
  const external_cookie_banner_module_cjs_namespaceObject = require("../cookie-banner.module.cjs");
55
49
  var external_cookie_banner_module_cjs_default = /*#__PURE__*/ __webpack_require__.n(external_cookie_banner_module_cjs_namespaceObject);
56
- const CookieBannerRoot = ({ children, className, noStyle, disableAnimation, theme, ...props })=>{
50
+ const CookieBannerRoot = ({ children, className, noStyle, disableAnimation, theme, scrollLock, trapFocus = true, ...props })=>{
57
51
  const contextValue = {
58
52
  disableAnimation,
59
53
  noStyle,
60
- theme
54
+ theme,
55
+ scrollLock,
56
+ trapFocus
61
57
  };
62
58
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.LocalThemeContext.Provider, {
63
59
  value: contextValue,
@@ -123,8 +119,12 @@ const CookieBannerRootChildren = /*#__PURE__*/ (0, external_react_namespaceObjec
123
119
  });
124
120
  CookieBannerRootChildren.displayName = 'CookieBannerRootChildren';
125
121
  const Root = CookieBannerRoot;
126
- var __webpack_export_target__ = exports;
127
- for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
128
- if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
122
+ exports.CookieBannerRoot = __webpack_exports__.CookieBannerRoot;
123
+ exports.Root = __webpack_exports__.Root;
124
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
125
+ "CookieBannerRoot",
126
+ "Root"
127
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
128
+ Object.defineProperty(exports, '__esModule', {
129
129
  value: true
130
130
  });
@@ -35,6 +35,20 @@ interface CookieBannerRootProps extends HTMLAttributes<HTMLDivElement> {
35
35
  * Useful for environments where animations are not desired.
36
36
  */
37
37
  disableAnimation?: boolean;
38
+ /**
39
+ * @remarks
40
+ * When true, the cookie banner will lock the scroll of the page.
41
+ * Useful for implementing a cookie banner that locks the scroll of the page.
42
+ * @default false
43
+ */
44
+ scrollLock?: boolean;
45
+ /**
46
+ * @remarks
47
+ * When true, the cookie banner will trap focus.
48
+ * Useful for implementing a cookie banner that traps focus.
49
+ * @default true
50
+ */
51
+ trapFocus?: boolean;
38
52
  }
39
53
  /**
40
54
  * Root component of the CookieBanner that provides context and styling.
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../../src/components/cookie-banner/atoms/root.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,EAAE,EACP,KAAK,cAAc,EACnB,KAAK,SAAS,EAId,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD;;;;;;;;;GASG;AACH,UAAU,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE;;;;OAIG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA6B/C,CAAC;AA4JF,QAAA,MAAM,IAAI,2BAAmB,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../../src/components/cookie-banner/atoms/root.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,EAAE,EACP,KAAK,cAAc,EACnB,KAAK,SAAS,EAId,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD;;;;;;;;;GASG;AACH,UAAU,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE;;;;OAIG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAiC/C,CAAC;AA4JF,QAAA,MAAM,IAAI,2BAAmB,CAAC;AAE9B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC"}