Render Notifications in a Sidebar
The @magicbell/magicbell-react
package provides the helpers you need to render your notification inbox the way that better suits your needs.
To render the notification inbox in a sidebar or off-canvas, you can use these components and hooks:
MagicBellProvider
, it takes care of establishing the connection with MagicBell's servers, and,
as its name implies, creates a React context for the notification inbox.NotificationList
, it renders all your notifications in an infinite-scroll list.Bell
, renders the bell and the badge of unseen/unread notifications.useNotifications
, it returns the list of notifications updated in real-time.
Here you have a full example:
import React, { useState } from 'react';
import { Bell, NotificationList, useNotifications } from '@magicbell/magicbell-react';
function Header() {
const notifications = useNotifications();
const [isSidebarOpen, setIsSidebarOpen] = useState(false);
const toggleSidebar = () => {
setIsSidebarOpen(!isSidebarOpen);
};
return (
<header>
<Bell onClick={toggleSidebar} />
{isSidebarOpen ? (
<div className="sidebar">
<NotificationList notifications={notifications} />
</div>
) : null}
</header>
);
}
export default function App() {
return (
<MagicBellProvider apiKey="MAGICBELL_API_KEY" userEmail="[email protected]">
<Header />
</MagicBellProvider>
);
}
Note that the useNotifications
hook must be used in a component that is wrapped with the MagicBellProvider
, otherwise React will raise an error.
The @magicbell/magicbell-react
does not export a sidebar component. Your UI library might provide one.