@poupe/vue
Version:
Vue component library for Poupe UI framework with theme customization and accessibility support
36 lines (27 loc) • 972 B
JavaScript
import { defu } from "defu";
import { inject, provide, reactive } from "vue";
export const poupeInjectionKey = Symbol("poupe");
export function createPoupe(options = {}) {
const poupe = reactive(options);
return { install(app) {
app.provide(poupeInjectionKey, poupe);
} };
}
export function usePoupe() {
return inject(poupeInjectionKey);
}
export function usePoupeDefaults(component) {
const poupe = usePoupe();
return poupe?.defaults?.[component];
}
export function providePoupeOptions(options) {
provide(poupeInjectionKey, reactive(options));
}
export function usePoupeMergeProps(props, componentName, componentDefaults) {
const globalDefaults = usePoupeDefaults(componentName);
return defu(props, componentDefaults || {}, globalDefaults || {});
}
export function usePoupeMergedProps(props, componentName, componentDefaults) {
const globalDefaults = usePoupeDefaults(componentName);
return defu(props, componentDefaults, globalDefaults || {});
}