\n\n### Describe the bug\n\nif you use useHead to add `application/ld+json` to the index page, then on another page you add one as well you end up on that other page with both. On index you only get the index one. And my project has 15 pages each with a useHead but ONLY the index.vue one is duplicated.\n\nI've confirmed it's that block duplicating by changing it and watching it change on other pages as well as removing it and watching it disappear\n\n### Additional context\n\nCurrently my work around for this bug is doing this on index.vue instead:\n\n```\nuseHead(() => {\n const headConfig = {\n title: 'VanityCert.com - Effortless Custom Domains & Automated SSL for SaaS',\n meta: [\n {\n hid: 'description',\n name: 'description',\n content: 'VanityCert.com simplifies custom domain management and automated SSL certificate issuance for SaaS businesses. Empower your customers with branded domains and seamless security.',\n },\n {\n hid: 'keywords',\n name: 'keywords',\n content: 'custom domains, automated SSL, SaaS, domain management, SSL certificates, white-label domains, security, infrastructure, B2B SaaS',\n },\n { hid: 'og:title', property: 'og:title', content: 'VanityCert.com - Effortless Custom Domains & Automated SSL for SaaS' },\n { hid: 'og:description', property: 'og:description', content: 'VanityCert.com simplifies custom domain management and automated SSL certificate issuance for SaaS businesses. Empower your customers with branded domains and seamless security.' },\n { hid: 'og:image', property: 'og:image', content: 'https://www.vanitycert.com/img/social-share.png' },\n { hid: 'og:url', property: 'og:url', content: 'https://www.vanitycert.com/' },\n { hid: 'twitter:title', name: 'twitter:title', content: 'VanityCert.com - Effortless Custom Domains & Automated SSL for SaaS' },\n { hid: 'twitter:description', name: 'twitter:description', content: 'VanityCert.com simplifies custom domain management and automated SSL certificate issuance for SaaS businesses. Empower your customers with branded domains and seamless security.' },\n { hid: 'twitter:image', name: 'twitter:image', content: 'https://www.vanitycert.com/img/social-share.png' },\n { hid: 'twitter:url', name: 'twitter:url', content: 'https://www.vanitycert.com/' },\n ],\n link: [\n { rel: 'canonical', href: 'https://www.vanitycert.com/' },\n ],\n script: [] // Initialize script array\n };\n\n // Conditionally add Product schema ONLY if on the homepage route\n if (route.path === '/') {\n headConfig.script.push({\n type: 'application/ld+json',\n innerHTML: JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"Product\",\n \"name\": \"VanityCert.com - Custom Domain & Automated SSL for SaaS\",\n \"description\": \"VanityCert.com simplifies custom domain management and automated SSL certificate issuance for SaaS businesses. Empower your customers with branded domains and seamless security.\",\n \"url\": \"https://www.vanitycert.com/\",\n \"image\": \"https://www.vanitycert.com/img/social-share.png\",\n \"logo\": \"https://www.vanitycert.com/img/logo.png\",\n \"brand\": {\n \"@type\": \"Brand\",\n \"name\": \"VanityCert\"\n },\n \"offers\": {\n \"@type\": \"Offer\",\n \"name\": \"VanityCert SaaS Subscription\",\n \"priceCurrency\": \"USD\",\n \"price\": \"16\",\n \"priceValidUntil\": \"2025-12-31\",\n \"url\": \"https://www.vanitycert.com/pricing\",\n \"availability\": \"https://schema.org/InStock\",\n \"itemCondition\": \"https://schema.org/NewCondition\"\n },\n \"mainEntityOfPage\": {\n \"@type\": \"WebPage\",\n \"@id\": \"https://www.vanitycert.com/\"\n },\n \"publisher\": {\n \"@type\": \"Organization\",\n \"name\": \"VanityCert LLC\",\n \"logo\": {\n \"@type\": \"ImageObject\",\n \"url\": \"https://www.vanitycert.com/img/logo.png\"\n }\n }\n })\n });\n }\n\n return headConfig;\n});\n```\n\n### Logs\n\n```shell-script\n\n```",[3036],{"name":3037,"color":3038},"pending triage","E99695",32766,"useHead on index.vue applies schema globally","2025-07-25T20:46:46Z","https://github.com/nuxt/nuxt/issues/32766",0.7939717,{"description":3045,"labels":3046,"number":3053,"owner":3026,"repository":3054,"state":3055,"title":3056,"updated_at":3057,"url":3058,"score":3059},"",[3047,3050],{"name":3048,"color":3049},"enhancement","1ad6ff",{"name":3051,"color":3052},"responsive","1cd1c6",821,"nuxt.com","closed","[Navbar] Add color mode switch in mobile aside nav","2023-02-15T12:31:01Z","https://github.com/nuxt/nuxt.com/issues/821",0.73472244,{"description":3061,"labels":3062,"number":3065,"owner":3026,"repository":3027,"state":3055,"title":3066,"updated_at":3067,"url":3068,"score":3069},"After many requests from the community (nuxt/ui#187, nuxt/ui#298, nuxt/ui#543, nuxt/ui#850, nuxt/ui#1514, etc.), the goal would be to make `@nuxt/ui` compatible for non-Nuxt apps as a Vite plugin I guess.\r\n\r\nThe minimal features would be to:\r\n\r\n- Run Tailwind CSS vite plugin\r\n- Inject components\r\n- Inject composables\r\n- Use `@iconify/vue` instead of `@nuxt/icon` (we don't need that much complexity I guess)\r\n- Use VueUse https://vueuse.org/core/useDark/#usedark instead of `@nuxtjs/color-mode`\r\n- Make Nuxt specific imports (`#imports`, `#build`, etc.) work\r\n- Make Nuxt specific composables (`useAppConfig`, ~~`useId`~~, etc.) work\r\n- Make theming with `app.config.ts` work in some way",[3063,3064],{"name":3020,"color":3021},{"name":3023,"color":3024},2129,"Vue compatibility","2024-11-21T09:41:35Z","https://github.com/nuxt/ui/issues/2129",0.75961715,{"description":3071,"labels":3072,"number":3079,"owner":3026,"repository":3054,"state":3055,"title":3080,"updated_at":3081,"url":3082,"score":3083},"_Improve the design of the modules page with [Raycast](https://www.raycast.com/store) page as the main source of inspiration._\n\n### Todos\n- [ ] Create a responsive design for the modules listing page sync with the API.\n- [ ] Card are external links.\n",[3073,3076],{"name":3074,"color":3075},"design","00bd6f",{"name":3077,"color":3078},"dev","018415",1337,"Modules Page","2023-10-10T14:44:51Z","https://github.com/nuxt/nuxt.com/issues/1337",0.76093733,{"description":3085,"labels":3086,"number":3087,"owner":3026,"repository":3054,"state":3055,"title":3088,"updated_at":3089,"url":3090,"score":3091},"### Environment\n\nbrowser chrome\n\n### Reproduction\n\nopen https://nuxt.com/modules in browser.\n\n### Describe the bug\n\n\u003Cimg width=\"1271\" alt=\"image\" src=\"https://github.com/nuxt/nuxt/assets/32301380/7363e730-5eda-4fee-8790-375987e293ef\">\r\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n_No response_",[],1353,"[Document] nuxt modules page has been crashed.","2023-10-10T14:44:55Z","https://github.com/nuxt/nuxt.com/issues/1353",0.77998173,{"description":3093,"labels":3094,"number":3099,"owner":3026,"repository":3027,"state":3055,"title":3100,"updated_at":3101,"url":3102,"score":3103},"### Environment\n\n- Operating System: Darwin\n- Node Version: v20.18.0\n- Nuxt Version: 3.13.2\n- CLI Version: 3.15.0\n- Nitro Version: 2.9.7\n- Package Manager: npm@10.8.2\n- Builder: -\n- User Config: default\n- Runtime Modules: @nuxt/eslint@0.6.0, @nuxtjs/prismic@3.4.3, @vueuse/nuxt@11.1.0, @nuxtjs/seo@2.0.0-rc.23, @nuxt/scripts@0.9.5, @formkit/nuxt@1.6.7, @nuxtjs/i18n@9.0.0-rc.2, @nuxt/ui@3.0.0-alpha.7\n- Build Modules: -\n\n### Version\n\n3.0.0-alpha.7\n\n### Reproduction\n\nhttps://stackblitz.com/edit/nuxt-starter-rufada?file=nuxt.config.ts\n\n### Description\n\nIt's seams that tailwind did not expose something named \"compile\" or, as Netlify Ai says, the build failure is caused by a syntax error related to a CommonJS module.\n\nI think that the problem was related to the way you import the `@tailwindcss/vite` plugin in line 77 of the `src/module.ts` but i don't understand if it's caused by the `await import()`. \n\nIn your project all work perfect after pnpm run prepare:dev. Maybe it's the way NPM (and not PNPM) installs the module? \n\n### Additional context\n\n_No response_\n\n### Logs\n\n```\n ERROR Cannot start nuxt: The requested module 'tailwindcss' does not provide an export named 'compile' 4:27:03 PM\n\n var P=Object.defineProperty;var F=(e,t)=>{for(var s in t)P(e,s,{get:t[s],enumerable:!0})};import*as u from\"node:module\";import{pathToFileURL as X}from\"node:url\";var d={};F(d,{DEBUG:()=>T});var T=C(process.env.DEBUG);function C(e){if(e===void 0)return!1;if(e===\"true\"||e===\"1\")return!0;if(e===\"false\"||e===\"0\")return!1;if(e===\"*\")return!0;let t=e.split(\",\").map(s=>s.split(\":\")[0]);return t.includes(\"-tailwindcss\")?!1:!!t.includes(\"tailwindcss\")}import f from\"enhanced-resolve\";import{createJiti as U}from\"jiti\";import x from\"node:fs\";import J from\"node:fs/promises\";import y,{dirname as v}from\"node:path\";import{pathToFileURL as _}from\"node:url\";import{__unstable__loadDesignSystem as b,compile as W}from\"tailwindcss\";import m from\"node:fs/promises\";import a from\"node:path\";var $=[/import[\\s\\S]*?['\"](.{3,}?)['\"]/gi,/import[\\s\\S]*from[\\s\\S]*?['\"](.{3,}?)['\"]/gi,/export[\\s\\S]*from[\\s\\S]*?['\"](.{3,}?)['\"]/gi,/require\\(['\"](.+)['\"]\\)/gi],M=[\".js\",\".cjs\",\".mjs\"],N=[\"\",\".js\",\".cjs\",\".mjs\",\".ts\",\".cts\",\".mts\",\".jsx\",\".tsx\"],I=[\"\",\".ts\",\".cts\",\".mts\",\".tsx\",\".js\",\".cjs\",\".mjs\",\".jsx\"];async function O(e,t){for(let s of t){let r=${e}${s};if((await m.stat(r).catch(()=>null))?.isFile())return r}for(let s of t){let r=${e}/index${s};if(await m.access(r).then(()=>!0,()=>!1))return r}return null}async function p(e,t,s,r){let i=M.includes(r)?N:I,n=await O(a.resolve(s,t),i);if(n===null||e.has(n))return;e.add(n),s=a.dirname(n),r=a.extname(n);let o=await m.readFile(n,\"utf-8\"),l=[];for(let j of $)for(let c of o.matchAll(j))c[1].startsWith(\".\")&&l.push(p(e,c[1],s,r));await Promise.all(l)}async function g(e){let t=new Set;return await p(t,e,a.dirname(e),a.extname(e)),Array.from(t)}function B(e,{base:t,onDependency:s}){return W(e,{base:t,async loadModule(r,i){return R(r,i,s)},async loadStylesheet(r,i){return E(r,i,s)}})}async function L(e,{base:t}){return b(e,{base:t,async loadModule(s,r){return R(s,r,()=>{})},async loadStylesheet(s,r){return E(s,r,()=>{})}})}async function R(e,t,s){if(e[0]!==\".\"){let o=await S(e,t);if(!o)throw new Error(Could not resolve '${e}' from '${t}');let l=await h(_(o).href);return{base:v(o),module:l.default??l}}let r=await S(e,t);if(!r)throw new Error(Could not resolve '${e}' from '${t}');let[i,n]=await Promise.all([h(_(r).href+\"?id=\"+Date.now()),g(r)]);for(let o of n)s(o);return{base:v(r),module:i.default??i}}async function E(e,t,s){let r=await z(e,t);if(!r)throw new Error(Could not resolve '${e}' from '${t}');if(s(r),typeof globalThis.__tw_readFile==\"function\"){let n=await globalThis.__tw_readFile(r,\"utf-8\");if(n)return{base:y.dirname(r),content:n}}let i=await J.readFile(r,\"utf-8\");return{base:y.dirname(r),content:i}}var w=null;async function h(e){try{return await import(e)}catch{return w??=U(import.meta.url,{moduleCache:!1,fsCache:!1}),await w.import(e)}}var q=f.ResolverFactory.createResolver({fileSystem:new f.CachedInputFileSystem(x,4e3),useSyncFileSystemCalls:!0,extensions:[\".css\"],mainFields:[\"style\"],conditionNames:[\"style\"]});async function z(e,t){if(typeof globalThis.__tw_resolve==\"function\"){let s=globalThis.__tw_resolve(e,t);if(s)return Promise.resolve(s)}return D(q,e,t)}var A=f.ResolverFactory.createResolver({fileSystem:new f.CachedInputFileSystem(x,4e3),useSyncFileSystemCalls:!0,extensions:[\".js\",\".json\",\".node\",\".ts\"]});function S(e,t){return D(A,e,t)}function D(e,t,s){return new Promise((r,i)=>e.resolve({},s,t,{},(n,o)=>{if(n)return i(n);r(o)}))}function G(e,t){if(typeof e!=\"string\")throw new TypeError(\"expected path to be a string\");if(e===\"\\\\\"||e===\"/\")return\"/\";var s=e.length;if(s\u003C=1)return e;var r=\"\";if(s>4&&e[3]===\"\\\\\"){var i=e[2];(i===\"?\"||i===\".\")&&e.slice(0,2)===\"\\\\\\\\\"&&(e=e.slice(2),r=\"//\")}var n=e.split(/[/\\\\]+/);return t!==!1&&n[n.length-1]===\"\"&&n.pop(),r+n.join(\"/\")}function oe(e){let t=G(e);return e.startsWith(\"\\\\\\\\\")&&t.startsWith(\"/\")&&!t.startsWith(\"//\")?/${t}:t}if(!process.versions.bun){let e=u.createRequire(import.meta.url);u.register?.(X(e.resolve(\"@tailwindcss/node/esm-cache-loader\")))}export{L as __unstable__loadDesignSystem,B as compile,d as env,oe as normalizePath};\n ^^^^^^^\n SyntaxError: The requested module 'tailwindcss' does not provide an export named 'compile'\n\n at ModuleJob._instantiate (node:internal/modules/esm/module_job:146:21)\n at async ModuleJob.run (node:internal/modules/esm/module_job:229:5)\n at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)\n at async setup (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/@nuxt/ui/dist/module.mjs:2788:22)\n at async normalizedModule (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/@nuxt/kit/dist/index.mjs:2136:17)\n at async installModule (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/@nuxt/kit/dist/index.mjs:2478:95)\n at async initNuxt (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/nuxt/dist/index.mjs:4506:5)\n at async NuxtDevServer._load (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/nuxi/dist/chunks/dev2.mjs:1894:5)\n at async NuxtDevServer.load (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/nuxi/dist/chunks/dev2.mjs:1828:7)\n at async NuxtDevServer.init (/Users/lucabortolussi/Projects/v3%20-%20Smartness/node_modules/nuxi/dist/chunks/dev2.mjs:1823:5)\n```\n",[3095,3098],{"name":3096,"color":3097},"bug","d73a4a",{"name":3023,"color":3024},2455,"The requested module `tailwindcss` does not provide an export named `compile`","2024-11-04T20:48:46Z","https://github.com/nuxt/ui/issues/2455",0.7806411,{"description":3105,"labels":3106,"number":3115,"owner":3026,"repository":3027,"state":3055,"title":3116,"updated_at":3117,"url":3118,"score":3119},"### Environment\n\n- Operating System: Darwin\n- Node Version: v20.19.0\n- Nuxt Version: -\n- CLI Version: 3.23.1\n- Nitro Version: -\n- Package Manager: pnpm@10.7.0\n- Builder: -\n- User Config: -\n- Runtime Modules: -\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nVue\n\n### Version\n\nv3.0.2\n\n### Reproduction\n\nfreshly pulled official starter template using\n```bash\nnpx giget@latest gh:nuxt-ui-pro/starter-vue . --force\n```\ncleaned components.d.ts / deleted it\nit has been recreated: but missing ALL nuxtui components:\n\n```js\n/* eslint-disable */\n// @ts-nocheck\n// Generated by unplugin-vue-components\n// Read more: https://github.com/vuejs/core/pull/3399\n// biome-ignore lint: disable\nexport {}\n\n/* prettier-ignore */\ndeclare module 'vue' {\n export interface GlobalComponents {\n LogoPro: typeof import('./src/components/LogoPro.vue')['default']\n RouterLink: typeof import('vue-router')['RouterLink']\n RouterView: typeof import('vue-router')['RouterView']\n }\n}\n```\n\n### Description\n\nThe components.d.ts file generated by `unplugin-vue-components` is incomplete.\n\n### Additional context\n\n```js\nimport { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport uiPro from '@nuxt/ui-pro/vite'\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [\n vue(),\n uiPro({\n ui: {\n colors: {\n primary: 'green',\n neutral: 'slate'\n }\n },\n prefix: 'U'\n })\n ]\n})\n```\n\n### Logs\n\n```shell-script\n\n```",[3107,3108,3111,3112],{"name":3096,"color":3097},{"name":3109,"color":3110},"needs reproduction","CB47CF",{"name":3023,"color":3024},{"name":3113,"color":3114},"triage","ffffff",3753,"unplugin components.d.ts not working","2025-03-31T13:04:11Z","https://github.com/nuxt/ui/issues/3753",0.7821131,{"description":3121,"labels":3122,"number":3128,"owner":3026,"repository":3054,"state":3055,"title":3129,"updated_at":3130,"url":3131,"score":3132},"has() css selector isn't enabled by default on Firefox.\nthe next major release version of Firefox will enable it by default but due to poor performance on old architecture, Firefox disable the selector by default. It is possible to enable it by setting layout.css.has-selector.enabled to true in about:config",[3123,3125],{"name":3096,"color":3124},"ff281a",{"name":3126,"color":3127},"a11y","2CD658",1060,"css:has on firefox","2023-06-06T12:14:32Z","https://github.com/nuxt/nuxt.com/issues/1060",0.7848105,{"description":3134,"labels":3135,"number":3137,"owner":3026,"repository":3027,"state":3055,"title":3138,"updated_at":3139,"url":3140,"score":3141},"### Environment\n\n- Operating System: Darwin\r\n- Node Version: v21.7.3\r\n- Nuxt Version: 3.12.2\r\n- CLI Version: 3.12.0\r\n- Nitro Version: 2.9.6\r\n- Package Manager: pnpm@9.1.2\r\n- Builder: -\r\n- User Config: ssr, devtools, devServer, modules, colorMode, i18n, routeRules\r\n- Runtime Modules: @nuxt/ui@2.17.0, @nuxtjs/i18n@8.3.1\r\n- Build Modules: -\n\n### Version\n\nv2.17.0\n\n### Reproduction\n\nhttps://stackblitz.com/edit/nuxt-ui-xszpqb?file=app.vue\n\n### Description\n\nSince `UTable` doesn't support to opt out for multiple selection, I have to implement the single selection feature by myself.\r\nUnfortunately I found it doesn't trigger `@select` event when you're checking on the checkbox.\r\n\r\nIf you're clicking on the row, it will trigger the `@select` event. \n\n### Additional context\n\nClick on the green checkbox ✅ can bypass the logic written inside `select` function\r\n \r\n\u003Cimg width=\"640\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bc20f6a7-6e85-4239-8376-3794d28ec54e\">\r\n\n\n### Logs\n\n_No response_",[3136],{"name":3096,"color":3097},2064,"UTable doesn't trigger @select when clicking the checkbox","2024-09-06T10:18:26Z","https://github.com/nuxt/ui/issues/2064",0.7922433,["Reactive",3143],{},["Set"],["ShallowReactive",3146],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fDIhPbkWaMk1o-I5Jk0mGqJ3H5eh8GToHMr9vo0iSEO0":-1},"/nuxt/ui/1722"]