import Box from "@material-ui/core/Box" import { makeStyles } from "@material-ui/core/styles" import Typography from "@material-ui/core/Typography" import { FC, ReactNode } from "react" export interface EmptyStateProps { /** Text Message to display, placed inside Typography component */ message: string /** Longer optional description to display below the message */ description?: string cta?: ReactNode } /** * Component to place on screens or in lists that have no content. Optionally * provide a button that would allow the user to return from where they were, * or to add an item that they currently have none of. * * EmptyState's props extend the [Material UI Box component](https://material-ui.com/components/box/) * that you can directly pass props through to to customize the shape and layout of it. */ export const EmptyState: FC = (props) => { const { message, description, cta, ...boxProps } = props const styles = useStyles() return (
{message} {description && ( {description} )}
{cta}
) } const useStyles = makeStyles( (theme) => ({ root: { display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", textAlign: "center", minHeight: 120, padding: theme.spacing(3), }, header: { marginBottom: theme.spacing(3), }, title: { fontWeight: 400, }, description: { marginTop: theme.spacing(1), }, }), { name: "EmptyState" }, )