@@ -13,7 +13,6 @@ const Footer: React.FC = () => {
13
13
let shiftPressed = false ;
14
14
15
15
const handleKeyDown = ( e : KeyboardEvent ) => {
16
- // Detect if Ctrl or Shift are pressed
17
16
if ( e . key === 'Control' ) {
18
17
ctrlPressed = true ;
19
18
}
@@ -23,47 +22,42 @@ const Footer: React.FC = () => {
23
22
} ;
24
23
25
24
const handleKeyUp = ( e : KeyboardEvent ) => {
26
- // When both Ctrl and Shift are released, start listening for "admin"
27
25
if ( ctrlPressed && shiftPressed ) {
28
- setListeningForAdmin ( true ) ; // Set flag to start listening for "admin"
29
- setInputSequence ( '' ) ; // Reset input sequence
26
+ setListeningForAdmin ( true ) ;
27
+ setInputSequence ( '' ) ;
30
28
ctrlPressed = false ;
31
29
shiftPressed = false ;
32
30
33
- // Set a timer to stop listening if no input in 5 seconds
34
31
if ( timer ) clearTimeout ( timer ) ;
35
32
setTimer (
36
33
setTimeout ( ( ) => {
37
- setListeningForAdmin ( false ) ; // Stop listening after 5 seconds
38
- setInputSequence ( '' ) ; // Reset sequence
34
+ setListeningForAdmin ( false ) ;
35
+ setInputSequence ( '' ) ;
39
36
} , 5000 )
40
37
) ;
41
38
}
42
39
} ;
43
40
44
41
const handleKeyPress = ( e : KeyboardEvent ) => {
45
- // Only proceed if we're in the input mode
46
42
if ( listeningForAdmin ) {
47
43
const newSequence = inputSequence + e . key . toLowerCase ( ) ;
48
44
49
- // Check if the input sequence matches "admin"
50
45
if ( newSequence === 'admin' ) {
51
46
setShowLink ( true ) ;
52
- setInputSequence ( '' ) ; // Reset sequence after success
53
- setListeningForAdmin ( false ) ; // Stop listening
47
+ setInputSequence ( '' ) ;
48
+ setListeningForAdmin ( false ) ;
54
49
55
- // Set a timer to hide the link after 5 seconds
56
50
if ( timer ) clearTimeout ( timer ) ;
57
51
setTimer (
58
52
setTimeout ( ( ) => {
59
- setShowLink ( false ) ; // Hide the link after 5 seconds
53
+ setShowLink ( false ) ;
60
54
} , 5000 )
61
55
) ;
62
56
} else if ( 'admin' . startsWith ( newSequence ) ) {
63
- setInputSequence ( newSequence ) ; // Update sequence
57
+ setInputSequence ( newSequence ) ;
64
58
} else {
65
- setInputSequence ( '' ) ; // Reset sequence on wrong input
66
- setListeningForAdmin ( false ) ; // Stop listening if incorrect
59
+ setInputSequence ( '' ) ;
60
+ setListeningForAdmin ( false ) ;
67
61
}
68
62
}
69
63
} ;
@@ -76,7 +70,7 @@ const Footer: React.FC = () => {
76
70
window . removeEventListener ( 'keydown' , handleKeyDown ) ;
77
71
window . removeEventListener ( 'keyup' , handleKeyUp ) ;
78
72
window . removeEventListener ( 'keypress' , handleKeyPress ) ;
79
- if ( timer ) clearTimeout ( timer ) ; // Clean up timeout on unmount
73
+ if ( timer ) clearTimeout ( timer ) ;
80
74
} ;
81
75
} , [ inputSequence , listeningForAdmin , timer ] ) ;
82
76
@@ -90,7 +84,7 @@ const Footer: React.FC = () => {
90
84
} ;
91
85
92
86
return (
93
- < footer >
87
+ < footer className = "footer" >
94
88
< div className = "footer-content" >
95
89
< p > © 2024 ProBooker</ p >
96
90
{ showLink && (
@@ -101,13 +95,21 @@ const Footer: React.FC = () => {
101
95
</ div >
102
96
< AdminLoginModal show = { showModal } onClose = { closeModal } />
103
97
< style jsx > { `
98
+ .footer {
99
+ width: 100%;
100
+ position: absolute;
101
+ bottom: 0;
102
+ background: #f8f9fa;
103
+ border-top: 1px solid #e9ecef;
104
+ padding: 20px;
105
+ text-align: center;
106
+ }
104
107
.footer-content {
105
108
display: flex;
106
109
justify-content: space-between;
107
110
align-items: center;
108
- padding: 20px;
109
- background: #f8f9fa;
110
- border-top: 1px solid #e9ecef;
111
+ max-width: 1200px;
112
+ margin: 0 auto;
111
113
}
112
114
a {
113
115
color: #0070f3;
@@ -122,4 +124,4 @@ const Footer: React.FC = () => {
122
124
) ;
123
125
} ;
124
126
125
- export default Footer ;
127
+ export default Footer ;
0 commit comments