From 575ed9894ad10d609ccec1af80b3766501c952e9 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 11 Jan 2026 00:18:26 +0000 Subject: [PATCH] Changes --- src/components/SettingsPanel.tsx | 24 ++++++++++++++++++++++-- src/contexts/SettingsContext.tsx | 13 +++++++++++++ src/pages/Index.tsx | 5 +++-- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/components/SettingsPanel.tsx b/src/components/SettingsPanel.tsx index 73300c5..03a82c7 100644 --- a/src/components/SettingsPanel.tsx +++ b/src/components/SettingsPanel.tsx @@ -1,6 +1,6 @@ import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import { Settings, Monitor, Volume2, Cpu, X, Contrast } from 'lucide-react'; +import { Settings, Monitor, Volume2, Cpu, X, Contrast, Binary } from 'lucide-react'; import { useSettings } from '@/contexts/SettingsContext'; import { useAchievements } from '@/contexts/AchievementsContext'; import CryptoConsentModal from './CryptoConsentModal'; @@ -13,7 +13,7 @@ interface SettingsPanelProps { const SettingsPanel = ({ onToggleTheme, isRedTheme }: SettingsPanelProps) => { const [isOpen, setIsOpen] = useState(false); const [showCryptoModal, setShowCryptoModal] = useState(false); - const { crtEnabled, setCrtEnabled, soundEnabled, setSoundEnabled, cryptoConsent, playSound } = useSettings(); + const { crtEnabled, setCrtEnabled, matrixEnabled, setMatrixEnabled, soundEnabled, setSoundEnabled, cryptoConsent, playSound } = useSettings(); const { unlockAchievement } = useAchievements(); const handleToggle = (setter: (value: boolean) => void, currentValue: boolean, achievementId?: string) => { @@ -89,6 +89,26 @@ const SettingsPanel = ({ onToggleTheme, isRedTheme }: SettingsPanelProps) => { + {/* Matrix Rain Toggle */} +
+
+ + Matrix Rain +
+ +
+ {/* Sound Toggle */}
diff --git a/src/contexts/SettingsContext.tsx b/src/contexts/SettingsContext.tsx index c828bf0..2f71346 100644 --- a/src/contexts/SettingsContext.tsx +++ b/src/contexts/SettingsContext.tsx @@ -6,6 +6,8 @@ type SoundType = 'click' | 'beep' | 'hover' | 'boot' | 'success' | 'error'; interface SettingsContextType { crtEnabled: boolean; setCrtEnabled: (enabled: boolean) => void; + matrixEnabled: boolean; + setMatrixEnabled: (enabled: boolean) => void; soundEnabled: boolean; setSoundEnabled: (enabled: boolean) => void; cryptoConsent: boolean | null; @@ -33,6 +35,11 @@ export const SettingsProvider = ({ children }: { children: ReactNode }) => { const saved = localStorage.getItem('crtEnabled'); return saved !== null ? JSON.parse(saved) : true; }); + + const [matrixEnabled, setMatrixEnabled] = useState(() => { + const saved = localStorage.getItem('matrixEnabled'); + return saved !== null ? JSON.parse(saved) : true; + }); const [soundEnabled, setSoundEnabled] = useState(() => { const saved = localStorage.getItem('soundEnabled'); @@ -183,6 +190,10 @@ export const SettingsProvider = ({ children }: { children: ReactNode }) => { localStorage.setItem('crtEnabled', JSON.stringify(crtEnabled)); }, [crtEnabled]); + useEffect(() => { + localStorage.setItem('matrixEnabled', JSON.stringify(matrixEnabled)); + }, [matrixEnabled]); + useEffect(() => { localStorage.setItem('soundEnabled', JSON.stringify(soundEnabled)); }, [soundEnabled]); @@ -276,6 +287,8 @@ export const SettingsProvider = ({ children }: { children: ReactNode }) => { value={{ crtEnabled, setCrtEnabled, + matrixEnabled, + setMatrixEnabled, soundEnabled, setSoundEnabled, cryptoConsent, diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 9a21190..2b21dae 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -39,6 +39,7 @@ const Index = () => { const { crtEnabled, + matrixEnabled, playSound, cryptoConsent, showAudioOverlay, @@ -131,7 +132,7 @@ const Index = () => { if (!isVerified) { return (
- + {matrixEnabled && } @@ -142,7 +143,7 @@ const Index = () => { return (
- + {matrixEnabled && } {/* Audio blocked overlay */}