\n \u003C/UFormField>\n \u003CUFormField label=\"USelect\">\n \u003CUSelect v-model=\"value\" placeholder=\"Placeholder\" :items />\n \u003C/UFormField>\n \u003C/div>\n\u003C/template>\n\n```\n\n### Description\n\nIf the model-value is an empty string, the USelectMenu placeholder doesn't show. This behavior is different than the USelect component, where the placeholder is shown without having to use `undefined` as the v-model's value. \n\n### Additional context\n\nI know I could use `undefined` for the value here, however in my real code the v-model is bound to a non-optional value, so if I were to initialize it as `undefined`, TypeScript would freak out. Also, because these components are really similar, these behaviors shouldn't differ in my opinion. \n\n\u003Cimg width=\"200\" height=\"143\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/49a5d11d-2212-41d7-81b3-202692a20a8a\" />\n\n### Logs\n\n```shell-script\n\n```",[3246,3247,3248],{"name":3173,"color":3174},{"name":3176,"color":3177},{"name":3179,"color":3180},4528,"[SelectMenu]: Placeholder value not shown if v-model is an empty string","2025-07-16T10:43:41Z","https://github.com/nuxt/ui/issues/4528",0.6636102,{"description":3255,"labels":3256,"number":3263,"owner":3182,"repository":3183,"state":3238,"title":3264,"updated_at":3265,"url":3266,"score":3267},"### Environment\r\n\r\n- Operating System: Windows_NT\r\n- Node Version: v20.12.2\r\n- Nuxt Version: 3.10.3\r\n- CLI Version: 3.10.1\r\n- Nitro Version: 2.9.1\r\n- Package Manager: pnpm@8.3.1\r\n- Builder: -\r\n- User Config: app, colorMode, ui, css, modules, runtimeConfig, authJs, pinia, nitro, alias, devtools, imports, typescript\r\n- Runtime Modules: @pinia/nuxt@0.4.11, @pinia-plugin-persistedstate/nuxt@1.2.0, @vueuse/nuxt@9.13.0, @hebilicious/authjs-nuxt@0.3.0-beta.2, @nuxtjs/eslint-module@4.1.0, nuxt-monaco-editor@1.2.7, nuxt-lodash@2.5.3, @nuxt/ui@2.14.2\r\n- Build Modules: -\r\n\r\n### Version\r\n\r\nv2.14.2\r\n\r\n### Reproduction\r\n\r\nhttps://stackblitz.com/edit/nuxt-ui-eqhn2j?file=app.vue\r\n\r\n### Description\r\n\r\nI'm getting multiple new type errors that I wasn't getting before with types that used to be valid. I think this is being caused by an update to `vue-tsc`, however I'm not sure.\r\n\r\nIn the reproduction link you can see the two examples that don't compile. Simply run `npm run typecheck` in the console to get the errors\r\nHere are the minimal examples\r\n```html\r\n\u003Cscript setup lang=\"ts\">\r\nconst value = ref\u003Cstring | null | undefined>(undefined);\r\n\u003C/script>\r\n\r\n\u003Ctemplate>\r\n \u003Cdiv>\r\n \u003CUInput v-model.trim=\"value\" />\r\n \u003C/div>\r\n\u003C/template>\r\n```\r\n```shell-script\r\nTS2322: Type 'string | null | undefined' is not assignable to type 'string | number | undefined'.\r\n```\r\n```html\r\n\u003Cscript setup lang=\"ts\">\r\nconst value = ref\u003Cboolean|undefined>();\r\nconst options = [\r\n {\r\n label: 'Yes',\r\n value: true\r\n },\r\n {\r\n label: 'No',\r\n value: false\r\n },\r\n {\r\n label: 'None selected',\r\n value: undefined\r\n }\r\n];\r\n\u003C/script>\r\n\u003Ctemplate>\r\n \u003Cdiv>\r\n \u003CUSelectMenu\r\n :options=\"options\"\r\n v-model=\"value\"\r\n value-attribute=\"value\" option-attribute=\"label\"\r\n />\r\n \u003C/div>\r\n\u003C/template>\r\n```\r\n```shell-script\r\nTS2322: Type 'boolean | undefined' is not assignable to type 'string | number | Record\u003Cstring, any> | unknown[] | undefined'.\r\n```\r\n\r\n### Additional context\r\n\r\n\r\n### Logs\r\n\r\n```shell-script\r\napp.vue:14:15 - error TS2322: Type 'string | null | undefined' is not assignable to type 'string | number | undefined'.\r\n\r\n14 \u003CUInput v-model.trim=\"inputValue\" />\r\n ~~~~~~~~~~\r\n\r\n node_modules/@nuxt/ui/dist/runtime/components/forms/Input.vue.d.ts:244:5\r\n 244 modelValue: string | number;\r\n ~~~~~~~~~~\r\n The expected type comes from property 'modelValue' which is declared here on type 'Partial\u003C{ size: InputSize; ui: any; id: string; icon: string; color: any; type: string; class: any; name: string; modelValue: string | number; leading: boolean; variant: InputVariant; ... 12 more ...; modelModifiers: { ...; }; }> & Omit\u003C...> & Record\u003C...>'\r\n\r\n\r\nFound 1 error in app.vue:14\r\n```\r\n",[3257,3258,3261],{"name":3173,"color":3174},{"name":3259,"color":3260},"closed-by-bot","ededed",{"name":3262,"color":3260},"stale",1710,"Unable to use boolean values with USelectMenu or null with UInput","2025-06-19T02:12:37Z","https://github.com/nuxt/ui/issues/1710",0.6688254,{"description":3269,"labels":3270,"number":3273,"owner":3182,"repository":3183,"state":3238,"title":3274,"updated_at":3275,"url":3276,"score":3277},"### Environment\n\n------------------------------\n- Operating System: Darwin\n- Node Version: v20.19.2\n- Nuxt Version: -\n- CLI Version: 3.28.0\n- Nitro Version: -\n- Package Manager: npm@10.8.2\n- Builder: -\n- User Config: -\n- Runtime Modules: -\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://stackblitz.com/edit/github-mj4wqh54?file=app%2Fpages%2Findex.vue\n\n### Description\n\nWhen using `InputMenu`, `Select` or `SelectMenu`, if the `modelValue` is `null` (or another falsy value) and an option with this value exists, its `label` is not displayed.\n\n**Expected behavior**:\nIf an option with a `null` (or falsy) value is present in the `options`, its `label` should be displayed when selected.\n\n**Example**:\n\n```vue\n\u003CUSelect\n v-model=\"value\"\n :items=\"[\n { name: '- Tout -', slug: null },\n { name: 'Sport', slug: 'sport' },\n { name: 'Culture', slug: 'culture' },\n ]\"\n value-key=\"slug\"\n label-key=\"name\"\n />\n```\n\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3271,3272],{"name":3173,"color":3174},{"name":3176,"color":3177},4869,"InputMenu/Select/SelectMenu: show falsy label when model value is falsy","2025-09-08T12:42:34Z","https://github.com/nuxt/ui/issues/4869",0.6795263,{"description":3279,"labels":3280,"number":3284,"owner":3182,"repository":3183,"state":3238,"title":3285,"updated_at":3286,"url":3287,"score":3288},"### Environment\n\n- Operating System: Windows_NT\n- Node Version: v22.17.1\n- Nuxt Version: 4.0.3\n- CLI Version: 3.27.0\n- Nitro Version: 2.12.4\n- Package Manager: pnpm@10.15.0\n- Builder: -\n- User Config: compatibilityDate, devtools, test, modules, dayjs, tiptap, css, app, components, icon, i18n, security, runtimeConfig \n- Runtime Modules: @nuxt/eslint@1.7.1, @nuxt/scripts@0.11.10, @nuxt/test-utils@3.19.2, @nuxt/ui@3.3.2, @nuxtjs/i18n@10.0.3, @nuxtjs/tailwindcss@7.0.0-beta.0, @vueuse/nuxt@13.6.0, nuxt-security@2.3.0, dayjs-nuxt@2.1.11, nuxt-tiptap-editor@2.3.1\n- Build Modules: -\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.3.2\n\n### Reproduction\n\nUse this on a page and you'll be able to see how the tabIndex value becomes a string when selecting the first tab with value 0\n\n```\n\u003Ctemplate>\n \u003Cdiv>\n {{ tabIndex }} : {{ typeof tabIndex }} \n \u003CUTabs \n v-model=\"tabIndex\"\n :items=\"tabItems\"\n />\n \u003C/div>\n\u003C/template>\n\n\u003Cscript setup>\nconst tabIndex = ref(0)\nconst tabItems = [\n {\n accessorKey: 'firstTab',\n label: 'First Tab',\n value: 0\n },\n {\n accessorKey: 'secondTab',\n label: 'Second Tab',\n value: 1\n },\n {\n accessorKey: 'thirdTab',\n label: 'Third Tab',\n value: 2\n }\n]\n\u003C/script>\n```\n\n### Description\n\nIn Nuxt UI's UTabs component, when an item's value is set to 0 (a number), the internal TabsTrigger evaluates `:value=\"item.value || String(index)\"`. Since 0 is falsy in JavaScript, it falls back to String(index) (e.g., '0'), causing the v-model to update as a string instead of a number, leading to unexpected type coercion after tab selection.\n\nPotential solution:\n\n`:value=\"item.value ?? String(index)\" `\n\nThis uses the nullish coalescing operator (??), which only falls back if item.value is null or undefined (not falsy values like 0), preserving the numeric type for 0 while maintaining the intended fallback behavior for missing values.\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[3281,3282,3283],{"name":3173,"color":3174},{"name":3176,"color":3177},{"name":3179,"color":3180},4804,"UTabs: Numeric value 0 coerced to string due to falsy check in TabsTrigger","2025-09-19T09:28:52Z","https://github.com/nuxt/ui/issues/4804",0.6896103,["Reactive",3290],{},["Set"],["ShallowReactive",3293],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fwwxWzOYUPQ4vw6sP753cQGkAKTcFl7lO1Kuqo-jNOnE":-1},"/nuxt/ui/3392"]