1
- import React , { useState } from 'react' ;
1
+ import React , { useState , useEffect } from 'react' ;
2
2
import { Navbar } from './components/Navbar' ;
3
3
import { TestView } from './components/TestView' ;
4
4
import { LectureSelector } from './components/LectureSelector' ;
@@ -15,6 +15,26 @@ function App() {
15
15
const [ activePage , setActivePage ] = useState < ActivePage > ( 'home' ) ;
16
16
const [ showEasterEgg , setShowEasterEgg ] = useState ( false ) ;
17
17
18
+ const [ showArrowEasterEgg , setShowArrowEasterEgg ] = useState ( false ) ;
19
+ const [ , setInputSequence ] = useState < string [ ] > ( [ ] ) ;
20
+
21
+ const secretCode = [ 'ArrowUp' , 'ArrowUp' , 'ArrowDown' , 'ArrowDown' ] ;
22
+
23
+ useEffect ( ( ) => {
24
+ const handleKeyDown = ( e : KeyboardEvent ) => {
25
+ setInputSequence ( ( prev ) => {
26
+ const newSequence = [ ...prev , e . key ] . slice ( - secretCode . length ) ;
27
+ if ( JSON . stringify ( newSequence ) === JSON . stringify ( secretCode ) ) {
28
+ setShowArrowEasterEgg ( true ) ;
29
+ }
30
+ return newSequence ;
31
+ } ) ;
32
+ } ;
33
+
34
+ window . addEventListener ( 'keydown' , handleKeyDown ) ;
35
+ return ( ) => window . removeEventListener ( 'keydown' , handleKeyDown ) ;
36
+ } , [ ] ) ;
37
+
18
38
const toggleTheme = ( ) => {
19
39
setIsDark ( ! isDark ) ;
20
40
document . documentElement . classList . toggle ( 'dark' ) ;
@@ -89,7 +109,10 @@ function App() {
89
109
< div className = "min-h-screen pt-20 p-6 bg-gray-50 dark:bg-gray-900" >
90
110
< div className = "max-w-7xl mx-auto" > { renderContent ( ) } </ div >
91
111
</ div >
92
- < EasterEgg show = { showEasterEgg } onClose = { ( ) => setShowEasterEgg ( false ) } />
112
+
113
+ { /* Easter Eggs */ }
114
+ < EasterEgg show = { showEasterEgg } onClose = { ( ) => setShowEasterEgg ( false ) } videoSrc = "./easteregg.mp4" />
115
+ < EasterEgg show = { showArrowEasterEgg } onClose = { ( ) => setShowArrowEasterEgg ( false ) } videoSrc = "./easteregg2.mp4" />
93
116
</ >
94
117
) ;
95
118
}
0 commit comments