@bug-on/m3-expressive 1.3.3 → 1.3.5
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/CHANGELOG.md +21 -0
- package/README.md +31 -7
- package/dist/assets/material-symbols-cdn.css +17 -23
- package/dist/buttons.js +129 -35
- package/dist/buttons.js.map +1 -1
- package/dist/buttons.mjs +129 -35
- package/dist/buttons.mjs.map +1 -1
- package/dist/{core-DyEy8H9Z.d.ts → core-Cckt8qEm.d.ts} +11 -8
- package/dist/{core-D8FdHY6I.d.mts → core-DDfG4pym.d.mts} +11 -8
- package/dist/core.d.mts +2 -3
- package/dist/core.d.ts +2 -3
- package/dist/core.js +7 -7
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +8 -7
- package/dist/core.mjs.map +1 -1
- package/dist/fading-blur-mask--uZbBKLj.d.mts +77 -0
- package/dist/fading-blur-mask--uZbBKLj.d.ts +77 -0
- package/dist/feedback.js +1 -1
- package/dist/feedback.js.map +1 -1
- package/dist/feedback.mjs +1 -1
- package/dist/feedback.mjs.map +1 -1
- package/dist/forms.js +1 -1
- package/dist/forms.js.map +1 -1
- package/dist/forms.mjs +1 -1
- package/dist/forms.mjs.map +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +270 -127
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +271 -127
- package/dist/index.mjs.map +1 -1
- package/dist/layout.d.mts +5 -3
- package/dist/layout.d.ts +5 -3
- package/dist/layout.js +61 -6
- package/dist/layout.js.map +1 -1
- package/dist/layout.mjs +61 -7
- package/dist/layout.mjs.map +1 -1
- package/dist/material-symbols-cdn.css +17 -23
- package/dist/navigation.d.mts +25 -83
- package/dist/navigation.d.ts +25 -83
- package/dist/navigation.js +22 -9
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +22 -9
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlays.js +1 -1
- package/dist/overlays.js.map +1 -1
- package/dist/overlays.mjs +1 -1
- package/dist/overlays.mjs.map +1 -1
- package/dist/pickers.d.mts +12 -0
- package/dist/pickers.d.ts +12 -0
- package/dist/pickers.js +98 -65
- package/dist/pickers.js.map +1 -1
- package/dist/pickers.mjs +98 -65
- package/dist/pickers.mjs.map +1 -1
- package/dist/{typography-339RV6v7.d.mts → typography-CKTjvlZ4.d.mts} +25 -0
- package/dist/{typography-339RV6v7.d.ts → typography-CKTjvlZ4.d.ts} +25 -0
- package/dist/typography.css +1 -1
- package/llms-full.txt +17 -13
- package/llms.txt +11 -6
- package/package.json +18 -18
|
@@ -97,14 +97,39 @@ interface FontVariationAxes {
|
|
|
97
97
|
ROND?: number;
|
|
98
98
|
/**
|
|
99
99
|
* Weight axis. Overrides `font-weight` via variation settings.
|
|
100
|
+
* Range: `100` (thin) – `1000` (extra black).
|
|
100
101
|
* @default font default
|
|
101
102
|
*/
|
|
102
103
|
wght?: number;
|
|
103
104
|
/**
|
|
104
105
|
* Width axis. Controls glyph condensation/expansion.
|
|
106
|
+
* Range: `75` (condensed) – `125` (expanded).
|
|
105
107
|
* @default font default
|
|
106
108
|
*/
|
|
107
109
|
wdth?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Optical Size axis. Adjusts stroke thickness, proportions, and spacing
|
|
112
|
+
* for optimal readability at different text sizes.
|
|
113
|
+
* Range: `6` (caption/fine print) – `144` (display/banner).
|
|
114
|
+
*
|
|
115
|
+
* Note: Browsers normally handle optical sizing automatically via `font-optical-sizing: auto`.
|
|
116
|
+
* When manually overriding `opsz` in CSS, set `font-optical-sizing: none` to prevent conflicts.
|
|
117
|
+
* @default font default
|
|
118
|
+
*/
|
|
119
|
+
opsz?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Grade axis. Modifies stroke weight/density without changing layout, line wrapping, or glyph advance widths.
|
|
122
|
+
* Ideal for dark mode adjustments or subtle hover/emphasis states.
|
|
123
|
+
* Range: `-200` (light grade) – `150` (heavy grade).
|
|
124
|
+
* @default 0
|
|
125
|
+
*/
|
|
126
|
+
GRAD?: number;
|
|
127
|
+
/**
|
|
128
|
+
* Slant axis. Applies font-designed slant angle in degrees.
|
|
129
|
+
* Range: `-15` (15-degree forward slant) – `0` (upright).
|
|
130
|
+
* @default 0
|
|
131
|
+
*/
|
|
132
|
+
slnt?: number;
|
|
108
133
|
/** Any additional named variation axis supported by the font. */
|
|
109
134
|
[axis: string]: number | undefined;
|
|
110
135
|
}
|
|
@@ -97,14 +97,39 @@ interface FontVariationAxes {
|
|
|
97
97
|
ROND?: number;
|
|
98
98
|
/**
|
|
99
99
|
* Weight axis. Overrides `font-weight` via variation settings.
|
|
100
|
+
* Range: `100` (thin) – `1000` (extra black).
|
|
100
101
|
* @default font default
|
|
101
102
|
*/
|
|
102
103
|
wght?: number;
|
|
103
104
|
/**
|
|
104
105
|
* Width axis. Controls glyph condensation/expansion.
|
|
106
|
+
* Range: `75` (condensed) – `125` (expanded).
|
|
105
107
|
* @default font default
|
|
106
108
|
*/
|
|
107
109
|
wdth?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Optical Size axis. Adjusts stroke thickness, proportions, and spacing
|
|
112
|
+
* for optimal readability at different text sizes.
|
|
113
|
+
* Range: `6` (caption/fine print) – `144` (display/banner).
|
|
114
|
+
*
|
|
115
|
+
* Note: Browsers normally handle optical sizing automatically via `font-optical-sizing: auto`.
|
|
116
|
+
* When manually overriding `opsz` in CSS, set `font-optical-sizing: none` to prevent conflicts.
|
|
117
|
+
* @default font default
|
|
118
|
+
*/
|
|
119
|
+
opsz?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Grade axis. Modifies stroke weight/density without changing layout, line wrapping, or glyph advance widths.
|
|
122
|
+
* Ideal for dark mode adjustments or subtle hover/emphasis states.
|
|
123
|
+
* Range: `-200` (light grade) – `150` (heavy grade).
|
|
124
|
+
* @default 0
|
|
125
|
+
*/
|
|
126
|
+
GRAD?: number;
|
|
127
|
+
/**
|
|
128
|
+
* Slant axis. Applies font-designed slant angle in degrees.
|
|
129
|
+
* Range: `-15` (15-degree forward slant) – `0` (upright).
|
|
130
|
+
* @default 0
|
|
131
|
+
*/
|
|
132
|
+
slnt?: number;
|
|
108
133
|
/** Any additional named variation axis supported by the font. */
|
|
109
134
|
[axis: string]: number | undefined;
|
|
110
135
|
}
|
package/dist/typography.css
CHANGED
package/llms-full.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# @bug-on/m3-expressive — Full AI Documentation (
|
|
1
|
+
# @bug-on/m3-expressive — Full AI Documentation & API Specification (Latest Stable Release)
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This document provides complete, canonical context for the `@bug-on/m3-expressive` ecosystem (React 19 + Tailwind CSS v4 + Motion for React), including core principles, multi-package architecture, styling guides, component references, subpath exports, and AI gotchas.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -113,7 +113,10 @@ Icons use **Material Symbols** (Variable Font).
|
|
|
113
113
|
<Icon name="search" weight={500} size={24} />
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
- Standard CDN
|
|
116
|
+
- Standard CDN setup:
|
|
117
|
+
- Base styles: `@import "@bug-on/m3-expressive/material-symbols-cdn.css";` and `@import "@bug-on/m3-expressive/typography.css";` in root CSS.
|
|
118
|
+
- React + Vite: Add `<link rel="preconnect" ...>` and `<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=block" />` to `index.html` inside `<head>`.
|
|
119
|
+
- Next.js (App Router): Add `<MaterialSymbolsPreconnect variants={["rounded"]} display="block" />` in `app/layout.tsx` inside `<head>`.
|
|
117
120
|
- Offline / Self-hosted imports: `pnpm add @bug-on/m3-fonts`, then `@import "@bug-on/m3-fonts/typography.css";` and `@import "@bug-on/m3-fonts/material-symbols.css";`
|
|
118
121
|
|
|
119
122
|
---
|
|
@@ -222,16 +225,17 @@ import {
|
|
|
222
225
|
|
|
223
226
|
## Subpath Exports Map
|
|
224
227
|
|
|
225
|
-
- `@bug-on/m3-expressive` —
|
|
226
|
-
- `@bug-on/m3-expressive/index.css` — **REQUIRED**:
|
|
227
|
-
- `@bug-on/m3-expressive/core` —
|
|
228
|
-
- `@bug-on/m3-expressive/buttons` — Button
|
|
229
|
-
- `@bug-on/m3-expressive/forms` — Select
|
|
230
|
-
- `@bug-on/m3-expressive/
|
|
231
|
-
- `@bug-on/m3-expressive/
|
|
232
|
-
- `@bug-on/m3-expressive/
|
|
233
|
-
- `@bug-on/m3-expressive/
|
|
234
|
-
- `@bug-on/m3-expressive/
|
|
228
|
+
- `@bug-on/m3-expressive` — Complete package root exports
|
|
229
|
+
- `@bug-on/m3-expressive/index.css` — **REQUIRED**: Bundled tokens + Tailwind v4 `@theme` + resets
|
|
230
|
+
- `@bug-on/m3-expressive/core` — Base providers (`MD3ThemeProvider`), theme utilities (`createMd3ExpressiveTheme`, `generateM3Theme`, `applyTheme`, `resolveMode`), hooks (`useMediaQuery`, `useDOMRipple`, `useTheme`, `useThemeMode`, `useSnackbar`), `Icon`, `Ripple`, `MaterialSymbolsPreconnect`
|
|
231
|
+
- `@bug-on/m3-expressive/buttons` — `Button`, `IconButton`, `ButtonDistribute`, `FAB`, `ExtendedFAB`, `FABMenu`, `SplitButton`, `ButtonGroup`
|
|
232
|
+
- `@bug-on/m3-expressive/forms` — `TextField`, `Select`, `Chip`, `Checkbox`, `TriStateCheckbox`, `RadioButton`, `RadioGroup`, `Switch`, `Slider`, `RangeSlider`
|
|
233
|
+
- `@bug-on/m3-expressive/navigation` — `NavigationBar`, `NavigationBarItem`, `NavigationRail`, `NavigationRailItem`, `NavigationDrawer`, `Tabs`, `Tab`, `TabsList`, `TabsContent`, `SmallAppBar`, `MediumFlexibleAppBar`, `LargeFlexibleAppBar`, `BottomAppBar`, `DockedToolbar`, `HorizontalFloatingToolbar`, `VerticalFloatingToolbar`, `ToolbarIconButton`, `ToolbarToggleButton`, `Menu`, `ContextMenu`, `VerticalMenu`, `Search`, `SearchBar`, `SearchView`
|
|
234
|
+
- `@bug-on/m3-expressive/overlays` — `Dialog`, `DialogTrigger`, `DialogContent`, `DialogHeader`, `DialogTitle`, `DialogBody`, `DialogFooter`, `DialogClose`, `DialogFullScreenContent`, `Drawer`, `BottomSheet`, `BottomSheetModal`, `SideSheet`, `SideSheetModal`
|
|
235
|
+
- `@bug-on/m3-expressive/feedback` — `Badge`, `BadgedBox`, `LoadingIndicator`, `ProgressIndicator`, `Snackbar`, `SnackbarProvider`, `useSnackbar`, `PlainTooltip`, `RichTooltip`
|
|
236
|
+
- `@bug-on/m3-expressive/layout` — `Card`, `Carousel`, `Divider`, `List`, `ListItem`, `ListDivider`, `ScrollArea`, `CodeBlock`, `TableOfContents`, `Text`, `Typography`, `FadingBlurMask`
|
|
237
|
+
- `@bug-on/m3-expressive/pickers` — `DatePicker`, `DatePickerDialog`, `DatePickerInput`, `DateRangePicker`, `TimePicker`, `TimePickerDialog`, `TimeInput`, `useDatePickerState`, `useDateRangePickerState`, `useTimePickerState`
|
|
238
|
+
- `@bug-on/m3-expressive/shapes` — `ShapeMedia`, `ShapeSvg`, `ShapeIcon`, `useShapeMorph`
|
|
235
239
|
|
|
236
240
|
---
|
|
237
241
|
|
package/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @bug-on/m3-expressive
|
|
2
2
|
|
|
3
|
-
> MD3 Expressive Design System for React + Tailwind v4 +
|
|
3
|
+
> MD3 Expressive Design System for React 19 + Tailwind CSS v4 + Motion for React (Current Stable Release).
|
|
4
4
|
|
|
5
5
|
> [!WARNING]
|
|
6
6
|
> Bug On MD3 Expressive only supports **Tailwind CSS v4** (peer dependency `tailwindcss: ">=4.0.0"`). **Tailwind CSS v3 is no longer supported**.
|
|
@@ -23,14 +23,19 @@ pnpm add @bug-on/m3-expressive motion
|
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
```css
|
|
26
|
-
/* globals.css — Zero Config Tailwind v4 setup */
|
|
26
|
+
/* globals.css / index.css — Zero Config Tailwind v4 setup */
|
|
27
27
|
@import "tailwindcss";
|
|
28
28
|
@import "@bug-on/m3-expressive/index.css"; /* tokens + @theme + resets (REQUIRED) */
|
|
29
29
|
@import "@bug-on/m3-tailwind"; /* optional: MD3 utilities & elevation */
|
|
30
30
|
@import "@bug-on/m3-expressive/typography.css"; /* optional: typography preset classes */
|
|
31
|
-
@import "@bug-on/m3-expressive/material-symbols-cdn.css"; /*
|
|
31
|
+
@import "@bug-on/m3-expressive/material-symbols-cdn.css"; /* base styles for .md-icon */
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
Material Symbols CDN Font Loading:
|
|
35
|
+
- **React + Vite**: Add font link tags to `index.html` inside `<head>` (use `display=block` to prevent ligature text flashing):
|
|
36
|
+
`<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=block" />`
|
|
37
|
+
- **Next.js (App Router)**: Add `<MaterialSymbolsPreconnect variants={["rounded"]} display="block" />` in `app/layout.tsx` inside `<head>`.
|
|
38
|
+
|
|
34
39
|
For offline or self-hosted fonts:
|
|
35
40
|
```bash
|
|
36
41
|
pnpm add @bug-on/m3-fonts
|
|
@@ -83,13 +88,13 @@ function Root({ children }: { children: React.ReactNode }) {
|
|
|
83
88
|
|
|
84
89
|
- `@bug-on/m3-expressive` — complete package exports
|
|
85
90
|
- `@bug-on/m3-expressive/index.css` — **REQUIRED**: bundled tokens + Tailwind `@theme` + resets
|
|
86
|
-
- `@bug-on/m3-expressive/core` — base providers (`MD3ThemeProvider`), hooks (`useTheme`, `useThemeMode`, `useSnackbar`), `Icon`, `Ripple`
|
|
91
|
+
- `@bug-on/m3-expressive/core` — base providers (`MD3ThemeProvider`), theme utilities (`createMd3ExpressiveTheme`, `generateM3Theme`, `applyTheme`, `resolveMode`), hooks (`useTheme`, `useThemeMode`, `useSnackbar`, `useMediaQuery`, `useDOMRipple`), `Icon`, `Ripple`, `MaterialSymbolsPreconnect`
|
|
87
92
|
- `@bug-on/m3-expressive/buttons` — Button, IconButton, ButtonDistribute, FAB, ExtendedFAB, FABMenu, SplitButton, ButtonGroup
|
|
88
|
-
- `@bug-on/m3-expressive/forms` — TextField, Chip, Checkbox, TriStateCheckbox, RadioButton, RadioGroup, Switch, Slider, RangeSlider, Select
|
|
93
|
+
- `@bug-on/m3-expressive/forms` — TextField, Chip, Checkbox, TriStateCheckbox, RadioButton, RadioGroup, Switch, Slider, RangeSlider, Select
|
|
89
94
|
- `@bug-on/m3-expressive/feedback` — Snackbar, SnackbarProvider, useSnackbar, ProgressIndicator (linear, circular, wavy), LoadingIndicator, Badge, BadgedBox, PlainTooltip, RichTooltip
|
|
90
95
|
- `@bug-on/m3-expressive/navigation` — NavigationBar, NavigationRail, NavigationDrawer, Tabs, Tab, SmallAppBar, MediumFlexibleAppBar, LargeFlexibleAppBar, BottomAppBar, DockedToolbar, HorizontalFloatingToolbar, VerticalFloatingToolbar, Menu, ContextMenu, VerticalMenu, Search
|
|
91
96
|
- `@bug-on/m3-expressive/overlays` — Dialog, DialogFullScreenContent, Drawer, BottomSheet, BottomSheetModal, SideSheet, SideSheetModal
|
|
92
|
-
- `@bug-on/m3-expressive/layout` — Card, Carousel, Divider, List, ListItem, ListDivider, ScrollArea, CodeBlock, TableOfContents, Text, Typography
|
|
97
|
+
- `@bug-on/m3-expressive/layout` — Card, Carousel, Divider, List, ListItem, ListDivider, ScrollArea, CodeBlock, TableOfContents, Text, Typography, FadingBlurMask
|
|
93
98
|
- `@bug-on/m3-expressive/pickers` — DatePicker, DatePickerDialog, DatePickerInput, DateRangePicker, TimePicker, TimePickerDialog, TimeInput, state hooks
|
|
94
99
|
- `@bug-on/m3-expressive/shapes` — ShapeMedia, ShapeSvg, ShapeIcon, useShapeMorph
|
|
95
100
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bug-on/m3-expressive",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"description": "Material Design 3 Expressive React components",
|
|
5
5
|
"author": "Bug On",
|
|
6
6
|
"license": "MIT",
|
|
@@ -174,33 +174,33 @@
|
|
|
174
174
|
"@dnd-kit/sortable": "^10.0.0",
|
|
175
175
|
"@dnd-kit/utilities": "^3.2.2",
|
|
176
176
|
"@material/material-color-utilities": "^0.4.0",
|
|
177
|
-
"@radix-ui/react-context-menu": "^2.
|
|
178
|
-
"@radix-ui/react-dialog": "^1.1.
|
|
179
|
-
"@radix-ui/react-dropdown-menu": "^2.1.
|
|
180
|
-
"@radix-ui/react-scroll-area": "^1.2.
|
|
181
|
-
"@radix-ui/react-slot": "^1.
|
|
177
|
+
"@radix-ui/react-context-menu": "^2.3.7",
|
|
178
|
+
"@radix-ui/react-dialog": "^1.1.23",
|
|
179
|
+
"@radix-ui/react-dropdown-menu": "^2.1.24",
|
|
180
|
+
"@radix-ui/react-scroll-area": "^1.2.18",
|
|
181
|
+
"@radix-ui/react-slot": "^1.3.3",
|
|
182
182
|
"@use-gesture/react": "^10.3.1",
|
|
183
183
|
"class-variance-authority": "^0.7.1",
|
|
184
184
|
"clsx": "^2.1.1",
|
|
185
|
-
"tailwind-merge": "^3.
|
|
186
|
-
"@bug-on/m3-
|
|
187
|
-
"@bug-on/m3-
|
|
185
|
+
"tailwind-merge": "^3.6.0",
|
|
186
|
+
"@bug-on/m3-tailwind": "1.2.3",
|
|
187
|
+
"@bug-on/m3-tokens": "1.2.2"
|
|
188
188
|
},
|
|
189
189
|
"devDependencies": {
|
|
190
190
|
"@testing-library/jest-dom": "^6.9.1",
|
|
191
|
-
"@testing-library/react": "^16.3.
|
|
192
|
-
"@testing-library/user-event": "^14.6.
|
|
191
|
+
"@testing-library/react": "^16.3.3",
|
|
192
|
+
"@testing-library/user-event": "^14.6.7",
|
|
193
193
|
"@types/jest-axe": "^3.5.9",
|
|
194
194
|
"@types/react": "^19.0.0",
|
|
195
195
|
"@types/react-dom": "^19.0.0",
|
|
196
|
-
"@vitejs/plugin-react": "^6.
|
|
197
|
-
"@vitest/coverage-v8": "4.1.
|
|
198
|
-
"jest-axe": "^
|
|
199
|
-
"jsdom": "^
|
|
200
|
-
"tsup": "^8.
|
|
196
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
197
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
198
|
+
"jest-axe": "^11.0.0",
|
|
199
|
+
"jsdom": "^30.0.1",
|
|
200
|
+
"tsup": "^8.5.1",
|
|
201
201
|
"typescript": "5.8.3",
|
|
202
|
-
"vite": ">=8.
|
|
203
|
-
"vitest": "^4.1.
|
|
202
|
+
"vite": ">=8.2.2",
|
|
203
|
+
"vitest": "^4.1.11"
|
|
204
204
|
},
|
|
205
205
|
"scripts": {
|
|
206
206
|
"prebuild": "node -e \"const fs=require('fs'); if(fs.existsSync('../../llms.txt')) { fs.copyFileSync('../../llms.txt', 'llms.txt'); fs.copyFileSync('../../llms-full.txt', 'llms-full.txt'); }\"",
|