From 74bd7bc180319929d93a162c9d97ccad5c9648d6 Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Wed, 22 Dec 2021 12:13:52 +0100 Subject: [PATCH] feat: module improvements --- build.config.ts | 17 ++----- package.json | 11 ++--- src/dirs.ts | 11 ----- src/module.ts | 47 +++++++++---------- .../components/elements/Avatar.vue | 0 .../components/elements/AvatarGroup.vue | 0 .../components/elements/Badge.vue | 0 .../components/elements/Button.vue | 0 .../components/elements/Dropdown.vue | 0 .../components/elements/Icon.vue | 0 .../components/elements/Link.vue | 0 .../components/feedback/Alert.vue | 0 .../components/forms/Checkbox.vue | 0 .../components/forms/FormGroup.vue | 0 src/{ => runtime}/components/forms/Input.vue | 0 src/{ => runtime}/components/forms/Radio.vue | 0 src/{ => runtime}/components/forms/Select.vue | 0 .../components/forms/SelectCustom.vue | 0 .../components/forms/Textarea.vue | 0 src/{ => runtime}/components/forms/Toggle.vue | 0 src/{ => runtime}/components/layout/Card.vue | 0 .../components/layout/Container.vue | 0 .../components/navigation/Pills.vue | 0 .../components/navigation/Tabs.vue | 0 .../navigation/VerticalNavigation.vue | 0 .../components/overlays/Modal.vue | 0 .../components/overlays/Notification.vue | 0 .../components/overlays/Notifications.vue | 0 .../components/overlays/Popover.vue | 0 .../components/overlays/Tooltip.vue | 0 src/{ => runtime}/composables/useTimer.ts | 0 src/{ => runtime}/plugins/toast.client.ts | 0 src/{ => runtime}/presets/tailwindui.ts | 0 src/{ => runtime}/utils/index.ts | 0 src/{ => runtime}/utils/popper.ts | 0 35 files changed, 32 insertions(+), 54 deletions(-) delete mode 100644 src/dirs.ts rename src/{ => runtime}/components/elements/Avatar.vue (100%) rename src/{ => runtime}/components/elements/AvatarGroup.vue (100%) rename src/{ => runtime}/components/elements/Badge.vue (100%) rename src/{ => runtime}/components/elements/Button.vue (100%) rename src/{ => runtime}/components/elements/Dropdown.vue (100%) rename src/{ => runtime}/components/elements/Icon.vue (100%) rename src/{ => runtime}/components/elements/Link.vue (100%) rename src/{ => runtime}/components/feedback/Alert.vue (100%) rename src/{ => runtime}/components/forms/Checkbox.vue (100%) rename src/{ => runtime}/components/forms/FormGroup.vue (100%) rename src/{ => runtime}/components/forms/Input.vue (100%) rename src/{ => runtime}/components/forms/Radio.vue (100%) rename src/{ => runtime}/components/forms/Select.vue (100%) rename src/{ => runtime}/components/forms/SelectCustom.vue (100%) rename src/{ => runtime}/components/forms/Textarea.vue (100%) rename src/{ => runtime}/components/forms/Toggle.vue (100%) rename src/{ => runtime}/components/layout/Card.vue (100%) rename src/{ => runtime}/components/layout/Container.vue (100%) rename src/{ => runtime}/components/navigation/Pills.vue (100%) rename src/{ => runtime}/components/navigation/Tabs.vue (100%) rename src/{ => runtime}/components/navigation/VerticalNavigation.vue (100%) rename src/{ => runtime}/components/overlays/Modal.vue (100%) rename src/{ => runtime}/components/overlays/Notification.vue (100%) rename src/{ => runtime}/components/overlays/Notifications.vue (100%) rename src/{ => runtime}/components/overlays/Popover.vue (100%) rename src/{ => runtime}/components/overlays/Tooltip.vue (100%) rename src/{ => runtime}/composables/useTimer.ts (100%) rename src/{ => runtime}/plugins/toast.client.ts (100%) rename src/{ => runtime}/presets/tailwindui.ts (100%) rename src/{ => runtime}/utils/index.ts (100%) rename src/{ => runtime}/utils/popper.ts (100%) diff --git a/build.config.ts b/build.config.ts index ffe4e94d..ba63beba 100644 --- a/build.config.ts +++ b/build.config.ts @@ -1,18 +1,9 @@ export default { + declaration: true, entries: [ './src/module', - { input: './src/components/', outDir: 'dist/components' }, - { input: './src/composables/', outDir: 'dist/composables' }, - { input: './src/presets/', outDir: 'dist/presets' }, - { input: './src/plugins/', outDir: 'dist/plugins' }, - { input: './src/types/', outDir: 'dist/types' }, - { input: './src/utils/', outDir: 'dist/utils' }, - { input: './src/css/', outDir: 'dist/css' } + { input: 'src/runtime/', outDir: 'dist/runtime' }, + { input: 'src/css/', outDir: 'dist/css' } ], - declaration: true, - externals: [ - '@nuxt/kit', - '@nuxt/schema', - '@unocss/preset-uno' - ] + externals: ['@nuxt/kit', '@nuxt/schema', '@unocss/preset-uno'] } diff --git a/package.json b/package.json index 7be19a1c..e03d8b8a 100644 --- a/package.json +++ b/package.json @@ -5,13 +5,11 @@ "license": "MIT", "exports": { ".": { - "require": "./dist/module.cjs", "import": "./dist/module.mjs" } }, - "main": "dist/module.mjs", - "module": "dist/module.mjs", - "types": "dist/module.d.ts", + "main": "./dist/module.mjs", + "types": "./dist/module.d.ts", "files": [ "dist" ], @@ -36,11 +34,12 @@ "@vueuse/core": "^7.4.0" }, "devDependencies": { + "@nuxt/schema": "npm:@nuxt/schema-edge@latest", "@nuxtjs/eslint-config-typescript": "^8.0.0", "@types/lodash-es": "^4.17.5", "@vueuse/components": "^7.4.0", "eslint": "^8.5.0", - "nuxt3": "^3.0.0-27334958.ca9761d", - "unbuild": "0.6.3" + "nuxt3": "latest", + "unbuild": "^0.6.7" } } diff --git a/src/dirs.ts b/src/dirs.ts deleted file mode 100644 index d0519f08..00000000 --- a/src/dirs.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { fileURLToPath } from 'url' -import { resolve } from 'pathe' - -export const distDir = resolve(typeof __dirname === 'undefined' ? fileURLToPath(import.meta.url) : __dirname) - -const _makeResolve = (base: string) => { - return (...p: string[]) => resolve(base, ...p) -} - -export const presetsDir = resolve(distDir, 'presets') -export const resolvePresetsDir = _makeResolve(presetsDir) diff --git a/src/module.ts b/src/module.ts index 8791600d..a52de232 100644 --- a/src/module.ts +++ b/src/module.ts @@ -1,10 +1,9 @@ import { resolve } from 'pathe' -import { defineNuxtModule, installModule, addComponentsDir, addTemplate, resolveModule, addPlugin } from '@nuxt/kit' +import { defineNuxtModule, installModule, addComponentsDir, addTemplate, addPlugin } from '@nuxt/kit' import { colors } from '@unocss/preset-uno' import defu from 'defu' import type { UnocssNuxtOptions } from '@unocss/nuxt' import type { Nuxt } from '@nuxt/schema' -import { presetsDir } from './dirs' import type { UiOptions } from './types' const defaults = { @@ -25,8 +24,10 @@ const defaults = { export default defineNuxtModule({ meta: { name: '@nuxthq/ui', - compatibility: { nuxt: '^3.0.0' }, - configKey: 'ui' + configKey: 'ui', + compatibility: { + nuxt: '^3.0.0' + } }, defaults, async setup (_options: UiOptions, nuxt: Nuxt) { @@ -129,23 +130,22 @@ export default defineNuxtModule({ await installModule('@unocss/nuxt', options, nuxt) - let ui: object = {} + // Transpile runtime + const runtimeDir = resolve(__dirname, './runtime') + nuxt.options.build.transpile.push(runtimeDir) + nuxt.options.build.transpile.push('@popperjs/core', '@headlessui/vue') + + let ui: object = await import(resolve(runtimeDir, 'presets', defaults.preset)) try { if (typeof preset === 'object') { - ui = await import(resolveModule(`./${defaults.preset}`, { paths: presetsDir })) - // @ts-ignore - ui = ui.default ? ui.default : ui ui = defu(preset, ui) } else { // @ts-ignore - ui = await import(resolveModule(`./${preset}`, { paths: presetsDir })) - // @ts-ignore - ui = ui.default ? ui.default : ui + ui = await import(resolve(runtimeDir, 'presets', preset)) } } catch (e) { - ui = await import(resolveModule(`./${defaults.preset}`, { paths: presetsDir })) - // @ts-ignore - ui = ui.default ? ui.default : ui + // eslint-disable-next-line no-console + console.warn('Could not load preset file.') } addTemplate({ @@ -153,47 +153,46 @@ export default defineNuxtModule({ getContents: () => `/* @unocss-include */ export default ${JSON.stringify(ui)}` }) - addPlugin(resolve(__dirname, './plugins/toast.client')) + addPlugin(resolve(runtimeDir, 'plugins', 'toast.client')) addComponentsDir({ - path: resolve(__dirname, './components/elements'), + path: resolve(runtimeDir, 'components', 'elements'), prefix, watch: false }) addComponentsDir({ - path: resolve(__dirname, './components/feedback'), + path: resolve(runtimeDir, 'components', 'feedback'), prefix, watch: false }) addComponentsDir({ - path: resolve(__dirname, './components/forms'), + path: resolve(runtimeDir, 'components', 'forms'), prefix, watch: false }) addComponentsDir({ - path: resolve(__dirname, './components/layout'), + path: resolve(runtimeDir, 'components', 'layout'), prefix, watch: false }) addComponentsDir({ - path: resolve(__dirname, './components/navigation'), + path: resolve(runtimeDir, 'components', 'navigation'), prefix, watch: false }) addComponentsDir({ - path: resolve(__dirname, './components/overlays'), + path: resolve(runtimeDir, 'components', 'overlays'), prefix, watch: false }) // Add composables nuxt.hook('autoImports:dirs', (dirs) => { - dirs.push(resolve(__dirname, './composables')) + dirs.push(resolve(runtimeDir, 'composables')) }) + // Add CSS nuxt.options.css.push(resolve(__dirname, './css/forms.css')) - - nuxt.options.build.transpile.push('@popperjs/core', '@headlessui/vue', '@nuxthq/ui') } }) diff --git a/src/components/elements/Avatar.vue b/src/runtime/components/elements/Avatar.vue similarity index 100% rename from src/components/elements/Avatar.vue rename to src/runtime/components/elements/Avatar.vue diff --git a/src/components/elements/AvatarGroup.vue b/src/runtime/components/elements/AvatarGroup.vue similarity index 100% rename from src/components/elements/AvatarGroup.vue rename to src/runtime/components/elements/AvatarGroup.vue diff --git a/src/components/elements/Badge.vue b/src/runtime/components/elements/Badge.vue similarity index 100% rename from src/components/elements/Badge.vue rename to src/runtime/components/elements/Badge.vue diff --git a/src/components/elements/Button.vue b/src/runtime/components/elements/Button.vue similarity index 100% rename from src/components/elements/Button.vue rename to src/runtime/components/elements/Button.vue diff --git a/src/components/elements/Dropdown.vue b/src/runtime/components/elements/Dropdown.vue similarity index 100% rename from src/components/elements/Dropdown.vue rename to src/runtime/components/elements/Dropdown.vue diff --git a/src/components/elements/Icon.vue b/src/runtime/components/elements/Icon.vue similarity index 100% rename from src/components/elements/Icon.vue rename to src/runtime/components/elements/Icon.vue diff --git a/src/components/elements/Link.vue b/src/runtime/components/elements/Link.vue similarity index 100% rename from src/components/elements/Link.vue rename to src/runtime/components/elements/Link.vue diff --git a/src/components/feedback/Alert.vue b/src/runtime/components/feedback/Alert.vue similarity index 100% rename from src/components/feedback/Alert.vue rename to src/runtime/components/feedback/Alert.vue diff --git a/src/components/forms/Checkbox.vue b/src/runtime/components/forms/Checkbox.vue similarity index 100% rename from src/components/forms/Checkbox.vue rename to src/runtime/components/forms/Checkbox.vue diff --git a/src/components/forms/FormGroup.vue b/src/runtime/components/forms/FormGroup.vue similarity index 100% rename from src/components/forms/FormGroup.vue rename to src/runtime/components/forms/FormGroup.vue diff --git a/src/components/forms/Input.vue b/src/runtime/components/forms/Input.vue similarity index 100% rename from src/components/forms/Input.vue rename to src/runtime/components/forms/Input.vue diff --git a/src/components/forms/Radio.vue b/src/runtime/components/forms/Radio.vue similarity index 100% rename from src/components/forms/Radio.vue rename to src/runtime/components/forms/Radio.vue diff --git a/src/components/forms/Select.vue b/src/runtime/components/forms/Select.vue similarity index 100% rename from src/components/forms/Select.vue rename to src/runtime/components/forms/Select.vue diff --git a/src/components/forms/SelectCustom.vue b/src/runtime/components/forms/SelectCustom.vue similarity index 100% rename from src/components/forms/SelectCustom.vue rename to src/runtime/components/forms/SelectCustom.vue diff --git a/src/components/forms/Textarea.vue b/src/runtime/components/forms/Textarea.vue similarity index 100% rename from src/components/forms/Textarea.vue rename to src/runtime/components/forms/Textarea.vue diff --git a/src/components/forms/Toggle.vue b/src/runtime/components/forms/Toggle.vue similarity index 100% rename from src/components/forms/Toggle.vue rename to src/runtime/components/forms/Toggle.vue diff --git a/src/components/layout/Card.vue b/src/runtime/components/layout/Card.vue similarity index 100% rename from src/components/layout/Card.vue rename to src/runtime/components/layout/Card.vue diff --git a/src/components/layout/Container.vue b/src/runtime/components/layout/Container.vue similarity index 100% rename from src/components/layout/Container.vue rename to src/runtime/components/layout/Container.vue diff --git a/src/components/navigation/Pills.vue b/src/runtime/components/navigation/Pills.vue similarity index 100% rename from src/components/navigation/Pills.vue rename to src/runtime/components/navigation/Pills.vue diff --git a/src/components/navigation/Tabs.vue b/src/runtime/components/navigation/Tabs.vue similarity index 100% rename from src/components/navigation/Tabs.vue rename to src/runtime/components/navigation/Tabs.vue diff --git a/src/components/navigation/VerticalNavigation.vue b/src/runtime/components/navigation/VerticalNavigation.vue similarity index 100% rename from src/components/navigation/VerticalNavigation.vue rename to src/runtime/components/navigation/VerticalNavigation.vue diff --git a/src/components/overlays/Modal.vue b/src/runtime/components/overlays/Modal.vue similarity index 100% rename from src/components/overlays/Modal.vue rename to src/runtime/components/overlays/Modal.vue diff --git a/src/components/overlays/Notification.vue b/src/runtime/components/overlays/Notification.vue similarity index 100% rename from src/components/overlays/Notification.vue rename to src/runtime/components/overlays/Notification.vue diff --git a/src/components/overlays/Notifications.vue b/src/runtime/components/overlays/Notifications.vue similarity index 100% rename from src/components/overlays/Notifications.vue rename to src/runtime/components/overlays/Notifications.vue diff --git a/src/components/overlays/Popover.vue b/src/runtime/components/overlays/Popover.vue similarity index 100% rename from src/components/overlays/Popover.vue rename to src/runtime/components/overlays/Popover.vue diff --git a/src/components/overlays/Tooltip.vue b/src/runtime/components/overlays/Tooltip.vue similarity index 100% rename from src/components/overlays/Tooltip.vue rename to src/runtime/components/overlays/Tooltip.vue diff --git a/src/composables/useTimer.ts b/src/runtime/composables/useTimer.ts similarity index 100% rename from src/composables/useTimer.ts rename to src/runtime/composables/useTimer.ts diff --git a/src/plugins/toast.client.ts b/src/runtime/plugins/toast.client.ts similarity index 100% rename from src/plugins/toast.client.ts rename to src/runtime/plugins/toast.client.ts diff --git a/src/presets/tailwindui.ts b/src/runtime/presets/tailwindui.ts similarity index 100% rename from src/presets/tailwindui.ts rename to src/runtime/presets/tailwindui.ts diff --git a/src/utils/index.ts b/src/runtime/utils/index.ts similarity index 100% rename from src/utils/index.ts rename to src/runtime/utils/index.ts diff --git a/src/utils/popper.ts b/src/runtime/utils/popper.ts similarity index 100% rename from src/utils/popper.ts rename to src/runtime/utils/popper.ts