Support Mantine development
You can now sponsor Mantine development with OpenCollective. All funds are used to improve Mantine and create new features and components.
Sponsor MantineTreeSelect component
New TreeSelect component allows picking one or more values from hierarchical tree data. It supports three selection modes: single, multiple, and checkbox (with parent-child cascade):
Tree select Combobox examples
New Combobox examples showing how to build tree select components from Combobox primitives with connecting lines, expand/collapse chevrons, and proper indentation:
- Tree select – basic single-value tree select
- Tree multi select – multi select with checkbox cascade
- Searchable tree select – tree select with search filtering
- Tree select with checkboxes – single select with expand-on-click
- Virtualized tree select – large tree (~500 nodes) with @tanstack/react-virtual
Notifications swipe dismissal
@mantine/notifications now supports dismissing notifications by dragging them
left or right, and with horizontal scroll swipe while hovered. Both interactions can be disabled
on Notifications, and individual items can opt out with allowClose: false.
use-drag hook
New use-drag hook handles pointer drag gestures with movement tracking, velocity, direction and axis constraints. It uses the Pointer Events API and works with both mouse and touch input:
InlineDateTimePicker component
New InlineDateTimePicker component renders a calendar with a time picker inline, without a dropdown. It supports both default and range modes:
| Mo | Tu | We | Th | Fr | Sa | Su |
|---|---|---|---|---|---|---|
Set type="range" to select a date and time range with two time inputs:
| Mo | Tu | We | Th | Fr | Sa | Su |
|---|---|---|---|---|---|---|
DateTimePicker range support
DateTimePicker now supports type="range" to select
a date and time range. In range mode, two time inputs are displayed in the dropdown
for start and end times:
DateTimePicker valueFormat function
DateTimePicker valueFormat prop now accepts a function in addition
to a dayjs format string. The callback receives the value as a YYYY-MM-DD HH:mm:ss string and
returns the formatted value, which is useful for cases that cannot be expressed with a dayjs
format string:
RollingNumber component
New RollingNumber component animates value changes with rolling digit transitions. Each digit independently rolls to its new position when the value changes:
MaskInput improvements
MaskInput now supports a resetRef prop that assigns a function that
clears the input value imperatively. This is useful because MaskInput is uncontrolled
internally, so setting value from a parent does not clear it:
MaskInput integration with use-form is now documented. Use defaultValue
to seed the initial value and onChangeRaw to write the raw value to form state:
SankeyChart component
New SankeyChart component visualizes flow between nodes as a Sankey diagram where the width of each link is proportional to the flow value:
Reorder pills in MultiSelect and TagsInput
MultiSelect and TagsInput now support reordering
selected pills. Set the new withPillsReorder prop to enable it. Pills can be reordered with
a mouse (drag-and-drop) or keyboard:
- Pills are not part of the
Taborder.ArrowLeftfrom the input (caret at start) moves focus to the last pill. ArrowLeftandArrowRightnavigate between pills (RTL-aware).ArrowRighton the last pill returns focus to the input.Alt + ArrowLeftandAlt + ArrowRightreorder the focused pill (RTL-aware). Focus follows the moved pill so chained moves work.
Reordering is automatically disabled when disabled or readOnly is set. Custom pill renderers
receive a reorderProps payload that can be spread onto the pill element to keep reordering
working:
Selected values can be reordered by dragging pills
Restrict Tree drop targets
Tree component now supports restricting drop targets with the new allowDrop prop.
The callback receives { draggedNode, targetNode, position } and returning false hides the drop
indicator and rejects the drop, so users get proper visual feedback before releasing:
- Pages
- Components (locked)
- package.json
Tree drag handle
Tree component now supports restricting drag initiation to a dedicated handle with
the new withDragHandle prop. The handle spreads dragHandleProps from the renderNode payload.
This is useful when a node contains interactive controls (inputs, buttons) that would otherwise
interfere with dragging:
- Pages
- Components
- package.json
Shared default props for all inputs
Default props set on Input and Input.Wrapper in theme.components now cascade to every
component built on top of them (TextInput, Textarea,
NumberInput, Select, DateInput,
and others). This makes it possible to apply shared size, radius, variant, withAsterisk
and other props to all inputs at once, while still overriding individual components with their
own default props:
Per-day business hours in WeekView
WeekView businessHours prop now accepts a per-day object keyed by day of
the week (0 – Sunday, 6 – Saturday) in addition to the shared [start, end] tuple. Days
missing from the object or set to null are rendered as fully outside business hours, making it
easy to model partial workdays and non-working days: