v0.3.0 Custom components
What's Changed
Custom components
Full custom component support across the entire sidebar:
| Slot | Config key | Description |
|---|---|---|
| Nav item | customComponents.NavItem |
Replace individual collection/global links |
| Nav group | customComponents.NavGroup |
Replace group headers with expand/collapse |
| Tab button | customComponents.TabButton |
Replace tab/link buttons in the icon bar |
| Tab icon | iconComponent on tab/link |
Override the icon only, keep default button |
| Nav content area | customComponents.NavContent |
Replace the entire scrollable nav panel |
| Tabs bar slot | type: 'custom' tab item |
Inject arbitrary elements between tabs |
All components are server-rendered and receive serverProps (payload, i18n, user, etc.).
Access control
Added access functions to tabs, links, and custom nav items. Evaluated server-side with full PayloadRequest — fails closed (denies access) when req is unavailable.
{
id: 'admin',
type: 'tab',
icon: 'Settings',
label: 'Admin',
access: ({ req }) => req.user?.role === 'admin',
}Custom tabs bar slots (type: 'custom')
New tab bar item type for injecting arbitrary server-rendered components (separators, custom buttons, etc.) between tabs.
{ id: 'sep', type: 'custom', component: './components/TabSeparator' }Tooltips on tab buttons
Default tab buttons and links now show a tooltip with the tab label on hover/focus, positioned to the right of the sidebar.
Full Changelog: v0.2.1...v0.3.0