Mantine UI Library
Mantine is a fully-featured React components library with TypeScript support. It provides 100+ hooks and components with native dark mode, CSS-in-JS via CSS modules, and excellent accessibility.
v9.6 Highlights
- New
@mantine/lightbox package: full-screen media lightbox with carousel navigation, zoom, thumbnails, video and custom slides, and a store-based API (mount once, open from anywhere, same pattern as Spotlight and Notifications).
- New
ActionBar component: a floating selection-action bar that hosts bulk actions for selected items (for example, selected table rows).
@mantine/charts adds GaugeChart, WaffleChart, MatrixChart, and CandlestickChart; area/bar/line/composite/scatter charts gain referenceAreas and referenceDots; AreaChart gains type="stream"; ScatterChart gains a right Y axis.
@mantine/tiptap RichTextEditor gains table controls, a collapsible Details control, and an InvisibleCharacters formatting-marks control (register the matching Tiptap extensions); Typography now styles details/summary elements.
Notifications gains renderNotification to replace the default notification with fully custom content while keeping enter/exit/drag-dismiss animations.
@mantine/schedule: ResourcesMonthView supports event resizing, time-grid views support configurable drag/resize snap intervals, background events can be interactive, and YearView gains renderDay and withWeekendDays.
Dropzone upgrades to react-dropzone 20 (partial-accept maxFiles behavior, stricter FileWithPath). Node.js 22 or later is now required (Node 20 reached end of life in April 2026).
v9.5 Highlights
- New
Cascader component: select a value from hierarchical data by drilling down through cascading columns, with changeOnSelect, hover-to-expand, search, and a flat-list layout for mobile.
@mantine/charts gains SunburstChart (hierarchical data as concentric rings) and BulletChart (a value against a target and qualitative ranges); the area/bar/line/composite charts add withBrush for a draggable range-selector, and every chart component now ships accessibilityLayer (arrow-key navigation, Enter for tooltips) enabled by default.
- Calendar-based date components gain
withNativeLevelSelect, replacing the calendar header's level button with native <select> elements, paired with yearsSelectRange.
Timeline.Item gains opposite (content on the other side of the line, switching to a centered two-sided layout) and alternate (flips sides per item); FloatingWindow gains a ResizeHandle compound component with a dimensions prop and keyboard resizing; Modal/Drawer gain keepMountedMode ('activity' or 'display-none'); Accordion gains disableCollapse to keep one item always open.
@mantine/schedule ResourcesDayView/ResourcesWeekView accept intervalMinutes greater than 60 for multi-hour slot columns.
9.5.0 fixes an autoClose timer leak in the notifications container.
- The official Vite template replaced ESLint/Prettier/
eslint-config-mantine with oxlint/oxfmt via the new oxc-config-mantine package (internal tooling migration); eslint-config-mantine remains available for projects that keep ESLint.
v9.4 Highlights
- New components:
ComboboxPopover (low-level popover built on the Combobox engine), DataList (key/value description lists), EmptyState (empty/placeholder screens), and Menubar (desktop-style application menu bar).
@mantine/schedule gains ResourcesDayView and ResourcesWeekView for resource-grouped scheduling layouts.
9.4.1 patch fixes: @mantine/form compatibility with the React compiler, Heatmap rendering, and assorted component fixes.
v9.3 Highlights
- New
Splitter component (with use-splitter hook): declarative resizable split-pane layout with horizontal/vertical orientation, collapsible panes, and keyboard navigation. Splitter.Pane must be a direct child of Splitter.
- New component props:
Pagination gains layout="responsive" (CSS container queries), Text/Blockquote gain textWrap, CodeHighlight gains withLineNumbers, OverflowList gains collapseFrom ("start"/"end"), Textarea gains bottomSection (character counters), and the Combobox family (Select, MultiSelect, Autocomplete, TagsInput) supports floatingHeight="viewport".
DateInput gains presets for quick value selection; Menu.Sub supports controlled open state.
9.3.1 patch fixes: notification DOM cleanup on close, Collapse keepMounted, SegmentedControl indicator radius, PinInput placeholder centering, Tree arrow-key navigation skipping hidden nodes, MaskInput with uncontrolled use-form, and stable use-id under an Activity wrapper.
v9.2.2 Highlights
- Accessibility fixes landed across selection controls and sliders:
Checkbox, Radio, and Switch now wire error ids into aria-describedby, while Slider and RangeSlider support aria-valuetext.
- Overlay/input behavior was refined with submenu safe polygon support, duplicate modal-id fixes, PinInput keyboard fixes, and ScrollArea/TreeSelect interaction fixes.
- Patch fixes in
9.2.2 cover Pill overflow, Input sections under local dir overrides, Select clear buttons for falsy primitive values, Modal/Drawer/Spotlight attribute types, and safer Menu.Sub safe-area polygon option forwarding.
@mantine/hooks use-mask now preserves undo and cursor position across paste/cut flows, and @mantine/tiptap controls avoid errors after the editor is destroyed or not initialized.
- Forms and theming were hardened:
@mantine/form handlers are more stable, default validators no longer force async results unexpectedly, and mergeMantineTheme no longer mutates DEFAULT_THEME.headings.
@mantine/schedule continues to mature with better multi-day overlap rendering and corrected positioning for intervalMinutes={60}.
v9.0 Breaking Changes
- React 19.2+ required for all
@mantine/* packages
- Tiptap 3+ required for
@mantine/tiptap
- Recharts 3+ required for
@mantine/charts (no migration needed)
- Follow the official 8.x → 9.x migration guide for full details
Focus
This skill focuses on:
- Vite + TypeScript setup (not Next.js or CRA)
- CSS modules with PostCSS preset
- Vitest for testing
- Oxlint/Oxfmt (
oxc-config-mantine) for linting and formatting, matching the current official Vite template; ESLint (eslint-config-mantine) remains a supported alternative
Installation
See references/getting-started.md for Vite template setup, manual installation, and optional packages.
PostCSS Configuration
Create postcss.config.cjs:
module.exports = {
plugins: {
"postcss-preset-mantine": {},
"postcss-simple-vars": {
variables: {
"mantine-breakpoint-xs": "36em",
"mantine-breakpoint-sm": "48em",
"mantine-breakpoint-md": "62em",
"mantine-breakpoint-lg": "75em",
"mantine-breakpoint-xl": "88em",
},
},
},
};
App Setup
// src/App.tsx
import "@mantine/core/styles.css";
// Other style imports as needed:
// import '@mantine/dates/styles.css';
// import '@mantine/notifications/styles.css';
import { MantineProvider, createTheme } from "@mantine/core";
const theme = createTheme({
// Theme customization here
});
function App() {
return <MantineProvider theme={theme}>{/* Your app */}</MantineProvider>;
}
Critical Prohibitions
- Do NOT skip MantineProvider wrapper — all components require it
- Do NOT forget to import
@mantine/core/styles.css — components won't style without it
- Do NOT mix Mantine with other UI libraries (e.g., Chakra, MUI) in same project
- Do NOT use inline styles for theme values — use CSS variables or theme object
- Do NOT skip PostCSS setup — responsive mixins won't work
- Do NOT forget
key={form.key('path')} when using uncontrolled forms
Core Concepts
1. MantineProvider
Wraps your app, provides theme context and color scheme management.
2. Theme Object
Customize colors, typography, spacing, component default props.
3. Style Props
All components accept style props like mt, p, c, bg, etc.
4. CSS Variables
All theme values exposed as CSS variables (e.g., --mantine-color-blue-6).
5. Polymorphic Components
Many components support component prop to render as different elements.
Definition of Done
References (Detailed Guides)
Setup & Configuration
- getting-started.md — Installation, Vite setup, project structure
- styling.md — MantineProvider, theme, CSS modules, style props, dark mode
Core Features
- components.md — Core UI components patterns
- hooks.md — @mantine/hooks utility hooks
- forms.md — @mantine/form, useForm, validation
- schedule.md — @mantine/schedule calendar scheduling
Development
- testing.md — Vitest setup, custom render, mocking
- eslint.md — Oxlint/Oxfmt (oxc-config-mantine) setup, plus legacy eslint-config-mantine option
Links
1---
2name: mantine-dev
3description: "Mantine UI library for React: 100+ components, hooks, forms, theming, dark mode, CSS modules, and Vite/TypeScript setup. Use when building React applications with Mantine components, configuring theming/dark mode, or working with Mantine hooks and forms. Keywords: Mantine, React, UI components, CSS modules, theming."
4metadata:
5 version: "9.6.0"
6 release_date: "2026-08-31"
7---
8
9# Mantine UI Library
10
11Mantine is a fully-featured React components library with TypeScript support. It provides 100+ hooks and components with native dark mode, CSS-in-JS via CSS modules, and excellent accessibility.
12
13## v9.6 Highlights
14
15- New `@mantine/lightbox` package: full-screen media lightbox with carousel navigation, zoom, thumbnails, video and custom slides, and a store-based API (mount once, open from anywhere, same pattern as Spotlight and Notifications).
16- New `ActionBar` component: a floating selection-action bar that hosts bulk actions for selected items (for example, selected table rows).
17- `@mantine/charts` adds `GaugeChart`, `WaffleChart`, `MatrixChart`, and `CandlestickChart`; area/bar/line/composite/scatter charts gain `referenceAreas` and `referenceDots`; `AreaChart` gains `type="stream"`; `ScatterChart` gains a right Y axis.
18- `@mantine/tiptap` `RichTextEditor` gains table controls, a collapsible `Details` control, and an `InvisibleCharacters` formatting-marks control (register the matching Tiptap extensions); `Typography` now styles `details`/`summary` elements.
19- `Notifications` gains `renderNotification` to replace the default notification with fully custom content while keeping enter/exit/drag-dismiss animations.
20- `@mantine/schedule`: `ResourcesMonthView` supports event resizing, time-grid views support configurable drag/resize snap intervals, background events can be interactive, and `YearView` gains `renderDay` and `withWeekendDays`.
21- `Dropzone` upgrades to `react-dropzone` 20 (partial-accept `maxFiles` behavior, stricter `FileWithPath`). **Node.js 22 or later is now required** (Node 20 reached end of life in April 2026).
22
23## v9.5 Highlights
24
25- New `Cascader` component: select a value from hierarchical data by drilling down through cascading columns, with `changeOnSelect`, hover-to-expand, search, and a flat-list layout for mobile.
26- `@mantine/charts` gains `SunburstChart` (hierarchical data as concentric rings) and `BulletChart` (a value against a target and qualitative ranges); the area/bar/line/composite charts add `withBrush` for a draggable range-selector, and every chart component now ships `accessibilityLayer` (arrow-key navigation, Enter for tooltips) enabled by default.
27- Calendar-based date components gain `withNativeLevelSelect`, replacing the calendar header's level button with native `<select>` elements, paired with `yearsSelectRange`.
28- `Timeline.Item` gains `opposite` (content on the other side of the line, switching to a centered two-sided layout) and `alternate` (flips sides per item); `FloatingWindow` gains a `ResizeHandle` compound component with a `dimensions` prop and keyboard resizing; `Modal`/`Drawer` gain `keepMountedMode` (`'activity'` or `'display-none'`); `Accordion` gains `disableCollapse` to keep one item always open.
29- `@mantine/schedule` `ResourcesDayView`/`ResourcesWeekView` accept `intervalMinutes` greater than 60 for multi-hour slot columns.
30- `9.5.0` fixes an `autoClose` timer leak in the notifications container.
31- The official Vite template replaced ESLint/Prettier/`eslint-config-mantine` with `oxlint`/`oxfmt` via the new `oxc-config-mantine` package (internal tooling migration); `eslint-config-mantine` remains available for projects that keep ESLint.
32
33## v9.4 Highlights
34
35- New components: `ComboboxPopover` (low-level popover built on the Combobox engine), `DataList` (key/value description lists), `EmptyState` (empty/placeholder screens), and `Menubar` (desktop-style application menu bar).
36- `@mantine/schedule` gains `ResourcesDayView` and `ResourcesWeekView` for resource-grouped scheduling layouts.
37- `9.4.1` patch fixes: `@mantine/form` compatibility with the React compiler, Heatmap rendering, and assorted component fixes.
38
39## v9.3 Highlights
40
41- New `Splitter` component (with `use-splitter` hook): declarative resizable split-pane layout with horizontal/vertical orientation, collapsible panes, and keyboard navigation. `Splitter.Pane` must be a direct child of `Splitter`.
42- New component props: `Pagination` gains `layout="responsive"` (CSS container queries), `Text`/`Blockquote` gain `textWrap`, `CodeHighlight` gains `withLineNumbers`, `OverflowList` gains `collapseFrom` ("start"/"end"), `Textarea` gains `bottomSection` (character counters), and the Combobox family (`Select`, `MultiSelect`, `Autocomplete`, `TagsInput`) supports `floatingHeight="viewport"`.
43- `DateInput` gains `presets` for quick value selection; `Menu.Sub` supports controlled open state.
44- `9.3.1` patch fixes: notification DOM cleanup on close, `Collapse` `keepMounted`, `SegmentedControl` indicator radius, `PinInput` placeholder centering, `Tree` arrow-key navigation skipping hidden nodes, `MaskInput` with uncontrolled `use-form`, and stable `use-id` under an `Activity` wrapper.
45
46## v9.2.2 Highlights
47
48- Accessibility fixes landed across selection controls and sliders: `Checkbox`, `Radio`, and `Switch` now wire error ids into `aria-describedby`, while `Slider` and `RangeSlider` support `aria-valuetext`.
49- Overlay/input behavior was refined with submenu safe polygon support, duplicate modal-id fixes, PinInput keyboard fixes, and ScrollArea/TreeSelect interaction fixes.
50- Patch fixes in `9.2.2` cover `Pill` overflow, `Input` sections under local `dir` overrides, `Select` clear buttons for falsy primitive values, Modal/Drawer/Spotlight attribute types, and safer `Menu.Sub` safe-area polygon option forwarding.
51- `@mantine/hooks` `use-mask` now preserves undo and cursor position across paste/cut flows, and `@mantine/tiptap` controls avoid errors after the editor is destroyed or not initialized.
52- Forms and theming were hardened: `@mantine/form` handlers are more stable, default validators no longer force async results unexpectedly, and `mergeMantineTheme` no longer mutates `DEFAULT_THEME.headings`.
53- `@mantine/schedule` continues to mature with better multi-day overlap rendering and corrected positioning for `intervalMinutes={60}`.
54
55## v9.0 Breaking Changes
56
57- **React 19.2+** required for all `@mantine/*` packages
58- **Tiptap 3+** required for `@mantine/tiptap`
59- **Recharts 3+** required for `@mantine/charts` (no migration needed)
60- Follow the official [8.x → 9.x migration guide](https://mantine.dev/changelog/9-0-0/) for full details
61
62## Focus
63
64This skill focuses on:
65
66- **Vite** + **TypeScript** setup (not Next.js or CRA)
67- CSS modules with PostCSS preset
68- Vitest for testing
69- Oxlint/Oxfmt (`oxc-config-mantine`) for linting and formatting, matching the current official Vite template; ESLint (`eslint-config-mantine`) remains a supported alternative
70
71## Installation
72
73See `references/getting-started.md` for Vite template setup, manual installation, and optional packages.
74
75## PostCSS Configuration
76
77Create `postcss.config.cjs`:
78
79```js
80module.exports = {
81 plugins: {
82 "postcss-preset-mantine": {},
83 "postcss-simple-vars": {
84 variables: {
85 "mantine-breakpoint-xs": "36em",
86 "mantine-breakpoint-sm": "48em",
87 "mantine-breakpoint-md": "62em",
88 "mantine-breakpoint-lg": "75em",
89 "mantine-breakpoint-xl": "88em",
90 },
91 },
92 },
93};
94```
95
96## App Setup
97
98```tsx
99// src/App.tsx
100import "@mantine/core/styles.css";
101// Other style imports as needed:
102// import '@mantine/dates/styles.css';
103// import '@mantine/notifications/styles.css';
104
105import { MantineProvider, createTheme } from "@mantine/core";
106
107const theme = createTheme({
108 // Theme customization here
109});
110
111function App() {
112 return <MantineProvider theme={theme}>{/* Your app */}</MantineProvider>;
113}
114```
115
116## Critical Prohibitions
117
118- Do NOT skip MantineProvider wrapper — all components require it
119- Do NOT forget to import `@mantine/core/styles.css` — components won't style without it
120- Do NOT mix Mantine with other UI libraries (e.g., Chakra, MUI) in same project
121- Do NOT use inline styles for theme values — use CSS variables or theme object
122- Do NOT skip PostCSS setup — responsive mixins won't work
123- Do NOT forget `key={form.key('path')}` when using uncontrolled forms
124
125## Core Concepts
126
127### 1. MantineProvider
128
129Wraps your app, provides theme context and color scheme management.
130
131### 2. Theme Object
132
133Customize colors, typography, spacing, component default props.
134
135### 3. Style Props
136
137All components accept style props like `mt`, `p`, `c`, `bg`, etc.
138
139### 4. CSS Variables
140
141All theme values exposed as CSS variables (e.g., `--mantine-color-blue-6`).
142
143### 5. Polymorphic Components
144
145Many components support `component` prop to render as different elements.
146
147## Definition of Done
148
149- [ ] MantineProvider wraps the app
150- [ ] Styles imported (`@mantine/core/styles.css`)
151- [ ] PostCSS configured with mantine-preset
152- [ ] Theme customization in createTheme
153- [ ] Color scheme (light/dark) handled
154- [ ] TypeScript types working
155- [ ] Tests pass with Vitest + custom render
156
157## References (Detailed Guides)
158
159### Setup & Configuration
160
161- [getting-started.md](references/getting-started.md) — Installation, Vite setup, project structure
162- [styling.md](references/styling.md) — MantineProvider, theme, CSS modules, style props, dark mode
163
164### Core Features
165
166- [components.md](references/components.md) — Core UI components patterns
167- [hooks.md](references/hooks.md) — @mantine/hooks utility hooks
168- [forms.md](references/forms.md) — @mantine/form, useForm, validation
169- [schedule.md](references/schedule.md) — @mantine/schedule calendar scheduling
170
171### Development
172
173- [testing.md](references/testing.md) — Vitest setup, custom render, mocking
174- [eslint.md](references/eslint.md) — Oxlint/Oxfmt (oxc-config-mantine) setup, plus legacy eslint-config-mantine option
175
176## Links
177
178- [Documentation](https://mantine.dev)
179- [Releases](https://github.com/mantinedev/mantine/releases)
180- [GitHub](https://github.com/mantinedev/mantine)
181- [npm](https://www.npmjs.com/package/@mantine/core)
182- [Vite template](https://github.com/mantinedev/vite-template)
183- [LLM docs](https://mantine.dev/llms.txt)