@koine/next 2.0.0-beta.133 → 2.0.0-beta.135

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.
@@ -8,9 +8,7 @@ var o = require('next/script');
8
8
  var react = require('react');
9
9
  var browser = require('@koine/browser');
10
10
 
11
- /** Falls back to `.env` variable `NEXT_PUBLIC_GTM_ID` */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 (// const [url, setUrl] = useState("");
12
- react.useEffect(()=>{let e=()=>{u(!0);};return m.on("routeChangeComplete",e),()=>{m.off("routeChangeComplete",e);}},[m]),react.useEffect(()=>{w&&p&&c&&// const search = query;
13
- browser.gtagPageview(c);},[c,d,w,p]),l)?/*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[/*#__PURE__*/jsxRuntime.jsx(o,{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),/*#__PURE__*/jsxRuntime.jsx(o,{id:"google-analytics",strategy:"afterInteractive",children:`
11
+ 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,{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),jsxRuntime.jsx(o,{id:"google-analytics",strategy:"afterInteractive",children:`
14
12
  window.dataLayer = window.dataLayer || [];
15
13
  function gtag(){window.dataLayer.push(arguments);}
16
14
  gtag('js', new Date());
@@ -4,9 +4,7 @@ import o from 'next/script';
4
4
  import { useState, useEffect } from 'react';
5
5
  import { gtagPageview } from '@koine/browser';
6
6
 
7
- /** Falls back to `.env` variable `NEXT_PUBLIC_GTM_ID` */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 (// const [url, setUrl] = useState("");
8
- useEffect(()=>{let e=()=>{u(!0);};return m.on("routeChangeComplete",e),()=>{m.off("routeChangeComplete",e);}},[m]),useEffect(()=>{w&&p&&c&&// const search = query;
9
- gtagPageview(c);},[c,d,w,p]),l)?/*#__PURE__*/jsxs(Fragment,{children:[/*#__PURE__*/jsx(o,{id:"google-tagmanager",src:`https://www.googletagmanager.com/gtag/js?id=${s}`,strategy:"afterInteractive",onLoad:()=>f(!0)}),/*#__PURE__*/jsx(o,{id:"google-analytics",strategy:"afterInteractive",children:`
7
+ 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:`
10
8
  window.dataLayer = window.dataLayer || [];
11
9
  function gtag(){window.dataLayer.push(arguments);}
12
10
  gtag('js', new Date());
@@ -5,11 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var r = require('next/head');
7
7
 
8
- /**
9
- * Disable error overlay during `dev`
10
- *
11
- * @see https://github.com/vercel/next.js/discussions/13387#discussioncomment-101564
12
- */let DisableErrorOverlay=()=>/*#__PURE__*/jsxRuntime.jsx(r,{children:"development"===process.env.NODE_ENV&&/*#__PURE__*/jsxRuntime.jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
8
+ let DisableErrorOverlay=()=>jsxRuntime.jsx(r,{children:"development"===process.env.NODE_ENV&&jsxRuntime.jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
13
9
 
14
10
  exports.DisableErrorOverlay = DisableErrorOverlay;
15
11
  exports.default = DisableErrorOverlay;
@@ -1,10 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import r from 'next/head';
3
3
 
4
- /**
5
- * Disable error overlay during `dev`
6
- *
7
- * @see https://github.com/vercel/next.js/discussions/13387#discussioncomment-101564
8
- */let DisableErrorOverlay=()=>/*#__PURE__*/jsx(r,{children:"development"===process.env.NODE_ENV&&/*#__PURE__*/jsx("script",{dangerouslySetInnerHTML:{__html:"window.addEventListener('error',event =>{event.stopImmediatePropagation()});window.addEventListener('unhandledrejection',event =>{event.stopImmediatePropagation()});"}})});
4
+ 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()});"}})});
9
5
 
10
6
  export { DisableErrorOverlay, DisableErrorOverlay as default };
@@ -4,8 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
6
 
7
- /** List of all available theme names *//** Forced theme name for the current page *//** Update the theme *//** Active theme name *//** If `enableSystem` is true and the active theme is "system", this returns whether the system preference resolved to "dark" or "light". Otherwise, identical to `theme` *//** If enableSystem is true, returns the System theme preference ("dark" or "light"), regardless what the active theme is */const ThemeContext=/*#__PURE__*/react.createContext({// eslint-disable-next-line @typescript-eslint/no-empty-function
8
- setTheme:e=>{},themes:[]});
7
+ const ThemeContext=react.createContext({setTheme:e=>{},themes:[]});
9
8
 
10
9
  exports.ThemeContext = ThemeContext;
11
10
  exports.default = ThemeContext;
@@ -1,6 +1,5 @@
1
1
  import { createContext } from 'react';
2
2
 
3
- /** List of all available theme names *//** Forced theme name for the current page *//** Update the theme *//** Active theme name *//** If `enableSystem` is true and the active theme is "system", this returns whether the system preference resolved to "dark" or "light". Otherwise, identical to `theme` *//** If enableSystem is true, returns the System theme preference ("dark" or "light"), regardless what the active theme is */const ThemeContext=/*#__PURE__*/createContext({// eslint-disable-next-line @typescript-eslint/no-empty-function
4
- setTheme:e=>{},themes:[]});
3
+ const ThemeContext=createContext({setTheme:e=>{},themes:[]});
5
4
 
6
5
  export { ThemeContext, ThemeContext as default };
@@ -8,36 +8,7 @@ var react = require('react');
8
8
  var utils = require('@koine/utils');
9
9
  var ThemeContext = require('./ThemeContext.cjs.js');
10
10
 
11
- let l=["light","dark"],d="(prefers-color-scheme: dark)",c="theme";/** List of all available theme names *//** Forced theme name for the current page *//** Whether to switch between dark and light themes based on prefers-color-scheme *//** Disable all CSS transitions when switching themes *//** Whether to indicate to browsers which color scheme is used (dark or light) for built-in UI like inputs and buttons *//** Default theme name (for v0.0.12 and lower the default was light). If `enableSystem` is false, the default theme is light *//** HTML attribute modified based on the active theme. Accepts `class` and `data-*` (meaning any data attribute, `data-mode`, `data-color`, etc.) *//** Mapping of theme name to HTML attribute value. Object where key is the theme name and value is the attribute value *//** Nonce string to pass to the inline script for CSP headers *//**
12
- * @borrows [next-themes](https://github.com/pacocoursey/next-themes)
13
- *
14
- * Differences:
15
- *
16
- * - enableColorScheme: `false` by default (instead of `true`), this plays more
17
- * nicely with tailwind `dark` class mode as dark theme is supposed to be only
18
- * controlled by tailwind modifiers
19
- */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"===// If theme is system, resolve it before setting theme
20
- 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);// Save to storage
21
- try{localStorage.setItem(c,e);}catch(e){}},// Unsupported
22
- []),M=react.useCallback(e=>{j(f(e)),"system"===b&&v&&!r&&E("system");},[b,v,r,E]);return(// Always listen to System preference
23
- react.useEffect(()=>{let e=window.matchMedia(d);return(// Intentionally use deprecated listener methods to support iOS & old browsers
24
- e.addListener(M),M(e),()=>e.removeListener(M))},[M]),// localStorage event handling
25
- react.useEffect(()=>{let e=e=>{e.key===c&&I(// If default theme set, use it if localstorage === null (happens on local storage manual deletion)
26
- e.newValue||g);};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[g,I]),// Whenever theme or forcedTheme changes, apply it
27
- react.useEffect(()=>{E(r??b);},[E,r,b]),/*#__PURE__*/jsxRuntime.jsxs(ThemeContext.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:[/*#__PURE__*/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=/*#__PURE__*/react.memo(({forcedTheme:t,attribute:o$1,enableSystem:i,enableColorScheme:n,defaultTheme:s,value:a,attrs:m,nonce:h})=>{let u="system"===s,// Code-golfing the amount of characters in the script
28
- $=(()=>{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(// MUCH faster to set colorScheme alongside HTML attribute/class
29
- // as it only incurs 1 style recalculation rather than 2
30
- // This can save over 250ms of work for pages with big DOM
31
- 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 /*#__PURE__*/jsxRuntime.jsx(o,{id:"next-theme-script",strategy:"beforeInteractive",src:// We MUST use next/script's `beforeInteractive` strategy to avoid flashing on load.
32
- // However, it only accepts the `src` prop, not `dangerouslySetInnerHTML` or `children`
33
- // But our script cannot be external because it changes at runtime based on React props
34
- // so we trick next/script by passing `src` as a base64 JS script
35
- `data:text/javascript;base64,${v(p)}`,nonce:h})},// Never re-render this component
36
- ()=>!0),// Helpers
37
- u=(e,t)=>{let r;if(!utils.isServer){try{r=localStorage.getItem(e)||void 0;}catch(e){}// Unsupported
38
- 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),()=>{// Force restyle
39
- window.getComputedStyle(e.body),// Wait for next tick before removing
40
- 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);
11
+ 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.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$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 jsxRuntime.jsx(o,{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);
41
12
 
42
13
  exports.ThemeProvider = ThemeProvider;
43
14
  exports.default = ThemeProvider;
@@ -1,38 +1,9 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import o from 'next/script';
3
- import { useState, useCallback, useEffect, memo } from 'react';
3
+ import { memo, useState, useCallback, useEffect } from 'react';
4
4
  import { isServer } from '@koine/utils';
5
5
  import { ThemeContext } from './ThemeContext.esm.js';
6
6
 
7
- let l=["light","dark"],d="(prefers-color-scheme: dark)",c="theme";/** List of all available theme names *//** Forced theme name for the current page *//** Whether to switch between dark and light themes based on prefers-color-scheme *//** Disable all CSS transitions when switching themes *//** Whether to indicate to browsers which color scheme is used (dark or light) for built-in UI like inputs and buttons *//** Default theme name (for v0.0.12 and lower the default was light). If `enableSystem` is false, the default theme is light *//** HTML attribute modified based on the active theme. Accepts `class` and `data-*` (meaning any data attribute, `data-mode`, `data-color`, etc.) *//** Mapping of theme name to HTML attribute value. Object where key is the theme name and value is the attribute value *//** Nonce string to pass to the inline script for CSP headers *//**
8
- * @borrows [next-themes](https://github.com/pacocoursey/next-themes)
9
- *
10
- * Differences:
11
- *
12
- * - enableColorScheme: `false` by default (instead of `true`), this plays more
13
- * nicely with tailwind `dark` class mode as dark theme is supposed to be only
14
- * controlled by tailwind modifiers
15
- */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"===// If theme is system, resolve it before setting theme
16
- 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);// Save to storage
17
- try{localStorage.setItem(c,e);}catch(e){}},// Unsupported
18
- []),M=useCallback(e=>{j(f(e)),"system"===b&&v&&!r&&E("system");},[b,v,r,E]);return(// Always listen to System preference
19
- useEffect(()=>{let e=window.matchMedia(d);return(// Intentionally use deprecated listener methods to support iOS & old browsers
20
- e.addListener(M),M(e),()=>e.removeListener(M))},[M]),// localStorage event handling
21
- useEffect(()=>{let e=e=>{e.key===c&&I(// If default theme set, use it if localstorage === null (happens on local storage manual deletion)
22
- e.newValue||g);};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[g,I]),// Whenever theme or forcedTheme changes, apply it
23
- useEffect(()=>{E(r??b);},[E,r,b]),/*#__PURE__*/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:[/*#__PURE__*/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=/*#__PURE__*/memo(({forcedTheme:t,attribute:o$1,enableSystem:i,enableColorScheme:n,defaultTheme:s,value:a,attrs:m,nonce:h})=>{let u="system"===s,// Code-golfing the amount of characters in the script
24
- $=(()=>{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(// MUCH faster to set colorScheme alongside HTML attribute/class
25
- // as it only incurs 1 style recalculation rather than 2
26
- // This can save over 250ms of work for pages with big DOM
27
- 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 /*#__PURE__*/jsx(o,{id:"next-theme-script",strategy:"beforeInteractive",src:// We MUST use next/script's `beforeInteractive` strategy to avoid flashing on load.
28
- // However, it only accepts the `src` prop, not `dangerouslySetInnerHTML` or `children`
29
- // But our script cannot be external because it changes at runtime based on React props
30
- // so we trick next/script by passing `src` as a base64 JS script
31
- `data:text/javascript;base64,${v(p)}`,nonce:h})},// Never re-render this component
32
- ()=>!0),// Helpers
33
- u=(e,t)=>{let r;if(!isServer){try{r=localStorage.getItem(e)||void 0;}catch(e){}// Unsupported
34
- 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),()=>{// Force restyle
35
- window.getComputedStyle(e.body),// Wait for next tick before removing
36
- 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);
7
+ 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);
37
8
 
38
9
  export { ThemeProvider, ThemeProvider as default };
package/config.cjs.js CHANGED
@@ -3,36 +3,6 @@
3
3
  var swc = require('@koine/node/swc');
4
4
  var next = require('@koine/i18n/next');
5
5
 
6
- /**
7
- * @legacy
8
- *//**
9
- * A list of the packages to modularize, if a `scope` is given that will be
10
- * automatically prepended before a slash e.g. `{scope}/@{lib}`.
11
- * @example ["components", "utils"]
12
- *//**
13
- * The scope of the packages to modularize, if given a slash is automatically
14
- * appended between the scope and the lib name
15
- * @example "@"
16
- *//**
17
- * Shortcut option to automatically create swc transforms to feed into
18
- * _Next.js_' `modularizeImports`
19
- *//**
20
- * Get Next.js config with some basic opinionated defaults
21
- *
22
- * @param {object} options
23
- * @property {boolean} [options.nx=false] Nx monorepo setup
24
- * @property {boolean} [options.svg=false] SVG to react components
25
- */let withKoine=(s={})=>{let{nx:n,svg:p,i18nRoutes:l,i18nCompiler:a,modularize:u,...m}=s,c={eslint:{ignoreDuringBuilds:!0},// we have this strict check on each commit
26
- typescript:{ignoreBuildErrors:!0},// we have this strict check on each commit
27
- poweredByHeader:!1,experimental:{// @see https://github.com/vercel/vercel/discussions/5973#discussioncomment-472618
28
- // @see critters error https://github.com/vercel/next.js/issues/20742
29
- // optimizeCss: true,
30
- // @see https://github.com/vercel/next.js/discussions/30174#discussion-3643870
31
- scrollRestoration:!0,...m.experimental||{}},// @see https://www.zhoulujun.net/nextjs/advanced-features/compiler.html#modularize-imports
32
- modularizeImports:{...u?Array.isArray(u)?u.reduce((r,o)=>({...r,...swc.swcCreateTransforms(o.libs,o.scope)}),{}):swc.swcCreateTransforms(u.libs,u.scope):{},...m.modularizeImports||{},...swc.swcTransformsKoine},...m};return (p&&(n?// @see https://github.com/gregberge/svgr
33
- c.nx={svgr:!0}:(// if falsy just remove the key
34
- delete c.nx,c.webpack=(e,r)=>// ...[_config, options]: Parameters<NonNullable<NextConfig['webpack']>>
35
- {let o="function"==typeof m.webpack?m.webpack(e,r):e;return(// @see https://dev.to/dolearning/importing-svgs-to-next-js-nna#svgr
36
- o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o)})),l)?next.withI18nLegacy({...c,i18nRoutes:l}):a?n?next.withI18nAsync({...c,i18nCompiler:a}):next.withI18n({...c,i18nCompiler:a}):c};
6
+ let withKoine=(s={})=>{let{nx:n,svg:p,i18nRoutes:l,i18nCompiler:a,modularize:u,...m}=s,c={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...m.experimental||{}},modularizeImports:{...u?Array.isArray(u)?u.reduce((r,o)=>({...r,...swc.swcCreateTransforms(o.libs,o.scope)}),{}):swc.swcCreateTransforms(u.libs,u.scope):{},...m.modularizeImports||{},...swc.swcTransformsKoine},...m};return (p&&(n?c.nx={svgr:!0}:(delete c.nx,c.webpack=(e,r)=>{let o="function"==typeof m.webpack?m.webpack(e,r):e;return o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o})),l)?next.withI18nLegacy({...c,i18nRoutes:l}):a?n?next.withI18nAsync({...c,i18nCompiler:a}):next.withI18n({...c,i18nCompiler:a}):c};
37
7
 
38
8
  exports.withKoine = withKoine;
package/config.esm.js CHANGED
@@ -1,36 +1,6 @@
1
1
  import { swcCreateTransforms, swcTransformsKoine } from '@koine/node/swc';
2
2
  import { withI18nLegacy, withI18nAsync, withI18n } from '@koine/i18n/next';
3
3
 
4
- /**
5
- * @legacy
6
- *//**
7
- * A list of the packages to modularize, if a `scope` is given that will be
8
- * automatically prepended before a slash e.g. `{scope}/@{lib}`.
9
- * @example ["components", "utils"]
10
- *//**
11
- * The scope of the packages to modularize, if given a slash is automatically
12
- * appended between the scope and the lib name
13
- * @example "@"
14
- *//**
15
- * Shortcut option to automatically create swc transforms to feed into
16
- * _Next.js_' `modularizeImports`
17
- *//**
18
- * Get Next.js config with some basic opinionated defaults
19
- *
20
- * @param {object} options
21
- * @property {boolean} [options.nx=false] Nx monorepo setup
22
- * @property {boolean} [options.svg=false] SVG to react components
23
- */let withKoine=(s={})=>{let{nx:n,svg:p,i18nRoutes:l,i18nCompiler:a,modularize:u,...m}=s,c={eslint:{ignoreDuringBuilds:!0},// we have this strict check on each commit
24
- typescript:{ignoreBuildErrors:!0},// we have this strict check on each commit
25
- poweredByHeader:!1,experimental:{// @see https://github.com/vercel/vercel/discussions/5973#discussioncomment-472618
26
- // @see critters error https://github.com/vercel/next.js/issues/20742
27
- // optimizeCss: true,
28
- // @see https://github.com/vercel/next.js/discussions/30174#discussion-3643870
29
- scrollRestoration:!0,...m.experimental||{}},// @see https://www.zhoulujun.net/nextjs/advanced-features/compiler.html#modularize-imports
30
- modularizeImports:{...u?Array.isArray(u)?u.reduce((r,o)=>({...r,...swcCreateTransforms(o.libs,o.scope)}),{}):swcCreateTransforms(u.libs,u.scope):{},...m.modularizeImports||{},...swcTransformsKoine},...m};return (p&&(n?// @see https://github.com/gregberge/svgr
31
- c.nx={svgr:!0}:(// if falsy just remove the key
32
- delete c.nx,c.webpack=(e,r)=>// ...[_config, options]: Parameters<NonNullable<NextConfig['webpack']>>
33
- {let o="function"==typeof m.webpack?m.webpack(e,r):e;return(// @see https://dev.to/dolearning/importing-svgs-to-next-js-nna#svgr
34
- o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o)})),l)?withI18nLegacy({...c,i18nRoutes:l}):a?n?withI18nAsync({...c,i18nCompiler:a}):withI18n({...c,i18nCompiler:a}):c};
4
+ let withKoine=(s={})=>{let{nx:n,svg:p,i18nRoutes:l,i18nCompiler:a,modularize:u,...m}=s,c={eslint:{ignoreDuringBuilds:!0},typescript:{ignoreBuildErrors:!0},poweredByHeader:!1,experimental:{scrollRestoration:!0,...m.experimental||{}},modularizeImports:{...u?Array.isArray(u)?u.reduce((r,o)=>({...r,...swcCreateTransforms(o.libs,o.scope)}),{}):swcCreateTransforms(u.libs,u.scope):{},...m.modularizeImports||{},...swcTransformsKoine},...m};return (p&&(n?c.nx={svgr:!0}:(delete c.nx,c.webpack=(e,r)=>{let o="function"==typeof m.webpack?m.webpack(e,r):e;return o.module.rules.push({test:/\.svg$/,use:[{loader:"@svgr/webpack",options:{svgoConfig:{plugins:[{name:"removeViewBox",active:!1}]}}}]}),o})),l)?withI18nLegacy({...c,i18nRoutes:l}):a?n?withI18nAsync({...c,i18nCompiler:a}):withI18n({...c,i18nCompiler:a}):c};
35
5
 
36
6
  export { withKoine };
package/load.cjs.js CHANGED
@@ -2,14 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- /**
6
- * Utility to load a component with an optional pre-determined delay.
7
- *
8
- * This was designed to improve anti spam with async form loading.
9
- *
10
- * @see https://github.com/vercel/next.js/blob/main/packages/next/next-server/lib/dynamic.tsx
11
- * @see https://github.com/vercel/next.js/blob/canary/examples/with-dynamic-import/pages/index.js
12
- */function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
5
+ function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
13
6
 
14
7
  exports.default = load;
15
8
  exports.load = load;
package/load.esm.js CHANGED
@@ -1,10 +1,3 @@
1
- /**
2
- * Utility to load a component with an optional pre-determined delay.
3
- *
4
- * This was designed to improve anti spam with async form loading.
5
- *
6
- * @see https://github.com/vercel/next.js/blob/main/packages/next/next-server/lib/dynamic.tsx
7
- * @see https://github.com/vercel/next.js/blob/canary/examples/with-dynamic-import/pages/index.js
8
- */function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
1
+ function load(e,o){return new Promise(t=>{setTimeout(()=>t(e),o);})}
9
2
 
10
3
  export { load as default, load };
package/package.json CHANGED
@@ -2,9 +2,10 @@
2
2
  "name": "@koine/next",
3
3
  "sideEffects": false,
4
4
  "dependencies": {
5
- "@koine/browser": "2.0.0-beta.133",
6
- "@koine/utils": "2.0.0-beta.133",
7
- "@koine/i18n": "2.0.0-beta.133"
5
+ "@koine/browser": "2.0.0-beta.135",
6
+ "@koine/i18n": "2.0.0-beta.135",
7
+ "@koine/node": "2.0.0-beta.135",
8
+ "@koine/utils": "2.0.0-beta.135"
8
9
  },
9
10
  "peerDependencies": {
10
11
  "next": "^14.0.4",
@@ -64,5 +65,5 @@
64
65
  "module": "./index.esm.js",
65
66
  "main": "./index.cjs.js",
66
67
  "types": "./index.esm.d.ts",
67
- "version": "2.0.0-beta.133"
68
+ "version": "2.0.0-beta.135"
68
69
  }
package/useTheme.cjs.js CHANGED
@@ -5,9 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var react = require('react');
6
6
  var ThemeContext = require('./ThemeContext.cjs.js');
7
7
 
8
- /**
9
- * @borrows [next-themes](https://github.com/pacocoursey/next-themes)
10
- */const useTheme=()=>react.useContext(ThemeContext.ThemeContext);
8
+ const useTheme=()=>react.useContext(ThemeContext.ThemeContext);
11
9
 
12
10
  exports.default = useTheme;
13
11
  exports.useTheme = useTheme;
package/useTheme.esm.js CHANGED
@@ -1,8 +1,6 @@
1
1
  import { useContext } from 'react';
2
2
  import { ThemeContext } from './ThemeContext.esm.js';
3
3
 
4
- /**
5
- * @borrows [next-themes](https://github.com/pacocoursey/next-themes)
6
- */const useTheme=()=>useContext(ThemeContext);
4
+ const useTheme=()=>useContext(ThemeContext);
7
5
 
8
6
  export { useTheme as default, useTheme };