diff --git a/README.md b/README.md index e1eecb07..278a06e7 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,7 @@ Next.js app supports dark mode, including System preference with `prefers-color- Show different images based on the current theme: -```jsx +```ts import Image from "next/image"; import { useTheme } from "nextjs-themes"; diff --git a/docs/assets/icons.js b/docs/assets/icons.js index b79c9e89..e88e8ca7 100644 --- a/docs/assets/icons.js +++ b/docs/assets/icons.js @@ -1,15 +1,18 @@ -(function(svg) { - svg.innerHTML = ``; - svg.style.display = 'none'; - if (location.protocol === 'file:') { - if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateUseElements); - else updateUseElements() - function updateUseElements() { - document.querySelectorAll('use').forEach(el => { - if (el.getAttribute('href').includes('#icon-')) { - el.setAttribute('href', el.getAttribute('href').replace(/.*#/, '#')); - } - }); - } +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `""`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); } -})(document.body.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))) \ No newline at end of file + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/docs/assets/icons.svg b/docs/assets/icons.svg index 7dead611..e371b8b5 100644 --- a/docs/assets/icons.svg +++ b/docs/assets/icons.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js index d6f13886..7d7f77a0 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,8 +1,9 @@ "use strict"; -"use strict";(()=>{var Ce=Object.create;var ne=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Ce(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),y=s.str.charAt(1),p;y in s.node.edges?p=s.node.edges[y]:(p=new t.TokenSet,s.node.edges[y]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(console.log("Show page"),document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){console.log("Scorlling");let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ve(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ne(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ve(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ce(l.parent,i)}.${d}`);let y=document.createElement("li");y.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,y.append(p),e.appendChild(y)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ne(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var He={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>He[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",fe="mousemove",H="mouseup",J={x:0,y:0},pe=!1,ee=!1,Be=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",fe="touchmove",H="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ee=!1});document.addEventListener("click",t=>{pe&&(t.preventDefault(),t.stopImmediatePropagation(),pe=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ye=document.head.appendChild(document.createElement("style"));ye.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ye.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ve(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ve(t.value)})}function ve(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; +"use strict";(()=>{var Ce=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),Ve(t,i,r,e)}function Ve(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?He(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function He(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",H="mouseup",J={x:0,y:0},me=!1,ne=!1,je=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(je=!0,F="touchstart",ye="touchmove",H="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var qe=new U;Object.defineProperty(window,"app",{value:qe});fe();we();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index b76b1819..95224493 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA61Ya0/bMBT9L97XduVRmKimSYhSxgZjIu0mhFDkJbfUI9iR7fDQxH+faqeLnTiOw/ho99xz7j2xfe1e/0ESniSaoCQjQCUaoGRFspQDRZPr6keWMT4Uj0Qmq5E5QAOUY7lCE3TP0iIDMdI8sQLFGmQN3q/kfYYG6I7QFE123HpH64BI4b9zlotKhlAJfImTEKU6S016b/9l4FKsxJYFTSRhtJ+WLbM/frkxdJaMJzAsLUxWcA+j5lSrqwq6EVZQx1SQw7N1mE66JtkoOky0ThjggjTKlwF1S0Nb9qt0HlRjU6AK9tajwOWWAN6yiSgbLlmRtBap1TckMWXxGh5U40e1LSjOPvVljzeRcZDQD5wVIObPuWGmfM77yFQUNcWtgw/bezuWr5cgWPYAs4Im/fSMQLdKpbHIUyxhenHeX8UKDdNRCypVx9Fr9WoUXbqUzS4WR1HCSS49O6BF0ozutwWClqE9DFqCajdGZURnd/DrNbl8PcJCh1vp03RYemPZmjAqJKZSOBzd/BRk2/Tw8mvF8YA5wb9sljXCpto119H0eHa4OJvHp9MOmn84D9nZ6cnnuZ9HQTwU0VU0Pz73c2hMg8Q0eMXYnRgVorUFKUBciD49x3ce1/l6nsALofvRFYEsda58j4AV3Fzqpi+FaG+adYUN1ntACOAPwEcUnuRvMdKjoSApDB85znPgrrmmfRoUa5q4HK1D4jLENRfk7Dd4kl9EpKLnmN+CfEv1d056ndB4+2C8uzUeoCTDQqAJSiHnkGAJKTIcLBmiy8Aj8HXJelR8h6MuLCIp/NREb52XW8CXUtko8W3jsvK6DCo+Z88N/XwnnX3k/z7cibfDdGXZsPntEmxQh+VmHSKScccZrabDXwNptMbbt1hzfSq2GrL7YhDAaQN9lIQSSXAWSSzB1eM0n4nytMpCgFGN84MqOhvXOM2bzaGbr4L5b4/rbdn8rmq6xz8G6uXpep1oohqo6+ZcPiLSIO4WcNsb5+YvxPi43XoRAAA=" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACq1Ya0/bMBT9L97XduVRmKimSYhSxgZjIu0mhFDkJbfUI9iR7fDQxH+faqeLnTiOw/ho99xz7j2xfe1e/0ESniSaoCQjQCUaoGRFspQDRZPr6keWMT4Uj0Qmq5E5QAOUY7lCE3TP0iIDMdI8sQLFGmQN3q/kfYYG6I7QFE123HpH64BI4b9zlotKhlAJfImTEKU6S016b/9l4FKsxJYFTSRhtJ+WLbM/frkxdJaMJzAsLUxWcA+j5lSrqwq6EVZQx1SQw7N1mE66JtkoOky0ThjggjTKlwF1S0Nb9qt0HlRjU6AK9tajwOWWAN6yiSgbLlmRtBap1TckMWXxGh5U40e1LSjOPvVljzeRcZDQD5wVIObPuWGmfM77yFQUNcWtgw/bezuWr5cgWPYAs4Im/fSMQLdKpbHIUyxhenHeX8UKDdNRCypVx9Fr9WoUXbqUzS4WR1HCSS49O6BF0ozutwWClqE9DFqCajdGZURnd/DrNbl8PcJCh1vp03RYemPZmjAqJKZSOBzd/BRk2/Tw8mvF8YA5wb9sljXCpto119H0eHa4OJvHp9MOmn84D9nZ6cnnuZ9HQTwU0VU0Pz73c2hMg8Q0eMXYnRgVorUFKUBciD49x3ce1/l6nsALofvRFYEsda58j4AV3Fzqpi+FaG+adYUN1ntACOAPwEcUnuRvMdKjoSApDB85znPgrrmmfRoUa5q4HK1D4jLENRfk7Dd4kl9EpKLnmN+CfEv1d056ndB4+2C8uzUeoCTDQqAJSiHnkGAJKTIcLBmiy8Aj8HXJelR8h6MuLCIp/NREb52XW8CXUtko8W3jsvK6DCo+Z88N/XwnnX3k/z7cibfDdGXZsPntEmxQh+VmHSKScccZrabDXwNptMbbt1hzfSq2GrL7YhDAaQN9lIQSSXAWSSzB1eM0n4nytMpCgFGN84MqOhvXOM2bzaGbr4L5b4/rbdn8rmq6xz8G6uXpep1oohqo6+ZcPiLSIO4WcNsb5+YvxPi43XoRAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 4816a855..51e6091e 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index 778b9492..d0c980d4 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -10,6 +10,7 @@ --light-color-text: #222; --light-color-text-aside: #6e6e6e; --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; --light-color-ts-keyword: #056bd6; --light-color-ts-project: #b111c9; @@ -35,6 +36,7 @@ --light-color-ts-set-signature: var(--light-color-ts-accessor); --light-color-ts-type-alias: #d51270; /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; --light-external-icon: url("data:image/svg+xml;utf8,"); --light-color-scheme: light; @@ -50,6 +52,7 @@ --dark-color-text: #f5f5f5; --dark-color-text-aside: #dddddd; --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; --dark-color-ts-keyword: #3399ff; --dark-color-ts-project: #e358ff; @@ -75,6 +78,7 @@ --dark-color-ts-set-signature: var(--dark-color-ts-accessor); --dark-color-ts-type-alias: #ff6492; /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; --dark-external-icon: url("data:image/svg+xml;utf8,"); --dark-color-scheme: dark; @@ -92,6 +96,7 @@ --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); --color-ts-keyword: var(--light-color-ts-keyword); --color-ts-module: var(--light-color-ts-module); @@ -116,6 +121,7 @@ --color-ts-get-signature: var(--light-color-ts-get-signature); --color-ts-set-signature: var(--light-color-ts-set-signature); --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); --external-icon: var(--light-external-icon); --color-scheme: var(--light-color-scheme); @@ -134,6 +140,7 @@ --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); --color-ts-keyword: var(--dark-color-ts-keyword); --color-ts-module: var(--dark-color-ts-module); @@ -158,6 +165,7 @@ --color-ts-get-signature: var(--dark-color-ts-get-signature); --color-ts-set-signature: var(--dark-color-ts-set-signature); --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); --external-icon: var(--dark-external-icon); --color-scheme: var(--dark-color-scheme); @@ -183,6 +191,7 @@ body { --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); --color-ts-keyword: var(--light-color-ts-keyword); --color-ts-module: var(--light-color-ts-module); @@ -207,6 +216,7 @@ body { --color-ts-get-signature: var(--light-color-ts-get-signature); --color-ts-set-signature: var(--light-color-ts-set-signature); --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); --external-icon: var(--light-external-icon); --color-scheme: var(--light-color-scheme); @@ -223,6 +233,7 @@ body { --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); --color-ts-keyword: var(--dark-color-ts-keyword); --color-ts-module: var(--dark-color-ts-module); @@ -247,11 +258,17 @@ body { --color-ts-get-signature: var(--dark-color-ts-get-signature); --color-ts-set-signature: var(--dark-color-ts-set-signature); --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); --external-icon: var(--dark-external-icon); --color-scheme: var(--dark-color-scheme); } +*:focus-visible, +.tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); +} + .always-visible, .always-visible .tsd-signatures { display: inherit !important; @@ -266,16 +283,6 @@ h6 { line-height: 1.2; } -h1 > a:not(.link), -h2 > a:not(.link), -h3 > a:not(.link), -h4 > a:not(.link), -h5 > a:not(.link), -h6 > a:not(.link) { - text-decoration: none; - color: var(--color-text); -} - h1 { font-size: 1.875rem; margin: 0.67rem 0; @@ -306,10 +313,6 @@ h6 { margin: 2.33rem 0; } -.uppercase { - text-transform: uppercase; -} - dl, menu, ol, @@ -333,7 +336,7 @@ footer { padding-bottom: 1rem; max-height: 3.5rem; } -.tsd-generator { +footer > p { margin: 0 1em; } @@ -421,6 +424,9 @@ a.external[target="_blank"] { background-repeat: no-repeat; padding-right: 13px; } +a.tsd-anchor-link { + color: var(--color-text); +} code, pre { @@ -580,13 +586,13 @@ dl.tsd-comment-tag-group p { } .tsd-filter-input { display: flex; - width: fit-content; width: -moz-fit-content; + width: fit-content; align-items: center; - user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; + user-select: none; cursor: pointer; } .tsd-filter-input input[type="checkbox"] { @@ -609,11 +615,8 @@ dl.tsd-comment-tag-group p { Don't remove unless you know what you're doing. */ opacity: 0.99; } -.tsd-filter-input input[type="checkbox"]:focus + svg { - transform: scale(0.95); -} -.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { - transform: scale(1); +.tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); } .tsd-checkbox-background { fill: var(--color-accent); @@ -630,13 +633,18 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { stroke: var(--color-accent); } -.tsd-theme-toggle { - padding-top: 0.75rem; +.settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; } -.tsd-theme-toggle > h4 { - display: inline; - vertical-align: middle; - margin-right: 0.75rem; + +.tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; +} + +.tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; } .tsd-hierarchy { @@ -769,6 +777,9 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { padding: 0; max-width: 100%; } +.tsd-navigation .tsd-nav-link { + display: none; +} .tsd-nested-navigation { margin-left: 3rem; } @@ -812,10 +823,10 @@ a.tsd-index-link { } .tsd-accordion-summary, .tsd-accordion-summary a { - user-select: none; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; + user-select: none; cursor: pointer; } @@ -828,7 +839,7 @@ a.tsd-index-link { padding-top: 0; padding-bottom: 0; } -.tsd-index-accordion .tsd-accordion-summary > svg { +.tsd-accordion .tsd-accordion-summary > svg { margin-left: 0.25rem; } .tsd-index-content > :not(:first-child) { @@ -877,7 +888,7 @@ a.tsd-index-link { } .tsd-panel-group { - margin: 4rem 0; + margin: 2rem 0; } .tsd-panel-group.tsd-index-group { margin: 2rem 0; @@ -885,6 +896,9 @@ a.tsd-index-link { .tsd-panel-group.tsd-index-group details { margin: 2rem 0; } +.tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; +} #tsd-search { transition: background-color 0.2s; @@ -1034,6 +1048,12 @@ a.tsd-index-link { border-width: 1px 0; transition: background-color 0.1s; } +.tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; +} +.tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; +} .tsd-description .tsd-signatures .tsd-signature { border-width: 1px; } @@ -1347,6 +1367,12 @@ img { .has-menu .tsd-navigation { max-height: 100%; } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } } /* one sidebar */ diff --git a/docs/functions/client_color_switch_color_switch.ColorSwitch.html b/docs/functions/client_color_switch_color_switch.ColorSwitch.html index cd2f46f7..dbf36d6e 100644 --- a/docs/functions/client_color_switch_color_switch.ColorSwitch.html +++ b/docs/functions/client_color_switch_color_switch.ColorSwitch.html @@ -1,7 +1,9 @@ -ColorSwitch | React18 Loaders
  • Color switch button to quickly set user preference

    -

    Parameters

    Returns Element

    Example

    <ColorSwitch />
    -
    +ColorSwitch | React18 Loaders

    Color switch button to quickly set user preference

    +
    <ColorSwitch />
    +
    +

    Custom size & skipSystem

    -
    <ColorSwitch size={20} skipSystem />
    -
    -
\ No newline at end of file +
<ColorSwitch size={20} skipSystem />
+
+ +
\ No newline at end of file diff --git a/docs/functions/client_force_color_scheme_force_color_scheme.ForceColorScheme.html b/docs/functions/client_force_color_scheme_force_color_scheme.ForceColorScheme.html index d4b8e7dc..afd9e126 100644 --- a/docs/functions/client_force_color_scheme_force_color_scheme.ForceColorScheme.html +++ b/docs/functions/client_force_color_scheme_force_color_scheme.ForceColorScheme.html @@ -1,2 +1,2 @@ -ForceColorScheme | React18 Loaders
\ No newline at end of file +ForceColorScheme | React18 Loaders

Force color scheme on a page

+
\ No newline at end of file diff --git a/docs/functions/client_force_theme_force_theme.ForceTheme.html b/docs/functions/client_force_theme_force_theme.ForceTheme.html index bf92975e..eac67eba 100644 --- a/docs/functions/client_force_theme_force_theme.ForceTheme.html +++ b/docs/functions/client_force_theme_force_theme.ForceTheme.html @@ -1,2 +1,2 @@ -ForceTheme | React18 Loaders
\ No newline at end of file +ForceTheme | React18 Loaders

Force theme on a page

+
\ No newline at end of file diff --git a/docs/functions/client_theme_switcher_no_fouc.noFOUCScript.html b/docs/functions/client_theme_switcher_no_fouc.noFOUCScript.html index 2750fe96..268ef92c 100644 --- a/docs/functions/client_theme_switcher_no_fouc.noFOUCScript.html +++ b/docs/functions/client_theme_switcher_no_fouc.noFOUCScript.html @@ -1,2 +1,2 @@ -noFOUCScript | React18 Loaders
\ No newline at end of file +noFOUCScript | React18 Loaders

Script to be injected for avoiding FOUC

+
\ No newline at end of file diff --git a/docs/functions/client_theme_switcher_theme_switcher.ThemeSwitcher.html b/docs/functions/client_theme_switcher_theme_switcher.ThemeSwitcher.html index 1c99fa02..18e0f537 100644 --- a/docs/functions/client_theme_switcher_theme_switcher.ThemeSwitcher.html +++ b/docs/functions/client_theme_switcher_theme_switcher.ThemeSwitcher.html @@ -1,8 +1,10 @@ -ThemeSwitcher | React18 Loaders
  • Parameters

    Returns Element

    Example

    <ThemeSwitcher />
    -
    -

    Source

      +ThemeSwitcher | React18 Loaders
      <ThemeSwitcher />
      +
      + +
      • Source code
      -
      const ThemeSwitcher = ({
      forcedTheme,
      forcedColorScheme,
      targetSelector,
      themeTransition,
      styles,
      nonce,
      }: ThemeSwitcherProps) => {
      const k = targetSelector || `#${DEFAULT_ID}`;
      // handle client side exceptions when script is not run. <- for client side apps like vite or CRA
      if (typeof window !== "undefined" && !window.m)
      noFOUCScript(k, initialState, styles, forcedTheme, forcedColorScheme);

      const [state, setState] = useThemeStore(targetSelector);
      const [forced] = useForcedStore(targetSelector);

      useEffect(() => {
      media.addEventListener("change", () =>
      setState(state => ({ ...state, s: media.matches ? DARK : LIGHT })),
      );
      addEventListener("storage", e => {
      if (e.key === k) setState(state => ({ ...state, ...JSON.parse(e.newValue || "{}") }));
      });
      }, []);

      useEffect(() => {
      const restoreThansitions = modifyTransition(themeTransition);
      updateDOM(resolveTheme(state));
      restoreThansitions();
      localStorage.setItem(k, JSON.stringify(state));
      }, [state]);

      useEffect(() => {
      updateForcedProps(forcedTheme, forcedColorScheme);
      updateDOM(resolveTheme(state));
      }, [forcedColorScheme, forcedTheme]);

      useEffect(() => {
      updateForcedState(forced.f, forced.fc);
      updateDOM(resolveTheme(state));
      }, [forced]);

      return <Script {...{ k, n: nonce, s: styles, t: forcedTheme, c: forcedColorScheme }} />;
      } -
      -
\ No newline at end of file +
const ThemeSwitcher = ({
forcedTheme,
forcedColorScheme,
targetSelector,
themeTransition,
styles,
nonce,
}: ThemeSwitcherProps) => {
const k = targetSelector || `#${DEFAULT_ID}`;
// handle client side exceptions when script is not run. <- for client side apps like vite or CRA
if (typeof window !== "undefined" && !window.m)
noFOUCScript(k, initialState, styles, forcedTheme, forcedColorScheme);

const [state, setState] = useThemeStore(targetSelector);
const [forced] = useForcedStore(targetSelector);

useEffect(() => {
media.addEventListener("change", () =>
setState(state => ({ ...state, s: media.matches ? DARK : LIGHT })),
);
addEventListener("storage", e => {
if (e.key === k) setState(state => ({ ...state, ...JSON.parse(e.newValue || "{}") }));
});
}, []);

useEffect(() => {
const restoreThansitions = modifyTransition(themeTransition);
updateDOM(resolveTheme(state));
restoreThansitions();
localStorage.setItem(k, JSON.stringify(state));
}, [state]);

useEffect(() => {
updateForcedProps(forcedTheme, forcedColorScheme);
updateDOM(resolveTheme(state));
}, [forcedColorScheme, forcedTheme]);

useEffect(() => {
updateForcedState(forced.f, forced.fc);
updateDOM(resolveTheme(state));
}, [forced]);

return <Script {...{ k, n: nonce, s: styles, t: forcedTheme, c: forcedColorScheme }} />;
} +
+ +
\ No newline at end of file diff --git a/docs/functions/hooks_use_theme.useTheme.html b/docs/functions/hooks_use_theme.useTheme.html index 8310b8ce..f07c0b13 100644 --- a/docs/functions/hooks_use_theme.useTheme.html +++ b/docs/functions/hooks_use_theme.useTheme.html @@ -1,8 +1,10 @@ -useTheme | React18 Loaders
  • Parameters

    • Optional targetSelector: string

    Returns UseThemeYield

    Example

    const [] = useTheme(options);
    -
    -

    Source

      +useTheme | React18 Loaders
      const [] = useTheme(options);
      +
      + +
      • Source code
      -
      const useTheme = (targetSelector?: string): UseThemeYield => {
      const [state, setState] = useThemeStore(targetSelector);
      const [_, setForcedState] = useForcedStore(targetSelector);
      useEffect(() => {
      resolveTheme = window.r;
      }, []);


      const setter =
      <T>(key: string) =>
      (arg: T) =>
      setState(state => ({ ...state, [key]: arg }));

      const hookResult: UseThemeYield = {
      theme: state.t,
      darkTheme: state.d,
      lightTheme: state.l,
      colorSchemePref: state.c,
      systemColorScheme: state.s,
      resolvedColorScheme: state.c === SYSTEM || state.c === "" ? state.s : state.c,
      resolvedTheme: state.t,
      setTheme: setter<string>("t"),
      setDarkTheme: setter<string>("d"),
      setLightTheme: setter<string>("l"),
      setThemeSet: ({ darkTheme: d, lightTheme: l }) => setState(state => ({ ...state, d, l })),
      setColorSchemePref: setter<ColorSchemeType>("c"),
      toggleColorScheme(skipSystem) {
      let index = colorSchemes.indexOf(state.c);
      const len = colorSchemes.length;
      if (index === -1 || (skipSystem && index === len - 1)) index = 0;
      setter("c")(colorSchemes[(index + 1) % len]);
      },
      setForcedColorScheme: forcedColorScheme =>
      setForcedState(state => ({ ...state, fc: forcedColorScheme })),
      setForcedTheme: forcedTheme => setForcedState(state => ({ ...state, f: forcedTheme })),
      };

      if (resolveTheme) {
      const resolvedValues = resolveTheme(state);
      hookResult.resolvedColorScheme = resolvedValues[0];
      hookResult.resolvedTheme = resolvedValues[1];
      }

      return hookResult;
      } -
      -
\ No newline at end of file +
const useTheme = (targetSelector?: string): UseThemeYield => {
const [state, setState] = useThemeStore(targetSelector);
const [_, setForcedState] = useForcedStore(targetSelector);
useEffect(() => {
resolveTheme = window.r;
}, []);


const setter =
<T>(key: string) =>
(arg: T) =>
setState(state => ({ ...state, [key]: arg }));

const hookResult: UseThemeYield = {
theme: state.t,
darkTheme: state.d,
lightTheme: state.l,
colorSchemePref: state.c,
systemColorScheme: state.s,
resolvedColorScheme: state.c === SYSTEM || state.c === "" ? state.s : state.c,
resolvedTheme: state.t,
setTheme: setter<string>("t"),
setDarkTheme: setter<string>("d"),
setLightTheme: setter<string>("l"),
setThemeSet: ({ darkTheme: d, lightTheme: l }) => setState(state => ({ ...state, d, l })),
setColorSchemePref: setter<ColorSchemeType>("c"),
toggleColorScheme(skipSystem) {
let index = colorSchemes.indexOf(state.c);
const len = colorSchemes.length;
if (index === -1 || (skipSystem && index === len - 1)) index = 0;
setter("c")(colorSchemes[(index + 1) % len]);
},
setForcedColorScheme: forcedColorScheme =>
setForcedState(state => ({ ...state, fc: forcedColorScheme })),
setForcedTheme: forcedTheme => setForcedState(state => ({ ...state, f: forcedTheme })),
};

if (resolveTheme) {
const resolvedValues = resolveTheme(state);
hookResult.resolvedColorScheme = resolvedValues[0];
hookResult.resolvedTheme = resolvedValues[1];
}

return hookResult;
} +
+ +
\ No newline at end of file diff --git a/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSGThemeSwitcher.html b/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSGThemeSwitcher.html index 6d243919..be8c5cf7 100644 --- a/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSGThemeSwitcher.html +++ b/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSGThemeSwitcher.html @@ -1,4 +1,4 @@ -NextJsSSGThemeSwitcher | React18 Loaders
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapper.html b/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapper.html index 4f386429..4b1deea2 100644 --- a/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapper.html +++ b/docs/functions/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapper.html @@ -1,4 +1,4 @@ -ServerSideWrapper | React18 Loaders
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/functions/store.useForcedStore.html b/docs/functions/store.useForcedStore.html index 7c437528..2a91acb7 100644 --- a/docs/functions/store.useForcedStore.html +++ b/docs/functions/store.useForcedStore.html @@ -1 +1 @@ -useForcedStore | React18 Loaders

Function useForcedStore

\ No newline at end of file +useForcedStore | React18 Loaders

Function useForcedStore

\ No newline at end of file diff --git a/docs/functions/store.useThemeStore.html b/docs/functions/store.useThemeStore.html index 255ec687..5070b70d 100644 --- a/docs/functions/store.useThemeStore.html +++ b/docs/functions/store.useThemeStore.html @@ -1,2 +1,2 @@ -useThemeStore | React18 Loaders

Function useThemeStore

\ No newline at end of file +useThemeStore | React18 Loaders

Function useThemeStore

internal store

+
\ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 167496fd..a20ab5ff 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -React18 Loaders
\ No newline at end of file +React18 Loaders
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 2e8edd92..b772cb95 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,11 +1,9 @@ -React18 Loaders

React18 Loaders

Next.js Themes

test Maintainability codecov Version Downloads npm bundle size Contact me on Codementor

+React18 Loaders

React18 Loaders

Next.js Themes

test Maintainability codecov Version Downloads npm bundle size Contact me on Codementor

Version 3 Short Notes: Version 3.0 brings minor API changes along with major performance improvements and fixes. We have minimized changes to existing APIs. -

Note: react18-themes will now be maintained as nextjs-themes, as server-specific APIs are no longer needed.

-

🤟 👉 Unleash the Power of React Server Components

  • ✅ Perfect dark mode in 2 lines of code
  • @@ -18,8 +16,7 @@

    Motivation and Key Features:

    - -

    This project was inspired by next-themes. Unlike next-themes, nextjs-themes doesn't require wrapping everything in a provider, allowing you to take full advantage of React 18 Server Components. Additionally, it offers more features and control over your app's theming.

    +

    This project was inspired by next-themes. Unlike next-themes, nextjs-themes doesn't require wrapping everything in a provider, allowing you to take full advantage of React 18 Server Components. Additionally, it offers more features and control over your app's theming.

    • ✅ Perfect dark mode in 2 lines of code
    • ✅ Fully Treeshakable (import from nextjs-themes/client/component)
    • @@ -37,106 +34,118 @@
    • ✅ Manipulate theme via useTheme hook
    • ✅ Documented with Typedoc (Docs)
    • ✅ Use combinations of [data-th=""] and [data-color-scheme=""] for dark/light variants of themes
    • -
    • ✅ Use [data-csp=""] to style based on colorSchemePreference.
    +
  • ✅ Use [data-csp=""] to style based on colorSchemePreference.
+

Check out the live example.

Installation

+
$ pnpm add nextjs-themes
+
-
$ pnpm add nextjs-themes
-

or

-
$ npm install nextjs-themes
-
+
$ npm install nextjs-themes
+
+

or

-
$ yarn add nextjs-themes
-
-
+
$ yarn add nextjs-themes
+
+

Want Lite Version?

-

npm bundle size Version Downloads

+
$ pnpm add nextjs-themes-lite
+
-
$ pnpm add nextjs-themes-lite
-

or

-
$ npm install nextjs-themes-lite
-
+
$ npm install nextjs-themes-lite
+
+

or

-
$ yarn add nextjs-themes-lite
-
+
$ yarn add nextjs-themes-lite
+
+

Note: r18gs is a peer dependency

+

To add dark mode support, modify _app.js as follows:

+
import { ThemeSwitcher } from "nextjs-themes";

function MyApp({ Component, pageProps }) {
return (
<>
<ThemeSwitcher forcedTheme={Component.theme} />
<Component {...pageProps} />
</>
);
}

export default MyApp; +
-

Usage

SPA (e.g., Vite, CRA) and Next.js pages directory (No server components)

To add dark mode support, modify _app.js as follows:

-
import { ThemeSwitcher } from "nextjs-themes";

function MyApp({ Component, pageProps }) {
return (
<>
<ThemeSwitcher forcedTheme={Component.theme} />
<Component {...pageProps} />
</>
);
}

export default MyApp; -

⚡🎉Boom! Dark mode is ready in just a couple of lines!

-

With Next.js app router (Server Components)

Update app/layout.jsx to add ThemeSwitcher from nextjs-themes:

-
// app/layout.jsx
import { ThemeSwitcher } from "nextjs-themes";

export default function Layout({ children }) {
return (
<html lang="en">
<head />
<body>
<ThemeSwitcher />
{children}
</body>
</html>
);
} -
+

Update app/layout.jsx to add ThemeSwitcher from nextjs-themes:

+
// app/layout.jsx
import { ThemeSwitcher } from "nextjs-themes";

export default function Layout({ children }) {
return (
<html lang="en">
<head />
<body>
<ThemeSwitcher />
{children}
</body>
</html>
);
} +
+

Woohoo! Multiple theme modes with Server Components support!

-

HTML & CSS

Next.js app supports dark mode, including System preference with prefers-color-scheme. The theme is synced between tabs, modifying the data-theme attribute on the html element:

-
:root {
--background: white;
--foreground: black;
}

[data-theme="dark"] {
--background: black;
--foreground: white;
} -
-

Images

Show different images based on the current theme:

-
import Image from "next/image";
import { useTheme } from "nextjs-themes";

function ThemedImage() {
const { resolvedTheme } = useTheme();
const src = resolvedTheme === "light" ? "/light.png" : "/dark.png";
return <Image src={src} width={400} height={400} />;
}

export default ThemedImage; -
-

useTheme

The useTheme hook provides theme information and allows changing the theme:

-
import { useTheme } from "nextjs-themes";

const ThemeChanger = () => {
const { theme, setTheme } = useTheme();

return (
<div>
The current theme is: {theme}
<button onClick={() => setTheme("light")}>Light Mode</button>
<button onClick={() => setTheme("dark")}>Dark Mode</button>
</div>
);
}; -
+

Next.js app supports dark mode, including System preference with prefers-color-scheme. The theme is synced between tabs, modifying the data-theme attribute on the html element:

+
:root {
--background: white;
--foreground: black;
}

[data-theme="dark"] {
--background: black;
--foreground: white;
} +
+ +

Show different images based on the current theme:

+
import Image from "next/image";
import { useTheme } from "nextjs-themes";

function ThemedImage() {
const { resolvedTheme } = useTheme();
const src = resolvedTheme === "light" ? "/light.png" : "/dark.png";
return <Image src={src} width={400} height={400} />;
}

export default ThemedImage; +
+ +

The useTheme hook provides theme information and allows changing the theme:

+
import { useTheme } from "nextjs-themes";

const ThemeChanger = () => {
const { theme, setTheme } = useTheme();

return (
<div>
The current theme is: {theme}
<button onClick={() => setTheme("light")}>Light Mode</button>
<button onClick={() => setTheme("dark")}>Dark Mode</button>
</div>
);
}; +
+

The useTheme hook returns the following object:

-
interface UseThemeYield {
theme: string;
darkTheme: string;
lightTheme: string;
colorSchemePref: ColorSchemeType;
systemColorScheme: ResolvedColorSchemeType;
resolvedColorScheme: ResolvedColorSchemeType;
resolvedTheme: string;
setTheme: (theme: string) => void;
setDarkTheme: (darkTheme: string) => void;
setLightTheme: (lightTheme: string) => void;
setThemeSet: (themeSet: { darkTheme: string; lightTheme: string }) => void;
setColorSchemePref: (colorSchemePref: ColorSchemeType) => void;
toggleColorScheme: (skipSystem?: boolean) => void;
setForcedTheme: (forcedTheme: string) => void;
setForcedColorScheme: (forcedColorScheme: ColorSchemeType) => void;
} -
+
interface UseThemeYield {
theme: string;
darkTheme: string;
lightTheme: string;
colorSchemePref: ColorSchemeType;
systemColorScheme: ResolvedColorSchemeType;
resolvedColorScheme: ResolvedColorSchemeType;
resolvedTheme: string;
setTheme: (theme: string) => void;
setDarkTheme: (darkTheme: string) => void;
setLightTheme: (lightTheme: string) => void;
setThemeSet: (themeSet: { darkTheme: string; lightTheme: string }) => void;
setColorSchemePref: (colorSchemePref: ColorSchemeType) => void;
toggleColorScheme: (skipSystem?: boolean) => void;
setForcedTheme: (forcedTheme: string) => void;
setForcedColorScheme: (forcedColorScheme: ColorSchemeType) => void;
} +
+

Force per page theme and color-scheme

+
import { ForceTheme } from "nextjs-themes";

function MyPage() {
return (
<>
<ForceTheme theme="my-theme" />
...
</>
);
}

export default MyPage; +
+ +

For the pages router, you have two options. The first option is the same as the app router, and the second option, which is compatible with next-themes, involves adding the theme property to your page component like this:

+
function MyPage() {
return <>...</>;
}

MyPage.theme = "my-theme";

export default MyPage; +
-

Next.js App Router

import { ForceTheme } from "nextjs-themes";

function MyPage() {
return (
<>
<ForceTheme theme="my-theme" />
...
</>
);
}

export default MyPage; -
-

Next.js Pages Router

For the pages router, you have two options. The first option is the same as the app router, and the second option, which is compatible with next-themes, involves adding the theme property to your page component like this:

-
function MyPage() {
return <>...</>;
}

MyPage.theme = "my-theme";

export default MyPage; -

Similarly, you can force a color scheme. This will apply your defaultDark or defaultLight theme, which can be configured via hooks.

+

Next Themes works with any library. For Styled Components, createGlobalStyle in your custom App:

+
// pages/_app.js
import { createGlobalStyle } from "styled-components";
import { ThemeSwitcher } from "nextjs-themes";

const GlobalStyle = createGlobalStyle`
:root {
--fg: #000;
--bg: #fff;
}

[data-theme="dark"] {
--fg: #fff;
--bg: #000;
}
`;

function MyApp({ Component, pageProps }) {
return (
<>
<GlobalStyle />
<ThemeSwitcher forcedTheme={Component.theme} />
<Component {...pageProps} />
</>
);
} +
+ +

In tailwind.config.js, set the dark mode property to class:

+
// tailwind.config.js
module.exports = {
darkMode: "class",
}; +
-

With Styled Components and any CSS-in-JS

Next Themes works with any library. For Styled Components, createGlobalStyle in your custom App:

-
// pages/_app.js
import { createGlobalStyle } from "styled-components";
import { ThemeSwitcher } from "nextjs-themes";

const GlobalStyle = createGlobalStyle`
:root {
--fg: #000;
--bg: #fff;
}

[data-theme="dark"] {
--fg: #fff;
--bg: #000;
}
`;

function MyApp({ Component, pageProps }) {
return (
<>
<GlobalStyle />
<ThemeSwitcher forcedTheme={Component.theme} />
<Component {...pageProps} />
</>
);
} -
-

With Tailwind

In tailwind.config.js, set the dark mode property to class:

-
// tailwind.config.js
module.exports = {
darkMode: "class",
}; -

⚡🎉Ready to use dark mode in Tailwind!

Caution: Your class must be "dark", which is the default value used in this library. Tailwind requires the class name "dark" for dark-theme.

Use dark-mode specific classes:

-
<h1 className="text-black dark:text-white">
-
-

Migration

-

Refer to the migration guide.

+
<h1 className="text-black dark:text-white">
+
+ +
+

Refer to the migration guide.

-

Docs

Typedoc

-

🤩 Don't forget to star this repo!

Want a hands-on course for getting started with Turborepo? Check out React and Next.js with TypeScript

-

FAQ

Do I need to use CSS variables with this library?

+

Typedoc

+

Want a hands-on course for getting started with Turborepo? Check out React and Next.js with TypeScript

+

Do I need to use CSS variables with this library?

No. You can hard code values for every class:

-
.my-class {
color: #555;
}

[data-theme="dark"] .my-class {
color: white;
} -
+
.my-class {
color: #555;
}

[data-theme="dark"] .my-class {
color: white;
} +
+

Why is resolvedTheme and resolvedColorScheme necessary?

To reflect the System theme preference and forced theme/colorScheme pages in your UI. For instance, buttons or dropdowns indicating the current colorScheme should say "system" when the System colorScheme preference is active.

resolvedTheme is useful for modifying behavior or styles at runtime:

-
const { resolvedTheme, resolvedColorScheme } = useTheme();
const background = getBackground(resolvedTheme);

<div style={{ color: resolvedColorScheme === 'dark' ? white : black, background }}> -
+
const { resolvedTheme, resolvedColorScheme } = useTheme();
const background = getBackground(resolvedTheme);

<div style={{ color: resolvedColorScheme === 'dark' ? white : black, background }}> +
+

Without resolvedTheme, you would only know the theme is "system", not what it resolved to.

-

License

This library is licensed under the MPL-2.0 open-source license.

+

This library is licensed under the MPL-2.0 open-source license.

Please consider enrolling in our courses or sponsoring our work.


- -

with 💖 by Mayank Kumar Chaudhari

\ No newline at end of file +

with 💖 by Mayank Kumar Chaudhari

\ No newline at end of file diff --git a/docs/interfaces/client_color_switch_color_switch.ColorSwitchProps.html b/docs/interfaces/client_color_switch_color_switch.ColorSwitchProps.html index 36d09e5e..161c3e33 100644 --- a/docs/interfaces/client_color_switch_color_switch.ColorSwitchProps.html +++ b/docs/interfaces/client_color_switch_color_switch.ColorSwitchProps.html @@ -1,6 +1,6 @@ -ColorSwitchProps | React18 Loaders
interface ColorSwitchProps {
    size?: number;
    skipSystem?: boolean;
    targetSelector?: string;
}

Hierarchy

Properties

size? +ColorSwitchProps | React18 Loaders
interface ColorSwitchProps {
    size?: number;
    skipSystem?: boolean;
    targetSelector?: string;
}

Hierarchy

Properties

size?: number

Diameter of the color switch

-
skipSystem?: boolean

Skip system colorScheme while toggling

-
targetSelector?: string
\ No newline at end of file +

Properties

size?: number

Diameter of the color switch

+
skipSystem?: boolean

Skip system colorScheme while toggling

+
targetSelector?: string
\ No newline at end of file diff --git a/docs/interfaces/client_theme_switcher_theme_switcher.ThemeSwitcherProps.html b/docs/interfaces/client_theme_switcher_theme_switcher.ThemeSwitcherProps.html index e96a349b..f1f47fa9 100644 --- a/docs/interfaces/client_theme_switcher_theme_switcher.ThemeSwitcherProps.html +++ b/docs/interfaces/client_theme_switcher_theme_switcher.ThemeSwitcherProps.html @@ -1,11 +1,12 @@ -ThemeSwitcherProps | React18 Loaders
interface ThemeSwitcherProps {
    forcedColorScheme?: ColorSchemeType;
    forcedTheme?: string;
    nonce?: string;
    styles?: Record<string, string>;
    targetSelector?: string;
    themeTransition?: string;
}

Properties

forcedColorScheme? +ThemeSwitcherProps | React18 Loaders
interface ThemeSwitcherProps {
    forcedColorScheme?: ColorSchemeType;
    forcedTheme?: string;
    nonce?: string;
    styles?: Record<string, string>;
    targetSelector?: string;
    themeTransition?: string;
}

Properties

forcedColorScheme?: ColorSchemeType
forcedTheme?: string
nonce?: string

The nonce value for your Content Security Policy.

-

Default Value

''
-
-
styles?: Record<string, string>

provide styles object imported from CSS/SCSS modules, if you are using CSS/SCSS modules.

-
targetSelector?: string
themeTransition?: string
\ No newline at end of file +

Properties

forcedColorScheme?: ColorSchemeType
forcedTheme?: string
nonce?: string

The nonce value for your Content Security Policy.

+
''
+
+ +
styles?: Record<string, string>

provide styles object imported from CSS/SCSS modules, if you are using CSS/SCSS modules.

+
targetSelector?: string
themeTransition?: string
\ No newline at end of file diff --git a/docs/interfaces/hooks_use_theme._internal_.UseThemeYield.html b/docs/interfaces/hooks_use_theme._internal_.UseThemeYield.html index b2fd8749..b377d954 100644 --- a/docs/interfaces/hooks_use_theme._internal_.UseThemeYield.html +++ b/docs/interfaces/hooks_use_theme._internal_.UseThemeYield.html @@ -1,4 +1,4 @@ -UseThemeYield | React18 Loaders
interface UseThemeYield {
    colorSchemePref: ColorSchemeType;
    darkTheme: string;
    lightTheme: string;
    resolvedColorScheme: ResolvedColorSchemeType;
    resolvedTheme: string;
    setColorSchemePref: ((colorSchemePref) => void);
    setDarkTheme: ((darkTheme) => void);
    setForcedColorScheme: ((forcedColorScheme) => void);
    setForcedTheme: ((forcedTheme) => void);
    setLightTheme: ((lightTheme) => void);
    setTheme: ((theme) => void);
    setThemeSet: ((themeSet) => void);
    systemColorScheme: ResolvedColorSchemeType;
    theme: string;
    toggleColorScheme: ((skipSystem?) => void);
}

Properties

colorSchemePref +UseThemeYield | React18 Loaders
interface UseThemeYield {
    colorSchemePref: ColorSchemeType;
    darkTheme: string;
    lightTheme: string;
    resolvedColorScheme: ResolvedColorSchemeType;
    resolvedTheme: string;
    setColorSchemePref: ((colorSchemePref: ColorSchemeType) => void);
    setDarkTheme: ((darkTheme: string) => void);
    setForcedColorScheme: ((forcedColorScheme: ColorSchemeType) => void);
    setForcedTheme: ((forcedTheme: string) => void);
    setLightTheme: ((lightTheme: string) => void);
    setTheme: ((theme: string) => void);
    setThemeSet: ((themeSet: {
        darkTheme: string;
        lightTheme: string;
    }) => void);
    systemColorScheme: ResolvedColorSchemeType;
    theme: string;
    toggleColorScheme: ((skipSystem?: boolean) => void);
}

Properties

colorSchemePref: ColorSchemeType
darkTheme: string
lightTheme: string
resolvedColorScheme: ResolvedColorSchemeType
resolvedTheme: string
setColorSchemePref: ((colorSchemePref) => void)

Type declaration

    • (colorSchemePref): void
    • Parameters

      Returns void

setDarkTheme: ((darkTheme) => void)

Type declaration

    • (darkTheme): void
    • Parameters

      • darkTheme: string

      Returns void

setForcedColorScheme: ((forcedColorScheme) => void)

Type declaration

    • (forcedColorScheme): void
    • Parameters

      Returns void

setForcedTheme: ((forcedTheme) => void)

Type declaration

    • (forcedTheme): void
    • Parameters

      • forcedTheme: string

      Returns void

setLightTheme: ((lightTheme) => void)

Type declaration

    • (lightTheme): void
    • Parameters

      • lightTheme: string

      Returns void

setTheme: ((theme) => void)

actions

-

Type declaration

    • (theme): void
    • Parameters

      • theme: string

      Returns void

setThemeSet: ((themeSet) => void)

Type declaration

    • (themeSet): void
    • Parameters

      • themeSet: {
            darkTheme: string;
            lightTheme: string;
        }
        • darkTheme: string
        • lightTheme: string

      Returns void

systemColorScheme: ResolvedColorSchemeType
theme: string
toggleColorScheme: ((skipSystem?) => void)

Type declaration

    • (skipSystem?): void
    • Parameters

      • Optional skipSystem: boolean

      Returns void

\ No newline at end of file +

Properties

colorSchemePref: ColorSchemeType
darkTheme: string
lightTheme: string
resolvedColorScheme: ResolvedColorSchemeType
resolvedTheme: string
setColorSchemePref: ((colorSchemePref: ColorSchemeType) => void)
setDarkTheme: ((darkTheme: string) => void)
setForcedColorScheme: ((forcedColorScheme: ColorSchemeType) => void)
setForcedTheme: ((forcedTheme: string) => void)
setLightTheme: ((lightTheme: string) => void)
setTheme: ((theme: string) => void)

actions

+
setThemeSet: ((themeSet: {
    darkTheme: string;
    lightTheme: string;
}) => void)
systemColorScheme: ResolvedColorSchemeType
theme: string
toggleColorScheme: ((skipSystem?: boolean) => void)
\ No newline at end of file diff --git a/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSRThemeSwitcherProps.html b/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSRThemeSwitcherProps.html index 4a4feda7..1e499317 100644 --- a/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSRThemeSwitcherProps.html +++ b/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.NextJsSSRThemeSwitcherProps.html @@ -1,10 +1,11 @@ -NextJsSSRThemeSwitcherProps | React18 Loaders
interface NextJsSSRThemeSwitcherProps {
    children?: ReactNode;
    forcedPages?: ForcedPage[];
    styles?: Record<string, string>;
    tag?: keyof IntrinsicElements;
    targetId?: string;
}

Hierarchy (view full)

Properties

children? +NextJsSSRThemeSwitcherProps | React18 Loaders
interface NextJsSSRThemeSwitcherProps {
    children?: ReactNode;
    forcedPages?: ForcedPage[];
    styles?: Record<string, string>;
    tag?: keyof IntrinsicElements;
    targetId?: string;
}

Hierarchy (view full)

Properties

children?: ReactNode
forcedPages?: ForcedPage[]
styles?: Record<string, string>

provide styles object imported from CSS/SCSS modules, if you are using CSS/SCSS modules.

-
tag?: keyof IntrinsicElements

Default Value

'div'
-
-
targetId?: string

id of target element to apply classes to. This is useful when you want to apply theme only to specific container.

-
\ No newline at end of file +

Properties

children?: ReactNode
forcedPages?: ForcedPage[]
styles?: Record<string, string>

provide styles object imported from CSS/SCSS modules, if you are using CSS/SCSS modules.

+
tag?: keyof IntrinsicElements
'div'
+
+ +
targetId?: string

id of target element to apply classes to. This is useful when you want to apply theme only to specific container.

+
\ No newline at end of file diff --git a/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapperProps.html b/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapperProps.html index 85067348..f21e7c57 100644 --- a/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapperProps.html +++ b/docs/interfaces/server_nextjs_server_side_wrapper_server_side_wrapper.ServerSideWrapperProps.html @@ -1,10 +1,11 @@ -ServerSideWrapperProps | React18 Loaders
interface ServerSideWrapperProps {
    children?: ReactNode;
    forcedPages?: ForcedPage[];
    styles?: Record<string, string>;
    tag?: keyof IntrinsicElements;
    targetId?: string;
}

Hierarchy (view full)

Properties

children? +ServerSideWrapperProps | React18 Loaders
interface ServerSideWrapperProps {
    children?: ReactNode;
    forcedPages?: ForcedPage[];
    styles?: Record<string, string>;
    tag?: keyof IntrinsicElements;
    targetId?: string;
}

Hierarchy (view full)

Properties

children?: ReactNode
forcedPages?: ForcedPage[]
styles?: Record<string, string>

provide styles object imported from CSS/SCSS modules, if you are using CSS/SCSS modules.

-
tag?: keyof IntrinsicElements

Default Value

'html'
-
-
targetId?: string

id of target element to apply classes to. This is useful when you want to apply theme only to specific container.

-
\ No newline at end of file +

Properties

children?: ReactNode
forcedPages?: ForcedPage[]
styles?: Record<string, string>

provide styles object imported from CSS/SCSS modules, if you are using CSS/SCSS modules.

+
tag?: keyof IntrinsicElements
'html'
+
+ +
targetId?: string

id of target element to apply classes to. This is useful when you want to apply theme only to specific container.

+
\ No newline at end of file diff --git a/docs/interfaces/store.ForcedStoreType.html b/docs/interfaces/store.ForcedStoreType.html index c2c3cc68..d86f57fe 100644 --- a/docs/interfaces/store.ForcedStoreType.html +++ b/docs/interfaces/store.ForcedStoreType.html @@ -1,5 +1,5 @@ -ForcedStoreType | React18 Loaders

Interface ForcedStoreType

interface ForcedStoreType {
    f?: string;
    fc?: ColorSchemeType;
}

Properties

f? +ForcedStoreType | React18 Loaders

Interface ForcedStoreType

interface ForcedStoreType {
    f?: string;
    fc?: ColorSchemeType;
}

Properties

Properties

f?: string

forced theme

-

forced colorScheme

-
\ No newline at end of file +

Properties

f?: string

forced theme

+

forced colorScheme

+
\ No newline at end of file diff --git a/docs/interfaces/store.ThemeStoreType.html b/docs/interfaces/store.ThemeStoreType.html index 23cac307..1b7cc2e2 100644 --- a/docs/interfaces/store.ThemeStoreType.html +++ b/docs/interfaces/store.ThemeStoreType.html @@ -1,11 +1,11 @@ -ThemeStoreType | React18 Loaders

Interface ThemeStoreType

interface ThemeStoreType {
    c: ColorSchemeType;
    d: string;
    l: string;
    s: ResolvedColorSchemeType;
    t: string;
}

Properties

c +ThemeStoreType | React18 Loaders

Interface ThemeStoreType

interface ThemeStoreType {
    c: ColorSchemeType;
    d: string;
    l: string;
    s: ResolvedColorSchemeType;
    t: string;
}

Properties

c d l s t -

Properties

colorSchemePref

-
d: string

darkTheme

-
l: string

lightTheme

-

systemColorScheme

-
t: string

theme

-
\ No newline at end of file +

Properties

colorSchemePref

+
d: string

darkTheme

+
l: string

lightTheme

+

systemColorScheme

+
t: string

theme

+
\ No newline at end of file diff --git a/docs/media/migration.md b/docs/media/migration.md new file mode 100644 index 00000000..b982dc55 --- /dev/null +++ b/docs/media/migration.md @@ -0,0 +1,42 @@ +# Migration Guide + +## Migrating from v1 to v2 + +### Major Changes + +- 6f17cce: # Additonal CSS Combinations + Ensure seamless support for Tailwind + + - No changes required for client side code as `[data-theme=]` selectors work as before. + - If you are using `ServerSideWrapper` or `NextJsServerTarget` or `NextJsSSGThemeSwitcher`, you need to convert `forcedPages` elements to objects of the shape `{ pathMatcher: RegExp | string; props: ThemeSwitcherProps }`. + - Use `resolvedColorScheme` for more sturdy dark/light/system modes + - Use combinations of `[data-th=""]` and `[data-color-scheme=""]` for dark/light varients of themes + - Use `[data-csp=""]` to style based on colorSchemePreference. + +### Minor Changes + +- # Support custom themeTransition + + - Provide `themeTransition` prop to `ThemeSwitcher` component to apply smooth transition while changing theme. + - Use `setThemeSet` to set `lightTheme` and `darkTheme` together. + +#### Motivation: + +For server side syncing, we need to use cookies and headers. This means that this component and its children can not be static. They will be rendered server side for each request. Thus, we are avoiding the wrapper. Now, only the `NextJsSSGThemeSwitcher` will be rendered server side for each request and rest of your app can be server statically. + +Take care of the following while migrating to `v2`. + +- No changes required for projects not using `Next.js` app router or server components other than updating cookies policy if needed. +- The persistent storage is realized with `cookies` in place of `localStorage`. (You might want to update cookies policy accordingly.) +- We have provided `NextJsSSGThemeSwitcher` in addition to `ServerSideWrapper` for `Next.js`. You no longer need to use a wrapper component which broke static generation and forced SSR. +- Visit [With Next.js `app` router (Server Components)](#with-nextjs-app-router-server-components) + +## Migrating from v0 to v1 + +- `defaultDarkTheme` is renamed to `darkTheme` +- `setDefaultDarkTheme` is renamed to `setDarkTheme` +- `defaultLightTheme` is renamed to `lightTheme` +- `setDefaultLightTheme` is renamed to `setLightTheme` + +
+ +

with 💖 by Mayank Kumar Chaudhari

diff --git a/docs/modules/client_color_switch_color_switch.html b/docs/modules/client_color_switch_color_switch.html index 0458487b..fd05663f 100644 --- a/docs/modules/client_color_switch_color_switch.html +++ b/docs/modules/client_color_switch_color_switch.html @@ -1,3 +1,3 @@ -client/color-switch/color-switch | React18 Loaders

Module client/color-switch/color-switch

Index

Interfaces

ColorSwitchProps +client/color-switch/color-switch | React18 Loaders

Module client/color-switch/color-switch

Index

Interfaces

Functions

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/client_force_color_scheme_force_color_scheme.html b/docs/modules/client_force_color_scheme_force_color_scheme.html index 8448d498..ff02cd1d 100644 --- a/docs/modules/client_force_color_scheme_force_color_scheme.html +++ b/docs/modules/client_force_color_scheme_force_color_scheme.html @@ -1,2 +1,2 @@ -client/force-color-scheme/force-color-scheme | React18 Loaders
\ No newline at end of file +client/force-color-scheme/force-color-scheme | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/client_force_theme_force_theme.html b/docs/modules/client_force_theme_force_theme.html index 50fe3756..91ee08e2 100644 --- a/docs/modules/client_force_theme_force_theme.html +++ b/docs/modules/client_force_theme_force_theme.html @@ -1,2 +1,2 @@ -client/force-theme/force-theme | React18 Loaders

Module client/force-theme/force-theme

Index

Functions

\ No newline at end of file +client/force-theme/force-theme | React18 Loaders

Module client/force-theme/force-theme

Index

Functions

\ No newline at end of file diff --git a/docs/modules/client_theme_switcher_no_fouc._internal_.html b/docs/modules/client_theme_switcher_no_fouc._internal_.html index 5e9c4e17..9acd7db2 100644 --- a/docs/modules/client_theme_switcher_no_fouc._internal_.html +++ b/docs/modules/client_theme_switcher_no_fouc._internal_.html @@ -1,2 +1,2 @@ -<internal> | React18 Loaders
\ No newline at end of file +<internal> | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/client_theme_switcher_no_fouc.html b/docs/modules/client_theme_switcher_no_fouc.html index 1c1f1aa0..0fcfc4b5 100644 --- a/docs/modules/client_theme_switcher_no_fouc.html +++ b/docs/modules/client_theme_switcher_no_fouc.html @@ -1,6 +1,6 @@ -client/theme-switcher/no-fouc | React18 Loaders

Module client/theme-switcher/no-fouc

Index

Modules

<internal> +client/theme-switcher/no-fouc | React18 Loaders
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/client_theme_switcher_theme_switcher.html b/docs/modules/client_theme_switcher_theme_switcher.html index 4164aa99..f8f78731 100644 --- a/docs/modules/client_theme_switcher_theme_switcher.html +++ b/docs/modules/client_theme_switcher_theme_switcher.html @@ -1,3 +1,3 @@ -client/theme-switcher/theme-switcher | React18 Loaders

Module client/theme-switcher/theme-switcher

Index

Interfaces

ThemeSwitcherProps +client/theme-switcher/theme-switcher | React18 Loaders
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/constants.html b/docs/modules/constants.html index 02ffdd91..b1cb196a 100644 --- a/docs/modules/constants.html +++ b/docs/modules/constants.html @@ -1,5 +1,5 @@ -constants | React18 Loaders

Module constants

Index

Variables

DARK +constants | React18 Loaders

Module constants

Index

Variables

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/hooks_use_theme._internal_.html b/docs/modules/hooks_use_theme._internal_.html index 24d456ed..ecd14b8d 100644 --- a/docs/modules/hooks_use_theme._internal_.html +++ b/docs/modules/hooks_use_theme._internal_.html @@ -1,2 +1,2 @@ -<internal> | React18 Loaders
\ No newline at end of file +<internal> | React18 Loaders
\ No newline at end of file diff --git a/docs/modules/hooks_use_theme.html b/docs/modules/hooks_use_theme.html index 29738721..cce0801c 100644 --- a/docs/modules/hooks_use_theme.html +++ b/docs/modules/hooks_use_theme.html @@ -1,3 +1,3 @@ -hooks/use-theme | React18 Loaders

Module hooks/use-theme

Index

Modules

<internal> +hooks/use-theme | React18 Loaders

Module hooks/use-theme

Index

Modules

Functions

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/server_nextjs_server_side_wrapper_server_side_wrapper.html b/docs/modules/server_nextjs_server_side_wrapper_server_side_wrapper.html index 4162543b..65127305 100644 --- a/docs/modules/server_nextjs_server_side_wrapper_server_side_wrapper.html +++ b/docs/modules/server_nextjs_server_side_wrapper_server_side_wrapper.html @@ -1,7 +1,7 @@ -server/nextjs/server-side-wrapper/server-side-wrapper | React18 Loaders

Module server/nextjs/server-side-wrapper/server-side-wrapper

References

NextJsServerTarget +server/nextjs/server-side-wrapper/server-side-wrapper | React18 Loaders
\ No newline at end of file +

References

Renames and re-exports NextJsSSGThemeSwitcher
\ No newline at end of file diff --git a/docs/modules/store.html b/docs/modules/store.html index 36a81417..7390d093 100644 --- a/docs/modules/store.html +++ b/docs/modules/store.html @@ -1,6 +1,6 @@ -store | React18 Loaders

Index

Interfaces

ForcedStoreType +store | React18 Loaders
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/modules/types.html b/docs/modules/types.html index e557df9b..857ae01a 100644 --- a/docs/modules/types.html +++ b/docs/modules/types.html @@ -1,3 +1,3 @@ -types | React18 Loaders

Index

Type Aliases

ColorSchemeType +types | React18 Loaders
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/types/client_theme_switcher_no_fouc.ResolveFunc.html b/docs/types/client_theme_switcher_no_fouc.ResolveFunc.html index dae60a53..d6736a30 100644 --- a/docs/types/client_theme_switcher_no_fouc.ResolveFunc.html +++ b/docs/types/client_theme_switcher_no_fouc.ResolveFunc.html @@ -1 +1 @@ -ResolveFunc | React18 Loaders
ResolveFunc: ((store) => ValuesType)

Type declaration

\ No newline at end of file +ResolveFunc | React18 Loaders
\ No newline at end of file diff --git a/docs/types/client_theme_switcher_no_fouc.UpdateDOMFunc.html b/docs/types/client_theme_switcher_no_fouc.UpdateDOMFunc.html index c0cd0dd6..0e6958f9 100644 --- a/docs/types/client_theme_switcher_no_fouc.UpdateDOMFunc.html +++ b/docs/types/client_theme_switcher_no_fouc.UpdateDOMFunc.html @@ -1 +1 @@ -UpdateDOMFunc | React18 Loaders
UpdateDOMFunc: ((values) => void)

Type declaration

    • (values): void
    • Parameters

      Returns void

\ No newline at end of file +UpdateDOMFunc | React18 Loaders
UpdateDOMFunc: ((values: ValuesType) => void)
\ No newline at end of file diff --git a/docs/types/client_theme_switcher_no_fouc.UpdateForcedPropsFunc.html b/docs/types/client_theme_switcher_no_fouc.UpdateForcedPropsFunc.html index cca400f8..5e9e8755 100644 --- a/docs/types/client_theme_switcher_no_fouc.UpdateForcedPropsFunc.html +++ b/docs/types/client_theme_switcher_no_fouc.UpdateForcedPropsFunc.html @@ -1 +1 @@ -UpdateForcedPropsFunc | React18 Loaders
UpdateForcedPropsFunc: ((forcedThemeProp?, forcedColorSchemeProp?) => void)

Type declaration

    • (forcedThemeProp?, forcedColorSchemeProp?): void
    • Parameters

      • Optional forcedThemeProp: string
      • Optional forcedColorSchemeProp: ColorSchemeType

      Returns void

\ No newline at end of file +UpdateForcedPropsFunc | React18 Loaders
UpdateForcedPropsFunc: ((forcedThemeProp?: string, forcedColorSchemeProp?: ColorSchemeType) => void)
\ No newline at end of file diff --git a/docs/types/client_theme_switcher_no_fouc._internal_.ValuesType.html b/docs/types/client_theme_switcher_no_fouc._internal_.ValuesType.html index 5ba87530..ba87c53d 100644 --- a/docs/types/client_theme_switcher_no_fouc._internal_.ValuesType.html +++ b/docs/types/client_theme_switcher_no_fouc._internal_.ValuesType.html @@ -1 +1 @@ -ValuesType | React18 Loaders
\ No newline at end of file +ValuesType | React18 Loaders
\ No newline at end of file diff --git a/docs/types/server_nextjs_server_side_wrapper_server_side_wrapper.ForcedPage.html b/docs/types/server_nextjs_server_side_wrapper_server_side_wrapper.ForcedPage.html index f4ef5c46..a76965c1 100644 --- a/docs/types/server_nextjs_server_side_wrapper_server_side_wrapper.ForcedPage.html +++ b/docs/types/server_nextjs_server_side_wrapper_server_side_wrapper.ForcedPage.html @@ -1,2 +1,2 @@ -ForcedPage | React18 Loaders
ForcedPage: {
    pathMatcher: RegExp | string;
    props: {
        forcedColorScheme?: ColorSchemeType;
        forcedTheme?: string;
    };
} | [pathMatcher: RegExp | string, themes: {
    colorScheme?: ColorSchemeType;
    theme?: string;
}]

Type declaration

  • pathMatcher: RegExp | string
  • props: {
        forcedColorScheme?: ColorSchemeType;
        forcedTheme?: string;
    }

Deprecated

as no longer needed.

-
\ No newline at end of file +ForcedPage | React18 Loaders
ForcedPage: {
    pathMatcher: RegExp | string;
    props: {
        forcedColorScheme?: ColorSchemeType;
        forcedTheme?: string;
    };
} | [pathMatcher: RegExp | string, themes: {
    colorScheme?: ColorSchemeType;
    theme?: string;
}]

as no longer needed.

+
\ No newline at end of file diff --git a/docs/types/types.ColorSchemeType.html b/docs/types/types.ColorSchemeType.html index 8214a374..e445896f 100644 --- a/docs/types/types.ColorSchemeType.html +++ b/docs/types/types.ColorSchemeType.html @@ -1,2 +1,2 @@ -ColorSchemeType | React18 Loaders

Type alias ColorSchemeType

ColorSchemeType: "" | "system" | "dark" | "light"

Types to be exposed to users

-
\ No newline at end of file +ColorSchemeType | React18 Loaders

Type Alias ColorSchemeType

ColorSchemeType:
    | ""
    | "system"
    | "dark"
    | "light"

Types to be exposed to users

+
\ No newline at end of file diff --git a/docs/types/types.ResolvedColorSchemeType.html b/docs/types/types.ResolvedColorSchemeType.html index 1ef498f1..6bd471ab 100644 --- a/docs/types/types.ResolvedColorSchemeType.html +++ b/docs/types/types.ResolvedColorSchemeType.html @@ -1 +1 @@ -ResolvedColorSchemeType | React18 Loaders

Type alias ResolvedColorSchemeType

ResolvedColorSchemeType: "dark" | "light"
\ No newline at end of file +ResolvedColorSchemeType | React18 Loaders

Type Alias ResolvedColorSchemeType

ResolvedColorSchemeType: "dark" | "light"
\ No newline at end of file diff --git a/docs/variables/constants.DARK.html b/docs/variables/constants.DARK.html index 06ac0a42..e16c2995 100644 --- a/docs/variables/constants.DARK.html +++ b/docs/variables/constants.DARK.html @@ -1 +1 @@ -DARK | React18 Loaders

Variable DARKConst

DARK: "dark" = "dark"
\ No newline at end of file +DARK | React18 Loaders
DARK: "dark" = "dark"
\ No newline at end of file diff --git a/docs/variables/constants.DEFAULT_ID.html b/docs/variables/constants.DEFAULT_ID.html index d94d28cc..69a26cde 100644 --- a/docs/variables/constants.DEFAULT_ID.html +++ b/docs/variables/constants.DEFAULT_ID.html @@ -1,2 +1,2 @@ -DEFAULT_ID | React18 Loaders

Variable DEFAULT_IDConst

DEFAULT_ID: "nth" = "nth"

shared constants -- keep in separate files for better tree-shaking and dependency injection

-
\ No newline at end of file +DEFAULT_ID | React18 Loaders

Variable DEFAULT_IDConst

DEFAULT_ID: "nth" = "nth"

shared constants -- keep in separate files for better tree-shaking and dependency injection

+
\ No newline at end of file diff --git a/docs/variables/constants.LIGHT.html b/docs/variables/constants.LIGHT.html index 343c6cfa..bfadb58c 100644 --- a/docs/variables/constants.LIGHT.html +++ b/docs/variables/constants.LIGHT.html @@ -1 +1 @@ -LIGHT | React18 Loaders

Variable LIGHTConst

LIGHT: "light" = "light"
\ No newline at end of file +LIGHT | React18 Loaders
LIGHT: "light" = "light"
\ No newline at end of file diff --git a/docs/variables/constants.SYSTEM.html b/docs/variables/constants.SYSTEM.html index f719f797..4ef221c2 100644 --- a/docs/variables/constants.SYSTEM.html +++ b/docs/variables/constants.SYSTEM.html @@ -1 +1 @@ -SYSTEM | React18 Loaders

Variable SYSTEMConst

SYSTEM: "system" = "system"
\ No newline at end of file +SYSTEM | React18 Loaders

Variable SYSTEMConst

SYSTEM: "system" = "system"
\ No newline at end of file diff --git a/docs/variables/store.initialState.html b/docs/variables/store.initialState.html index 03474481..91abb42d 100644 --- a/docs/variables/store.initialState.html +++ b/docs/variables/store.initialState.html @@ -1 +1 @@ -initialState | React18 Loaders

Variable initialStateConst

initialState: ThemeStoreType = ...
\ No newline at end of file +initialState | React18 Loaders

Variable initialStateConst

initialState: ThemeStoreType = ...
\ No newline at end of file diff --git a/lib/README.md b/lib/README.md index 9db6887c..ebe2c804 100644 --- a/lib/README.md +++ b/lib/README.md @@ -159,7 +159,7 @@ Next.js app supports dark mode, including System preference with `prefers-color- Show different images based on the current theme: -```jsx +```ts import Image from "next/image"; import { useTheme } from "nextjs-themes"; diff --git a/package.json b/package.json index 5909592b..fcf1cb3b 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "plop": "^4.0.1", "prettier": "^3.3.2", "turbo": "^2.0.4", - "typedoc": "^0.25.13", + "typedoc": "^0.26.0", "typedoc-plugin-extras": "^3.0.0", "typedoc-plugin-inline-sources": "^1.0.2", "typedoc-plugin-mdn-links": "^3.1.30", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 274abe86..a86d3388 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,26 +31,26 @@ importers: specifier: ^2.0.4 version: 2.0.4 typedoc: - specifier: ^0.25.13 - version: 0.25.13(typescript@5.5.2) + specifier: ^0.26.0 + version: 0.26.0(typescript@5.5.2) typedoc-plugin-extras: specifier: ^3.0.0 - version: 3.0.0(typedoc@0.25.13(typescript@5.5.2)) + version: 3.0.0(typedoc@0.26.0(typescript@5.5.2)) typedoc-plugin-inline-sources: specifier: ^1.0.2 - version: 1.0.2(typedoc@0.25.13(typescript@5.5.2)) + version: 1.0.2(typedoc@0.26.0(typescript@5.5.2)) typedoc-plugin-mdn-links: specifier: ^3.1.30 - version: 3.1.30(typedoc@0.25.13(typescript@5.5.2)) + version: 3.1.30(typedoc@0.26.0(typescript@5.5.2)) typedoc-plugin-missing-exports: specifier: ^2.3.0 - version: 2.3.0(typedoc@0.25.13(typescript@5.5.2)) + version: 2.3.0(typedoc@0.26.0(typescript@5.5.2)) typedoc-plugin-rename-defaults: specifier: ^0.7.0 - version: 0.7.0(typedoc@0.25.13(typescript@5.5.2)) + version: 0.7.0(typedoc@0.26.0(typescript@5.5.2)) typedoc-plugin-zod: specifier: ^1.1.2 - version: 1.1.2(typedoc@0.25.13(typescript@5.5.2)) + version: 1.1.2(typedoc@0.26.0(typescript@5.5.2)) examples/app-router: dependencies: @@ -1078,6 +1078,9 @@ packages: '@rushstack/eslint-patch@1.10.3': resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + '@shikijs/core@1.9.0': + resolution: {integrity: sha512-cbSoY8P/jgGByG8UOl3jnP/CWg/Qk+1q+eAKWtcrU3pNoILF8wTsLB0jT44qUBV8Ce1SvA9uqcM9Xf+u3fJFBw==} + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -1409,9 +1412,6 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - ansi-sequence-parser@1.1.1: - resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} - ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -3203,9 +3203,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -3258,6 +3255,9 @@ packages: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + load-plugin@6.0.3: resolution: {integrity: sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==} @@ -3370,9 +3370,8 @@ packages: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} - marked@4.3.0: - resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} - engines: {node: '>= 12'} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true mdast-util-from-markdown@0.8.5: @@ -3405,6 +3404,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -3999,6 +4001,10 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -4297,8 +4303,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@0.14.7: - resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} + shiki@1.9.0: + resolution: {integrity: sha512-i6//Lqgn7+7nZA0qVjoYH0085YdNk4MC+tJV4bo+HgjgRMJ0JmkLZzFAuvVioJqLkcGDK5GAMpghZEZkCnwxpQ==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -4776,18 +4782,21 @@ packages: peerDependencies: typedoc: 0.23.x || 0.24.x || 0.25.x - typedoc@0.25.13: - resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==} - engines: {node: '>= 16'} + typedoc@0.26.0: + resolution: {integrity: sha512-OcYevjHsMN8DfpaL0dSBGAEBhOxuBB5Au8QVs9oz9iB0kRStPZwXLFWqh9gwbMUxNjW3yQuIM5GrVVauMJ2Akw==} + engines: {node: '>= 18'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x typescript@5.5.2: resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} engines: {node: '>=14.17'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} @@ -4967,12 +4976,6 @@ packages: jsdom: optional: true - vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - - vscode-textmate@8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -6037,6 +6040,8 @@ snapshots: '@rushstack/eslint-patch@1.10.3': {} + '@shikijs/core@1.9.0': {} + '@sinclair/typebox@0.27.8': {} '@sinonjs/commons@3.0.1': @@ -6473,8 +6478,6 @@ snapshots: ansi-regex@6.0.1: {} - ansi-sequence-parser@1.1.1: {} - ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -8775,8 +8778,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.2.1: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -8830,6 +8831,10 @@ snapshots: lines-and-columns@2.0.4: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + load-plugin@6.0.3: dependencies: '@npmcli/config': 8.3.3 @@ -8939,7 +8944,14 @@ snapshots: map-obj@4.3.0: {} - marked@4.3.0: {} + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 mdast-util-from-markdown@0.8.5: dependencies: @@ -9040,6 +9052,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdurl@2.0.0: {} + meow@6.1.1: dependencies: '@types/minimist': 1.2.5 @@ -9813,6 +9827,8 @@ snapshots: psl@1.9.0: {} + punycode.js@2.3.1: {} + punycode@2.3.1: {} pure-rand@6.1.0: @@ -10141,12 +10157,9 @@ snapshots: shebang-regex@3.0.0: {} - shiki@0.14.7: + shiki@1.9.0: dependencies: - ansi-sequence-parser: 1.1.1 - jsonc-parser: 3.2.1 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 + '@shikijs/core': 1.9.0 side-channel@1.0.6: dependencies: @@ -10601,41 +10614,44 @@ snapshots: typedarray@0.0.6: {} - typedoc-plugin-extras@3.0.0(typedoc@0.25.13(typescript@5.5.2)): + typedoc-plugin-extras@3.0.0(typedoc@0.26.0(typescript@5.5.2)): dependencies: - typedoc: 0.25.13(typescript@5.5.2) + typedoc: 0.26.0(typescript@5.5.2) - typedoc-plugin-inline-sources@1.0.2(typedoc@0.25.13(typescript@5.5.2)): + typedoc-plugin-inline-sources@1.0.2(typedoc@0.26.0(typescript@5.5.2)): dependencies: - typedoc: 0.25.13(typescript@5.5.2) + typedoc: 0.26.0(typescript@5.5.2) - typedoc-plugin-mdn-links@3.1.30(typedoc@0.25.13(typescript@5.5.2)): + typedoc-plugin-mdn-links@3.1.30(typedoc@0.26.0(typescript@5.5.2)): dependencies: - typedoc: 0.25.13(typescript@5.5.2) + typedoc: 0.26.0(typescript@5.5.2) - typedoc-plugin-missing-exports@2.3.0(typedoc@0.25.13(typescript@5.5.2)): + typedoc-plugin-missing-exports@2.3.0(typedoc@0.26.0(typescript@5.5.2)): dependencies: - typedoc: 0.25.13(typescript@5.5.2) + typedoc: 0.26.0(typescript@5.5.2) - typedoc-plugin-rename-defaults@0.7.0(typedoc@0.25.13(typescript@5.5.2)): + typedoc-plugin-rename-defaults@0.7.0(typedoc@0.26.0(typescript@5.5.2)): dependencies: camelcase: 8.0.0 - typedoc: 0.25.13(typescript@5.5.2) + typedoc: 0.26.0(typescript@5.5.2) - typedoc-plugin-zod@1.1.2(typedoc@0.25.13(typescript@5.5.2)): + typedoc-plugin-zod@1.1.2(typedoc@0.26.0(typescript@5.5.2)): dependencies: - typedoc: 0.25.13(typescript@5.5.2) + typedoc: 0.26.0(typescript@5.5.2) - typedoc@0.25.13(typescript@5.5.2): + typedoc@0.26.0(typescript@5.5.2): dependencies: lunr: 2.3.9 - marked: 4.3.0 + markdown-it: 14.1.0 minimatch: 9.0.4 - shiki: 0.14.7 + shiki: 1.9.0 typescript: 5.5.2 + yaml: 2.4.5 typescript@5.5.2: {} + uc.micro@2.1.0: {} + ufo@1.5.3: {} uglify-js@3.18.0: @@ -10882,10 +10898,6 @@ snapshots: - supports-color - terser - vscode-oniguruma@1.7.0: {} - - vscode-textmate@8.0.0: {} - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0