diff --git a/package.json b/package.json
index deb58116..92c8257f 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,8 @@
"eslint": "^8.57.0",
"nuxt": "npm:nuxt-nightly@pr-26085",
"ohash": "^1.1.3",
+ "vue": "^3.4.21",
+ "vue-router": "^4.3.0",
"vue-tsc": "^2.0.5"
}
}
diff --git a/playground/app.vue b/playground/app.vue
index eac2467e..ae6d0b65 100644
--- a/playground/app.vue
+++ b/playground/app.vue
@@ -1,7 +1,8 @@
-
- Click
-
+
+
+
+
\ No newline at end of file
diff --git a/playground/pages/[...slug].vue b/playground/pages/[...slug].vue
new file mode 100644
index 00000000..9382da64
--- /dev/null
+++ b/playground/pages/[...slug].vue
@@ -0,0 +1,6 @@
+
+ {{ $route.path }}
+
+
+
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 77ed3276..0e5a1c8b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,6 +52,12 @@ devDependencies:
ohash:
specifier: ^1.1.3
version: 1.1.3
+ vue:
+ specifier: ^3.4.21
+ version: 3.4.21(typescript@5.3.3)
+ vue-router:
+ specifier: ^4.3.0
+ version: 4.3.0(vue@3.4.21)
vue-tsc:
specifier: ^2.0.5
version: 2.0.5(typescript@5.3.3)
diff --git a/src/module.ts b/src/module.ts
index 79872daa..3d798f9a 100644
--- a/src/module.ts
+++ b/src/module.ts
@@ -1,5 +1,24 @@
import { defu } from 'defu'
import { createResolver, defineNuxtModule, addComponentsDir, addImportsDir, installModule } from '@nuxt/kit'
+import type { DeepPartial } from './runtime/types'
+import * as theme from './runtime/theme'
+
+type UI = {
+ primary?: string
+ gray?: string
+ [key: string]: any
+} & DeepPartial
+
+declare module 'nuxt/schema' {
+ interface AppConfigInput {
+ ui?: UI
+ }
+}
+declare module '@nuxt/schema' {
+ interface AppConfigInput {
+ ui?: UI
+ }
+}
export default defineNuxtModule({
meta: {
@@ -12,6 +31,7 @@ export default defineNuxtModule({
async setup (_, nuxt) {
const resolver = createResolver(import.meta.url)
+ nuxt.options.alias['#ui'] = resolver.resolve('./runtime')
nuxt.options.appConfig.ui = defu(nuxt.options.appConfig.ui || {}, {
primary: 'green',
gray: 'cool',
@@ -27,7 +47,8 @@ export default defineNuxtModule({
darkMode: 'class',
content: {
files: [
- resolver.resolve('./runtime/components/**/*.{vue,mjs,ts}')
+ resolver.resolve('./runtime/components/**/*.{vue,ts}'),
+ resolver.resolve('./runtime/theme/**/*.ts')
]
}
}
diff --git a/src/runtime/components/Button.vue b/src/runtime/components/Button.vue
index c5ff8497..fbc51f39 100644
--- a/src/runtime/components/Button.vue
+++ b/src/runtime/components/Button.vue
@@ -1,52 +1,13 @@
-
+
-
+
-
+
{{ label }}
-
+
+
+
\ No newline at end of file
diff --git a/src/runtime/components/Link.vue b/src/runtime/components/Link.vue
index cf2ec221..5da0a337 100644
--- a/src/runtime/components/Link.vue
+++ b/src/runtime/components/Link.vue
@@ -126,6 +126,17 @@ export const linkProps = {
default: undefined
}
}
+
+export const getLinkProps = (props: any) => {
+ const keys = Object.keys(linkProps)
+
+ return keys.reduce((acc, key) => {
+ if (props[key] !== undefined) {
+ acc[key] = props[key]
+ }
+ return acc
+ }, {} as Record)
+}
+
= Partial<{
+ [P in keyof T]: DeepPartial | { [key: string]: string | object }
+}>
\ No newline at end of file
diff --git a/tailwind.config.ts b/tailwind.config.ts
deleted file mode 100644
index 4c81b4dc..00000000
--- a/tailwind.config.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { Config } from 'tailwindcss'
-
-export default > {
- content: [
- './components/**/*.{js,vue,ts}',
- './modules/**/*.{js,vue,ts}',
- './layouts/**/*.vue',
- './pages/**/*.vue',
- './plugins/**/*.{js,ts}',
- './app.vue',
- './app.config.ts',
- './error.vue'
- ],
- theme: {
- extend: {}
- },
- plugins: []
-}
\ No newline at end of file