\n \u003C/template>\n \u003Cv-list v-model:selected=\"selected\" selectable density=\"default\" max-height=\"40vh\" select-strategy=\"leaf\">\n \u003Ctemplate v-for=\"item in items\" :key=\"item.title\">\n \u003Cv-list-item>\n {{ item.title }}\n \u003C/v-list-item>\n \u003C/template>\n \u003C/v-list>\n \u003C/v-menu>\n\u003C/template>\n\n\u003Cscript lang=\"ts\">\nimport { defineComponent, reactive, ref } from 'vue'\n\nexport default defineComponent({\n name: 'AppTestComponent',\n setup() {\n const selected = ref([])\n const menuShow = ref(false)\n return {\n menuShow,\n selected,\n }\n },\n computed: {\n items() {\n return [\n {\n title: 'My Title',\n },\n ]\n },\n },\n})\n\u003C/script>\n```\n\ntest\n\n```typescript\n\nimport { describe, expect, test } from 'vitest'\nimport { mountSuspended } from '@nuxt/test-utils/runtime'\nimport AppTestComponent from '~/components/AppTestComponent.vue'\nimport { mount } from '@vue/test-utils'\nimport { VList } from 'vuetify/components/VList'\n\ndescribe('AppTestComponent', () => {\n test('renders', async () => {\n const component = mount(AppTestComponent)\n\n await component.find('button').trigger('click')\n const listContent = component.findComponent(VList).html()\n expect(listContent).toContain('My Title')\n })\n test('will fail', async () => {\n const component = await mountSuspended(AppTestComponent)\n\n await component.find('button').trigger('click')\n const listContent = component.findComponent(VList).html()\n expect(listContent).toContain('My Title')\n })\n})\n\n```\n\n\n### Describe the bug\n\n\nWhen testing Vuetify components with `mountSuspended` from `@nuxt/test-utils/runtime`, I discovered that ref values are not properly unwrapped before being passed to components.\n\nSpecifically, when mounting Vuetify's `VMenu` or `VList` components, props like `modelValue` (for VMenu) or `selected` (for VList) receive the actual ref object instead of the ref's value. This behavior differs from Vue Test Utils' standard `mount` function, which correctly unwraps ref values.\n\n## Reproduction Steps\n\nThe issue occurs when:\n1. Using `mountSuspended` from `@nuxt/test-utils/runtime`\n2. Testing components created with `defineComponent()`\n3. Passing refs as props to Vuetify components from `setup()`\n\nInterestingly, components using `\u003Cscript setup>` syntax work correctly.\n\n## Error Details\n\nThe error occurs in Vuetify's internal code when it tries to iterate over what it expects to be an array value but receives a ref object instead:\n\n```\nTypeError: (v || []) is not iterable\n ❯ Object.in node_modules/vuetify/src/composables/nested/selectStrategies.ts:56:25\n ❯ transformIn node_modules/vuetify/src/composables/nested/nested.ts:184:33\n ❯ ComputedRefImpl.get [as fn] node_modules/vuetify/src/composables/proxiedModel.ts:53:14\n ❯ refreshComputed node_modules/@vue/reactivity/dist/reactivity.cjs.js:384:28\n ❯ ComputedRefImpl.value node_modules/@vue/reactivity/dist/reactivity.cjs.js:1625:5\n ❯ ComputedRefImpl.fn node_modules/vuetify/src/composables/nested/nested.ts:356:53\n ❯ refreshComputed node_modules/@vue/reactivity/dist/reactivity.cjs.js:384:28\n ❯ ComputedRefImpl.value node_modules/@vue/reactivity/dist/reactivity.cjs.js:1625:5\n ❯ ComputedRefImpl.fn node_modules/vuetify/src/components/VList/VListItem.tsx:141:105\n ❯ refreshComputed node_modules/@vue/reactivity/dist/reactivity.cjs.js:384:28\n```\n\n## Investigation Findings\n\nWhen debugging the Vuetify components by placing breakpoints in their setup functions, I observed that:\n- With `@vue/test-utils` mount: Props contain the actual values of refs\n- With `@nuxt/test-utils` mountSuspended: Props contain the ref objects themselves\n\nI suspect this is related to how `mountSuspended` handles the return value of `setup()` when using `defineComponent()`, failing to properly unwrap reactive references before passing them as props.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[1984],{"name":1985,"color":1986},"pending triage","5D08F5",1199,"nuxt","test-utils","open","Component props are passed as ref instead of refs value when using defineComponent()","2025-03-20T22:07:30Z","https://github.com/nuxt/test-utils/issues/1199",0.734654,{"description":1996,"labels":1997,"number":2001,"owner":1988,"repository":2002,"state":1990,"title":2003,"updated_at":2004,"url":2005,"score":2006},"### 🐛 The bug\n\nWhen running or building a Nuxt project that uses the Nuxt Scripts module, the build fails with a `400 Bad Request` error originating from a request to `https://www.googletagmanager.com/gtm.js`.\n\n### 🛠️ To reproduce\n\nhttps://stackblitz.com/edit/nuxt-starter-qsvb2xmv?file=nuxt.config.ts\n\n### 🌈 Expected behavior\n\nThe build should succeed without errors, even when GTM is integrated. \n\n### ℹ️ Additional context\n\n**System**\n- Operating System: `Darwin`\n- Node Version: `v23.10.0`\n- Nuxt Version: `3.16.1`\n- CLI Version: `3.23.1`\n- Nitro Version: `2.11.8`\n- Package Manager: `bun@1.2.7`\n- Builder: `-`\n- User Config: `modules`, `$development`, `$production`, `ssr`, `components`, `devtools`, `app`, `css`, `router`, `site`, `colorMode`, `runtimeConfig`, `ignore`, `routeRules`, `future`, `compatibilityDate`, `typescript`, `eslint`, `fonts`, `i18n`, `icon`, `image`, `robots`, `schemaOrg`, `scripts`, `security`, `sitemap`, `viewport`\n- Runtime Modules: `@nuxt/scripts@0.11.5`, `@nuxt/eslint@1.3.0`, `@nuxt/image@1.10.0`, `@nuxt/icon@1.11.0`, `@nuxt/fonts@0.11.0`, `@nuxtjs/color-mode@3.5.2`, `@nuxtjs/i18n@9.4.0`, `@nuxtjs/seo@3.0.1`, `@nuxtjs/tailwindcss@6.13.2`, `@vueuse/nuxt@13.0.0`, `nuxt-security@2.2.0`, `nuxt-viewport@2.2.0`\n- Build Modules: `-`\n\n**Logs**:\n```\njonathan@MacBook-Pro-von-Jonathan Application-Website-Frontend % nr build\n$ nuxt build\nNuxt 3.16.1 with Nitro 2.11.8 nuxi 16:38:06\nℹ Using Tailwind CSS from ~/assets/css/tailwind.css nuxt:tailwindcss 16:38:07\nℹ Nuxt Icon server bundle mode is set to local 16:38:07\n✔ Nuxt Icon discovered local-installed 4 collections: fa6-brands, fa6-solid, logos, simple-icons 16:38:08\n✔ Nuxt Icon loaded local collection simple-icons-extended with 3 icons 16:38:08\n✔ Nuxt Icon loaded local collection sf-symbols-small with 6404 icons 16:38:09\n✔ Nuxt Icon loaded local collection sf-symbols-medium with 6404 icons 16:38:09\n✔ Nuxt Icon loaded local collection sf-symbols-large with 6404 icons 16:38:09\nℹ Running with compatibility version 4 nuxt 16:38:09\nℹ Building for Nitro preset: node-server nuxi 16:38:09\nℹ Building client... 16:38:10\nℹ vite v6.2.4 building for production... 16:38:10\nℹ ✓ 685 modules transformed. 16:38:14\n\n ERROR ✗ Build failed in 6.08s 16:38:16\n\n\n ERROR Nuxt Build Error: [nuxt:scripts:bundler-transformer] [GET] \"https://www.googletagmanager.com/gtm.js\": 400 Bad Request nuxi 16:38:16\nfile: virtual:nuxt:%2FUsers%2Fjonathan%2FDeveloper%2FGit%2FGitHub%2FApplication-Website-Frontend%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fmodules%2F%40nuxt-scripts%2Fplugin.mjs\n\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async downloadScript (node_modules/@nuxt/scripts/dist/module.mjs:186:11)\n at async Object.enter (node_modules/@nuxt/scripts/dist/module.mjs:325:23)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:65:5)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:107:7)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:100:15)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:100:15)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:107:7)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:107:7)\n at async AsyncWalker.visit (node_modules/estree-walker/src/async.js:100:15)\n\nerror: script \"build\" exited with code 1\njonathan@MacBook-Pro-von-Jonathan Application-Website-Frontend % \n```",[1998],{"name":1999,"color":2000},"bug","d73a4a",441,"scripts","Google Tag Manager 400 Error","2025-04-05T15:19:52Z","https://github.com/nuxt/scripts/issues/441",0.74326867,{"description":2008,"labels":2009,"number":2010,"owner":1988,"repository":2011,"state":1990,"title":2012,"updated_at":2013,"url":2014,"score":2015},"Currently, when using the customCollections configuration in Nuxt/icon module, it only searches for icons in the specified directory but does not look into nested subdirectories.\nFor example, if I set:\n\n```js\n// nuxt.config.js\nexport default defineNuxtConfig({\n modules: ['nuxt-icon'],\n icon: {\n customCollections: {\n 'my-collection': '/path/to/icons'\n }\n }\n})\n```\n\n\n\nThe module will only find icons directly inside /path/to/icons but not in /path/to/icons/subfolder/.\n\n\u003Cimg width=\"190\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/d5646712-2df5-4dc3-a474-48f8f3cf4669\" />\n\n\u003Cimg width=\"422\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/10035094-1291-49d4-969a-c04e8a428e79\" />\n\nRequested Feature\nI would like the module to support recursive searching in customCollections directories, allowing it to find icons in all nested subdirectories like wor\n\nSteps to Reproduce\nhttps://stackblitz.com/edit/github-monhzc",[],374,"icon","Feature Request: Recursive search in customCollections directories","2025-03-19T11:15:14Z","https://github.com/nuxt/icon/issues/374",0.7500439,{"description":2017,"labels":2018,"number":2028,"owner":1988,"repository":2029,"state":1990,"title":2030,"updated_at":2031,"url":2032,"score":2033},"### For what version of Nuxt UI are you suggesting this?\n\nv3.0.0-alpha.x\n\n### Description\n\nHello everyone, I’d like to discuss the possibility of setting `props` by default from `AppConfig`. Currently, it’s very convenient that we can configure the theme through the config. It would be great to have a similar option for props. Previously, @benjamincanac mentioned [here](https://github.com/nuxt/ui/issues/1289#issuecomment-2480556540) that this is not currently planned.\n\nMy proposal is simple: wrap all `withDefaults` in our own implementation. This way, we can define props without making significant changes to the code.\n\n## What it could look like\n\nLet’s look at the `Accordion.vue` component. At the moment, its props look like this:\n```ts\nconst props = withDefaults(defineProps\u003CAccordionProps\u003CT>>(), {\n type: 'single',\n collapsible: true,\n labelKey: 'label'\n})\n```\nLet’s assume our wrapper is called `withUiDefaults`. Then the code would look like this:\n```diff\n-const props = withDefaults(defineProps\u003CAccordionProps\u003CT>>(), {\n+const props = withUiDefaults(defineProps\u003CAccordionProps\u003CT>>(), {\n type: 'single',\n collapsible: true,\n labelKey: 'label'\n})\n```\nThe implementation of `withUiDefaults` is quite simple:\n```ts\nfunction withUiDefaults(props, defaults) {\n const defaultFromConfig = {}\n\n return withDefaults(props, {\n ...defaults,\n ...defaultFromConfig\n })\n}\n``` \n\n## Issues I See\n\n1) **Typing `AppConfig` might be challenging** \n We would need to somehow generate types based on the components. \n **My opinion:** I think we can retrieve this using `vue-component-meta` during the UI build stage. So, in my opinion, this isn’t a significant problem.\n\n2) **Developers might set `modelValue` or other critical props by default** \n **My opinion:** In such cases, we can log a warning to the console. Additionally, developers should understand which props they are overriding. We won’t be able to cover all edge cases, but I don’t think we need to.\n\n### Additional context\n\n_No response_",[2019,2022,2025],{"name":2020,"color":2021},"enhancement","a2eeef",{"name":2023,"color":2024},"v3","49DCB8",{"name":2026,"color":2027},"triage","ffffff",2662,"ui","Override default props from `AppConfig`","2024-11-17T08:30:46Z","https://github.com/nuxt/ui/issues/2662",0.76267266,{"description":2035,"labels":2036,"number":2039,"owner":1988,"repository":2029,"state":1990,"title":2040,"updated_at":2041,"url":2042,"score":2043},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v18.20.7`\n- Nuxt Version: `3.14.1592`\n- CLI Version: `3.15.0`\n- Nitro Version: `2.10.4`\n- Package Manager: `yarn@1.22.22`\n- Builder: `-`\n- User Config: `default`\n- Runtime Modules: `@nuxt/ui@2.19.2`, `@artmizu/nuxt-prometheus@2.4.0`, `@nuxt/icon@1.10.3`\n- Build Modules: `-`\n\n### Version\n\nv2.21.1\n\n### Reproduction\n\nhttps://ui2.nuxt.com/components/select-menu#control-the-query\n\nTry to select `Wade` in the query input with mouse or trackpad \n\u003Cimg width=\"494\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/a0e90d62-aabb-4d40-9d8d-a6fed67fee02\" />\n\nBrowser: `Google Chrome Version 134.0.6998.89 (Official Build) (arm64)`\n\nAlso reproduced on `Safari Version 18.3.1 (20620.2.4.11.6)`\n\n### Description\n\nUser may want to copy the text in the query input of a `select-menu` component by moving cursor around text, now it's unable to do it without a keyboard (`Shift + left/right arrow` or `Cmd/Ctrl + A` to select all).\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[2037,2038],{"name":1999,"color":2000},{"name":2026,"color":2027},3583,"Accessibility: unable to select text in the query input of a select-menu","2025-03-17T00:34:07Z","https://github.com/nuxt/ui/issues/3583",0.7645016,{"description":2045,"labels":2046,"number":2049,"owner":1988,"repository":2050,"state":2051,"title":2052,"updated_at":2053,"url":2054,"score":2055},"1. From the main empty branch (without file), create a new file \n2. Commit this file on a new branch\n3. Come back to main empty branch\n \n\n",[2047],{"name":1999,"color":2048},"ff281a",565,"nuxt.com","closed","Error occurs when jumping to an empty branch (without files)","2023-02-15T12:31:30Z","https://github.com/nuxt/nuxt.com/issues/565",0.71117014,{"description":2057,"labels":2058,"number":2049,"owner":1988,"repository":1989,"state":2051,"title":2063,"updated_at":2064,"url":2065,"score":2055},"I want to setup test environment without rendering my index page, please add config option for setting globally default route, for example '/test' instead of '/' or option to mock `app.vue` component.\r\n\r\nSo far I figured out workaround, in `nuxt.config.ts` I am doing mocking of index page manually with hooks\r\n\r\n```\r\nhooks: {\r\n 'pages:extend'(pages: NuxtPage[]) {\r\n if (String(process.env?.TEST) === 'true') {\r\n const indexPage = pages.find((page) => page.name === 'index')\r\n const testPage = pages.find((page) => page.name === 'test')\r\n if (indexPage != null && testPage != null) {\r\n indexPage.file = testPage.file\r\n }\r\n }\r\n },\r\n },\r\n```\r\n\r\nNote this hook is not working when placed in `vitest.config.ts` overrides because function is not serializable.",[2059,2060],{"name":2020,"color":2021},{"name":2061,"color":2062},"vitest-environment","b60205","Add option to set default route or mock app.vue","2023-12-05T14:35:36Z","https://github.com/nuxt/test-utils/issues/565",{"description":2067,"labels":2068,"number":2070,"owner":1988,"repository":2050,"state":2051,"title":2071,"updated_at":2072,"url":2073,"score":2074},"",[2069],{"name":1999,"color":2048},423,"Refresh files after branch create","2023-02-15T12:31:27Z","https://github.com/nuxt/nuxt.com/issues/423",0.7292389,{"description":2067,"labels":2076,"number":2001,"owner":1988,"repository":2050,"state":2051,"title":2078,"updated_at":2079,"url":2080,"score":2006},[2077],{"name":1999,"color":2048},"[Live collab] If another user commit the draft on another branch, my draft still remains","2022-05-03T14:27:49Z","https://github.com/nuxt/nuxt.com/issues/441",{"description":2067,"labels":2082,"number":2001,"owner":1988,"repository":1989,"state":2051,"title":2083,"updated_at":2084,"url":2085,"score":2006},[],"detect nuxt.config.ts","2023-12-02T00:13:11Z","https://github.com/nuxt/test-utils/issues/441",["Reactive",2087],{},["Set"],["ShallowReactive",2090],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"uQbFazaD_uP0InsREpuouRG2p8sL71fxJE4W1PG3bT8":-1},"/nuxt/nuxt.com/197"]