import clsx from "clsx"; import * as React from "react"; import { useSelector } from "react-redux"; import { Tooltip } from "@dndbeyond/character-common-components/es"; import { ThemedPlayButtonSvg } from "@dndbeyond/character-components/es"; import { CampaignDataContract, CampaignUtils, CharacterTheme, } from "@dndbeyond/character-rules-engine/es"; import ListTimeline from "@dndbeyond/fontawesome-cache/svgs/light/list-timeline.svg"; import { GameLogNotificationWrapper } from "@dndbeyond/game-log-components"; import { Link } from "~/components/Link"; import { useSidebar } from "../../../../contexts/Sidebar"; import { PaneComponentEnum } from "../../../../subApps/sheet/components/Sidebar/types"; import { appEnvSelectors } from "../../Shared/selectors"; import { GameLogState } from "../../Shared/stores/typings"; import { NavigationUtils } from "../../Shared/utils"; import styles from "./styles.module.css"; interface Props { campaign: CampaignDataContract | null; onCampaignShow?: () => void; className?: string; gameLog?: GameLogState; theme: CharacterTheme; isDesktop?: boolean; } const CampaignSummary: React.FC = ({ campaign, onCampaignShow, className = "", gameLog, theme, isDesktop, }) => { const { pane: { paneHistoryStart }, } = useSidebar(); const isReadonly = useSelector(appEnvSelectors.getIsReadonly); const handleClick = (evt: React.MouseEvent): void => { evt.nativeEvent.stopImmediatePropagation(); evt.stopPropagation(); if (onCampaignShow) { onCampaignShow(); } }; const handleGameLogClick = (evt: React.MouseEvent): void => { evt.stopPropagation(); evt.nativeEvent.stopImmediatePropagation(); // Assuming dispatch is available in props or context paneHistoryStart(PaneComponentEnum.GAME_LOG); }; if (isReadonly) return null; return (
{campaign && ( <>
Campaign: {CampaignUtils.getName(campaign)}
)} {isDesktop && (
)}
); }; export default CampaignSummary;