From fb312235f3197ae7274251905c8cd9fed0d00aee Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 19 Jul 2025 13:59:42 +0000 Subject: [PATCH] Add green-screen friendly versions Create green-screen versions of interactives, accessible via "/gs-dark" and "/gs-lite" paths. Hide layout elements, set green background, and adjust text/element colors for optimal green screen use. --- src/App.tsx | 2 + src/components/GreenScreenWrapper.tsx | 43 +++++++++++++++++++ src/pages/BinaryNumberGameGreenScreen.tsx | 19 ++++++++ .../theme-pages/discrete-math/Foundations.tsx | 20 ++++++++- 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 src/components/GreenScreenWrapper.tsx create mode 100644 src/pages/BinaryNumberGameGreenScreen.tsx diff --git a/src/App.tsx b/src/App.tsx index 729b1e8..dee5719 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -14,6 +14,7 @@ import DataStructures from "./pages/theme-pages/DataStructures"; import Games from "./pages/theme-pages/Games"; import CardsMath from "./pages/theme-pages/CardsMath"; import BinaryNumberGamePage from "./pages/BinaryNumberGamePage"; +import BinaryNumberGameGreenScreen from "./pages/BinaryNumberGameGreenScreen"; import Foundations from "./pages/theme-pages/discrete-math/Foundations"; import Proofs from "./pages/theme-pages/discrete-math/Proofs"; import Counting from "./pages/theme-pages/discrete-math/Counting"; @@ -54,6 +55,7 @@ const App = () => ( {/* Direct interactive routes */} } /> + } /> {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} } /> diff --git a/src/components/GreenScreenWrapper.tsx b/src/components/GreenScreenWrapper.tsx new file mode 100644 index 0000000..5cdbe7f --- /dev/null +++ b/src/components/GreenScreenWrapper.tsx @@ -0,0 +1,43 @@ +interface GreenScreenWrapperProps { + children: React.ReactNode; + mode: 'lite' | 'dark'; +} + +const GreenScreenWrapper = ({ children, mode }: GreenScreenWrapperProps) => { + const bgColor = 'bg-[#00ff00]'; // Pure green for chroma key + const textColor = mode === 'lite' ? 'text-black' : 'text-white'; + + return ( +
+ +
+ {children} +
+
+ ); +}; + +export default GreenScreenWrapper; \ No newline at end of file diff --git a/src/pages/BinaryNumberGameGreenScreen.tsx b/src/pages/BinaryNumberGameGreenScreen.tsx new file mode 100644 index 0000000..81b8222 --- /dev/null +++ b/src/pages/BinaryNumberGameGreenScreen.tsx @@ -0,0 +1,19 @@ +import { useParams } from 'react-router-dom'; +import BinaryNumberGame from '@/components/BinaryNumberGame'; +import GreenScreenWrapper from '@/components/GreenScreenWrapper'; + +const BinaryNumberGameGreenScreen = () => { + const { mode } = useParams<{ mode: 'gs-lite' | 'gs-dark' }>(); + const greenScreenMode = mode === 'gs-dark' ? 'dark' : 'lite'; + + return ( + +
+

Binary Number Representation

+ +
+
+ ); +}; + +export default BinaryNumberGameGreenScreen; \ No newline at end of file diff --git a/src/pages/theme-pages/discrete-math/Foundations.tsx b/src/pages/theme-pages/discrete-math/Foundations.tsx index 18c67bc..4582803 100644 --- a/src/pages/theme-pages/discrete-math/Foundations.tsx +++ b/src/pages/theme-pages/discrete-math/Foundations.tsx @@ -11,6 +11,7 @@ interface Interactive { description: string; tags: string[]; component: React.ComponentType; + greenScreenPath: string; } const interactives: Interactive[] = [ @@ -20,6 +21,7 @@ const interactives: Interactive[] = [ description: "Learn how numbers are represented in binary (base-2) format through an interactive guessing game.", tags: ["binary", "numbers", "conversion", "representation"], component: BinaryNumberGame, + greenScreenPath: "/binary-number-game", }, ]; @@ -57,8 +59,22 @@ const Foundations = () => { Back to Discrete Math → -
- +
+ +
+ + Green Screen (Light) + + + Green Screen (Dark) + +