{"version":3,"sources":["../src/Snackbar/Snackbar.tsx","../src/Snackbar/Snackbar.types.ts"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cx } from \"cva\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport type {\n  CloseButtonProps,\n  Id,\n  ToastContainerProps,\n  ToastContent,\n  ToastOptions,\n} from \"react-toastify\";\nimport type { FC, MouseEvent as ReactMouseEvent, PropsWithChildren, ReactNode } from \"react\";\nimport type { Merge } from \"type-fest\";\nimport { CloseIcon } from \"@knitto-ui/react-icons\";\nimport Button, { type ButtonIconProps } from \"../Button\";\n\nexport type SnackbarProps = ToastContainerProps;\n\nexport type SnackbarCloseButtonProps = Merge<ButtonIconProps, CloseButtonProps>;\n\nexport const SnackbarCloseButton = forwardRef<HTMLButtonElement, SnackbarCloseButtonProps>(\n  (\n    {\n      ariaLabel,\n      closeToast,\n      type: _type,\n      theme: _theme,\n      className,\n      color = \"tertiary\",\n      size = \"small\",\n    },\n    ref,\n  ) => (\n    <Button.Icon\n      ref={ref}\n      className={cx(\"kn-snackbar-close\", className)}\n      onClick={(e: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => {\n        if (e) {\n          e.stopPropagation?.();\n          closeToast?.(e);\n        }\n      }}\n      color={color}\n      size={size}\n      aria-label={ariaLabel}\n    >\n      <CloseIcon fill=\"rgb(255,255,255)\" width={24} height={24} />\n    </Button.Icon>\n  ),\n);\n\nSnackbarCloseButton.displayName = \"SnackbarCloseButton\";\n\nexport const SnackbarContainer: FC<SnackbarProps> = ({\n  draggable = false,\n  hideProgressBar = true,\n  position = \"bottom-right\",\n  theme = \"dark\",\n  toastClassName,\n  bodyClassName,\n  closeButton = (args) => <SnackbarCloseButton {...args} />,\n  ...props\n}) => {\n  return (\n    <ToastContainer\n      draggable={draggable}\n      hideProgressBar={hideProgressBar}\n      position={position}\n      theme={theme}\n      toastClassName={cx(\"kn-snackbar-toastify\", toastClassName)}\n      bodyClassName={cx(\"kn-snackbar-body\", bodyClassName)}\n      closeButton={closeButton}\n      {...props}\n    />\n  );\n};\n\ntype WithActionProps = {\n  action?: ReactNode;\n  actionCallback?: () => void;\n};\n\ntype SnackContentProps = PropsWithChildren<WithActionProps>;\n\nconst SnackContent: FC<SnackContentProps> = ({ action, actionCallback, children }) => {\n  return (\n    <div className=\"kn-snackbar-content\">\n      {children}\n      {action ? (\n        <Button\n          className=\"kn-snackbar-action\"\n          color=\"tertiary\"\n          onClick={(e: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => {\n            if (e) {\n              e.stopPropagation?.();\n              actionCallback?.();\n            }\n          }}\n        >\n          {action}\n        </Button>\n      ) : null}\n    </div>\n  );\n};\n\nexport type SnackOptions = ToastOptions & WithActionProps;\n\nexport function snack<TData = unknown>(content: ToastContent<TData>, options?: SnackOptions): Id {\n  // TODO: work on colors option\n  const { action, actionCallback, ...restOptions } = options || {};\n  return toast<TData>((props) => {\n    return (\n      <SnackContent action={action} actionCallback={actionCallback}>\n        {typeof content === \"function\" ? content(props) : content}\n      </SnackContent>\n    );\n  }, restOptions);\n}\n","import { ToastPosition } from \"react-toastify\";\n\nexport const snackbarPositions = [\n  \"top-left\",\n  \"top-center\",\n  \"top-right\",\n  \"bottom-left\",\n  \"bottom-center\",\n  \"bottom-right\",\n] as const satisfies Readonly<ToastPosition[]>;\n\nexport type SnackbarPosition = (typeof snackbarPositions)[number];\n"],"mappings":";;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AACnB,SAAS,gBAAgB,aAAa;AAUtC,SAAS,iBAAiB;AAiCpB,cAwCF,YAxCE;AA1BC,IAAM,sBAAsB;AAAA,EACjC,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,EACT,GACA,QAEA;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC;AAAA,MACA,WAAW,GAAG,qBAAqB,SAAS;AAAA,MAC5C,SAAS,CAAC,MAAsD;AAnCtE;AAoCQ,YAAI,GAAG;AACL,kBAAE,oBAAF;AACA,mDAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAY;AAAA,MAEZ,8BAAC,aAAU,MAAK,oBAAmB,OAAO,IAAI,QAAQ,IAAI;AAAA;AAAA,EAC5D;AAEJ;AAEA,oBAAoB,cAAc;AAE3B,IAAM,oBAAuC,CAAC,OAS/C;AAT+C,eACnD;AAAA,gBAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,cAAc,CAAC,SAAS,oBAAC,wCAAwB,KAAM;AAAA,EA3DzD,IAoDqD,IAQhD,kBARgD,IAQhD;AAAA,IAPH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB,GAAG,wBAAwB,cAAc;AAAA,MACzD,eAAe,GAAG,oBAAoB,aAAa;AAAA,MACnD;AAAA,OACI;AAAA,EACN;AAEJ;AASA,IAAM,eAAsC,CAAC,EAAE,QAAQ,gBAAgB,SAAS,MAAM;AACpF,SACE,qBAAC,SAAI,WAAU,uBACZ;AAAA;AAAA,IACA,SACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAM;AAAA,QACN,SAAS,CAAC,MAAsD;AA3F1E;AA4FY,cAAI,GAAG;AACL,oBAAE,oBAAF;AACA;AAAA,UACF;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH,IACE;AAAA,KACN;AAEJ;AAIO,SAAS,MAAuB,SAA8B,SAA4B;AAE/F,QAAmD,gBAAW,CAAC,GAAvD,UAAQ,eA7GlB,IA6GqD,IAAhB,wBAAgB,IAAhB,CAA3B,UAAQ;AAChB,SAAO,MAAa,CAAC,UAAU;AAC7B,WACE,oBAAC,gBAAa,QAAgB,gBAC3B,iBAAO,YAAY,aAAa,QAAQ,KAAK,IAAI,SACpD;AAAA,EAEJ,GAAG,WAAW;AAChB;;;ACnHO,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}