11</main >
22<footer class =" bg-terminal-accent p-4 w-full" >
3- <div class =" footer-flex flex justify-between items-center text-terminal-light-gray font-mono" >
4- <p >© ; <%= new Date ().getFullYear () %> Social Stuff. All rights reserved.</p >
5- <div class =" footer-items flex space-x-4" >
6- <div class =" flex items-center space-x-2" >
7- <label for =" horn-mode" class =" text-terminal-light-gray font-mono" >HORN MODE</label >
8- <input type =" checkbox" id =" horn-mode" class =" toggle-checkbox" >
9- </div >
10- <p >SYSTEM STATUS: <span class =" text-terminal-green" >ONLINE</span ></p >
11- <p >VERSION 0.0.1</p >
12- <a href =" /agreements/tos" class =" hover:underline text-terminal-green" target =" _blank" >Terms of Service</a >
13- <a href =" /agreements/eula" class =" hover:underline text-terminal-green" target =" _blank" >EULA</a >
14- </div >
3+ <div class =" footer-flex flex justify-between items-center text-terminal-light-gray font-mono" >
4+ <p >© ; <%= new Date ().getFullYear () %> Social Stuff. All rights reserved.</p >
5+ <div class =" footer-items flex space-x-4" >
6+ <div class =" flex items-center space-x-2" >
7+ <label for =" horn-mode" class =" text-terminal-light-gray font-mono" >HORN MODE</label >
8+ <input type =" checkbox" id =" horn-mode" class =" toggle-checkbox" >
9+ </div >
10+ <p >SYSTEM STATUS: <span class =" text-terminal-green" >ONLINE</span ></p >
11+ <p >VERSION 0.0.1</p >
12+ <a href =" /agreements/tos" class =" hover:underline text-terminal-green" target =" _blank" >Terms of Service</a >
13+ <a href =" /agreements/eula" class =" hover:underline text-terminal-green" target =" _blank" >EULA</a >
1514 </div >
16- <style >
17- @media (max-width : 700px ) {
18- .footer-flex {
19- flex-direction : column !important ;
20- align-items : flex-start !important ;
21- gap : 1rem ;
22- }
23- .footer-items {
24- flex-direction : column !important ;
25- align-items : flex-start !important ;
26- gap : 0.5rem ;
27- width : 100% ;
28- }
29- }
30- </style >
15+ </div >
16+ <style >
17+ @media (max-width : 700px ) {
18+ .footer-flex {
19+ flex-direction : column !important ;
20+ align-items : flex-start !important ;
21+ gap : 1rem ;
22+ }
23+
24+ .footer-items {
25+ flex-direction : column !important ;
26+ align-items : flex-start !important ;
27+ gap : 0.5rem ;
28+ width : 100% ;
29+ }
30+ }
31+ </style >
3132</footer >
3233</body >
34+ <script >
35+ // Horn button functionality
36+ const hornButton = document .getElementById (' horn-mode' );
37+
38+ const hornImage = new Image ();
39+ hornImage .src = ' /images/drhorn.jpg' ;
40+
41+ const wow = new Audio ();
42+ wow .src = ' /sounds/wow.mp3' ;
43+
44+ hornButton .addEventListener (' change' , () => {
45+ if (event .target .checked ) { // only trigger when activated, not when deactivated
46+
47+ // Sound stuff
48+ const hornSound = new Audio (wow .src );
49+ hornSound .play ();
50+
51+ // Image stuff
52+ const hornImage = document .createElement (' img' );
53+ hornImage .src = ' /images/drhorn.jpg' ;
54+ hornImage .alt = ' Horn' ;
55+ hornImage .style .position = ' fixed' ;
56+ hornImage .style .width = ' 400px' ;
57+ hornImage .style .height = ' 400px' ;
58+ hornImage .style .left = ` -500px` ;
59+ hornImage .style .bottom = ` -500px` ;
60+ document .body .appendChild (hornImage);
61+
62+ // Arc
63+ let angle = 180 ;
64+ const interval = setInterval (() => {
65+ angle += 1 ;
66+ const x = Math .cos (angle * Math .PI / 180 ) * window .innerWidth / 2 + window .innerWidth / 2 - 200 ;
67+ const y = Math .sin (angle * Math .PI / 180 ) * window .innerHeight + window .innerHeight ;
68+ hornImage .style .left = ` ${ x} px` ;
69+ hornImage .style .top = ` ${ y} px` ;
70+ if (angle >= 360 ) {
71+ clearInterval (interval);
72+ document .body .removeChild (hornImage);
73+ }
74+ }, 15 );
75+ }
76+ });
77+ </script >
3378
3479</html >
0 commit comments