import { StepType, TourContext, TourProvider } from "@reactour/tour"; import clsx from "clsx"; import { Dispatch, FC, HTMLAttributes, SetStateAction } from "react"; import QuestionIcon from "@dndbeyond/fontawesome-cache/svgs/solid/question.svg"; import { Button } from "../Button"; import styles from "./styles.module.css"; export interface GuidedTourProps extends HTMLAttributes { afterOpen?: (target: Element | null) => void; beforeClose?: (target: Element | null) => void; cookieName?: string; setStep?: SetStateAction; showOnFirstLoad?: boolean; steps?: StepType[]; step?: number; } export const GuidedTour: FC = ({ afterOpen, beforeClose, children, className, cookieName = "ddbGuidedTour", setStep, showOnFirstLoad, step = 0, steps = [], ...props }) => { const handleBeforeClose = () => { const html = document.querySelector("html"); if (html) html.style.overflowY = "visible"; if (beforeClose) beforeClose(null); }; const handleAfterOpen = () => { const html = document.querySelector("html"); if (html) html.style.overflowY = "hidden"; if (afterOpen) afterOpen(null); }; const handleLoad = (setIsOpen: Dispatch>) => { if (showOnFirstLoad) { const viewedTour = localStorage.getItem(cookieName); if (!viewedTour) { setIsOpen(true); localStorage.setItem(cookieName, "true"); } } }; const PrevButton = ({ Button, ...props }) => ( )} ); };