hb-vue-theme
Version:
Custom PrimeVue 4 theme with 'hb' prefix using design tokens and PrimeFlex
112 lines (111 loc) • 3.15 kB
JavaScript
import { hbPreset as l } from "./tokens.esm.js";
function m(s = {}) {
const {
autoInstall: r = !0,
force: n = !1,
target: i = document.documentElement,
customTokens: a = {}
} = s, c = {
preset: {
...l,
tokens: {
...l.tokens,
...a
}
},
isInstalled: !1,
install() {
if (this.isInstalled && !n)
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(([u, h]) => `.${u} { ${h} }`).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 && c.install(), c;
}
const f = {
install(s, r = {}) {
const n = m(r);
s.config.globalProperties.$hbTheme = n, s.provide("hbTheme", n);
}
}, b = l;
function y(s = {}, r = {}) {
return {
...l,
tokens: {
...l.tokens,
...s
},
utilities: {
...l.utilities,
...r
},
customTokens: s,
customUtilities: r
};
}
function g(s = l) {
return `:root {
${Object.entries(s.tokens).map(([n, i]) => ` ${n}: ${i};`).join(`
`)}
}`;
}
function k(s = l) {
return Object.entries(s.tokens).map(([n, i]) => `${n.replace("--hb-", "$hb-").replace(/-/g, "-")}: ${i};`).join(`
`);
}
export {
f as HBThemePlugin,
y as createCustomPreset,
m as default,
g as exportAsCSS,
k as exportAsSCSS,
b as hbThemePreset,
m as installHBTheme
};
//# sourceMappingURL=preset.esm.js.map