Props
interface InboxProps = {
//Brand Override
brand?: Brand;
//Icon Class Name
className?: string;
// Default Icon to use if no Icon is present in Message
defaultIcon?: false | string;
// Placement of the Bell relative to the Inbox
placement?: "top" | "left" | "right" | "bottom";
// Render Props for Custom Rendering
renderTabs?: React.FunctionComponent<{
currentTab?: ITab;
tabs?: ITab[];
}>;
renderFooter?: React.FunctionComponent;
renderHeader?: React.FunctionComponent;
renderIcon?: React.FunctionComponent<{
unreadMessageCount?: number;
}>;
renderMessage?: React.FunctionComponent<IMessage>;
renderNoMessages?: React.FunctionComponent;
// Tab Overrides
tabs?: Array<ITab>;
theme?: ThemeObject;
// Inbox Title Override
title?: string;
trigger?: "click" | "hover";
}
Theme
interface ITheme {
container?: React.CSSProperties;
footer?: React.CSSProperties;
header?: React.CSSProperties;
icon?: React.CSSProperties;
messageList?: {
container?: React.CSSProperties;
message?: {
actions?: {
container?: React.CSSProperties;
details?: React.CSSProperties;
dismiss?: React.CSSProperties;
}
body?: React.CSSProperties;
container?: React.CSSProperties;
icon?: React.CSSProperties;
title?: React.CSSProperties;
unreadIndicator?: React.CSSProperties;
}
};
tabList?: {
container?: React.CSSProperties;
tab?: React.CSSProperties;
};
root?: React.CSSProperties;
}
Theme example
const props = {
const theme = { |
|
Render Props
Render Props are a react concept that allows you to supply your own react components instead of the ones built for this library. Inbox supplies render props for most sub-components.
interface ITheme {
container?: React.CSSProperties;
footer?: React.CSSProperties;
header?: React.CSSProperties;
icon?: React.CSSProperties;
messageList?: {
container?: React.CSSProperties;
message?: {
actions?: {
container?: React.CSSProperties;
details?: React.CSSProperties;
dismiss?: React.CSSProperties;
}
body?: React.CSSProperties;
container?: React.CSSProperties;
icon?: React.CSSProperties;
title?: React.CSSProperties;
unreadIndicator?: React.CSSProperties;
}
};
tabList?: {
container?: React.CSSProperties;
tab?: React.CSSProperties;
};
root?: React.CSSProperties;
}
Render props example
import React from "react";
const props = {
|
|
Hooks
useInbox
is a hook that you can import and use to interact with Inbox without having to use any of the react components. Think of it as a headless
Inbox.
Hooks example
import React, { useEffect } from "react";
|
|