import React from "react"; import classNames from "classnames"; import { Action } from "../../types"; import { bemHOF } from "../../utilities/bem"; import { Box } from "../Box"; import { CloseButton } from "../CloseButton"; import { Icon, ICON_TYPE } from "../Icon"; import { Link } from "../Link"; import { Text } from "../Text"; import { useSnackbarContext } from "./context"; import { SnackbarProps, SnackbarRootProps, SnackbarIconProps, SnackbarTextProps, } from "./types"; import { SnackbarProvider } from "./SnackbarProvider"; const cn = bemHOF("Snackbar"); export const SnackbarRoot = ({ children, className, ...rest }: SnackbarRootProps) => ( {children} ); export const SnackbarIcon = ({ icon }: SnackbarIconProps) => ( ); export const SnackbarText = ({ children }: SnackbarTextProps) => ( {children} ); export const SnackbarAction = ({ label, onClick, href, external }: Action) => { const Component = typeof onClick === "function" ? "button" : "a"; const type = Component === "button" ? "button" : undefined; return ( {label} ); }; export const SnackbarCloseButton = () => { const { onClose } = useSnackbarContext(); return ( ); }; export const Snackbar = ({ message, action, icon, className, disableClose, ...rest }: SnackbarProps) => { const { onClose } = useSnackbarContext(); return ( {icon && } {message && {message}} {action && action.label && ( { if (action.onClick) { action.onClick(); } onClose(); }} /> )} {!disableClose && } ); }; Snackbar.Provider = SnackbarProvider; Snackbar.Root = SnackbarRoot; Snackbar.Text = SnackbarText; Snackbar.Action = SnackbarAction; Snackbar.CloseButton = SnackbarCloseButton;