Compare commits
22 Commits
2d0595ef76
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 4bedce429e | |||
| c63b9716cd | |||
| 1ab57e0d4b | |||
| 228fc53083 | |||
| 755211d4b9 | |||
| 62b2436fbf | |||
| 65b5d89f69 | |||
| e8c619b19e | |||
| 0057b8ddf1 | |||
| d4bd776889 | |||
| e60e6791d9 | |||
| 3cdee505d9 | |||
| 65ab793b69 | |||
| ad28426269 | |||
| 6dfacfe47c | |||
| 0896de8220 | |||
| 7596d7283d | |||
| 896b2a0133 | |||
| 51bac6f65f | |||
| 7aa97c31ca | |||
| cfd2eb107d | |||
| 9b5a3592e0 |
9
404.html
9
404.html
@ -5,15 +5,6 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
|
||||
164
about.html
164
about.html
@ -1,164 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/themes/dark.css" />
|
||||
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/shoelace-autoloader.js"></script>
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/widget.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>About | Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<style>
|
||||
.samerow p {
|
||||
margin-right: 4px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- toastify -->
|
||||
<script></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<a href="/index.html">Home</a>
|
||||
<a href="/bookmarklets.html">Bookmarklets</a>
|
||||
<a href="/projects.html">Games</a>
|
||||
<a href="/apps.html">Apps</a>
|
||||
<a href="/settings.html">Settings</a>
|
||||
<a id="blank" href="#">Open Blank</a>
|
||||
<a href="/u/" class="usericon"><img src="/img/user.svg"></a>
|
||||
|
||||
</header>
|
||||
<main id="main">
|
||||
<h1>About Selenite</h1>
|
||||
<p style="padding-left: 100px; padding-right: 100px; padding-bottom: 20px">Selenite is a unblocked games website with over 200 games, with a simple tab cloak. Selenite was started as a small project started on Padlet, shared between friends. After ~1 month, we transferred to a custom made website. After a few rebrandings and redesigns, we've ended up at the Selenite you know and love (unless you work at a school).</p>
|
||||
|
||||
<h2>Credits</h2>
|
||||
<p><a href="https://jquery.com/">jQuery</a>: a lot of the more technical stuff.</p>
|
||||
<p><a href="https://github.com/js-cookie/js-cookie/">js-cookie</a>: working with cookies.</p>
|
||||
<p><a href="https://shoelace.style">Shoelace</a>: a lot of smaller styling, such as the safe mode alert</p>
|
||||
<p><a href="https://www.bootcss.com/">Bootstrap</a>: useful as a base for some smaller, styling such as the new games popup</p>
|
||||
<p><a href="https://3kh0.net">3kh0</a>: a lot of games, the download/upload save feature, and the main inspiration</p>
|
||||
<p><a href="/backgrounds.html">View Background Credits</a></p>
|
||||
|
||||
<h2>Developers</h2>
|
||||
<div class="samerow">
|
||||
<a href="https://github.com/skysthelimitt"
|
||||
><sl-avatar image="/img/pfps/sky.webp" label="skysthelimitt"></sl-avatar>
|
||||
<p>Sky</p></a
|
||||
>
|
||||
<a href="https://codeberg.org/LEGALISE_PIRACY"
|
||||
><sl-avatar image="/img/pfps/legalise.webp" label="LEGALISE_PIRACY"></sl-avatar>
|
||||
<p>LEGALISE</p></a
|
||||
>
|
||||
<a href="https://github.com/a456pur"
|
||||
><sl-avatar image="/img/pfps/astra.webp" label="a456pur"></sl-avatar>
|
||||
<p>a456pur</p></a
|
||||
>
|
||||
</div>
|
||||
|
||||
<h2>Supporters</h2>
|
||||
<div class="samerow">
|
||||
<a class="avatar" href="https://discord.com/users/731338278082445376"
|
||||
><sl-avatar image="/img/pfps/caidn.webp" label="Caidn"></sl-avatar>
|
||||
<p>Caidn</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.com/users/704499571400638554"
|
||||
><sl-avatar image="/img/pfps/buttsfart.webp" label="Buttsfart"></sl-avatar>
|
||||
<p>Buttsfart</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.com/users/778709612621987850"
|
||||
><sl-avatar image="/img/pfps/ayo.webp" label="ayo"></sl-avatar>
|
||||
<p>ayo</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.com/users/510677660775743500"
|
||||
><sl-avatar image="/img/pfps/astra.webp" label="astra"></sl-avatar>
|
||||
<p>a456pur</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.com/users/724793658011811862"
|
||||
><sl-avatar image="/img/pfps/dire.webp" label="direflaws"></sl-avatar>
|
||||
<p>DireFlaws</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.com/users/1068293020534964306"
|
||||
><sl-avatar image="/img/pfps/awesome.webp" label="awesome"></sl-avatar>
|
||||
<p>Awesome-XV</p></a
|
||||
>
|
||||
</div>
|
||||
<h2>Partners</h2>
|
||||
<div class="samerow">
|
||||
|
||||
<a class="avatar" href="https://discord.gg/echodev-971769908205604864"
|
||||
><sl-avatar image="/img/pfps/3kh0.webp" label="3kh0"></sl-avatar>
|
||||
<p>3kh0.net</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/Cqaa8x82Ch"
|
||||
><sl-avatar image="/img/pfps/snor.webp" label="snorlax"></sl-avatar>
|
||||
<p>Snorlax's Cave</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/DYSB3TeQ2y"
|
||||
><sl-avatar image="/img/pfps/shadow.webp" label="shadow"></sl-avatar>
|
||||
<p>Shadow Network</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/DmQMtsTPD6"
|
||||
><sl-avatar image="/img/pfps/night.webp" label="night"></sl-avatar>
|
||||
<p>Night Network</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/xMyUXZ7Z8y"
|
||||
><sl-avatar image="/img/pfps/math.webp" label="orbit"></sl-avatar>
|
||||
<p>Math Orbit</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/H7JqRwykhk"
|
||||
><sl-avatar image="/img/pfps/wrnd.gif" label="wrnd"></sl-avatar>
|
||||
<p>WRND</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/sSWRxaHhvA"
|
||||
><sl-avatar image="/img/pfps/lunar.webp" label="lunarsync"></sl-avatar>
|
||||
<p>Lunarsync</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/nPzc5ambR4"
|
||||
><sl-avatar image="/img/pfps/ultra.webp" label="ultrabrowse"></sl-avatar>
|
||||
<p>Ultrabrowse</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/yNJ6Yx6qVu"
|
||||
><sl-avatar image="/img/pfps/compass.png" label="compass"></sl-avatar>
|
||||
<p>Compass Network</p></a
|
||||
>
|
||||
<a class="avatar" href="https://discord.gg/HynWJ8aq"
|
||||
><sl-avatar image="/img/pfps/ocular.webp" label="ocular"></sl-avatar>
|
||||
<p>Ocular Network</p></a
|
||||
> <!--Note: Ocular is Breakium.com -->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<a href="gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/support.html">Donate</a>
|
||||
<a href="/about.html">About</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
59
ad.html
59
ad.html
@ -1,59 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="sl-theme-dark" lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/themes/dark.css" />
|
||||
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/shoelace-autoloader.js"></script>
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/widget.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>Contact | Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
|
||||
<!-- toastify -->
|
||||
<script></script>
|
||||
</head>
|
||||
|
||||
<body id="noscroll">
|
||||
<header>
|
||||
<a href="/index.html">Home</a>
|
||||
<a href="/bookmarklets.html">Bookmarklets</a>
|
||||
<a href="/projects.html">Games</a>
|
||||
<a href="/settings.html">Settings</a>
|
||||
<a id="blank" href="#">Open Blank</a>
|
||||
<a href="/u/" class="usericon"><img src="/img/user.svg"></a>
|
||||
|
||||
</header>
|
||||
<main id="main" class="noscroll">
|
||||
<h2>What happened? Why does Selenite have ads?</h2>
|
||||
<p style="padding-left: 100px; padding-right: 100px; padding-bottom: 20px">After a lot of thinking, I have decided that the best course of action for Selenite is to add ads. I have spent a lot of time to make sure they are the least intrusive on your experience while still allowing me to make a profit off of the website. This decision was not out of greed or anything, it was because I can't expand Selenite past a certain point without a guaranteed income, and I can't do that solely off of donations.</p>
|
||||
<p>Ads are powered by Adsterra, and we use the Social bar and the Native banners, with erotic ads disabled.</p>
|
||||
<p>There is still an option to disable ads. You can also use an adblocker (which I <strong >HIGHLY</strong> recommend).</p>
|
||||
<button onclick="localStorage.setItem('selenite.adblock', 'true')">Click here to disable ads.</button>
|
||||
</main>
|
||||
|
||||
<footer class="noscroll">
|
||||
<a href="https://gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/support.html">Donate</a>
|
||||
<a href="/about.html">About</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
17
apps.html
17
apps.html
@ -4,16 +4,11 @@
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/apps.js"></script>
|
||||
<script src="/js/search.js"></script>
|
||||
<script src="/js/all.min.js" async></script>
|
||||
<script>let type = "a";</script>
|
||||
<script src="/js/loader.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
<script src="/js/cookie.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css" />
|
||||
@ -36,9 +31,9 @@
|
||||
<input type="text" class="searchbar" id="gamesearch" placeholder="Type here to search.." />
|
||||
<p id="gameCount">xx games loaded..</p>
|
||||
<p id="starredHeader">starred apps</p>
|
||||
<div id="starredgames">
|
||||
</div>
|
||||
<p id="allHeader">all apps</p>
|
||||
<div id="starredgames"></div>
|
||||
<div id="topGames"></div>
|
||||
<p id="allHeader" class="title">all apps</p>
|
||||
<div id="games">
|
||||
<p id="loadingMsg">games loading..</p>
|
||||
<p id="noResults">nothing was found! try a new search query.</p>
|
||||
|
||||
@ -5,16 +5,6 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta name="keywords" content="proxy, web proxy, unblock websites, unblock chromebook, free web proxy, proxy list, proxy sites, un block chromebook, online proxy, proxy server, proxysite, proxy youtube, bypass securly, bypass iboss, bypass lightspeed filter, chromebooks, unblock youtube, youtube proxy, unblocked youtube, youtube unblocked, unblock games, selenite, unblocked games, free games">
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
|
||||
63
contact.html
63
contact.html
@ -1,63 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="sl-theme-dark" lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/themes/dark.css" />
|
||||
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/shoelace-autoloader.js"></script>
|
||||
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/widget.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>Contact | Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
|
||||
<!-- toastify -->
|
||||
<script></script>
|
||||
</head>
|
||||
|
||||
<body id="noscroll">
|
||||
<header>
|
||||
<a href="/index.html">Home</a>
|
||||
<a href="/bookmarklets.html">Bookmarklets</a>
|
||||
<a href="/projects.html">Games</a>
|
||||
<a href="/apps.html">Apps</a>
|
||||
<a href="/settings.html">Settings</a>
|
||||
<a id="blank" href="#">Open Blank</a>
|
||||
<a href="/u/" class="usericon"><img src="/img/user.svg"></a>
|
||||
|
||||
</header>
|
||||
<main id="main" class="noscroll">
|
||||
<h2>Have a question or concern?</h2>
|
||||
<h3>You can contact me using the following methods:</h3>
|
||||
<a href="mailto:support@selenite.cc">Email me</a>
|
||||
<a href="https://discord.com/users/1014608595263950848">Message me on discord at @skysthelimit.dev</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Join the discord</a>
|
||||
</main>
|
||||
|
||||
<footer class="noscroll">
|
||||
<a href="https://gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/support.html">Donate</a>
|
||||
<a href="/about.html">About</a>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@ -1,4 +1,4 @@
|
||||
game {
|
||||
.game {
|
||||
width: 20vw;
|
||||
height: 10vh;
|
||||
background-color: color-mix(in srgb, var(--color-2) 40%, #00000000 60%);
|
||||
@ -11,12 +11,15 @@ game {
|
||||
/* transition-duration: 0.25s; */
|
||||
backdrop-filter: blur(2px);
|
||||
box-shadow: 0 0 10px var(--color-2);
|
||||
text-decoration: none;
|
||||
content-visibility: auto;
|
||||
contain-intrinsic-size: auto 10vh;
|
||||
}
|
||||
game:hover {
|
||||
.game:hover {
|
||||
transform: scale(1.1);
|
||||
filter:brightness(1.15);
|
||||
}
|
||||
game img {
|
||||
.game img {
|
||||
height: 80%;
|
||||
border-radius: 15px;
|
||||
aspect-ratio: 1 / 1;
|
||||
@ -80,15 +83,15 @@ body {
|
||||
}
|
||||
warnings {
|
||||
position: absolute;
|
||||
top: -20px;
|
||||
left: -20px;
|
||||
top: 0px;
|
||||
right: 5px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
warning {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
color: var(--text-color);
|
||||
border-radius: 100%;
|
||||
display: flex;
|
||||
@ -112,4 +115,14 @@ warning {
|
||||
body[fast] game {
|
||||
background-color: color-mix(in srgb, var(--color-2) 70%, #000000 30%);
|
||||
backdrop-filter: blur(0);
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
game {
|
||||
width: 40vw;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 660px) {
|
||||
game {
|
||||
width: 60vw;
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ body {
|
||||
width: 100vw;
|
||||
height: 90vh;
|
||||
margin: 0;
|
||||
background-color: black;
|
||||
}
|
||||
#infobox {
|
||||
height: 10vh;
|
||||
@ -56,4 +57,16 @@ body {
|
||||
body[fast] #gamecontainer {
|
||||
background-color: color-mix(in srgb, var(--color-2) 70%, #000000 30%);
|
||||
backdrop-filter: blur(0);
|
||||
}
|
||||
@media screen and (max-width: 660px) {
|
||||
#infobox h2 {
|
||||
max-width: 45%;
|
||||
font-size: 16px;
|
||||
}
|
||||
.button {
|
||||
width: 22%;
|
||||
margin: 0.5%;
|
||||
aspect-ratio: 1 / 1;
|
||||
border-radius: 8px;
|
||||
}
|
||||
}
|
||||
20
css/main.css
20
css/main.css
@ -121,4 +121,24 @@ mobile-warning, loading-game {
|
||||
flex-direction: column;
|
||||
/* transition-duration: 1s; */
|
||||
text-align: center;
|
||||
}
|
||||
button {
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
padding: 12px;
|
||||
margin: 8px;
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
background-color: var(--color-2);
|
||||
border-color: var(--color-3);
|
||||
color: var(--text-color);
|
||||
outline: none;
|
||||
transition-duration: 0.25s;
|
||||
font-size: 14px;
|
||||
text-shadow: var(--color-1) 0 0 10px;
|
||||
cursor:pointer;
|
||||
}
|
||||
button:hover {
|
||||
filter: brightness(1.1);
|
||||
transform: scale(1.05);
|
||||
}
|
||||
@ -44,26 +44,6 @@ body {
|
||||
transition-duration: 0.05s;
|
||||
transition-timing-function: ease-out;
|
||||
}
|
||||
button {
|
||||
border-style: solid;
|
||||
border-width: 2px;
|
||||
padding: 12px;
|
||||
margin: 8px;
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
background-color: var(--color-2);
|
||||
border-color: var(--color-3);
|
||||
color: var(--text-color);
|
||||
outline: none;
|
||||
transition-duration: 0.25s;
|
||||
font-size: 14px;
|
||||
text-shadow: var(--color-1) 0 0 10px;
|
||||
cursor:pointer;
|
||||
}
|
||||
button:hover {
|
||||
filter: brightness(1.1);
|
||||
transform: scale(1.05);
|
||||
}
|
||||
input[type=text], input[type=password] {
|
||||
width: 70%;
|
||||
border-style: solid;
|
||||
|
||||
257
css/sidebar.css
257
css/sidebar.css
@ -1,104 +1,114 @@
|
||||
html,
|
||||
body {
|
||||
overflow: hidden;
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
sidebar {
|
||||
background-color: linear-gradient(19deg,rgba(87, 199, 133, 1) 0%, rgba(237, 221, 83, 1) 100%);;
|
||||
height: 100%;
|
||||
width: 50px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
user-select: none;
|
||||
z-index: 10;
|
||||
background-color: linear-gradient(19deg, rgba(87, 199, 133, 1) 0%, rgba(237, 221, 83, 1) 100%);
|
||||
;
|
||||
height: 100%;
|
||||
width: 50px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
user-select: none;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
margin: 6px;
|
||||
padding: 6px;
|
||||
height: 26px;
|
||||
width: 26px;
|
||||
transition-duration: 0.5s;
|
||||
transition-timing-function: ease-in-out;
|
||||
margin: 6px;
|
||||
padding: 6px;
|
||||
height: 26px;
|
||||
width: 26px;
|
||||
transition-duration: 0.5s;
|
||||
transition-timing-function: ease-in-out;
|
||||
}
|
||||
|
||||
iframe {
|
||||
width: calc(100% - 50px - 10px);
|
||||
height: calc(100vh - 20px);
|
||||
margin: 10px;
|
||||
margin-right: 0px;
|
||||
border-radius: 8px;
|
||||
width: calc(100% - 50px - 10px);
|
||||
height: calc(100vh - 20px);
|
||||
margin: 10px;
|
||||
margin-right: 0px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.sidebar-divider {
|
||||
height: 2px;
|
||||
border-radius: 20px;
|
||||
width: 80%;
|
||||
background-color: #ffffff22;
|
||||
/* auto is being stupid
|
||||
background-color: #ffffff22;
|
||||
/* auto is being stupid
|
||||
100vh minus height of 1 object 7 times minus the margin and padding of 7 objects (multiplied twice bc margin and padding on top and bottom) */
|
||||
margin-bottom: calc(100vh - 26px * 8 - ((6px + 6px) * 2) * 8);
|
||||
margin-bottom: calc(100vh - 26px * 9 - ((6px + 6px) * 2) * 9);
|
||||
}
|
||||
|
||||
.sidebar-item-descriptor {
|
||||
position: fixed;
|
||||
right: 25px;
|
||||
opacity: 0;
|
||||
transform: translateY(-32px);
|
||||
text-align: left;
|
||||
background-color: black;
|
||||
border-radius: 10px;
|
||||
padding: 8px;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.5s 0.2s, right 0.5s 0.2s;
|
||||
font-family: "Mulish", serif;
|
||||
position: fixed;
|
||||
right: 25px;
|
||||
opacity: 0;
|
||||
transform: translateY(-32px);
|
||||
text-align: left;
|
||||
background-color: black;
|
||||
border-radius: 10px;
|
||||
padding: 8px;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.5s 0.2s, right 0.5s 0.2s;
|
||||
font-family: "Mulish", serif;
|
||||
}
|
||||
|
||||
.sidebar-item:hover .sidebar-item-descriptor {
|
||||
opacity: 1;
|
||||
right: 55px;
|
||||
}
|
||||
#bottom-menu, #open-bottom-menu {
|
||||
position: absolute;
|
||||
bottom: -40px;
|
||||
height: 50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 40%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: black;
|
||||
z-index: 5;
|
||||
border-radius: 10px 10px 0 0;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
}
|
||||
#bottom-menu {
|
||||
width: fit-content;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
opacity: 1;
|
||||
right: 55px;
|
||||
}
|
||||
|
||||
#bottom-menu,
|
||||
#open-bottom-menu {
|
||||
bottom: 10px;
|
||||
height: 15px;
|
||||
width: 70px;
|
||||
z-index: 5;
|
||||
filter: drop-shadow(0 0 16px #fff5);
|
||||
position: absolute;
|
||||
bottom: -40px;
|
||||
height: 50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 40%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: black;
|
||||
z-index: 5;
|
||||
border-radius: 10px 10px 0 0;
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
}
|
||||
|
||||
#bottom-menu {
|
||||
width: fit-content;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
#open-bottom-menu {
|
||||
bottom: 10px;
|
||||
height: 15px;
|
||||
width: 70px;
|
||||
z-index: 5;
|
||||
filter: drop-shadow(0 0 16px #fff5);
|
||||
}
|
||||
|
||||
#bottom-menu[enabled=true] {
|
||||
bottom: 10px;
|
||||
color: white;
|
||||
filter: drop-shadow(0 0 16px #fff5);
|
||||
z-index: 0;
|
||||
bottom: 10px;
|
||||
color: white;
|
||||
filter: drop-shadow(0 0 16px #fff5);
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
#open-bottom-menu[enabled=true] {
|
||||
bottom: 60px;
|
||||
filter: drop-shadow(0 0 0 #fff5);
|
||||
opacity: 0;
|
||||
bottom: 60px;
|
||||
filter: drop-shadow(0 0 0 #fff5);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
alert {
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
@ -110,38 +120,129 @@ alert {
|
||||
padding: 8px;
|
||||
color: white;
|
||||
background-color: color-mix(in srgb, #d46c6c 80%, #00000000 20%);
|
||||
backdrop-filter: blur(2px);
|
||||
backdrop-filter: blur(2px);
|
||||
box-shadow: 0 0 10px #d46c6c;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
animation: fadeIn 1s ease-in-out forwards, fadeOut 1s ease-in-out forwards 14s;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
alert h1 {
|
||||
font-size: 20px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
alert p {
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
0% {
|
||||
opacity: 0;
|
||||
top: -50px;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes fadeOut {
|
||||
0% {
|
||||
opacity: 1;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 0;
|
||||
top: -50px;
|
||||
}
|
||||
}
|
||||
|
||||
#fullscreen {
|
||||
display: none;
|
||||
}
|
||||
|
||||
welcome {
|
||||
position: absolute;
|
||||
width: 400px;
|
||||
height: 600px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
margin: auto auto;
|
||||
overflow: hidden;
|
||||
transition-duration: 1s;
|
||||
display: none;
|
||||
opacity: 0;
|
||||
/* display: flex; */
|
||||
background-color: color-mix(in srgb, var(--color-3) 95%, #00000000 5%);
|
||||
border-radius: 20px;
|
||||
backdrop-filter: blur(8px);
|
||||
box-shadow: 0 0 10px var(--color-3);
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
welcome section {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
transition-duration: 1s;
|
||||
transition-timing-function: cubic-bezier(.53, 0, .5, 1);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
#blur {
|
||||
backdrop-filter: blur(8px);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
z-index: 999;
|
||||
}
|
||||
@media screen and (max-width: 660px) {
|
||||
sidebar {
|
||||
height: 50px;
|
||||
width: 100vw;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
user-select: none;
|
||||
z-index: 10;
|
||||
overflow: scroll;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
iframe {
|
||||
width: calc(100% - 20px);
|
||||
height: calc(100% - 50px - 20px);
|
||||
margin: 10px;
|
||||
margin-right: 0px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
|
||||
#bottom-menu,
|
||||
#open-bottom-menu,
|
||||
.sidebar-item-descriptor {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#openblank {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#fullscreen {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@ -42,4 +42,13 @@ body[theme=sky] {
|
||||
--color-2: #2ab9f2;
|
||||
--color-3: #3188bd;
|
||||
--color-4: #23588a;
|
||||
}
|
||||
body[theme=xmas] {
|
||||
--text-color: #dcffab;
|
||||
--bg-1: #a00000;
|
||||
--bg-2: #400000;
|
||||
--color-1: #dcffab;
|
||||
--color-2: #a32a2a;
|
||||
--color-3: #000000;
|
||||
--color-4: #630000;
|
||||
}
|
||||
@ -56,4 +56,14 @@
|
||||
body[fast] .users {
|
||||
background-color: color-mix(in srgb, var(--color-2) 70%, #000000 30%);
|
||||
backdrop-filter: blur(0);
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
.users {
|
||||
width: 40vw;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 660px) {
|
||||
.users {
|
||||
width: 80vw;
|
||||
}
|
||||
}
|
||||
11
dmca.html
11
dmca.html
@ -5,16 +5,6 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
@ -43,7 +33,6 @@
|
||||
<!-- seo + other things -->
|
||||
<title>Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415518411898563" crossorigin="anonymous"></script>
|
||||
<style>
|
||||
p {
|
||||
width: 60%;
|
||||
|
||||
13
home.html
13
home.html
@ -5,15 +5,6 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
@ -81,9 +72,5 @@
|
||||
<a target="_blank" href="https://discord.gg/7jyufnwJNf"><img src="img/discord.svg" /></a>
|
||||
</div>
|
||||
</div>
|
||||
<p>heads up!</p>
|
||||
<p>this is a development build of selenite</p>
|
||||
<p>stuff is going to be broken (especially games)</p>
|
||||
<p>if you have any issues, report them in the discord</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
1
img/missing.svg
Normal file
1
img/missing.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm40-337 160-160 160 160 160-160 40 40v-183H200v263l40 40Zm-40 257h560v-264l-40-40-160 160-160-160-160 160-40-40v184Zm0 0v-264 80-376 560Z"/></svg>
|
||||
|
After Width: | Height: | Size: 381 B |
222
index.html
222
index.html
@ -5,57 +5,65 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta name="keywords" content="proxy, web proxy, unblock websites, unblock chromebook, free web proxy, proxy list, proxy sites, un block chromebook, online proxy, proxy server, proxysite, proxy youtube, bypass securly, bypass iboss, bypass lightspeed filter, chromebooks, unblock youtube, youtube proxy, unblocked youtube, youtube unblocked, unblock games, selenite, unblocked games, free games">
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "Selenite",
|
||||
"alternateName": "selenite.cc",
|
||||
"url": "https://selenite.cc",
|
||||
"logo": "https://selenite.cc/favicon.png",
|
||||
"sameAs": [
|
||||
"https://github.com/selenite-cc",
|
||||
"https://youtube.com/@selenitecc",
|
||||
"https://tiktok.com/@selenitecc",
|
||||
"https://selenite.cc",
|
||||
]
|
||||
}
|
||||
</script>
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta property="og:title" content="IXL | Math, Language Arts, Science, Social Studies, and Spanish"/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="IXL is the world's most popular subscription-based learning site for K–12. Used by over 17 million students, IXL provides personalized learning in more than 17,000 topics, covering math, language arts, science, social studies, and Spanish. Interactive questions, awards, and certificates keep kids motivated as they master skills."
|
||||
/>
|
||||
<meta property="og:url" content="https://www.ixl.com"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:site_name" content="IXL Learning"/>
|
||||
<meta property="og:image"content="https://www.ixl.com/dv3/powZqMuTE7du4asFrVyNGxxoqkw/yui3/opengraph/assets/general_us.png"/>
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/all.min.js" async></script>
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css" />
|
||||
<link rel="stylesheet" href="/css/sidebar.css" />
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
|
||||
<!-- seo + other things -->
|
||||
<style>
|
||||
@media screen and (max-width: 660px) {
|
||||
iframe, sidebar {
|
||||
display: none;
|
||||
}
|
||||
mobile-warning {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<title>Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" id="favicon" />
|
||||
<title>IXL | Math, Language Arts, Science, Social Studies, and Spanish</title>
|
||||
<link rel="icon" href="https://ixl.com/ixl-favicon.png" id="favicon" />
|
||||
<!-- <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415518411898563" crossorigin="anonymous"></script> -->
|
||||
<script>
|
||||
window.addEventListener('beforeunload', function (event) {
|
||||
event.preventDefault();
|
||||
event.returnValue = '';
|
||||
return 'Are you sure you want to leave? Any unsaved changes will be lost.';
|
||||
});
|
||||
function connectToSocket() {
|
||||
let socket = new WebSocket("/socket");
|
||||
socket.addEventListener("open", () => {
|
||||
let cookies = document.cookie.split("; ");
|
||||
for (let i = 0; i < cookies.length; i++) {
|
||||
if (cookies[i].trim().startsWith("token=")) {
|
||||
socket.send(cookies[i].trim());
|
||||
}
|
||||
}
|
||||
});
|
||||
socket.addEventListener("message", (e)=>{
|
||||
if(e.data.split("=")[0] == "online") {
|
||||
socket.send("1");
|
||||
document.getElementById("online").innerText = `currently online: ${e.data.split("=")[1]}`;
|
||||
} else {
|
||||
if(e.data.startsWith("annc")) {
|
||||
let message = e.data.split(";;");
|
||||
sAlert(message[1], message[2]);
|
||||
}
|
||||
}
|
||||
})
|
||||
socket.addEventListener("close", () => {
|
||||
setTimeout(() => {
|
||||
connectToSocket();
|
||||
}, 1000 * 3)
|
||||
})
|
||||
}
|
||||
|
||||
let currentPanic = {key: "", url: ""};
|
||||
const weatherCodeToEmoji = {
|
||||
0: '☀️',
|
||||
@ -104,7 +112,7 @@
|
||||
let weatherData = await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${locationData.latitude}&longitude=${locationData.longitude}¤t=temperature_2m,weather_code&temperature_unit=fahrenheit`)
|
||||
.then(data => data.json());
|
||||
|
||||
document.getElementById("weather").innerText = `${Math.round(weatherData["current"]["temperature_2m"])}°C ${weatherCodeToEmoji[weatherData["current"]["weather_code"]]}`
|
||||
document.getElementById("weather").innerText = `${Math.round(weatherData["current"]["temperature_2m"])}°F ${weatherCodeToEmoji[weatherData["current"]["weather_code"]]}`
|
||||
}
|
||||
function updateTime() {
|
||||
document.getElementById("time").innerText = (new Date()).toLocaleTimeString();
|
||||
@ -123,7 +131,50 @@
|
||||
alertHolder.remove();
|
||||
}, 1000 * 15)
|
||||
}
|
||||
|
||||
function welcomeScreen() {
|
||||
let screenIDs = ["zero", "one", "two", "three", "four"];
|
||||
let screens = screenIDs.map((e) => document.getElementById(e));
|
||||
let index = 0;
|
||||
|
||||
let welcome = document.querySelector("welcome");
|
||||
let blur = document.getElementById("blur");
|
||||
|
||||
// TODO: finish
|
||||
hideAll();
|
||||
return;
|
||||
// LEAKED LEAKED!!!
|
||||
// new selenite feature woah
|
||||
|
||||
function hideAll() {
|
||||
welcome.remove();
|
||||
blur.remove();
|
||||
}
|
||||
function finish() {
|
||||
welcome.style.opacity = "0";
|
||||
blur.style.opacity = "0";
|
||||
setTimeout(() => {
|
||||
hideAll();
|
||||
document.cookie = "selenite.welcomeFinished=true";
|
||||
}, 1000)
|
||||
}
|
||||
function showNextScreen() {
|
||||
index++;
|
||||
if(index == screens.length) {finish();return;};
|
||||
screens[index-1].style.transform = "translateY(-100%)";
|
||||
screens[index].style.transform = "translateY(0%)";
|
||||
screens[index].querySelector("#nextPage").addEventListener("click", showNextScreen);
|
||||
}
|
||||
if(document.cookie.includes("selenite.welcomeFinished")) hideAll();
|
||||
|
||||
welcome.style.display = "block";
|
||||
welcome.style.opacity = "1";
|
||||
screens[0].style.transform = "translateY(0%)";
|
||||
screens[0].querySelector("#nextPage").addEventListener("click", showNextScreen);
|
||||
screens[0].querySelector("#skip").addEventListener("click", finish);
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", async ()=>{
|
||||
connectToSocket();
|
||||
getWeather();
|
||||
setInterval(getWeather, 1000 * 60 * 30);
|
||||
setInterval(updateTime, 1000 / 2);
|
||||
@ -156,28 +207,12 @@
|
||||
})
|
||||
});
|
||||
document.querySelector("loading-game").style.display = "none";
|
||||
}
|
||||
}
|
||||
let socket = new WebSocket("/socket");
|
||||
socket.addEventListener("open", () => {
|
||||
let cookies = document.cookie.split("; ");
|
||||
for (let i = 0; i < cookies.length; i++) {
|
||||
if (cookies[i].trim().startsWith("token=")) {
|
||||
socket.send(cookies[i].trim());
|
||||
}
|
||||
}
|
||||
});
|
||||
socket.addEventListener("message", (e)=>{
|
||||
if(e.data.split("=")[0] == "online") {
|
||||
socket.send("1");
|
||||
document.getElementById("online").innerText = `currently online: ${e.data.split("=")[1]}`;
|
||||
} else {
|
||||
if(e.data.startsWith("annc")) {
|
||||
let message = e.data.split(";;");
|
||||
sAlert(message[1], message[2]);
|
||||
}
|
||||
welcomeScreen();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
welcomeScreen();
|
||||
}
|
||||
let currentCloak = {name: "", icon: ""};
|
||||
setInterval(()=>{
|
||||
if(localStorage.getItem("selenite.tab-cloak")) {
|
||||
@ -232,7 +267,10 @@
|
||||
location.href = "https://google.com";
|
||||
window.close();
|
||||
})
|
||||
|
||||
} else if(item.childNodes[0].id == "fullscreen") {
|
||||
item.childNodes[0].addEventListener("click", (e)=>{
|
||||
document.getElementById("iframe").requestFullscreen();
|
||||
})
|
||||
}
|
||||
})
|
||||
document.getElementById("open-bottom-menu").addEventListener("click", ()=>{
|
||||
@ -249,7 +287,36 @@
|
||||
<mobile-warning><h1 class="title">your device is not supported!</h1><p>please rotate your screen for the best experience.</p></mobile-warning>
|
||||
<loading-game><h1 class="title">we are loading your game!</h1><p>please allow us to fetch the data first, this should only take a second.</p></loading-game>
|
||||
<body>
|
||||
<iframe id="iframe" src="home.html"></iframe>
|
||||
<welcome>
|
||||
<section id="zero" style="transform: translateY(100%);">
|
||||
<h1>welcome to selenite!</h1>
|
||||
<button id="nextPage">next</button>
|
||||
<button id="skip">skip</button>
|
||||
</section>
|
||||
<section id="one" style="transform: translateY(100%);">
|
||||
<h1>themes</h1>
|
||||
<p>theme selector</p>
|
||||
<button id="nextPage">next</button>
|
||||
</section>
|
||||
<section id="two" style="transform: translateY(100%);">
|
||||
<h1>settings</h1>
|
||||
<p>tab cloak</p>
|
||||
<p>panic button</p>
|
||||
<p>automaically launch in tab cloak</p>
|
||||
<button id="nextPage">next</button>
|
||||
</section>
|
||||
<section id="three" style="transform: translateY(100%);">
|
||||
<h1>performance</h1>
|
||||
<p>fast mode</p>
|
||||
<button id="nextPage">next</button>
|
||||
</section>
|
||||
<section id="four" style="transform: translateY(100%);">
|
||||
<h1>thank you! enjoy</h1>
|
||||
<button id="nextPage">done</button>
|
||||
</section>
|
||||
</welcome>
|
||||
<div id="blur"></div>
|
||||
<iframe id="iframe" src="home.html" allow="cross-origin-isolated"></iframe>
|
||||
<!-- to do
|
||||
add colors -->
|
||||
<sidebar>
|
||||
@ -258,6 +325,7 @@
|
||||
<div class="sidebar-item"><a href="#" target="/apps"><img src="/img/apps.svg" /></a><div class="sidebar-item-descriptor">apps</div></div> <!-- apps -->
|
||||
<div class="sidebar-item"><a href="#" target="/bookmarklets"><img src="/img/bookmarklets.svg" /></a><div class="sidebar-item-descriptor">bookmarklets</div></div> <!-- reload -->
|
||||
<div class="sidebar-item"><a href="#" id="openblank"><img src="/img/open.svg" /></a><div class="sidebar-item-descriptor">open blank</div></div> <!-- open blank -->
|
||||
<div class="sidebar-item"><a href="#" id="fullscreen"><img src="/img/fullscreen.svg" /></a><div class="sidebar-item-descriptor">fullscreen</div></div> <!-- open blank -->
|
||||
<div class="sidebar-divider"></div>
|
||||
<div class="sidebar-item"><a href="#" target="/u/"><img src="/img/user.svg" /></a><div class="sidebar-item-descriptor">user profile</div></div> <!-- user -->
|
||||
<div class="sidebar-item"><a href="#" target="/settings"><img src="/img/settings.svg" /></a><div class="sidebar-item-descriptor">settings</div></div> <!-- settings -->
|
||||
@ -267,9 +335,37 @@
|
||||
<div id="bottom-menu">
|
||||
<div class="bottom-item"><p id="online">currently online: --</p></div>
|
||||
<div class="bottom-item"><p>|</p></div>
|
||||
<div class="bottom-item"><p id="weather">--° 🌩️</p></div>
|
||||
<div class="bottom-item"><p id="weather">--°F 🌩️</p></div>
|
||||
<div class="bottom-item"><p>|</p></div>
|
||||
<div class="bottom-item"><p id="time">7:41:21 pm</p></div>
|
||||
</div>
|
||||
<div style="display:none">
|
||||
<h1 id="edu-title">Johnson Education</h1>
|
||||
<button id="edu-button">Math Lessons</button>
|
||||
<p id="edu-text">Educational Resources for Students</p>
|
||||
<p id="edu-text">Science Textbooks</p>
|
||||
<h1>Educational Resources and Online Learning Platform</h1>
|
||||
<p>Comprehensive education platform for students, teachers, and lifelong learners. Access online courses, study materials, exam preparation resources, and interactive learning tools.</p>
|
||||
<section>
|
||||
<h2>Academic Subjects</h2>
|
||||
<p>Mathematics, Science, English, History, Literature, Writing, Reading, Social Studies, Geography, Biology, Chemistry, Physics, Algebra, Geometry, Calculus, Statistics, Computer Science, Programming, Foreign Languages, Art, Music</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Educational Services</h2>
|
||||
<p>Online courses, college credit, exam preparation, test prep, tutoring, homework help, study guides, practice tests, educational videos, interactive lessons, learning resources, curriculum development, academic support, student success, teacher resources, educational technology, e-learning, distance education, virtual classroom, online tutoring, academic coaching</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Student Levels</h2>
|
||||
<p>K-12 education, elementary school, middle school, high school, college, university, graduate school, continuing education, adult learning, professional development, certification programs, degree programs, homeschool education</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>Test Preparation</h2>
|
||||
<p>SAT prep, ACT prep, GRE prep, GMAT prep, LSAT prep, MCAT prep, AP courses, Advanced Placement, standardized tests, college entrance exams, professional certification exams, state assessments, final exams, midterms</p>
|
||||
</section>
|
||||
<section>
|
||||
<h3>Learning Methods</h3>
|
||||
<p>Interactive learning, video lessons, practice quizzes, flashcards, study notes, educational games, adaptive learning, personalized education, self-paced learning, collaborative learning, project-based learning, STEM education, critical thinking, problem solving</p>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
13
info.html
13
info.html
@ -5,16 +5,6 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
@ -43,7 +33,6 @@
|
||||
<!-- seo + other things -->
|
||||
<title>Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415518411898563" crossorigin="anonymous"></script>
|
||||
<style>
|
||||
p {
|
||||
width: 60%;
|
||||
@ -57,6 +46,8 @@
|
||||
<p>you may make suggestions in our <a target="_blank" href="https://discord.gg/7jyufnwJNf">discord</a> or <a href="mailto:support@selenite.cc">email our support team</a>.</p>
|
||||
<h2>dmca</h2>
|
||||
<p>please check <a href="/dmca.html">here</a> for information.</p>
|
||||
<h2>privacy policy</h2>
|
||||
<p>please check <a href="/privacy.html">here</a> to see how we process your information.</p>
|
||||
<h2>credits</h2>
|
||||
<p>whilst the majority of the work has been done by the creator, sky, selenite would not be possible without some key sources and people.</p>
|
||||
<p><a href="https://github.com/a456pur/seraph">seraph</a> by <a href="https://a456pur.dev">a456pur</a> (games)</p>
|
||||
|
||||
59
js/all.min.js
vendored
59
js/all.min.js
vendored
@ -9,7 +9,64 @@ loadAnalytics.unami = function() {
|
||||
script.setAttribute("data-website-id", "cdb79ddd-06a6-478f-b726-be39b502d6a5");
|
||||
document.head.appendChild(script);
|
||||
};
|
||||
loadAnalytics.cloudflare = function() {
|
||||
// <script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "e5b0ef8807e74cef81287ac77bd18938"}'></script>
|
||||
let script = document.createElement("script");
|
||||
script.setAttribute("defer", "");
|
||||
script.setAttribute("src", "https://static.cloudflareinsights.com/beacon.min.js");
|
||||
script.setAttribute("data-cf-beacon", '{"token": "e5b0ef8807e74cef81287ac77bd18938"}');
|
||||
document.head.appendChild(script);
|
||||
};
|
||||
loadAnalytics.google = function() {
|
||||
// <script async src="https://www.googletagmanager.com/gtag/js?id=G-63PV9BWZK5"></script>
|
||||
let script = document.createElement("script");
|
||||
script.setAttribute("async", "");
|
||||
script.setAttribute("src", "https://www.googletagmanager.com/gtag/js?id=G-63PV9BWZK5");
|
||||
document.head.appendChild(script);
|
||||
/* <script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-63PV9BWZK5');
|
||||
</script> */
|
||||
let script2 = document.createElement("script");
|
||||
script2.innerText = "window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-63PV9BWZK5');";
|
||||
document.head.appendChild(script2);
|
||||
}
|
||||
|
||||
function antiSkid() {
|
||||
if(window != window.parent && location.hostname != new URL(document.referrer).hostname) {
|
||||
let warning = document.createElement("warning");
|
||||
warning.innerText = "Check out more games at selenite.cc!";
|
||||
warning.style.position = "absolute";
|
||||
warning.style.width = "200px";
|
||||
warning.style.textAlign = "center";
|
||||
if(Math.random() > 0.5) {
|
||||
warning.style.bottom = "20px";
|
||||
} else {
|
||||
warning.style.top = "20px";
|
||||
}
|
||||
if(Math.random() > 0.5) {
|
||||
warning.style.right = "20px";
|
||||
} else {
|
||||
warning.style.left = "20px";
|
||||
}
|
||||
warning.style.backgroundColor = "#00000077";
|
||||
warning.style.padding = "8px";
|
||||
warning.style.cursor = "pointer";
|
||||
warning.style.borderRadius = "6px";
|
||||
warning.style.color = "white";
|
||||
warning.addEventListener("click", () => {window.open(location.origin)});
|
||||
document.body.appendChild(warning);
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
loadAnalytics.unami();
|
||||
// yo why are all analytic providers mid
|
||||
// loadAnalytics.unami();
|
||||
// loadAnalytics.cloudflare();
|
||||
// bag under eyes emoji
|
||||
loadAnalytics.google();
|
||||
antiSkid();
|
||||
})
|
||||
143
js/apps.js
143
js/apps.js
@ -1,143 +0,0 @@
|
||||
document.addEventListener("DOMContentLoaded", loadGames);
|
||||
let elements = [];
|
||||
async function loadGames() {
|
||||
// taken from mdn
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
|
||||
let data = await (await fetch("/resources/apps.json")).json();
|
||||
let sorted = data.sort((a, b) => {
|
||||
const n1 = a.name.toUpperCase();
|
||||
const n2 = b.name.toUpperCase();
|
||||
if (n1 < n2) {
|
||||
return -1;
|
||||
}
|
||||
if (n1 > n2) {
|
||||
return 1;
|
||||
}
|
||||
// shouldnt happen but just incase
|
||||
return 0;
|
||||
});
|
||||
let gamesElement = document.getElementById("games");
|
||||
let starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
||||
sorted.forEach(element => {
|
||||
isStarred = starredGames.indexOf(element.directory) != -1;
|
||||
let newElement = document.createElement("game");
|
||||
newElement.setAttribute("data-target", element.directory);
|
||||
newElement.setAttribute("data-image", element.image);
|
||||
let image = document.createElement("img");
|
||||
image.src = `/resources/sppa/${element.directory}/${element.image}`
|
||||
let holder = document.createElement("div");
|
||||
holder.id = "holder";
|
||||
let title = document.createElement("h1");
|
||||
title.innerText = element.name;
|
||||
let star = document.createElement("img");
|
||||
star.id = "star";
|
||||
star.classList = "star";
|
||||
star.src = isStarred ? "/img/star-fill.svg" : "/img/star.svg";
|
||||
newElement.appendChild(image);
|
||||
holder.appendChild(title);
|
||||
holder.appendChild(star);
|
||||
newElement.appendChild(holder);
|
||||
gamesElement.appendChild(newElement);
|
||||
elements.push(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${encodeURIComponent(element.name)}&dir=${element.directory}&img=${element.image}&type=a`
|
||||
});
|
||||
star.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
});
|
||||
});
|
||||
document.getElementById("gameCount").innerText = `${data.length} apps loaded!`;
|
||||
document.getElementById("loadingMsg").style.display = "none";
|
||||
document.getElementById("allHeader").style.display = "block";
|
||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
||||
if(starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${newElement.childNodes[1].childNodes[0].innerText}&dir=${newElement.getAttribute("data-target")}&img=${newElement.getAttribute("data-image")}&type=a`
|
||||
});
|
||||
});
|
||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||
e.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", ()=>{
|
||||
document.getElementById("gamesearch").addEventListener("input", ()=>{
|
||||
let input = document.getElementById("gamesearch").value.toUpperCase();
|
||||
let total = 0;
|
||||
if(elements.length > 0) {
|
||||
elements.forEach((element) => {
|
||||
let title = element.childNodes[1].childNodes[0].innerText.toUpperCase();
|
||||
if(title.includes(input)) {
|
||||
element.style.display = "flex";
|
||||
} else {
|
||||
element.style.display = "none";
|
||||
total++;
|
||||
}
|
||||
})
|
||||
}
|
||||
document.getElementById("noResults").style.display = total >= elements.length ? "flex" : "none"
|
||||
})
|
||||
});
|
||||
|
||||
function starEvent(e) {
|
||||
let game = e.target.parentNode.parentNode.getAttribute("data-target");
|
||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
||||
if(starredGames.indexOf(game) == -1) {
|
||||
starredGames.push(game);
|
||||
starredGames.sort();
|
||||
if(starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("starredHeader").style.display = "none";
|
||||
}
|
||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||
e.target.src = "/img/star-fill.svg";
|
||||
starredgames.innerHTML = "";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${newElement.childNodes[1].childNodes[0].innerText}&dir=${newElement.getAttribute("data-target")}&img=${newElement.getAttribute("data-image")}&type=a`
|
||||
});
|
||||
})
|
||||
} else {
|
||||
starredGames.splice(starredGames.indexOf(game), 1);
|
||||
document.querySelectorAll(`game[data-target='${game}'] #star`).forEach((e) => {
|
||||
e.src = "/img/star.svg";
|
||||
})
|
||||
if(starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("starredHeader").style.display = "none";
|
||||
}
|
||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||
starredgames.innerHTML = "";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${newElement.childNodes[1].childNodes[0].innerText}&dir=${newElement.getAttribute("data-target")}&img=${newElement.getAttribute("data-image")}&type=a`
|
||||
});
|
||||
})
|
||||
}
|
||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||
e.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
})
|
||||
})
|
||||
}
|
||||
110
js/christmas-particlesjs-config.json
Executable file
110
js/christmas-particlesjs-config.json
Executable file
@ -0,0 +1,110 @@
|
||||
{
|
||||
"particles": {
|
||||
"number": {
|
||||
"value": 94,
|
||||
"density": {
|
||||
"enable": true,
|
||||
"value_area": 800
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"value": "#fff"
|
||||
},
|
||||
"shape": {
|
||||
"type": "circle",
|
||||
"stroke": {
|
||||
"width": 0,
|
||||
"color": "#000000"
|
||||
},
|
||||
"polygon": {
|
||||
"nb_sides": 5
|
||||
},
|
||||
"image": {
|
||||
"src": "img/github.svg",
|
||||
"width": 100,
|
||||
"height": 100
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"value": 0.5,
|
||||
"random": true,
|
||||
"anim": {
|
||||
"enable": false,
|
||||
"speed": 1,
|
||||
"opacity_min": 0.1,
|
||||
"sync": false
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"value": 10,
|
||||
"random": true,
|
||||
"anim": {
|
||||
"enable": false,
|
||||
"speed": 40,
|
||||
"size_min": 0.1,
|
||||
"sync": false
|
||||
}
|
||||
},
|
||||
"line_linked": {
|
||||
"enable": false,
|
||||
"distance": 500,
|
||||
"color": "#ffffff",
|
||||
"opacity": 0.4,
|
||||
"width": 2
|
||||
},
|
||||
"move": {
|
||||
"enable": true,
|
||||
"speed": 9.590256299599611,
|
||||
"direction": "bottom",
|
||||
"random": false,
|
||||
"straight": false,
|
||||
"out_mode": "out",
|
||||
"bounce": false,
|
||||
"attract": {
|
||||
"enable": false,
|
||||
"rotateX": 1678.2948524299318,
|
||||
"rotateY": 3196.752099866537
|
||||
}
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"detect_on": "window",
|
||||
"events": {
|
||||
"onhover": {
|
||||
"enable": true,
|
||||
"mode": "bubble"
|
||||
},
|
||||
"onclick": {
|
||||
"enable": true,
|
||||
"mode": "repulse"
|
||||
},
|
||||
"resize": true
|
||||
},
|
||||
"modes": {
|
||||
"grab": {
|
||||
"distance": 400,
|
||||
"line_linked": {
|
||||
"opacity": 0.5
|
||||
}
|
||||
},
|
||||
"bubble": {
|
||||
"distance": 400,
|
||||
"size": 4,
|
||||
"duration": 0.3,
|
||||
"opacity": 1,
|
||||
"speed": 3
|
||||
},
|
||||
"repulse": {
|
||||
"distance": 79.60199004975124,
|
||||
"duration": 0.4
|
||||
},
|
||||
"push": {
|
||||
"particles_nb": 4
|
||||
},
|
||||
"remove": {
|
||||
"particles_nb": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
"retina_detect": true
|
||||
}
|
||||
178
js/games.js
178
js/games.js
@ -1,178 +0,0 @@
|
||||
document.addEventListener("DOMContentLoaded", loadGames);
|
||||
let elements = [];
|
||||
let isDev = [];
|
||||
async function loadGames() {
|
||||
// taken from mdn
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
|
||||
let data = await (await fetch("/resources/games.json")).json();
|
||||
let sorted = data.sort((a, b) => {
|
||||
const n1 = a.name.toUpperCase();
|
||||
const n2 = b.name.toUpperCase();
|
||||
if (n1 < n2) {
|
||||
return -1;
|
||||
}
|
||||
if (n1 > n2) {
|
||||
return 1;
|
||||
}
|
||||
// shouldnt happen but just incase
|
||||
return 0;
|
||||
});
|
||||
let gamesElement = document.getElementById("games");
|
||||
let topGElement = document.getElementById("topGames");
|
||||
let starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
||||
sorted.forEach(element => {
|
||||
isStarred = starredGames.indexOf(element.directory) != -1;
|
||||
let newElement = document.createElement("game");
|
||||
newElement.setAttribute("data-target", element.directory);
|
||||
newElement.setAttribute("data-image", element.image);
|
||||
let image = document.createElement("img");
|
||||
image.src = `/resources/semag/${element.directory}/${element.image}`;
|
||||
image.loading = `lazy`;
|
||||
let holder = document.createElement("div");
|
||||
holder.id = "holder";
|
||||
let title = document.createElement("h1");
|
||||
title.innerText = element.name;
|
||||
let star = document.createElement("img");
|
||||
star.id = "star";
|
||||
star.classList = "star";
|
||||
star.src = isStarred ? "/img/star-fill.svg" : "/img/star.svg";
|
||||
let warnings = document.createElement("warnings");
|
||||
newElement.appendChild(image);
|
||||
holder.appendChild(title);
|
||||
newElement.appendChild(holder);
|
||||
newElement.appendChild(warnings);
|
||||
if(element.tags) {
|
||||
if(element.tags.includes("13+")) {
|
||||
let thirteenplus = document.createElement("warning");
|
||||
thirteenplus.innerText = "13+";
|
||||
thirteenplus.classList = "thirteen";
|
||||
warnings.appendChild(thirteenplus);
|
||||
}
|
||||
if(element.tags.includes("horror")) {
|
||||
let horror = document.createElement("warning");
|
||||
horror.innerText = "😱";
|
||||
horror.classList = "horror";
|
||||
warnings.appendChild(horror);
|
||||
}
|
||||
if(element.tags.includes("gore")) {
|
||||
let gore = document.createElement("warning");
|
||||
gore.innerText = "🩸";
|
||||
gore.classList = "gore";
|
||||
warnings.appendChild(gore);
|
||||
}
|
||||
if(element.tags.includes("top")) {
|
||||
topGElement.appendChild(newElement);
|
||||
} else {
|
||||
gamesElement.appendChild(newElement);
|
||||
holder.appendChild(star);
|
||||
}
|
||||
if(element.tags.includes("tofinish")) isDev.push(element.directory);
|
||||
} else {
|
||||
gamesElement.appendChild(newElement);
|
||||
holder.appendChild(star);
|
||||
}
|
||||
elements.push(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${encodeURIComponent(element.name)}&dir=${element.directory}&img=${element.image}&type=g`
|
||||
});
|
||||
star.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
});
|
||||
});
|
||||
document.getElementById("gameCount").innerText = `${data.length} games loaded!`;
|
||||
document.getElementById("loadingMsg").style.display = "none";
|
||||
document.getElementById("allHeader").style.display = "block";
|
||||
document.getElementById("topHeader").style.display = "block";
|
||||
if(isDev.length > 0) {sAlert("wip games", "dev message, shouldnt be seen");console.log(isDev.join(","))};
|
||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
||||
if(starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${newElement.childNodes[1].childNodes[0].innerText}&dir=${newElement.getAttribute("data-target")}&img=${newElement.getAttribute("data-image")}&type=g`
|
||||
});
|
||||
});
|
||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||
e.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", ()=>{
|
||||
document.getElementById("gamesearch").addEventListener("input", ()=>{
|
||||
let input = document.getElementById("gamesearch").value.toUpperCase();
|
||||
let total = 0;
|
||||
if(elements.length > 0) {
|
||||
elements.forEach((element) => {
|
||||
let title = element.childNodes[1].childNodes[0].innerText.toUpperCase();
|
||||
if(title.includes(input)) {
|
||||
element.style.display = "flex";
|
||||
} else {
|
||||
element.style.display = "none";
|
||||
total++;
|
||||
}
|
||||
})
|
||||
}
|
||||
document.getElementById("noResults").style.display = total >= elements.length ? "flex" : "none"
|
||||
})
|
||||
});
|
||||
|
||||
function starEvent(e) {
|
||||
let game = e.target.parentNode.parentNode.getAttribute("data-target");
|
||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || '[]');
|
||||
if(starredGames.indexOf(game) == -1) {
|
||||
starredGames.push(game);
|
||||
starredGames.sort();
|
||||
if(starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("starredHeader").style.display = "none";
|
||||
}
|
||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||
e.target.src = "/img/star-fill.svg";
|
||||
starredgames.innerHTML = "";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${newElement.childNodes[1].childNodes[0].innerText}&dir=${newElement.getAttribute("data-target")}&img=${newElement.getAttribute("data-image")}&type=g`
|
||||
});
|
||||
})
|
||||
} else {
|
||||
starredGames.splice(starredGames.indexOf(game), 1);
|
||||
document.querySelectorAll(`game[data-target='${game}'] #star`).forEach((e) => {
|
||||
e.src = "/img/star.svg";
|
||||
})
|
||||
if(starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("starredHeader").style.display = "none";
|
||||
}
|
||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||
starredgames.innerHTML = "";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
newElement.addEventListener("click", ()=>{
|
||||
location.href=`/loader.html?title=${newElement.childNodes[1].childNodes[0].innerText}&dir=${newElement.getAttribute("data-target")}&img=${newElement.getAttribute("data-image")}&type=g`
|
||||
});
|
||||
})
|
||||
}
|
||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||
e.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
})
|
||||
})
|
||||
}
|
||||
197
js/loader.js
Executable file
197
js/loader.js
Executable file
@ -0,0 +1,197 @@
|
||||
document.addEventListener("DOMContentLoaded", loadGames);
|
||||
let elements = [];
|
||||
let isDev = [];
|
||||
let pageData;
|
||||
async function loadGames() {
|
||||
if (type == "g") pageData = { path: "/resources/games.json", prefix: "semag", type: "g" };
|
||||
else if (type == "a") pageData = { path: "/resources/apps.json", prefix: "sppa", type: "a" };
|
||||
else sAlert("this is not valid");
|
||||
// taken from mdn
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
|
||||
let data = await (await fetch(pageData.path)).json();
|
||||
let sorted = data.sort((a, b) => {
|
||||
const n1 = a.name.toUpperCase();
|
||||
const n2 = b.name.toUpperCase();
|
||||
if (n1 < n2) {
|
||||
return -1;
|
||||
}
|
||||
if (n1 > n2) {
|
||||
return 1;
|
||||
}
|
||||
// shouldnt happen but just incase
|
||||
return 0;
|
||||
});
|
||||
let gamesElement = document.getElementById("games");
|
||||
let topGElement = document.getElementById("topGames");
|
||||
|
||||
let gamesFragment = document.createDocumentFragment();
|
||||
let topFragment = document.createDocumentFragment();
|
||||
let starredGames = JSON.parse(localStorage.getItem("selenite.starred") || "[]");
|
||||
sorted.forEach((element) => {
|
||||
isStarred = starredGames.indexOf(element.directory) != -1;
|
||||
let newElement = document.createElement("a");
|
||||
newElement.setAttribute("data-target", element.directory);
|
||||
newElement.setAttribute("data-image", element.image);
|
||||
newElement.setAttribute("class", "game");
|
||||
newElement.setAttribute("href", `/loader.html?title=${encodeURIComponent(element.name)}&dir=${element.directory}&img=${element.image}&type=${pageData.type}`);
|
||||
let image = document.createElement("img");
|
||||
image.src = `/resources/${pageData.prefix}/${element.directory}/${element.image}`;
|
||||
image.loading = `lazy`;
|
||||
image.onerror = function () {
|
||||
this.src = "/img/missing.svg";
|
||||
};
|
||||
let holder = document.createElement("div");
|
||||
holder.id = "holder";
|
||||
let title = document.createElement("h1");
|
||||
title.innerText = element.name;
|
||||
let star = document.createElement("img");
|
||||
star.id = "star";
|
||||
star.classList = "star";
|
||||
star.src = isStarred ? "/img/star-fill.svg" : "/img/star.svg";
|
||||
let warnings = document.createElement("warnings");
|
||||
newElement.appendChild(image);
|
||||
holder.appendChild(title);
|
||||
newElement.appendChild(holder);
|
||||
newElement.appendChild(warnings);
|
||||
if (element.tags) {
|
||||
if (element.tags.includes("18+")) {
|
||||
let thirteenplus = document.createElement("warning");
|
||||
thirteenplus.innerText = "18+";
|
||||
thirteenplus.classList = "thirteen";
|
||||
warnings.appendChild(thirteenplus);
|
||||
}
|
||||
if (element.tags.includes("13+")) {
|
||||
let thirteenplus = document.createElement("warning");
|
||||
thirteenplus.innerText = "13+";
|
||||
thirteenplus.classList = "thirteen";
|
||||
warnings.appendChild(thirteenplus);
|
||||
}
|
||||
if (element.tags.includes("horror")) {
|
||||
let horror = document.createElement("warning");
|
||||
horror.innerText = "😱";
|
||||
horror.classList = "horror";
|
||||
warnings.appendChild(horror);
|
||||
}
|
||||
if (element.tags.includes("gore")) {
|
||||
let gore = document.createElement("warning");
|
||||
gore.innerText = "🩸";
|
||||
gore.classList = "gore";
|
||||
warnings.appendChild(gore);
|
||||
}
|
||||
if (element.tags.includes("top") && localStorage.getItem("selenite.disableTopGames") != "false") {
|
||||
topFragment.appendChild(newElement);
|
||||
} else {
|
||||
gamesFragment.appendChild(newElement);
|
||||
holder.appendChild(star);
|
||||
}
|
||||
if (element.tags.includes("wip")) {
|
||||
isDev.push(element.directory);
|
||||
let thirteenplus = document.createElement("warning");
|
||||
thirteenplus.innerText = "WIP";
|
||||
thirteenplus.classList = "thirteen";
|
||||
warnings.appendChild(thirteenplus);
|
||||
}
|
||||
} else {
|
||||
gamesFragment.appendChild(newElement);
|
||||
holder.appendChild(star);
|
||||
}
|
||||
elements.push(newElement);
|
||||
star.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
});
|
||||
});
|
||||
gamesElement.appendChild(gamesFragment);
|
||||
topGElement.appendChild(topFragment);
|
||||
document.getElementById("gameCount").innerText = `${data.length} games loaded!`;
|
||||
document.getElementById("loadingMsg").style.display = "none";
|
||||
document.getElementById("allHeader").style.display = "block";
|
||||
if (localStorage.getItem("selenite.disableTopGames") != "false") {
|
||||
document.getElementById("topHeader").style.display = "block";
|
||||
}
|
||||
if (isDev.length > 0) {
|
||||
sAlert("wip games", "dev message, shouldnt be seen");
|
||||
console.log(isDev.join(","));
|
||||
}
|
||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || "[]");
|
||||
if (starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
});
|
||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||
e.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.getElementById("gamesearch").addEventListener("input", () => {
|
||||
let input = document.getElementById("gamesearch").value.toUpperCase();
|
||||
let total = 0;
|
||||
if (elements.length > 0) {
|
||||
elements.forEach((element) => {
|
||||
let title = element.childNodes[1].childNodes[0].innerText.toUpperCase();
|
||||
if (title.includes(input)) {
|
||||
element.style.display = "flex";
|
||||
} else {
|
||||
element.style.display = "none";
|
||||
total++;
|
||||
}
|
||||
});
|
||||
}
|
||||
document.getElementById("noResults").style.display = total >= elements.length ? "flex" : "none";
|
||||
});
|
||||
});
|
||||
|
||||
function starEvent(e) {
|
||||
let game = e.target.parentNode.parentNode.getAttribute("data-target");
|
||||
starredGames = JSON.parse(localStorage.getItem("selenite.starred") || "[]");
|
||||
if (starredGames.indexOf(game) == -1) {
|
||||
starredGames.push(game);
|
||||
starredGames.sort();
|
||||
if (starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("starredHeader").style.display = "none";
|
||||
}
|
||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||
e.target.src = "/img/star-fill.svg";
|
||||
starredgames.innerHTML = "";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
});
|
||||
} else {
|
||||
starredGames.splice(starredGames.indexOf(game), 1);
|
||||
document.querySelectorAll(`a.game[data-target='${game}'] #star`).forEach((e) => {
|
||||
e.src = "/img/star.svg";
|
||||
});
|
||||
if (starredGames.length > 0) {
|
||||
document.getElementById("starredHeader").style.display = "block";
|
||||
} else {
|
||||
document.getElementById("starredHeader").style.display = "none";
|
||||
}
|
||||
localStorage.setItem("selenite.starred", JSON.stringify(starredGames));
|
||||
starredgames.innerHTML = "";
|
||||
starredGames.forEach((e) => {
|
||||
let element = document.querySelector(`#games a.game[data-target='${e}']`);
|
||||
let newElement = element.cloneNode(true);
|
||||
document.getElementById("starredgames").appendChild(newElement);
|
||||
});
|
||||
}
|
||||
document.querySelectorAll("#starredgames #star").forEach((e) => {
|
||||
e.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
starEvent(e);
|
||||
});
|
||||
});
|
||||
}
|
||||
57
js/main.js
57
js/main.js
@ -1,5 +1,4 @@
|
||||
let sAlert = window.parent.sAlert;
|
||||
|
||||
function setBackground() {
|
||||
let randomNumbers = [100-Math.abs(Math.floor(Math.random() * 200) - 99), 100-Math.abs(Math.floor(Math.random() * 200) - 99)];
|
||||
document.body.style.setProperty("--gradient-x", randomNumbers[0] + "%");
|
||||
@ -14,7 +13,7 @@ function loadPJS() {
|
||||
script.src = "https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js";
|
||||
document.head.appendChild(script);
|
||||
script.addEventListener("load", ()=>{
|
||||
particlesJS.load('pjs', "/js/particlesjs-config.json", ()=>{});
|
||||
particlesJS.load('pjs', "/js/main-particlesjs-config.json", ()=>{});
|
||||
});
|
||||
}
|
||||
|
||||
@ -53,7 +52,50 @@ function setTheme(arg) {
|
||||
--color-4: ${theme["color-4"]};
|
||||
`)
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", ()=>{
|
||||
|
||||
async function caching() {
|
||||
if(sessionStorage.getItem("cdns")) return "done";
|
||||
let cdns = JSON.parse(atob("WyJodHRwczovL2NhY2hpbmcuZnJlZXRscy5mYXN0bHkubmV0IiwiaHR0cHM6Ly9jYWNoaW5nLmdsb2JhbC5zc2wuZmFzdGx5Lm5ldCJd"));
|
||||
let goods = [];
|
||||
let cfStatus = (await fetch("/alive.txt")).headers.get("Cf-Ray") != null;
|
||||
if(cfStatus) {
|
||||
localStorage.setItem("selenite.disableCDN", "true");
|
||||
return;
|
||||
}
|
||||
for(let i = 0;i<cdns.length;i++) {
|
||||
let cdn = cdns[i];
|
||||
await fetch(cdn + "/alive.txt")
|
||||
.then(data => data.text())
|
||||
.then(data => {
|
||||
if(data.startsWith("yeah true")) {
|
||||
goods.push(cdn);
|
||||
}
|
||||
})
|
||||
}
|
||||
sessionStorage.setItem("cdns", JSON.stringify(goods));
|
||||
return;
|
||||
}
|
||||
function sendData() {
|
||||
let data = {
|
||||
cdns: JSON.parse(sessionStorage.getItem("cdns")),
|
||||
disableCDN: localStorage.getItem("selenite.disableCDN") ? true : false,
|
||||
type: 'localStorage'
|
||||
};
|
||||
if (navigator.serviceWorker.controller) {
|
||||
navigator.serviceWorker.controller.postMessage(data);
|
||||
} else {
|
||||
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
||||
if (navigator.serviceWorker.controller) {
|
||||
navigator.serviceWorker.controller.postMessage(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", async ()=>{
|
||||
if("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker.register("/sw.js", { scope: '/' });
|
||||
}
|
||||
if(!(localStorage.getItem("selenite.fast-mode") == 'true')) {
|
||||
setBackground();
|
||||
loadPJS();
|
||||
@ -63,12 +105,21 @@ document.addEventListener("DOMContentLoaded", ()=>{
|
||||
document.body.setAttribute("fast", "")
|
||||
}
|
||||
themes();
|
||||
if(await caching() == "done") {
|
||||
sendData();
|
||||
}
|
||||
})
|
||||
|
||||
document.addEventListener("scroll", ()=>{
|
||||
document.getElementById("pjs").style.top = window.scrollY + "px";
|
||||
})
|
||||
|
||||
navigator.serviceWorker.addEventListener('message', (event) => {
|
||||
if (event.data.command === 'localStorage') {
|
||||
const data = localStorage.getItem(event.data.key);
|
||||
event.ports[0].postMessage({ data: data });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// var interval;
|
||||
|
||||
15
loader.html
15
loader.html
@ -5,13 +5,9 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta content="Selenite" property="og:title" />
|
||||
<meta content="Selenite is the best unblocked games site. With over 400 games, an account system, and a free AI chat bot, no other websites come close to Selenite." property="og:description" />
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/all.min.js" async></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
let gameData = {};
|
||||
@ -52,6 +48,13 @@
|
||||
let link = location.origin + "#/" + gameData["type"] + "/" + gameData["path"];
|
||||
navigator.clipboard.writeText(link);
|
||||
});
|
||||
fetch("/api/analytics/game", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify({type: gameData["type"], path: gameData["path"]})
|
||||
})
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -63,7 +66,7 @@
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="gameFrame" sandbox="allow-downloads allow-forms allow-modals allow-pointer-lock allow-scripts allow-same-origin" allow="cross-origin-isolated"></iframe>
|
||||
<iframe id="gameFrame" allow="cross-origin-isolated"></iframe>
|
||||
<div id="infobox">
|
||||
<img id="gameImage" src="favicon.png" />
|
||||
<h2 id="gameName">Selenite</h2>
|
||||
|
||||
102
privacy.html
Normal file
102
privacy.html
Normal file
@ -0,0 +1,102 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "Selenite",
|
||||
"alternateName": "selenite.cc",
|
||||
"url": "https://selenite.cc",
|
||||
"logo": "https://selenite.cc/favicon.png",
|
||||
"sameAs": ["https://github.com/selenite-cc", "https://youtube.com/@selenitecc", "https://tiktok.com/@selenitecc", "https://selenite.cc"]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css" />
|
||||
<link rel="stylesheet" href="/css/pages.css" />
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<!-- seo + other things -->
|
||||
<title>Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<style>
|
||||
p,li,ul,h2,h1,h3,div {
|
||||
width: 60%;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<alerts> </alerts>
|
||||
<body>
|
||||
<h1>Privacy Policy</h1>
|
||||
<p><strong>Last Updated:</strong> November 20th, 2025</p>
|
||||
|
||||
<p>Selenite ("we," "us," or "our") operates the website https://selenite.cc (the "Site"). This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service.</p>
|
||||
|
||||
<h2>1. Information Collection and Use</h2>
|
||||
<p>We strictly limit the amount of personal data we collect. Unlike many other websites, we <strong>do not</strong> collect or store your email address, phone number, or physical address.</p>
|
||||
|
||||
<h3>A. Account Information</h3>
|
||||
<p>To use certain features of our Site, you must create an account. We only require:</p>
|
||||
<ul>
|
||||
<li>A unique <strong>Username</strong></li>
|
||||
<li>A <strong>Password</strong> (which is encrypted/hashed)</li>
|
||||
</ul>
|
||||
<p>We do not link this account to a real-world identity or email address.</p>
|
||||
|
||||
<h3>B. User-Generated Content (Images)</h3>
|
||||
<p>We collect and store the images you voluntarily upload to the Site.</p>
|
||||
|
||||
<h2>2. Cookies and Third-Party Advertising (Google AdSense)</h2>
|
||||
<p>While we do not use internal trackers to monitor your behavior, we use <strong>Google AdSense</strong> to support our website. Google AdSense acts as a third-party vendor.</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Third-Party Cookies:</strong> Google uses cookies to serve ads based on your prior visits to our website or other websites.</li>
|
||||
<li><strong>The DoubleClick Cookie:</strong> Google's use of advertising cookies enables it and its partners to serve ads to you based on your visit to our Site and/or other sites on the Internet.</li>
|
||||
</ul>
|
||||
|
||||
<div class="highlight-box">
|
||||
<strong>How to Opt-Out:</strong><br>
|
||||
You may opt out of personalized advertising by visiting <a href="https://www.google.com/settings/ads" target="_blank" rel="nofollow">Google Ads Settings</a>. Alternatively, you can opt out of a third-party vendor's use of cookies for personalized advertising by visiting <a href="https://www.aboutads.info" target="_blank" rel="nofollow">www.aboutads.info</a>.
|
||||
</div>
|
||||
|
||||
<h2>3. How We Use Your Data</h2>
|
||||
<p>We use the limited data we collect for the following purposes:</p>
|
||||
<ul>
|
||||
<li>To provide and maintain our Service (allowing you to log in).</li>
|
||||
<li>To host and display the images you upload.</li>
|
||||
<li>To monitor the usage of our Service to detect and prevent technical issues.</li>
|
||||
</ul>
|
||||
|
||||
<h2>4. Data Sharing and Disclosure</h2>
|
||||
<p>We <strong>do not</strong> sell, trade, or rent your personal identification information to others. We do not share your uploaded content with third parties, except in the following specific circumstances:</p>
|
||||
<ul>
|
||||
<li><strong>Service Providers:</strong> We may share data with trusted third-party hosting providers or infrastructure services required to keep the website online.</li>
|
||||
<li><strong>Legal Requirements:</strong> We may disclose your information if required to do so by law or in response to valid requests by public authorities (e.g., a court or a government agency).</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Data Security</h2>
|
||||
<p>The security of your data is important to us. We use commercially acceptable means to protect your password and uploaded content. However, please remember that no method of transmission over the Internet or method of electronic storage is 100% secure. Because we do not collect email addresses, we cannot verify your identity to restore lost accounts.</p>
|
||||
|
||||
<h2>6. Children's Privacy</h2>
|
||||
<p>Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If you are a parent or guardian and you are aware that your child has provided us with personal data, please contact us. If we become aware that we have collected personal data from children without verification of parental consent, we take steps to remove that information from our servers.</p>
|
||||
|
||||
<h2>7. Changes to This Privacy Policy</h2>
|
||||
<p>We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. You are advised to review this Privacy Policy periodically for any changes.</p>
|
||||
|
||||
<h2>8. Contact Us</h2>
|
||||
<p>If you have any questions about this Privacy Policy, please contact us: support@selenite.cc</p>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
||||
11
profile.html
11
profile.html
@ -5,16 +5,6 @@
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta name="keywords" content="proxy, web proxy, unblock websites, unblock chromebook, free web proxy, proxy list, proxy sites, un block chromebook, online proxy, proxy server, proxysite, proxy youtube, bypass securly, bypass iboss, bypass lightspeed filter, chromebooks, unblock youtube, youtube proxy, unblocked youtube, youtube unblocked, unblock games, selenite, unblocked games, free games">
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
@ -45,7 +35,6 @@
|
||||
<!-- seo + other things -->
|
||||
<title>{{ name }}'s Profile | Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415518411898563" crossorigin="anonymous"></script>
|
||||
</head>
|
||||
<alerts> </alerts>
|
||||
<body>
|
||||
|
||||
@ -4,16 +4,11 @@
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/games.js"></script>
|
||||
<script src="/js/search.js"></script>
|
||||
<script src="/js/all.min.js" async></script>
|
||||
<script>let type = "g";</script>
|
||||
<script src="/js/loader.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
<script src="/js/cookie.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css" />
|
||||
|
||||
43
projects_opt.html
Executable file
43
projects_opt.html
Executable file
@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="sl-theme-dark" lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js" async></script>
|
||||
<!-- <script src="/js/games.js"></script> -->
|
||||
<script src="/js/games_improved.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css" />
|
||||
<link rel="stylesheet" href="/css/pages.css" />
|
||||
<link rel="stylesheet" href="/css/games.css" />
|
||||
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>Projects | Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
|
||||
<!-- toastify -->
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415518411898563"
|
||||
crossorigin="anonymous"></script>
|
||||
<script></script>
|
||||
</head>
|
||||
<body>
|
||||
<input type="text" class="searchbar" id="gamesearch" placeholder="Type here to search.." />
|
||||
<p id="gameCount">xx games loaded..</p>
|
||||
<p id="starredHeader">starred games</p>
|
||||
<div id="starredgames"></div>
|
||||
<p id="topHeader" class="title">top games</p>
|
||||
<div id="topGames"></div>
|
||||
<p id="allHeader" class="title">all games</p>
|
||||
<div id="games">
|
||||
<p id="loadingMsg">games loading..</p>
|
||||
<p id="noResults">nothing was found! try a new search query.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
12
quotes.json
12
quotes.json
@ -1,6 +1,5 @@
|
||||
[
|
||||
"pay attention during school",
|
||||
"yall playing games while im making the website ur using",
|
||||
"Hello!",
|
||||
"Lorem ipsum dolor sit amet, adipiscing consequat adipiscing sit amet. In tortor dolor, sollicitudin quis urna vitae, rutrum selecrelico dolor. Ut facilisis ornare lacus, ut dictum felis aliquam ut. Omnino interdum fit cum cura. Non est aequum, non solum, sed nec refert quis sit terra. Sed vestibulum a tellus non semper. Aliquam a neque euismod dolor dapibus aliquet ultricies ut nibh. Sed eget auctor ante. Aliquam dictum volutpat vestibulum. Putasti ovum paschale futurum. Nullo modo.",
|
||||
"join the discord NOW",
|
||||
@ -15,8 +14,6 @@
|
||||
"uWu",
|
||||
"OwO",
|
||||
"UwU",
|
||||
"Chocolate hummus is a disgrace to the entire middle east.",
|
||||
"3kh0 has fell, and now 3kh0 has sadly died.",
|
||||
"Fun fact: Your chromebook is likely being monitored 24/7",
|
||||
"Activate Selenite, Go to settings to activate Selenite",
|
||||
"This copy of Selenite is not genuine.",
|
||||
@ -24,7 +21,6 @@
|
||||
"You may be a victim of software counterfeiting",
|
||||
"Woe to those who don't use this game site",
|
||||
"Did you know we are open source?",
|
||||
"SUPR COL GAMS V2 IS AWESOME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
|
||||
"thank you to louis pasteur for inventing milk",
|
||||
"you found the secret message",
|
||||
"i know where you live",
|
||||
@ -36,12 +32,11 @@
|
||||
"what website is this?",
|
||||
"we love about:blank",
|
||||
"join the discord to be cool",
|
||||
"bigfoot is an L",
|
||||
"check steam",
|
||||
"selentine",
|
||||
"geometry dash two point two",
|
||||
"does anyone call twitter X unironically",
|
||||
"rights to the trans people 🏳️⚧️ (trans rights)",
|
||||
"trans rights 🏳️⚧️",
|
||||
"happy new years everyone",
|
||||
"merry christmas everyone",
|
||||
"happy easter day everyone",
|
||||
@ -57,7 +52,6 @@
|
||||
"penguinify",
|
||||
"a456pur",
|
||||
"selenite",
|
||||
"3kh0",
|
||||
"selenite is the best",
|
||||
"selenite is the best website",
|
||||
"selenite is the best website ever",
|
||||
@ -103,5 +97,7 @@
|
||||
"you only really have 2 choices",
|
||||
"ts is a tuff ahh site boi",
|
||||
"mrrp :3",
|
||||
"mrrreeeooooowww :3"
|
||||
"mrrreeeooooowww :3",
|
||||
"fortnite when",
|
||||
"add roblox"
|
||||
]
|
||||
@ -7,16 +7,6 @@
|
||||
<!-- initialize externals -->
|
||||
<!-- chroma.js -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/chroma-js@latest/chroma.min.js"></script>
|
||||
<meta property="og:title" content="Selenite" />
|
||||
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta name="keywords" content="proxy, web proxy, unblock websites, unblock chromebook, free web proxy, proxy list, proxy sites, un block chromebook, online proxy, proxy server, proxysite, proxy youtube, bypass securly, bypass iboss, bypass lightspeed filter, chromebooks, unblock youtube, youtube proxy, unblocked youtube, youtube unblocked, unblock games, selenite, unblocked games, free games">
|
||||
<meta content="/favicon.png" property="og:image" />
|
||||
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
|
||||
<meta name="googlebot" content="index, follow, snippet" />
|
||||
<link rel="canonical" href="https://selenite.cc/" />
|
||||
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
|
||||
<meta property="og:title" content="Selenite">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
@ -36,7 +26,7 @@
|
||||
</script>
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/all.min.js" async></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<!-- <script src="/js/widget.js"></script> -->
|
||||
|
||||
@ -47,7 +37,6 @@
|
||||
<!-- seo + other things -->
|
||||
<title>Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415518411898563" crossorigin="anonymous"></script>
|
||||
<script>
|
||||
let cloaks = {
|
||||
"powerschool": [
|
||||
@ -74,6 +63,7 @@
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.querySelector(`option[value="${localStorage.getItem("selenite.theme") || ""}"]`).setAttribute("selected", "");
|
||||
document.getElementById("toggleCDN").checked = localStorage.getItem("selenite.disableCDN") ? false : true;
|
||||
if(document.getElementById("themes").value == "custom") {
|
||||
document.getElementById("colorPicker").style.display = "block";
|
||||
document.getElementById("colorPicker").value = localStorage.getItem("selenite.customThemeMainColor");
|
||||
@ -86,6 +76,9 @@
|
||||
if(localStorage.getItem("selenite.super-fast-mode") == 'true') {
|
||||
document.getElementById("superFastMode").setAttribute("checked", "")
|
||||
};
|
||||
if(localStorage.getItem("selenite.disableTopGames") == 'false') {
|
||||
document.getElementById("topGamesToggle").setAttribute("checked", "")
|
||||
};
|
||||
document.getElementById("themes").addEventListener("input", (e)=>{
|
||||
localStorage.setItem("selenite.theme", e.target.value);
|
||||
document.body.setAttribute("theme", e.target.value);
|
||||
@ -112,6 +105,9 @@
|
||||
localStorage.setItem("selenite.super-fast-mode", !(e.target.checked == false));
|
||||
location.reload();
|
||||
});
|
||||
document.getElementById("topGamesToggle").addEventListener("click", (e) => {
|
||||
localStorage.setItem("selenite.disableTopGames", (e.target.checked == false));
|
||||
});
|
||||
document.getElementById("submitCloak").addEventListener("click", (e) => {
|
||||
if(document.getElementById("cloaks").value) {
|
||||
localStorage.setItem("selenite.tab-cloak", JSON.stringify({
|
||||
@ -130,6 +126,14 @@
|
||||
"key": document.getElementById("panicKey").value || "",
|
||||
"url": document.getElementById("panicURL").value || ""
|
||||
}));
|
||||
});
|
||||
document.getElementById("toggleCDN").addEventListener("change", () => {
|
||||
let toggle = document.getElementById("toggleCDN");
|
||||
if(toggle.checked) {
|
||||
localStorage.removeItem("selenite.disableCDN");
|
||||
} else {
|
||||
localStorage.setItem("selenite.disableCDN", "true")
|
||||
}
|
||||
})
|
||||
function generatePallete(color) {
|
||||
let theme = {};
|
||||
@ -153,21 +157,48 @@
|
||||
}
|
||||
}
|
||||
function downloadData() {
|
||||
// grab localstorage
|
||||
// grab cookies
|
||||
// json.stringify
|
||||
// base64
|
||||
alert("not completed");
|
||||
let storage = JSON.stringify(localStorage);
|
||||
let cookies = document.cookie;
|
||||
let data = btoa(JSON.stringify({localStorage: storage, cookies: cookies}));
|
||||
|
||||
let file = new Blob([data], {type: "text"});
|
||||
let a = document.createElement("a");
|
||||
a.href = URL.createObjectURL(file);
|
||||
a.download = "selenite.dat";
|
||||
a.click();
|
||||
}
|
||||
function uploadData() {
|
||||
if(prompt("Are you sure you want to upload data?\nThis may overwrite any previous data you had stored.\n\nType \"i am sure\" to continue.") == "i am sure") {
|
||||
// prompt file upload
|
||||
// read file
|
||||
// atob
|
||||
// set cookies
|
||||
// set localstorage
|
||||
alert("not completed");
|
||||
}
|
||||
let input = document.createElement("input");
|
||||
input.type = "file";
|
||||
input.accept = "dat";
|
||||
input.click();
|
||||
input.addEventListener("change", e => {
|
||||
if(prompt("Are you sure you want to upload data?\nThis may overwrite any previous data you had stored.\n\nType \"i am sure\" to continue.") == "i am sure") {
|
||||
let fileReader = new FileReader();
|
||||
fileReader.addEventListener("load", e => {
|
||||
let data = JSON.parse(atob(e.target.result));
|
||||
let local = JSON.parse(data["localStorage"]);
|
||||
let cookies = data["cookies"];
|
||||
|
||||
document.cookie = cookies;
|
||||
Object.keys(local).forEach(e => {
|
||||
localStorage.setItem(e, local[e]);
|
||||
})
|
||||
});
|
||||
fileReader.readAsText(e.target.files[0]);
|
||||
}
|
||||
})
|
||||
};
|
||||
async function deleteAllCaches() {
|
||||
try {
|
||||
const cacheNames = await caches.keys();
|
||||
|
||||
await Promise.all(
|
||||
cacheNames.map(cacheName => {
|
||||
return caches.delete(cacheName);
|
||||
})
|
||||
);
|
||||
} catch {}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
@ -179,6 +210,7 @@
|
||||
<p style="font-size:20px;margin:6px;">themes</p>
|
||||
<select id="themes">
|
||||
<option value="">selenite</option>
|
||||
<option value="xmas">CHRISTMAS! (limited)</option>
|
||||
<option value="blackandwhite">black and white</option>
|
||||
<option value="grass">grass</option>
|
||||
<option value="evil">evil</option>
|
||||
@ -189,6 +221,7 @@
|
||||
<p style="font-size:20px;margin:6px;">toggles</p>
|
||||
<div class="samerow"><input type="checkbox" id="fastMode"><label for="fastMode" title="disables particles, animated background, & other misc effects">fast mode</label></div>
|
||||
<div class="samerow"><input type="checkbox" id="superFastMode"><label for="superFastMode" title="disables all blurs and transparency">super fast mode</label></div>
|
||||
<div class="samerow"><input type="checkbox" id="topGamesToggle"><label for="topGamesToggle">disable top games</label></div>
|
||||
</section>
|
||||
<section>
|
||||
<h2>tab cloak</h2>
|
||||
@ -219,10 +252,11 @@
|
||||
</section>
|
||||
<section>
|
||||
<h2>manage data</h2>
|
||||
<p>not implemented</p>
|
||||
<button id="downloadData">download</button>
|
||||
<button id="uploadData">upload</button>
|
||||
<button onclick="downloadData()">download</button>
|
||||
<button onclick="uploadData()">upload</button>
|
||||
<button onclick="wipeData()">wipe (erases all game data)</button>
|
||||
<button onclick="deleteAllCaches()">wipe all cache</button>
|
||||
<input id="toggleCDN" name="toggleCDN" type="checkbox"></inpuit> <label for="toggleCDN">cdn enabled</label>
|
||||
</section>
|
||||
</sections>
|
||||
</body>
|
||||
|
||||
65
suggest.html
65
suggest.html
@ -1,65 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="sl-theme-dark" lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/themes/dark.css" />
|
||||
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/shoelace-autoloader.js"></script>
|
||||
|
||||
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/widget.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
|
||||
<!-- toastify -->
|
||||
<script>
|
||||
</script>
|
||||
</head>
|
||||
<alerts>
|
||||
|
||||
</alerts>
|
||||
<body id="noscroll">
|
||||
<header>
|
||||
<a href="/index.html">Home</a>
|
||||
<a href="/bookmarklets.html">Bookmarklets</a>
|
||||
<a href="/projects.html">Games</a>
|
||||
<a href="/apps.html">Apps</a>
|
||||
<a href="/settings.html">Settings</a>
|
||||
<a id="blank" href="#">Open Blank</a>
|
||||
<a href="/u/" class="usericon"><img src="/img/user.svg"></a>
|
||||
|
||||
</header>
|
||||
<main id="main" class="noscroll">
|
||||
<h1>Suggestions & Bug Reports</h1>
|
||||
<p>Suggestions and Bug Reports have moved to the <a href="https://discord.gg/7jyufnwJNf">Discord</a>!</p>
|
||||
<p>If for some reason you cannot join the Discord, or it is an urgent issue, then you may <a href="/contact.html">contact me</a>.</p>
|
||||
</main>
|
||||
|
||||
<footer class="noscroll">
|
||||
<a href="https://gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/support.html">Donate</a>
|
||||
<a href="/about.html">About</a>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
64
support.html
64
support.html
@ -1,64 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="sl-theme-dark" lang="en">
|
||||
<head>
|
||||
<!-- initialize theme vars
|
||||
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
||||
|
||||
<!-- initialize externals -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||||
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/themes/dark.css" />
|
||||
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.9.0/cdn/shoelace-autoloader.js"></script>
|
||||
|
||||
|
||||
<!-- initialize my stuff -->
|
||||
<script src="/js/all.min.js"></script>
|
||||
<script src="/js/main.js"></script>
|
||||
<script src="/js/widget.js"></script>
|
||||
<script src="/js/themes.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/style.css" />
|
||||
|
||||
<!-- seo + other things -->
|
||||
<title>Support | Selenite</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
</head>
|
||||
|
||||
<body id="noscroll">
|
||||
<header>
|
||||
<a href="/index.html">Home</a>
|
||||
<a href="/bookmarklets.html">Bookmarklets</a>
|
||||
<a href="/projects.html">Games</a>
|
||||
<a href="/apps.html">Apps</a>
|
||||
<a href="/settings.html">Settings</a>
|
||||
<a id="blank" href="#">Open Blank</a>
|
||||
<a href="/u/" class="usericon"><img src="/img/user.svg"></a>
|
||||
|
||||
</header>
|
||||
|
||||
<main id="main" class="noscroll">
|
||||
<h1>support selenite</h1>
|
||||
<p>i dont make anything off of this website, so anything would be greatly appreciated!</p>
|
||||
<div class="samerow">
|
||||
<div class="img-container">
|
||||
<a href="https://patreon.com/selenitecc"><img src="img/Digital-Patreon-Logo_White.png"></a>
|
||||
</div>
|
||||
</div>
|
||||
<p>also viewing this ad will help me :)</p>
|
||||
<script async="async" data-cfasync="false" src="//pl22225360.toprevenuegate.com/92108816b5da54426d1639bcbfb5785c/invoke.js"></script>
|
||||
<div id="container-92108816b5da54426d1639bcbfb5785c"></div>
|
||||
</main>
|
||||
|
||||
<footer class="noscroll">
|
||||
<a href="https://gitlab.com/skysthelimit.dev/selenite">Source</a>
|
||||
<a href="https://discord.gg/7jyufnwJNf">Discord</a>
|
||||
<a href="/suggest.html">Suggestions & Bugs</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/support.html">Donate</a>
|
||||
<a href="/about.html">About</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
77
sw.js
Normal file
77
sw.js
Normal file
@ -0,0 +1,77 @@
|
||||
importScripts(
|
||||
'https://storage.googleapis.com/workbox-cdn/releases/6.4.1/workbox-sw.js'
|
||||
);
|
||||
|
||||
let localStorageData = {
|
||||
cdns: [],
|
||||
disableCDN: true,
|
||||
};
|
||||
// yandere sim big files, cuphead, ddlc assets, renpy, renpy, buckshot roulette, half life, undertale & deltarune, hollow knight
|
||||
let cacheable_files = ["YandereSim.data", "cuphead/Build/Build.data.unityweb.", "/ddlc/game/", "/ddlcplus/game/", "/co09/game/", "/co09flipside/game/", "/co09reup/game/", "renpy.data", "game.zip", "buckshot-roulette.pck", "halva_en-", "game.unx", "bog.data", "FTFHAPort.data.unityweb", "Content.tar.part", "thats-not-my-neighbor.pck", ".unityweb", "index.data.path"];
|
||||
|
||||
self.addEventListener("message", e => {
|
||||
if (e.data && e.data.type == "localStorage") {
|
||||
localStorageData = e.data;
|
||||
}
|
||||
});
|
||||
|
||||
if (workbox) {
|
||||
self.skipWaiting();
|
||||
workbox.core.clientsClaim();
|
||||
|
||||
workbox.routing.registerRoute(
|
||||
({ url }) => {
|
||||
if (localStorageData.disableCDN) return false;
|
||||
if (localStorageData.cdns.length == 0) return false;
|
||||
if (url.origin != location.origin) return false;
|
||||
if (!url.pathname.includes("/resources/")) return false;
|
||||
for (const file of cacheable_files) {
|
||||
if (url.pathname.includes(file)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
async ({ url }) => {
|
||||
let cdn = localStorageData.cdns[0];
|
||||
console.warn(url.href);
|
||||
return Response.redirect(cdn + url.pathname, 302);
|
||||
}
|
||||
);
|
||||
|
||||
workbox.routing.registerRoute(
|
||||
/\.(?:png|gif|jpg|jpeg|svg|webp|avif|gif)$/,
|
||||
new workbox.strategies.CacheFirst({
|
||||
cacheName: 'images-cache',
|
||||
plugins: [
|
||||
new workbox.expiration.ExpirationPlugin({
|
||||
maxEntries: 1200,
|
||||
maxAgeSeconds: 365 * 24 * 60 * 60,
|
||||
}),
|
||||
],
|
||||
})
|
||||
);
|
||||
workbox.routing.registerRoute(
|
||||
/.*resources\/(semag|sppa).*/,
|
||||
new workbox.strategies.CacheFirst({
|
||||
cacheName: 'resources-cache',
|
||||
plugins: [
|
||||
new workbox.expiration.ExpirationPlugin({
|
||||
maxEntries: 700,
|
||||
maxAgeSeconds: 365 * 24 * 60 * 60,
|
||||
}),
|
||||
],
|
||||
})
|
||||
);
|
||||
|
||||
workbox.routing.registerRoute(
|
||||
/.*resources\/(games|apps)\.json$/,
|
||||
new workbox.strategies.StaleWhileRevalidate({
|
||||
cacheName: 'json-cache',
|
||||
plugins: [
|
||||
new workbox.expiration.ExpirationPlugin({
|
||||
maxAgeSeconds: 3 * 60 * 60,
|
||||
maxEntries: 2,
|
||||
}),
|
||||
],
|
||||
})
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user