mirror of
https://github.com/ArthurDanjou/ui.git
synced 2026-01-28 10:50:40 +01:00
chore(module): update
This commit is contained in:
@@ -2,6 +2,7 @@ import { defu } from 'defu'
|
|||||||
import { createResolver, defineNuxtModule, addComponentsDir, addImportsDir, addVitePlugin, addPlugin, installModule } from '@nuxt/kit'
|
import { createResolver, defineNuxtModule, addComponentsDir, addImportsDir, addVitePlugin, addPlugin, installModule } from '@nuxt/kit'
|
||||||
import tailwindcss from '@tailwindcss/vite'
|
import tailwindcss from '@tailwindcss/vite'
|
||||||
import createTemplates from './templates'
|
import createTemplates from './templates'
|
||||||
|
import icons from './theme/icons'
|
||||||
|
|
||||||
export interface ModuleOptions {
|
export interface ModuleOptions {
|
||||||
colors: string[]
|
colors: string[]
|
||||||
@@ -26,19 +27,13 @@ export default defineNuxtModule<ModuleOptions>({
|
|||||||
nuxt.options.appConfig.ui = defu(nuxt.options.appConfig.ui || {}, {
|
nuxt.options.appConfig.ui = defu(nuxt.options.appConfig.ui || {}, {
|
||||||
primary: 'green',
|
primary: 'green',
|
||||||
gray: 'cool',
|
gray: 'cool',
|
||||||
icons: {
|
icons
|
||||||
search: 'i-heroicons-magnifying-glass-20-solid',
|
|
||||||
close: 'i-heroicons-x-mark-20-solid',
|
|
||||||
check: 'i-heroicons-check-20-solid',
|
|
||||||
loading: 'i-heroicons-arrow-path-20-solid',
|
|
||||||
empty: 'i-heroicons-circle-stack-20-solid'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
addVitePlugin(tailwindcss)
|
|
||||||
|
|
||||||
createTemplates(options, nuxt)
|
createTemplates(options, nuxt)
|
||||||
|
|
||||||
|
addVitePlugin(tailwindcss)
|
||||||
|
|
||||||
await installModule('nuxt-icon')
|
await installModule('nuxt-icon')
|
||||||
// await installModule('@nuxtjs/color-mode', { classSuffix: '' })
|
// await installModule('@nuxtjs/color-mode', { classSuffix: '' })
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { tv, type VariantProps } from 'tailwind-variants'
|
import { tv, type VariantProps } from 'tailwind-variants'
|
||||||
// import appConfig from '#build/app.config'
|
import appConfig from '#build/app.config'
|
||||||
import type { LinkProps } from '#ui/components/Link.vue'
|
import type { LinkProps } from '#ui/components/Link.vue'
|
||||||
import theme from '#build/ui/button'
|
import theme from '#build/ui/button'
|
||||||
|
|
||||||
@@ -42,6 +42,7 @@ export interface ButtonSlots {
|
|||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { useForwardProps } from 'radix-vue'
|
import { useForwardProps } from 'radix-vue'
|
||||||
import { reactiveOmit } from '@vueuse/core'
|
import { reactiveOmit } from '@vueuse/core'
|
||||||
|
import { useAppConfig } from '#app'
|
||||||
import UIcon from './Icon.vue'
|
import UIcon from './Icon.vue'
|
||||||
|
|
||||||
defineOptions({ inheritAttrs: false })
|
defineOptions({ inheritAttrs: false })
|
||||||
|
|||||||
5
src/runtime/types/app.config.d.ts
vendored
Normal file
5
src/runtime/types/app.config.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
declare module '#build/app.config' {
|
||||||
|
import type { AppConfig } from '@nuxt/schema'
|
||||||
|
const _default: AppConfig
|
||||||
|
export default _default
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ export default function createTemplates (options: ModuleOptions, nuxt: Nuxt) {
|
|||||||
const shades = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950]
|
const shades = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950]
|
||||||
|
|
||||||
const template = addTemplate({
|
const template = addTemplate({
|
||||||
filename: 'ui/index.css',
|
filename: 'tailwind.css',
|
||||||
write: true,
|
write: true,
|
||||||
getContents: () => `@import "tailwindcss";
|
getContents: () => `@import "tailwindcss";
|
||||||
|
|
||||||
@@ -49,8 +49,7 @@ export default function createTemplates (options: ModuleOptions, nuxt: Nuxt) {
|
|||||||
|
|
||||||
addTypeTemplate({
|
addTypeTemplate({
|
||||||
filename: 'types/ui.d.ts',
|
filename: 'types/ui.d.ts',
|
||||||
getContents: () => `
|
getContents: () => `import * as ui from '#build/ui'
|
||||||
import * as ui from '#build/ui'
|
|
||||||
|
|
||||||
type DeepPartial<T> = Partial<{
|
type DeepPartial<T> = Partial<{
|
||||||
[P in keyof T]: DeepPartial<T[P]> | { [key: string]: string | object }
|
[P in keyof T]: DeepPartial<T[P]> | { [key: string]: string | object }
|
||||||
@@ -59,19 +58,25 @@ export default function createTemplates (options: ModuleOptions, nuxt: Nuxt) {
|
|||||||
type UI = {
|
type UI = {
|
||||||
primary?: string
|
primary?: string
|
||||||
gray?: string
|
gray?: string
|
||||||
[key: string]: any
|
|
||||||
} & DeepPartial<typeof ui>
|
} & DeepPartial<typeof ui>
|
||||||
|
|
||||||
declare module 'nuxt/schema' {
|
declare module 'nuxt/schema' {
|
||||||
|
interface AppConfig {
|
||||||
|
ui: UI
|
||||||
|
}
|
||||||
interface AppConfigInput {
|
interface AppConfigInput {
|
||||||
ui?: UI
|
ui?: UI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
declare module '@nuxt/schema' {
|
declare module '@nuxt/schema' {
|
||||||
|
interface AppConfig {
|
||||||
|
ui: UI
|
||||||
|
}
|
||||||
interface AppConfigInput {
|
interface AppConfigInput {
|
||||||
ui?: UI
|
ui?: UI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export {}`
|
export {}
|
||||||
|
`
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
7
src/theme/icons.ts
Normal file
7
src/theme/icons.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
export default {
|
||||||
|
search: 'i-heroicons-magnifying-glass-20-solid',
|
||||||
|
close: 'i-heroicons-x-mark-20-solid',
|
||||||
|
check: 'i-heroicons-check-20-solid',
|
||||||
|
loading: 'i-heroicons-arrow-path-20-solid',
|
||||||
|
empty: 'i-heroicons-circle-stack-20-solid'
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user