>((acc, cookie) => {
+ const [key, value] = cookie.trim().split('=')
+ if (key) acc[key] = value
+ return acc
+ }, {})
+}
+
export default defineNuxtPlugin((_nuxtApp) => {
+ const config = useRuntimeConfig().public.vueless
+ const vuelessOptions = { config } as CreateVuelessOptions
+
+ if ('$i18n' in _nuxtApp) {
+ vuelessOptions.i18n = {
+ adapter: createVueI18nAdapter({ global: _nuxtApp.$i18n }),
+ }
+ }
+
/* Init vueless */
- const vueless = createVueless()
- _nuxtApp.vueApp.use(vueless, {})
+ const vueless = createVueless(vuelessOptions)
+ _nuxtApp.vueApp.use(vueless, [])
/* Set vueless directives */
_nuxtApp.vueApp.directive('clickOutside', vClickOutside)
@@ -15,10 +52,42 @@ export default defineNuxtPlugin((_nuxtApp) => {
/* Set vueless theme variables */
if (import.meta.server) {
- const themeRootVariables = setTheme()
+ const event = _nuxtApp.ssrContext?.event
+
+ const cookies = parseCookies(event?.node.req.headers.cookie)
+
+ const primary = cookies?.[`vl-${PRIMARY_COLOR}`]
+ const neutral = cookies?.[`vl-${NEUTRAL_COLOR}`]
+
+ const text = {
+ xs: cookies?.[`vl-${TEXT}-xs`],
+ sm: cookies?.[`vl-${TEXT}-sm`],
+ md: cookies?.[`vl-${TEXT}-md`],
+ lg: cookies?.[`vl-${TEXT}-lg`],
+ }
+
+ const outline = {
+ sm: cookies?.[`vl-${OUTLINE}-sm`],
+ md: cookies?.[`vl-${OUTLINE}-md`],
+ lg: cookies?.[`vl-${OUTLINE}-lg`],
+ }
+
+ const rounding = {
+ sm: cookies?.[`vl-${ROUNDING}-sm`],
+ md: cookies?.[`vl-${ROUNDING}-md`],
+ lg: cookies?.[`vl-${ROUNDING}-lg`],
+ }
+
+ const disabledOpacity = cookies?.[`vl-${DISABLED_OPACITY}`]
+ const colorMode = cookies?.[COLOR_MODE_KEY] || vuelessConfig.colorMode || ColorMode.Light
+ const isCachedAutoMode = Boolean(Number(cookies?.[AUTO_MODE_KEY]))
+
+ const themeRootVariables = setTheme({ primary, neutral, text, outline, rounding, disabledOpacity, colorMode }, isCachedAutoMode)
+ const colorModeClass = colorMode === ColorMode.Dark ? DARK_MODE_CLASS : LIGHT_MODE_CLASS
_nuxtApp.ssrContext?.head.push({
style: [{ innerHTML: themeRootVariables }],
+ htmlAttrs: { class: colorModeClass },
})
}
})
diff --git a/src/tailwind.ts b/src/tailwind.ts
deleted file mode 100644
index 75cc2e4..0000000
--- a/src/tailwind.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import path from 'node:path'
-import { addTemplate, installModule, useNuxt } from '@nuxt/kit'
-import { createTailwindSafelist } from '@vueless/plugin-vite/utils/tailwindSafelist.js'
-import { join } from 'pathe'
-import { defu } from 'defu'
-
-import type { Nuxt } from './types'
-
-export default async function installTailwind(_nuxt: Nuxt = useNuxt()) {
- /* Generate tailwind safelist before module installed */
- await createTailwindSafelist({
- targetFiles: [
- 'components',
- 'layouts',
- 'pages',
- path.join(process.cwd(), 'app.vue'),
- path.join(process.cwd(), 'error.vue'),
- path.join(process.cwd(), 'playground', 'app.vue'),
- ],
- })
-
- /* Add vueless tailwind config template */
- const vuelessConfigFile = addTemplate({
- filename: 'vueless-tailwind.config.cjs',
- write: true,
- getContents: async () => `
- const { getSafelist, vuelessTailwindConfig } = require("vueless/preset.tailwind");
-
- module.exports = {
- plugins: [
- require('@tailwindcss/forms'),
- ],
- safelist: getSafelist(),
- ...vuelessTailwindConfig,
- }
- `,
- })
-
- /* Merge vueless and default tailwind config paths */
- const configPaths = [vuelessConfigFile.dst, join(_nuxt.options.rootDir, 'tailwind.config')]
-
- /* Get tailwind user configs */
- const { configPath: userConfigPath = [], ...twModuleConfig } = _nuxt.options.tailwindcss ?? {}
-
- /* Merge vueless, default, and user tailwind config paths */
- if (typeof userConfigPath === 'string') {
- configPaths.push(userConfigPath)
- }
- else {
- configPaths.push(...userConfigPath)
- }
-
- /* Install tailwind module */
- await installModule('@nuxtjs/tailwindcss', defu({
- exposeConfig: true,
- configPath: configPaths,
- }, twModuleConfig))
-}
diff --git a/src/types.ts b/src/types.ts
index c28365f..872c0ef 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,9 +1,4 @@
-import type { ModuleOptions as TailwindcssMoudleOptions } from '@nuxtjs/tailwindcss'
-import type { Nuxt as DefaultNuxt, NuxtOptions as DefaultNuxtOptions } from '@nuxt/schema'
-
-export interface NuxtOptions extends DefaultNuxtOptions {
- tailwindcss?: TailwindcssMoudleOptions
-}
+import type { Nuxt as DefaultNuxt, NuxtOptions } from '@nuxt/schema'
export interface Nuxt extends DefaultNuxt {
options: NuxtOptions
diff --git a/vueless.config.ts b/vueless.config.ts
new file mode 100644
index 0000000..76660e1
--- /dev/null
+++ b/vueless.config.ts
@@ -0,0 +1,12 @@
+import UBadge from './.vueless/configs/UBadge.config'
+
+export default {
+ colorMode: 'auto',
+ runtimeColors: true,
+ components: {
+ UBadge,
+ UHeader: {
+ // header: 'font-bold',
+ },
+ },
+}
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy