\n \u003C/div>\n \u003C/div>\n\u003C/template>\n```\n\n\u003C/details>\n\n### Description\n\nPassing for example `readonly` parameter to `UInput` works at runtime and does not emit any type errors with `strictTemplates` turned off, but with it turned on it throws a type error, saying that `readonly` cannot be passed to `UInput`:\n```\napp/pages/index.vue:8:40 - error TS2353: Object literal may only specify known properties, and 'readonly' does not exist in type '{ readonly onBlur?: ((event: FocusEvent) => any) | undefined; readonly onChange?: ((event: Event) => any) | undefined; readonly \"onUpdate:modelValue\"?: ((value: \"Test value\") => any) | undefined; ... 26 more ...; loadingIcon?: string | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps'.\n\n8 \u003CUInput model-value=\"Test value\" readonly />\n ~~~~~~~~\n```\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3171,3174,3177],{"name":3172,"color":3173},"bug","d73a4a",{"name":3175,"color":3176},"v3","49DCB8",{"name":3178,"color":3179},"p3-low","0E8A16",4977,"nuxt","ui","open","Unable to pass native HTML element parameters when `strictTemplates` is `true`","2025-09-15T15:06:26Z","https://github.com/nuxt/ui/issues/4977",0.7188699,{"description":3189,"labels":3190,"number":3195,"owner":3181,"repository":3182,"state":3183,"title":3196,"updated_at":3197,"url":3198,"score":3199},"### Environment\n\n- Operating System: `Linux`\n- Node Version: `v20.11.1`\n- Nuxt Version: `-`\n- CLI Version: `3.28.0`\n- Nitro Version: `-`\n- Package Manager: `npm@10.2.4`\n- Builder: `-`\n- User Config: `-`\n- Runtime Modules: `-`\n- Build Modules: `-`\n\n### Is this bug related to Nuxt or Vue?\n\nBoth\n\n### Package\n\nv3.x\n\n### Version\n\nv3.3.2, but applies for v4 as well\n\n### Reproduction\n\n[Vue SFC Playground reproduction](https://play.vuejs.org/#eNp9kTFPwzAQhf+K5amVqkQIppJWBVQkGKCisHkJ6TW4JLZln0OkKP+ds6OEDqibfd+7u/fsjt8ZkzQe+JJnrrDSIHOA3rAqV+VKcHSCr4WStdEWWccs5AXKBljPjlbXTHBqFvx2knw8aluPbKN8i6mXaaGJKlDo0sDDxtgkVKGVo52YI7DVNH7W9XPCA9Rq7z9ricRnc7Zasx1Nlw4SC05XJL4K2iwd/JNbuiDUpqKZdGMsG0wthy0bF6dRuHGw4CwlYZaedfEFZaf9R1kmJ6cVPVAXZgkessgK7KtBSf4EX7JIAsurSv88xxpaD4uxXnxB8f1P/eTaUBN8R1nANvQqE8PclkDeAt7uX6Cl8wRrffAVqS/At/A6PngcZPdeHcj2mS66fYr/JlX57rYtgnJjqGA0KPuojx/9cCH6n93r5Cb2CdXz/hdp+c1W) (runtime is not required, issue is with types -- wait a bit until they load completely).\n\nCode:\n```vue\n\u003Cscript setup lang=\"ts\">\nimport { reactive } from \"vue\";\nimport UForm from \"@nuxt/ui/components/Form.vue\";\n\nconst state = reactive({});\nconst onSubmit = () => Promise.resolve(1);\n\u003C/script>\n\n\u003Ctemplate>\n \u003CUForm :state @submit=\"onSubmit\" />\n\u003C/template>\n```\n\nError:\n```\nType '() => Promise\u003Cnumber>' is not assignable to type '((event: FormSubmitEvent\u003Cany>) => any) & ((() => void | Promise\u003Cvoid>) | ((event: FormSubmitEvent\u003Cany>) => void | Promise\u003Cvoid>))'.\n Type '() => Promise\u003Cnumber>' is not assignable to type '((event: FormSubmitEvent\u003Cany>) => any) & (() => void | Promise\u003Cvoid>)'.ts(2322)\nForm.vue.d.ts(59, 18): The expected type comes from property 'onSubmit' which is declared here on type '__VLS_NormalizeComponentEvent\u003CNonNullable\u003C{ onSubmit?: ((event: FormSubmitEvent\u003Cany>) => any) & ((() => void | Promise\u003Cvoid>) | ((event: FormSubmitEvent\u003Cany>) => void | Promise\u003C...>)); ... 11 more ...; class?: any; } & VNodeProps & AllowedComponentProps & ComponentCustomProps>, { ...; }, \"onSubmit\", \"submit\", \"submi...'\n---\n(property) onSubmit?: ((event: FormSubmitEvent\u003Cany>) => any) & ((() => void | Promise\u003Cvoid>) | ((event: FormSubmitEvent\u003Cany>) => void | Promise\u003Cvoid>))\n```\n\n### Description\n\n`\u003CUForm>`s `@submit` event handler type require that it does not return any value. This is needlessly constraining.\n\n### Additional context\n\nThis is not required by the implementation, but instead wholly caused by the types of `onSubmit` property:\nhttps://github.com/nuxt/ui/blob/901bf7cac3ea53264b27adf879ee4072fa9ac242/src/runtime/components/Form.vue#L53\n\nResult of the `onSubmit` prop is not used at all:\nhttps://github.com/nuxt/ui/blob/901bf7cac3ea53264b27adf879ee4072fa9ac242/src/runtime/components/Form.vue#L243\n\nReplacing the type of `onSubmit` with this should be enough:\n```typescript\nexport interface FormProps\u003CS extends FormSchema, T extends boolean = true> {\n // ...\n onSubmit?: (event: FormSubmitEvent\u003CFormData\u003CS, T>>) => unknown\n}\n```\nThis should still allow passing event handlers without arguments.\n\n### Logs\n\n```shell-script\n\n```",[3191,3192],{"name":3172,"color":3173},{"name":3193,"color":3194},"triage","ffffff",4873,"`UForm` `onSubmit` type is needlessly constrained","2025-09-02T05:54:14Z","https://github.com/nuxt/ui/issues/4873",0.7214839,{"description":3201,"labels":3202,"number":3215,"owner":3181,"repository":3181,"state":3183,"title":3216,"updated_at":3217,"url":3218,"score":3219},"### Environment\r\n\r\n- Operating System: Linux\r\n- Node Version: v16.14.2\r\n- Nuxt Version: 3.4.1\r\n- Nitro Version: 2.3.3\r\n- Package Manager: npm@7.17.0\r\n- Builder: vite\r\n- User Config: -\r\n- Runtime Modules: -\r\n- Build Modules: -\r\n\r\n### Reproduction\r\n\r\nhttps://stackblitz.com/edit/github-yn4nmm?file=plugins/test.ts\r\n\r\n### Describe the bug\r\n\r\nWhen passing the `ctx.options` of a $fetch onResponse to another $fetch generates types incompatibility, I had this problem since 3.2 but still is not fixed:\r\n\r\n```\r\nArgument of type '{ onResponse: undefined; baseURL?: string | undefined; body?: BodyInit | Record\u003Cstring, any> | null | undefined; params?: SearchParameters | undefined; ... 19 more ...; window?: null | undefined; }' is not assignable to parameter of type 'NitroFetchOptions\u003CRequestInfo, \"delete\" | \"get\" | \"post\" | \"head\" | \"patch\" | \"put\" | \"connect\" | \"options\" | \"trace\">'.\r\n Types of property 'method' are incompatible.\r\n Type 'string | undefined' is not assignable to type '\"delete\" | \"get\" | \"post\" | \"GET\" | \"HEAD\" | \"PATCH\" | \"POST\" | \"PUT\" | \"DELETE\" | \"CONNECT\" | \"OPTIONS\" | \"TRACE\" | \"head\" | \"patch\" | \"put\" | \"connect\" | \"options\" | \"trace\" | undefined'.\r\n Type 'string' is not assignable to type '\"delete\" | \"get\" | \"post\" | \"GET\" | \"HEAD\" | \"PATCH\" | \"POST\" | \"PUT\" | \"DELETE\" | \"CONNECT\" | \"OPTIONS\" | \"TRACE\" | \"head\" | \"patch\" | \"put\" | \"connect\" | \"options\" | \"trace\" | undefined'.ts(2345)\r\n```\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Logs\r\n\r\n_No response_",[3203,3206,3209,3212],{"name":3204,"color":3205},"discussion","538de2",{"name":3207,"color":3208},"types","2875C3",{"name":3210,"color":3211},"workaround available","11376d",{"name":3213,"color":3214},"dx","C39D69",20287,"[types] $fetch.onResponse(ctx)","2024-06-30T11:09:03Z","https://github.com/nuxt/nuxt/issues/20287",0.72541845,{"description":3221,"labels":3222,"number":3230,"owner":3181,"repository":3182,"state":3231,"title":3232,"updated_at":3233,"url":3234,"score":3235},"### Environment\n\nOperating System: Linux\r\nNode Version: v20.15.1\r\nNuxt Version: 3.13.0\r\nCLI Version: 3.13.1\r\nNitro Version: 2.9.7\r\nPackage Manager: bun@1.1.27\r\nBuilder: -\r\nUser Config: devtools, extends, modules, ui\r\nRuntime Modules: @nuxt/ui@2.18.4\r\nBuild Modules: -\n\n### Version\n\nv2.18.4\n\n### Reproduction\n\n-\n\n### Description\n\n```\r\nType '{ \"v-model\": string | undefined; icon: string; type: string; size: \"md\"; placeholder: string; autocomplete: string; }' is not assignable to type 'IntrinsicAttributes & Partial\u003C{ name: string; size: InputSize; type: string; required: boolean; class: any; leading: boolean; color: InputColor; ... 16 more ...; modelModifiers: {}; }> & Omit\u003C...>'.\r\n Property 'autocomplete' does not exist on type 'IntrinsicAttributes & Partial\u003C{ name: string; size: InputSize; type: string; required: boolean; class: any; leading: boolean; color: InputColor; ... 16 more ...; modelModifiers: {}; }> & Omit\u003C...>'.\r\n```\n\n### Additional context\n\n`UInput` component doesn't have the default input types (`HTMLInputElement`)\n\n### Logs\n\n_No response_",[3223,3224,3225,3228],{"name":3172,"color":3173},{"name":3193,"color":3194},{"name":3226,"color":3227},"closed-by-bot","ededed",{"name":3229,"color":3227},"stale",2104,"closed","`UInput` default types","2025-06-18T09:06:12Z","https://github.com/nuxt/ui/issues/2104",0.7051532,{"description":3237,"labels":3238,"number":3245,"owner":3181,"repository":3181,"state":3231,"title":3246,"updated_at":3247,"url":3248,"score":3249},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v22.17.0`\n- Nuxt Version: `4.1.0`\n- CLI Version: `3.28.0`\n- Nitro Version: `2.12.5`\n- Package Manager: `pnpm@9.15.4`\n- Builder: `-`\n- User Config: `compatibilityDate`, `devtools`\n- Runtime Modules: `-`\n- Build Modules: `-`\n\n### Reproduction\n\nhttps://github.com/MikeBellika/nuxt-defineemits-type-error\n\n### Describe the bug\n\nWhen auto importing components, it seems the emits aren't properly typed. The reproduction should show the problem pretty well and minimally but i'll add it here as well:\n\n```vue\n\u003Cscript setup lang=\"ts\">\n// MyEmitter.vue\ndefineEmits\u003C{ cool: [value: boolean] }>();\n\u003C/script>\n\u003Ctemplate>\n \u003Cbutton @click=\"$emit('cool', true)\">emit\u003C/button>\n\u003C/template>\n```\n\n```vue\n\u003Cscript setup lang=\"ts\">\n// This component gives a type error, because it can't see the type of `e`\nconst hello = ref(false);\n\u003C/script>\n\u003Ctemplate>\n \u003Cdiv>\n \u003CMyEmitter @cool=\"(e) => (hello = e)\" />\n \u003C!-- Parameter 'e' implicitly has an 'any' type -->\n {{ hello }}\n \u003C/div>\n\u003C/template>\n```\n\n\n```vue\n\u003Cscript setup lang=\"ts\">\n// No error when importing component explicitly.\nimport { MyEmitter } from \"#components\";\nconst hello = ref(false);\n\u003C/script>\n\u003Ctemplate>\n \u003Cdiv>\n \u003CMyEmitter @cool=\"(e) => (hello = e)\" />\n {{ hello }}\n \u003C/div>\n\u003C/template>\n```\n\n### Additional context\n\nIn our project this error occurred after upgrading to nuxt 4.1.0 from 4.0.0. However the error seems to still happen on 4.0.0 in the reproduction repo. Might be coming from a dependency of nuxt.\n\n### Logs\n\n```shell-script\napp/components/AutoImported.vue:6:24 - error TS7006: Parameter 'e' implicitly has an 'any' type.\n\n6 \u003CMyEmitter @cool=\"(e) => (hello = e)\" />\n ~\n\n\nFound 1 error.\n```",[3239,3242],{"name":3240,"color":3241},"pending triage","E99695",{"name":3243,"color":3244},"possible regression","B90A42",33134,"defineEmits not typed properly on auto imported components after upgrading to 4.1.0","2025-09-04T10:02:56Z","https://github.com/nuxt/nuxt/issues/33134",0.71692914,{"description":3251,"labels":3252,"number":3257,"owner":3181,"repository":3182,"state":3231,"title":3258,"updated_at":3259,"url":3260,"score":3261},"### For what version of Nuxt UI are you suggesting this?\n\nv3-alpha\n\n### Description\n\nIn version 2 of Nuxt UI, a `click` property can be defined in dropdown `items` props. In V3, this feature has not yet been implemented wet.\n\n### Additional context\n\n_No response_",[3253,3256],{"name":3254,"color":3255},"enhancement","a2eeef",{"name":3175,"color":3176},2450,"[DropdownMenu] - Add click properties to items props for handle custom click event","2024-10-24T12:30:29Z","https://github.com/nuxt/ui/issues/2450",0.7232433,{"description":3263,"labels":3264,"number":3267,"owner":3181,"repository":3181,"state":3231,"title":3268,"updated_at":3269,"url":3270,"score":3271},"### Environment\n\n```\r\n- Operating System: Linux\r\n- Node Version: v18.20.3\r\n- Nuxt Version: 3.13.1\r\n- CLI Version: 3.13.1\r\n- Nitro Version: 2.9.7\r\n- Package Manager: npm@10.2.3\r\n- Builder: -\r\n- User Config: compatibilityDate, devtools\r\n- Runtime Modules: -\r\n- Build Modules: -\r\n```\n\n### Reproduction\n\nhttps://stackblitz.com/edit/github-z6juqt?file=components%2FTest.vue\r\n\r\n`npm run typecheck` in terminal\r\n\r\n```\r\ncomponents/Test.vue:8:17 - error TS2339: Property 'optionalStr' does not exist on type 'CreateComponentPublicInstanceWithMixins\u003CToResolvedProps\u003C{}, {}>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, VNodeProps & AllowedComponentProps & ComponentCustomProps & Readonly\u003C...> & Readonly\u003C...>, ... 16 more ..., {}>'.\r\n\r\n8 \u003Cspan v-if=\"optionalStr\">{{ optionalStr }}\u003C/span>\r\n ~~~~~~~~~~~\r\n```\n\n### Describe the bug\n\nAfter upgrading from Nuxt 3.12.3 to 3.13.2, these TS errors showed up in every component that only uses optional props. The error disappears if we add a single required prop or enable TS strict mode.\n\n### Additional context\n\nThe issue doesn't seem to be present in a pure Vue/Vite project:\r\n\r\nhttps://stackblitz.com/edit/vitejs-vite-ece16d?file=src%2Fcomponents%2FHelloWorld.vue\n\n### Logs\n\n_No response_",[3265,3266],{"name":3240,"color":3241},{"name":3243,"color":3244},29041,"Components with only optional props lose props type if strict mode is disabled","2024-09-23T10:12:23Z","https://github.com/nuxt/nuxt/issues/29041",0.72354645,{"labels":3273,"number":3278,"owner":3181,"repository":3181,"state":3231,"title":3279,"updated_at":3280,"url":3281,"score":3282},[3274,3277],{"name":3275,"color":3276},"3.x","29bc7f",{"name":3172,"color":3173},11911,"type augmentation issues","2023-01-19T15:49:25Z","https://github.com/nuxt/nuxt/issues/11911",0.7243583,{"labels":3284,"number":3288,"owner":3181,"repository":3181,"state":3231,"title":3289,"updated_at":3290,"url":3291,"score":3292},[3285],{"name":3286,"color":3287},"2.x","d4c5f9",6354,"在引入typescript后style-resources报错","2023-01-18T21:49:11Z","https://github.com/nuxt/nuxt/issues/6354",0.72458744,{"description":3294,"labels":3295,"number":3301,"owner":3181,"repository":3181,"state":3231,"title":3302,"updated_at":3303,"url":3304,"score":3305},"### Environment\r\n\r\n- Operating System: Linux\r\n- Node Version: v20.13.1\r\n- Nuxt Version: 3.13.1\r\n- CLI Version: 3.13.1\r\n- Nitro Version: 2.9.7\r\n- Package Manager: npm@10.8.3\r\n- Builder: -\r\n- User Config: compatibilityDate, devtools, modules, routeRules, app, vite, runtimeConfig, ignore, tailwindcss, colorMode, prisma, veeValidate, pwa, i18n, csurf\r\n- Runtime Modules: @nuxtjs/tailwindcss@6.12.1, @vite-pwa/nuxt@0.10.5, @nuxtjs/color-mode@3.4.4, @nuxtjs/robots@4.1.6, nuxt-csurf@1.6.2, @nuxt/icon@1.5.1, @prisma/nuxt@0.0.35, @vee-validate/nuxt@4.13.2, @nuxt/test-utils/module@3.14.1, @nuxtjs/i18n@8.5.3\r\n- Build Modules: -\r\n\r\n### Reproduction\r\n\r\n1. npx nuxi init repro (npm, no git)\r\n\r\n### Describe the bug\r\n\r\nInside `node_modules/nuxt/dist/app/composables/error`:\r\n\r\n```ts\r\nexport declare const useError: () => any;\r\n```\r\n\r\n`useError` composable is not typed.\r\n\r\nAccording to the [documentation](https://nuxt.com/docs/getting-started/error-handling#useerror), it should be:\r\n\r\n```ts\r\nfunction useError (): Ref\u003CError | { url, statusCode, statusMessage, message, description, data }>\r\n```\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Logs\r\n\r\n_No response_",[3296,3299,3300],{"name":3297,"color":3298},"good first issue","fbca04",{"name":3207,"color":3208},{"name":3172,"color":3173},28977,"types: useError is not correctly typed as per documentation","2024-11-17T15:18:54Z","https://github.com/nuxt/nuxt/issues/28977",0.72461784,["Reactive",3307],{},["Set"],["ShallowReactive",3310],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fudMCef4mw2AbUltFgQ-ygNZrGvUrBkRUuSgtv9MCsU0":-1},"/nuxt/ui/731"]