UNPKG

@oku-ui/motion

Version:

A tiny, performant animation library for VueJS

60 lines (56 loc) 1.67 kB
import { defineNuxtModule, addPluginTemplate, addComponent, addImports } from '@nuxt/kit'; import { components, utilities } from '@oku-ui/motion'; const index = defineNuxtModule({ meta: { name: "@oku-ui/motion", configKey: "okuMotion", compatibility: { nuxt: ">=3.14" } }, defaults: { prefix: "", components: true }, setup(options, _nuxtApp) { addPluginTemplate({ filename: "001.okumotion.client.mjs", getContents() { return `import { motionPlugin } from '@oku-ui/motion' export default defineNuxtPlugin((nuxtApp) => { nuxtApp.vueApp.use(motionPlugin) })`; } }); function getComponents() { if (typeof options.components === "object") { return Object.entries(components).filter(([name]) => options.components[name]).flatMap(([_, components]) => components); } if (options.components) return Object.values(components).flat(); return []; } for (const component of getComponents()) { addComponent({ name: `${options.prefix}${component}`, export: component, filePath: "@oku-ui/motion" }); } function getUtilities() { if (typeof options.components === "object") { return Object.entries(utilities).filter(([name]) => options.components[name]).flatMap(([_, utilities]) => utilities); } if (options.components) return Object.values(utilities).flat(); return []; } for (const utility of getUtilities()) { addImports({ from: "@oku-ui/motion", name: utility }); } } }); export { index as default };