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 */}