发布版本

及时了解 Nuxt UI 的最新功能、增强和修复。

v4.2.1

🐛 错误修复

  • ChatPromptSubmit: 代理事件到 stopreload emits (#5400) 736a547
  • ColorModeButton: 缺少图标导入5f30ccf,关闭 #5486
  • Icon: 改进 name 类型 (#5498) b654a77
  • Link: 定义 NuxtLinkProps 而不是从 #app 导入 (#5491) da8daaa
  • Link: 确保 Nuxt、Vue 和 Inertia 之间的一致性a9ed10d,关闭 #5012
  • module: 重新启用 #build/ui.css 别名 (#5499) d9aadc7

新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.2.0...v4.2.1

v4.2.0

✨ 亮点

📅 新的 InputDate 和 InputTime 组件

现在提供两个新组件来处理日期和时间输入InputDate (#5387) 和InputTime (#5302).

<script setup lang="ts">
const date = ref(new CalendarDate(2022, 2, 3))
const time = ref(new Time(12, 30, 0))
</script>

<template>
  <UInputDate v-model="date" />

  <UInputTime v-model="time" />
</template>

🎨 Tailwind CSS 前缀

您现在可以使用 Tailwind CSS 的prefix 选项 (#5341) 为 Nuxt UI 生成的所有实用工具添加前缀,避免与您自己的样式或其他库冲突。

export default defineNuxtConfig({
  modules: ['@nuxt/ui'],
  css: ['~/assets/css/main.css'],
  ui: {
    theme: {
      prefix: 'tw'
    }
  }
})
@import "tailwindcss" prefix(tw);
@import "@nuxt/ui";

🚨 破坏性变更

暴露的 ref 现在始终直接返回 HTML 元素而不是组件实例。这会影响 InputMenuInputNumberInputTagsSelectSelectMenu

<script setup lang="ts">
const inputMenu = useTemplateRef('inputMenu')

- inputMenu.value.inputRef.$el // Component instance
+ inputMenu.value.inputRef // HTML element directly
</script>
  • module: 正确地从模块中导出可组合项 (cb25902)

之前可组合项的导出存在问题,您不再需要 .js 扩展名

<script setup lang="ts">
- import { useToast } from '@nuxt/ui/composables/useToast.js'
+ import { useToast } from '@nuxt/ui/composables/useToast'
// or
+ import { useToast } from '@nuxt/ui/composables'
</script>

Vite 插件现在正确地将主题文件生成为真实文件,而不是错误地将它们打包在 NPM 上的 .nuxt/ 内部。这确保了 #build/ui.css 导入和自定义主题配置能够正常工作。

使用 Vite 插件时,请更新您的 tsconfig.node.json 别名

{
  "compilerOptions": {
    "paths": {
      "#build/ui": [
-       "./node_modules/@nuxt/ui/.nuxt/ui"
+       "./node_modules/.nuxt-ui/ui"
      ]
    }
  }
}

🚀 功能

🐛 错误修复

  • AuthForm: 确保使用 leading 插槽时显示标题 (#5405) (b61127a)
  • AuthForm: 使用密码输入 ID 作为 aria-controls (#5312) (55ea9be)
  • ChatPrompt: 代理 disabled 属性 (a8f2156),关闭#5300
  • CheckboxGroup/RadioGroup/Switch: 禁用样式一致 (ddd8faf),关闭#5391
  • ColorModeButton: 使用 css 显示颜色模式图标 (#5394) (1d1c638)
  • CommandPalette/ContentSearch: 改进性能和过滤逻辑 (#5433) (e751b37)
  • components: 根据项目描述计算虚拟器 estimateSize (56ae8e7)
  • components: 暴露的 ref 保持一致 (#5385) (fce2df4)
  • components: 移除 locale / dir 属性代理 (#5432) (a6efa7a)
  • ContentNavigation/NavigationMenu/Tabs: 确保徽章正确显示 (e5c11e6)
  • ContentSearchButton/DashboardSearchButton: 折叠时用 css 隐藏标签和尾部 (3e72bf8)
  • FileUpload: 确保原生验证与 required 一起使用 (#5358) (eb491e1)
  • Form: 优化 nested 属性类型处理并简化逻辑 (#5360) (8d5c26f)
  • inertia: 动态设置 serverRendered 以防止 SSR 崩溃 (#5396) (c0da1b2)
  • Input/InputNumber/Textarea: 使 modelModifiers 泛型 (#5361) (5c347af)
  • InputMenu: 选择创建项时阻止 change 事件 (418c87b),关闭#4664
  • Link:vue-routerinertia 部分扩展 (637ef58)
  • Marquee: 将关键帧移至全局 css (1e6242e)
  • module: 使用 experimental.componentDetection 时检测懒加载组件 (5a5ac45)
  • module: 正确地从模块中导出可组合项 (cb25902),关闭#5370
  • module: 使用 experimental.componentDetection 时扫描层 (9872740),关闭#5389
  • NavigationMenu: 折叠时用 css 隐藏标签和尾部 (f004031),关闭#4254
  • NavigationMenu: 在垂直方向上代理 modelValue / defaultValue (cffaaaa),关闭#5392
  • ProseCallout: 为图标添加 inline-block 类 (#5317) (fc36f69)
  • RadioGroup: 更新 update:modelValue emit 类型 (#5349) (4cb0638)
  • Table: 根据列元数据应用样式到 th (#5418) (620defa)
  • types: 导出缺失的 utils 类型 (#5448) (5f0a107)
  • vite: 写入主题模板 (#5355) (411ebcc)
  • vue: 检查 import.meta.env.SSR 以支持 vite-ssg (#5347) (8f38c04)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.1.0...v4.2.0

v4.1.0

✨ 亮点

📦 新的 Empty 组件

现在提供一个新的组件,用于在没有内容显示时显示空状态 (#5200).

⚡️ 组件虚拟化

使用 virtualize 属性为大型数据集启用CommandPalette, InputMenu, SelectMenu, TableTree组件上的虚拟化 (#5162).

<template>
  <UTable :data="data" :columns="columns" virtualize />
</template>

🎯 实验性组件检测

在您的 nuxt.config.ts 中启用新的experimental.componentDetection选项,以自动检测实际使用的组件,并仅为这些组件(包括其依赖项)生成必要的 CSS (#5222).

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxt/ui'],
  css: ['~/assets/css/main.css'],
  ui: {
    experimental: {
      componentDetection: true
    }
  }
})

🚨 破坏性变更

对于这些小的破坏性更改,我们深表歉意。库中有 110 多个组件,我们偶尔需要进行更正以保持一致性和质量。我们旨在尽量减少破坏性更改,但有时它们是长期改进开发人员体验所必需的。

  • CommandPalette: 添加 children-icon 属性以在输入中使用 trailing-icon (#4397) (edda8a6)

trailing-icon 属性现在用于输入,并添加了一个新的 children-icon 属性来自定义子项的图标

<template>
- <UCommandPalette :trailing-icon="i-lucide-arrow-right" />
+ <UCommandPalette :children-icon="i-lucide-arrow-right" />
</template>
  • Table: 选择事件中参数顺序一致 (9526a1b)

@select 事件现在以一致的顺序传递参数:(event, row) 而不是 (row, event)

<template>
- <UTable @select="(row, e) => {}" />
+ <UTable @select="(e, row) => {}" />
</template>

🚀 功能

  • Calendar: 添加 variant 属性 (#5138) (bb4f42c)
  • CommandPalette: 添加 children-icon 属性以在输入中使用 trailing-icon (#4397) (edda8a6)
  • CommandPalette: 在搜索结果中保留组顺序 (#5197) (38647a2)
  • components: 在使用的地方暴露 ui 到插槽属性中 (#5207) (63c0a5f)
  • components: 处理项目中的 description (#5193) (70cf05f)
  • components: 实现虚拟化 (#5162) (c744d6f)
  • Empty: 新组件 (#5200) (6a6de8d)
  • InputNumber: 处理 increment / decrement 作为布尔值 (#4805) (1858908)
  • module: 添加 experimental.componentDetection 选项 (#5222) (f80474c)
  • Popover: 在插槽中添加 close 方法 (#5176) (53c6508)
  • ProseImg: 改进 zoom 过渡 (#4998) (d502c30)
  • Tree: 添加全局事件处理程序和复选框示例 (#5195) (84f87a5)
  • Tree: 为拖放示例暴露 $el (#5239) (fcf6117)
  • Tree: 提供额外的插槽属性 (#5194) (c8b01c9)
  • useToast: 处理 max 全局配置 (#5068) (e4c6113)

🐛 错误修复

  • BlogPost/ChangelogVersion: 允许 image 属性中的任何属性 (9632f99),关闭#5276
  • Breadcrumb: 处理项目中的 active (cc8cbf3),关闭#4771
  • ChatMessage: 确保左侧占用全部宽度 (af8c023)
  • ChatMessage: 仅在右侧应用最大宽度 (a85b0e1)
  • ChatMessage: 重置顶部和底部边距 (8f9176c)
  • ChatMessages: 允许用户使用 should-auto-scroll 滚动 (#5252) (db73765)
  • ChatMessages: 定义用户和助手 ui 属性类型 (#5234) (240bc1a)
  • CodeTree/Tree: 恢复带 presentation 角色的项目包装器 (70aaf4a),关闭#4945
  • components: 在 prose 代理组件中添加缺失的 ui 属性 (#5205) (d1afe90)
  • ContextMenu/DropdownMenu: 允许项目内容类覆盖 (ab5032d),关闭#5277
  • Drawer/Modal/Slideover: 移除关闭自动聚焦阻止 (#5191) (8099440)
  • Error/Main: 渲染为 div 而不是 main (2a09ac0),关闭#4955
  • FileUpload: 处理禁用文件删除按钮 (08c30cf),关闭#5249
  • FileUpload: 选项卡切换时焦点卡住 (#5128) (2477d44)
  • FileUpload: 使用原生 img 元素预览 blob URL (69906bc),关闭#5121 #4824
  • InputMenu/SelectMenu: 丰富可重用模板项属性 (63074d6)
  • InputMenu: 确保在数字时可以移除标签 (028538a)
  • Kbd: 返回原始值并使用 uppercase 类 (#5238) (4095c9a)
  • NavigationMenu: 徽章非 undefined 时显示尾部插槽 (f24204f),关闭#4670
  • Table: 选择事件中参数顺序一致 (9526a1b)
  • Table: 暴露 $el 而不是 rootRef (c019f8f),关闭#5230 #5162

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.0.1...v4.1.0

v3.3.6

🐛 错误修复

  • App: 允许全局禁用门户 (#5111) (43c119f)
  • Carousel: 确保插件在客户端导航后初始化 (#5117) (0f7a1b7)
  • Carousel: 在 RTL 方向上反转箭头键 (#5072) (27cb2b6)
  • Drawer: 当 dismissible 为 false 时阻止不必要的关闭 (#5085) (027c06a)
  • Drawer: 为 snapPoints 使用全高/全宽 (#5041) (8f21339)
  • Pagination: 使省略号不可交互 (#5081) (ab168af)
  • Table: 空单元格值导致水合错误 (#5069) (cd2662a)
  • useKbd: 将 escape 键从 更新为 Esc (#5076) (27aa80c)

完整更新日志: https://github.com/nuxt/ui/compare/v3.3.5...v3.3.6

v4.0.1

🐛 错误修复

  • App: 允许全局禁用门户 (#5111) (7659fa1)
  • AuthForm: 导出具有字段特定属性的正确类型推断 (#5106) (344f269)
  • Avatar: 移除多余的 img 角色 (066b8a1),关闭#5044
  • Carousel: 确保插件在客户端导航后初始化 (#5117) (21fbe63)
  • Carousel: 在 RTL 方向上反转箭头键 (#5072) (fde53ee)
  • ChatMessages: 确保内容在滚动前渲染 (0db622a)
  • ChatMessages: 深度监听以处理带有 parts 的流式传输 (ff67fa3)
  • components: 添加缺失的 data-orientation 以保持一致性 (a9fe7c6)
  • ContentNavigation: 改进路径匹配和使用 default-open 的递归 (22ee075),关闭#5112
  • ContentSearch/DashboardSearch: 代理 modal 属性以支持全屏 (095a0c1)
  • DashboardPanel/DashboardSidebar: 处理 RTL 模式 (#5109) (fface35)
  • Drawer: 当 dismissible 为 false 时阻止不必要的关闭 (#5085) (2abdc21)
  • Drawer: 为 snapPoints 使用全高/全宽 (#5041) (b145768)
  • locale: 改进 ckb 翻译 (#5079) (3ee3a5e)
  • locale: 改进带有省略号的排版 (#5052) (391f9f5)
  • Pagination: 使省略号不可交互 (#5081) (62f64cc)
  • Table: 空单元格值导致水合错误 (#5069) (44a38ea)
  • unplugin: 处理带有子路径的组件解析 (31db8d9)
  • useKbd: 将 escape 键从 更新为 Esc (#5076) (64d1589)
  • vue: 使 useCookie 存根与 nuxt 的默认值处理对齐 (#5089) (f531807)

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.0.0...v4.0.1

v4.0.0

我们很高兴地宣布 Nuxt UI v4,这是一个重要的里程碑,它将 Nuxt UI 和 Nuxt UI Pro 统一为一个完全开源的库。继NuxtLabs 于 7 月加入 Vercel之后,我们现在能够免费向所有人提供 100 多个生产就绪组件和完整的 Figma 套件。

阅读博客文章公告https://nuxtjs.org.cn/blog/nuxt-ui-v4

开始使用 Nuxt UI v4 →

✨ 亮点

🌐 统一和开源

Nuxt UI v4 通过将 Nuxt UI 和 Nuxt UI Pro 合并为一个统一、完全开源的库,标志着一个重要的里程碑

  • 100+ 组件: 完全访问所有组件,包括以前 Pro 版独有的组件
  • Figma 套件: 专业设计资源现在向所有人开放
  • 单一包: 所有内容统一在 @nuxt/ui

🖥 模板

我们以前所有独有的 Nuxt 和 Vue 模板现在都向所有人开放,并已更新至 Nuxt UI v4

  • Starter: 一个用于开始使用 Nuxt UI 的极简模板
  • Landing: 一个由 Nuxt Content 驱动的现代着陆页模板
  • Docs: 一个由 Nuxt Content 驱动的文档模板
  • SaaS: 一个由 Nuxt Content 驱动的 SaaS 模板,包含着陆页、定价、文档和博客
  • Dashboard: 一个具有多列布局的仪表板模板,用于构建复杂的管理界面
  • Chat: 一个由 Nuxt MDC 和 Vercel AI SDK 驱动的 AI 聊天机器人模板,用于构建您自己的聊天机器人
  • Portfolio: 一个时尚的投资组合模板,用于展示您的作品、技能和由 Nuxt Content 驱动的博客
  • Changelog: 一个更新日志模板,用于显示您从 GitHub 获取的仓库发布说明,由 Nuxt MDC 驱动

📚 文档

我们在 v4 中对文档进行了大量改进,以提供更好的开发人员体验

  • 统一位置: 所有文档现在都在/docs/下,并自动从旧路径重定向
  • 专用部分: 主题排版现在有自己的组织部分
  • AI 就绪功能: LLMs.txt端点和MCP 服务器与 Cursor、Windsurf 和 GitHub Copilot 等 AI 工具集成

🌱 从 v3 迁移

从 v3 到 v4 的迁移设计得比以前的主要版本转换更顺畅。我们建议阅读迁移指南以获取分步说明。

对于 Nuxt UI 用户

  1. 更新到 @nuxt/ui@latest

对于 Nuxt UI Pro 用户

  1. 在您的依赖项中将 @nuxt/ui-pro 替换为 @nuxt/ui
  2. 在您的 Nuxt 配置中将模块注册从 @nuxt/ui-pro 更改为 @nuxt/ui
  3. 在您的应用配置中将配置键从 uiPro 更改为 ui
  4. 将 CSS 导入从 @nuxt/ui-pro 更新为 @nuxt/ui
  5. 更新所有导入语句以引用 @nuxt/ui

🙏 致谢

我们要特别感谢所有支持 Nuxt UI Pro 的人。您的早期采用和反馈对塑造 Nuxt UI 起到了关键作用。您帮助我们资助、维护和改进了项目,使我们能够达到这个里程碑,现在我们可以向整个社区提供这些强大的工具。

非常感谢Nuxt UI 背后的专业团队以及我们由 250 多位贡献者组成的令人难以置信的社区。您的辛勤工作、创造力和热情是本项目成功的驱动力。

感谢您参与这段旅程 💚

v3.3.5

🐛 错误修复

  • InputMenu: 确保在多选时向项目传递字符串 (0031a75),关闭#5018
  • InputTags: 在输入框上添加 blur 和 focus 事件处理程序 (#5007) (5db2708)
  • Progress: 改进 status-position 当为 0 时 (#4994) (e0891ea)
  • Tabs: 在 item value 上使用空值合并 (a4ab796),关闭#4804
  • types: 允许 tv 配置中的任意键 (#4992) (8d859ea)
  • types: 解决 icons 类型中的环境声明错误 (#4991) (526cb81)

新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.3.4...v3.3.5

v4.0.0-beta.0

🐛 错误修复

  • ChatMessages: 用插槽包裹指示器 (#5036) (c00bf30)
  • CheckboxGroup: 代理泛型到 emits (ffa5b23)
  • Form: 改进嵌套表单验证处理 (#5024) (77a554e)
  • Form: 移除 joiyup,转而使用 @standard-schema/spec (#5035) (723cf36)
  • InputMenu: 确保在多选时向项目传递字符串 (9beccbb),关闭#5018
  • InputTags: 在输入框上添加 blur 和 focus 事件处理程序 (#5007) (3fd2614)
  • locale: 改进 pt 语言环境中的翻译 (#5003) (725ef9b)
  • module: 只注入 tailwindcss vite 插件一次 (#5008) (c2e39dd)
  • ProseImg: 默认添加 w-full (#4997) (de47add)
  • Tabs: 在 item value 上使用空值合并 (340fc48),关闭#4804
  • Tree: 移除 value-key,转而使用 get-key (#4999) (240ff42)
  • types: 允许 tv 配置中的任意键 (#4992) (ae77b69)

新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.0.0-alpha.2...v4.0.0-beta.0

v4.0.0-alpha.2

这个 4.0.0-alpha.2 版本主要侧重于稳定性和文档。

经过更多测试后,官方 v4 版本应该会在下周发布。

📚 文档

在此版本中,我们对文档进行了重大改进。

🚨 破坏性变更

  • Form: 如果启用了转换,不要修改表单状态 (#4902)

阅读有关此更改的迁移指南https://ui4.nuxt.com/docs/getting-started/migration/v4#changes-to-form-component

🚀 功能

  • ContentNavigation: 处理 collapsible false 与 type multiple (c42c2ab)

🐛 错误修复

🔥 性能

  • module: 不通过导入插件来阻塞设置 (#4923) (695d9f7)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.0.0-alpha.1...v4.0.0-alpha.2

v4.0.0-alpha.1

📚 文档

您可以在以下网址查看 v4 的新文档https://ui4.nuxt.com在 alpha 阶段。

🚨 破坏性变更

  • components:nullify 修饰符重命名为 nullable 并添加 optional (#4838)
  • module: 将兼容性更新至 nuxt 4

阅读v4 迁移指南.

🚀 功能

🐛 错误修复

  • AuthForm: 使用表单字段的 error (#4738) (00dfb6b)
  • BlogPost: 确保日期插槽渲染 (#4743) (4514880)
  • ChangelogVersion/ChangelogVersions: 处理 RTL 模式 (#4777) (f91c408)
  • ContentSearch/DashboardSearch: 使 ui.modal 工作 (946c2ec)
  • module: 在组件上添加 @source (a16465f),关闭#4773
  • PageCard: 改进键盘可访问性 (#4733) (3029568)
  • ProseImg: 确保图像的唯一运动布局 ID (#4720) (9480a0b)
  • unplugin: 处理子目录中的组件覆盖 (#4781) (69ee75e)

新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v4.0.0-alpha.0...v4.0.0-alpha.1

v3.3.3

🚀 功能

🐛 错误修复

  • components: update:model-value 事件的类型错误 (#4853) (7133f50)
  • Form: 默认插槽类型 (#4758) (a32cc37)
  • Form: 更新 Form 接口以接受 RegExp (#4821) (0c2d390)
  • InputMenu/Select/SelectMenu: 当模型值为假值时显示占位符 (#4825) (90b5daf)
  • InputMenu: 阻止内容上的 focus-outside 事件 (77b6b9a)
  • Link: 确保目标 _blank 被标记为 Inertia 的外部链接 (#4746) (520b277)
  • Table: 确保 colspan 计算适用于 loadingempty 状态 (#4826) (bdcc8c4)

新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.3.2...v3.3.3

v4.0.0-alpha.0

📚 文档

您可以在以下网址查看 v4 的新文档https://ui4.nuxt.com在 alpha 阶段。

🚨 破坏性变更

阅读v4 迁移指南.

完整更新日志: https://github.com/nuxt/ui/compare/v3.3.2...v4.0.0-alpha.0

v3.3.1

🚀 功能

  • Form: 在暴露的方法中支持错误正则表达式 (#4608) (b8b74a0)
  • Tree: 添加 item-wrapper 插槽 (#4521) (411d937)
  • useOverlay:open 方法中返回 Promise (#4592) (58aac86)

🐛 错误修复

  • Drawer: 改进带有 inset 属性的关闭动画 (#4676) (9da1527)
  • FileUpload: 处理 dropzone dataTypes 中的通配符 (#4671) (729bed4)
  • FileUpload: 改进文件移除辅助功能 (#4607) (f90bba0)
  • FileUpload: 在 keyup 时打开对话框 (#4629) (8e9265e)
  • FileUpload: 在 keydown 时阻止默认行为 (#4633) (68d8a98)
  • Input: iOS 上 date / time 类型的渲染不正确 (#4715) (93cc83c)
  • InputMenu/Select/SelectMenu: 在未找到项目时添加显示值回退 (#4689) (34ca811)
  • Select/InputMenu: 通过 FormField 内部的标签处理焦点 (#4696) (55dbcd2)
  • Tabs: 添加缺失的 Badge 导入 (#4594) (fbec29c)
  • Toast: 为进度 ui 属性添加类型 (#4677) (a8af85c)
  • Tooltip: 仅在存在 textkbds 时渲染 (#4568) (5e39cbb)

新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.3.0...v3.3.1

v3.3.0

✨ 亮点

☁️ 新的 FileUpload 组件

推出一个强大的新 FileUpload 组件,通过内置的拖放和验证支持,使文件上传变得轻松 (#4564).



了解更多https://ui.nuxtjs.org.cn/components/file-upload

🎨 全局默认变体

配置所有组件的 colorsize 全局默认值,以减少样板代码并确保样式一致 (#4400).

export default defineNuxtConfig({
  modules: ['@nuxt/ui'],
  css: ['~/assets/css/main.css'],
  ui: {
    theme: {
      defaultVariants: {
        color: 'neutral',
        size: 'sm'
      }
    }
  }
})

了解更多https://ui.nuxtjs.org.cn/getting-started/installation/nuxt#themedefaultvariants

📊 增强的 Table 组件

Table 组件的重大改进带来了增强的功能和更好的用户体验

  • 页脚支持 用于列汇总 (#4194)
  • 上下文菜单 支持 (#4259)
  • Colspan 和 rowspan 支持 (#4460)
  • 行悬停事件 以实现更好的交互性 (#2435)
  • 自定义样式 在表格和列元数据中 (#4513)

了解更多https://ui.nuxtjs.org.cn/components/table

🚀 功能

🐛 错误修复

  • Button/Link:active-class / inactive-class 与应用程序配置合并 (#4446) (9debce7)
  • Button: 添加 active 样式以在移动设备上像 hover 一样表现 (df8f202),关闭#991
  • Carousel/Tree: 为按钮元素添加类型以提高可访问性 (#4493) (fc24e03)
  • Carousel: 为活动点添加 aria-current 属性 (#4447) (1ba8a55)
  • Carousel: 改进可访问性 (55e06e9),关闭#4494
  • Carousel: 用页面过渡解析插件 (#4380) (3b67d54)
  • ColorPicker: 更新颜色转换逻辑 (#4550) (6b6ec8c)
  • CommandPalette: 从标签中移除 rtl:space-x-reverse (#4576) (4682ded)
  • defineShortcuts: 允许额外键与 shift 组合 (#4456) (772631c)
  • defineShortcuts: 始终将事件传递给快捷方式处理程序 (#4516) (ef473c3)
  • FormField: 改进带有布尔值的 error 类型 (a4d0ca7),关闭#4496
  • FormField: 解决小的可访问性和渲染问题 (#4515) (c64c4cd)
  • InputMenu/SelectMenu: 过滤搜索中的空项目 (488707e)
  • InputMenu/SelectMenu: 改进没有 valueKey 的显示值 (4d4234d),关闭#4528
  • InputMenu/SelectMenu: 只过滤非空字段 (c92f908),关闭#4509
  • InputMenu: 在 mounted 时重置搜索词 (cb160e6),关闭#3993
  • module: 安装模块时合并用户选项 (78f92a2)
  • NavigationMenu/Tabs: 在非 undefined 时显示徽章 (b22891a)
  • NavigationMenu/Tabs: 代理穿透属性 (836f748)
  • RadioGroup: 改进 normalizeItem 函数的类型安全 (#4535) (bb99345)
  • Table: 为标题添加 scope 属性 (#4417) (347694b)
  • Table: 处理响应式列 (#4412) (4ce6540)
  • theme: 应用程序配置中的颜色自动完成 (752e2b6)
  • Toast: 仅在打开时显示进度 (1d052ec),关闭#4464
  • Tooltip: 仅在存在 textkbds 时显示分隔符 (#4570) (63476e5)
  • useLocale: 确保注入默认值为 en (df1abf1),关闭#4579
  • useLocale: 切换语言环境时阻止水合错误 (15c7991)
  • useOverlay: 将属性传递给 open 时不要使用 patch (#4497) (5ad7dab)
  • useOverlay: 通过合并现有和新属性来改进属性处理 (#4478) (6519a74)
  • useOverlay: 支持从复杂 emits 推断关闭参数 (#4414) (d7aefa5)
  • vue:@nuxt/ui 导入时处理覆盖 (57a5037)
  • vue: 存根 clearError (d8160ba)

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.2.0...v3.3.0

v3.2.0

✨ 亮点

🏷️ 新的 InputTags 组件

一个功能强大的新组件,用于通过清晰的基于标签的界面管理多个输入值 (#4261).

了解更多https://ui.nuxtjs.org.cn/components/input-tags

⏱️ 新的 Timeline 组件

推出 Timeline 组件,用于显示时间序列和流程 (#4215).

了解更多https://ui.nuxtjs.org.cn/components/timeline

🚨 破坏性变更

  • useOverlay: 纠正 unmount 函数的拼写错误 (#4051)

🚀 功能

🐛 错误修复

  • Card/Drawer/Modal: 防止滚动条溢出 (#4368) (c3adc38)
  • components: 移除按钮的默认 md 大小 (#4357) (be41aed)
  • defineShortcuts: 允许 meta_- 快捷方式 (#4321) (4e7c1c9)
  • Form: 通过 transform 属性有条件地键入表单数据 (#4188) (37abcc6)
  • Form: 暴露响应式字段 (#4386) (1a8feb7)
  • InputMenu/SelectMenu: 动态 empty 大小 (ba3c6e8),关闭#4377
  • Modal/Slideover:closeAutoFocus 时不发出 close:prevent (150b334)
  • NavigationMenu: 在每个级别嵌套手风琴上下文 (#4363) (2fa8db6)
  • NavigationMenu:horizontal 方向上设置内容 max-height (62bc7b2),关闭#4208
  • Pagination: 匹配默认按钮 size (#4350) (4dd56c8)
  • Select/SelectMenu: 显示假值 (7df7ee3)
  • Select/SelectMenu: 在多选时防止空字符串显示 (483e473)
  • SelectMenu: 动态输入大小 (b0364b9)
  • Table: 使用 tr 作为分隔符 (#4083) (edca3bc)
  • Toast: 在下一帧计算高度 (3bf5acb),关闭#4265
  • Toaster: 堆叠吐司的平滑可见性过渡 (#4367) (abfd0ed)
  • useOverlay: 纠正 unmount 函数的拼写错误 (#4051) (546df57)
  • useOverlay: 当设置 defaultOpen 时,将 props 设置为原始 props (#4308) (66355ba)
  • useOverlay:open 未提供 props 时使用原始 props (#4269) (bf56e15)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.1.3...v3.2.0

v3.1.3

🚨 破坏性变更

  • NavigationMenu: 恢复新的 collapsible 字段

之前的补丁中,我们引入了一个新的 collapsible 字段在 items 中,用于在 collapsed 状态下显示子项,并使父元素遵循其链接属性。但是,感觉不太对劲,因此我们将其移除,转而使用https://github.com/nuxt/ui/commit/1e2a10b4bdebaef12316ac60f98a956dad21c1ec, https://github.com/nuxt/ui/commit/9cf9f25f4424447691e03e9034155d1541badd43https://github.com/nuxt/ui/commit/f2682fd2ae8abb7807977727fc22ef34cb5752e5.

  1. 父项现在遵循其链接属性,点击尾部图标箭头会展开/折叠其子项。
  2. 您可以使用 type: 'trigger' 强制父项像以前一样(不带链接属性)行为。
  3. collapsed 时,您可以使用 popover / tooltip 属性或项目字段

🚀 功能

  • Modal/Slideover: 添加 after:enter 事件 (#4187) (d9e9fea)
  • NavigationMenu: 添加 tooltippopover 属性 (f2682fd),关闭#4186
  • NavigationMenu: 在 items 中添加 trigger 类型 (9cf9f25)
  • NavigationMenu: 使用 Accordion 而不是 Collapsible 处理 vertical 方向 (1e2a10b),关闭#4072 #3911
  • Popover: 添加 anchor 插槽 (#4119) (473513c)

🐛 错误修复

  • CheckboxGroup/RadioGroup: RTL 模式下的 table 边框变体 (#4192) (43d281f)
  • CommandPalette: 为视口添加 presentation 角色 (2ba94db)
  • ContextMenu/DropdownMenu: 将组包装在视口中 (dcf34a7),关闭#3315
  • Drawer: 改进标题和描述的可访问性 (41087d4),关闭#4199
  • icons: 更新 loading 图标 (#4163) (fe4e1f8)
  • Input/Textarea: 定义模型修饰符类型 (#4195) (3243fb8)
  • InputMenu/Select/SelectMenu: 手动视口以显示滚动条 (f95abf8),关闭#4069
  • NavigationMenu: 禁用和激活时悬停不正确 (d0be599)
  • NavigationMenu: 仅在折叠时显示 tooltip (44f536f)
  • NavigationMenu: 恢复新的 collapsible 字段 (3c78e2f)
  • Textarea: 缺少导入 (#4207) (6aab62e)
  • theme:old-neutral 颜色定义为静态 (#4193) (dae9f0b)
  • Tooltip: 增加内边距以保持一致性 (0634a75)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.1.2...v3.1.3

v3.1.2

🚀 功能

  • Badge: 添加 square 属性 (#4008) (894e8a6)
  • CheckboxGroup: 添加 table 变体 (#3997) (1b6ab27)
  • components: 在 items 中添加 ui 字段 (#4060) (b9adc83)
  • InputNumber: 添加 increment-disabled / decrement-disabled 属性 (#4141) (c7fba2e)
  • NavigationMenu: 在 items 中添加 collapsible 字段 (2be60cd),关闭#3353 #3911
  • NavigationMenu: 处理 items 中的 tooltip (46c2987),关闭#4050
  • Slider: 处理滑块周围的 tooltip (d140acc),关闭#1469
  • Toast: 添加 progress 属性以隐藏进度条 (#4125) (92632e9)

🐛 错误修复

  • Badge/Button: 正确处理标签中的零值 (#4108) (f244d15)
  • ButtonGroup: 在聚焦元素上添加 z-index (204953b)
  • Calendar: 使用 neutral 颜色时今日日期颜色不正确 (7d51a9e),关闭#4084 #3629
  • Checkbox/RadioGroup: 在没有 variant 的情况下渲染正确的元素 (f2fd778),关闭#3998
  • CheckboxGroup: 相对 UCheckbox 导入 (7551a85),关闭#4090
  • ColorPicker: 使滑块可触摸拖动 (#4101) (cc20a26)
  • components: class 应该优先于 ui 属性 (e6e510b)
  • FormField: 使用后阻止表单字段注入 (#4150) (d79da9d)
  • FormField:div 用于 errorhelp 插槽 (459a041)
  • inertia: 链接始终渲染为锚标签 (#3989) (e81464a)
  • inertia: 使 useAppConfig 具有响应性 (12303a8)
  • Input/Textarea: 处理泛型类型 (3c8d6cd),关闭nuxt/ui-pro#887
  • InputNumber: 处理内部按钮组 (2e4c308),关闭#4155
  • Link: Nuxt、Vue 和 Inertia 之间的行为一致 (#4134) (67da90a)
  • module: 配置 @nuxt/fonts 使用默认字重 (276268d)
  • NavigationMenu: 箭头位置冲突 (#4137) (0dc4678)
  • Select: 支持 value 字段中的更多原始类型 (#4105) (09b4699)
  • Slider: 处理泛型类型 (d7a4d02)
  • Stepper:div 标签用于 titledescription (a57844e),关闭#4096
  • Tabs: 在没有父级宽度的情况下防止触发截断 (06e5689),关闭#4056
  • Tabs: 使用 link 变体时设置 focus:outline-none (999a0f8)
  • templates: 不在主题文件中写入未使用的变体 (d3df3bb)
  • Toaster: 允许 base 插槽覆盖 (c63d2f3)
  • vue: 使 useAppConfig 具有响应性 (869c070),关闭#3952

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.1.1...v3.1.2

v3.1.1

🚀 功能

  • useOverlay: 添加 closeAll 方法 (#3984) (ac4c194)
  • useOverlay: 添加 isOpen 方法以检查覆盖状态 (#4041) (a4f3f6d)

🐛 错误修复

  • Calendar: 在网格行中添加 place-items-center (#4034) (8dfdd63)
  • defineShortcuts: 在非 macOS 平台上将 meta 转换回 ctrl (f3b8b17),关闭#3869 #3318
  • module: 支持 nuxt-nightly (#3996) (bc0a296)
  • NavigationMenu: 从内容插槽中移除 sm:w-auto (aebf0b3),关闭#3987
  • RadioGroup: 改进 items value 字段类型 (#3995) (195773e)
  • templates: 在开发中将 args 放回 watch (#4033) (c5bdec0)
  • theme: 添加缺失的 border-bg / divide-bg 工具类 (82b5f32)
  • theme: 添加缺失的 ring-offset-* 工具类 (#3992) (e5df026)
  • theme: 为命名的 tailwindcss 颜色定义默认阴影 (8acf3c5),关闭#3977
  • theme: 改进 ui 对象的 app config 类型 (591d59f),关闭#3579
  • theme: 使用 @theme inline 正确引用 css 变量 (6131871),关闭#4018
  • useOverlay: 改进类型和文档 (#4012) (39e29fc)

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.1.0...v3.1.1

v3.1.0

✨ 亮点

🎨 改进的实用程序类

我们增强了实用程序类系统,使其更直观且易于使用。虽然 CSS 变量提供了灵活性,但编写像 text-(--ui-text-muted) 这样的类被证明很麻烦。我们引入了三项重大改进

- <div class="text-(--ui-primary)">
+ <div class="text-primary">

- <div class="bg-(--ui-error)">
+ <div class="bg-error">
  • 中性色实用程序 (#3629): 用于文本、背景、边框、环、分隔和轮廓颜色的新实用程序类,它们映射到我们的设计系统变量。这些实用程序支持不透明度修饰符,并自动适应您的颜色模式https://ui.nuxtjs.org.cn/getting-started/theme#neutral
- <div class="text-(--ui-text-muted)">
+ <div class="text-muted">

- <div class="border-(--ui-border)">
+ <div class="border-default">

- <div class="bg-(--ui-bg-elevated)/50">
+ <div class="bg-elevated/50">
- <div class="rounded-(--ui-radius)">
+ <div class="rounded-sm">

- <div class="rounded-[calc(var(--ui-radius)*1.5)]">
+ <div class="rounded-md">

- <div class="rounded-[calc(var(--ui-radius)*2)]">
+ <div class="rounded-lg">

这些更改完全向后兼容 - 现有的基于 CSS 变量的类将继续工作,同时为新代码提供更符合人体工程学的替代方案。

🧩 新组件和功能

<script setup lang="ts">
import type { CheckboxGroupItem, CheckboxGroupValue } from '@nuxt/ui'

const items = ref<CheckboxGroupItem[]>(['System', 'Light', 'Dark'])
const value = ref<CheckboxGroupValue[]>(['System'])
</script>

<template>
  <UCheckboxGroup v-model="value" :items="items" />
</template>
<script setup lang="ts">
import type { RadioGroupItem, RadioGroupValue } from '@nuxt/ui'

const items = ref<RadioGroupItem[]>(['System', 'Light', 'Dark'])
const value = ref<RadioGroupValue>('System')
</script>

<template>
  <URadioGroup v-model="value" variant="table" :items="items" />
</template>

🌉 Inertia.js 集成

Vue 版本现在包含对Inertia.js的内置支持。在您的 vite.config.ts 中使用 inertia: true 选项启用它

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      inertia: true
    })
  ]
})

这会自动将所有组件中的 RouterLink 替换为 InertiaLink,为您的 Inertia.js 应用程序提供无缝集成https://ui.nuxtjs.org.cn/getting-started/installation/vue#inertia

⚡ 模块构建器更新

模块已更新为使用nuxt/module-builder@1.0.0,带来了改进的构建性能和更好的 TypeScript 支持。

在此更改之后,我们重构了组件类型的处理方式,这使得 app.config.ts 更改完全支持 HMR,而以前只在重新加载页面时才有效。

🚨 破坏性变更

  • OverlayProvider:.open() 返回一个覆盖实例 (#3829) (f3098df)

此 PR 将 .open() 更改为返回一个带有 result Promise 属性的覆盖实例,而不是直接返回 Promise,从而提供了更大的灵活性

<script setup lang="ts>
const modal = useOverlay()

- const result = await modal.open({ count: count.value })
+ const instance = modal.open({ count: count.value })
+ const result = await instance.result
</script>

🚀 功能

  • App: 添加全局 portal 属性 (#3688) (29fa462)
  • Carousel: 添加 select 事件 (#3678) (22edfd7)
  • CheckboxGroup: 新组件 (#3862) (9c3d53a)
  • components: 添加新的 content-topcontent-bottom 插槽 (#3886) (1a46394)
  • Form: 添加 attach 属性以选择退出嵌套表单附件 (#3939) (1a0d7a3)
  • Form: 导出加载状态 (#3861) (fdee252)
  • InputMenu/SelectMenu: 处理 resetSearchTermOnSelect (cea881a),关闭#3782
  • InputNumber: 添加对 stepSnappingdisableWheelChange 属性的支持 (#3731) (f5e6284)
  • Modal/Popover/Slideover: 添加 close:prevent 事件 (#3958) (f486423)
  • module: 定义默认颜色阴影 (#3916) (7ac7aa9)
  • module: 定义中性实用程序 (#3629) (d49e0da)
  • module: 动态 rounded-* 实用程序 (#3906) (f9737c8)
  • OverlayProvider:.open() 返回一个覆盖实例 (#3829) (f3098df)
  • PinInput: 添加 autofocus / autofocus-delay 属性 (0456670),关闭#3717
  • RadioGroup: 添加 cardtable 变体 (#3178) (4d138ad)
  • Select: 处理 items 中的 onSelect 字段 (8640831)
  • Table: 有条件地将类应用于 trtd (#3866) (80dfa88)
  • Tabs: 添加 list-leadinglist-trailing 插槽 (#3837) (3447a06)
  • Textarea: 添加 autoresize-delay 属性 (06414d3),关闭#3730
  • Textarea: 添加 iconloading 等属性以匹配 Input (cb193f1)
  • Textarea: 添加 resize-none 类与 autoresize 属性 (ffafd81)
  • unplugin: inertia 的路由支持 (#3845) (d059efc)

🐛 错误修复

  • Accordion:div 用于 header 标签而不是 h3 (75e4792),关闭#3963
  • Alert/Toast: 使用插槽时显示操作 (5086363),关闭#3950
  • Carousel: 在移动设备上将箭头移到容器内部 (d339dcb),关闭#3813
  • CommandPalette: 与其他组件对齐一致 (d25265c)
  • CommandPalette: 增加输入字体大小以避免缩放 (d227a10)
  • CommandPalette: 防止禁用项上的悬停背景 (ba534f1)
  • components: @nuxt/module-builder 升级后重构类型 (#3855) (39c861a)
  • components: 尊重 popper 内容中的 transform-origin (#3919) (01d8dc7)
  • ContextMenu/DropdownMenu: 处理 RTL 模式 (#3744) (1ae5cc0)
  • ContextMenuContent/DropdownMenuContent: 移除不需要的 any (#3741) (97274f1)
  • Form: 输入和输出类型推断 (#3938) (f429498)
  • Form: 提交时失去焦点 (#3796) (8e78eb1)
  • InputMenu/SelectMenu: 正确调用 onSelect 事件 (#3735) (f25fed5)
  • InputMenu/SelectMenu: 防止选择 disabled 项 (8435a0f),关闭#3474
  • InputMenu/SelectMenu: 移除 valueKey 字符串大小写 (9ca213b),关闭#3949 #3331
  • InputMenu/SelectMenu: 支持任意 value (#3779) (52a97e2)
  • InputMenu: 在移除多个项时发出 change (9d2fed1),关闭#3756
  • Link: 代理 download 属性 (#3879) (47cdc2e)
  • NavigationMenu: 添加 sm:w-auto 内容插槽 (abe0859),关闭#3788
  • Skeleton: 改进可访问性 (#3613) (3484832)
  • Stepper: iconcontent 插槽上的 ui 属性覆盖 (1d45980),关闭#3785
  • Table: 改进 data 响应性 (#3967) (6e27304)
  • Table: 将 header colspan 传递给 th (#3926) (122e8ac)
  • Tree: 简化可重用模板类型 (#3836) (3deed4c)
  • types: 允许带有破折号的颜色标识符 (#3896) (e5a1e26)
  • types: 处理 ui 属性中的 ClassValue (eea1415),关闭#3860
  • types: 改进动态插槽 (#3857) (8dd9d08)
  • usePortal: 调整 portal 目标解析逻辑 (#3954) (db11db6)
  • vite: vitest 跳过 nuxt 导入转换 (#3925) (c31bffa)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.0.2...v3.1.0

v2.22.0

✨ 亮点

  • deps:@nuxt/module-builder 更新到 v1 (#3801)

模块已更新为使用nuxt/module-builder@1.0.0!

🚨 破坏性变更

  • Form: 放弃对 zodvalibot 的显式支持 (#3618)

我们现在依赖standard-schema进行表单验证,支持 valibotzod。如果您在应用程序中使用它们,请确保升级到 valibot@1.0.0 / zod@3.24.0

🐛 错误修复

  • Link: 正确选取所有 aria-*data-* 属性 (2bef1e2),关闭#3007
  • Table: 复选框仍发出 @select 事件 (#3269) (c0e14d0)
  • Table: 移除模板中的类型注释 (4e96dcc),关闭#3146

完整更新日志: https://github.com/nuxt/ui/compare/v2.21.1...v2.22.0

v3.0.2

🚀 功能

  • Calendar: 允许年份和月份按钮样式 (#3672) (4a2b77d)
  • Table: 添加 empty 属性 (afff54f)

🐛 错误修复

  • Avatar:$attrs 代理到默认插槽 (#3712) (88f349d)
  • Button: 使用 focus:outline-none 而不是 focus:outline-hidden (c231fe5),关闭#3658
  • CommandPalette: 使用 group.id 作为键 (bc61d29)
  • components: 改进泛型类型 (#3331) (b998354)
  • Container: 添加 w-full 类 (df00149)
  • defineShortcuts: 移除 @__NO_SIDE_EFFECTS__ (82e2665)
  • Drawer: 移除 fadeFromIndex 属性代理 (f7604e5)
  • Form: 提交后清除脏状态 (#3692) (3dd88ba)
  • FormField:help 添加到 aria-describedby 属性 (#3691) (20c3392)
  • InputMenu/SelectMenu: 空搜索结果 (94b6e52)
  • InputMenu:update:open 上重置 searchTerm (3074632),关闭#3620
  • Link: 处理 aria-current,如同 NuxtLink / RouterLink (c531d02)
  • Link: 防止在 html 上绑定 active="true" (d73768b)
  • Link: 正确选取所有 aria-*data-* 属性 (ade16b7)
  • Link: 代理 onClick (370054b),关闭#3631
  • NavigationMenu: 在视口上添加 z-index (0095d89),关闭#3654
  • Switch: 防止焦点轮廓上的过渡 (68787b2)
  • Table: caption 插槽上的条件错误 (4ebb94c)
  • Tabs: 移除 focus:outline-hidden 类 (1769d5e)
  • types: 添加 ButtonGroup 缺失的导出 (#3709) (e7e6745)
  • useOverlay: 完善 open 方法类型以推断 close emit 返回类型 (#3716) (bd99c2d)
  • vue: 模拟 nuxtApp.hooksuseRuntimeHook (23bfeb9)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.0.1...v3.0.2

v3.0.1

✨ 亮点

  • module: 处理没有 theme(static) 的 tailwindcss 导入 (#3630) (ecff9ab)

您不再需要在使用 tailwindcss 时使用 theme(static)!🎉

main.css
- @import "tailwindcss" theme(static);
+ @import "tailwindcss";

但是,当您在代码中明确使用 Tailwind CSS 变量时,例如这样,您可能仍然需要它

<span
  :class="`bg-(--color-light) dark:bg-(--color-dark)`"
  :style="{
    '--color-light': `var(--color-${chip}-500)`,
    '--color-dark': `var(--color-${chip}-400)`
  }"
/>

🚨 破坏性变更

  • Form: 放弃对 zodvalibot 的显式支持 (#3617) (9a4bb34)

我们现在依赖standard-schema进行表单验证,支持 valibotzod。如果您在应用程序中使用它们,请确保升级到 valibot@1.0.0 / zod@3.24.0

我们已更新到vaul-vue@0.4.0,它为 Drawer 组件提供支持。不再有 handle 插槽,主题 handle 插槽有一些重要的值发生了变化,但您现在可以访问 handle-only 属性https://ui.nuxtjs.org.cn/components/drawer#handle-only

🚀 功能

  • components: 处理 content 属性中的事件 (5dec0e1)

🐛 错误修复

  • Calendar: 将显示月份之外的日期灰显 (#3639) (a516866)
  • ContextMenu/DropdownMenu:proxySlots 中移除 any (#3623) (764c41a)
  • Modal/Slideover/Toast: 防止不必要的关闭实例化 (f4c417d)
  • module: 处理没有 theme(static) 的 tailwindcss 导入 (#3630) (ecff9ab)
  • module: 将导出中使用的函数标记为纯函数 (#3604) (57efc78)
  • RadioGroup: 处理 items 上的 disabled (fe0bd83),关闭nuxt/ui-pro#911
  • Table: 允许在使用 @select 时打开链接 (#3580) (e80cc15)
  • types: 添加 Icon 缺失的导出 (#3568) (5e62493)
  • unplugin:@compodium/examples 包含在自动导入路径中 (#3585) (cc504b8)
  • useLocale:@nuxt/ui-pro 中使用的唯一符号 (#3603) (dec2730)
  • vue: 缺少 unhead 上下文 (#3589) (0897e9e)

🌐 语言环境

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.0.0...v3.0.1

v3.0.0

我们很高兴推出 Nuxt UI v3,这是一个对我们 UI 库进行全面重新设计,在可访问性、性能和开发人员体验方面带来了显著改进。这次重大更新代表了我们团队和社区超过1,500次提交的专注工作、协作和创新。

阅读博客文章公告https://nuxtjs.org.cn/blog/nuxt-ui-v3

开始使用 Nuxt UI v3 →

✨ 亮点

🧩 Reka UI: 新的基础

我们已从Headless UI过渡到Reka UI作为我们的核心组件基础,带来了

  • 扩展的组件库:访问 55+ 个原始组件,显著扩展了我们的组件产品
  • 面向未来的开发:受益于 Reka UI 日益增长的普及和持续改进
  • 一流的可访问性:内置可访问性功能,与我们对包容性设计的承诺保持一致

🚀 Tailwind CSS v4 集成

Nuxt UI 现在利用最新的Tailwind CSS v4,带来了

  • 卓越的性能:完整构建速度提高多达 5 倍,增量构建速度提高 100 倍以上
  • 简化的工具链:内置导入处理、供应商前缀和零额外工具的语法转换
  • CSS 优先配置:直接在 CSS 中自定义和扩展框架,而不是 JavaScript 配置

🎨 Tailwind Variants

我们已经采纳Tailwind Variants来支持我们的设计系统,提供

  • 动态样式:使用强大直观的 API 创建灵活的组件变体
  • 类型安全:全面的 TypeScript 支持,带有智能自动完成功能
  • 智能冲突解决:通过可预测的结果高效合并冲突样式

📝 增强的 TypeScript 集成

Nuxt UI 提供了显著改进的 TypeScript 支持

  • 基于您的主题配置的组件属性的智能自动完成
  • 使用Vue 3 Generics构建的基于泛型的组件,具有改进的插槽和事件类型推断
  • 利用 Tailwind Variants 的类型安全主题,带有可自定义的扩展配置类型

🔄 Vue 兼容性

通过在您的配置中添加 Vite 和 Vue 插件,可以在任何 Vue 项目中使用 Nuxt UI,而无需 Nuxt

  • 自动导入:组件和可组合项自动导入并全局可用
  • 完整主题:全面主题支持,可自定义颜色、大小、变体等
  • 卓越的开发人员体验:全面的 TypeScript 支持,带有 IntelliSense 和自动完成

开始使用 Nuxt UI for Vue →

从 v2 迁移

我们希望透明:从 Nuxt UI v2 迁移到 v3 需要付出巨大努力。虽然我们保留了核心概念和组件,但 Nuxt UI v3 已从头开始重建,以提供增强的功能。

要升级您的项目

  1. 阅读我们的详细迁移指南
  2. 在尝试升级之前,请查阅新文档和组件
  3. 在我们的GitHub 仓库

🙏 致谢

报告任何问题。此版本代表了我们团队和社区数千小时的工作。我们感谢所有为实现 Nuxt UI v3 做出贡献的人,特别是 @romhml、@sandros94 和 @hywax 的巨大贡献。

v3.0.0-beta.4

🚨 破坏性变更

Nuxt UI v3.0.0-beta.4 需要 Nuxt v3.16 才能工作,请升级您的 Nuxt 以继续使用 @nuxt/ui

nuxi upgrade --force

🚀 功能

🐛 错误修复

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v3.0.0-beta.3...v3.0.0-beta.4

v2.21.1

🚀 功能

  • Form: 添加标准模式支持 (#2880) (9c36d37)
  • module: 添加 colorMode 选项 (d2ceead),关闭#3143
  • SelectMenu: 添加 inputTargetForm 属性以处理输入验证 (#3107) (feb716c)

🐛 错误修复

  • Alert/Notification: 允许 description ui 覆盖 (125a281),关闭#2554
  • Table: 恢复#2600以修复过多的列数据插槽重新渲染 (#3375) (23d9b51)

👋 新贡献者

完整更新日志: https://github.com/nuxt/ui/compare/v2.21.0...v2.21.1