From cabad480f9fb20cff63ad6e98c14ea3fc3b62cf7 Mon Sep 17 00:00:00 2001 From: HugoRCD Date: Mon, 19 May 2025 11:02:36 +0200 Subject: [PATCH] test --- src/defaults.ts | 5 ++++- src/module.ts | 1 + src/runtime/plugins/colors.ts | 9 ++++++++- src/templates.ts | 3 +++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/defaults.ts b/src/defaults.ts index 8e73f864..872e7d51 100644 --- a/src/defaults.ts +++ b/src/defaults.ts @@ -12,7 +12,10 @@ export const getDefaultUiConfig = (colors?: string[]) => ({ error: 'red', neutral: 'slate' }, [...(colors || []), 'neutral' as any]), - icons + icons, + csp: { + nonce: false + } }) export const defaultOptions = { diff --git a/src/module.ts b/src/module.ts index 9f6de75a..752bc204 100644 --- a/src/module.ts +++ b/src/module.ts @@ -86,6 +86,7 @@ export default defineNuxtModule({ nuxt.options.alias['#ui'] = resolve('./runtime') nuxt.options.appConfig.ui = defu(nuxt.options.appConfig.ui || {}, getDefaultUiConfig(options.theme.colors)) + nuxt.options.appConfig.ui.csp = defu(nuxt.options.appConfig.ui.csp || {}, options.csp) // Isolate root node from portaled components nuxt.options.app.rootAttrs = nuxt.options.app.rootAttrs || {} diff --git a/src/runtime/plugins/colors.ts b/src/runtime/plugins/colors.ts index 9ae716d6..d657b332 100644 --- a/src/runtime/plugins/colors.ts +++ b/src/runtime/plugins/colors.ts @@ -23,6 +23,8 @@ export default defineNuxtPlugin(() => { const appConfig = useAppConfig() const nuxtApp = useNuxtApp() + const nonce = computed(() => (appConfig.ui as any)?.csp?.nonce as string | undefined) + const root = computed(() => { const { neutral, ...colors } = appConfig.ui.colors @@ -44,7 +46,8 @@ export default defineNuxtPlugin(() => { style: [{ innerHTML: () => root.value, tagPriority: -2, - id: 'nuxt-ui-colors' + id: 'nuxt-ui-colors', + ...(nonce.value ? { nonce: nonce.value } : {}) }] } @@ -54,6 +57,10 @@ export default defineNuxtPlugin(() => { style.innerHTML = root.value style.setAttribute('data-nuxt-ui-colors', '') + + if (nonce.value) { + style.setAttribute('nonce', nonce.value) + } document.head.appendChild(style) headData.script = [{ diff --git a/src/templates.ts b/src/templates.ts index 99c7c927..c319ce76 100644 --- a/src/templates.ts +++ b/src/templates.ts @@ -165,6 +165,9 @@ type AppConfigUI = { } icons?: Partial tv?: typeof defaultConfig + csp?: { + nonce?: string + } } & TVConfig declare module '@nuxt/schema' {