Releases: gfazioli/mantine-depth-select
2.0.6
⚡ Improvements
Mantine 9.3.0 → 9.3.1
@mantine/core and @mantine/hooks are aligned to 9.3.1 (latest 9.x patch) in the docs site. The package continues to satisfy its existing >=9.0.0 peer range — no API or behavior changes for consumers.
🛠️ Other
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/code-highlight,@mantine/core,@mantine/hooks9.3.0 → 9.3.1 (docs)@storybook/*10.4.2 → 10.4.5oxlint^1.68.0 → ^1.70.0rollup^4.61.0 → ^4.62.0esbuild^0.28.0 → ^0.28.1next,@next/mdx16.2.7 → 16.2.9 (docs)@types/node^22.19.19 → ^22.19.21,@types/react^19.2.16 → ^19.2.17
📝 Summary
Maintenance patch — no API or behavior changes for @gfazioli/mantine-depth-select. Aligns the docs site to Mantine 9.3.1 and refreshes dev tooling (Storybook 10.4.5, oxlint 1.70, Rollup 4.62) plus minor Next/type bumps.
What's Changed
Full Changelog: 2.0.5...2.0.6
2.0.5
⚡ Improvements
Mantine 9.2.2 → 9.3.0
@mantine/core and @mantine/hooks are aligned to 9.3.0 (latest 9.x minor) in the docs site. The package continues to satisfy its existing >=9.0.0 peer range — no API or behavior changes for consumers.
🛠️ Other
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/code-highlight,@mantine/core,@mantine/hooks9.2.2 → 9.3.0 (docs)@storybook/*10.4.1 → 10.4.2oxlint^1.67.0 → ^1.68.0rollup^4.60.4 → ^4.61.0react,react-dom19.2.6 → 19.2.7next16.2.6 → 16.2.7 (docs)tsx^4.22.3 → ^4.22.4vite^6.4.2 → ^6.4.3@types/react^19.2.15 → ^19.2.16
- Yarn 4.15.0 → 4.16.0
📝 Summary
Maintenance patch — no API or behavior changes for @gfazioli/mantine-depth-select. Aligns the docs site to Mantine 9.3.0 and refreshes dev tooling (Storybook 10.4.2, oxlint 1.68, Rollup 4.61) plus minor React/Next/type bumps.
Full Changelog: 2.0.4...2.0.5
2.0.4
⚡ Improvements
Mantine 9.2.2 → 9.3.0
@mantine/core and @mantine/hooks are aligned to 9.3.0 (latest 9.x minor) in the docs site. The package continues to satisfy its existing >=9.0.0 peer range — no API or behavior changes for consumers.
🛠️ Other
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/code-highlight,@mantine/core,@mantine/hooks9.2.2 → 9.3.0 (docs)@storybook/*10.4.1 → 10.4.2oxlint^1.67.0 → ^1.68.0rollup^4.60.4 → ^4.61.0react,react-dom19.2.6 → 19.2.7next16.2.6 → 16.2.7 (docs)tsx^4.22.3 → ^4.22.4vite^6.4.2 → ^6.4.3@types/react^19.2.15 → ^19.2.16
- Yarn 4.15.0 → 4.16.0
📝 Summary
Maintenance patch — no API or behavior changes for @gfazioli/mantine-depth-select. Aligns the docs site to Mantine 9.3.0 and refreshes dev tooling (Storybook 10.4.2, oxlint 1.68, Rollup 4.61) plus minor React/Next/type bumps.
What's Changed
Full Changelog: 2.0.3...2.0.4
2.0.3
⚡ Improvements
Mantine 9.2.1 → 9.2.2
@mantine/core and @mantine/hooks are aligned to 9.2.2 (latest 9.2 patch) in the docs site. The package continues to satisfy its existing >=9.0.0 peer range — no API or behavior changes for consumers.
🛠️ Other
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/code-highlight,@mantine/core,@mantine/hooks9.2.1 → 9.2.2 (docs)@storybook/*10.4.0 → 10.4.1oxfmt^0.50.0 → ^0.52.0oxlint^1.65.0 → ^1.67.0postcss^8.5.14 → ^8.5.15tsx^4.22.1 → ^4.22.3@types/react^19.2.14 → ^19.2.15
- Yarn 4.14.1 → 4.15.0
- Apply oxfmt 0.52 formatting
📝 Summary
Maintenance patch — no API or behavior changes for @gfazioli/mantine-depth-select. Aligns to Mantine 9.2.2 and refreshes dev tooling (oxfmt 0.52, oxlint 1.67, Storybook 10.4.1) plus minor type/PostCSS/tsx bumps.
What's Changed
Full Changelog: 2.0.2...2.0.3
2.0.2
⚡ Improvements
1. Documentation site moved to Next.js 16
The docs/ workspace has been upgraded from Next.js 15.5 to Next.js 16.2.6 (@next/mdx aligned to ^16.2.6). The build now runs under Turbopack by default, which is faster on cold builds and noticeably snappier in dev mode. No change for consumers of the npm package — Next.js is a docs-only dependency.
2. Storybook stories anchored to the top
.storybook/preview.tsx now uses layout: 'padded' instead of 'centered'. Demos are no longer vertically centered and are pinned at the top with consistent padding. Affects local Storybook only.
🛠️ Other Changes
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/*to 9.2.0, React / React DOM to 19.2.6, plus tooling patch bumps (oxfmt, oxlint, postcss, rollup,@types/node,@tabler/icons-react, …). docs/next.config.mjs:remarkPlugins: [remarkSlug]→remarkPlugins: ['remark-slug']so loader options stay serializable under Turbopack (mandatory in Next 16).docs/next.config.mjs: removed theeslint.ignoreDuringBuildsoverride that Next 16 no longer accepts.docs/tsconfig.json:jsxset toreact-jsx(mandatory under Next 16).- Header Undolog icon and footer Undolog anchor now point to
https://gfazioli.github.io/. scripts/release.tsrewritten: parsesCHANGELOG.md, fetches GitHub's auto-generated notes, and creates the release viagh release create. The browser form step is gone, andopen+new-github-release-urlhave been dropped from the toolchain.
📝 Summary
A maintenance release with no changes to the public API of @gfazioli/mantine-depth-select: no new props, no removed exports, no behavioral changes. The release brings the docs site to Next.js 16, refreshes dependencies to their latest minor/patch versions, polishes Storybook ergonomics, and automates the GitHub release step so multi-component release sessions no longer require manual copy/paste into the GitHub release form.
What's Changed
Full Changelog: 2.0.1...2.0.2
2.0.1
⚡ Improvements
1. Documentation site moved to Next.js 16
The docs/ workspace has been upgraded from Next.js 15.5 to Next.js 16.2.6 (@next/mdx aligned to ^16.2.6). The build now runs under Turbopack by default, which is faster on cold builds and noticeably snappier in dev mode. No change for consumers of the npm package — Next.js is a docs-only dependency.
2. Storybook stories anchored to the top
.storybook/preview.tsx now uses layout: 'padded' instead of 'centered'. Demos are no longer vertically centered and are pinned at the top with consistent padding. Affects local Storybook only.
🛠️ Other Changes
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/*to 9.2.0, React / React DOM to 19.2.6, plus tooling patch bumps (oxfmt, oxlint, postcss, rollup,@types/node,@tabler/icons-react, …). docs/next.config.mjs:remarkPlugins: [remarkSlug]→remarkPlugins: ['remark-slug']so loader options stay serializable under Turbopack (mandatory in Next 16).docs/next.config.mjs: removed theeslint.ignoreDuringBuildsoverride that Next 16 no longer accepts.docs/tsconfig.json:jsxset toreact-jsx(mandatory under Next 16).- Header Undolog icon and footer Undolog anchor now point to
https://gfazioli.github.io/. scripts/release.tsrewritten: parsesCHANGELOG.md, fetches GitHub's auto-generated notes, and creates the release viagh release create. The browser form step is gone, andopen+new-github-release-urlhave been dropped from the toolchain.
📝 Summary
A maintenance release with no changes to the public API of @gfazioli/mantine-depth-select: no new props, no removed exports, no behavioral changes. The release brings the docs site to Next.js 16, refreshes dependencies to their latest minor/patch versions, polishes Storybook ergonomics, and automates the GitHub release step so multi-component release sessions no longer require manual copy/paste into the GitHub release form.
What's Changed
Full Changelog: 2.0.0...2.0.1
2.0.0
Caution
This release contains breaking changes. The component now requires Mantine 9.x and React 19.
Breaking Changes
1. Mantine 9 and React 19 required
The component has been upgraded to Mantine 9 and React 19. Mantine 7/8 and React 18 are no longer supported at runtime, even though peerDependencies still allows them for workspace alignment1.
2. Toolchain migration: prettier → oxfmt, eslint → oxlint
The project now uses oxfmt for formatting and oxlint for linting.
Bug Fixes
1. style prop specified twice on DepthSelectControls
The <Box> in DepthSelectControls had style={controlsVars} before {...others} spread, which could overwrite consumer styles. Reordered so controlsVars takes precedence.
2. TypeScript 6 strict mode fixes
- Implicit
anyonjustifyMapindex access — addedRecord<string, string>type - Implicit
anyonitemsarray — added explicitDepthSelectItem[]type - Factory callback
(_props, ref)→(_props)with explicit ref extraction (React 19 pattern)
Improvements
1. Memoized items array
items = data ?? [] was creating a new array reference every render, causing all useCallback hooks to be recreated. Now wrapped in useMemo — eliminates 4 lint warnings and improves render performance.
2. Dependencies aligned with workspace template
All devDependencies aligned with mantine-base-component. Legacy dependencies (eslint, prettier, storybook-dark-mode) removed. Stale scripts cleaned up.
Other Changes
- New "Image gallery" demo and docs section showcasing 8 images with loop navigation
- Storybook rewritten: 8 stories (was 4), fixed duplicate controls bug (built-in + children)
- Upgraded TypeScript from 5.x to 6.0.2
- Upgraded Storybook from 8.x to 10.3.4
- CLAUDE.md updated for Mantine 9 and oxfmt/oxlint
- README updated with Mantine 9.x and React 19 requirement
- GitHub topics updated (mantine-v8 → mantine-v9)
- Storybook layout changed to
padded
Migration Guide
Update dependencies
yarn add @gfazioli/mantine-depth-select@latest @mantine/core@^9.0.0 @mantine/hooks@^9.0.0 react@^19.0.0 react-dom@^19.0.0No API changes needed — all props and behavior are fully backward compatible.
Summary
This is a major release that upgrades Mantine Depth Select to Mantine 9 and React 19, fixes TypeScript strict mode issues, memoizes the items array for better performance, and modernizes the toolchain. 35 tests pass with 0 warnings.
What's Changed
New Contributors
Full Changelog: 1.0.0...2.0.0
-
The
peerDependenciesrange is kept wide to align with the workspace standard across all Mantine Extension components. ↩
1.0.0
Changelog
1.0.0 (2026-03-28)
First public release
A 3D stack select component inspired by macOS Time Machine, built on Mantine UI. Navigate through stacked cards with perspective transforms, smooth transitions, and multiple interaction methods.
Features
Core
- 3D Stack Effect — Cards stacked with configurable perspective transforms:
scaleStep,translateYStep,opacityStep,blurStep - Controlled & Uncontrolled — Standard Mantine pattern with
value,defaultValue, andonChange - Configurable visible cards —
visibleCardsprop controls how many cards are visible in the stack - Transition duration —
transitionDurationprop for smooth CSS transitions witheaseeasing - Exit animation — Cards animate out with scale-up and fade when navigating forward
- Render window — Only cards within
[activeIndex-1, activeIndex+visibleCards+1]are rendered in the DOM for performance
Navigation
- Keyboard —
ArrowUp/ArrowDownto navigate,Home/Endto jump to first/last item - Mouse wheel / Trackpad — Scroll navigation with cooldown to prevent over-scrolling; page scroll is blocked while interacting. Disable with
withScrollNavigation={false} - Touch swipe — Vertical swipe gestures for mobile (30px threshold)
- Click on second card — Clicking the card at depth 1 navigates forward
- Loop mode —
loopprop enables infinite navigation wrapping from last to first and vice versa
Controls
- Built-in controls — Arrow buttons with optional label, shown by default (
withControls={true}) - Positionable —
controlsPositionprop:"right"(default) or"left" - Fully customizable —
controlsPropspasses any prop to the built-in controls:w,labelFormatter,justify("start"/"center"/"end"),upIcon,downIcon - Compound component —
DepthSelect.Controlscan be used as children withwithControls={false}for full layout control - Custom controls — Use
withControls={false}and manage navigation externally viavalue/onChange
Accessibility
- WAI-ARIA
listboxpattern withrole="listbox"androle="option" aria-selected,aria-hidden,aria-activedescendantattributes- Configurable
ariaLabelprop (default:"Depth select") focus-visibleoutlines on root and control buttonsprefers-reduced-motionmedia query disables transitions
Styles API
- Selectors:
root,stack,card,controls,controlUp,controlDown,controlLabel - Data attributes:
data-active,data-depth,data-exited,data-disabled,data-controls-position - CSS variables:
--ds-transition-duration,--ds-scale-step,--ds-translate-y-step,--ds-opacity-step,--ds-blur-step,--ds-visible-cards - GPU-optimized with targeted
will-changeon visible cards
Props
| Prop | Type | Default | Description |
|---|---|---|---|
data |
DepthSelectItem[] |
[] |
Array of items (value + view) |
value |
string | number |
— | Controlled value |
defaultValue |
string | number |
first item | Uncontrolled initial value |
onChange |
(value) => void |
— | Change callback |
w |
StyleProp |
— | Width of the stack area |
h |
StyleProp |
— | Height of the stack area |
visibleCards |
number |
4 |
Visible cards in stack |
withControls |
boolean |
true |
Show built-in controls |
controlsPosition |
"right" | "left" |
"right" |
Controls placement |
controlsProps |
DepthSelectControlsProps |
— | Props for built-in controls |
loop |
boolean |
false |
Enable infinite navigation |
withScrollNavigation |
boolean |
true |
Enable wheel/trackpad navigation |
transitionDuration |
number |
400 |
Transition duration (ms) |
scaleStep |
number |
0.1 |
Scale reduction per level |
translateYStep |
number |
30 |
Y offset per level (px) |
opacityStep |
number |
0.15 |
Opacity reduction per level |
blurStep |
number |
1 |
Blur increment per level (px) |
ariaLabel |
string |
"Depth select" |
Accessible label |
Dependencies
- Mantine 8.x (peer dependency)
- React 18/19 (peer dependency)
- No additional runtime dependencies
Full Changelog: https://github.com/gfazioli/mantine-depth-select/commits/1.0.0