is used but it is missing a parent \u003CTransitionRoot />.\");return e}function ge(){let e=(0,__vite_ssr_import_0__.inject)(N,null);if(e===null)throw new Error(\"A \u003CTransitionChild /> is used but it is missing a parent \u003CTransitionRoot />.\");return e}let N=Symbol(\"NestingContext\");function L(e){return\"children\"in e?L(e.children):e.value.filter(({state:t})=>t===\"visible\").length>0}function Q(e){let t=(0,__vite_ssr_import_0__.ref)([]),a=(0,__vite_ssr_import_0__.ref)(!1);(0,__vite_ssr_import_0__.onMounted)(()=>a.value=!0),(0,__vite_ssr_import_0__.onUnmounted)(()=>a.value=!1);function s(n,r=__vite_ssr_import_6__.RenderStrategy.Hidden){let l=t.value.findIndex(({id:f})=>f===n);l!==-1&&((0,__vite_ssr_import_5__.match)(r,{[__vite_ssr_import_6__.RenderStrategy.Unmount](){t.value.splice(l,1)},[__vite_ssr_import_6__.RenderStrategy.Hidden](){t.value[l].state=\"hidden\"}}),!L(t)&&a.value&&(e==null||e()))}function h(n){let r=t.value.find(({id:l})=>l===n);return r?r.state!==\"visible\"&&(r.state=\"visible\"):t.value.push({id:n,state:\"visible\"}),()=>s(n,__vite_ssr_import_6__.RenderStrategy.Unmount)}return{children:t,register:h,unregister:s}}let W=__vite_ssr_import_6__.Features.RenderStrategy,he=(0,__vite_ssr_import_0__.defineComponent)({props:{as:{type:[Object,String],default:\"div\"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:\"\"},enterFrom:{type:[String],default:\"\"},enterTo:{type:[String],default:\"\"},entered:{type:[String],default:\"\"},leave:{type:[String],default:\"\"},leaveFrom:{type:[String],default:\"\"},leaveTo:{type:[String],default:\"\"}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:a,slots:s,expose:h}){let n=(0,__vite_ssr_import_0__.ref)(0);function r(){n.value|=__vite_ssr_import_2__.State.Opening,t(\"beforeEnter\")}function l(){n.value&=~__vite_ssr_import_2__.State.Opening,t(\"afterEnter\")}function f(){n.value|=__vite_ssr_import_2__.State.Closing,t(\"beforeLeave\")}function S(){n.value&=~__vite_ssr_import_2__.State.Closing,t(\"afterLeave\")}if(!me()&&(0,__vite_ssr_import_2__.hasOpenClosed)())return()=>(0,__vite_ssr_import_0__.h)(Se,{...e,onBeforeEnter:r,onAfterEnter:l,onBeforeLeave:f,onAfterLeave:S},s);let d=(0,__vite_ssr_import_0__.ref)(null),y=(0,__vite_ssr_import_0__.computed)(()=>e.unmount?__vite_ssr_import_6__.RenderStrategy.Unmount:__vite_ssr_import_6__.RenderStrategy.Hidden);h({el:d,$el:d});let{show:v,appear:A}=Te(),{register:D,unregister:H}=ge(),i=(0,__vite_ssr_import_0__.ref)(v.value?\"visible\":\"hidden\"),I={value:!0},c=(0,__vite_ssr_import_1__.useId)(),b={value:!1},P=Q(()=>{!b.value&&i.value!==\"hidden\"&&(i.value=\"hidden\",H(c),S())});(0,__vite_ssr_import_0__.onMounted)(()=>{let o=D(c);(0,__vite_ssr_import_0__.onUnmounted)(o)}),(0,__vite_ssr_import_0__.watchEffect)(()=>{if(y.value===__vite_ssr_import_6__.RenderStrategy.Hidden&&c){if(v.value&&i.value!==\"visible\"){i.value=\"visible\";return}(0,;__vite_ssr_import_5__.match)(i.value,{[\"hidden\"]:()=>H(c),[\"visible\"]:()=>D(c)})}});let j=g(e.enter),M=g(e.enterFrom),X=g(e.enterTo),_=g(e.entered),Y=g(e.leave),Z=g(e.leaveFrom),ee=g(e.leaveTo);(0,__vite_ssr_import_0__.onMounted)(()=>{(0,__vite_ssr_import_0__.watchEffect)(()=>{if(i.value===\"visible\"){let o=(0,__vite_ssr_import_3__.dom)(d);if(o instanceof Comment&&o.data===\"\")throw new Error(\"Did you forget to passthrough the ref to the actual DOM node?\")}})});function te(o){let E=I.value&&!A.value,p=(0,__vite_ssr_import_3__.dom)(d);!p||!(p instanceof HTMLElement)||E||(b.value=!0,v.value&&r(),v.value||f(),o(v.value?(0,__vite_ssr_import_7__.transition)(p,j,M,X,_,V=>{b.value=!1,V===__vite_ssr_import_7__.Reason.Finished&&l()}):(0,__vite_ssr_import_7__.transition)(p,Y,Z,ee,_,V=>{b.value=!1,V===__vite_ssr_import_7__.Reason.Finished&&(L(P)||(i.value=\"hidden\",H(c),S()))})))}return (0,__vite_ssr_import_0__.onMounted)(()=>{(0,__vite_ssr_import_0__.watch)([v],(o,E,p)=>{te(p),I.value=!1},{immediate:!0})}),(0,__vite_ssr_import_0__.provide)(N,P),(0,__vite_ssr_import_2__.useOpenClosedProvider)((0,__vite_ssr_import_0__.computed)(()=>(0,__vite_ssr_import_5__.match)(i.value,{[\"visible\"]:__vite_ssr_import_2__.State.Open,[\"hidden\"]:__vite_ssr_import_2__.State.Closed})|n.value)),()=>{let{appear:o,show:E,enter:p,enterFrom:V,enterTo:Ce,entered:ye,leave:be,leaveFrom:Ee,leaveTo:Ve,...U}=e,ne={ref:d},re={...U,...A.value&&v.value&&__vite_ssr_import_4__.env.isServer?{class:(0,__vite_ssr_import_0__.normalizeClass)([a.class,U.class,...j,...M])}:{}};return (0,__vite_ssr_import_6__.render)({theirProps:re,ourProps:ne,slot:{},slots:s,attrs:a,features:W,visible:i.value===\"visible\",name:\"TransitionChild\"})}}}),ce=he,Se=(0,__vite_ssr_import_0__.defineComponent)({inheritAttrs:!1,props:{as:{type:[Object,String],default:\"div\"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:\"\"},enterFrom:{type:[String],default:\"\"},enterTo:{type:[String],default:\"\"},entered:{type:[String],default:\"\"},leave:{type:[String],default:\"\"},leaveFrom:{type:[String],default:\"\"},leaveTo:{type:[String],default:\"\"}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:a,slots:s}){let h=(0,__vite_ssr_import_2__.useOpenClosed)(),n=(0,__vite_ssr_import_0__.computed)(()=>e.show===null&&h!==null?(h.value&__vite_ssr_import_2__.State.Open)===__vite_ssr_import_2__.State.Open:e.show);(0,__vite_ssr_import_0__.watchEffect)(()=>{if(![!0,!1].includes(n.value))throw new Error('A \u003CTransition /> is used but it is missing a :show=\"true | false\" prop.')});let r=(0,__vite_ssr_import_0__.ref)(n.value?\"visible\":\"hidden\"),l=Q(()=>{r.value=\"hidden\"}),f=(0,__vite_ssr_import_0__.ref)(!0),S={show:n,appear:(0,__vite_ssr_import_0__.computed)(()=>e.appear||!f.value)};return (0,__vite_ssr_import_0__.onMounted)(()=>{(0,__vite_ssr_import_0__.watchEffect)(()=>{f.value=!1,n.value?r.value=\"visible\":L(l)||(r.value=\"hidden\")})}),(0,__vite_ssr_import_0__.provide)(N,l),(0,__vite_ssr_import_0__.provide)(R,S),()=>{let d=(0,__vite_ssr_import_6__.omit)(e,[\"show\",\"appear\",\"unmount\",\"onBeforeEnter\",\"onBeforeLeave\",\"onAfterEnter\",\"onAfterLeave\"]),y={unmount:e.unmount};return (0,__vite_ssr_import_6__.render)({ourProps:{...y,as:\"template\"},theirProps:{},slot:{},slots:{...s,default:()=>[(0,__vite_ssr_import_0__.h)(ce,{onBeforeEnter:()=>t(\"beforeEnter\"),onAfterEnter:()=>t(\"afterEnter\"),onBeforeLeave:()=>t(\"beforeLeave\"),onAfterLeave:()=>t(\"afterLeave\"),...a,...y,...d},s.default)]},attrs:{},features:W,visible:r.value===\"visible\",name:\"Transition\"})}}});\n\n\n SyntaxError: Unexpected token ';'\n at new Script (node:vm:116:7)\n at createScript (node:vm:268:10)\n at Object.runInThisContext (node:vm:316:10)\n at ViteNodeRunner.runModule (/D:/Dev/maideo/maideo-maid/node_modules/vite-node/dist/client.mjs:398:19)\n at ViteNodeRunner.directRequest (/D:/Dev/maideo/maideo-maid/node_modules/vite-node/dist/client.mjs:381:16) \n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async ViteNodeRunner.cachedRequest (/D:/Dev/maideo/maideo-maid/node_modules/vite-node/dist/client.mjs:206:14) \n at async ViteNodeRunner.dependencyRequest (/D:/Dev/maideo/maideo-maid/node_modules/vite-node/dist/client.mjs:259:12)\n at async node_modules\\@headlessui\\vue\\dist\\headlessui.esm.js:23:32\n at async ViteNodeRunner.runModule (/D:/Dev/maideo/maideo-maid/node_modules/vite-node/dist/client.mjs:399:5) \n\n### Logs\n\n```shell-script\n\n```",[2037,2038],{"name":2005,"color":2006},{"name":2039,"color":2040},"duplicate","cfd3d7",2972,"Syntax error in the Headless UI Vue component code","2024-12-25T10:39:30Z","https://github.com/nuxt/ui/issues/2972",0.6768478,{"description":2047,"labels":2048,"number":2051,"owner":1994,"repository":1995,"state":2029,"title":2052,"updated_at":2053,"url":2054,"score":2055},"### Environment\n\n------------------------------\n- Operating System: Darwin\n- Node Version: v22.9.0\n- Nuxt Version: 3.14.1592\n- CLI Version: 3.16.0\n- Nitro Version: 2.10.4\n- Package Manager: npm@10.8.3\n- Builder: -\n- User Config: default\n- Runtime Modules: @nuxt/ui@3.0.0-alpha.9\n- Build Modules: -\n------------------------------\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.0.0-alpha.9\n\n### Reproduction\n\nCreate a brand new Nuxt project with NuxtUI 3\n\nconfig:\n```js\n// https://nuxt.com/docs/api/configuration/nuxt-config\nexport default defineNuxtConfig({\n\tcompatibilityDate: \"2024-11-01\",\n\tdevtools: { enabled: true },\n\tfuture: { compatibilityVersion: 4 },\n\tmodules: [\"@nuxt/ui\"],\n\tcss: [\"~/assets/css/main.css\"],\n\n});\n```\napp.vue:\n```vue\n\u003Ctemplate>\n\t\u003CUApp>\n\t\t\u003CNuxtPage />\n\t\u003C/UApp>\n\u003C/template>\n```\n\n\nRemoving the `UApp` for a `div` or `NuxtLayout` works\n\n### Description\n\nCrashes the app. The error seems to be related to the Button component, but even on a brand-new Nuxt project with no content (without even a page) it show the error below:\n\nWhen I use NuxtLayout (or other) instead of `UApp` and use the `UButton` component anywhere, it also cause the same issue\n\n### Logs\n\n```shell-script\n500\n[vite-node] [plugin:vite:vue] [VITE_ERROR] /@fs/Users/jeannen/Dev/apps/node_modules/@nuxt/ui/dist/runtime/components/Button.vue\n\n\u003Cscript lang=\"ts\">\nimport { tv, type VariantProps } from 'tailwind-variants'\nimport type { AppConfig } from '@nuxt/schema'\nimport _appConfig from '#build/app.config'\nimport theme from '#build/ui/button'\nimport type { LinkProps } from './Link.vue'\nimport type { UseComponentIconsProps } from '../composables/useComponentIcons'\nimport { extendDevtoolsMeta } from '../composables/extendDevtoolsMeta'\nimport type { AvatarProps } from '../types'\nimport type { PartialString } from '../types/utils'\n\nconst appConfig = _appConfig as AppConfig & { ui: { button: Partial\u003Ctypeof theme> } }\n\nconst button = tv({ extend: tv(theme), ...(appConfig.ui?.button || {}) })\n\ntype ButtonVariants = VariantProps\u003Ctypeof button>\n\nexport interface ButtonProps extends UseComponentIconsProps, Omit\u003CLinkProps, 'raw' | 'custom'> {\n label?: string\n color?: ButtonVariants['color']\n variant?: ButtonVariants['variant']\n size?: ButtonVariants['size']\n /** Render the button with equal padding on all sides. */\n square?: boolean\n /** Render the button full width. */\n block?: boolean\n /** Set loading state automatically based on the `@click` promise state */\n loadingAuto?: boolean\n onClick?: ((event: MouseEvent) => void | Promise\u003Cvoid>) | Array\u003C((event: MouseEvent) => void | Promise\u003Cvoid>)>\n class?: any\n ui?: PartialString\u003Ctypeof button.slots>\n}\n\n// Injects props to use as default in the devtools playground.\nextendDevtoolsMeta\u003CButtonProps>({ defaultProps: { label: 'Click me!' } })\n\nexport interface ButtonSlots {\n leading(props?: {}): any\n default(props?: {}): any\n trailing(props?: {}): any\n}\n\u003C/script>\n\n\u003Cscript setup lang=\"ts\">\nimport { type Ref, computed, ref, inject } from 'vue'\nimport { useForwardProps } from 'radix-vue'\nimport { useComponentIcons } from '../composables/useComponentIcons'\nimport { useButtonGroup } from '../composables/useButtonGroup'\nimport { formLoadingInjectionKey } from '../composables/useFormField'\nimport { omit } from '../utils'\nimport { pickLinkProps } from '../utils/link'\nimport UIcon from './Icon.vue'\nimport UAvatar from './Avatar.vue'\nimport ULink from './Link.vue'\n\nconst props = defineProps\u003CButtonProps>()\nconst slots = defineSlots\u003CButtonSlots>()\n\nconst linkProps = useForwardProps(pickLinkProps(props))\n\nconst { orientation, size: buttonSize } = useButtonGroup\u003CButtonProps>(props)\n\nconst loadingAutoState = ref(false)\nconst formLoading = inject\u003CRef\u003Cboolean> | undefined>(formLoadingInjectionKey, undefined)\n\nasync function onClickWrapper(event: MouseEvent) {\n loadingAutoState.value = true\n const callbacks = Array.isArray(props.onClick) ? props.onClick : [props.onClick]\n try {\n await Promise.all(callbacks.map(fn => fn?.(event)))\n } finally {\n loadingAutoState.value = false\n }\n}\n\nconst isLoading = computed(() => {\n return props.loading || (props.loadingAuto && (loadingAutoState.value || (formLoading?.value && props.type === 'submit')))\n})\n\nconst { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(\n computed(() => ({ ...props, loading: isLoading.value }))\n)\n\nconst ui = computed(() => button({\n color: props.color,\n variant: props.variant,\n size: buttonSize.value,\n loading: isLoading.value,\n block: props.block,\n square: props.square || (!slots.default && !props.label),\n leading: isLeading.value,\n trailing: isTrailing.value,\n buttonGroup: orientation.value\n}))\n\u003C/script>\n\n\u003Ctemplate>\n \u003CULink\n :type=\"type\"\n :disabled=\"disabled || isLoading\"\n :class=\"ui.base({ class: [props.class, props.ui?.base] })\"\n v-bind=\"omit(linkProps, ['type', 'disabled'])\"\n raw\n @click=\"onClickWrapper\"\n >\n \u003Cslot name=\"leading\">\n \u003CUIcon v-if=\"isLeading && leadingIconName\" :name=\"leadingIconName\" :class=\"ui.leadingIcon({ class: props.ui?.leadingIcon })\" />\n \u003CUAvatar v-else-if=\"!!avatar\" :size=\"((props.ui?.leadingAvatarSize || ui.leadingAvatarSize()) as AvatarProps['size'])\" v-bind=\"avatar\" :class=\"ui.leadingAvatar({ class: props.ui?.leadingAvatar })\" />\n \u003C/slot>\n\n \u003Cslot>\n \u003Cspan v-if=\"label\" :class=\"ui.label({ class: props.ui?.label })\" data-v-inspector=\"../../../node_modules/@nuxt/ui/dist/runtime/components/Button.vue:112:7\">\n {{ label }}\n \u003C/span>\n \u003C/slot>\n\n \u003Cslot name=\"trailing\">\n \u003CUIcon v-if=\"isTrailing && trailingIconName\" :name=\"trailingIconName\" :class=\"ui.trailingIcon({ class: props.ui?.trailingIcon })\" />\n \u003C/slot>\n \u003C/ULink>\n\u003C/template>\n\nat /@fs/Users/jeannen/Dev/apps/node_modules/@nuxt/ui/dist/runtime/components/Button.vue\n```\n\n### Additional context\n\n_No response_\n```",[2049,2050],{"name":2005,"color":2006},{"name":1988,"color":1989},2824,"`UApp` / `UButton` crashes the whole app","2024-12-05T13:49:01Z","https://github.com/nuxt/ui/issues/2824",0.69764906,{"description":2057,"labels":2058,"number":2062,"owner":1994,"repository":1995,"state":2029,"title":2063,"updated_at":2064,"url":2065,"score":2066},"### Environment\n\nyall lost cursor-pointer on paginations switching from v2-v3\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\nv3.xx\n\n### Reproduction\n\ntake your mouse and hover over stuff on https://ui3.nuxt.dev/components/pagination\n\n\n### Description\n\ntheres no cursor: pointer; on hover for paginations in v3\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[2059,2060,2061],{"name":2005,"color":2006},{"name":2039,"color":2040},{"name":1988,"color":1989},2928,"yall lost cursor-pointer on paginations switching from v2-v3","2025-04-02T09:37:31Z","https://github.com/nuxt/ui/issues/2928",0.6993283,{"description":2068,"labels":2069,"number":2070,"owner":1994,"repository":1995,"state":2029,"title":2071,"updated_at":2072,"url":2073,"score":2074},"",[],3310,"Migrate all the Nuxt UI Pro templates (starter, landing, docs, saas and dashboard)","2025-02-13T15:43:42Z","https://github.com/nuxt/ui/issues/3310",0.7012612,{"description":2076,"labels":2077,"number":2080,"owner":1994,"repository":1995,"state":2029,"title":2081,"updated_at":2082,"url":2083,"score":2084},"### Environment\n\n- \"nuxt\": \"3.14.1592\",\n-\"vue\": \"3.5.13\",\n\n### Is this bug related to Nuxt or Vue?\n\nNuxt\n\n### Version\n\n3.0.0-alpha.10\n\n### Reproduction\n\nWhen Put the `USelectMenu` inside `UModal` the USelectMenu's SearchInput does not get the focus at all\n\n### Description\n\nWhen Put the `USelectMenu` inside `UModal` the USelectMenu's SearchInput does not get the focus at all\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n\n```",[2078,2079],{"name":2005,"color":2006},{"name":1988,"color":1989},3475,"The searchInput of the USelectMenu doesn't work when put the USelectMenu inside a Modal","2025-03-07T13:06:29Z","https://github.com/nuxt/ui/issues/3475",0.7012737,{"description":2086,"labels":2087,"number":2090,"owner":1994,"repository":1995,"state":2029,"title":2091,"updated_at":2092,"url":2093,"score":2094},"### Environment\n\n- Operating System: Darwin\n- Node Version: v22.11.0\n- Nuxt Version: 3.15.2\n- CLI Version: 3.20.0\n- Nitro Version: 2.10.4\n- Package Manager: pnpm@9.15.4\n- Builder: -\n- User Config: compatibilityDate, devtools, modules\n- Runtime Modules: @nuxt/ui@2.21.0\n- Build Modules: -\n\n### Version\n\n 2.21.0\n\n### Reproduction\n\n1. Create a new nuxt project using cli\n2. install nuxt/ui using cli command `npx nuxi@latest module add ui`\n\n### Description\n\n WARN Failed to load config ./.nuxt/nuxtui-tailwind.config.mjs due to the error below. Skipping.. nuxt:tailwindcss 8:47:34 PM\n Cannot find module 'tailwindcss/lib/lib/defaultExtractor.js'\nRequire stack:\n\nPretty sure this has got to do with an update in nitro/nuxt i saw recently @danielroe any ideas?\n\n### Additional context\n\n_No response_\n\n### Logs\n\n```shell-script\n Require stack:\n - .nuxt/nuxtui-tailwind.config.mjs\n at Function._resolveFilename (node:internal/modules/cjs/loader:1249:15)\n at Function.resolve (node:internal/modules/helpers:151:19)\n at jitiResolve (node_modules/.pnpm/jiti@2.4.2/node_modules/jiti/dist/jiti.cjs:1:187220)\n at jitiRequire (node_modules/.pnpm/jiti@2.4.2/node_modules/jiti/dist/jiti.cjs:1:189288)\n at import (node_modules/.pnpm/jiti@2.4.2/node_modules/jiti/dist/jiti.cjs:1:199778)\n at .nuxt/nuxtui-tailwind.config.mjs:2:31\n at eval_evalModule (node_modules/.pnpm/jiti@2.4.2/node_modules/jiti/dist/jiti.cjs:1:196325)\n at node_modules/.pnpm/jiti@2.4.2/node_modules/jiti/dist/jiti.cjs:1:194552\n at async Function.import (node_modules/.pnpm/jiti@2.4.2/node_modules/jiti/dist/jiti.cjs:1:199772)\n at async resolveConfig (node_modules/.pnpm/c12@2.0.1_magicast@0.3.5/node_modules/c12/dist/shared/c12.B4fc1S0C.mjs:343:18)\n at async loadConfig (node_modules/.pnpm/c12@2.0.1_magicast@0.3.5/node_modules/c12/dist/shared/c12.B4fc1S0C.mjs:147:23)\n at async Promise.all (index 3)\n at async loadConfigs (node_modules/.pnpm/@nuxtjs+tailwindcss@6.13.1_magicast@0.3.5_rollup@4.30.1/node_modules/@nuxtjs/tailwindcss/dist/module.mjs:374:27)\n at async node_modules/.pnpm/@nuxtjs+tailwindcss@6.13.1_magicast@0.3.5_rollup@4.30.1/node_modules/@nuxtjs/tailwindcss/dist/module.mjs:420:9\n at async generateApp (node_modules/.pnpm/nuxt@3.15.2_@parcel+watcher@2.5.0_@types+node@22.10.7_db0@0.2.1_ioredis@5.4.2_magicast@0.3.5__uowpedy6xy2pdmgu2ptesyqdza/node_modules/nuxt/dist/shared/nuxt.BoHAox-C.mjs:6166:5)\n at async _applyPromised (node_modules/.pnpm/perfect-debounce@1.0.0/node_modules/perfect-debounce/dist/index.mjs:54:10)\n\n```",[2088,2089],{"name":2005,"color":2006},{"name":1991,"color":1992},3139,"Failed to load config error on init","2025-03-17T14:13:36Z","https://github.com/nuxt/ui/issues/3139",0.702208,{"description":2096,"labels":2097,"number":2099,"owner":1994,"repository":1995,"state":2029,"title":2100,"updated_at":2101,"url":2102,"score":2103},"### For what version of Nuxt UI are you asking this question?\n\nv2.x\n\n### Description\n\nHello,\n\nI've been trying to make PurgeCSS work properly with Nuxt UI and the deeper I get the more cumbersome of a process it becomes.\n\nIt seems that even though I provided the paths towards the NuxtUI components to PurgeCSS, it still removes CSS that should be used by the specified components, as well as colors which should be available out of the box (i.e yellow). I've even tried to safelist different classes, but again, the more I dig through it the more classes I eventually have to add - so I will be ending up with a never ending list of classes.\n\nAre there any official guidelines on how PurgeCSS should be configured so that it works correctly for the NuxtUI components/colors?\n\nCurrent config:\n\n```javascript\ndefineNuxtConfig({\n...\n purgecss: {\n safelist: [... big list ...],\n paths: [\n './components/**/*.vue',\n './layouts/**/*.vue',\n './pages/**/*.vue',\n './plugins/**/*.js',\n './nuxt.config.ts',\n './app.config.ts',\n './node_modules/@nuxt/ui/dist/runtime/components/**/*.vue',\n './node_modules/@nuxt/ui/dist/runtime/ui.config/**/*.js',\n './node_modules/@nuxt/ui/dist/runtime/utils/*.js',\n ],\n content: [\n './components/**/*.vue',\n './layouts/**/*.vue',\n './pages/**/*.vue',\n './plugins/**/*.js',\n './nuxt.config.ts',\n './app.config.ts',\n './node_modules/@nuxt/ui/dist/runtime/components/**/*.vue',\n './node_modules/@nuxt/ui/dist/runtime/ui.config/**/*.js',\n './node_modules/@nuxt/ui/dist/runtime/utils/*.js',\n ],\n}\n});\n```\n\nThanks in advance :-)",[2098],{"name":2025,"color":2026},2850,"Nuxt UI & PurgeCSS","2025-03-28T17:38:11Z","https://github.com/nuxt/ui/issues/2850",0.7066574,["Reactive",2105],{},["Set"],["ShallowReactive",2108],{"TRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"BfgGGr-HDqiVO6Bm6LYDqzpCm4ZnWjHQkqdsKzcnYrA":-1},"/nuxt/ui/3786"]