Initial Commit for Astro files
This commit is contained in:
commit
922ef15f5f
22 changed files with 10913 additions and 0 deletions
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# build output
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# generated types
|
||||||
|
.astro/
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# logs
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# environment variables
|
||||||
|
.env
|
||||||
|
.env.production
|
||||||
|
|
||||||
|
# macOS-specific files
|
||||||
|
.DS_Store
|
||||||
4
.vscode/extensions.json
vendored
Normal file
4
.vscode/extensions.json
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"recommendations": ["astro-build.astro-vscode"],
|
||||||
|
"unwantedRecommendations": []
|
||||||
|
}
|
||||||
11
.vscode/launch.json
vendored
Normal file
11
.vscode/launch.json
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"command": "./node_modules/.bin/astro dev",
|
||||||
|
"name": "Development server",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "node-terminal"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
11
astro.config.mjs
Normal file
11
astro.config.mjs
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { defineConfig } from 'astro/config';
|
||||||
|
|
||||||
|
import node from "@astrojs/node";
|
||||||
|
|
||||||
|
// https://astro.build/config
|
||||||
|
export default defineConfig({
|
||||||
|
output: "hybrid",
|
||||||
|
adapter: node({
|
||||||
|
mode: "middleware",
|
||||||
|
})
|
||||||
|
});
|
||||||
50
index.js
Normal file
50
index.js
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
import { createBareServer } from "@tomphttp/bare-server-node"
|
||||||
|
import { uvPath } from "@nebula-services/ultraviolet"
|
||||||
|
import http from 'node:http';
|
||||||
|
import path from 'node:path';
|
||||||
|
import express from 'express';
|
||||||
|
import { handler as ssrHandler } from './dist/server/entry.mjs';
|
||||||
|
import dotenv from 'dotenv';
|
||||||
|
import compression from "compression"
|
||||||
|
dotenv.config();
|
||||||
|
|
||||||
|
const PORT = process.env.PORT || 3000;
|
||||||
|
|
||||||
|
const server = http.createServer();
|
||||||
|
const app = express(server);
|
||||||
|
const bareServer = createBareServer("/bare/");
|
||||||
|
app.use(compression());
|
||||||
|
app.use(express.static(path.join(process.cwd(), "static")));
|
||||||
|
app.use(express.static(path.join(process.cwd(), "build")));
|
||||||
|
app.use("/uv/", express.static(uvPath));
|
||||||
|
app.use(express.json());
|
||||||
|
app.use(express.urlencoded({
|
||||||
|
extended: true
|
||||||
|
})
|
||||||
|
);
|
||||||
|
app.use("/", express.static('dist/client/'));
|
||||||
|
app.use(ssrHandler);
|
||||||
|
|
||||||
|
server.on("request", (req, res) => {
|
||||||
|
if (bareServer.shouldRoute(req)) {
|
||||||
|
bareServer.routeRequest(req, res);
|
||||||
|
} else {
|
||||||
|
app(req, res);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on("upgrade", (req, socket, head) => {
|
||||||
|
if (bareServer.shouldRoute(req)) {
|
||||||
|
bareServer.routeUpgrade(req, socket, head);
|
||||||
|
} else {
|
||||||
|
socket.end();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
server.on("listening", () => {
|
||||||
|
console.log(`Server running at http://localhost:${PORT}/.`);
|
||||||
|
});
|
||||||
|
|
||||||
|
server.listen({
|
||||||
|
port: PORT
|
||||||
|
});
|
||||||
10138
package-lock.json
generated
Normal file
10138
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
21
package.json
Normal file
21
package.json
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "alus-unblocker",
|
||||||
|
"type": "module",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"scripts": {
|
||||||
|
"start": "node ."
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/check": "^0.4.0",
|
||||||
|
"@astrojs/node": "^7.0.4",
|
||||||
|
"@nebula-services/ultraviolet": "^1.0.1-1.patch.5",
|
||||||
|
"@tomphttp/bare-server-node": "^2.0.1",
|
||||||
|
"astro": "^4.1.1",
|
||||||
|
"compression": "^1.7.4",
|
||||||
|
"dotenv": "^16.3.1",
|
||||||
|
"express": "^4.18.2",
|
||||||
|
"i": "^0.3.7",
|
||||||
|
"npm": "^10.2.5",
|
||||||
|
"typescript": "^5.3.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
public/favicon.png
Normal file
BIN
public/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.3 KiB |
1
public/games/.gitignore
vendored
Normal file
1
public/games/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
**/
|
||||||
67
public/img/darkwaves.svg
Normal file
67
public/img/darkwaves.svg
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
<svg width="100%" height="100%" id="svg" viewBox="0 0 1440 700" xmlns="http://www.w3.org/2000/svg" class="transition duration-300 ease-in-out delay-150"><style>
|
||||||
|
.path-0{
|
||||||
|
animation:pathAnim-0 4s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
}
|
||||||
|
@keyframes pathAnim-0{
|
||||||
|
0%{
|
||||||
|
d: path("M 0,700 C 0,700 0,175 0,175 C 98.76666666666668,201.13846153846154 197.53333333333336,227.27692307692308 279,216 C 360.46666666666664,204.72307692307692 424.6333333333333,156.0307692307692 488,154 C 551.3666666666667,151.9692307692308 613.9333333333334,196.6 695,208 C 776.0666666666666,219.4 875.6333333333332,197.56923076923076 954,192 C 1032.3666666666668,186.43076923076924 1089.5333333333333,197.12307692307692 1167,197 C 1244.4666666666667,196.87692307692308 1342.2333333333333,185.93846153846152 1440,175 C 1440,175 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
25%{
|
||||||
|
d: path("M 0,700 C 0,700 0,175 0,175 C 71.32051282051285,180.2 142.6410256410257,185.4 224,167 C 305.3589743589743,148.6 396.7564102564103,106.60000000000001 493,110 C 589.2435897435897,113.39999999999999 690.3333333333333,162.2 764,171 C 837.6666666666667,179.8 883.9102564102564,148.60000000000002 962,129 C 1040.0897435897436,109.39999999999998 1150.0256410256409,101.39999999999999 1235,111 C 1319.9743589743591,120.60000000000001 1379.9871794871797,147.8 1440,175 C 1440,175 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
50%{
|
||||||
|
d: path("M 0,700 C 0,700 0,175 0,175 C 67.12051282051283,184.24615384615385 134.24102564102566,193.49230769230766 207,195 C 279.75897435897434,196.50769230769234 358.15641025641025,190.27692307692308 452,171 C 545.8435897435897,151.72307692307692 655.1333333333334,119.39999999999999 727,113 C 798.8666666666666,106.60000000000001 833.3102564102564,126.12307692307695 916,145 C 998.6897435897436,163.87692307692305 1129.625641025641,182.1076923076923 1225,187 C 1320.374358974359,191.8923076923077 1380.1871794871795,183.44615384615383 1440,175 C 1440,175 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
75%{
|
||||||
|
d: path("M 0,700 C 0,700 0,175 0,175 C 76.09999999999997,135.03076923076924 152.19999999999993,95.06153846153846 224,110 C 295.80000000000007,124.93846153846154 363.30000000000007,194.7846153846154 441,231 C 518.6999999999999,267.2153846153846 606.5999999999999,269.8 693,234 C 779.4000000000001,198.2 864.3000000000002,124.0153846153846 941,118 C 1017.6999999999998,111.9846153846154 1086.2,174.13846153846154 1168,195 C 1249.8,215.86153846153846 1344.9,195.43076923076922 1440,175 C 1440,175 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
100%{
|
||||||
|
d: path("M 0,700 C 0,700 0,175 0,175 C 98.76666666666668,201.13846153846154 197.53333333333336,227.27692307692308 279,216 C 360.46666666666664,204.72307692307692 424.6333333333333,156.0307692307692 488,154 C 551.3666666666667,151.9692307692308 613.9333333333334,196.6 695,208 C 776.0666666666666,219.4 875.6333333333332,197.56923076923076 954,192 C 1032.3666666666668,186.43076923076924 1089.5333333333333,197.12307692307692 1167,197 C 1244.4666666666667,196.87692307692308 1342.2333333333333,185.93846153846152 1440,175 C 1440,175 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
}</style><path d="M 0,700 C 0,700 0,175 0,175 C 98.76666666666668,201.13846153846154 197.53333333333336,227.27692307692308 279,216 C 360.46666666666664,204.72307692307692 424.6333333333333,156.0307692307692 488,154 C 551.3666666666667,151.9692307692308 613.9333333333334,196.6 695,208 C 776.0666666666666,219.4 875.6333333333332,197.56923076923076 954,192 C 1032.3666666666668,186.43076923076924 1089.5333333333333,197.12307692307692 1167,197 C 1244.4666666666667,196.87692307692308 1342.2333333333333,185.93846153846152 1440,175 C 1440,175 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#5b667e66" class="transition-all duration-300 ease-in-out delay-150 path-0"></path><style>
|
||||||
|
.path-1{
|
||||||
|
animation:pathAnim-1 4s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
}
|
||||||
|
@keyframes pathAnim-1{
|
||||||
|
0%{
|
||||||
|
d: path("M 0,700 C 0,700 0,350 0,350 C 61.27692307692308,353.24871794871797 122.55384615384617,356.49743589743593 195,348 C 267.44615384615383,339.50256410256407 351.0615384615385,319.25897435897434 455,336 C 558.9384615384615,352.74102564102566 683.1999999999999,406.46666666666664 757,409 C 830.8000000000001,411.53333333333336 854.1384615384617,362.87435897435904 929,352 C 1003.8615384615383,341.12564102564096 1130.2461538461537,368.0358974358974 1224,374 C 1317.7538461538463,379.9641025641026 1378.876923076923,364.9820512820513 1440,350 C 1440,350 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
25%{
|
||||||
|
d: path("M 0,700 C 0,700 0,350 0,350 C 82.77179487179487,328.6871794871795 165.54358974358973,307.374358974359 250,311 C 334.45641025641027,314.625641025641 420.59743589743596,343.18974358974356 503,357 C 585.402564102564,370.81025641025644 664.0666666666667,369.8666666666667 738,350 C 811.9333333333333,330.1333333333333 881.1358974358975,291.3435897435897 955,292 C 1028.8641025641025,292.6564102564103 1107.3897435897436,332.7589743589744 1189,349 C 1270.6102564102564,365.2410256410256 1355.3051282051283,357.6205128205128 1440,350 C 1440,350 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
50%{
|
||||||
|
d: path("M 0,700 C 0,700 0,350 0,350 C 65.52820512820512,346.8307692307692 131.05641025641023,343.66153846153844 217,344 C 302.94358974358977,344.33846153846156 409.30256410256413,348.18461538461537 490,343 C 570.6974358974359,337.81538461538463 625.7333333333332,323.6 702,326 C 778.2666666666668,328.4 875.7641025641026,347.41538461538465 952,366 C 1028.2358974358974,384.58461538461535 1083.2102564102565,402.73846153846154 1161,400 C 1238.7897435897435,397.26153846153846 1339.3948717948717,373.63076923076926 1440,350 C 1440,350 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
75%{
|
||||||
|
d: path("M 0,700 C 0,700 0,350 0,350 C 68.02820512820512,330.8897435897436 136.05641025641023,311.77948717948715 221,324 C 305.94358974358977,336.22051282051285 407.80256410256425,379.7717948717949 483,404 C 558.1974358974358,428.2282051282051 606.7333333333332,433.1333333333333 686,414 C 765.2666666666668,394.8666666666667 875.2641025641026,351.6948717948718 960,327 C 1044.7358974358974,302.3051282051282 1104.2102564102565,296.08717948717947 1180,303 C 1255.7897435897435,309.91282051282053 1347.8948717948717,329.95641025641027 1440,350 C 1440,350 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
100%{
|
||||||
|
d: path("M 0,700 C 0,700 0,350 0,350 C 61.27692307692308,353.24871794871797 122.55384615384617,356.49743589743593 195,348 C 267.44615384615383,339.50256410256407 351.0615384615385,319.25897435897434 455,336 C 558.9384615384615,352.74102564102566 683.1999999999999,406.46666666666664 757,409 C 830.8000000000001,411.53333333333336 854.1384615384617,362.87435897435904 929,352 C 1003.8615384615383,341.12564102564096 1130.2461538461537,368.0358974358974 1224,374 C 1317.7538461538463,379.9641025641026 1378.876923076923,364.9820512820513 1440,350 C 1440,350 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
}</style><path d="M 0,700 C 0,700 0,350 0,350 C 61.27692307692308,353.24871794871797 122.55384615384617,356.49743589743593 195,348 C 267.44615384615383,339.50256410256407 351.0615384615385,319.25897435897434 455,336 C 558.9384615384615,352.74102564102566 683.1999999999999,406.46666666666664 757,409 C 830.8000000000001,411.53333333333336 854.1384615384617,362.87435897435904 929,352 C 1003.8615384615383,341.12564102564096 1130.2461538461537,368.0358974358974 1224,374 C 1317.7538461538463,379.9641025641026 1378.876923076923,364.9820512820513 1440,350 C 1440,350 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#5b667e88" class="transition-all duration-300 ease-in-out delay-150 path-1"></path><style>
|
||||||
|
.path-2{
|
||||||
|
animation:pathAnim-2 4s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
}
|
||||||
|
@keyframes pathAnim-2{
|
||||||
|
0%{
|
||||||
|
d: path("M 0,700 C 0,700 0,525 0,525 C 75,542.6179487179487 150,560.2358974358974 236,544 C 322,527.7641025641026 419,477.674358974359 501,483 C 583,488.325641025641 650,549.0666666666667 716,576 C 782,602.9333333333333 847.0000000000001,596.0589743589743 935,580 C 1022.9999999999999,563.9410256410257 1133.9999999999998,538.697435897436 1222,528 C 1310.0000000000002,517.302564102564 1375,521.151282051282 1440,525 C 1440,525 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
25%{
|
||||||
|
d: path("M 0,700 C 0,700 0,525 0,525 C 55.110256410256426,538.3461538461538 110.22051282051285,551.6923076923077 204,557 C 297.77948717948715,562.3076923076923 430.2282051282051,559.5769230769231 507,558 C 583.7717948717949,556.4230769230769 604.8666666666667,556 687,537 C 769.1333333333333,518 912.3051282051283,480.42307692307696 994,467 C 1075.6948717948717,453.57692307692304 1095.9128205128204,464.3076923076923 1160,478 C 1224.0871794871796,491.6923076923077 1332.0435897435898,508.3461538461538 1440,525 C 1440,525 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
50%{
|
||||||
|
d: path("M 0,700 C 0,700 0,525 0,525 C 98.69487179487183,536.551282051282 197.38974358974366,548.1025641025641 278,541 C 358.61025641025634,533.8974358974359 421.1358974358974,508.1410256410257 495,497 C 568.8641025641026,485.8589743589743 654.0666666666667,489.3333333333333 736,491 C 817.9333333333333,492.6666666666667 896.5974358974356,492.52564102564105 969,499 C 1041.4025641025644,505.47435897435895 1107.5435897435898,518.5641025641025 1185,524 C 1262.4564102564102,529.4358974358975 1351.228205128205,527.2179487179487 1440,525 C 1440,525 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
75%{
|
||||||
|
d: path("M 0,700 C 0,700 0,525 0,525 C 66.24871794871794,489.1051282051282 132.49743589743588,453.2102564102564 212,463 C 291.5025641025641,472.7897435897436 384.25897435897434,528.2641025641026 481,535 C 577.7410256410257,541.7358974358974 678.4666666666667,499.7333333333333 747,481 C 815.5333333333333,462.2666666666667 851.874358974359,466.80256410256413 926,491 C 1000.125641025641,515.1974358974359 1112.0358974358974,559.0564102564103 1204,568 C 1295.9641025641026,576.9435897435897 1367.9820512820513,550.9717948717948 1440,525 C 1440,525 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
100%{
|
||||||
|
d: path("M 0,700 C 0,700 0,525 0,525 C 75,542.6179487179487 150,560.2358974358974 236,544 C 322,527.7641025641026 419,477.674358974359 501,483 C 583,488.325641025641 650,549.0666666666667 716,576 C 782,602.9333333333333 847.0000000000001,596.0589743589743 935,580 C 1022.9999999999999,563.9410256410257 1133.9999999999998,538.697435897436 1222,528 C 1310.0000000000002,517.302564102564 1375,521.151282051282 1440,525 C 1440,525 1440,700 1440,700 Z");
|
||||||
|
}
|
||||||
|
}</style><path d="M 0,700 C 0,700 0,525 0,525 C 75,542.6179487179487 150,560.2358974358974 236,544 C 322,527.7641025641026 419,477.674358974359 501,483 C 583,488.325641025641 650,549.0666666666667 716,576 C 782,602.9333333333333 847.0000000000001,596.0589743589743 935,580 C 1022.9999999999999,563.9410256410257 1133.9999999999998,538.697435897436 1222,528 C 1310.0000000000002,517.302564102564 1375,521.151282051282 1440,525 C 1440,525 1440,700 1440,700 Z" stroke="none" stroke-width="0" fill="#5b667eff" class="transition-all duration-300 ease-in-out delay-150 path-2"></path></svg>
|
||||||
|
After Width: | Height: | Size: 11 KiB |
18
public/sw.js
Normal file
18
public/sw.js
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
/*global UVServiceWorker,__uv$config*/
|
||||||
|
/*
|
||||||
|
* Stock service worker script.
|
||||||
|
* Users can provide their own sw.js if they need to extend the functionality of the service worker.
|
||||||
|
* Ideally, this will be registered under the scope in uv.config.js so it will not need to be modified.
|
||||||
|
* However, if a user changes the location of uv.bundle.js/uv.config.js or sw.js is not relative to them, they will need to modify this script locally.
|
||||||
|
*/
|
||||||
|
importScripts('/uv/uv.bundle.js');
|
||||||
|
importScripts('/uv.config.js');
|
||||||
|
importScripts(__uv$config.sw);
|
||||||
|
|
||||||
|
self.addEventListener("install", (event) => {
|
||||||
|
self.skipWaiting();
|
||||||
|
});
|
||||||
|
|
||||||
|
const sw = new UVServiceWorker();
|
||||||
|
|
||||||
|
self.addEventListener('fetch', (event) => event.respondWith(sw.fetch(event)));
|
||||||
12
public/uv.config.js
Normal file
12
public/uv.config.js
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
/*global Ultraviolet*/
|
||||||
|
self.__uv$config = {
|
||||||
|
prefix: '/service/',
|
||||||
|
bare: '/bare/',
|
||||||
|
encodeUrl: Ultraviolet.codec.xor.encode,
|
||||||
|
decodeUrl: Ultraviolet.codec.xor.decode,
|
||||||
|
handler: '/uv/uv.handler.js',
|
||||||
|
client: '/uv/uv.client.js',
|
||||||
|
bundle: '/uv/uv.bundle.js',
|
||||||
|
config: '/uv/uv.config.js',
|
||||||
|
sw: '/uv/uv.sw.js',
|
||||||
|
};
|
||||||
126
src/components/Footer.astro
Normal file
126
src/components/Footer.astro
Normal file
|
|
@ -0,0 +1,126 @@
|
||||||
|
<div id="footer">
|
||||||
|
<div class="footerflex">
|
||||||
|
<div class="footerbrand">
|
||||||
|
<p class="footerlist-heading"><a href="/">Alu's Unblocker</a></p>
|
||||||
|
<p>Made with ❤️ by <a target="_black" href="https://wearr.dev">wearr</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="footerlist">
|
||||||
|
<p class="footerlist-heading">Services</p>
|
||||||
|
<ul>
|
||||||
|
<li><a target="_blank" rel="noopener noreferrer" href="https://github.com/titaniumnetwork-dev/Ultraviolet">Ultraviolet</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footerlist">
|
||||||
|
<p class="footerlist-heading">Socials</p>
|
||||||
|
<ul>
|
||||||
|
<li><a target="_blank" rel="noopener noreferrer" href="https://github.com/wearrrrr/AlusUnblocker">GitHub</a></li>
|
||||||
|
<li><a target="_blank" rel="noopener noreferrer" href="#">Discord</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="copyright">Alu's Unblocker © 2024</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#footer {
|
||||||
|
padding-top: 20vw;
|
||||||
|
background-image: url(/img/darkwaves.svg);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100vw auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerflex {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footersocials {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerflex > div {
|
||||||
|
margin: 25px 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
.footerflex > div {
|
||||||
|
margin: 15px 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 380px) {
|
||||||
|
.footerflex > div {
|
||||||
|
margin: 5px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerbrand div a {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
color: #fff !important;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerbrand p {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerbrand a {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerlist-heading {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerlist ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerlist ul > li {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerlist ul > li > a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footerlist > * {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footersocials {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footersocials a {
|
||||||
|
display: inline-block;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
padding: 6px;
|
||||||
|
margin: 0 5px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copyright {
|
||||||
|
color: #D8DEE9;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
29
src/components/GameItem.astro
Normal file
29
src/components/GameItem.astro
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
const { name, image, slugName } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="game">
|
||||||
|
<a href=`./${slugName || name}`><img class="game-img" src=`${image}` alt=""></a>
|
||||||
|
<p class="game-title">{name}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.game {
|
||||||
|
border: 2px solid #D8DEE9;
|
||||||
|
padding: 1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.game-img {
|
||||||
|
width: 128px;
|
||||||
|
height: 128px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.game-title {
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
max-width: 125px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
59
src/components/Header.astro
Normal file
59
src/components/Header.astro
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
<div class="top-header">
|
||||||
|
<div id="title-background" class="title-background">
|
||||||
|
<div class="left">
|
||||||
|
<a href="/" class="header-item"> Alu</a>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<a href="/games/" class="header-item"><i class="fa-solid fa-gamepad-modern"></i> Games</a>
|
||||||
|
<a href="/settings/" class="header-item"><i class="fa-solid fa-gear"></i> Settings</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.top-header {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
transition: 250ms ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-background {
|
||||||
|
background-color: #166e85;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding-inline: 40px;
|
||||||
|
height: 70px;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 1.05rem;
|
||||||
|
list-style-type: none;
|
||||||
|
border: none;
|
||||||
|
z-index: 10;
|
||||||
|
transition: 250ms ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left, .right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-item {
|
||||||
|
color: #ffffff;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 20px;
|
||||||
|
transition: 250ms ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-item:hover {
|
||||||
|
color: #b7bcc6;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 1003px) {
|
||||||
|
.title-background {
|
||||||
|
width: 500%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
31
src/components/UVRegistrar.astro
Normal file
31
src/components/UVRegistrar.astro
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
<script src="/uv/uv.bundle.js" is:inline></script>
|
||||||
|
<script src="/uv.config.js" is:inline></script>
|
||||||
|
<script>
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
__uv$config: any;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const form = document.querySelector('form')!;
|
||||||
|
const input = document.querySelector('input')!;
|
||||||
|
|
||||||
|
window.navigator.serviceWorker.register('/sw.js', {
|
||||||
|
scope: window.__uv$config.prefix
|
||||||
|
})
|
||||||
|
|
||||||
|
form.addEventListener('submit', (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
let url = input.value.trim();
|
||||||
|
if (!isUrl(url)) url = 'https://www.google.com/search?q=' + url;
|
||||||
|
else if (!(url.startsWith('https://') || url.startsWith('http://'))) url = 'http://' + url;
|
||||||
|
let loadingContent = document.getElementById('loading-content');
|
||||||
|
if (loadingContent) loadingContent.style.opacity = "1";
|
||||||
|
|
||||||
|
window.location.href = window.__uv$config.prefix + window.__uv$config.encodeUrl(url);
|
||||||
|
});
|
||||||
|
|
||||||
|
function isUrl(val = ''){
|
||||||
|
if (/^http(s?):\/\//.test(val) || val.includes('.') && val.substr(0, 1) !== ' ') return true;
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
1
src/env.d.ts
vendored
Normal file
1
src/env.d.ts
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/// <reference types="astro/client" />
|
||||||
55
src/layouts/Layout.astro
Normal file
55
src/layouts/Layout.astro
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
import { fade } from 'astro/virtual-modules/transitions.js';
|
||||||
|
import { ViewTransitions } from 'astro:transitions';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
title: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { title } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="description" content="Astro description" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
|
||||||
|
<meta name="generator" content={Astro.generator} />
|
||||||
|
<title>{title}</title>
|
||||||
|
<ViewTransitions />
|
||||||
|
</head>
|
||||||
|
<body transition:animate={fade({ duration: '0.4s' })}>
|
||||||
|
<slot />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<style is:global>
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Varela+Round&display=swap");
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body, html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
background-color: #46494C;
|
||||||
|
max-width: 100vw;
|
||||||
|
margin: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
.title-text {
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
96
src/pages/games.astro
Normal file
96
src/pages/games.astro
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
---
|
||||||
|
import Layout from "../layouts/Layout.astro";
|
||||||
|
import Header from "../components/Header.astro";
|
||||||
|
import Footer from "../components/Footer.astro";
|
||||||
|
import GameItem from "../components/GameItem.astro";
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout title="Games | Alu's Unblocker">
|
||||||
|
<Header />
|
||||||
|
<h1 class="title-text">Games</h1>
|
||||||
|
<div class="grid">
|
||||||
|
<GameItem name="1v1.lol" image="/games/1v1.lol/logo.png"></GameItem>
|
||||||
|
<GameItem name="2048" image="/games/2048/logo.png"></GameItem>
|
||||||
|
<GameItem name="The Backrooms" image="/games/backrooms/logo.png" slugName="backrooms"></GameItem>
|
||||||
|
<GameItem name="Baldi's Basics" image="/games/baldi/logo.png" slugName="baldi"></GameItem>
|
||||||
|
<GameItem name="Cannon Basketball 4" image="/games/cannon-basketball-4/logo.png" slugName="cannon-basketball-4"></GameItem>
|
||||||
|
<GameItem name="Cell Machine" image="/games/cell-machine/logo.png" slugName="cell-machine"></GameItem>
|
||||||
|
<GameItem name="Chrome Dino" image="/games/chrome-dino/logo.png" slugName="chrome-dino"></GameItem>
|
||||||
|
<GameItem name="Cookie Clicker" image="/games/cookie-clicker/logo.png" slugName="cookie-clicker"></GameItem>
|
||||||
|
<GameItem name="CSGO Clicker" image="/games/csgo-clicker/logo.png" slugName="csgo-clicker"></GameItem>
|
||||||
|
<GameItem name="Cut The Rope" image="/games/ctr/logo.png" slugName="ctr"></GameItem>
|
||||||
|
<GameItem name="Cut The Rope - Holiday" image="/games/ctr-holiday/logo.png" slugName="ctr-holiday"></GameItem>
|
||||||
|
<GameItem name="Cut The Rope - Time Travel" image="/games/ctr-tr/logo.png" slugName="ctr-tr"></GameItem>
|
||||||
|
<GameItem name="Death Run 3D" image="/games/death-run-3d/logo.png" slugName="death-run-3d"></GameItem>
|
||||||
|
<GameItem name="Doge Miner" image="/games/doge-miner/logo.png" slugName="doge-miner"></GameItem>
|
||||||
|
<GameItem name="Doodle Jump" image="/games/doodle-jump/logo.png" slugName="doodle-jump"></GameItem>
|
||||||
|
<GameItem name="doom" image="/games/doom/logo.png" slugName="doom"></GameItem>
|
||||||
|
<GameItem name="Draw The Hill" image="/games/draw-the-hill/logo.png" slugName="draw-the-hill"></GameItem>
|
||||||
|
<GameItem name="Evil Glitch" image="/games/evil-glitch/logo.png" slugName="evil-glitch"></GameItem>
|
||||||
|
<GameItem name="Fall Boys" image="/games/fall-boys/logo.png" slugName="fall-boys"></GameItem>
|
||||||
|
<GameItem name="Fireboy and Watergirl" image="/games/firewater/logo.png" slugName="firewater"></GameItem>
|
||||||
|
<GameItem name="Fireboy and Watergirl 2" image="/games/firewater2/logo.png" slugName="firewater2"></GameItem>
|
||||||
|
<GameItem name="Five Nights at Freddy's" image="/games/fnaf/logo.png" slugName="fnaf"></GameItem>
|
||||||
|
<GameItem name="Five Nights at Freddy's 2" image="/games/fnaf2/logo.png" slugName="fnaf2"></GameItem>
|
||||||
|
<GameItem name="Five Nights at Freddy's 3" image="/games/fnaf3/logo.png" slugName="fnaf3"></GameItem>
|
||||||
|
<GameItem name="Five Nights at Freddy's 4" image="/games/fnaf4/logo.png" slugName="fnaf4"></GameItem>
|
||||||
|
<GameItem name="Game Inside" image="/games/game-inside/logo.png" slugName="game-inside"></GameItem>
|
||||||
|
<GameItem name="Google Snake" image="/games/google-snake/logo.png" slugName="google-snake"></GameItem>
|
||||||
|
<GameItem name="Grindcraft" image="/games/grindcraft/logo.png" slugName="grindcraft"></GameItem>
|
||||||
|
<GameItem name="Idle Breakout" image="/games/idle-breakout/logo.png" slugName="idle-breakout"></GameItem>
|
||||||
|
<GameItem name="Just One Boss" image="/games/just-one-boss/logo.png" slugName="just-one-boss"></GameItem>
|
||||||
|
<GameItem name="Line Rider" image="/games/line-rider/logo.png" slugName="line-rider"></GameItem>
|
||||||
|
<GameItem name="Minecraft Classic" image="/games/minecraft-classic/logo.png" slugName="minecraft-classic"></GameItem>
|
||||||
|
<GameItem name="Minesweeper" image="/games/minesweeper/logo.png" slugName="minesweeper"></GameItem>
|
||||||
|
<GameItem name="Moto X3M" image="/games/moto-x3m/logo.png" slugName="moto-x3m"></GameItem>
|
||||||
|
<GameItem name="Moto X3M Pool Party" image="/games/moto-x3m-pool/logo.png" slugName="moto-x3m-pool"></GameItem>
|
||||||
|
<GameItem name="Moto X3M Spooky Land" image="/games/moto-x3m-spooky/logo.png" slugName="moto-x3m-spooky"></GameItem>
|
||||||
|
<GameItem name="Moto X3M Winter" image="/games/moto-x3m-winter/logo.png" slugName="moto-x3m-winter"></GameItem>
|
||||||
|
<GameItem name="osu!" image="/games/osu/logo.png" slugName="osu"></GameItem>
|
||||||
|
<GameItem name="Retro Bowl" image="/games/retro-bowl/logo.png" slugName="retro-bowl"></GameItem>
|
||||||
|
<GameItem name="Slope" image="/games/slope/logo.png" slugName="slope"></GameItem>
|
||||||
|
<GameItem name="Super Mario 64" image="/games/sm64/logo.png" slugName="sm64"></GameItem>
|
||||||
|
<GameItem name="Solitaire" image="/games/solitaire/logo.png" slugName="solitaire"></GameItem>
|
||||||
|
<GameItem name="Superhot" image="/games/superhot/logo.png" slugName="superhot"></GameItem>
|
||||||
|
<GameItem name="There is No Game" image="/games/there-is-no-game/logo.png" slugName="there-is-no-game"></GameItem>
|
||||||
|
<GameItem name="Ultima 6" image="/games/ul6/logo.png" slugName="ul6"></GameItem>
|
||||||
|
<GameItem name="Vex 3" image="/games/vex3/logo.png" slugName="vex3"></GameItem>
|
||||||
|
<GameItem name="Vex 4" image="/games/vex4/logo.png" slugName="vex4"></GameItem>
|
||||||
|
<GameItem name="Vex 5" image="/games/vex5/logo.png" slugName="vex5"></GameItem>
|
||||||
|
<GameItem name="Vex 6" image="/games/vex6/logo.png" slugName="vex6"></GameItem>
|
||||||
|
<GameItem name="World's Hardest Game" image="/games/worlds-hardest-game/logo.png" slugName="worlds-hardest-game"></GameItem>
|
||||||
|
<GameItem name="World's Hardest Game 2" image="/games/worlds-hardest-game-2/logo.png" slugName="worlds-hardest-game-2"></GameItem>
|
||||||
|
<GameItem name="You are Bezos" image="/games/you-are-bezos/logo.png" slugName="you-are-bezos"></GameItem>
|
||||||
|
</div>
|
||||||
|
<Footer />
|
||||||
|
</Layout>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.grid {
|
||||||
|
color: #fff;
|
||||||
|
margin-top: -10px;
|
||||||
|
height: max-content;
|
||||||
|
width: calc(100% - 60px);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 1rem;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 973px) {
|
||||||
|
.grid {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 467px) {
|
||||||
|
.grid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
57
src/pages/index.astro
Normal file
57
src/pages/index.astro
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
---
|
||||||
|
import Layout from '../layouts/Layout.astro';
|
||||||
|
import Header from '../components/Header.astro';
|
||||||
|
import Footer from '../components/Footer.astro';
|
||||||
|
import UVRegistrar from '../components/UVRegistrar.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout title="Alu's Unblocker">
|
||||||
|
<Header></Header>
|
||||||
|
<div class="main-content" data-barba="container" data-barba-namespace="home">
|
||||||
|
<h1 id="title-text" class="title-text">Welcome to Alu</h1>
|
||||||
|
<form>
|
||||||
|
<input placeholder="Enter a URL...">
|
||||||
|
</form>
|
||||||
|
<p id="loading-content">Loading Content...</p>
|
||||||
|
</div>
|
||||||
|
<UVRegistrar></UVRegistrar>
|
||||||
|
<Footer></Footer>
|
||||||
|
</Layout>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.main-content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
height: 60vh;
|
||||||
|
}
|
||||||
|
form {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
form > input {
|
||||||
|
background-color: #393b3e;
|
||||||
|
color: #D8DEE9;
|
||||||
|
border: 5px solid white;
|
||||||
|
border-radius: 30px;
|
||||||
|
padding: 15px;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
transition: 400ms ease-out;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
form > input::placeholder {
|
||||||
|
color: #D8DEE9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loading-content {
|
||||||
|
color: white;
|
||||||
|
padding: 3px;
|
||||||
|
position: relative;
|
||||||
|
opacity: 0;
|
||||||
|
transition: 250ms ease-in-out;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
102
src/pages/oldindex.html
Normal file
102
src/pages/oldindex.html
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="theme-color" content="#81A1C1">
|
||||||
|
<title>Alu's Unblocker</title>
|
||||||
|
<link rel="icon" href="./img/icon.svg">
|
||||||
|
<link rel="apple-touch-icon" href="./apple-touch-icon.png"/>
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
<script src="./js/site/loadScript.js"></script>
|
||||||
|
<link rel="stylesheet" href="./css/index.css">
|
||||||
|
<link rel="stylesheet" href="https://site-assets.fontawesome.com/releases/v6.4.2/css/all.css">
|
||||||
|
<script>
|
||||||
|
if (localStorage.getItem('windowCloak') == "1") {
|
||||||
|
var x = window.open('')
|
||||||
|
x.document.write(`<iframe src="${window.location.href}" style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%;"></iframe>`);
|
||||||
|
x.document.write('<script src="./settings_frame.js">')
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body id="body" data-barba="wrapper">
|
||||||
|
<script src="./js/site/toggles.js"></script>
|
||||||
|
<script src="./js/site/main.js"></script>
|
||||||
|
<script src="./js/site/header.js"></script>
|
||||||
|
<script src="./js/site/themes.js"></script>
|
||||||
|
<script src="/bundle.js" defer></script>
|
||||||
|
<div id="main">
|
||||||
|
<div class="top-header">
|
||||||
|
<div id="title-background" class="title-background">
|
||||||
|
<div class="left">
|
||||||
|
<a href="/" class="header-item"> Alu</a>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<a href="/games/" class="header-item"><i class="fa-solid fa-gamepad-modern"></i> Games</a>
|
||||||
|
<a href="/settings/" class="header-item"><i class="fa-solid fa-gear"></i> Settings</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="main-content" data-barba="container" data-barba-namespace="home">
|
||||||
|
<h1 id="title-text" class="title-text">Welcome to Alu</h1>
|
||||||
|
<form>
|
||||||
|
<input placeholder="Enter a URL...">
|
||||||
|
</form>
|
||||||
|
<p id="loading-content">Loading Content...</p>
|
||||||
|
</div>
|
||||||
|
<script src="/uv/uv.bundle.js"></script>
|
||||||
|
<script src="/uv/uv.config.js"></script>
|
||||||
|
<script>
|
||||||
|
const form = document.querySelector('form');
|
||||||
|
const input = document.querySelector('input');
|
||||||
|
|
||||||
|
window.navigator.serviceWorker.register('/sw.js', {
|
||||||
|
scope: __uv$config.prefix
|
||||||
|
})
|
||||||
|
|
||||||
|
form.addEventListener('submit', (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
let url = input.value.trim();
|
||||||
|
if (!isUrl(url)) url = 'https://www.google.com/search?q=' + url;
|
||||||
|
else if (!(url.startsWith('https://') || url.startsWith('http://'))) url = 'http://' + url;
|
||||||
|
document.getElementById('loading-content').style.opacity = "1"
|
||||||
|
|
||||||
|
window.location.href = __uv$config.prefix + __uv$config.encodeUrl(url);
|
||||||
|
});
|
||||||
|
|
||||||
|
function isUrl(val = ''){
|
||||||
|
if (/^http(s?):\/\//.test(val) || val.includes('.') && val.substr(0, 1) !== ' ') return true;
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<div id="footer">
|
||||||
|
<div class="footerflex">
|
||||||
|
<div class="footerbrand">
|
||||||
|
<h3><a href="/">Alu's Unblocker</a></h3>
|
||||||
|
<p>Made with ❤️ by <a target="_black" href="https://wearr.dev">wearr</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="footerlist">
|
||||||
|
<h3>Services</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a target="_blank" rel=”noopener noreferrer” href="https://github.com/titaniumnetwork-dev/Ultraviolet">Ultraviolet</a></li>
|
||||||
|
<li><a target="_blank" rel=”noopener noreferrer” href="https://github.com/binary-person/rammerhead">Rammerhead</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footerlist">
|
||||||
|
<h3>Socials</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a target="_blank" rel=”noopener noreferrer” href="https://github.com/titaniumnetwork-dev/Holy-Unblocker">GitHub</a></li>
|
||||||
|
<div class="tooltip">
|
||||||
|
<span class="tooltiptext" id="discord-tooltip">Copy</span>
|
||||||
|
<li><a onclick="copyDiscord();" onmouseout="outFunc();" class="discord-text">Discord</a></li>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="copyright">Alu's Unblocker © 2024</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
3
tsconfig.json
Normal file
3
tsconfig.json
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": "astro/tsconfigs/strict"
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue