hb-vue-theme
Version:
Custom PrimeVue 4 theme with 'hb' prefix using design tokens and PrimeFlex
8 lines (7 loc) • 2.57 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("./tokens.js");function a(s={}){const{autoInstall:r=!0,force:l=!1,target:i=document.documentElement,customTokens:c={}}=s,u={preset:{...n.hbPreset,tokens:{...n.hbPreset.tokens,...c}},isInstalled:!1,install(){if(this.isInstalled&&!l)return console.warn("HB Theme is already installed. Use force: true to reinstall."),!1;try{return Object.entries(this.preset.tokens).forEach(([t,e])=>{i.style.setProperty(t,e)}),this.applyPrimeFlexUtilities(),this.isInstalled=!0,console.log("✅ HB Theme installed successfully!"),!0}catch(t){return console.error("❌ Failed to install HB Theme:",t),!1}},applyPrimeFlexUtilities(){const t=this.preset.utilities||{};let e=document.getElementById("hb-primeflex-utilities");e||(e=document.createElement("style"),e.id="hb-primeflex-utilities",document.head.appendChild(e));const o=Object.entries(t).map(([h,m])=>`.${h} { ${m} }`).join(`
`);e.textContent=o},uninstall(){try{Object.keys(this.preset.tokens).forEach(e=>{i.style.removeProperty(e)});const t=document.getElementById("hb-primeflex-utilities");return t&&t.remove(),this.isInstalled=!1,console.log("✅ HB Theme uninstalled successfully!"),!0}catch(t){return console.error("❌ Failed to uninstall HB Theme:",t),!1}},update(t){try{return Object.entries(t).forEach(([e,o])=>{i.style.setProperty(e,o)}),console.log("✅ HB Theme updated successfully!"),!0}catch(e){return console.error("❌ Failed to update HB Theme:",e),!1}},getInfo(){return{name:this.preset.name,version:this.preset.version,description:this.preset.description,author:this.preset.author,license:this.preset.license,isInstalled:this.isInstalled,tokenCount:Object.keys(this.preset.tokens).length,utilityCount:Object.keys(this.preset.utilities||{}).length}}};return r&&u.install(),u}const d={install(s,r={}){const l=a(r);s.config.globalProperties.$hbTheme=l,s.provide("hbTheme",l)}},p=n.hbPreset;function b(s={},r={}){return{...n.hbPreset,tokens:{...n.hbPreset.tokens,...s},utilities:{...n.hbPreset.utilities,...r},customTokens:s,customUtilities:r}}function f(s=n.hbPreset){return`:root {
${Object.entries(s.tokens).map(([l,i])=>` ${l}: ${i};`).join(`
`)}
}`}function y(s=n.hbPreset){return Object.entries(s.tokens).map(([l,i])=>`${l.replace("--hb-","$hb-").replace(/-/g,"-")}: ${i};`).join(`
`)}exports.HBThemePlugin=d;exports.createCustomPreset=b;exports.default=a;exports.exportAsCSS=f;exports.exportAsSCSS=y;exports.hbThemePreset=p;exports.installHBTheme=a;
//# sourceMappingURL=preset.js.map