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;