From 93cae6866e40c0918c3e0b4bb321659af33bec9e Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 10:54:42 +0300 Subject: [PATCH 01/19] feat: inbox updates --- inbox/introduction.mdx | 2 +- inbox/react/advanced-configuration.mdx | 37 +- inbox/react/components.mdx | 303 --------------- inbox/react/components/bell.mdx | 90 +++++ inbox/react/components/inbox.mdx | 137 +++++++ inbox/react/components/notifications.mdx | 47 +++ inbox/react/components/overview.mdx | 97 +++++ inbox/react/components/preferences.mdx | 33 ++ inbox/react/customization.mdx | 73 ---- inbox/react/get-started.mdx | 79 ++-- inbox/react/localization.mdx | 33 ++ inbox/react/preference.mdx | 13 - inbox/react/styling.mdx | 464 +++++++++++++++++++++++ mint.json | 26 +- 14 files changed, 987 insertions(+), 447 deletions(-) delete mode 100644 inbox/react/components.mdx create mode 100644 inbox/react/components/bell.mdx create mode 100644 inbox/react/components/inbox.mdx create mode 100644 inbox/react/components/notifications.mdx create mode 100644 inbox/react/components/overview.mdx create mode 100644 inbox/react/components/preferences.mdx delete mode 100644 inbox/react/customization.mdx create mode 100644 inbox/react/localization.mdx delete mode 100644 inbox/react/preference.mdx create mode 100644 inbox/react/styling.mdx diff --git a/inbox/introduction.mdx b/inbox/introduction.mdx index 0765b1eb..f75d8925 100644 --- a/inbox/introduction.mdx +++ b/inbox/introduction.mdx @@ -1,5 +1,5 @@ --- -title: 'Introduction' +title: 'Overview' description: "Learn more about Novu's Inbox Component." --- diff --git a/inbox/react/advanced-configuration.mdx b/inbox/react/advanced-configuration.mdx index 96981a61..43806a9a 100644 --- a/inbox/react/advanced-configuration.mdx +++ b/inbox/react/advanced-configuration.mdx @@ -4,24 +4,6 @@ sidebarTitle: 'Advanced Configuration' description: 'Learn how to configure the Inbox component with advanced options' --- -## Use your own backend and socket URL - -By default, Novu's hosted services for API and socket are used. If you want, you can override them and configure your own. - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - - ); -} -``` ## HMAC Encryption @@ -67,3 +49,22 @@ const hmacHash = createHmac('sha256', process.env.NOVU_API_KEY) ## Backend SDK Methods [Backend sdk methods](/sdks/framework/typescript/overview) + +## Use your own backend and socket URL + +By default, Novu's hosted services for API and socket are used. If you want, you can override them and configure your own. + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + + ); +} +``` \ No newline at end of file diff --git a/inbox/react/components.mdx b/inbox/react/components.mdx deleted file mode 100644 index e064d57f..00000000 --- a/inbox/react/components.mdx +++ /dev/null @@ -1,303 +0,0 @@ ---- -title: 'Inbox Components' -sidebarTitle: 'Components' -description: 'Learn how to use the different components of the Inbox' ---- - -## Components - -The Inbox is composed of the following components: - -- [Inbox](#inbox) -- [Bell](#bell) -- [Notifications](#notifications) -- [Preferences](#preferences) - -### Inbox - -It renders an opinionated `` with a bell button, that triggers a popover on lock. The popover contains the notifications list and the user preferences. - -#### Default Inbox - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - - ); -} -``` - -#### Controlled Popover state - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - const [open, setOpen] = React.useState(false); - - return ( - <> - - - - ); -} -``` - -#### Custom Notification item - -Customize the notification item by passing a render function to the `renderNotification` prop. -You can access the notification object and render the notification item as per your requirements. -The `notification.data` property allows you acessing the custom information while rendering notification item. -You can check how to pass it with the Novu Framework in-app step output [here](/sdks/framework/typescript/steps/inbox#inbox-step-output). - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - ( -
-

{notification.subject}

-

{notification.body}

-

{notification.data.text}

-
- )} - /> - ); -} -``` - -#### Custom Bell - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - ( -
- {unreadCount} -
- )} - /> - ); -} -``` - -#### Handle notification click - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - { - // your logic to handle notification click - }} - /> - ); -} -``` - -#### Redirect on the notification click - -The `redirect` [object](/sdks/framework/typescript/steps/inbox#inbox-step-output) allows to define the URL to visit when clicking on the notification item. -The value will be implicitly passed to the notification and used when click event happens. - -#### Handle notification button clicks - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - { - // your logic to handle primary action click - }} - onSecondaryActionClick={(notification) => { - // your logic to handle secondary action click - }} - /> - ); -} -``` - -#### Redirect on the notification action button click - -The `redirect` [object](/sdks/framework/typescript/steps/inbox#inbox-step-output) on the `primaryAction` or `secondaryAction` prop allows to define the URL to visit when clicking on the notification action button. -The value will be implicitly passed to the action buttons and used when click event happens. - -### Bell - -The `Bell` component is used to display the notification bell icon. It can be used to show the number of unread notifications. - -```tsx -import { Inbox, Bell } from '@novu/react'; - -function Novu() { - return ( - - - - ); -} -``` - -#### Custom Bell - -You can pass custom components as children to the `Bell` component to render the custom bell icon. - -```tsx -import { Inbox, Bell } from '@novu/react'; -import { BellIcon } from './icons'; - -function Novu() { - return ( - - ( -
- {unreadCount} - -
- )} - /> -
- ); -} -``` - -### Notifications - -The `Notifications` component is used to display the list of notifications. - -#### Notifications as a list without the Bell and Popover - -```tsx -import { Inbox, Notifications } from '@novu/react'; - -function Novu() { - return ( - - - - ); -} -``` - -### Notifications as a list with custom Notification item - -```tsx -import { Inbox, Notifications } from '@novu/react'; - -function Novu() { - return ( - - ( -
-

{notification.subject}

-

{notification.body}

-

{notification.data.text}

-
- )} - /> -
- ); -} -``` - -### Preferences - -The `Preferences` component is used to display the preferences. It can be used to show the preferences. -Use the `Preferences` component to show the preferences without the bell and popover. - -```tsx -import { Inbox, Preferences } from '@novu/react'; - -function Novu() { - return ( - - - - ); -} -``` - -### Bring your own Popover - -component allows you to bring your own popover component along with custom components. -Below is an example of how you can bring your own popover component with Radix UI. - -```tsx -import React from 'react'; -import * as Popover from '@radix-ui/react-popover'; -import { BellIcon, Cross2Icon } from '@radix-ui/react-icons'; -import { Inbox, Bell, Notifications } from '@novu/react'; -import './styles.css'; - -const PopoverDemo = () => ( - - - - ( -
- {unreadCount} - -
- )} - /> -
- - - - - - - - - -
-
-); - -export default PopoverDemo; -``` diff --git a/inbox/react/components/bell.mdx b/inbox/react/components/bell.mdx new file mode 100644 index 00000000..b7b55c52 --- /dev/null +++ b/inbox/react/components/bell.mdx @@ -0,0 +1,90 @@ +--- +title: '' +--- + + +The `Bell` component is used to display the notification bell icon. It can be used to show the number of unread notifications. + +```tsx +import { Inbox, Bell } from '@novu/react'; + +function Novu() { + return ( + + + + ); +} +``` + +### Custom Bell + +You can pass custom components as children to the `Bell` component to render the custom bell icon. + +```tsx +import { Inbox, Bell } from '@novu/react'; +import { BellIcon } from './icons'; + +function Novu() { + return ( + + ( +
+ {unreadCount} + +
+ )} + /> +
+ ); +} +``` + + +### Bring your own Popover + +component allows you to bring your own popover component along with custom components. +Below is an example of how you can bring your own popover component with Radix UI. + +```tsx +import React from 'react'; +import * as Popover from '@radix-ui/react-popover'; +import { BellIcon, Cross2Icon } from '@radix-ui/react-icons'; +import { Inbox, Bell, Notifications } from '@novu/react'; +import './styles.css'; + +const PopoverDemo = () => ( + + + + ( +
+ {unreadCount} + +
+ )} + /> +
+ + + + + + + + + +
+
+); + +export default PopoverDemo; +``` diff --git a/inbox/react/components/inbox.mdx b/inbox/react/components/inbox.mdx new file mode 100644 index 00000000..022d9425 --- /dev/null +++ b/inbox/react/components/inbox.mdx @@ -0,0 +1,137 @@ +--- +title: '' +--- + +It renders an opinionated `` with a bell button, that triggers a popover on lock. The popover contains the notifications list and the user preferences. + +### Default Inbox + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + + ); +} +``` + +### Controlled Popover state + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + const [open, setOpen] = React.useState(false); + + return ( + <> + + + + ); +} +``` + +### Custom Notification item + +Customize the notification item by passing a render function to the `renderNotification` prop. +You can access the notification object and render the notification item as per your requirements. +The `notification.data` property allows you acessing the custom information while rendering notification item. +You can check how to pass it with the Novu Framework in-app step output [here](/sdks/framework/typescript/steps/inbox#inbox-step-output). + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + ( +
+

{notification.subject}

+

{notification.body}

+

{notification.data.text}

+
+ )} + /> + ); +} +``` + +### Custom Bell + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + ( +
+ {unreadCount} +
+ )} + /> + ); +} +``` + +### Handle notification click + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + { + // your logic to handle notification click + }} + /> + ); +} +``` + +### Redirect on the notification click + +The `redirect` [object](/sdks/framework/typescript/steps/inbox#inbox-step-output) allows to define the URL to visit when clicking on the notification item. +The value will be implicitly passed to the notification and used when click event happens. + +### Handle notification button clicks + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + { + // your logic to handle primary action click + }} + onSecondaryActionClick={(notification) => { + // your logic to handle secondary action click + }} + /> + ); +} +``` + +### Redirect on the notification action button click + +The `redirect` [object](/sdks/framework/typescript/steps/inbox#inbox-step-output) on the `primaryAction` or `secondaryAction` prop allows to define the URL to visit when clicking on the notification action button. +The value will be implicitly passed to the action buttons and used when click event happens. diff --git a/inbox/react/components/notifications.mdx b/inbox/react/components/notifications.mdx new file mode 100644 index 00000000..b2642e50 --- /dev/null +++ b/inbox/react/components/notifications.mdx @@ -0,0 +1,47 @@ +--- +title: '' +--- + +The `Notifications` component is used to display the list of notifications. + +### Notifications as a list without the Bell and Popover + +```tsx +import { Inbox, Notifications } from '@novu/react'; + +function Novu() { + return ( + + + + ); +} +``` + +### Notifications as a list with custom Notification item + +```tsx +import { Inbox, Notifications } from '@novu/react'; + +function Novu() { + return ( + + ( +
+

{notification.subject}

+

{notification.body}

+

{notification.data.text}

+
+ )} + /> +
+ ); +} +``` diff --git a/inbox/react/components/overview.mdx b/inbox/react/components/overview.mdx new file mode 100644 index 00000000..54d3594e --- /dev/null +++ b/inbox/react/components/overview.mdx @@ -0,0 +1,97 @@ +--- +title: 'Overview' +--- + +## Composition + +The Inbox is composed of the following sub-components that you can use to build your Inbox structure and layout: + +- [\](/inbox/react/components/inbox) - The Inbox wrapper, which is used to wrap the entire inbox UI and establish the session. +- [\](/inbox/react/components/bell) - Used to display the bell icon and trigger the popover component when clicked. +- [\](/inbox/react/components/notifications) - Displays the notifications list. +- [\](/inbox/react/components/preferences) - Used to display the preferences modal. + +The internal UI and styles for those components can be modified using the [`appearance`](/inbox/react/components/styling#appearance) prop. + +## Layouts + +The composition of the indivudal components can generate multiple different popular inbox layouts. + +### Inbox with Bell (Default) + +A trigger button usually located at the top right corner of the screen, which triggers the popover component when clicked. + + + + +```tsx Defualt Bell +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + + ); +} +``` + +```tsx Custom Bell +import { Inbox, Bell } from '@novu/react'; +import { BellIcon } from './icons'; + +function Novu() { + return ( + + ( +
+ {unreadCount} + +
+ )} + /> +
+ ); +} +``` +
+ +### Side menu Inbox + +To render a side menu inbox, use the `` component as a direct child of the `` component, you can hide or show it based on any custom logic. + +```tsx +import { Inbox, Notifications } from '@novu/react'; + +function Novu() { + return ( + + {showSideMenu && ( + + )} + + ); +} +``` + +### Full page Inbox + +Similiary to the side menu inbox, you can use the `` component as a direct child of the `` component, you can hide or show it based on any custom logic. + +```tsx +import { Inbox, Notifications } from '@novu/react'; + +function Novu() { + return ( + + + + ); +} +``` + diff --git a/inbox/react/components/preferences.mdx b/inbox/react/components/preferences.mdx new file mode 100644 index 00000000..82c3392e --- /dev/null +++ b/inbox/react/components/preferences.mdx @@ -0,0 +1,33 @@ +--- +title: '' +--- + +By default, Novu will show the subscriber preferences cog icon on the Inbox component. + +Users can enable/disable any active channel in the workflow using subscriber preferences or they can update the preference globally for all workflows under the `Global Preferences`. + + + + +### Preferences Component + +The `Preferences` component is used to display the preferences. It can be used to show the preferences. +Use the `Preferences` component to show the preferences without the bell and popover. + +```tsx +import { Inbox, Preferences } from '@novu/react'; + +function Novu() { + return ( + + + + ); +} +``` \ No newline at end of file diff --git a/inbox/react/customization.mdx b/inbox/react/customization.mdx deleted file mode 100644 index b010a573..00000000 --- a/inbox/react/customization.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: 'Customizing Inbox' -sidebarTitle: 'Customization' -description: 'Learn how to customize the pre built Inbox component using the appearance props' ---- - -## Appearance Prop - -The `appearance` prop can be used to customise the Inbox. It has three main keys: `baseTheme`, `variables` and `elements`. - -- `variables`: The variables object allows you to set global styling variables that apply to multiple elements within the inbox. This can include colors, border radius, and other common styles. You can find the list of [supported variables](https://github.com/novuhq/novu/blob/01268c688d1c173736b4ad51147370844952335a/packages/js/src/ui/types.ts#L24). -- `elements`: Elements are the individual UI components that make up the Inbox. The elements object allows you to define styles for these components. Each key corresponds to an component, and the value is an object containing `style properties` or you can also pass your `css classes`. - See list of available elements [here](https://github.com/novuhq/novu/blob/01268c688d1c173736b4ad51147370844952335a/packages/js/src/ui/config/appearanceKeys.ts#L6). -- `baseTheme`: The baseTheme object allows you to define the base theme for the inbox. This can include variables and elements that apply to the entire inbox, as well as additional themes that can be switched between. It accepts an array of objects, each containing variables and elements. Each object will override the previous object's styles. - This enables to override the custom themes imported from the `@novu/react` package. - Currently, we only export the `dark` [theme](https://github.com/novuhq/novu/blob/01268c688d1c173736b4ad51147370844952335a/packages/js/src/ui/config/defaultVariables.ts#L3). - -```tsx -import { Inbox } from '@novu/react'; -const appearance = { - variables: { - borderRadius: '0.5rem', - }, - elements: { - bellContainer: { - colorBackground: 'white', - colorForeground: 'black', - borderRadius: '0.5rem', - }, - // You can also pass your custom CSS classes - bellIcon: 'custom-bell-icon p-4 bg-white rounded-full', - bellDot: { - colorBackground: 'red', - colorForeground: 'white', - borderRadius: '0.5rem', - }, - }, -} - -; -``` - -## Localization Prop - -The `localization` prop can be used to to change the copywriting of the Inbox to a different language for your users or change the wording to suit your product. See the list of [available keys](https://github.com/novuhq/novu/blob/next/packages/js/src/ui/config/defaultLocalization.ts#L1). - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - - ); -} -``` \ No newline at end of file diff --git a/inbox/react/get-started.mdx b/inbox/react/get-started.mdx index 45526937..54766322 100644 --- a/inbox/react/get-started.mdx +++ b/inbox/react/get-started.mdx @@ -1,42 +1,59 @@ --- title: 'React Get Started' -sidebarTitle: 'Get Started' +sidebarTitle: 'Quickstart' description: 'Learn how to add novu powered In-App Inbox to your React app' --- Novu provides the `@novu/react` package that helps to add a fully functioning Inbox to your web application in minutes. Let's see how easily you can use it in your application. -1. Install `@novu/react` npm package in your react app -```tsx -npm install @novu/react -``` - -2. Add the below code in the app.tsx file - -```tsx -import { Inbox } from '@novu/react'; - -function Novu() { - return ( - - ); -} -``` - -💡 You can find the `applicationIdentifier` in the Novu Dashboard under the [API keys page](https://dashboard.novu.co/api-keys). -The `subscriberId` is the unique identifier of the user in your application. - -3. Run the app - -You can now run the app and [trigger](/concepts/trigger) the events to see the Inbox in action. - - - - + + + ```bash + npm install @novu/react + ``` + + + ```tsx + import { Inbox } from '@novu/react'; + + function Novu() { + return ( + + ); + } + ``` + + 💡 You can find the `applicationIdentifier` in the Novu Dashboard under the [API keys page](https://dashboard.novu.co/api-keys). + The `subscriberId` is the unique identifier of the user in your application, learn more about subscribers [here](/concepts/subscribers). + + + + Now that you have the inbox component added to your application, you can trigger an Inbox notification to see it in action. + To create your first workflow, follow our [quickstart guide](/quickstart/overview). + + + + + + + +## Next Steps + + + + Learn how to customize the inbox with your own branding and design. + + + Learn more about the composable components of the inbox. + + ## Frequently Asked Questions diff --git a/inbox/react/localization.mdx b/inbox/react/localization.mdx new file mode 100644 index 00000000..94d7ff7c --- /dev/null +++ b/inbox/react/localization.mdx @@ -0,0 +1,33 @@ +--- +title: 'Localizing the Inbox component' +sidebarTitle: 'Localization' +description: 'Learn how to localize the pre built Inbox component' +--- + +## Localization Prop + +The `localization` prop can be used to to change the copywriting of the Inbox to a different language for your users or change the wording to suit your product. See the list of [available keys](https://github.com/novuhq/novu/blob/next/packages/js/src/ui/config/defaultLocalization.ts#L1). + +```tsx +import { Inbox } from '@novu/react'; + +function Novu() { + return ( + + ); +} +``` \ No newline at end of file diff --git a/inbox/react/preference.mdx b/inbox/react/preference.mdx deleted file mode 100644 index fb537e61..00000000 --- a/inbox/react/preference.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: 'Subscriber Preference' -sidebarTitle: 'Preference' ---- - -By default, Novu will show the subscriber preferences cog icon on the Inbox component. - -Users can enable/disable any active channel in the workflow using subscriber preferences or they can update the preference globally for all workflows under the `Global Preferences`. - - diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx new file mode 100644 index 00000000..16924cec --- /dev/null +++ b/inbox/react/styling.mdx @@ -0,0 +1,464 @@ +--- +title: 'Styling the Inbox component' +sidebarTitle: 'Styling' +description: 'Learn how to style the pre built Inbox component' +--- + +## Customization Hierarchy + +The Inbox components is built to allow for multiple layers of styling, which allows the specifity required to style the Inbox to meet the requirements of your usecase. + +Depending on the level of customization you need, you can choose to style the inbox using one of the following approaches: +- [Appearance Prop](#appearance-prop) + - [Variables](#variables) - Global primitives such as buttons, popovers, dropdowns and etc... + - [Elements](#elements) - Style individual elements +- [Render Notification](#render-notification) - Render a custom notification item with complete control +- [Custom Composition](/inbox/react/components/overview#composition) - Compose our components for custom layouts + +## Appearance Prop + +The `appearance` prop can be used to customise the Inbox. It has three main keys: `baseTheme`, `variables` and `elements`. + +- **Variables**: Global styling variables that apply to multiple elements within the inbox. +- **Elements**: Elements are the individual UI components that make up the Inbox. +- **Base Theme**: This is the default theme that comes with the inbox out of the box. + +### Variables + +Variables are used to define global styling properties that can be reused throughout the inbox. You can find the list of [supported variables](https://github.com/novuhq/novu/blob/01268c688d1c173736b4ad51147370844952335a/packages/js/src/ui/types.ts#L24). +You might want to use variables to the styling of multiple components at once, for example, if you want to change the border radius of all the components at once, you can do so by updating the `colorPrimary` variable, which will modify the CTA buttons, unseen counter and etc... + + + + + The background color of the inbox component. + + + + The primary text color used in the inbox. + + + + The main accent color for interactive elements. + + + + The text color used on primary-colored elements. + + + + A secondary color for less prominent elements. + + + + The text color used on secondary-colored elements. + + + + The background color of notification counters. + + + + The text color used in notification counters. + + + + A neutral color used for borders or backgrounds. + + + + The base font size for text in the inbox. + + + + The border radius applied to various elements. + + + + + +#### Styling Variables + +You can override the default elements by passing your own styles or CSS classes to the `elements` object. + +```tsx +const appearance = { + variables: { + colorBackground: 'yellow', + } +}; + + +``` + +### Elements +The `elements` object allows you to define styles for these components. Each key corresponds to an component, and the value is an object containing `style properties` or you can also pass your `css classes`. +Here's a list of available elements that can be styled using the `elements` object in your appearance configuration: + +#### Primitive Elements +Are used to control the styling of primitive components such as buttons, popovers, dropdowns and etc... + + + + + Generic styles for any button in the inbox, including primary, secondary, mark as seen, etc... + + + Popover container wrapping the entire inbox. + + + Styles the trigger element of the popover (the bell icon). + + + Used for any dropdown content including the "options" and "filters" dropdowns. + + + The dropdown trigger element, which will open the dropdown content + + + Styles for individual dropdown items. + + + Styles for dropdown item labels. + + + Styles for the container of dropdown item labels. + + + Styles for left icons in dropdown items. + + + Styles for right icons in dropdown items. + + + Styles for tooltip content. + + + Applied to style any element that is used to open a tooltip on hover. + + + Styles for back buttons. + + + Styles for skeleton text (loading placeholders). + + + Styles for skeleton avatars (loading placeholders). + + + Styles for the root element of tabs. + + + Styles for the list of tabs. + + + Styles for tab content. + + + Styles for tab trigger elements. + + + Styles for dot indicators. + + + + +#### Specific Elements + +Target any speicific element in the inbox. + + + + Styles for the root element of the inbox. + + + Styles for the notification bell icon. + + + Styles for the container of the bell icon. + + + Styles for the dot indicator on the bell icon. + + + Styles for the preferences button. + + + Styles for the preferences container. + + + Styles for the inbox header. + + + Styles for loading indicators. + + + + + + + + Styles for the inbox popover trigger. + + + Styles for the inbox popover content. + + + + + + + + Styles for the list of notifications. + + + Styles for the container of empty notification list notice. + + + Styles for the empty notification list notice. + + + Styles for the icon in empty notification list notice. + + + Styles for the container of new notifications notice. + + + Styles for the button in new notifications notice. + + + Styles for individual notifications. + + + Styles for notification dot indicators. + + + Styles for notification subjects. + + + Styles for notification bodies. + + + Styles for the container of notification bodies. + + + Styles for notification images. + + + Styles for notification dates. + + + Styles for default notification actions. + + + Styles for custom notification actions. + + + Styles for primary action buttons in notifications. + + + Styles for secondary action buttons in notifications. + + + Styles for read notification buttons. + + + Styles for unread notification buttons. + + + Styles for archive notification buttons. + + + Styles for unarchive notification buttons. + + + + + + + + Styles for the root element of notification tabs. + + + Styles for the list of notification tabs. + + + Styles for notification tab content. + + + Styles for notification tab triggers. + + + Styles for notification tab trigger labels. + + + Styles for notification count in tab triggers. + + + + + + + + Styles for the inbox status title. + + + Styles for the inbox status dropdown trigger. + + + Styles for the inbox status dropdown content. + + + Styles for inbox status dropdown items. + + + Styles for inbox status dropdown item labels. + + + Styles for the container of inbox status dropdown item labels. + + + Styles for left icons in inbox status dropdown items. + + + Styles for right icons in inbox status dropdown items. + + + + + + + + Styles for the container of more actions. + + + Styles for the more actions dropdown trigger. + + + Styles for the more actions dropdown content. + + + Styles for more actions dropdown items. + + + Styles for more actions dropdown item labels. + + + Styles for left icons in more actions dropdown items. + + + + + + + + Styles for more tabs buttons. + + + Styles for dots in more tabs. + + + Styles for more tabs dropdown trigger. + + + Styles for more tabs dropdown content. + + + Styles for more tabs dropdown items. + + + Styles for more tabs dropdown item labels. + + + Styles for right icons in more tabs dropdown items. + + + + + + + + Styles for the preferences header. + + + Styles for the back button in preferences header. + + + Styles for the title in preferences header. + + + + Styles for the title in preferences header. + + + + + + Styles for the workflow container. + + + Styles for workflow labels. + + + Styles for the container of workflow labels. + + + + + + + Styles for the channel container. + + + Styles for the container of multiple channels. + + + Styles for channel labels. + + + Styles for the container of channel labels. + + + Styles for channel descriptions. + + + Styles for the container of channel switches. + + + Styles for channel switches. + + + Styles for the thumb of channel switches. + + + + + + + + +### Styling elements + +You can override the default elements by passing your own styles or CSS classes to the `elements` object. + +```tsx +const appearance = { + elements: { + button: { + backgroundColor: 'yellow', + } + } +}; + + +``` + +## Render Notification Component + +You can render your own custom notification item component by passing a `renderNotification` prop to the `Inbox` or `Notifications` component, this will allow you to style and render more complex notification items. + +```tsx + { + return +}} /> +``` diff --git a/mint.json b/mint.json index a60cd11c..2f33de9b 100644 --- a/mint.json +++ b/mint.json @@ -33,17 +33,18 @@ }, "anchors": [], "tabs": [ - { - "name": "API Reference", - "url": "api-reference" + { + "name": "", + "url": "inbox" }, { "name": "Integrations", "url": "integrations" }, + { - "name": "Inbox", - "url": "inbox" + "name": "API Reference", + "url": "api-reference" }, { "name": "SDKs", @@ -121,9 +122,18 @@ "icon": "react", "pages": [ "inbox/react/get-started", - "inbox/react/customization", - "inbox/react/components", - "inbox/react/preference", + "inbox/react/styling", + "inbox/react/localization", + { + "group": "Components", + "pages": [ + "inbox/react/components/overview", + "inbox/react/components/inbox", + "inbox/react/components/bell", + "inbox/react/components/notifications", + "inbox/react/components/preferences" + ] + }, "inbox/react/multiple-tabs", "inbox/react/advanced-configuration", "inbox/react/migration-guide" From 0c697b8029be4d7409c671e3544f2aea87e31cb1 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 11:07:17 +0300 Subject: [PATCH 02/19] fix: add styling --- inbox/react/styling.mdx | 133 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 127 insertions(+), 6 deletions(-) diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index 16924cec..ad39d2ce 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -25,7 +25,7 @@ The `appearance` prop can be used to customise the Inbox. It has three main keys ### Variables -Variables are used to define global styling properties that can be reused throughout the inbox. You can find the list of [supported variables](https://github.com/novuhq/novu/blob/01268c688d1c173736b4ad51147370844952335a/packages/js/src/ui/types.ts#L24). +Variables are used to define global styling properties that can be reused throughout the inbox. You might want to use variables to the styling of multiple components at once, for example, if you want to change the border radius of all the components at once, you can do so by updating the `colorPrimary` variable, which will modify the CTA buttons, unseen counter and etc... @@ -95,6 +95,25 @@ const appearance = { The `elements` object allows you to define styles for these components. Each key corresponds to an component, and the value is an object containing `style properties` or you can also pass your `css classes`. Here's a list of available elements that can be styled using the `elements` object in your appearance configuration: +#### Finding element selectors +You can inspect the elements you want to customize using the browser's dev tools, each element has a unique selector that you can use to style starting with `nv-`. + +Strip the `nv-` prefix when and add it to the `elements` object. For example, to style the `nv-notificationPrimaryAction__button` element, you can add the following to the `elements` object: + +```tsx +const appearance = { + elements: { + 'notificationPrimaryAction__button': { + backgroundColor: 'red', + }, + }, +} +``` + + + Any selector that appears before the 🔔 emoji, can be styled using the elements object (stripping the `nv-` prefix). + + #### Primitive Elements Are used to control the styling of primitive components such as buttons, popovers, dropdowns and etc... @@ -441,16 +460,117 @@ Target any speicific element in the inbox. You can override the default elements by passing your own styles or CSS classes to the `elements` object. +#### Using Tailwind CSS + +You can also use Tailwind CSS classes to style the Inbox components. You can pass the classes +directly to the `elements` object. + ```tsx +import { Inbox } from "@novu/react"; + const appearance = { elements: { - button: { - backgroundColor: 'yellow', - } - } + bellIcon: "p-4 bg-white rounded-full", + notification: + "bg-white rounded-lg shadow-sm hover:shadow-md hover:bg-gray-50", + }, }; - +export function Novu() { + return ( + + ); +} +``` + +#### Using CSS Modules + +You can also use `CSS Modules` to style the Inbox components. Here's how you can do it: + +- Create a CSS module file `(e.g. styles.module.css)` with the styles you want to apply to the Inbox components. + +```css +.bellIcon { + padding: 1rem; + background-color: white; + border-radius: 50%; +} + +.bellIcon:hover { + background-color: #f9fafb; +} + +.notification { + background-color: white; + border-radius: 0.5rem; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +.notification:hover { + background-color: #f9fafb; +} +``` + +- Import the CSS module file and pass the classes to the elements object. + +```tsx +import { Inbox } from "@novu/react"; +import styles from "./styles.module.css"; + +const appearance = { + elements: { + bellIcon: styles.bellIcon, + notification: styles.notification, + }, +}; + +export function Novu() { + return ( + + ); +} +``` + +#### Using Styles Object + +You can also use a styles object to style the Inbox components. You can pass the styles +directly to the `elements` object. + +```tsx +import { Inbox } from "@novu/react"; + +const appearance = { + elements: { + bellIcon: { + padding: "1rem", + backgroundColor: "white", + borderRadius: "50%", + }, + notification: { + backgroundColor: "white", + borderRadius: "0.5rem", + boxShadow: "0 1px 2px 0 rgba(0, 0, 0, 0.05)", + }, + }, +}; + +export function Novu() { + return ( + + ); +} ``` ## Render Notification Component @@ -462,3 +582,4 @@ You can render your own custom notification item component by passing a `renderN return }} /> ``` + From af48effb2b329f3b82571bb1fca12d8642f6ff50 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 12:51:33 +0300 Subject: [PATCH 03/19] fix: targeting --- inbox/react/styling.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index ad39d2ce..df7baf97 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -111,7 +111,7 @@ const appearance = { ``` - Any selector that appears before the 🔔 emoji, can be styled using the elements object (stripping the `nv-` prefix). + Any selector that appears before the 🔔 emoji, can be targeted via the elements property in Appearance prop (stripping the `nv-` prefix). #### Primitive Elements From 43f7dfad1684f43221364d9fb6b243b7cef8281a Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 13:53:40 +0300 Subject: [PATCH 04/19] feat add variables --- images/inbox/Variables Inbox.png | Bin 0 -> 90190 bytes inbox/react/styling.mdx | 6 ++++++ 2 files changed, 6 insertions(+) create mode 100644 images/inbox/Variables Inbox.png diff --git a/images/inbox/Variables Inbox.png b/images/inbox/Variables Inbox.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa6a2b6988b94d5f719b0b7c1f538bb4b378331 GIT binary patch literal 90190 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 literal 0 HcmV?d00001 diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index df7baf97..70a47732 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -77,6 +77,10 @@ You might want to use variables to the styling of multiple components at once, f + + + + #### Styling Variables You can override the default elements by passing your own styles or CSS classes to the `elements` object. @@ -91,6 +95,8 @@ const appearance = { ``` + + ### Elements The `elements` object allows you to define styles for these components. Each key corresponds to an component, and the value is an object containing `style properties` or you can also pass your `css classes`. Here's a list of available elements that can be styled using the `elements` object in your appearance configuration: From 55251116bd75aa91d9f843cbdc2fc43ff1db2963 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 14:16:42 +0300 Subject: [PATCH 05/19] fix: remove blocks for elements --- inbox/react/styling.mdx | 346 +--------------------------------------- 1 file changed, 2 insertions(+), 344 deletions(-) diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index 70a47732..29dad01e 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -12,7 +12,7 @@ Depending on the level of customization you need, you can choose to style the in - [Appearance Prop](#appearance-prop) - [Variables](#variables) - Global primitives such as buttons, popovers, dropdowns and etc... - [Elements](#elements) - Style individual elements -- [Render Notification](#render-notification) - Render a custom notification item with complete control +- [Render Notification](#render-notification-component) - Render a custom notification item with complete control - [Custom Composition](/inbox/react/components/overview#composition) - Compose our components for custom layouts ## Appearance Prop @@ -120,349 +120,7 @@ const appearance = { Any selector that appears before the 🔔 emoji, can be targeted via the elements property in Appearance prop (stripping the `nv-` prefix). -#### Primitive Elements -Are used to control the styling of primitive components such as buttons, popovers, dropdowns and etc... - - - - - Generic styles for any button in the inbox, including primary, secondary, mark as seen, etc... - - - Popover container wrapping the entire inbox. - - - Styles the trigger element of the popover (the bell icon). - - - Used for any dropdown content including the "options" and "filters" dropdowns. - - - The dropdown trigger element, which will open the dropdown content - - - Styles for individual dropdown items. - - - Styles for dropdown item labels. - - - Styles for the container of dropdown item labels. - - - Styles for left icons in dropdown items. - - - Styles for right icons in dropdown items. - - - Styles for tooltip content. - - - Applied to style any element that is used to open a tooltip on hover. - - - Styles for back buttons. - - - Styles for skeleton text (loading placeholders). - - - Styles for skeleton avatars (loading placeholders). - - - Styles for the root element of tabs. - - - Styles for the list of tabs. - - - Styles for tab content. - - - Styles for tab trigger elements. - - - Styles for dot indicators. - - - - -#### Specific Elements - -Target any speicific element in the inbox. - - - - Styles for the root element of the inbox. - - - Styles for the notification bell icon. - - - Styles for the container of the bell icon. - - - Styles for the dot indicator on the bell icon. - - - Styles for the preferences button. - - - Styles for the preferences container. - - - Styles for the inbox header. - - - Styles for loading indicators. - - - - - - - - Styles for the inbox popover trigger. - - - Styles for the inbox popover content. - - - - - - - - Styles for the list of notifications. - - - Styles for the container of empty notification list notice. - - - Styles for the empty notification list notice. - - - Styles for the icon in empty notification list notice. - - - Styles for the container of new notifications notice. - - - Styles for the button in new notifications notice. - - - Styles for individual notifications. - - - Styles for notification dot indicators. - - - Styles for notification subjects. - - - Styles for notification bodies. - - - Styles for the container of notification bodies. - - - Styles for notification images. - - - Styles for notification dates. - - - Styles for default notification actions. - - - Styles for custom notification actions. - - - Styles for primary action buttons in notifications. - - - Styles for secondary action buttons in notifications. - - - Styles for read notification buttons. - - - Styles for unread notification buttons. - - - Styles for archive notification buttons. - - - Styles for unarchive notification buttons. - - - - - - - - Styles for the root element of notification tabs. - - - Styles for the list of notification tabs. - - - Styles for notification tab content. - - - Styles for notification tab triggers. - - - Styles for notification tab trigger labels. - - - Styles for notification count in tab triggers. - - - - - - - - Styles for the inbox status title. - - - Styles for the inbox status dropdown trigger. - - - Styles for the inbox status dropdown content. - - - Styles for inbox status dropdown items. - - - Styles for inbox status dropdown item labels. - - - Styles for the container of inbox status dropdown item labels. - - - Styles for left icons in inbox status dropdown items. - - - Styles for right icons in inbox status dropdown items. - - - - - - - - Styles for the container of more actions. - - - Styles for the more actions dropdown trigger. - - - Styles for the more actions dropdown content. - - - Styles for more actions dropdown items. - - - Styles for more actions dropdown item labels. - - - Styles for left icons in more actions dropdown items. - - - - - - - - Styles for more tabs buttons. - - - Styles for dots in more tabs. - - - Styles for more tabs dropdown trigger. - - - Styles for more tabs dropdown content. - - - Styles for more tabs dropdown items. - - - Styles for more tabs dropdown item labels. - - - Styles for right icons in more tabs dropdown items. - - - - - - - - Styles for the preferences header. - - - Styles for the back button in preferences header. - - - Styles for the title in preferences header. - - - - Styles for the title in preferences header. - - - - - - Styles for the workflow container. - - - Styles for workflow labels. - - - Styles for the container of workflow labels. - - - - - - - Styles for the channel container. - - - Styles for the container of multiple channels. - - - Styles for channel labels. - - - Styles for the container of channel labels. - - - Styles for channel descriptions. - - - Styles for the container of channel switches. - - - Styles for channel switches. - - - Styles for the thumb of channel switches. - - - - - - - - -### Styling elements +### Bring your own CSS You can override the default elements by passing your own styles or CSS classes to the `elements` object. From bbb448c25094fbafb3c03e8c816bbb0964344238 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 14:23:35 +0300 Subject: [PATCH 06/19] fix: selector finding --- images/inbox/Elements.png | Bin 0 -> 72334 bytes inbox/react/styling.mdx | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 images/inbox/Elements.png diff --git a/images/inbox/Elements.png b/images/inbox/Elements.png new file mode 100644 index 0000000000000000000000000000000000000000..dff68ab96d0d820c063bb5eaadfed6e98b393cc3 GIT binary patch literal 72334 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 ``` - - ### Elements The `elements` object allows you to define styles for these components. Each key corresponds to an component, and the value is an object containing `style properties` or you can also pass your `css classes`. Here's a list of available elements that can be styled using the `elements` object in your appearance configuration: @@ -116,6 +114,10 @@ const appearance = { } ``` + + + + Any selector that appears before the 🔔 emoji, can be targeted via the elements property in Appearance prop (stripping the `nv-` prefix). From 96dc8df8b8eb252e78b5e65a62ae6a07a5e16107 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 14:48:45 +0300 Subject: [PATCH 07/19] fix: remove top nav --- .vscode/settings.json | 5 + .../integrations => integrations}/segment.mdx | 0 mint.json | 34 +-- style.css | 27 --- topnav.js | 215 ------------------ 5 files changed, 26 insertions(+), 255 deletions(-) create mode 100644 .vscode/settings.json rename {guides/integrations => integrations}/segment.mdx (100%) delete mode 100644 topnav.js diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..afaaec08 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "topbar" + ] +} \ No newline at end of file diff --git a/guides/integrations/segment.mdx b/integrations/segment.mdx similarity index 100% rename from guides/integrations/segment.mdx rename to integrations/segment.mdx diff --git a/mint.json b/mint.json index 2f33de9b..396f13c0 100644 --- a/mint.json +++ b/mint.json @@ -2,8 +2,8 @@ "$schema": "https://mintlify.com/schema.json", "name": "Novu", "logo": { - "dark": "/logo/novu-logo-placeholder.svg", - "light": "/logo/novu-logo-placeholder.svg" + "dark": "/logo/logo-dark-bg.svg", + "light": "/logo/logo-light-bg.svg" }, "openapi": "https://api.novu.co/openapi.json", "favicon": "/favicon.png", @@ -23,17 +23,25 @@ }, "topbarLinks": [ { - "name": "Get API Key", - "url": "https://dashboard.novu.co/api-keys/Development?utm_campaign=docs-menu-apikey" + "name": "Pricing", + "url": "https://novu.co/pricing/?utm_campaign=docs_top_nav" + }, + { + "name": "Blog", + "url": "https://novu.co/blog/?utm_campaign=docs_top_nav" + }, + { + "name": "Contact us", + "url": "https://novu.co/contact-us/?utm_campaign=docs_top_nav" } ], "topbarCtaButton": { - "type": "github", - "url": "https://github.com/novuhq/novu" + "name": "Get Started", + "url": "https://dashboard.novu.co/?utm_campaign=docs_top_bar_gs" }, "anchors": [], "tabs": [ - { + { "name": "", "url": "inbox" }, @@ -50,10 +58,6 @@ "name": "SDKs", "url": "sdks" }, - { - "name": "Guides", - "url": "guides" - }, { "name": "Recipes", "url": "recipes" @@ -506,8 +510,8 @@ ] }, { - "group": "Integration Guides", - "pages": ["guides/integrations/segment"] + "group": "Trigger Integrations", + "pages": ["integrations/segment"] } ], "backgroundImage": "/background.png", @@ -548,6 +552,10 @@ "source": "/guides/echo-guides/echo-remix", "destination": "/guides/framework-guides/framework-remix" }, + { + "source": "/guides/integrations/segment", + "destination": "/integrations/segment" + }, { "source": "/guides/echo-guides/echo-svelte", "destination": "/guides/framework-guides/framework-svelte" diff --git a/style.css b/style.css index 457404f1..e69de29b 100644 --- a/style.css +++ b/style.css @@ -1,27 +0,0 @@ -#sidebar { - top: 12rem; -} - -#content-side-layout { - top: 14rem; -} - -#content-container > div { - padding-top: 14.5rem; -} - -/* Remove the logo */ -/* -#navbar > div#primary-nav + div a[href="/"] { - display: none; -} - -*/ - -#navbar > div#primary-nav + div a[href="/"]:has(img) { - display: none; -} - -#navbar > div#primary-nav + div div.relative { - margin-left: 0; -} diff --git a/topnav.js b/topnav.js deleted file mode 100644 index 18ae391e..00000000 --- a/topnav.js +++ /dev/null @@ -1,215 +0,0 @@ -const topNavLinks = [ - { - label: "Pricing", - url: "https://novu.co/pricing/?utm_campaign=docs_top_nav", - }, - { label: "Blog", url: "https://novu.co/blog/?utm_campaign=docs_top_nav" }, - { - label: "Contact us", - url: "https://novu.co/contact-us/?utm_campaign=docs_top_nav", - }, -]; - -const topNavCta = { - label: "Get Started", - url: "https://dashboard.novu.co?utm_campaign=docs_top_bar_gs", -}; - -const darkLogo = ` -`; - -const lightLogo = ` - - - - - - - - - - - - - - - - - - - - - - - - - - -`; - -const navbar = document.getElementById("navbar"); - -const navItemClassStyles = - "font-medium text-gray-600 dark:text-gray-400 hover:border-b-[1.5px] hover:border-gray-200 dark:hover:border-gray-700 hover:text-gray-800 dark:hover:text-gray-300"; - -// Create the navigation component -const navComponent = document.createElement("div"); -navComponent.id = "primary-nav"; -navComponent.innerHTML = ` - -`; - -// Prepend the navigation component as the first child of the navbar -navbar.insertBefore(navComponent, navbar.firstChild); From cf674b875be3852d2a829843cf481710aff0bcaa Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 14:57:52 +0300 Subject: [PATCH 08/19] fix: typo --- inbox/react/components/inbox.mdx | 1 + inbox/react/components/overview.mdx | 2 +- inbox/react/styling.mdx | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/inbox/react/components/inbox.mdx b/inbox/react/components/inbox.mdx index 022d9425..d9a03b6d 100644 --- a/inbox/react/components/inbox.mdx +++ b/inbox/react/components/inbox.mdx @@ -2,6 +2,7 @@ title: '' --- + It renders an opinionated `` with a bell button, that triggers a popover on lock. The popover contains the notifications list and the user preferences. ### Default Inbox diff --git a/inbox/react/components/overview.mdx b/inbox/react/components/overview.mdx index 54d3594e..88658721 100644 --- a/inbox/react/components/overview.mdx +++ b/inbox/react/components/overview.mdx @@ -29,7 +29,7 @@ import { Inbox } from '@novu/react'; function Novu() { return ( - + ); } ``` diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index 0230b4a7..3d1e53f6 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -6,7 +6,7 @@ description: 'Learn how to style the pre built Inbox component' ## Customization Hierarchy -The Inbox components is built to allow for multiple layers of styling, which allows the specifity required to style the Inbox to meet the requirements of your usecase. +The Inbox component is built to allow for multiple layers of styling, which allows the specificity required to style the Inbox to meet the requirements of your use case. Depending on the level of customization you need, you can choose to style the inbox using one of the following approaches: - [Appearance Prop](#appearance-prop) From d39cb8c1a60567af11020cbc01b374b8dd585feb Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 17:40:44 +0300 Subject: [PATCH 09/19] fix: re-order localization --- mint.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mint.json b/mint.json index 396f13c0..2470bb26 100644 --- a/mint.json +++ b/mint.json @@ -127,7 +127,6 @@ "pages": [ "inbox/react/get-started", "inbox/react/styling", - "inbox/react/localization", { "group": "Components", "pages": [ @@ -139,6 +138,7 @@ ] }, "inbox/react/multiple-tabs", + "inbox/react/localization", "inbox/react/advanced-configuration", "inbox/react/migration-guide" ] From 3ceb17b70c9b553a990bb1cf55dfce9386ef1bf0 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 17:54:51 +0300 Subject: [PATCH 10/19] fix: update overview page --- inbox/introduction.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/inbox/introduction.mdx b/inbox/introduction.mdx index f75d8925..51ea301c 100644 --- a/inbox/introduction.mdx +++ b/inbox/introduction.mdx @@ -1,12 +1,10 @@ --- title: 'Overview' -description: "Learn more about Novu's Inbox Component." +description: "Learn more about Novu's " --- The Inbox component enables a rich context-aware in-app notifications center directly in your application, and with minimal effort. -In-App notifications are different from push notifications because the notifications are consumed directly by the user in your app itself, whereas push notifications are shown on the device level. Read more about [push channel and supported providers.](/channels-and-providers/push/overview) - Novu provides a pre-built, ready-to-use, and customizable Inbox UI component. It's in React today, and soon will be available in other popular frameworks including Vue, React Native, and full headless. From 23c01877ec0bf1c14247893621be0f304c745a7b Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 17:59:08 +0300 Subject: [PATCH 11/19] Update inbox/react/components/bell.mdx Co-authored-by: Sokratis Vidros --- inbox/react/components/bell.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/components/bell.mdx b/inbox/react/components/bell.mdx index b7b55c52..d33a5ad8 100644 --- a/inbox/react/components/bell.mdx +++ b/inbox/react/components/bell.mdx @@ -3,7 +3,7 @@ title: '' --- -The `Bell` component is used to display the notification bell icon. It can be used to show the number of unread notifications. +The `Bell` component displays the notification bell icon. It can also be used to show the number of unread notifications. ```tsx import { Inbox, Bell } from '@novu/react'; From 4d6b95e77f7386b525a86970fe896afc15bc482b Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 18:11:50 +0300 Subject: [PATCH 12/19] Update inbox/react/components/bell.mdx Co-authored-by: Sokratis Vidros --- inbox/react/components/bell.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/components/bell.mdx b/inbox/react/components/bell.mdx index d33a5ad8..9bb2ebf1 100644 --- a/inbox/react/components/bell.mdx +++ b/inbox/react/components/bell.mdx @@ -22,7 +22,7 @@ function Novu() { ### Custom Bell -You can pass custom components as children to the `Bell` component to render the custom bell icon. +You can pass any custom components as children to and render them as custom bell icon. ```tsx import { Inbox, Bell } from '@novu/react'; From f7457c67bc821850f3184b89165c19130c9431fb Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 18:20:21 +0300 Subject: [PATCH 13/19] Update inbox/react/components/bell.mdx Co-authored-by: Sokratis Vidros --- inbox/react/components/bell.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/components/bell.mdx b/inbox/react/components/bell.mdx index 9bb2ebf1..5b42ed07 100644 --- a/inbox/react/components/bell.mdx +++ b/inbox/react/components/bell.mdx @@ -47,7 +47,7 @@ function Novu() { ### Bring your own Popover -component allows you to bring your own popover component along with custom components. + can be mounted in your own popover component. For further customization, you can also use the `renderBell` and `renderNotification` render props. Below is an example of how you can bring your own popover component with Radix UI. ```tsx From 95be15abdc32b4173ec8270f3c48a57543722146 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 18:20:36 +0300 Subject: [PATCH 14/19] Update inbox/react/components/bell.mdx Co-authored-by: Sokratis Vidros --- inbox/react/components/bell.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/components/bell.mdx b/inbox/react/components/bell.mdx index 5b42ed07..d3427ed7 100644 --- a/inbox/react/components/bell.mdx +++ b/inbox/react/components/bell.mdx @@ -48,7 +48,7 @@ function Novu() { ### Bring your own Popover can be mounted in your own popover component. For further customization, you can also use the `renderBell` and `renderNotification` render props. -Below is an example of how you can bring your own popover component with Radix UI. +Below is an example of how to use `` with [Radix UI](https://www.radix-ui.com/). ```tsx import React from 'react'; From 2cb42d98d42e373b6e36b4b903606dbc6a8f5138 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 19:11:36 +0300 Subject: [PATCH 15/19] Update inbox/react/components/inbox.mdx Co-authored-by: Sokratis Vidros --- inbox/react/components/inbox.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/components/inbox.mdx b/inbox/react/components/inbox.mdx index d9a03b6d..2ee66700 100644 --- a/inbox/react/components/inbox.mdx +++ b/inbox/react/components/inbox.mdx @@ -3,7 +3,7 @@ title: '' --- -It renders an opinionated `` with a bell button, that triggers a popover on lock. The popover contains the notifications list and the user preferences. +Renders `` with a bell button, that opens a popover on click. The popover contains the notifications list and the user preferences. ### Default Inbox From ca038e2730de64a925dbab46273f76d663e6b4ca Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Tue, 10 Sep 2024 19:11:48 +0300 Subject: [PATCH 16/19] Update inbox/react/styling.mdx Co-authored-by: Sokratis Vidros --- inbox/react/styling.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index 3d1e53f6..4022af28 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -12,7 +12,7 @@ Depending on the level of customization you need, you can choose to style the in - [Appearance Prop](#appearance-prop) - [Variables](#variables) - Global primitives such as buttons, popovers, dropdowns and etc... - [Elements](#elements) - Style individual elements -- [Render Notification](#render-notification-component) - Render a custom notification item with complete control +- [Custom notification rendering](#render-notification-component) - Render a custom notification item with complete control - [Custom Composition](/inbox/react/components/overview#composition) - Compose our components for custom layouts ## Appearance Prop From d109a0253631831f737e02a570dc59747f8c6c0f Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Wed, 11 Sep 2024 10:40:00 +0300 Subject: [PATCH 17/19] fix: minor additions --- inbox/react/localization.mdx | 2 +- inbox/react/styling.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/inbox/react/localization.mdx b/inbox/react/localization.mdx index 94d7ff7c..d06d4316 100644 --- a/inbox/react/localization.mdx +++ b/inbox/react/localization.mdx @@ -6,7 +6,7 @@ description: 'Learn how to localize the pre built Inbox component' ## Localization Prop -The `localization` prop can be used to to change the copywriting of the Inbox to a different language for your users or change the wording to suit your product. See the list of [available keys](https://github.com/novuhq/novu/blob/next/packages/js/src/ui/config/defaultLocalization.ts#L1). +The `localization` prop can be used to change the copywriting of the Inbox to a different language for your users or change the wording to suit your product. See the list of [available keys](https://github.com/novuhq/novu/blob/next/packages/js/src/ui/config/defaultLocalization.ts#L1), or use the fully typed TS auto complete to find the key you need. ```tsx import { Inbox } from '@novu/react'; diff --git a/inbox/react/styling.mdx b/inbox/react/styling.mdx index 4022af28..54dbcc3d 100644 --- a/inbox/react/styling.mdx +++ b/inbox/react/styling.mdx @@ -119,7 +119,7 @@ const appearance = { - Any selector that appears before the 🔔 emoji, can be targeted via the elements property in Appearance prop (stripping the `nv-` prefix). + Any selector that appears before the 🔔 emoji, can be targeted via the elements property in Appearance prop (stripping the `nv-` prefix). You can also use TS autocomplete to find the available elements. ### Bring your own CSS From 0f808cedd81c53079708e9918c46d48cc8feb293 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Wed, 11 Sep 2024 12:11:28 +0300 Subject: [PATCH 18/19] fix: add navigation --- inbox/introduction.mdx | 2 +- inbox/react/get-started.mdx | 108 ++++++++++++++++++++++++++++++------ 2 files changed, 92 insertions(+), 18 deletions(-) diff --git a/inbox/introduction.mdx b/inbox/introduction.mdx index 51ea301c..2d1f892f 100644 --- a/inbox/introduction.mdx +++ b/inbox/introduction.mdx @@ -1,6 +1,6 @@ --- title: 'Overview' -description: "Learn more about Novu's " +description: "Learn more about Novu's Inbox component." --- The Inbox component enables a rich context-aware in-app notifications center directly in your application, and with minimal effort. diff --git a/inbox/react/get-started.mdx b/inbox/react/get-started.mdx index 54766322..a0773dec 100644 --- a/inbox/react/get-started.mdx +++ b/inbox/react/get-started.mdx @@ -6,39 +6,113 @@ description: 'Learn how to add novu powered In-App Inbox to your React app' Novu provides the `@novu/react` package that helps to add a fully functioning Inbox to your web application in minutes. Let's see how easily you can use it in your application. - - - ```bash - npm install @novu/react + + ```bash + npm install @novu/react + ``` + + + + ```tsx Next.js + import { Inbox } from '@novu/react'; + import { useRouter } from 'next/navigation' + + function Novu() { + const router = useRouter(); + + return ( + router.push(path)} + /> + ); + } ``` - - - ```tsx + + ```tsx Remix import { Inbox } from '@novu/react'; + import { useNavigate } from '@remix-run/react'; function Novu() { + const navigate = useNavigate(); + return ( navigate(path)} /> ); } ``` - 💡 You can find the `applicationIdentifier` in the Novu Dashboard under the [API keys page](https://dashboard.novu.co/api-keys). - The `subscriberId` is the unique identifier of the user in your application, learn more about subscribers [here](/concepts/subscribers). + ```tsx React Router + import { Inbox } from '@novu/react'; + import { useNavigate } from 'react-router-dom'; + + function Novu() { + const navigate = useNavigate(); - - - Now that you have the inbox component added to your application, you can trigger an Inbox notification to see it in action. - To create your first workflow, follow our [quickstart guide](/quickstart/overview). + return ( + navigate(path)} + /> + ); + } + ``` - - - - + ```tsx Gatsby + import { Inbox } from '@novu/react'; + import { navigate } from 'gatsby'; + + function Novu() { + return ( + navigate(path)} + /> + ); + } + ``` + + ```tsx Create React App + import { Inbox } from '@novu/react'; + import { useNavigate } from 'react-router-dom'; + + function Novu() { + const navigate = useNavigate(); + + return ( + navigate(path)} + /> + ); + } + ``` + + + + You can find the `applicationIdentifier` in the Novu Dashboard under the [API keys page](https://dashboard.novu.co/api-keys). + The `subscriberId` is the unique identifier of the user in your application, learn more about subscribers [here](/concepts/subscribers). + + + Novu uses the `routerPush` prop to make your notifications navigatable. We will automatically pass the `redirect.url` from your workflow definitions to the `routerPush` prop. + + + Now that you have the inbox component added to your application, you can trigger an Inbox notification to see it in action. + To create your first workflow, follow our [quickstart guide](/quickstart/overview). + + + + + ## Next Steps From 83c3ee0d0ca16551dee92304200ebe3638197462 Mon Sep 17 00:00:00 2001 From: Dima Grossman Date: Wed, 11 Sep 2024 13:23:14 +0300 Subject: [PATCH 19/19] Update multiple-tabs.mdx --- inbox/react/multiple-tabs.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inbox/react/multiple-tabs.mdx b/inbox/react/multiple-tabs.mdx index 21b50d4a..9b123990 100644 --- a/inbox/react/multiple-tabs.mdx +++ b/inbox/react/multiple-tabs.mdx @@ -1,11 +1,11 @@ --- title: 'Configuring Multiple Tabs' -sidebarTitle: 'Multiple Tabs' +sidebarTitle: 'Tabs' --- Novu enables the creation of a multi-tab experience for the Inbox, allowing you to filter and display notification lists within distinct UI tabs. -### Defining tabs +## Defining tabs Define the `tabs` prop to display multiple tabs in the Inbox component. @@ -45,7 +45,7 @@ function Novu() { ``` - + Here tab value is taken from workflow tags. Tags can be configured in options field of [workflow](/sdks/framework/typescript/workflow).