\n \u003C/u-form>\n\u003C/template>\n```\n\nTriggers type error:\n\n```\nType '{ file: { readonly lastModified: number; readonly name: string; readonly webkitRelativePath: string; readonly size: number; readonly type: string; arrayBuffer: () => Promise\u003CArrayBuffer>; slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob; stream: () => ReadableSt...' is not assignable to type 'Partial\u003C{ file: File; }>'\n```\n\nExpected: it's allowed to have a form with a schema that requires a file to be selected.\n\n### Additional context\n\nIn fact, I believe this is a much broader problem. Why is the `state` typed as `Partial\u003CInferInput\u003CS>> ` in the first place? The type of the fields does not always match the schema. Basically, that's the point of schema in the first place, to perform validation — and not only value, but also the type. Consider number input value:\n\n```vue\n\u003Cscript setup lang=\"ts\">\nimport * as z from \"zod\"\n\nconst fields = reactive({\n // Type used by \u003Cinput v-model=\"...\" type=\"number\">\n // It saves empty string for non-numbers.\n foo: \"\" as number | \"\",\n})\n\nconst schema = z.object({\n // But we need the actual number for the input data.\n foo: z.number(),\n})\n\u003C/script>\n\n\u003Ctemplate>\n \u003Cu-form :state=\"fields\" :schema=\"schema\">\n \u003Cinput v-model=\"fields.foo\" type=\"number\" />\n \u003C/u-form>\n\u003C/template>\n```\n\nThis leads to similar type error:\n\n```\nType '{ foo: number | \"\"; }' is not assignable to type 'Partial\u003C{ foo: number; }>'.\n Types of property 'foo' are incompatible.\n Type 'number | \"\"' is not assignable to type 'number | undefined'.\n Type 'string' is not assignable to type 'number'.\n```\n\nAs I see it, `state` should be untyped/unknown.\n\n### Logs\n\n```shell-script\n\n```",[3207,3208],{"name":3188,"color":3189},{"name":3194,"color":3195},5204,"UFile (and others!) type error when used with schema validation","2025-10-10T06:07:16Z","https://github.com/nuxt/ui/issues/5204",0.6777429,{"description":3215,"labels":3216,"number":3220,"owner":3197,"repository":3198,"state":3199,"title":3221,"updated_at":3222,"url":3223,"score":3224},"### 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```",[3217,3218,3219],{"name":3188,"color":3189},{"name":3191,"color":3192},{"name":3194,"color":3195},4182,"Custom type with InputMenu","2025-05-19T12:22:28Z","https://github.com/nuxt/ui/issues/4182",0.68894476,{"description":3226,"labels":3227,"number":3235,"owner":3197,"repository":3198,"state":3236,"title":3237,"updated_at":3238,"url":3239,"score":3240},"### Environment\n\nNot important in this case?\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Package\n\nv4.x\n\n### Version\n\nv4.0.0\n\n### Reproduction\n\n```javascript\nconst registrationFields: AuthFormProps[\"fields\"] = [{\n name: \"name\",\n type: \"text\" as const,\n label: \"Name\",\n placeholder: \"Enter your name\"\n}]\n```\n\n### Description\n\nPlaceholder type seems to be missing and now TypeScript is unhappy with me.\n\n### Additional context\n\nIt's a separate issue that I brought up in #5005 and @HugoRCD suggested me to open a new issue.",[3228,3229,3232,3233],{"name":3188,"color":3189},{"name":3230,"color":3231},"duplicate","cfd3d7",{"name":3194,"color":3195},{"name":3234,"color":3192},"v4",5073,"closed","'placeholder' does not exist in type 'AuthFormField'","2025-09-29T15:13:37Z","https://github.com/nuxt/ui/issues/5073",0.67158973,{"description":3242,"labels":3243,"number":3256,"owner":3197,"repository":3198,"state":3236,"title":3257,"updated_at":3258,"url":3259,"score":3260},"### Environment\n\n- Operating System - Ubuntu 22\n- Node Version: 22\n- Nuxt Version: 3.17.5\n- CLI Version: 3.25.1\n- Package Manager: pnpm@10.9.0\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\n3.17.5\n\n### Reproduction\n\n```javascript\nconst fields = ref([\n {\n name: 'code',\n type: 'otp',\n placeholder: 'Enter 6-digit code',\n otp: {\n length: 6,\n placeholder: '●',\n },\n },\n])\n\nconst submitButtonOptions = computed(() => ({\n label: 'Verify Code',\n loading: loading.value,\n}))\n\u003C/script>\n\n\u003Ctemplate>\n \u003Cdiv class=\"flex min-h-screen items-center justify-center p-4\">\n \u003CUPageCard class=\"w-full max-w-md\">\n \u003CUAuthForm\n :schema=\"schema\"\n :state=\"credentials\"\n :fields=\"fields\"\n :loading=\"loading\"\n title=\"Multi-Factor Authentication\"\n subtitle=\"Enter the 6-digit code from your authenticator app to continue.\"\n :submit=\"submitButtonOptions\"\n @submit=\"verifyMFA\"\n >\n \u003Ctemplate #header>\n \u003CNuxtImg\n src=\"/thinkrocket-logo.png\"\n alt=\"ThinkRocket Logo\"\n width=\"100\"\n class=\"mx-auto\"\n preset=\"contain\"\n />\n \u003C/template>\n\n \u003Ctemplate #validation>\n \u003CUAlert\n v-if=\"mfaError\"\n color=\"error\"\n icon=\"i-lucide-alert-circle\"\n :title=\"mfaError\"\n class=\"mb-4\"\n />\n \u003C/template>\n\n \u003Ctemplate #footer>\n \u003Cdiv class=\"text-center space-y-2\">\n \u003Cp class=\"text-sm text-gray-600 dark:text-gray-300\">\n Check your authenticator app for the current code.\n \u003C/p>\n \u003CUButton variant=\"ghost\" size=\"sm\" :loading=\"loading\" @click=\"refreshChallenge\">\n \u003CUIcon name=\"i-lucide-refresh-cw\" class=\"h-4 w-4 mr-1\" />\n Get New Code\n \u003C/UButton>\n \u003C/div>\n \u003C/template>\n \u003C/UAuthForm>\n \u003C/UPageCard>\n \u003C/div>\n\u003C/template>\n```\n\n### Description\n\n`:fields` is throwing typescript error. Only an issue with `otp`. Looking in\n\n- `node_modules/.pnpm/@nuxt+ui-pro@3.1.3_@babel+parser@7.27.5_db0@0.3.2_better-sqlite3@11.10.0__embla-carouse_48b559106e80aa1b3007fc5d3af2ab7f/node_modules/@nuxt/ui-pro/dist/runtime/components/AuthForm.vue.d.ts`\n- `node_modules/.pnpm/@nuxt+ui@3.1.3_@babel+parser@7.27.5_db0@0.3.2_better-sqlite3@11.10.0__embla-carousel@8._6f36fdd0332a5dab432a961d27814af8/node_modules/@nuxt/ui/dist/runtime/components/PinInput.vue.d.ts`\n- `node_modules/.pnpm/reka-ui@2.3.1_typescript@5.8.3_vue@3.5.16_typescript@5.8.3_/node_modules/reka-ui/dist/index.d.ts`\n \nI'm not seeing what I'm missing. The [docs](https://ui.nuxt.com/components/auth-form#props) don't give any other details than the example.\n\n```\nVue: Type\n{\n name: string;\n type: string;\n placeholder: string;\n otp: {\n length: number;\n placeholder: string;\n };\n}[]\nis not assignable to type AuthFormField[]\nType\n{\n name: string;\n type: string;\n placeholder: string;\n otp: {\n length: number;\n placeholder: string;\n };\n}\nis not assignable to type AuthFormField\n```\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3244,3245,3248,3249,3252,3253],{"name":3188,"color":3189},{"name":3246,"color":3247},"needs reproduction","CB47CF",{"name":3191,"color":3192},{"name":3250,"color":3251},"nuxt/ui-pro","00dc82",{"name":3194,"color":3195},{"name":3254,"color":3255},"closed-by-bot","ededed",4317,"UAuthForm otp typescript error","2025-06-18T02:14:57Z","https://github.com/nuxt/ui/issues/4317",0.67240596,{"description":3262,"labels":3263,"number":3266,"owner":3197,"repository":3198,"state":3236,"title":3267,"updated_at":3268,"url":3269,"score":3270},"### 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```",[3264,3265],{"name":3188,"color":3189},{"name":3191,"color":3192},4019,"Type Issue with Select Component","2025-04-29T15:39:56Z","https://github.com/nuxt/ui/issues/4019",0.6772078,{"description":3272,"labels":3273,"number":3277,"owner":3197,"repository":3198,"state":3236,"title":3278,"updated_at":3279,"url":3280,"score":3281},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v22.14.0`\n- Nuxt Version: `4.0.3`\n- CLI Version: `3.28.0`\n- Nitro Version: `2.12.4`\n- Package Manager: `pnpm@10.9.0`\n- Builder: `-`\n- User Config: `compatibilityDate`, `devtools`, `extends`, `components`, `alias`, `dir`, `ssr`, `modules`, `ui`, `css`, `imports`, `app`, `runtimeConfig`\n- Runtime Modules: `@nuxt/ui@3.3.2`, `@pinia/nuxt@0.11.2`, `@vueuse/nuxt@13.6.0`\n- Build Modules: `-`\n\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.3.2\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/fancy-leaf-5z2y85\n\n### Description\n\nThe InputMenu component crashes when provided with numeric values in its items prop, the same usage works correctly with SelectMenu.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3274,3275,3276],{"name":3188,"color":3189},{"name":3191,"color":3192},{"name":3194,"color":3195},4767,"InputMenu crashes when using numeric items","2025-08-16T02:41:48Z","https://github.com/nuxt/ui/issues/4767",0.6820295,{"description":3283,"labels":3284,"number":3288,"owner":3197,"repository":3198,"state":3236,"title":3289,"updated_at":3290,"url":3291,"score":3292},"### Environment\n\n- Operating System: Linux\n- Node Version: v20.12.0\n- Nuxt Version: 3.17.3\n- CLI Version: 3.25.1\n- Nitro Version: 2.11.12\n- Package Manager: pnpm@8.15.6\n- Builder: -\n- User Config: modules, devtools, compatibilityDate, future, css\n- Runtime Modules: @nuxt/ui@3.1.1\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\n3.2.0\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/pensive-spence-mtw49s\n\n### Description\n\nThe `title` attribute works. But Typescript is not happy.\n\n\u003Cimg width=\"1300\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/37005c53-d229-476c-b287-1578fc517c64\" />\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3285,3286,3287],{"name":3188,"color":3189},{"name":3191,"color":3192},{"name":3194,"color":3195},4407,"SelectInput search-input props has typescript errors with native input attributes","2025-07-12T12:31:08Z","https://github.com/nuxt/ui/issues/4407",0.6876441,{"description":3294,"labels":3295,"number":3299,"owner":3197,"repository":3197,"state":3236,"title":3300,"updated_at":3301,"url":3302,"score":3303},"### Environment\n\n- Operating System: `Darwin`\n- Node Version: `v23.6.0`\n- Nuxt Version: `3.17.5`\n- CLI Version: `3.25.1`\n- Nitro Version: `2.11.12`\n- Package Manager: `pnpm@10.12.1`\n- Builder: `-`\n- User Config: `compatibilityDate`, `components`, `css`, `devtools`, `devServer`, `experimental`, `hooks`, `ignore`, `imports`, `modules`, `runtimeConfig`, `$development`, `$production`, `$env`, `ssr`, `vite`, `eslint`, `googleFonts`, `icon`, `primevue`\n- Runtime Modules: `@formkit/auto-animate/nuxt@0.8.2`, `@nuxt/eslint@1.4.1`, `@nuxt/icon@1.13.0`, `@nuxt/image@1.10.0`, `@nuxtjs/color-mode@3.5.2`, `@nuxtjs/google-fonts@3.2.0`, `@pinia/nuxt@0.11.1`, `@primevue/nuxt-module@4.3.5`, `@vueuse/nuxt@13.3.0`, `pinia-plugin-persistedstate/nuxt@4.3.0`\n- Build Modules: `-`\n\n\n### Reproduction\n\nhttps://codesandbox.io/p/devbox/confident-water-h3prwy\n\n### Describe the bug\n\nMy `nuxt.config.ts` has the following:\n\n```ts\n{\n runtimeConfig: {\n public: {\n userId: \"default\",\n userPIN: \"default\",\n },\n },\n}\n```\n\nLooking at `.nuxt/types/schema.d.ts`, it is correctly typed:\n\n```ts\n interface PublicRuntimeConfig {\n userId: string,\n\n userPIN: string,\n }\n```\n\n1. Run the reproduction. Both `userId` and `userPIN` are indeed strings.\n2. Uncomment the lines in `.env`. `userId` has now become a number.\n\n### Additional context\n\nAttempted workarounds: \n- Surrounding the value in `.env` with single or double quotes (e.g. FOO=\"1234\") makes no difference, the value in `runtimeConfig` still ends up as a number.\n- Using `FOO=\"'1234'\"` does force the value to be a string, but includes the single quotes, so that is not desirable either.\n- Ultimately I had to write a plugin that ran first and coerced the relevant values in `runtimeConfig.public` to strings.\n\nI'm guessing that `JSON.stringify` is being used to parse the values received from `.env`, which causes anything number-like to end up as a number.\n\nThis bug seriously limits the utility of typing `runtimeConfig`.\n\n### Logs\n\n```shell-script\n\n```",[3296],{"name":3297,"color":3298},"pending triage","E99695",32375,"runtimeConfig parser converts number-like .env values to a number, even when typed as a string","2025-06-13T09:47:06Z","https://github.com/nuxt/nuxt/issues/32375",0.68826646,{"description":3305,"labels":3306,"number":3323,"owner":3197,"repository":3197,"state":3236,"title":3324,"updated_at":3325,"url":3326,"score":3327},"### Environment\r\n\r\n- Operating System: Linux\r\n- Node Version: v16.20.0\r\n- Nuxt Version: 3.7.0\r\n- CLI Version: 3.7.3\r\n- Nitro Version: 2.6.2\r\n- Package Manager: npm@9.4.2\r\n- Builder: -\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-udceba?file=app.vue\r\n\r\n### Describe the bug\r\n\r\nIf we change/add another field (`bar`) in the `transform` callback and then `pick` it - Nuxt will show us TS error (`nuxi typecheck`) but works correctly in runtime:\r\n```sh\r\nType '\"bar\"' is not assignable to type '\"id\" | \"foo\"'.\r\n``` \r\n\r\nExpected:\r\n- correct types when use `pick` and `transform` together\r\n- do not allow to use `pick` and `transform` together\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_",[3307,3310,3313,3316,3319,3320],{"name":3308,"color":3309},"documentation","5319e7",{"name":3311,"color":3312},"good first issue","fbca04",{"name":3314,"color":3315},"types","2875C3",{"name":3317,"color":3318},"3.x","29bc7f",{"name":3188,"color":3189},{"name":3321,"color":3322},"🔨 p3-minor","FBCA04",22981,"Nuxt generates incorrect types when use `pick` with `transform`","2024-03-02T16:13:41Z","https://github.com/nuxt/nuxt/issues/22981",0.69556195,["Reactive",3329],{},["Set"],["ShallowReactive",3332],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fVR5Ly0r_JBvzPDKPvW5lcO8vNLXpOkANGWZ7ZuNcyWs":-1},"/nuxt/ui/5005"]