✨ Features
Window Menu Bar demo rebuilt on Mantine 9.4 Menubar
The "Window Menu Bar" docs demo now uses Mantine 9.4's new Menubar component instead of hand-rolled Menu triggers. It shows a real desktop-style menu bar (File / Edit / View) inside a Window, with full keyboard navigation between the top-level menus and live actions that drive the canvas — adding/duplicating/removing layers, toggling the grid and changing layout density. Because the Window drag handler ignores interactive targets (the menu triggers carry the menuitem role), the menu bar stays fully usable inside the draggable surface.
🐛 Bug Fixes
WindowGroup closeAll now fires onClose and respects controlled opened (#36)
WindowGroup's closeAll previously forced each window's internal visibility off, bypassing the onClose callback and the controlled opened prop — which desynced controlled windows (visibility went hidden while opened was still true). It now routes through each window's own close handler, so onClose fires for every window and controlled windows stay in sync (the consumer drives opened, exactly like the title-bar close button). The window's internal handleClose was also made identity-stable (it reads onClose from a ref), so the handler registered once with the group always invokes the latest onClose.
📝 Summary
Patch release. Fixes a WindowGroup.closeAll bug where onClose was skipped and controlled windows desynced (#36), and rebuilds the in-window menu bar demo on top of Mantine 9.4's new Menubar component. No public API changes.
What's Changed
Full Changelog: 3.1.7...3.1.8