@koine/next 2.0.0-beta.75 → 2.0.0-beta.76

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 (63) hide show
  1. package/12/AnalyticsGoogle.js +3 -33
  2. package/12/DisableErrorOverlay.js +1 -6
  3. package/12/Seo.js +1 -5
  4. package/12/SeoDefaults.js +1 -5
  5. package/12/seoBuildTags.d.ts +2 -2
  6. package/12/seoBuildTags.js +1 -94
  7. package/12/types.js +1 -1
  8. package/12.js +1 -3
  9. package/ThemeContext.js +1 -6
  10. package/ThemeProvider.js +1 -204
  11. package/cjs/12/AnalyticsGoogle.d.ts +5 -0
  12. package/cjs/12/AnalyticsGoogle.js +7 -0
  13. package/cjs/12/DisableErrorOverlay.d.ts +2 -0
  14. package/cjs/12/DisableErrorOverlay.js +1 -0
  15. package/cjs/12/Seo.d.ts +23 -0
  16. package/cjs/12/Seo.js +1 -0
  17. package/cjs/12/SeoDefaults.d.ts +10 -0
  18. package/cjs/12/SeoDefaults.js +1 -0
  19. package/cjs/12/seoBuildTags.d.ts +8 -0
  20. package/cjs/12/seoBuildTags.js +1 -0
  21. package/cjs/12/types.d.ts +2 -0
  22. package/cjs/12/types.js +1 -0
  23. package/cjs/12.d.ts +3 -0
  24. package/cjs/12.js +1 -0
  25. package/cjs/ThemeContext.js +1 -0
  26. package/cjs/ThemeProvider.js +1 -0
  27. package/cjs/config.d.ts +7 -0
  28. package/cjs/config.js +1 -0
  29. package/cjs/index.d.ts +4 -0
  30. package/cjs/index.js +1 -0
  31. package/{utils → cjs}/load.d.ts +1 -0
  32. package/cjs/load.js +1 -0
  33. package/cjs/package.json +22 -0
  34. package/cjs/useTheme.js +1 -0
  35. package/config.js +1 -77
  36. package/index.js +1 -4
  37. package/load.js +1 -6
  38. package/package.json +24 -56
  39. package/useTheme.js +1 -5
  40. package/12.cjs.d.ts +0 -1
  41. package/12.cjs.default.js +0 -1
  42. package/12.cjs.js +0 -28
  43. package/12.cjs.mjs +0 -2
  44. package/12.esm.js +0 -18
  45. package/README.md +0 -1
  46. package/config.cjs.d.ts +0 -1
  47. package/config.cjs.default.js +0 -1
  48. package/config.cjs.js +0 -9
  49. package/config.cjs.mjs +0 -2
  50. package/config.esm.js +0 -5
  51. package/index.cjs.d.ts +0 -1
  52. package/index.cjs.default.js +0 -1
  53. package/index.cjs.js +0 -25
  54. package/index.cjs.mjs +0 -2
  55. package/index.esm.js +0 -14
  56. package/theme/ThemeContext.js +0 -6
  57. package/theme/ThemeProvider.js +0 -204
  58. package/theme/useTheme.js +0 -5
  59. package/typings.d.ts +0 -61
  60. package/utils/load.js +0 -5
  61. /package/{theme → cjs}/ThemeContext.d.ts +0 -0
  62. /package/{theme → cjs}/ThemeProvider.d.ts +0 -0
  63. /package/{theme → cjs}/useTheme.d.ts +0 -0
package/config.js CHANGED
@@ -1,77 +1 @@
1
- import { withI18n, withI18nAsync, withI18nLegacy, } from "@koine/i18n/next";
2
- export let withKoine = (options = {}) => {
3
- const { nx, svg, i18nRoutes, i18nCompiler, ...restNextConfig } = options;
4
- const nextConfig = {
5
- eslint: {
6
- ignoreDuringBuilds: true,
7
- },
8
- typescript: {
9
- ignoreBuildErrors: true,
10
- },
11
- poweredByHeader: false,
12
- experimental: {
13
- scrollRestoration: true,
14
- ...(restNextConfig.experimental || {}),
15
- },
16
- modularizeImports: {
17
- ...(restNextConfig.modularizeImports || {}),
18
- "@koine/api": { transform: "@koine/api/{{member}}" },
19
- "@koine/browser": { transform: "@koine/browser/{{member}}" },
20
- "@koine/dom": { transform: "@koine/dom/{{member}}" },
21
- "@koine/node": { transform: "@koine/node/{{member}}" },
22
- "@koine/i18n/?(((\\w*)?/?)*)": {
23
- transform: "@koine/i18n/{{ matches.[1] }}/{{member}}",
24
- },
25
- "@koine/react/?(((\\w*)?/?)*)": {
26
- transform: "@koine/react/{{ matches.[1] }}/{{member}}",
27
- },
28
- "@koine/next/?(((\\w*)?/?)*)": {
29
- transform: "@koine/next/{{ matches.[1] }}/{{member}}",
30
- },
31
- "@koine/utils": { transform: "@koine/utils/{{member}}" },
32
- },
33
- ...restNextConfig,
34
- };
35
- if (svg) {
36
- if (nx) {
37
- nextConfig["nx"] = { svgr: true };
38
- }
39
- else {
40
- delete nextConfig["nx"];
41
- nextConfig.webpack = (_config, options) => {
42
- const webpackConfig = typeof nextConfig.webpack === "function"
43
- ? nextConfig.webpack(_config, options)
44
- : _config;
45
- webpackConfig.module.rules.push({
46
- test: /\.svg$/,
47
- use: [
48
- {
49
- loader: "@svgr/webpack",
50
- options: {
51
- svgoConfig: {
52
- plugins: [
53
- {
54
- name: "removeViewBox",
55
- active: false,
56
- },
57
- ],
58
- },
59
- },
60
- },
61
- ],
62
- });
63
- return webpackConfig;
64
- };
65
- }
66
- }
67
- if (i18nRoutes) {
68
- return withI18nLegacy({ ...nextConfig, i18nRoutes });
69
- }
70
- if (i18nCompiler) {
71
- if (nx) {
72
- return withI18nAsync({ ...nextConfig, i18nCompiler });
73
- }
74
- return withI18n({ ...nextConfig, i18nCompiler });
75
- }
76
- return nextConfig;
77
- };
1
+ import{withI18n as e,withI18nAsync as r,withI18nLegacy as o}from"@koine/i18n/next";export let withKoine=(n={})=>{let{nx:i,svg:t,i18nRoutes:m,i18nCompiler:s,...a}=n,k={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...a.experimental||{}},modularizeImports:{...a.modularizeImports||{},"@koine/api":{transform:"@koine/api/{{member}}"},"@koine/browser":{transform:"@koine/browser/{{member}}"},"@koine/dom":{transform:"@koine/dom/{{member}}"},"@koine/node":{transform:"@koine/node/{{member}}"},"@koine/i18n/?(((\\w*)?/?)*)":{transform:"@koine/i18n/{{ matches.[1] }}/{{member}}"},"@koine/react/?(((\\w*)?/?)*)":{transform:"@koine/react/{{ matches.[1] }}/{{member}}"},"@koine/next/?(((\\w*)?/?)*)":{transform:"@koine/next/{{ matches.[1] }}/{{member}}"},"@koine/utils":{transform:"@koine/utils/{{member}}"}},...a};return(t&&(i?k.nx={svgr:!0}:(delete k.nx,k.webpack=(e,r)=>{let o="function"==typeof k.webpack?k.webpack(e,r):e;return o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o})),m)?o({...k,i18nRoutes:m}):s?i?r({...k,i18nCompiler:s}):e({...k,i18nCompiler:s}):k};
package/index.js CHANGED
@@ -1,4 +1 @@
1
- export { load } from "./load";
2
- export { ThemeContext } from "./ThemeContext";
3
- export { ThemeProvider } from "./ThemeProvider";
4
- export { useTheme } from "./useTheme";
1
+ export{load}from"./load";export{ThemeContext}from"./ThemeContext";export{ThemeProvider}from"./ThemeProvider";export{useTheme}from"./useTheme";
package/load.js CHANGED
@@ -1,6 +1 @@
1
- export function load(component, milliseconds) {
2
- return new Promise((resolve) => {
3
- setTimeout(() => resolve(component), milliseconds);
4
- });
5
- }
6
- export default load;
1
+ export function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o)})}export default load;
package/package.json CHANGED
@@ -2,9 +2,9 @@
2
2
  "name": "@koine/next",
3
3
  "sideEffects": false,
4
4
  "dependencies": {
5
- "@koine/browser": "2.0.0-beta.75",
6
- "@koine/utils": "2.0.0-beta.75",
7
- "@koine/i18n": "2.0.0-beta.75"
5
+ "@koine/browser": "2.0.0-beta.76",
6
+ "@koine/utils": "2.0.0-beta.76",
7
+ "@koine/i18n": "2.0.0-beta.76"
8
8
  },
9
9
  "peerDependencies": {
10
10
  "next": "^14.0.4",
@@ -16,94 +16,62 @@
16
16
  "optional": true
17
17
  }
18
18
  },
19
+ "module": "./index.js",
20
+ "type": "module",
21
+ "main": "./cjs/index.js",
19
22
  "exports": {
20
23
  ".": {
21
- "module": "./index.esm.js",
22
- "import": "./index.cjs.mjs",
23
- "default": "./index.cjs.js"
24
- },
25
- "./12.cjs.default": {
26
- "import": "./12.cjs.default.js"
27
- },
28
- "./12.cjs": {
29
- "import": "./12.cjs.js"
30
- },
31
- "./12.esm": {
32
- "import": "./12.esm.js"
24
+ "require": "./cjs/index.js",
25
+ "import": "./index.js"
33
26
  },
34
27
  "./12": {
35
- "module": "./12.esm.js",
36
- "import": "./12.cjs.mjs",
37
- "default": "./12.cjs.js"
28
+ "require": "./cjs/12.js",
29
+ "import": "./12.js"
38
30
  },
39
31
  "./12/AnalyticsGoogle": {
32
+ "require": "./cjs/12/AnalyticsGoogle.js",
40
33
  "import": "./12/AnalyticsGoogle.js"
41
34
  },
42
35
  "./12/DisableErrorOverlay": {
36
+ "require": "./cjs/12/DisableErrorOverlay.js",
43
37
  "import": "./12/DisableErrorOverlay.js"
44
38
  },
45
39
  "./12/Seo": {
40
+ "require": "./cjs/12/Seo.js",
46
41
  "import": "./12/Seo.js"
47
42
  },
48
43
  "./12/SeoDefaults": {
44
+ "require": "./cjs/12/SeoDefaults.js",
49
45
  "import": "./12/SeoDefaults.js"
50
46
  },
51
47
  "./12/seoBuildTags": {
48
+ "require": "./cjs/12/seoBuildTags.js",
52
49
  "import": "./12/seoBuildTags.js"
53
50
  },
54
51
  "./12/types": {
52
+ "require": "./cjs/12/types.js",
55
53
  "import": "./12/types.js"
56
54
  },
57
55
  "./ThemeContext": {
56
+ "require": "./cjs/ThemeContext.js",
58
57
  "import": "./ThemeContext.js"
59
58
  },
60
59
  "./ThemeProvider": {
60
+ "require": "./cjs/ThemeProvider.js",
61
61
  "import": "./ThemeProvider.js"
62
62
  },
63
- "./config.cjs.default": {
64
- "import": "./config.cjs.default.js"
65
- },
66
- "./config.cjs": {
67
- "import": "./config.cjs.js"
68
- },
69
- "./config.esm": {
70
- "import": "./config.esm.js"
71
- },
72
63
  "./config": {
73
- "module": "./config.esm.js",
74
- "import": "./config.cjs.mjs",
75
- "default": "./config.cjs.js"
76
- },
77
- "./index.cjs.default": {
78
- "import": "./index.cjs.default.js"
79
- },
80
- "./index.cjs": {
81
- "import": "./index.cjs.js"
82
- },
83
- "./index.esm": {
84
- "import": "./index.esm.js"
64
+ "require": "./cjs/config.js",
65
+ "import": "./config.js"
85
66
  },
86
67
  "./load": {
68
+ "require": "./cjs/load.js",
87
69
  "import": "./load.js"
88
70
  },
89
- "./theme/ThemeContext": {
90
- "import": "./theme/ThemeContext.js"
91
- },
92
- "./theme/ThemeProvider": {
93
- "import": "./theme/ThemeProvider.js"
94
- },
95
- "./theme/useTheme": {
96
- "import": "./theme/useTheme.js"
97
- },
98
71
  "./useTheme": {
72
+ "require": "./cjs/useTheme.js",
99
73
  "import": "./useTheme.js"
100
- },
101
- "./utils/load": {
102
- "import": "./utils/load.js"
103
- },
104
- "./package.json": "./package.json"
74
+ }
105
75
  },
106
- "module": "./index.esm.js",
107
- "main": "./index.cjs.js",
108
- "version": "2.0.0-beta.75"
76
+ "version": "2.0.0-beta.76"
109
77
  }
package/useTheme.js CHANGED
@@ -1,5 +1 @@
1
- "use client";
2
- import { useContext } from "react";
3
- import { ThemeContext } from "./ThemeContext";
4
- export const useTheme = () => useContext(ThemeContext);
5
- export default useTheme;
1
+ import{useContext as e}from"react";import{ThemeContext as t}from"./ThemeContext";export const useTheme=()=>e(t);export default useTheme;
package/12.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./12";
package/12.cjs.default.js DELETED
@@ -1 +0,0 @@
1
- exports._default = require('./12.cjs.js').default;
package/12.cjs.js DELETED
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var router = require('next/router');
7
- var o = require('next/script');
8
- var react = require('react');
9
- var browser = require('@koine/browser');
10
- var r = require('next/head');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var o__default = /*#__PURE__*/_interopDefaultLegacy(o);
15
- var r__default = /*#__PURE__*/_interopDefaultLegacy(r);
16
-
17
- let AnalyticsGoogle=({id:s})=>{let l=s||process.env.NEXT_PUBLIC_GTM_ID,{events:m,asPath:c,query:d}=router.useRouter(),[p,f]=react.useState(!1),[w,u]=react.useState(!1);return (react.useEffect(()=>{let e=()=>{u(!0);};return m.on("routeChangeComplete",e),()=>{m.off("routeChangeComplete",e);}},[m]),react.useEffect(()=>{w&&p&&c&&browser.gtagPageview(c);},[c,d,w,p]),l)?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(o__default["default"],{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),jsxRuntime.jsx(o__default["default"],{id:"google-analytics",strategy:"afterInteractive",children:`
18
- window.dataLayer = window.dataLayer || [];
19
- function gtag(){window.dataLayer.push(arguments);}
20
- gtag('js', new Date());
21
-
22
- gtag('config', '${s}', { 'send_page_view': false });
23
- `})]}):null};
24
-
25
- let DisableErrorOverlay=()=>jsxRuntime.jsx(r__default["default"],{children:"development"===process.env.NODE_ENV&&jsxRuntime.jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
26
-
27
- exports.AnalyticsGoogle = AnalyticsGoogle;
28
- exports.DisableErrorOverlay = DisableErrorOverlay;
package/12.cjs.mjs DELETED
@@ -1,2 +0,0 @@
1
- export * from './12.cjs.js';
2
- export { _default as default } from './12.cjs.default.js';
package/12.esm.js DELETED
@@ -1,18 +0,0 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { useRouter } from 'next/router';
3
- import o from 'next/script';
4
- import { useState, useEffect } from 'react';
5
- import { gtagPageview } from '@koine/browser';
6
- import r from 'next/head';
7
-
8
- let AnalyticsGoogle=({id:s})=>{let l=s||process.env.NEXT_PUBLIC_GTM_ID,{events:m,asPath:c,query:d}=useRouter(),[p,f]=useState(!1),[w,u]=useState(!1);return (useEffect(()=>{let e=()=>{u(!0);};return m.on("routeChangeComplete",e),()=>{m.off("routeChangeComplete",e);}},[m]),useEffect(()=>{w&&p&&c&&gtagPageview(c);},[c,d,w,p]),l)?jsxs(Fragment,{children:[jsx(o,{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),jsx(o,{id:"google-analytics",strategy:"afterInteractive",children:`
9
- window.dataLayer = window.dataLayer || [];
10
- function gtag(){window.dataLayer.push(arguments);}
11
- gtag('js', new Date());
12
-
13
- gtag('config', '${s}', { 'send_page_view': false });
14
- `})]}):null};
15
-
16
- let DisableErrorOverlay=()=>jsx(r,{children:"development"===process.env.NODE_ENV&&jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
17
-
18
- export { AnalyticsGoogle, DisableErrorOverlay };
package/README.md DELETED
@@ -1 +0,0 @@
1
- # @koine/next
package/config.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./config";
@@ -1 +0,0 @@
1
- exports._default = require('./config.cjs.js').default;
package/config.cjs.js DELETED
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var next = require('@koine/i18n/next');
6
-
7
- let withKoine=(n={})=>{let{nx:i,svg:t,i18nRoutes:m,i18nCompiler:s,...a}=n,k={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...a.experimental||{}},modularizeImports:{...a.modularizeImports||{},"@koine/api":{transform:"@koine/api/{{member}}"},"@koine/browser":{transform:"@koine/browser/{{member}}"},"@koine/dom":{transform:"@koine/dom/{{member}}"},"@koine/node":{transform:"@koine/node/{{member}}"},"@koine/i18n/?(((\\w*)?/?)*)":{transform:"@koine/i18n/{{ matches.[1] }}/{{member}}"},"@koine/react/?(((\\w*)?/?)*)":{transform:"@koine/react/{{ matches.[1] }}/{{member}}"},"@koine/next/?(((\\w*)?/?)*)":{transform:"@koine/next/{{ matches.[1] }}/{{member}}"},"@koine/utils":{transform:"@koine/utils/{{member}}"}},...a};return (t&&(i?k.nx={svgr:!0}:(delete k.nx,k.webpack=(e,r)=>{let o="function"==typeof k.webpack?k.webpack(e,r):e;return o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o})),m)?next.withI18nLegacy({...k,i18nRoutes:m}):s?i?next.withI18nAsync({...k,i18nCompiler:s}):next.withI18n({...k,i18nCompiler:s}):k};
8
-
9
- exports.withKoine = withKoine;
package/config.cjs.mjs DELETED
@@ -1,2 +0,0 @@
1
- export * from './config.cjs.js';
2
- export { _default as default } from './config.cjs.default.js';
package/config.esm.js DELETED
@@ -1,5 +0,0 @@
1
- import { withI18nLegacy, withI18nAsync, withI18n } from '@koine/i18n/next';
2
-
3
- let withKoine=(n={})=>{let{nx:i,svg:t,i18nRoutes:m,i18nCompiler:s,...a}=n,k={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...a.experimental||{}},modularizeImports:{...a.modularizeImports||{},"@koine/api":{transform:"@koine/api/{{member}}"},"@koine/browser":{transform:"@koine/browser/{{member}}"},"@koine/dom":{transform:"@koine/dom/{{member}}"},"@koine/node":{transform:"@koine/node/{{member}}"},"@koine/i18n/?(((\\w*)?/?)*)":{transform:"@koine/i18n/{{ matches.[1] }}/{{member}}"},"@koine/react/?(((\\w*)?/?)*)":{transform:"@koine/react/{{ matches.[1] }}/{{member}}"},"@koine/next/?(((\\w*)?/?)*)":{transform:"@koine/next/{{ matches.[1] }}/{{member}}"},"@koine/utils":{transform:"@koine/utils/{{member}}"}},...a};return (t&&(i?k.nx={svgr:!0}:(delete k.nx,k.webpack=(e,r)=>{let o="function"==typeof k.webpack?k.webpack(e,r):e;return o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o})),m)?withI18nLegacy({...k,i18nRoutes:m}):s?i?withI18nAsync({...k,i18nCompiler:s}):withI18n({...k,i18nCompiler:s}):k};
4
-
5
- export { withKoine };
package/index.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./index";
@@ -1 +0,0 @@
1
- exports._default = require('./index.cjs.js').default;
package/index.cjs.js DELETED
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var react = require('react');
6
- var jsxRuntime = require('react/jsx-runtime');
7
- var o = require('next/script');
8
- var utils = require('@koine/utils');
9
-
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var o__default = /*#__PURE__*/_interopDefaultLegacy(o);
13
-
14
- function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
15
-
16
- const ThemeContext=react.createContext({setTheme:e=>{},themes:[]});
17
-
18
- let l=["light","dark"],d="(prefers-color-scheme: dark)",c="theme";const ThemeProvider=({forcedTheme:r,disableTransitionOnChange:o=!1,enableSystem:v=!0,enableColorScheme:y,themes:p=["light","dark"],defaultTheme:g=v?"system":"light",attribute:w="data-theme",value:x,children:S,nonce:k})=>{let[b,L]=react.useState(()=>u(c,g)),[T,j]=react.useState(()=>u(c)),C=x?Object.values(x):p,E=react.useCallback(e=>{let t=e;if(utils.isServer||!t)return;"system"===e&&v&&(t=f());let r=x?x[t]:t,i=o?$():null,n=document.documentElement;if("class"===w?(n.classList.remove(...C),r&&n.classList.add(r)):r?n.setAttribute(w,r):n.removeAttribute(w),y){let e=l.includes(g)?g:"",r=l.includes(t)?t:e;n.style.colorScheme=r;}i?.();},[w,C,g,o,y,v,x]),I=react.useCallback(e=>{L(e);try{localStorage.setItem(c,e);}catch(e){}},[]),M=react.useCallback(e=>{j(f(e)),"system"===b&&v&&!r&&E("system");},[b,v,r,E]);return react.useEffect(()=>{let e=window.matchMedia(d);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),react.useEffect(()=>{let e=e=>{e.key===c&&I(e.newValue||g);};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[g,I]),react.useEffect(()=>{E(r??b);},[E,r,b]),jsxRuntime.jsxs(ThemeContext.Provider,{value:{theme:b,setTheme:I,forcedTheme:r,resolvedTheme:"system"===b?T:b,themes:v?[...p,"system"]:p,systemTheme:v?T:void 0},children:[jsxRuntime.jsx(h,{forcedTheme:r,disableTransitionOnChange:o,enableSystem:v,enableColorScheme:y,themes:p,defaultTheme:g,attribute:w,value:x,children:S,attrs:C,nonce:k}),S]})};let h=react.memo(({forcedTheme:t,attribute:o,enableSystem:i,enableColorScheme:n,defaultTheme:s,value:a,attrs:m,nonce:h})=>{let u="system"===s,$=(()=>{let e=`d.remove(${m.map(e=>`'${e}'`).join(",")})`;return `var d=document.documentElement.classList;${e};`})(),f=n?(l.includes(s)?s:null)?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",y=(e,t=!1,r=!0)=>{let i=a?a[e]:e,s=t?e+"|| ''":`'${i}'`,m="";return n&&r&&!t&&l.includes(e)&&(m+=`d.style.colorScheme = '${e}';`),"class"===o?t||i?m+=`d.add(${s})`:m+="null":i&&(m+=`d[s](n, ${s})`),m},p=t?`!function(){${$}${y(t)}}()`:i?`!function(){try {${$}var e=localStorage.getItem('${c}');if("system"===e||(!e&&${u})){var t="${d}",m=window.matchMedia(t);if(m.media!==t||m.matches){${y("dark")}}else{${y("light")}}}else if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}${u?"":"else{"+y(s,!1,!1)+"}"}${f}}catch(e){}}()`:`!function(){try{${$}var e=localStorage.getItem("${c}");if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}else{${y(s,!1,!1)};}${f}}catch(t){}}();`;return jsxRuntime.jsx(o__default["default"],{id:"next-theme-script",strategy:"beforeInteractive",src:`data:text/javascript;base64,${v(p)}`,nonce:h})},()=>!0),u=(e,t)=>{let r;if(!utils.isServer){try{r=localStorage.getItem(e)||void 0;}catch(e){}return r||t}},$=()=>{let e=document,t=e.createElement("style");return t.appendChild(e.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),e.head.appendChild(t),()=>{window.getComputedStyle(e.body),setTimeout(()=>{e.head.removeChild(t);},1);}},f=e=>(e||(e=window.matchMedia(d)),e.matches?"dark":"light"),v=e=>utils.isServer?Buffer.from(e).toString("base64"):btoa(e);
19
-
20
- const useTheme=()=>react.useContext(ThemeContext);
21
-
22
- exports.ThemeContext = ThemeContext;
23
- exports.ThemeProvider = ThemeProvider;
24
- exports.load = load;
25
- exports.useTheme = useTheme;
package/index.cjs.mjs DELETED
@@ -1,2 +0,0 @@
1
- export * from './index.cjs.js';
2
- export { _default as default } from './index.cjs.default.js';
package/index.esm.js DELETED
@@ -1,14 +0,0 @@
1
- import { createContext, useState, useCallback, useEffect, memo, useContext } from 'react';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
3
- import o from 'next/script';
4
- import { isServer } from '@koine/utils';
5
-
6
- function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
7
-
8
- const ThemeContext=createContext({setTheme:e=>{},themes:[]});
9
-
10
- let l=["light","dark"],d="(prefers-color-scheme: dark)",c="theme";const ThemeProvider=({forcedTheme:r,disableTransitionOnChange:o=!1,enableSystem:v=!0,enableColorScheme:y,themes:p=["light","dark"],defaultTheme:g=v?"system":"light",attribute:w="data-theme",value:x,children:S,nonce:k})=>{let[b,L]=useState(()=>u(c,g)),[T,j]=useState(()=>u(c)),C=x?Object.values(x):p,E=useCallback(e=>{let t=e;if(isServer||!t)return;"system"===e&&v&&(t=f());let r=x?x[t]:t,i=o?$():null,n=document.documentElement;if("class"===w?(n.classList.remove(...C),r&&n.classList.add(r)):r?n.setAttribute(w,r):n.removeAttribute(w),y){let e=l.includes(g)?g:"",r=l.includes(t)?t:e;n.style.colorScheme=r;}i?.();},[w,C,g,o,y,v,x]),I=useCallback(e=>{L(e);try{localStorage.setItem(c,e);}catch(e){}},[]),M=useCallback(e=>{j(f(e)),"system"===b&&v&&!r&&E("system");},[b,v,r,E]);return useEffect(()=>{let e=window.matchMedia(d);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),useEffect(()=>{let e=e=>{e.key===c&&I(e.newValue||g);};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[g,I]),useEffect(()=>{E(r??b);},[E,r,b]),jsxs(ThemeContext.Provider,{value:{theme:b,setTheme:I,forcedTheme:r,resolvedTheme:"system"===b?T:b,themes:v?[...p,"system"]:p,systemTheme:v?T:void 0},children:[jsx(h,{forcedTheme:r,disableTransitionOnChange:o,enableSystem:v,enableColorScheme:y,themes:p,defaultTheme:g,attribute:w,value:x,children:S,attrs:C,nonce:k}),S]})};let h=memo(({forcedTheme:t,attribute:o$1,enableSystem:i,enableColorScheme:n,defaultTheme:s,value:a,attrs:m,nonce:h})=>{let u="system"===s,$=(()=>{let e=`d.remove(${m.map(e=>`'${e}'`).join(",")})`;return `var d=document.documentElement.classList;${e};`})(),f=n?(l.includes(s)?s:null)?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${s}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",y=(e,t=!1,r=!0)=>{let i=a?a[e]:e,s=t?e+"|| ''":`'${i}'`,m="";return n&&r&&!t&&l.includes(e)&&(m+=`d.style.colorScheme = '${e}';`),"class"===o$1?t||i?m+=`d.add(${s})`:m+="null":i&&(m+=`d[s](n, ${s})`),m},p=t?`!function(){${$}${y(t)}}()`:i?`!function(){try {${$}var e=localStorage.getItem('${c}');if("system"===e||(!e&&${u})){var t="${d}",m=window.matchMedia(t);if(m.media!==t||m.matches){${y("dark")}}else{${y("light")}}}else if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}${u?"":"else{"+y(s,!1,!1)+"}"}${f}}catch(e){}}()`:`!function(){try{${$}var e=localStorage.getItem("${c}");if(e){${a?`var x=${JSON.stringify(a)};`:""}${y(a?"x[e]":"e",!0)}}else{${y(s,!1,!1)};}${f}}catch(t){}}();`;return jsx(o,{id:"next-theme-script",strategy:"beforeInteractive",src:`data:text/javascript;base64,${v(p)}`,nonce:h})},()=>!0),u=(e,t)=>{let r;if(!isServer){try{r=localStorage.getItem(e)||void 0;}catch(e){}return r||t}},$=()=>{let e=document,t=e.createElement("style");return t.appendChild(e.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),e.head.appendChild(t),()=>{window.getComputedStyle(e.body),setTimeout(()=>{e.head.removeChild(t);},1);}},f=e=>(e||(e=window.matchMedia(d)),e.matches?"dark":"light"),v=e=>isServer?Buffer.from(e).toString("base64"):btoa(e);
11
-
12
- const useTheme=()=>useContext(ThemeContext);
13
-
14
- export { ThemeContext, ThemeProvider, load, useTheme };
@@ -1,6 +0,0 @@
1
- import { createContext } from "react";
2
- export const ThemeContext = createContext({
3
- setTheme: (_) => { },
4
- themes: [],
5
- });
6
- export default ThemeContext;
@@ -1,204 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import NextScript from "next/script";
4
- import { memo, useCallback, useEffect, useState } from "react";
5
- import { isServer } from "@koine/utils";
6
- import { ThemeContext } from "./ThemeContext";
7
- const colorSchemes = ["light", "dark"];
8
- const MEDIA = "(prefers-color-scheme: dark)";
9
- const THEME_STORAGE_KEY = "theme";
10
- export const ThemeProvider = ({ forcedTheme, disableTransitionOnChange = false, enableSystem = true, enableColorScheme, themes = ["light", "dark"], defaultTheme = enableSystem ? "system" : "light", attribute = "data-theme", value, children, nonce, }) => {
11
- const [theme, setThemeState] = useState(() => getTheme(THEME_STORAGE_KEY, defaultTheme));
12
- const [resolvedTheme, setResolvedTheme] = useState(() => getTheme(THEME_STORAGE_KEY));
13
- const attrs = !value ? themes : Object.values(value);
14
- const applyTheme = useCallback((theme) => {
15
- let resolved = theme;
16
- if (isServer || !resolved)
17
- return;
18
- if (theme === "system" && enableSystem) {
19
- resolved = getSystemTheme();
20
- }
21
- const name = value ? value[resolved] : resolved;
22
- const enable = disableTransitionOnChange ? disableAnimation() : null;
23
- const d = document.documentElement;
24
- if (attribute === "class") {
25
- d.classList.remove(...attrs);
26
- if (name)
27
- d.classList.add(name);
28
- }
29
- else {
30
- if (name) {
31
- d.setAttribute(attribute, name);
32
- }
33
- else {
34
- d.removeAttribute(attribute);
35
- }
36
- }
37
- if (enableColorScheme) {
38
- const fallback = colorSchemes.includes(defaultTheme)
39
- ? defaultTheme
40
- : "";
41
- const colorScheme = colorSchemes.includes(resolved)
42
- ? resolved
43
- : fallback;
44
- d.style.colorScheme = colorScheme;
45
- }
46
- enable?.();
47
- }, [
48
- attribute,
49
- attrs,
50
- defaultTheme,
51
- disableTransitionOnChange,
52
- enableColorScheme,
53
- enableSystem,
54
- value,
55
- ]);
56
- const setTheme = useCallback((theme) => {
57
- setThemeState(theme);
58
- try {
59
- localStorage.setItem(THEME_STORAGE_KEY, theme);
60
- }
61
- catch (e) {
62
- }
63
- }, []);
64
- const handleMediaQuery = useCallback((e) => {
65
- const resolved = getSystemTheme(e);
66
- setResolvedTheme(resolved);
67
- if (theme === "system" && enableSystem && !forcedTheme) {
68
- applyTheme("system");
69
- }
70
- }, [theme, enableSystem, forcedTheme, applyTheme]);
71
- useEffect(() => {
72
- const media = window.matchMedia(MEDIA);
73
- media.addListener(handleMediaQuery);
74
- handleMediaQuery(media);
75
- return () => media.removeListener(handleMediaQuery);
76
- }, [handleMediaQuery]);
77
- useEffect(() => {
78
- const handleStorage = (e) => {
79
- if (e.key !== THEME_STORAGE_KEY) {
80
- return;
81
- }
82
- const theme = e.newValue || defaultTheme;
83
- setTheme(theme);
84
- };
85
- window.addEventListener("storage", handleStorage);
86
- return () => window.removeEventListener("storage", handleStorage);
87
- }, [defaultTheme, setTheme]);
88
- useEffect(() => {
89
- applyTheme(forcedTheme ?? theme);
90
- }, [applyTheme, forcedTheme, theme]);
91
- return (_jsxs(ThemeContext.Provider, { value: {
92
- theme,
93
- setTheme,
94
- forcedTheme,
95
- resolvedTheme: theme === "system" ? resolvedTheme : theme,
96
- themes: enableSystem ? [...themes, "system"] : themes,
97
- systemTheme: (enableSystem ? resolvedTheme : undefined),
98
- }, children: [_jsx(ThemeScript, { forcedTheme,
99
- disableTransitionOnChange,
100
- enableSystem,
101
- enableColorScheme,
102
- themes,
103
- defaultTheme,
104
- attribute,
105
- value,
106
- children,
107
- attrs,
108
- nonce }), children] }));
109
- };
110
- const ThemeScript = memo(({ forcedTheme, attribute, enableSystem, enableColorScheme, defaultTheme, value, attrs, nonce, }) => {
111
- const defaultSystem = defaultTheme === "system";
112
- const optimization = (() => {
113
- const removeClasses = `d.remove(${attrs
114
- .map((t) => `'${t}'`)
115
- .join(",")})`;
116
- return `var d=document.documentElement.classList;${removeClasses};`;
117
- })();
118
- const fallbackColorScheme = (() => {
119
- if (!enableColorScheme) {
120
- return "";
121
- }
122
- const fallback = colorSchemes.includes(defaultTheme)
123
- ? defaultTheme
124
- : null;
125
- if (fallback) {
126
- return `if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${defaultTheme}'`;
127
- }
128
- else {
129
- return `if(e==='light'||e==='dark')d.style.colorScheme=e`;
130
- }
131
- })();
132
- const updateDOM = (name, literal = false, setColorScheme = true) => {
133
- const resolvedName = value ? value[name] : name;
134
- const val = literal ? name + `|| ''` : `'${resolvedName}'`;
135
- let text = "";
136
- if (enableColorScheme &&
137
- setColorScheme &&
138
- !literal &&
139
- colorSchemes.includes(name)) {
140
- text += `d.style.colorScheme = '${name}';`;
141
- }
142
- if (attribute === "class") {
143
- if (literal || resolvedName) {
144
- text += `d.add(${val})`;
145
- }
146
- else {
147
- text += `null`;
148
- }
149
- }
150
- else {
151
- if (resolvedName) {
152
- text += `d[s](n, ${val})`;
153
- }
154
- }
155
- return text;
156
- };
157
- const scriptSrc = (() => {
158
- if (forcedTheme) {
159
- return `!function(){${optimization}${updateDOM(forcedTheme)}}()`;
160
- }
161
- if (enableSystem) {
162
- return `!function(){try {${optimization}var e=localStorage.getItem('${THEME_STORAGE_KEY}');if("system"===e||(!e&&${defaultSystem})){var t="${MEDIA}",m=window.matchMedia(t);if(m.media!==t||m.matches){${updateDOM("dark")}}else{${updateDOM("light")}}}else if(e){${value ? `var x=${JSON.stringify(value)};` : ""}${updateDOM(value ? `x[e]` : "e", true)}}${!defaultSystem
163
- ? `else{` + updateDOM(defaultTheme, false, false) + "}"
164
- : ""}${fallbackColorScheme}}catch(e){}}()`;
165
- }
166
- return `!function(){try{${optimization}var e=localStorage.getItem("${THEME_STORAGE_KEY}");if(e){${value ? `var x=${JSON.stringify(value)};` : ""}${updateDOM(value ? `x[e]` : "e", true)}}else{${updateDOM(defaultTheme, false, false)};}${fallbackColorScheme}}catch(t){}}();`;
167
- })();
168
- const encodedScript = `data:text/javascript;base64,${encodeBase64(scriptSrc)}`;
169
- return (_jsx(NextScript, { id: "next-theme-script", strategy: "beforeInteractive", src: encodedScript, nonce: nonce }));
170
- }, () => true);
171
- const getTheme = (key, fallback) => {
172
- if (isServer)
173
- return undefined;
174
- let theme;
175
- try {
176
- theme = localStorage.getItem(key) || undefined;
177
- }
178
- catch (e) {
179
- }
180
- return theme || fallback;
181
- };
182
- const disableAnimation = () => {
183
- const d = document;
184
- const css = d.createElement("style");
185
- css.appendChild(d.createTextNode(`*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`));
186
- d.head.appendChild(css);
187
- return () => {
188
- (() => window.getComputedStyle(d.body))();
189
- setTimeout(() => {
190
- d.head.removeChild(css);
191
- }, 1);
192
- };
193
- };
194
- const getSystemTheme = (e) => {
195
- if (!e)
196
- e = window.matchMedia(MEDIA);
197
- const isDark = e.matches;
198
- const systemTheme = isDark ? "dark" : "light";
199
- return systemTheme;
200
- };
201
- const encodeBase64 = (str) => {
202
- return isServer ? Buffer.from(str).toString("base64") : btoa(str);
203
- };
204
- export default ThemeProvider;
package/theme/useTheme.js DELETED
@@ -1,5 +0,0 @@
1
- "use client";
2
- import { useContext } from "react";
3
- import { ThemeContext } from "./ThemeContext";
4
- export const useTheme = () => useContext(ThemeContext);
5
- export default useTheme;