关于 maz-ui
maz-ui 是面向 Vue 3 和 Nuxt 3 应用的组件库技能,提供组件、组合式函数及配置示例。内容还涉及主题、国际化、无障碍、性能和 MCP 服务设置。
主要功能
- 01Vue 3 与 Nuxt 3 组件库接入
- 02表单、导航、布局与反馈组件
- 03主题、暗色模式与国际化
- 04组合式函数、指令与插件
- 05模板、配置指南及迁移排错
适用场景
- 01为 Vue 或 Nuxt 应用构建界面
- 02实现表单验证、对话框和数据表
- 03配置主题、翻译和服务端渲染
- 04设置面向 AI 助手的 MCP 服务
MCP 相关
README 提及设置 Model Context Protocol 服务,供 Claude Code、Claude Desktop、Cursor 和 Windsurf 集成。该技能包含相关配置参考。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ secondsky/ claude-skills --skill maz-ui安装后在 Claude Code 中输入/maz-ui确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/accessibility.mdcli.mdcomponents-feedback.mdcomponents-forms.mdcomponents-layout.mdcomponents-navigation.mdcomposables.mddirectives.mdform-validation.mdicons.mdmcp.mdmigration-v4.mdperformance.mdplugins.mdresolvers.mdsetup-nuxt.mdsetup-vue.mdssr-ssg.mdtheming.mdtranslations.mdtroubleshooting.md详细介绍
Maz-UI v4 - Vue 与 Nuxt 组件库
Maz-UI 是一套功能全面、独立的组件库,适用于 Vue 3 和 Nuxt 3 应用,提供 50 多个可用于生产环境的组件、强大的主题功能、国际化支持以及出色的开发体验。
最新版本:4.9.3(截至 2026-08-03)
软件包:maz-ui | @maz-ui/nuxt | @maz-ui/themes | @maz-ui/translations | @maz-ui/icons
快速开始
Vue 3 安装
# Install core packages
pnpm add maz-ui @maz-ui/themes
# Or with npm
npm install maz-ui @maz-ui/themes
在 main.ts 中进行设置:
import { createApp } from 'vue'
import { MazUi } from 'maz-ui/plugins/maz-ui'
import { mazUi } from '@maz-ui/themes'
import { en } from '@maz-ui/translations'
import 'maz-ui/styles'
import App from './App.vue'
const app = createApp(App)
app.use(MazUi, {
theme: { preset: mazUi },
translations: { messages: { en } }
})
app.mount('#app')
使用组件:
<script setup>
import MazBtn from 'maz-ui/components/MazBtn'
import MazInput from 'maz-ui/components/MazInput'
import { ref } from 'vue'
const inputValue = ref('')
</script>
<template>
<MazInput v-model="inputValue" label="Name" />
<MazBtn color="primary">Submit</MazBtn>
</template>
Nuxt 3 安装
# Install Nuxt module
pnpm add @maz-ui/nuxt
在 nuxt.config.ts 中进行设置:
export default defineNuxtConfig({
modules: ['@maz-ui/nuxt']
// That's it! Auto-imports enabled 🎉
})
使用组件(无需导入):
<script setup>
// Auto-imported composables
const theme = useTheme()
const toast = useToast()
const inputValue = ref('')
</script>
<template>
<MazInput v-model="inputValue" label="Name" />
<MazBtn color="primary" @click="toast.success('Submitted!')">
Submit
</MazBtn>
</template>
核心功能
🎨 组件(50+)
表单与输入:
MazInput- 带验证状态的文本输入框MazSelect- 下拉选择框MazTextarea- 多行文本输入框MazCheckbox- 带标签的复选框MazRadio- 单选按钮MazSwitch- 切换开关MazSlider- 范围滑块MazInputPhoneNumber- 带验证的国际电话号码输入框MazInputCode- 代码/PIN 输入框MazInputPrice- 带格式化功能的货币输入框MazInputTags- 标签/标记输入框MazDatePicker- 日期选择器MazChecklist- 可搜索的清单
UI 元素:
MazBtn- 带多种样式的按钮MazCard- 容器卡片MazBadge- 标签徽章MazAvatar- 用户头像MazIcon- 图标显示MazSpinner- 加载旋转图标MazTable- 带排序/分页功能的数据表格MazTabs- 标签页导航MazStepper- 步骤指示器MazPagination- 分页控件
覆盖层与模态框:
MazDialog- 模态对话框MazDialogConfirm- 确认对话框MazDrawer- 滑出式抽屉MazBottomSheet- 移动端底部面板MazBackdrop- 覆盖层背景MazPopover- 浮动弹出框MazDropdown- 下拉菜单
反馈与动画:
MazFullscreenLoader- 加载覆盖层MazLoadingBar- 进度条MazCircularProgressBar- 圆形进度条MazReadingProgressBar- 阅读进度指示器MazAnimatedText- 文本动画MazAnimatedElement- 元素动画MazAnimatedCounter- 数字计数动画MazCardSpotlight- 带聚光效果的卡片
布局与显示:
MazCarousel- 图片轮播MazGallery- 图片库MazAccordion- 可折叠面板MazExpandAnimation- 展开/收起动画MazLazyImg- 懒加载图片MazPullToRefresh- 下拉刷新手势MazChart- Chart.js 集成
🔧 组合式函数(14+)
主题:
useTheme()- 主题与深色模式管理
翻译:
useTranslations()- 国际化管理
UI 交互:
useToast()- Toast 通知useDialog()- 编程式对话框useWait()- 加载状态
实用工具:
useBreakpoints()- 响应式断点useWindowSize()- 窗口尺寸useTimer()- 计时器/倒计时useFormValidator()- 表单验证(Valibot)useIdleTimeout()- 空闲状态检测useUserVisibility()- 页面可见性useSwipe()- 滑动手势useReadingTime()- 阅读时间计算useStringMatching()- 字符串工具useDisplayNames()- 本地化显示名称
📌 指令(5)
v-tooltip- 工具提示v-click-outside- 外部点击检测v-lazy-img- 懒加载v-zoom-img- 图片缩放v-fullscreen-img- 全屏图片查看器
🔌 插件(4)
- AOS - 滚动动画
- Dialog - 无需模板的对话框
- Toast - 通知
- Wait - 全局加载状态
主要特性
✅ 独立组件 - 只导入所需内容,零冗余 ✅ 支持 SSR/SSG - 完整支持 Nuxt 3,并提供自动导入 ✅ TypeScript 优先 - 开箱即用的完整类型安全 ✅ 暗色模式 - 内置深色/浅色主题切换 ✅ 支持 Tree-Shaking - 优化打包体积 ✅ 响应式 - 移动端优先设计 ✅ 无障碍 - 符合 ARIA 标准的组件 ✅ 支持主题定制 - 4 个内置预设 + 自定义主题 ✅ i18n - 通过 @maz-ui/translations 支持多语言 ✅ 840+ 个图标 - 优化的 SVG 图标库 (@maz-ui/icons)
模板结构
Maz-UI 提供两套可用于生产环境的模板,按框架分类:
Vue 3 + Vite 模板 (templates/vue/)
- ✅ 纯 Vue 3 和 Vite
- ✅ 使用标准
fetch()API - ✅ 显式导入所有依赖
- ✅ 不依赖特定框架
- ✅ 针对 SPA 开发进行了优化
适用场景:使用 Vite 构建 Vue 3 应用
可用模板:
setup/vite.config.ts- 配置了自动导入的 Vite 配置components/form-basic.vue- 基本表单验证components/form-multi-step.vue- 带步骤条的多步表单components/dialog-confirm.vue- 对话框确认模式components/data-table.vue- 带分页、搜索和排序的数据表格
Nuxt 3 模板 (templates/nuxt/)
- ✅ 针对 Nuxt 3 优化
- ✅ 使用
$fetch(Nuxt 的 ofetch 封装器) - ✅ 利用自动导入功能导入组件和组合式函数
- ✅ 展示 SSR 模式和服务端路由
- ✅ 针对全栈 Nuxt 开发进行了优化
适用场景:构建 Nuxt 3 应用
可用模板:
setup/nuxt.config.ts- 配置了 Maz-UI 模块的 Nuxt 配置components/form-basic.vue- 基本表单验证(自动导入)components/form-multi-step.vue- 多步表单(自动导入)components/dialog-confirm.vue- 对话框模式(自动导入)components/data-table.vue- 支持响应式数据加载的数据表格
两套模板均:
- ✅ 修复所有验证、类型推断和分页问题
- ✅ 遵循框架最佳实践
- ✅ 可用于生产环境且经过全面测试
- ✅ 包含设置配置和组件示例
何时加载参考资料
根据要实现的功能加载参考文件。全部 21 个参考文件按用途分组,方便快速查找:
组件(4 个文件)
components-forms.md- 构建表单、输入控件和验证,处理电话号码、日期、文件上传,以及使用 MazInput、MazSelect、MazCheckbox、MazDatePickercomponents-feedback.md- 添加加载指示器、进度条、动画、提示消息,以及使用 MazFullscreenLoader、MazCircularProgressBar、MazAnimatedText、MazCardSpotlightcomponents-navigation.md- 实现标签页、步骤条、分页,以及使用 MazTabs、MazStepper、MazPaginationcomponents-layout.md- 使用卡片、抽屉、轮播图、图库,以及使用 MazCard、MazAccordion、MazDrawer、MazCarousel、MazGallery
设置与配置(2 个文件)
setup-vue.md- 在 Vue 3 项目中设置 Maz-UI,使用解析器配置自动导入,配置 Vite/Webpack,优化性能setup-nuxt.md- 与 Nuxt 3 集成、模块配置、主题策略(hybrid/buildtime/runtime)、SSR/SSG 注意事项
核心功能(5 个文件)
composables.md- 使用全部 14 个组合式函数:useToast、useTheme、useBreakpoints、useFormValidator、useTimer、useDialog、useTranslations 等directives.md- 添加指令:v-tooltip、v-click-outside、v-lazy-img、v-zoom-img、v-fullscreen-imgplugins.md- 启用插件:AOS(滚动时播放动画)、Dialog、Toast、Wait(加载状态)resolvers.md- 至关重要:使用 MazComponentsResolver、MazDirectivesResolver、MazModulesResolver 配置自动导入,以实现最佳 Tree-Shakingtranslations.md- 实现多语言支持(内置 8 种语言)、自定义语言区域、延迟加载、SSR 水合
工具与集成(3 个文件)
icons.md- 使用 @maz-ui/icons package(840+ 个图标)、MazIcon 组件、图标尺寸、颜色和动画cli.md- 使用 @maz-ui/cli(旧版 v3)、主题配置、迁移到 v4 主题系统mcp.md- 设置 Model Context Protocol 服务,以集成 AI 助手(Claude Code、Claude Desktop、Cursor、Windsurf)
高级主题(5 个文件)
theming.md- 自定义主题、深色模式、配色方案、CSS 变量、4 个内置预设(mazUi、ocean、pristine、obsidian)performance.md- Bundle 优化、tree-shaking、延迟加载、代码拆分、将 bundle 大小从约 300KB 缩减至约 15KBssr-ssg.md- 全面的 SSR/SSG 指南:主题策略、关键 CSS、防止 hydration、避免深色模式闪屏、静态站点生成accessibility.md- 符合 WCAG 2.1 AA 标准、键盘导航、屏幕阅读器支持、ARIA 属性、颜色对比度form-validation.md- 深入介绍 useFormValidator、Valibot 集成、5 种验证模式(lazy、aggressive、eager、blur、progressive)、TypeScript 类型推断
故障排除(2 个文件)
migration-v4.md- 从 Maz-UI v3 升级到 v4、破坏性变更、API 变更、组件重命名、TypeScript 更新troubleshooting.md- 调试错误、常见问题、配置问题、SSR hydration、bundle 大小问题
6 个常见错误
1. 缺少主题插件错误
错误:"useTheme must be used within MazUi plugin installation"
原因:未安装 MazUi 插件或已禁用主题 composable
修复:
// Vue
app.use(MazUi, { theme: { preset: mazUi } })
// Nuxt
export default defineNuxtConfig({
mazUi: {
composables: { useTheme: true },
theme: { preset: 'maz-ui' }
}
})
2. 自动导入不起作用(Nuxt)
错误:安装 Nuxt 模块后仍找不到组件/composable 原因:模块配置不正确或存在缓存问题 修复:
# Clear Nuxt cache
rm -rf .nuxt node_modules/.cache
pnpm install
验证 nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@maz-ui/nuxt']
})
3. 样式未应用
错误:组件已渲染,但没有样式 原因:未导入 CSS Vue 修复:
import 'maz-ui/styles' // Add this line
Nuxt 修复:
export default defineNuxtConfig({
mazUi: {
css: { injectMainCss: true } // Ensure this is true
}
})
4. 组件的 TypeScript 错误
错误:Cannot find module 'maz-ui/components/MazBtn'
原因:缺少类型定义或导入路径不正确
修复:
// Correct import
import MazBtn from 'maz-ui/components/MazBtn'
// Or with auto-import (Nuxt)
// No import needed, just use <MazBtn>
确保 tsconfig.json 包含:
{
"compilerOptions": {
"types": ["maz-ui/types"]
}
}
5. 电话号码输入框无法检测国家/地区
错误:MazInputPhoneNumber 无法检测国家/地区或显示了错误的旗帜
原因:缺少 libphonenumber-js 依赖,或未加载国家/地区数据
修复:
# Install peer dependency
pnpm add libphonenumber-js
<MazInputPhoneNumber
v-model="phone"
default-country-code="US"
preferred-countries="['US', 'CA', 'GB']"
/>
6. 翻译未加载或显示原始键值
错误:翻译键显示为原始字符串,例如 inputPhoneNumber.phoneInput.example,而不是翻译后的文本
原因:
- 缺少 locale 导入
- 未正确等待延迟加载完成
- 语言文件异步加载失败
- 缺少
preloadFallback配置 - SSR hydration 不匹配(Nuxt)
Vue 修复(立即加载):
import { fr } from '@maz-ui/translations'
app.use(MazUi, {
translations: {
locale: 'fr',
fallbackLocale: 'en',
preloadFallback: true,
messages: { fr } // Import immediately
}
})
Vue 修复(延迟加载):
app.use(MazUi, {
translations: {
locale: 'fr',
preloadFallback: true, // Ensure fallback is preloaded
messages: {
fr: () => import('@maz-ui/translations/locales/fr')
}
}
})
// In component: ALWAYS use await
const { setLocale } = useTranslations()
await setLocale('fr') // Don't forget await!
Nuxt 修复(避免 hydration):
import { fr } from '@maz-ui/translations'
export default defineNuxtConfig({
mazUi: {
translations: {
locale: 'fr',
preloadFallback: true,
messages: {
// CRITICAL: Provide initial locale immediately (not as function)
fr, // SSR requires immediate load
// Other languages can be lazy
es: () => import('@maz-ui/translations/locales/es')
}
}
}
})
错误处理:
<script setup>
const { setLocale } = useTranslations()
const toast = useToast()
async function switchLanguage(locale) {
try {
await setLocale(locale)
toast.success(`Language changed to ${locale}`)
} catch (error) {
console.error('Translation loading error:', error)
toast.error('Failed to load translations')
}
}
</script>
了解更多:加载 references/translations.md,了解全面的 i18n 设置、延迟加载策略和生产环境模式。
Tree-Shaking 最佳实践
直接导入(优化效果最佳):
// ✅✅✅ Best - smallest bundle
import MazBtn from 'maz-ui/components/MazBtn'
import { useToast } from 'maz-ui/composables/useToast'
import { vClickOutside } from 'maz-ui/directives/vClickOutside'
索引导入(效果良好):
// ✅ Good - tree-shakable
import { MazBtn, MazInput } from 'maz-ui/components'
import { useToast, useTheme } from 'maz-ui/composables'
避免使用(无法 tree-shaking):
// ❌ Imports everything
import * as MazUI from 'maz-ui'
高级主题
性能优化
通过合理使用导入和 tree-shaking,可将 Maz-UI 从约 300KB 优化至约 15KB。使用自动导入解析器(MazComponentsResolver、MazDirectivesResolver、MazModulesResolver)以优化 bundle 大小,通过动态导入延迟加载组件,并按功能拆分代码。加载 performance.md,了解全面的 bundle 优化策略。
SSR 与 SSG
全面支持服务器端渲染和静态站点生成,提供三种主题策略:hybrid(注入关键 CSS,不会出现 FOUC)、buildtime(包体积最小,主题为静态主题)和 runtime(可完整切换主题,但包体积较大)。将仅限客户端的组件包裹在 <ClientOnly> 中,避免水合不匹配。加载 ssr-ssg.md,了解关键 CSS 模式、无闪烁的暗色模式以及 SSR/SSG 检查清单。
无障碍功能
所有 Maz-UI 组件均符合 WCAG 2.1 AA 标准,具备适当的 ARIA 属性、键盘导航、焦点管理和屏幕阅读器支持。组件使用语义化 HTML,色彩对比度大于 4.5:1,并提供无障碍表单验证。加载 accessibility.md,了解键盘快捷键、焦点陷阱模式和无障碍测试检查清单。
表单验证
useFormValidator() 组合式函数可与 Valibot 集成,实现类型安全的架构验证,并提供完整的 TypeScript 类型推断。支持 5 种验证模式(lazy、aggressive、eager、blur、progressive)、异步验证、自定义验证器和实时错误消息。加载 form-validation.md,了解全面的验证模式和真实场景示例。
自动导入解析器
对摇树优化至关重要:使用 unplugin-vue-components 和 unplugin-auto-import 搭配 Maz-UI 解析器,仅导入实际用到的内容。与全局导入相比,可将包体积减少 60-90%。配置前缀处理,避免与其他库发生命名冲突。加载 resolvers.md,了解完整的解析器配置和故障排除方法。
渐进式披露摘要
此 SKILL.md 提供:
- 快速入门 - 在 5 分钟内完成运行
- 核心能力 - 概述所有功能
- 错误预防 - 解决 5 大常见问题
如需了解详细实现:
- 根据当前任务加载参考文件(见上文“何时加载参考资料”)
- 每个参考文件都包含全面的指南、代码示例和高级配置
- 参考资料按领域分类(组件、设置、主题等),便于查找
软件包生态系统
- maz-ui - 核心组件库
- @maz-ui/nuxt - 支持自动导入的 Nuxt 3 模块
- @maz-ui/themes - 主题系统和预设
- @maz-ui/translations - i18n 支持(内置 8 种语言:en、fr、es、de、it、pt、ja、zh-CN)
- @maz-ui/icons - 840+ 个经过优化的 SVG 图标
- @maz-ui/mcp - AI Agent 文档服务