1.6 KiB
1.6 KiB
Tab UX Improvements
Overview
Improve the user experience of the tab bar above the viewport. The goal is to make it more flexible and user-friendly.
Features
- Middle-click to close: Allow closing tabs by clicking with the middle mouse button.
- Drag and Drop: Allow reordering tabs freely.
- Tab Groups (Sessions): Allow saving the current set of open tabs as a named group/session and restoring it later.
- Context Menu: Add a right-click context menu to tabs with options like:
- Close
- Close Others
- Close to Right
- Pin Tab (optional, if time permits)
Implementation Plan
1. Dependencies
- Install
@dnd-kit/core,@dnd-kit/sortable,@dnd-kit/utilities.
2. Context Update (TabContext.tsx)
- Add
reorderTabs(newOrder: Tab[])function. - Add state for
tabGroups(saved inlocalStorage). - Add
saveTabGroup(name: string)function. - Add
loadTabGroup(name: string)function. - Add
deleteTabGroup(name: string)function. - Add
closeOtherTabs(path: string)function. - Add
closeTabsToRight(path: string)function.
3. Component Update (TabsBar.tsx)
- Wrap tabs in
DndContextandSortableContext. - Create a
SortableTabcomponent. - Implement
onAuxClickfor middle-click closing. - Add a "Tab Groups" button/menu to the right of the tabs.
- Show saved groups.
- Option to save current session.
- Implement a custom Context Menu for tabs.
Technical Details
- Storage: Use
localStoragefor now. Keys:zentral_tabs,zentral_active_tab,zentral_tab_groups. - Styling: Use MUI components and system.