/** * EventHistoryViewer * * Main container component for viewing event history with current/diff views. * Composes ViewToggleCards, DiffModeTabs, CompareBar, and EventStepperFooter. * This is a dumb component - all state is controlled externally. */ import React, { memo } from "react"; import { View, StyleSheet } from "react-native"; import { macOSColors } from "../../gameUI/constants/macOSDesignSystemColors"; import { EventStepperFooter } from "../EventStepperFooter"; import { ViewToggleCards } from "./ViewToggleCards"; import { DiffModeTabs } from "./DiffModeTabs"; import { CompareBar } from "./CompareBar"; import type { EventHistoryViewerProps } from "./types"; /** * EventHistoryViewer is the main container for viewing event history. * It composes sub-components to display current value or diff views. */ export const EventHistoryViewer = memo(function EventHistoryViewer({ // View Toggle activeView, onViewChange, currentViewLabel, currentViewDescription, currentViewIcon, diffViewLabel, diffViewDescription, diffViewIcon, // Current View Content renderCurrentView, // Diff View diffModeTabs, activeDiffMode, onDiffModeChange, renderDiffContent, // Compare Bar leftEvent, rightEvent, showCompareNavigation, onLeftPrevious, onLeftNext, onRightPrevious, onRightNext, canLeftPrevious, canLeftNext, canRightPrevious, canRightNext, onLeftPickerOpen, onRightPickerOpen, // Footer disableInternalFooter, footerCurrentIndex, footerTotalItems, footerItemLabel, footerSubtitle, onFooterPrevious, onFooterNext, }: EventHistoryViewerProps) { const diffDisabled = footerTotalItems <= 1; return ( <> 1 ? 80 : 0, }, ]} > {/* View Toggle Cards */} {/* Current View Content */} {activeView === "current" && ( {renderCurrentView()} )} {/* Diff View Content */} {activeView === "diff" && ( {/* Diff Mode Tabs (optional) */} {diffModeTabs && diffModeTabs.length > 0 && onDiffModeChange && ( )} {/* Compare Bar */} {/* Diff Content */} {renderDiffContent()} )} {/* Footer */} {!disableInternalFooter && ( )} ); }); const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: macOSColors.background.base, }, contentSection: { flex: 1, paddingHorizontal: 14, paddingVertical: 10, }, });