\r\n\u003C/div>\r\n\u003C/template>\r\n\r\n\u003Cscript setup>\r\ndefineProps({ icon: String })\r\n\u003C/script>\r\n```",[],174,"icon","closed","Can the Base component be changed to \"NuxtIcon\" instead of \"Icon\" with the \"name\" attribute?","2024-06-26T16:45:07Z","https://github.com/nuxt/icon/issues/174",0.6617143,{"description":3175,"labels":3176,"number":3177,"owner":3157,"repository":3168,"state":3169,"title":3178,"updated_at":3179,"url":3180,"score":3181},"Although it looks redundant, Iconify uses `\u003CIcon icon=\"...\" />` as the Vue component. Since this module uses Iconify, why not keeping the same structure so we can just copy the component from their lib? An alias prop would be welcomed if I'm sounding too radical 😋 That way we can use both `name` and `icon`.",[],51,"[question] Why not using `icon` as a prop instead of `name`?","2023-02-16T15:53:34Z","https://github.com/nuxt/icon/issues/51",0.6731204,{"description":3183,"labels":3184,"number":3197,"owner":3157,"repository":3157,"state":3169,"title":3198,"updated_at":3199,"url":3200,"score":3201},"### Environment\r\n\r\n- Operating System: Darwin\r\n- Node Version: v18.14.0\r\n- Nuxt Version: 3.6.1\r\n- Nitro Version: 2.5.2\r\n- Package Manager: yarn@1.22.19\r\n- Builder: vite\r\n- User Config: -\r\n- Runtime Modules: -\r\n- Build Modules: -\r\n\r\n**VsCode 1.79.2**\r\n- vscode.typescript-language-features: disabled\r\n- Vue.volar: 1.8.3, enabled\r\n- Vue.vscode-typescript-vue-plugin: 1.8.3, enabled\r\n\r\n### Reproduction\r\n\r\nhttps://github.com/niklas-may/nuxt-module-issue-reproduction\r\n\r\n### Describe the bug\r\n\r\n**Preface**\r\n_Thank you for your amazing work on Nuxt! I am not sure where this issue is best raised, Nuxt, VsCode or Vue. But due to the special typescript tooling with auto imports, I thought it's best to start here, and would be happy to hear if anybody observed a similar behaviour or has a solution._ \r\n\r\n**Description**\r\nWhen I open `~/.nuxt/components.d.ts` in VsCode and hover over an imported component, VsCode IntelliSense popover displays the correct types for this component.\r\nBut when I use the component in any other components template block, for example `~/app.vue`, the typing is missing the prop types.\r\n\r\n### Component and Type Definitions\r\n\r\n`~/../src/runtime/MyButton.vue`\r\n\r\n```vue\r\n\u003Ctemplate>\r\n \u003Cdiv style=\"border: 1px solid pink\">\r\n \u003Cslot />\r\n \u003C/div>\r\n\u003C/template>\r\n\u003Cscript setup lang=\"ts\">\r\nwithDefaults(\r\n defineProps\u003C{\r\n variant: \"fill\" | \"ghost\";\r\n }>(),\r\n { variant: \"fill\" }\r\n);\r\n\u003C/script>\r\n```\r\n\r\n`~/.nuxt/components.d.ts`\r\n\r\n```TypeScript\r\ndeclare module 'vue' {\r\n export interface GlobalComponents {\r\n //...\r\n 'MyButton': typeof import(\"../../src/runtime/components/MyButton.vue\")['default']\r\n //...\r\n }\r\n}\r\n\r\nexport const MyButton: typeof import(\"../../src/runtime/components/MyButton.vue\")['default']\r\n\r\nexport const componentNames: string[]\r\n```\r\n\r\n\r\n### Correct Intellisense\r\n\r\nVsCode popopver hovering `'MyButton'` in `~/.nuxt/components.d.ts`\r\n\r\n```TypeScript\r\n(property) GlobalComponents['MyButton']: __VLS_WithTemplateSlots\u003CDefineComponent\u003C{\r\n variant: {\r\n type: PropType\u003C\"fill\" | \"ghost\">;\r\n required: true;\r\n default: string;\r\n };\r\n}, {}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, ... 5 more ..., {}>, {\r\n ...;\r\n}>\r\n````\r\n\r\n### Wrong Intellisense\r\n\r\nVsCode popopver hovering `\u003CMyButton />` in the template block of `~/app.vue` (or any other template)\r\n\r\n```TypeScript\r\n(property) 'MyButton': DefineComponent\u003C{}, {}, any>\r\n```\r\n\r\n### Additional context\r\n\r\nThe above example is the current state of the reproduction repo. But a different, but similar behavior happened in other reports (for example a yarn workspace repo). Strange enough, sometimes, it works fine...\r\n\r\n### Logs\r\n\r\n_No response_",[3185,3188,3191,3194],{"name":3186,"color":3187},"types","2875C3",{"name":3189,"color":3190},"3.x","29bc7f",{"name":3192,"color":3193},"pending triage","E99695",{"name":3195,"color":3196},"upstream","E8A36D",21933,"Component appears to be untyped in template block","2023-12-12T14:36:22Z","https://github.com/nuxt/nuxt/issues/21933",0.6842405,{"description":3203,"labels":3204,"number":3205,"owner":3157,"repository":3168,"state":3169,"title":3206,"updated_at":3207,"url":3208,"score":3209},"Nuxt-icon: 0.4.2\r\nNuxt: 3.6.5\r\n\r\nnode_modules/nuxt-icon/dist/runtime/Icon.vue:29:33 - error TS7053: Element implicitly has an 'any' type because expression of type 'string & {}' can't be used to index type '{}'.\r\n\r\n29 const iconName = computed(() => (appConfig.nuxtIcon?.aliases || {})[props.name] || props.name)\r\n",[],92,"Typescript error","2023-08-07T12:39:25Z","https://github.com/nuxt/icon/issues/92",0.6864772,{"description":3211,"labels":3212,"number":3222,"owner":3157,"repository":3157,"state":3169,"title":3223,"updated_at":3224,"url":3225,"score":3226},"### Describe the feature\n\nHi, I'm not sure if this is a feature request or just a question, but I didn't find any related issues / docs.\r\n\r\n**Context:** \r\n\r\nI have an ESLint configuration and it contains rules [`no-undef`](https://eslint.org/docs/latest/rules/no-undef) and [`vue/no-undef-components`](https://eslint.vuejs.org/rules/no-undef-components.html) that report undeclared functions/variables/components.\r\n\r\n\r\n\r\nNuxt automatically imports many things and I like it, I don't want to import them explicitly.\r\n[This is slightly related issue](https://github.com/nuxt/nuxt.js/issues/13413), but I don't need to import them explicitly, I need an option to retrieve a **names** of all auto-imported components/functions to declare them as global in `.eslintrc` file.\r\n\r\n**My current workaround** is define them manually and declare as global like that:\r\n\r\n\r\n\r\nAlthough this is a working solution, there are some limitations:\r\n- It needs to be filled manually\r\n- It doesn't update automatically if I register a new module that adds a global component (such as `@nuxt/image`) or new composables (such as `@vueuse/nuxt`)\r\n- It doesn't update if I set custom dirs to import in `nuxt.config.ts` via `imports.dirs` and create a new file inside it.\r\n- It doesn't update if new release of Vue/Nuxt includes a new features\r\n\r\nSo, a lot of manual work every time something was changed.\r\nThis can be done using custom module, but I believe it should be done by Nuxt itself.\r\n\r\n**Feature request:**\r\n\r\nExpose an auto-imported functions / components names to allow import them and mark as global in `.eslintrc`\r\n\r\n\r\n\r\n**Additional info**\r\n\r\nI know it's recommended to disable `no-undef` for TypeScript at all, but currently, as far I know, there is no robust way to separate `\u003Cscript lang=\"ts\">` and `\u003Cscript>` in ESLint confgurations for `.vue` files. \r\n\r\nAlso Nuxt isn't only TypeScript framework. and global components still needs to be configured\n\n### Additional information\n\n- [X] Would you be willing to help implement this feature?\n- [X] Could this feature be implemented as a module?\n\n### Final checks\n\n- [X] Read the [contribution guide](https://v3.nuxtjs.org/community/contribution).\n- [X] Check existing [discussions](https://github.com/nuxt/framework/discussions) and [issues](https://github.com/nuxt/framework/issues).",[3213,3215,3218,3219],{"name":3146,"color":3214},"8DEF37",{"name":3216,"color":3217},"good first issue","fbca04",{"name":3189,"color":3190},{"name":3220,"color":3221},"🍰 p2-nice-to-have","0E8A16",15015,"Retrieve auto-imported component / function names","2024-03-13T22:57:05Z","https://github.com/nuxt/nuxt/issues/15015",0.69667304,{"description":3228,"labels":3229,"number":3230,"owner":3157,"repository":3168,"state":3169,"title":3231,"updated_at":3232,"url":3233,"score":3234},"##error message\r\n\r\n ERROR(vue-tsc) Property 'nuxtIcon' does not exist on type 'AppConfig'.\r\nconst props = defineProps({\r\n name: {\r\n type: String as PropType\u003Ckeyof AppConfig['nuxtIcon']['aliases'] | (string & {})>,\r\n ^^^^^^^^^^\r\n required: true\r\n },\r\n\r\n##code\r\n\r\n```ts\r\n\r\nexport default defineNuxtConfig({\r\n srcDir: 'src',\r\n ssr: false,\r\n typescript: {\r\n typeCheck: true\r\n },\r\n modules: ['@nuxtjs/tailwindcss', 'nuxt-icon']\r\n\r\n})\r\n```",[],46,"Error something on nuxt 3.1.0 - ERROR(vue-tsc) Property 'nuxtIcon' does not exist on type 'AppConfig'.","2023-01-27T14:11:31Z","https://github.com/nuxt/icon/issues/46",0.69821507,{"description":3236,"labels":3237,"number":3242,"owner":3157,"repository":3157,"state":3169,"title":3243,"updated_at":3244,"url":3245,"score":3246},"### What problem does this feature solve?\r\n\r\nDeveloping with both Nuxt & TypeScript, I lately have been likely frustrated using the Nuxt API around pages using TypeScript decorators, so here is what I want to suggest :\r\n\r\nProvide Nuxt TypeDefs to be able to use (and get AutoCompletion on) the Nuxt Pages API (https://nuxtjs.org/api/ => \"Pages\") around TypeScript decorators for class-style Vue component (`vue-class-component` https://github.com/vuejs/vue-class-component ).\r\n\r\nExample (Autocompletion on `head` API property through MetaInfo typedef of `vue-meta`): \r\n\r\n\r\n\r\n\r\n`nuxt-class-component` would be not needed anymore, unless you want to put your Nuxt logic in your `export default class` without Editor Autocompletion and having trouble with TypeScript implict any !\r\n\r\n### What does the proposed changes look like?\r\n\r\nFor now I ended up with these definitions, according the official Nuxt API Documentation:\r\n\r\n\r\n\r\nAs you may have figured out, `Context` is declared as `any` type, it's just a question of time to define it properly according to Nuxt API Context (https://nuxtjs.org/api/context ).\r\n\r\nI would need to know if what I did is relevant, I heard about `types` which were maybe present on 1.x but disappeared since 2.x release (#795), so I wasn't sure if my work might have already been done somewhere, maybe it was about another type of types ?\r\n\r\nThen I'll be glad to finish my work and propose a PR.\r\n\r\n\r\n\r\n\u003C!--cmty-->\r\n\u003Cdiv align=\"right\">\u003Csub>\u003Cem>This feature request is available on \u003Ca href=\"https://cmty.app/nuxt\">Nuxt\u003C/a> community (\u003Ca href=\"https://cmty.app/nuxt/nuxt.js/issues/c7907\">#c7907\u003C/a>)\u003C/em>\u003C/sub>\u003C/div>",[3238,3239],{"name":3146,"color":3214},{"name":3240,"color":3241},"2.x","d4c5f9",4050,"TypeScript TypeDefs Suggestion for Nuxt 2.x","2023-01-22T15:50:48Z","https://github.com/nuxt/nuxt/issues/4050",0.69864166,{"labels":3248,"number":3250,"owner":3157,"repository":3157,"state":3169,"title":3251,"updated_at":3252,"url":3253,"score":3254},[3249],{"name":3240,"color":3241},4134,"TS2314: Generic type 'ComponentOptions\u003CV>' requires 1 type argument(s).","2023-01-18T20:03:58Z","https://github.com/nuxt/nuxt/issues/4134",0.69874585,{"description":3256,"labels":3257,"number":3264,"owner":3157,"repository":3158,"state":3169,"title":3265,"updated_at":3266,"url":3267,"score":3268},"### Description\n\nUse case: Dynamically loaded icons are forbidden, be it by security requirements or by a requirement to always work offline. Icons are instead defined as Vue components, be it with custom icon components, or by using [`unplugin-icons`](https://github.com/unplugin/unplugin-icons).\n\nIn case of a [`UButton`](https://ui.nuxt.com/components/button), I think you can just use `leading` and `trailing` slots. But I do not think there is a simple way of just replacing an icon in case of [`USlideover`](https://ui.nuxt.com/components/slideover)'s `closeIcon` -- there is only a slot named `close`.\n\n### Additional context\n\n_No response_",[3258,3259,3262],{"name":3146,"color":3147},{"name":3260,"color":3261},"triage","ffffff",{"name":3263,"color":3150},"v4",4728,"Allow passing components as icons instead of strings","2025-09-01T10:04:35Z","https://github.com/nuxt/ui/issues/4728",0.701681,["Reactive",3270],{},["Set"],["ShallowReactive",3273],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f_1idE-Qqv7oou_wO4ob85J-j6oxVJBm-Cbmm4IF1j3A":-1},"/nuxt/icon/412"]