Loading...
Loading...
Compare original and translation side by side
maz-ui@maz-ui/nuxt@maz-ui/themes@maz-ui/translations@maz-ui/iconsmaz-ui@maz-ui/nuxt@maz-ui/themes@maz-ui/translations@maz-ui/iconsundefinedundefined
**Setup** in `main.ts`:
```typescript
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>
**在`main.ts`中配置**:
```typescript
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>undefinedundefined
**Setup** in `nuxt.config.ts`:
```typescript
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>
<!-- Auto-imported components -->
<MazInput v-model="inputValue" label="Name" />
<MazBtn color="primary" @click="toast.success('Submitted!')">
Submit
</MazBtn>
</template>
**在`nuxt.config.ts`中配置**:
```typescript
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>
<!-- Auto-imported components -->
<MazInput v-model="inputValue" label="Name" />
<MazBtn color="primary" @click="toast.success('Submitted!')">
Submit
</MazBtn>
</template>MazInputMazSelectMazTextareaMazCheckboxMazRadioMazSwitchMazSliderMazInputPhoneNumberMazInputCodeMazInputPriceMazInputTagsMazDatePickerMazChecklistMazBtnMazCardMazBadgeMazAvatarMazIconMazSpinnerMazTableMazTabsMazStepperMazPaginationMazDialogMazDialogConfirmMazDrawerMazBottomSheetMazBackdropMazPopoverMazDropdownMazFullscreenLoaderMazLoadingBarMazCircularProgressBarMazReadingProgressBarMazAnimatedTextMazAnimatedElementMazAnimatedCounterMazCardSpotlightMazCarouselMazGalleryMazAccordionMazExpandAnimationMazLazyImgMazPullToRefreshMazChartMazInputMazSelectMazTextareaMazCheckboxMazRadioMazSwitchMazSliderMazInputPhoneNumberMazInputCodeMazInputPriceMazInputTagsMazDatePickerMazChecklistMazBtnMazCardMazBadgeMazAvatarMazIconMazSpinnerMazTableMazTabsMazStepperMazPaginationMazDialogMazDialogConfirmMazDrawerMazBottomSheetMazBackdropMazPopoverMazDropdownMazFullscreenLoaderMazLoadingBarMazCircularProgressBarMazReadingProgressBarMazAnimatedTextMazAnimatedElementMazAnimatedCounterMazCardSpotlightMazCarouselMazGalleryMazAccordionMazExpandAnimationMazLazyImgMazPullToRefreshMazChartuseTheme()useTranslations()useToast()useDialog()useWait()useBreakpoints()useWindowSize()useTimer()useFormValidator()useIdleTimeout()useUserVisibility()useSwipe()useReadingTime()useStringMatching()useDisplayNames()useTheme()useTranslations()useToast()useDialog()useWait()useBreakpoints()useWindowSize()useTimer()useFormValidator()useIdleTimeout()useUserVisibility()useSwipe()useReadingTime()useStringMatching()useDisplayNames()v-tooltipv-click-outsidev-lazy-imgv-zoom-imgv-fullscreen-imgv-tooltipv-click-outsidev-lazy-imgv-zoom-imgv-fullscreen-imgtemplates/vue/templates/vue/fetch()setup/vite.config.tscomponents/form-basic.vuecomponents/form-multi-step.vuecomponents/dialog-confirm.vuecomponents/data-table.vuefetch()setup/vite.config.tscomponents/form-basic.vuecomponents/form-multi-step.vuecomponents/dialog-confirm.vuecomponents/data-table.vuetemplates/nuxt/templates/nuxt/$fetchsetup/nuxt.config.tscomponents/form-basic.vuecomponents/form-multi-step.vuecomponents/dialog-confirm.vuecomponents/data-table.vue$fetchsetup/nuxt.config.tscomponents/form-basic.vuecomponents/form-multi-step.vuecomponents/dialog-confirm.vuecomponents/data-table.vuecomponents-forms.mdcomponents-feedback.mdcomponents-navigation.mdcomponents-layout.mdcomponents-forms.mdcomponents-feedback.mdcomponents-navigation.mdcomponents-layout.mdsetup-vue.mdsetup-nuxt.mdsetup-vue.mdsetup-nuxt.mdcomposables.mddirectives.mdplugins.mdresolvers.mdtranslations.mdcomposables.mddirectives.mdplugins.mdresolvers.mdtranslations.mdicons.mdcli.mdmcp.mdicons.mdcli.mdmcp.mdtheming.mdperformance.mdssr-ssg.mdaccessibility.mdform-validation.mdtheming.mdperformance.mdssr-ssg.mdaccessibility.mdform-validation.mdmigration-v4.mdtroubleshooting.mdmigration-v4.mdtroubleshooting.md"useTheme must be used within MazUi plugin installation"// Vue
app.use(MazUi, { theme: { preset: mazUi } })
// Nuxt
export default defineNuxtConfig({
mazUi: {
composables: { useTheme: true },
theme: { preset: 'maz-ui' }
}
})"useTheme must be used within MazUi plugin installation"// Vue
app.use(MazUi, { theme: { preset: mazUi } })
// Nuxt
export default defineNuxtConfig({
mazUi: {
composables: { useTheme: true },
theme: { preset: 'maz-ui' }
}
})undefinedundefined**Verify** `nuxt.config.ts`:
```typescript
export default defineNuxtConfig({
modules: ['@maz-ui/nuxt']
})**验证`nuxt.config.ts`**:
```typescript
export default defineNuxtConfig({
modules: ['@maz-ui/nuxt']
})import 'maz-ui/styles' // Add this lineexport default defineNuxtConfig({
mazUi: {
css: { injectMainCss: true } // Ensure this is true
}
})import 'maz-ui/styles' // 添加此行export default defineNuxtConfig({
mazUi: {
css: { injectMainCss: true } // 确保此值为true
}
})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"]
}
}Cannot find module 'maz-ui/components/MazBtn'// 正确导入方式
import MazBtn from 'maz-ui/components/MazBtn'
// 或使用Nuxt自动导入(无需手动导入)
// 直接使用<MazBtn>即可tsconfig.json{
"compilerOptions": {
"types": ["maz-ui/types"]
}
}MazInputPhoneNumberundefinedMazInputPhoneNumberundefined```vue
<MazInputPhoneNumber
v-model="phone"
default-country-code="US"
preferred-countries="['US', 'CA', 'GB']"
/>```vue
<MazInputPhoneNumber
v-model="phone"
default-country-code="US"
preferred-countries="['US', 'CA', 'GB']"
/>inputPhoneNumber.phoneInput.examplepreloadFallbackimport { fr } from '@maz-ui/translations'
app.use(MazUi, {
translations: {
locale: 'fr',
fallbackLocale: 'en',
preloadFallback: true,
messages: { fr } // Import immediately
}
})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!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.mdinputPhoneNumber.phoneInput.examplepreloadFallbackimport { fr } from '@maz-ui/translations'
app.use(MazUi, {
translations: {
locale: 'fr',
fallbackLocale: 'en',
preloadFallback: true,
messages: { fr } // 立即导入
}
})app.use(MazUi, {
translations: {
locale: 'fr',
preloadFallback: true, // 确保预加载回退语言
messages: {
fr: () => import('@maz-ui/translations/locales/fr')
}
}
})
// 在组件中:必须使用await
const { setLocale } = useTranslations()
await setLocale('fr') // 不要忘记await!import { fr } from '@maz-ui/translations'
export default defineNuxtConfig({
mazUi: {
translations: {
locale: 'fr',
preloadFallback: true,
messages: {
// 关键:立即提供初始语言(不要用函数)
fr, // SSR需要立即加载
// 其他语言可懒加载
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// ✅✅✅ 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'// ❌ Imports everything
import * as MazUI from 'maz-ui'// ✅✅✅ 最佳方式 - 包体积最小
import MazBtn from 'maz-ui/components/MazBtn'
import { useToast } from 'maz-ui/composables/useToast'
import { vClickOutside } from 'maz-ui/directives/vClickOutside'// ✅ 推荐 - 支持摇树优化
import { MazBtn, MazInput } from 'maz-ui/components'
import { useToast, useTheme } from 'maz-ui/composables'// ❌ 导入所有内容
import * as MazUI from 'maz-ui'MazComponentsResolverMazDirectivesResolverMazModulesResolverperformance.mdMazComponentsResolverMazDirectivesResolverMazModulesResolverperformance.md<ClientOnly>ssr-ssg.md<ClientOnly>ssr-ssg.mdaccessibility.mdaccessibility.mduseFormValidator()form-validation.mduseFormValidator()form-validation.mdunplugin-vue-componentsunplugin-auto-importresolvers.mdunplugin-vue-componentsunplugin-auto-importresolvers.md