UNPKG

xtreme-ui

Version:

Collection of reusable components that can be used in web projects

40 lines (32 loc) 1.74 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../components/context/Theme/types.cjs"),e=require("../constants/theme.cjs"),a=({scheme:t,color:o,defScheme:r=s.defaultScheme,defColor:l=e.defaultColorPreset}={})=>{const m=t!=null?`'${t}'`:"null",n=o?JSON.stringify(o):"null",c=JSON.stringify(l);return`(function() { try { let storedScheme = localStorage.getItem('${e.STORAGE.themeScheme}'); const themeScheme = ${m} ?? storedScheme ?? '${r}'; const themeColorRaw = localStorage.getItem('${e.STORAGE.themeColor}'); let { h, s, l } = ${c}; const preferredColor = ${n}; if (preferredColor) { ({ h, s, l } = preferredColor); } else { try { const parsed = JSON.parse(themeColorRaw); if (parsed && typeof parsed.h === 'number' && typeof parsed.s === 'number' && typeof parsed.l === 'number') { ({ h, s, l } = parsed); } } catch {} } document.documentElement.setAttribute('${e.STORAGE.themeSchemeAttr}', themeScheme); const style = document.getElementById('${e.STORAGE.themeColor}') || document.head.appendChild(Object.assign(document.createElement('style'), { id: '${e.STORAGE.themeColor}' })); style.textContent = \`:root{ --H: \${h}; --S: \${s}%; --L: \${l}% }\`; let meta = document.head.querySelector('meta[name="theme-color"]'); if (!meta) { meta = document.createElement('meta'); meta.name = 'theme-color'; document.head.appendChild(meta); } meta.content = \`hsl(\${h},\${s}%,\${l}%)\`; localStorage.setItem('${e.STORAGE.themeScheme}', themeScheme); localStorage.setItem('${e.STORAGE.themeColor}', JSON.stringify({ h, s, l })); } catch {} })();`};exports.themeController=a;