@c15t/react 0.0.1-rc.9 → 1.0.1

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 +1 -0
  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 +13 -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,70 @@
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__providers_consent_manager_provider_js_f2c81711__ from "../../providers/consent-manager-provider.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__use_consent_manager_js_56ece2ee__ from "../use-consent-manager.js";
6
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('c15t', async ()=>{
7
+ const originalModule = await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.importActual('c15t');
8
+ return {
9
+ ...originalModule,
10
+ configureConsentManager: ()=>({
11
+ getCallbacks: ()=>({}),
12
+ setCallbacks: ()=>({}),
13
+ showConsentBanner: async ()=>({
14
+ ok: true,
15
+ data: {
16
+ showConsentBanner: true
17
+ },
18
+ error: null,
19
+ response: null
20
+ }),
21
+ setConsent: async ()=>({
22
+ ok: true,
23
+ data: {
24
+ success: true
25
+ },
26
+ error: null,
27
+ response: null
28
+ }),
29
+ verifyConsent: async ()=>({
30
+ ok: true,
31
+ data: {
32
+ valid: true
33
+ },
34
+ error: null,
35
+ response: null
36
+ })
37
+ })
38
+ };
39
+ });
40
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.describe)('useConsentManager', ()=>{
41
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('returns consent state and methods when used within provider', ()=>{
42
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_consent_manager_js_56ece2ee__.useConsentManager)(), {
43
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_f2c81711__.ConsentManagerProvider, {
44
+ options: {
45
+ mode: 'offline',
46
+ react: {
47
+ noStyle: false
48
+ }
49
+ },
50
+ children: children
51
+ })
52
+ });
53
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current).toBeDefined();
54
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(typeof result.current.showPopup).toBe('boolean');
55
+ });
56
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('provides manager object when configured', ()=>{
57
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_consent_manager_js_56ece2ee__.useConsentManager)(), {
58
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__providers_consent_manager_provider_js_f2c81711__.ConsentManagerProvider, {
59
+ options: {
60
+ mode: 'offline',
61
+ react: {
62
+ noStyle: false
63
+ }
64
+ },
65
+ children: children
66
+ })
67
+ });
68
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.manager).toBeDefined();
69
+ });
70
+ });
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
4
+ const external_vitest_namespaceObject = require("vitest");
5
+ const external_vitest_browser_react_namespaceObject = require("vitest-browser-react");
6
+ const theme_context_cjs_namespaceObject = require("../../context/theme-context.cjs");
7
+ const external_use_styles_cjs_namespaceObject = require("../use-styles.cjs");
8
+ (0, external_vitest_namespaceObject.describe)('useStyles', ()=>{
9
+ const mockTheme = {
10
+ noStyle: false,
11
+ theme: {
12
+ 'dialog.root': {
13
+ className: 'theme-class',
14
+ style: {
15
+ color: 'blue'
16
+ }
17
+ }
18
+ }
19
+ };
20
+ (0, external_vitest_namespaceObject.test)('returns component styles when no theme is provided', ()=>{
21
+ const componentStyle = {
22
+ className: 'component-class',
23
+ style: {
24
+ backgroundColor: 'red'
25
+ }
26
+ };
27
+ const { result } = (0, external_vitest_browser_react_namespaceObject.renderHook)(()=>(0, external_use_styles_cjs_namespaceObject.useStyles)('dialog.root', componentStyle), {
28
+ wrapper: ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider, {
29
+ value: {
30
+ noStyle: false,
31
+ theme: {}
32
+ },
33
+ children: children
34
+ })
35
+ });
36
+ (0, external_vitest_namespaceObject.expect)(result.current.className).toContain('component-class');
37
+ (0, external_vitest_namespaceObject.expect)(result.current.style).toEqual({
38
+ backgroundColor: 'red'
39
+ });
40
+ });
41
+ (0, external_vitest_namespaceObject.test)('merges theme and component styles correctly', ()=>{
42
+ const componentStyle = {
43
+ className: 'component-class',
44
+ style: {
45
+ backgroundColor: 'red'
46
+ }
47
+ };
48
+ const { result } = (0, external_vitest_browser_react_namespaceObject.renderHook)(()=>(0, external_use_styles_cjs_namespaceObject.useStyles)('dialog.root', componentStyle), {
49
+ wrapper: ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider, {
50
+ value: mockTheme,
51
+ children: children
52
+ })
53
+ });
54
+ (0, external_vitest_namespaceObject.expect)(result.current.className).toContain('theme-class');
55
+ (0, external_vitest_namespaceObject.expect)(result.current.className).toContain('component-class');
56
+ (0, external_vitest_namespaceObject.expect)(result.current.style).toEqual({
57
+ color: 'blue',
58
+ backgroundColor: 'red'
59
+ });
60
+ });
61
+ (0, external_vitest_namespaceObject.test)('handles string className correctly', ()=>{
62
+ const componentStyle = 'component-class';
63
+ const { result } = (0, external_vitest_browser_react_namespaceObject.renderHook)(()=>(0, external_use_styles_cjs_namespaceObject.useStyles)('dialog.root', componentStyle), {
64
+ wrapper: ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider, {
65
+ value: mockTheme,
66
+ children: children
67
+ })
68
+ });
69
+ (0, external_vitest_namespaceObject.expect)(result.current.className).toContain('theme-class');
70
+ (0, external_vitest_namespaceObject.expect)(result.current.className).toContain('component-class');
71
+ });
72
+ });
73
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
74
+ Object.defineProperty(exports, '__esModule', {
75
+ value: true
76
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=use-styles.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-styles.test.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/use-styles.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
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__context_theme_context_js_ba151654__ from "../../context/theme-context.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__use_styles_js_020efb58__ from "../use-styles.js";
6
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.describe)('useStyles', ()=>{
7
+ const mockTheme = {
8
+ noStyle: false,
9
+ theme: {
10
+ 'dialog.root': {
11
+ className: 'theme-class',
12
+ style: {
13
+ color: 'blue'
14
+ }
15
+ }
16
+ }
17
+ };
18
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('returns component styles when no theme is provided', ()=>{
19
+ const componentStyle = {
20
+ className: 'component-class',
21
+ style: {
22
+ backgroundColor: 'red'
23
+ }
24
+ };
25
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_styles_js_020efb58__.useStyles)('dialog.root', componentStyle), {
26
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.GlobalThemeContext.Provider, {
27
+ value: {
28
+ noStyle: false,
29
+ theme: {}
30
+ },
31
+ children: children
32
+ })
33
+ });
34
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.className).toContain('component-class');
35
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.style).toEqual({
36
+ backgroundColor: 'red'
37
+ });
38
+ });
39
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('merges theme and component styles correctly', ()=>{
40
+ const componentStyle = {
41
+ className: 'component-class',
42
+ style: {
43
+ backgroundColor: 'red'
44
+ }
45
+ };
46
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_styles_js_020efb58__.useStyles)('dialog.root', componentStyle), {
47
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.GlobalThemeContext.Provider, {
48
+ value: mockTheme,
49
+ children: children
50
+ })
51
+ });
52
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.className).toContain('theme-class');
53
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.className).toContain('component-class');
54
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.style).toEqual({
55
+ color: 'blue',
56
+ backgroundColor: 'red'
57
+ });
58
+ });
59
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('handles string className correctly', ()=>{
60
+ const componentStyle = 'component-class';
61
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_styles_js_020efb58__.useStyles)('dialog.root', componentStyle), {
62
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.GlobalThemeContext.Provider, {
63
+ value: mockTheme,
64
+ children: children
65
+ })
66
+ });
67
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.className).toContain('theme-class');
68
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current.className).toContain('component-class');
69
+ });
70
+ });
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
4
+ const external_vitest_namespaceObject = require("vitest");
5
+ const external_vitest_browser_react_namespaceObject = require("vitest-browser-react");
6
+ const theme_context_cjs_namespaceObject = require("../../context/theme-context.cjs");
7
+ const external_use_theme_cjs_namespaceObject = require("../use-theme.cjs");
8
+ (0, external_vitest_namespaceObject.describe)('useTheme', ()=>{
9
+ (0, external_vitest_namespaceObject.test)('returns global theme when no local theme is provided', ()=>{
10
+ const globalTheme = {
11
+ noStyle: false,
12
+ theme: {
13
+ 'dialog.root': 'global-style'
14
+ }
15
+ };
16
+ const { result } = (0, external_vitest_browser_react_namespaceObject.renderHook)(()=>(0, external_use_theme_cjs_namespaceObject.useTheme)(), {
17
+ wrapper: ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider, {
18
+ value: globalTheme,
19
+ children: children
20
+ })
21
+ });
22
+ (0, external_vitest_namespaceObject.expect)(result.current).toEqual(globalTheme);
23
+ });
24
+ (0, external_vitest_namespaceObject.test)('merges global and local themes correctly', ()=>{
25
+ const globalTheme = {
26
+ noStyle: false,
27
+ theme: {
28
+ 'dialog.root': 'global-style',
29
+ 'dialog.title': 'global-title'
30
+ }
31
+ };
32
+ const localTheme = {
33
+ theme: {
34
+ 'dialog.root': 'local-style',
35
+ 'dialog.content': 'local-content'
36
+ }
37
+ };
38
+ const { result } = (0, external_vitest_browser_react_namespaceObject.renderHook)(()=>(0, external_use_theme_cjs_namespaceObject.useTheme)(), {
39
+ wrapper: ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider, {
40
+ value: globalTheme,
41
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.LocalThemeContext.Provider, {
42
+ value: localTheme,
43
+ children: children
44
+ })
45
+ })
46
+ });
47
+ (0, external_vitest_namespaceObject.expect)(result.current).toEqual({
48
+ noStyle: false,
49
+ theme: {
50
+ 'dialog.root': 'local-style',
51
+ 'dialog.title': 'global-title',
52
+ 'dialog.content': 'local-content'
53
+ }
54
+ });
55
+ });
56
+ (0, external_vitest_namespaceObject.test)('local theme takes precedence over global theme', ()=>{
57
+ const globalTheme = {
58
+ noStyle: false,
59
+ theme: {
60
+ 'dialog.root': 'global-style'
61
+ }
62
+ };
63
+ const localTheme = {
64
+ noStyle: true,
65
+ theme: {
66
+ 'dialog.root': 'local-style'
67
+ }
68
+ };
69
+ const { result } = (0, external_vitest_browser_react_namespaceObject.renderHook)(()=>(0, external_use_theme_cjs_namespaceObject.useTheme)(), {
70
+ wrapper: ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider, {
71
+ value: globalTheme,
72
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.LocalThemeContext.Provider, {
73
+ value: localTheme,
74
+ children: children
75
+ })
76
+ })
77
+ });
78
+ const theme = result.current;
79
+ (0, external_vitest_namespaceObject.expect)(theme.theme['dialog.root']).toBe('local-style');
80
+ (0, external_vitest_namespaceObject.expect)(theme.noStyle).toBe(true);
81
+ });
82
+ });
83
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
84
+ Object.defineProperty(exports, '__esModule', {
85
+ value: true
86
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=use-theme.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-theme.test.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/use-theme.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
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__context_theme_context_js_ba151654__ from "../../context/theme-context.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__use_theme_js_0009fd1b__ from "../use-theme.js";
6
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.describe)('useTheme', ()=>{
7
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('returns global theme when no local theme is provided', ()=>{
8
+ const globalTheme = {
9
+ noStyle: false,
10
+ theme: {
11
+ 'dialog.root': 'global-style'
12
+ }
13
+ };
14
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_theme_js_0009fd1b__.useTheme)(), {
15
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.GlobalThemeContext.Provider, {
16
+ value: globalTheme,
17
+ children: children
18
+ })
19
+ });
20
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current).toEqual(globalTheme);
21
+ });
22
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('merges global and local themes correctly', ()=>{
23
+ const globalTheme = {
24
+ noStyle: false,
25
+ theme: {
26
+ 'dialog.root': 'global-style',
27
+ 'dialog.title': 'global-title'
28
+ }
29
+ };
30
+ const localTheme = {
31
+ theme: {
32
+ 'dialog.root': 'local-style',
33
+ 'dialog.content': 'local-content'
34
+ }
35
+ };
36
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_theme_js_0009fd1b__.useTheme)(), {
37
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.GlobalThemeContext.Provider, {
38
+ value: globalTheme,
39
+ children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.LocalThemeContext.Provider, {
40
+ value: localTheme,
41
+ children: children
42
+ })
43
+ })
44
+ });
45
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(result.current).toEqual({
46
+ noStyle: false,
47
+ theme: {
48
+ 'dialog.root': 'local-style',
49
+ 'dialog.title': 'global-title',
50
+ 'dialog.content': 'local-content'
51
+ }
52
+ });
53
+ });
54
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.test)('local theme takes precedence over global theme', ()=>{
55
+ const globalTheme = {
56
+ noStyle: false,
57
+ theme: {
58
+ 'dialog.root': 'global-style'
59
+ }
60
+ };
61
+ const localTheme = {
62
+ noStyle: true,
63
+ theme: {
64
+ 'dialog.root': 'local-style'
65
+ }
66
+ };
67
+ const { result } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.renderHook)(()=>(0, __WEBPACK_EXTERNAL_MODULE__use_theme_js_0009fd1b__.useTheme)(), {
68
+ wrapper: ({ children })=>/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.GlobalThemeContext.Provider, {
69
+ value: globalTheme,
70
+ children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__context_theme_context_js_ba151654__.LocalThemeContext.Provider, {
71
+ value: localTheme,
72
+ children: children
73
+ })
74
+ })
75
+ });
76
+ const theme = result.current;
77
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(theme.theme['dialog.root']).toBe('local-style');
78
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(theme.noStyle).toBe(true);
79
+ });
80
+ });
@@ -3,7 +3,10 @@ var __webpack_modules__ = {
3
3
  "./use-consent-manager": function(module) {
4
4
  module.exports = require("./use-consent-manager.cjs");
5
5
  },
6
- "./use-theme": function(module) {
6
+ "./use-focus-trap": function(module) {
7
+ module.exports = require("./use-focus-trap.cjs");
8
+ },
9
+ "~/hooks/use-theme": function(module) {
7
10
  module.exports = require("./use-theme.cjs");
8
11
  },
9
12
  "./use-translations": function(module) {
@@ -21,12 +24,8 @@ function __webpack_require__(moduleId) {
21
24
  return module.exports;
22
25
  }
23
26
  (()=>{
24
- __webpack_require__.n = function(module) {
25
- var getter = module && module.__esModule ? function() {
26
- return module['default'];
27
- } : function() {
28
- return module;
29
- };
27
+ __webpack_require__.n = (module)=>{
28
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
30
29
  __webpack_require__.d(getter, {
31
30
  a: getter
32
31
  });
@@ -34,7 +33,7 @@ function __webpack_require__(moduleId) {
34
33
  };
35
34
  })();
36
35
  (()=>{
37
- __webpack_require__.d = function(exports1, definition) {
36
+ __webpack_require__.d = (exports1, definition)=>{
38
37
  for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
39
38
  enumerable: true,
40
39
  get: definition[key]
@@ -42,12 +41,10 @@ function __webpack_require__(moduleId) {
42
41
  };
43
42
  })();
44
43
  (()=>{
45
- __webpack_require__.o = function(obj, prop) {
46
- return Object.prototype.hasOwnProperty.call(obj, prop);
47
- };
44
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
48
45
  })();
49
46
  (()=>{
50
- __webpack_require__.r = function(exports1) {
47
+ __webpack_require__.r = (exports1)=>{
51
48
  if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
52
49
  value: 'Module'
53
50
  });
@@ -65,21 +62,26 @@ var __webpack_exports__ = {};
65
62
  return _use_consent_manager__WEBPACK_IMPORTED_MODULE_0__[key];
66
63
  }).bind(0, __WEBPACK_IMPORT_KEY__);
67
64
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
68
- var _use_theme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./use-theme");
65
+ var _use_focus_trap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./use-focus-trap");
66
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
67
+ for(var __WEBPACK_IMPORT_KEY__ in _use_focus_trap__WEBPACK_IMPORTED_MODULE_1__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
68
+ return _use_focus_trap__WEBPACK_IMPORTED_MODULE_1__[key];
69
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
70
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
71
+ var _use_theme__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("~/hooks/use-theme");
69
72
  var __WEBPACK_REEXPORT_OBJECT__ = {};
70
- for(var __WEBPACK_IMPORT_KEY__ in _use_theme__WEBPACK_IMPORTED_MODULE_1__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
71
- return _use_theme__WEBPACK_IMPORTED_MODULE_1__[key];
73
+ for(var __WEBPACK_IMPORT_KEY__ in _use_theme__WEBPACK_IMPORTED_MODULE_2__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
74
+ return _use_theme__WEBPACK_IMPORTED_MODULE_2__[key];
72
75
  }).bind(0, __WEBPACK_IMPORT_KEY__);
73
76
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
74
- var _use_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./use-translations");
77
+ var _use_translations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./use-translations");
75
78
  var __WEBPACK_REEXPORT_OBJECT__ = {};
76
- for(var __WEBPACK_IMPORT_KEY__ in _use_translations__WEBPACK_IMPORTED_MODULE_2__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
77
- return _use_translations__WEBPACK_IMPORTED_MODULE_2__[key];
79
+ for(var __WEBPACK_IMPORT_KEY__ in _use_translations__WEBPACK_IMPORTED_MODULE_3__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
80
+ return _use_translations__WEBPACK_IMPORTED_MODULE_3__[key];
78
81
  }).bind(0, __WEBPACK_IMPORT_KEY__);
79
82
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
80
83
  })();
81
- var __webpack_export_target__ = exports;
82
- for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
83
- if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
84
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
85
+ Object.defineProperty(exports, '__esModule', {
84
86
  value: true
85
87
  });
@@ -1,4 +1,5 @@
1
1
  export * from './use-consent-manager';
2
+ export * from './use-focus-trap';
2
3
  export * from './use-theme';
3
4
  export * from './use-translations';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./use-consent-manager.js";
2
+ export * from "./use-focus-trap.js";
2
3
  export * from "./use-theme.js";
3
4
  export * from "./use-translations.js";
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ useColorScheme: ()=>useColorScheme
28
+ });
29
+ const external_react_namespaceObject = require("react");
30
+ function useColorScheme(colorScheme) {
31
+ (0, external_react_namespaceObject.useEffect)(()=>{
32
+ const updateSystemTheme = ()=>{
33
+ const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
34
+ document.documentElement.classList.toggle('c15t-dark', isDark);
35
+ };
36
+ switch(colorScheme){
37
+ case 'light':
38
+ localStorage.setItem('c15tTheme', 'light');
39
+ document.documentElement.classList.remove('c15t-dark');
40
+ break;
41
+ case 'dark':
42
+ localStorage.setItem('c15tTheme', 'dark');
43
+ document.documentElement.classList.add('c15t-dark');
44
+ break;
45
+ default:
46
+ localStorage.removeItem('c15tTheme');
47
+ updateSystemTheme();
48
+ break;
49
+ }
50
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
51
+ const handleChange = ()=>{
52
+ if ('system' === colorScheme) updateSystemTheme();
53
+ };
54
+ mediaQuery.addEventListener('change', handleChange);
55
+ return ()=>mediaQuery.removeEventListener('change', handleChange);
56
+ }, [
57
+ colorScheme
58
+ ]);
59
+ }
60
+ exports.useColorScheme = __webpack_exports__.useColorScheme;
61
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
62
+ "useColorScheme"
63
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
64
+ Object.defineProperty(exports, '__esModule', {
65
+ value: true
66
+ });
@@ -0,0 +1,16 @@
1
+ export type ColorScheme = 'light' | 'dark' | 'system';
2
+ /**
3
+ * Manage color scheme preferences for components
4
+ *
5
+ * @param colorScheme - 'light' | 'dark' | 'system'
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * function App() {
10
+ * useColorScheme('system');
11
+ * return <div>Content</div>;
12
+ * }
13
+ * ```
14
+ */
15
+ export declare function useColorScheme(colorScheme: ColorScheme): void;
16
+ //# sourceMappingURL=use-color-scheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-color-scheme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-color-scheme.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,QAsCtD"}
@@ -0,0 +1,32 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
2
+ function useColorScheme(colorScheme) {
3
+ (0, __WEBPACK_EXTERNAL_MODULE_react__.useEffect)(()=>{
4
+ const updateSystemTheme = ()=>{
5
+ const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
6
+ document.documentElement.classList.toggle('c15t-dark', isDark);
7
+ };
8
+ switch(colorScheme){
9
+ case 'light':
10
+ localStorage.setItem('c15tTheme', 'light');
11
+ document.documentElement.classList.remove('c15t-dark');
12
+ break;
13
+ case 'dark':
14
+ localStorage.setItem('c15tTheme', 'dark');
15
+ document.documentElement.classList.add('c15t-dark');
16
+ break;
17
+ default:
18
+ localStorage.removeItem('c15tTheme');
19
+ updateSystemTheme();
20
+ break;
21
+ }
22
+ const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
23
+ const handleChange = ()=>{
24
+ if ('system' === colorScheme) updateSystemTheme();
25
+ };
26
+ mediaQuery.addEventListener('change', handleChange);
27
+ return ()=>mediaQuery.removeEventListener('change', handleChange);
28
+ }, [
29
+ colorScheme
30
+ ]);
31
+ }
32
+ export { useColorScheme };