Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
af11de8
Content for renderbody, renderSubject and renderNotification
Aviatorscode2 Aug 5, 2025
cdf5db9
Added content to the custom notification page
Aviatorscode2 Aug 5, 2025
20d386b
Content for the display HTML in notfications page
Aviatorscode2 Aug 5, 2025
e2775bc
Update description
Aviatorscode2 Aug 5, 2025
eca7c7e
Restructure the name and writiign content for customize bell and popo…
Aviatorscode2 Aug 5, 2025
d170158
Content for the bell and popover and added content to customize notif…
Aviatorscode2 Aug 6, 2025
3fd9b7d
Update content/docs/platform/inbox/advanced-customization/customize-b…
Aviatorscode2 Aug 7, 2025
8df78b1
Update content/docs/platform/inbox/advanced-customization/customize-b…
Aviatorscode2 Aug 7, 2025
49e0841
Update content/docs/platform/inbox/advanced-customization/customize-n…
Aviatorscode2 Aug 7, 2025
23a016b
Update content/docs/platform/inbox/advanced-customization/html-in-not…
Aviatorscode2 Aug 7, 2025
3069090
Update content/docs/platform/inbox/advanced-customization/customize-n…
Aviatorscode2 Aug 7, 2025
fbec862
Update content/docs/platform/inbox/advanced-customization/html-in-not…
Aviatorscode2 Aug 7, 2025
23f4a87
Update content/docs/platform/inbox/advanced-customization/customize-n…
Aviatorscode2 Aug 7, 2025
980020e
Update content/docs/platform/inbox/advanced-customization/customize-n…
Aviatorscode2 Aug 7, 2025
7350215
Update content/docs/platform/inbox/advanced-customization/customize-n…
Aviatorscode2 Aug 7, 2025
192b05a
Update content/docs/platform/inbox/advanced-customization/customize-n…
Aviatorscode2 Aug 7, 2025
fe6f293
Update based on feedback
Aviatorscode2 Aug 7, 2025
1dc1a7a
Update content/docs/platform/inbox/advanced-customization/html-in-not…
jainpawan21 Aug 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions content/docs/platform/inbox/advanced-customization/custom-bell.mdx

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
---
title: 'Customize Bell and Popover'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with "dialog" throughout.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the reason why I stuck to using popover was because, if you check the code, you will see that the components used are called popover and the UI libraries (Radix UI, Shadcn) used refer to it as "popover".

My thought is that using "dialog" instead of popover might be an issue for the developers. Seeing dialog as the heading while the code uses popover could be confusing.

These are my reasons @DianaHackmamba let me know your thoughts.

description: "Learn how to fully customize the inbox component bell and trigger a custom notification feed using your own components or third-party libraries."
icon: 'BellRing'
---

Novu's Inbox component provides a built-in notification bell and popover that displays the notification feed.

This default behavior is suitable for most use cases, but you may want to customize the bell icon or control how and where the notification list is displayed, especially when integrating with your own design system or third-party UI libraries.

## Replace the default bell icon

Use the `renderBell` prop to replace the default bell icon in the inbox component with your own custom component.

![Custom bell](/images/inbox/custom-bell.gif)

<Tabs items={['Custom bell', 'Custom bell with showing unread count']}>
<Tab>

```tsx
import { Inbox } from '@novu/react';

function CustomBell() {
return (
<Inbox
applicationIdentifier="YOUR_APPLICATION_IDENTIFIER"
subscriber="YOUR_SUBSCRIBER_ID"
renderBell={() => {
return (
<div className="bg-blue-300 p-4 inline-flex">
New notifications
</div>
);
}}
/>
);
}
export default CustomBell;
```

</Tab>
<Tab>

```tsx
import { Inbox } from '@novu/react';

function CustomBell() {
return (
<Inbox
applicationIdentifier="YOUR_APPLICATION_IDENTIFIER"
subscriber="YOUR_SUBSCRIBER_ID"
renderBell={(unreadCount) => {
return (
<div className="bg-blue-300 p-4 inline-flex">New {unreadCount }notifications</div>
);
}}
/>
</Inbox>
);
}
export default CustomBell;
```

</Tab>
</Tabs>


## Custom popover trigger
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Custom popover trigger
## Custom dialog trigger


By default, the Inbox component displays the notification popover containing the notification list when the bell icon is clicked. However, you can decouple the display logic and mount the notification content inside your own panel or modal component.

Use the `<InboxContent />` and `<Notifications />` component to display just the notification list. This provides a flexible way to customize the inbox display using external UI libraries like [Radix UI](https://www.radix-ui.com/) or [Shadcn](https://ui.shadcn.com/docs/installation) while maintaining all the core notification functionality.

<Tabs items={['Using <InboxContent /> and Radix UI', 'Using <Notifications /> and Radix UI']}>
<Tab>
```tsx
import { Inbox, InboxContent, Bell } from '@novu/react';
import { Popover, PopoverTrigger } from '@radix-ui/react-popover';
import { PopoverContent } from '@radix-ui/react-popover';


function CustomPopoverPage() {

return (
<Inbox
applicationIdentifier="YOUR_APPLICATION_IDENTIFIER"
subscriber="YOUR_SUBSCRIBER_ID"
>
<Popover>
<PopoverTrigger>
<Bell />
</PopoverTrigger>
<PopoverContent className="h-[600px] w-[400px] p-0">
<InboxContent />
</PopoverContent>
</Popover>
</Inbox>
);
}

export default CustomPopoverPage;
```

</Tab>
<Tab>

```tsx
import { Inbox, Notifications, Bell } from '@novu/react';
import { Popover, PopoverTrigger } from '@radix-ui/react-popover';
import { PopoverContent } from '@radix-ui/react-popover';


function CustomPopoverPage() {

return (
<Inbox
applicationIdentifier="YOUR_APPLICATION_IDENTIFIER"
subscriber="YOUR_SUBSCRIBER_ID"
>
<Popover>
<PopoverTrigger>
<Bell />
</PopoverTrigger>
<PopoverContent className="h-[600px] w-[400px] p-0">
<Notifications />
</PopoverContent>
</Popover>
</Inbox>
);
}

export default CustomPopoverPage;
```

</Tab>
</Tabs>
Loading
Loading