Skip to content

feat(Sidebar): new component#6038

Merged
benjamincanac merged 70 commits intov4from
feat/sidebar
Mar 10, 2026
Merged

feat(Sidebar): new component#6038
benjamincanac merged 70 commits intov4from
feat/sidebar

Conversation

@benjamincanac
Copy link
Member

@benjamincanac benjamincanac commented Feb 14, 2026

🔗 Linked issue

❓ Type of change

  • 📖 Documentation (updates to the documentation or readme)
  • 🐞 Bug fix (a non-breaking change that fixes an issue)
  • 👌 Enhancement (improving an existing functionality)
  • ✨ New feature (a non-breaking change that adds functionality)
  • 🧹 Chore (updates to the build process or auxiliary tools and libraries)
  • ⚠️ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

New standalone Sidebar component. Collapsible, fixed sidebar that pushes page content. On desktop it renders inline with offcanvas, icon, or none collapse modes. On mobile it opens a Modal, Slideover, or Drawer.

Also ships an AI chat panel in the docs site using the new Sidebar, with live theme customization via tool calls.

📝 Checklist

  • I have linked an issue or discussion.
  • I have updated the documentation accordingly.

@github-actions github-actions bot added the v4 #4488 label Feb 14, 2026
@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 20, 2026

npm i https://pkg.pr.new/@nuxt/ui@6038

commit: 585c0ca

@benjamincanac benjamincanac merged commit 51a1f85 into v4 Mar 10, 2026
17 checks passed
@benjamincanac benjamincanac deleted the feat/sidebar branch March 10, 2026 13:24
@mikenewbon
Copy link
Contributor

@benjamincanac I dont see a thread to comment on - but I see the resize handle in the main docs page example (not working) and is there a reason to use ease-linear instead of in-out?

@benjamincanac
Copy link
Member Author

@mikenewbon Here is fine! It's not a resize handle but a rail you can click on. There is no specific reason for using ease-linear no, I took inspiration from https://ui.shadcn.com/docs/components/radix/sidebar.

@mikenewbon
Copy link
Contributor

@benjamincanac ahh makes sense, I see the cursor difference now. Looking at the other components in Nuxt UI, ease-out feels more natural here. The only places I could find linear easing on an animation or transition across the library are continuous loops (marquee, chat shimmer).

Separately, I was curious whether there's a reason the base Sidebar doesn't support resizable/size props like DashboardSidebar does for completeness, or if there's a longer-term plan to consolidate the two?

@benjamincanac
Copy link
Member Author

@mikenewbon I didn't try to implement it because it added a layer of complexity and in my mind we needed a wrapper component to orchestrate this like we do with DashboardGroup and its injected context but maybe I'm wrong 🤔

@mikenewbon
Copy link
Contributor

@benjamincanac I don't think we need a wrapper component for this, useResizable works standalone with sensible defaults (cookie storage, rem units, per-instance key), so there's nothing to orchestrate. I've opened a quick PR (#6190) to demonstrate. I only suggest this as it would nicely replace custom components in my own projects.

@mtzrmzia
Copy link

When will it be available for use? It doesn't appear in version 4.5.1.

@mikenewbon
Copy link
Contributor

When will it be available for use? It doesn't appear in version 4.5.1.

@mtzrmzia the patch version releases are for bugs/security afaik, it should be released in 4.6.0!

@mtzrmzia
Copy link

When will it be available for use? It doesn't appear in version 4.5.1.

@mtzrmzia the patch version releases are for bugs/security afaik, it should be released in 4.6.0!

@mikenewbon That makes sense, I hope it doesn't take too long 🤞🏾

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v4 #4488

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants