From 4446531d043b17ed799cf4905828393af8030701 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 12 Mar 2024 04:12:17 -0700 Subject: [PATCH] chore: add local module for better development dx (#2) * chore: add local module for better dx developing nuxt/ui * up * up * up * feat(Kbd): new * chore(Badge): update * chore(Collapsible): remove content prop * chore(Container): clean * chore(Avatar): update root bg * chore(Link): clean * feat(Tooltip): handle shortcuts * playground(collapsible): update --------- Co-authored-by: Benjamin Canac --- .nuxtrc | 1 + modules/dev/index.ts | 22 + modules/dev/package.json | 11 + package.json | 4 + playground/app.vue | 2 +- playground/package.json | 16 + playground/pages/collapsible.vue | 28 +- playground/pages/kbd.vue | 6 + playground/pages/tooltip.vue | 8 +- pnpm-lock.yaml | 513 +++++++++++++++--- pnpm-workspace.yaml | 3 + src/runtime/components/Badge.vue | 7 +- src/runtime/components/Collapsible.vue | 5 +- src/runtime/components/Container.vue | 4 +- src/runtime/components/Kbd.vue | 36 ++ src/runtime/components/Link.vue | 5 +- src/runtime/components/Tooltip.vue | 13 +- src/templates.ts | 26 +- src/theme/avatar.ts | 2 +- src/theme/index.ts | 1 + src/theme/kbd.ts | 13 + src/theme/tooltip.ts | 7 +- test/components/Badge.spec.ts | 2 +- test/components/Kbd.spec.ts | 17 + .../__snapshots__/Avatar.spec.ts.snap | 28 +- .../__snapshots__/Badge.spec.ts.snap | 2 +- .../components/__snapshots__/Kbd.spec.ts.snap | 13 + 27 files changed, 652 insertions(+), 143 deletions(-) create mode 100644 .nuxtrc create mode 100644 modules/dev/index.ts create mode 100644 modules/dev/package.json create mode 100644 playground/package.json create mode 100644 playground/pages/kbd.vue create mode 100644 pnpm-workspace.yaml create mode 100644 src/runtime/components/Kbd.vue create mode 100644 src/theme/kbd.ts create mode 100644 test/components/Kbd.spec.ts create mode 100644 test/components/__snapshots__/Kbd.spec.ts.snap diff --git a/.nuxtrc b/.nuxtrc new file mode 100644 index 00000000..7bfc3d5c --- /dev/null +++ b/.nuxtrc @@ -0,0 +1 @@ +modules[]=nuxt-ui-dev-module diff --git a/modules/dev/index.ts b/modules/dev/index.ts new file mode 100644 index 00000000..768a345d --- /dev/null +++ b/modules/dev/index.ts @@ -0,0 +1,22 @@ +import { createResolver, defineNuxtModule, useNuxt } from '@nuxt/kit' +import { watch } from 'chokidar' +import { debounce } from 'perfect-debounce' + +/** + * This is an internal module aiming to make the DX of developing Nuxt UI better. + */ +export default defineNuxtModule({ + meta: { + name: 'nuxt-ui-dev-module' + }, + setup () { + const nuxt = useNuxt() + const resolver = createResolver(import.meta.url) + const watcher = watch(resolver.resolve('../../src/theme')) + + const generateApp = debounce(() => nuxt.hooks.callHook('builder:generateApp')) + + watcher.on('all', generateApp) + nuxt.hook('close', () => watcher.close()) + } +}) diff --git a/modules/dev/package.json b/modules/dev/package.json new file mode 100644 index 00000000..1bb61ad8 --- /dev/null +++ b/modules/dev/package.json @@ -0,0 +1,11 @@ +{ + "name": "nuxt-ui-dev-module", + "exports": { + ".": "./index.ts" + }, + "dependencies": { + "@nuxt/kit": "latest", + "chokidar": "^3.6.0", + "perfect-debounce": "^1.0.0" + } +} diff --git a/package.json b/package.json index 3cfefb93..1ee83224 100644 --- a/package.json +++ b/package.json @@ -44,10 +44,14 @@ "eslint": "^8.57.0", "happy-dom": "^13.6.2", "nuxt": "npm:nuxt-nightly@latest", + "nuxt-ui-dev-module": "workspace:*", "vitest": "^1.3.1", "vitest-environment-nuxt": "^1.0.0", "vue": "^3.4.21", "vue-router": "^4.3.0", "vue-tsc": "^2.0.6" + }, + "resolutions": { + "nuxt-ui3": "workspace:*" } } \ No newline at end of file diff --git a/playground/app.vue b/playground/app.vue index e59868ad..0add4645 100644 --- a/playground/app.vue +++ b/playground/app.vue @@ -5,7 +5,7 @@ useHead({ } }) -const components = ['avatar', 'badge', 'button', 'collapsible', 'tooltip'] +const components = ['avatar', 'badge', 'button', 'collapsible', 'kbd', 'tooltip'] diff --git a/src/runtime/components/Container.vue b/src/runtime/components/Container.vue index da292fb7..f3e63155 100644 --- a/src/runtime/components/Container.vue +++ b/src/runtime/components/Container.vue @@ -15,9 +15,7 @@ export interface ContainerProps {