summaryrefslogtreecommitdiff
path: root/src/common/libs/toast.tsx
blob: 2047a277fa17b7b764f7739cab91cb4d0815823d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import ReactHotToast, { Toast } from "react-hot-toast"
import clsxm from "./clsxm"
import { ReactNode } from "react"
import { XIcon } from "lucide-react"

type Options = Partial<Pick<Toast, "style" | "className" | "id" | "icon" | "duration" | "ariaProps" | "position" | "iconTheme">> | undefined

const toast = (children: ReactNode, options: Options = undefined) => {
  return ReactHotToast.custom((t) => (
    <div className={clsxm("bg-neutral-100 border border-neutral-200 text-neutral-800 text-sm rounded-lg flex", {
      "animate-appearance-in": t.visible,
      "animate-appearance-out": !t.visible
    })}>
      <span className="py-2 px-3">{children}</span>
      <div className="w-[1px] h-full bg-neutral-300" />
      <button type="button" className="px-2 text-neutral-800" onClick={() => ReactHotToast.dismiss(t.id)}>
        <XIcon size={18} />
      </button>
    </div>
  ), options)
}

export default toast