\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```",[3134,3137],{"name":3135,"color":3136},"bug","d73a4a",{"name":3138,"color":3139},"triage","ffffff",4873,"nuxt","ui","open","`UForm` `onSubmit` type is needlessly constrained","2025-09-02T05:54:14Z","https://github.com/nuxt/ui/issues/4873",0.653822,{"description":3149,"labels":3150,"number":3153,"owner":3141,"repository":3142,"state":3143,"title":3154,"updated_at":3155,"url":3156,"score":3157},"### Environment\n\n------------------------------\n- Operating System: Darwin\n- Node Version: v23.11.0\n- Nuxt Version: 4.0.3\n- CLI Version: 3.28.0\n- Nitro Version: 2.12.4\n- Package Manager: pnpm@9.15.2\n- Builder: -\n- User Config: modules, $development, devtools, css, router, colorMode, ui, runtimeConfig, routeRules, devServer, experimental, compatibilityDate, typescript, eslint, fonts, security\n- Runtime Modules: @nuxt/ui@3.3.3, @pinia/nuxt@0.11.2, nuxt-security@2.3.0, @nuxt/content@3.6.3, @nuxtjs/leaflet@1.3.2, @nuxt/image@1.11.0, @vueuse/nuxt@13.7.0, @yuta-inoue-ph/nuxt-vcalendar@1.1.0, @nuxt/scripts@0.11.10, @nuxt/eslint@1.9.0\n- Build Modules: -\n------------------------------\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Package\n\nv3.x\n\n### Version\n\nv3.3.3\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/quizzical-keldysh-wtw7zm\n\n### Description\n\nUsing Nuxt UI 3, I'm having issues styling a custom variant in a specific color. \n\nDefining the custom variant in the button.variants.variant works as expected, and intellisense recognizes the variant elsewhere in the project. Once I attempt to define a compoundVariant that includes the custom variant, intellisense breaks and the project no longer builds, as it appears the compoundVariants object is expecting the fixed list of variants specified in the base button. \n\nExample config:\n```\nexport default defineAppConfig({\n ui: {\n colors: {\n primary: \"green\",\n neutral: \"slate\",\n },\n button: {\n variants: {\n variant: {\n custom: {\n label: \"uppercase\",\n },\n },\n },\n compoundVariants: [{\n variant: 'custom'\n color: 'secondary',\n class: 'text-fuschia-500'\n }],\n },\n },\n});\n```\nError: \n`Type '\"custom\"' is not assignable to type '\"link\" | \"solid\" | \"outline\" | \"soft\" | \"subtle\" | \"ghost\" | (\"link\" | \"solid\" | \"outline\" | \"soft\" | \"subtle\" | \"ghost\")[] | undefined'.`\n\n### Additional context\n\nnote, this is a dupe of https://github.com/nuxt/ui/issues/4046 - feel free to close this and reopen the original if that is better.\n\n### Logs\n\n```shell-script\n\n```",[3151,3152],{"name":3135,"color":3136},{"name":3138,"color":3139},4888,"Custom Variant and `compoundVariants` typing issue","2025-09-03T17:02:45Z","https://github.com/nuxt/ui/issues/4888",0.6733375,{"description":3159,"labels":3160,"number":3166,"owner":3141,"repository":3142,"state":3143,"title":3167,"updated_at":3168,"url":3169,"score":3170},"### Environment\n\n- Operating System: Darwin\n- Node Version: v23.11.0\n- Nuxt Version: 3.17.3\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.12\n- Package Manager: npm@10.9.2\n- Builder: -\n- User Config: devtools, typescript, css, compatibilityDate, devServer, vite, runtimeConfig, app, ui, scripts, modules, sentry, sourcemap\n- Runtime Modules: @nuxt/ui@3.1.2, @pinia/nuxt@0.11.0, pinia-plugin-persistedstate/nuxt@4.3.0, @sentry/nuxt/module@9.19.0, @nuxt/scripts@0.11.7, @nuxt/eslint@1.4.0\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.1.2\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/r7ryl3\n\n### Description\n\nI recently upgrade to NuxtUI 3.1.2 (from 3.0.1) and It's impossible (or I don't know) how to deal with custom type for `InputMenu`, I got some types issues on `label-key`, `v-model`, `items`, `slots` as you can see in my reproduction.\n\n### Additional context\n\n\n\n### Logs\n\n```shell-script\n\n```",[3161,3162,3165],{"name":3135,"color":3136},{"name":3163,"color":3164},"v3","49DCB8",{"name":3138,"color":3139},4182,"Custom type with InputMenu","2025-05-19T12:22:28Z","https://github.com/nuxt/ui/issues/4182",0.6786494,{"description":3172,"labels":3173,"number":3177,"owner":3141,"repository":3142,"state":3178,"title":3179,"updated_at":3180,"url":3181,"score":3182},"### Environment\n\n- Operating System: Linux\n- Node Version: v22.11.0\n- Nuxt Version: 4.0.3\n- CLI Version: 3.27.0\n- Nitro Version: 2.12.4\n- Package Manager: pnpm@10.14.0\n- Builder: -\n- User Config: modules, $production, components, devtools, app, css, site, mdc, ui, compatibilityDate, nitro, vite, eslint, fonts, icon, linkChecker, ogImage, seo, sitemap\n- Runtime Modules: @nuxtjs/seo@3.1.0, @vueuse/nuxt@13.7.0, @nuxt/ui@3.3.2, @nuxt/eslint@1.9.0, @nuxt/scripts@0.11.10, motion-v/nuxt@1.7.0, @nuxtjs/mdc@0.17.2\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Package\n\nv3.x\n\n### Version\n\nv3.3.2\n\n### Reproduction\n\n```vue\n\u003Cscript setup lang=\"ts\">\n// This causes TypeScript error\nconst handleFileChange = (file: File | File[] | null) => {\n console.log(file);\n};\n\u003C/script>\n\n\u003Ctemplate>\n \u003CUFileUpload @update:model-value=\"handleFileChange\" />\n\u003C/template>\n```\n\n### Description\n\nThe `@update:model-value` event handler for `UFileUpload` component emits `unknown` type instead of the documented type `File | File[] | null | undefined`.\n\n**Expected Behavior (per documentation)**\nAccording to the [official documentation](https://ui.nuxt.com/components/file-upload#emits), the `@update:model-value` event should emit:\n- `[value: File | File[] | null | undefined]`\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3174,3175,3176],{"name":3135,"color":3136},{"name":3163,"color":3164},{"name":3138,"color":3139},4852,"closed","Type mismatch: UFileUpload @update:model-value emits unknown instead of documented type","2025-09-01T10:56:13Z","https://github.com/nuxt/ui/issues/4852",0.6514374,{"description":3184,"labels":3185,"number":3192,"owner":3141,"repository":3141,"state":3178,"title":3193,"updated_at":3194,"url":3195,"score":3196},"### Environment\n\n*package.json*\n```js\n{\n \"name\": \"nuxt-app\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"nuxt build\",\n \"dev\": \"nuxt dev\",\n \"generate\": \"nuxt generate\",\n \"preview\": \"nuxt preview\",\n \"postinstall\": \"nuxt prepare\"\n },\n \"dependencies\": {\n \"@prisma/nuxt\": \"^0.1.2\",\n \"@vueuse/core\": \"^12.0.0\",\n \"@vueuse/nuxt\": \"^12.0.0\",\n \"nuxt\": \"^3.14.1592\",\n \"vue\": \"latest\",\n \"vue-router\": \"latest\"\n },\n \"devDependencies\": {\n \"@nuxt/devtools\": \"npm:@nuxt/devtools-edge@latest\",\n \"@nuxtjs/tailwindcss\": \"^6.12.2\",\n \"@prisma/client\": \"^6.0.1\",\n \"prisma\": \"^6.0.1\"\n }\n}\n\n```\n\n\n### Reproduction\n\nhttps://stackblitz.com/edit/nuxt-starter-uquybs?file=nuxt.config.ts,app.vue\n\n### Describe the bug\n\nI have this code that should submit a form but I added `submit.prevent=\"handleSubmit()\"` so this should stop from refreshing.\n\nI tried to reproduce it on stackblitz however everything is working there (including the devtools) but on my local upon clicking create button the page refreshes.\n\n\n\n```html\n\u003Ctemplate>\n\u003Cform @submit.prevent=\"handleSubmit()\" class=\"w-full\">\n\t\u003Cdiv class=\"mb-4\">\n\t\t\u003Cinput\n\t\t\tv-model=\"form.email\"\n\t\t\ttype=\"email\"\n\t\t\tid=\"email\"\n\t\t\tclass=\"w-full p-3 border border-gray-300 rounded mt-1\"\n\t\t\tplaceholder=\"Email address\"\n\t\t/>\n\t\u003C/div>\n\t\u003Cdiv class=\"mb-6\">\n\t\t\u003Cinput\n\t\t\tv-model=\"form.password\"\n\t\t\ttype=\"password\"\n\t\t\tid=\"password\"\n\t\t\tclass=\"w-full p-3 border border-gray-300 rounded mt-1\"\n\t\t\tplaceholder=\"Password\"\n\t\t/>\n\t\u003C/div>\n\t\u003Cdiv class=\"mb-6\">\n\t\t\u003Cinput\n\t\t\tv-model=\"form.confirm_password\"\n\t\t\ttype=\"confirm_password\"\n\t\t\tid=\"confirm_password\"\n\t\t\tclass=\"w-full p-3 border border-gray-300 rounded mt-1\"\n\t\t\tplaceholder=\"Password Confirmation\"\n\t\t/>\n\t\u003C/div>\n\t\u003Cbutton\n\t\ttype=\"submit\"\n\t\tclass=\"w-full bg-blue-600 text-white p-3 rounded hover:bg-blue-700\"\n\t>\n\t\tCreate\n\t\u003C/button>\n\u003C/form>\n\u003C/template>\n\u003Cscript setup>\nconst handleSubmit = async () => {\n\t\n\tif (form.value.password !== form.value.confirm_password) {\n\t\tconsole.log(\"Passwords do not match\");\n\t\talert(\"Passwords do not match\");\n\t\treturn;\n\t}\n\n\tconsole.log(form.value);\n};\n...\n```\n\nhttps://github.com/user-attachments/assets/18ea3431-cadb-4613-a2a3-4703755f2f91\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3186,3189],{"name":3187,"color":3188},"pending triage","E99695",{"name":3190,"color":3191},"needs reproduction","FBCA04",30185,"Page refresh bug","2025-02-03T14:25:51Z","https://github.com/nuxt/nuxt/issues/30185",0.6546864,{"description":3198,"labels":3199,"number":3203,"owner":3141,"repository":3142,"state":3178,"title":3204,"updated_at":3205,"url":3206,"score":3207},"### Environment\n\nOperating System: mac os\nNode Version: v22.14.0\nLaravel Version: 12.12.0\nNitro Version: -\nPackage Manager: bun 1.2.11\nBuilder: -\nUser Config: -\nRuntime Modules: -\nBuild Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nVue\n\n### Version\n\nv3.1.1\n\n### Reproduction\n\nN/A\n\n### Description\n\nI'm using the example from the documentation for implementing a login and the button behaves like a link. I've already tried as=\"button\" and it doesn't work.\n\n```\n\u003Cscript setup lang=\"ts\">\nimport * as z from 'zod'\nimport type { FormSubmitEvent } from '@nuxt/ui'\n\nconst schema = z.object({\n email: z.string().email('Invalid email'),\n password: z.string().min(8, 'Must be at least 8 characters')\n})\n\ntype Schema = z.output\u003Ctypeof schema>\n\nconst state = reactive\u003CPartial\u003CSchema>>({\n email: undefined,\n password: undefined\n})\n\nconst toast = useToast()\nasync function onSubmit(event: FormSubmitEvent\u003CSchema>) {\n toast.add({ title: 'Success', description: 'The form has been submitted.', color: 'success' })\n console.log(event.data)\n}\n\u003C/script>\n\u003Ctemplate>\n \u003CUForm :schema=\"schema\" :state=\"state\" class=\"space-y-4\" @submit=\"onSubmit\">\n \u003CUFormField label=\"Email\" name=\"email\">\n \u003CUInput v-model=\"state.email\" />\n \u003C/UFormField>\n \u003CUFormField label=\"Password\" name=\"password\">\n \u003CUInput v-model=\"state.password\" type=\"password\" />\n \u003C/UFormField>\n \u003CUButton type=\"submit\">\n Submit\n \u003C/UButton>\n \u003C/UForm>\n\u003C/template>\n```\n\n### Additional context\n\n\n\n### Logs\n\n```shell-script\n\n```",[3200,3201,3202],{"name":3135,"color":3136},{"name":3163,"color":3164},{"name":3138,"color":3139},4095,"UButton works as a link in Inertia","2025-05-07T08:12:17Z","https://github.com/nuxt/ui/issues/4095",0.65829355,{"description":3209,"labels":3210,"number":3213,"owner":3141,"repository":3142,"state":3178,"title":3214,"updated_at":3215,"url":3216,"score":3217},"### Environment\n\n- Operating System: Linux\n- Node Version: v22.14.0\n- Nuxt Version: 3.17.1\n- CLI Version: 3.25.0\n- Nitro Version: 2.11.11\n- Package Manager: npm@10.9.2\n- Builder: -\n- User Config: app, build, colorMode, compatibilityDate, debug, devtools, fonts, future, hooks, i18n, icon, imports, modules, nitro, routeRules, runtimeConfig, security, ssr, sourcemap, css, telemetry, vite\n- Runtime Modules: @nuxt/eslint@1.3.0, @pinia/nuxt@0.11.0, @vueuse/nuxt@13.1.0, @nuxtjs/i18n@9.5.3, nuxt-security@2.2.0, @nuxt/ui@3.1.0\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.1.0\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/epic-smoke-95wysw?file=%2Fapp%2Fpages%2Findex.vue\n\n### Description\n\nUsing the `@update:model-value` event handler produces type errors with the Select component, starting from nuxt-ui v3.1.0 (v3.0.2 works fine).\n\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\nType 'boolean | AcceptableValue | undefined' is not assignable to type '\"yes\" | \"no\"'.\n Type 'undefined' is not assignable to type '\"yes\" | \"no\"'.ts-plugin(2322)\n```",[3211,3212],{"name":3135,"color":3136},{"name":3163,"color":3164},4019,"Type Issue with Select Component","2025-04-29T15:39:56Z","https://github.com/nuxt/ui/issues/4019",0.66502947,{"description":3219,"labels":3220,"number":3227,"owner":3141,"repository":3142,"state":3178,"title":3228,"updated_at":3229,"url":3230,"score":3231},"### Environment\n\n- Operating System: Linux\n- Node Version: v22.13.1\n- Nuxt Version: 3.16.1\n- CLI Version: 3.23.1\n- Nitro Version: 2.11.8\n- Package Manager: yarn@4.8.1\n- Builder: -\n- User Config: compatibilityDate, imports, components, devtools, modules, css, fonts, ui\n- Runtime Modules: @nuxt/eslint@1.2.0, @nuxt/fonts@0.11.0, @nuxt/image@1.10.0, @nuxt/test-utils@3.17.2, @nuxt/ui@3.0.2\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\n3.0.2\n\n### Reproduction\n\nhttps://github.com/nuxt/ui/blob/v3/src/theme/button.ts\n\n### Description\n\nI want to customize a button variant by `size`, `trailing` and `square` params. It works, but the types are broken.\n\nThe line in the `compoundVariants`:\n`{ size: 'md', trailing: true, square: false, class: { trailingIcon: '-mr-1' } }`\n\nErrors:\n`Type '{ trailingIcon: string; }' is not assignable to type 'string'`\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3221,3222,3223,3224],{"name":3135,"color":3136},{"name":3163,"color":3164},{"name":3138,"color":3139},{"name":3225,"color":3226},"stale","ededed",3738,"Incorrect compound button variants types","2025-08-12T11:07:19Z","https://github.com/nuxt/ui/issues/3738",0.668007,{"description":3233,"labels":3234,"number":3241,"owner":3141,"repository":3142,"state":3178,"title":3242,"updated_at":3243,"url":3244,"score":3245},"### Environment\n\n------------------------------\n- Operating System: Darwin\n- Node Version: v23.9.0\n- Nuxt Version: 3.15.4\n- CLI Version: 3.22.3\n- Nitro Version: -\n- Package Manager: pnpm@10.5.2\n- Builder: -\n- User Config: compatibilityDate, devtools, modules, css, ui, runtimeConfig\n- Runtime Modules: @nuxt/ui-pro@3.0.0-beta.2, @pinia/nuxt@0.10.1\n- Build Modules: -\n------------------------------\n\n👉 Report an issue: https://github.com/nuxt/nuxt/issues/new?template=bug-report.yml\n👉 Suggest an improvement: https://github.com/nuxt/nuxt/discussions/new\n👉 Read d\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\n3.0.0-beta.2\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/relaxed-scooby-nv4zrp?file=%2Fapp%2Fpages%2Findex.vue%3A7%2C51\n\n### Description\n\nI was importing type `FormSubmitEvent` from Nuxt UI but when I shifted to nuxt ui pro and replaced the import. But it broke, because nuxt ui pro doesn't export this type\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3235,3236,3237,3240],{"name":3135,"color":3136},{"name":3163,"color":3164},{"name":3238,"color":3239},"nuxt/ui-pro","00dc82",{"name":3138,"color":3139},3465,"type `FormSubmitEvent` not working in nuxt ui pro version 3","2025-05-10T17:33:04Z","https://github.com/nuxt/ui/issues/3465",0.671474,{"description":3247,"labels":3248,"number":3254,"owner":3141,"repository":3142,"state":3178,"title":3255,"updated_at":3256,"url":3257,"score":3258},"### Environment\n\n- Operating System: Linux\n- Node Version: v22.12.0\n- Nuxt Version: 3.15.4\n- CLI Version: 3.21.1\n- Nitro Version: 2.10.4\n- Package Manager: pnpm@9.15.2\n- Builder: -\n- User Config: -\n- Runtime Modules: -\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.0.0-alpha.12\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/bug-report-ubutton-8st7kw\n\n### Description\n\nWhen I throw an error within the click event of `UButton`, the `NuxtErrorBoundary` component does not catch the error as expected. However, if I use a standard `\u003Cbutton>` tag instead of `UButton`, the error is caught correctly by the NuxtErrorBoundary.\n\n### Additional context\n\n\n\n\n### Logs\n\n```shell-script\n\n```",[3249,3250,3251,3253],{"name":3135,"color":3136},{"name":3163,"color":3164},{"name":3252,"color":3226},"closed-by-bot",{"name":3225,"color":3226},3237,"[UButton] is not working with NuxtErrorBoundary","2025-06-18T09:02:19Z","https://github.com/nuxt/ui/issues/3237",0.67269033,["Reactive",3260],{},["Set"],["ShallowReactive",3263],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fpTgPj1P-XSxWcQebHlviU0h8bD4cn5rthVNrNAMq27U":-1},"/nuxt/ui/4935"]