@maz-ui/mcp 5.3.1-0.canary-2a258c0 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/theme.mjs +5 -0
- package/docs/components/maz-animated-element.md +4 -0
- package/docs/components/maz-animated-text.md +1 -1
- package/docs/components/maz-btn.md +9 -5
- package/docs/ecosystem/nuxt.md +1 -1
- package/docs/ecosystem/themes.md +41 -2
- package/docs/guide/maz-ui-provider.md +1 -1
- package/docs/guide/vue.md +1 -1
- package/docs/manifest.json +1 -1
- package/package.json +4 -4
package/dist/chunks/theme.mjs
CHANGED
|
@@ -15089,6 +15089,10 @@ function presetColors(preset) {
|
|
|
15089
15089
|
...names.map((name) => `| \`${name}\` | ${colorClasses(name)} | ${display(light[name])} | ${display(dark[name])} |`)
|
|
15090
15090
|
];
|
|
15091
15091
|
}
|
|
15092
|
+
function presetColorScale(preset) {
|
|
15093
|
+
const mode = asRecord(preset.overrides.scales).color;
|
|
15094
|
+
return typeof mode === "string" ? [`Color scales: \`${mode}\` (\`scales.color\`), the derivation of the \`-50\`..\`-950\` steps of the brand colors (\`bg-primary-100\`, \`text-accent-700\`...). \`perceptual\` keeps their order and hue with very light or very dark brand colors.`] : [];
|
|
15095
|
+
}
|
|
15092
15096
|
function presetFoundation(preset, wanted) {
|
|
15093
15097
|
const rows = Object.entries(asRecord(preset.overrides.foundation)).filter(([key]) => wanted(FOUNDATION_USAGE[key]?.topic ?? "css-variables")).map(([key, value]) => `| \`${key}\` | \`--maz-${key}\` | ${FOUNDATION_USAGE[key]?.usage ?? "-"} | ${display(value)} |`);
|
|
15094
15098
|
return rows.length > 0 ? ["| Foundation | CSS variable | Used by | Value |", "| --- | --- | --- | --- |", ...rows] : [];
|
|
@@ -15120,6 +15124,7 @@ function renderPreset(preset, wanted, filtered) {
|
|
|
15120
15124
|
const origin = [preset.exportName && `\`${preset.exportName}\``, preset.base && `base \`${preset.base}\``].filter(Boolean).join(", ");
|
|
15121
15125
|
const tables = [
|
|
15122
15126
|
wanted("colors") ? presetColors(preset) : [],
|
|
15127
|
+
wanted("colors") ? presetColorScale(preset) : [],
|
|
15123
15128
|
presetFoundation(preset, wanted),
|
|
15124
15129
|
presetScales(preset, wanted),
|
|
15125
15130
|
wanted("colors") ? presetComponents(preset) : []
|
|
@@ -18,6 +18,10 @@ url: "https://maz-ui.com/components/maz-animated-element"
|
|
|
18
18
|
|
|
19
19
|
## Basic usage
|
|
20
20
|
|
|
21
|
+
**Tip:**
|
|
22
|
+
|
|
23
|
+
This component is SSR friendly: its content is in the server markup and the animation is pure CSS, so it starts on the first paint when the element is in the viewport, without waiting for JavaScript. Below the viewport, it plays when the element enters it. With `prefers-reduced-motion: reduce`, the content is displayed without animation.
|
|
24
|
+
|
|
21
25
|
```vue
|
|
22
26
|
<script lang="ts" setup>
|
|
23
27
|
import MazAnimatedElement from 'maz-ui/components/MazAnimatedElement'
|
|
@@ -20,7 +20,7 @@ url: "https://maz-ui.com/components/maz-animated-text"
|
|
|
20
20
|
|
|
21
21
|
**Tip:**
|
|
22
22
|
|
|
23
|
-
This component is SSR friendly
|
|
23
|
+
This component is SSR friendly: the server renders the same markup as the client, so the text keeps its layout on hydration (no layout shift). The animation is pure CSS and starts on the first paint when the text is in the viewport, without waiting for JavaScript; below the viewport, it plays when the text enters it. With `prefers-reduced-motion: reduce`, the text is displayed without animation.
|
|
24
24
|
|
|
25
25
|
```vue
|
|
26
26
|
<script lang="ts" setup>
|
|
@@ -146,13 +146,17 @@ Choose the size of the rounded with the attribute `rounded-size` and value `none
|
|
|
146
146
|
|
|
147
147
|
The button can be a fab button with the attribute `fab`
|
|
148
148
|
|
|
149
|
+
**Tip: Accessible name**
|
|
150
|
+
|
|
151
|
+
A button that only shows an icon has no text for screen readers: give it an `aria-label` describing the action (`aria-label="Light mode"`), or a `title` on the icon (`:icon="{ icon: MazSun, title: 'Light mode' }"`), which names the icon and so the button.
|
|
152
|
+
|
|
149
153
|
```html
|
|
150
|
-
<MazBtn fab icon="/sun.svg" size="mini" />
|
|
151
|
-
<MazBtn fab icon="/sun.svg" size="xs" />
|
|
152
|
-
<MazBtn fab icon="/sun.svg" size="sm" />
|
|
154
|
+
<MazBtn fab icon="/sun.svg" aria-label="Light mode" size="mini" />
|
|
155
|
+
<MazBtn fab icon="/sun.svg" aria-label="Light mode" size="xs" />
|
|
156
|
+
<MazBtn fab icon="/sun.svg" aria-label="Light mode" size="sm" />
|
|
153
157
|
<MazBtn fab> fab </MazBtn>
|
|
154
|
-
<MazBtn fab icon="/sun.svg" size="lg" />
|
|
155
|
-
<MazBtn fab icon="/sun.svg" size="xl" />
|
|
158
|
+
<MazBtn fab icon="/sun.svg" aria-label="Light mode" size="lg" />
|
|
159
|
+
<MazBtn fab icon="/sun.svg" aria-label="Light mode" size="xl" />
|
|
156
160
|
```
|
|
157
161
|
|
|
158
162
|
## Block
|
package/docs/ecosystem/nuxt.md
CHANGED
|
@@ -124,7 +124,7 @@ export default defineNuxtConfig({
|
|
|
124
124
|
|
|
125
125
|
// Theming System
|
|
126
126
|
theme: {
|
|
127
|
-
preset: 'maz-ui', // 'maz-ui' | 'pristine' | 'ocean' | 'obsidian' | 'nova' | custom object
|
|
127
|
+
preset: 'maz-ui', // 'maz-ui' | 'pristine' | 'ocean' | 'obsidian' | 'nova' | 'folio' | custom object
|
|
128
128
|
strategy: 'runtime', // 'runtime' | 'buildtime'
|
|
129
129
|
darkModeStrategy: 'class', // 'class' | 'media'
|
|
130
130
|
darkClass: 'dark', // class on <html> when colorMode === 'dark' (default: 'dark')
|
package/docs/ecosystem/themes.md
CHANGED
|
@@ -21,7 +21,7 @@ Modern and performant theme system for Maz-UI built on native CSS features (`lig
|
|
|
21
21
|
- **Native widget theming** - `color-scheme` makes scrollbars, native `<select>`, date pickers and autofill follow the active mode automatically
|
|
22
22
|
- **Animated theme switch** - Optional full-page View Transitions via `setColorMode(..., { animate: true })`
|
|
23
23
|
- **Anti-FART** - `<meta name="color-scheme">` injected at boot to prevent any Flash of inAccurate coloR Theme (no setup needed)
|
|
24
|
-
- **Automatic color scales** -
|
|
24
|
+
- **Automatic color scales** - the `-50` to `-950` steps are derived via OKLCh relative color syntax, with an opt-in `perceptual` mode that keeps their order and hue with any base color
|
|
25
25
|
- **Performance Strategies** - Runtime injection or build-time generation according to your needs
|
|
26
26
|
- **Strict TypeScript** - Complete types for perfect DX
|
|
27
27
|
- **Zero FOUC** - Pass the preset object up front; the full CSS is injected synchronously on first paint
|
|
@@ -47,7 +47,7 @@ const app = createApp(App)
|
|
|
47
47
|
|
|
48
48
|
app.use(MazUi, {
|
|
49
49
|
theme: {
|
|
50
|
-
preset: mazUi, // pristine | ocean | obsidian | nova
|
|
50
|
+
preset: mazUi, // pristine | ocean | obsidian | nova | folio
|
|
51
51
|
strategy: 'runtime', // 'runtime' | 'buildtime'
|
|
52
52
|
darkModeStrategy: 'class', // 'class' | 'media' (only if mode is `both`)
|
|
53
53
|
mode: 'both', // 'light' | 'dark' | 'both' (supported color modes)
|
|
@@ -300,6 +300,18 @@ A modern startup / AI / creative preset - electric violet primary, hot coral sec
|
|
|
300
300
|
import { nova } from '@maz-ui/themes/presets'
|
|
301
301
|
```
|
|
302
302
|
|
|
303
|
+
### Folio
|
|
304
|
+
|
|
305
|
+
An electric and modern preset made for long reading, and the one of this documentation: an electric blue primary, an electric magenta secondary and a cyan accent that blend into a plasma gradient, on faintly violet surfaces (almost white in light mode, violet-black in dark mode). Fraunces (serif) for the headings, Inter for the text, Geist Mono for the code, soft 0.625rem `md` radius. In dark mode the color roles turn into bright tones carrying dark text, so they stay readable as text on the surface too. Every text pair reaches WCAG AA.
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
import { folio } from '@maz-ui/themes/presets'
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**Tip: Fonts**
|
|
312
|
+
|
|
313
|
+
Like the other presets, Folio only declares font stacks: load Fraunces, Inter and Geist Mono yourself (self-hosted or from a font service), the stacks fall back to system fonts otherwise.
|
|
314
|
+
|
|
303
315
|
## Rendering Strategies
|
|
304
316
|
|
|
305
317
|
### ⚡ Runtime (Recommended)
|
|
@@ -472,6 +484,32 @@ const codeTheme = definePreset({
|
|
|
472
484
|
})
|
|
473
485
|
```
|
|
474
486
|
|
|
487
|
+
### Color scales
|
|
488
|
+
|
|
489
|
+
The steps `-50` to `-950` of the brand colors (`primary`, `secondary`, `accent`, `info`, `success`, `warning`, `destructive`) are derived from the base color, which is the `500` step. `scales.color` picks the derivation:
|
|
490
|
+
|
|
491
|
+
- `relative` (default): a fixed lightness offset per step. With a very dark or very light base, the scale collapses: half of a navy scale is black, half of a gold scale is white.
|
|
492
|
+
- `perceptual`: each step travels a share of the way between the base and a light or a dark bound, with a chroma capped near white and black. The steps keep their order and their hue whatever the base, and the classes do not change (`bg-accent-300`, `text-primary-700`...).
|
|
493
|
+
|
|
494
|
+
```typescript
|
|
495
|
+
const brandTheme = definePreset({
|
|
496
|
+
base: 'maz-ui',
|
|
497
|
+
overrides: {
|
|
498
|
+
colors: {
|
|
499
|
+
light: { secondary: '#0E1450', accent: '#FFC93C' },
|
|
500
|
+
},
|
|
501
|
+
scales: {
|
|
502
|
+
color: 'perceptual',
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
})
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
- The scales stay dynamic: they follow `updateTheme()` and the light and dark values of the base. A step is relative to the base of each mode: `accent-300` gives two colors in light and dark when the two bases differ.
|
|
509
|
+
- `surface`, `foreground`, `contrast` and `divider` keep the relative scale: the components use it as "one notch darker or lighter" (`bg-surface-600`).
|
|
510
|
+
- The steps are redefined for the maz-ui components (`--maz-color-<role>-<step>`) and for the Tailwind classes of your project (`--color-<role>-<step>`). They take precedence over a step you redefine in your own `@theme`.
|
|
511
|
+
- The browsers clip an out-of-gamut color channel by channel, which can shift its hue: the chroma cap keeps this shift under the visible threshold for almost every color, the most saturated blues and yellows excepted.
|
|
512
|
+
|
|
475
513
|
### Per-component overrides
|
|
476
514
|
|
|
477
515
|
`components` is a small, validated set of per-component knobs. Every entry is per-mode where appropriate so light and dark can drift independently:
|
|
@@ -870,6 +908,7 @@ Multi-step scales under `scales.<key>`.
|
|
|
870
908
|
| --- | --- | --- |
|
|
871
909
|
| `rounded.xs..3xl` | `--maz-rounded-xs..3xl` | `rounded-{key}` (bridged to `--radius-{key}`) |
|
|
872
910
|
| `shadow.{sm, md, lg, xl, elevation}` | `--maz-shadow-style-{key}` | `shadow-{key}` (bridged to `--shadow-{key}`) |
|
|
911
|
+
| `color` (`'relative'` \| `'perceptual'`) | `--maz-color-<role>-50..950`, `--color-<role>-50..950` | `bg-primary-300`... (see Color scales) |
|
|
873
912
|
|
|
874
913
|
> Same naming-collision avoidance as foundation: `rounded.*` (instead of `radius.*`) and `shadow-style-*` (instead of plain `shadow-*`) keep the bridge cycle-free under `prefix(maz)`.
|
|
875
914
|
|
|
@@ -98,7 +98,7 @@ The entire Maz-UI setup is now code-split into the Dashboard chunk.
|
|
|
98
98
|
|
|
99
99
|
```typescript
|
|
100
100
|
interface ThemeOptions {
|
|
101
|
-
preset: ThemePreset // Required - Theme preset (mazUi, ocean, pristine, obsidian, nova, or custom)
|
|
101
|
+
preset: ThemePreset // Required - Theme preset (mazUi, ocean, pristine, obsidian, nova, folio, or custom)
|
|
102
102
|
overrides?: ThemePresetOverrides // Partial overrides for colors, foundation, etc.
|
|
103
103
|
strategy?: 'runtime' | 'buildtime' // CSS generation strategy (default: 'runtime')
|
|
104
104
|
darkModeStrategy?: 'class' | 'media' // Dark mode handling (default: 'class')
|
package/docs/guide/vue.md
CHANGED
|
@@ -83,7 +83,7 @@ app.use(MazUi, {
|
|
|
83
83
|
* @see https://maz-ui.com/ecosystem/themes
|
|
84
84
|
*/
|
|
85
85
|
theme: {
|
|
86
|
-
preset: mazUi, // 'ocean' | 'pristine' | 'obsidian' | 'nova'
|
|
86
|
+
preset: mazUi, // 'ocean' | 'pristine' | 'obsidian' | 'nova' | 'folio'
|
|
87
87
|
overrides: {
|
|
88
88
|
foundation: {
|
|
89
89
|
'space': '0.25rem',
|