diff --git a/src/components/demo/DemoControlsPanel.jsx b/src/components/demo/DemoControlsPanel.jsx new file mode 100644 index 0000000..56fac84 --- /dev/null +++ b/src/components/demo/DemoControlsPanel.jsx @@ -0,0 +1,124 @@ +import React, { useState } from "react"; +import { motion, AnimatePresence } from "framer-motion"; +import { FlaskConical, X, RotateCcw, ChevronUp, ChevronDown } from "lucide-react"; +import { useDemoControls } from "./useDemoControls"; + +function Toggle({ label, description, value, onChange }) { + return ( +
+
+

{label}

+

{description}

+
+ +
+ ); +} + +export default function DemoControlsPanel() { + const [open, setOpen] = useState(false); + const { controls, update, reset } = useDemoControls(); + + return ( + <> + {/* Floating trigger button */} +
+ +
+ + {/* Panel */} + + {open && ( + + {/* Header */} +
+
+ + Demo Controls +
+ +
+ + {/* Subtitle */} +
+

+ For demo & presentation use only — simulates edge case scenarios +

+
+ + {/* Toggles */} +
+ update("userActivated", v)} + /> + update("activationCodeValid", v)} + /> +
+ + {/* Status summary */} +
+
+

Active Simulations

+
+ {!controls.userActivated && ( + Unverified User + )} + {!controls.activationCodeValid && ( + Invalid Code + )} + {controls.userActivated && controls.activationCodeValid && ( + Normal flow — no simulations active + )} +
+
+
+ + {/* Reset button */} +
+ +
+
+ )} +
+ + ); +} \ No newline at end of file