01Maz-UI
Rendered with the Folio preset Fraunces · rounded-md 0.625rem
oklch(0.54 0.25 264)oklch(0.7 0.19 264)oklch(0.56 0.24 345)oklch(0.72 0.2 345)oklch(0.53 0.12 210)oklch(0.8 0.13 200)61 ready-made components, plus forms, dialogs, toasts and icons. Pick only what you need, give it your colors in minutes.
$ pnpm add maz-ui02Theming, perfected
Rendered with the Pristine preset System UI · rounded-md 0.625rem
oklch(0.22 0.005 286)oklch(0.97 0 0)oklch(0.555 0.205 305)oklch(0.58 0.18 305)oklch(0.562 0.179 254)oklch(0.563 0.191 256)Maz-UI v5
Pick a preset, change a single color, and every component follows, in light and dark mode. This chapter uses the Pristine preset: same components, a different look.
03Live theming
Rendered with the Nova preset Geist · rounded-md 0.5rem
oklch(0.585 0.23 290)oklch(0.72 0.2 290)oklch(0.59 0.22 15)oklch(0.74 0.2 15)oklch(0.75 0.16 200)oklch(0.82 0.15 200)Theme it live
Every card on the right is a real Maz-UI component: type in it, toggle it, slide it. Then pick a preset, a color and a radius, and watch them follow.
Ada Lovelace
Lead engineer
Weekly downloads
128400 +24%
Sprint progress
await definePreset({
base: 'nova',
overrides: {
colors: {
light: { primary: 'oklch(0.585 0.23 290)' },
dark: { primary: 'oklch(0.72 0.2 290)' },
},
scales: { rounded: { md: '0.5rem' } },
},
})04Foundations
Rendered with the Obsidian preset Inter · rounded-md 0.5rem
oklch(0.55 0.205 275)oklch(0.69 0.175 275)oklch(0.59 0.235 0)oklch(0.59 0.21 0)oklch(0.77 0.155 78)oklch(0.815 0.155 78)Why it holds up in production
Import a single component, composable or directive: nothing else ships with it.
Read the guide about Standaloneimport MazBtn from 'maz-ui/components/MazBtn'
import { useToast } from 'maz-ui/composables/useToast'
import { vTooltip } from 'maz-ui/directives/vTooltip'Components render on the server. The Nuxt module auto-imports them and applies the theme without a flash.
Read the guide about SSR and Nuxtexport default defineNuxtConfig({
modules: ['@maz-ui/nuxt'],
mazUi: { theme: { preset: 'ocean' } },
})Written in TypeScript: props, events, slots and options are typed in your editor.
Read the guide about TypeScriptimport type { MazBtnProps } from 'maz-ui/components/MazBtn'
const color: MazBtnProps['color'] = 'primary'Colors, radius, fonts and motion live in a theme preset. Override one token and every component follows.
Read the guide about Theming and tokensimport { definePreset } from '@maz-ui/themes'
import { mazUi } from '@maz-ui/themes/presets/mazUi'
export const brand = definePreset({
base: mazUi,
overrides: {
colors: { light: { primary: 'oklch(0.55 0.2 150)' } },
scales: { rounded: { md: '1rem' } },
},
})Each preset ships both color modes. useTheme switches them and follows the system preference by default.
Read the guide about Dark and lightconst { isDark, toggleDarkMode } = useTheme()Plugins, composables, directives and the helpers of @maz-ui/utils (formatters, debounce, cookies...).
Read the guide about Toolboxconst toast = useToast()
toast.success('Saved')
formatCurrency(1234.5, 'en-US', { currency: 'EUR' })05Ecosystem
Rendered with the Ocean preset Poppins · rounded-md 1rem
oklch(0.55 0.1 220)oklch(0.73 0.12 198)oklch(0.42 0.13 252)oklch(0.56 0.16 252)oklch(0.76 0.13 50)oklch(0.78 0.12 55)The Maz-UI ecosystem
Maz-UI is not only components. Nuxt integration, themes, icons, translations, AI tooling and upgrade codemods: six packages built for it, all released together on v5.4.0. Upgrade them at once, they always match.
06Community
Rendered with the Folio preset Fraunces · rounded-md 0.625rem
oklch(0.54 0.25 264)oklch(0.7 0.19 264)oklch(0.56 0.24 345)oklch(0.72 0.2 345)oklch(0.53 0.12 210)oklch(0.8 0.13 200)Our constellation
Every star is a person who fixed a bug, wrote a component or improved the docs. The brighter the star, the more they contributed.
How Maz-UI ships
Relizy is the release tool behind Maz-UI, by the same author. It reads your Conventional Commits and does the rest, for a single package or a whole monorepo.
Commit
feat(lib): add MazTimeline
Version
Minor bump computed from the commits
Changelog
Written for the users of the package
Publish
Git tag and npm, every package at once
Release
GitHub release and social posts
npx relizy init07Inventory
Rendered with the Maz-UI preset Manrope · rounded-md 0.7rem
oklch(0.5645 0.1773 253.63)oklch(0.5645 0.1773 253.63)oklch(0.555 0.288 299.35)oklch(0.555 0.288 299.35)oklch(0.5445 0.1092 168.15)oklch(0.5445 0.1092 168.15)Everything in the box
Components for the interface, composables and directives for the behavior, plugins for app-wide features like toasts and dialogs. Each line opens its section of the docs.
MazInputPhoneNumberComponentPhone numbers of every country, formatted and validated as you type.MazPopoverComponentOverlays that escape the overflow of their parents, with smart positioning.MazInputComponentText field with labels, icons, validation states and debounce.ToastPluginNotifications with positions, actions and timeouts, from any component.MazTableComponentSorting, search, pagination, selection and virtualized rows.MazChecklistComponentMultiple selection with an integrated search.DialogPluginZero-template dialogs: call a function, await the answer.useFormValidatorComposableTyped form validation with any Standard Schema library: Valibot, Zod, ArkType.v-fullscreen-imgDirectiveOpens an image in fullscreen with zoom and navigation.useDisplayNamesComposableLocalized country and language names from ISO codes, with Intl.DisplayNames.