[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"github-release-nuxt-ui-v4.8.0":3,"$f2v3tzw7dti6zg":-1},{"adjacent":4,"latestReleases":16,"relatedArticles":37,"relatedArticlesAreVersioned":8,"release":46},{"newer":5,"older":11},{"htmlUrl":6,"id":7,"isPrerelease":8,"name":9,"publishedAt":10,"tagName":9},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Freleases\u002Ftag\u002Fv4.8.1","019e6f50-866a-7607-aee1-f1abf9ff1b6d",false,"v4.8.1","2026-05-28T15:36:23.000Z",{"htmlUrl":12,"id":13,"isPrerelease":8,"name":14,"publishedAt":15,"tagName":14},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Freleases\u002Ftag\u002Fv4.7.1","019dd4d1-b6ef-73f2-a620-a0a341e1c3f2","v4.7.1","2026-04-28T13:42:08.000Z",[17,21,25,29,33],{"id":18,"isPrerelease":8,"name":19,"publishedAt":20,"tagName":19},"01a0f831-ca6d-75a3-b346-cd122695e021","v4.11.3","2026-10-01T13:36:34.000Z",{"id":22,"isPrerelease":8,"name":23,"publishedAt":24,"tagName":23},"01a0c8fc-d675-768f-bc9d-b203b4ef4d1e","v4.11.2","2026-09-22T10:57:12.000Z",{"id":26,"isPrerelease":8,"name":27,"publishedAt":28,"tagName":27},"01a07c99-2835-7139-a2b4-dc1366a91f12","v4.11.1","2026-09-07T12:52:35.000Z",{"id":30,"isPrerelease":8,"name":31,"publishedAt":32,"tagName":31},"01a0250d-0e12-72ec-8e1b-cbf215572881","v4.11.0","2026-08-21T15:23:38.000Z",{"id":34,"isPrerelease":8,"name":35,"publishedAt":36,"tagName":35},"019f6acc-642e-757c-b85b-fa657eec332f","v4.10.0","2026-07-16T08:23:12.000Z",[38],{"id":39,"image":40,"publishedAt":41,"slug":42,"sourceName":43,"summary":44,"title":45},"019ddc9c-805c-71c8-81be-4ae362cfeb7c","https:\u002F\u002Fblog.vueschool.io\u002Fwp-content\u002Fuploads\u002F2026\u002F04\u002Fcollaborative-editor-example.jpg","2026-04-28T00:00:34.000Z","vibe-coding-a-collaborative-editor-with-comment-support-with-nuxt-ui-and-jazz","VueSchool","This article explores the creation of a collaborative editor using Nuxt UI and Jazz, focusing on real-time editing and comment support. It discusses the final product's features, including a rich text editor with a toolbar, image upload capabilities, and a layout optimized for collaboration. The author also shares insights on leveraging AI in the development process.","Vibe Coding a Collaborative Editor with Comment Support with Nuxt UI and Jazz",{"htmlUrl":47,"id":48,"isPrerelease":8,"name":49,"projectId":50,"projectName":51,"projectOwner":52,"projectRepo":53,"projectUrl":54,"publishedAt":55,"summary":56,"tagName":49,"updatedAt":57,"breakingChangesHtml":58,"displayName":59,"hasBreakingChanges":60,"indexable":60,"notesHtml":61,"version":62},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Freleases\u002Ftag\u002Fv4.8.0","019e4b44-065f-723f-8ebd-22908647d007","v4.8.0","019d75ac-bef8-7578-b1f1-429ff8d0dc0f","Nuxt UI","nuxt","ui","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui","2026-05-21T15:03:11.000Z","Nuxt UI v4.8.0 introduces the ability to override default prop values for descendant components using the `Theme` component, enhancing customization. The `ContentSearch` component now supports async full-text search with highlighted snippets, improving performance and user experience. Additionally, the `InputMenu` prop `autocomplete` has been renamed to `mode` to avoid conflicts with standard HTML attributes.","2026-05-21T16:00:13.289Z","\u003Cul>\n\u003Cli>\u003Cstrong>InputMenu:\u003C\u002Fstrong> rename \u003Ccode>autocomplete\u003C\u002Fcode> prop to \u003Ccode>mode\u003C\u002Fcode> to free up HTML attribute (#6474)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The boolean \u003Ccode>autocomplete\u003C\u002Fcode> prop introduced in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Freleases\u002Ftag\u002Fv4.6.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">v4.6.0\u003C\u002Fa> collided with the standard HTML \u003Ccode>autocomplete\u003C\u002Fcode> attribute used for browser autofill (\u003Ccode>address-line1\u003C\u002Fcode>, \u003Ccode>one-time-code\u003C\u002Fcode>, \u003Ccode>email\u003C\u002Fcode>, etc.). It has been renamed to \u003Ccode>mode\u003C\u002Fcode> which accepts \u003Ccode>&#39;combobox&#39; | &#39;autocomplete&#39;\u003C\u002Fcode> (defaults to \u003Ccode>combobox\u003C\u002Fcode>). The HTML \u003Ccode>autocomplete\u003C\u002Fcode> attribute now falls through to the inner input like other form components.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-diff\">- &lt;UInputMenu autocomplete :items=&quot;items&quot; \u002F&gt;\n+ &lt;UInputMenu mode=&quot;autocomplete&quot; :items=&quot;items&quot; \u002F&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Nuxt UI v4.8.0",true,"\u003Ch2>✨ Highlights\u003C\u002Fh2>\n\u003Ch3>🎨 Theme component prop defaults\u003C\u002Fh3>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fui.nuxt.com\u002Fdocs\u002Fcomponents\u002Ftheme#prop-defaults\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u003Ccode>Theme\u003C\u002Fcode>\u003C\u002Fa> component can now override \u003Cstrong>default prop values\u003C\u002Fstrong> for all descendant components. Pass a \u003Ccode>props\u003C\u002Fcode> object where keys are component names and values are their prop overrides:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-vue\">&lt;template&gt;\n  &lt;UTheme\n    :props=&quot;{\n      tooltip: { delayDuration: 0, arrow: true },\n      button: { color: &#39;neutral&#39;, variant: &#39;subtle&#39;, size: &#39;lg&#39; },\n      input: { size: &#39;lg&#39; }\n    }&quot;\n  &gt;\n    &lt;UTooltip text=&quot;Tooltip&quot;&gt;\n      &lt;UButton label=&quot;Save&quot; \u002F&gt;\n    &lt;\u002FUTooltip&gt;\n\n    &lt;UInput placeholder=&quot;Search...&quot; \u002F&gt;\n  &lt;\u002FUTheme&gt;\n&lt;\u002Ftemplate&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Explicit props on a component always take priority. Theme components can be nested (innermost wins) and propagate through the entire tree via \u003Ccode>provide\u003C\u002Fcode> \u002F \u003Ccode>inject\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>🔍 ContentSearch async search\u003C\u002Fh3>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fui.nuxt.com\u002Fdocs\u002Fcomponents\u002Fcontent-search#search\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u003Ccode>ContentSearch\u003C\u002Fcode>\u003C\u002Fa> component now supports \u003Ca href=\"https:\u002F\u002Fwww.sqlite.org\u002Ffts5.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">FTS5 full-text search\u003C\u002Fa> via the new \u003Ccode>search\u003C\u002Fcode> prop and the \u003Ca href=\"https:\u002F\u002Fcontent.nuxt.com\u002Fdocs\u002Futils\u002Fuse-search-collection\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u003Ccode>useSearchCollection\u003C\u002Fcode>\u003C\u002Fa> composable (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fcontent\u002Fpull\u002F3787\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">nuxt\u002Fcontent#3787\u003C\u002Fa>, released in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fcontent\u002Freleases\u002Ftag\u002Fv3.14.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u003Ccode>@nuxt\u002Fcontent\u003C\u002Fcode> v3.14.0\u003C\u002Fa>). Instead of loading all content upfront with \u003Ccode>files\u003C\u002Fcode> and filtering client-side with Fuse.js, you can now run async queries with highlighted snippets:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-vue\">&lt;script setup lang=&quot;ts&quot;&gt;\nconst { search, status, init } = useSearchCollection(&#39;content&#39;, {\n  immediate: false,\n  ignoredTags: [&#39;style&#39;]\n})\n\nconst { open } = useContentSearch()\n\nwatch(open, (value) =&gt; {\n  if (value &amp;&amp; status.value === &#39;idle&#39;) {\n    init()\n  }\n})\n&lt;\u002Fscript&gt;\n\n&lt;template&gt;\n  &lt;UContentSearch :search=&quot;search&quot; :search-status=&quot;status&quot; \u002F&gt;\n&lt;\u002Ftemplate&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>You can check out the new search on \u003Ca href=\"https:\u002F\u002Fui.nuxt.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\u002F\u002Fui.nuxt.com\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fnuxt.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\u002F\u002Fnuxt.com\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>🚨 Breaking Changes\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>InputMenu:\u003C\u002Fstrong> rename \u003Ccode>autocomplete\u003C\u002Fcode> prop to \u003Ccode>mode\u003C\u002Fcode> to free up HTML attribute (#6474)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The boolean \u003Ccode>autocomplete\u003C\u002Fcode> prop introduced in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Freleases\u002Ftag\u002Fv4.6.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">v4.6.0\u003C\u002Fa> collided with the standard HTML \u003Ccode>autocomplete\u003C\u002Fcode> attribute used for browser autofill (\u003Ccode>address-line1\u003C\u002Fcode>, \u003Ccode>one-time-code\u003C\u002Fcode>, \u003Ccode>email\u003C\u002Fcode>, etc.). It has been renamed to \u003Ccode>mode\u003C\u002Fcode> which accepts \u003Ccode>&#39;combobox&#39; | &#39;autocomplete&#39;\u003C\u002Fcode> (defaults to \u003Ccode>combobox\u003C\u002Fcode>). The HTML \u003Ccode>autocomplete\u003C\u002Fcode> attribute now falls through to the inner input like other form components.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-diff\">- &lt;UInputMenu autocomplete :items=&quot;items&quot; \u002F&gt;\n+ &lt;UInputMenu mode=&quot;autocomplete&quot; :items=&quot;items&quot; \u002F&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>🚀 Features\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Avatar\u002FAvatarGroup:\u003C\u002Fstrong> add \u003Ccode>color\u003C\u002Fcode> prop (#6405) (6f2396f)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Breadcrumb:\u003C\u002Fstrong> add \u003Ccode>color\u003C\u002Fcode> prop (#6406) (955dac1)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ChatMessage:\u003C\u002Fstrong> add \u003Ccode>body\u003C\u002Fcode> slot and improve actions alignment (#6460) (48685b6)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ChatMessage:\u003C\u002Fstrong> add \u003Ccode>color\u003C\u002Fcode> prop and \u003Ccode>header\u003C\u002Fcode> slot (#6407) (c6ce8ca)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ChatPrompt:\u003C\u002Fstrong> add \u003Ccode>submitOnEnter\u003C\u002Fcode> prop to control Enter behavior (b597f90)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Checkbox\u002FRadioGroup\u002FSwitch:\u003C\u002Fstrong> add \u003Ccode>highlight\u003C\u002Fcode> prop for error ring styling (a0deee4)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CommandPalette:\u003C\u002Fstrong> search and highlight description field (524c34d)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ContentSearch\u002FDashboardSearch:\u003C\u002Fstrong> enable Fuse.js token search by default (ba08220)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ContentSearch:\u003C\u002Fstrong> add async search support via \u003Ccode>useSearchCollection\u003C\u002Fcode> (#6432) (a1bef8b)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>DashboardGroup:\u003C\u002Fstrong> add \u003Ccode>storageOptions\u003C\u002Fcode> prop (8f0101b)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Error:\u003C\u002Fstrong> add \u003Ccode>icon\u003C\u002Fcode> prop and \u003Ccode>leading\u003C\u002Fcode> slot (e6ea707)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Separator:\u003C\u002Fstrong> add \u003Ccode>position\u003C\u002Fcode> prop (#6415) (844660a)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Theme:\u003C\u002Fstrong> override component prop defaults (#6031) (71c008e)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>🐛 Bug Fixes\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>ChatMessage:\u003C\u002Fstrong> add \u003Ccode>wrap-break-word\u003C\u002Fcode> to content slot (#6476) (eb468e6)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CommandPalette:\u003C\u002Fstrong> only split tokens in highlight when \u003Ccode>useTokenSearch\u003C\u002Fcode> is enabled (898fbce)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CommandPalette:\u003C\u002Fstrong> preserve relative order of ignoreFilter groups (e4c1787)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CommandPalette:\u003C\u002Fstrong> re-highlight first item after debounced results render (efd7b8e)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CommandPalette:\u003C\u002Fstrong> update default fuse keys in docs and search components (0d9cc0d)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>components:\u003C\u002Fstrong> apply \u003Ccode>theme.prefix\u003C\u002Fcode> to hardcoded utility classes (f51b1e8)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>components:\u003C\u002Fstrong> constrain popper content to available viewport height (007b136)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ContentSearch:\u003C\u002Fstrong> preserve intermediate ancestors in breadcrumb prefix (#6466) (f639b19)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ContentToc:\u003C\u002Fstrong> apply \u003Ccode>ui.trigger\u003C\u002Fcode> prop to trigger elements (252b906)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>defineShortcuts:\u003C\u002Fstrong> use \u003Ccode>e.code\u003C\u002Fcode> for alt shortcuts to handle macOS key remapping (231f156)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>FileUpload:\u003C\u002Fstrong> pass \u003Ccode>disabled\u003C\u002Fcode> attribute to button variant (2890c83)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Form:\u003C\u002Fstrong> improve errors type (#6208) (c1090ab)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>InputMenu\u002FSelect\u002FSelectMenu:\u003C\u002Fstrong> respect \u003Ccode>trailing: false\u003C\u002Fcode> over default \u003Ccode>trailingIcon\u003C\u002Fcode> (#6457) (65b47ce)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>InputMenu:\u003C\u002Fstrong> rename \u003Ccode>autocomplete\u003C\u002Fcode> prop to \u003Ccode>mode\u003C\u002Fcode> to free up HTML attribute (#6474) (2799fa6)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>module:\u003C\u002Fstrong> don&#39;t require \u003Ccode>@nuxtjs\u002Fmdc\u003C\u002Fcode> when using \u003Ccode>content\u003C\u002Fcode> option (89f7778)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>module:\u003C\u002Fstrong> pass computed ref directly to useHead innerHTML (00b7476)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>module:\u003C\u002Fstrong> ship stripped \u003Ccode>#build\u002Fui.css\u003C\u002Fcode> fallback for tooling (083c2a9)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ProseKbd:\u003C\u002Fstrong> add default slot and make \u003Ccode>value\u003C\u002Fcode> optional (f317c7f)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Textarea:\u003C\u002Fstrong> autoresize on mount with pre-filled value (e96a0b6)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>useComponentProps:\u003C\u002Fstrong> treat array-typed theme values as \u003Ccode>ClassValue\u003C\u002Fcode> leaves (cac3860)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>👋 Contributors\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>@benjamincanac\u003C\u002Fli>\n\u003Cli>@Bobakanoosh\u003C\u002Fli>\n\u003Cli>@maximepvrt\u003C\u002Fli>\n\u003Cli>@zAlweNy26\u003C\u002Fli>\n\u003Cli>@Akur1a\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Full Changelog\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Fcompare\u002Fv4.7.1...v4.8.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Fcompare\u002Fv4.7.1...v4.8.0\u003C\u002Fa>\u003C\u002Fp>\n","4.8.0"]